|
|
1.1 root 1: To: Dungeon Players
2: From: "The Translator"
3: Subj: Game Information
4: Date: 8-OCT-80, 6-dec-85
5:
6:
7: This is the first (and last) source release of the PDP-11 version of
8: Dungeon.
9:
10: Please note that Dungeon has been superceded by the game ZORK(tm).
11: The following is an extract from the new product announcement for
12: ZORK 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:
30: ZORK(tm) is a trademark of Infocom, Inc. It is available for several
31: popular personal computers as well as for the PDP-ll.
32:
33:
34: 1. Components
35:
36: Dungeon 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:
39: The following compile and run information does not apply to the
40: f77/Unix implementation. See the README file for information on
41: compilation.
42:
43: Dungeon 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:
124: Before 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:
137: Except for DTEXT.DAT, all files in the distribution kit are ASCII.
138: DTEXT.DAT is a binary file consisting of 76-byte fixed length records.
139: If the distribution kit consists of RT11-compatible media, then PIP
140: can be used to transfer the files. If the distribution kit consists
141: of DOS-compatible media, then FILEX must be used to transfer the files.
142: The /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:
145: To compile Dungeon, issue the following command:
146:
147: .@RTCMP(cr)
148:
149: Several of the compilations will produce warning messages, but none
150: should produce a fatal error.
151:
152: To link the compiled sources, issue the following command:
153:
154: .@RTBLD(cr)
155:
156: The command file assumes that the Fortran-IV object time library has
157: been merged into the system library. If this is not the case, edit
158: RTBLD.COM and add switch /LINKLIBRARY:FORLIB.OBJ to the first command
159: line.
160:
161: It is now possible to run Dungeon:
162:
163: .R DUNGEO(cr)
164:
165: When invoked, Dungeon takes no more than 5-10 seconds to start up.
166:
167: Notes 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:
176: Before 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:
191: Except for DTEXT.DAT, all files in the distribution kit are ASCII.
192: DTEXT.DAT is a binary file consisting of 76-byte fixed length records.
193: If the distribution kit consists of RT11- or DOS-compatible disks,
194: then 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:
200: If the distribution kit consists of DOS-compatible magtape, then PIP
201: can be used to transfer the files, providing that the magtape is
202: assigned 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:
212: To compile and link Dungeon, submit control file RSTSCB.CTL to the
213: batch processor:
214:
215: SUBMIT RSTSCB.CTL(cr)
216:
217: Several of the compilations will produce warning messages, but none
218: should produce a fatal error.
219:
220: It is now possible to run Dungeon:
221:
222: RUN DUNGEO(cr)
223:
224: When invoked, Dungeon takes no more than 5-10 seconds to start up.
225:
226: Notes 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:
236: Before 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:
259: Except for DTEXT.DAT, all files in the distribution kit are ASCII.
260: DTEXT.DAT is a binary file consisting of 76-byte fixed length records.
261: If the distribution kit consists of Files-11 compatible media, then
262: PIP can be used to transfer the files. For example:
263:
264: >PIP SY:*.*=MM:*.*(cr) -requires ANSI magtape support
265:
266: If the distribution kit consists of DOS- or RT11-compatible media,
267: then FLX must be used to transfer the files. The /IM:76. switch
268: (image binary fixed length) must be used to transfer DTEXT.DAT;
269: the /FA switch (formatted ASCII) should be used to transfer the
270: other 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:
278: To compile Dungeon, issue the following command:
279:
280: >@RSXCMP(cr)
281:
282: There should be no error messages.
283:
284: To task build the compiled sources, issue the following command:
285:
286: >TKB @RSXBLD(cr)
287:
288: It is now possible to run Dungeon:
289:
290: >RUN DUNGEON(cr)
291:
292: When invoked, Dungeon takes no more than 5-10 seconds to start up.
293: If your system maintains a separate Fortran-IV-Plus object time
294: library (F4POTS.OLB), then you must create a local copy of the
295: system library with the Fortran-IV-Plus object time library
296: merged in and the short error text as the default. The following
297: commands 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:
310: Then edit D.ODL to reference the local library instead of the
311: default system library:
312:
313: >TEC D.ODL(cr)
314: *FS[1,1]$SY:$EX$$
315:
316: Dungeon can now be task built as described above.
317:
318: Notes 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:
334: Before 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:
343: Except for DTEXT.DAT, all files in the distribution kit are ASCII.
344: DTEXT.DAT is a binary file consisting of 76-byte fixed length records.
345: If the distribution kit consists of Files-11 compatible media, then
346: COPY can be used to transfer the files. For example:
347:
348: $ COPY MM:*.* *.*(cr)
349:
350: If the distribution kit consists of DOS- or RT11-compatible media,
351: then FLX must be used to transfer the files. The /IM:76. switch
352: (image binary fixed length) must be used to transfer DTEXT.DAT;
353: the /FA switch (formatted ASCII) should be used to transfer the
354: other 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:
362: To compile Dungeon, issue the following command:
363:
364: $ @VMSCMP(cr)
365:
366: There should be no error messages.
367:
368: To link the compiled sources, issue the following command:
369:
370: $ @VMSBLD(cr)
371:
372: It is now possible to run Dungeon:
373:
374: $ RUN DUNGEON(cr)
375:
376: When invoked, Dungeon takes no more than 5-10 seconds to start up.
377:
378: Notes 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:
387: For those familiar with the MDL version of the game on the ARPAnet,
388: the 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:
397: Also, the palantir, brochure, and dead man problems are not
398: implemented.
399:
400:
401: 7. Abstract of Informational Printouts
402:
403: SUMMARY
404: -------
405:
406: Welcome to Dungeon!
407:
408: Dungeon is a game of adventure, danger, and low cunning. In it
409: you will explore some of the most amazing territory ever seen by mortal
410: man. Hardened adventurers have run screaming from the terrors contained
411: within.
412:
413: In Dungeon, the intrepid explorer delves into the forgotten secrets
414: of a lost labyrinth deep in the bowels of the earth, searching for
415: vast treasures long hidden from prying eyes, treasures guarded by
416: fearsome 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
421: Laboratory for Computer Science by Tim Anderson, Marc Blank, Bruce
422: Daniels, and Dave Lebling. It was inspired by the Adventure game of
423: Crowther and Woods, and the Dungeons and Dragons game of Gygax
424: and Arneson. The original version was written in MDL (alias MUDDLE).
425: The current version was translated from MDL into FORTRAN IV by
426: a 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:
432: Welcome to Dungeon!
433:
434: You are near a large dungeon, which is reputed to contain vast
435: quantities of treasure. Naturally, you wish to acquire some of it.
436: In order to do so, you must of course remove it from the dungeon. To
437: receive full credit for it, you must deposit it safely in the trophy
438: case in the living room of the house.
439:
440: In addition to valuables, the dungeon contains various objects
441: which may or may not be useful in your attempt to get rich. You may
442: need sources of light, since dungeons are often dark, and weapons,
443: since dungeons often have unfriendly things wandering about. Reading
444: material is scattered around the dungeon as well; some of it
445: is rumored to be useful.
446:
447: To determine how successful you have been, a score is kept.
448: When you find a valuable object and pick it up, you receive a
449: certain number of points, which depends on the difficulty of finding
450: the object. You receive extra points for transporting the treasure
451: safely to the living room and placing it in the trophy case. In
452: addition, some particularly interesting rooms have a value associated
453: with visiting them. The only penalty is for getting yourself killed,
454: which you may do only twice.
455:
456: Of special note is a thief (always carrying a large bag) who
457: likes to wander around in the dungeon (he has never been seen by the
458: light of day). He likes to take things. Since he steals for pleasure
459: rather than profit and is somewhat sadistic, he only takes things which
460: you have seen. Although he prefers valuables, sometimes in his haste
461: he may take something which is worthless. From time to time, he examines
462: his take and discards objects which he doesn't like. He may occas-
463: ionally stop in a room you are visiting, but more often he just wanders
464: through and rips you off (he is a skilled pickpocket).
465:
466: HELP
467: ----
468:
469: Useful commands:
470:
471: The 'BRIEF' command suppresses printing of long room descriptions
472: for rooms which have been visited. The 'SUPERBRIEF' command suppresses
473: printing of long room descriptions for all rooms. The 'VERBOSE'
474: command restores long descriptions.
475: The 'INFO' command prints information which might give some idea
476: of what the game is about.
477: The 'QUIT' command prints your score and asks whether you wish
478: to 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:
492: Containment:
493:
494: Some objects can contain other objects. Many such containers can
495: be opened and closed. The rest are always open. They may or may
496: not be transparent. For you to access (e.g., take) an object
497: which is in a container, the container must be open. For you
498: to see such an object, the container must be either open or
499: transparent. Containers have a capacity, and objects have sizes;
500: the number of objects which will fit therefore depends on their
501: sizes. You may put any object you have access to (it need not be
502: in your hands) into any other object. At some point, the program
503: will attempt to pick it up if you don't already have it, which
504: process may fail if you're carrying too much. Although containers
505: can contain other containers, the program doesn't access more than
506: one level down.
507:
508: Fighting:
509:
510: Occupants of the dungeon will, as a rule, fight back when
511: attacked. In some cases, they may attack even if unprovoked.
512: Useful verbs here are 'ATTACK <villain> WITH <weapon>', 'KILL',
513: etc. Knife-throwing may or may not be useful. You have a
514: fighting strength which varies with time. Being in a fight,
515: getting killed, and being injured all lower this strength.
516: Strength is regained with time. Thus, it is not a good idea to
517: fight someone immediately after being killed. Other details
518: should become apparent after a few melees or deaths.
519:
520: Command parser:
521:
522: A command is one line of text terminated by a carriage return.
523: For reasons of simplicity, all words are distinguished by their
524: first six letters. All others are ignored. For example, typing
525: 'DISASSEMBLE THE ENCYCLOPEDIA' is not only meaningless, it also
526: creates excess effort for your fingers. Note that this trunca-
527: tion 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
531: the 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:
571: A 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!
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.