1 Instructions for Installing NetHack 3.4.3 2 on a VMS (aka OpenVMS) 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 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 212. 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 653. 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 794. 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 905. 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 996. 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 1037. 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 1288. 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 137Notes: 138 1391. 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 1442. 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 1773. 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 2134. 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 2415. 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 2946. 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 3277. 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 3678. 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 3769. 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 38410. 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 39611. 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 40612. 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 44813. 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 47414. 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 47920-OCT-2003 480