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

3 4
Copyright (C) 1993, 1996, 1997, 2001, 2002, 2003, 2004, 2005, 2006,
  2007, 2008, 2009, 2010  Free Software Foundation, Inc.
Richard M. Stallman's avatar
Richard M. Stallman committed
5 6 7

This file is part of GNU Emacs.

8
GNU Emacs is free software: you can redistribute it and/or modify
Richard M. Stallman's avatar
Richard M. Stallman committed
9
it under the terms of the GNU General Public License as published by
10 11
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Richard M. Stallman's avatar
Richard M. Stallman committed
12 13 14 15 16 17 18

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
19
along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
Richard M. Stallman's avatar
Richard M. Stallman committed
20 21 22 23 24 25 26 27 28 29 30 31

/* 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.
 */

#ifndef MSDOS
#define MSDOS
#endif
Richard M. Stallman's avatar
Richard M. Stallman committed
32

Kim F. Storm's avatar
Kim F. Storm committed
33 34 35 36
#ifndef __DJGPP__
You lose; /* Emacs for DOS must be compiled with DJGPP */
#endif

Richard M. Stallman's avatar
Richard M. Stallman committed
37
#define DOS_NT	/* MSDOS or WINDOWSNT */
38
#undef BSD_SYSTEM
Richard M. Stallman's avatar
Richard M. Stallman committed
39 40 41 42 43 44

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

#define SYSTEM_TYPE "ms-dos"

45
#define SYMS_SYSTEM syms_of_dosfns();syms_of_msdos();syms_of_win16select()
Richard M. Stallman's avatar
Richard M. Stallman committed
46 47 48 49 50 51 52

#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
53 54 55 56
/* Define this is the compiler understands `volatile'.  */
#define HAVE_VOLATILE


Richard M. Stallman's avatar
Richard M. Stallman committed
57 58 59
/* subprocesses should be defined if you want to
   have code for asynchronous subprocesses
   (as used in M-x compile and M-x shell).
Dan Nicolaescu's avatar
Dan Nicolaescu committed
60
   This is the only system that needs this.  */
Richard M. Stallman's avatar
Richard M. Stallman committed
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75

#undef subprocesses

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

#define COFF

/* 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).  */

76 77 78 79
/* Avoid incompatibilities between gmalloc.c and system header files
   in how to declare valloc.  */
#define GMALLOC_INHIBIT_VALLOC

Eli Zaretskii's avatar
Eli Zaretskii committed
80 81 82 83
/* This overrides the default value on editfns.c, since DJGPP
   does not have pw->pw_gecos.  */
#define USER_FULL_NAME (getenv ("NAME"))

Richard M. Stallman's avatar
Richard M. Stallman committed
84 85 86 87 88 89
/* setjmp and longjmp can safely replace _setjmp and _longjmp,
   but they will run slower.  */

#define _setjmp setjmp
#define _longjmp longjmp

90 91 92 93 94
#define DATA_START  (&etext + 1)
#define TEXT_START  &start

#define _NAIVE_DOS_REGS

Richard M. Stallman's avatar
Richard M. Stallman committed
95 96
#define ORDINARY_LINK

Morten Welinder's avatar
Morten Welinder committed
97
/* command.com does not understand `...` so we define this.  */
Richard M. Stallman's avatar
Richard M. Stallman committed
98 99 100 101 102 103 104 105
#define SEPCHAR ';'

#define NULL_DEVICE "nul"

#define HAVE_INVERSE_HYPERBOLIC
#define FLOAT_CHECK_DOMAIN

/* When $TERM is "internal" then this is substituted:  */
Glenn Morris's avatar
Glenn Morris committed
106
#define INTERNAL_TERMINAL "pc|bios|IBM PC with color display:\
107
:co#80:li#25:Co#16:pa#256:km:ms:cm=<CM>:cl=<CL>:ce=<CE>:\
108
:se=</SO>:so=<SO>:us=<UL>:ue=</UL>:md=<BD>:mh=<DIM>:mb=<BL>:mr=<RV>:me=<NV>:\
109
:AB=<BG %d>:AF=<FG %d>:op=<DefC>:"
Richard M. Stallman's avatar
Richard M. Stallman committed
110 111 112

/* Define this to a function (Fdowncase, Fupcase) if your file system
   likes that */
113
#define FILE_SYSTEM_CASE Fmsdos_downcase_filename
Richard M. Stallman's avatar
Richard M. Stallman committed
114

115 116 117 118 119 120 121
/* 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_))

Karl Heuer's avatar
Karl Heuer committed
122 123 124 125
/* bcopy under djgpp is quite safe */
#define GAP_USE_BCOPY
#define BCOPY_UPWARD_SAFE 1
#define BCOPY_DOWNWARD_SAFE 1
126

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

130 131
/* We have (the code to control) a mouse.  */
#define HAVE_MOUSE
Morten Welinder's avatar
Morten Welinder committed
132

133
/* We can use mouse menus.  */
Richard M. Stallman's avatar
Richard M. Stallman committed
134 135
#define HAVE_MENUS

Morten Welinder's avatar
Morten Welinder committed
136 137
/* Define one of these for easier conditionals.  */
#ifdef HAVE_X_WINDOWS
138 139 140
/* We need a little extra space, see ../../lisp/loadup.el and the
   commentary below, in the non-X branch.  The 140KB number was
   measured on GNU/Linux and on MS-WIndows.  */
141
#define SYSTEM_PURESIZE_EXTRA (-170000+140000)
Morten Welinder's avatar
Morten Welinder committed
142
#else
143 144 145 146 147 148 149 150 151
/* We need a little extra space, see ../../lisp/loadup.el.
   As of 20091024, DOS-specific files use up 62KB of pure space.  But
   overall, we end up wasting 130KB of pure space, because
   BASE_PURESIZE starts at 1.47MB, while we need only 1.3MB (including
   non-DOS specific files and load history; the latter is about 55K,
   but depends on the depth of the top-level Emacs directory in the
   directory tree).  Given the unknown policy of different DPMI
   hosts regarding loading of untouched pages, I'm not going to risk
   enlarging Emacs footprint by another 100+ KBytes.  */
152
#define SYSTEM_PURESIZE_EXTRA (-170000+65000)
Morten Welinder's avatar
Morten Welinder committed
153
#endif
Gerd Moellmann's avatar
Gerd Moellmann committed
154

Eli Zaretskii's avatar
Eli Zaretskii committed
155
/* Tell the garbage collector that setjmp is known to save all
Gerd Moellmann's avatar
Gerd Moellmann committed
156 157 158 159
   registers relevant for conservative garbage collection in the
   jmp_buf.  */

#define GC_SETJMP_WORKS 1
160
#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS
Miles Bader's avatar
Miles Bader committed
161

162 163
#define NO_REMAP

Miles Bader's avatar
Miles Bader committed
164 165
/* arch-tag: d184f860-815d-4ff4-8187-d05c0f3c37d0
   (do not change this comment) */