Final Revision

master
historicalsource 2019-04-14 16:52:12 -04:00
parent 7451ee2c60
commit c8784aa058
68 changed files with 41693 additions and 0 deletions

20
README Normal file
View File

@ -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

58
breds.zabstr Normal file
View File

@ -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>

573
breds.zap Normal file
View File

@ -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

44
defs.zil Normal file
View File

@ -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>>>>

65
find.zabstr Normal file
View File

@ -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>

597
find.zap Normal file
View File

@ -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

79
global.zabstr Normal file
View File

@ -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>

247
global.zap Normal file
View File

@ -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

457
global.zil Normal file
View File

@ -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>)>>

1
gram.mac Normal file

File diff suppressed because one or more lines are too long

295
h2.chart Normal file
View File

@ -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

46
h2.errors Normal file
View File

@ -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

2
h2.lowcore Normal file
View File

@ -0,0 +1,2 @@
0

357
h2.record Normal file
View File

@ -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

BIN
h2.seg Normal file

Binary file not shown.

2915
h2.seginfo Normal file

File diff suppressed because it is too large Load Diff

1
h2.serial Normal file
View File

@ -0,0 +1 @@
263

BIN
h2.syms Normal file

Binary file not shown.

58
h2.zap Normal file
View File

@ -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

43
h2.zil Normal file
View File

@ -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>

BIN
h2.zip Normal file

Binary file not shown.

12215
h2dat.zap Normal file

File diff suppressed because it is too large Load Diff

200
h2freq.xzap Normal file
View File

@ -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

285
h2pur.zap Normal file
View File

@ -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

258
h2str.zap Normal file
View File

@ -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

24
macros.zap Normal file
View File

@ -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

75
macros.zil Normal file
View File

@ -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>>)>

103
magrathea.zabstr Normal file
View File

@ -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)>

50
magrathea.zap Normal file
View File

@ -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

251
magrathea.zil Normal file
View File

@ -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)>

51
misc.zabstr Normal file
View File

@ -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>

403
misc.zap Normal file
View File

@ -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

371
misc.zil Normal file
View File

@ -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>>>>

231
parser.zabstr Normal file
View File

@ -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>

1563
parser.zap Normal file

File diff suppressed because it is too large Load Diff

BIN
pass101 Normal file

Binary file not shown.

BIN
pass33 Normal file

Binary file not shown.

68
people.zabstr Normal file
View File

@ -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>

549
people.zap Normal file
View File

@ -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

662
people.zil Normal file
View File

@ -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>)>>

29
places.zabstr Normal file
View File

@ -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!\"">

156
places.zap Normal file
View File

@ -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

391
places.zil Normal file
View File

@ -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!\"">

92
pmem.zabstr Normal file
View File

@ -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>

45
pmem.zap Normal file
View File

@ -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

73
prare.zabstr Normal file
View File

@ -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>

1036
prare.zap Normal file

File diff suppressed because it is too large Load Diff

45
pstack.zabstr Normal file
View File

@ -0,0 +1,45 @@
<ZZPACKAGE "PSTACK">
<ENTRY ALLOCATE-PSTACK MAX-PSTACK-SIZE PUSH-PSTACK POP-PSTACK PEEK-PSTACK
PSTACK FLUSH-PSTACK PSTACK-PTR CLEAR-PSTACK PSTACK-DATA PSTACK-EMPTY?>
<USE "NEWSTRUC">
<FILE-FLAGS>
<BEGIN-SEGMENT 0>
<MSETG MAX-PSTACK-SIZE 21>
<NEWTYPE PSTACK TABLE>
<DEFMAC ALLOCATE-PSTACK () <ITABLE ,MAX-PSTACK-SIZE 0>>
<DEFMAC PSTACK-PTR ('S "OPT" 'NEW) <COND (<ASSIGNED? NEW> <FORM ZPUT .S 0 .NEW>
) (T <CHTYPE [<FORM ZGET .S 0> FIX] ADECL>)>>
<DEFMAC PSTACK-EMPTY? ('PSTACK) <COND (<CHECK-VERSION? YZIP> <FORM EQUAL? <- ,
MAX-PSTACK-SIZE 1> <FORM PSTACK-PTR .PSTACK>>) (T <FORM 0? <FORM PSTACK-PTR .
PSTACK>>)>>
<DEFMAC CLEAR-PSTACK ('S) <COND (<CHECK-VERSION? YZIP> <FORM PSTACK-PTR <CHTYPE
[.S PSTACK] ADECL> <- ,MAX-PSTACK-SIZE 1>>) (T <FORM PSTACK-PTR <CHTYPE [.S
PSTACK] ADECL> 0>)>>
<DEFINE20 PRINT-PSTACK (S:PSTACK "OPT" (OUTCHAN:CHANNEL .OUTCHAN) "AUX" (P <
PSTACK-PTR .S>)) <PRINT-MANY .OUTCHAN PRINC "#PSTACK [" .P " ["> <REPEAT ((D <
ZREST .S 2>)) <COND (<L=? .P 0> <RETURN>)> <PRIN1 <ZGET .D 0>> <PRINC " "> <SET
D <ZREST .D 2>> <SET P <- .P 1>>> <PRINC "]]">>
<COND (<CHECK-VERSION? YZIP> <DEFMAC PUSH-PSTACK ('S 'OBJ) <FORM XPUSH .OBJ .S>
>) (T <IF-P-DEBUGGING-PARSER <GLOBAL PSTACK-WARN:NUMBER 20>> <ROUTINE
PUSH-PSTACK (S:PSTACK OBJ "AUX" TMP) <SET TMP <+ 1 <PSTACK-PTR .S>>> <COND (<
L=? ,MAX-PSTACK-SIZE .TMP> <P-NO-MEM-ROUTINE> <RFALSE>)> <IF-P-DEBUGGING-PARSER
<COND (<L? ,PSTACK-WARN .TMP> <SETG PSTACK-WARN .TMP> <PRINTI "[PSTACK: "> <
PRINTN <- ,MAX-PSTACK-SIZE .TMP>> <PRINTI " left!]|">)>> <PSTACK-PTR .S .TMP> <
ZPUT .S .TMP .OBJ> .S>)>
<COND (<CHECK-VERSION? YZIP> <DEFMAC FLUSH-PSTACK ('S "OPT" ('N 1)) <FORM
FSTACK .N .S>>) (T <ROUTINE FLUSH-PSTACK (S:PSTACK "OPT" (N:FIX 1)) <COND (<G?
0 <SET N <- <PSTACK-PTR .S> .N>>> <SET N 0>)> <PSTACK-PTR .S .N> .S>)>
<COND (<CHECK-VERSION? YZIP> <DEFMAC POP-PSTACK ('S "OPT" ('N 1)) <COND (<1? .N
> <FORM POP .S>) (T <FORM FSTACK .N .S>)>>) (T <ROUTINE POP-PSTACK (S:PSTACK
"OPT" (N:FIX 1) "AUX" (OBJ <PEEK-PSTACK .S>)) <COND (<NOT <0? .N>> <
FLUSH-PSTACK .S .N>)> .OBJ>)>
<COND (<CHECK-VERSION? YZIP> <ROUTINE PEEK-PSTACK (S "OPT" (OFFS 0) "AUX" (N 0)
VAL) <REPEAT () <SET VAL <POP .S>> <PUSH .VAL> <SET N <ADD N 1>> <COND (<LESS?
<SET OFFS <SUB OFFS 1>> 0> <RETURN>)>> <REPEAT () <COND (<LESS? <SET N <SUB N 1
>> 0> <RETURN>) (T <XPUSH #ZLOCAL!-IZILCH STACK .S>)>> .VAL>) (T <ROUTINE
PEEK-PSTACK (S:PSTACK "OPT" (OFFS:FIX 0)) <ZGET .S <- <PSTACK-PTR .S> .OFFS>>>)
>
<DEFINE-ROUTINE PEEK-PSTACK>
<END-SEGMENT>
<ENDPACKAGE>

18
pstack.zap Normal file
View File

@ -0,0 +1,18 @@
.SEGMENT "0"
.FUNCT PEEK-PSTACK:ANY:1:2,S,OFFS,N,VAL
?PRG1: POP S >VAL
PUSH VAL
INC 'N
DLESS? 'OFFS,0 \?PRG1
?PRG5: DLESS? 'N,0 /?REP6
POP
XPUSH STACK,S /?PRG5
JUMP ?PRG5
?REP6: RETURN VAL
.ENDSEG
.ENDI

83
qverbs.zabstr Normal file
View File

@ -0,0 +1,83 @@
<FLAGS-AND-DEFAULTS (("WORD-FLAGS-IN-TABLE" T)("IN-ZILCH" T)) ()>
<FILE-FLAGS MDL-ZIL?>
<DEFAULTS-DEFINED PRINT-IS/ARE>
<BEGIN-SEGMENT 0>
<OBJECT WHAT (LOC GLOBAL-OBJECTS) (DESC "what") (SYNONYM WHAT WHO) (FLAGS
NOTHEBIT) (ACTION WHAT-F)>
<DEFINE-ROUTINE WHAT-F>
<DEFINE-ROUTINE TELL-Q-WORD>
<DEFINE-ROUTINE TRY-QCONTEXT?>
<DEFINE-ROUTINE PRE-BE>
<SYNTAX BE OBJECT (MOBY) = V-BE PRE-BE>
<SYNTAX BE OBJECT (MOBY) OBJECT (MOBY) = V-BE PRE-BE>
<SYNTAX BE? OBJECT (MOBY) = V-BE?>
<SYNTAX BE? OBJECT (MOBY) OBJECT (MOBY) = V-BE?>
<DEFINE-ROUTINE V-BE>
<DEFINE-ROUTINE RIGHT-PREP?>
<DEFINE-ROUTINE V-BE?>
<SYNTAX HOW OBJECT (MOBY) (FIND RLANDBIT) = V-HOW>
<SYNTAX HOW OBJECT (MOBY) OBJECT (MOBY) = V-HOW>
<SYNTAX WHAT OBJECT (MOBY) (FIND RLANDBIT) = V-WHAT>
<SYNTAX WHAT OBJECT (MOBY) OBJECT (MOBY) = V-WHAT>
<SYNTAX WHEN OBJECT (MOBY) (FIND RLANDBIT) = V-WHEN>
<SYNTAX WHEN OBJECT (MOBY) OBJECT (MOBY) = V-WHEN>
<SYNTAX WHERE OBJECT (MOBY) (FIND RLANDBIT) = V-WHERE PRE-WHERE>
<SYNTAX WHERE OBJECT (MOBY) OBJECT (MOBY) = V-WHERE PRE-WHERE>
<SYNTAX WHO OBJECT (MOBY) (FIND RLANDBIT) = V-WHO>
<SYNTAX WHO OBJECT (MOBY) OBJECT (MOBY) = V-WHO>
<SYNONYM WHO WHOM>
<SYNTAX WHY OBJECT (MOBY) (FIND RLANDBIT) = V-WHY>
<SYNTAX WHY OBJECT (MOBY) OBJECT (MOBY) = V-WHY>
<SYNTAX WILL OBJECT (MOBY) = V-WILL?>
<SYNTAX WOULD OBJECT (MOBY) = V-WOULD?>
<DEFINE-ROUTINE V-WHO>
<DEFINE-ROUTINE V-WHAT>
<DEFINE-ROUTINE PRE-WHERE>
<DEFINE-ROUTINE V-WHERE>
<DEFINE-ROUTINE V-WHEN>
<DEFINE-ROUTINE V-WHY>
<DEFINE-ROUTINE V-HOW>
<CONSTANT ADJ-TABLE <LTABLE <VOC "OUTSIDE" <>> OUTSIDE? <VOC "OPEN" ADJ> OPEN?
<VOC "CLOSED" ADJ> Q-CLOSED? <VOC "LOCKED" ADJ> LOCKED? <VOC "UNLOCKED" ADJ>
UNLOCKED? <VOC "DEAD" ADJ> DEAD? <VOC "ALIVE" ADJ> ALIVE? <VOC "QUIET" ADJ>
QUIET?>>
<DEFINE-ROUTINE QUIET?>
<DEFINE-ROUTINE OUTSIDE?>
<DEFINE-ROUTINE OPEN?>
<DEFINE-ROUTINE Q-CLOSED?>
<DEFINE-ROUTINE LOCKED?>
<DEFINE-ROUTINE UNLOCKED?>
<DEFINE-ROUTINE DEAD?>
<DEFINE-ROUTINE ALIVE?>
<DEFINE-ROUTINE PRSO-IS>
<DEFAULT-DEFINITION PRINT-IS/ARE <ROUTINE PRINT-IS/ARE>>
<DEFINE-ROUTINE IS-PRSO-ADJ?>
<SYNTAX CAN OBJECT (MOBY) = V-CAN?>
<SYNTAX COULD OBJECT (MOBY) = V-COULD?>
<SYNTAX DO OBJECT (MOBY) = V-DO?>
<SYNTAX MAY OBJECT (MOBY) = V-MAY?>
<SYNTAX MIGHT OBJECT (MOBY) = V-MIGHT?>
<SYNTAX MUST OBJECT (MOBY) = V-MUST?>
<SYNTAX SHOULD OBJECT (MOBY) = V-SHOULD?>
<DEFINE-ROUTINE V-STATEMENT>
<CONSTANT WHO-KNOWS-STRING "It's not easy to tell ">
<DEFINE-ROUTINE WHO-KNOWS>
<DEFINE-ROUTINE ECHO-NOUNS>
<DEFINE-ROUTINE V-CAN?>
<DEFINE-ROUTINE V-MAY?>
<DEFINE-ROUTINE V-DO?>
<DEFINE-ROUTINE V-COULD?>
<DEFINE-ROUTINE V-WOULD?>
<DEFINE-ROUTINE V-SHOULD?>
<DEFINE-ROUTINE V-MIGHT?>
<DEFINE-ROUTINE V-WILL?>
<DEFINE-ROUTINE V-MUST?>
<CONSTANT QACTIONS <PLTABLE V-BE V-BE? 0 V-DISEMBARK V-DISEMBARK? 0 V-DROP
V-DROP? PRE-DROP? V-TAKE V-TAKE? PRE-TAKE?>>
<DEFINE-ROUTINE PRE-DROP?>
<DEFINE-ROUTINE V-DROP?>
<DEFINE-ROUTINE V-DISEMBARK?>
<DEFINE-ROUTINE PRE-TAKE?>
<DEFINE-ROUTINE V-TAKE?>
<END-SEGMENT>

671
qverbs.zap Normal file
View File

@ -0,0 +1,671 @@
.SEGMENT "0"
.FUNCT WHAT-F:ANY:0:0,OBJ,TMP,NOT?,LOC?
GET PARSE-RESULT,16
BAND PARSE-NOT,STACK >NOT?
GET PARSE-RESULT,9 >LOC?
EQUAL? PRSA,V?BE? /FALSE
GET PARSE-RESULT,10 >OBJ
EQUAL? OBJ,W?WHO,W?WHAT,W?WHERE /FALSE
GET PARSE-RESULT,10 >OBJ
EQUAL? OBJ,W?WHY,W?WHEN,W?HOW /FALSE
CALL1 EVERYWHERE-VERB?
ZERO? STACK \?CCL9
PRINTR "That's precisely the sort of question you'll have to answer for yourself."
?CCL9: EQUAL? PRSI,INTPP \FALSE
CALL1 P-PP-OBJ >OBJ
ZERO? OBJ /FALSE
ZERO? NOT? \FALSE
CALL1 P-PP-PREP >TMP
ZERO? TMP \?PEN17
GET LOC?,1 >TMP
?PEN17: EQUAL? TMP,W?BEHIND \?CCL22
ICALL PERFORM,V?LOOK-BEHIND,OBJ
RTRUE
?CCL22: EQUAL? TMP,W?DOWN \?CCL24
ICALL PERFORM,V?LOOK-DOWN,OBJ
RTRUE
?CCL24: EQUAL? TMP,W?IN,W?ON,W?THROUGH \?CCL26
ICALL PERFORM,V?LOOK-INSIDE,OBJ
RTRUE
?CCL26: EQUAL? TMP,W?UNDER \FALSE
ICALL PERFORM,V?LOOK-UNDER,OBJ
RTRUE
.FUNCT TELL-Q-WORD:ANY:0:0,WD
EQUAL? PRSA,V?BE? \?CCL3
PRINTI "if"
RTRUE
?CCL3: GET PARSE-RESULT,10 >WD
EQUAL? WD,W?WHO,W?WHAT,W?WHERE /?CTR4
GET PARSE-RESULT,10 >WD
EQUAL? WD,W?WHY,W?WHEN,W?HOW \?CCL5
?CTR4: PRINTB WD
RTRUE
?CCL5: PRINTI "whether"
RTRUE
.FUNCT TRY-QCONTEXT?:ANY:0:0,W,X,?TMP1
ZERO? QCONTEXT /FALSE
IN? QCONTEXT,HERE \FALSE
EQUAL? QCONTEXT,WINNER /FALSE
ADD WORD-FLAG-TABLE,2 >?TMP1
GET WORD-FLAG-TABLE,0
INTBL? P-PRSA-WORD,?TMP1,STACK,132 >X \?CCL12
GET X,1
JUMP ?CND10
?CCL12: PUSH FALSE-VALUE
?CND10: BTST STACK,512 /?CCL3
EQUAL? QCONTEXT,PRSO /FALSE
EQUAL? PRSA,V?ASK-ABOUT /FALSE
EQUAL? PRSA,V?TELL-ABOUT \?CCL3
EQUAL? PRSO,ME /FALSE
?CCL3: SET 'W,WINNER
SET 'WINNER,QCONTEXT
ICALL PERFORM,PRSA,PRSO,PRSI
SET 'WINNER,W
RTRUE
.FUNCT PRE-BE:ANY:0:0
CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
RFALSE
.FUNCT V-BE:ANY:0:0,TMP,NOT?,ADJ?,LOC?,OBJ,PREP
GET PARSE-RESULT,16
BAND PARSE-NOT,STACK >NOT?
GET PARSE-RESULT,11 >ADJ?
GET PARSE-RESULT,9 >LOC?
EQUAL? PRSA,V?HOW /?CTR2
EQUAL? PRSA,V?WHEN,V?WHY,V?WHERE /?CTR2
EQUAL? PRSA,V?WHAT,V?WHO,V?BE? /?CTR2
GET PARSE-RESULT,10 >TMP
EQUAL? TMP,W?WHO,W?WHAT,W?WHERE /?CTR2
GET PARSE-RESULT,10 >TMP
EQUAL? TMP,W?WHY,W?WHEN,W?HOW \?CCL3
?CTR2: CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
EQUAL? PRSI,INTADJ \?CCL13
EQUAL? PRSO,ME,PLAYER \?CCL16
EQUAL? PRSA,V?BE? \?CCL19
PRINTI "You"
JUMP ?CND17
?CCL19: PRINT WHO-KNOWS-STRING
ICALL1 TELL-Q-WORD
PRINTI " you"
?CND17: CALL2 IS-PRSO-ADJ?,ADJ?
ZERO? STACK /?CCL22
PRINTI " are "
JUMP ?CND14
?CCL22: PRINTI " aren't "
JUMP ?CND14
?CCL16: EQUAL? PRSA,V?BE? \?CCL25
ICALL2 TELL-CTHE,PRSO
JUMP ?CND23
?CCL25: PRINT WHO-KNOWS-STRING
ICALL1 TELL-Q-WORD
PRINTC 32
ICALL2 TELL-THE,PRSO
?CND23: ICALL2 PRINT-IS/ARE,PRSO
CALL2 IS-PRSO-ADJ?,ADJ?
ZERO? STACK \?CND26
PRINTI "n't"
?CND26: PRINTC 32
?CND14: PRINTB ADJ?
PRINTR "."
?CCL13: EQUAL? PRSI,INTPP \?CCL29
CALL1 P-PP-PREP >PREP
ZERO? PREP /?CCL32
CALL1 P-PP-OBJ >OBJ
ZERO? OBJ /?CCL32
EQUAL? PRSA,V?BE? \?CCL37
CALL RIGHT-PREP?,PREP,PRSO,OBJ
ZERO? STACK \?PRF40
PUSH 1
JUMP ?PEN38
?PRF40: PUSH 0
?PEN38: ICALL PRSO-IS,STACK,TRUE-VALUE
PRINTC 32
PRINTB PREP
PRINTC 32
ICALL2 TELL-THE,OBJ
PRINTR "."
?CCL37: PRINT WHO-KNOWS-STRING
ICALL1 TELL-Q-WORD
ICALL2 PRSO-IS,NOT?
PRINTC 32
PRINTB PREP
PRINTC 32
ICALL2 TELL-THE,OBJ
PRINTR "."
?CCL32: PRINT WHO-KNOWS-STRING
ICALL1 TELL-Q-WORD
ICALL2 PRSO-IS,NOT?
PRINTC 32
GET LOC?,1
PRINTB STACK
PRINTC 32
GET LOC?,2
ICALL2 NP-PRINT,STACK
PRINTR "."
?CCL29: GET PARSE-RESULT,13
ZERO? STACK /?CCL42
CALL1 WHO-KNOWS
RSTACK
?CCL42: ZERO? PRSI \?CCL44
GET PARSE-RESULT,10
EQUAL? STACK,W?WHERE \?CCL44
EQUAL? PRSO,FALSE-VALUE,ROOMS /?CCL49
LOC PRSO >LOC?
JUMP ?CND47
?CCL49: SET 'LOC?,FALSE-VALUE
?CND47: ZERO? LOC? \?CCL52
PRINTR "That's an excellent question."
?CCL52: IN? PRSO,HERE \?CCL54
ICALL PRSO-IS,FALSE-VALUE,TRUE-VALUE
PRINTR " here."
?CCL54: EQUAL? LOC?,GENERIC-OBJECTS \?CCL56
PRINTI "You don't know where "
ICALL2 TELL-THE,PRSO
ICALL2 PRINT-IS/ARE,PRSO
PRINTR "."
?CCL56: EQUAL? LOC?,GLOBAL-OBJECTS \?CCL58
PRINTI "No doubt "
ICALL2 TELL-THE,PRSO
ICALL2 PRINT-IS/ARE,PRSO
PRINTR " around here somewhere."
?CCL58: EQUAL? LOC?,LOCAL-GLOBALS \?CCL60
CALL GLOBAL-IN?,PRSO,HERE
ZERO? STACK /?CCL60
ICALL2 TELL-CTHE,PRSO
ICALL2 PRINT-IS/ARE,PRSO
PRINTR " nearby."
?CCL60: FSET? LOC?,PERSONBIT \?CCL64
ICALL2 TELL-CTHE,LOC?
PRINTI " has "
ICALL2 TELL-THE,PRSO
PRINTR "."
?CCL64: CALL2 META-LOC,PRSO
EQUAL? STACK,HERE \?CCL66
ICALL2 TELL-CTHE,PRSO
ICALL2 PRINT-IS/ARE,PRSO
PRINTI " in "
ICALL2 TELL-THE,LOC?
PRINTR "."
?CCL66: IN? LOC?,ROOMS \?CCL68
ICALL2 TELL-CTHE,PRSO
ICALL2 PRINT-IS/ARE,PRSO
PRINTI " probably "
FSET? PRSO,TOUCHBIT \?CCL71
PRINTI "still in the place called """
PRINTD LOC?
PRINTR "."""
?CCL71: FSET? PRSO,PERSONBIT /?CND72
PRINTI "lying "
?CND72: PRINTR "around somewhere."
?CCL68: PRINT WHO-KNOWS-STRING
PRINTI "where "
ICALL2 TELL-THE,PRSO
ICALL2 PRINT-IS/ARE,PRSO
PRINTR "."
?CCL44: PRINT WHO-KNOWS-STRING
ICALL1 TELL-Q-WORD
EQUAL? PRSO,FALSE-VALUE,ROOMS /?CND74
ICALL2 PRSO-IS,NOT?
ZERO? PRSI /?CND74
PRINTC 32
ICALL2 PRINTA,PRSI
?CND74: PRINTR "."
?CCL3: EQUAL? PRSI,INTADJ \?CCL80
CALL2 IS-PRSO-ADJ?,ADJ?
ZERO? STACK /?CCL83
ZERO? NOT? /?CCL86
PRINTI "Wrong,"
JUMP ?CND84
?CCL86: PRINTI "Right,"
?CND84: ICALL2 PRSO-IS,FALSE-VALUE
JUMP ?CND81
?CCL83: ZERO? NOT? /?CCL89
PRINTI "Right,"
JUMP ?CND87
?CCL89: PRINTI "Wrong,"
?CND87: ICALL2 PRSO-IS,TRUE-VALUE
?CND81: PRINTC 32
PRINTB ADJ?
PRINTR "."
?CCL80: EQUAL? PRSI,INTPP \?CCL91
PRINTI "So, you say"
ICALL2 PRSO-IS,NOT?
PRINTC 32
CALL1 P-PP-PREP >TMP
ZERO? TMP /?CCL94
PRINTB TMP
JUMP ?CND92
?CCL94: GET LOC?,1
PRINTB STACK
?CND92: PRINTC 32
CALL1 P-PP-OBJ >TMP
ZERO? TMP /?CCL97
ICALL2 TELL-THE,TMP
JUMP ?CND95
?CCL97: GET LOC?,2
ICALL2 NP-PRINT,STACK
?CND95: PRINTR "."
?CCL91: EQUAL? P-PRSA-WORD,W?BE \?CCL99
EQUAL? PRSO,WINNER \?CCL102
ICALL2 TELL-CTHE,PRSO
PRINTI " is already "
PRINTI "that"
PRINTR "."
?CCL102: PRINTR "That would take a bit of magic."
?CCL99: PRINTI "So you think"
ICALL2 PRSO-IS,NOT?
ZERO? PRSI /?CND103
PRINTC 32
ICALL2 PRINTA,PRSI
?CND103: PRINTR "."
.FUNCT RIGHT-PREP?:ANY:3:3,PREP,OBJ,CONT
IN? OBJ,CONT \FALSE
EQUAL? PREP,W?IN,W?INSIDE \?CCL5
CALL2 SEE-INSIDE?,CONT
ZERO? STACK /FALSE
RTRUE
?CCL5: EQUAL? PREP,W?ON \FALSE
FSET? CONT,SURFACEBIT /TRUE
RFALSE
.FUNCT V-BE?:ANY:0:0
CALL1 V-BE
RSTACK
.FUNCT V-WHO:ANY:0:0
EQUAL? PRSO,ROOMS \?CCL3
CALL1 MORE-SPECIFIC
RSTACK
?CCL3: ZERO? PRSI \?CCL5
PRINTI "You don't know anything special about "
ICALL2 TELL-THE,PRSO
PRINTR "."
?CCL5: CALL1 V-BE
RSTACK
.FUNCT V-WHAT:ANY:0:0
CALL1 V-WHO
RSTACK
.FUNCT PRE-WHERE:ANY:0:0
ZERO? PRSS \FALSE
ZERO? PRSQ \FALSE
ICALL PERFORM,V?FIND,PRSO,PRSI
RTRUE
.FUNCT V-WHERE:ANY:0:0
EQUAL? PRSO,ROOMS \?CCL3
CALL1 MORE-SPECIFIC
RSTACK
?CCL3: CALL1 V-BE
RSTACK
.FUNCT V-WHEN:ANY:0:0
EQUAL? PRSO,ROOMS \?CCL3
CALL1 MORE-SPECIFIC
RSTACK
?CCL3: CALL1 V-BE
RSTACK
.FUNCT V-WHY:ANY:0:0
EQUAL? PRSO,ROOMS \?CCL3
CALL1 MORE-SPECIFIC
RSTACK
?CCL3: CALL1 V-BE
RSTACK
.FUNCT V-HOW:ANY:0:0
EQUAL? PRSO,ROOMS \?CCL3
CALL1 MORE-SPECIFIC
RSTACK
?CCL3: CALL1 V-BE
RSTACK
.FUNCT QUIET?:ANY:1:1,OBJ
RTRUE
.FUNCT OUTSIDE?:ANY:1:1,OBJ
FSET? HERE,OUTSIDE /TRUE
RFALSE
.FUNCT OPEN?:ANY:1:1,OBJ
FSET? OBJ,OPENABLE /?PRD3
FSET? OBJ,DOORBIT \FALSE
?PRD3: FSET? OBJ,OPENBIT /TRUE
RFALSE
.FUNCT Q-CLOSED?:ANY:1:1,OBJ
FSET? OBJ,OPENABLE /?PRD3
FSET? OBJ,DOORBIT \FALSE
?PRD3: FSET? OBJ,OPENBIT /FALSE
RTRUE
.FUNCT LOCKED?:ANY:1:1,OBJ
FSET? OBJ,DOORBIT \FALSE
FSET? OBJ,LOCKED /TRUE
RFALSE
.FUNCT UNLOCKED?:ANY:1:1,OBJ
FSET? OBJ,DOORBIT \FALSE
FSET? OBJ,LOCKED /FALSE
RTRUE
.FUNCT DEAD?:ANY:1:1,OBJ
FSET? OBJ,PERSONBIT \TRUE
FSET? OBJ,DEAD /TRUE
RFALSE
.FUNCT ALIVE?:ANY:1:1,OBJ
FSET? OBJ,PERSONBIT \FALSE
FSET? OBJ,DEAD /FALSE
RTRUE
.FUNCT PRSO-IS:ANY:1:2,NOT?,CAP?
EQUAL? PRSO,ME,PLAYER \?CCL3
ZERO? CAP? /?CCL6
PRINTI "You"
JUMP ?CND4
?CCL6: PRINTI " you"
?CND4: PRINTI " are"
ZERO? NOT? /FALSE
PRINTI "n't"
RTRUE
?CCL3: ZERO? CAP? /?CCL12
ICALL2 TELL-CTHE,PRSO
JUMP ?CND10
?CCL12: PRINTC 32
ICALL2 TELL-THE,PRSO
?CND10: ICALL2 PRINT-IS/ARE,PRSO
ZERO? NOT? /FALSE
PRINTI "n't"
RTRUE
.FUNCT PRINT-IS/ARE:ANY:1:1,OBJ
FSET? OBJ,PLURAL /?CTR2
EQUAL? OBJ,ME,YOU \?CCL3
?CTR2: PRINTI " are"
RTRUE
?CCL3: PRINTI " is"
RTRUE
.FUNCT IS-PRSO-ADJ?:ANY:1:1,ADJ,TMP
GETPT PRSO,P?ADJECTIVE >TMP
ZERO? TMP /?CCL3
PTSIZE TMP
DIV STACK,2
INTBL? ADJ,TMP,STACK /TRUE
?CCL3: GET ADJ-TABLE,0
INTBL? ADJ,ADJ-TABLE,STACK >TMP \FALSE
GET TMP,1
CALL STACK,PRSO
ZERO? STACK \TRUE
RFALSE
.FUNCT V-STATEMENT:ANY:0:0
CALL1 V-DO?
RSTACK
.FUNCT WHO-KNOWS:ANY:0:1,WD,OBJ,SUBJ,V,M,N,?TMP1
ASSIGNED? 'WD /?CND1
GET PARSE-RESULT,14 >WD
?CND1: GET PARSE-RESULT,10
EQUAL? STACK,W?WHO,W?WHAT \?CCL5
GET P-PRSA-WORD,3
GET STACK,2 >OBJ
ZERO? OBJ /?CCL5
CALL GET-SYNTAX,OBJ,1,0,TRUE-VALUE
ZERO? STACK /?CCL5
CALL DETERMINE-OBJ,FALSE-VALUE,1,TRUE-VALUE >OBJ
ZERO? OBJ /?CCL5
GET OBJ,3 >OBJ
ZERO? OBJ /?CCL5
PRINTI "Perhaps"
JUMP ?CND3
?CCL5: SET 'OBJ,FALSE-VALUE
PRINT WHO-KNOWS-STRING
ICALL1 TELL-Q-WORD
?CND3: GET PARSE-RESULT,13 >SUBJ
ZERO? SUBJ /?CCL13
GET SUBJ,3 >SUBJ
JUMP ?CND11
?CCL13: EQUAL? PRSO,FALSE-VALUE,ROOMS /?CCL15
SET 'SUBJ,PRSO
?CND11: PRINTC 32
EQUAL? SUBJ,ME,PLAYER \?CCL18
PRINTI "you"
JUMP ?CND16
?CCL15: PRINTR "."
?CCL18: ICALL2 TELL-THE,SUBJ
?CND16: ZERO? WD /?CND19
EQUAL? WD,W?DO,W?DOES,W?DID \?CCL22
GET PARSE-RESULT,13
ZERO? STACK \?CND19
?CCL22: PRINTC 32
PRINTB WD
?CND19: GET PARSE-RESULT,13
ZERO? STACK /?CND25
PRINTC 32
ZERO? WD /?CCL29
EQUAL? WD,W?DID \?CCL32
GETB VOCAB,0
ADD 1,STACK
ADD VOCAB,STACK >V
GETB V,0
BOR 128,STACK >M
EQUAL? P-PRSA-WORD,W?GET \?CCL37
PRINTI "got"
JUMP ?CND30
?CCL37: ADD V,9 >?TMP1
ADD V,1
GET STACK,0
INTBL? P-PRSA-WORD,?TMP1,STACK,M >N \?CCL39
GET N,1
BTST STACK,PAST-TENSE \?CCL39
PRINTB N
JUMP ?CND30
?CCL39: PRINTB P-PRSA-WORD
PRINTI "ed"
JUMP ?CND30
?CCL32: PRINTB P-PRSA-WORD
EQUAL? WD,W?DO,W?DOES \?CND30
EQUAL? SUBJ,ME,PLAYER /?CND30
FSET? SUBJ,PLURAL /?CND30
PRINTC 115
?CND30: ZERO? OBJ /?CCL49
PRINTC 32
EQUAL? OBJ,SUBJ \?CCL52
FSET? OBJ,PERSONBIT /?CCL55
PRINTI "it"
JUMP ?CND53
?CCL55: FSET? OBJ,FEMALE \?CCL57
PRINTI "her"
JUMP ?CND53
?CCL57: PRINTI "him"
?CND53: PRINTI "self"
JUMP ?CND25
?CCL52: ICALL2 TELL-THE,OBJ
JUMP ?CND25
?CCL49: ICALL1 ECHO-NOUNS
JUMP ?CND25
?CCL29: PRINTB P-PRSA-WORD
?CND25: PRINTR "."
.FUNCT ECHO-NOUNS:ANY:0:0,WD
EQUAL? PRSO,0,WHAT,NOT-HERE-OBJECT /?CND1
GET PARSE-RESULT,7 >WD
ZERO? WD /?CND3
PRINTC 32
PRINTB WD
?CND3: PRINTC 32
ICALL2 TELL-THE,PRSO
?CND1: EQUAL? PRSI,0,WHAT,NOT-HERE-OBJECT /FALSE
GET PARSE-RESULT,8 >WD
ZERO? WD /?CND8
PRINTC 32
PRINTB WD
?CND8: PRINTC 32
CALL2 TELL-THE,PRSI
RSTACK
.FUNCT V-CAN?:ANY:0:0
CALL2 WHO-KNOWS,W?CAN
RSTACK
.FUNCT V-MAY?:ANY:0:0
CALL2 WHO-KNOWS,W?MAY
RSTACK
.FUNCT V-DO?:ANY:0:0
CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
GET PARSE-RESULT,16
BTST STACK,PARSE-QUESTION /?CCL5
ZERO? PRSS \?CCL8
ICALL1 MORE-SPECIFIC
RTRUE
?CCL8: PRINTI "So you think"
EQUAL? PRSS,ME,PLAYER \?CCL11
PRINTI " you "
GET PARSE-RESULT,16
BTST STACK,1 \?CND9
PRINTI "don't "
JUMP ?CND9
?CCL11: PRINTC 32
ICALL2 TELL-THE,PRSS
PRINTC 32
GET PARSE-RESULT,16
BTST STACK,1 \?CND9
PRINTI "doesn't "
?CND9: PRINTB P-PRSA-WORD
ICALL1 ECHO-NOUNS
PRINTR "."
?CCL5: CALL1 WHO-KNOWS
RSTACK
.FUNCT V-COULD?:ANY:0:0
CALL2 WHO-KNOWS,W?COULD
RSTACK
.FUNCT V-WOULD?:ANY:0:0
CALL2 WHO-KNOWS,W?WOULD
RSTACK
.FUNCT V-SHOULD?:ANY:0:0
CALL2 WHO-KNOWS,W?SHOULD
RSTACK
.FUNCT V-MIGHT?:ANY:0:0
CALL2 WHO-KNOWS,W?MIGHT
RSTACK
.FUNCT V-WILL?:ANY:0:0
CALL2 WHO-KNOWS,W?WILL
RSTACK
.FUNCT V-MUST?:ANY:0:0
CALL2 WHO-KNOWS,W?MUST
RSTACK
.FUNCT PRE-DROP?:ANY:0:0
LOC PRSS
EQUAL? PRSO,STACK \FALSE
ICALL PERFORM,V?DISEMBARK,PRSO,PRSI
RTRUE
.FUNCT V-DROP?:ANY:0:0
EQUAL? PRSO,ROOMS \FALSE
PRINT STR?58
PRINTR "hanging from anything."
.FUNCT V-DISEMBARK?:ANY:0:0,AV
LOC PRSS >AV
EQUAL? PRSO,FALSE-VALUE,ROOMS \?CCL3
ZERO? AV /?CCL6
IN? AV,ROOMS /?CCL6
ICALL PERFORM,PRSA,AV,PRSI
RTRUE
?CCL6: PRINT STR?58
PRINTR "in anything."
?CCL3: ZERO? AV /?CCL10
IN? AV,ROOMS /?CCL10
EQUAL? AV,PRSO /FALSE
CALL HELD?,AV,PRSO
ZERO? STACK \FALSE
PRINT STR?59
FSET? AV,SURFACEBIT \?CCL20
PRINTI " on "
JUMP ?CND18
?CCL20: PRINTI " in "
?CND18: ICALL2 TELL-THE,AV
PRINTR "!"
?CCL10: LOC PRSO
ZERO? STACK /?CCL22
ICALL PERFORM,V?TAKE,PRSO,PRSI
RTRUE
?CCL22: PRINT STR?60
CRLF
RTRUE
.FUNCT PRE-TAKE?:ANY:0:0
ZERO? PRSI \FALSE
CALL1 PRE-TAKE
RSTACK
.FUNCT V-TAKE?:ANY:0:0
GET PARSE-RESULT,10
ZERO? STACK \FALSE
PRINTR "Seems reasonable."
.ENDSEG
.ENDI

91
reds.zabstr Normal file
View File

@ -0,0 +1,91 @@
<FLAGS-AND-DEFAULTS (("P-BE-VERB" T)("ONE-BYTE-PARTS-OF-SPEECH" %<>)(
"WORD-FLAGS-IN-TABLE" T)("IN-ZILCH" T)("P-ZORK0" %<>)) (("DIR-VERB-PRSI?"
"DEFS" #WORD *35522513507*))>
<ZZPACKAGE "REDS">
<ENTRY RED-SP RED-ADV RED-PART RED-SV RED-SVN RED-SVPNPN RED-SVD RED-PERS
RED-VP RED-NP RED-OF RED-QT RED-QN RED-NPP RED-PP RED-POSS RED-ADJ RED-ADJS
RED-QUOTE>
<ENTRY RED-O-ADJ RED-O-PP RED-O-NP NUMERIC-ADJ? DIR-VERB-WORD?>
<INCLUDE "BASEDEFS" "FIND" "PBITDEFS" "PDEFS">
<USE "NEWSTRUC" "PARSER" "PMEM" "PSTACK">
<FILE-FLAGS MDL-ZIL?>
<BEGIN-SEGMENT 0>
<DEFAULTS-DEFINED DIR-VERB-PRSI? DIR-VERB-WORD? NOT-HERE-VERB?>
<DEFAULT-DEFINITION DIR-VERB-PRSI? <DEFINE DIR-VERB-PRSI? (NP) <AND <EQUAL? <
PARSE-ACTION ,PARSE-RESULT> ,V?MOVE-DIR ,V?RIDE-DIR ,V?ROLL-DIR ,V?SET-DIR> <
NOT <EQUAL? <NOUN-PHRASE-OBJ1 .NP> ,INTDIR ,LEFT-RIGHT>>>>>
<DEFAULT-DEFINITION DIR-VERB-WORD? <DEFMAC DIR-VERB-WORD? ('WD) <FORM EQUAL? .
WD ',W?WALK ',W?GO ',W?RUN>>>
<DEFAULT-DEFINITION NOT-HERE-VERB? <DEFMAC NOT-HERE-VERB? ('V) <FORM EQUAL? .V
',V?WALK-TO>>>
<DEFMAC ABS ('NUM) <FORM COND (<FORM L? .NUM 0> <FORM - 0 .NUM>) (T .NUM)>>
<DEFINE-ROUTINE RED-FCN>
<DEFINE-ROUTINE RED-PART>
<DEFINE-ROUTINE GET-SYNTAX>
<DEFINE-ROUTINE RED-SV>
<DEFINE-ROUTINE ROOT-VERB>
<DEFINE-ROUTINE RED-SVN>
<DEFINE-ROUTINE SVN>
<DEFINE-ROUTINE RED-SVPNPN>
<DEFINE-ROUTINE RED-SVD>
<DEFINE-ROUTINE RED-SP>
<GLOBAL SEARCH-FLAGS:NUMBER 0>
<DEFINE-ROUTINE IREDUCE-EXCEPTION>
<DEFINE-ROUTINE REDUCE-EXCEPT-IT>
<DEFINE-ROUTINE REDUCE-EXCEPTION>
<CONSTANT P-NO-INSIDE "No inside">
<CONSTANT P-NO-SURFACE "No surface">
<CONSTANT P-NOTHING "Nothing">
<CONSTANT PREP-BIT <ITABLE 3 0>>
<DEFINE-ROUTINE REDUCE-LOCATION>
<COND (<GASSIGNED? DO-TEST-PREP> <SETG TEST-PREP <TABLE ,DO-TEST-PREP>>)>
<DEFINE-ROUTINE DETERMINE-OBJ>
<DEFINE-ROUTINE CHECK-DIR-ADJS>
<DEFINE-ROUTINE NUMERIC-ADJ?>
<COMPILATION-FLAG-DEFAULT P-GENDERS T>
<VOC "HIMSELF" NOUN>
<VOC "HERSELF" NOUN>
<DEFINE-ROUTINE DETERMINE-NP>
<DEFINE-ROUTINE DET-NP-NOT-HERE?>
<DEFINE-ROUTINE DET-NP-OWNEE?>
<DEFINE-ROUTINE FIND-OWNERS>
<DEFINE-ROUTINE READY-TO-DISAMBIGUATE?>
<DEFINE-ROUTINE DETERMINE-NP-XFER>
<DEFINE-ROUTINE DO-ORPHAN-TEST>
<DEFINE-ROUTINE RED-O-ADJ>
<DEFINE-ROUTINE RED-O-PP>
<DEFINE-ROUTINE INSERT-NP>
<DEFINE-ROUTINE TEST-SR>
<DEFINE-ROUTINE TEST-O-SR>
<DEFINE-ROUTINE RED-O-NP>
<DEFINE-ROUTINE RED-PERS>
<DEFINE-ROUTINE HACK-TELL>
<DEFINE-ROUTINE HACK-TELL-1>
<DEFINE-ROUTINE RED-VP>
<DEFINE-ROUTINE RED-NP>
<DEFINE-ROUTINE RED-OF>
<DEFINE-ROUTINE RED-QT>
<DEFINE-ROUTINE GET-QUANTITY-WORD>
<DEFINE-ROUTINE GET-QUANTITY>
<DEFINE-ROUTINE RED-QN>
<DEFINE-ROUTINE RED-NPP>
<DEFINE-ROUTINE RED-PP>
<ADD-WORD MY ADJ>
<ADD-WORD ME NOUN>
<ADD-WORD YOUR ADJ>
<ADD-WORD YOU NOUN>
<ADD-WORD ITS ADJ>
<ADD-WORD IT NOUN>
<ADD-WORD HIS ADJ>
<ADD-WORD HIM NOUN>
<ADD-WORD THEIR ADJ>
<ADD-WORD THEM NOUN>
<DEFINE-ROUTINE RED-POSS>
<CONSTANT LAST-OBJECT 0>
<DEFINE-ROUTINE RED-ADJS>
<DEFINE-ROUTINE RED-ADJ>
<OBJECT INTQUOTE (LOC GLOBAL-OBJECTS) (DESC "quotation")>
<DEFINE-ROUTINE RED-QUOTE>
<END-SEGMENT>
<ENDPACKAGE>

1678
reds.zap Normal file

File diff suppressed because it is too large Load Diff

901
state.1 Normal file
View File

@ -0,0 +1,901 @@
State # 1:
END-OF-INPUT, VERB, ADV,
DIR, TOBE, QWORD, CANDO,
PARTICLE, PREP: Apply RED-PERS to 0, new token is ?PERS
NOUN: Apply RED-PERS to 0, new token is ?PERS
Apply RED-ADJ to 0, new token is ADJ*
ADJ: Apply RED-PERS to 0, new token is ?PERS
-->State 12
QUANT: Apply RED-PERS to 0, new token is ?PERS
-->State 11
ASKWORD: -->State 10
ARTICLE: Apply RED-PERS to 0, new token is ?PERS
-->State 9
QUOTE: Apply RED-PERS to 0, new token is ?PERS
-->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 5
?PERS: -->State 6
SP: -->State 7
State # 2:
END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 103
NP: -->State 14
State # 3:
NOUN: -->State 19
State # 4:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT, COMMA, PARTICLE,
PREP: Apply RED-NPP to 1, new token is NPP
APOSTR: -->State 16
OFWORD: -->State 15
State # 5:
COMMA: -->State 102
PARTICLE: -->State 30
PREP: -->State 23
PP: -->State 22
State # 6:
END-OF-INPUT, PARTICLE,
PREP: Apply DO-ORPHAN-TEST to 0, new token is O?
TOBE, CANDO: Apply RED-FCN to 0, new token is ?QW1
VERB: Apply RED-CANDO to 0, new token is ?CANDO
NOUN: Apply RED-ADJ to 0, new token is ADJ*
Apply DO-ORPHAN-TEST to 0, new token is O?
ADJ: Apply DO-ORPHAN-TEST to 0, new token is O?
-->State 12
ADV: Apply RED-CANDO to 0, new token is ?CANDO
Apply DO-ORPHAN-TEST to 0, new token is O?
QUANT: Apply DO-ORPHAN-TEST to 0, new token is O?
-->State 11
DIR: -->State 42
QWORD: -->State 41
ARTICLE: Apply DO-ORPHAN-TEST to 0, new token is O?
-->State 9
QUOTE: Apply DO-ORPHAN-TEST to 0, new token is O?
-->State 8
O?: -->State 35
POSSESSIVE: -->State 2
ADJ*: -->State 3
?QW1: -->State 36
NP: -->State 37
?CANDO: -->State 38
VP: -->State 39
S: -->State 40
State # 7:
END-OF-INPUT: DONE
State # 8:
OFWORD, ARTICLE, QUOTE,
END-OF-INPUT, VERB, NOUN,
ADJ, ADV, QUANT, MISCWORD,
TOBE, CANDO, COMMA,
PARTICLE, PREP, APOSTR: Apply RED-QUOTE to 1, new token is NP
State # 9:
END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 34
NP: -->State 14
State # 10:
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 21
State # 11:
OFWORD, END-OF-INPUT, VERB,
ADV, MISCWORD, TOBE, CANDO,
COMMA, PARTICLE, PREP,
APOSTR: Apply RED-QT to 1, new token is NP
NOUN: Apply RED-QT to 1, new token is NP
Apply RED-ADJ to 0, new token is ADJ*
ADJ: Apply RED-QT to 1, new token is NP
-->State 12
QUANT: Apply RED-QT to 1, new token is NP
-->State 11
ARTICLE: Apply RED-QT to 1, new token is NP
-->State 9
QUOTE: Apply RED-QT to 1, new token is NP
-->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 20
State # 12:
END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 13
NP: -->State 14
State # 13:
END-OF-INPUT, ADV: Apply RED-ADJ to 2, new token is ADJ*
NOUN: Apply RED-ADJ to 2, new token is ADJ*
-->State 19
State # 14:
APOSTR: -->State 16
OFWORD: -->State 15
State # 15:
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 18
State # 16:
MISCWORD: -->State 17
State # 17:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT: Apply RED-POSS to 3, new token is POSSESSIVE
State # 18:
ARTICLE, QUOTE,
END-OF-INPUT, VERB, NOUN,
ADJ, ADV, QUANT, MISCWORD,
TOBE, CANDO, COMMA,
PARTICLE, PREP: Apply RED-OF to 3, new token is NP
APOSTR: Apply RED-OF to 3, new token is NP
-->State 16
OFWORD: Apply RED-OF to 3, new token is NP
-->State 15
State # 19:
OFWORD, ARTICLE, QUOTE,
END-OF-INPUT, VERB, NOUN,
ADJ, ADV, QUANT, MISCWORD,
TOBE, CANDO, COMMA,
PARTICLE, PREP, APOSTR: Apply RED-NP to 2, new token is NP
State # 20:
ARTICLE, QUOTE,
END-OF-INPUT, VERB, NOUN,
ADJ, ADV, QUANT, MISCWORD,
TOBE, CANDO, COMMA,
PARTICLE, PREP: Apply RED-QN to 2, new token is NP
APOSTR: Apply RED-QN to 2, new token is NP
-->State 16
OFWORD: Apply RED-QN to 2, new token is NP
-->State 15
State # 21:
COMMA: -->State 25
PARTICLE: -->State 24
PREP: -->State 23
PP: -->State 22
State # 22:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT, COMMA, PARTICLE,
PREP: Apply RED-NPP to 2, new token is NPP
State # 23:
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
OFWORD: -->State 32
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 31
State # 24:
END-OF-INPUT, VERB, ADV,
DIR, TOBE, QWORD, CANDO,
PARTICLE, PREP: Apply RED-PERS to 3, new token is ?PERS
NOUN: Apply RED-PERS to 3, new token is ?PERS
Apply RED-ADJ to 0, new token is ADJ*
ADJ: Apply RED-PERS to 3, new token is ?PERS
-->State 12
QUANT: Apply RED-PERS to 3, new token is ?PERS
-->State 11
OFWORD: -->State 28
ARTICLE: Apply RED-PERS to 3, new token is ?PERS
-->State 9
QUOTE: Apply RED-PERS to 3, new token is ?PERS
-->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 27
State # 25:
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 26
State # 26:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT, COMMA, PARTICLE,
PREP: Apply RED-NPP to 3, new token is NPP
APOSTR: -->State 16
OFWORD: -->State 15
State # 27:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT: Apply RED-PP to 2, new token is PP
COMMA: Apply RED-PP to 2, new token is PP
-->State 25
PARTICLE: Apply RED-PP to 2, new token is PP
-->State 30
PREP: Apply RED-PP to 2, new token is PP
-->State 23
PP: -->State 22
State # 28:
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 29
State # 29:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT: Apply RED-PP to 3, new token is PP
COMMA: Apply RED-PP to 3, new token is PP
-->State 25
PARTICLE: Apply RED-PP to 3, new token is PP
-->State 30
PREP: Apply RED-PP to 3, new token is PP
-->State 23
PP: -->State 22
State # 30:
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
OFWORD: -->State 28
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 27
State # 31:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT: Apply RED-PP to 2, new token is PP
COMMA: Apply RED-PP to 2, new token is PP
-->State 25
PARTICLE: Apply RED-PP to 2, new token is PP
-->State 30
PREP: Apply RED-PP to 2, new token is PP
-->State 23
PP: -->State 22
State # 32:
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 33
State # 33:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT: Apply RED-PP to 3, new token is PP
COMMA: Apply RED-PP to 3, new token is PP
-->State 25
PARTICLE: Apply RED-PP to 3, new token is PP
-->State 30
PREP: Apply RED-PP to 3, new token is PP
-->State 23
PP: -->State 22
State # 34:
END-OF-INPUT, ADV: Apply RED-ADJ to 2, new token is ADJ*
NOUN: Apply RED-ADJ to 2, new token is ADJ*
-->State 19
State # 35:
END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
PARTICLE: -->State 99
PREP: -->State 23
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 96
PP: -->State 97
NP: -->State 98
State # 36:
TOBE: -->State 44
CANDO: -->State 78
BE-FORM: -->State 77
State # 37:
VERB, ADV: Apply RED-CANDO to 1, new token is ?CANDO
TOBE: -->State 44
CANDO: -->State 67
APOSTR: -->State 16
OFWORD: -->State 15
BE-FORM: -->State 66
State # 38:
VERB: Apply RED-FCN to 0, new token is ?ADV
ADV: -->State 47
?ADV: -->State 63
State # 39:
END-OF-INPUT, ADV: Apply RED-PART to 0, new token is ?PARTICLE
NOUN: Apply RED-PART to 0, new token is ?PARTICLE
Apply RED-ADJ to 0, new token is ADJ*
ADJ: Apply RED-PART to 0, new token is ?PARTICLE
-->State 12
QUANT: Apply RED-PART to 0, new token is ?PARTICLE
-->State 11
DIR: -->State 51
PARTICLE: -->State 50
ARTICLE: Apply RED-PART to 0, new token is ?PARTICLE
-->State 9
QUOTE: Apply RED-PART to 0, new token is ?PARTICLE
-->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 48
?PARTICLE: -->State 49
State # 40:
ADV: -->State 47
END-OF-INPUT: Apply RED-FCN to 0, new token is ?ADV
?ADV: -->State 46
State # 41:
TOBE: Apply RED-FCN to 1, new token is ?QW1
-->State 44
CANDO: Apply RED-FCN to 1, new token is ?QW1
BE-FORM: -->State 43
State # 42:
END-OF-INPUT, ADV: Apply RED-SD to 1, new token is S
State # 43:
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 45
State # 44:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT, MISCWORD, PARTICLE,
PREP: Apply RED-BE-FORM to 1, new token is BE-FORM
State # 45:
END-OF-INPUT, ADV: Apply RED-SQBN to 3, new token is S
APOSTR: -->State 16
OFWORD: -->State 15
State # 46:
END-OF-INPUT: Apply RED-SP to 3, new token is SP
State # 47:
ARTICLE, QUOTE,
END-OF-INPUT, VERB, NOUN,
ADJ, ADV, QUANT, DIR,
PARTICLE: Apply RED-FCN to 1, new token is ?ADV
State # 48:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT: Apply RED-PART to 0, new token is ?PARTICLE
COMMA: -->State 25
PARTICLE: -->State 61
PREP: -->State 23
PP: -->State 22
?PARTICLE: -->State 60
State # 49:
END-OF-INPUT, ADV: Apply RED-SV to 2, new token is S
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 54
State # 50:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT: Apply RED-PART to 0, new token is ?PARTICLE
PARTICLE: -->State 50
OFWORD: -->State 53
?PARTICLE: -->State 52
State # 51:
END-OF-INPUT, ADV: Apply RED-SVD to 2, new token is S
State # 52:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT: Apply RED-PART to 2, new token is ?PARTICLE
State # 53:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT: Apply RED-PART to 2, new token is ?PARTICLE
State # 54:
END-OF-INPUT, ADV: Apply RED-SVN to 3, new token is S
NOUN: Apply RED-PART to 0, new token is ?PARTICLE
Apply RED-ADJ to 0, new token is ADJ*
ADJ: Apply RED-PART to 0, new token is ?PARTICLE
-->State 12
QUANT: Apply RED-PART to 0, new token is ?PARTICLE
-->State 11
COMMA: -->State 25
PARTICLE: -->State 57
PREP: -->State 23
ARTICLE: Apply RED-PART to 0, new token is ?PARTICLE
-->State 9
QUOTE: Apply RED-PART to 0, new token is ?PARTICLE
-->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
PP: -->State 22
NP: -->State 4
NPP: -->State 55
?PARTICLE: -->State 56
State # 55:
END-OF-INPUT, ADV: Apply RED-SVPNN to 4, new token is S
COMMA: -->State 25
PARTICLE: -->State 30
PREP: -->State 23
PP: -->State 22
State # 56:
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 59
State # 57:
NOUN: Apply RED-PART to 0, new token is ?PARTICLE
Apply RED-ADJ to 0, new token is ADJ*
ADJ: Apply RED-PART to 0, new token is ?PARTICLE
-->State 12
QUANT: Apply RED-PART to 0, new token is ?PARTICLE
-->State 11
PARTICLE: -->State 50
OFWORD: -->State 58
ARTICLE: Apply RED-PART to 0, new token is ?PARTICLE
-->State 9
QUOTE: Apply RED-PART to 0, new token is ?PARTICLE
-->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 27
?PARTICLE: -->State 52
State # 58:
NOUN: Apply RED-PART to 2, new token is ?PARTICLE
Apply RED-ADJ to 0, new token is ADJ*
ADJ: Apply RED-PART to 2, new token is ?PARTICLE
-->State 12
QUANT: Apply RED-PART to 2, new token is ?PARTICLE
-->State 11
ARTICLE: Apply RED-PART to 2, new token is ?PARTICLE
-->State 9
QUOTE: Apply RED-PART to 2, new token is ?PARTICLE
-->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 29
State # 59:
END-OF-INPUT, ADV: Apply RED-SVPNPN to 5, new token is S
COMMA: -->State 25
PARTICLE: -->State 30
PREP: -->State 23
PP: -->State 22
State # 60:
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 62
State # 61:
END-OF-INPUT, ADV: Apply RED-SVNP to 3, new token is S
NOUN: Apply RED-PART to 0, new token is ?PARTICLE
Apply RED-ADJ to 0, new token is ADJ*
ADJ: Apply RED-PART to 0, new token is ?PARTICLE
-->State 12
QUANT: Apply RED-PART to 0, new token is ?PARTICLE
-->State 11
PARTICLE: -->State 50
OFWORD: -->State 58
ARTICLE: Apply RED-PART to 0, new token is ?PARTICLE
-->State 9
QUOTE: Apply RED-PART to 0, new token is ?PARTICLE
-->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 27
?PARTICLE: -->State 52
State # 62:
END-OF-INPUT, ADV: Apply RED-SVNPN to 4, new token is S
COMMA: -->State 25
PARTICLE: -->State 30
PREP: -->State 23
PP: -->State 22
State # 63:
VERB: -->State 64
State # 64:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
QUANT, DIR, PARTICLE: Apply RED-FCN to 0, new token is ?ADV
ADV: Apply RED-FCN to 0, new token is ?ADV
-->State 47
?ADV: -->State 65
State # 65:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT, DIR, PARTICLE: Apply RED-VP to 4, new token is VP
State # 66:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT, PARTICLE, PREP: Apply RED-NOT to 0, new token is ?NOT
MISCWORD: Apply RED-NOT to 0, new token is ?NOT
-->State 69
?NOT: -->State 70
State # 67:
VERB, ADV: Apply RED-NOT to 0, new token is ?NOT
MISCWORD: -->State 69
?NOT: -->State 68
State # 68:
VERB, ADV: Apply RED-CANDO to 3, new token is ?CANDO
State # 69:
ARTICLE, QUOTE, VERB, NOUN,
ADJ, ADV, QUANT, MISCWORD,
PARTICLE, PREP: Apply RED-NOT to 1, new token is ?NOT
State # 70:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT, PARTICLE, PREP: Apply RED-BE to 0, new token is ?BE
MISCWORD: -->State 72
?BE: -->State 71
State # 71:
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 75
QUANT: -->State 11
PARTICLE: -->State 30
PREP: -->State 23
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
PP: -->State 73
NP: -->State 4
NPP: -->State 74
State # 72:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT, PARTICLE, PREP: Apply RED-BE to 1, new token is ?BE
State # 73:
END-OF-INPUT, ADV: Apply RED-SNBP to 5, new token is S
State # 74:
END-OF-INPUT, ADV: Apply RED-SNBN to 5, new token is S
COMMA: -->State 25
PARTICLE: -->State 30
PREP: -->State 23
PP: -->State 22
State # 75:
END-OF-INPUT, ADV: Apply RED-SNBA to 5, new token is S
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
PARTICLE: -->State 30
PREP: -->State 23
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 13
PP: -->State 76
NP: -->State 14
State # 76:
END-OF-INPUT, ADV: Apply RED-SNBAP to 6, new token is S
State # 77:
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
MISCWORD: -->State 81
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NOT: -->State 84
NP: -->State 85
State # 78:
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
MISCWORD: -->State 81
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NOT: -->State 79
NP: -->State 80
State # 79:
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 83
State # 80:
VERB, ADV: Apply RED-NOT to 0, new token is ?NOT
MISCWORD: -->State 69
APOSTR: -->State 16
OFWORD: -->State 15
?NOT: -->State 82
State # 81:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT: Apply RED-NOT to 1, new token is NOT
State # 82:
VERB, ADV: Apply RED-CANDO to 4, new token is ?CANDO
State # 83:
VERB, ADV: Apply RED-CANDO to 4, new token is ?CANDO
APOSTR: -->State 16
OFWORD: -->State 15
State # 84:
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 91
State # 85:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT, PARTICLE, PREP: Apply RED-NOT to 0, new token is ?NOT
MISCWORD: Apply RED-NOT to 0, new token is ?NOT
-->State 69
APOSTR: -->State 16
OFWORD: -->State 15
?NOT: -->State 86
State # 86:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT, PARTICLE, PREP: Apply RED-BE to 0, new token is ?BE
MISCWORD: -->State 72
?BE: -->State 87
State # 87:
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 90
QUANT: -->State 11
PARTICLE: -->State 30
PREP: -->State 23
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
PP: -->State 88
NP: -->State 4
NPP: -->State 89
State # 88:
END-OF-INPUT, ADV: Apply RED-SBNP to 6, new token is S
State # 89:
END-OF-INPUT, ADV: Apply RED-SBNN to 6, new token is S
COMMA: -->State 25
PARTICLE: -->State 30
PREP: -->State 23
PP: -->State 22
State # 90:
END-OF-INPUT, ADV: Apply RED-SBNA to 6, new token is S
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 13
NP: -->State 14
State # 91:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT, PARTICLE, PREP: Apply RED-BE to 0, new token is ?BE
MISCWORD: -->State 72
APOSTR: -->State 16
OFWORD: -->State 15
?BE: -->State 92
State # 92:
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 95
QUANT: -->State 11
PARTICLE: -->State 30
PREP: -->State 23
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
PP: -->State 93
NP: -->State 4
NPP: -->State 94
State # 93:
END-OF-INPUT, ADV: Apply RED-SBNP to 6, new token is S
State # 94:
END-OF-INPUT, ADV: Apply RED-SBNN to 6, new token is S
COMMA: -->State 25
PARTICLE: -->State 30
PREP: -->State 23
PP: -->State 22
State # 95:
END-OF-INPUT, ADV: Apply RED-SBNA to 6, new token is S
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 13
NP: -->State 14
State # 96:
END-OF-INPUT, ADV: Apply RED-O-ADJ to 2, new token is S
NOUN: -->State 19
State # 97:
END-OF-INPUT, ADV: Apply RED-O-PP to 2, new token is S
State # 98:
END-OF-INPUT, ADV: Apply RED-O-NP to 2, new token is S
PARTICLE: -->State 30
PREP: -->State 23
APOSTR: -->State 16
OFWORD: -->State 15
PP: -->State 101
State # 99:
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
OFWORD: -->State 28
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 100
NPP: -->State 27
State # 100:
COMMA, PARTICLE, PREP: Apply RED-NPP to 1, new token is NPP
END-OF-INPUT, ADV: Apply RED-O-PP to 3, new token is S
Apply RED-NPP to 1, new token is NPP
APOSTR: -->State 16
OFWORD: -->State 15
State # 101:
END-OF-INPUT, ADV: Apply RED-O-NP to 3, new token is S
State # 102:
END-OF-INPUT, VERB, ADV,
DIR, TOBE, QWORD, CANDO,
PARTICLE, PREP: Apply RED-PERS to 2, new token is ?PERS
NOUN: Apply RED-PERS to 2, new token is ?PERS
Apply RED-ADJ to 0, new token is ADJ*
ADJ: Apply RED-PERS to 2, new token is ?PERS
-->State 12
QUANT: Apply RED-PERS to 2, new token is ?PERS
-->State 11
ARTICLE: Apply RED-PERS to 2, new token is ?PERS
-->State 9
QUOTE: Apply RED-PERS to 2, new token is ?PERS
-->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 26
State # 103:
END-OF-INPUT, ADV: Apply RED-ADJ to 2, new token is ADJ*
NOUN: Apply RED-ADJ to 2, new token is ADJ*
-->State 19

901
state.2 Normal file
View File

@ -0,0 +1,901 @@
State # 1:
END-OF-INPUT, VERB, ADV,
DIR, TOBE, QWORD, CANDO,
PARTICLE, PREP: Apply RED-PERS to 0, new token is ?PERS
ADJ: Apply RED-PERS to 0, new token is ?PERS
-->State 12
NOUN: Apply RED-PERS to 0, new token is ?PERS
Apply RED-ADJ to 0, new token is ADJ*
QUANT: Apply RED-PERS to 0, new token is ?PERS
-->State 11
ASKWORD: -->State 10
ARTICLE: Apply RED-PERS to 0, new token is ?PERS
-->State 9
QUOTE: Apply RED-PERS to 0, new token is ?PERS
-->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 5
?PERS: -->State 6
SP: -->State 7
State # 2:
ADJ: -->State 12
END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 103
NP: -->State 14
State # 3:
NOUN: -->State 19
State # 4:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT, COMMA, PARTICLE,
PREP: Apply RED-NPP to 1, new token is NPP
APOSTR: -->State 16
OFWORD: -->State 15
State # 5:
PARTICLE: -->State 30
PREP: -->State 23
COMMA: -->State 102
PP: -->State 22
State # 6:
END-OF-INPUT, PARTICLE,
PREP: Apply DO-ORPHAN-TEST to 0, new token is O?
ADJ: Apply DO-ORPHAN-TEST to 0, new token is O?
-->State 12
TOBE, CANDO: Apply RED-FCN to 0, new token is ?QW1
VERB: Apply RED-CANDO to 0, new token is ?CANDO
NOUN: Apply RED-ADJ to 0, new token is ADJ*
Apply DO-ORPHAN-TEST to 0, new token is O?
ADV: Apply RED-CANDO to 0, new token is ?CANDO
Apply DO-ORPHAN-TEST to 0, new token is O?
QUANT: Apply DO-ORPHAN-TEST to 0, new token is O?
-->State 11
DIR: -->State 42
QWORD: -->State 41
ARTICLE: Apply DO-ORPHAN-TEST to 0, new token is O?
-->State 9
QUOTE: Apply DO-ORPHAN-TEST to 0, new token is O?
-->State 8
O?: -->State 35
POSSESSIVE: -->State 2
ADJ*: -->State 3
?QW1: -->State 36
NP: -->State 37
?CANDO: -->State 38
VP: -->State 39
S: -->State 40
State # 7:
END-OF-INPUT: DONE
State # 8:
OFWORD, ARTICLE, QUOTE,
END-OF-INPUT, VERB, NOUN,
ADJ, ADV, QUANT, MISCWORD,
TOBE, CANDO, COMMA,
PARTICLE, PREP, APOSTR: Apply RED-QUOTE to 1, new token is NP
State # 9:
ADJ: -->State 12
END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 34
NP: -->State 14
State # 10:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 21
State # 11:
OFWORD, END-OF-INPUT, VERB,
ADV, MISCWORD, TOBE, CANDO,
COMMA, PARTICLE, PREP,
APOSTR: Apply RED-QT to 1, new token is NP
ADJ: Apply RED-QT to 1, new token is NP
-->State 12
NOUN: Apply RED-QT to 1, new token is NP
Apply RED-ADJ to 0, new token is ADJ*
QUANT: Apply RED-QT to 1, new token is NP
-->State 11
ARTICLE: Apply RED-QT to 1, new token is NP
-->State 9
QUOTE: Apply RED-QT to 1, new token is NP
-->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 20
State # 12:
ADJ: -->State 12
END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 13
NP: -->State 14
State # 13:
END-OF-INPUT, ADV: Apply RED-ADJ to 2, new token is ADJ*
NOUN: Apply RED-ADJ to 2, new token is ADJ*
-->State 19
State # 14:
APOSTR: -->State 16
OFWORD: -->State 15
State # 15:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 18
State # 16:
MISCWORD: -->State 17
State # 17:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT: Apply RED-POSS to 3, new token is POSSESSIVE
State # 18:
ARTICLE, QUOTE,
END-OF-INPUT, VERB, NOUN,
ADJ, ADV, QUANT, MISCWORD,
TOBE, CANDO, COMMA,
PARTICLE, PREP: Apply RED-OF to 3, new token is NP
APOSTR: Apply RED-OF to 3, new token is NP
-->State 16
OFWORD: Apply RED-OF to 3, new token is NP
-->State 15
State # 19:
OFWORD, ARTICLE, QUOTE,
END-OF-INPUT, VERB, NOUN,
ADJ, ADV, QUANT, MISCWORD,
TOBE, CANDO, COMMA,
PARTICLE, PREP, APOSTR: Apply RED-NP to 2, new token is NP
State # 20:
ARTICLE, QUOTE,
END-OF-INPUT, VERB, NOUN,
ADJ, ADV, QUANT, MISCWORD,
TOBE, CANDO, COMMA,
PARTICLE, PREP: Apply RED-QN to 2, new token is NP
APOSTR: Apply RED-QN to 2, new token is NP
-->State 16
OFWORD: Apply RED-QN to 2, new token is NP
-->State 15
State # 21:
PARTICLE: -->State 24
PREP: -->State 23
COMMA: -->State 25
PP: -->State 22
State # 22:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT, COMMA, PARTICLE,
PREP: Apply RED-NPP to 2, new token is NPP
State # 23:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
OFWORD: -->State 32
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 31
State # 24:
END-OF-INPUT, VERB, ADV,
DIR, TOBE, QWORD, CANDO,
PARTICLE, PREP: Apply RED-PERS to 3, new token is ?PERS
ADJ: Apply RED-PERS to 3, new token is ?PERS
-->State 12
NOUN: Apply RED-PERS to 3, new token is ?PERS
Apply RED-ADJ to 0, new token is ADJ*
QUANT: Apply RED-PERS to 3, new token is ?PERS
-->State 11
OFWORD: -->State 28
ARTICLE: Apply RED-PERS to 3, new token is ?PERS
-->State 9
QUOTE: Apply RED-PERS to 3, new token is ?PERS
-->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 27
State # 25:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 26
State # 26:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT, COMMA, PARTICLE,
PREP: Apply RED-NPP to 3, new token is NPP
APOSTR: -->State 16
OFWORD: -->State 15
State # 27:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT: Apply RED-PP to 2, new token is PP
PARTICLE: Apply RED-PP to 2, new token is PP
-->State 30
PREP: Apply RED-PP to 2, new token is PP
-->State 23
COMMA: Apply RED-PP to 2, new token is PP
-->State 25
PP: -->State 22
State # 28:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 29
State # 29:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT: Apply RED-PP to 3, new token is PP
PARTICLE: Apply RED-PP to 3, new token is PP
-->State 30
PREP: Apply RED-PP to 3, new token is PP
-->State 23
COMMA: Apply RED-PP to 3, new token is PP
-->State 25
PP: -->State 22
State # 30:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
OFWORD: -->State 28
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 27
State # 31:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT: Apply RED-PP to 2, new token is PP
PARTICLE: Apply RED-PP to 2, new token is PP
-->State 30
PREP: Apply RED-PP to 2, new token is PP
-->State 23
COMMA: Apply RED-PP to 2, new token is PP
-->State 25
PP: -->State 22
State # 32:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 33
State # 33:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT: Apply RED-PP to 3, new token is PP
PARTICLE: Apply RED-PP to 3, new token is PP
-->State 30
PREP: Apply RED-PP to 3, new token is PP
-->State 23
COMMA: Apply RED-PP to 3, new token is PP
-->State 25
PP: -->State 22
State # 34:
END-OF-INPUT, ADV: Apply RED-ADJ to 2, new token is ADJ*
NOUN: Apply RED-ADJ to 2, new token is ADJ*
-->State 19
State # 35:
ADJ: -->State 12
END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ*
PARTICLE: -->State 99
PREP: -->State 23
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 96
PP: -->State 97
NP: -->State 98
State # 36:
TOBE: -->State 44
CANDO: -->State 78
BE-FORM: -->State 77
State # 37:
VERB, ADV: Apply RED-CANDO to 1, new token is ?CANDO
TOBE: -->State 44
CANDO: -->State 67
APOSTR: -->State 16
OFWORD: -->State 15
BE-FORM: -->State 66
State # 38:
VERB: Apply RED-FCN to 0, new token is ?ADV
ADV: -->State 47
?ADV: -->State 63
State # 39:
ADJ: Apply RED-PART to 0, new token is ?PARTICLE
-->State 12
PARTICLE: -->State 50
END-OF-INPUT, ADV: Apply RED-PART to 0, new token is ?PARTICLE
NOUN: Apply RED-PART to 0, new token is ?PARTICLE
Apply RED-ADJ to 0, new token is ADJ*
QUANT: Apply RED-PART to 0, new token is ?PARTICLE
-->State 11
DIR: -->State 51
ARTICLE: Apply RED-PART to 0, new token is ?PARTICLE
-->State 9
QUOTE: Apply RED-PART to 0, new token is ?PARTICLE
-->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 48
?PARTICLE: -->State 49
State # 40:
ADV: -->State 47
END-OF-INPUT: Apply RED-FCN to 0, new token is ?ADV
?ADV: -->State 46
State # 41:
TOBE: Apply RED-FCN to 1, new token is ?QW1
-->State 44
CANDO: Apply RED-FCN to 1, new token is ?QW1
BE-FORM: -->State 43
State # 42:
END-OF-INPUT, ADV: Apply RED-SD to 1, new token is S
State # 43:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 45
State # 44:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT, MISCWORD, PARTICLE,
PREP: Apply RED-BE-FORM to 1, new token is BE-FORM
State # 45:
END-OF-INPUT, ADV: Apply RED-SQBN to 3, new token is S
APOSTR: -->State 16
OFWORD: -->State 15
State # 46:
END-OF-INPUT: Apply RED-SP to 3, new token is SP
State # 47:
ARTICLE, QUOTE,
END-OF-INPUT, VERB, NOUN,
ADJ, ADV, QUANT, DIR,
PARTICLE: Apply RED-FCN to 1, new token is ?ADV
State # 48:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT: Apply RED-PART to 0, new token is ?PARTICLE
PARTICLE: -->State 61
PREP: -->State 23
COMMA: -->State 25
PP: -->State 22
?PARTICLE: -->State 60
State # 49:
ADJ: -->State 12
END-OF-INPUT, ADV: Apply RED-SV to 2, new token is S
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 54
State # 50:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT: Apply RED-PART to 0, new token is ?PARTICLE
PARTICLE: -->State 50
OFWORD: -->State 53
?PARTICLE: -->State 52
State # 51:
END-OF-INPUT, ADV: Apply RED-SVD to 2, new token is S
State # 52:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT: Apply RED-PART to 2, new token is ?PARTICLE
State # 53:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT: Apply RED-PART to 2, new token is ?PARTICLE
State # 54:
ADJ: Apply RED-PART to 0, new token is ?PARTICLE
-->State 12
PARTICLE: -->State 57
END-OF-INPUT, ADV: Apply RED-SVN to 3, new token is S
PREP: -->State 23
NOUN: Apply RED-PART to 0, new token is ?PARTICLE
Apply RED-ADJ to 0, new token is ADJ*
QUANT: Apply RED-PART to 0, new token is ?PARTICLE
-->State 11
COMMA: -->State 25
ARTICLE: Apply RED-PART to 0, new token is ?PARTICLE
-->State 9
QUOTE: Apply RED-PART to 0, new token is ?PARTICLE
-->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
PP: -->State 22
NP: -->State 4
NPP: -->State 55
?PARTICLE: -->State 56
State # 55:
PARTICLE: -->State 30
END-OF-INPUT, ADV: Apply RED-SVPNN to 4, new token is S
PREP: -->State 23
COMMA: -->State 25
PP: -->State 22
State # 56:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 59
State # 57:
ADJ: Apply RED-PART to 0, new token is ?PARTICLE
-->State 12
PARTICLE: -->State 50
NOUN: Apply RED-PART to 0, new token is ?PARTICLE
Apply RED-ADJ to 0, new token is ADJ*
QUANT: Apply RED-PART to 0, new token is ?PARTICLE
-->State 11
OFWORD: -->State 58
ARTICLE: Apply RED-PART to 0, new token is ?PARTICLE
-->State 9
QUOTE: Apply RED-PART to 0, new token is ?PARTICLE
-->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 27
?PARTICLE: -->State 52
State # 58:
ADJ: Apply RED-PART to 2, new token is ?PARTICLE
-->State 12
NOUN: Apply RED-PART to 2, new token is ?PARTICLE
Apply RED-ADJ to 0, new token is ADJ*
QUANT: Apply RED-PART to 2, new token is ?PARTICLE
-->State 11
ARTICLE: Apply RED-PART to 2, new token is ?PARTICLE
-->State 9
QUOTE: Apply RED-PART to 2, new token is ?PARTICLE
-->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 29
State # 59:
PARTICLE: -->State 30
END-OF-INPUT, ADV: Apply RED-SVPNPN to 5, new token is S
PREP: -->State 23
COMMA: -->State 25
PP: -->State 22
State # 60:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 62
State # 61:
ADJ: Apply RED-PART to 0, new token is ?PARTICLE
-->State 12
PARTICLE: -->State 50
END-OF-INPUT, ADV: Apply RED-SVNP to 3, new token is S
NOUN: Apply RED-PART to 0, new token is ?PARTICLE
Apply RED-ADJ to 0, new token is ADJ*
QUANT: Apply RED-PART to 0, new token is ?PARTICLE
-->State 11
OFWORD: -->State 58
ARTICLE: Apply RED-PART to 0, new token is ?PARTICLE
-->State 9
QUOTE: Apply RED-PART to 0, new token is ?PARTICLE
-->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 27
?PARTICLE: -->State 52
State # 62:
PARTICLE: -->State 30
END-OF-INPUT, ADV: Apply RED-SVNPN to 4, new token is S
PREP: -->State 23
COMMA: -->State 25
PP: -->State 22
State # 63:
VERB: -->State 64
State # 64:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
QUANT, DIR, PARTICLE: Apply RED-FCN to 0, new token is ?ADV
ADV: Apply RED-FCN to 0, new token is ?ADV
-->State 47
?ADV: -->State 65
State # 65:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT, DIR, PARTICLE: Apply RED-VP to 4, new token is VP
State # 66:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT, PARTICLE, PREP: Apply RED-NOT to 0, new token is ?NOT
MISCWORD: Apply RED-NOT to 0, new token is ?NOT
-->State 69
?NOT: -->State 70
State # 67:
VERB, ADV: Apply RED-NOT to 0, new token is ?NOT
MISCWORD: -->State 69
?NOT: -->State 68
State # 68:
VERB, ADV: Apply RED-CANDO to 3, new token is ?CANDO
State # 69:
ARTICLE, QUOTE, VERB, NOUN,
ADJ, ADV, QUANT, MISCWORD,
PARTICLE, PREP: Apply RED-NOT to 1, new token is ?NOT
State # 70:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT, PARTICLE, PREP: Apply RED-BE to 0, new token is ?BE
MISCWORD: -->State 72
?BE: -->State 71
State # 71:
ADJ: -->State 75
PARTICLE: -->State 30
PREP: -->State 23
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
PP: -->State 73
NP: -->State 4
NPP: -->State 74
State # 72:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT, PARTICLE, PREP: Apply RED-BE to 1, new token is ?BE
State # 73:
END-OF-INPUT, ADV: Apply RED-SNBP to 5, new token is S
State # 74:
PARTICLE: -->State 30
END-OF-INPUT, ADV: Apply RED-SNBN to 5, new token is S
PREP: -->State 23
COMMA: -->State 25
PP: -->State 22
State # 75:
ADJ: -->State 12
PARTICLE: -->State 30
END-OF-INPUT, ADV: Apply RED-SNBA to 5, new token is S
PREP: -->State 23
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 13
PP: -->State 76
NP: -->State 14
State # 76:
END-OF-INPUT, ADV: Apply RED-SNBAP to 6, new token is S
State # 77:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
MISCWORD: -->State 81
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NOT: -->State 84
NP: -->State 85
State # 78:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
MISCWORD: -->State 81
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NOT: -->State 79
NP: -->State 80
State # 79:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 83
State # 80:
VERB, ADV: Apply RED-NOT to 0, new token is ?NOT
MISCWORD: -->State 69
APOSTR: -->State 16
OFWORD: -->State 15
?NOT: -->State 82
State # 81:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT: Apply RED-NOT to 1, new token is NOT
State # 82:
VERB, ADV: Apply RED-CANDO to 4, new token is ?CANDO
State # 83:
VERB, ADV: Apply RED-CANDO to 4, new token is ?CANDO
APOSTR: -->State 16
OFWORD: -->State 15
State # 84:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 91
State # 85:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT, PARTICLE, PREP: Apply RED-NOT to 0, new token is ?NOT
MISCWORD: Apply RED-NOT to 0, new token is ?NOT
-->State 69
APOSTR: -->State 16
OFWORD: -->State 15
?NOT: -->State 86
State # 86:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT, PARTICLE, PREP: Apply RED-BE to 0, new token is ?BE
MISCWORD: -->State 72
?BE: -->State 87
State # 87:
ADJ: -->State 90
PARTICLE: -->State 30
PREP: -->State 23
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
PP: -->State 88
NP: -->State 4
NPP: -->State 89
State # 88:
END-OF-INPUT, ADV: Apply RED-SBNP to 6, new token is S
State # 89:
PARTICLE: -->State 30
END-OF-INPUT, ADV: Apply RED-SBNN to 6, new token is S
PREP: -->State 23
COMMA: -->State 25
PP: -->State 22
State # 90:
ADJ: -->State 12
END-OF-INPUT, ADV: Apply RED-SBNA to 6, new token is S
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 13
NP: -->State 14
State # 91:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT, PARTICLE, PREP: Apply RED-BE to 0, new token is ?BE
MISCWORD: -->State 72
APOSTR: -->State 16
OFWORD: -->State 15
?BE: -->State 92
State # 92:
ADJ: -->State 95
PARTICLE: -->State 30
PREP: -->State 23
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
PP: -->State 93
NP: -->State 4
NPP: -->State 94
State # 93:
END-OF-INPUT, ADV: Apply RED-SBNP to 6, new token is S
State # 94:
PARTICLE: -->State 30
END-OF-INPUT, ADV: Apply RED-SBNN to 6, new token is S
PREP: -->State 23
COMMA: -->State 25
PP: -->State 22
State # 95:
ADJ: -->State 12
END-OF-INPUT, ADV: Apply RED-SBNA to 6, new token is S
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 13
NP: -->State 14
State # 96:
END-OF-INPUT, ADV: Apply RED-O-ADJ to 2, new token is S
NOUN: -->State 19
State # 97:
END-OF-INPUT, ADV: Apply RED-O-PP to 2, new token is S
State # 98:
PARTICLE: -->State 30
END-OF-INPUT, ADV: Apply RED-O-NP to 2, new token is S
PREP: -->State 23
APOSTR: -->State 16
OFWORD: -->State 15
PP: -->State 101
State # 99:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
OFWORD: -->State 28
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 100
NPP: -->State 27
State # 100:
COMMA, PARTICLE, PREP: Apply RED-NPP to 1, new token is NPP
END-OF-INPUT, ADV: Apply RED-O-PP to 3, new token is S
Apply RED-NPP to 1, new token is NPP
APOSTR: -->State 16
OFWORD: -->State 15
State # 101:
END-OF-INPUT, ADV: Apply RED-O-NP to 3, new token is S
State # 102:
END-OF-INPUT, VERB, ADV,
DIR, TOBE, QWORD, CANDO,
PARTICLE, PREP: Apply RED-PERS to 2, new token is ?PERS
ADJ: Apply RED-PERS to 2, new token is ?PERS
-->State 12
NOUN: Apply RED-PERS to 2, new token is ?PERS
Apply RED-ADJ to 0, new token is ADJ*
QUANT: Apply RED-PERS to 2, new token is ?PERS
-->State 11
ARTICLE: Apply RED-PERS to 2, new token is ?PERS
-->State 9
QUOTE: Apply RED-PERS to 2, new token is ?PERS
-->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 26
State # 103:
END-OF-INPUT, ADV: Apply RED-ADJ to 2, new token is ADJ*
NOUN: Apply RED-ADJ to 2, new token is ADJ*
-->State 19

901
state.3 Normal file
View File

@ -0,0 +1,901 @@
State # 1:
END-OF-INPUT, VERB, ADV,
DIR, TOBE, QWORD, CANDO,
PARTICLE, PREP: Apply RED-PERS to 0, new token is ?PERS
ADJ: -->State 12
Apply RED-PERS to 0, new token is ?PERS
NOUN: Apply RED-PERS to 0, new token is ?PERS
Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
Apply RED-PERS to 0, new token is ?PERS
ASKWORD: -->State 10
ARTICLE: -->State 9
Apply RED-PERS to 0, new token is ?PERS
QUOTE: -->State 8
Apply RED-PERS to 0, new token is ?PERS
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 5
?PERS: -->State 6
SP: -->State 7
State # 2:
ADJ: -->State 12
END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 103
NP: -->State 14
State # 3:
NOUN: -->State 19
State # 4:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT, COMMA, PARTICLE,
PREP: Apply RED-NPP to 1, new token is NPP
APOSTR: -->State 16
OFWORD: -->State 15
State # 5:
PARTICLE: -->State 30
PREP: -->State 23
COMMA: -->State 102
PP: -->State 22
State # 6:
END-OF-INPUT, PARTICLE,
PREP: Apply DO-ORPHAN-TEST to 0, new token is O?
ADJ: -->State 12
Apply DO-ORPHAN-TEST to 0, new token is O?
TOBE, CANDO: Apply RED-FCN to 0, new token is ?QW1
VERB: Apply RED-CANDO to 0, new token is ?CANDO
NOUN: Apply RED-ADJ to 0, new token is ADJ*
Apply DO-ORPHAN-TEST to 0, new token is O?
ADV: Apply RED-CANDO to 0, new token is ?CANDO
Apply DO-ORPHAN-TEST to 0, new token is O?
QUANT: -->State 11
Apply DO-ORPHAN-TEST to 0, new token is O?
DIR: -->State 42
QWORD: -->State 41
ARTICLE: -->State 9
Apply DO-ORPHAN-TEST to 0, new token is O?
QUOTE: -->State 8
Apply DO-ORPHAN-TEST to 0, new token is O?
O?: -->State 35
POSSESSIVE: -->State 2
ADJ*: -->State 3
?QW1: -->State 36
NP: -->State 37
?CANDO: -->State 38
VP: -->State 39
S: -->State 40
State # 7:
END-OF-INPUT: DONE
State # 8:
OFWORD, ARTICLE, QUOTE,
END-OF-INPUT, VERB, NOUN,
ADJ, ADV, QUANT, MISCWORD,
TOBE, CANDO, COMMA,
PARTICLE, PREP, APOSTR: Apply RED-QUOTE to 1, new token is NP
State # 9:
ADJ: -->State 12
END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 34
NP: -->State 14
State # 10:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 21
State # 11:
OFWORD, END-OF-INPUT, VERB,
ADV, MISCWORD, TOBE, CANDO,
COMMA, PARTICLE, PREP,
APOSTR: Apply RED-QT to 1, new token is NP
ADJ: -->State 12
Apply RED-QT to 1, new token is NP
NOUN: Apply RED-QT to 1, new token is NP
Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
Apply RED-QT to 1, new token is NP
ARTICLE: -->State 9
Apply RED-QT to 1, new token is NP
QUOTE: -->State 8
Apply RED-QT to 1, new token is NP
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 20
State # 12:
ADJ: -->State 12
END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 13
NP: -->State 14
State # 13:
END-OF-INPUT, ADV: Apply RED-ADJ to 2, new token is ADJ*
NOUN: -->State 19
Apply RED-ADJ to 2, new token is ADJ*
State # 14:
APOSTR: -->State 16
OFWORD: -->State 15
State # 15:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 18
State # 16:
MISCWORD: -->State 17
State # 17:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT: Apply RED-POSS to 3, new token is POSSESSIVE
State # 18:
ARTICLE, QUOTE,
END-OF-INPUT, VERB, NOUN,
ADJ, ADV, QUANT, MISCWORD,
TOBE, CANDO, COMMA,
PARTICLE, PREP: Apply RED-OF to 3, new token is NP
APOSTR: -->State 16
Apply RED-OF to 3, new token is NP
OFWORD: -->State 15
Apply RED-OF to 3, new token is NP
State # 19:
OFWORD, ARTICLE, QUOTE,
END-OF-INPUT, VERB, NOUN,
ADJ, ADV, QUANT, MISCWORD,
TOBE, CANDO, COMMA,
PARTICLE, PREP, APOSTR: Apply RED-NP to 2, new token is NP
State # 20:
ARTICLE, QUOTE,
END-OF-INPUT, VERB, NOUN,
ADJ, ADV, QUANT, MISCWORD,
TOBE, CANDO, COMMA,
PARTICLE, PREP: Apply RED-QN to 2, new token is NP
APOSTR: -->State 16
Apply RED-QN to 2, new token is NP
OFWORD: -->State 15
Apply RED-QN to 2, new token is NP
State # 21:
PARTICLE: -->State 24
PREP: -->State 23
COMMA: -->State 25
PP: -->State 22
State # 22:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT, COMMA, PARTICLE,
PREP: Apply RED-NPP to 2, new token is NPP
State # 23:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
OFWORD: -->State 32
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 31
State # 24:
END-OF-INPUT, VERB, ADV,
DIR, TOBE, QWORD, CANDO,
PARTICLE, PREP: Apply RED-PERS to 3, new token is ?PERS
ADJ: -->State 12
Apply RED-PERS to 3, new token is ?PERS
NOUN: Apply RED-PERS to 3, new token is ?PERS
Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
Apply RED-PERS to 3, new token is ?PERS
OFWORD: -->State 28
ARTICLE: -->State 9
Apply RED-PERS to 3, new token is ?PERS
QUOTE: -->State 8
Apply RED-PERS to 3, new token is ?PERS
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 27
State # 25:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 26
State # 26:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT, COMMA, PARTICLE,
PREP: Apply RED-NPP to 3, new token is NPP
APOSTR: -->State 16
OFWORD: -->State 15
State # 27:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT: Apply RED-PP to 2, new token is PP
PARTICLE: -->State 30
Apply RED-PP to 2, new token is PP
PREP: -->State 23
Apply RED-PP to 2, new token is PP
COMMA: -->State 25
Apply RED-PP to 2, new token is PP
PP: -->State 22
State # 28:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 29
State # 29:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT: Apply RED-PP to 3, new token is PP
PARTICLE: -->State 30
Apply RED-PP to 3, new token is PP
PREP: -->State 23
Apply RED-PP to 3, new token is PP
COMMA: -->State 25
Apply RED-PP to 3, new token is PP
PP: -->State 22
State # 30:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
OFWORD: -->State 28
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 27
State # 31:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT: Apply RED-PP to 2, new token is PP
PARTICLE: -->State 30
Apply RED-PP to 2, new token is PP
PREP: -->State 23
Apply RED-PP to 2, new token is PP
COMMA: -->State 25
Apply RED-PP to 2, new token is PP
PP: -->State 22
State # 32:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 33
State # 33:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT: Apply RED-PP to 3, new token is PP
PARTICLE: -->State 30
Apply RED-PP to 3, new token is PP
PREP: -->State 23
Apply RED-PP to 3, new token is PP
COMMA: -->State 25
Apply RED-PP to 3, new token is PP
PP: -->State 22
State # 34:
END-OF-INPUT, ADV: Apply RED-ADJ to 2, new token is ADJ*
NOUN: -->State 19
Apply RED-ADJ to 2, new token is ADJ*
State # 35:
ADJ: -->State 12
END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ*
PARTICLE: -->State 99
PREP: -->State 23
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 96
PP: -->State 97
NP: -->State 98
State # 36:
TOBE: -->State 44
CANDO: -->State 78
BE-FORM: -->State 77
State # 37:
VERB, ADV: Apply RED-CANDO to 1, new token is ?CANDO
TOBE: -->State 44
CANDO: -->State 67
APOSTR: -->State 16
OFWORD: -->State 15
BE-FORM: -->State 66
State # 38:
VERB: Apply RED-FCN to 0, new token is ?ADV
ADV: -->State 47
?ADV: -->State 63
State # 39:
ADJ: -->State 12
Apply RED-PART to 0, new token is ?PARTICLE
PARTICLE: -->State 50
END-OF-INPUT, ADV: Apply RED-PART to 0, new token is ?PARTICLE
NOUN: Apply RED-PART to 0, new token is ?PARTICLE
Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
Apply RED-PART to 0, new token is ?PARTICLE
DIR: -->State 51
ARTICLE: -->State 9
Apply RED-PART to 0, new token is ?PARTICLE
QUOTE: -->State 8
Apply RED-PART to 0, new token is ?PARTICLE
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 48
?PARTICLE: -->State 49
State # 40:
ADV: -->State 47
END-OF-INPUT: Apply RED-FCN to 0, new token is ?ADV
?ADV: -->State 46
State # 41:
TOBE: -->State 44
Apply RED-FCN to 1, new token is ?QW1
CANDO: Apply RED-FCN to 1, new token is ?QW1
BE-FORM: -->State 43
State # 42:
END-OF-INPUT, ADV: Apply RED-SD to 1, new token is S
State # 43:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 45
State # 44:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT, MISCWORD, PARTICLE,
PREP: Apply RED-BE-FORM to 1, new token is BE-FORM
State # 45:
END-OF-INPUT, ADV: Apply RED-SQBN to 3, new token is S
APOSTR: -->State 16
OFWORD: -->State 15
State # 46:
END-OF-INPUT: Apply RED-SP to 3, new token is SP
State # 47:
ARTICLE, QUOTE,
END-OF-INPUT, VERB, NOUN,
ADJ, ADV, QUANT, DIR,
PARTICLE: Apply RED-FCN to 1, new token is ?ADV
State # 48:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT: Apply RED-PART to 0, new token is ?PARTICLE
PARTICLE: -->State 61
PREP: -->State 23
COMMA: -->State 25
PP: -->State 22
?PARTICLE: -->State 60
State # 49:
ADJ: -->State 12
END-OF-INPUT, ADV: Apply RED-SV to 2, new token is S
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 54
State # 50:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT: Apply RED-PART to 0, new token is ?PARTICLE
PARTICLE: -->State 50
OFWORD: -->State 53
?PARTICLE: -->State 52
State # 51:
END-OF-INPUT, ADV: Apply RED-SVD to 2, new token is S
State # 52:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT: Apply RED-PART to 2, new token is ?PARTICLE
State # 53:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT: Apply RED-PART to 2, new token is ?PARTICLE
State # 54:
ADJ: -->State 12
Apply RED-PART to 0, new token is ?PARTICLE
PARTICLE: -->State 57
END-OF-INPUT, ADV: Apply RED-SVN to 3, new token is S
PREP: -->State 23
NOUN: Apply RED-PART to 0, new token is ?PARTICLE
Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
Apply RED-PART to 0, new token is ?PARTICLE
COMMA: -->State 25
ARTICLE: -->State 9
Apply RED-PART to 0, new token is ?PARTICLE
QUOTE: -->State 8
Apply RED-PART to 0, new token is ?PARTICLE
POSSESSIVE: -->State 2
ADJ*: -->State 3
PP: -->State 22
NP: -->State 4
NPP: -->State 55
?PARTICLE: -->State 56
State # 55:
PARTICLE: -->State 30
END-OF-INPUT, ADV: Apply RED-SVPNN to 4, new token is S
PREP: -->State 23
COMMA: -->State 25
PP: -->State 22
State # 56:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 59
State # 57:
ADJ: -->State 12
Apply RED-PART to 0, new token is ?PARTICLE
PARTICLE: -->State 50
NOUN: Apply RED-PART to 0, new token is ?PARTICLE
Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
Apply RED-PART to 0, new token is ?PARTICLE
OFWORD: -->State 58
ARTICLE: -->State 9
Apply RED-PART to 0, new token is ?PARTICLE
QUOTE: -->State 8
Apply RED-PART to 0, new token is ?PARTICLE
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 27
?PARTICLE: -->State 52
State # 58:
ADJ: -->State 12
Apply RED-PART to 2, new token is ?PARTICLE
NOUN: Apply RED-PART to 2, new token is ?PARTICLE
Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
Apply RED-PART to 2, new token is ?PARTICLE
ARTICLE: -->State 9
Apply RED-PART to 2, new token is ?PARTICLE
QUOTE: -->State 8
Apply RED-PART to 2, new token is ?PARTICLE
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 29
State # 59:
PARTICLE: -->State 30
END-OF-INPUT, ADV: Apply RED-SVPNPN to 5, new token is S
PREP: -->State 23
COMMA: -->State 25
PP: -->State 22
State # 60:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 62
State # 61:
ADJ: -->State 12
Apply RED-PART to 0, new token is ?PARTICLE
PARTICLE: -->State 50
END-OF-INPUT, ADV: Apply RED-SVNP to 3, new token is S
NOUN: Apply RED-PART to 0, new token is ?PARTICLE
Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
Apply RED-PART to 0, new token is ?PARTICLE
OFWORD: -->State 58
ARTICLE: -->State 9
Apply RED-PART to 0, new token is ?PARTICLE
QUOTE: -->State 8
Apply RED-PART to 0, new token is ?PARTICLE
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 27
?PARTICLE: -->State 52
State # 62:
PARTICLE: -->State 30
END-OF-INPUT, ADV: Apply RED-SVNPN to 4, new token is S
PREP: -->State 23
COMMA: -->State 25
PP: -->State 22
State # 63:
VERB: -->State 64
State # 64:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
QUANT, DIR, PARTICLE: Apply RED-FCN to 0, new token is ?ADV
ADV: -->State 47
Apply RED-FCN to 0, new token is ?ADV
?ADV: -->State 65
State # 65:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT, DIR, PARTICLE: Apply RED-VP to 4, new token is VP
State # 66:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT, PARTICLE, PREP: Apply RED-NOT to 0, new token is ?NOT
MISCWORD: -->State 69
Apply RED-NOT to 0, new token is ?NOT
?NOT: -->State 70
State # 67:
VERB, ADV: Apply RED-NOT to 0, new token is ?NOT
MISCWORD: -->State 69
?NOT: -->State 68
State # 68:
VERB, ADV: Apply RED-CANDO to 3, new token is ?CANDO
State # 69:
ARTICLE, QUOTE, VERB, NOUN,
ADJ, ADV, QUANT, MISCWORD,
PARTICLE, PREP: Apply RED-NOT to 1, new token is ?NOT
State # 70:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT, PARTICLE, PREP: Apply RED-BE to 0, new token is ?BE
MISCWORD: -->State 72
?BE: -->State 71
State # 71:
ADJ: -->State 75
PARTICLE: -->State 30
PREP: -->State 23
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
PP: -->State 73
NP: -->State 4
NPP: -->State 74
State # 72:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT, PARTICLE, PREP: Apply RED-BE to 1, new token is ?BE
State # 73:
END-OF-INPUT, ADV: Apply RED-SNBP to 5, new token is S
State # 74:
PARTICLE: -->State 30
END-OF-INPUT, ADV: Apply RED-SNBN to 5, new token is S
PREP: -->State 23
COMMA: -->State 25
PP: -->State 22
State # 75:
ADJ: -->State 12
PARTICLE: -->State 30
END-OF-INPUT, ADV: Apply RED-SNBA to 5, new token is S
PREP: -->State 23
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 13
PP: -->State 76
NP: -->State 14
State # 76:
END-OF-INPUT, ADV: Apply RED-SNBAP to 6, new token is S
State # 77:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
MISCWORD: -->State 81
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NOT: -->State 84
NP: -->State 85
State # 78:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
MISCWORD: -->State 81
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NOT: -->State 79
NP: -->State 80
State # 79:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 83
State # 80:
VERB, ADV: Apply RED-NOT to 0, new token is ?NOT
MISCWORD: -->State 69
APOSTR: -->State 16
OFWORD: -->State 15
?NOT: -->State 82
State # 81:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT: Apply RED-NOT to 1, new token is NOT
State # 82:
VERB, ADV: Apply RED-CANDO to 4, new token is ?CANDO
State # 83:
VERB, ADV: Apply RED-CANDO to 4, new token is ?CANDO
APOSTR: -->State 16
OFWORD: -->State 15
State # 84:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 91
State # 85:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT, PARTICLE, PREP: Apply RED-NOT to 0, new token is ?NOT
MISCWORD: -->State 69
Apply RED-NOT to 0, new token is ?NOT
APOSTR: -->State 16
OFWORD: -->State 15
?NOT: -->State 86
State # 86:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT, PARTICLE, PREP: Apply RED-BE to 0, new token is ?BE
MISCWORD: -->State 72
?BE: -->State 87
State # 87:
ADJ: -->State 90
PARTICLE: -->State 30
PREP: -->State 23
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
PP: -->State 88
NP: -->State 4
NPP: -->State 89
State # 88:
END-OF-INPUT, ADV: Apply RED-SBNP to 6, new token is S
State # 89:
PARTICLE: -->State 30
END-OF-INPUT, ADV: Apply RED-SBNN to 6, new token is S
PREP: -->State 23
COMMA: -->State 25
PP: -->State 22
State # 90:
ADJ: -->State 12
END-OF-INPUT, ADV: Apply RED-SBNA to 6, new token is S
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 13
NP: -->State 14
State # 91:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT, PARTICLE, PREP: Apply RED-BE to 0, new token is ?BE
MISCWORD: -->State 72
APOSTR: -->State 16
OFWORD: -->State 15
?BE: -->State 92
State # 92:
ADJ: -->State 95
PARTICLE: -->State 30
PREP: -->State 23
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
PP: -->State 93
NP: -->State 4
NPP: -->State 94
State # 93:
END-OF-INPUT, ADV: Apply RED-SBNP to 6, new token is S
State # 94:
PARTICLE: -->State 30
END-OF-INPUT, ADV: Apply RED-SBNN to 6, new token is S
PREP: -->State 23
COMMA: -->State 25
PP: -->State 22
State # 95:
ADJ: -->State 12
END-OF-INPUT, ADV: Apply RED-SBNA to 6, new token is S
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 13
NP: -->State 14
State # 96:
END-OF-INPUT, ADV: Apply RED-O-ADJ to 2, new token is S
NOUN: -->State 19
State # 97:
END-OF-INPUT, ADV: Apply RED-O-PP to 2, new token is S
State # 98:
PARTICLE: -->State 30
END-OF-INPUT, ADV: Apply RED-O-NP to 2, new token is S
PREP: -->State 23
APOSTR: -->State 16
OFWORD: -->State 15
PP: -->State 101
State # 99:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
OFWORD: -->State 28
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 100
NPP: -->State 27
State # 100:
COMMA, PARTICLE, PREP: Apply RED-NPP to 1, new token is NPP
END-OF-INPUT, ADV: Apply RED-O-PP to 3, new token is S
Apply RED-NPP to 1, new token is NPP
APOSTR: -->State 16
OFWORD: -->State 15
State # 101:
END-OF-INPUT, ADV: Apply RED-O-NP to 3, new token is S
State # 102:
END-OF-INPUT, VERB, ADV,
DIR, TOBE, QWORD, CANDO,
PARTICLE, PREP: Apply RED-PERS to 2, new token is ?PERS
ADJ: -->State 12
Apply RED-PERS to 2, new token is ?PERS
NOUN: Apply RED-PERS to 2, new token is ?PERS
Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
Apply RED-PERS to 2, new token is ?PERS
ARTICLE: -->State 9
Apply RED-PERS to 2, new token is ?PERS
QUOTE: -->State 8
Apply RED-PERS to 2, new token is ?PERS
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 26
State # 103:
END-OF-INPUT, ADV: Apply RED-ADJ to 2, new token is ADJ*
NOUN: -->State 19
Apply RED-ADJ to 2, new token is ADJ*

901
state.4 Normal file
View File

@ -0,0 +1,901 @@
State # 1:
END-OF-INPUT, VERB, ADV,
DIR, TOBE, QWORD, CANDO,
PARTICLE, PREP: Apply RED-PERS to 0, new token is ?PERS
ADJ: -->State 12
Apply RED-PERS to 0, new token is ?PERS
NOUN: Apply RED-PERS to 0, new token is ?PERS
Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
Apply RED-PERS to 0, new token is ?PERS
ASKWORD: -->State 10
ARTICLE: -->State 9
Apply RED-PERS to 0, new token is ?PERS
QUOTE: -->State 8
Apply RED-PERS to 0, new token is ?PERS
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 5
?PERS: -->State 6
SP: -->State 7
State # 2:
END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 103
NP: -->State 14
State # 3:
NOUN: -->State 19
State # 4:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT, COMMA, PARTICLE,
PREP: Apply RED-NPP to 1, new token is NPP
APOSTR: -->State 16
OFWORD: -->State 15
State # 5:
PARTICLE: -->State 30
PREP: -->State 23
COMMA: -->State 102
PP: -->State 22
State # 6:
VERB: Apply RED-CANDO to 0, new token is ?CANDO
END-OF-INPUT, PARTICLE,
PREP: Apply DO-ORPHAN-TEST to 0, new token is O?
ADJ: -->State 12
Apply DO-ORPHAN-TEST to 0, new token is O?
NOUN: Apply RED-ADJ to 0, new token is ADJ*
Apply DO-ORPHAN-TEST to 0, new token is O?
TOBE, CANDO: Apply RED-FCN to 0, new token is ?QW1
ADV: Apply RED-CANDO to 0, new token is ?CANDO
Apply DO-ORPHAN-TEST to 0, new token is O?
QUANT: -->State 11
Apply DO-ORPHAN-TEST to 0, new token is O?
DIR: -->State 42
QWORD: -->State 41
ARTICLE: -->State 9
Apply DO-ORPHAN-TEST to 0, new token is O?
QUOTE: -->State 8
Apply DO-ORPHAN-TEST to 0, new token is O?
O?: -->State 35
POSSESSIVE: -->State 2
ADJ*: -->State 3
?QW1: -->State 36
NP: -->State 37
?CANDO: -->State 38
VP: -->State 39
S: -->State 40
State # 7:
END-OF-INPUT: DONE
State # 8:
OFWORD, ARTICLE, QUOTE,
END-OF-INPUT, VERB, NOUN,
ADJ, ADV, QUANT, MISCWORD,
TOBE, CANDO, COMMA,
PARTICLE, PREP, APOSTR: Apply RED-QUOTE to 1, new token is NP
State # 9:
END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 34
NP: -->State 14
State # 10:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 21
State # 11:
OFWORD, END-OF-INPUT, VERB,
ADV, MISCWORD, TOBE, CANDO,
COMMA, PARTICLE, PREP,
APOSTR: Apply RED-QT to 1, new token is NP
ADJ: -->State 12
Apply RED-QT to 1, new token is NP
NOUN: Apply RED-QT to 1, new token is NP
Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
Apply RED-QT to 1, new token is NP
ARTICLE: -->State 9
Apply RED-QT to 1, new token is NP
QUOTE: -->State 8
Apply RED-QT to 1, new token is NP
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 20
State # 12:
END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 13
NP: -->State 14
State # 13:
NOUN: -->State 19
Apply RED-ADJ to 2, new token is ADJ*
END-OF-INPUT, ADV: Apply RED-ADJ to 2, new token is ADJ*
State # 14:
APOSTR: -->State 16
OFWORD: -->State 15
State # 15:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 18
State # 16:
MISCWORD: -->State 17
State # 17:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT: Apply RED-POSS to 3, new token is POSSESSIVE
State # 18:
ARTICLE, QUOTE,
END-OF-INPUT, VERB, NOUN,
ADJ, ADV, QUANT, MISCWORD,
TOBE, CANDO, COMMA,
PARTICLE, PREP: Apply RED-OF to 3, new token is NP
APOSTR: -->State 16
Apply RED-OF to 3, new token is NP
OFWORD: -->State 15
Apply RED-OF to 3, new token is NP
State # 19:
OFWORD, ARTICLE, QUOTE,
END-OF-INPUT, VERB, NOUN,
ADJ, ADV, QUANT, MISCWORD,
TOBE, CANDO, COMMA,
PARTICLE, PREP, APOSTR: Apply RED-NP to 2, new token is NP
State # 20:
ARTICLE, QUOTE,
END-OF-INPUT, VERB, NOUN,
ADJ, ADV, QUANT, MISCWORD,
TOBE, CANDO, COMMA,
PARTICLE, PREP: Apply RED-QN to 2, new token is NP
APOSTR: -->State 16
Apply RED-QN to 2, new token is NP
OFWORD: -->State 15
Apply RED-QN to 2, new token is NP
State # 21:
PARTICLE: -->State 24
PREP: -->State 23
COMMA: -->State 25
PP: -->State 22
State # 22:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT, COMMA, PARTICLE,
PREP: Apply RED-NPP to 2, new token is NPP
State # 23:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
OFWORD: -->State 32
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 31
State # 24:
END-OF-INPUT, VERB, ADV,
DIR, TOBE, QWORD, CANDO,
PARTICLE, PREP: Apply RED-PERS to 3, new token is ?PERS
ADJ: -->State 12
Apply RED-PERS to 3, new token is ?PERS
NOUN: Apply RED-PERS to 3, new token is ?PERS
Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
Apply RED-PERS to 3, new token is ?PERS
OFWORD: -->State 28
ARTICLE: -->State 9
Apply RED-PERS to 3, new token is ?PERS
QUOTE: -->State 8
Apply RED-PERS to 3, new token is ?PERS
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 27
State # 25:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 26
State # 26:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT, COMMA, PARTICLE,
PREP: Apply RED-NPP to 3, new token is NPP
APOSTR: -->State 16
OFWORD: -->State 15
State # 27:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT: Apply RED-PP to 2, new token is PP
PARTICLE: -->State 30
Apply RED-PP to 2, new token is PP
PREP: -->State 23
Apply RED-PP to 2, new token is PP
COMMA: -->State 25
Apply RED-PP to 2, new token is PP
PP: -->State 22
State # 28:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 29
State # 29:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT: Apply RED-PP to 3, new token is PP
PARTICLE: -->State 30
Apply RED-PP to 3, new token is PP
PREP: -->State 23
Apply RED-PP to 3, new token is PP
COMMA: -->State 25
Apply RED-PP to 3, new token is PP
PP: -->State 22
State # 30:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
OFWORD: -->State 28
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 27
State # 31:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT: Apply RED-PP to 2, new token is PP
PARTICLE: -->State 30
Apply RED-PP to 2, new token is PP
PREP: -->State 23
Apply RED-PP to 2, new token is PP
COMMA: -->State 25
Apply RED-PP to 2, new token is PP
PP: -->State 22
State # 32:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 33
State # 33:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT: Apply RED-PP to 3, new token is PP
PARTICLE: -->State 30
Apply RED-PP to 3, new token is PP
PREP: -->State 23
Apply RED-PP to 3, new token is PP
COMMA: -->State 25
Apply RED-PP to 3, new token is PP
PP: -->State 22
State # 34:
NOUN: -->State 19
Apply RED-ADJ to 2, new token is ADJ*
END-OF-INPUT, ADV: Apply RED-ADJ to 2, new token is ADJ*
State # 35:
END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
PARTICLE: -->State 99
PREP: -->State 23
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 96
PP: -->State 97
NP: -->State 98
State # 36:
TOBE: -->State 44
CANDO: -->State 78
BE-FORM: -->State 77
State # 37:
VERB, ADV: Apply RED-CANDO to 1, new token is ?CANDO
TOBE: -->State 44
CANDO: -->State 67
APOSTR: -->State 16
OFWORD: -->State 15
BE-FORM: -->State 66
State # 38:
VERB: Apply RED-FCN to 0, new token is ?ADV
ADV: -->State 47
?ADV: -->State 63
State # 39:
ADJ: -->State 12
Apply RED-PART to 0, new token is ?PARTICLE
NOUN: Apply RED-PART to 0, new token is ?PARTICLE
Apply RED-ADJ to 0, new token is ADJ*
PARTICLE: -->State 50
END-OF-INPUT, ADV: Apply RED-PART to 0, new token is ?PARTICLE
QUANT: -->State 11
Apply RED-PART to 0, new token is ?PARTICLE
DIR: -->State 51
ARTICLE: -->State 9
Apply RED-PART to 0, new token is ?PARTICLE
QUOTE: -->State 8
Apply RED-PART to 0, new token is ?PARTICLE
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 48
?PARTICLE: -->State 49
State # 40:
ADV: -->State 47
END-OF-INPUT: Apply RED-FCN to 0, new token is ?ADV
?ADV: -->State 46
State # 41:
TOBE: -->State 44
Apply RED-FCN to 1, new token is ?QW1
CANDO: Apply RED-FCN to 1, new token is ?QW1
BE-FORM: -->State 43
State # 42:
END-OF-INPUT, ADV: Apply RED-SD to 1, new token is S
State # 43:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 45
State # 44:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT, MISCWORD, PARTICLE,
PREP: Apply RED-BE-FORM to 1, new token is BE-FORM
State # 45:
END-OF-INPUT, ADV: Apply RED-SQBN to 3, new token is S
APOSTR: -->State 16
OFWORD: -->State 15
State # 46:
END-OF-INPUT: Apply RED-SP to 3, new token is SP
State # 47:
ARTICLE, QUOTE,
END-OF-INPUT, VERB, NOUN,
ADJ, ADV, QUANT, DIR,
PARTICLE: Apply RED-FCN to 1, new token is ?ADV
State # 48:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT: Apply RED-PART to 0, new token is ?PARTICLE
PARTICLE: -->State 61
PREP: -->State 23
COMMA: -->State 25
PP: -->State 22
?PARTICLE: -->State 60
State # 49:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
END-OF-INPUT, ADV: Apply RED-SV to 2, new token is S
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 54
State # 50:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT: Apply RED-PART to 0, new token is ?PARTICLE
PARTICLE: -->State 50
OFWORD: -->State 53
?PARTICLE: -->State 52
State # 51:
END-OF-INPUT, ADV: Apply RED-SVD to 2, new token is S
State # 52:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT: Apply RED-PART to 2, new token is ?PARTICLE
State # 53:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT: Apply RED-PART to 2, new token is ?PARTICLE
State # 54:
ADJ: -->State 12
Apply RED-PART to 0, new token is ?PARTICLE
NOUN: Apply RED-PART to 0, new token is ?PARTICLE
Apply RED-ADJ to 0, new token is ADJ*
PARTICLE: -->State 57
END-OF-INPUT, ADV: Apply RED-SVN to 3, new token is S
PREP: -->State 23
QUANT: -->State 11
Apply RED-PART to 0, new token is ?PARTICLE
COMMA: -->State 25
ARTICLE: -->State 9
Apply RED-PART to 0, new token is ?PARTICLE
QUOTE: -->State 8
Apply RED-PART to 0, new token is ?PARTICLE
POSSESSIVE: -->State 2
ADJ*: -->State 3
PP: -->State 22
NP: -->State 4
NPP: -->State 55
?PARTICLE: -->State 56
State # 55:
PARTICLE: -->State 30
END-OF-INPUT, ADV: Apply RED-SVPNN to 4, new token is S
PREP: -->State 23
COMMA: -->State 25
PP: -->State 22
State # 56:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 59
State # 57:
ADJ: -->State 12
Apply RED-PART to 0, new token is ?PARTICLE
NOUN: Apply RED-PART to 0, new token is ?PARTICLE
Apply RED-ADJ to 0, new token is ADJ*
PARTICLE: -->State 50
QUANT: -->State 11
Apply RED-PART to 0, new token is ?PARTICLE
OFWORD: -->State 58
ARTICLE: -->State 9
Apply RED-PART to 0, new token is ?PARTICLE
QUOTE: -->State 8
Apply RED-PART to 0, new token is ?PARTICLE
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 27
?PARTICLE: -->State 52
State # 58:
ADJ: -->State 12
Apply RED-PART to 2, new token is ?PARTICLE
NOUN: Apply RED-PART to 2, new token is ?PARTICLE
Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
Apply RED-PART to 2, new token is ?PARTICLE
ARTICLE: -->State 9
Apply RED-PART to 2, new token is ?PARTICLE
QUOTE: -->State 8
Apply RED-PART to 2, new token is ?PARTICLE
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 29
State # 59:
PARTICLE: -->State 30
END-OF-INPUT, ADV: Apply RED-SVPNPN to 5, new token is S
PREP: -->State 23
COMMA: -->State 25
PP: -->State 22
State # 60:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 62
State # 61:
ADJ: -->State 12
Apply RED-PART to 0, new token is ?PARTICLE
NOUN: Apply RED-PART to 0, new token is ?PARTICLE
Apply RED-ADJ to 0, new token is ADJ*
PARTICLE: -->State 50
END-OF-INPUT, ADV: Apply RED-SVNP to 3, new token is S
QUANT: -->State 11
Apply RED-PART to 0, new token is ?PARTICLE
OFWORD: -->State 58
ARTICLE: -->State 9
Apply RED-PART to 0, new token is ?PARTICLE
QUOTE: -->State 8
Apply RED-PART to 0, new token is ?PARTICLE
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 27
?PARTICLE: -->State 52
State # 62:
PARTICLE: -->State 30
END-OF-INPUT, ADV: Apply RED-SVNPN to 4, new token is S
PREP: -->State 23
COMMA: -->State 25
PP: -->State 22
State # 63:
VERB: -->State 64
State # 64:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
QUANT, DIR, PARTICLE: Apply RED-FCN to 0, new token is ?ADV
ADV: -->State 47
Apply RED-FCN to 0, new token is ?ADV
?ADV: -->State 65
State # 65:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT, DIR, PARTICLE: Apply RED-VP to 4, new token is VP
State # 66:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT, PARTICLE, PREP: Apply RED-NOT to 0, new token is ?NOT
MISCWORD: -->State 69
Apply RED-NOT to 0, new token is ?NOT
?NOT: -->State 70
State # 67:
VERB, ADV: Apply RED-NOT to 0, new token is ?NOT
MISCWORD: -->State 69
?NOT: -->State 68
State # 68:
VERB, ADV: Apply RED-CANDO to 3, new token is ?CANDO
State # 69:
ARTICLE, QUOTE, VERB, NOUN,
ADJ, ADV, QUANT, MISCWORD,
PARTICLE, PREP: Apply RED-NOT to 1, new token is ?NOT
State # 70:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT, PARTICLE, PREP: Apply RED-BE to 0, new token is ?BE
MISCWORD: -->State 72
?BE: -->State 71
State # 71:
ADJ: -->State 75
NOUN: Apply RED-ADJ to 0, new token is ADJ*
PARTICLE: -->State 30
PREP: -->State 23
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
PP: -->State 73
NP: -->State 4
NPP: -->State 74
State # 72:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT, PARTICLE, PREP: Apply RED-BE to 1, new token is ?BE
State # 73:
END-OF-INPUT, ADV: Apply RED-SNBP to 5, new token is S
State # 74:
PARTICLE: -->State 30
END-OF-INPUT, ADV: Apply RED-SNBN to 5, new token is S
PREP: -->State 23
COMMA: -->State 25
PP: -->State 22
State # 75:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
PARTICLE: -->State 30
END-OF-INPUT, ADV: Apply RED-SNBA to 5, new token is S
PREP: -->State 23
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 13
PP: -->State 76
NP: -->State 14
State # 76:
END-OF-INPUT, ADV: Apply RED-SNBAP to 6, new token is S
State # 77:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
MISCWORD: -->State 81
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NOT: -->State 84
NP: -->State 85
State # 78:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
MISCWORD: -->State 81
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NOT: -->State 79
NP: -->State 80
State # 79:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 83
State # 80:
VERB, ADV: Apply RED-NOT to 0, new token is ?NOT
MISCWORD: -->State 69
APOSTR: -->State 16
OFWORD: -->State 15
?NOT: -->State 82
State # 81:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT: Apply RED-NOT to 1, new token is NOT
State # 82:
VERB, ADV: Apply RED-CANDO to 4, new token is ?CANDO
State # 83:
VERB, ADV: Apply RED-CANDO to 4, new token is ?CANDO
APOSTR: -->State 16
OFWORD: -->State 15
State # 84:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 91
State # 85:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT, PARTICLE, PREP: Apply RED-NOT to 0, new token is ?NOT
MISCWORD: -->State 69
Apply RED-NOT to 0, new token is ?NOT
APOSTR: -->State 16
OFWORD: -->State 15
?NOT: -->State 86
State # 86:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT, PARTICLE, PREP: Apply RED-BE to 0, new token is ?BE
MISCWORD: -->State 72
?BE: -->State 87
State # 87:
ADJ: -->State 90
NOUN: Apply RED-ADJ to 0, new token is ADJ*
PARTICLE: -->State 30
PREP: -->State 23
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
PP: -->State 88
NP: -->State 4
NPP: -->State 89
State # 88:
END-OF-INPUT, ADV: Apply RED-SBNP to 6, new token is S
State # 89:
PARTICLE: -->State 30
END-OF-INPUT, ADV: Apply RED-SBNN to 6, new token is S
PREP: -->State 23
COMMA: -->State 25
PP: -->State 22
State # 90:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
END-OF-INPUT, ADV: Apply RED-SBNA to 6, new token is S
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 13
NP: -->State 14
State # 91:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT, PARTICLE, PREP: Apply RED-BE to 0, new token is ?BE
MISCWORD: -->State 72
APOSTR: -->State 16
OFWORD: -->State 15
?BE: -->State 92
State # 92:
ADJ: -->State 95
NOUN: Apply RED-ADJ to 0, new token is ADJ*
PARTICLE: -->State 30
PREP: -->State 23
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
PP: -->State 93
NP: -->State 4
NPP: -->State 94
State # 93:
END-OF-INPUT, ADV: Apply RED-SBNP to 6, new token is S
State # 94:
PARTICLE: -->State 30
END-OF-INPUT, ADV: Apply RED-SBNN to 6, new token is S
PREP: -->State 23
COMMA: -->State 25
PP: -->State 22
State # 95:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
END-OF-INPUT, ADV: Apply RED-SBNA to 6, new token is S
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 13
NP: -->State 14
State # 96:
NOUN: -->State 19
END-OF-INPUT, ADV: Apply RED-O-ADJ to 2, new token is S
State # 97:
END-OF-INPUT, ADV: Apply RED-O-PP to 2, new token is S
State # 98:
PARTICLE: -->State 30
END-OF-INPUT, ADV: Apply RED-O-NP to 2, new token is S
PREP: -->State 23
APOSTR: -->State 16
OFWORD: -->State 15
PP: -->State 101
State # 99:
ADJ: -->State 12
NOUN: Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
OFWORD: -->State 28
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 100
NPP: -->State 27
State # 100:
COMMA, PARTICLE, PREP: Apply RED-NPP to 1, new token is NPP
END-OF-INPUT, ADV: Apply RED-O-PP to 3, new token is S
Apply RED-NPP to 1, new token is NPP
APOSTR: -->State 16
OFWORD: -->State 15
State # 101:
END-OF-INPUT, ADV: Apply RED-O-NP to 3, new token is S
State # 102:
END-OF-INPUT, VERB, ADV,
DIR, TOBE, QWORD, CANDO,
PARTICLE, PREP: Apply RED-PERS to 2, new token is ?PERS
ADJ: -->State 12
Apply RED-PERS to 2, new token is ?PERS
NOUN: Apply RED-PERS to 2, new token is ?PERS
Apply RED-ADJ to 0, new token is ADJ*
QUANT: -->State 11
Apply RED-PERS to 2, new token is ?PERS
ARTICLE: -->State 9
Apply RED-PERS to 2, new token is ?PERS
QUOTE: -->State 8
Apply RED-PERS to 2, new token is ?PERS
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 26
State # 103:
NOUN: -->State 19
Apply RED-ADJ to 2, new token is ADJ*
END-OF-INPUT, ADV: Apply RED-ADJ to 2, new token is ADJ*

1
states.mac Normal file

File diff suppressed because one or more lines are too long

901
states.txt Normal file
View File

@ -0,0 +1,901 @@
State # 1:
END-OF-INPUT, VERB, ADV,
DIR, TOBE, QWORD, CANDO,
PARTICLE, PREP: Apply RED-PERS to 0, new token is ?PERS
NOUN: Apply RED-PERS to 0, new token is ?PERS
Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
Apply RED-PERS to 0, new token is ?PERS
QUANT: -->State 11
Apply RED-PERS to 0, new token is ?PERS
ASKWORD: -->State 10
ARTICLE: -->State 9
Apply RED-PERS to 0, new token is ?PERS
QUOTE: -->State 8
Apply RED-PERS to 0, new token is ?PERS
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 5
?PERS: -->State 6
SP: -->State 7
State # 2:
END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 103
NP: -->State 14
State # 3:
NOUN: -->State 19
State # 4:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT, COMMA, PARTICLE,
PREP: Apply RED-NPP to 1, new token is NPP
APOSTR: -->State 16
OFWORD: -->State 15
State # 5:
COMMA: -->State 102
PARTICLE: -->State 30
PREP: -->State 23
PP: -->State 22
State # 6:
END-OF-INPUT, PARTICLE,
PREP: Apply DO-ORPHAN-TEST to 0, new token is O?
TOBE, CANDO: Apply RED-FCN to 0, new token is ?QW1
VERB: Apply RED-CANDO to 0, new token is ?CANDO
NOUN: Apply RED-ADJ to 0, new token is ADJ*
Apply DO-ORPHAN-TEST to 0, new token is O?
ADJ: -->State 12
Apply DO-ORPHAN-TEST to 0, new token is O?
ADV: Apply RED-CANDO to 0, new token is ?CANDO
Apply DO-ORPHAN-TEST to 0, new token is O?
QUANT: -->State 11
Apply DO-ORPHAN-TEST to 0, new token is O?
DIR: -->State 42
QWORD: -->State 41
ARTICLE: -->State 9
Apply DO-ORPHAN-TEST to 0, new token is O?
QUOTE: -->State 8
Apply DO-ORPHAN-TEST to 0, new token is O?
O?: -->State 35
POSSESSIVE: -->State 2
ADJ*: -->State 3
?QW1: -->State 36
NP: -->State 37
?CANDO: -->State 38
VP: -->State 39
S: -->State 40
State # 7:
END-OF-INPUT: DONE
State # 8:
OFWORD, ARTICLE, QUOTE,
END-OF-INPUT, VERB, NOUN,
ADJ, ADV, QUANT, MISCWORD,
TOBE, CANDO, COMMA,
PARTICLE, PREP, APOSTR: Apply RED-QUOTE to 1, new token is NP
State # 9:
END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 34
NP: -->State 14
State # 10:
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 21
State # 11:
OFWORD, END-OF-INPUT, VERB,
ADV, MISCWORD, TOBE, CANDO,
COMMA, PARTICLE, PREP,
APOSTR: Apply RED-QT to 1, new token is NP
NOUN: Apply RED-QT to 1, new token is NP
Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
Apply RED-QT to 1, new token is NP
QUANT: -->State 11
Apply RED-QT to 1, new token is NP
ARTICLE: -->State 9
Apply RED-QT to 1, new token is NP
QUOTE: -->State 8
Apply RED-QT to 1, new token is NP
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 20
State # 12:
END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 13
NP: -->State 14
State # 13:
END-OF-INPUT, ADV: Apply RED-ADJ to 2, new token is ADJ*
NOUN: -->State 19
Apply RED-ADJ to 2, new token is ADJ*
State # 14:
APOSTR: -->State 16
OFWORD: -->State 15
State # 15:
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 18
State # 16:
MISCWORD: -->State 17
State # 17:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT: Apply RED-POSS to 3, new token is POSSESSIVE
State # 18:
ARTICLE, QUOTE,
END-OF-INPUT, VERB, NOUN,
ADJ, ADV, QUANT, MISCWORD,
TOBE, CANDO, COMMA,
PARTICLE, PREP: Apply RED-OF to 3, new token is NP
APOSTR: -->State 16
Apply RED-OF to 3, new token is NP
OFWORD: -->State 15
Apply RED-OF to 3, new token is NP
State # 19:
OFWORD, ARTICLE, QUOTE,
END-OF-INPUT, VERB, NOUN,
ADJ, ADV, QUANT, MISCWORD,
TOBE, CANDO, COMMA,
PARTICLE, PREP, APOSTR: Apply RED-NP to 2, new token is NP
State # 20:
ARTICLE, QUOTE,
END-OF-INPUT, VERB, NOUN,
ADJ, ADV, QUANT, MISCWORD,
TOBE, CANDO, COMMA,
PARTICLE, PREP: Apply RED-QN to 2, new token is NP
APOSTR: -->State 16
Apply RED-QN to 2, new token is NP
OFWORD: -->State 15
Apply RED-QN to 2, new token is NP
State # 21:
COMMA: -->State 25
PARTICLE: -->State 24
PREP: -->State 23
PP: -->State 22
State # 22:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT, COMMA, PARTICLE,
PREP: Apply RED-NPP to 2, new token is NPP
State # 23:
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
OFWORD: -->State 32
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 31
State # 24:
END-OF-INPUT, VERB, ADV,
DIR, TOBE, QWORD, CANDO,
PARTICLE, PREP: Apply RED-PERS to 3, new token is ?PERS
NOUN: Apply RED-PERS to 3, new token is ?PERS
Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
Apply RED-PERS to 3, new token is ?PERS
QUANT: -->State 11
Apply RED-PERS to 3, new token is ?PERS
OFWORD: -->State 28
ARTICLE: -->State 9
Apply RED-PERS to 3, new token is ?PERS
QUOTE: -->State 8
Apply RED-PERS to 3, new token is ?PERS
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 27
State # 25:
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 26
State # 26:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT, COMMA, PARTICLE,
PREP: Apply RED-NPP to 3, new token is NPP
APOSTR: -->State 16
OFWORD: -->State 15
State # 27:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT: Apply RED-PP to 2, new token is PP
COMMA: -->State 25
Apply RED-PP to 2, new token is PP
PARTICLE: -->State 30
Apply RED-PP to 2, new token is PP
PREP: -->State 23
Apply RED-PP to 2, new token is PP
PP: -->State 22
State # 28:
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 29
State # 29:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT: Apply RED-PP to 3, new token is PP
COMMA: -->State 25
Apply RED-PP to 3, new token is PP
PARTICLE: -->State 30
Apply RED-PP to 3, new token is PP
PREP: -->State 23
Apply RED-PP to 3, new token is PP
PP: -->State 22
State # 30:
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
OFWORD: -->State 28
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 27
State # 31:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT: Apply RED-PP to 2, new token is PP
COMMA: -->State 25
Apply RED-PP to 2, new token is PP
PARTICLE: -->State 30
Apply RED-PP to 2, new token is PP
PREP: -->State 23
Apply RED-PP to 2, new token is PP
PP: -->State 22
State # 32:
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 33
State # 33:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT: Apply RED-PP to 3, new token is PP
COMMA: -->State 25
Apply RED-PP to 3, new token is PP
PARTICLE: -->State 30
Apply RED-PP to 3, new token is PP
PREP: -->State 23
Apply RED-PP to 3, new token is PP
PP: -->State 22
State # 34:
END-OF-INPUT, ADV: Apply RED-ADJ to 2, new token is ADJ*
NOUN: -->State 19
Apply RED-ADJ to 2, new token is ADJ*
State # 35:
END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
PARTICLE: -->State 99
PREP: -->State 23
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 96
PP: -->State 97
NP: -->State 98
State # 36:
TOBE: -->State 44
CANDO: -->State 78
BE-FORM: -->State 77
State # 37:
VERB, ADV: Apply RED-CANDO to 1, new token is ?CANDO
TOBE: -->State 44
CANDO: -->State 67
APOSTR: -->State 16
OFWORD: -->State 15
BE-FORM: -->State 66
State # 38:
VERB: Apply RED-FCN to 0, new token is ?ADV
ADV: -->State 47
?ADV: -->State 63
State # 39:
END-OF-INPUT, ADV: Apply RED-PART to 0, new token is ?PARTICLE
NOUN: Apply RED-PART to 0, new token is ?PARTICLE
Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
Apply RED-PART to 0, new token is ?PARTICLE
QUANT: -->State 11
Apply RED-PART to 0, new token is ?PARTICLE
DIR: -->State 51
PARTICLE: -->State 50
ARTICLE: -->State 9
Apply RED-PART to 0, new token is ?PARTICLE
QUOTE: -->State 8
Apply RED-PART to 0, new token is ?PARTICLE
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 48
?PARTICLE: -->State 49
State # 40:
ADV: -->State 47
END-OF-INPUT: Apply RED-FCN to 0, new token is ?ADV
?ADV: -->State 46
State # 41:
TOBE: -->State 44
Apply RED-FCN to 1, new token is ?QW1
CANDO: Apply RED-FCN to 1, new token is ?QW1
BE-FORM: -->State 43
State # 42:
END-OF-INPUT, ADV: Apply RED-SD to 1, new token is S
State # 43:
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 45
State # 44:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT, MISCWORD, PARTICLE,
PREP: Apply RED-BE-FORM to 1, new token is BE-FORM
State # 45:
END-OF-INPUT, ADV: Apply RED-SQBN to 3, new token is S
APOSTR: -->State 16
OFWORD: -->State 15
State # 46:
END-OF-INPUT: Apply RED-SP to 3, new token is SP
State # 47:
ARTICLE, QUOTE,
END-OF-INPUT, VERB, NOUN,
ADJ, ADV, QUANT, DIR,
PARTICLE: Apply RED-FCN to 1, new token is ?ADV
State # 48:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT: Apply RED-PART to 0, new token is ?PARTICLE
COMMA: -->State 25
PARTICLE: -->State 61
PREP: -->State 23
PP: -->State 22
?PARTICLE: -->State 60
State # 49:
END-OF-INPUT, ADV: Apply RED-SV to 2, new token is S
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 54
State # 50:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT: Apply RED-PART to 0, new token is ?PARTICLE
PARTICLE: -->State 50
OFWORD: -->State 53
?PARTICLE: -->State 52
State # 51:
END-OF-INPUT, ADV: Apply RED-SVD to 2, new token is S
State # 52:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT: Apply RED-PART to 2, new token is ?PARTICLE
State # 53:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT: Apply RED-PART to 2, new token is ?PARTICLE
State # 54:
END-OF-INPUT, ADV: Apply RED-SVN to 3, new token is S
NOUN: Apply RED-PART to 0, new token is ?PARTICLE
Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
Apply RED-PART to 0, new token is ?PARTICLE
QUANT: -->State 11
Apply RED-PART to 0, new token is ?PARTICLE
COMMA: -->State 25
PARTICLE: -->State 57
PREP: -->State 23
ARTICLE: -->State 9
Apply RED-PART to 0, new token is ?PARTICLE
QUOTE: -->State 8
Apply RED-PART to 0, new token is ?PARTICLE
POSSESSIVE: -->State 2
ADJ*: -->State 3
PP: -->State 22
NP: -->State 4
NPP: -->State 55
?PARTICLE: -->State 56
State # 55:
END-OF-INPUT, ADV: Apply RED-SVPNN to 4, new token is S
COMMA: -->State 25
PARTICLE: -->State 30
PREP: -->State 23
PP: -->State 22
State # 56:
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 59
State # 57:
NOUN: Apply RED-PART to 0, new token is ?PARTICLE
Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
Apply RED-PART to 0, new token is ?PARTICLE
QUANT: -->State 11
Apply RED-PART to 0, new token is ?PARTICLE
PARTICLE: -->State 50
OFWORD: -->State 58
ARTICLE: -->State 9
Apply RED-PART to 0, new token is ?PARTICLE
QUOTE: -->State 8
Apply RED-PART to 0, new token is ?PARTICLE
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 27
?PARTICLE: -->State 52
State # 58:
NOUN: Apply RED-PART to 2, new token is ?PARTICLE
Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
Apply RED-PART to 2, new token is ?PARTICLE
QUANT: -->State 11
Apply RED-PART to 2, new token is ?PARTICLE
ARTICLE: -->State 9
Apply RED-PART to 2, new token is ?PARTICLE
QUOTE: -->State 8
Apply RED-PART to 2, new token is ?PARTICLE
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 29
State # 59:
END-OF-INPUT, ADV: Apply RED-SVPNPN to 5, new token is S
COMMA: -->State 25
PARTICLE: -->State 30
PREP: -->State 23
PP: -->State 22
State # 60:
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 62
State # 61:
END-OF-INPUT, ADV: Apply RED-SVNP to 3, new token is S
NOUN: Apply RED-PART to 0, new token is ?PARTICLE
Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
Apply RED-PART to 0, new token is ?PARTICLE
QUANT: -->State 11
Apply RED-PART to 0, new token is ?PARTICLE
PARTICLE: -->State 50
OFWORD: -->State 58
ARTICLE: -->State 9
Apply RED-PART to 0, new token is ?PARTICLE
QUOTE: -->State 8
Apply RED-PART to 0, new token is ?PARTICLE
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 4
NPP: -->State 27
?PARTICLE: -->State 52
State # 62:
END-OF-INPUT, ADV: Apply RED-SVNPN to 4, new token is S
COMMA: -->State 25
PARTICLE: -->State 30
PREP: -->State 23
PP: -->State 22
State # 63:
VERB: -->State 64
State # 64:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
QUANT, DIR, PARTICLE: Apply RED-FCN to 0, new token is ?ADV
ADV: -->State 47
Apply RED-FCN to 0, new token is ?ADV
?ADV: -->State 65
State # 65:
ARTICLE, QUOTE,
END-OF-INPUT, NOUN, ADJ,
ADV, QUANT, DIR, PARTICLE: Apply RED-VP to 4, new token is VP
State # 66:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT, PARTICLE, PREP: Apply RED-NOT to 0, new token is ?NOT
MISCWORD: -->State 69
Apply RED-NOT to 0, new token is ?NOT
?NOT: -->State 70
State # 67:
VERB, ADV: Apply RED-NOT to 0, new token is ?NOT
MISCWORD: -->State 69
?NOT: -->State 68
State # 68:
VERB, ADV: Apply RED-CANDO to 3, new token is ?CANDO
State # 69:
ARTICLE, QUOTE, VERB, NOUN,
ADJ, ADV, QUANT, MISCWORD,
PARTICLE, PREP: Apply RED-NOT to 1, new token is ?NOT
State # 70:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT, PARTICLE, PREP: Apply RED-BE to 0, new token is ?BE
MISCWORD: -->State 72
?BE: -->State 71
State # 71:
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 75
QUANT: -->State 11
PARTICLE: -->State 30
PREP: -->State 23
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
PP: -->State 73
NP: -->State 4
NPP: -->State 74
State # 72:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT, PARTICLE, PREP: Apply RED-BE to 1, new token is ?BE
State # 73:
END-OF-INPUT, ADV: Apply RED-SNBP to 5, new token is S
State # 74:
END-OF-INPUT, ADV: Apply RED-SNBN to 5, new token is S
COMMA: -->State 25
PARTICLE: -->State 30
PREP: -->State 23
PP: -->State 22
State # 75:
END-OF-INPUT, ADV: Apply RED-SNBA to 5, new token is S
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
PARTICLE: -->State 30
PREP: -->State 23
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 13
PP: -->State 76
NP: -->State 14
State # 76:
END-OF-INPUT, ADV: Apply RED-SNBAP to 6, new token is S
State # 77:
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
MISCWORD: -->State 81
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NOT: -->State 84
NP: -->State 85
State # 78:
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
MISCWORD: -->State 81
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NOT: -->State 79
NP: -->State 80
State # 79:
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 83
State # 80:
VERB, ADV: Apply RED-NOT to 0, new token is ?NOT
MISCWORD: -->State 69
APOSTR: -->State 16
OFWORD: -->State 15
?NOT: -->State 82
State # 81:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT: Apply RED-NOT to 1, new token is NOT
State # 82:
VERB, ADV: Apply RED-CANDO to 4, new token is ?CANDO
State # 83:
VERB, ADV: Apply RED-CANDO to 4, new token is ?CANDO
APOSTR: -->State 16
OFWORD: -->State 15
State # 84:
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 91
State # 85:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT, PARTICLE, PREP: Apply RED-NOT to 0, new token is ?NOT
MISCWORD: -->State 69
Apply RED-NOT to 0, new token is ?NOT
APOSTR: -->State 16
OFWORD: -->State 15
?NOT: -->State 86
State # 86:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT, PARTICLE, PREP: Apply RED-BE to 0, new token is ?BE
MISCWORD: -->State 72
?BE: -->State 87
State # 87:
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 90
QUANT: -->State 11
PARTICLE: -->State 30
PREP: -->State 23
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
PP: -->State 88
NP: -->State 4
NPP: -->State 89
State # 88:
END-OF-INPUT, ADV: Apply RED-SBNP to 6, new token is S
State # 89:
END-OF-INPUT, ADV: Apply RED-SBNN to 6, new token is S
COMMA: -->State 25
PARTICLE: -->State 30
PREP: -->State 23
PP: -->State 22
State # 90:
END-OF-INPUT, ADV: Apply RED-SBNA to 6, new token is S
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 13
NP: -->State 14
State # 91:
ARTICLE, QUOTE, NOUN, ADJ,
QUANT, PARTICLE, PREP: Apply RED-BE to 0, new token is ?BE
MISCWORD: -->State 72
APOSTR: -->State 16
OFWORD: -->State 15
?BE: -->State 92
State # 92:
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 95
QUANT: -->State 11
PARTICLE: -->State 30
PREP: -->State 23
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
PP: -->State 93
NP: -->State 4
NPP: -->State 94
State # 93:
END-OF-INPUT, ADV: Apply RED-SBNP to 6, new token is S
State # 94:
END-OF-INPUT, ADV: Apply RED-SBNN to 6, new token is S
COMMA: -->State 25
PARTICLE: -->State 30
PREP: -->State 23
PP: -->State 22
State # 95:
END-OF-INPUT, ADV: Apply RED-SBNA to 6, new token is S
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 13
NP: -->State 14
State # 96:
END-OF-INPUT, ADV: Apply RED-O-ADJ to 2, new token is S
NOUN: -->State 19
State # 97:
END-OF-INPUT, ADV: Apply RED-O-PP to 2, new token is S
State # 98:
END-OF-INPUT, ADV: Apply RED-O-NP to 2, new token is S
PARTICLE: -->State 30
PREP: -->State 23
APOSTR: -->State 16
OFWORD: -->State 15
PP: -->State 101
State # 99:
NOUN: Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
QUANT: -->State 11
OFWORD: -->State 28
ARTICLE: -->State 9
QUOTE: -->State 8
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 100
NPP: -->State 27
State # 100:
COMMA, PARTICLE, PREP: Apply RED-NPP to 1, new token is NPP
END-OF-INPUT, ADV: Apply RED-O-PP to 3, new token is S
Apply RED-NPP to 1, new token is NPP
APOSTR: -->State 16
OFWORD: -->State 15
State # 101:
END-OF-INPUT, ADV: Apply RED-O-NP to 3, new token is S
State # 102:
END-OF-INPUT, VERB, ADV,
DIR, TOBE, QWORD, CANDO,
PARTICLE, PREP: Apply RED-PERS to 2, new token is ?PERS
NOUN: Apply RED-PERS to 2, new token is ?PERS
Apply RED-ADJ to 0, new token is ADJ*
ADJ: -->State 12
Apply RED-PERS to 2, new token is ?PERS
QUANT: -->State 11
Apply RED-PERS to 2, new token is ?PERS
ARTICLE: -->State 9
Apply RED-PERS to 2, new token is ?PERS
QUOTE: -->State 8
Apply RED-PERS to 2, new token is ?PERS
POSSESSIVE: -->State 2
ADJ*: -->State 3
NP: -->State 26
State # 103:
END-OF-INPUT, ADV: Apply RED-ADJ to 2, new token is ADJ*
NOUN: -->State 19
Apply RED-ADJ to 2, new token is ADJ*

705
syntax.zil Normal file
View File

@ -0,0 +1,705 @@
"SYNTAX for MILLIWAYS
Copyright (C) 1988 Infocom, Inc. All rights reserved."
<SYNONYM WITH USING ;BY>
<SYNONYM THROUGH THRU>
<SYNONYM ON ONTO>
<SYNONYM UNDER BELOW UNDERNEATH BENEATH>
<SYNONYM UNTIL TILL>
<SYNONYM TO TOWARD>
<SYNONYM AROUND ALONG>
;<SYNONYM BEFORE NEAR NEXT AGAINST>
<SYNONYM ALL BOTH>
<SYNONYM IN INSIDE INTO>
<SYNONYM OUT OUTSIDE>
<SYNONYM NORTH N FORE F FOREWA>
<SYNONYM SOUTH S AFT>
<SYNONYM EAST E STARBO SB>
<SYNONYM WEST W PORT P>
<SYNONYM DOWN D DOWNSTAIRS>
<SYNONYM UP U>
<DIR-SYNONYM UP UPSTAIRS>
<SYNONYM NW NORTHWEST>
<SYNONYM NE NORTHEAST>
<SYNONYM SW SOUTHWEST>
<SYNONYM SE SOUTHEAST>
<BUZZ NOW SOON ;WELL THERE PLEASE ;MAYBE BACK ANYWAY OH>
<SYNTAX $ID = V-$ID>
<SYNTAX $REFRESH = V-$REFRESH>
<SYNTAX $VERIFY = V-$VERIFY>
<SYNTAX $VERIFY OBJECT = V-$VERIFY>
%<DEBUG-CODE
[ <SYNTAX $CHEAT OBJECT = V-$CHEAT>
<SYNTAX \#QUEUE = V-$QUEUE>
<SYNTAX \#RANDOM OBJECT = V-$RANDOM>
<SYNTAX \#COMMAND = V-$COMMAND>
<SYNTAX \#RECORD = V-$RECORD>
<SYNTAX \#UNRECORD = V-$UNRECORD>]>
<SYNTAX ADDRESS OBJECT (FIND PERSONBIT) (ON-GROUND IN-ROOM MANY) = V-TELL PRE-ASK>
<VERB-SYNONYM POINT AIM>
<SYNTAX POINT ;(AIM) OBJECT AT OBJECT = V-AIM ;PRE-AIM>
<SYNTAX POINT OBJECT TO OBJECT = V-AIM ;PRE-AIM>
<SYNTAX POINT OBJECT OBJECT = V-AIM ;PRE-AIM>
<SYNTAX POINT AT OBJECT = V-SHOW>
<SYNTAX POINT AT OBJECT WITH OBJECT = V-SAIM PRE-SAIM>
<SYNTAX POINT TO OBJECT = V-SHOW>
<VERB-SYNONYM CHECK TEST ANALYSE ANALYZE>
<SYNTAX CHECK ;(TEST ANALYSE ANALYZE) OBJECT = V-ANALYZE PRE-ANALYZE>
<SYNTAX CHECK OBJECT FOR OBJECT = V-ANALYZE PRE-ANALYZE>
<SYNTAX CHECK OUT OBJECT = V-ANALYZE PRE-ANALYZE>
<SYNTAX CHECK UNDER OBJECT = V-LOOK-UNDER PRE-LOOK-UNDER>
<SYNTAX CHECK OBJECT IN OBJECT = V-LOOK-UP>
<SYNTAX CHECK OBJECT ON OBJECT = V-SANALYZE PRE-SANALYZE>
<VERB-SYNONYM ANSWER REPLY RESPOND>
<SYNTAX ANSWER ;(REPLY RESPOND) = V-ANSWER>
<SYNTAX ANSWER OBJECT = V-REPLY>
<SYNTAX ANSWER TO OBJECT = V-REPLY>
<VERB-SYNONYM ASK QUERY QUESTION INQUIRE CONSULT>
<SYNTAX ASK ;(QUERY QUESTION INQUIRE CONSULT)
OBJECT (FIND PERSONBIT) = V-ASK PRE-ASK>
<SYNTAX ASK ABOUT OBJECT (EVERYWHERE) = V-ASK-CONTEXT-ABOUT PRE-ASK-CONTEXT-ABOUT>
<SYNTAX ASK FOR OBJECT (EVERYWHERE) = V-ASK-CONTEXT-FOR PRE-ASK-CONTEXT-FOR>
<SYNTAX ASK OBJECT ABOUT OBJECT ;(MANY) (EVERYWHERE) = V-ASK-ABOUT PRE-ASK>
<SYNTAX ASK OBJECT FOR OBJECT (EVERYWHERE) = V-ASK-FOR PRE-ASK>
<SYNTAX ASK OBJECT ON OBJECT ;(MANY) (EVERYWHERE) = V-ASK-ABOUT PRE-ASK>
<VERB-SYNONYM ATTACK FIGHT RAPE MOLEST ASSAULT REPEL>
<SYNTAX ATTACK OBJECT (FIND PERSONBIT) (ON-GROUND IN-ROOM) = V-ATTACK>
<SYNTAX ATTACK OFF OBJECT (FIND PERSONBIT) (ON-GROUND IN-ROOM) = V-ATTACK>
<SYNTAX ATTACK OBJECT (ON-GROUND IN-ROOM)
WITH OBJECT ;(FIND WEAPONBIT) (HELD ;CARRIED HAVE TAKE)
= V-ATTACK>
<SYNTAX BRIEF = V-BRIEF>
;<SYNTAX BRIBE OBJECT (FIND PERSONBIT) (ON-GROUND IN-ROOM)
WITH OBJECT (MANY HELD HAVE TAKE)
= V-SGIVE PRE-SGIVE>
<VERB-SYNONYM CLEAN BRUSH WIPE WASH TIDY SCRAPE SCRATCH FRESHEN>
<SYNTAX CLEAN OBJECT (FIND ROOMSBIT) (ON-GROUND IN-ROOM MANY)
= V-BRUSH PRE-BRUSH>
<SYNTAX CLEAN IN OBJECT (ON-GROUND IN-ROOM) = V-BOARD> "WASH IN OBJECT"
<SYNTAX CLEAN OBJECT
OFF ;OF OBJECT (ON-GROUND IN-ROOM ;MANY)
= V-BRUSH PRE-BRUSH>
<SYNTAX CLEAN OBJECT (ON-GROUND IN-ROOM MANY)
WITH OBJECT (HELD CARRIED TAKE HAVE)
= V-BRUSH PRE-BRUSH>
<SYNTAX CLEAN OFF OBJECT (FIND ROOMSBIT) (ON-GROUND IN-ROOM MANY)
= V-BRUSH PRE-BRUSH>
<SYNTAX CLEAN UP OBJECT (FIND ROOMSBIT) (ON-GROUND IN-ROOM MANY)
= V-BRUSH PRE-BRUSH>
<SYNTAX ORDER OBJECT = V-BUY>
<SYNONYM ORDER BUY PURCHASE>
<VERB-SYNONYM CALL SUMMON>
<SYNTAX $CALL OBJECT (FIND PERSONBIT) = V-$CALL PRE-ASK>
<SYNTAX CALL OBJECT (FIND PERSONBIT) = V-$CALL PRE-ASK>
<SYNTAX CALL TO OBJECT (FIND PERSONBIT) = V-$CALL PRE-ASK>
;"<SYNTAX CHANGE OBJECT (FIND ROOMSBIT) = V-CHANGE>
<SYNTAX CHANGE IN OBJECT (FIND WEARBIT) (HAVE TAKE) = V-WEAR>
<SYNTAX CHANGE FOR OBJECT (EVERYWHERE) = V-DRESS>
<SYNTAX CHANGE TO OBJECT (FIND WEARBIT) (HAVE TAKE) = V-WEAR>"
<VERB-SYNONYM CLIMB BOARD SCALE>
<SYNTAX CLIMB OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM EVERYWHERE) = V-BOARD>
<SYNTAX CLIMB DOWN OBJECT (FIND ROOMSBIT) (ON-GROUND IN-ROOM EVERYWHERE) = V-CLIMB-DOWN>
<SYNTAX CLIMB IN OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM EVERYWHERE) = V-BOARD>
<SYNTAX CLIMB OFF OBJECT (FIND ROOMSBIT) (ON-GROUND IN-ROOM) = V-DISEMBARK>
<SYNTAX CLIMB ON OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-CLIMB-ON>
<SYNTAX CLIMB OUT OBJECT (FIND ROOMSBIT) (ON-GROUND IN-ROOM EVERYWHERE) = V-DISEMBARK>
<SYNTAX CLIMB OVER OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-CLIMB-ON>
<SYNTAX CLIMB THROUGH OBJECT = V-THROUGH PRE-THROUGH>
<SYNTAX CLIMB UP OBJECT (FIND ROOMSBIT) (ON-GROUND IN-ROOM EVERYWHERE) = V-CLIMB-UP>
<VERB-SYNONYM CLOSE SHUT>
<SYNTAX CLOSE OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM)
= V-CLOSE>
<SYNTAX CLOSE OFF OBJECT (FIND LIGHTBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE)
= V-LAMP-OFF>
<SYNTAX COUNT OBJECT = V-COUNT>
<SYNTAX COVER OBJECT WITH OBJECT (HELD MANY) = V-SPUT-ON>
<VERB-SYNONYM DAMAGE DEMOLISH DESTROY BREAK SMASH CRUSH CRACK HURT WRECK>
<SYNTAX DAMAGE OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
= V-MUNG>
<SYNTAX DAMAGE UP OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
= V-MUNG>
<SYNTAX DAMAGE OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
WITH OBJECT (HELD CARRIED HAVE TAKE)
= V-MUNG>
<SYNTAX DAMAGE OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
DOWN ;WITH OBJECT (HELD CARRIED HAVE TAKE)
= V-MUNG>
<SYNTAX DAMAGE DOWN OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
WITH OBJECT (HELD CARRIED HAVE TAKE)
= V-MUNG>
<SYNTAX DIAGNOSE OBJECT (FIND ROOMSBIT) = V-DIAGNOSE>
<SYNTAX DINE ON OBJECT (FIND ROOMSBIT)
(HELD CARRIED ON-GROUND IN-ROOM HAVE TAKE ;MANY)
= V-EAT PRE-EAT>
<SYNONYM DRAPE WRAP>
<SYNTAX DRAPE OBJECT IN OBJECT (HELD MANY) = V-SPUT-ON>
<SYNTAX DRAPE OBJECT (HELD MANY) ON OBJECT = V-PUT PRE-PUT>
<SYNTAX DRAPE OBJECT (HELD MANY) AROUND OBJECT = V-PUT PRE-PUT>
<SYNTAX DRAPE OBJECT (HELD MANY) OVER OBJECT = V-PUT PRE-PUT>
<VERB-SYNONYM DRINK SWALLOW SIP GUZZLE>
<SYNTAX DRINK OBJECT ;(FIND DRINKBIT) (HELD CARRIED ON-GROUND IN-ROOM)
= V-DRINK>
<SYNTAX DRINK FROM OBJECT (HELD CARRIED) = V-DRINK>
<SYNTAX DROP OBJECT (HELD MANY HAVE TAKE) = V-DROP PRE-PUT>
<SYNTAX DROP OBJECT (HELD ;CARRIED MANY HAVE TAKE) DOWN ;ON OBJECT
= V-PUT PRE-PUT>
<SYNTAX DROP OBJECT (HELD ;CARRIED MANY HAVE TAKE) IN OBJECT
= V-PUT-IN PRE-PUT-IN>
<SYNTAX DROP OBJECT (HELD ;CARRIED MANY HAVE TAKE) ON OBJECT
= V-PUT PRE-PUT>
<SYNTAX DROP OBJECT (HELD ;CARRIED MANY HAVE TAKE)
THROUGH OBJECT (ON-GROUND IN-ROOM)
= V-THROW-THROUGH PRE-THROW-THROUGH>
<VERB-SYNONYM EAT TASTE LICK GOBBLE DEVOUR ;CONSUME>
<SYNTAX EAT OBJECT (FIND EATBIT) (HELD CARRIED ON-GROUND IN-ROOM HAVE TAKE)
= V-EAT PRE-EAT>
<SYNTAX ENJOY OBJECT = V-ENJOY>
<SYNTAX ENTER OBJECT (FIND ROOMSBIT) (EVERYWHERE) = V-THROUGH PRE-THROUGH>
<VERB-SYNONYM EXAMINE X INSPECT DESCRIBE STUDY OBSERVE EXPLORE WATCH>
<SYNTAX EXAMINE OBJECT ;(HELD CARRIED IN-ROOM ON-GROUND ;MANY)
= V-EXAMINE PRE-EXAMINE>
<SYNTAX EXAMINE OBJECT (HELD CARRIED ON-GROUND IN-ROOM TAKE)
THROUGH OBJECT (ON-GROUND IN-ROOM HELD CARRIED HAVE TAKE)
= V-READ PRE-READ>
<SYNTAX EXAMINE OBJECT ;(HELD CARRIED IN-ROOM ON-GROUND ;MANY)
WITH OBJECT (ON-GROUND IN-ROOM HELD CARRIED HAVE TAKE)
= V-READ PRE-READ>
<SYNTAX EXAMINE UNDER OBJECT = V-LOOK-UNDER PRE-LOOK-UNDER>
<SYNTAX EXPLAIN OBJECT (EVERYWHERE) = V-TALK-ABOUT PRE-TALK-ABOUT>
<SYNTAX EXPLAIN OBJECT TO OBJECT = V-STELL-ABOUT PRE-STELL-ABOUT>
<SYNTAX EXPLAIN ABOUT OBJECT (EVERYWHERE) = V-TALK-ABOUT PRE-TALK-ABOUT>
<SYNTAX EXPLAIN TO OBJECT (IN-ROOM) ABOUT OBJECT (EVERYWHERE)
= V-TELL-ABOUT PRE-TELL-ABOUT>
<VERB-SYNONYM SLEEP FAINT DOZE NAP SNOOZE>
<SYNTAX SLEEP = V-FAINT>
<SYNTAX SLEEP IN OBJECT (ON-GROUND IN-ROOM) = V-FAINT>
<SYNTAX SLEEP ON OBJECT (ON-GROUND IN-ROOM) = V-FAINT>
<SYNTAX FIDDLE WITH OBJECT = V-RUB>
<VERB-SYNONYM FILL FLOOD>
<SYNTAX FILL OBJECT (FIND CONTBIT) (HELD CARRIED ON-GROUND IN-ROOM)
= V-FILL ;PRE-FILL>
<SYNTAX FILL OBJECT ;(FIND CONTBIT) (HELD CARRIED ON-GROUND IN-ROOM)
WITH OBJECT
= V-FILL ;PRE-FILL>
<VERB-SYNONYM FIND DETECT DISCOVER LOCATE SEEK>
<SYNTAX FIND OBJECT ;(MANY) (EVERYWHERE) = V-FIND PRE-FIND>
<SYNTAX FIND OBJECT IN OBJECT = V-SSEARCH-FOR PRE-SSEARCH-FOR>
<SYNTAX FIND OBJECT ON OBJECT = V-SSEARCH-FOR PRE-SSEARCH-FOR>
<SYNTAX FIND OUT OBJECT (EVERYWHERE) = V-ASK-CONTEXT-ABOUT PRE-ASK-CONTEXT-ABOUT>
<VERB-SYNONYM FIX REPAIR ADJUST UNJAM>
<SYNTAX FIX OBJECT = V-FIX>
<SYNTAX FIX OBJECT WITH OBJECT ;(FIND TOOLBIT) = V-FIX>
<VERB-SYNONYM FOLLOW PURSUE CHASE STALK ;TRACE>
<SYNTAX FOLLOW OBJECT (FIND PERSONBIT) (EVERYWHERE) = V-FOLLOW>
<SYNTAX FOLLOW OBJECT (FIND PERSONBIT) (EVERYWHERE) OBJECT = V-FOLLOW> "Follow me north."
<SYNTAX FOLLOW OBJECT (FIND PERSONBIT) (EVERYWHERE) TO OBJECT (EVERYWHERE) = V-FOLLOW> "F. me to office."
<SYNTAX FOOTNOTE = V-FOOTNOTE>
<SYNTAX FOOTNOTE OBJECT = V-FOOTNOTE>
<SYNTAX GET OBJECT (FIND TAKEBIT) (ON-GROUND IN-ROOM MANY)
= V-TAKE PRE-TAKE>
<SYNTAX GET OBJECT (IN-ROOM CARRIED MANY) FROM OBJECT = V-TAKE PRE-TAKE>
<SYNTAX GET OBJECT (IN-ROOM CARRIED MANY) IN OBJECT = V-TAKE PRE-TAKE>
<SYNTAX GET OBJECT (CARRIED IN-ROOM MANY) OFF OBJECT = V-TAKE PRE-TAKE>
<SYNTAX GET OBJECT (CARRIED IN-ROOM MANY) OUT ;OF OBJECT = V-TAKE PRE-TAKE>
<SYNTAX GET OBJECT ;(FIND TAKEBIT) (MANY TAKE) TO OBJECT (EVERYWHERE) = V-TAKE-TO>
<SYNTAX GET IN OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-BOARD>
<SYNTAX GET OFF OBJECT (FIND ROOMSBIT) (ON-GROUND IN-ROOM) = V-DISEMBARK>
<SYNTAX GET ON OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-CLIMB-ON>
<SYNTAX GET OUT ;OF OBJECT (FIND ROOMSBIT) (ON-GROUND IN-ROOM EVERYWHERE) = V-DISEMBARK>
<SYNTAX GET RID ;OF OBJECT = V-DROP PRE-PUT>
<SYNTAX GET UP OBJECT (FIND ROOMSBIT) = V-STAND>
<VERB-SYNONYM HAND GIVE SELL OFFER PASS FEED ;" DONATE ASSIGN">
;<SYNTAX FEED OBJECT (FIND PERSONBIT) = V-FEED>
<SYNTAX HAND OBJECT (MANY HELD HAVE) TO OBJECT (FIND PERSONBIT) (ON-GROUND)
= V-GIVE PRE-GIVE>
<SYNTAX HAND OBJECT ;(FIND PERSONBIT) (ON-GROUND)
OBJECT (MANY HELD HAVE)
= V-SGIVE PRE-SGIVE>
<SYNTAX HAND OUT OBJECT (FIND ROOMSBIT) = V-FAINT>
<SYNTAX HAND UP OBJECT (FIND ROOMSBIT) = V-QUIT>
<SYNTAX HANG ;UP OBJECT (HELD ;CARRIED MANY HAVE TAKE) IN OBJECT
= V-PUT-IN PRE-PUT-IN>
<SYNTAX HEAR OBJECT (HELD CARRIED ON-GROUND IN-ROOM) = V-LISTEN PRE-LISTEN>
<VERB-SYNONYM HELLO HI GREET GREETINGS ; HOWDY>
<SYNTAX HELLO OBJECT (FIND ROOMSBIT) = V-HELLO PRE-HELLO>
<VERB-SYNONYM HELP HINT HINTS>
<SYNTAX HELP = V-HELP>
<SYNTAX HELP OBJECT (FIND PERSONBIT) = V-HELP>
<VERB-SYNONYM HIDE CONCEAL ;CROUCH>
<SYNTAX HIDE = V-HIDE>
<SYNTAX HIDE BEHIND OBJECT = V-HIDE>
<SYNTAX HIDE IN OBJECT (EVERYWHERE) = V-THROUGH PRE-THROUGH>
<SYNTAX HIDE ON OBJECT = V-THROUGH PRE-THROUGH>
<SYNTAX HIDE UNDER OBJECT = V-HIDE>
<SYNTAX HIDE OBJECT (HELD ;CARRIED MANY HAVE TAKE) UNDER OBJECT
= V-PUT-UNDER>
<SYNTAX HIDE OBJECT (HELD ;CARRIED MANY HAVE TAKE) IN OBJECT
= V-PUT-IN PRE-PUT-IN>
;<SYNONYM HITCHH HITCH>
;<SYNTAX HITCHH = V-HITCHHIKE>
<SYNTAX HOLD OBJECT (FIND TAKEBIT) (ON-GROUND IN-ROOM MANY)
= V-TAKE PRE-TAKE>
<SYNTAX HOLD OBJECT (IN-ROOM CARRIED TAKE HAVE) TO OBJECT = V-HOLD-UP>
<SYNTAX HOLD OBJECT (IN-ROOM CARRIED TAKE HAVE) UP ;TO OBJECT = V-HOLD-UP>
<SYNTAX HOLD UP OBJECT (IN-ROOM CARRIED TAKE HAVE) = V-HOLD-UP>
<VERB-SYNONYM I INVENT>
<SYNTAX I = V-INVENTORY>
<VERB-SYNONYM JUMP LEAP DIVE>
<SYNTAX JUMP = V-LEAP>
<SYNTAX JUMP ACROSS OBJECT (ON-GROUND IN-ROOM) = V-LEAP>
<SYNTAX JUMP FROM OBJECT (FIND ROOMSBIT) (ON-GROUND IN-ROOM) = V-DISEMBARK>
<SYNTAX JUMP IN OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-BOARD ;V-LEAP>
<SYNTAX JUMP OUT ;OF OBJECT (FIND ROOMSBIT) (ON-GROUND IN-ROOM EVERYWHERE) = V-DISEMBARK>
<SYNTAX JUMP OFF OBJECT (FIND ROOMSBIT) (ON-GROUND IN-ROOM) = V-DISEMBARK>
<SYNTAX JUMP OVER OBJECT (ON-GROUND IN-ROOM) = V-LEAP>
<SYNTAX JUMP THROUGH OBJECT = V-THROUGH PRE-THROUGH>
<VERB-SYNONYM MURDER KILL STAB WASTE ;STRANGLE>
<SYNTAX MURDER OBJECT (FIND PERSONBIT) (ON-GROUND IN-ROOM)
WITH OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE ;TAKE)
= V-KILL>
<VERB-SYNONYM CONSOLE KISS HUG COMFORT FLIRT>
<SYNTAX CONSOLE OBJECT (FIND PERSONBIT) (ON-GROUND IN-ROOM) = V-KISS>
<SYNTAX CONSOLE WITH OBJECT (FIND PERSONBIT) (ON-GROUND IN-ROOM) = V-KISS>
<VERB-SYNONYM KNOCK RAP BANG>
<SYNTAX KNOCK ON OBJECT = V-KNOCK>
<SYNTAX KNOCK AT OBJECT = V-KNOCK>
<SYNTAX KNOCK DOWN OBJECT (FIND PERSONBIT) (ON-GROUND IN-ROOM) = V-ATTACK>
<SYNTAX KNOCK OFF OBJECT (FIND PERSONBIT) (IN-ROOM ON-GROUND) = V-PUSH>
<SYNTAX KNOCK OUT OBJECT (FIND PERSONBIT) (IN-ROOM ON-GROUND) = V-SLAP>
<SYNTAX KNOCK OBJECT (IN-ROOM ON-GROUND MANY) OFF ;OF OBJECT (FIND ROOMSBIT)
= V-PUSH>
<SYNTAX KNOCK OBJECT ;(FIND PERSONBIT) (IN-ROOM ON-GROUND) ON OBJECT = V-SLAP>
<VERB-SYNONYM LEAVE EXIT DEPART WITHDRAW>
<SYNTAX LEAVE = V-LEAVE>
<SYNTAX LEAVE OBJECT (EVERYWHERE) = V-LEAVE>
<SYNTAX LEAVE FROM OBJECT (EVERYWHERE) = V-LEAVE>
<SYNTAX LIE DOWN ;ON OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-LIE PRE-LIE>
<SYNTAX LIE IN OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-LIE PRE-LIE>
<SYNTAX LIE ON OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-LIE PRE-LIE>
<SYNTAX LIGHT OBJECT (FIND LIGHTBIT) (HELD CARRIED ON-GROUND IN-ROOM)
= V-LAMP-ON>
<VERB-SYNONYM LISTEN>
<SYNTAX LISTEN TO OBJECT (HELD CARRIED ON-GROUND IN-ROOM)
= V-LISTEN PRE-LISTEN>
<SYNTAX LOCK OBJECT (ON-GROUND IN-ROOM) = V-LOCK>
<SYNTAX LOCK OBJECT (ON-GROUND IN-ROOM) WITH OBJECT (TAKE) = V-LOCK>
<VERB-SYNONYM LOOK PEEP L STARE GAZE PEEK PEER SEE ;REACH>
<SYNTAX LOOK = V-LOOK>
<SYNTAX LOOK OBJECT = V-CHASTISE>
<SYNTAX LOOK AROUND OBJECT (FIND ROOMSBIT) = V-LOOK>
<SYNTAX LOOK AT OBJECT = V-EXAMINE PRE-EXAMINE>
<SYNTAX LOOK BEHIND OBJECT = V-LOOK-BEHIND>
<SYNTAX LOOK DOWN OBJECT (FIND ROOMSBIT) = V-LOOK-DOWN>
<SYNTAX LOOK FOR OBJECT (EVERYWHERE) = V-FIND PRE-FIND>
<SYNTAX LOOK IN OBJECT (HELD CARRIED ON-GROUND IN-ROOM) (FIND ROOMSBIT)
= V-LOOK-INSIDE PRE-LOOK-INSIDE>
<SYNTAX LOOK-INSIDE OBJECT (HELD CARRIED ON-GROUND IN-ROOM) (FIND ROOMSBIT)
= V-LOOK-INSIDE PRE-LOOK-INSIDE>
<SYNTAX LOOK IN OBJECT (HELD CARRIED ON-GROUND IN-ROOM) FOR OBJECT (EVERYWHERE)
= V-SEARCH-FOR PRE-SEARCH-FOR>
<SYNTAX LOOK ON OBJECT (ON-GROUND IN-ROOM) = V-LOOK-ON>
<SYNTAX LOOK OUT OBJECT (FIND ROOMSBIT) = V-LOOK-OUTSIDE>
<SYNTAX LOOK OVER OBJECT ;(HELD CARRIED ON-GROUND IN-ROOM)
= V-EXAMINE PRE-EXAMINE>
<SYNTAX LOOK THROUGH OBJECT (HELD CARRIED ON-GROUND IN-ROOM)
= V-LOOK-THROUGH>
<SYNTAX LOOK UNDER OBJECT = V-LOOK-UNDER PRE-LOOK-UNDER>
<SYNTAX LOOK UP OBJECT (FIND ROOMSBIT) = V-LOOK-UP>
<SYNTAX LOOK UP OBJECT IN OBJECT = V-LOOK-UP>
<VERB-SYNONYM NO NOPE ;" NAY NEGATIVE N">
<SYNTAX NO = V-NO>
<SYNTAX NOD OBJECT (FIND ROOMSBIT) = V-NOD>
<SYNTAX NOD AT OBJECT = V-HELLO PRE-HELLO>
<SYNTAX NOD TO OBJECT = V-HELLO PRE-HELLO>
<SYNTAX OPEN OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM)
= V-OPEN>
<SYNTAX OPEN UP OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM)
= V-OPEN>
<SYNTAX OPEN OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM)
WITH OBJECT ;(FIND TOOLBIT) (ON-GROUND IN-ROOM HELD CARRIED HAVE TAKE)
= V-OPEN>
<SYNTAX PANIC = V-PANIC>
<SYNTAX PAY FOR OBJECT = V-BUY>
<SYNTAX PICK OBJECT (FIND TAKEBIT) (ON-GROUND MANY)
= V-TAKE PRE-TAKE>
<SYNTAX PICK UP OBJECT (FIND TAKEBIT) (ON-GROUND MANY)
= V-TAKE PRE-TAKE>
<VERB-SYNONYM POUR SPILL SPRINKLE>
<SYNTAX POUR OBJECT (HELD CARRIED HAVE TAKE) = V-POUR>
<SYNTAX POUR OBJECT (HELD CARRIED HAVE TAKE) FROM OBJECT = V-POUR>
<SYNTAX POUR OBJECT (HELD CARRIED HAVE TAKE) IN OBJECT = V-PUT-IN PRE-PUT-IN>
<SYNTAX POUR OBJECT (HELD CARRIED HAVE TAKE) ON OBJECT = V-PUT PRE-PUT>
<SYNTAX POUR OBJECT (HELD CARRIED HAVE TAKE) OVER OBJECT = V-PUT PRE-PUT>
<VERB-SYNONYM PULL TUG MOVE>
<SYNTAX PULL OBJECT (ON-GROUND IN-ROOM) = V-MOVE PRE-MOVE>
<SYNTAX PULL OBJECT (ON-GROUND IN-ROOM) OBJECT = V-MOVE-DIR PRE-MOVE-DIR>
<SYNTAX PULL OBJECT ;(FIND TAKEBIT) (CARRIED IN-ROOM MANY)
OFF OBJECT = V-TAKE PRE-TAKE>
<SYNTAX PULL ON OBJECT (ON-GROUND IN-ROOM) = V-MOVE PRE-MOVE>
<SYNTAX PULL TOGETHER OBJECT = V-PULL-TOGETHER> ;"pull myself together"
<VERB-SYNONYM PUSH PRESS SHOVE>
<SYNTAX PUSH OBJECT (IN-ROOM ON-GROUND) = V-PUSH>
<SYNTAX PUSH OBJECT (IN-ROOM ON-GROUND) OBJECT = V-MOVE-DIR PRE-MOVE-DIR>
<SYNTAX PUSH OBJECT (HELD CARRIED MANY HAVE TAKE) IN OBJECT
= V-PUT-IN PRE-PUT-IN>
<SYNTAX PUSH OBJECT (IN-ROOM ON-GROUND MANY) OFF ;OF OBJECT (FIND ROOMSBIT)
= V-PUSH>
<SYNTAX PUSH OBJECT (IN-ROOM ON-GROUND MANY) TO OBJECT
= V-MOVE-DIR PRE-MOVE-DIR>
<SYNTAX PUSH OBJECT (HELD CARRIED MANY HAVE TAKE) UNDER OBJECT = V-PUT-UNDER>
<SYNTAX PUSH ON OBJECT (IN-ROOM ON-GROUND) = V-PUSH>
<VERB-SYNONYM PLACE PUT STUFF LAY INSERT SET ;" INSTALL DEPOSIT DIP">
<SYNTAX PLACE OBJECT (HELD MANY HAVE TAKE) ON OBJECT (FIND SURFACEBIT)
= V-PUT PRE-PUT>
<SYNTAX PLACE OBJECT (HELD MANY HAVE TAKE) ACROSS OBJECT = V-PUT PRE-PUT>
<SYNTAX PLACE OBJECT (HELD MANY HAVE TAKE) AROUND OBJECT = V-PUT PRE-PUT>
<SYNTAX PLACE OBJECT (HELD MANY HAVE TAKE) DOWN ;ON OBJECT = V-PUT PRE-PUT>
<SYNTAX PLACE OBJECT (HELD MANY HAVE TAKE) IN OBJECT = V-PUT-IN PRE-PUT-IN>
<SYNTAX PLACE OBJECT (HELD MANY HAVE TAKE) OVER OBJECT = V-PUT PRE-PUT>
<SYNTAX PLACE OBJECT (HELD MANY HAVE TAKE) THROUGH OBJECT (ON-GROUND IN-ROOM)
= V-THROW-THROUGH PRE-THROW-THROUGH>
<SYNTAX PLACE OBJECT (HELD MANY HAVE TAKE) UNDER OBJECT = V-PUT-UNDER>
<SYNTAX PLACE AWAY OBJECT(HELD MANY HAVE TAKE) IN OBJECT = V-PUT-IN PRE-PUT-IN>
<SYNTAX PLACE DOWN OBJECT (HELD MANY HAVE) = V-DROP PRE-PUT>
<SYNTAX PLAY OBJECT = V-PLAY>
<SYNTAX PLAY WITH OBJECT = V-PLAY>
<SYNTAX PLAY OBJECT WITH OBJECT (FIND PERSONBIT) = V-PLAY>
<VERB-SYNONYM QUIT Q LOGOUT LOGOFF>
<SYNTAX QUIT = V-QUIT>
<VERB-SYNONYM READ SKIM ;PERUSE>
<SYNTAX READ OBJECT (FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE)
= V-READ PRE-READ>
<SYNTAX READ OBJECT ;(FIND PERSONBIT)
OBJECT (HELD CARRIED ON-GROUND IN-ROOM TAKE)
= V-SREAD PRE-SREAD>
<SYNTAX READ OBJECT (HELD CARRIED ON-GROUND IN-ROOM TAKE)
TO OBJECT ;(FIND PERSONBIT)
= V-READ PRE-READ>
<SYNTAX READ ABOUT OBJECT
IN OBJECT (FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE HAVE)
= V-LOOK-UP>
<SYNTAX REFUSE OBJECT (IN-ROOM) = V-REFUSE>
<VERB-SYNONYM RELAX MEDITATE REST>
<SYNTAX RELAX = V-RELAX>
<VERB-SYNONYM REMOVE DOFF ;SHED>
<SYNTAX REMOVE OBJECT (FIND WORNBIT) = V-REMOVE>
<SYNTAX REMOVE OBJECT ;(FIND TAKEBIT) (IN-ROOM CARRIED MANY)
FROM OBJECT = V-TAKE PRE-TAKE>
<SYNTAX REQUEST OBJECT (EVERYWHERE) = V-ASK-CONTEXT-FOR PRE-ASK-CONTEXT-FOR>
<SYNTAX RESTART = V-RESTART>
<VERB-SYNONYM RESTORE ;CONTINUE RESUME>
<SYNTAX RESTORE = V-RESTORE>
<VERB-SYNONYM RING ;PEAL BLOW BLAST HONK TOOT BEEP>
<SYNTAX RING OBJECT ;(FIND ROOMSBIT) = V-RING>
<SYNTAX RING ON OBJECT = V-RING>
<SYNTAX RING OBJECT (HELD CARRIED HAVE TAKE) AT OBJECT
= V-SSHOOT PRE-SSHOOT> "BLOW BLOWGUN AT person"
<SYNTAX RING OBJECT WITH OBJECT = V-RING>
<VERB-SYNONYM RUB TOUCH FEEL ;" PAT PET SHADE">
<SYNTAX RUB OBJECT = V-RUB>
<SYNTAX RUB OBJECT WITH OBJECT (TAKE HAVE) = V-RUB>
<SYNTAX SAVE = V-SAVE>
<SYNTAX SAVE OBJECT ;(FIND PERSONBIT) = V-HELP>
<VERB-SYNONYM SAY TALK SPEAK WHISPER STATE CHAT GAB>
;<SYNTAX SAY = V-SAY>
<SYNTAX SAY OBJECT TO OBJECT (FIND PERSONBIT) (IN-ROOM) = V-SAY>
<SYNTAX SAY OBJECT = V-SAY>
<SYNTAX SAY ABOUT OBJECT (EVERYWHERE) = V-TALK-ABOUT PRE-TALK-ABOUT>
<SYNTAX SAY TO OBJECT (ON-GROUND IN-ROOM MANY) = V-TELL PRE-ASK>
<SYNTAX SAY TO OBJECT (IN-ROOM) ABOUT OBJECT (EVERYWHERE)
= V-TELL-ABOUT PRE-TELL-ABOUT>
<SYNTAX SAY WITH OBJECT (ON-GROUND IN-ROOM MANY) = V-TELL PRE-ASK>
<SYNTAX SAY WITH OBJECT (IN-ROOM) ABOUT OBJECT (EVERYWHERE)
= V-ASK-ABOUT PRE-ASK>
<SYNTAX SCORE = V-SCORE>
<SYNTAX SCRIPT = V-SCRIPT>
<VERB-SYNONYM SEARCH DIG RUMMAGE FRISK>
<SYNTAX SEARCH OBJECT = V-SEARCH PRE-SEARCH>
<SYNTAX SEARCH OBJECT FOR OBJECT (EVERYWHERE)
= V-SEARCH-FOR PRE-SEARCH-FOR>
<SYNTAX SEARCH FOR OBJECT (EVERYWHERE) = V-FIND PRE-FIND>
<SYNTAX SEARCH IN OBJECT = V-SEARCH PRE-SEARCH>
<SYNTAX SEARCH UNDER OBJECT = V-LOOK-UNDER PRE-LOOK-UNDER>
<SYNTAX SEARCH UP OBJECT = V-SEARCH PRE-SEARCH>
<VERB-SYNONYM SHAKE RATTLE>
<SYNTAX SHAKE OBJECT = V-SHAKE>
<SYNTAX SHAKE OBJECT WITH OBJECT (FIND PERSONBIT) = V-SHAKE> ;"SHAKE HANDS"
<VERB-SYNONYM FIRE SHOOT SPRAY>
<SYNTAX FIRE OBJECT (FIND PERSONBIT) (ON-GROUND IN-ROOM)
= V-SHOOT>
<SYNTAX FIRE OBJECT (FIND PERSONBIT) (ON-GROUND IN-ROOM)
WITH OBJECT ;(FIND WEAPONBIT) (HELD CARRIED HAVE ;TAKE)
= V-SHOOT>
<SYNTAX FIRE OBJECT ;(FIND WEAPONBIT) (HELD CARRIED HAVE ;TAKE)
AT OBJECT (FIND PERSONBIT) (ON-GROUND IN-ROOM)
= V-SSHOOT PRE-SSHOOT>
<SYNTAX FIRE OBJECT ;(FIND WEAPONBIT) (HELD CARRIED HAVE ;TAKE)
ON OBJECT (FIND PERSONBIT) (ON-GROUND IN-ROOM)
= V-SSHOOT PRE-SSHOOT>
<SYNTAX FIRE AT OBJECT (FIND PERSONBIT) (ON-GROUND IN-ROOM)
= V-SHOOT>
<VERB-SYNONYM SHOW DISPLAY>
<SYNTAX SHOW OBJECT = V-SHOW>
<SYNTAX SHOW OBJECT (HELD MANY HAVE) TO OBJECT ;(FIND PERSONBIT) = V-SHOW>
<SYNTAX SHARE OBJECT = V-SHOW>
<SYNTAX SHARE OBJECT WITH OBJECT = V-SHOW>
<SYNTAX SHOW OBJECT ;(FIND PERSONBIT) OBJECT (HELD MANY HAVE)
= V-SSHOW PRE-SSHOW>
<VERB-SYNONYM SIT ;" CROUCH HUNKER SQUAT STOOP">
<SYNTAX SIT ON OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-SIT PRE-SIT>
<SYNTAX SIT AT OBJECT (ON-GROUND IN-ROOM) = V-SIT-AT>
<SYNTAX SIT BESIDE OBJECT (FIND PERSONBIT) (ON-GROUND IN-ROOM) = V-SIT-AT>
<SYNTAX SIT DOWN ;ON OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-SIT PRE-SIT>
<SYNTAX SIT IN OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-SIT PRE-SIT>
<VERB-SYNONYM PUNCH SLAP HIT KICK ;" HURT INJURE STRIKE BITE BEAT">
<SYNTAX PUNCH OBJECT (FIND PERSONBIT) (ON-GROUND IN-ROOM) = V-SLAP>
<SYNTAX PUNCH OBJECT (ON-GROUND IN-ROOM) AROUND OBJECT (FIND ROOMSBIT)= V-SLAP>
<SYNTAX PUNCH OBJECT (ON-GROUND IN-ROOM)
WITH OBJECT (HELD CARRIED ON-GROUND IN-ROOM HAVE TAKE) = V-SLAP>
<SYNTAX SLIDE OBJECT = V-PUSH>
<SYNTAX SLIDE OBJECT (HELD MANY HAVE TAKE) UNDER OBJECT
= V-PUT-UNDER>
<SYNTAX SLIDE OBJECT (HELD MANY HAVE TAKE) IN OBJECT
= V-PUT-IN PRE-PUT-IN>
<VERB-SYNONYM SMELL SNIFF ;WHIFF>
<SYNTAX SMELL OBJECT = V-SMELL>
<VERB-SYNONYM SMILE GRIN WINK>
<SYNTAX SMILE AT OBJECT (FIND PERSONBIT) = V-SMILE>
<VERB-SYNONYM SORRY APOLOGIZE>
<SYNTAX SORRY OBJECT ;(MANY) (FIND ROOMSBIT) = V-SORRY PRE-HELLO>
<SYNTAX SORRY TO OBJECT ;(MANY) (FIND ROOMSBIT) = V-SORRY PRE-HELLO>
<SYNTAX SOUND OBJECT = V-RING>
<SYNTAX STAND = V-STAND>
<SYNTAX STAND IN OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-CLIMB-ON>
<SYNTAX STAND ON OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-CLIMB-ON>
<SYNTAX STAND UP OBJECT (FIND ROOMSBIT) = V-STAND>
<VERB-SYNONYM START ACTIVATE>
<SYNTAX START OBJECT (HELD CARRIED ON-GROUND IN-ROOM) = V-LAMP-ON>
<SYNTAX START OVER OBJECT (FIND ROOMSBIT) = V-RESTART>
<VERB-SYNONYM PARK STOP>
<SYNTAX PARK OBJECT (FIND ROOMSBIT) = V-STOP>
<SYNTAX SUPERBRIEF = V-SUPER-BRIEF>
<VERB-SYNONYM SWIM WADE BATHE>
<SYNTAX SWIM IN OBJECT = V-SWIM>
<VERB-SYNONYM TAKE CARRY STEAL SEIZE GRAB ;CONFISCATE PRY RAISE LIFT>
<SYNTAX TAKE OBJECT (FIND TAKEBIT) (ON-GROUND IN-ROOM MANY)
= V-TAKE PRE-TAKE>
<SYNTAX TAKE OBJECT (CARRIED IN-ROOM MANY) FROM OBJECT = V-TAKE PRE-TAKE>
<SYNTAX TAKE OBJECT (CARRIED IN-ROOM MANY) IN OBJECT = V-TAKE PRE-TAKE>
<SYNTAX TAKE OBJECT (CARRIED IN-ROOM MANY) OFF OBJECT = V-TAKE PRE-TAKE>
<SYNTAX TAKE OBJECT (CARRIED IN-ROOM MANY) ON OBJECT = V-TAKE PRE-TAKE>
<SYNTAX TAKE OBJECT (CARRIED IN-ROOM MANY) OUT ;OF OBJECT = V-TAKE PRE-TAKE>
<SYNTAX TAKE OBJECT (IN-ROOM CARRIED TAKE HAVE) UP ;TO OBJECT = V-HOLD-UP>
<SYNTAX TAKE OFF OBJECT (FIND WORNBIT) ;(HAVE) = V-TAKE-OFF>
<SYNTAX TAKE OUT OBJECT (CARRIED IN-ROOM MANY) = V-TAKE PRE-TAKE>
<SYNTAX TAKE UP OBJECT (FIND TAKEBIT) (ON-GROUND IN-ROOM MANY)
= V-TAKE PRE-TAKE>
<SYNTAX TELL OBJECT (FIND PERSONBIT) (ON-GROUND IN-ROOM MANY) = V-TELL PRE-ASK>
<SYNTAX TELL OBJECT (IN-ROOM) OBJECT (EVERYWHERE) = V-TELL-ABOUT PRE-TELL-ABOUT>
<SYNTAX TELL OBJECT (IN-ROOM) ABOUT OBJECT ;(MANY) (EVERYWHERE)
= V-TELL-ABOUT PRE-TELL-ABOUT>
<SYNTAX TELL ABOUT OBJECT ;(MANY) (EVERYWHERE) = V-TALK-ABOUT PRE-TALK-ABOUT>
<VERB-SYNONYM THANK THANKS>
<SYNTAX THANK = V-THANK>
<SYNTAX THANK OBJECT = V-THANK>
[
<VERB-SYNONYM THROW HURL TOSS>
<SYNTAX THROW OBJECT (HELD CARRIED HAVE TAKE)
AT OBJECT (FIND PERSONBIT) (ON-GROUND IN-ROOM)
= V-THROW-AT>
<SYNTAX THROW AWAY OBJECT (HELD CARRIED HAVE) = V-DROP PRE-PUT>
<SYNTAX THROW OBJECT (HELD CARRIED HAVE TAKE)
AGAINST OBJECT (ON-GROUND IN-ROOM)
= V-THROW-AT>
<SYNTAX THROW OBJECT (HELD MANY HAVE TAKE) IN OBJECT = V-PUT-IN PRE-PUT-IN>
<SYNTAX THROW OBJECT (HELD MANY HAVE TAKE)
ON OBJECT (HELD CARRIED ON-GROUND IN-ROOM)
= V-PUT PRE-PUT>
<SYNTAX THROW OBJECT (HELD CARRIED HAVE TAKE)
OUT ;OF OBJECT (ON-GROUND IN-ROOM)
= V-THROW-THROUGH PRE-THROW-THROUGH>
<SYNTAX THROW OBJECT (HELD ;CARRIED MANY HAVE TAKE)
OVER OBJECT (ON-GROUND IN-ROOM)
= V-PUT PRE-PUT>
<SYNTAX THROW OBJECT (HELD CARRIED HAVE TAKE)
THROUGH OBJECT (ON-GROUND IN-ROOM)
= V-THROW-THROUGH PRE-THROW-THROUGH>
<SYNTAX THROW OBJECT (HELD CARRIED HAVE TAKE)
TO OBJECT (FIND PERSONBIT) (ON-GROUND IN-ROOM)
= V-THROW-AT>
<SYNTAX THROW OBJECT (HELD CARRIED HAVE TAKE)
UP OBJECT (FIND ROOMSBIT)
= V-THROW-AT>
<SYNTAX THROW IN OBJECT = V-THROW-IN-TOWEL>
]
;<SYNTAX TRY ON OBJECT (FIND WEARBIT) (HAVE TAKE) = V-WEAR>
<VERB-SYNONYM SWITCH TURN FLIP FLICK TOGGLE ;SWING>
<SYNTAX SWITCH OBJECT = V-TURN>
<SYNTAX SWITCH AROUND OBJECT (FIND ROOMSBIT) = V-TURN>
<SYNTAX SWITCH OFF OBJECT (FIND LIGHTBIT) (TAKE) = V-LAMP-OFF>
<SYNTAX SWITCH ON OBJECT (FIND LIGHTBIT) = V-LAMP-ON>
<SYNTAX SWITCH OBJECT TO OBJECT = V-AIM ;PRE-AIM>
<SYNTAX UNDO = V-UNDO>
<SYNTAX UNLOCK OBJECT (ON-GROUND IN-ROOM) = V-UNLOCK>
<SYNTAX UNLOCK OBJECT (ON-GROUND IN-ROOM) WITH OBJECT (HAVE) = V-UNLOCK>
<SYNTAX UNSCRIPT = V-UNSCRIPT>
<SYNTAX USE OBJECT = V-USE>
<SYNTAX USE OBJECT AGAINST OBJECT = V-USE>
<SYNTAX USE OBJECT ON OBJECT = V-USE>
<SYNTAX VERBOSE = V-VERBOSE>
<VERB-SYNONYM RELEASE REVISION VERSION ;EDITION VARIATION>
<SYNTAX RELEASE = V-VERSION>
;"<SYNTAX RELEASE OBJECT = V-UNTIE>"
<VERB-SYNONYM WAIT Z STAY PAUSE>
<SYNTAX WAIT OBJECT (FIND ROOMSBIT) = V-WAIT-FOR>
<SYNTAX WAIT FOR OBJECT (FIND ROOMSBIT) (EVERYWHERE) = V-WAIT-FOR>
<SYNTAX WAIT UNTIL OBJECT = V-WAIT-UNTIL>
<VERB-SYNONYM WAKE AWAKE ROUSE SURPRISE STARTLE>
<SYNTAX WAKE OBJECT (FIND ROOMSBIT ;PERSONBIT) (ON-GROUND IN-ROOM) = V-ALARM>
<SYNTAX WAKE UP OBJECT (FIND ROOMSBIT ;PERSONBIT) (ON-GROUND IN-ROOM)
= V-ALARM>
[
<VERB-SYNONYM HEAD WALK GO COME RUN PROCEED STEER DRIVE RETURN STEP APPROACH>
<SYNTAX HEAD = V-WALK-AROUND>
<SYNTAX HEAD OBJECT = V-WALK>
<SYNTAX HEAD AFTER OBJECT (EVERYWHERE) = V-FOLLOW>
<SYNTAX HEAD AROUND OBJECT = V-WALK-AROUND>
<SYNTAX HEAD AWAY ;FROM OBJECT (FIND ROOMSBIT) (EVERYWHERE) = V-LEAVE>
<SYNTAX HEAD BEHIND OBJECT = V-THROUGH PRE-THROUGH>
<SYNTAX HEAD DOWN OBJECT (EVERYWHERE) = V-CLIMB-DOWN>
<SYNTAX HEAD IN OBJECT (EVERYWHERE) = V-THROUGH PRE-THROUGH>
<SYNTAX HEAD OFF ;TO OBJECT (EVERYWHERE) = V-WALK-TO>
<SYNTAX HEAD ON OBJECT = V-WALK-AROUND>
<SYNTAX HEAD OUT ;OF OBJECT (EVERYWHERE) = V-LEAVE>
<SYNTAX HEAD OVER OBJECT = V-LEAP>
<SYNTAX HEAD THROUGH OBJECT (EVERYWHERE) = V-THROUGH PRE-THROUGH>
<SYNTAX HEAD TO OBJECT (EVERYWHERE) = V-WALK-TO>
<SYNTAX HEAD UP OBJECT (EVERYWHERE) = V-CLIMB-UP>
<SYNTAX HEAD WITH OBJECT (EVERYWHERE) = V-FOLLOW>
<SYNTAX HEAD OBJECT OVER OBJECT = V-RUN-OVER>
<SYNTAX HEAD OBJECT THROUGH OBJECT (EVERYWHERE) = V-THROUGH PRE-THROUGH>
]
<VERB-SYNONYM YELL SCREAM SHOUT HOWL>
<SYNTAX YELL = V-YELL>
<SYNTAX YELL AT OBJECT (ON-GROUND IN-ROOM EVERYWHERE MANY) = V-TELL PRE-ASK>
<SYNTAX YELL IN OBJECT = V-YELL>
<SYNTAX YELL TO OBJECT (ON-GROUND IN-ROOM EVERYWHERE MANY) = V-TELL PRE-ASK>
<VERB-SYNONYM YES Y OK OKAY SURE YUP YEP YEAH AYE INDEED>
<SYNTAX YES = V-YES>

73
things.zabstr Normal file
View File

@ -0,0 +1,73 @@
<DEFINE-ROUTINE RANDOM-PSEUDO>
<OBJECT SCREWDRIVER (LOC PLAYER) (DESC "flathead screwdriver") (SYNONYM
SCREWDRIV TOOL TOOLS) (ADJECTIVE FLATHEAD PROPER) (FLAGS TAKEBIT TOOLBIT) (SIZE
3)>
<OBJECT TOOTHBRUSH (LOC PLAYER) (OWNER PLAYER) (DESC "toothbrush") (ADJECTIVE
TOOTH MY PROPER) (SYNONYM TOOTHBRUSH BRUSH TOOL TOOLS) (FLAGS TAKEBIT
TRYTAKEBIT TOOLBIT) (SIZE 3) (ACTION TOOTHBRUSH-F)>
<DEFINE-ROUTINE TOOTHBRUSH-F>
<OBJECT GOWN (LOC PLAYER) (OWNER PLAYER) (DESC "your gown") (ADJECTIVE MY
DRESSING TATTY FADED BATTERED) (SYNONYM GOWN POCKET ROBE LOOP) (FLAGS WORNBIT
WEARBIT TAKEBIT CONTBIT NARTICLEBIT SEARCHBIT) (SIZE 15) (CAPACITY 14) (ACTION
GOWN-F)>
<DEFINE-ROUTINE GOWN-F>
<OBJECT SLEEVES (LOC GLOBAL-OBJECTS) (DESC "sleeve") (SYNONYM SLEEVE) (ACTION
SLEEVES-F)>
<DEFINE-ROUTINE SLEEVES-F>
<OBJECT THING (LOC GOWN) (DESC
"thing your aunt gave you which you don't know what it is") (ADJECTIVE AUNT\'S)
(SYNONYM THING GIFT) (FLAGS TAKEBIT CONTBIT SEARCHBIT OPENBIT) (SIZE 6) (
CAPACITY 90) (ACTION THING-F)>
<DEFINE-ROUTINE THING-F>
<CONSTANT GET-RID " you've been trying to get rid of it for years.">
<DEFINE-ROUTINE I-THING>
<OBJECT GUIDE (LOC SATCHEL) (DESC "The Hitchhiker's Guide") (DESCFCN
GUIDE-DESCFCN) (ADJECTIVE HITCHHIKER\'S SUB-ETHA) (SYNONYM COPY GUIDE) (SIZE 10
) (FLAGS NARTICLEBIT TAKEBIT READBIT) (TEXT
"Try: CONSULT GUIDE ABOUT (something).") (ACTION GUIDE-F)>
<DEFINE-ROUTINE GUIDE-DESCFCN>
<DEFINE-ROUTINE GUIDE-F>
<CONSTANT GUIDE-NAME "The Hitchhiker's Guide to the Galaxy">
<CONSTANT ALREADY-KNOW-THAT
" But then again you must already know that, since you bought one.">
<CONSTANT WITH-TOWEL "With a towel wrapped around your head!?!">
<CONSTANT AGENCY "Galactic Security Agency">
<CONSTANT GPP "Genuine People Personalities">
<OBJECT BABEL-FISH (LOC PLAYER) (DESC "babel fish") (ADJECTIVE BABEL) (SYNONYM
FISH) (FLAGS TRYTAKEBIT WORNBIT) (ACTION BABEL-FISH-F)>
<DEFINE-ROUTINE BABEL-FISH-F>
<OBJECT TOWEL (LOC FORD) (DESC "towel") (SYNONYM TOWEL TOWELS) (FLAGS TAKEBIT
TRYTAKEBIT) (SIZE 7) (CAPACITY 40) (ACTION TOWEL-F)>
<DEFINE-ROUTINE TOWEL-F>
<OBJECT SATCHEL (LOC FORD) (OWNER FORD) (DESC "satchel") (DESCFCN
SATCHEL-DESCFCN) (ADJECTIVE BATTERED LEATHER BULKY) (SYNONYM SATCHEL) (FLAGS
CONTBIT SEARCHBIT TAKEBIT TRYTAKEBIT) (CAPACITY 30) (SIZE 20) (ACTION SATCHEL-F
)>
<DEFINE-ROUTINE SATCHEL-DESCFCN>
<GLOBAL ITEM-ON-SATCHEL:OBJECT 0>
<DEFINE-ROUTINE ITEM-ON-SATCHEL-DESCRIPTION>
<DEFINE-ROUTINE SATCHEL-F>
<DEFINE-ROUTINE PRIVATE>
<ROOM GARGLE-BLASTER (LOC GLOBAL-OBJECTS) (DESC "Pan-Galactic Gargle Blaster")
(ADJECTIVE PAN-GALACTIC GARGLE) (SYNONYM BLASTER)>
<ROOM SCC (LOC GLOBAL-OBJECTS) (DESC "Sirius Cybernetics Corporation") (
ADJECTIVE SIRIUS CYBERNETICS) (SYNONYM CORPORATION SCC)>
<OBJECT HEART-OF-GOLD (LOC LOCAL-GLOBALS) (DESC "the Heart of Gold") (ADJECTIVE
SPACE INCREDIBLE NEW) (SYNONYM HEART GOLD SHIP SPACESHIP) (FLAGS NARTICLEBIT)>
<OBJECT GAME (LOC GLOBAL-OBJECTS) (DESC "MILLIWAYS") (SYNONYM GAME MILLIWAYS) (
FLAGS NARTICLEBIT) (ACTION GAME-F)>
<DEFINE-ROUTINE GAME-F>
<OBJECT DINNER (LOC PUB) (OWNER PLAYER) (DESC "your dinner") (ADJECTIVE COVERED
MY) (SYNONYM DINNER FOOD DISHES PLATE) (FLAGS NARTICLEBIT TRYTAKEBIT) (SIZE 10)
(DESCFCN DINNER-D) (ACTION DINNER-F)>
<DEFINE-ROUTINE DINNER-D>
<DEFINE-ROUTINE DINNER-F>
<OBJECT RED-FROB (LOC RAMP) (DESC "red frob") (ADJECTIVE RED) (SYNONYM FROB
FROBS) (FLAGS TAKEBIT) (SIZE 1)>
<OBJECT GREEN-FROB (LOC RAMP) (DESC "green frob") (ADJECTIVE GREEN) (SYNONYM
FROB FROBS) (FLAGS TAKEBIT) (SIZE 1)>
<OBJECT BIG-BLUE-FROB (LOC THING) (DESC "big blue frob") (ADJECTIVE BIG BLUE) (
SYNONYM FROB FROBS) (FLAGS TAKEBIT) (SIZE 1)>
<OBJECT SMALL-BLUE-FROB (LOC THING) (DESC "small blue frob") (ADJECTIVE SMALL
BLUE) (SYNONYM FROB FROBS) (FLAGS TAKEBIT) (SIZE 1)>

254
things.zap Normal file
View File

@ -0,0 +1,254 @@
.FUNCT RANDOM-PSEUDO:ANY:0:0
EQUAL? PRSA,V?TELL-ABOUT,V?LOOK-UNDER /FALSE
EQUAL? PRSA,V?LOOK-BEHIND,V?ASK-CONTEXT-ABOUT,V?ASK-ABOUT /FALSE
EQUAL? PRSA,V?SEARCH,V?LOOK-INSIDE,V?EXAMINE \?CCL7
ICALL1 NOTHING-SPECIAL
RTRUE
?CCL7: CALL1 WONT-HELP
RSTACK
.FUNCT TOOTHBRUSH-F:ANY:0:0
EQUAL? PRSA,V?TAKE \FALSE
FSET? TOOTHBRUSH,TOUCHBIT /FALSE
MOVE TOOTHBRUSH,PLAYER
FSET TOOTHBRUSH,TOUCHBIT
FCLEAR TOOTHBRUSH,TRYTAKEBIT
PRINTI "As you pick up the "
PRINTD TOOTHBRUSH
PRINTR " a tree outside the window collapses. There is no causal relationship between these two events."
.FUNCT GOWN-F:ANY:0:0
EQUAL? PRSA,V?CLOSE,V?OPEN \?CCL3
FSET? GOWN,WORNBIT /?CCL3
PRINTR "It's hard to open or close the pocket unless you're wearing the gown."
?CCL3: EQUAL? PRSA,V?EXAMINE \FALSE
PRINTI "The dressing gown is faded and battered, and is clearly a garment which has seen better decades. It has a pocket which is "
FSET? GOWN,OPENBIT \?CCL10
PRINTI "open"
JUMP ?CND8
?CCL10: PRINTI "closed"
?CND8: PRINTR ", and a small loop at the back of the collar."
.FUNCT SLEEVES-F:ANY:0:0
CALL2 VISIBLE?,GOWN
ZERO? STACK \?CCL3
CALL2 NOT-HERE,SLEEVES
RSTACK
?CCL3: EQUAL? PRSA,V?TAKE \FALSE
ICALL PERFORM,PRSA,GOWN
RTRUE
.FUNCT THING-F:ANY:0:0
EQUAL? PRSA,V?EXAMINE \?CCL3
PRINTI "Apart from a label on the bottom saying ""Made in Ibiza"" it furnishes you with no clue as to its purpose, if indeed it has one. You are surprised to see it because you thought you'd thrown it away. Like most gifts from your aunt,"
PRINT GET-RID
CRLF
RTRUE
?CCL3: EQUAL? PRSA,V?DROP \?CCL5
MOVE THING,HERE
PRINTR "It falls to the ground with a light ""thunk."" It doesn't do anything else at all."
?CCL5: EQUAL? PRSA,V?CLOSE \FALSE
PRINTR "Come to think of it, you vaguely remember an instruction booklet with directions for that. You never read it and lost it months ago."
.FUNCT I-THING:ANY:0:0
RANDOM 4
ADD 4,STACK
ICALL QUEUE,I-THING,STACK
CALL2 VISIBLE?,THING
ZERO? STACK \FALSE
CALL2 HELD?,THING
ZERO? STACK \FALSE
RANDOM 100
LESS? 40,STACK /?CCL7
MOVE THING,HERE
RFALSE
?CCL7: FSET? GOWN,WORNBIT \?CCL9
FSET? GOWN,OPENBIT \?CCL9
RANDOM 100
LESS? 65,STACK /?CCL9
MOVE THING,GOWN
RFALSE
?CCL9: MOVE THING,PLAYER
RFALSE
.FUNCT GUIDE-DESCFCN:ANY:0:1,X
PRINTI "There is a copy of "
PRINT GUIDE-NAME
PRINTR " here."
.FUNCT GUIDE-F:ANY:0:0
EQUAL? PRSA,V?EXAMINE \?CCL3
PRINTR "The Guide is a Mark II model. Its only resemblance to the Mark IV pictured in the brochure in your game package is the large, friendly ""Don't Panic!"" on its cover.
The Guide is a Sub-Etha Relay. You can use it to tap information from a huge and distant data bank by consulting the Guide about some item or subject."
?CCL3: EQUAL? PRSA,V?ASK-ABOUT \FALSE
EQUAL? PRSO,GUIDE \FALSE
FSET? TOWEL,WORNBIT \?CND8
PRINT WITH-TOWEL
CRLF
RTRUE
?CND8: PRINTI "The Guide checks through its Sub-Etha-Net database and eventually comes up with the following entry:"
CRLF
CRLF
EQUAL? PRSI,GUIDE \?CCL12
PRINTD GUIDE
PRINTI " is a wholly remarkable product."
PRINT ALREADY-KNOW-THAT
CRLF
RTRUE
?CCL12: EQUAL? PRSI,HEART-OF-GOLD \?CCL14
PRINTI "There is absolutely no such spaceship as "
PRINTD HEART-OF-GOLD
PRINTI " and anything you've ever read in this spot to the contrary was just a prank.
-- "
PRINT AGENCY
CRLF
RTRUE
?CCL14: EQUAL? PRSI,SCC \?CCL16
PRINTI "The "
PRINT SCC
PRINTR " incompetently produces a wide range of inefficient and unreliable high-tech machinery. However, thanks to SCC's ruthless marketing division, this junk accounts for over 95% of the high-tech machinery sold in the Galaxy. (SCC's marketing division will be the first against the wall when the revolution comes.)"
?CCL16: EQUAL? PRSI,MARVIN \?CCL18
PRINT GPP
PRINTI " are a misguided attempt by the "
PRINT SCC
PRINTR " to make their machines behave more like people. Among the more miserable failures: paranoid-depressive robots and over-protective computers."
?CCL18: EQUAL? PRSI,RAMP \?CCL20
PRINTR "According to legend, Magrathea was a planet that amassed incredible wealth by manufacturing other planets. The legends also mention it as the setting of the very eagerly awaited second Infocom Hitchhiker's game."
?CCL20: EQUAL? PRSI,ZAPHOD \?CCL22
PRINTD ZAPHOD
PRINTI " is the current"
PRINT PRESIDENT
PRINTR "."
?CCL22: EQUAL? PRSI,BABEL-FISH \?CCL25
PRINTI "A mind-bogglingly improbable creature. A "
PRINTD BABEL-FISH
PRINTR ", when placed in one's ear, allows one to understand any language."
?CCL25: EQUAL? PRSI,TOWEL \?CCL27
PRINTR "A towel is the most useful thing (besides the Guide) a Galactic hitchhiker can have. Its uses include travel, combat, communications, protection from the elements, hand-drying and reassurance. Towels have great symbolic value, with many associated points of honour. Never mock the towel of another, even if it has little pink and blue flowers on it. Never do something to somebody else's towel that you would not want them to do to yours. And, if you borrow the towel of another, you MUST return it before leaving their world."
?CCL27: EQUAL? PRSI,GARGLE-BLASTER \?CCL29
PRINTR "The best drink in existence; somewhat like having your brains smashed out by a slice of lemon wrapped around a large gold brick."
?CCL29: EQUAL? PRSI,THIRD-PLANET \?CCL31
PRINTR "Mostly harmless."
?CCL31: FSET? PRSI,TOOLBIT \?CCL33
PRINTR "The editor responsible for entries under this heading has been out to lunch for a couple of years but is expected back soon, at which point there will be rapid updates. Until then, don't panic, unless your situation is really a life or death one, in which case, sure, go ahead, panic."
?CCL33: PRINTR "That is one of the Great Unanswered Questions. For a list of the others, consult the Guide."
.FUNCT BABEL-FISH-F:ANY:0:0
EQUAL? PRSA,V?REMOVE,V?TAKE \FALSE
PRINTI "That would be foolish. Having a "
PRINTD BABEL-FISH
PRINTR " in your ear is terribly useful."
.FUNCT TOWEL-F:ANY:0:0
EQUAL? PRSA,V?MOVE,V?TAKE \?CCL3
EQUAL? PRSO,TOWEL \?CCL3
FSET? TOWEL,SURFACEBIT \?CCL3
FCLEAR TOWEL,TRYTAKEBIT
FCLEAR TOWEL,SURFACEBIT
ICALL ROB,TOWEL,HERE
FCLEAR TOWEL,CONTBIT
FCLEAR TOWEL,OPENBIT
FCLEAR TOWEL,NDESCBIT
EQUAL? PRSA,V?MOVE \FALSE
PRINTR "Okay, it's no longer covering the drain."
?CCL3: EQUAL? PRSA,V?PUT \?CCL11
EQUAL? PRSI,EYES,HEAD \?CCL11
FSET? TOWEL,WORNBIT \?CCL16
PRINTR "It already is."
?CCL16: PRINTR "There's no need for that. It's not as if there's a Bugblatter Beast around, or something."
?CCL11: EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "It's covered with little pink and blue flowers."
.FUNCT SATCHEL-DESCFCN:ANY:0:1,X
PRINTI "There is a satchel here."
ICALL1 ITEM-ON-SATCHEL-DESCRIPTION
CRLF
RTRUE
.FUNCT ITEM-ON-SATCHEL-DESCRIPTION:ANY:0:0
ZERO? ITEM-ON-SATCHEL /FALSE
PRINTI " Sitting on top of it is "
ICALL2 PRINTA,ITEM-ON-SATCHEL
PRINTC 46
RTRUE
.FUNCT SATCHEL-F:ANY:0:0
EQUAL? PRSA,V?OPEN \?CCL3
CALL2 PRIVATE,STR?168
RSTACK
?CCL3: EQUAL? PRSA,V?PUT \?CCL6
EQUAL? SATCHEL,PRSI \?CCL6
CALL2 HELD?,SATCHEL
ZERO? STACK /?CCL11
PRINTR "Put down the satchel first."
?CCL11: ZERO? ITEM-ON-SATCHEL /?CCL13
PRINTI "But"
ICALL2 PRINT-THE,ITEM-ON-SATCHEL
PRINTR " is already on the satchel."
?CCL13: SET 'ITEM-ON-SATCHEL,PRSO
MOVE PRSO,HERE
FSET PRSO,NDESCBIT
FSET PRSO,TRYTAKEBIT
PRINTI "Okay,"
ICALL2 PRINT-THE,PRSO
PRINTR " is now sitting on the satchel."
?CCL6: EQUAL? PRSA,V?EXAMINE \?CCL15
PRINTI "The satchel, which is "
FSET? SATCHEL,OPENBIT \?CCL18
PRINTI "open"
JUMP ?CND16
?CCL18: PRINTI "closed"
?CND16: PRINTI ", is fairly bulky."
ICALL1 ITEM-ON-SATCHEL-DESCRIPTION
CRLF
RTRUE
?CCL15: EQUAL? PRSA,V?TAKE \FALSE
IN? SATCHEL,FORD \FALSE
PRINTI "Ford says, ""Hey, Arthur, keep "
PRINTD HANDS
PRINTR "s off my satchel!"""
.FUNCT PRIVATE:ANY:1:1,STRING
PRINTI "You can't. It's not yours. It's "
PRINT STRING
PRINTR "'s and it's private."
.FUNCT GAME-F:ANY:0:0
EQUAL? PRSA,V?THROUGH,V?READ,V?PLAY /?CCL3
EQUAL? PRSA,V?LAMP-ON,V?FIND,V?EXAMINE \FALSE
?CCL3: SET 'CLOCK-WAIT,TRUE-VALUE
PRINTR "[You're playing it now!]"
.FUNCT DINNER-D:ANY:1:1,ARG,L
LOC DINNER >L
PRINTI "An appetizing aroma wafts from an array of covered dishes"
PRINTR "."
.FUNCT DINNER-F:ANY:0:0,I,L
LOC DINNER >L
EQUAL? PRSA,V?EAT \?CCL3
PRINTR "You take a bite and find it delicious."
?CCL3: EQUAL? PRSA,V?EXAMINE \FALSE
PRINTI "A lovely assortment of fish, fowl, greens, and sweets fills the "
PRINTR "plate."
.ENDI

542
things.zil Normal file
View File

@ -0,0 +1,542 @@
"THINGS for MILLIWAYS
Copyright (C) 1988 Infocom, Inc. All rights reserved."
<ROUTINE RANDOM-PSEUDO ()
<COND (<VERB? ASK-ABOUT ASK-CONTEXT-ABOUT LOOK-BEHIND LOOK-UNDER TELL-ABOUT>
<RFALSE>)
(<VERB? EXAMINE LOOK-INSIDE SEARCH>
<NOTHING-SPECIAL>
<RTRUE>)
(T
<WONT-HELP>
;<TELL "You can't do anything useful with that." CR>)>>
<OBJECT SCREWDRIVER
(LOC PLAYER)
(DESC "flathead screwdriver")
(SYNONYM SCREWDRIV TOOL TOOLS)
(ADJECTIVE FLATHEAD PROPER)
(FLAGS TAKEBIT ;TRYTAKEBIT TOOLBIT)
(SIZE 3)
;(GENERIC TWEEZERS)>
<OBJECT TOOTHBRUSH
(LOC PLAYER)
(OWNER PLAYER)
(DESC "toothbrush")
(ADJECTIVE TOOTH MY PROPER)
(SYNONYM TOOTHBRUSH BRUSH TOOL TOOLS)
(FLAGS TAKEBIT TRYTAKEBIT TOOLBIT)
(SIZE 3)
(ACTION TOOTHBRUSH-F)>
<ROUTINE TOOTHBRUSH-F ()
<COND (<AND <VERB? TAKE>
<NOT <FSET? ,TOOTHBRUSH ,TOUCHBIT>>>
<MOVE ,TOOTHBRUSH ,PLAYER>
<FSET ,TOOTHBRUSH ,TOUCHBIT>
<FCLEAR ,TOOTHBRUSH ,TRYTAKEBIT>
<TELL
"As you pick up the " D ,TOOTHBRUSH " a tree outside the window collapses.
There is no causal relationship between these two events.">
;<COND (<FSET? ,PHONE ,TOUCHBIT>
<TWO-TREES>)>
<CRLF>)>>
<OBJECT GOWN
(LOC PLAYER)
(OWNER PLAYER)
(DESC "your gown")
;(LDESC "Your gown is here.")
(ADJECTIVE MY ;YOUR DRESSING TATTY FADED BATTERED)
(SYNONYM GOWN POCKET ROBE LOOP)
(FLAGS WORNBIT WEARBIT TAKEBIT CONTBIT ;NDESCBIT NARTICLEBIT SEARCHBIT)
(SIZE 15)
(CAPACITY 14)
(ACTION GOWN-F)>
<ROUTINE GOWN-F ()
<COND (<AND <VERB? OPEN CLOSE>
<NOT <FSET? ,GOWN ,WORNBIT>>>
<TELL
"It's hard to open or close the pocket unless you're wearing the gown." CR>)
(<VERB? EXAMINE>
<TELL "The dressing gown is faded and battered, and is
clearly a garment which has seen better decades. It has a pocket which is ">
<COND (<FSET? ,GOWN ,OPENBIT>
<TELL "open">)
(T
<TELL "closed">)>
<COND ;(,GOWN-HUNG
<TELL ". It is hanging from a " D ,HOOK ".">)
(T
<TELL ", and a small loop at the back of the collar.">)>
;<COND (,SLEEVE-TIED
<TELL " The sleeves are tied closed.">)>
<CRLF>)
;(<AND <VERB? TAKE>
<EQUAL? ,GOWN ,PRSO>
,HEADACHE>
<FCLEAR ,GOWN ,TRYTAKEBIT>
<FCLEAR ,GOWN ,NDESCBIT>
<MOVE ,GOWN ,PLAYER>
<TELL
"Luckily, this is large enough for you to get hold of. You notice something
in the pocket." CR>)
;(<AND <VERB? WEAR>
,SLEEVE-TIED>
<TELL "You'll have to untie the sleeve first." CR>)
;(<VERB? TIE UNTIE>
<PERFORM ,PRSA ,SLEEVES>
<RTRUE>)>>
<OBJECT SLEEVES
(LOC GLOBAL-OBJECTS)
(DESC "sleeve")
(SYNONYM SLEEVE)
(ACTION SLEEVES-F)>
<ROUTINE SLEEVES-F ()
<COND (<NOT <VISIBLE? ,GOWN>>
<NOT-HERE ,SLEEVES>)
(<VERB? ;WEAR TAKE>
<PERFORM ,PRSA ,GOWN>
<RTRUE>)
;(<VERB? TIE CLOSE>
<SETG PRSO ,GOWN>
<COND (<IDROP>
<RTRUE>)
(,SLEEVE-TIED
<TELL "It is." CR>)
(T
<SETG SLEEVE-TIED T>
<TELL "The sleeves are now tied closed." CR>)>)
;(<VERB? UNTIE OPEN>
<COND (,SLEEVE-TIED
<SETG SLEEVE-TIED <>>
<TELL "Untied." CR>)
(T
<TELL "It isn't tied!" CR>)>)>>
<OBJECT THING
(LOC GOWN)
(DESC "thing your aunt gave you which you don't know what it is")
(ADJECTIVE AUNT\'S)
(SYNONYM THING GIFT)
(FLAGS TAKEBIT CONTBIT SEARCHBIT OPENBIT)
(SIZE 6)
(CAPACITY 90)
(ACTION THING-F)>
<ROUTINE THING-F ()
<COND (<VERB? EXAMINE>
<TELL
"Apart from a label on the bottom saying \"Made in Ibiza\" it furnishes you
with no clue as to its purpose, if indeed it has one. You are surprised to see
it because you thought you'd thrown it away. Like most gifts from your aunt,"
,GET-RID CR>)
(<AND <VERB? DROP>
;<NOT <EQUAL? ,HERE ,MAZE ,ACCESS-SPACE>>>
<MOVE ,THING ,HERE>
<TELL
"It falls to the ground with a light \"thunk.\" It doesn't do anything
else at all." CR>)
(<VERB? CLOSE>
<TELL
"Come to think of it, you vaguely remember an instruction booklet with
directions for that. You never read it and lost it months ago." CR>)>>
<CONSTANT GET-RID " you've been trying to get rid of it for years.">
<ROUTINE I-THING ()
<QUEUE I-THING <+ 4 <RANDOM 4>>>
<COND (<OR ;<NOT <EQUAL? ,IDENTITY-FLAG ,ARTHUR>>
;<AND <EQUAL? ,HERE ,ENGINE-ROOM>
<L? ,LOOK-COUNTER 3>>
;<EQUAL? ,HERE ,DARK ,ACCESS-SPACE ,MAZE>
<VISIBLE? ,THING>
<HELD? ,THING>
;<IN? ,FLEET ,HERE>>
<RFALSE>)>
<COND (<PROB 40>
<MOVE ,THING ,HERE>)
(<AND <FSET? ,GOWN ,WORNBIT>
<FSET? ,GOWN ,OPENBIT>
<PROB 65>>
<MOVE ,THING ,GOWN>)
(T
<MOVE ,THING ,PLAYER>)>
<RFALSE>>
<OBJECT GUIDE
(LOC SATCHEL)
(DESC "The Hitchhiker's Guide")
(DESCFCN GUIDE-DESCFCN)
(ADJECTIVE HITCHHIKER\'S SUB-ETHA)
(SYNONYM COPY GUIDE)
(SIZE 10)
(FLAGS NARTICLEBIT TAKEBIT READBIT)
(TEXT "Try: CONSULT GUIDE ABOUT (something).")
(ACTION GUIDE-F)>
<ROUTINE GUIDE-DESCFCN ("OPTIONAL" X)
<TELL "There is a copy of " ,GUIDE-NAME " here." CR>>
<ROUTINE GUIDE-F ()
<COND (<VERB? EXAMINE>
<TELL
"The Guide is a Mark II model. Its only resemblance to the Mark IV pictured
in the brochure in your game package is the large, friendly \"Don't Panic!\"
on its cover.|
|
The Guide is a Sub-Etha Relay. You can use it to tap information from a huge
and distant data bank by consulting the Guide about some item or subject." CR>)
(<AND <VERB? ASK-ABOUT>
<DOBJ? GUIDE>>
<COND (<FSET? ,TOWEL ,WORNBIT>
<TELL ,WITH-TOWEL CR>
<RTRUE>)
;(<IOBJ? ACCESS-SPACE>
<TELL
"Suddenly, agents of the " ,AGENCY " pop in using Sub-Etha belts, rough you up
a bit, tell you there's no such thing as the " ,AGENCY " and never to consult "
D ,GUIDE " about the " ,AGENCY " again; then they leave." CR>
<RTRUE>)>
<TELL
"The Guide checks through its Sub-Etha-Net database and eventually comes
up with the following entry:" CR CR>
<COND (<IOBJ? GUIDE>
<TELL
D ,GUIDE " is a wholly remarkable product." ,ALREADY-KNOW-THAT CR>)
(<IOBJ? HEART-OF-GOLD>
<TELL
"There is absolutely no such spaceship as " D ,HEART-OF-GOLD " and anything
you've ever read in this spot to the contrary was just a prank.|
-- " ,AGENCY CR>)
(<IOBJ? SCC ;GALLEY>
<TELL
"The " ,SCC " incompetently produces a wide range of inefficient and unreliable
high-tech machinery. However, thanks to SCC's ruthless marketing division, this
junk accounts for over 95% of the high-tech machinery sold in the Galaxy.
(SCC's marketing division will be the first against the wall when the
revolution comes.)" CR>)
(<IOBJ? MARVIN>
<TELL
,GPP " are a misguided attempt by the " ,SCC " to make their machines behave
more like people. Among the more miserable failures: paranoid-depressive
robots and over-protective computers." CR>)
;(<IOBJ? DARK>
<TELL
"A must for the serious hitchhiker, peril-sensitive sunglasses darken at the
first hint of danger, thus shielding the wearer from seeing anything alarming.
Recommended brand: Joo Janta." CR>)
(<IOBJ? RAMP>
<TELL
"According to legend, Magrathea was a planet that amassed incredible wealth by
manufacturing other planets. The legends also mention it as the setting
of the very eagerly awaited second Infocom Hitchhiker's game." CR>)
(<OR <IOBJ? ZAPHOD>
;<AND <IOBJ? ME>
<EQUAL? ,IDENTITY-FLAG ,ZAPHOD>>>
<TELL D ,ZAPHOD " is the current" ,PRESIDENT "." CR>)
(<IOBJ? BABEL-FISH>
<TELL
"A mind-bogglingly improbable creature. A " D ,BABEL-FISH ", when placed in
one's ear, allows one to understand any language." CR>)
(<IOBJ? TOWEL>
<TELL
"A towel is the most useful thing (besides the Guide) a Galactic hitchhiker
can have. Its uses include travel, combat, communications, protection from the
elements, hand-drying and reassurance. Towels have great symbolic value, with
many associated points of honour. Never mock the towel of another, even if it
has little pink and blue flowers on it. Never do something to somebody else's
towel that you would not want them to do to yours. And, if you borrow the towel
of another, you MUST return it before leaving their world." CR>)
(<IOBJ? GARGLE-BLASTER>
<TELL
"The best drink in existence; somewhat like having your brains smashed out by
a slice of lemon wrapped around a large gold brick." CR>)
(<IOBJ? THIRD-PLANET ;MAZE>
<TELL "Mostly harmless." CR>)
(<FSET? ,PRSI ,TOOLBIT>
<TELL
"The editor responsible for entries under this heading has been out to lunch
for a couple of years but is expected back soon, at which point there will be
rapid updates. Until then, don't panic, unless your situation is really a life
or death one, in which case, sure, go ahead, panic." CR>)
;(<IOBJ? TEA>
<TELL
"Sorry, that portion of our Sub-Etha database was accidentally deleted last
night during a wild office party. The lost data will be restored as soon as
we find someone who knows where the back-up tapes are kept, if indeed any
are kept at all." CR>)
(T
<TELL
"That is one of the Great Unanswered Questions. For a list of the others,
consult the Guide." CR>)>)>>
<CONSTANT GUIDE-NAME "The Hitchhiker's Guide to the Galaxy">
<CONSTANT ALREADY-KNOW-THAT
" But then again you must already know that, since you bought one.">
<CONSTANT WITH-TOWEL "With a towel wrapped around your head!?!">
<CONSTANT AGENCY "Galactic Security Agency">
<CONSTANT GPP "Genuine People Personalities">
;<CONSTANT SPACE-TEXT
"If you hyperventilate and then empty your lungs, you will last about thirty
seconds in the vacuum of space. However, because space is so vastly hugely
mind-bogglingly big, getting picked up by another ship within those thirty
seconds is almost infinitely improbable.">
<OBJECT BABEL-FISH
(LOC PLAYER)
(DESC "babel fish")
(ADJECTIVE BABEL)
(SYNONYM FISH)
(FLAGS TRYTAKEBIT WORNBIT)
(ACTION BABEL-FISH-F)>
<ROUTINE BABEL-FISH-F ()
<COND (<VERB? TAKE REMOVE>
<TELL
"That would be foolish. Having a " D ,BABEL-FISH " in your ear is terribly
useful." CR>)>>
<OBJECT TOWEL
(LOC FORD)
(DESC "towel")
(SYNONYM TOWEL TOWELS)
(FLAGS TAKEBIT TRYTAKEBIT)
(SIZE 7)
(CAPACITY 40)
(ACTION TOWEL-F)>
<ROUTINE TOWEL-F ()
<COND (<AND <VERB? TAKE MOVE>
<DOBJ? TOWEL>
<FSET? ,TOWEL ,SURFACEBIT>>
<FCLEAR ,TOWEL ,TRYTAKEBIT>
<FCLEAR ,TOWEL ,SURFACEBIT>
<ROB ,TOWEL ,HERE>
<FCLEAR ,TOWEL ,CONTBIT>
<FCLEAR ,TOWEL ,OPENBIT>
<FCLEAR ,TOWEL ,NDESCBIT>
<COND (<VERB? MOVE>
<TELL "Okay, it's no longer covering the drain." CR>)
(T
<RFALSE>)>)
(<AND <VERB? PUT ;TIE>
<IOBJ? HEAD EYES>>
<COND (<FSET? ,TOWEL ,WORNBIT>
<TELL "It already is." CR>)
(T
<TELL
"There's no need for that. It's not as if there's a Bugblatter Beast around,
or something." CR>)>)
(<VERB? EXAMINE>
<COND ;(<FSET? ,TOWEL ,SURFACEBIT>
<PERFORM ,V?EXAMINE ,DRAIN>
<COND (<FIRST? ,TOWEL>
<RFALSE>)>
<RTRUE>)
(T
<TELL
"It's covered with little pink and blue flowers." CR>)>)
;(<AND <VERB? LIE-DOWN>
<FSET? ,TOWEL ,SURFACEBIT>>
<PERFORM ,V?STAND-BEFORE ,HOOK>
<RTRUE>)>>
<OBJECT SATCHEL
(LOC FORD)
(OWNER FORD)
(DESC "satchel")
(DESCFCN SATCHEL-DESCFCN)
(ADJECTIVE BATTERED LEATHER BULKY)
(SYNONYM SATCHEL)
(FLAGS CONTBIT SEARCHBIT TAKEBIT TRYTAKEBIT)
(CAPACITY 30)
(SIZE 20)
(ACTION SATCHEL-F)>
<ROUTINE SATCHEL-DESCFCN ("OPTIONAL" X)
<TELL "There is a satchel here.">
<ITEM-ON-SATCHEL-DESCRIPTION>
<CRLF>
<RTRUE>>
<GLOBAL ITEM-ON-SATCHEL:OBJECT 0>
<ROUTINE ITEM-ON-SATCHEL-DESCRIPTION ()
<COND (,ITEM-ON-SATCHEL
<TELL " Sitting on top of it is ">
<TELL a ,ITEM-ON-SATCHEL>
<TELL ".">)>>
<ROUTINE SATCHEL-F ()
<COND (<AND <VERB? OPEN>
;<NOT <EQUAL? ,IDENTITY-FLAG ,FORD>>>
<PRIVATE "Ford">)
(<AND <VERB? PUT>
<EQUAL? ,SATCHEL ,PRSI>>
<COND (<HELD? ,SATCHEL>
<TELL "Put down the satchel first." CR>)
(,ITEM-ON-SATCHEL
<TELL "But">
<TELL the ,ITEM-ON-SATCHEL>
<TELL " is already on the satchel." CR>)
(T
<SETG ITEM-ON-SATCHEL ,PRSO>
<MOVE ,PRSO ,HERE>
<FSET ,PRSO ,NDESCBIT>
<FSET ,PRSO ,TRYTAKEBIT>
<TELL "Okay,">
<TELL the ,PRSO>
<TELL " is now sitting on the satchel." CR>)>)
(<VERB? EXAMINE>
<TELL "The satchel, which is ">
<COND (<FSET? ,SATCHEL ,OPENBIT>
<TELL "open">)
(T
<TELL "closed">)>
<TELL ", is fairly bulky.">
<ITEM-ON-SATCHEL-DESCRIPTION>
<CRLF>)
(<AND <VERB? TAKE>
<IN? ,SATCHEL ,FORD>>
<TELL
"Ford says, \"Hey, Arthur, keep " D ,HANDS "s off my satchel!\"" CR>)>>
<ROUTINE PRIVATE (STRING)
<TELL
"You can't. It's not yours. It's " .STRING "'s and it's private." CR>>
<ROOM GARGLE-BLASTER
(LOC GLOBAL-OBJECTS)
(DESC "Pan-Galactic Gargle Blaster")
(ADJECTIVE PAN-GALACTIC GARGLE)
(SYNONYM BLASTER)>
<ROOM SCC
(LOC GLOBAL-OBJECTS)
(DESC "Sirius Cybernetics Corporation")
(ADJECTIVE SIRIUS CYBERNETICS)
(SYNONYM CORPORATION SCC)>
<OBJECT HEART-OF-GOLD
(LOC LOCAL-GLOBALS)
(DESC "the Heart of Gold")
(ADJECTIVE SPACE INCREDIBLE NEW)
(SYNONYM HEART GOLD SHIP SPACESHIP)
(FLAGS NARTICLEBIT)
;(ACTION HEART-OF-GOLD-F)>
<OBJECT GAME
(LOC GLOBAL-OBJECTS)
(DESC "MILLIWAYS")
(SYNONYM GAME MILLIWAYS)
(FLAGS NARTICLEBIT)
(ACTION GAME-F)>
<ROUTINE GAME-F ()
<COND (<VERB? EXAMINE FIND LAMP-ON PLAY READ THROUGH>
<SETG CLOCK-WAIT T>
<TELL "[You're playing it now!]" CR>)>>
<OBJECT DINNER
(LOC PUB)
(OWNER PLAYER)
(DESC "your dinner")
(ADJECTIVE COVERED MY)
(SYNONYM DINNER FOOD ;ARRAY DISHES PLATE ;FISH)
(FLAGS NARTICLEBIT TRYTAKEBIT)
(SIZE 10)
(DESCFCN DINNER-D)
(ACTION DINNER-F)>
<ROUTINE DINNER-D (ARG "AUX" (L <LOC ,DINNER>))
<COND (T ;<EQUAL? .L ,KITCHEN ,SIDEBOARD>
<TELL "An appetizing aroma wafts from an array of covered dishes">
;<COND (<==? .L ,KITCHEN>
<TELL " sitting about">)
(<==? .L ,SIDEBOARD>
<TELL " on the " 'SIDEBOARD>)>
<TELL "." CR>)>>
<ROUTINE DINNER-F ("AUX" I (L <LOC ,DINNER>))
<COND ;(<VERB? DRESS>
<COND (<EQUAL? ,HERE <META-LOC ,DINNER-OUTFIT>>
<PERFORM ,V?WEAR ,DINNER-OUTFIT>
<RTRUE>)
(T
<NOT-HERE ,DINNER-OUTFIT>
<RTRUE>)>)
(<VERB? EAT>
<COND ;(<FSET? ,DINNER ,TRYTAKEBIT> ;<QUEUED? ,I-DINNER-SIT>
<TELL
"You look around and notice that no one else is eating yet." CR>)
(T <TELL "You take a bite and find it delicious." CR>)>)
(<VERB? EXAMINE ;SMELL>
<TELL
"A lovely assortment of fish, fowl, greens, and sweets fills the ">
<COND ;(<EQUAL? .L ,KITCHEN ,SIDEBOARD>
<TELL "dishes." CR>)
(T <TELL "plate." CR>)>)
;(<VERB? TAKE LAMP-ON ;"start">
<COND (<FSET? ,DINNER ,TRYTAKEBIT>
<COND (<==? .L ,KITCHEN>
<TELL "It's not ready yet." CR>)
(<==? .L ,SIDEBOARD>
<SET L <I-DINNER-SIT>>
<COND (<ZERO? .L>
<TELL
"You look around and notice that no one else is eating yet."
;"Not all the guests are ready yet." CR>
<RTRUE>)
(T <RETURN .L>)>)>)>)
;(<VERB? WAIT-FOR>
<COND (<SET I <QUEUED? ,I-DINNER>>
<V-WAIT <- ,DINNER-TIME ,PRESENT-TIME> ;.I <> T>
<RTRUE>)>)
;(<VERB? WALK-TO>
<COND (<EQUAL? ,HERE ,DINING-ROOM>
<PERFORM ,PRSA <META-LOC ,DINNER>>)
(T <PERFORM ,PRSA ,DINING-ROOM>)>
<RTRUE>)>>
"For debugging parser:"
<OBJECT RED-FROB
(LOC RAMP)
(DESC "red frob")
(ADJECTIVE RED)
(SYNONYM FROB FROBS)
(FLAGS TAKEBIT)
(SIZE 1)>
<OBJECT GREEN-FROB
(LOC RAMP)
(DESC "green frob")
(ADJECTIVE GREEN)
(SYNONYM FROB FROBS)
(FLAGS TAKEBIT)
(SIZE 1)>
<OBJECT BIG-BLUE-FROB
(LOC THING)
(DESC "big blue frob")
(ADJECTIVE BIG BLUE)
(SYNONYM FROB FROBS)
(FLAGS TAKEBIT)
(SIZE 1)>
<OBJECT SMALL-BLUE-FROB
(LOC THING)
(DESC "small blue frob")
(ADJECTIVE SMALL BLUE)
(SYNONYM FROB FROBS)
(FLAGS TAKEBIT)
(SIZE 1)>

85
top.zabstr Normal file
View File

@ -0,0 +1,85 @@
<FLAGS-AND-DEFAULTS (("UNDO" T)("P-BE-VERB" T)("IN-ZILCH" T)(
"P-DEBUGGING-PARSER" T)) (("ADJ-USED?" "DEFS" #WORD *00651007407*) (
"NO-M-WINNER-VERB?" "DEFS" #WORD *16275336705*) ("OWNERS" "DEFS" #WORD
*34556477145*))>
<INCLUDE "BASEDEFS" "PBITDEFS" "PDEFS">
<FILE-FLAGS MDL-ZIL?>
<BEGIN-SEGMENT 0>
<DEFAULTS-DEFINED ADJ-USED? ASKING-VERB-WORD? CANT-UNDO CAPITAL-NOUN?
FIND-A-WINNER ITAKE-CHECK META-LOC MORE-SPECIFIC NO-M-WINNER-VERB? NOT-HERE
NOUN-USED? OWNERS P-PRONOUNS SEE-VERB? SIBREAKS SPEAKING-VERB? TELL-PRONOUN
TELL-SAID-TO TELL-TOO-DARK VERB-ALL-TEST>
<DEFAULT-DEFINITION SIBREAKS <SETG20 SIBREAKS ".,\"'!?">>
<DEFAULT-DEFINITION OWNERS <CONSTANT OWNERS <TABLE (PURE LENGTH) PLAYER>>>
<DEFAULT-DEFINITION MORE-SPECIFIC <ROUTINE MORE-SPECIFIC>>
<SYNTAX \#DBG = V-PDEBUG>
<GLOBAL P-DBUG:FLAG <>>
<GLOBAL IDEBUG:FLAG <>>
<CONSTANT G-DEBUG 69>
<DEFINE-ROUTINE V-PDEBUG>
<GLOBAL P-PRSI <>>
<GLOBAL P-PRSO <>>
<GLOBAL PRSA 0 <OR VERB FALSE>>
<GLOBAL PRSQ 0>
<GLOBAL PRSS:OBJECT 0>
<GLOBAL PRSI:OBJECT 0>
<GLOBAL PRSO:OBJECT 0>
<GLOBAL P-MULT <>>
<GLOBAL OPRSO <>>
<GLOBAL P-CONT:NUMBER 0>
<CONSTANT P-LEXWORDS 1>
<CONSTANT P-LEXSTART 1>
<CONSTANT P-LEXELEN 2>
<CONSTANT P-WORDLEN 4>
<GLOBAL P-WON <>>
<DEFMAC RFATAL () '<PROG () <PUSH 2> <RSTACK>>>
<GLOBAL P-PRSA-WORD <>>
<GLOBAL PRSO-NP <>>
<GLOBAL PRSI-NP <>>
<GLOBAL CLOCKER-RUNNING:NUMBER 2>
<GLOBAL P-CAN-UNDO:NUMBER 0>
<DEFAULT-DEFINITION VERB-ALL-TEST <ROUTINE VERB-ALL-TEST>>
<DEFINE-ROUTINE FIX-HIM-HER-IT>
<DEFAULT-DEFINITION TELL-PRONOUN <ROUTINE TELL-PRONOUN>>
<DEFAULT-DEFINITION NO-M-WINNER-VERB? <CONSTANT NO-M-WINNER-VERB-TABLE <PLTABLE
V?TELL-ABOUT V?SGIVE V?SSHOW V?SRUB V?SPUT-ON>> <DEFINE NO-M-WINNER-VERB? () <
COND (<INTBL? ,PRSA <ZREST ,NO-M-WINNER-VERB-TABLE 2> <ZGET ,
NO-M-WINNER-VERB-TABLE 0>> <RTRUE>)>>>
<DEFAULT-DEFINITION FIND-A-WINNER <ROUTINE FIND-A-WINNER>>
<DEFAULT-DEFINITION TELL-SAID-TO <ROUTINE TELL-SAID-TO>>
<GLOBAL QCONTEXT:OBJECT <>>
<DEFINE-ROUTINE QCONTEXT-GOOD?>
<DEFAULT-DEFINITION META-LOC <ROUTINE META-LOC>>
<DEFAULT-DEFINITION P-PRONOUNS <GLOBAL P-IT-OBJECT:OBJECT <>> <GLOBAL
P-THEM-OBJECT:OBJECT <>> <GLOBAL P-HER-OBJECT:OBJECT <>> <GLOBAL P-HIM-OBJECT:
OBJECT <>>>
<DEFAULT-DEFINITION CANT-UNDO <IF-UNDO <ROUTINE CANT-UNDO>>>
<DEFINE-ROUTINE CANT-UNDO>
<GLOBAL NOW-PRSI:FLAG <>>
<GLOBAL OBJ-SWAP:FLAG <>>
<OBJECT NOT-HERE-OBJECT (CONTFCN 0) (THINGS 0)>
<DEFAULT-DEFINITION SEE-VERB? <DEFINE SEE-VERB? () <VERB? CHASTISE EXAMINE FIND
LOOK LOOK-BEHIND LOOK-DOWN LOOK-INSIDE LOOK-UNDER LOOK-UP READ SEARCH>>>
<DEFINE-ROUTINE PERFORM>
<DEFAULT-DEFINITION TELL-TOO-DARK <ROUTINE TELL-TOO-DARK>>
<DEFAULT-DEFINITION ITAKE-CHECK <ROUTINE ITAKE-CHECK>>
<DEFINE-ROUTINE TELL-D-LOC>
<DEFINE-ROUTINE D-APPLY>
<DEFAULT-DEFINITION CAPITAL-NOUN? <DEFINE CAPITAL-NOUN? (NAM) <>>>
<DEFAULT-DEFINITION NOT-HERE <ROUTINE NOT-HERE>>
<DEFAULT-DEFINITION ASKING-VERB-WORD? <ADD-WORD ASK ASKWORD> <ADD-WORD ORDER
ASKWORD> <ADD-WORD TELL ASKWORD>>
<DEFAULT-DEFINITION SPEAKING-VERB? <DEFINE SPEAKING-VERB? ("OPT" (A ,PRSA)) <
COND (<EQUAL? .A ,V?ANSWER ,V?ASK-ABOUT ,V?ASK-FOR ,V?HELLO ,V?NO ,V?REPLY ,
V?TELL ,V?TELL-ABOUT ,V?YES> <COND (T <RTRUE>)>)>>>
<DEFINE-ROUTINE GET-OWNER>
<DEFINE-ROUTINE GET-NP>
<DEFAULT-DEFINITION NOUN-USED? <ROUTINE NOUN-USED?>>
<DEFAULT-DEFINITION ADJ-USED? <DEFINE ADJ-USED? (OBJ WD1 "OPT" (WD2 <>) (WD3 <>
) "AUX" (NP <GET-NP .OBJ>) CT) <COND (<SET NP <NP-ADJS .NP>> <COND (<AND <
EQUAL? ,PLAYER <ADJS-POSS .NP>> <EQUAL? ,W?MY .WD1 .WD2 .WD3>> ,W?MY) (<G? <SET
CT <ADJS-COUNT .NP>> 0> <SET NP <REST-TO-SLOT .NP ADJS-COUNT 1>> <COND (<ZMEMQ
.WD1 .NP .CT> .WD1) (.WD2 <COND (<ZMEMQ .WD2 .NP .CT> .WD2) (.WD3 <COND (<ZMEMQ
.WD3 .NP .CT> .WD3)>)>)>) (<EQUAL? .WD1 <>> T)>) (<EQUAL? .WD1 <>> T)>>>
<END-SEGMENT>

448
top.zap Normal file
View File

@ -0,0 +1,448 @@
.SEGMENT "0"
.FUNCT MORE-SPECIFIC:ANY:0:0
SET 'CLOCK-WAIT,TRUE-VALUE
PRINTR "[Please be more specific.]"
.FUNCT V-PDEBUG:ANY:0:0
ZERO? PRSO /?CCL3
ZERO? IDEBUG /?PRT4
SET 'IDEBUG,0
JUMP ?PRE6
?PRT4: SET 'IDEBUG,1
?PRE6: PRINTC 123
PRINTN IDEBUG
PRINTR "}"
?CCL3: ZERO? P-DBUG /?PRT9
SET 'P-DBUG,0
JUMP ?PRE11
?PRT9: SET 'P-DBUG,1
?PRE11: ZERO? P-DBUG /?CCL8
PRINTR "Find them bugs, boss!"
?CCL8: PRINTR "No bugs left, eh?"
.FUNCT VERB-ALL-TEST:ANY:2:2,O,I,L
LOC O >L
EQUAL? PRSA,V?GIVE,V?DROP \?CCL3
EQUAL? L,WINNER /TRUE
RFALSE
?CCL3: EQUAL? PRSA,V?PUT \?CCL8
EQUAL? O,I /FALSE
IN? O,I /FALSE
RTRUE
?CCL8: EQUAL? PRSA,V?TAKE \?CCL15
FSET? O,TAKEBIT /?CND16
FSET? O,TRYTAKEBIT \FALSE
?CND16: ZERO? I /?CCL22
EQUAL? L,I /?CND20
RFALSE
?CCL22: EQUAL? L,HERE /TRUE
?CND20: FSET? L,PERSONBIT /TRUE
FSET? L,SURFACEBIT /TRUE
FSET? L,CONTBIT \FALSE
FSET? L,OPENBIT /TRUE
RFALSE
?CCL15: ZERO? I /TRUE
EQUAL? O,I /FALSE
RTRUE
.FUNCT FIX-HIM-HER-IT:ANY:2:2,PRON,OBJ
ZERO? OBJ \?CCL3
ICALL1 MORE-SPECIFIC
RFALSE
?CCL3: CALL2 ACCESSIBLE?,OBJ
ZERO? STACK \?CCL5
EQUAL? PRON,PRSO \?PRD9
CALL2 EVERYWHERE-VERB?,1
ZERO? STACK /?CTR4
?PRD9: EQUAL? PRON,PRSI \?CCL5
CALL2 EVERYWHERE-VERB?,2
ZERO? STACK \?CCL5
?CTR4: ICALL2 NOT-HERE,OBJ
RFALSE
?CCL5: EQUAL? PRSO,PRON \?CND14
SET 'PRSO,OBJ
ICALL TELL-PRONOUN,OBJ,PRON
?CND14: EQUAL? PRSI,PRON \?CND16
SET 'PRSI,OBJ
ICALL TELL-PRONOUN,OBJ,PRON
?CND16: EQUAL? PRSS,PRON \TRUE
SET 'PRSS,OBJ
ICALL TELL-PRONOUN,OBJ,PRON
RTRUE
.FUNCT TELL-PRONOUN:ANY:2:2,OBJ,PRON
FSET? PRON,TOUCHBIT /FALSE
EQUAL? OPRSO,OBJ /FALSE
EQUAL? PRSA,V?DO? /FALSE
PRINTI "["""
PRINTD PRON
PRINTI """ meaning "
ICALL2 TELL-THE,OBJ
PRINTR "]"
.FUNCT NO-M-WINNER-VERB?:ANY:0:0
RFALSE
.FUNCT FIND-A-WINNER:ANY:0:1,RM,OTHER,WHO,N
ASSIGNED? 'RM /?CND1
SET 'RM,HERE
?CND1: ZERO? QCONTEXT /?CCL5
IN? QCONTEXT,RM \?CCL5
RETURN QCONTEXT
?CCL5: FIRST? RM >OTHER /?BOGUS8
?BOGUS8: SET 'WHO,FALSE-VALUE
?PRG9: ZERO? OTHER \?CCL13
RETURN WHO
?CCL13: FSET? OTHER,PERSONBIT \?CND11
FSET? OTHER,INVISIBLE /?CND11
EQUAL? OTHER,PLAYER /?CND11
IGRTR? 'N,1 /FALSE
SET 'WHO,OTHER
?CND11: NEXT? OTHER >OTHER /?PRG9
JUMP ?PRG9
.FUNCT TELL-SAID-TO:ANY:1:1,PER
PRINTI "[said to "
PRINTD PER
PRINTR "]"
.FUNCT QCONTEXT-GOOD?:ANY:0:0
ZERO? QCONTEXT /FALSE
FSET? QCONTEXT,PERSONBIT \FALSE
CALL2 META-LOC,QCONTEXT
EQUAL? HERE,STACK \FALSE
RETURN QCONTEXT
.FUNCT META-LOC:ANY:1:2,OBJ,INV,L
LOC OBJ >L
?PRG1: EQUAL? FALSE-VALUE,OBJ,L /FALSE
EQUAL? L,LOCAL-GLOBALS,GLOBAL-OBJECTS,GENERIC-OBJECTS \?CCL7
RETURN L
?CCL7: IN? OBJ,ROOMS \?CCL9
RETURN OBJ
?CCL9: ZERO? INV /?CND10
FSET? OBJ,INVISIBLE /FALSE
?CND10: SET 'OBJ,L
LOC OBJ >L
JUMP ?PRG1
.FUNCT CANT-UNDO:ANY:0:0
PRINTR "[I can't undo that now.]"
.FUNCT PERFORM:ANY:1:3,PA,PO,PI,V,OA,OO,OI,OQ,OS,X,?TMP1,?TMP2
SET 'OA,PRSA
SET 'OO,PRSO
SET 'OI,PRSI
ZERO? OO /?CCL3
EQUAL? OO,PI \?CCL3
SET 'OBJ-SWAP,TRUE-VALUE
JUMP ?CND1
?CCL3: ZERO? OI /?CCL7
EQUAL? OI,PO \?CCL7
SET 'OBJ-SWAP,TRUE-VALUE
JUMP ?CND1
?CCL7: SET 'OBJ-SWAP,FALSE-VALUE
?CND1: SET 'PRSA,PA
SET 'PRSI,PI
SET 'PRSO,PO
ZERO? P-DBUG /?CND10
PRINTI "{Perform: A="
PRINTN PA
ZERO? PO /?CND12
PRINTI "/O="
EQUAL? PRSA,V?WALK \?CCL16
PRINTN PO
JUMP ?CND12
?CCL16: ICALL2 TELL-D-LOC,PO
?CND12: ZERO? PI /?CND17
PRINTI "/I="
ICALL2 TELL-D-LOC,PI
?CND17: ZERO? PRSQ /?CND19
PRINTI "/Q="
PRINTN PRSQ
?CND19: ZERO? PRSS /?CND21
PRINTI "/S="
ICALL2 TELL-D-LOC,PRSS
?CND21: PRINTI "}
"
?CND10: SET 'V,FALSE-VALUE
ZERO? PRSS /?CND23
ICALL2 THIS-IS-IT,PRSS
?CND23: ZERO? PRSI /?CND25
ICALL2 THIS-IS-IT,PRSI
?CND25: ZERO? PRSO /?CND27
EQUAL? PRSA,V?TELL /?CND27
EQUAL? PRSA,V?WALK /?CND27
ICALL2 THIS-IS-IT,PRSO
?CND27: EQUAL? WINNER,PLAYER /?CND32
ICALL2 THIS-IS-IT,WINNER
?CND32: SET 'PO,PRSO
SET 'PI,PRSI
CALL1 NO-M-WINNER-VERB?
ZERO? STACK \?CND34
GETP WINNER,P?ACTION
CALL D-APPLY,STR?47,STACK,M-WINNER >V
?CND34: ZERO? PRSS /?CND37
ZERO? V \?CND39
GETP PRSS,P?ACTION
CALL D-APPLY,STR?48,STACK,M-SUBJ >V
?CND39: ZERO? V \?CND41
ZERO? PRSQ /?CND41
GET ACTIONS,PA >?TMP2
ADD QACTIONS,2 >?TMP1
GET QACTIONS,0
INTBL? ?TMP2,?TMP1,STACK >X \?CND41
GET X,2
CALL D-APPLY,STR?49,STACK >V
?CND41: ZERO? V \?CND47
ZERO? PRSQ /?CCL51
GET ACTIONS,PA >?TMP2
ADD QACTIONS,2 >?TMP1
GET QACTIONS,0
INTBL? ?TMP2,?TMP1,STACK >X \?CND52
GET X,1 >X
ZERO? X /?CND52
CALL D-APPLY,FALSE-VALUE,X >V
?CND52: ZERO? V \?CND47
GET ACTIONS,PRSQ
CALL D-APPLY,FALSE-VALUE,STACK >V
JUMP ?CND47
?CCL51: ICALL D-APPLY,FALSE-VALUE,V-STATEMENT
?CND47: EQUAL? M-FATAL,V \?CND58
SET 'P-CONT,-1
?CND58: SET 'PRSA,OA
SET 'PRSO,OO
SET 'PRSI,OI
RETURN V
?CND37: ZERO? V \?CND60
LOC WINNER
IN? STACK,ROOMS /?CND60
LOC WINNER
GETP STACK,P?ACTION
CALL D-APPLY,STR?50,STACK,M-BEG >V
?CND60: ZERO? V \?CND64
GETP HERE,P?ACTION
CALL D-APPLY,STR?50,STACK,M-BEG >V
?CND64: ZERO? V \?CND66
GET PREACTIONS,PA
CALL D-APPLY,STR?49,STACK >V
?CND66: SET 'NOW-PRSI,1
ZERO? V \?CND68
ZERO? PI /?CND68
EQUAL? PRSA,V?WALK /?CND68
LOC PI
ZERO? STACK /?CND68
LOC PI
GETP STACK,P?CONTFCN >V
ZERO? V /?CND68
CALL D-APPLY,STR?51,V,M-CONTAINER >V
?CND68: ZERO? V \?CND76
ZERO? PI /?CND76
EQUAL? PI,GLOBAL-HERE \?CND80
GETP HERE,P?ACTION
CALL D-APPLY,STR?52,STACK >V
?CND80: ZERO? V \?CND76
GETP PI,P?ACTION
CALL D-APPLY,STR?52,STACK >V
?CND76: SET 'NOW-PRSI,0
ZERO? V \?CND84
ZERO? PO /?CND84
EQUAL? PRSA,V?WALK /?CND84
LOC PO
ZERO? STACK /?CND84
LOC PO
GETP STACK,P?CONTFCN >V
ZERO? V /?CND84
CALL D-APPLY,STR?51,V,M-CONTAINER >V
?CND84: ZERO? V \?CND92
ZERO? PO /?CND92
EQUAL? PRSA,V?WALK /?CND92
EQUAL? PO,GLOBAL-HERE \?CND97
GETP HERE,P?ACTION
CALL D-APPLY,STR?53,STACK >V
?CND97: ZERO? V \?CND92
GETP PO,P?ACTION
CALL D-APPLY,STR?53,STACK >V
?CND92: ZERO? V \?CND101
GET ACTIONS,PA
CALL D-APPLY,FALSE-VALUE,STACK >V
?CND101: EQUAL? M-FATAL,V \?CND104
SET 'P-CONT,-1
?CND104: SET 'PRSA,OA
SET 'PRSO,OO
SET 'PRSI,OI
RETURN V
.FUNCT TELL-TOO-DARK:ANY:0:0
PRINT TOO-DARK
RETURN M-FATAL
.FUNCT ITAKE-CHECK:ANY:2:2,OBJ,BITS,TAKEN
EQUAL? OBJ,IT \?CCL3
SET 'OBJ,P-IT-OBJECT
JUMP ?CND1
?CCL3: EQUAL? OBJ,THEM \?CND1
SET 'OBJ,P-THEM-OBJECT
?CND1: CALL HELD?,OBJ,WINNER
ZERO? STACK \FALSE
EQUAL? OBJ,HANDS,ROOMS /FALSE
FSET? OBJ,TRYTAKEBIT /?CND10
EQUAL? WINNER,PLAYER /?CCL14
SET 'TAKEN,TRUE-VALUE
JUMP ?CND10
?CCL14: BTST BITS,32 \?CND10
CALL ITAKE,FALSE-VALUE,OBJ
EQUAL? STACK,TRUE-VALUE \?CND10
SET 'TAKEN,TRUE-VALUE
?CND10: ZERO? TAKEN \FALSE
BTST BITS,64 \FALSE
BTST BITS,128 /FALSE
PRINTC 91
EQUAL? WINNER,PLAYER \?CCL26
PRINTI "You are"
JUMP ?CND24
?CCL26: ICALL2 TELL-CTHE,WINNER
PRINTI " is"
?CND24: PRINTI "n't holding "
ICALL2 TELL-THE,OBJ
ICALL2 THIS-IS-IT,OBJ
PRINTR "!]"
.FUNCT TELL-D-LOC:ANY:1:1,OBJ
PRINTD OBJ
IN? OBJ,GLOBAL-OBJECTS \?CCL3
PRINTI "(gl)"
JUMP ?CND1
?CCL3: IN? OBJ,LOCAL-GLOBALS \?CCL5
PRINTI "(lg)"
JUMP ?CND1
?CCL5: IN? OBJ,ROOMS \?CND1
PRINTI "(rm)"
?CND1: EQUAL? OBJ,INTNUM \FALSE
PRINTC 40
PRINTN P-NUMBER
PRINTC 41
RTRUE
.FUNCT D-APPLY:ANY:2:3,STR,FCN,FOO,RES
ZERO? FCN /FALSE
ZERO? P-DBUG /?CND4
ZERO? STR \?CCL8
PRINTI "{Action:}
"
JUMP ?CND4
?CCL8: PRINTC 123
PRINT STR
EQUAL? STR,STR?47 \?CND9
PRINTC 61
PRINTD WINNER
?CND9: PRINTI ": "
?CND4: ZERO? FOO /?CCL13
CALL FCN,FOO >RES
JUMP ?CND11
?CCL13: CALL FCN >RES
?CND11: ZERO? P-DBUG /?CND14
ZERO? STR /?CND14
EQUAL? M-FATAL,RES /?CTR19
EQUAL? P-CONT,-1 \?CCL20
?CTR19: PRINTI "Fatal}
"
RETURN RES
?CCL20: ZERO? RES \?CCL24
PRINTI "Not handled}
"
RETURN RES
?CCL24: PRINTI "Handled}
"
?CND14: RETURN RES
.FUNCT NOT-HERE:ANY:1:2,OBJ,CLOCK
ZERO? CLOCK \?CND1
SET 'CLOCK-WAIT,TRUE-VALUE
PRINTI "[But"
?CND1: PRINTC 32
ICALL2 TELL-THE,OBJ
ICALL2 PRINT-IS/ARE,OBJ
PRINTI "n't "
CALL2 VISIBLE?,OBJ
ZERO? STACK /?CCL5
PRINTI "close enough"
CALL1 SPEAKING-VERB?
ZERO? STACK /?CND6
PRINTI " to hear you"
?CND6: PRINTC 46
JUMP ?CND3
?CCL5: PRINTI "here!"
?CND3: ICALL2 THIS-IS-IT,OBJ
ZERO? CLOCK \?CND8
PRINTC 93
?CND8: CRLF
RTRUE
.FUNCT GET-OWNER:ANY:1:1,OBJ,TMP,NP
CALL2 GET-NP,OBJ >NP
ZERO? NP /FALSE
GET NP,4 >TMP
ZERO? TMP \?CTR5
GET NP,1 >TMP
ZERO? TMP /?CCL6
GET TMP,2 >TMP
ZERO? TMP /?CCL6
?CTR5: LESS? 0,TMP \FALSE
GRTR? TMP,LAST-OBJECT /FALSE
RETURN TMP
?CCL6: GETP OBJ,P?OWNER >TMP
ZERO? TMP /FALSE
LESS? 0,TMP \?CCL17
GRTR? TMP,LAST-OBJECT \FALSE
?CCL17: RETURN PLAYER
.FUNCT GET-NP:ANY:0:1,OBJ,PRSI?
SET 'PRSI?,NOW-PRSI
EQUAL? OBJ,FALSE-VALUE,PRSO,PRSI \FALSE
ZERO? OBJ /?CND1
EQUAL? OBJ,PRSO \?CCL7
SET 'PRSI?,FALSE-VALUE
JUMP ?CND1
?CCL7: SET 'PRSI?,TRUE-VALUE
?CND1: ZERO? OBJ-SWAP /?CCL10
ZERO? PRSI? /?CCL13
RETURN PRSO-NP
?CCL13: RETURN PRSI-NP
?CCL10: ZERO? PRSI? /?CCL15
RETURN PRSI-NP
?CCL15: RETURN PRSO-NP
.FUNCT NOUN-USED?:ANY:2:4,OBJ,WD1,WD2,WD3,X
CALL2 GET-NP,OBJ >X
ZERO? X /FALSE
GET X,2 >X
ZERO? X /FALSE
EQUAL? X,WD1,WD2,WD3 /TRUE
RFALSE
.ENDSEG
.ENDI

302
verbs.zabstr Normal file
View File

@ -0,0 +1,302 @@
<FLAGS-AND-DEFAULTS (("IN-ZILCH" T)) ()>
<DEFINE-ROUTINE TRANSCRIPT>
<DEFINE-ROUTINE V-SCRIPT>
<DEFINE-ROUTINE V-UNSCRIPT>
<DEFINE-ROUTINE V-$ID>
<DEFINE-ROUTINE V-$VERIFY>
<GLOBAL VERBOSITY:NUMBER 1>
<DEFINE-ROUTINE YOU-WILL-GET>
<DEFINE-ROUTINE V-SUPER-BRIEF>
<DEFINE-ROUTINE V-BRIEF>
<DEFINE-ROUTINE V-VERBOSE>
<DEFINE-ROUTINE V-INVENTORY>
<DEFINE-ROUTINE V-QUIT>
<DEFINE-ROUTINE V-RESTART>
<DEFINE-ROUTINE TELL-FAILED>
<DEFINE-ROUTINE V-SAVE>
<DEFINE-ROUTINE V-RESTORE>
<DEFINE-ROUTINE V-FIRST-LOOK>
<DEFINE-ROUTINE V-VERSION>
<CONSTANT SCORE-MAX 400>
<DEFINE-ROUTINE V-SCORE>
<DEFINE-ROUTINE NO-NEED>
<DEFINE-ROUTINE YOU-CANT>
<DEFINE-ROUTINE TELL-BEING-WORN>
<GLOBAL YAWNS <LTABLE 0 "unusual" "interesting" "extraordinary" "special">>
<DEFINE-ROUTINE PRINT-CONTENTS>
<DEFINE-ROUTINE DESCRIBE-OBJECTS>
<DEFINE-ROUTINE SEE-ANYTHING-IN?>
<DEFINE-ROUTINE DESCRIBE-ROOM>
<CONSTANT REXIT 0>
<CONSTANT UEXIT <VERSION? (ZIP 1) (T 2)>>
<CONSTANT NEXIT <VERSION? (ZIP 2) (T 3)>>
<CONSTANT FEXIT <VERSION? (ZIP 3) (T 4)>>
<CONSTANT CEXIT <VERSION? (ZIP 4) (T 5)>>
<CONSTANT DEXIT <VERSION? (ZIP 5) (T 6)>>
<CONSTANT NEXITSTR 0>
<CONSTANT FEXITFCN 0>
<CONSTANT CEXITFLAG <VERSION? (ZIP 1) (T 4)>>
<CONSTANT CEXITSTR 1>
<CONSTANT DEXITOBJ 1>
<CONSTANT DEXITSTR <VERSION? (ZIP 1) (T 2)>>
<DEFINE-ROUTINE HAR-HAR>
<GLOBAL YUKS <LTABLE 0 "What a concept." "Nice try." "You can't be serious."
"Not bloody likely.">>
<DEFINE-ROUTINE IMPOSSIBLE>
<GLOBAL IMPOSSIBLES <LTABLE 0 "You have lost your mind."
"You are clearly insane." "You appear to have gone barking mad."
"I'm not convinced you're allowed to be playing with this computer."
"Run out on the street and say that. See what happens."
"No, no, a thousand times no. Go boil an egg.">>
<DEFINE-ROUTINE WONT-HELP>
<GLOBAL WASTES <LTABLE 0 "Complete waste of time." "Useless. Utterly useless."
"A totally unhelpful idea.">>
<DEFINE-ROUTINE PICK-ONE-NEW>
<DEFINE-ROUTINE PICK-ONE>
<DEFINE-ROUTINE NOT-HOLDING?>
<DEFINE-ROUTINE GOTO>
<DEFINE-ROUTINE MAKE-ALL-PEOPLE>
<GLOBAL FOLLOWER:OBJECT 0>
<DEFINE-ROUTINE FRIEND-FOLLOWS-YOU>
<GLOBAL TRAILS-ALONG <PLTABLE " walks a few steps behind." " trails along."
" stays at your side." " walks along with you.">>
<DEFINE-ROUTINE DIR-FROM>
<DEFINE-ROUTINE DIR-FROM-TEST>
<DEFINE-ROUTINE HACK-HACK>
<GLOBAL HO-HUM <PLTABLE " won't help any." " is a waste of time.">>
<DEFINE-ROUTINE HELD?>
<DEFINE-ROUTINE IDROP>
<GLOBAL FUMBLE-NUMBER:NUMBER 7>
<GLOBAL FUMBLE-PROB:NUMBER 8>
<DEFINE-ROUTINE ITAKE>
<DEFINE-ROUTINE CCOUNT>
<DEFINE-ROUTINE CHECK-DOOR>
<DEFINE-ROUTINE ROOM-CHECK>
<DEFINE-ROUTINE SEE-INSIDE?>
<DEFINE-ROUTINE ARENT-TALKING>
<DEFINE-ROUTINE ALREADY>
<DEFINE-ROUTINE NOT-CLEAR-WHOM>
<DEFINE-ROUTINE OKAY>
<DEFINE-ROUTINE TOO-BAD-BUT>
<DEFINE-ROUTINE TOO-DARK>
<DEFINE-ROUTINE VISIBLE?>
<DEFINE-ROUTINE ACCESSIBLE?>
<CONSTANT WHO-CARES-LENGTH 4>
<GLOBAL WHO-CARES-VERB <PLTABLE "do" "do" "let" "seem">>
<GLOBAL WHO-CARES-TBL <PLTABLE "n't appear interested" "n't care"
" out a loud yawn" " impatient">>
<DEFINE-ROUTINE WHO-CARES>
<DEFINE-ROUTINE PRE-SAIM>
<DEFINE-ROUTINE V-SAIM>
<DEFINE-ROUTINE V-AIM>
<DEFINE-ROUTINE PRE-SANALYZE>
<DEFINE-ROUTINE V-SANALYZE>
<DEFINE-ROUTINE PRE-ANALYZE>
<DEFINE-ROUTINE V-ANALYZE>
<DEFINE-ROUTINE V-ANSWER>
<DEFINE-ROUTINE V-REPLY>
<DEFINE-ROUTINE WAITING-FOR-YOU-TO-SPEAK>
<DEFINE-ROUTINE V-ASK>
<DEFINE-ROUTINE PRE-ASK>
<DEFINE-ROUTINE GRAB-ATTENTION>
<DEFINE-ROUTINE V-ASK-ABOUT>
<DEFINE-ROUTINE WONT-HELP-TO-TALK-TO>
<DEFINE-ROUTINE PRE-ASK-CONTEXT-ABOUT>
<DEFINE-ROUTINE V-ASK-CONTEXT-ABOUT>
<DEFINE-ROUTINE V-ASK-FOR>
<DEFINE-ROUTINE PRE-ASK-CONTEXT-FOR>
<DEFINE-ROUTINE V-ASK-CONTEXT-FOR>
<DEFINE-ROUTINE V-ATTACK>
<DEFINE-ROUTINE PRE-BRUSH>
<DEFINE-ROUTINE V-BRUSH>
<DEFINE-ROUTINE V-BUY>
<DEFINE-ROUTINE V-$CALL>
<DEFINE-ROUTINE UNSNOOZE>
<DEFINE-ROUTINE V-CHASTISE>
<DEFINE-ROUTINE V-BOARD>
<DEFINE-ROUTINE V-CLIMB-ON>
<DEFINE-ROUTINE V-CLIMB-UP>
<DEFINE-ROUTINE V-CLIMB-DOWN>
<DEFINE-ROUTINE V-CLOSE>
<DEFINE-ROUTINE V-COUNT>
<DEFINE-ROUTINE V-DIAGNOSE>
<DEFINE-ROUTINE TELL-NOT-IN>
<DEFINE-ROUTINE V-DRINK>
<DEFINE-ROUTINE V-DROP>
<DEFINE-ROUTINE GROUND-DESC>
<DEFINE-ROUTINE PRE-EAT>
<DEFINE-ROUTINE V-EAT>
<DEFINE-ROUTINE V-ENJOY>
<DEFINE-ROUTINE PRE-THROUGH>
<DEFINE-ROUTINE V-THROUGH>
<DEFINE-ROUTINE PRE-EXAMINE>
<DEFINE-ROUTINE V-EXAMINE>
<DEFINE-ROUTINE NOTHING-SPECIAL>
<DEFINE-ROUTINE GLOBAL-IN?>
<DEFINE-ROUTINE V-FAINT>
<DEFINE-ROUTINE V-FILL>
<DEFINE-ROUTINE PRE-FIND>
<DEFINE-ROUTINE BITE-YOU>
<DEFINE-ROUTINE FAR-AWAY?>
<DEFINE-ROUTINE V-FIND>
<DEFINE-ROUTINE NO-FUN>
<DEFINE-ROUTINE TELL-LOCATION>
<DEFINE-ROUTINE V-FIX>
<DEFINE-ROUTINE FOLLOW-LOC?>
<DEFINE-ROUTINE V-FOLLOW>
<DEFINE-ROUTINE V-FOO>
<DEFINE-ROUTINE V-FOOTNOTE>
<DEFINE-ROUTINE I-REPLY>
<GLOBAL AWAITING-REPLY <>>
<DEFINE-ROUTINE PRE-GIVE>
<DEFINE-ROUTINE V-GIVE>
<DEFINE-ROUTINE PRE-SGIVE>
<DEFINE-ROUTINE V-SGIVE>
<CONSTANT I-ASSUME "[I assume you mean:">
<DEFINE-ROUTINE TELL-I-ASSUME>
<DEFINE-ROUTINE PRE-HELLO>
<DEFINE-ROUTINE V-HELLO>
<DEFINE-ROUTINE V-HELP>
<DEFINE-ROUTINE HELP-TEXT>
<DEFINE-ROUTINE V-HIDE>
<DEFINE-ROUTINE V-KILL>
<CONSTANT YOU-DIDNT-SAY-W "[You didn't say w">
<DEFINE-ROUTINE IKILL>
<CONSTANT NO-VIOLENCE "You think it over. There's no need to get violent.|">
<DEFINE-ROUTINE V-KISS>
<DEFINE-ROUTINE V-KNOCK>
<DEFINE-ROUTINE V-LAMP-OFF>
<DEFINE-ROUTINE V-LAMP-ON>
<DEFINE-ROUTINE V-LEAP>
<DEFINE-ROUTINE V-SKIP>
<DEFINE-ROUTINE WHEE>
<DEFINE-ROUTINE V-LEAVE>
<DEFINE-ROUTINE PRE-LIE>
<DEFINE-ROUTINE V-LIE>
<DEFINE-ROUTINE PRE-LISTEN>
<DEFINE-ROUTINE V-LISTEN>
<DEFINE-ROUTINE V-LOCK>
<DEFINE-ROUTINE V-LOOK>
<DEFINE-ROUTINE V-LOOK-BEHIND>
<DEFINE-ROUTINE V-LOOK-DOWN>
<DEFINE-ROUTINE PRE-LOOK-INSIDE>
<DEFINE-ROUTINE V-LOOK-INSIDE>
<DEFINE-ROUTINE FIRST-YOU>
<DEFINE-ROUTINE V-LOOK-THROUGH>
<DEFINE-ROUTINE NO-BEYOND>
<DEFINE-ROUTINE ROOM-PEEK>
<DEFINE-ROUTINE SEE-INTO?>
<DEFINE-ROUTINE TELL-CANT-FIND>
<DEFINE-ROUTINE V-LOOK-ON>
<DEFINE-ROUTINE V-LOOK-OUTSIDE>
<DEFINE-ROUTINE PRE-LOOK-UNDER>
<DEFINE-ROUTINE V-LOOK-UNDER>
<DEFINE-ROUTINE V-LOOK-UP>
<DEFINE-ROUTINE PRE-MOVE>
<DEFINE-ROUTINE V-MOVE>
<DEFINE-ROUTINE PRE-MOVE-DIR>
<DEFINE-ROUTINE V-MOVE-DIR>
<DEFINE-ROUTINE V-MUNG>
<DEFINE-ROUTINE V-NOD>
<DEFINE-ROUTINE V-OPEN>
<DEFINE-ROUTINE V-PANIC>
<DEFINE-ROUTINE V-PLAY>
<DEFINE-ROUTINE V-POUR>
<DEFINE-ROUTINE V-PULL-TOGETHER>
<DEFINE-ROUTINE V-PUSH>
<DEFINE-ROUTINE V-SPUT-ON>
<DEFINE-ROUTINE PRE-PUT>
<DEFINE-ROUTINE V-PUT>
<DEFINE-ROUTINE TELL-FIND-NONE>
<DEFINE-ROUTINE PRE-PUT-IN>
<DEFINE-ROUTINE V-PUT-IN>
<CONSTANT NOT-ENOUGH-ROOM "There's not enough room.|">
<DEFINE-ROUTINE PUT-ON-OR-IN>
<DEFINE-ROUTINE WEIGHT>
<DEFINE-ROUTINE V-PUT-UNDER>
<DEFINE-ROUTINE PRE-SREAD>
<DEFINE-ROUTINE V-SREAD>
<DEFINE-ROUTINE PRE-READ>
<DEFINE-ROUTINE V-READ>
<DEFINE-ROUTINE V-REFUSE>
<DEFINE-ROUTINE V-RELAX>
<CONSTANT ZEN "A brave, Zen-like effort. It fails.">
<DEFINE-ROUTINE V-REMOVE>
<DEFINE-ROUTINE V-RING>
<DEFINE-ROUTINE V-RUB>
<DEFINE-ROUTINE V-SAY>
<DEFINE-ROUTINE PRE-SEARCH>
<DEFINE-ROUTINE V-SEARCH>
<CONSTANT OU-STOP-SEARCHING "ou stop searching">
<DEFINE-ROUTINE PRE-SSEARCH-FOR>
<DEFINE-ROUTINE V-SSEARCH-FOR>
<DEFINE-ROUTINE PRE-SEARCH-FOR>
<DEFINE-ROUTINE V-SEARCH-FOR>
<DEFINE-ROUTINE V-SHAKE>
<DEFINE-ROUTINE V-SHOOT>
<DEFINE-ROUTINE PRE-SSHOOT>
<DEFINE-ROUTINE V-SSHOOT>
<DEFINE-ROUTINE V-SHOW>
<DEFINE-ROUTINE PRE-SSHOW>
<DEFINE-ROUTINE V-SSHOW>
<DEFINE-ROUTINE PRE-SIT>
<DEFINE-ROUTINE V-SIT>
<DEFINE-ROUTINE V-SIT-AT>
<DEFINE-ROUTINE V-SLAP>
<DEFINE-ROUTINE IF-SPY>
<DEFINE-ROUTINE FACE-RED>
<DEFINE-ROUTINE V-SMELL>
<DEFINE-ROUTINE V-SMILE>
<DEFINE-ROUTINE V-SORRY>
<DEFINE-ROUTINE V-STAND>
<DEFINE-ROUTINE V-STOP>
<DEFINE-ROUTINE V-SWIM>
<DEFINE-ROUTINE PRE-TAKE>
<DEFINE-ROUTINE PRE-TAKE-WITH>
<DEFINE-ROUTINE V-TAKE>
<DEFINE-ROUTINE V-TAKE-OFF>
<DEFINE-ROUTINE V-TAKE-TO>
<DEFINE-ROUTINE V-DISEMBARK>
<DEFINE-ROUTINE OWN-FEET>
<DEFINE-ROUTINE V-HOLD-UP>
<DEFINE-ROUTINE V-TELL>
<DEFINE-ROUTINE PRE-STELL-ABOUT>
<DEFINE-ROUTINE V-STELL-ABOUT>
<DEFINE-ROUTINE PRE-TELL-ABOUT>
<DEFINE-ROUTINE V-TELL-ABOUT>
<DEFINE-ROUTINE PRE-TALK-ABOUT>
<DEFINE-ROUTINE V-TALK-ABOUT>
<DEFINE-ROUTINE V-THANK>
<DEFINE-ROUTINE V-THROW>
<DEFINE-ROUTINE V-THROW-AT>
<DEFINE-ROUTINE V-THROW-IN-TOWEL>
<DEFINE-ROUTINE PRE-THROW-THROUGH>
<DEFINE-ROUTINE V-THROW-THROUGH>
<DEFINE-ROUTINE V-TURN>
<DEFINE-ROUTINE V-UNLOCK>
<DEFINE-ROUTINE V-USE>
<GLOBAL KEEP-WAITING <>>
<DEFINE-ROUTINE V-WAIT>
<DEFINE-ROUTINE V-WAIT-FOR>
<DEFINE-ROUTINE V-WAIT-UNTIL>
<DEFINE-ROUTINE V-ALARM>
<DEFINE-ROUTINE DO-WALK>
<DEFINE-ROUTINE V-WALK>
<DEFINE-ROUTINE UNLOCK-DOOR?>
<DEFINE-ROUTINE WALK-THRU-DOOR?>
<DEFINE-ROUTINE OPEN-DOOR-AND-CLOSE-IT-AGAIN>
<DEFINE-ROUTINE V-WALK-AROUND>
<CONSTANT WHICH-DIR "Which direction do you want to go in?">
<DEFINE-ROUTINE WHO-KNOWS?>
<DEFINE-ROUTINE WALK-WITHIN-ROOM>
<DEFINE-ROUTINE V-WALK-TO>
<DEFINE-ROUTINE ENTER-ROOM>
<DEFINE-ROUTINE V-RUN-OVER>
<DEFINE-ROUTINE V-YELL>
<DEFINE-ROUTINE V-YES>
<DEFINE-ROUTINE V-NO>
<DEFINE-ROUTINE JIGS-UP>
<DEFINE-ROUTINE FINISH>
<DEFINE-ROUTINE V-UNDO>
<DEFINE-ROUTINE REMOTE-VERB?>

3756
verbs.zap Normal file

File diff suppressed because it is too large Load Diff

3397
verbs.zil Normal file

File diff suppressed because it is too large Load Diff