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 /* 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 */
88 #undef SCREEN_DJGPPFAST
95 #define RANDOM /* have Berkeley random(3) */
97 #define MAIL /* Allows for fake mail daemon to deliver mail */
98 /* in the MSDOS version. (For AMIGA MAIL see */
99 /* amiconf.h). In the future this will be the */
100 /* hook for mail reader implementation. */
102 /* The following is needed for prototypes of certain functions */
104 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__SC__)
105 #include <process.h> /* Provides prototypes of exit(), spawn() */
108 #if defined(_MSC_VER) && (_MSC_VER >= 7)
109 #include <sys/types.h>
114 #include <string.h> /* Provides prototypes of strncmpi(), etc. */
118 #define SIG_RET_TYPE void(__cdecl *)(int)
119 #define M(c) ((char) (0x80 | (c)))
120 #define vprintf printf
121 #define vfprintf fprintf
122 #define vsprintf sprintf
125 #if defined(__BORLANDC__) && defined(STRNCMPI)
126 #include <string.h> /* Provides prototypes of strncmpi(), etc. */
129 #if defined(__DJGPP__)
130 #define _NAIVE_DOS_REGS
132 #include <string.h> /* Provides prototypes of strncmpi(), etc. */
134 #define M(c) ((char) (0x80 | (c)))
139 * On the VMS and unix, this option controls whether a delay is done by
140 * the clock, or whether it is done by excess output. On the PC, however,
141 * there is always a clock to use for the delay. The TIMED_DELAY option
142 * on MSDOS (without the termcap routines) is used to determine whether to
143 * include the delay routines in the code (and thus, provides a compile time
144 * method to turn off napping for visual effect). However, it is also used
145 * in the music code to wait between different notes. So it is needed in that
148 * Whereas on the VMS and unix, flags.nap is a run-time option controlling
149 * whether there is a delay by clock or by excess output, on MSDOS it is
150 * simply a flag to turn on or off napping for visual effects at run-time.
153 #define TIMED_DELAY /* enable the `timed_delay' run-time option */
156 #define TIMED_DELAY /* need it anyway */
158 #define NOCWD_ASSUMPTIONS /* Allow paths to be specified for HACKDIR, \
159 LEVELDIR, SAVEDIR, BONESDIR, DATADIR, \
160 SCOREDIR, LOCKDIR, CONFIGDIR, and TROUBLEDIR. \
163 #endif /* MSDOS configuration stuff */
165 #define PATHLEN 64 /* maximum pathlength */
166 #define FILENAME 80 /* maximum filename length (conservative) */
168 #include "micro.h" /* contains necessary externs for [os_name].c */
171 /* ===================================================
172 * The remaining code shouldn't need modification.
176 #if !defined(_MSC_VER)
182 #include <unistd.h> /* close(), etc. */
183 /* lock() in io.h interferes with lock[] in decl.h */
187 #include <pc.h> /* kbhit() */
189 #define HOLD_LOCKFILE_OPEN
190 #define SELF_RECOVER /* NetHack itself can recover games */
195 #define EXEPATH /* HACKDIR is .exe location if not explicitly defined */
199 #if defined(_MSC_VER) && defined(MSDOS)
200 #if (_MSC_VER >= 700) && !defined(FUNCTION_LEVEL_LINKING)
202 #define MOVERLAY /* Microsoft's MOVE overlay system (MSC >= 7.0) */
209 #if defined(__BORLANDC__)
210 #if defined(__OVERLAY__) && !defined(VROOMM)
211 /* __OVERLAY__ is automatically defined by Borland C if overlay option is on
213 #define VROOMM /* Borland's VROOMM overlay system */
216 #define STKSIZ 5 * 1024 /* Use a default of 5K stack for Borland C */
217 /* This macro is used in any file that contains */
218 /* a main() function. */
224 #define HLOCK "NHPERM"
231 #define rindex strrchr
239 /* Use the high quality random number routines. */
240 #define Rand() random()
242 #define Rand() rand()
246 #define FCMASK 0660 /* file creation mask */
252 #define TEXTCOLOR /* */
253 #define PORT_HELP "msdoshlp.txt" /* msdos port specific help file */
256 /* Sanity check, do not modify these blocks. */
258 /* OVERLAY must be defined with MOVERLAY or VROOMM */
259 #if (defined(MOVERLAY) || defined(VROOMM))
265 #if defined(FUNCTION_LEVEL_LINKING)
269 #if defined(OVERLAY) && !defined(MOVERLAY) && !defined(VROOMM) \
270 && !defined(FUNCTION_LEVEL_LINKING)
274 #if defined(MSDOS) && defined(NO_TERMS)
276 #if defined(_MSC_VER) || defined(__SC__)
277 #pragma message("Warning -- TERMLIB defined with NO_TERMS in pcconf.h")
278 #pragma message(" Forcing undef of TERMLIB")
283 #if defined(_MSC_VER) || defined(__SC__)
284 #pragma message("Warning -- ANSI_DEFAULT defined with NO_TERMS in pcconf.h")
285 #pragma message(" Forcing undef of ANSI_DEFAULT")
289 /* only one screen package is allowed */
290 #if defined(SCREEN_BIOS) && defined(SCREEN_DJGPPFAST)
291 #if defined(_MSC_VER) || defined(__SC__)
292 #pragma message("Warning -- More than one screen package defined in pcconf.h")
294 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__SC__)
295 #if defined(SCREEN_DJGPPFAST)
296 #if defined(_MSC_VER) || defined(__SC__)
297 #pragma message(" Forcing undef of SCREEN_DJGPPFAST")
299 #undef SCREEN_DJGPPFAST /* Can't use djgpp fast with other compilers anyway \
303 /* djgpp C compiler */
304 #if defined(SCREEN_BIOS)
313 /* SCREEN_8514, SCREEN_VESA are only placeholders presently - sub VGA instead
315 #if defined(SCREEN_8514)
319 /* Graphical tile sanity checks */
321 #define SIMULATE_CURSOR
323 /* Select appropriate tile file format, and map size */
327 #endif /* End of sanity check block */
329 #if defined(MSDOS) && defined(DLB)
330 #define FILENAME_CMP stricmp /* case insensitive */
333 #if defined(_MSC_VER) && (_MSC_VER >= 7)
334 #pragma warning(disable : 4131)
335 #pragma warning(disable : 4135)
336 #pragma warning(disable : 4309)
337 #pragma warning(disable : 4746)
338 #pragma warning(disable : 4761)
343 #define msleep(k) (void) usleep((k) *1000)
346 #define msleep(k) delay(k)
349 #define msleep(k) (void) usleep((long)((k) *1000))
353 #endif /* PCCONF_H */