1 /* NetHack 3.6 pcconf.h $NHDT-Date: 1457207019 2016/03/05 19:43:39 $ $NHDT-Branch: chasonr $:$NHDT-Revision: 1.19 $ */
2 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
3 /*-Copyright (c) Michael Allison, 2006. */
4 /* NetHack may be freely redistributed. See license for details. */
9 #define MICRO /* always define this! */
11 #ifdef MSDOS /* some of this material is MS-DOS specific */
16 * __GO32__ is defined automatically by the djgpp port of gcc.
17 * __DJGPP__ is defined automatically by djgpp version 2 and above.
18 * _MSC_VER is defined automatically by Microsoft C.
19 * __BORLANDC__ is defined automatically by Borland C.
20 * __SC__ is defined automatically by Symantec C.
21 * Note: 3.6.x was not verified with Symantec C.
25 * The following options are somewhat configurable depending on
30 * For pre-V7.0 Microsoft Compilers only, manually define OVERLAY here.
33 /*#define OVERLAY */ /* Manual overlay definition (MSC 6.0ax only) */
36 #define MFLOPPY /* Support for floppy drives and ramdisks by dgk */
39 #define SHELL /* via exec of COMMAND.COM */
42 #define PCMUSIC /* Music option, enable very basic pc speaker music notes */
46 * Screen control options
51 * or ANSI_DEFAULT and TERMLIB
55 /* # define TERMLIB */ /* enable use of termcap file /etc/termcap */
56 /* or ./termcap for MSDOS (SAC) */
57 /* compile and link in Fred Fish's termcap library, */
58 /* enclosed in TERMCAP.ARC, to use this */
60 /* # define ANSI_DEFAULT */ /* allows NetHack to run without a ./termcap */
62 #define NO_TERMS /* Allows Nethack to run without ansi.sys by linking */
63 /* screen routines into the .exe */
65 #ifdef NO_TERMS /* if NO_TERMS select one screen package below */
66 #define SCREEN_BIOS /* Use bios calls for all screen control */
67 /* #define SCREEN_DJGPPFAST */ /* Use djgpp fast screen routines */
70 /* # define PC9800 */ /* Allows NetHack to run on NEC PC-9800 machines */
74 * PC video hardware support options (for graphical tile support)
76 * You may uncomment any/all of the options below.
79 #ifndef SUPPRESS_GRAPHICS
80 #if (defined(SCREEN_BIOS) || defined(SCREEN_DJGPPFAST)) && !defined(PC9800)
82 #define SCREEN_VGA /* Include VGA graphics routines in the build */
89 #undef SCREEN_DJGPPFAST
96 #define RANDOM /* have Berkeley random(3) */
98 #define MAIL /* Allows for fake mail daemon to deliver mail */
99 /* in the MSDOS version. (For AMIGA MAIL see */
100 /* amiconf.h). In the future this will be the */
101 /* hook for mail reader implementation. */
103 /* The following is needed for prototypes of certain functions */
105 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__SC__)
106 #include <process.h> /* Provides prototypes of exit(), spawn() */
109 #if defined(_MSC_VER) && (_MSC_VER >= 7)
110 #include <sys/types.h>
115 #include <string.h> /* Provides prototypes of strncmpi(), etc. */
119 #define SIG_RET_TYPE void(__cdecl *)(int)
120 #define M(c) ((char) (0x80 | (c)))
121 #define vprintf printf
122 #define vfprintf fprintf
123 #define vsprintf sprintf
126 #if defined(__BORLANDC__) && defined(STRNCMPI)
127 #include <string.h> /* Provides prototypes of strncmpi(), etc. */
130 #if defined(__DJGPP__)
131 #define _NAIVE_DOS_REGS
133 #include <string.h> /* Provides prototypes of strncmpi(), etc. */
135 #define M(c) ((char) (0x80 | (c)))
140 * On the VMS and unix, this option controls whether a delay is done by
141 * the clock, or whether it is done by excess output. On the PC, however,
142 * there is always a clock to use for the delay. The TIMED_DELAY option
143 * on MSDOS (without the termcap routines) is used to determine whether to
144 * include the delay routines in the code (and thus, provides a compile time
145 * method to turn off napping for visual effect). However, it is also used
146 * in the music code to wait between different notes. So it is needed in that
149 * Whereas on the VMS and unix, flags.nap is a run-time option controlling
150 * whether there is a delay by clock or by excess output, on MSDOS it is
151 * simply a flag to turn on or off napping for visual effects at run-time.
154 #define TIMED_DELAY /* enable the `timed_delay' run-time option */
157 #define TIMED_DELAY /* need it anyway */
159 #define NOCWD_ASSUMPTIONS /* Allow paths to be specified for HACKDIR, \
160 LEVELDIR, SAVEDIR, BONESDIR, DATADIR, \
161 SCOREDIR, LOCKDIR, CONFIGDIR, and TROUBLEDIR. \
164 #endif /* MSDOS configuration stuff */
166 #define PATHLEN 64 /* maximum pathlength */
167 #define FILENAME 80 /* maximum filename length (conservative) */
169 #include "micro.h" /* contains necessary externs for [os_name].c */
172 /* ===================================================
173 * The remaining code shouldn't need modification.
177 #if !defined(_MSC_VER)
183 #include <unistd.h> /* close(), etc. */
184 /* lock() in io.h interferes with lock[] in decl.h */
188 #include <pc.h> /* kbhit() */
190 #define HOLD_LOCKFILE_OPEN
191 #define SELF_RECOVER /* NetHack itself can recover games */
196 #define EXEPATH /* HACKDIR is .exe location if not explicitly defined */
200 #if defined(_MSC_VER) && defined(MSDOS)
201 #if (_MSC_VER >= 700) && !defined(FUNCTION_LEVEL_LINKING)
203 #define MOVERLAY /* Microsoft's MOVE overlay system (MSC >= 7.0) */
210 #if defined(__BORLANDC__)
211 #if defined(__OVERLAY__) && !defined(VROOMM)
212 /* __OVERLAY__ is automatically defined by Borland C if overlay option is on
214 #define VROOMM /* Borland's VROOMM overlay system */
217 #define STKSIZ 5 * 1024 /* Use a default of 5K stack for Borland C */
218 /* This macro is used in any file that contains */
219 /* a main() function. */
225 #define HLOCK "NHPERM"
232 #define rindex strrchr
239 /* the high quality random number routines */
242 # define Rand() random()
244 # define Rand() rand()
249 #define FCMASK 0660 /* file creation mask */
255 #define TEXTCOLOR /* */
256 #define PORT_HELP "msdoshlp.txt" /* msdos port specific help file */
259 /* Sanity check, do not modify these blocks. */
261 /* OVERLAY must be defined with MOVERLAY or VROOMM */
262 #if (defined(MOVERLAY) || defined(VROOMM))
268 #if defined(FUNCTION_LEVEL_LINKING)
272 #if defined(OVERLAY) && !defined(MOVERLAY) && !defined(VROOMM) \
273 && !defined(FUNCTION_LEVEL_LINKING)
277 #if defined(MSDOS) && defined(NO_TERMS)
279 #if defined(_MSC_VER) || defined(__SC__)
280 #pragma message("Warning -- TERMLIB defined with NO_TERMS in pcconf.h")
281 #pragma message(" Forcing undef of TERMLIB")
286 #if defined(_MSC_VER) || defined(__SC__)
287 #pragma message("Warning -- ANSI_DEFAULT defined with NO_TERMS in pcconf.h")
288 #pragma message(" Forcing undef of ANSI_DEFAULT")
292 /* only one screen package is allowed */
293 #if defined(SCREEN_BIOS) && defined(SCREEN_DJGPPFAST)
294 #if defined(_MSC_VER) || defined(__SC__)
295 #pragma message("Warning -- More than one screen package defined in pcconf.h")
297 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__SC__)
298 #if defined(SCREEN_DJGPPFAST)
299 #if defined(_MSC_VER) || defined(__SC__)
300 #pragma message(" Forcing undef of SCREEN_DJGPPFAST")
302 #undef SCREEN_DJGPPFAST /* Can't use djgpp fast with other compilers anyway \
306 /* djgpp C compiler */
307 #if defined(SCREEN_BIOS)
316 /* SCREEN_8514, SCREEN_VESA are only placeholders presently - sub VGA instead
318 #if defined(SCREEN_8514)
322 /* Graphical tile sanity checks */
324 #define SIMULATE_CURSOR
326 /* Select appropriate tile file format, and map size */
330 #endif /* End of sanity check block */
332 #if defined(MSDOS) && defined(DLB)
333 #define FILENAME_CMP stricmp /* case insensitive */
336 #if defined(_MSC_VER) && (_MSC_VER >= 7)
337 #pragma warning(disable : 4131)
338 #pragma warning(disable : 4135)
339 #pragma warning(disable : 4309)
340 #pragma warning(disable : 4746)
341 #pragma warning(disable : 4761)
346 #define msleep(k) (void) usleep((k) *1000)
349 #define msleep(k) delay(k)
352 #define msleep(k) (void) usleep((long)((k) *1000))
356 #endif /* PCCONF_H */