1 /* SCCS Id: @(#)pcconf.h 3.4 1995/10/11 */
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.4.1 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 */
70 /* # define PC9800 */ /* Allows NetHack to run on NEC PC-9800 machines */
75 * PC video hardware support options (for graphical tile support)
77 * You may uncomment any/all of the options below.
80 # ifndef SUPPRESS_GRAPHICS
81 # if (defined(SCREEN_BIOS) || defined(SCREEN_DJGPPFAST)) && !defined(PC9800)
83 #define SCREEN_VGA /* Include VGA graphics routines in the build */
89 # 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(__BORLANDC__) && defined(STRNCMPI)
109 #include <string.h> /* Provides prototypes of strncmpi(), etc. */
112 #if defined(__DJGPP__)
113 #define _NAIVE_DOS_REGS
115 #include <string.h> /* Provides prototypes of strncmpi(), etc. */
117 #define M(c) ((char) (0x80 | (c)))
122 * On the VMS and unix, this option controls whether a delay is done by
123 * the clock, or whether it is done by excess output. On the PC, however,
124 * there is always a clock to use for the delay. The TIMED_DELAY option
125 * on MSDOS (without the termcap routines) is used to determine whether to
126 * include the delay routines in the code (and thus, provides a compile time
127 * method to turn off napping for visual effect). However, it is also used
128 * in the music code to wait between different notes. So it is needed in that
131 * Whereas on the VMS and unix, flags.nap is a run-time option controlling
132 * whether there is a delay by clock or by excess output, on MSDOS it is
133 * simply a flag to turn on or off napping for visual effects at run-time.
136 #define TIMED_DELAY /* enable the `timed_delay' run-time option */
139 #define TIMED_DELAY /* need it anyway */
141 #define NOCWD_ASSUMPTIONS /* Allow paths to be specified for HACKDIR,
142 LEVELDIR, SAVEDIR, BONESDIR, DATADIR,
143 SCOREDIR, LOCKDIR, CONFIGDIR, and TROUBLEDIR. */
145 #endif /* MSDOS configuration stuff */
147 #define PATHLEN 64 /* maximum pathlength */
148 #define FILENAME 80 /* maximum filename length (conservative) */
150 #include "micro.h" /* contains necessary externs for [os_name].c */
154 /* ===================================================
155 * The remaining code shouldn't need modification.
163 #include <unistd.h> /* close(), etc. */
164 /* lock() in io.h interferes with lock[] in decl.h */
168 #include <pc.h> /* kbhit() */
170 #define HOLD_LOCKFILE_OPEN
171 #define SELF_RECOVER /* NetHack itself can recover games */
176 #define EXEPATH /* HACKDIR is .exe location if not explicitly defined */
180 # if defined(_MSC_VER) && defined(MSDOS)
181 # if (_MSC_VER >= 700) && !defined(FUNCTION_LEVEL_LINKING)
183 #define MOVERLAY /* Microsoft's MOVE overlay system (MSC >= 7.0) */
190 # if defined(__BORLANDC__)
191 # if defined(__OVERLAY__) && !defined(VROOMM)
192 /* __OVERLAY__ is automatically defined by Borland C if overlay option is on */
193 #define VROOMM /* Borland's VROOMM overlay system */
195 # if !defined(STKSIZ)
196 #define STKSIZ 5*1024 /* Use a default of 5K stack for Borland C */
197 /* This macro is used in any file that contains */
198 /* a main() function. */
204 #define HLOCK "NHPERM"
208 # define index strchr
211 # define rindex strrchr
219 /* Use the high quality random number routines. */
220 # define Rand() random()
222 # define Rand() rand()
226 # define FCMASK 0660 /* file creation mask */
233 # define Getchar nhgetch
237 # define TEXTCOLOR /* */
238 # define PORT_HELP "msdoshlp.txt" /* msdos port specific help file */
242 /* Sanity check, do not modify these blocks. */
244 /* OVERLAY must be defined with MOVERLAY or VROOMM */
245 #if (defined(MOVERLAY) || defined(VROOMM))
251 #if defined(FUNCTION_LEVEL_LINKING)
260 #if defined(OVERLAY) && !defined(MOVERLAY) && !defined(VROOMM) && !defined(FUNCTION_LEVEL_LINKING)
264 #if defined(MSDOS) && defined(NO_TERMS)
266 # if defined(_MSC_VER) || defined(__SC__)
267 # pragma message("Warning -- TERMLIB defined with NO_TERMS in pcconf.h")
268 # pragma message(" Forcing undef of TERMLIB")
273 # if defined(_MSC_VER) || defined(__SC__)
274 # pragma message("Warning -- ANSI_DEFAULT defined with NO_TERMS in pcconf.h")
275 # pragma message(" Forcing undef of ANSI_DEFAULT")
279 /* only one screen package is allowed */
280 # if defined(SCREEN_BIOS) && defined(SCREEN_DJGPPFAST)
281 # if defined(_MSC_VER) || defined(__SC__)
282 # pragma message("Warning -- More than one screen package defined in pcconf.h")
284 # if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__SC__)
285 # if defined(SCREEN_DJGPPFAST)
286 # if defined(_MSC_VER) || defined(__SC__)
287 # pragma message(" Forcing undef of SCREEN_DJGPPFAST")
289 #undef SCREEN_DJGPPFAST /* Can't use djgpp fast with other compilers anyway */
292 /* djgpp C compiler */
293 # if defined(SCREEN_BIOS)
302 /* SCREEN_8514, SCREEN_VESA are only placeholders presently - sub VGA instead */
303 # if defined(SCREEN_8514) || defined(SCREEN_VESA)
308 /* Graphical tile sanity checks */
310 # define SIMULATE_CURSOR
312 /* Select appropriate tile file format, and map size */
316 #endif /* End of sanity check block */
318 #if defined(MSDOS) && defined(DLB)
319 #define FILENAME_CMP stricmp /* case insensitive */
322 #ifdef MSC7_WARN /* define with cl /DMSC7_WARN */
323 #pragma warning(disable:4131)
328 # define msleep(k) (void) usleep((k)*1000)
331 # define msleep(k) delay(k)
334 # define msleep(k) (void) usleep((long)((k)*1000))
338 #endif /* PCCONF_H */