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.
24 #define CONFIG_FILE "defaults.nh"
25 #define GUIDEBOOK_FILE "Guidebook.txt"
28 * The following options are somewhat configurable depending on
33 * For pre-V7.0 Microsoft Compilers only, manually define OVERLAY here.
36 /*#define OVERLAY */ /* Manual overlay definition (MSC 6.0ax only) */
39 #define MFLOPPY /* Support for floppy drives and ramdisks by dgk */
42 #define SHELL /* via exec of COMMAND.COM */
45 #define PCMUSIC /* Music option, enable very basic pc speaker music notes */
49 * Screen control options
54 * or ANSI_DEFAULT and TERMLIB
58 /* # define TERMLIB */ /* enable use of termcap file /etc/termcap */
59 /* or ./termcap for MSDOS (SAC) */
60 /* compile and link in Fred Fish's termcap library, */
61 /* enclosed in TERMCAP.ARC, to use this */
63 /* # define ANSI_DEFAULT */ /* allows NetHack to run without a ./termcap */
65 #define NO_TERMS /* Allows Nethack to run without ansi.sys by linking */
66 /* screen routines into the .exe */
68 #ifdef NO_TERMS /* if NO_TERMS select one screen package below */
69 #define SCREEN_BIOS /* Use bios calls for all screen control */
70 /* #define SCREEN_DJGPPFAST */ /* Use djgpp fast screen routines */
73 /* # define PC9800 */ /* Allows NetHack to run on NEC PC-9800 machines */
77 * PC video hardware support options (for graphical tile support)
79 * You may uncomment any/all of the options below.
82 #ifndef SUPPRESS_GRAPHICS
83 #if (defined(SCREEN_BIOS) || defined(SCREEN_DJGPPFAST)) && !defined(PC9800)
85 #define SCREEN_VGA /* Include VGA graphics routines in the build */
92 #undef SCREEN_DJGPPFAST
99 #define RANDOM /* have Berkeley random(3) */
101 #define MAIL /* Allows for fake mail daemon to deliver mail */
102 /* in the MSDOS version. (For AMIGA MAIL see */
103 /* amiconf.h). In the future this will be the */
104 /* hook for mail reader implementation. */
106 /* The following is needed for prototypes of certain functions */
108 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__SC__)
109 #include <process.h> /* Provides prototypes of exit(), spawn() */
112 #if defined(_MSC_VER) && (_MSC_VER >= 7)
113 #include <sys/types.h>
118 #include <string.h> /* Provides prototypes of strncmpi(), etc. */
122 #define SIG_RET_TYPE void(__cdecl *)(int)
123 #define M(c) ((char) (0x80 | (c)))
124 #define vprintf printf
125 #define vfprintf fprintf
126 #define vsprintf sprintf
129 #if defined(__BORLANDC__) && defined(STRNCMPI)
130 #include <string.h> /* Provides prototypes of strncmpi(), etc. */
133 #if defined(__DJGPP__)
134 #define _NAIVE_DOS_REGS
136 #include <string.h> /* Provides prototypes of strncmpi(), etc. */
138 #define M(c) ((char) (0x80 | (c)))
143 * On the VMS and unix, this option controls whether a delay is done by
144 * the clock, or whether it is done by excess output. On the PC, however,
145 * there is always a clock to use for the delay. The TIMED_DELAY option
146 * on MSDOS (without the termcap routines) is used to determine whether to
147 * include the delay routines in the code (and thus, provides a compile time
148 * method to turn off napping for visual effect). However, it is also used
149 * in the music code to wait between different notes. So it is needed in that
152 * Whereas on the VMS and unix, flags.nap is a run-time option controlling
153 * whether there is a delay by clock or by excess output, on MSDOS it is
154 * simply a flag to turn on or off napping for visual effects at run-time.
157 #define TIMED_DELAY /* enable the `timed_delay' run-time option */
160 #define TIMED_DELAY /* need it anyway */
162 #define NOCWD_ASSUMPTIONS /* Allow paths to be specified for HACKDIR, \
163 LEVELDIR, SAVEDIR, BONESDIR, DATADIR, \
164 SCOREDIR, LOCKDIR, CONFIGDIR, and TROUBLEDIR. \
167 #endif /* MSDOS configuration stuff */
169 #define PATHLEN 64 /* maximum pathlength */
170 #define FILENAME 80 /* maximum filename length (conservative) */
172 #include "micro.h" /* contains necessary externs for [os_name].c */
175 /* ===================================================
176 * The remaining code shouldn't need modification.
180 #if !defined(_MSC_VER)
186 #include <unistd.h> /* close(), etc. */
187 /* lock() in io.h interferes with lock[] in decl.h */
191 #include <pc.h> /* kbhit() */
193 #define HOLD_LOCKFILE_OPEN
194 #define SELF_RECOVER /* NetHack itself can recover games */
199 #define EXEPATH /* HACKDIR is .exe location if not explicitly defined */
203 #if defined(_MSC_VER) && defined(MSDOS)
204 #if (_MSC_VER >= 700) && !defined(FUNCTION_LEVEL_LINKING)
206 #define MOVERLAY /* Microsoft's MOVE overlay system (MSC >= 7.0) */
213 #if defined(__BORLANDC__)
214 #if defined(__OVERLAY__) && !defined(VROOMM)
215 /* __OVERLAY__ is automatically defined by Borland C if overlay option is on
217 #define VROOMM /* Borland's VROOMM overlay system */
220 #define STKSIZ 5 * 1024 /* Use a default of 5K stack for Borland C */
221 /* This macro is used in any file that contains */
222 /* a main() function. */
228 #define HLOCK "NHPERM"
235 #define rindex strrchr
242 /* the high quality random number routines */
245 # define Rand() random()
247 # define Rand() rand()
252 #define FCMASK 0660 /* file creation mask */
258 #define TEXTCOLOR /* */
259 #define PORT_HELP "msdoshlp.txt" /* msdos port specific help file */
262 /* Sanity check, do not modify these blocks. */
264 /* OVERLAY must be defined with MOVERLAY or VROOMM */
265 #if (defined(MOVERLAY) || defined(VROOMM))
271 #if defined(FUNCTION_LEVEL_LINKING)
275 #if defined(OVERLAY) && !defined(MOVERLAY) && !defined(VROOMM) \
276 && !defined(FUNCTION_LEVEL_LINKING)
280 #if defined(MSDOS) && defined(NO_TERMS)
282 #if defined(_MSC_VER) || defined(__SC__)
283 #pragma message("Warning -- TERMLIB defined with NO_TERMS in pcconf.h")
284 #pragma message(" Forcing undef of TERMLIB")
289 #if defined(_MSC_VER) || defined(__SC__)
290 #pragma message("Warning -- ANSI_DEFAULT defined with NO_TERMS in pcconf.h")
291 #pragma message(" Forcing undef of ANSI_DEFAULT")
295 /* only one screen package is allowed */
296 #if defined(SCREEN_BIOS) && defined(SCREEN_DJGPPFAST)
297 #if defined(_MSC_VER) || defined(__SC__)
298 #pragma message("Warning -- More than one screen package defined in pcconf.h")
300 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__SC__)
301 #if defined(SCREEN_DJGPPFAST)
302 #if defined(_MSC_VER) || defined(__SC__)
303 #pragma message(" Forcing undef of SCREEN_DJGPPFAST")
305 #undef SCREEN_DJGPPFAST /* Can't use djgpp fast with other compilers anyway \
309 /* djgpp C compiler */
310 #if defined(SCREEN_BIOS)
319 /* SCREEN_8514, SCREEN_VESA are only placeholders presently - sub VGA instead
321 #if defined(SCREEN_8514)
325 /* Graphical tile sanity checks */
327 #define SIMULATE_CURSOR
329 /* Select appropriate tile file format, and map size */
333 #endif /* End of sanity check block */
335 #if defined(MSDOS) && defined(DLB)
336 #define FILENAME_CMP stricmp /* case insensitive */
339 #if defined(_MSC_VER) && (_MSC_VER >= 7)
340 #pragma warning(disable : 4131)
341 #pragma warning(disable : 4135)
342 #pragma warning(disable : 4309)
343 #pragma warning(disable : 4746)
344 #pragma warning(disable : 4761)
349 #define msleep(k) (void) usleep((k) *1000)
352 #define msleep(k) delay(k)
355 #define msleep(k) (void) usleep((long)((k) *1000))
359 #endif /* PCCONF_H */