msdos.h 7.17 KB
Newer Older
Richard M. Stallman's avatar
Richard M. Stallman committed
1 2
/* System description file for MS-DOS

Richard M. Stallman's avatar
Richard M. Stallman committed
3
   Copyright (C) 1993, 1996 Free Software Foundation, Inc.
Richard M. Stallman's avatar
Richard M. Stallman committed
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

This file is part of GNU Emacs.

GNU Emacs is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.

GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with GNU Emacs; see the file COPYING.  If not, write to
19 20
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.  */
Richard M. Stallman's avatar
Richard M. Stallman committed
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42

/* Note: lots of stuff here was taken from s-msdos.h in demacs. */


/*
 *	Define symbols to identify the version of Unix this is.
 *	Define all the symbols that apply correctly.
 */

/* #define UNIPLUS */
/* #define USG5 */
/* #define USG */
/* #define HPUX */
/* #define UMAX */
/* #define BSD4_1 */
/* #define BSD4_2 */
/* #define BSD4_3 */
/* #define BSD */
/* #define VMS */
#ifndef MSDOS
#define MSDOS
#endif
Richard M. Stallman's avatar
Richard M. Stallman committed
43

Kim F. Storm's avatar
Kim F. Storm committed
44 45 46 47 48 49 50 51
#ifdef __GO32__
#ifndef __DJGPP__
#define __DJGPP__ 1	/* V2 defines __DJGPP__ == 2 */
#endif
#else
You lose; /* Emacs for DOS must be compiled with DJGPP */
#endif

Richard M. Stallman's avatar
Richard M. Stallman committed
52
#define DOS_NT	/* MSDOS or WINDOWSNT */
Richard M. Stallman's avatar
Richard M. Stallman committed
53 54 55 56 57 58 59 60
#undef BSD
#undef VMS

/* SYSTEM_TYPE should indicate the kind of system you are using.
 It sets the Lisp variable system-type.  */

#define SYSTEM_TYPE "ms-dos"

61
#define SYMS_SYSTEM syms_of_dosfns();syms_of_msdos()
Richard M. Stallman's avatar
Richard M. Stallman committed
62 63 64 65 66 67 68 69 70 71 72 73 74

/* NOMULTIPLEJOBS should be defined if your system's shell
 does not have "job control" (the ability to stop a program,
 run some other program, then continue the first one).  */

#define NOMULTIPLEJOBS

/* Emacs can read input using SIGIO and buffering characters itself,
   or using CBREAK mode and making C-g cause SIGINT.
   The choice is controlled by the variable interrupt_input.
   Define INTERRUPT_INPUT to make interrupt_input = 1 the default (use SIGIO)

   SIGIO can be used only on systems that implement it (4.2 and 4.3).
Karl Heuer's avatar
Karl Heuer committed
75
   CBREAK mode has two disadvantages
Richard M. Stallman's avatar
Richard M. Stallman committed
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
     1) At least in 4.2, it is impossible to handle the Meta key properly.
        I hear that in system V this problem does not exist.
     2) Control-G causes output to be discarded.
        I do not know whether this can be fixed in system V.

   Another method of doing input is planned but not implemented.
   It would have Emacs fork off a separate process
   to read the input and send it to the true Emacs process
   through a pipe.
*/

/* #define INTERRUPT_INPUT */

/* Letter to use in finding device name of first pty,
  if system supports pty's.  'a' means it is /dev/ptya0  */

/* #define FIRST_PTY_LETTER 'a' */

/*
 *	Define HAVE_PTYS if the system supports pty devices.
 */

/* #define HAVE_PTYS */

/*
 *	Define NONSYSTEM_DIR_LIBRARY to make Emacs emulate
 *      The 4.2 opendir, etc., library functions.
 */

/* #define NONSYSTEM_DIR_LIBRARY */

#define SYSV_SYSTEM_DIR

/* Define this symbol if your system has the functions bcopy, etc. */

#define BSTRING

Richard M. Stallman's avatar
Richard M. Stallman committed
113 114 115 116
/* Define this is the compiler understands `volatile'.  */
#define HAVE_VOLATILE


Richard M. Stallman's avatar
Richard M. Stallman committed
117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
/* subprocesses should be defined if you want to
   have code for asynchronous subprocesses
   (as used in M-x compile and M-x shell).
   This is generally OS dependent, and not supported
   under most USG systems. */

#undef subprocesses

/* If your system uses COFF (Common Object File Format) then define the
   preprocessor symbol "COFF". */

#define COFF

/* define MAIL_USE_FLOCK if the mailer uses flock
   to interlock access to /usr/spool/mail/$USER.
   The alternative is that a lock file named
   /usr/spool/mail/$USER.lock.  */

/* #define MAIL_USE_FLOCK */

/* Define CLASH_DETECTION if you want lock files to be written
   so that Emacs can tell instantly when you try to modify
   a file that someone else has modified in his Emacs.  */

/* #define CLASH_DETECTION */

/* Here, on a separate page, add any special hacks needed
   to make Emacs work on this system.  For example,
   you might define certain system call names that don't
   exist on your system, or that do different things on
   your system and must be used only through an encapsulation
   (Which you should place, by convention, in sysdep.c).  */

/* we use djgcc's malloc */
/* #define SYSTEM_MALLOC */
/* setjmp and longjmp can safely replace _setjmp and _longjmp,
   but they will run slower.  */

#define _setjmp setjmp
#define _longjmp longjmp

158 159
#if __DJGPP__ < 2

Richard M. Stallman's avatar
Richard M. Stallman committed
160 161
#define NO_MODE_T

162 163 164
/* New chdir () routine.
   DJGPP v2.0 and later doesn't need it because its chdir() does
   set the drive itself. */
Richard M. Stallman's avatar
Richard M. Stallman committed
165 166 167 168 169
#ifdef chdir
#undef chdir
#endif
#define chdir sys_chdir

170 171 172 173 174 175 176 177 178 179 180 181 182
#define LIBS_SYSTEM -lpc  /* isn't required in DJGPP v2.0, either */

#endif /* __DJGPP__ < 2 */

#if __DJGPP__ > 1

#define DATA_START  (&etext + 1)
#define TEXT_START  &start
#define TEXT_END    &etext

#define _NAIVE_DOS_REGS

#else /* not __DJGPP__ > 1 */
Richard M. Stallman's avatar
Richard M. Stallman committed
183 184 185 186

/* This somehow needs to be defined even though we use COFF.  */
#define TEXT_START -1

187 188
#endif /* not __DJGPP__ > 1 */

Richard M. Stallman's avatar
Richard M. Stallman committed
189 190
#define ORDINARY_LINK

Morten Welinder's avatar
Morten Welinder committed
191
/* command.com does not understand `...` so we define this.  */
Richard M. Stallman's avatar
Richard M. Stallman committed
192 193 194 195 196 197 198
#define LIB_GCC -Lgcc
#define DONT_NEED_ENVIRON
#define SEPCHAR ';'

#define NULL_DEVICE "nul"
#define EXEC_SUFFIXES ".exe:.com:.bat:"

199
#if __DJGPP__ < 2
Richard M. Stallman's avatar
Richard M. Stallman committed
200 201 202 203 204 205 206 207 208
#define O_RDONLY        0x0001
#define O_WRONLY        0x0002
#define O_RDWR          0x0004
#define O_CREAT         0x0100
#define O_TRUNC         0x0200
#define O_EXCL          0x0400
#define O_APPEND        0x0800
#define O_TEXT          0x4000
#define O_BINARY        0x8000
209 210
#define NO_MATHERR
#endif
Richard M. Stallman's avatar
Richard M. Stallman committed
211 212 213 214 215 216

#define HAVE_INVERSE_HYPERBOLIC
#define FLOAT_CHECK_DOMAIN

/* When $TERM is "internal" then this is substituted:  */
#define INTERNAL_TERMINAL "pc|bios|IBM PC with colour display:\
Kim F. Storm's avatar
Kim F. Storm committed
217
:co#80:li#25:km:ms:cm=<CM>:cl=<CL>:ce=<CE>:"
Richard M. Stallman's avatar
Richard M. Stallman committed
218 219 220 221 222

/* Define this to a function (Fdowncase, Fupcase) if your file system
   likes that */
#define FILE_SYSTEM_CASE Fdowncase

223 224 225 226 227 228 229
/* Define this to be the separator between devices and paths */
#define DEVICE_SEP ':'

/* We'll support either convention on MSDOG.  */
#define IS_DIRECTORY_SEP(_c_) ((_c_) == '/' || (_c_) == '\\')
#define IS_ANY_SEP(_c_) (IS_DIRECTORY_SEP (_c_) || IS_DEVICE_SEP (_c_))

230
/* Call init_gettimeofday when TZ changes.  */
231
#if __DJGPP__ < 2
232 233
#define LOCALTIME_CACHE
#define tzset init_gettimeofday
234
#endif
235

Karl Heuer's avatar
Karl Heuer committed
236 237 238 239
/* bcopy under djgpp is quite safe */
#define GAP_USE_BCOPY
#define BCOPY_UPWARD_SAFE 1
#define BCOPY_DOWNWARD_SAFE 1
240

Karl Heuer's avatar
Karl Heuer committed
241 242 243
/* Mode line description of a buffer's type.  */
#define MODE_LINE_BINARY_TEXT(buf) (NILP(buf->buffer_file_type) ? "T" : "B")

244 245 246 247 248
/* Do we have POSIX signals?  */
#if __DJGPP__ > 1
#define POSIX_SIGNALS
#endif

249 250
/* We have (the code to control) a mouse.  */
#define HAVE_MOUSE
Morten Welinder's avatar
Morten Welinder committed
251

Richard M. Stallman's avatar
Richard M. Stallman committed
252 253 254
/* We canuse mouse menus.  */
#define HAVE_MENUS

Morten Welinder's avatar
Morten Welinder committed
255 256 257 258 259 260 261 262 263 264 265
/* We have support for faces.  */
#define HAVE_FACES

/* Define one of these for easier conditionals.  */
#ifdef HAVE_X_WINDOWS
/* We need a little extra space, see ../../lisp/loadup.el */
#define SYSTEM_PURESIZE_EXTRA 15000
#define HAVE_X11R5
#define LIBX11_SYSTEM -lxext -lsys
#else
/* We need a little extra space, see ../../lisp/loadup.el */
266
#define SYSTEM_PURESIZE_EXTRA 85000
Morten Welinder's avatar
Morten Welinder committed
267
#endif