NHDT->ANH, nethack->anethack, nhdat->anhdat
[aNetHack.git] / sys / vms / Install.vms
blobc1f0891e6235c2d2338da374446cf59f70aa2dfc
1                Instructions for Building and Installing aNetHack 0.0.1.0
2                      on a VMS (aka OpenVMS) system
3                =========================================
5 0.  Please read this entire file before trying to build or install
6     aNetHack, then read it again!
8 1.  aNetHack 0.0.1 was built and tested on OpenVMS on both the Integrity
9     and Alpha platform using the HP C V7.3 for OpenVMS compiler.  While
10     not tested, older versions of DEC C will most likely work as compatibility
11     with older systems is a goal of the VMS porting team.   Unfortunatly,
12     ancient VAX C probably will no longer work.  The set of Makefiles provided
13     are known to be out of date; use vmsbuild.com instead.
15 2.  Make sure all the aNetHack files are in the appropriate directory
16     structure.  You should set up a directory--referred to as "top" below
17     and in some of the assorted files, but which may be a subdirectory--
18     that has these subdirectories
19         [.dat]          -- data files
20         [.doc]          -- documentation files
21         [.include]      -- C header files
22         [.src]          -- primary source files
23         [.sys]          -- parent for [.sys.*]
24         [.sys   .share] -- files shared by several ports, including VMS
25         [.sys   .vms]   -- VMS-specific source and support files
26         [.util]         -- sources for essential utility programs
27         [.win]          -- parent for [.win.*]
28         [.win   .tty]   -- "window" routines for ordinary terminals
29                            (including terminal windows on workstations)
30     The following subdirectories may be present, but are not useful for
31     building aNetHack on VMS and are not required:
32         [.sys   .amiga] -- AmigaDOS
33         [.sys   .atari] -- Atari TOS
34         [.sys   .be]    -- BeBox BeOS
35         [.sys   .mac]   -- Macintosh
36         [.sys   .msdos] -- MSDOS for IBM PCs and compatibles
37         [.sys   .os2]   -- OS/2
38         [.sys   .share   .sounds] -- AIFF format audio files
39         [.sys   .unix]  -- guess :-)
40         [.sys   .unit    .hints] -- configuration data for setup.sh
41         [.sys   .wince] -- Windows CE
42         [.sys   .wince   .ceinc] -- more WinCE
43         [.sys   .wince   .ceinc   .sys] -- ditto
44         [.sys   .winnt] -- Windows NT
45         [.win   .gem]   -- window routines for Atari/GEM
46         [.win   .gnome] -- window routines for Unix/GNOME
47         [.win   .Qt]    -- window routines for Qt
48         [.win   .share] -- "tile" graphic support
49         [.win   .win32] -- Windows NT and Windows CE
50         [.win   .X11]   -- window routines for X-Windows; requires X11R4
51                            or later and MIT's Athena Widget set
52     You must arrange things in this structure or the supplied procedures
53     and instructions in this file will not work properly.  Several DCL
54     command files are present in the [.sys.vms] subdirectory and will not
55     work as intended if they are moved elsewhere.  The file called Files
56     in the top directory contains lists of everything that should be in
57     each subdirectory, including things that are constructed as aNetHack
58     is being built.
60 3.  Prior to beginning compilation, go to the [.include] subdirectory and
61     edit vmsconf.h according to its comments.  You should set Local_WIZARD
62     and Local_HACKDIR to appropriate values, and you might want to define
63     TEXTCOLOR if you have any color VAXstations or color terminals which
64     handle ANSI-format escape sequences to set foreground and background
65     color for text characters.  (VT241/VT340 color graphics won't work.)
66     Other things which may be of interest are SECURE if you intend to
67     set up aNetHack as an installed image which is granted privileges, and
68     SHELL which should be disabled if you intend to allow captive accounts
69     to run aNetHack.  You may also want to edit file config.h, but that's
70     only necessary if you want or need to disable some of the game options.
71     The distributed copy of config.h will work successfully on VMS;
72     vmsconf.h has conditional code to deal with the UNIX-specific items.
74 4.  If you have the programming utilities lex or flex and yacc or bison,
75     you may edit the procedure [.sys.vms]spec_lev.com and execute it to
76     process several source files for aNetHack's special level and dungeon
77     compilers.  If you use the version of these utilities from the OpenVMS
78     freeware CD you will have to remove the include <stdlib.h> that yacc
79     places at the top of each file.  The provided spec_lev.com will default
80     to copy pre-processed versions of the appropriate files (dgn_lex.c, lev_lex.c,
81     dgn_yacc.c, lev_yacc.c, dgn_comp.h, and lev_comp.h) from [.sys.share]
82     into [.util]*.c and [.include]*.h.
83     If you choose to modify spec_lev.com, you want to run and test your
84     changes prior to executing vmsbuild.com; otherwise, vmsbuild.com will
85     do so for you and the results might not be what you expect.
87 5.  To build ANETHACK.EXE and its auxiliary programs, execute the
88     following DCL command:
89        $ @[.SYS.VMS]VMSBUILD          !defaults to CC, either VAXC or DECC
90     or $ @[.SYS.VMS]VMSBUILD "GNUC"   !force "GCC"
91     It can take quite a bit of time for a full build to complete.  Around
92     an hour on a Alphastation 200 and 5 minutes on a modern IA64 system.
93     vmsbuild.com will display some feedback as it executes; generally
94     this will be the name of each source file that's about to be compiled
95     or the name of the executable that has just been linked.
97 6.  If you have already started (or finished) a build and decide to start
98     over with a different compiler, you should DELETE [.SRC]CRTL.OPT;*
99     first.
101 7.  After compilation, it's time to perform installation.  Go back to
102     the top directory.  Either edit [.sys.vms]install.com to indicate
103     where you want everything to be installed, or specify the location
104     and "playground" owner on the command line.  Then execute either
105        $ @[.SYS.VMS]INSTALL
106     or $ @[.SYS.VMS]INSTALL location owner
107     where location is a device:[directory] specification and owner is
108     either a rights identifier or UIC.  If install.com is not modified
109     and if values aren't supplied on the command line, the default values
110     used are the translation of logical name HACKDIR, if any, or else
111     [.PLAY] (relative to the current directory), and the UIC for the
112     current process.  install.com will use the auxiliary programs
113     constructed by vmsbuild.com to process quite a few data files in the
114     [.dat] subdirectory.  Then it will create the playground directory,
115     if necessary, plus the associated [.save] subdirectory.  Next it will
116     copy the data files into the playground; this step can take a while.
117     Finally it will copy anethack.exe and a few additional support files.
119     After it completes, the files [.src]anethack.olb, [.src]anethack.exe,
120     [.util]*.obj, [.util]*_comp.exe, and [.util]makedefs.exe can be
121     deleted in order to save disk space if desired.  The other program,
122     [.util]recover.exe, should not be deleted unless you make a copy of
123     it somewhere--perhaps in the playground directory--first.  It can be
124     used to resurrect some games disrupted by system or program crash.
126 8.  The file anethack.com which is copied to the playground directory can
127     be used to invoke aNetHack, or anethack.exe can be run directly.  Most
128     of the command-line options specified in the Unix man-page (file
129     [.doc]anethack.txt) are also applicable to VMS.  Some comments at the
130     beginning of anethack.com illustrate several of the options.  New
131     players should read the file "Guidebook.txt" which will be copied
132     into the playground directory as "Guidebook.doc".
135 Notes:
137 0.  Version 3.5.x was never publicly released.
139 1.  Save files and bones files from 3.4.x and earlier versions
140     will not work with 3.6.0. The scoreboard file (RECORD) from
141     3.4.x or 3.3.x will work.
143 2.  To specify user-preference options in your environment, define the
144     logical name ANETHACKOPTIONS to have the value of a quoted string
145     containing a comma separated list of option values.  The option names
146     are case-insensitive.
147        $ define anethackoptions "noAutoPickup,Dog:Rover,Cat:Felix,DECgraphics"
148     One value you'll probably want to specify is "noLegacy" to turn off
149     the initial introductory passage.  The "checkpoint" option controls
150     whether or not enough data is saved to disk so that the set of level
151     files left behind after a crash contains sufficient information for
152     recover.exe to be able to construct a save file after the fact.  The
153     tradeoff for enabling checkpoint is that using it makes level changes
154     do more I/O and take longer.  The "menustyle" option controls some
155     aspects of the user interface, and can be set to "menustyle:traditional"
156     to make anethack behave more like older versions.
158     If logical name or DCL symbol ANETHACKOPTIONS is not defined, aNetHack
159     will try HACKOPTIONS instead.  Regardless of whether or not either
160     is defined, it will also try to find a configuration file containing
161     additional option settings.  If the value of the translation of
162     ANETHACKOPTIONS--or HACKOPTIONS--begins with an "@" character then the
163     rest of the translation is assumed to be the name of the configuration
164     file.  Otherwise, the following are tried:  file specified by logical
165     name ANETHACKINI, file SYS$LOGIN:ANETHACK.INI, and file HOME:ANETHACK.CNF
166     (note that the C run-time library sets up the value of HOME to match
167     sys$login).  Syntax for the configuration file is similar to
168     ANETHACKOPTIONS, but multiple lines can be used, each must start with
169     OPTIONS=, and comments can be included by placing '#' in the first
170     column.  Several options which take more complex values (graphics
171     representation) can also be present; see the "Guidebook" for details.
172     (Guidebook.txt can be found in the [.doc] subdirectory; a copy gets
173     placed in the playground directory by install.com.  Also, an example
174     configuration file can be found in [.win.X11]anethack.rc.)
176 3.  [As mentioned above, the set of Makefiles is out of date so disregard
177     this note....]
178     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.
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.
214 4.  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 aNetHack will use it if it can't find any other
221     one.  aNetHack uses the following sequence to attempt to locate the
222     termcap file:  translation of the logical name TERMCAP (used as-is),
223     file ANETHACKDIR: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 aNetHack
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.
230     aNetHack also tries fairly hard to figure out what kind of terminal
231     you're using.  It checks for logical names (or symbols) ANETHACK_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), aNetHack will query the VMS TERMTABLE
237     database used by the SMG library routines.  Whatever value aNetHack
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 aNetHack will exit.
242 5.  aNetHack 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 aNetHack 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).  aNetHack 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.
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.
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 aNetHack 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 aNetHack'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 aNetHack 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.
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 ANETHACKDIR) 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.
285     To be able to install anethack.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 aNetHack, you can relink with tracebacks disabled by doing
293        $ @[.SYS.VMS]VMSBUILD "LINK" "" "" "/noTrace/noDebug"
295 6.  If you can't or won't install anethack.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 aNetHack 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.anethack.play], then you want to specify
318     disk$foo:[me.games.anethack]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.
328 7.  Many aNetHack 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 aNetHack.)
343     VMS aNetHack 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 or 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.
353     VMS aNetHack 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.
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 aNetHack 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 aNetHack subprocess;
366     otherwise the game in progress won't get saved when you logout.
368 8.  aNetHack 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.
377 9.  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     aNetHack utilizes were not available prior to that upgrade.
385 10. vmsbuild.com collects almost all of the object files (xxx.OBJ) into
386     an object library (ANETHACK.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 []anethack vmstty                  !replace VMSTTY
393        $ @[-.sys.vms]vmsbuild LINK                  !re-link ANETHACK.EXE
394     If you forget to replace the library entry, your newly compiled code
395     will not be included in the new executable image.
397 11. 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 aNetHack.
401     Note that -D 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:anethack "-D"
405     Any character name you specify will be ignored in favor of "wizard".
407 12. At program startup time, aNetHack 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, aNetHack 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 aNetHack at about the same
430     time, you may have to wait a short period.  aNetHack 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 aNetHack 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.
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.
449 13. 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.
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]aNetHack.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 "aNetHack*autofocus" resource line.  (For Motif
464     this may not be necessary, depending on customization options.)
465     Uncommenting the "aNetHack*slow" line is highly recommended.  You'll
466     also need to set "aNetHack*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 aNetHack warns that the map
469     font is variable, then something isn't set up properly.
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.
475 14. If necessary, send problem reports via e-mail to
476        <devteam@anethack.org>
477     Always include version information for aNetHack, the operating system,
478     and the C compiler used.
480 20-OCT-2003
481 minimally updated 9-NOV-2015...