Revision 15 (Original Source)

This commit is contained in:
historicalsource 2019-04-13 22:26:27 -04:00
commit f9f770f8c7
15 changed files with 10699 additions and 0 deletions

1
README.md Normal file
View file

@ -0,0 +1 @@
# starcross

4266
actions.zil Normal file

File diff suppressed because it is too large Load diff

60
clock.zil Normal file
View file

@ -0,0 +1,60 @@
<CONSTANT C-TABLELEN 180>
<GLOBAL C-TABLE <ITABLE NONE 180>>
<GLOBAL C-DEMONS 180>
<GLOBAL C-INTS 180>
<CONSTANT C-INTLEN 6>
<CONSTANT C-ENABLED? 0>
<CONSTANT C-TICK 1>
<CONSTANT C-RTN 2>
<ROUTINE DEMON (RTN TICK "AUX" CINT)
#DECL ((RTN) ATOM (TICK) FIX (CINT) <PRIMTYPE VECTOR>)
<PUT <SET CINT <INT .RTN T>> ,C-TICK .TICK>
.CINT>
<ROUTINE QUEUE (RTN TICK "AUX" CINT)
#DECL ((RTN) ATOM (TICK) FIX (CINT) <PRIMTYPE VECTOR>)
<PUT <SET CINT <INT .RTN>> ,C-TICK .TICK>
.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>)
(<==? <GET .C ,C-RTN> .RTN> <RETURN .C>)>
<SET C <REST .C ,C-INTLEN>>>>
<GLOBAL CLOCK-WAIT <>>
<ROUTINE CLOCKER ("AUX" C E TICK (FLG <>))
#DECL ((C E) <PRIMTYPE VECTOR> (TICK) FIX (FLG) <OR FALSE ATOM>)
<COND (,CLOCK-WAIT <SETG CLOCK-WAIT <>> <RFALSE>)>
<SET C <REST ,C-TABLE <COND (,P-WON ,C-INTS) (T ,C-DEMONS)>>>
<SET E <REST ,C-TABLE ,C-TABLELEN>>
<REPEAT ()
<COND (<==? .C .E> <RETURN .FLG>)
(<NOT <0? <GET .C ,C-ENABLED?>>>
<SET TICK <GET .C ,C-TICK>>
<COND (<0? .TICK>)
(T
<PUT .C ,C-TICK <- .TICK 1>>
<COND (<AND <NOT <G? .TICK 1>>
<APPLY <GET .C ,C-RTN>>>
<SET FLG T>)>)>)>
<SET C <REST .C ,C-INTLEN>>>>

22
crufty.xzap Normal file
View file

@ -0,0 +1,22 @@
.FUNCT THIS-IT?,OBJ,TBL,SYNS,?TMP1
FSET? OBJ,INVISIBLE /FALSE
ZERO? P-NAM /?THN3
GETPT OBJ,P?SYNONYM >SYNS
PTSIZE SYNS
DIV STACK,2
SUB STACK,1
CALL ZMEMQ,P-NAM,SYNS,STACK
ZERO? STACK /FALSE
?THN3: ZERO? P-ADJ /?ELS8
GETPT OBJ,P?ADJECTIVE >SYNS
ZERO? SYNS /FALSE
PTSIZE SYNS
SUB STACK,1
CALL ZMEMQB,P-ADJ,SYNS,STACK
ZERO? STACK /FALSE
?ELS8: ZERO? P-GWIMBIT /TRUE
FSET? OBJ,P-GWIMBIT /TRUE
RFALSE
.ENDI

17
crufty.zil Normal file
View file

@ -0,0 +1,17 @@
"CRUFTY2 for
Zork: The Wizard of Frobozz
The Great Underground Empire (Part 2)
(c) Copyright 1981 Infocom, Inc. All Rights Reserved.
"
<ROUTINE THIS-IT? (OBJ TBL "AUX" SYNS)
#DECL ((OBJ) OBJECT (TBL) TABLE (SYNS) <OR FALSE TABLE>)
<AND <NOT <FSET? .OBJ ,INVISIBLE>>
<OR <NOT ,P-NAM>
<ZMEMQ ,P-NAM
<SET SYNS <GETPT .OBJ ,P?SYNONYM>>
<- </ <PTSIZE .SYNS> 2> 1>>>
<OR <NOT ,P-ADJ>
<AND <SET SYNS <GETPT .OBJ ,P?ADJECTIVE>>
<ZMEMQB ,P-ADJ .SYNS <- <PTSIZE .SYNS> 1>>>>
<OR <0? ,P-GWIMBIT> <FSET? .OBJ ,P-GWIMBIT>>>>

2409
dungeon.zil Normal file

File diff suppressed because it is too large Load diff

279
emerg.zil Normal file
View file

@ -0,0 +1,279 @@
"EMERG for
Interlogic SF Game
(c) Copyright 1981,1982 Infocom, Inc. All Rights Reserved
"
;"Emergency lighting and environmental controls"
<ROUTINE SWITCH-FCN ()
<COND (<VERB? LAMP-ON TURN THROW>
<COND (,MELTED?
<TELL
"There is a sickening wheeze, but nothing else happens." CR>)
(,SWITCH-ON?
<TELL "It's already on." CR>)
(ELSE
<TELL
"The lights in the room come on and there is a deafening FOOOOM! noise as the
computer starts up." CR>
<SETG SWITCH-ON? T>
<COND (<AND <IN? ,CARD ,SLOT> <NOT ,FRIED?>>
<COND (,GOT-KEY?
<TELL
"The main display blinks once and then displays the word \"Ready\"." CR>)
(ELSE
<SETG GOT-KEY? T>
<MOVE ,GOLD-KEY ,HERE>
<FCLEAR ,ENUNCIATOR ,INVISIBLE>
<TELL
"The main display blinks twice, a bell rings, and out of the output
hopper onto the floor is extruded a gold rod! A moment later, a
previously unseen enunciator panel comes on." CR>
<PERFORM ,V?EXAMINE ,ENUNCIATOR>
<RTRUE>)>)
(ELSE
<TELL
"On the main display lights blink insistently and the word \"Fault\"
appears." CR>)>)>)
(<VERB? LAMP-OFF>
<SETG SWITCH-ON? <>>
<FSET ,ENUNCIATOR ,INVISIBLE>
<TELL
"The computer is off." CR>)>>
<ROUTINE COMPUTER-ROOM-FCN (RARG)
<COND (<==? .RARG ,M-LOOK>
<TELL
"This is the main computer room. The builders of this ship were obviously
still wedded to large mainframes: this one stretches off in all directions
and is thirty meters high. There is an overlarge switch at about eye-level
and an access panel below it, which is ">
<COND (<FSET? ,PANEL ,OPENBIT>
<TELL "open">)
(ELSE <TELL "closed">)>
<TELL ". The power seems to be ">
<COND (,SWITCH-ON? <TELL "on." CR>)
(ELSE <TELL "off." CR>)>
<COND (,FRIED? <TELL
"There is a strong smell of burning components here." CR>)>
<RTRUE>)>>
<OBJECT ENUNCIATOR
(IN COMPUTER-ROOM)
(DESC "enunciator panel")
(LDESC "An enunciator panel is prominent along one wall here.")
(SYNONYM PANEL LIGHT LIGHTS SYMBOL)
(ADJECTIVE ENUNCIATOR RED YELLOW BLUE GREEN)
(FLAGS INVISIBLE)
(ACTION ENUNCIATOR-F)>
<ROUTINE ENUNCIATOR-F ()
<COND (<VERB? EXAMINE>
<COND (,SWITCH-ON?
<TELL
"On the left are three banks of four colored lights: red, yellow, green, and
blue. The first is labelled with a symbol of the emission of rays: of the
lights underneath, the red one is flashing and the yellow one is brightly
lit. The second column is labelled with a stylized docking port and the third
with an airlock. The only indications on these two banks are the yellow ones,
the first of which is brightly lit and the other of which is flashing. On the
right are six other lights, each bearing a stylized picture. The first four,
all dark, represent navigation, engine, library, and defenses. A fifth,
bearing the picture of a cage, is brightly lit. The sixth is "
<GET ,AIR-FLASH ,AIR-COUNT> ". It" ,REPAIR-PANEL CR>)
(ELSE <TELL "The panel is dark." CR>)>)>>
<GLOBAL AIR-FLASH <TABLE
"flickering dimly"
"flashing slowly"
"flashing rapidly"
"also brightly lit"
"also brightly lit">>
<GLOBAL REPAIR-PANEL
" bears a symbol in three parts: the first two parts, in black, are a
solid block and a fluid level. The third, in red, is a series of parallel
wavy lines.">
<ROOM REPAIR-ROOM
(IN ROOMS)
(DESC "Repair Room")
(OUT TO SCRUB IF METAL-DOOR IS OPEN)
(UP TO SCRUB IF METAL-DOOR IS OPEN)
(ACTION REPAIR-ROOM-FCN)
(FLAGS RLANDBIT ONBIT)
(GLOBAL STAIRS METAL-DOOR)>
<ROUTINE REPAIR-ROOM-FCN (RARG)
<COND (<==? .RARG ,M-LOOK>
<TELL
"This is a bright room taken up by two large pieces of machinery. On the
leftmost one is a symbol depicting the emission of rays and beside it a
yellow slot. The other machine" ,REPAIR-PANEL " Beside it are three diagrams;
under each one is a
red slot. The first diagram shows four single dots equally spaced around a
six-dot cluster. The second shows two eight-dot clusters in close proximity.
The third has three single dots equally spaced around a seven-dot cluster.
The only exit is up some stairs." CR>)>>
<OBJECT YELLOW-SLOT
(IN REPAIR-ROOM)
(DESC "yellow slot")
(SYNONYM SLOT HOLE)
(ADJECTIVE YELLOW)
(FLAGS NDESCBIT CONTBIT OPENBIT)
(KEY TO YELLOW-KEY)
(CAPACITY 6)
(ACTION YELLOW-SLOT-F)>
<ROUTINE YELLOW-SLOT-F ()
<COND (<AND <VERB? PUT> <==? ,PRSI ,YELLOW-SLOT>>
<COND (<==? ,PRSO ,YELLOW-KEY>
<SETG ALWAYS-LIT T>
<RIGHT-KEY>
<CRLF>)
(<FSET? ,PRSO ,KEYBIT> <WRONG-KEY>)
(ELSE <WONT-FIT>)>)>>
<ROUTINE WONT-FIT ()
<TELL "The " D ,PRSO " doesn't fit." CR>>
<OBJECT RED-SLOT
(IN REPAIR-ROOM)
(DESC "red slot")
(SYNONYM SLOT HOLE)
(ADJECTIVE RED FIRST SECOND THIRD)
(FLAGS NDESCBIT CONTBIT OPENBIT)
(KEY TO RED-KEY)
(CAPACITY 5)
(ACTION RED-SLOT-F)>
<ROUTINE RED-SLOT-F ("AUX" NUM)
<COND (<AND <VERB? PUT> <==? ,PRSI ,RED-SLOT>>
<SET NUM <ORDINAL ,P-ADJECTIVE>>
<COND (<OR <G? .NUM 3> <EQUAL? .NUM 0>>
<TELL "You must specify which red slot." CR>)
(<NOT <==? ,PRSO ,RED-KEY>>
<WRONG-KEY>)
(T
<REMOVE ,RED-KEY>
<RIGHT-KEY>
<TELL
" You hear the subdued hum of some machinery coming to life." CR>
<COND (<==? .NUM 2>
<ENABLE <QUEUE I-FRESH-AIR 30>>
<DISABLE <INT I-BAD-AIR>>)
(T
<ENABLE <QUEUE I-POISON-AIR 20>>
<DISABLE <INT I-BAD-AIR>>
<COND (<==? .NUM 3>
<SETG AMMONIA? T>)>
<RTRUE>)>)>)>>
<ROUTINE RIGHT-KEY ()
<REMOVE ,PRSO>
<TELL
"The " D ,PRSO " disappears into the slot.">>
<ROUTINE WRONG-KEY ()
<REMOVE ,PRSO>
<TELL
"The " D ,PRSO " slides into the slot and disappears." CR>>
<ROUTINE I-FRESH-AIR ()
<SETG POISON-COUNT 0>
<COND (<0? ,AIR-COUNT> <RTRUE>)
(<L? <SETG AIR-COUNT <- ,AIR-COUNT 1>> 1>
<COND (<AND <NOT ,SUIT-ON?> ,IN-ARTIFACT?>
<TELL
"The air seems fine now." CR>)>
<RTRUE>)>
<COND (<AND <NOT ,SUIT-ON?> ,IN-ARTIFACT?>
<DESCRIBE-AIR
"The air seems a bit better, but is still ">)>
<QUEUE I-FRESH-AIR 20>>
<GLOBAL POISON-COUNT 0>
<ROUTINE I-POISON-AIR ()
<COND (<G? <SETG POISON-COUNT <+ ,POISON-COUNT 1>> 3>
<COND (<NOT ,IN-ARTIFACT?>
<ENABLE <QUEUE I-POISON-AIR 1>>)
(,SUIT-ON?
<JIGS-UP
"Suddenly, you notice everything around you going dark, as though
the artifact was shutting down. The lights are dimming everywhere,
and a faint thrumming vibration stops; one you didn't even notice
until it ceased.">)
(T <JIGS-UP
"You are overcome by noxious gases and slump to the floor, dead.">)>)
(T
<COND (<AND <NOT ,SUIT-ON?> ,IN-ARTIFACT?>
<DESCRIBE-AIR "The air here has become ">)>
<QUEUE I-POISON-AIR 30>)>>
<ROUTINE I-BAD-AIR ()
<COND (<G? <SETG AIR-COUNT <+ ,AIR-COUNT 1>> 3>
<SETG POISON-COUNT 4>
<COND (<NOT ,IN-ARTIFACT?>
<ENABLE <QUEUE I-BAD-AIR 1>>)
(<NOT ,SUIT-ON?>
<JIGS-UP
"You gasp for air, but there is none left, and slump to the ground, dead.">)
(T
<JIGS-UP
"Suddenly, you notice everything around you going dark, as though
the artifact was shutting down. The lights are dimming everywhere,
and a faint thrumming vibration stops; one you didn't even notice
until it ceased.">)>)
(T
<COND (<AND <NOT ,SUIT-ON?> ,IN-ARTIFACT?>
<DESCRIBE-AIR "You notice that the air has become ">)>
<QUEUE I-BAD-AIR 40>)>>
<GLOBAL AIR-COUNT 0>
<ROUTINE DESCRIBE-AIR (STR)
<COND (<==? ,POISON-COUNT 4>
<COND (<==? ,AIR-COUNT 4>
<JIGS-UP
"You gasp for air, but there is none left, and slump to the ground, dead.">)
(T
<JIGS-UP
"You are overcome by noxious gases and slump to the floor, dead.">)>)
(<G? ,POISON-COUNT 0>
<TELL .STR
<GET ,POISON-AIRS ,POISON-COUNT>
<GET <COND (,AMMONIA? ,AMMONIA-TABLE)
(T ,METHANE-TABLE)>
,POISON-COUNT>
CR>)
(T
<TELL .STR <GET ,LIGHT-AIRS ,AIR-COUNT> CR>)>>
<GLOBAL AMMONIA-TABLE <TABLE
"foo"
"glass cleaner."
"ammonia."
"ammonia.">>
<GLOBAL METHANE-TABLE <TABLE
"foo"
"charcoal."
"coal gas."
"coal gas.">>
<GLOBAL AMMONIA? <>>
<GLOBAL POISON-AIRS <TABLE
"foo"
"quite pungent, smelling vaguely of "
"quite hard to breathe, permeated with the smell of "
"almost unbreathable, and heavy with the smell of ">>
<GLOBAL LIGHT-AIRS <TABLE
"quite breathable and slightly sweet."
"quite thin."
"quite hard to breathe."
"almost unbreathable.">>

54
load.zil Normal file
View file

@ -0,0 +1,54 @@
"SF for
Zork SF Game
(c) Copyright 1981 Infocom, Inc. All Rights Reserved.
"
<SNAME "INFOCOM.SF">
<BLOAT 70000 0 0 2700 0 0 0 0 0 256>
<SET REDEFINE T>
<GLOBAL BIGFIX 10000>
<OR <GASSIGNED? ZILCH>
<SETG WBREAKS <STRING !\" !\= !,WBREAKS>>>
<OR <GASSIGNED? INSERT-CRUFTY>
<DEFINE INSERT-CRUFTY (STR) <IFILE .STR T>>>
<DEFINE IFILE (STR "OPTIONAL" (FLOAD? <>) "AUX" (TIM <TIME>))
<INSERT-FILE .STR .FLOAD?>>
<PRINC "Starcross: Interlogic Science Fiction
">
<COND (<GASSIGNED? PREDGEN>
<ID 0>)>
<IFILE "DUNGEON" T>
<PROPDEF SIZE 5>
<PROPDEF CAPACITY 0>
<PROPDEF VALUE 0>
<IFILE "SYNTAX" T>
<ENDLOAD>
<IFILE "MACROS" T>
<IFILE "CLOCK" T>
<IFILE "MAIN" T>
<IFILE "PARSER" T>
;<IFILE "DEMONS" T>
<INSERT-CRUFTY "CRUFTY">
<IFILE "VERBS" T>
<IFILE "FOO" T>
<GC 0 T>
<DEFINE CNT (STR OBL)
<PRINC .STR>
<PRIN1 <MAPF ,+ ,LENGTH .OBL>>
<CRLF>>
<IMAGE 7><IMAGE 7><IMAGE 7>

86
macros.zil Normal file
View file

@ -0,0 +1,86 @@
<SETG C-ENABLED? 0>
<SETG C-ENABLED 1>
<SETG C-DISABLED 0>
<DEFMAC TELL ("ARGS" A)
<FORM PROG ()
!<MAPF ,LIST
<FUNCTION ("AUX" E P O)
<COND (<EMPTY? .A> <MAPSTOP>)
(<SET E <NTH .A 1>>
<SET A <REST .A>>)>
<COND (<TYPE? .E ATOM>
<COND (<OR <=? <SET P <SPNAME .E>>
"CRLF">
<=? .P "CR">>
<MAPRET '<CRLF>>)
(<EMPTY? .A>
<ERROR INDICATOR-AT-END? .E>)
(ELSE
<SET O <NTH .A 1>>
<SET A <REST .A>>
<COND (<OR <=? <SET P <SPNAME .E>>
"DESC">
<=? .P "D">
<=? .P "OBJ">
<=? .P "O">>
<MAPRET <FORM PRINTD .O>>)
(<OR <=? .P "NUM">
<=? .P "N">>
<MAPRET <FORM PRINTN .O>>)
(<OR <=? .P "CHAR">
<=? .P "CHR">
<=? .P "C">>
<MAPRET <FORM PRINTC .O>>)
(ELSE
<MAPRET
<FORM PRINT
<FORM GETP .O .E>>>)>)>)
(<TYPE? .E STRING>
<MAPRET <FORM PRINTI .E>>)
(<TYPE? .E FORM>
<MAPRET <FORM PRINT .E>>)
(ELSE <ERROR UNKNOWN-TYPE .E>)>>>>>
<DEFMAC VERB? ("TUPLE" ATMS "AUX" (O ()) (L ()))
<REPEAT ()
<COND (<EMPTY? .ATMS>
<RETURN!- <COND (<LENGTH? .O 1> <NTH .O 1>)
(ELSE <FORM OR !.O>)>>)>
<REPEAT ()
<COND (<EMPTY? .ATMS> <RETURN!->)>
<SET ATM <NTH .ATMS 1>>
<SET L
(<FORM GVAL <PARSE <STRING "V?" <SPNAME .ATM>>>>
!.L)>
<SET ATMS <REST .ATMS>>
<COND (<==? <LENGTH .L> 3> <RETURN!->)>>
<SET O (<FORM EQUAL? ',PRSA !.L> !.O)>
<SET L ()>>>
<DEFMAC RFATAL ()
'<PROG () <PUSH 2> <RSTACK>>>
<DEFMAC PROB ('BASE? "OPTIONAL" 'LOSER?)
<COND (<ASSIGNED? LOSER?> <FORM ZPROB .BASE?>)
(ELSE <FORM G? .BASE? '<RANDOM 100>>)>>
<ROUTINE ZPROB
(BASE)
<COND (,LUCKY <G? .BASE <RANDOM 100>>)
(ELSE <G? .BASE <RANDOM 300>>)>>
<ROUTINE PICK-ONE (FROB)
<GET .FROB <RANDOM <GET .FROB 0>>>>
<DEFMAC ENABLE ('INT) <FORM PUT .INT ,C-ENABLED? 1>>
<DEFMAC DISABLE ('INT) <FORM PUT .INT ,C-ENABLED? 0>>
<DEFMAC OPENABLE? ('OBJ)
<FORM OR <FORM FSET? .OBJ ',DOORBIT>
<FORM FSET? .OBJ ',CONTBIT>>>
<DEFMAC ABS ('NUM)
<FORM COND (<FORM L? .NUM 0> <FORM - 0 .NUM>)
(T .NUM)>>

176
main.zil Normal file
View file

@ -0,0 +1,176 @@
"MAIN for
Zork SF Game
(c) Copyright 1981 Infocom, Inc. All Rights Reserved.
"
<GLOBAL P-WON <>>
<CONSTANT M-FATAL 2>
<CONSTANT M-HANDLED 1>
<CONSTANT M-NOT-HANDLED <>>
<CONSTANT M-BEG 1>
<CONSTANT M-END <>>
<CONSTANT M-ENTER 2>
<CONSTANT M-LOOK 3>
<CONSTANT M-FLASH 4>
<CONSTANT M-OBJDESC 5>
<ROUTINE GO ()
;"put interrupts on clock chain"
;<QUEUE I-LAMP 200>
<ENABLE <QUEUE I-NIGHT 128>>
<ENABLE <QUEUE I-ALARM 1>>
;"set up and go"
<SETG LIT T>
<SETG WINNER ,ADVENTURER>
<SETG HERE ,SPACESHIP-QUARTERS>
<MOVE ,ADVENTURER ,BUNK>
<SETG FF-HERE ,FORCE-FIELD-2>
<PUT ,MASSES 1 ,UM08>
<PUT ,MASSES 2 ,UM12>
<PUT ,MASSES 3 ,UM24>
<PUT ,MASSES 4 ,UM28>
<PUT ,MASSES 5 ,UM31>
<PUT ,MASSES 6 ,UM52>
<PUT ,MASSES 7 ,UM70>
<PUT ,MASSES 8 ,UM91>
<PUT ,KNOWNS 1 ,AB40>
<PUT ,KNOWNS 2 ,AX87>
<PUT ,KNOWNS 3 ,AX32>
<PUT ,KNOWNS 4 ,AX01>
<PUT ,KNOWNS 5 ,AX71>
<PUT ,KNOWNS 6 ,US75>
<PUT ,KNOWNS 7 ,MARS>
<SETG P-IT-LOC ,HERE>
<SETG P-IT-OBJECT <>>
<COND (<NOT <FSET? ,HERE ,TOUCHBIT>>
<V-VERSION>
<CRLF>
<TELL
"You are sound asleep in your bunk aboard the deep-space black hole
prospecting ship \"Starcross,\" operating out of Ceres. Just as your
sleep becomes deep and comfortable, an alarm bell begins ringing! It's
the mass detector! Instantly you awake. This hasn't been a profitable
trip so far, and you don't even have the cash for repairs. This could
be the break you've been waiting for.
|" CR>)>
<V-LOOK>
<MAIN-LOOP>
<AGAIN>>
<ROUTINE MAIN-LOOP ("AUX" ICNT OCNT NUM CNT OBJ TBL V PTBL OBJ1 TMP)
#DECL ((CNT OCNT ICNT NUM) FIX (V) <OR 'T FIX FALSE> (OBJ) <OR FALSE OBJECT>
(OBJ1) OBJECT (TBL) TABLE (PTBL) <OR FALSE ATOM>)
<REPEAT ()
<SET CNT 0>
<SET OBJ <>>
<SET PTBL T>
<COND (<SETG P-WON <PARSER>>
<SET ICNT <GET ,P-PRSI ,P-MATCHLEN>>
<SET NUM
<COND (<0? <SET OCNT <GET ,P-PRSO ,P-MATCHLEN>>> .OCNT)
(<G? .OCNT 1>
<SET TBL ,P-PRSO>
<COND (<0? .ICNT> <SET OBJ <>>)
(T <SET OBJ <GET ,P-PRSI 1>>)>
.OCNT)
(<G? .ICNT 1>
<SET PTBL <>>
<SET TBL ,P-PRSI>
<SET OBJ <GET ,P-PRSO 1>>
.ICNT)
(T 1)>>
<COND (<AND <NOT .OBJ> <1? .ICNT>> <SET OBJ <GET ,P-PRSI 1>>)>
<COND (<==? ,PRSA ,V?WALK> <SET V <PERFORM ,PRSA ,PRSO>>)
(<0? .NUM>
<COND (<0? <BAND <GETB ,P-SYNTAX ,P-SBITS> ,P-SONUMS>>
<SET V <PERFORM ,PRSA>>
<SETG PRSO <>>)
(T
<TELL "There isn't anything to ">
<SET TMP <GET ,P-ITBL ,P-VERBN>>
<COND (,P-OFLAG
<PRINTB <GET .TMP 0>>)
(T
<WORD-PRINT <GETB .TMP 2> <GETB .TMP 3>>)>
<TELL "!" CR>
<SET V <>>)>)
(T
<REPEAT ()
<COND (<G? <SET CNT <+ .CNT 1>> .NUM> <RETURN>)
(T
<COND (.PTBL <SET OBJ1 <GET ,P-PRSO .CNT>>)
(T <SET OBJ1 <GET ,P-PRSI .CNT>>)>
<COND (<G? .NUM 1>
<PRINTD .OBJ1>
<TELL ": ">)>
<SETG PRSO <COND (.PTBL .OBJ1) (T .OBJ)>>
<SETG PRSI <COND (.PTBL .OBJ) (T .OBJ1)>>
<SET V <PERFORM ,PRSA ,PRSO ,PRSI>>
<COND (<==? .V ,M-FATAL> <RETURN>)>)>>)>
<COND (<NOT <==? ,PRSA ,V?AGAIN>>
<SETG L-PRSA ,PRSA>
<SETG L-PRSO ,PRSO>
<SETG L-PRSI ,PRSI>)>
<SETG MOVES <+ ,MOVES 1>>
<COND (<==? .V ,M-FATAL> <SETG P-CONT <>>)>)
(T
<SETG P-CONT <>>)>
<COND (,P-WON
<COND (<VERB? TELL BRIEF SUPER-BRIEF VERBOSE SAVE SCORE> T)
(T <SET V <CLOCKER>>)>)>>>
<GLOBAL L-PRSA <>>
<GLOBAL L-PRSO <>>
<GLOBAL L-PRSI <>>
<ROUTINE PERFORM (A "OPTIONAL" (O <>) (I <>) "AUX" V OA OO OI)
#DECL ((A) FIX (O) <OR FALSE OBJECT FIX> (I) <OR FALSE OBJECT> (V) ANY)
<SET OA ,PRSA>
<SET OO ,PRSO>
<SET OI ,PRSI>
<COND (<AND <EQUAL? ,IT .I .O>
<NOT <EQUAL? ,P-IT-LOC ,HERE>>>
<TELL "I don't see what you are referring to." CR>
<RFATAL>)>
<COND (<==? .O ,IT> <SET O ,P-IT-OBJECT>)>
<COND (<==? .I ,IT> <SET I ,P-IT-OBJECT>)>
<SETG PRSA .A>
<SETG PRSO .O>
<COND (<AND ,PRSO <NOT <VERB? WALK>>>
<SETG P-IT-OBJECT ,PRSO>
<SETG P-IT-LOC ,HERE>)>
<SETG PRSI .I>
<COND (<SET V <APPLY <GETP ,WINNER ,P?ACTION>>> .V)
(<SET V <APPLY <GETP <LOC ,WINNER> ,P?ACTION> ,M-BEG>> .V)
(<SET V <APPLY <GET ,PREACTIONS .A>>> .V)
(<AND .I <SET V <APPLY <GETP .I ,P?ACTION>>>> .V)
(<AND .O
<NOT <==? .A ,V?WALK>>
<LOC .O>
<SET V <APPLY <GETP <LOC .O> ,P?CONTFCN>>>>
.V)
(<AND .O
<NOT <==? .A ,V?WALK>>
<SET V <APPLY <GETP .O ,P?ACTION>>>>
.V)
(<SET V <APPLY <GET ,ACTIONS .A>>> .V)>
<COND (<NOT <==? .V ,M-FATAL>>
<SET V <APPLY <GETP <LOC ,WINNER> ,P?ACTION> ,M-END>>)>
<SETG PRSA .OA>
<SETG PRSO .OO>
<SETG PRSI .OI>
.V>

1178
parser.zil Normal file

File diff suppressed because it is too large Load diff

54
sf.zil Normal file
View file

@ -0,0 +1,54 @@
"SF for
Zork SF Game
(c) Copyright 1981 Infocom, Inc. All Rights Reserved.
"
<SNAME "INFOCOM.SF">
<BLOAT 70000 0 0 2700 0 0 0 0 0 256>
<SET REDEFINE T>
<GLOBAL BIGFIX 10000>
<OR <GASSIGNED? ZILCH>
<SETG WBREAKS <STRING !\" !\= !,WBREAKS>>>
<OR <GASSIGNED? INSERT-CRUFTY>
<DEFINE INSERT-CRUFTY (STR) <IFILE .STR T>>>
<DEFINE IFILE (STR "OPTIONAL" (FLOAD? <>) "AUX" (TIM <TIME>))
<INSERT-FILE .STR .FLOAD?>>
<PRINC "Starcross: Interlogic Science Fiction
">
<COND (<GASSIGNED? PREDGEN>
<ID 0>)>
<IFILE "DUNGEON" T>
<PROPDEF SIZE 5>
<PROPDEF CAPACITY 0>
<PROPDEF VALUE 0>
<IFILE "SYNTAX" T>
<ENDLOAD>
<IFILE "MACROS" T>
<IFILE "CLOCK" T>
<IFILE "MAIN" T>
<IFILE "PARSER" T>
;<IFILE "DEMONS" T>
<INSERT-CRUFTY "CRUFTY">
<IFILE "VERBS" T>
<IFILE "ACTIONS" T>
<IFILE "EMERG" T>
<GC 0 T>
<DEFINE CNT (STR OBL)
<PRINC .STR>
<PRIN1 <MAPF ,+ ,LENGTH .OBL>>
<CRLF>>
<IMAGE 7><IMAGE 7><IMAGE 7>

200
sffreq.xzap Normal file
View file

@ -0,0 +1,200 @@
.FSTR FSTR?1,"the " ;1784 892
.FSTR FSTR?2,"The " ;1164 388
.FSTR FSTR?3,"and " ;670 335
.FSTR FSTR?4,", " ;603 603
.FSTR FSTR?5,"You " ;585 195
.FSTR FSTR?6,"is " ;474 474
.FSTR FSTR?7,"you " ;442 221
.FSTR FSTR?8,"There " ;440 88
.FSTR FSTR?9,". " ;425 425
.FSTR FSTR?10,"of " ;393 393
.FSTR FSTR?11,"are " ;350 175
.FSTR FSTR?12,"can't " ;290 58
.FSTR FSTR?13,"with " ;276 92
.FSTR FSTR?14,"This " ;260 65
.FSTR FSTR?15,"to " ;254 254
.FSTR FSTR?16,"which " ;244 61
.FSTR FSTR?17,"your " ;237 79
.FSTR FSTR?18,"have " ;222 74
.FSTR FSTR?19,"that " ;207 69
.FSTR FSTR?20,"corridor " ;189 27
.FSTR FSTR?21,"from " ;177 59
.FSTR FSTR?22,"into " ;174 58
.FSTR FSTR?23,"in " ;168 168
.FSTR FSTR?24,"maintenance " ;160 16
.FSTR FSTR?25,"artifact" ;156 26
.FSTR FSTR?26,"computer " ;147 21
.FSTR FSTR?27,"for " ;146 73
.FSTR FSTR?28,"space " ;144 36
.FSTR FSTR?29,"nothing " ;138 23
.FSTR FSTR?30,"here" ;136 68
.FSTR FSTR?31,"but " ;132 66
.FSTR FSTR?32,"It's " ;130 26
.FSTR FSTR?33,"already " ;126 21
.FSTR FSTR?34,"cylinder" ;120 20
.FSTR FSTR?35,"large " ;116 29
.FSTR FSTR?36,"through " ;114 19
.FSTR FSTR?37,"around " ;110 22
.FSTR FSTR?38,"crystal " ;108 18
.FSTR FSTR?39,"artifact " ;105 15
.FSTR FSTR?40,"small " ;104 26
.FSTR FSTR?41,"something " ;104 13
.FSTR FSTR?42,"this " ;102 34
.FSTR FSTR?43,"don't " ;100 20
.FSTR FSTR?44,"mouse " ;96 24
.FSTR FSTR?45,"chief " ;96 24
.FSTR FSTR?46,"about " ;96 24
.FSTR FSTR?47,"surface " ;96 16
.FSTR FSTR?48,"airlock " ;96 16
.FSTR FSTR?49,"It " ;88 44
.FSTR FSTR?50,"there " ;88 22
.FSTR FSTR?51,"some " ;87 29
.FSTR FSTR?52,"has " ;86 43
.FSTR FSTR?53,"out " ;84 42
.FSTR FSTR?54,"not " ;84 42
.FSTR FSTR?55,"seems " ;84 21
.FSTR FSTR?56,"controls " ;84 12
.FSTR FSTR?57,"Unfortunately" ;84 7
.FSTR FSTR?58,"here " ;81 27
.FSTR FSTR?59,"almost " ;80 16
.FSTR FSTR?60,"aliens " ;80 16
.FSTR FSTR?61,"mass " ;78 26
.FSTR FSTR?62,"blue " ;78 26
.FSTR FSTR?63,"strange " ;78 13
.FSTR FSTR?64,"outside " ;78 13
.FSTR FSTR?65,"starboard" ;77 11
.FSTR FSTR?66,"floating " ;77 11
.FSTR FSTR?67,"at " ;76 76
.FSTR FSTR?68,"would " ;76 19
.FSTR FSTR?69,"bubble" ;76 19
.FSTR FSTR?70,"it " ;75 75
.FSTR FSTR?71,"been " ;75 25
.FSTR FSTR?72,"yellow " ;75 15
.FSTR FSTR?73,"airlock" ;75 15
.FSTR FSTR?74,"as " ;72 72
.FSTR FSTR?75,"one " ;72 36
.FSTR FSTR?76,"end " ;72 36
.FSTR FSTR?77,"area " ;72 24
.FSTR FSTR?78,"other " ;72 18
.FSTR FSTR?79,"metal " ;72 18
.FSTR FSTR?80,"looks " ;72 18
.FSTR FSTR?81,"They " ;72 18
.FSTR FSTR?82,"wearing " ;72 12
.FSTR FSTR?83,"appears " ;72 12
.FSTR FSTR?84,"projector " ;72 9
.FSTR FSTR?85,"on " ;71 71
.FSTR FSTR?86,"safety " ;70 14
.FSTR FSTR?87,"rotation " ;70 10
.FSTR FSTR?88,"attached " ;70 10
.FSTR FSTR?89,"like " ;69 23
.FSTR FSTR?90,"then " ;66 22
.FSTR FSTR?91,"corridor" ;66 11
.FSTR FSTR?92,"control " ;66 11
.FSTR FSTR?93,"rather " ;65 13
.FSTR FSTR?94,"bubble " ;65 13
.FSTR FSTR?95,"expressionless " ;65 5
.FSTR FSTR?96,"I " ;64 64
;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

517
syntax.zil Normal file
View file

@ -0,0 +1,517 @@
"SEARCH <SYNTAX "
"SYNTAX for
Interlogic SF Game
(c) Copyright 1981,1982 Infocom, Inc. All Rights Reserved
"
"SUBTITLE VOCABULARY"
<BUZZ A AN THE IS ARE EQUALS ;= AND OF THEN ALL ONE BUT EXCEPT \. \, \" OUR>
<SYNONYM WITH USING THROUGH>
<SYNONYM IN INSIDE INTO>
<SYNONYM ALL BOTH>
<SYNONYM NORTH N FORE FORWARD FOREWARD F>
<SYNONYM SOUTH S AFT>
<SYNONYM EAST E CW STARBOARD SB>
<SYNONYM WEST W CCW PORT P>
<SYNONYM DOWN D>
<SYNONYM UP U>
\
"ZORK game commands"
<SYNTAX BRIEF = V-BRIEF>
<SYNTAX SUPER = V-SUPER-BRIEF>
<SYNONYM SUPER SUPERBRIEF>
<SYNTAX DIAGNOSE = V-DIAGNOSE>
<SYNTAX INVENTORY = V-INVENTORY>
<SYNONYM INVENTORY I>
<SYNTAX QUIT = V-QUIT>
<SYNONYM QUIT Q>
<SYNTAX RESTART = V-RESTART>
<SYNTAX RESTORE = V-RESTORE>
<SYNTAX SAVE = V-SAVE>
<SYNTAX SCORE = V-SCORE>
<SYNTAX $VERIFY = V-$VERIFY>
<SYNTAX VERSION = V-VERSION>
<SYNTAX VERBOSE = V-VERBOSE>
\
"SUBTITLE REAL VERBS"
<SYNTAX AGAIN = V-AGAIN>
<SYNTAX ANSWER = V-ANSWER>
<SYNTAX ANSWER OBJECT = V-REPLY>
<SYNONYM ANSWER REPLY>
<SYNTAX APPLY OBJECT TO OBJECT = V-PUT PRE-PUT>
<SYNTAX ATTACK
OBJECT (FIND VILLAIN) (ON-GROUND IN-ROOM)
WITH
OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE)
= V-ATTACK>
<SYNONYM ATTACK FIGHT HURT INJURE HIT>
<SYNTAX BACK = V-BACK>
<SYNTAX BOARD OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM)
= V-BOARD PRE-BOARD>
<SYNTAX CLIMB ON OBJECT (FIND CLIMBBIT) (ON-GROUND IN-ROOM) = V-CLIMB-ON>
<SYNTAX CLIMB UP OBJECT (FIND CLIMBBIT) (ON-GROUND IN-ROOM) = V-CLIMB-UP>
<SYNTAX CLIMB DOWN OBJECT (FIND CLIMBBIT) (ON-GROUND IN-ROOM) = V-CLIMB-DOWN>
<SYNTAX CLIMB OBJECT (FIND CLIMBBIT) (ON-GROUND IN-ROOM) = V-CLIMB-FOO>
<SYNTAX CLIMB IN OBJECT (FIND CLIMBBIT) (ON-GROUND IN-ROOM) = V-BOARD PRE-BOARD>
<SYNONYM CLIMB SIT RECLINE LIE LAY>
<SYNTAX STAND = V-STAND>
<SYNTAX STAND UP OBJECT (FIND RMUNGBIT) = V-STAND>
<SYNTAX STAND ON OBJECT = V-STAND-ON>
<SYNONYM STAND>
<SYNTAX CLOSE
OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM)
= V-CLOSE>
<SYNTAX CURSE = V-CURSES>
<SYNTAX CURSE OBJECT (FIND VILLAIN) = V-CURSES>
<SYNONYM CURSE DAMN>
<SYNTAX DIG
IN
OBJECT ;(FIND DIGBIT) (ON-GROUND IN-ROOM)
= V-DIG>
<SYNTAX DIG
WITH ;"REALLY THROUGH?"
OBJECT ;(FIND DIGBIT) (ON-GROUND IN-ROOM)
= V-DIG>
<SYNTAX DISEMBARK OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM)
= V-DISEMBARK>
<SYNTAX DRINK
OBJECT (FIND DRINKBIT) (HELD CARRIED ON-GROUND IN-ROOM)
= V-DRINK>
<SYNONYM DRINK IMBIBE SWALLOW>
<SYNTAX DROP OBJECT (HELD MANY HAVE) = V-DROP ;*>
<SYNTAX DROP OBJECT (HELD MANY HAVE) DOWN OBJECT = V-PUT PRE-PUT>
<SYNTAX DROP OBJECT (HELD MANY HAVE) IN OBJECT = V-PUT PRE-PUT>
<SYNTAX DROP OBJECT (HELD MANY HAVE) ON OBJECT = V-PUT-ON PRE-PUT>
<SYNONYM DROP RELEASE>
<SYNTAX EAT
OBJECT (FIND FOODBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE MANY)
= V-EAT>
<SYNONYM EAT BITE TASTE>
<SYNTAX ENTER = V-ENTER>
<SYNTAX ENTER OBJECT = V-THROUGH>
<SYNTAX EXIT = V-EXIT>
<SYNTAX EXIT OBJECT = V-EXIT>
<SYNTAX EXAMINE OBJECT = V-EXAMINE>
<SYNTAX EXAMINE IN OBJECT (HELD CARRIED IN-ROOM ON-GROUND MANY)
= V-LOOK-INSIDE>
<SYNTAX EXAMINE ON OBJECT (HELD CARRIED IN-ROOM ON-GROUND MANY)
= V-LOOK-INSIDE>
<SYNONYM EXAMINE DESCRIBE WHAT WHATS>
<SYNTAX FIND OBJECT
= V-FIND>
<SYNONYM FIND WHERE SEEK SEE>
<SYNTAX FIRE OBJECT WITH OBJECT (FIND WEAPONBIT) (HELD) = V-SZAP PRE-SZAP>
<SYNTAX FIRE OBJECT = V-ZAP PRE-ZAP>
<SYNTAX FIRE OBJECT (FIND WEAPONBIT) (HELD)
AT OBJECT = V-ZAP>
<SYNONYM FIRE ZAP BLAST SHOOT BURN>
<SYNTAX FOLLOW = V-FOLLOW>
<SYNTAX FOLLOW OBJECT = V-FOLLOW>
<SYNONYM FOLLOW PURSUE CHASE>
<SYNTAX FLY = V-FLY>
<SYNTAX FLY OBJECT = V-FLY>
<SYNTAX GIVE
OBJECT (MANY HELD HAVE ;CARRIED ;ON-GROUND ;IN-ROOM)
TO
OBJECT (FIND VICBIT) (ON-GROUND)
= V-GIVE PRE-GIVE>
<SYNTAX GIVE
OBJECT (FIND VICBIT) (ON-GROUND)
OBJECT (MANY HELD HAVE)
= V-SGIVE PRE-SGIVE>
<SYNONYM GIVE HAND DONATE OFFER FEED>
<SYNTAX HELLO = V-HELLO ;*>
<SYNTAX HELLO OBJECT = V-HELLO>
<SYNONYM HELLO HI>
<SYNTAX BLOW OUT OBJECT = V-LAMP-OFF>
<SYNTAX JUMP = V-LEAP>
<SYNTAX JUMP OVER OBJECT = V-LEAP>
<SYNTAX JUMP ACROSS OBJECT = V-LEAP>
<SYNTAX JUMP IN OBJECT = V-LEAP>
<SYNTAX JUMP FROM OBJECT = V-LEAP>
<SYNTAX JUMP OFF OBJECT = V-LEAP>
<SYNONYM JUMP LEAP>
<SYNTAX KICK OBJECT = V-KICK>
<SYNTAX KILL OBJECT (FIND VILLAIN) (ON-GROUND IN-ROOM) = V-KILL>
<SYNTAX KILL
OBJECT (FIND VILLAIN) (ON-GROUND IN-ROOM)
WITH
OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE)
= V-KILL>
<SYNONYM KILL MURDER SLAY DISPATCH STAB>
<SYNTAX KISS OBJECT (FIND VILLAIN) (ON-GROUND IN-ROOM) = V-KISS>
<SYNTAX KNOCK AT OBJECT = V-KNOCK ;*>
<SYNTAX KNOCK ON OBJECT = V-KNOCK>
<SYNTAX KNOCK DOWN OBJECT (FIND VICBIT) (ON-GROUND IN-ROOM) = V-ATTACK>
<SYNONYM KNOCK RAP>
<SYNTAX LAND = V-LAND>
<SYNTAX LAND OBJECT = V-LAND>
<SYNTAX LAND ON OBJECT = V-LAND>
<SYNTAX LAND WITH OBJECT = V-LAND>
<SYNONYM LAND DOCK INTERCEPT RENDEZVOUS>
<SYNTAX LAUNCH OBJECT (FIND VEHBIT) = V-LAUNCH>
<SYNTAX LEAVE = V-LEAVE>
<SYNTAX LEAVE OBJECT = V-DROP>
<SYNTAX LISTEN TO OBJECT = V-LISTEN>
<SYNTAX LISTEN FOR OBJECT = V-LISTEN>
<SYNTAX LOCK
OBJECT (ON-GROUND IN-ROOM)
WITH
OBJECT (FIND TOOLBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE)
= V-LOCK>
<SYNTAX LOOK = V-LOOK>
<SYNTAX LOOK AROUND OBJECT (FIND RMUNGBIT) = V-LOOK>
<SYNTAX LOOK AT OBJECT (HELD CARRIED ON-GROUND IN-ROOM MANY) = V-EXAMINE>
<SYNTAX LOOK WITH OBJECT = V-LOOK-INSIDE>
<SYNTAX LOOK UNDER OBJECT = V-LOOK-UNDER>
<SYNTAX LOOK BEHIND OBJECT = V-LOOK-BEHIND>
<SYNTAX LOOK IN OBJECT (HELD CARRIED ON-GROUND IN-ROOM MANY) = V-LOOK-INSIDE>
<SYNTAX LOOK IN OBJECT (HELD CARRIED ON-GROUND IN-ROOM MANY) WITH OBJECT = V-LOOK-SAFELY>
<SYNTAX LOOK AT OBJECT (HELD CARRIED ON-GROUND IN-ROOM MANY) WITH OBJECT = V-LOOK-SAFELY>
<SYNTAX LOOK FOR OBJECT = V-FIND>
<SYNONYM LOOK L STARE GAZE>
<SYNTAX SEARCH OBJECT = V-SEARCH>
<SYNTAX SEARCH IN OBJECT = V-SEARCH>
<SYNTAX SEARCH FOR OBJECT = V-FIND>
<SYNTAX SEARCH WITH OBJECT = V-SEARCH> ;"THROUGH"
<SYNONYM SEARCH EMPTY RUMMAGE SORT SIFT>
<SYNTAX LOWER OBJECT = V-LOWER>
<SYNTAX MOVE OBJECT (ON-GROUND IN-ROOM) = V-MOVE PRE-MOVE>
<SYNONYM MOVE>
<SYNTAX PLAY OBJECT = V-PLAY>
<SYNTAX POINT AT OBJECT (ON-GROUND IN-ROOM) = V-POINT>
<SYNTAX POINT TO OBJECT (ON-GROUND IN-ROOM) = V-POINT>
<SYNTAX POINT OBJECT (HELD CARRIED HAVE) AT OBJECT (ON-GROUND IN-ROOM)
= V-POINT>
<SYNONYM POINT GESTURE AIM>
<SYNTAX PULL OBJECT (ON-GROUND IN-ROOM) = V-MOVE PRE-MOVE ; *>
<SYNTAX PULL ON OBJECT (ON-GROUND IN-ROOM) = V-MOVE PRE-MOVE>
<SYNONYM PULL TUG>
<SYNTAX DESTROY
OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
WITH
OBJECT (HELD CARRIED TAKE)
= V-MUNG PRE-MUNG>
<SYNTAX DESTROY
DOWN
OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
WITH
OBJECT (HELD CARRIED TAKE)
= V-MUNG PRE-MUNG>
<SYNONYM DESTROY DAMAGE BREAK BLOCK SMASH>
<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)
= V-OPEN>
<SYNTAX PICK OBJECT = V-PICK>
<SYNTAX PICK OBJECT WITH OBJECT = V-PICK>
<SYNTAX PICK UP
OBJECT (FIND TAKEBIT)
(ON-GROUND MANY)
= V-TAKE PRE-TAKE>
<SYNTAX PLUG OBJECT WITH OBJECT = V-PLUG>
<SYNONYM PLUG GLUE PATCH REPAIR FIX>
<SYNTAX POKE
OBJECT (FIND VILLAIN) (ON-GROUND IN-ROOM)
WITH
OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE)
= V-MUNG PRE-MUNG>
<SYNONYM POKE JAB BLIND>
<SYNTAX PUSH OBJECT = V-PUSH>
<SYNTAX PUSH ON OBJECT = V-PUSH>
<SYNTAX PUSH OFF OBJECT = V-PUSH>
<SYNTAX PUSH AGAINST OBJECT = V-PUSH>
<SYNTAX PUSH OBJECT UNDER OBJECT = V-PUT-UNDER>
<SYNONYM PUSH PRESS>
<SYNTAX PUT OBJECT (HELD MANY HAVE TAKE) IN OBJECT = V-PUT PRE-PUT ;*>
<SYNTAX PUT OBJECT (HELD MANY HAVE TAKE) ON OBJECT = V-PUT-ON PRE-PUT>
<SYNTAX PUT DOWN OBJECT (HELD MANY HAVE) = V-DROP>
<SYNTAX PUT OBJECT (HELD MANY HAVE TAKE) UNDER OBJECT = V-PUT-UNDER>
<SYNTAX PUT ON OBJECT = V-WEAR>
<SYNONYM PUT STUFF INSERT PLACE>
<SYNTAX RAISE OBJECT = V-RAISE ;*>
<SYNTAX RAISE UP OBJECT = V-RAISE>
<SYNONYM RAISE LIFT>
<SYNTAX RAPE OBJECT (FIND VICBIT) = V-RAPE>
<SYNONYM RAPE MOLEST>
<SYNTAX REACH IN OBJECT (FIND CONTBIT) = V-REACH>
<SYNTAX REACH FOR OBJECT = V-REACH-FOR>
<SYNTAX READ
OBJECT (FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE)
= V-READ PRE-READ ; *>
<SYNTAX READ
OBJECT (FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE)
WITH
OBJECT
= V-READ PRE-READ>
<SYNONYM READ SKIM>
<SYNTAX RUB OBJECT = V-RUB>
<SYNTAX RUB OBJECT WITH OBJECT = V-RUB>
<SYNONYM RUB TOUCH FEEL PAT PET>
<SYNTAX SCRIPT = V-SCRIPT>
<SYNTAX UNSCRIPT = V-UNSCRIPT>
<SYNTAX SHAKE OBJECT (HAVE TAKE) = V-SHAKE>
<SYNTAX SLIDE OBJECT UNDER OBJECT = V-PUT-UNDER>
<SYNTAX SKIP = V-SKIP>
<SYNONYM SKIP HOP>
<SYNTAX SMELL OBJECT = V-SMELL>
<SYNONYM SMELL SNIFF>
<SYNTAX STEP ON OBJECT = V-STEP-ON>
<SYNTAX STRIKE
OBJECT (FIND VICBIT) (ON-GROUND IN-ROOM)
WITH
OBJECT (FIND WEAPONBIT) (HELD CARRIED ON-GROUND IN-ROOM HAVE)
= V-ATTACK>
<SYNTAX STRIKE
OBJECT (FIND VICBIT) (ON-GROUND IN-ROOM)
= V-ATTACK ;*>
<SYNTAX SWIM = V-SWIM>
<SYNTAX SWIM IN OBJECT = V-SWIM>
<SYNONYM SWIM BATHE WADE>
<SYNTAX TAKE
OBJECT (FIND TAKEBIT) (ON-GROUND MANY)
= V-TAKE PRE-TAKE ;*>
<SYNTAX TAKE IN OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-BOARD PRE-BOARD>
<SYNTAX TAKE OUT OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-DISEMBARK>
<SYNTAX TAKE ON OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-CLIMB-ON>
<SYNTAX TAKE
OBJECT (FIND TAKEBIT) (CARRIED IN-ROOM)
OUT
OBJECT
= V-TAKE PRE-TAKE>
<SYNTAX TAKE
OBJECT (FIND TAKEBIT) (CARRIED IN-ROOM)
OFF
OBJECT
= V-TAKE PRE-TAKE>
<SYNTAX TAKE
OBJECT (FIND TAKEBIT) (IN-ROOM CARRIED)
FROM
OBJECT
= V-TAKE PRE-TAKE>
<SYNTAX TAKE OFF OBJECT (FIND WEARBIT) (HELD CARRIED) = V-TAKE-OFF>
<SYNTAX TAKE UP OBJECT (FIND RMUNGBIT) = V-STAND> ;"GET UP"
<SYNONYM TAKE GET HOLD CARRY>
<SYNTAX REMOVE OBJECT = V-REMOVE>
<SYNTAX REMOVE OBJECT FROM OBJECT = V-TAKE>
<SYNTAX TELL OBJECT (FIND VICBIT) (IN-ROOM) = V-TELL>
<SYNONYM TELL ASK>
<SYNTAX SMILE AT OBJECT (FIND VILLAIN) = V-SMILE>
<SYNTAX SMILE = V-SMILE>
<SYNONYM SMILE GRIN>
<SYNTAX SAY TO OBJECT (FIND VICBIT) (IN-ROOM) = V-TELL>
<SYNTAX SAY = V-SAY>
<SYNONYM SAY TALK>
<SYNTAX THROW
OBJECT (HELD CARRIED HAVE)
AT
OBJECT (ON-GROUND IN-ROOM)
= V-THROW ;*>
<SYNTAX THROW
OBJECT (HELD CARRIED HAVE)
WITH
OBJECT (ON-GROUND IN-ROOM)
= V-THROW>
<SYNTAX THROW OBJECT (HELD CARRIED HAVE) IN OBJECT = V-PUT PRE-PUT>
<SYNTAX THROW OBJECT (HELD CARRIED HAVE) ON OBJECT = V-PUT PRE-PUT>
<SYNTAX THROW OBJECT (HELD CARRIED HAVE) OVER OBJECT = V-PUT PRE-PUT>
<SYNTAX THROW OBJECT (HELD CARRIED HAVE) = V-THROW>
<SYNONYM THROW HURL CHUCK TOSS>
<SYNTAX HOOK OBJECT (HELD CARRIED) = V-TIE>
<SYNTAX HOOK OBJECT (HELD CARRIED) TO OBJECT = V-TIE PRE-TIE>
<SYNONYM HOOK TIE FASTEN SECURE ATTACH BUCKLE>
<SYNTAX TURN
OBJECT (FIND TURNBIT) ( HELD CARRIED ON-GROUND IN-ROOM)
WITH
OBJECT (FIND TOOLBIT) (ON-GROUND IN-ROOM HELD CARRIED HAVE)
= V-TURN PRE-TURN ;*>
<SYNTAX TURN ON
OBJECT (FIND LIGHTBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE)
= V-LAMP-ON>
<SYNTAX TURN OFF
OBJECT (FIND LIGHTBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE)
= V-LAMP-OFF>
<SYNTAX TURN
OBJECT (ON-GROUND IN-ROOM)
TO
OBJECT
= V-SET>
<SYNONYM TURN FLIP SHUT>
<SYNTAX SET OBJECT (ON-GROUND IN-ROOM) TO OBJECT = V-SET>
<SYNTAX SET OBJECT (ON-GROUND IN-ROOM) FOR OBJECT = V-SET>
<SYNONYM SET PLOT>
<SYNTAX UNLOCK
OBJECT (ON-GROUND IN-ROOM)
WITH
OBJECT (FIND TOOLBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE)
= V-UNLOCK>
<SYNTAX UNTIE
OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
= V-UNTIE ;*>
<SYNTAX UNTIE
OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
FROM
OBJECT (HELD CARRIED)
= V-UNTIE>
<SYNONYM UNTIE FREE UNFASTEN DETACH UNATTACH UNHOOK UNBUCKLE>
<SYNTAX WAIT = V-WAIT>
<SYNTAX WAKE OBJECT (FIND VICBIT) (ON-GROUND IN-ROOM) = V-ALARM ;*>
<SYNTAX WAKE UP OBJECT (FIND VICBIT) (ON-GROUND IN-ROOM) = V-ALARM>
<SYNONYM WAKE AWAKE SURPRISE STARTLE>
<SYNTAX WALK OBJECT = V-WALK>
<SYNTAX WALK IN OBJECT = V-THROUGH>
<SYNTAX WALK WITH OBJECT = V-THROUGH>
<SYNTAX WALK AROUND OBJECT = V-WALK-AROUND>
<SYNTAX WALK UP OBJECT (FIND CLIMBBIT) (ON-GROUND IN-ROOM) = V-CLIMB-UP>
<SYNTAX WALK DOWN OBJECT (FIND CLIMBBIT) (ON-GROUND IN-ROOM) = V-CLIMB-DOWN>
<SYNTAX WALK TO OBJECT = V-WALK-TO>
<SYNONYM WALK GO RUN PROCEED>
<SYNTAX WAVE OBJECT (HELD CARRIED) = V-WAVE>
<SYNTAX WAVE OBJECT (HELD CARRIED) AT OBJECT = V-WAVE>
<SYNONYM WAVE BRANDISH>
<SYNTAX WEAR OBJECT = V-WEAR>
<SYNONYM WEAR DON>
<SYNTAX YELL = V-YELL>
<SYNONYM YELL SCREAM SHOUT>
<SYNTAX ZORK = V-ZORK>
<SYNTAX YES = V-YES>
<SYNTAX YES OBJECT = V-YES>
<SYNONYM YES Y CONFIRM AFFIRMATIVE>
<SYNTAX NO = V-NO>
<SYNONYM NO NEGATIVE CANCEL>
;"Simple questions"
;"<SYNTAX WHAT ...> WHAT is a synonym of EXAMINE"
;"<SYNTAX WHERE ...> WHERE is a synonym of FIND"
<SYNTAX IS OBJECT IN OBJECT = V-IS-IN>
<SYNTAX IS OBJECT ON OBJECT = V-IS-IN>
<SYNTAX R OBJECT = V-R>
<SYNONYM R RANGE>
<SYNTAX THETA OBJECT = V-THETA>
<SYNONYM THETA ANGLE>
<SYNTAX PHI OBJECT = V-PHI>
<SYNONYM PHI ELEVATION>
;<SYNTAX $CHEAT = V-CHEAT>
<SYNTAX REPORT OBJECT = V-REPORT>
<SYNTAX $FALL OBJECT OBJECT = V-FALL> ;"for objects falling inside sphere"
;<SYNTAX $MOUSE = V-MOUSE>

1380
verbs.zil Normal file

File diff suppressed because it is too large Load diff