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