xref: /original-bsd/contrib/dungeon/dungeon.doc (revision 9bb5f699)
1To:	Dungeon Players
2From:	"The Translator"
3Subj:	Game Information
4Date:	8-OCT-80, 6-dec-85
5
6
7This is the first (and last) source release of the PDP-11 version of
8Dungeon.
9
10Please note that Dungeon has been superceded by the game ZORK(tm).
11The following is an extract from the new product announcement for
12ZORK in the September, 1980 issue of the RT-11 SIG newsletter:
13
14  "'ZORK:  The Great Underground Empire - Part I' ...was developed
15   by the original authors based on their ZORK (Dungeon) game for
16   the PDP-10.  It features a greatly improved parser;  command
17   input and transcript output files;  SAVEs to any device and
18   file name;  and adaptation to different terminal types,
19   including a status line on VT100s.  Note:  this is not the
20   FORTRAN version that has been available through DECUS.  This
21   version has been completely rewritten to run efficiently on
22   small machines - up to 10 times as fast as the DECUS version.
23
24   ...ZORK runs under RT-ll, HT-ll, or RSTS/E and requires as
25   little as 20K words of memory and a single floppy disk drive.
26   The game package, consisting of an RX01-format diskette and
27   an instruction booklet, is available from Infocom, Inc.,
28   P.O. Box 120, Kendall Station, Cambridge, Ma. 02142."
29
30ZORK(tm) is a trademark of Infocom, Inc.  It is available for several
31popular personal computers as well as for the PDP-ll.
32
33
341.  Components
35
36Dungeon is a maze-solving game for solitaire play.  It runs on any PDP-11
37(with 28KW of memory or more) or VAX-11.
38
39The following compile and run information does not apply to the
40f77/Unix implementation.  See the README file for information on
41compilation.
42
43Dungeon consists of the following files:
44
45
46	all operating systems
47	---------------------
48
49	DMAIN.FTN			-program root
50	DGAME.FTN			-main routine
51	DSUB.FTN			-resident subroutines
52	DINIT.FTN			-initialization routine
53	NP.FOR				-parser, part 0
54	NP1.FOR				-parser, part 1
55	NP2.FOR				-parser, part 2
56	NP3.FOR				-parser, part 3
57	GDT.FTN				-game debugging tool
58	VERBS.FTN			-principal verbs
59	OBJCTS.FTN			-principal objects
60	SVERBS.FTN			-simple verbs
61	DVERB1.FTN			-auxiliary verbs, part 1
62	DVERB2.FTN			-auxiliary verbs, part 2
63	all operating systems (continued)
64	---------------------------------
65
66	ACTORS.FTN			-character processors
67	DEMONS.FTN			-demon processors
68	CLOCKR.FTN			-clock event processors
69	ROOMS.FOR			-room processors
70	NROOMS.FOR			-new room processors
71	SOBJS.FOR			-simple objects
72	NOBJS.FOR			-new objects
73	BALLOP.FOR			-balloon processor
74	LIGHTP.FOR			-light processors
75	VILLNS.FOR			-villain processors
76	DSO1.FOR			-overlaid subroutines, part 1
77	DSO2.FOR			-overlaid subroutines, part 2
78	DSO3.FOR			-overlaid subroutines, part 3
79	DSO4.FOR			-overlaid subroutines, part 4
80	DSO5.FOR			-overlaid subroutines, part 5
81	DSO6.FOR			-overlaid subroutines, part 6
82	DSO7.FOR			-overlaid subroutines, part 7
83	DINDX.DAT			-initialization data base
84	DTEXT.DAT			-main data base [binary file]
85	DUNGEO.DOC			-this file
86
87
88	RT11 only
89	---------
90
91	RTTIM.FOR			-time subroutine
92	RRND.MAC			-random number generator
93	RTCMP.COM			-compile command file
94	RTBLD.COM			-link command file
95
96
97	RSTS/E only
98	-----------
99
100	RTTIM.FOR			-time subroutine
101	RRND.MAC			-random number generator
102	RSTSCB.CTL			-compile/build batch file
103
104
105	RSX11M, RSX11M+ only
106	--------------------
107
108	RSXTIM.MAC			-time subroutine
109	RRND.MAC			-random number generator
110	RSXCMP.CMD			-compile command file
111	RSXBLD.CMD			-task build command file
112	D.ODL				-overlay descriptor file
113
114
115	VMS only
116	--------
117
118	VMSTIM.FOR			-time subroutine
119	VMSRND.MAC			-random number generator
120	VMSCMP.COM			-compile command file
121	VMSBLD.COM			-link command file
1222.  Installation Instructions, RT11
123
124Before starting, please note that:
125
126  - Dungeon requires RT11 V3 or later.
127
128  - Dungeon requires Fortran-IV V2 or later, threaded code option.
129
130  - Dungeon requires 26KW of user memory (runs under SJ monitor only).
131
132  - All files (source and object) must reside on the same disk
133    (at least 2500 disk blocks are needed).
134
135  - Dungeon does not require EIS or floating point.
136
137Except for DTEXT.DAT, all files in the distribution kit are ASCII.
138DTEXT.DAT is a binary file consisting of 76-byte fixed length records.
139If the distribution kit consists of RT11-compatible media, then PIP
140can be used to transfer the files.  If the distribution kit consists
141of DOS-compatible media, then FILEX must be used to transfer the files.
142The /I switch (image binary) must be used to transfer DTEXT.DAT;  the
143/A (ASCII) switch should be used to transfer the other files.
144
145To compile Dungeon, issue the following command:
146
147  .@RTCMP(cr)
148
149Several of the compilations will produce warning messages, but none
150should produce a fatal error.
151
152To link the compiled sources, issue the following command:
153
154  .@RTBLD(cr)
155
156The command file assumes that the Fortran-IV object time library has
157been merged into the system library.  If this is not the case, edit
158RTBLD.COM and add switch /LINKLIBRARY:FORLIB.OBJ to the first command
159line.
160
161It is now possible to run Dungeon:
162
163  .R DUNGEO(cr)
164
165When invoked, Dungeon takes no more than 5-10 seconds to start up.
166
167Notes on the executable program:
168
169  - The only files needed to execute Dungeon are DUNGEO.SAV,
170    DINDX.DAT, and DTEXT.DAT.  All other files can be deleted.
171
172  - Files DINDX.DAT and DTEXT.DAT must reside on logical device SY:
173    (this can be changed with a source edit, see section 8).
1743.  Installation Instructions, RSTS/E
175
176Before starting, please note that:
177
178  - Dungeon requires RSTS/E V6C or later.
179
180  - Dungeon requires Fortran-IV V2 or later, threaded code option
181    (operation under Fortran-IV-Plus V2.5 or later will probably
182    work but is not supported).
183
184  - Dungeon requires 28KW of user memory.
185
186  - All files (source and object) must reside in the same user area
187    (at least 2500 disk blocks are needed).
188
189  - Dungeon does not require EIS or floating point.
190
191Except for DTEXT.DAT, all files in the distribution kit are ASCII.
192DTEXT.DAT is a binary file consisting of 76-byte fixed length records.
193If the distribution kit consists of RT11- or DOS-compatible disks,
194then FIT can be used to transfer the files.  For example (RT11 disk):
195
196  RUN $FIT(cr)
197  FIT>*.*/RSTS=DK:*.*/RT11(cr)
198  FIT>^Z
199
200If the distribution kit consists of DOS-compatible magtape, then PIP
201can be used to transfer the files, providing that the magtape is
202assigned as a DOS-label device.  For example:
203
204  ASSIGN MM0:.DOS(cr)
205  RUN $PIP(cr)
206  **.*/AS=MM:*.FTN,*.FOR,*.MAC,*.DOC,*.CTL(cr)
207  **.*/AS=MM:*.CMD,*.COM,*.ODL,DINDX.DAT(cr)
208  **.*/BL=MM:DTEXT.DAT(cr)
209  *^C
210  DEASS MM0:(cr)
211
212To compile and link Dungeon, submit control file RSTSCB.CTL to the
213batch processor:
214
215  SUBMIT RSTSCB.CTL(cr)
216
217Several of the compilations will produce warning messages, but none
218should produce a fatal error.
219
220It is now possible to run Dungeon:
221
222  RUN DUNGEO(cr)
223
224When invoked, Dungeon takes no more than 5-10 seconds to start up.
225
226Notes on the executable program:
227
228  - The only files needed to execute Dungeon are DUNGEO.SAV,
229    DINDX.DAT, and DTEXT.DAT.  All other files can be deleted.
230
231  - Files DINDX.DAT and DTEXT.DAT must reside in the user's area on
232    logical device SY: (this can be changed with a source edit, see
233    section 8).
2344.  Installation Instructions, RSX11M and RSX11M+
235
236Before starting, please note that:
237
238  - Dungeon requires RSX11M V3 (RSX11M+ V1) or later.
239
240  - Dungeon requires Fortran-IV-Plus V2.5 or later (operation under
241    Fortran-IV V2 or later will probably work but is not supported).
242
243  - Dungeon requires a 32KW user partition (mapped systems only).
244
245  - All files (source and object) must reside in the same user area
246    (at least 2500 disk blocks are needed).
247
248  - TKB should invoke BIGTKB.TSK with a large memory increment.
249
250  - The Fortran-IV-Plus object time library must be merged into
251    the system library (SYSLIB.OLB).  Further, the library must
252    be set up to invoke the short error text module ($SHORT) as
253    the default.  Task building with a separate object time library
254    produces numerous errors;  task building with a resident library
255    or the normal error text module produces an oversize task image.
256
257  - Dungeon requires EIS but not floating point.
258
259Except for DTEXT.DAT, all files in the distribution kit are ASCII.
260DTEXT.DAT is a binary file consisting of 76-byte fixed length records.
261If the distribution kit consists of Files-11 compatible media, then
262PIP can be used to transfer the files.  For example:
263
264  >PIP SY:*.*=MM:*.*(cr)            -requires ANSI magtape support
265
266If the distribution kit consists of DOS- or RT11-compatible media,
267then FLX must be used to transfer the files.  The /IM:76. switch
268(image binary fixed length) must be used to transfer DTEXT.DAT;
269the /FA switch (formatted ASCII) should be used to transfer the
270other files.  For example (DOS magtape):
271
272  >FLX(cr)
273  FLX>SY:/RS/FA=MM:*.FTN,*.FOR,*.MAC,*.DOC/DO(cr)
274  FLX>SY:/RS/FA=MM:*.CMD,*.COM,*.ODL,DINDX.DAT/DO(cr)
275  FLX>SY:/RS/IM:76.=MM:DTEXT.DAT/DO(cr)
276  FLX>^Z
277
278To compile Dungeon, issue the following command:
279
280  >@RSXCMP(cr)
281
282There should be no error messages.
283
284To task build the compiled sources, issue the following command:
285
286  >TKB @RSXBLD(cr)
287
288It is now possible to run Dungeon:
289
290  >RUN DUNGEON(cr)
291
292When invoked, Dungeon takes no more than 5-10 seconds to start up.
293If your system maintains a separate Fortran-IV-Plus object time
294library (F4POTS.OLB), then you must create a local copy of the
295system library with the Fortran-IV-Plus object time library
296merged in and the short error text as the default.  The following
297commands are an example of how such a local copy could be built:
298
299  >PIP SY:*.*=LB:[1,1]SYSLIB.OLB,F4POTS.OLB(cr)	-copy libraries
300  >LBR(cr)					-invoke LBR
301  LBR>SHORT.OBJ=F4POTS.OLB/EX:$SHORT(cr)	-extract $SHORT
302  LBR>F4POTS.OLB/DE:$SHORT(cr)			-delete $SHORT
303  LBR>F4POTS.OBJ=F4POTS.OLB/EX(cr)		-extract other modules
304  LBR>SYSLIB.OLB=F4POTS.OBJ(cr)			-insert other modules
305  LBR>SYSLIB.OLB/DG:$ERTXT(cr)			-delete dup entry
306  LBR>SYSLIB.OLB=SHORT.OBJ/RP(cr)		-insert $SHORT
307  LBR>^Z
308  >PIP F4POTS.*;*,SHORT.OBJ;*/DE(cr)
309
310Then edit D.ODL to reference the local library instead of the
311default system library:
312
313  >TEC D.ODL(cr)
314  *FS[1,1]$SY:$EX$$
315
316Dungeon can now be task built as described above.
317
318Notes on the executable program:
319
320  - The only files needed to execute Dungeon are DUNGEON.TSK,
321    DINDX.DAT, and DTEXT.DAT.  All other files can be deleted.
322
323  - Files DINDX.DAT and DTEXT.DAT must reside in the user's area on
324    logical device SY: (this can be changed with a source edit, see
325    section 8).
326
327  - Exiting from Dungeon via an MCR ABOrt command instead of the QUIT
328    command will leave file DTEXT.DAT open and locked.  The file must
329    be manually unlocked before the game is next invoked:
330
331    >PIP DTEXT.DAT/UN(cr)
3325.  Installation Instructions, VMS
333
334Before starting, please note that:
335
336  - Dungeon requires VMS V1 or later.
337
338  - Dungeon requires VAX Fortran-IV V1 or later.
339
340  - All files (source and object) must reside in the user's area
341    (at least 2500 disk blocks are needed).
342
343Except for DTEXT.DAT, all files in the distribution kit are ASCII.
344DTEXT.DAT is a binary file consisting of 76-byte fixed length records.
345If the distribution kit consists of Files-11 compatible media, then
346COPY can be used to transfer the files.  For example:
347
348  $ COPY MM:*.* *.*(cr)
349
350If the distribution kit consists of DOS- or RT11-compatible media,
351then FLX must be used to transfer the files.  The /IM:76. switch
352(image binary fixed length) must be used to transfer DTEXT.DAT;
353the /FA switch (formatted ASCII) should be used to transfer the
354other files.  For example (DOS magtape):
355
356  $ MCR FLX(cr)
357  FLX>SY:/RS/FA=MM:*.FTN,*.FOR,*.MAC,*.DOC/DO(cr)
358  FLX>SY:/RS/FA=MM:*.CMD,*.COM,*.ODL,DINDX.DAT/DO(cr)
359  FLX>SY:/RS/IM:76.=MM:DTEXT.DAT/DO(cr)
360  FLX>^Z
361
362To compile Dungeon, issue the following command:
363
364  $ @VMSCMP(cr)
365
366There should be no error messages.
367
368To link the compiled sources, issue the following command:
369
370  $ @VMSBLD(cr)
371
372It is now possible to run Dungeon:
373
374  $ RUN DUNGEON(cr)
375
376When invoked, Dungeon takes no more than 5-10 seconds to start up.
377
378Notes on the executable program:
379
380  - The only files needed to execute Dungeon are DUNGEON.EXE,
381    DINDX.DAT, and DTEXT.DAT.  All other files can be deleted.
382
383  - Files DINDX.DAT and DTEXT.DAT must reside in the user's area
384    (this can be changed with a source edit, see section 8).
3856.  Warnings and Restrictions
386
387For those familiar with the MDL version of the game on the ARPAnet,
388the following is a list of the major incompatabilties:
389
390	-The first six letters of a word are considered
391	 significant, instead of the first five.
392	-The syntax for TELL, ANSWER, and INCANT is different.
393	-Compound objects are not recognized.
394	-Compound commands can be delimited with comma as well
395	 as period.
396
397Also, the palantir, brochure, and dead man problems are not
398implemented.
399
400
4017.  Abstract of Informational Printouts
402
403SUMMARY
404-------
405
406		    Welcome to Dungeon!
407
408   Dungeon is a game of adventure, danger, and low cunning.  In it
409you will explore some of the most amazing territory ever seen by mortal
410man.  Hardened adventurers have run screaming from the terrors contained
411within.
412
413   In Dungeon, the intrepid explorer delves into the forgotten secrets
414of a lost labyrinth deep in the bowels of the earth, searching for
415vast treasures long hidden from prying eyes, treasures guarded by
416fearsome monsters and diabolical traps!
417
418   No DECsystem should be without one!
419
420   Dungeon was created at the Programming Technology Division of the MIT
421Laboratory for Computer Science by Tim Anderson, Marc Blank, Bruce
422Daniels, and Dave Lebling.  It was inspired by the Adventure game of
423Crowther and Woods, and the Dungeons and Dragons game of Gygax
424and Arneson.  The original version was written in MDL (alias MUDDLE).
425The current version was translated from MDL into FORTRAN IV by
426a somewhat paranoid DEC engineer who prefers to remain anonymous.
427
428   On-line information may be obtained with the commands HELP and INFO.
429INFO
430----
431
432Welcome to Dungeon!
433
434   You are near a large dungeon, which is reputed to contain vast
435quantities of treasure.   Naturally, you wish to acquire some of it.
436In order to do so, you must of course remove it from the dungeon.  To
437receive full credit for it, you must deposit it safely in the trophy
438case in the living room of the house.
439
440   In addition to valuables, the dungeon contains various objects
441which may or may not be useful in your attempt to get rich.  You may
442need sources of light, since dungeons are often dark, and weapons,
443since dungeons often have unfriendly things wandering about.  Reading
444material is scattered around the dungeon as well;  some of it
445is rumored to be useful.
446
447   To determine how successful you have been, a score is kept.
448When you find a valuable object and pick it up, you receive a
449certain number of points, which depends on the difficulty of finding
450the object.  You receive extra points for transporting the treasure
451safely to the living room and placing it in the trophy case.  In
452addition, some particularly interesting rooms have a value associated
453with visiting them.  The only penalty is for getting yourself killed,
454which you may do only twice.
455
456   Of special note is a thief (always carrying a large bag) who
457likes to wander around in the dungeon (he has never been seen by the
458light of day).  He likes to take things.  Since he steals for pleasure
459rather than profit and is somewhat sadistic, he only takes things which
460you have seen.  Although he prefers valuables, sometimes in his haste
461he may take something which is worthless.  From time to time, he examines
462his take and discards objects which he doesn't like.  He may occas-
463ionally stop in a room you are visiting, but more often he just wanders
464through and rips you off (he is a skilled pickpocket).
465
466HELP
467----
468
469Useful commands:
470
471   The 'BRIEF' command suppresses printing of long room descriptions
472for rooms which have been visited.  The 'SUPERBRIEF' command suppresses
473printing of long room descriptions for all rooms.  The 'VERBOSE'
474command restores long descriptions.
475   The 'INFO' command prints information which might give some idea
476of what the game is about.
477   The 'QUIT' command prints your score and asks whether you wish
478to continue playing.
479   The 'SAVE' command saves the state of the game for later continuation.
480   The 'RESTORE' command restores a saved game.
481   The 'INVENTORY' command lists the objects in your possession.
482   The 'LOOK' command prints a description of your surroundings.
483   The 'SCORE' command prints your current score and ranking.
484   The 'TIME' command tells you how long you have been playing.
485   The 'DIAGNOSE' command reports on your injuries, if any.
486Command abbreviations:
487
488   The 'INVENTORY' command may be abbreviated 'I'.
489   The 'LOOK' command may be abbreviated 'L'.
490   The 'QUIT' command may be abbreviated 'Q'.
491
492Containment:
493
494   Some objects can contain other objects.  Many such containers can
495be opened and closed.  The rest are always open.   They may or may
496not be transparent.  For you to access (e.g., take) an object
497which is in a container, the container must be open.  For you
498to see such an object, the container must be either open or
499transparent.  Containers have a capacity, and objects have sizes;
500the number of objects which will fit therefore depends on their
501sizes.  You may put any object you have access to (it need not be
502in your hands) into any other object.  At some point, the program
503will attempt to pick it up if you don't already have it, which
504process may fail if you're carrying too much.  Although containers
505can contain other containers, the program doesn't access more than
506one level down.
507
508Fighting:
509
510   Occupants of the dungeon will, as a rule, fight back when
511attacked.  In some cases, they may attack even if unprovoked.
512Useful verbs here are 'ATTACK <villain> WITH <weapon>', 'KILL',
513etc.  Knife-throwing may or may not be useful.  You have a
514fighting strength which varies with time.  Being in a fight,
515getting killed, and being injured all lower this strength.
516Strength is regained with time.  Thus, it is not a good idea to
517fight someone immediately after being killed.  Other details
518should become apparent after a few melees or deaths.
519
520Command parser:
521
522   A command is one line of text terminated by a carriage return.
523For reasons of simplicity, all words are distinguished by their
524first six letters.  All others are ignored.  For example, typing
525'DISASSEMBLE THE ENCYCLOPEDIA' is not only meaningless, it also
526creates excess effort for your fingers.  Note that this trunca-
527tion may produce ambiguities in the intepretation of longer words.
528[Also note that upper and lower case are equivalent.]
529
530   You are dealing with a fairly stupid parser, which understands
531the following types of things--
532
533   Actions:
534	Among the more obvious of these, such as TAKE, PUT, DROP, etc.
535	Fairly general forms of these may be used, such as PICK UP,
536	PUT DOWN, etc.
537
538   Directions:
539	NORTH, SOUTH, UP, DOWN, etc. and their various abbreviations.
540	Other more obscure directions (LAND, CROSS) are appropriate in
541	only certain situations.
542   Objects:
543	Most objects have names and can be referenced by them.
544
545   Adjectives:
546	Some adjectives are understood and required when there are
547	two objects which can be referenced with the same 'name' (e.g.,
548	DOORs, BUTTONs).
549
550   Prepositions:
551	It may be necessary in some cases to include prepositions, but
552	the parser attempts to handle cases which aren't ambiguous
553	without.  Thus 'GIVE CAR TO DEMON' will work, as will 'GIVE DEMON
554	CAR'.  'GIVE CAR DEMON' probably won't do anything interesting.
555	When a preposition is used, it should be appropriate;  'GIVE CAR
556	WITH DEMON' won't parse.
557
558   Sentences:
559	The parser understands a reasonable number of syntactic construc-
560	tions.  In particular, multiple commands (separated by commas)
561	can be placed on the same line.
562
563   Ambiguity:
564	The parser tries to be clever about what to do in the case of
565	actions which require objects that are not explicitly specified.
566	If there is only one possible object, the parser will assume
567	that it should be used.  Otherwise, the parser will ask.
568	Most questions asked by the parser can be answered.
5698.  Source Notes
570
571A few notes for source hackers.
572
573- The initialization module (DINIT.FTN) includes an access protection
574  function PROTCT.  If PROTCT returns a value of .TRUE., the game is
575  permitted to start;  if PROTCT returns .FALSE., the game is
576  terminated with a suitably nasty message.  At present, PROTCT is a
577  dummy routine and always returns .TRUE.;  by tailoring PROTCT,
578  access to the game can be restricted to certain hours or users.
579
580- The data base OPEN and READ statements are in the initialization
581  module (DINIT.FTN).  The data base file names are simply "DINDX.DAT"
582  and "DTEXT.DAT".  These may be freely changed to include logical
583  device names, UIC's, etc.  Thus, it is possible to place the data
584  base files on different devices, in a fixed UIC, etc.
585
586- Converting the game to another processor is not a straightforward
587  procedure.  The game makes heavy use of extended and/or
588  idiosynchratic features of PDP-11 Fortran.  Particular nasties
589  include the following:
590
591  > The game vocabulary is stored in Radix-50 notation.
592  > [F77 version has converted these to ints.]
593
594  > The game uses the extended I/O commands OPEN and CLOSE.
595
596  > The game uses LOGICAL*1 variables for character strings.
597  > [F77 version uses CHARACTER.]
598
599  > The game uses logical operators on integers for bitwise binary
600    operations.
601  > [F77 version uses the functions and() and or() and not() where
602    necessary, as well as standard fortran .and., .or., etc.]
603
604  > The game treats certain arrays and variables as unsigned
605    16-bit integers (integer overflow may occur).
606  > [F77 vax version uses 32-bit ints except in the subroutine
607    that reads the text file, where they are declared as 16-bits.
608    The F77 pdp version uses the -I2 compile flag force 16-bit
609    ints and logicals.]
610
611  In general, the game was implemented to fit in memory, not to be
612  transported.  You're on your own, friend!
613