OSDN Git Service

Initial Import
[nethackexpress/trunk.git] / include / pcconf.h
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. */
4
5 #ifndef PCCONF_H
6 #define PCCONF_H
7
8 #define MICRO           /* always define this! */
9
10 #ifdef MSDOS            /* some of this material is MS-DOS specific */
11
12 /*
13  *  Automatic Defines:
14  *
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.
21  */
22
23 /*
24  *  The following options are somewhat configurable depending on
25  *  your compiler.
26  */
27
28 /*
29  *  For pre-V7.0 Microsoft Compilers only, manually define OVERLAY here.
30  */
31
32 /*#define OVERLAY */    /* Manual overlay definition (MSC 6.0ax only) */
33
34 # ifndef __GO32__
35 #define MFLOPPY         /* Support for floppy drives and ramdisks by dgk */
36 # endif
37
38 # define SHELL          /* via exec of COMMAND.COM */
39
40 # ifdef __BORLANDC__
41 #define PCMUSIC         /* Music option, enable very basic pc speaker music notes */
42 # endif
43
44 /*
45  * Screen control options
46  *
47  * You may uncomment:
48  *                     ANSI_DEFAULT
49  *                or   TERMLIB
50  *                or   ANSI_DEFAULT and TERMLIB
51  *                or   NO_TERMS
52  */
53
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 */
58
59 /* # define ANSI_DEFAULT */   /* allows NetHack to run without a ./termcap */
60
61 # define NO_TERMS       /* Allows Nethack to run without ansi.sys by linking */
62                         /* screen routines into the .exe     */
63
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       */
67 # endif
68
69
70 /* # define PC9800 */   /* Allows NetHack to run on NEC PC-9800 machines */
71                         /* Yamamoto Keizo */
72
73
74 /*
75  * PC video hardware support options (for graphical tile support)
76  *
77  * You may uncomment any/all of the options below.
78  *
79  */
80 # ifndef SUPPRESS_GRAPHICS
81 #  if (defined(SCREEN_BIOS) || defined(SCREEN_DJGPPFAST)) && !defined(PC9800)
82 #   ifdef USE_TILES
83 #define SCREEN_VGA      /* Include VGA    graphics routines in the build */
84 #   endif
85 #  endif
86 # else
87 # undef NO_TERMS
88 # undef SCREEN_BIOS
89 # undef SCREEN_DJGPPFAST
90 # undef SCREEN_VGA
91 # undef TERMLIB
92 # define ANSI_DEFAULT
93 # endif
94
95 # define RANDOM         /* have Berkeley random(3) */
96
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.        */
101
102 /* The following is needed for prototypes of certain functions */
103
104 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__SC__)
105 #include <process.h>    /* Provides prototypes of exit(), spawn()      */
106 #endif
107
108 #if defined(__BORLANDC__) && defined(STRNCMPI)
109 #include <string.h>     /* Provides prototypes of strncmpi(), etc.     */
110 #endif
111
112 #if defined(__DJGPP__)
113 #define _NAIVE_DOS_REGS
114 #include <stdlib.h>
115 #include <string.h>     /* Provides prototypes of strncmpi(), etc.     */
116 # ifndef M
117 #define M(c)            ((char) (0x80 | (c)))
118 # endif
119 #endif
120
121 /*
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
129  * case as well.
130
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.
134  */
135
136 #define TIMED_DELAY     /* enable the `timed_delay' run-time option */
137
138 # ifdef PCMUSIC
139 #define TIMED_DELAY     /* need it anyway */
140 # endif
141 #define NOCWD_ASSUMPTIONS       /* Allow paths to be specified for HACKDIR,
142                                    LEVELDIR, SAVEDIR, BONESDIR, DATADIR,
143                                    SCOREDIR, LOCKDIR, CONFIGDIR, and TROUBLEDIR. */
144
145 #endif /* MSDOS configuration stuff */
146
147 #define PATHLEN         64      /* maximum pathlength */
148 #define FILENAME        80      /* maximum filename length (conservative) */
149 #ifndef MICRO_H
150 #include "micro.h"              /* contains necessary externs for [os_name].c */
151 #endif
152
153
154 /* ===================================================
155  *  The remaining code shouldn't need modification.
156  */
157
158 #ifndef SYSTEM_H
159 #include "system.h"
160 #endif
161
162 #ifdef __DJGPP__
163 #include <unistd.h> /* close(), etc. */
164 /* lock() in io.h interferes with lock[] in decl.h */
165 #define lock djlock
166 #include <io.h>
167 #undef lock
168 #include <pc.h> /* kbhit() */
169 #define PC_LOCKING
170 #define HOLD_LOCKFILE_OPEN
171 #define SELF_RECOVER            /* NetHack itself can recover games */
172 #endif
173
174 # ifdef MSDOS
175 #  ifndef EXEPATH
176 #define EXEPATH         /* HACKDIR is .exe location if not explicitly defined */
177 #  endif
178 # endif
179
180 # if defined(_MSC_VER) && defined(MSDOS)
181 #  if (_MSC_VER >= 700) && !defined(FUNCTION_LEVEL_LINKING)
182 #   ifndef MOVERLAY
183 #define MOVERLAY        /* Microsoft's MOVE overlay system (MSC >= 7.0) */
184 #   endif
185 #  endif
186 #define PC_LOCKING
187 # endif
188
189 /* Borland Stuff */
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 */
194 #  endif
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.                           */
199 #  endif
200 #define PC_LOCKING
201 # endif
202
203 #ifdef PC_LOCKING
204 #define HLOCK "NHPERM"
205 #endif
206
207 #ifndef index
208 # define index  strchr
209 #endif
210 #ifndef rindex
211 # define rindex strrchr
212 #endif
213
214 #ifndef AMIGA
215 #include <time.h>
216 #endif
217
218 #ifdef RANDOM
219 /* Use the high quality random number routines. */
220 # define Rand() random()
221 #else
222 # define Rand() rand()
223 #endif
224
225 #ifndef TOS
226 # define FCMASK 0660    /* file creation mask */
227 #endif
228
229 #include <fcntl.h>
230
231 #ifndef REDO
232 # undef Getchar
233 # define Getchar nhgetch
234 #endif
235
236 #ifdef MSDOS
237 # define TEXTCOLOR /* */
238 # define PORT_HELP "msdoshlp.txt" /* msdos port specific help file */
239 #endif
240
241
242 /* Sanity check, do not modify these blocks. */
243
244 /* OVERLAY must be defined with MOVERLAY or VROOMM */
245 #if (defined(MOVERLAY) || defined(VROOMM))
246 # ifndef OVERLAY
247 #  define OVERLAY
248 # endif
249 #endif
250
251 #if defined(FUNCTION_LEVEL_LINKING)
252 #define OVERLAY
253 #define OVL0
254 #define OVL1
255 #define OVL2
256 #define OVL3
257 #define OVLB
258 #endif
259
260 #if defined(OVERLAY) && !defined(MOVERLAY) && !defined(VROOMM) && !defined(FUNCTION_LEVEL_LINKING)
261 #define USE_TRAMPOLI
262 #endif
263
264 #if defined(MSDOS) && defined(NO_TERMS)
265 # ifdef TERMLIB
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")
269 #  endif
270 #undef TERMLIB
271 # endif
272 # ifdef ANSI_DEFAULT
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")
276 #  endif
277 #undef ANSI_DEFAULT
278 # endif
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")
283 #  endif
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")
288 #    endif
289 #undef SCREEN_DJGPPFAST   /* Can't use djgpp fast with other compilers anyway */
290 #   endif
291 #  else
292 /* djgpp C compiler     */
293 #   if defined(SCREEN_BIOS)
294 #undef SCREEN_BIOS
295 #   endif
296 #  endif
297 # endif
298 # define ASCIIGRAPH
299 # ifdef TEXTCOLOR
300 #  define VIDEOSHADES
301 # endif
302 /* SCREEN_8514, SCREEN_VESA are only placeholders presently - sub VGA instead */
303 # if defined(SCREEN_8514) || defined(SCREEN_VESA)
304 #  undef SCREEN_8514
305 #  undef SCREEN_VESA
306 #  define SCREEN_VGA
307 # endif
308 /* Graphical tile sanity checks */
309 # ifdef SCREEN_VGA
310 #  define SIMULATE_CURSOR
311 #  define POSITIONBAR
312 /* Select appropriate tile file format, and map size */
313 #  define PLANAR_FILE
314 #  define SMALL_MAP
315 # endif
316 #endif                  /* End of sanity check block */
317
318 #if defined(MSDOS) && defined(DLB)
319 #define FILENAME_CMP  stricmp                 /* case insensitive */
320 #endif
321
322 #ifdef MSC7_WARN        /* define with cl /DMSC7_WARN   */
323 #pragma warning(disable:4131)
324 #endif
325
326 #ifdef TIMED_DELAY
327 # ifdef __DJGPP__
328 # define msleep(k) (void) usleep((k)*1000)
329 # endif
330 # ifdef __BORLANDC__
331 # define msleep(k) delay(k)
332 # endif
333 # ifdef __SC__
334 # define msleep(k) (void) usleep((long)((k)*1000))
335 # endif
336 #endif
337
338 #endif /* PCCONF_H */