OSDN Git Service

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