Annotation of 43BSDReno/games/dungeon/dungeon.doc, revision 1.1.1.1

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!

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.