1 /* SCCS Id: @(#)vmsconf.h 3.3 98/07/16 */ 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-3-0.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 183 typedef __pid_t pid_t; 184 # endif 185 # ifndef __UID_T 186 # define __UID_T 187 typedef __uid_t uid_t; 188 # endif 189 # ifndef __GID_T 190 # define __GID_T 191 typedef __gid_t gid_t; 192 # endif 193 #endif /* _DECC_V4_SOURCE */ 194 195 #include <time.h> 196 #if 0 /* <file.h> is missing for old gcc versions; skip it to save time */ 197 #include <file.h> 198 #else /* values needed from missing include file */ 199 # define O_RDONLY 0 200 # define O_WRONLY 1 201 # define O_RDWR 2 202 # define O_CREAT 0x200 203 # define O_TRUNC 0x400 204 #endif 205 206 #ifndef REDO 207 # define Getchar nhgetch 208 #endif 209 #define tgetch vms_getchar 210 211 #include "system.h" 212 213 #define index strchr 214 #define rindex strrchr 215 216 /* Use the high quality random number routines. */ 217 #if defined(RANDOM) 218 #define Rand() random() 219 /* VMS V7 adds these entry points to DECC$SHR; stick with the nethack-supplied 220 code to avoid having to deal with version-specific conditionalized builds */ 221 #define random nh_random 222 #define srandom nh_srandom 223 #define initstate nh_initstate 224 #define setstate nh_setstate 225 #else 226 #define Rand() rand() 227 #endif 228 229 #ifndef __GNUC__ 230 # ifndef bcopy 231 #define bcopy(s,d,n) memcpy((d),(s),(n)) /* vaxcrtl */ 232 # endif 233 #endif 234 #define abort() vms_abort() /* vmsmisc.c */ 235 #define creat(f,m) vms_creat(f,m) /* vmsfiles.c */ 236 #define exit(sts) vms_exit(sts) /* vmsmisc.c */ 237 #define getuid() vms_getuid() /* vmsunix.c */ 238 #define link(f1,f2) vms_link(f1,f2) /* vmsfiles.c */ 239 #define open(f,k,m) vms_open(f,k,m) /* vmsfiles.c */ 240 /* #define unlink(f0) vms_unlink(f0) /* vmsfiles.c */ 241 #ifdef VERYOLD_VMS 242 #define unlink(f0) delete(f0) /* vaxcrtl */ 243 #else 244 #define unlink(f0) remove(f0) /* vaxcrtl, decc$shr */ 245 #endif 246 #define C$$TRANSLATE(n) c__translate(n) /* vmsfiles.c */ 247 248 /* VMS global names are case insensitive... */ 249 #define An vms_an 250 #define The vms_the 251 #define Shk_Your vms_shk_your 252 253 /* avoid global symbol in Alpha/VMS V1.5 STARLET library (link trouble) */ 254 #define ospeed vms_ospeed 255 256 /* used in several files which don't #include "extern.h" */ 257 extern void FDECL(vms_exit, (int)); 258 extern int FDECL(vms_open, (const char *,int,unsigned)); 259 260 #endif /* VMSCONF_H */ 261 #endif /* VMS */ 262