|
|
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.