summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Blandy <jimb@redhat.com>1991-12-13 18:50:18 +0000
committerJim Blandy <jimb@redhat.com>1991-12-13 18:50:18 +0000
commitc0f93c869aa077aea6a15f747d3a691d4244e7f5 (patch)
tree1973b056d8abe57e951c1c84ee1876e4cdd44fda
parentd7fcacc2ce27f347b967e394d3de29bcb49eaa22 (diff)
downloademacs-c0f93c869aa077aea6a15f747d3a691d4244e7f5.tar.gz
entered into RCS
-rw-r--r--src/m/alliant1.h9
-rw-r--r--src/m/alliant4.h24
-rw-r--r--src/m/gould-np1.h87
-rw-r--r--src/m/is386.h27
-rw-r--r--src/m/news-risc.h21
-rw-r--r--src/m/sgi3000.h1
-rw-r--r--src/m/sun3-68881.h28
-rw-r--r--src/m/sun3-fpa.h28
-rw-r--r--src/m/sun3-soft.h29
-rw-r--r--src/m/sun3.h50
-rw-r--r--src/m/sun386.h75
-rw-r--r--src/m/symmetry.h103
-rw-r--r--src/m/tandem-s2.h24
-rw-r--r--src/s/386-ix.h20
-rw-r--r--src/s/bsd4-1.h149
-rw-r--r--src/s/bsd4-2.h128
-rw-r--r--src/s/dgux.h254
-rw-r--r--src/s/esix.h29
-rw-r--r--src/s/iris3-5.h196
-rw-r--r--src/s/irix3-3.h175
-rw-r--r--src/s/sunos4-0.h14
-rw-r--r--src/s/sunos4-1.h12
-rw-r--r--src/s/umax.h178
-rw-r--r--src/s/umips.h77
-rw-r--r--src/s/unipl5-0.h192
-rw-r--r--src/s/unipl5-2.h186
-rw-r--r--src/s/usg5-0.h183
-rw-r--r--src/s/usg5-2-2.h186
-rw-r--r--src/s/usg5-2.h186
-rw-r--r--src/s/vms.h230
-rw-r--r--src/s/vms4-0.h2
-rw-r--r--src/s/vms4-2.h3
-rw-r--r--src/s/vms4-4.h3
-rw-r--r--src/s/xenix.h238
34 files changed, 3147 insertions, 0 deletions
diff --git a/src/m/alliant1.h b/src/m/alliant1.h
new file mode 100644
index 00000000000..95f56cf1804
--- /dev/null
+++ b/src/m/alliant1.h
@@ -0,0 +1,9 @@
+/* config.h should include this file for version 1 of Alliant's
+ operating system. */
+
+/* The following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="bsd4-2" */
+
+#define ALLIANT_1
+#include "alliant.h"
diff --git a/src/m/alliant4.h b/src/m/alliant4.h
new file mode 100644
index 00000000000..ade3dbbaae5
--- /dev/null
+++ b/src/m/alliant4.h
@@ -0,0 +1,24 @@
+/* machine description file for Alliant Concentrix 4.0 or later.
+ Use alliant.h for versions 2 and 3. */
+
+/* The following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="bsd4-2" */
+
+#include "alliant.h"
+
+/* Concentrix uses a different kernel symbol for load average. */
+
+#undef LDAV_SYMBOL /* Undo definition in s-bsd4-2.h */
+#define LDAV_SYMBOL "_Loadavg"
+
+/* Data type of load average, as read out of kmem. */
+
+#define LOAD_AVE_TYPE long
+
+/* Convert that into an integer that is 100 for a load average of 1.0 */
+
+#define LOAD_AVE_CVT(x) (x * 100 / LOADAVG_SCALE)
+
+/* include <sys/param.h> for the definition of LOADAVG_SCALE, and also
+ LOADAVG_SIZE, the number of items in the Loadavg array. */
diff --git a/src/m/gould-np1.h b/src/m/gould-np1.h
new file mode 100644
index 00000000000..014fa68fb53
--- /dev/null
+++ b/src/m/gould-np1.h
@@ -0,0 +1,87 @@
+/* machine description file for Gould NP1 with UTX/32 3.0 (first release for NP1). */
+
+/* The following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="bsd4-3" */
+
+/* If your system uses COFF (Common Object File Format) then define the
+ preprocessor symbol "COFF". */
+/* UTX 3.0 uses a cross between COFF and a.out format, but closer to COFF. */
+/* at least currently, already defined by cpp, but make sure */
+#ifndef COFF
+#define COFF
+#endif COFF
+
+#include "gould.h"
+
+/* undefine what gould.h defined */
+#undef ADJUST_EXEC_HEADER
+
+/* If your system uses COFF (Common Object File Format) then define the
+ preprocessor symbol "COFF". */
+/* UTX 3.0 uses a cross between COFF and a.out format, but closer to COFF. */
+#ifndef COFF /* at least currently, already defined by cpp */
+#define COFF
+#endif COFF
+
+/* make Gould NP1 and PN COFF look like USG COFF */
+/* NP1 COFF */
+#undef aouthdr /* Since gould.h already defined these */
+#undef a_dtbase
+
+#ifdef IN_UNEXEC
+#define aouthdr exec
+#define ADJUST_TEXT_SCNHDR_SIZE
+
+/* Gould COFF - these are already defined in gould.h */
+/*
+ * #define COFF_WITH_BSD_SYMTAB
+ * #define HEADER_INCL_IN_TEXT
+ * #define magic a_magic
+ * #define tsize a_text
+ * #define dsize a_data
+ * #define bsize a_bss
+ * #define entry a_entry
+ * #define text_start a_txbase
+ * #define data_start a_dtbase
+*/
+/* End Gould COFF */
+#endif /* IN_UNEXEC */
+
+/* NP1 supports a slightly different set than PowerNode */
+#define BAUD_CONVERT { 0, 50, 75, 110, 134, 150, 300, 450, 600, 1200, \
+ 1800, 2000, 2400, 3600, 4800, 7200, 9600, \
+ 19200, 38400 }
+
+#define LD_SWITCH_SYSTEM -BS -e start
+
+/* Undef C_DEBUG_SWITCH because it may have been set in gould.h */
+/* It will compile and load and works with dbx. Runs under an incomplete
+ port of gdb, but gdb doesn't always find things correctly. */
+#undef C_DEBUG_SWITCH
+#define C_DEBUG_SWITCH -g
+#define LIBS_DEBUG -lg
+
+
+/* The data segment in this machine always starts at address 0x1000000 = 16M.
+ An address of data cannot be stored correctly in a Lisp object;
+ we always lose the high bits. We must tell XPNTR to add them back. */
+
+#define DATA_SEG_BITS 0x1000000
+#define DATA_START 0x1000000
+
+/* The text segment always starts at 0.
+ This way we don't need to have a label _start defined. */
+#define TEXT_START 0
+
+/* Data isn't right next to text on an NP1 */
+#define NO_REMAP
+
+/* The bcopy bug has reappeared */
+#undef BSTRING
+
+#ifndef GOULD_NP1
+#define GOULD_NP1
+#endif
+
+
diff --git a/src/m/is386.h b/src/m/is386.h
new file mode 100644
index 00000000000..45f9273e910
--- /dev/null
+++ b/src/m/is386.h
@@ -0,0 +1,27 @@
+/* machine description file for Integrated Solutions 386 machine. */
+
+#include "intel386.h"
+
+/* The following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="note"
+
+NOTE-START
+Intel 386 (-machine=intel386 or -machine=is386.h)
+
+ The possibilities for -opsystem are: bsd4-2, usg5-2-2, usg5-3,
+ isc2-2, 386-ix, esix, or xenix.
+
+ 18.58 should support a wide variety of operating systems.
+ Use isc2-2 for Interactive 386/ix version 2.2.
+ Use 386ix for prior versions.
+ Use esix for Esix. It isn't clear what to do on an SCO system.
+
+ -machine=is386 is used for an Integrated Solutions 386 machine.
+ It may also be correct for Microport systems.
+NOTE-END */
+
+#define LIBX10_MACHINE -lnsl_s
+#define LIBX11_MACHINE -lnsl_s
+
+#define LIBS_DEBUG -lg
diff --git a/src/m/news-risc.h b/src/m/news-risc.h
new file mode 100644
index 00000000000..a74babceac1
--- /dev/null
+++ b/src/m/news-risc.h
@@ -0,0 +1,21 @@
+/* news-risc.h is for the "RISC News". */
+
+#include "mips.h"
+#undef LIBS_MACHINE
+
+/* The following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="bsd4-3" */
+
+#define LIBS_MACHINE -lmld
+
+#define COFF
+#undef LD_SWITCH_MACHINE
+#define LD_SWITCH_MACHINE -x -D 800000
+
+/* #define C_OPTIMIZE_SWITCH -O2 */
+#define C_OPTIMIZE_SWITCH -O
+
+#define C_DEBUG_SWITCH -g3
+
+#undef TERMINFO
diff --git a/src/m/sgi3000.h b/src/m/sgi3000.h
new file mode 100644
index 00000000000..79249b61911
--- /dev/null
+++ b/src/m/sgi3000.h
@@ -0,0 +1 @@
+#include "irist.h"
diff --git a/src/m/sun3-68881.h b/src/m/sun3-68881.h
new file mode 100644
index 00000000000..b74758fa4fc
--- /dev/null
+++ b/src/m/sun3-68881.h
@@ -0,0 +1,28 @@
+/* sun3-68881.h, for a Sun 3, using the 68881. */
+
+#include "sun3.h"
+
+/* The following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="note"
+
+NOTE-START
+Sun with 68881 co-processor (-machine=sun3-68881;
+ -opsystem=bsd4-2 or -opsystem=sunos4)
+
+ Versions 1, 2, and 3 of the operating system are derived from
+ Berkeley 4.2, meaning that you should use -opsystem=bsd4-2.
+
+ For SunOS release 4 on a Sun 3 with a 68881, use -machine=sun3-68881
+ and -opsystem=sunos4. See the file share-lib/SUNBUG for how to
+ solve problems caused by bugs in the "export" version of SunOS 4.
+NOTE-END */
+
+/* In case we are using floating point, work together with crt0.c. */
+
+#ifndef __GNUC__
+#define C_SWITCH_MACHINE -f68881
+#endif
+
+#define sun_68881
+#define START_FILES crt0.o /usr/lib/Mcrt1.o
diff --git a/src/m/sun3-fpa.h b/src/m/sun3-fpa.h
new file mode 100644
index 00000000000..da959cac361
--- /dev/null
+++ b/src/m/sun3-fpa.h
@@ -0,0 +1,28 @@
+/* sun3-fpa.h, for a Sun 3, using the Sun fpa. */
+
+#include "sun3.h"
+
+/* The following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="note"
+
+NOTE-START
+Sun with FPA co-processor (-machine=sun3-fpa;
+ -opsystem=bsd4-2 or -opsystem=sunos4)
+
+ Versions 1, 2, and 3 of the operating system are derived from
+ Berkeley 4.2, meaning that you should use -opsystem=bsd4-2.
+
+ For SunOS release 4 on a Sun 3 with an FPA, use -machine=sun3-fpa
+ and -opsystem=sunos4. See the file share-lib/SUNBUG for how to
+ solve problems caused by bugs in the "export" version of SunOS 4.
+NOTE-END */
+
+/* In case we are using floating point, work together with crt0.c. */
+
+#ifndef __GNUC__
+#define C_SWITCH_MACHINE -ffpa
+#endif
+
+#define sun_fpa
+#define START_FILES crt0.o /usr/lib/Wcrt1.o
diff --git a/src/m/sun3-soft.h b/src/m/sun3-soft.h
new file mode 100644
index 00000000000..05a1e9e7f49
--- /dev/null
+++ b/src/m/sun3-soft.h
@@ -0,0 +1,29 @@
+/* sun3-soft.h, for a Sun 3, using the Sun with software floating point. */
+
+#include "sun3.h"
+
+/* The following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="note"
+
+NOTE-START
+Sun with software floating point (-machine=sun3-soft;
+ -opsystem=bsd4-2 or -opsystem=sunos4)
+
+ Versions 1, 2, and 3 of the operating system are derived from
+ Berkeley 4.2, meaning that you should use -opsystem=bsd4-2.
+
+ If you want to use software floating point on SunOS release 4 on a
+ Sun 3, use -machine=sun3-68881 and -opsystem=sunos4. See the file
+ share-lib/SUNBUG for how to solve problems caused by bugs in the
+ "export" version of SunOS 4.
+NOTE-END */
+
+/* In case we are using floating point, work together with crt0.c. */
+
+#ifndef __GNUC__
+#define C_SWITCH_MACHINE -fsoft
+#endif
+
+#define sun_soft
+#define START_FILES crt0.o /usr/lib/Fcrt1.o
diff --git a/src/m/sun3.h b/src/m/sun3.h
new file mode 100644
index 00000000000..b20889c25b8
--- /dev/null
+++ b/src/m/sun3.h
@@ -0,0 +1,50 @@
+/* machine description file for Sun 68000's OPERATING SYSTEM version 3
+ (for either 68000 or 68020 systems). */
+
+#include "sun2.h"
+#undef sun2
+#ifndef sun3
+#define sun3
+#endif
+
+/* The following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="note"
+
+NOTE-START
+Sun 1, 2 and 3 (-machine=sun1, -machine=sun2, -machine=sun3;
+ -opsystem=bsd4-2 or -opsystem=sunos4)
+
+ Whether you should use sun1, sun2 or sun3 depends on the
+ VERSION OF THE OPERATING SYSTEM
+ you have. There are three machine types for different versions of
+ SunOS. All are derived from Berkeley 4.2, meaning that you should
+ use -opsystem=bsd4-2. Emacs 17 has run on all of them. You will
+ need to use sun3 on Sun 2's running SunOS release 3.
+
+ For SunOS release 4 on a Sun 3, use -machine=sun3 and
+ -opsystem=sunos4. See the file share-lib/SUNBUG for how to solve
+ problems caused by bugs in the "export" version of SunOS 4.
+NOTE-END */
+
+/* Say that the text segment of a.out includes the header;
+ the header actually occupies the first few bytes of the text segment
+ and is counted in hdr.a_text. */
+
+#define A_TEXT_OFFSET(HDR) sizeof (HDR)
+
+/* This is the offset of the executable's text, from the start of the file. */
+
+#define A_TEXT_SEEK(HDR) (N_TXTOFF (hdr) + sizeof (hdr))
+
+/* In case we are using floating point, work together with crt0.c. */
+
+#ifndef __GNUC__
+#define C_SWITCH_MACHINE -fsoft
+#endif
+
+/* This line is needed if you are linking with X windows
+ and the library xlib was compiled to use the 68881.
+ For maximum cleanliness, don't edit this file;
+ instead, insert this line in config.h. */
+/* #define START_FILES crt0.o /usr/lib/Mcrt1.o */
diff --git a/src/m/sun386.h b/src/m/sun386.h
new file mode 100644
index 00000000000..1daf25601b5
--- /dev/null
+++ b/src/m/sun386.h
@@ -0,0 +1,75 @@
+/* machine description file for Sun's 386-based RoadRunner. This file borrows heavily from
+ "sun2.h", but since that file is heavily cpu-specific, it was easier
+ not to include it.
+
+ Copyright (C) 1988 Free Software Foundation, Inc.
+
+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 1, 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
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+/* The following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="note"
+
+NOTE-START
+ Use s-sunos4-0.h for operating system version 4.0, and s-sunos4-1.h
+ for later versions. See the file share-lib/SUNBUG for how to solve
+ problems caused by bugs in the "export" version of SunOS 4.
+NOTE-END */
+
+/* Say this machine is a bird */
+#ifndef roadrunner
+#define roadrunner
+#endif
+
+/* Actual cpu-specific defs */
+#include "intel386.h"
+
+/* Data type of load average, as read out of kmem. */
+
+#define LOAD_AVE_TYPE long
+
+/* Convert that into an integer that is 100 for a load average of 1.0 */
+
+#define LOAD_AVE_CVT(x) (int) (((double) (x)) * 100.0 / FSCALE)
+
+/* Underscores are not prepended to C symbols on this machine. */
+#undef LDAV_SYMBOL
+#define LDAV_SYMBOL "avenrun"
+
+/* Must use the system's termcap. It does special things. */
+
+#define LIBS_TERMCAP -ltermcap
+
+/* Arrange to link with sun windows, if requested. */
+/* For details on emacstool and sunfns, see etc/SUN-SUPPORT */
+/* These programs require Sun UNIX 4.2 Release 3.2 or greater */
+
+#ifdef HAVE_SUN_WINDOWS
+#define OTHER_FILES ${etcdir}emacstool
+#define LIBS_MACHINE -lsuntool -lsunwindow -lpixrect
+#define OBJECTS_MACHINE sunfns.o
+#define SYMS_MACHINE syms_of_sunfns ()
+#define PURESIZE 132000
+#endif
+
+/* Roadrunner uses 'COFF' format */
+#define COFF
+
+#define C_SWITCH_MACHINE -Bstatic /* avoid dynamic linking */
+#define LD_SWITCH_MACHINE -n -Bstatic
+/* Get rid of the -e __start that s-sunos4.h does. */
+#undef LD_SWITCH_SYSTEM
diff --git a/src/m/symmetry.h b/src/m/symmetry.h
new file mode 100644
index 00000000000..d89e5346ef4
--- /dev/null
+++ b/src/m/symmetry.h
@@ -0,0 +1,103 @@
+/* machine description file for SEQUENT SYMMETRY machines
+ Copyright (C) 1985, 1986 Free Software Foundation, Inc.
+
+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 1, 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
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+/* CHANGE: [Eric H. Herrin II; eric@ms.uky.edu - 15 Sept 1988]
+ * Modified the sequent.h file for the Sequent Symmetry machine.
+ * Biggest change was to align the sections in the a.out to 4K
+ * boundaries (this is the page size).
+ */
+
+
+/* NOTICE: this file works for DYNIX release 3.0.12 on Sequent Symmetry
+ * (Intel 80386) machines. Hasn't been tested on anything else.
+ */
+
+/* The following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="bsd4-3" */
+
+#include "intel386.h"
+
+/* Data type of load average, as read out of kmem. */
+
+#define LOAD_AVE_TYPE unsigned long
+
+/* Convert that into an integer that is 100 for a load average of 1.0 */
+
+#define FSCALE 1000.0
+#define LOAD_AVE_CVT(x) (int) (((double) (x)) * 100.0 / FSCALE)
+
+/* Define C_ALLOCA if this machine does not support a true alloca
+ and the one written in C should be used instead.
+ Define HAVE_ALLOCA to say that the system provides a properly
+ working alloca function and it should be used.
+ Define neither one if an assembler-language alloca
+ in the file alloca.s should be used. */
+
+/* #define C_ALLOCA */
+/*#define HAVE_ALLOCA*/
+
+/* Name of file the to look in
+ for the kernel symbol table (for load average) */
+
+#undef KERNEL_FILE
+#define KERNEL_FILE "/dynix"
+
+/* define HAVE_GETPAGESIZE for Symmetry */
+#define HAVE_GETPAGESIZE
+
+/* Avoids a compiler bug */
+
+#define TAHOE_REGISTER_BUG
+
+/* Say that the text segment of a.out includes the header;
+ the header actually occupies the first few bytes of the text segment
+ and is counted in hdr.a_text. Furthermore, the value written
+ in the a_text in the file must have N_ADDRADJ added to it. */
+
+#define A_TEXT_OFFSET(HDR) (sizeof (HDR) + N_ADDRADJ (HDR))
+
+/* This is the offset of the executable's text, from the start of the file. */
+
+#define A_TEXT_SEEK(HDR) (N_TXTOFF (hdr) + sizeof (hdr))
+
+/* The file sections in the Symmetry a.out must be on 4K boundaries.
+ */
+#define SEGSIZ 4096
+#define SECTION_ALIGNMENT (SEGSIZ-1)
+
+/* (short) negative-int doesn't sign-extend correctly */
+#define SHORT_CAST_BUG
+
+/* Cause compilations to be done in parallel in ymakefile. */
+#define MAKE_PARALLEL &
+
+/* Define how to search all pty names.
+ This is for Dynix 3.0; delete next 5 definitions for older systems. */
+
+#define PTY_MAJOR "pqrstuvwPQRSTUVW"
+#define PTY_MINOR "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
+#define PTY_ITERATION \
+ register int ma, mi; \
+ for (ma = 0; ma < sizeof(PTY_MAJOR) - 1; ma++) \
+ for (mi = 0; mi < sizeof(PTY_MINOR) - 1; mi++)
+#define PTY_NAME_SPRINTF \
+ sprintf (ptyname, "/dev/pty%c%c", PTY_MAJOR[ma], PTY_MINOR[mi]);
+#define PTY_TTY_NAME_SPRINTF \
+ sprintf (ptyname, "/dev/tty%c%c", PTY_MAJOR[ma], PTY_MINOR[mi]);
diff --git a/src/m/tandem-s2.h b/src/m/tandem-s2.h
new file mode 100644
index 00000000000..7c31225a413
--- /dev/null
+++ b/src/m/tandem-s2.h
@@ -0,0 +1,24 @@
+/* machine description file for the Tandem Integrity S2. */
+
+#include "mips.h"
+
+/* The following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="usg5-3" */
+
+/* This overrides some of the usual support for the mips and system V.3. */
+
+/* The S2 does not know about utimes() */
+#define USE_UTIME
+
+/* The operating system apparently defines TIOCGETC
+ but it doesn't work. */
+#undef BROKEN_TIOCGETC
+
+/* rs@ai.mit.edu said this was necessary for it to work. However, some
+ user of this machine ought to try to get subprocesses to work. */
+#undef subprocesses
+
+/* Correct some library file names. */
+#define START_FILES pre-crt0.o /usr/lib/crt1.o1.31
+#define LIB_STANDARD -lbsd -lc /usr/lib/crtn.o1.31
diff --git a/src/s/386-ix.h b/src/s/386-ix.h
new file mode 100644
index 00000000000..5f764563e84
--- /dev/null
+++ b/src/s/386-ix.h
@@ -0,0 +1,20 @@
+/* Interactive 386/ix. */
+
+#include "usg5-3.h"
+
+#define HAVE_SELECT
+
+#define BROKEN_TIOCGETC
+
+/* There are some reports that the following is needed
+ with some version of this system.
+#undef LIBX11_SYSTEM
+#define LIBX11_SYSTEM -linet
+
+#define HAVE_TIMEVAL
+#define USE_UTIME
+*/
+
+/* This is said to be needed as a result of having _insque rather
+ than insque in -loldX. This may not always be the right thing. */
+#define WRONG_NAME_INSQUE
diff --git a/src/s/bsd4-1.h b/src/s/bsd4-1.h
new file mode 100644
index 00000000000..6a4d8408dd9
--- /dev/null
+++ b/src/s/bsd4-1.h
@@ -0,0 +1,149 @@
+/* Definitions file for GNU Emacs running on bsd 4.1.
+ Copyright (C) 1985, 1986 Free Software Foundation, Inc.
+
+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 1, 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
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+
+/*
+ * Define symbols to identify the version of Unix this is.
+ * Define all the symbols that apply correctly.
+ */
+
+#define BSD4_1
+
+#define BSD
+
+/* SYSTEM_TYPE should indicate the kind of system you are using.
+ It sets the Lisp variable system-type. */
+
+#define SYSTEM_TYPE "berkeley-unix"
+
+/* 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 */
+
+/* Default is to set interrupt_input to 1: do input buffering within Emacs */
+
+#define INTERRUPT_INPUT
+
+/* First pty name is /dev/ptyp0. */
+
+#define FIRST_PTY_LETTER 'p'
+
+/*
+ * Define HAVE_TIMEVAL if the system supports the BSD style clock values.
+ * Look in <sys/time.h> for a timeval structure.
+ */
+
+#undef 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 HAVE_PTYS */
+
+/* Define this macro if system defines a type `union wait'. */
+
+#define HAVE_UNION_WAIT
+
+/* Define HAVE_SOCKETS if system supports 4.2-compatible sockets. */
+
+/* #define HAVE_SOCKETS */
+
+/*
+ * Define NONSYSTEM_DIR_LIBRARY to make Emacs emulate
+ * The 4.2 opendir, etc., library functions.
+ */
+
+#define NONSYSTEM_DIR_LIBRARY
+
+/* Define this symbol if your system has the functions bcopy, etc. */
+
+/* #define BSTRING */
+
+/* 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. */
+
+#define 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. */
+
+#undef CLASH_DETECTION /* Might work; not tried yet. */
+
+/* We use the Berkeley (and usg5.2.2) interface to nlist. */
+
+#define NLIST_STRUCT
+
+/* The file containing the kernel's symbol table is called /vmunix. */
+
+#define KERNEL_FILE "/vmunix"
+
+/* The symbol in the kernel where the load average is found
+ is named _avenrun. */
+
+#define LDAV_SYMBOL "_avenrun"
+
+/* Special hacks needed to make Emacs run on this system. */
+
+/* Make the function `signal' act as in 4.2. */
+
+#define signal sigset
+
+#define _longjmp longjmp
+#define _setjmp setjmp
+
+#define lstat stat
+
+/* sys_open handles the necessary 4.2 features for open. */
+
+#define open sys_open
+
+/* Names of flags for open. */
+#define O_RDONLY 0
+#define O_WRONLY 1
+#define O_RDWR 2
+#define O_EXCL 2000
+#define O_CREAT 1000
+
+/* Special library needed for linking for 4.1. */
+#define LIBS_SYSTEM -ljobs
diff --git a/src/s/bsd4-2.h b/src/s/bsd4-2.h
new file mode 100644
index 00000000000..ea9334c520c
--- /dev/null
+++ b/src/s/bsd4-2.h
@@ -0,0 +1,128 @@
+/* Definitions file for GNU Emacs running on bsd 4.2
+ Copyright (C) 1985, 1986 Free Software Foundation, Inc.
+
+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 1, 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
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+
+/*
+ * Define symbols to identify the version of Unix this is.
+ * Define all the symbols that apply correctly.
+ */
+
+#ifndef BSD4_2
+#define BSD4_2
+#endif /* BSD4_2 */
+
+#ifndef BSD
+#define BSD
+#endif /* BSD */
+
+/* SYSTEM_TYPE should indicate the kind of system you are using.
+ It sets the Lisp variable system-type. */
+
+#define SYSTEM_TYPE "berkeley-unix"
+
+/* 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 */
+
+/* Default is to set interrupt_input to 1: do input buffering within Emacs */
+
+#define INTERRUPT_INPUT
+
+/* First pty name is /dev/ptyp0. */
+
+#define FIRST_PTY_LETTER 'p'
+
+/*
+ * 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 HAVE_PTYS
+
+/* Define this macro if system defines a type `union wait'. */
+
+#define HAVE_UNION_WAIT
+
+/* Define HAVE_SOCKETS if system supports 4.2-compatible sockets. */
+
+#define HAVE_SOCKETS
+
+/*
+ * Define NONSYSTEM_DIR_LIBRARY to make Emacs emulate
+ * The 4.2 opendir, etc., library functions.
+ */
+
+/* #define NONSYSTEM_DIR_LIBRARY */
+
+/* Define this symbol if your system has the functions bcopy, etc. */
+
+#define BSTRING
+
+/* 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. */
+
+#define 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
+
+/* We use the Berkeley (and usg5.2.2) interface to nlist. */
+
+#define NLIST_STRUCT
+
+/* The file containing the kernel's symbol table is called /vmunix. */
+
+#define KERNEL_FILE "/vmunix"
+
+/* The symbol in the kernel where the load average is found
+ is named _avenrun. */
+
+#define LDAV_SYMBOL "_avenrun"
diff --git a/src/s/dgux.h b/src/s/dgux.h
new file mode 100644
index 00000000000..4759395d4d1
--- /dev/null
+++ b/src/s/dgux.h
@@ -0,0 +1,254 @@
+/* Definitions file for GNU Emacs running on Data General's DG/UX
+ version 4.32 and above.
+ Copyright (C) 1985, 1986, 1991 Free Software Foundation, Inc.
+
+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 1, 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
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+
+/*
+ * 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 */
+
+/* SYSTEM_TYPE should indicate the kind of system you are using.
+ It sets the Lisp variable system-type. */
+
+#define SYSTEM_TYPE "dgux-unix"
+
+/* 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).
+ CBREAK mode has two disadvatages
+ 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 'r'
+
+/*
+ * 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_SOCKETS if the system supports sockets.
+ */
+
+#define HAVE_SOCKETS
+
+/*
+ * 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 this symbol if your system has the functions bcopy, etc. */
+
+#define BSTRING
+
+/* 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. */
+
+#define 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 */
+
+/* Define a replacement for the baud rate switch, since DG/UX uses a different
+ from BSD. */
+
+#define BAUD_CONVERT { 0, 110, 134, 150, 300, 600, 1200, 1800, 2400, \
+ 4800, 9600, 19200, 38400 }
+
+/*
+ * Define HAVE_GETTIMEOFDAY if gettimeofday() system call is available.
+ */
+
+#define HAVE_GETTIMEOFDAY
+
+/*
+ * Define NLIST_STRUCT if the system has nlist.h
+ */
+
+#define NLIST_STRUCT
+
+/*
+ * Make WM Interface Compliant.
+ */
+
+#define XICCC
+
+/* 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). */
+
+/* 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 */
+
+/* DG/UX SPECIFIC ADDITIONS TO TEMPLATE FOLLOW: */
+
+/* Use the Berkeley flavors of the library routines, instead of System V. */
+
+#define setpgrp(pid,pgrp) setpgrp2(pid,pgrp)
+#define getpgrp(pid) getpgrp2(pid)
+
+/* Act like Berkeley. */
+
+#define _setjmp(env) sigsetjmp(env,0)
+#define _longjmp(env,val) longjmp(env,val)
+
+/* Use TERMINFO instead of termcap */
+
+#define TERMINFO
+
+/*
+ * Define HAVE_TERMIO if the system provides sysV-style ioctls
+ * for terminal control.
+ * DG/UX has both BSD and AT&T style ioctl's. Bsd ioctl's don't
+ * seem to wait for the output to drain properly, so use System V.
+ */
+
+/* #define HAVE_TERMIO */
+
+/*
+ * DG/UX 4.10 needs the following to turn on berkeley ioctl's.
+ */
+
+#ifndef HAVE_TERMIO
+#define _BSD_TTY_FLAVOR
+#endif
+
+/*
+ * Use a Berkeley style sys/wait.h.
+ * This makes WIF* macros operate on structures instead of ints.
+ */
+
+#define _BSD_WAIT_FLAVOR
+
+/* Enable the x-rebind keysym function. Do not try to map function
+ keys internally. */
+
+#define XREBINDKEYSYM
+
+/*
+ * Use BSD and POSIX-style signals. This is crucial!
+ */
+
+/* MAKING_MAKEFILE must be defined in "ymakefile" before including config.h */
+#ifndef MAKING_MAKEFILE
+
+/* Make sure signal.h is included so macros below don't mess with it. */
+/* DG/UX include files prevent multiple inclusion. */
+
+#include <signal.h>
+
+#define POSIX_SIGNALS
+
+/* Not worth converting the old GNU malloc to work with POSIX_SIGNALS. */
+#define SYSTEM_MALLOC
+
+/* Define this if you use System 5 Release 4 Streams */
+#define SYSV4_PTYS
+#define open sys_open
+#define close sys_close
+#define read sys_read
+#define write sys_write
+
+#define INTERRUPTABLE_OPEN
+#define INTERRUPTABLE_CLOSE
+/* can't hurt to define these, even though read/write should auto restart */
+#define INTERRUPTABLE_IO
+
+/* Can't use sys_signal because then etc/server.c would need sysdep.o. */
+#define signal(SIG,FUNC) berk_signal(SIG,FUNC)
+
+#else /* MAKING_MAKEFILE */
+/* force gcc to be used */
+CC=gcc
+#endif /* not MAKING_MAKEFILE */
diff --git a/src/s/esix.h b/src/s/esix.h
new file mode 100644
index 00000000000..6a228590a2b
--- /dev/null
+++ b/src/s/esix.h
@@ -0,0 +1,29 @@
+/* Definitions for ESIX, a variant of v.5.3 for the 386. */
+/* These are based on reports for ESIX 5.3.2 D. */
+
+#include "usg5-3.h"
+
+#define HAVE_TIMEVAL
+
+/* Some versions of V.3 have this, but not all. ESIX does. */
+#define HAVE_PTYS
+#define SYSV_PTYS
+
+/* Have -lg be used for debugging. */
+#undef LIBS_DEBUG
+#define LIBS_DEBUG -lg
+
+/* If using Roell's X server, define X11R4 */
+#ifdef X11R4 /* Roell's X server */
+#define HAVE_GETTIMEOFDAY /* Thomas Roell's X11R4 lib defines gettimeofday */
+#define select sys_select /* Emacs select() not good enough? */
+#undef LIBX11_SYSTEM
+#define LIBX11_SYSTEM -lpt
+#endif /* X11R4 */
+
+/* ESIX does not need <sys/sioctl.h>, but needs <sys/ptem.h> */
+#define NO_SIOCTL_H
+#define NEED_PTEM_H
+#define USG_SYS_TIME
+#define USE_UTIME
+#define BROKEN_FIONREAD
diff --git a/src/s/iris3-5.h b/src/s/iris3-5.h
new file mode 100644
index 00000000000..20a36caa32a
--- /dev/null
+++ b/src/s/iris3-5.h
@@ -0,0 +1,196 @@
+/* Definitions file for GNU Emacs running on Silicon Graphics 3.5
+ Copyright (C) 1987 Free Software Foundation, Inc.
+
+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 1, 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
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+
+/*
+ * Define symbols to identify the version of Unix this is.
+ * Define all the symbols that apply correctly.
+ */
+
+#define USG
+#define USG5
+#define IRIS
+
+/* SYSTEM_TYPE should indicate the kind of system you are using.
+ It sets the Lisp variable system-type. */
+
+#define SYSTEM_TYPE "irix"
+
+/* 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
+
+/* Default is to set interrupt_input to 0: don't do input buffering within Emacs */
+
+/* #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_TERMIO if the system provides sysV-style ioctls
+ * for terminal control.
+ */
+
+#define HAVE_TERMIO
+
+/*
+ * Define HAVE_TIMEVAL if the system supports the BSD style clock values.
+ * Look in <sys/time.h> for a timeval structure.
+ */
+
+#define HAVE_TIMEVAL
+
+/* `utime' system call doesn't understand timevals. */
+
+#define IRIS_UTIME
+
+/*
+ * Define HAVE_SELECT if the system supports the `select' system call.
+ */
+
+#define HAVE_SELECT
+
+/*
+ * Define HAVE_PTYS if the system supports pty devices.
+ */
+
+#define HAVE_PTYS
+
+/* Define HAVE_SOCKETS if system supports 4.2-compatible sockets. */
+
+#define HAVE_SOCKETS
+
+/*
+ * Define NONSYSTEM_DIR_LIBRARY to make Emacs emulate
+ * The 4.2 opendir, etc., library functions.
+ */
+
+/* #define NONSYSTEM_DIR_LIBRARY */
+
+/* Define this symbol if your system has the functions bcopy, etc. */
+
+#define BSTRING
+
+/* 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. */
+
+#define 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 */
+
+/* We use the Berkeley (and usg5.2.2) interface to nlist. */
+
+#define NLIST_STRUCT
+
+/* The file containing the kernel's symbol table is called /vmunix. */
+
+#define KERNEL_FILE "/vmunix"
+
+/* The symbol in the kernel where the load average is found
+ is named _avenrun. */
+
+#define LDAV_SYMBOL "_avenrun"
+
+
+/* Special hacks needed to make Emacs run on this system. */
+
+/*
+ * Make the sigsetmask function go away. Don't know what the
+ * ramifications of this are, but doesn't seem possible to
+ * emulate it properly anyway at this point.
+ */
+
+#define sigsetmask(mask) /* Null expansion */
+
+/* The IRIS defines SIGIO in signal.h, but doesn't implement it. */
+#undef SIGIO
+
+#define LIBS_MACHINE -lbsd -ldbm -lPW
+#define C_SWITCH_MACHINE -I/usr/include/bsd
+
+/* setjmp and longjmp can safely replace _setjmp and _longjmp,
+ but they will run slower. */
+
+#define _setjmp setjmp
+#define _longjmp longjmp
+
+/* On USG systems the system calls are interruptable by signals
+ that the user program has elected to catch. Thus the system call
+ must be retried in these cases. To handle this without massive
+ changes in the source code, we remap the standard system call names
+ to names for our own functions in sysdep.c that do the system call
+ with retries. */
+
+#define read sys_read
+#define open sys_open
+#define write sys_write
+
+#define INTERRUPTIBLE_OPEN
+#define INTERRUPTIBLE_IO
+
+/* On USG systems these have different names */
+
+#define index strchr
+#define rindex strrchr
+
+/* USG systems tend to put everything declared static
+ into the initialized data area, which becomes pure after dumping Emacs.
+ Foil this. Emacs carefully avoids static vars inside functions. */
+
+/* #define static */
+
+/* Compiler bug bites on many systems when default ADDR_CORRECT is used. */
+
+#define ADDR_CORRECT(x) (int)((char *)(x) - (char*)0)
+
+/* some errno.h's don't actually allocate the variable itself */
+
+#define NEED_ERRNO
+
+/* The symbol FIONREAD is defined, but the feature does not work. */
+
+#define BROKEN_FIONREAD
+
+/* This is how to get the device name of the tty end of a pty. */
+#define PTY_TTY_NAME_SPRINTF \
+ sprintf (ptyname, "/dev/ttyq%d", minor (stb.st_rdev));
diff --git a/src/s/irix3-3.h b/src/s/irix3-3.h
new file mode 100644
index 00000000000..02a0cbdc070
--- /dev/null
+++ b/src/s/irix3-3.h
@@ -0,0 +1,175 @@
+/* Definitions file for GNU Emacs running on Silicon Graphics Irix system 3.3.
+ Copyright (C) 1987,1990 Free Software Foundation, Inc.
+
+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 1, 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
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+
+/*
+ * Define symbols to identify the version of Unix this is.
+ * Define all the symbols that apply correctly.
+ */
+
+#define USG
+#define USG5
+#define IRIS
+
+/* SYSTEM_TYPE should indicate the kind of system you are using.
+ It sets the Lisp variable system-type. */
+
+#define SYSTEM_TYPE "irix"
+
+/* 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 */
+
+/* Default is to set interrupt_input to 0: don't do input buffering within Emacs */
+
+/* #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_TERMIO if the system provides sysV-style ioctls
+ * for terminal control.
+ */
+
+#define HAVE_TERMIO
+
+/*
+ * Define HAVE_TIMEVAL if the system supports the BSD style clock values.
+ * Look in <sys/time.h> for a timeval structure.
+ */
+
+#define HAVE_TIMEVAL
+
+/* `utime' system call doesn't understand timevals. */
+
+#define IRIS_UTIME
+
+/*
+ * Define HAVE_SELECT if the system supports the `select' system call.
+ */
+
+#define HAVE_SELECT
+
+/*
+ * Define HAVE_PTYS if the system supports pty devices.
+ */
+
+#define HAVE_PTYS
+
+/* Define HAVE_SOCKETS if system supports 4.2-compatible sockets. */
+
+#define HAVE_SOCKETS
+
+/*
+ * Define NONSYSTEM_DIR_LIBRARY to make Emacs emulate
+ * The 4.2 opendir, etc., library functions.
+ */
+
+/* #define NONSYSTEM_DIR_LIBRARY */
+
+/* Define this symbol if your system has the functions bcopy, etc. */
+
+#define BSTRING
+
+/* 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. */
+
+#define 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 */
+
+/* We use the Berkeley (and usg5.2.2) interface to nlist. */
+
+#define NLIST_STRUCT
+
+/* The file containing the kernel's symbol table is called /unix. */
+
+#define KERNEL_FILE "/unix"
+
+/* The symbol in the kernel where the load average is found
+ is named _avenrun. */
+
+#define LDAV_SYMBOL "avenrun"
+
+
+/* setjmp and longjmp can safely replace _setjmp and _longjmp,
+ but they will run slower. */
+
+#define _setjmp setjmp
+#define _longjmp longjmp
+
+/* On USG systems the system calls are interruptable by signals
+ that the user program has elected to catch. Thus the system call
+ must be retried in these cases. To handle this without massive
+ changes in the source code, we remap the standard system call names
+ to names for our own functions in sysdep.c that do the system call
+ with retries. */
+
+#define read sys_read
+#define open sys_open
+#define write sys_write
+
+#define INTERRUPTIBLE_OPEN
+#define INTERRUPTIBLE_IO
+
+/* On USG systems these have different names */
+
+#define index strchr
+#define rindex strrchr
+
+/* USG systems tend to put everything declared static
+ into the initialized data area, which becomes pure after dumping Emacs.
+ Foil this. Emacs carefully avoids static vars inside functions. */
+
+/* #define static */
+
+/* This is how to get the device name of the tty end of a pty. */
+#define PTY_TTY_NAME_SPRINTF \
+ sprintf (ptyname, "/dev/ttyq%d", minor (stb.st_rdev));
+
+
+/* getwd is defined. */
+
+#define HAVE_GETWD
+
+#define HAVE_SYSVIPC
diff --git a/src/s/sunos4-0.h b/src/s/sunos4-0.h
new file mode 100644
index 00000000000..5c949bba673
--- /dev/null
+++ b/src/s/sunos4-0.h
@@ -0,0 +1,14 @@
+#include "bsd4-2.h"
+
+#if 0 /* This may have been needed for an earlier version of Sun OS 4.
+ It seems to cause warnings in 4.0.3 and 4.1. */
+#define O_NDELAY FNDELAY /* Non-blocking I/O (4.2 style) */
+#endif
+
+#define LD_SWITCH_SYSTEM -e __start -Bstatic
+
+/* In SunOS 4.1, a static function called by tzsetwall reportedly
+ clears the byte just past an eight byte region it mallocs, corrupting
+ GNU malloc's memory pool. But Sun's malloc doesn't seem to mind. */
+
+#define SYSTEM_MALLOC
diff --git a/src/s/sunos4-1.h b/src/s/sunos4-1.h
new file mode 100644
index 00000000000..3e243e550e7
--- /dev/null
+++ b/src/s/sunos4-1.h
@@ -0,0 +1,12 @@
+#include "sunos4-0.h"
+
+/* 4.1.1 makes these system calls interruptable. */
+
+#define read sys_read
+#define write sys_write
+#define open sys_open
+#define close sys_close
+
+#define INTERRUPTIBLE_OPEN
+#define INTERRUPTIBLE_CLOSE
+#define INTERRUPTIBLE_IO
diff --git a/src/s/umax.h b/src/s/umax.h
new file mode 100644
index 00000000000..a67f15c22e1
--- /dev/null
+++ b/src/s/umax.h
@@ -0,0 +1,178 @@
+/* Definitions file for GNU Emacs running on UMAX 4.2
+ Copyright (C) 1985, 1986 Free Software Foundation, Inc.
+
+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 1, 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
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+
+/*
+ * Define symbols to identify the version of Unix this is.
+ * Define all the symbols that apply correctly.
+ */
+
+/* #define UNIPLUS */
+/* #define USG5 */
+/* #define USG */
+/* #define BSD4_1 */
+#define BSD4_2
+/* #define BSD4_3 */
+#define BSD
+#define UMAX4_2
+#define UMAX
+/* #define VMS */
+
+/* SYSTEM_TYPE should indicate the kind of system you are using.
+ It sets the Lisp variable system-type. */
+
+#define SYSTEM_TYPE "berkeley-unix"
+
+/* 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).
+ CBREAK mode has two disadvatages
+ 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 'p'
+
+/*
+ * 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 HAVE_PTYS
+
+/* Define this macro if system defines a type `union wait'. */
+
+#define HAVE_UNION_WAIT
+
+/* Define HAVE_SOCKETS if system supports 4.2-compatible sockets. */
+
+#define HAVE_SOCKETS
+
+/*
+ * Define NONSYSTEM_DIR_LIBRARY to make Emacs emulate
+ * The 4.2 opendir, etc., library functions.
+ */
+
+/* #define NONSYSTEM_DIR_LIBRARY */
+
+/* Define this symbol if your system has the functions bcopy, etc. */
+
+#define BSTRING
+
+/* 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. */
+
+#define 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
+
+/* We use the Berkeley (and usg5.2.2) interface to nlist. */
+
+#define NLIST_STRUCT
+
+/* The file containing the kernel's symbol table is called /vmunix. */
+
+#define KERNEL_FILE "/vmunix"
+
+/* The symbol in the kernel where the load average is found
+ is named _avenrun. */
+
+#define LDAV_SYMBOL "_avenrun"
+
+/* 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). */
+
+/* Specify alignment requirement for start of text and data sections
+ in the executable file. */
+
+#define SECTION_ALIGNMENT pagemask
+
+
+#define SEGMENT_MASK (64 * 1024 - 1)
+
+
+/* crt0.c needs this for compilation because it uses asm. */
+
+#define C_SWITCH_ASM -q nodirect_code
+
+/* Encore machines with APC processor boards align sections on 4M
+ boundaries, so it is not easy to remap the start of the text segment
+ in the unexec() routine. For them you need the following two lines.
+ For DPC processors you can enable these or not, as you wish, but
+ you will get better performance without them. */
+
+/* #define NO_REMAP
+ #define TEXT_START 0
+*/
diff --git a/src/s/umips.h b/src/s/umips.h
new file mode 100644
index 00000000000..5aea3439dac
--- /dev/null
+++ b/src/s/umips.h
@@ -0,0 +1,77 @@
+/* Definitions file for GNU Emacs running on Mips operating system.
+ That system can emulate either BSD or Sys V, in either case with changes.
+ If BSD is defined, we assume BSD is being emulated; otherwise, Sys V. */
+
+#ifdef BSD
+#include "bsd4-3.h"
+
+#define C_SWITCH_SYSTEM -systype bsd43
+#define LD_SWITCH_SYSTEM -systype bsd43
+#define LIBS_SYSTEM -lmld
+#define LIBS_DEBUG
+#define START_FILES pre-crt0.o /lib/crt1.o
+#define LIB_STANDARD -lc /usr/lib/crtn.o
+
+#define COFF
+#define TERMINFO
+#undef MAIL_USE_FLOCK /* Someone should check this. */
+#undef HAVE_UNION_WAIT
+
+#else /* not BSD */
+
+#include "usg5-2-2.h"
+
+#define LIBS_SYSTEM -lmld
+#define LIBS_DEBUG
+#define START_FILES pre-crt0.o /usr/lib/crt1.o
+#define LIB_STANDARD -lbsd -lc /usr/lib/crtn.o
+/* #define LIBS_TERMCAP -lcurses */
+
+#define C_SWITCH_SYSTEM -I/usr/include/bsd
+
+/* Cancel certain parts of standard sysV support. */
+#undef NONSYSTEM_DIR_LIBRARY
+#define SYSV_SYSTEM_DIR
+#undef static
+
+/* Don't try to use SIGIO or FIONREAD even though they are defined. */
+#undef SIGIO
+#define BROKEN_FIONREAD
+
+/* Describe special kernel features. */
+
+#define HAVE_SYSVIPC
+
+#define HAVE_TIMEVAL
+#if defined(emacs)
+#include <bsd/sys/time.h>
+#endif
+
+/* #define HAVE_SELECT
+ The `select' in the system won't work for pipes,
+ so don't use it. */
+
+#define HAVE_DUP2
+#define HAVE_GETWD
+#define HAVE_GETTIMEOFDAY
+
+#define HAVE_PTYS
+#define HAVE_SOCKETS
+/* #define BSTRING Supposedly removed. */
+
+#undef NOMULTIPLEJOBS
+
+#define CLASH_DETECTION
+
+#if defined(HAVE_X_WINDOWS) && defined(HAVE_X11)
+#define HAVE_VFORK /* Graciously provided by libX.a */
+#endif
+
+#define utimes utime /* Someone should check this. */
+/* ??? */
+#define IRIS
+
+#endif /* not BSD */
+
+/* High order bit must be stripped off nlist return values */
+#define FIXUP_KERNEL_SYMBOL_ADDR(NL) (NL)[0].n_value &= 0x7fffffff;
diff --git a/src/s/unipl5-0.h b/src/s/unipl5-0.h
new file mode 100644
index 00000000000..3df79561fb4
--- /dev/null
+++ b/src/s/unipl5-0.h
@@ -0,0 +1,192 @@
+/* Definitions file for GNU Emacs running on UniSoft's UniPlus 5.0
+ Support for this system is not finished; don't expect this to work.
+ Copyright (C) 1985, 1986 Free Software Foundation, Inc.
+
+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 1, 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
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+
+/*
+ * Define symbols to identify the version of Unix this is.
+ * Define all the symbols that apply correctly.
+ */
+
+#define USG /* System III, System V, etc */
+
+#define USG5
+
+#define UNIPLUS
+
+/* SYSTEM_TYPE should indicate the kind of system you are using.
+ It sets the Lisp variable system-type. */
+
+#define SYSTEM_TYPE "unisoft-unix"
+
+/* 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 */
+
+/* Default is to set interrupt_input to 0: don't do input buffering within Emacs */
+
+/* #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_TERMIO if the system provides sysV-style ioctls
+ * for terminal control.
+ */
+
+#define HAVE_TERMIO
+
+/*
+ * 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 HAVE_PTYS */
+
+/* Define this macro if system defines a type `union wait'. */
+
+#define HAVE_UNION_WAIT
+
+/* Define HAVE_SOCKETS if system supports 4.2-compatible sockets. */
+
+/* #define HAVE_SOCKETS */
+
+/*
+ * Define NONSYSTEM_DIR_LIBRARY to make Emacs emulate
+ * The 4.2 opendir, etc., library functions.
+ */
+
+#define NONSYSTEM_DIR_LIBRARY
+
+/* Define this symbol if your system has the functions bcopy, etc. */
+
+/* #define BSTRING */
+
+/* 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. */
+
+/* #define 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 */
+
+/* Define SHORTNAMES if the C compiler can distinguish only
+ short names. It means that the stuff in ../shortnames
+ must be run to convert the long names to short ones.
+
+ Some USG systems support long names.
+ If yours is one, DO NOT change this file!
+ Do #undef SHORTNAMES in the m- file or in config.h. */
+
+#define SHORTNAMES
+
+/* We do NOT use the Berkeley (and usg5.2.2) interface to nlist. */
+
+/* #define NLIST_STRUCT */
+
+/* The file containing the kernel's symbol table is called /unix. */
+
+#define KERNEL_FILE "/unix"
+
+/* The symbol in the kernel where the load average is found
+ is named avenrun. */
+
+#define LDAV_SYMBOL "avenrun"
+
+/* Special hacks needed to make Emacs run on this system. */
+
+/*
+ * Make the sigsetmask function go away. Don't know what the
+ * ramifications of this are, but doesn't seem possible to
+ * emulate it properly anyway at this point.
+ */
+
+#define sigsetmask(mask) /* Null expansion */
+
+/* setjmp and longjmp can safely replace _setjmp and _longjmp,
+ but they will run slower. */
+
+#define _setjmp setjmp
+#define _longjmp longjmp
+
+/* On USG systems the system calls are interruptable by signals
+ that the user program has elected to catch. Thus the system call
+ must be retried in these cases. To handle this without massive
+ changes in the source code, we remap the standard system call names
+ to names for our own functions in sysdep.c that do the system call
+ with retries. */
+
+#define read sys_read
+#define open sys_open
+#define write sys_write
+
+#define INTERRUPTIBLE_OPEN
+#define INTERRUPTIBLE_IO
+
+/* On USG systems these have different names */
+
+#define index strchr
+#define rindex strrchr
+
+/* Compiler bug bites when default ADDR_CORRECT is used. */
+
+#define ADDR_CORRECT(x) (x)
+
+/* Special library needed for linking for Uniplus */
+
+#define LIBS_SYSTEM -lnet
+
+/* A system-specific loader switch is needed. */
+
+#define LD_SWITCH_SYSTEM -N -L/lib/libg /usr/lib/unshared.ld
diff --git a/src/s/unipl5-2.h b/src/s/unipl5-2.h
new file mode 100644
index 00000000000..6850f8d55c9
--- /dev/null
+++ b/src/s/unipl5-2.h
@@ -0,0 +1,186 @@
+/* Definitions file for GNU Emacs running on UniSoft's UniPlus 5.2
+ Copyright (C) 1985, 1986 Free Software Foundation, Inc.
+
+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 1, 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
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+
+/*
+ * Define symbols to identify the version of Unix this is.
+ * Define all the symbols that apply correctly.
+ */
+
+#define USG /* System III, System V, etc */
+
+#define USG5
+
+#define UNIPLUS
+
+/* SYSTEM_TYPE should indicate the kind of system you are using.
+ It sets the Lisp variable system-type. */
+
+#define SYSTEM_TYPE "unisoft-unix"
+
+/* 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 */
+
+/* Default is to set interrupt_input to 0: don't do input buffering within Emacs */
+
+/* #define INTERRUPT_INPUT */
+
+/* Letter to use in finding device name of first pty,
+ if system supports pty's. 'p' means it is /dev/ptyp0 */
+
+#define FIRST_PTY_LETTER 'p'
+
+/*
+ * Define HAVE_TERMIO if the system provides sysV-style ioctls
+ * for terminal control.
+ */
+
+#define HAVE_TERMIO
+
+/*
+ * 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 HAVE_PTYS
+
+/* Define this macro if system defines a type `union wait'. */
+
+#define HAVE_UNION_WAIT
+
+/* Define HAVE_SOCKETS if system supports 4.2-compatible sockets. */
+
+/* #define HAVE_SOCKETS */
+
+/*
+ * Define NONSYSTEM_DIR_LIBRARY to make Emacs emulate
+ * The 4.2 opendir, etc., library functions.
+ */
+
+#define NONSYSTEM_DIR_LIBRARY
+
+/* Define this symbol if your system has the functions bcopy, etc. */
+
+/* #define BSTRING */
+
+/* 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. It is supported under UniPlus
+ System V Release 2. */
+
+#define 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 */
+
+/* Uniplus 5.2 supports long names in C */
+
+/* #define SHORTNAMES */
+
+/* We do NOT use the Berkeley (and usg5.2.2) interface to nlist. */
+
+/* #define NLIST_STRUCT */
+
+/* The file containing the kernel's symbol table is called /unix. */
+
+#define KERNEL_FILE "/unix"
+
+/* The symbol in the kernel where the load average is found
+ is named avenrun. */
+
+#define LDAV_SYMBOL "avenrun"
+
+/* Special hacks needed to make Emacs run on this system. */
+
+/*
+ * Make the sigsetmask function go away. Don't know what the
+ * ramifications of this are, but doesn't seem possible to
+ * emulate it properly anyway at this point.
+ */
+
+#define sigsetmask(mask) /* Null expansion */
+
+/* setjmp and longjmp can safely replace _setjmp and _longjmp,
+ but they will run slower. */
+
+#define _setjmp setjmp
+#define _longjmp longjmp
+
+/* On USG systems the system calls are interruptable by signals
+ that the user program has elected to catch. Thus the system call
+ must be retried in these cases. To handle this without massive
+ changes in the source code, we remap the standard system call names
+ to names for our own functions in sysdep.c that do the system call
+ with retries. */
+
+#define read sys_read
+#define open sys_open
+#define write sys_write
+
+#define INTERRUPTIBLE_OPEN
+#define INTERRUPTIBLE_IO
+
+/* On USG systems these have different names */
+
+#define index strchr
+#define rindex strrchr
+
+/* Compiler bug bites when default ADDR_CORRECT is used. */
+
+#define ADDR_CORRECT(x) (x)
+
+/* Special library needed for linking for Uniplus */
+
+#define LIBS_SYSTEM -lnet
+
+/* A system-specific loader switch is needed. */
+
+#define LD_SWITCH_SYSTEM -N -L/lib/libg /usr/lib/unshared.ld
diff --git a/src/s/usg5-0.h b/src/s/usg5-0.h
new file mode 100644
index 00000000000..16271c8a4f3
--- /dev/null
+++ b/src/s/usg5-0.h
@@ -0,0 +1,183 @@
+/* Definitions file for GNU Emacs running on AT&T's System V.0
+ Copyright (C) 1985, 1986 Free Software Foundation, Inc.
+
+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 1, 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
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+
+/*
+ * Define symbols to identify the version of Unix this is.
+ * Define all the symbols that apply correctly.
+ */
+
+#define USG /* System III, System V, etc */
+
+#define USG5
+#define USG5_0
+
+/* SYSTEM_TYPE should indicate the kind of system you are using.
+ It sets the Lisp variable system-type. */
+
+#define SYSTEM_TYPE "usg-unix-v"
+
+/* 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
+
+/* Default is to set interrupt_input to 0: don't do input buffering within Emacs */
+
+/* #define INTERRUPT_INPUT */
+
+/* Letter to use in finding device name of first pty,
+ if system supports pty's. 'p' means it is /dev/ptyp0 */
+
+#define FIRST_PTY_LETTER 'p'
+
+/*
+ * Define HAVE_TERMIO if the system provides sysV-style ioctls
+ * for terminal control.
+ */
+
+#define HAVE_TERMIO
+
+/*
+ * 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 HAVE_PTYS */
+
+/* Define HAVE_SOCKETS if system supports 4.2-compatible sockets. */
+
+/* #define HAVE_SOCKETS */
+
+/*
+ * Define NONSYSTEM_DIR_LIBRARY to make Emacs emulate
+ * The 4.2 opendir, etc., library functions.
+ */
+
+#define NONSYSTEM_DIR_LIBRARY
+
+/* Define this symbol if your system has the functions bcopy, etc. */
+
+/* #define BSTRING */
+
+/* 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 supposed to work now on system V release 2. */
+
+#define 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 */
+
+/* Define SHORTNAMES if the C compiler can distinguish only
+ short names. It means that the stuff in ../shortnames
+ must be run to convert the long names to short ones. */
+
+#define SHORTNAMES
+
+/* We do NOT use the Berkeley (and usg5.2.2) interface to nlist. */
+
+/* #define NLIST_STRUCT */
+
+/* The file containing the kernel's symbol table is called /unix. */
+
+#define KERNEL_FILE "/unix"
+
+/* The symbol in the kernel where the load average is found
+ is named avenrun. */
+
+#define LDAV_SYMBOL "avenrun"
+
+/* Special hacks needed to make Emacs run on this system. */
+
+/*
+ * Make the sigsetmask function go away. Don't know what the
+ * ramifications of this are, but doesn't seem possible to
+ * emulate it properly anyway at this point.
+ */
+
+#define sigsetmask(mask) /* Null expansion */
+
+/* setjmp and longjmp can safely replace _setjmp and _longjmp,
+ but they will run slower. */
+
+#define _setjmp setjmp
+#define _longjmp longjmp
+
+/* On USG systems the system calls are interruptable by signals
+ that the user program has elected to catch. Thus the system call
+ must be retried in these cases. To handle this without massive
+ changes in the source code, we remap the standard system call names
+ to names for our own functions in sysdep.c that do the system call
+ with retries. */
+
+#define read sys_read
+#define open sys_open
+#define write sys_write
+
+#define INTERRUPTIBLE_OPEN
+#define INTERRUPTIBLE_IO
+
+/* On USG systems these have different names */
+
+#define index strchr
+#define rindex strrchr
+
+/* USG systems tend to put everything declared static
+ into the initialized data area, which becomes pure after dumping Emacs.
+ Foil this. Emacs carefully avoids static vars inside functions. */
+
+#define static
+
+/* Compiler bug bites on many systems when default ADDR_CORRECT is used. */
+
+#define ADDR_CORRECT(x) (x)
+
+/* Prevent -lg from being used for debugging. Not implemented? */
+
+#define LIBS_DEBUG
diff --git a/src/s/usg5-2-2.h b/src/s/usg5-2-2.h
new file mode 100644
index 00000000000..982f3e32107
--- /dev/null
+++ b/src/s/usg5-2-2.h
@@ -0,0 +1,186 @@
+/* Definitions file for GNU Emacs running on AT&T's System V Release 2.2
+ Copyright (C) 1985, 1986 Free Software Foundation, Inc.
+
+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 1, 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
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+
+/*
+ * Define symbols to identify the version of Unix this is.
+ * Define all the symbols that apply correctly.
+ */
+
+#define USG /* System III, System V, etc */
+
+#define USG5
+
+/* SYSTEM_TYPE should indicate the kind of system you are using.
+ It sets the Lisp variable system-type. */
+
+#define SYSTEM_TYPE "usg-unix-v"
+
+/* 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
+
+/* Default is to set interrupt_input to 0: don't do input buffering within Emacs */
+
+/* #define INTERRUPT_INPUT */
+
+/* Letter to use in finding device name of first pty,
+ if system supports pty's. 'p' means it is /dev/ptyp0 */
+
+#define FIRST_PTY_LETTER 'p'
+
+/*
+ * Define HAVE_TERMIO if the system provides sysV-style ioctls
+ * for terminal control.
+ */
+
+#define HAVE_TERMIO
+
+/*
+ * 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 HAVE_PTYS */
+
+/* Define HAVE_SOCKETS if system supports 4.2-compatible sockets. */
+
+/* #define HAVE_SOCKETS */
+
+/*
+ * Define NONSYSTEM_DIR_LIBRARY to make Emacs emulate
+ * The 4.2 opendir, etc., library functions.
+ */
+
+#define NONSYSTEM_DIR_LIBRARY
+
+/* Define this symbol if your system has the functions bcopy, etc. */
+
+/* #define BSTRING */
+
+/* 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 supposed to work now on system V release 2. */
+
+#define 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 */
+
+/* Define SHORTNAMES if the C compiler can distinguish only
+ short names. It means that the stuff in ../shortnames
+ must be run to convert the long names to short ones. */
+
+/* #define SHORTNAMES */
+
+/* We use the Berkeley (and usg5.2.2) interface to nlist. */
+
+#define NLIST_STRUCT
+
+/* The file containing the kernel's symbol table is called /unix. */
+
+#define KERNEL_FILE "/unix"
+
+/* The symbol in the kernel where the load average is found
+ is named avenrun. */
+
+#define LDAV_SYMBOL "avenrun"
+
+/* Special hacks needed to make Emacs run on this system. */
+
+/*
+ * Make the sigsetmask function go away. Don't know what the
+ * ramifications of this are, but doesn't seem possible to
+ * emulate it properly anyway at this point.
+ */
+
+#define sigsetmask(mask) /* Null expansion */
+
+/* setjmp and longjmp can safely replace _setjmp and _longjmp,
+ but they will run slower. */
+
+#define _setjmp setjmp
+#define _longjmp longjmp
+
+/* On USG systems the system calls are interruptable by signals
+ that the user program has elected to catch. Thus the system call
+ must be retried in these cases. To handle this without massive
+ changes in the source code, we remap the standard system call names
+ to names for our own functions in sysdep.c that do the system call
+ with retries. */
+
+#define read sys_read
+#define open sys_open
+#define write sys_write
+
+#define INTERRUPTIBLE_OPEN
+#define INTERRUPTIBLE_IO
+
+/* On USG systems these have different names */
+
+#define index strchr
+#define rindex strrchr
+
+/* USG systems tend to put everything declared static
+ into the initialized data area, which becomes pure after dumping Emacs.
+ Foil this. Emacs carefully avoids static vars inside functions. */
+
+#define static
+
+/* Compiler bug bites on many systems when default ADDR_CORRECT is used. */
+
+#define ADDR_CORRECT(x) (x)
+
+/* Prevent -lg from being used for debugging. Not implemented? */
+
+#define LIBS_DEBUG
+
+/* Use terminfo instead of termcap. */
+
+#define TERMINFO
diff --git a/src/s/usg5-2.h b/src/s/usg5-2.h
new file mode 100644
index 00000000000..46346005dfb
--- /dev/null
+++ b/src/s/usg5-2.h
@@ -0,0 +1,186 @@
+/* Definitions file for GNU Emacs running on AT&T's System V Release 2.0
+ Copyright (C) 1985, 1986 Free Software Foundation, Inc.
+
+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 1, 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
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+
+/*
+ * Define symbols to identify the version of Unix this is.
+ * Define all the symbols that apply correctly.
+ */
+
+#define USG /* System III, System V, etc */
+
+#define USG5
+
+/* SYSTEM_TYPE should indicate the kind of system you are using.
+ It sets the Lisp variable system-type. */
+
+#define SYSTEM_TYPE "usg-unix-v"
+
+/* 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
+
+/* Default is to set interrupt_input to 0: don't do input buffering within Emacs */
+
+/* #define INTERRUPT_INPUT */
+
+/* Letter to use in finding device name of first pty,
+ if system supports pty's. 'p' means it is /dev/ptyp0 */
+
+#define FIRST_PTY_LETTER 'p'
+
+/*
+ * Define HAVE_TERMIO if the system provides sysV-style ioctls
+ * for terminal control.
+ */
+
+#define HAVE_TERMIO
+
+/*
+ * 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 HAVE_PTYS */
+
+/* Define HAVE_SOCKETS if system supports 4.2-compatible sockets. */
+
+/* #define HAVE_SOCKETS */
+
+/*
+ * Define NONSYSTEM_DIR_LIBRARY to make Emacs emulate
+ * The 4.2 opendir, etc., library functions.
+ */
+
+#define NONSYSTEM_DIR_LIBRARY
+
+/* Define this symbol if your system has the functions bcopy, etc. */
+
+/* #define BSTRING */
+
+/* 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 supposed to work now on system V release 2. */
+
+#define 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 */
+
+/* Define SHORTNAMES if the C compiler can distinguish only
+ short names. It means that the stuff in ../shortnames
+ must be run to convert the long names to short ones. */
+
+/* #define SHORTNAMES */
+
+/* We do NOT use the Berkeley (and usg5.2.2) interface to nlist. */
+
+/* #define NLIST_STRUCT */
+
+/* The file containing the kernel's symbol table is called /unix. */
+
+#define KERNEL_FILE "/unix"
+
+/* The symbol in the kernel where the load average is found
+ is named avenrun. */
+
+#define LDAV_SYMBOL "avenrun"
+
+/* Special hacks needed to make Emacs run on this system. */
+
+/*
+ * Make the sigsetmask function go away. Don't know what the
+ * ramifications of this are, but doesn't seem possible to
+ * emulate it properly anyway at this point.
+ */
+
+#define sigsetmask(mask) /* Null expansion */
+
+/* setjmp and longjmp can safely replace _setjmp and _longjmp,
+ but they will run slower. */
+
+#define _setjmp setjmp
+#define _longjmp longjmp
+
+/* On USG systems the system calls are interruptable by signals
+ that the user program has elected to catch. Thus the system call
+ must be retried in these cases. To handle this without massive
+ changes in the source code, we remap the standard system call names
+ to names for our own functions in sysdep.c that do the system call
+ with retries. */
+
+#define read sys_read
+#define open sys_open
+#define write sys_write
+
+#define INTERRUPTIBLE_OPEN
+#define INTERRUPTIBLE_IO
+
+/* On USG systems these have different names */
+
+#define index strchr
+#define rindex strrchr
+
+/* USG systems tend to put everything declared static
+ into the initialized data area, which becomes pure after dumping Emacs.
+ Foil this. Emacs carefully avoids static vars inside functions. */
+
+#define static
+
+/* Compiler bug bites on many systems when default ADDR_CORRECT is used. */
+
+#define ADDR_CORRECT(x) (x)
+
+/* Prevent -lg from being used for debugging. Not implemented? */
+
+#define LIBS_DEBUG
+
+/* Use terminfo instead of termcap. */
+
+#define TERMINFO
diff --git a/src/s/vms.h b/src/s/vms.h
new file mode 100644
index 00000000000..ad2df144c64
--- /dev/null
+++ b/src/s/vms.h
@@ -0,0 +1,230 @@
+/* system description header for VMS
+ Copyright (C) 1986 Free Software Foundation, Inc.
+
+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 1, 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
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+/*
+ * Define symbols to identify the version of Unix this is.
+ * Define all the symbols that apply correctly.
+ */
+
+#ifndef VMS /* Decus cpp doesn't define this but VAX C does */
+#define VMS
+#endif /* VMS */
+/* Note that this file is used indirectly via vms4-0.h, or some other
+ such file. These other files define a symbol VMS4_0, VMS4_2, etc. */
+
+/* SYSTEM_TYPE should indicate the kind of system you are using.
+ It sets the Lisp variable system-type. */
+
+#define SYSTEM_TYPE "vax-vms"
+
+/* 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 */
+
+/* INTERRUPT_INPUT controls a default for Unix systems.
+ VMS uses a separate mechanism. */
+
+/* #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_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 HAVE_PTYS */
+
+/* Define HAVE_SOCKETS if system supports 4.2-compatible sockets. */
+
+/* #define HAVE_SOCKETS */
+
+/*
+ * Define NONSYSTEM_DIR_LIBRARY to make Emacs emulate
+ * The 4.2 opendir, etc., library functions.
+ */
+
+#define NONSYSTEM_DIR_LIBRARY
+
+/* Define this symbol if your system has the functions bcopy, etc. */
+
+/* #define BSTRING */
+
+/* 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. */
+
+#define 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 */
+
+/* Define the maximum record length for print strings, if needed. */
+
+#define MAX_PRINT_CHARS 300
+
+
+/* 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). */
+
+/* Do you have the shareable library bug? If you link with a shareable
+ library that contains psects with the NOSHR attribute and also refer to
+ those psects in your program, the linker give you a private version of
+ the psect which is not related to the version used by the shareable
+ library. The end result is that your references to variables in that
+ psect have absolutely nothing to do with library references to what is
+ supposed to be the same variable. If you intend to link with the standard
+ C library (NOT the shareable one) you don't need to define this. (This
+ is NOT fixed in V4.4...) */
+
+#define SHAREABLE_LIB_BUG
+
+/* Partially due to the above mentioned bug and also so that we don't need
+ to require that people have a shareable C library, the default for Emacs
+ is to link with the non-shared library. If you want to link with the
+ shared library, define this and remake xmakefile and fileio.c. This allows
+ us to ship a guaranteed executable image. */
+
+#define LINK_CRTL_SHARE
+
+/* Define this if you want to read the file SYS$SYSTEM:SYSUAF.DAT for user
+ information. If you do use this, you must either make SYSUAF.DAT world
+ readable or install Emacs with SYSPRV. */
+
+/* #define READ_SYSUAF */
+
+/* On VMS these have a different name */
+
+#define index strchr
+#define rindex strrchr
+#define unlink delete
+
+/* On later versions of VMS these exist in the C run time library, but
+ we are using our own implementations. Hide their names to avoid
+ linker errors */
+#define rename sys_rename
+#define execvp sys_execvp
+#define system sys_system
+
+/* Hide these names so that we don't get linker errors */
+#define malloc sys_malloc
+#define free sys_free
+#define realloc sys_realloc
+#define calloc sys_calloc
+
+/* Don't use the standard brk and sbrk */
+#define sbrk sys_sbrk
+#define brk sys_brk
+
+/* On VMS we want to avoid reading and writing very large amounts of
+ data at once, so we redefine read and write here. */
+
+#define read sys_read
+#define write sys_write
+
+/* sys_creat just calls the real creat with additional args of
+ "rfm=var", "rat=cr" to get "normal" VMS files... */
+#define creat sys_creat
+
+/* fwrite forces an RMS PUT on every call. This is abysmally slow, so
+ we emulate fwrite with fputc, which forces buffering and is much
+ faster! */
+#define fwrite sys_fwrite
+
+/* getuid only returns the member number, which is not unique on most VMS
+ systems. We emulate it with (getgid()<<16 | getuid()). */
+#define getuid sys_getuid
+
+/* If user asks for TERM, check first for EMACS_TERM. */
+#define getenv sys_getenv
+
+/* Standard C abort is less useful than it should be. */
+#define abort sys_abort
+
+/* Case conflicts with C library fread. */
+#define Fread F_read
+
+/* Case conflicts with C library srandom. */
+#define Srandom S_random
+
+/* Cause initialization of vmsfns.c to be run. */
+#define SYMS_SYSTEM syms_of_vmsfns ()
+
+/* VAXCRTL access doesn't deal with SYSPRV very well (among other oddites...)
+ Here, we use $CHKPRO to really determine access. */
+#define access sys_access
+
+#define PAGESIZE 512
+
+#define _longjmp longjmp
+#define _setjmp setjmp
+
+globalref char sdata[];
+#define DATA_START (((int) sdata + 511) & ~511)
+#define TEXT_START 512
+
+/* Baud-rate values from tty status are not standard. */
+
+#define BAUD_CONVERT \
+{ 0, 50, 75, 110, 134, 150, 300, 600, 1200, 1800, \
+ 2000, 2400, 3600, 4800, 7200, 9600, 19200 }
+
+#define PURESIZE 132000
+
+/* Stdio FILE type has extra indirect on VMS, so must alter this macro. */
+
+#define PENDING_OUTPUT_COUNT(FILE) ((*(FILE))->_ptr - (*(FILE))->_base)
diff --git a/src/s/vms4-0.h b/src/s/vms4-0.h
new file mode 100644
index 00000000000..3f11a3de30a
--- /dev/null
+++ b/src/s/vms4-0.h
@@ -0,0 +1,2 @@
+#include "vms.h"
+#define VMS4_0
diff --git a/src/s/vms4-2.h b/src/s/vms4-2.h
new file mode 100644
index 00000000000..e632b87e09f
--- /dev/null
+++ b/src/s/vms4-2.h
@@ -0,0 +1,3 @@
+#include "vms.h"
+#define VMS4_2
+
diff --git a/src/s/vms4-4.h b/src/s/vms4-4.h
new file mode 100644
index 00000000000..c0f60900d53
--- /dev/null
+++ b/src/s/vms4-4.h
@@ -0,0 +1,3 @@
+#include "vms.h"
+#define VMS4_4
+
diff --git a/src/s/xenix.h b/src/s/xenix.h
new file mode 100644
index 00000000000..83d48a1b56e
--- /dev/null
+++ b/src/s/xenix.h
@@ -0,0 +1,238 @@
+/* Definitions file for GNU Emacs running SCO Xenix 386 Release 2.2
+ Copyright (C) 1988 Free Software Foundation, Inc.
+
+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 1, 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
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+/*
+ * Define symbols to identify the version of Unix this is.
+ * Define all the symbols that apply correctly.
+ */
+
+/* #define UNIPLUS */
+#define XENIX
+#define USG5
+#define USG
+/* #define HPUX */
+/* #define UMAX */
+/* #define BSD4_1 */
+/* #define BSD4_2 */
+/* #define BSD4_3 */
+/* #define BSD */
+/* #define VMS */
+
+/* SYSTEM_TYPE should indicate the kind of system you are using.
+ It sets the Lisp variable system-type. */
+
+#define SYSTEM_TYPE "xenix"
+
+/* 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).
+ CBREAK mode has two disadvatages
+ 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. 'p' means it is /dev/ptyp0 */
+
+/* #define FIRST_PTY_LETTER 'p' */
+
+/*
+ * Define HAVE_TERMIO if the system provides sysV-style ioctls
+ * for terminal control.
+ */
+
+#define HAVE_TERMIO
+
+/*
+ * 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 HAVE_PTYS */
+
+/* Define HAVE_SOCKETS if system supports 4.2-compatible sockets. */
+
+/* #define HAVE_SOCKETS */
+
+/*
+ * Define NONSYSTEM_DIR_LIBRARY to make Emacs emulate
+ * The 4.2 opendir, etc., library functions.
+ */
+
+#define NONSYSTEM_DIR_LIBRARY
+
+/* Define this symbol if your system has the functions bcopy, etc. */
+
+/* #define BSTRING */
+
+/* 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 supposed to work now on system V release 2. */
+
+#define subprocesses
+
+/* If your system uses COFF (Common Object File Format) then define the
+ preprocessor symbol "COFF". */
+
+/* #define COFF */
+
+/* Xenix requires completely different unexec code
+ which lives in a separate file. Specify the file name. */
+
+#define UNEXEC unexenix.o
+
+/* 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. */
+
+/* The way this is implemented requires long filenames... */
+/* #define CLASH_DETECTION */
+
+/* Define SHORTNAMES if the C compiler can distinguish only
+ short names. It means that the stuff in ../shortnames
+ must be run to convert the long names to short ones. */
+
+/* #define SHORTNAMES */
+
+/* We do not use the Berkeley (and usg5.2.2) interface to nlist. */
+
+/* #define NLIST_STRUCT */
+
+/* Compensate for one incompatibility between Xenix and V.0. */
+#define n_zeroes n_name[0]
+
+/* The file containing the kernel's symbol table is called /xenix. */
+
+#define KERNEL_FILE "/xenix"
+
+/* The symbol in the kernel where the load average is found
+ is named avenrun. */
+
+#define LDAV_SYMBOL "_avenrun"
+
+/* Special hacks needed to make Emacs run on this system. */
+
+/*
+ * Make the sigsetmask function go away. Don't know what the
+ * ramifications of this are, but doesn't seem possible to
+ * emulate it properly anyway at this point.
+ */
+
+#define sigsetmask(mask) /* Null expansion */
+
+/* setjmp and longjmp can safely replace _setjmp and _longjmp,
+ but they will run slower. */
+
+#define _setjmp setjmp
+#define _longjmp longjmp
+
+/* On USG systems the system calls are interruptable by signals
+ that the user program has elected to catch. Thus the system call
+ must be retried in these cases. To handle this without massive
+ changes in the source code, we remap the standard system call names
+ to names for our own functions in sysdep.c that do the system call
+ with retries. */
+
+#define read sys_read
+#define open sys_open
+#define write sys_write
+
+#define INTERRUPTIBLE_OPEN
+#define INTERRUPTIBLE_IO
+
+/* On USG systems these have different names */
+
+#define index strchr
+#define rindex strrchr
+
+/* Compiler bug bites on many systems when default ADDR_CORRECT is used. */
+
+#define ADDR_CORRECT(x) (x)
+
+/* Prevent -lg from being used for debugging. Not implemented? */
+
+#define LIBS_DEBUG
+
+/* Switches for linking temacs. */
+
+#define LD_SWITCH_SYSTEM -i
+
+/* Xenix implements sysV style IPC. */
+
+#define HAVE_SYSVIPC
+
+/* Use terminfo instead of termcap. */
+
+/* Tell Emacs to use Terminfo. */
+
+#define TERMINFO
+
+/* Tell Xenix curses to BE Terminfo. */
+#define M_TERMINFO
+
+/* Control program name for etc/fakemail to run. */
+
+#ifdef SMAIL
+#define MAIL_PROGRAM_NAME "/usr/bin/smail -q0"
+#else
+#define MAIL_PROGRAM_NAME "/usr/lib/mail/execmail"
+#endif
+
+/* Some variants have TIOCGETC, but the structures to go with it
+ are not declared. */
+
+#define BROKEN_TIOCGETC