home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / gnu / nethack-3.1 / sys / vms / Install.vms < prev    next >
Encoding:
Text File  |  1993-01-25  |  28.7 KB  |  484 lines

  1.                Instructions for Installing NetHack 3.1.0
  2.                            on a VMS system
  3.                =========================================
  4.  
  5. 0.  Please read this entire file before trying to build or install
  6.     NetHack, then read it again!
  7.  
  8. 1.  Building NetHack requires a C compiler (either VAX C, DEC C, or GNU C)
  9.     and VMS version V4.6 or later (but see note #11).  This release has
  10.     been tested on VAX/VMS V5.5-2, T6.0, and Alpha/VMS V1.0.  The build
  11.     procedure (vmsbuild.com) should not need to be modified; it accepts
  12.     an option for selecting VAXC vs GNUC, and it can detect different
  13.     versions of VAXC to use appropriate CC command qualifiers.  Versions
  14.     of VAXC earlier than V2.3 will produce many warning messages (about
  15.     150 per source file; over to 18,000 total!), but NetHack has been
  16.     verified to compile, link, and execute correctly when built with VAXC
  17.     V2.2 using vmsbuild.com.  There is also a set of Makefiles suitable
  18.     for use with MMS; they may or may not work with other make utilities.
  19.  
  20. 2.  Make sure all the NetHack files are in the appropriate directory
  21.     structure.  You should set up a directory--referred to as "top" below
  22.     and in some of the assorted files, but which may be a subdirectory--
  23.     that has these subdirectories
  24.         [.dat]          -- data files
  25.         [.doc]          -- documentation files
  26.         [.include]      -- C header files
  27.         [.src]          -- primary source files
  28.         [.sys]          -- parent for [.sys.*]
  29.         [.sys   .share] -- files shared by several ports, incl. VMS
  30.         [.sys   .vms]   -- VMS-specific source and support files
  31.         [.util]         -- sources for essential utility programs
  32.         [.win]          -- parent for [.win.*]
  33.         [.win   .tty]   -- "window" routines for ordinary terminals
  34.                            (including terminal windows on workstations)
  35.     The following subdirectories may be present, but are not useful for
  36.     building NetHack on VMS and are not required:
  37.         [.sys   .amiga] -- AmigaDOS
  38.         [.sys   .amiga   .splitter]
  39.         [.sys   .atari] -- Atari TOS
  40.         [.sys   .mac]   -- Macintosh
  41.         [.sys   .msdos] -- MSDOS for IBM PCs and compatibles
  42.         [.sys   .os2]   -- OS/2
  43.         [.sys   .unix]  -- guess :-)
  44.         [.win   .X11]   -- window routines for X-Windows; requires X11R4
  45.                            or later and MIT's Athena Widget set
  46.     You must arrange things in this structure or the supplied procedures
  47.     and instructions in this file will not work properly.  Several DCL
  48.     command files are present in the [.sys.vms] subdirectory and won't
  49.     work as intended if they're moved elsewhere.  The file called Files
  50.     in the top directory contains lists of everything that should be in
  51.     each subdirectory, including things that are constructed as NetHack
  52.     is being built.  If you obtain the NetHack distribution via the
  53.     "shar" packaging used for Usenet newsgroup comp.sources.games and its
  54.     archives, you may have to reconstruct several files that were split
  55.     for posting.  At the time of this writing, the list of files needing
  56.     such treatment is not known, so they can't be enumerated here or
  57.     handled automatically be the build procedures.
  58.  
  59. 3.  Prior to beginning compilation, go to the [.include] subdirectory and
  60.     edit vmsconf.h according to its comments.  You should set Local_WIZARD
  61.     and Local_HACKDIR to appropriate values, and you might want to define
  62.     TEXTCOLOR if you have any color VAXstations or color terminals which
  63.     handle ANSI-format escape sequences to set foreground and background
  64.     color for text characters.  (VT241/VT340 color graphics won't work.)
  65.     Other things which may be of interest are SECURE if you intend to
  66.     set up NetHack as an installed image which is granted privileges, and
  67.     SHELL which should be disabled if you intend to allow captive accounts
  68.     to run NetHack.  You may also want to edit file config.h, but that's
  69.     only necessary if you want or need to disable some of the game options.
  70.     The distributed copy of config.h will work successfully on VMS;
  71.     vmsconf.h has conditional code to deal with the UNIX-specific items.
  72.  
  73. 4.  If you have the programming utilities lex or flex and yacc or bison,
  74.     you may edit the procedure [.sys.vms]spec_lev.com and execute it to
  75.     process several source files for NetHack's special level and dungeon
  76.     compilers.  If you don't modify spec_lev.com, it will copy some
  77.     pre-processed versions of the appropriate files (dgn_lex.c, lev_lex.c,
  78.     dgn_yacc.c, lev_yacc.c, dgn_comp.h, and lev_comp.h) from [.sys.share]
  79.     into [.util]*.c and [.include]*.h.
  80.        $ @[.SYS.VMS]SPEC_LEV            ![OPTIONAL]
  81.     If you perform this step, do it prior to executing vmsbuild.com; if
  82.     you don't perform this step, vmsbuild.com will do so for you.
  83.  
  84. 5.  If you are using DEC C (not to be confused with Digital's VAX C) as
  85.     your compiler, you should create an empty file called CRTL.OPT in the
  86.     [.src] subdirectory.  This is a linker options file for accessing
  87.     the C run-time library.  If you don't create it, vmsbuild.com will
  88.     construct one suitable for linking with shareable VAXCRTL.  Programs
  89.     compiled with DEC C should link with DECC$SHR instead; no special
  90.     linker options are needed in that case and VAXCRTL should be avoided.
  91.     You should also create a DCL symbol for invoking CC that specifies
  92.     VAXC compatibility mode.
  93.        $ CC == "CC/Standard=VAXC"
  94.     You might also want to specify /noOptimize if you don't trust the V1
  95.     compiler's optimizer yet.  No other special qualifiers are needed.
  96.  
  97. 6.  To build NETHACK.EXE and its auxiliary programs, execute the
  98.     following DCL command:
  99.        $ @[.SYS.VMS]VMSBUILD    !defaults to VAXC unless symbol 'CC' exists
  100.     or $ @[.SYS.VMS]VMSBUILD "GNUC"
  101.     It can take quite a bit of time for a full build to complete.
  102.     vmsbuild.com will display some feedback as it executes; generally
  103.     this will be the name of each source file that's about to be compiled
  104.     or the name of the executable that has just been linked.
  105.  
  106. 7.  After compilation, it's time to perform installation.  Go back to
  107.     the top directory.  Either edit [.sys.vms]install.com to indicate
  108.     where you want everything to be installed, or specify the location
  109.     and "playground" owner on the command line.  Then execute either
  110.        $ @[.SYS.VMS]INSTALL
  111.     or $ @[.SYS.VMS]INSTALL location owner
  112.     where location is a device:[directory] specification and owner is
  113.     either a rights identifier or UIC.  If install.com is not modified
  114.     and if values aren't supplied on the command line, the default values
  115.     used are the translation of logical name HACKDIR, if any, or else
  116.     [.PLAY] (relative to the current directory), and the UIC for the
  117.     current process.  install.com will use the auxiliary programs
  118.     constructed by vmsbuild.com to process quite a few data files in the
  119.     [.dat] subdirectory.  Then it will create the playground directory,
  120.     if necessary, plus the associated [.save] subdirectory.  Next it will
  121.     copy the data files into the playground; this step can take a while.
  122.     Finally it will copy nethack.exe and a few additional support files.
  123.  
  124.     After it completes, the files [.src]nethack.olb, [.src]nethack.exe,
  125.     [.util]*.obj, [.util]*_comp.exe, and [.util]makedefs.exe can be
  126.     deleted in order to save disk space if desired.  The other program,
  127.     [.util]recover.exe, should not be deleted unless you make a copy of
  128.     it somewhere--perhaps in the playground directory--first.  It can be
  129.     used to resurrect some games disrupted by system or program crash.
  130.  
  131. 8.  The file nethack.com which is copied to the playground directory can
  132.     be used to invoke NetHack, or nethack.exe can be run directly.  Most
  133.     of the command-line options specified in the Unix man-page (file
  134.     [.dat]nethack.6) are also applicable to VMS.  Some comments at the
  135.     beginning of nethack.com illustrate several of the options.  New
  136.     players should read the document file "Guidebook.txt" which will
  137.     be available in the playground directory.
  138.  
  139.  
  140. Notes:
  141.  
  142. 1.  Save files and bones files from previous versions will not work with
  143.     NetHack 3.1.0.  Don't bother trying to keep them.  Ditto for RECORD,
  144.     the scoreboard file.  One minor change of note is that the default
  145.     name for a player's character is now a lowercase copy of the username.
  146.  
  147. 2.  To specify user-preference options in your environment, define the
  148.     logical name NETHACKOPTIONS to have value of a quoted string
  149.     containing a comma separated list of option values.  The option names
  150.     are case-insensitive.
  151.        $ define nethackoptions "noPickup,Dog:Rover,Cat:Felix,DECgraphics"
  152.     One value you'll probably want to specify is "noLegacy" to turn off
  153.     the initial introductory passage.  The "checkpoint" option controls
  154.     whether or not enough data is saved to disk so that the set of level
  155.     files left behind after a crash contains sufficient information for
  156.     recover.exe to be able to construct a save file after the fact.  The
  157.     tradeoff for enabling checkpoint is that using it makes level changes
  158.     do more I/O and take longer.
  159.  
  160.     If logical name or DCL symbol NETHACKOPTIONS is not defined, NetHack
  161.     will try HACKOPTIONS instead.  Regardless of whether or not either
  162.     is defined, it will also try to find a configuration file containing
  163.     additional option settings.  If the value of the translation of
  164.     NETHACKOPTIONS--or HACKOPTIONS--begins with an "@" character then the
  165.     rest of the translation is assumed to be the name of the configuration
  166.     file.  Otherwise, the following are tried:  file specified by logical
  167.     name NETHACKINI, file SYS$LOGIN:NETHACK.INI, and file HOME:NETHACK.CNF
  168.     (note that the C run-time library sets up the value of HOME to match
  169.     sys$login).  Syntax for the configuration file is essentially the same
  170.     as for NETHACKOPTIONS, but multiple lines can be used and comments can
  171.     be included by placing '#' in the first column.
  172.  
  173. 3.  Instead of using vmsbuild.com to compile and link everything, you can
  174.     use the set of Makefiles found in the vms subdirectory, provided you
  175.     have an appropriate and compatible make utility.  They've been tested
  176.     using Digital's MMS.  There are five of them, and the suffix or
  177.     filetype on their names indicates where they should be placed.
  178.        $ copy [.sys.vms]Makefile.top []Makefile.
  179.        $ copy [.sys.vms]Makefile.src [.src]Makefile.
  180.        $ copy [.sys.vms]Makefile.utl [.util]Makefile.
  181.        $ copy [.sys.vms]Makefile.dat [.dat]Makefile.
  182.        $ copy [.sys.vms]Makefile.doc [.doc]Makefile.
  183.     After doing that, edit [.src]Makefile and [.util]Makefile to specify
  184.     pertinent compiler options in CFLAGS, linker options in LFLAGS, and
  185.     libraries in LIBS and/or MORELIBS if the default values aren't right.
  186.     Be sure to make compatible compilation and linking settings in both
  187.     files.  While in there, edit [.util]Makefile to specify the appropriate
  188.     values for lex and yacc, _or_ move to that directory and use MMS or
  189.     make to build targets no_lex and no_yacc which will copy several
  190.     pre-processed files from [.sys.share] into [.util].  Finally, edit
  191.     Makefile in the top directory to specify values for GAMEDIR and
  192.     GAMEOWNER.  This top Makefile invokes [.sys.vms]install.com to do
  193.     much of the actual installation work, so if you want to make any
  194.     customizations or file protection changes, edit install.com to suit.
  195.     Also set MAKE in all of the Makefiles to the appropriate command if
  196.     not using MMS.
  197.  
  198.     Once the Makefiles are tailored for your site, give the command
  199.        $ mms all,install
  200.     or $ make all install
  201.     To compile and install everything.  The object files compiled via
  202.     the Makefiles are left as individual .OBJ files rather than placed
  203.     into an object library (in contrast to step #7 above and note #12
  204.     below).  These Makefiles are provided on an as-is basis; vmsbuild.com
  205.     is the preferred way to compile because it's guaranteed to compile
  206.     and link everything.
  207.  
  208. 4.  VMS NetHack uses the termcap routines borrowed from GNU Emacs.  These
  209.     have been supplied for those who do not already have GNU Emacs, but
  210.     they are not properly a part of the NetHack distribution.  Since
  211.     these files (gnutermcap.c and gnutparam.c) bear the usual GNU license,
  212.     any executable made with these files is also under the GNU license,
  213.     which among other things means you must be prepared to distribute
  214.     all the source that went into the executable if you distribute the
  215.     executable.  See the GNU license in the files for further details.
  216.     Since NetHack itself has a very similar license, this should not be
  217.     an issue.
  218.  
  219. 5.  termcap is an ASCII data file containing descriptions of terminal
  220.     capabilities and the escape sequences that software must use to take
  221.     advantage of them.  If you do not already have a termcap file in use
  222.     on your system there is a small one in file [.SYS.SHARE]TERMCAP.  It
  223.     contains definitions for common Digital terminals, also suitable for
  224.     most clones and emulators.  This file is copied into the playground
  225.     by install.com, and NetHack will use it if it can't find any other
  226.     one.  NetHack uses the following sequence to attempt to locate the
  227.     termcap file:  translation of the logical name TERMCAP (used as-is),
  228.     file NETHACKDIR:TERMCAP, similar file HACKDIR:TERMCAP, GNU-Emacs file
  229.     EMACS_LIBRARY:[ETC]TERMCAP.DAT, file []TERMCAP, and lastly file
  230.     $TERMCAP (which most likely would be a logical name).  If NetHack
  231.     can't find the termcap file, or if the above search sequence finds a
  232.     different one than you'd prefer, then use the DCL ASSIGN or DEFINE
  233.     command to define a value for logical name TERMCAP.
  234.  
  235.     NetHack also tries fairly hard to figure out what kind of terminal
  236.     you're using.  It checks for logical names (or symbols) NETHACK_TERM,
  237.     HACK_TERM, EMACS_TERM, and lastly TERM.  The last is set up by the
  238.     C run-time library and you cannot use a logical name or symbol for
  239.     it.  If all those fail, or if whichever one succeeds has a value of
  240.     "undefined" or "unknown" (which can happen under VMS V5.4-* and
  241.     V5.5-* for VT420 terminals), NetHack will query the VMS TERMTABLE
  242.     database used by the SMG library routines.  Whatever value NetHack
  243.     eventually comes up with needs to be the name of an entry in the
  244.     termcap file, otherwise a message about "Unknown terminal type" will
  245.     be printed and NetHack will exit.
  246.  
  247. 6.  If you want to use GEM C for cross-compiling from VAX/VMS to Alpha/VMS
  248.     or vice versa, you'll have to build in stages.  For the first pass,
  249.     use a value of CC appropriate for the host system, interactively
  250.     start vmsbuild.com as described in step #6 above, wait until it has
  251.     compiled and linked "makedefs", then use <ctrl/C> to interrupt it
  252.     (after the "12:34 makedefs" feedback message) so that it doesn't
  253.     waste any time compiling the rest of the code.  Consider that to be
  254.     stage 1.  For stage 2, go back to step #5, but set the symbol for
  255.     invoking CC to have a value similar to the following
  256.        $ CC == " GEMC/Standard=VAXC"
  257.     Note the leading space in the value; if that's not included, vmsbuild
  258.     will take the leading "G" as an indication that GCC is being used and
  259.     end up selecting some wrong options.  Also set up symbols for cross-
  260.     architecture access to the linker and librarian (these examples assume
  261.     building an AXP version from a VAX)
  262.        $ LINK == "LINK/Alpha"   !or LINK/VAX
  263.        $ LIBR == "LIBR/Alpha"   !or LIBR/VAX
  264.     Now re-do step #6, but specify "/noExe" as the 4th parameter to
  265.     vmsbuild.com.
  266.        $ @[.SYS.VMS]VMSBUILD "" "" "" "/noExe"
  267.     Note the three empty strings used as placeholders.  That's the end of
  268.     stage 2; everything will be compiled to object files but no executable
  269.     files will have been linked.  If you don't do things this way, a new
  270.     version of makedefs will be linked; but since it will be appropriate
  271.     for the target, vmsbuild's attempt to use it on the host will fail.
  272.     For stage 3, link nethack.exe using vmsbuild.com
  273.        $ @[.SYS.VMS]VMSBUILD "LINK"
  274.     Don't specify "/noExe" this time around or you'll just be wasting
  275.     your time and CPU cycles. ;-)  For stage 4, link all four of the
  276.     utility programs manually (there's no vmsbuild option for this).
  277.     Go to the [.util] subdirectory and issue these commands
  278.        $ LINK makedefs,[-.src]nethack/Lib
  279.        $ LINK/Exe=[]lev_comp lev_main,lev_yacc,lev_lex,panic,[-.src]nethack/Lib
  280.        $ LINK/Exe=[]dgn_comp dgn_main,dgn_yacc,dgn_lex,panic,[-.src]nethack/Lib
  281.        $ LINK recover,[-.src]nethack/Lib
  282.     Note that these commands are slightly simpler than the corresponding
  283.     ones used in vmsbuild.com; crtl.opt is expected to be empty (step #5
  284.     above) so omitted here, and the identification directive is optional.
  285.  
  286.     The installation of the playground (step #7 above) must be done on
  287.     the target system but should need no special cross-architecture
  288.     contortions.
  289.  
  290. 7.  NetHack contains code which attempts to make it secure in case it's
  291.     installed with privileges (to allow the playground to be protected
  292.     against world write access).  This has only undergone limited testing,
  293.     so install NetHack with privileges at your own risk.  If you discover
  294.     any potential security holes, please let us know so that we can take
  295.     steps to correct the problem(s).  NetHack always includes filename
  296.     punctuation when accessing files, so that it should never be affected
  297.     by inadvertent or malicious logical name definitions, and it always
  298.     deactivates installed privileges prior to spawning a subprocess.
  299.  
  300.     Note to end users:  "installing with privileges" is an option for
  301.     system managers who set up system-wide access to the game.  Since
  302.     CMKRNL privilege and modification of the system boot routines are
  303.     both required, it is not an option for ordinary users.  There are
  304.     no explicit instructions on how to do such an installation, because
  305.     only system managers who are already familiar with the process and
  306.     its potential security ramifications should even consider it.
  307.  
  308.     The default setup by install.com assumes no privileges and uses
  309.     world-writeable files to allow arbitrary users to play.  This is
  310.     NOT secure and not advisable in any environment where there are
  311.     untrustworthy users, but works fine for many sites.  If you allow
  312.     users to run NetHack from captive accounts (VMS 5.1-* or earlier)
  313.     or from restricted accounts (5.2 and later), you should either make
  314.     sure that they do not have TMPMBX privilege or else disable NetHack's
  315.     ability to spawn an interactive subprocess.  To disable subprocesses,
  316.     disable the "!" (shell escape) command by commenting out the definition
  317.     of SHELL in vmsconf.h prior to building the program.  This necessity
  318.     may be removed in some future release, where NetHack will check for
  319.     captive accounts instead of spawning unconditionally.  Note that
  320.     disabling the SHELL command also prevents spawning MAIL when scrolls
  321.     of new mail are received.
  322.  
  323.     In order for installed privileges to be used at all, the value of
  324.     HACKDIR (via Local_HACKDIR in vmsconf.h) compiled into the program
  325.     must correspond to the actual playground directory.  If logical name
  326.     HACKDIR (or NETHACKDIR) is used to override that value, installed
  327.     privileges will be deactivated unless its value corresponds to the
  328.     same device and directory as the internal value.  If that internal
  329.     value contains a logical name, only an executive-mode translation
  330.     will be honored; if there is no such translation, installed privs
  331.     will be deactivated.
  332.  
  333.     To be able to install nethack.exe with privileges (SYSPRV or GRPPRV,
  334.     perhaps EXQUOTA, depending on site usage and needs), you'll need to
  335.     link it with debugging and tracebacks both disabled.  You can do this
  336.     by specifying an argument to vmsbuild.com when performing step #6
  337.     above; pass it "/noTrace/noDebug" as the 4th parameter.
  338.        $ @[.SYS.VMS]VMSBUILD "" "" "" "/noTrace/noDebug"
  339.     /Trace/noDebug is the linker's normal default.  If you've already
  340.     built NetHack, you can relink with tracebacks disabled by doing
  341.        $ @[.SYS.VMS]VMSBUILD "LINK" "" "" "/noTrace/noDebug"
  342.  
  343. 8.  If you can't or won't install nethack.exe with privileges and if you
  344.     don't have access to a privileged account yourself, then if you intend
  345.     to allow other users to access your copy of NetHack you should probably
  346.     place an ACL on the playground directory and its save subdirectory.
  347.     The access control list should contain a default protection ACE which
  348.     grants delete+control access to the playground owner (ie, your own
  349.     account if there's no special games account involved).  install.com
  350.     does not attempt to do this automatically at the present time.  After
  351.     executing install.com to create the playground directory, perform a
  352.     pair of commands similar to the following
  353.        $ SET ACL/ACL=(IDENT=your_id, OPTIONS=DEFAULT, ACCESS=R+W+E+D+C) -
  354.        $_ device:[playground's.parent.directory]playground.DIR
  355.        $ SET ACL/ACL=(IDENT=your_id, OPTIONS=DEFAULT, ACCESS=R+W+E+D+C) -
  356.        $_ device:[playground.directory]SAVE.DIR
  357.     The two commands use the same options, but SET ACL won't accept a
  358.     list of files to modify.  'your_id' should be the rights identifier
  359.     which corresponds to the account which should retain access to those
  360.     files; 'device:[playground's.parent.directory]' is the name of the
  361.     parent directory for the playground (ie, if your playground directory
  362.     is disk$foo:[me.games.nethack.play], then you want to specify
  363.     disk$foo:[me.games.nethack]play.dir on the SET ACL command), and
  364.     'device:[playground.directory]' is the playground itself.  Those ACLs
  365.     establish a default protection scheme such that every newly created
  366.     file in those directories will have an ACL attached to it, and the
  367.     attached ACL will grant 'your_id' full access to the corresponding
  368.     file.  That should allow you to clear away level files from aborted
  369.     games, and to delete old save files if necessary.  It will not enable
  370.     you to run recover.exe on behalf of other users, because you won't be
  371.     able to create files owned by them unless you have elevated privileges.
  372.  
  373. 9.  Many NetHack commands can be aborted by sending it the <escape>
  374.     character when it wants input.  This is displayed as ESC inside the
  375.     game.  Digital VK201 keyboards (used by VT2xx and VT3xx and older
  376.     VAXstations) and VK401 keyboards (used by VT4xx, newer VAXstations,
  377.     and DEC's X Terminals) do not have an <escape> key.  They may
  378.     transmit <escape> for the <F11> key if the terminal or emulator
  379.     window is set to operate in VT100 mode, or there may be a setup-type
  380.     option for making the <` | ~> key behave as <escape>.  If your
  381.     terminal does not have that, or if it's set to a mode where that
  382.     won't work, then just use <ctrl/[> instead.  (Press the "[" key while
  383.     holding down the "Ctrl" key, then release both; <escape> and <ctrl/[>
  384.     have the same ASCII code and are indistinguishable once they reach
  385.     the computer; note that VAXstations and X Terminals _can_ tell the
  386.     difference, but that won't matter for NetHack.)
  387.  
  388.     VMS NetHack is configured to use the SYS$QIOW system service for
  389.     reading characters from the keyboard.  This allows ^C and ^Y (as well
  390.     as ^X and ^O for wizard mode debugging) to be used as commands without
  391.     being intercepted or interpreted by the terminal driver.  The code
  392.     which parses arrow and function keys is not perfect, and it's possible
  393.     to get strange results if you hold such keys down to just type too
  394.     quickly, particularly on slow multiplexor lines.  Those keys are
  395.     never needed in actual play, and most function keys are just treated
  396.     as <escape> for use in aborting partial commands.
  397.  
  398.     VMS NetHack also still has code to use SMG$READ_KEYSTROKE instead.
  399.     That can be activated by modifying vmsconf.h and recompiling, but
  400.     it should never be necessary.  If you use it, you'll need to press
  401.     either <esc> or <ctrl/[> twice to abort partial commands, or else
  402.     press an arbitrary function key, such as <PF4>, once.
  403.  
  404.     If SUSPEND is defined in vmsconf.h, <ctrl/Z> is used for that command.
  405.     Since Unix-style job control is not available, it's used for connecting
  406.     to the parent process if NetHack is running in a subprocess.  When not
  407.     in a subprocess, it doesn't do anything except give a message to the
  408.     effect that it's not doing anything....  The suspend command does not
  409.     save the current game; if you use ^Z to attach to your parent process,
  410.     be sure to remember to eventually reattach to the NetHack subprocess;
  411.     otherwise the game in progress won't get saved when you logout.
  412.  
  413. 10. NetHack optionally maintains a logfile which receives one line appended
  414.     to it whenever a game ends.  This can be disabled entirely by adding
  415.     an "#undef LOGFILE" directive to vmsconf.h prior to building the
  416.     program, or it can be disabled later by removing the file(s) LOGFILE.;*
  417.     from the playground directory.  If not disabled prior to compilation,
  418.     the logfile can be reinitialized by simply creating an empty file
  419.     named LOGFILE in the playground, but make sure that users are able
  420.     to write into it, or new entries will not be appended.
  421.  
  422. 11. Some attempt at support for VMS versions earlier than V4.6 has been
  423.     included, but no such obsolete system was available for testing it.
  424.     vmsbuild.com detects the need for the extra support routines and
  425.     arranges automatically for them to be compiled.  The reason that
  426.     special support is needed is that the C Run-Time Library (VAXCRTL)
  427.     underwent a major revision for VMS V4.6 and several routines which
  428.     NetHack utilizes were not available prior to that upgrade.
  429.  
  430. 12. vmsbuild.com collects almost all of the object files (xxx.OBJ) into
  431.     an object library (NETHACK.OLB) as it compiles the source files.
  432.     This should prevent the quota-exceeded problems from the linker
  433.     that some sites have reported for prior versions.  Note that if you
  434.     compile any source files manually, you'll need to replace those
  435.     modules in the object library prior to linking the program:
  436.        $ cc/include=[-.include] [-.sys.vms]vmstty   !for example
  437.        $ libr/obj []nethack vmstty                  !replace VMSTTY
  438.        $ @[-.sys.vms]vmsbuild LINK                  !re-link NETHACK.EXE
  439.     If you forget to replace the library entry, your newly compiled code
  440.     will not be included in the new executable image.
  441.  
  442. 13. To access "wizard mode"--intended for debugging purposes, not to
  443.     spoil the game with unlimited wishes--you must be running from the
  444.     username compiled into the game via Local_WIZARD in vmsconf.h, and
  445.     you must specify "-D" on the command line when invoking NetHack.
  446.     Note that it must be uppercase, and it must be in quotes to prevent
  447.     the C run-time library's program startup code from converting it into
  448.     lowercase.  Any character name will be ignored in favor of "wizard".
  449.  
  450. 14. Unless you have both Motif and the Athena Widget set from MIT, you
  451.     will not be able to use the X11 interface on VMS.  Even if you do
  452.     have both those things, such a configuration has not been tested and
  453.     there are no provisions for it in vmsbuild.com.  Makefile.src does
  454.     have the extra source files listed, but not the necessary libraries.
  455.  
  456.     The X11 port will not compile and link with DECwindows, but it will
  457.     be able to display on a VMS DECwindows X server provided that it and
  458.     its Unix X client have a compatible transport between them (either
  459.     TCP/IP added to VMS or DECnet added to Unix) and session security
  460.     is set up appropriately.  You'll need to add the contents of file
  461.     [.win.X11]NetHack.ad into your DECW$USER_DEFAULTS:DECW$XDEFAULTS.DAT,
  462.     and modify some of the lines.  The DECwindows window manager does not
  463.     support having input focus automatically follow the pointer, so you
  464.     should uncomment the "NetHack*autofocus" resource line.  (For Motif
  465.     this may not be necessary, depending on customization options.)
  466.     Uncommenting the "NetHack*slow" line is highly recommended.  You'll
  467.     also need to set "NetHack*fonts: fixed" (rather than "variable"), and
  468.     either set the map font to "fixed" too or install the "nh10" font
  469.     that comes in file [.win.X11]nh10.bdf.  If NetHack warns that the map
  470.     font is variable, then something isn't set up properly.
  471.  
  472.     After creating or modifying decw$xdefaults.dat, you must restart the
  473.     window manager in order for any changes to take effect; it's easiest
  474.     to just make the session manager quit and then log in again.
  475.  
  476. 15. There is no support for VMS POSIX in this release of NetHack.
  477.  
  478. 16. If necessary, send problem reports via e-mail to
  479.        "nethack-bugs@linc.cis.upenn.edu"  (numeric address 130.91.6.8).
  480.     Always include version information for NetHack, the operating system,
  481.     and the C compiler used.
  482.  
  483. 23-JAN-1993
  484.