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 1222. 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). 1743. 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). 2344. 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. 293If 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) 3325. 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). 3856. 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. 429INFO 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. 486Command 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. 5698. 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