*** empty log message ***
[bpt/emacs.git] / src / s / msdos.h
index 5dbb2f1..71794be 100644 (file)
@@ -1,6 +1,6 @@
 /* System description file for MS-DOS
 
-   Copyright (C) 1993 Free Software Foundation, Inc.
+   Copyright (C) 1993, 1996 Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
@@ -16,7 +16,8 @@ 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
-the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
 
 /* Note: lots of stuff here was taken from s-msdos.h in demacs. */
 
@@ -34,7 +35,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
 /* #define BSD4_1 */
 /* #define BSD4_2 */
 /* #define BSD4_3 */
-/* #define BSD */
+/* #define BSD_SYSTEM */
 /* #define VMS */
 #ifndef MSDOS
 #define MSDOS
@@ -43,15 +44,13 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #ifdef __GO32__
 #ifndef __DJGPP__
 #define __DJGPP__ 1    /* V2 defines __DJGPP__ == 2 */
-#else
-You lose; /* Emacs for DOS must be compiled with DJGPP V1 */
 #endif
 #else
 You lose; /* Emacs for DOS must be compiled with DJGPP */
 #endif
 
 #define DOS_NT /* MSDOS or WINDOWSNT */
-#undef BSD
+#undef BSD_SYSTEM
 #undef VMS
 
 /* SYSTEM_TYPE should indicate the kind of system you are using.
@@ -59,7 +58,7 @@ You lose; /* Emacs for DOS must be compiled with DJGPP */
 
 #define SYSTEM_TYPE "ms-dos"
 
-#define SYMS_SYSTEM syms_of_dosfns();syms_of_msdos()
+#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,
@@ -148,27 +147,47 @@ You lose; /* Emacs for DOS must be compiled with DJGPP */
    your system and must be used only through an encapsulation
    (Which you should place, by convention, in sysdep.c).  */
 \f
-/* we use djgcc's malloc */
-/* #define SYSTEM_MALLOC */
+/* Avoid incompatibilities between gmalloc.c and system header files
+   in how to declare valloc.  */
+#define GMALLOC_INHIBIT_VALLOC
+
 /* setjmp and longjmp can safely replace _setjmp and _longjmp,
    but they will run slower.  */
 
 #define _setjmp setjmp
 #define _longjmp longjmp
 
+#if __DJGPP__ < 2
+
 #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 understand `...` so we define this.  */
@@ -179,6 +198,7 @@ You lose; /* Emacs for DOS must be compiled with DJGPP */
 #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
@@ -188,18 +208,21 @@ You lose; /* Emacs for DOS must be compiled with DJGPP */
 #define O_APPEND        0x0800
 #define O_TEXT          0x4000
 #define O_BINARY        0x8000
+#define NO_MATHERR
+#endif
 
 #define HAVE_INVERSE_HYPERBOLIC
 #define FLOAT_CHECK_DOMAIN
-#define NO_MATHERR
 
 /* When $TERM is "internal" then this is substituted:  */
 #define INTERNAL_TERMINAL "pc|bios|IBM PC with colour display:\
-:co#80:li#25:km:ms:cm=<CM>:cl=<CL>:ce=<CE>:"
+: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 ':'
@@ -209,8 +232,10 @@ You lose; /* Emacs for DOS must be compiled with DJGPP */
 #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
@@ -220,6 +245,11 @@ You lose; /* Emacs for DOS must be compiled with DJGPP */
 /* 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
 
@@ -237,5 +267,11 @@ You lose; /* Emacs for DOS must be compiled with DJGPP */
 #define LIBX11_SYSTEM -lxext -lsys
 #else
 /* We need a little extra space, see ../../lisp/loadup.el */
-#define SYSTEM_PURESIZE_EXTRA 85000
+#define SYSTEM_PURESIZE_EXTRA 60000
 #endif
+
+/* Tell that garbage collector that setjmp is known to save all
+   registers relevant for conservative garbage collection in the
+   jmp_buf.  */
+
+#define GC_SETJMP_WORKS 1