1 /* NetHack 3.6 pcconf.h $NHDT-Date: 1432512776 2015/05/25 00:12:56 $ $NHDT-Branch: master $:$NHDT-Revision: 1.17 $ */
2 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
3 /* NetHack may be freely redistributed. See license for details. */
8 #define MICRO /* always define this! */
10 #ifdef MSDOS /* some of this material is MS-DOS specific */
15 * __GO32__ is defined automatically by the djgpp port of gcc.
16 * __DJGPP__ is defined automatically by djgpp version 2 and above.
17 * _MSC_VER is defined automatically by Microsoft C.
18 * __BORLANDC__ is defined automatically by Borland C.
19 * __SC__ is defined automatically by Symantec C.
20 * Note: 3.6.x was not verified with Symantec C.
24 * The following options are somewhat configurable depending on
29 * For pre-V7.0 Microsoft Compilers only, manually define OVERLAY here.
32 /*#define OVERLAY */ /* Manual overlay definition (MSC 6.0ax only) */
35 #define MFLOPPY /* Support for floppy drives and ramdisks by dgk */
38 #define SHELL /* via exec of COMMAND.COM */
41 #define PCMUSIC /* Music option, enable very basic pc speaker music notes */
45 * Screen control options
50 * or ANSI_DEFAULT and TERMLIB
54 /* # define TERMLIB */ /* enable use of termcap file /etc/termcap */
55 /* or ./termcap for MSDOS (SAC) */
56 /* compile and link in Fred Fish's termcap library, */
57 /* enclosed in TERMCAP.ARC, to use this */
59 /* # define ANSI_DEFAULT */ /* allows NetHack to run without a ./termcap */
61 #define NO_TERMS /* Allows Nethack to run without ansi.sys by linking */
62 /* screen routines into the .exe */
64 #ifdef NO_TERMS /* if NO_TERMS select one screen package below */
65 #define SCREEN_BIOS /* Use bios calls for all screen control */
66 /* #define SCREEN_DJGPPFAST */ /* Use djgpp fast screen routines */
69 /* # define PC9800 */ /* Allows NetHack to run on NEC PC-9800 machines */
73 * PC video hardware support options (for graphical tile support)
75 * You may uncomment any/all of the options below.
78 #ifndef SUPPRESS_GRAPHICS
79 #if (defined(SCREEN_BIOS) || defined(SCREEN_DJGPPFAST)) && !defined(PC9800)
81 #define SCREEN_VGA /* Include VGA graphics routines in the build */
87 #undef SCREEN_DJGPPFAST
93 #define RANDOM /* have Berkeley random(3) */
95 #define MAIL /* Allows for fake mail daemon to deliver mail */
96 /* in the MSDOS version. (For AMIGA MAIL see */
97 /* amiconf.h). In the future this will be the */
98 /* hook for mail reader implementation. */
100 /* The following is needed for prototypes of certain functions */
102 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__SC__)
103 #include <process.h> /* Provides prototypes of exit(), spawn() */
106 #if defined(_MSC_VER) && (_MSC_VER >= 7)
107 #include <sys/types.h>
112 #include <string.h> /* Provides prototypes of strncmpi(), etc. */
116 #define SIG_RET_TYPE void(__cdecl *)(int)
117 #define M(c) ((char) (0x80 | (c)))
118 #define vprintf printf
119 #define vfprintf fprintf
120 #define vsprintf sprintf
123 #if defined(__BORLANDC__) && defined(STRNCMPI)
124 #include <string.h> /* Provides prototypes of strncmpi(), etc. */
127 #if defined(__DJGPP__)
128 #define _NAIVE_DOS_REGS
130 #include <string.h> /* Provides prototypes of strncmpi(), etc. */
132 #define M(c) ((char) (0x80 | (c)))
137 * On the VMS and unix, this option controls whether a delay is done by
138 * the clock, or whether it is done by excess output. On the PC, however,
139 * there is always a clock to use for the delay. The TIMED_DELAY option
140 * on MSDOS (without the termcap routines) is used to determine whether to
141 * include the delay routines in the code (and thus, provides a compile time
142 * method to turn off napping for visual effect). However, it is also used
143 * in the music code to wait between different notes. So it is needed in that
146 * Whereas on the VMS and unix, flags.nap is a run-time option controlling
147 * whether there is a delay by clock or by excess output, on MSDOS it is
148 * simply a flag to turn on or off napping for visual effects at run-time.
151 #define TIMED_DELAY /* enable the `timed_delay' run-time option */
154 #define TIMED_DELAY /* need it anyway */
156 #define NOCWD_ASSUMPTIONS /* Allow paths to be specified for HACKDIR, \
157 LEVELDIR, SAVEDIR, BONESDIR, DATADIR, \
158 SCOREDIR, LOCKDIR, CONFIGDIR, and TROUBLEDIR. \
161 #endif /* MSDOS configuration stuff */
163 #define PATHLEN 64 /* maximum pathlength */
164 #define FILENAME 80 /* maximum filename length (conservative) */
166 #include "micro.h" /* contains necessary externs for [os_name].c */
169 /* ===================================================
170 * The remaining code shouldn't need modification.
174 #if !defined(_MSC_VER)
180 #include <unistd.h> /* close(), etc. */
181 /* lock() in io.h interferes with lock[] in decl.h */
185 #include <pc.h> /* kbhit() */
187 #define HOLD_LOCKFILE_OPEN
188 #define SELF_RECOVER /* NetHack itself can recover games */
193 #define EXEPATH /* HACKDIR is .exe location if not explicitly defined */
197 #if defined(_MSC_VER) && defined(MSDOS)
198 #if (_MSC_VER >= 700) && !defined(FUNCTION_LEVEL_LINKING)
200 #define MOVERLAY /* Microsoft's MOVE overlay system (MSC >= 7.0) */
207 #if defined(__BORLANDC__)
208 #if defined(__OVERLAY__) && !defined(VROOMM)
209 /* __OVERLAY__ is automatically defined by Borland C if overlay option is on
211 #define VROOMM /* Borland's VROOMM overlay system */
214 #define STKSIZ 5 * 1024 /* Use a default of 5K stack for Borland C */
215 /* This macro is used in any file that contains */
216 /* a main() function. */
222 #define HLOCK "NHPERM"
229 #define rindex strrchr
237 /* Use the high quality random number routines. */
238 #define Rand() random()
240 #define Rand() rand()
244 #define FCMASK 0660 /* file creation mask */
250 #define TEXTCOLOR /* */
251 #define PORT_HELP "msdoshlp.txt" /* msdos port specific help file */
254 /* Sanity check, do not modify these blocks. */
256 /* OVERLAY must be defined with MOVERLAY or VROOMM */
257 #if (defined(MOVERLAY) || defined(VROOMM))
263 #if defined(FUNCTION_LEVEL_LINKING)
267 #if defined(OVERLAY) && !defined(MOVERLAY) && !defined(VROOMM) \
268 && !defined(FUNCTION_LEVEL_LINKING)
272 #if defined(MSDOS) && defined(NO_TERMS)
274 #if defined(_MSC_VER) || defined(__SC__)
275 #pragma message("Warning -- TERMLIB defined with NO_TERMS in pcconf.h")
276 #pragma message(" Forcing undef of TERMLIB")
281 #if defined(_MSC_VER) || defined(__SC__)
282 #pragma message("Warning -- ANSI_DEFAULT defined with NO_TERMS in pcconf.h")
283 #pragma message(" Forcing undef of ANSI_DEFAULT")
287 /* only one screen package is allowed */
288 #if defined(SCREEN_BIOS) && defined(SCREEN_DJGPPFAST)
289 #if defined(_MSC_VER) || defined(__SC__)
290 #pragma message("Warning -- More than one screen package defined in pcconf.h")
292 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__SC__)
293 #if defined(SCREEN_DJGPPFAST)
294 #if defined(_MSC_VER) || defined(__SC__)
295 #pragma message(" Forcing undef of SCREEN_DJGPPFAST")
297 #undef SCREEN_DJGPPFAST /* Can't use djgpp fast with other compilers anyway \
301 /* djgpp C compiler */
302 #if defined(SCREEN_BIOS)
311 /* SCREEN_8514, SCREEN_VESA are only placeholders presently - sub VGA instead
313 #if defined(SCREEN_8514) || defined(SCREEN_VESA)
318 /* Graphical tile sanity checks */
320 #define SIMULATE_CURSOR
322 /* Select appropriate tile file format, and map size */
326 #endif /* End of sanity check block */
328 #if defined(MSDOS) && defined(DLB)
329 #define FILENAME_CMP stricmp /* case insensitive */
332 #if defined(_MSC_VER) && (_MSC_VER >= 7)
333 #pragma warning(disable : 4131)
334 #pragma warning(disable : 4135)
335 #pragma warning(disable : 4309)
336 #pragma warning(disable : 4746)
337 #pragma warning(disable : 4761)
342 #define msleep(k) (void) usleep((k) *1000)
345 #define msleep(k) delay(k)
348 #define msleep(k) (void) usleep((long)((k) *1000))
352 #endif /* PCCONF_H */