zorkzero/defs.zil

132 lines
3.8 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

"DEFS to replace parser's versions for
ZORK ZERO
(c) Copyright 1988 Infocom, Inc. All Rights Reserved."
<BEGIN-SEGMENT 0>
<INCLUDE "SYMBOLS">
<COMPILATION-FLAG P-DEBUGGING-PARSER <>>
<ADD-TELL-TOKENS D * <DPRINT .X>>
<DELAY-DEFINITION CAPITAL-NOUN?>
<REPLACE-DEFINITION FIRST-HINT-POS
<CONSTANT FIRST-HINT-LINE 5>
<CONSTANT FIRST-HINT-COLUMN 7>>
<DELAY-DEFINITION READ-INPUT>
<DELAY-DEFINITION GAME-VERB?>
<DELAY-DEFINITION LIT?>
<REPLACE-DEFINITION NO-M-WINNER-VERB?
<DEFMAC NO-M-WINNER-VERB? ()
'<VERB? ASK-ABOUT ;MAKE-WITH SRIDE-DIR SSEARCH-OBJECT-FOR
;SGIVE SPUT-ON SSHOW STHROW SWRAP ;TELL-ABOUT STOUCH>>>
<REPLACE-DEFINITION NOT-HERE-VERB?
<ROUTINE NOT-HERE-VERB? (V)
<EQUAL? .V ,V?WALK-TO ,V?RESEARCH>>>
<REPLACE-DEFINITION OWNERS
<CONSTANT OWNERS <TABLE (PURE LENGTH) JESTER WALL>>>
<REPLACE-DEFINITION PARSER-REPORT <CONSTANT PARSER-REPORT <>>>
<REPLACE-DEFINITION PERSONBIT <CONSTANT PERSONBIT ACTORBIT>>
<REPLACE-DEFINITION PLAYER <CONSTANT PLAYER PROTAGONIST>>
<REPLACE-DEFINITION PRINT-INTQUOTE <CONSTANT PRINT-INTQUOTE 0>>
<DELAY-DEFINITION REFRESH>
<REPLACE-DEFINITION ROOMSBIT <CONSTANT ROOMSBIT KLUDGEBIT>>
<REPLACE-DEFINITION SEE-VERB?
<ROUTINE SEE-VERB? ()
<VERB? CHASTISE COUNT EXAMINE FIND TAKE
;INVENTORY LOOK LOOK-BEHIND LOOK-DOWN LOOK-INSIDE
LOOK-UNDER READ SEARCH>>>
<COMPILATION-FLAG P-APOSTROPHE-BREAKS-WORDS <>>
<REPLACE-DEFINITION SIBREAKS <SETG20 SIBREAKS ".,\"!?">>
<REPLACE-DEFINITION SETUP-ORPHAN-NP <CONSTANT SETUP-ORPHAN-NP 0>>
<REPLACE-DEFINITION SPEAKING-VERB?
<ROUTINE 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>
<RTRUE>)>>>
<DELAY-DEFINITION STATUS-LINE>
<REPLACE-DEFINITION TELL-TOO-DARK
<ROUTINE TELL-TOO-DARK ()
<SETG P-CONT -1> ;<RFATAL>
<TELL ,TOO-DARK>
<COND (<VERB? LOOK>
<GRUE-PIT-WARNING>)
(T
<CRLF>)>>>
<COMPILATION-FLAG P-TITLE-ABBRS T>
<REPLACE-DEFINITION TITLE-ABBR?
<DEFMAC TITLE-ABBR?!- ('WRD) <FORM EQUAL? .WRD ',W?ST ',W?D ',W?J ',W?A>>>
<DELAY-DEFINITION VERB-ALL-TEST>
<REPLACE-DEFINITION YES? <CONSTANT YES? 0>>
<COMPILATION-FLAG P-PS-ADV T>
<COMPILATION-FLAG P-PS-COMMA T>
<COMPILATION-FLAG P-PS-OFWORD T>
;<COMPILATION-FLAG P-PS-THEWORD T>
<COMPILATION-FLAG P-PS-QUOTE T>
<TERMINALS VERB NOUN ADJ ;"keep these three in order! -- SWG"
DIR
PARTICLE PREP ;"keep these two in order! -- SWG"
ASKWORD ;7
OFWORD ;ARTICLE QUOTE COMMA
ADV QUANT MISCWORD>
<PROPDEF DIRECTIONS <>
(DIR TO R:ROOM =
(UEXIT 1) ;444 #SEMI "UNCONDITIONAL EXIT"
(REXIT <ROOM .R>) #SEMI "TO ROOM")
(DIR S:STRING =
(NEXIT 2) ;99 #SEMI "IMPOSSIBLE EXIT"
(NEXITSTR <STRING .S>) #SEMI "FAILURE MESSAGE")
(DIR SORRY S:STRING =
(NEXIT 2) #SEMI "IMPOSSIBLE EXIT"
(NEXITSTR <STRING .S>) #SEMI "FAILURE MESSAGE")
(DIR PER F:FCN =
(FEXIT 3) ;53 #SEMI "CONDITIONAL EXIT"
(FEXITFCN <WORD .F>) #SEMI "PER FUNCTION"
<BYTE 0>)
(DIR TO R:ROOM IF F:GLOBAL "OPT" ELSE S:STRING =
(CEXIT 4) ;7 #SEMI "CONDITIONAL EXIT"
(REXIT <ROOM .R>) #SEMI "TO ROOM"
(CEXITFLAG <GLOBAL .F>) #SEMI "IF FLAG IS TRUE"
(CEXITSTR <STRING .S>) #SEMI "FAILURE MESSAGE")
(DIR TO R:ROOM IF O:OBJECT IS OPEN "OPT" ELSE S:STRING =
(DEXIT 5) ;15 #SEMI "CONDITIONAL EXIT"
(DEXITOBJ <OBJECT .O>) #SEMI "IF DOOR IS OPEN"
(DEXITSTR <STRING .S>) #SEMI "FAILURE MESSAGE"
(DEXITRM <ROOM .R>) #SEMI "TO ROOM")>
;<REPLACE-DEFINITION GET-DEXITOBJ
<ROUTINE GET-DEXITOBJ (PT) <ZGET <REST .PT> ,DEXITOBJ>>>
<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 ;UP ;DOWN)>
;<CONSTANT M-OBJDESC? 10>
<ZSTART GO> ;"else, ZIL gets confused between verb-word GO and routine GO"
<CONSTANT S-FULL 7>
<END-SEGMENT>