1/* SCCS Id: @(#)vmsconf.h 3.4 2003/05/19 */ 2/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ 3/* NetHack may be freely redistributed. See license for details. */ 4 5#ifdef VMS 6#ifndef VMSCONF_H 7#define VMSCONF_H 8 9/* 10 * Edit these to choose values appropriate for your site. 11 * WIZARD is the username allowed to use the debug option of nethack; no harm 12 * is done by leaving it as a username that doesn't exist at your site. 13 * HACKDIR can be overridden at run-time with the logical name HACKDIR, as in 14 * $ define hackdir disk$users:[games.nethack] 15 * Trailing NULs are present in the default values in order to make some 16 * extra room for patching longer values into an existing executable. 17 */ 18#define Local_WIZARD "NHWIZARD\0\0\0\0" 19#define Local_HACKDIR "DISK$USERS:[GAMES.NETHACK.3_4_X.PLAY]\0\0\0\0\0\0\0\0" 20 21/* 22 * This section cleans up the stuff done in config.h so that it 23 * shouldn't need to be modified. It's conservative so that if 24 * config.h is actually edited, the changes won't impact us. 25 */ 26#ifdef UNIX 27# undef UNIX 28#endif 29#ifdef HACKDIR 30# undef HACKDIR 31#endif 32#ifdef WIZARD 33# undef WIZARD 34#endif 35#ifdef WIZARD_NAME 36# undef WIZARD_NAME 37#endif 38#define HACKDIR Local_HACKDIR 39#ifndef KR1ED 40# define WIZARD Local_WIZARD 41# define WIZARD_NAME WIZARD 42#else 43# define WIZARD 1 44# define WIZARD_NAME Local_WIZARD 45#endif 46 47/* filenames require punctuation to avoid redirection via logical names */ 48#undef RECORD 49#define RECORD "record;1" /* scoreboard file (retains high scores) */ 50#undef LOGFILE 51#define LOGFILE "logfile;0" /* optional file (records all games) */ 52 53#define HLOCK "perm;1" /* an empty file used for locking purposes */ 54 55/* want compression--for level & save files--performed within NetHack itself */ 56#ifdef COMPRESS 57# undef COMPRESS 58#endif 59#ifndef INTERNAL_COMP 60# define INTERNAL_COMP 61#endif 62 63/* 64 * If nethack.exe will be installed with privilege so that the playground 65 * won't need to be left unprotected, define SECURE to suppress a couple 66 * of file protection fixups (protection of bones files and ownership of 67 * save files). 68 */ 69/* #define SECURE */ 70 71/* 72 * Put the readonly data files into a single container rather than into 73 * separate files in the playground directory. 74 */ 75#define DLB /* use data librarian code */ 76 77/* 78 * You may define TEXTCOLOR if your system has any terminals that recognize 79 * ANSI color sequences of the form ``<ESCAPE>[#;#m'', where the first # is 80 * a number between 40 and 47 represented background color, and the second 81 * # is a number between 30 and 37 representing the foreground color. 82 * GIGI terminals and DECterm windows on color VAXstations support these 83 * color escape sequences, as do some 3rd party terminals and many micro 84 * computers. 85 */ 86/* #define TEXTCOLOR */ 87 88/* 89 * If you define USE_QIO_INPUT, then you'll get raw characters from the 90 * keyboard, not unlike those of the unix version of Nethack. This will 91 * allow you to use the Escape key in normal gameplay, and the appropriate 92 * control characters in Wizard mode. It will work most like the unix version. 93 * It will also avoid "<interrupt>" being displayed when ^Y is pressed. 94 * 95 * Otherwise, the VMS SMG calls will be used. These calls block use of 96 * the escape key, as well as certain control keys, so gameplay is not 97 * the same, although the differences are fairly negligible. You must 98 * then use a VTxxx function key or two <escape>s to give an ESC response. 99 */ 100#define USE_QIO_INPUT /* use SYS$QIOW instead of SMG$READ_KEYSTROKE */ 101 102/* 103 * Allow the user to decide whether to pause via timer or excess screen 104 * output for various display effects like explosions and moving objects. 105 */ 106#define TIMED_DELAY /* enable the `timed_delay' run-time option */ 107 108/* 109 * If you define MAIL, then NetHack will capture incoming broadcast 110 * messages such as "New mail from so-and-so" and "Print job completed," 111 * and then deliver them to the player. For mail and phone broadcasts 112 * a scroll of mail will be created, which when read will cause NetHack 113 * to prompt the player for a command to spawn in order to respond. The 114 * latter capability will not be available if SHELL is disabled below. 115 * If you undefine MAIL, broadcasts will go straight to the terminal, 116 * resulting in disruption of the screen display; use <ctrl/R> to redraw. 117 */ 118#define MAIL /* enable broadcast trapping */ 119 120/* 121 * SHELL enables the player to 'escape' into a spawned subprocess via 122 * the '!' command. Logout or attach back to the parent to resume play. 123 * If the player attaches back to NetHack, then a subsequent escape will 124 * re-attach to the existing subprocess. Any such subprocess left over 125 * at game exit will be deleted by an exit handler. 126 * SUSPEND enables someone running NetHack in a subprocess to reconnect 127 * to the parent process with the <ctrl/Z> command; this is not very 128 * close to Unix job control, but it's better than nothing. 129 */ 130#define SHELL /* do not delete the '!' command */ 131#define SUSPEND /* don't delete the ^Z command, such as it is */ 132 133#define RANDOM /* use sys/share/random.c instead of vaxcrtl rand */ 134 135#define FCMASK 0660 /* file creation mask */ 136 137 138/* 139 * The remainder of the file should not need to be changed. 140 */ 141 142/* data librarian defs */ 143#ifdef DLB 144# define DLBFILE "nh-data.dlb" 145 /* 146 * Since we can do without case insensitive filename comparison, 147 * avoid enabling it because that requires compiling and linking 148 * src/hacklib into util/dlb_main. 149 */ 150/* # define FILENAME_CMP strcmpi */ /* case insensitive */ 151#endif 152 153#if defined(VAXC) && !defined(ANCIENT_VAXC) 154# ifdef volatile 155# undef volatile 156# endif 157# ifdef const 158# undef const 159# endif 160#endif 161 162#ifdef __DECC 163# define STRICT_REF_DEF /* used in lev_main.c */ 164#endif 165#ifdef STRICT_REF_DEF 166# define DEFINE_OSPEED 167#endif 168 169#ifndef alloca 170 /* bison generated foo_yacc.c might try to use alloca() */ 171# ifdef __GNUC__ 172# define alloca __builtin_alloca 173# else 174# define ALLOCA_HACK /* used in util/panic.c */ 175# endif 176#endif 177 178#ifdef _DECC_V4_SOURCE 179/* <types.h> excludes some necessary typedefs when _DECC_V4_SOURCE is defined */ 180#include <types.h> 181# ifndef __PID_T 182# define __PID_T 183typedef __pid_t pid_t; 184# endif 185# ifndef __UID_T 186# define __UID_T 187typedef __uid_t uid_t; 188# endif 189# ifndef __GID_T 190# define __GID_T 191typedef __gid_t gid_t; 192# endif 193# ifndef __MODE_T 194# define __MODE_T 195typedef __mode_t mode_t; 196# endif 197#endif /* _DECC_V4_SOURCE */ 198 199#include <time.h> 200#if 0 /* <file.h> is missing for old gcc versions; skip it to save time */ 201#include <file.h> 202#else /* values needed from missing include file */ 203# define O_RDONLY 0 204# define O_WRONLY 1 205# define O_RDWR 2 206# define O_CREAT 0x200 207# define O_TRUNC 0x400 208#endif 209 210#ifndef REDO 211# define Getchar nhgetch 212#endif 213#define tgetch vms_getchar 214 215#include "system.h" 216 217#define index strchr 218#define rindex strrchr 219 220/* Use the high quality random number routines. */ 221#if defined(RANDOM) 222#define Rand() random() 223/* VMS V7 adds these entry points to DECC$SHR; stick with the nethack-supplied 224 code to avoid having to deal with version-specific conditionalized builds */ 225#define random nh_random 226#define srandom nh_srandom 227#define initstate nh_initstate 228#define setstate nh_setstate 229#else 230#define Rand() rand() 231#endif 232 233#ifndef __GNUC__ 234# ifndef bcopy 235#define bcopy(s,d,n) memcpy((d),(s),(n)) /* vaxcrtl */ 236# endif 237#endif 238#define abort() vms_abort() /* vmsmisc.c */ 239#define creat(f,m) vms_creat(f,m) /* vmsfiles.c */ 240#define exit(sts) vms_exit(sts) /* vmsmisc.c */ 241#define getuid() vms_getuid() /* vmsunix.c */ 242#define link(f1,f2) vms_link(f1,f2) /* vmsfiles.c */ 243#define open(f,k,m) vms_open(f,k,m) /* vmsfiles.c */ 244/* #define unlink(f0) vms_unlink(f0) /* vmsfiles.c */ 245#ifdef VERYOLD_VMS 246#define unlink(f0) delete(f0) /* vaxcrtl */ 247#else 248#define unlink(f0) remove(f0) /* vaxcrtl, decc$shr */ 249#endif 250#define C$$TRANSLATE(n) c__translate(n) /* vmsfiles.c */ 251 252/* VMS global names are case insensitive... */ 253#define An vms_an 254#define The vms_the 255#define Shk_Your vms_shk_your 256 257/* avoid global symbol in Alpha/VMS V1.5 STARLET library (link trouble) */ 258#define ospeed vms_ospeed 259 260/* used in several files which don't #include "extern.h" */ 261extern void FDECL(vms_exit, (int)); 262extern int FDECL(vms_open, (const char *,int,unsigned)); 263 264#endif /* VMSCONF_H */ 265#endif /* VMS */ 266