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 */