/* System description file for MS-DOS
- Copyright (C) 1993 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1996, 1997, 2001, 2002, 2003, 2004,
+ 2005, 2006 Free Software Foundation, Inc.
This file is part of GNU Emacs.
You should have received a copy of the GNU General Public License
along with GNU Emacs; see the file COPYING. If not, write to
-the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+Boston, MA 02110-1301, USA. */
/* Note: lots of stuff here was taken from s-msdos.h in demacs. */
/* #define BSD4_1 */
/* #define BSD4_2 */
/* #define BSD4_3 */
-/* #define BSD */
+/* #define BSD_SYSTEM */
/* #define VMS */
#ifndef MSDOS
#define MSDOS
#endif
-#undef BSD
+
+#ifdef __GO32__
+#ifndef __DJGPP__
+#define __DJGPP__ 1 /* V2 defines __DJGPP__ == 2 */
+#endif
+#else
+You lose; /* Emacs for DOS must be compiled with DJGPP */
+#endif
+
+#define DOS_NT /* MSDOS or WINDOWSNT */
+#undef BSD_SYSTEM
#undef VMS
/* SYSTEM_TYPE should indicate the kind of system you are using.
#define SYSTEM_TYPE "ms-dos"
-#define SYMS_SYSTEM syms_of_dosfns()
+#define SYMS_SYSTEM syms_of_dosfns();syms_of_msdos();syms_of_win16select()
/* NOMULTIPLEJOBS should be defined if your system's shell
does not have "job control" (the ability to stop a program,
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).
- CBREAK mode has two disadvatages
+ CBREAK mode has two disadvantages
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.
/* #define FIRST_PTY_LETTER 'a' */
-/*
- * Define HAVE_TIMEVAL if the system supports the BSD style clock values.
- * Look in <sys/time.h> for a timeval structure.
- */
-
-#define HAVE_TIMEVAL
-
-/*
- * Define HAVE_SELECT if the system supports the `select' system call.
- */
-
-/* #define HAVE_SELECT */
-
/*
* Define HAVE_PTYS if the system supports pty devices.
*/
#define BSTRING
+/* Define this is the compiler understands `volatile'. */
+#define HAVE_VOLATILE
+
+
/* subprocesses should be defined if you want to
have code for asynchronous subprocesses
(as used in M-x compile and M-x shell).
your system and must be used only through an encapsulation
(Which you should place, by convention, in sysdep.c). */
\f
-/* Some compilers tend to put everything declared static
- into the initialized data area, which becomes pure after dumping Emacs.
- On these systems, you must #define static as nothing to foil this.
- Note that emacs carefully avoids static vars inside functions. */
-
-/* #define static */
+/* Avoid incompatibilities between gmalloc.c and system header files
+ in how to declare valloc. */
+#define GMALLOC_INHIBIT_VALLOC
-/* 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
-#define NO_MODE_T
+#if __DJGPP__ < 2
-/* we can use dj's getpagesize() */
-#define HAVE_GETPAGESIZE
+#define NO_MODE_T
-/* New chdir () routine. */
+/* New chdir () routine.
+ DJGPP v2.0 and later doesn't need it because its chdir() does
+ set the drive itself. */
#ifdef chdir
#undef chdir
#endif
#define chdir sys_chdir
-#define LIBS_SYSTEM -lpc
+#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 */
/* This somehow needs to be defined even though we use COFF. */
#define TEXT_START -1
+#endif /* not __DJGPP__ > 1 */
+
#define ORDINARY_LINK
-/* command.com does not under stand `...` so we define this. */
+/* command.com does not understand `...` so we define this. */
#define LIB_GCC -Lgcc
#define DONT_NEED_ENVIRON
#define SEPCHAR ';'
#define NULL_DEVICE "nul"
-#define EXEC_SUFFIXES ".exe:.com:.bat:"
+#if __DJGPP__ < 2
#define O_RDONLY 0x0001
#define O_WRONLY 0x0002
#define O_RDWR 0x0004
#define O_APPEND 0x0800
#define O_TEXT 0x4000
#define O_BINARY 0x8000
+#define NO_MATHERR
+#endif
#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:\
-:co#80:li#25:km:\
-:cm=\E@%.%.:\
-:do=^J:le=^H:up=\EU:ri=\ER:\
-:ti=\EA\027:te=\EA\007\EE:\
-:so=\EA\077:se=\EA\027:\
-:ms:mb=\EX\200:md=\EX\010:mk=\EA\161:me=\EA\027:\
-:cl=\EC:ce=\EE:\
-:vb=\EB\140:bl=:"
-#define fflush internal_flush
+:co#80:li#25:Co#16:pa#256:km:ms:cm=<CM>:cl=<CL>:ce=<CE>:\
+:se=</SO>:so=<SO>:us=<UL>:ue=</UL>:md=<BD>:mh=<DIM>:mb=<BL>:mr=<RV>:me=<NV>:\
+:AB=<BG %d>:AF=<FG %d>:op=<DefC>:"
/* Define this to a function (Fdowncase, Fupcase) if your file system
likes that */
-#define FILE_SYSTEM_CASE Fdowncase
+#define FILE_SYSTEM_CASE Fmsdos_downcase_filename
+
+/* 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_))
+
+/* Call init_gettimeofday when TZ changes. */
+#if __DJGPP__ < 2
+#define LOCALTIME_CACHE
+#define tzset init_gettimeofday
+#endif
/* bcopy under djgpp is quite safe */
#define GAP_USE_BCOPY
#define BCOPY_UPWARD_SAFE 1
#define BCOPY_DOWNWARD_SAFE 1
-/* MSDOS doesn't really have this function. */
-#define getppid() 1
+/* Mode line description of a buffer's type. */
+#define MODE_LINE_BINARY_TEXT(buf) (NILP(buf->buffer_file_type) ? "T" : "B")
+
+/* Do we have POSIX signals? */
+#if __DJGPP__ > 1
+#define POSIX_SIGNALS
+#endif
+
+/* We have (the code to control) a mouse. */
+#define HAVE_MOUSE
+
+/* We canuse mouse menus. */
+#define HAVE_MENUS
+
+/* 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 */
+#define SYSTEM_PURESIZE_EXTRA 50000
+#endif
+
+/* Tell the garbage collector that setjmp is known to save all
+ registers relevant for conservative garbage collection in the
+ jmp_buf. */
+
+#define GC_SETJMP_WORKS 1
+#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS
+
+/* arch-tag: d184f860-815d-4ff4-8187-d05c0f3c37d0
+ (do not change this comment) */