diff --git a/src/Makefile b/src/Makefile
index d01c18b..c4f480d 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -169,7 +169,6 @@
 #AIX 4.2.1	      cc				5.2k (C) Will Fiveash
 #AIX 4.3.3.12	      xic 3.6.6				5.6  (5) David R. Favor
 #A/UX 3.1.1	      gcc	     +X11		4.0  (6) Jim Jagielski
-#BeOS PR	      mwcc DR3				5.0n (T) Olaf Seibert
 #BSDI 2.1 (x86)       shlicc2 gcc-2.6.3 -X11 X11R6	4.5  (1) Jos Backus
 #BSD/OS 3.0 (x86)     gcc gcc-2.7.2.1 -X11 X11R6	4.6c (1) Jos Backus
 #CX/UX 6.2	      cc	     +X11 +GUI_Mofif	5.4  (V) Kipp E. Howard
@@ -177,10 +176,6 @@
 #DG/UX 5.4R4.20       gcc 2.7.2      GUI		5.0s (H) Rocky Olive
 #HP-UX (most)	      c89 cc				5.1  (2) Bram Moolenaar
 #HP-UX_9.04	      cc	     +X11 +Motif	5.0  (2) Carton Lao
-#Irix 6.3 (O2)	      cc	     ?			4.5  (L) Edouard Poor
-#Irix 6.4	      cc	     ?			5.0m (S) Rick Sayre
-#Irix 6.5	      cc	     ?			6.0  (S) David Harrison
-#Irix 64 bit						4.5  (K) Jon Wright
 #Linux 2.0	      gcc-2.7.2      Infomagic Motif	4.3  (3) Ronald Rietman
 #NEC UP4800 UNIX_SV 4.2MP  cc	     +X11R6 Motif	4.6b (Q) Lennart Schultz
 #NetBSD 1.0A	      gcc-2.4.5      -X11 -GUI		3.21 (X) Juergen Weigert
@@ -240,8 +235,6 @@
 # (P)  For SuperUX 6.2 on NEC SX-4 see a few lines below to uncomment.
 # (Q)  For UNIXSVR 4.2MP on NEC UP4800 see below for lines to uncomment.
 # (R)  For Solaris 2.5 (or 2.5.1) with gcc > 2.5.6, uncomment line below.
-# (S)  For Irix 6.x with MipsPro compiler, use -OPT:Olimit.  See line below.
-# (T)  See ../doc/os_beos.txt.
 # (U)  Must uncomment CONF_OPT_PYTHON option below to disable Python
 #      detection, since the configure script runs into an error when it
 #      detects Python (probably because of the bash shell).
@@ -887,51 +880,6 @@
 #CONF_OPT_X = --x-include=$(XROOT)/include --x-libraries=$(XROOT)/lib/X11R6
 #EXTRA_LIBS = -lsocket -lgen
 
-### Irix 4.0 & 5.2 (Silicon Graphics Machines, __sgi will be defined)
-# Not needed for Irix 5.3, Ives Aerts reported
-#EXTRA_LIBS = -lmalloc -lc_s
-# Irix 4.0, when regexp and regcmp cannot be found when linking:
-#EXTRA_LIBS = -lmalloc -lc_s -lPW
-
-### (S) Irix 6.x (MipsPro compiler): Uses different Olimit flag:
-# Note:	This newer option style is used with the MipsPro compilers ONLY if
-#	you are compiling an "n32" or "64" ABI binary (use either a -n32
-#	flag or a -64 flag for CFLAGS).  If you explicitly use a -o32 flag,
-#	then the CFLAGS option format will be the typical style (i.e.
-#	-Olimit 3000).
-#CFLAGS = -OPT:Olimit=3000 -O
-
-### (S) Irix 6.5 with MipsPro C compiler.  Try this as a test to see new
-#	compiler features!  Beware, the optimization is EXTREMELY thorough
-#	and takes quite a long time.
-# Note: See the note above.  Here, the -mips3 option automatically
-#	enables either the "n32" or "64" ABI, depending on what machine you
-#	are compiling on (n32 is explicitly enabled here, just to make sure).
-#CFLAGS = -OPT:Olimit=3500 -O -n32 -mips3 -IPA:aggr_cprop=ON -INLINE:dfe=ON:list=ON:must=screen_char,out_char,ui_write,out_flush
-#LDFLAGS= -OPT:Olimit=3500 -O -n32 -mips3 -IPA:aggr_cprop=ON -INLINE:dfe=ON:list=ON:must=screen_char,out_char,ui_write,out_flush
-
-### (K) for SGI Irix machines with 64 bit pointers ("uname -s" says IRIX64)
-###	Suggested by Jon Wright <jon@gate.sinica.edu.tw>.
-###	Tested on R8000 IRIX6.1 Power Indigo2.
-###	Check /etc/compiler.defaults for your compiler settings.
-# either (for 64 bit pointers) uncomment the following line
-#GUI_LIB_LOC = -L/usr/lib64
-# then
-# 1) make config
-# 2) edit auto/config.mk and delete the -lelf entry in the LIBS line
-# 3) make
-#
-# or (for 32bit pointers) uncomment the following line
-#EXTRA_DEFS = -n32
-#GUI_LIB_LOC = -L/usr/lib32
-# then
-# 1) make config
-# 2) edit auto/config.mk, add -n32 to LDFLAGS
-# 3) make
-#
-#Alternatively: use -o32 instead of -n32.
-###
-
 ### (C)  On SCO Unix v3.2.5 (and probably other versions) the termcap library,
 ###	 which is found by configure, doesn't work correctly.  Symptom is the
 ###	 error message "Termcap entry too long".  Uncomment the next line.
diff --git a/src/filepath.c b/src/filepath.c
index 646a25e..70e0fd4 100644
--- a/src/filepath.c
+++ b/src/filepath.c
@@ -4071,10 +4071,8 @@
     /*
      * Append a slash or backslash after directory names if none is present.
      */
-#ifndef DONT_ADD_PATHSEP_TO_DIR
     if (isdir && (flags & EW_ADDSLASH))
 	add_pathsep(p);
-#endif
     ((char_u **)gap->ga_data)[gap->ga_len++] = p;
 }
 
diff --git a/src/install-sh b/src/install-sh
index 0b0fdcb..14d0b78 100644
--- a/src/install-sh
+++ b/src/install-sh
@@ -332,7 +332,7 @@
             then
               if test -z "$dir_arg" || {
                    # Check for POSIX incompatibilities with -m.
-                   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+                   # HP-UX 11.23 mkdir -m -p sets group- or
                    # other-writable bit of parent directory when it shouldn't.
                    # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
                    ls_ld_tmpdir=`ls -ld "$tmpdir"`
diff --git a/src/optiondefs.h b/src/optiondefs.h
index eeb445c..2e24cdd 100644
--- a/src/optiondefs.h
+++ b/src/optiondefs.h
@@ -1307,11 +1307,7 @@
 			    {(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
     {"imdisable",   "imd",  P_BOOL|P_VI_DEF,
 			    (char_u *)&p_imdisable, PV_NONE,
-#ifdef __sgi
-			    {(char_u *)TRUE, (char_u *)0L}
-#else
 			    {(char_u *)FALSE, (char_u *)0L}
-#endif
 			    SCTX_INIT},
     {"iminsert",    "imi",  P_NUM|P_VI_DEF,
 			    (char_u *)&p_iminsert, PV_IMI,
diff --git a/src/os_unix.c b/src/os_unix.c
index 7aa3d1f..4dadac3 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -252,7 +252,7 @@
 /*
  * I have seen
  *  extern char *_sys_siglist[NSIG];
- * on Irix, Linux, NetBSD and Solaris. It contains a nice list of strings
+ * on Linux, NetBSD and Solaris. It contains a nice list of strings
  * that describe the signals. That is nearly what we want here.  But
  * autoconf does only check for sys_siglist (without the underscore), I
  * do not want to change everything today.... jw.
diff --git a/src/os_unix.h b/src/os_unix.h
index 00ae239..d87ec90 100644
--- a/src/os_unix.h
+++ b/src/os_unix.h
@@ -88,21 +88,10 @@
 // have an argument???
 #define SIGHASARG
 
-// List 3 arg systems here. I guess __sgi, please test and correct me. jw.
-#if defined(__sgi) && defined(HAVE_SIGCONTEXT)
-# define SIGHAS3ARGS
-#endif
-
 #ifdef SIGHASARG
-# ifdef SIGHAS3ARGS
-#  define SIGPROTOARG	(int, int, struct sigcontext *)
-#  define SIGDEFARG(s)	(int s, int sig2, struct sigcontext *scont)
-#  define SIGDUMMYARG	0, 0, (struct sigcontext *)0
-# else
-#  define SIGPROTOARG	(int)
-#  define SIGDEFARG(s)	(int s UNUSED)
-#  define SIGDUMMYARG	0
-# endif
+# define SIGPROTOARG	(int)
+# define SIGDEFARG(s)	(int s UNUSED)
+# define SIGDUMMYARG	0
 #else
 # define SIGPROTOARG   (void)
 # define SIGDEFARG(s)  ()
diff --git a/src/pty.c b/src/pty.c
index 7cd01ae..4d9db06 100644
--- a/src/pty.c
+++ b/src/pty.c
@@ -252,31 +252,6 @@
 }
 #endif
 
-#if defined(__sgi) && !defined(PTY_DONE)
-#define PTY_DONE
-    int
-mch_openpty(char **ttyn)
-{
-    int f;
-    char *name;
-    void (*sigcld) SIGPROTOARG;
-
-    /*
-     * SIGCHLD set to SIG_DFL for _getpty() because it may fork() and
-     * exec() /usr/adm/mkpts
-     */
-    sigcld = signal(SIGCHLD, SIG_DFL);
-    name = _getpty(&f, O_RDWR | O_NONBLOCK | O_EXTRA, 0600, 0);
-    signal(SIGCHLD, sigcld);
-
-    if (name == 0)
-	return -1;
-    initmaster(f);
-    *ttyn = name;
-    return f;
-}
-#endif
-
 #if defined(MIPS) && defined(HAVE_DEV_PTC) && !defined(PTY_DONE)
 #define PTY_DONE
     int
diff --git a/src/version.c b/src/version.c
index 2065483..bfa29ef 100644
--- a/src/version.c
+++ b/src/version.c
@@ -708,6 +708,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    287,
+/**/
     286,
 /**/
     285,
