diff --git a/src/INSTALL b/src/INSTALL
index 6f3781e..9dbe31a 100644
--- a/src/INSTALL
+++ b/src/INSTALL
@@ -181,203 +181,4 @@
 4. Atari MiNT
 =============
 
-[NOTE: this is quite old, it might not work anymore]
-
-To compile Vim for MiNT you may either copy Make_mint.mak to Makefile or use
-the Unix Makefile adapted for the MiNT configuration.
-
-Now proceed as described in the Unix section.
-
-Prerequisites:
-
-You need a curses or termcap library that supports non-alphanumeric
-termcap names. If you don't have any, link with termlib.o.
-
------------------------------------------------------------------------------
-
-The rest of this file is based on the INSTALL file that comes with GNU
-autoconf 2.12. Not everything applies to Vim. Read Makefile too!
-
-
-Basic Installation
-==================
-
-   These are generic installation instructions.
-
-   The `configure' shell script attempts to guess correct values for
-various system-dependent variables used during compilation.  It uses
-those values to create a `Makefile' in each directory of the package.
-It may also create one or more `.h' files containing system-dependent
-definitions.  Finally, it creates a shell script `config.status' that
-you can run in the future to recreate the current configuration, a file
-`config.cache' that saves the results of its tests to speed up
-reconfiguring, and a file `config.log' containing compiler output
-(useful mainly for debugging `configure').
-
-   If you need to do unusual things to compile the package, please try
-to figure out how `configure' could check whether to do them, and mail
-diffs or instructions to the address given in the `README' so they can
-be considered for the next release.  If at some point `config.cache'
-contains results you don't want to keep, you may remove or edit it.
-
-   The file `configure.ac' is used to create `configure' by a program
-called `autoconf'.  You only need `configure.ac' if you want to change
-it or regenerate `configure' using a newer version of `autoconf'.
-
-The simplest way to compile this package is:
-
-  1. `cd' to the directory containing the package's source code and type
-     `./configure' to configure the package for your system.  If you're
-     using `csh' on an old version of System V, you might need to type
-     `sh ./configure' instead to prevent `csh' from trying to execute
-     `configure' itself.
-
-     Running `configure' takes awhile.  While running, it prints some
-     messages telling which features it is checking for.
-
-  2. Type `make' to compile the package.
-
-  3. Optionally, type `make check' to run any self-tests that come with
-     the package.
-
-  4. Type `make install' to install the programs and any data files and
-     documentation.
-
-  5. You can remove the program binaries and object files from the
-     source code directory by typing `make clean'.  To also remove the
-     files that `configure' created (so you can compile the package for
-     a different kind of computer), type `make distclean'.  There is
-     also a `make maintainer-clean' target, but that is intended mainly
-     for the package's developers.  If you use it, you may have to get
-     all sorts of other programs in order to regenerate files that came
-     with the distribution.
-
-Compilers and Options
-=====================
-
-   Some systems require unusual options for compilation or linking that
-the `configure' script does not know about.  You can give `configure'
-initial values for variables by setting them in the environment.  Using
-a Bourne-compatible shell, you can do that on the command line like
-this:
-     CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
-
-Or on systems that have the `env' program, you can do it like this:
-     env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
-
-Compiling For Multiple Architectures
-====================================
-
-   You can compile the package for more than one kind of computer at the
-same time, by placing the object files for each architecture in their
-own directory.  To do this, you must use a version of `make' that
-supports the `VPATH' variable, such as GNU `make'.  `cd' to the
-directory where you want the object files and executables to go and run
-the `configure' script.  `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'.
-
-   If you have to use a `make' that does not support the `VPATH'
-variable, you have to compile the package for one architecture at a time
-in the source code directory.  After you have installed the package for
-one architecture, use `make distclean' before reconfiguring for another
-architecture.
-
-Installation Names
-==================
-
-   By default, `make install' will install the package's files in
-`/usr/local/bin', `/usr/local/man', etc.  You can specify an
-installation prefix other than `/usr/local' by giving `configure' the
-option `--prefix=PATH'.
-
-   You can specify separate installation prefixes for
-architecture-specific files and architecture-independent files.  If you
-give `configure' the option `--exec-prefix=PATH', the package will use
-PATH as the prefix for installing programs and libraries.
-Documentation and other data files will still use the regular prefix.
-
-   In addition, if you use an unusual directory layout you can give
-options like `--bindir=PATH' to specify different values for particular
-kinds of files.  Run `configure --help' for a list of the directories
-you can set and what kinds of files go in them.
-
-   If the package supports it, you can cause programs to be installed
-with an extra prefix or suffix on their names by giving `configure' the
-option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
-
-Optional Features
-=================
-
-   Some packages pay attention to `--enable-FEATURE' options to
-`configure', where FEATURE indicates an optional part of the package.
-They may also pay attention to `--with-PACKAGE' options, where PACKAGE
-is something like `gnu-as' or `x' (for the X Window System).  The
-`README' should mention any `--enable-' and `--with-' options that the
-package recognizes.
-
-   For packages that use the X Window System, `configure' can usually
-find the X include and library files automatically, but if it doesn't,
-you can use the `configure' options `--x-includes=DIR' and
-`--x-libraries=DIR' to specify their locations.
-
-Specifying the System Type
-==========================
-
-   There may be some features `configure' can not figure out
-automatically, but needs to determine by the type of host the package
-will run on.  Usually `configure' can figure that out, but if it prints
-a message saying it can not guess the host type, give it the
-`--host=TYPE' option.  TYPE can either be a short name for the system
-type, such as `sun4', or a canonical name with three fields:
-     CPU-COMPANY-SYSTEM
-
-See the file `config.sub' for the possible values of each field.  If
-`config.sub' isn't included in this package, then this package doesn't
-need to know the host type.
-
-   If you are building compiler tools for cross-compiling, you can also
-use the `--target=TYPE' option to select the type of system they will
-produce code for and the `--build=TYPE' option to select the type of
-system on which you are compiling the package.
-
-Sharing Defaults
-================
-
-   If you want to set default values for `configure' scripts to share,
-you can create a site shell script called `config.site' that gives
-default values for variables like `CC', `cache_file', and `prefix'.
-`configure' looks for `PREFIX/share/config.site' if it exists, then
-`PREFIX/etc/config.site' if it exists.  Or, you can set the
-`CONFIG_SITE' environment variable to the location of the site script.
-A warning: not all `configure' scripts look for a site script.
-
-Operation Controls
-==================
-
-   `configure' recognizes the following options to control how it
-operates.
-
-`--cache-file=FILE'
-     Use and save the results of the tests in FILE instead of
-     `./config.cache'.  Set FILE to `/dev/null' to disable caching, for
-     debugging `configure'.
-
-`--help'
-     Print a summary of the options to `configure', and exit.
-
-`--quiet'
-`--silent'
-`-q'
-     Do not print messages saying which checks are being made.  To
-     suppress all normal output, redirect it to `/dev/null' (any error
-     messages will still be shown).
-
-`--srcdir=DIR'
-     Look for the package's source code in directory DIR.  Usually
-     `configure' can determine that directory automatically.
-
-`--version'
-     Print the version of Autoconf used to generate the `configure'
-     script, and exit.
-
-`configure' also accepts some other, not widely useful, options.
+Atari MiNT support was removed in patch 8.2.1215.
diff --git a/src/Make_mint.mak b/src/Make_mint.mak
deleted file mode 100644
index 97a2e4b..0000000
--- a/src/Make_mint.mak
+++ /dev/null
@@ -1,56 +0,0 @@
-#
-# Makefile for Vim on MiNT				vim:ts=8:sw=8:tw=78
-#
-# This is a wrapper around the Unix Makefile. It is configured to accompany
-# the MiNT distribution of Vim.
-#
-# See "Makefile" for instructions how to run "make".
-#
-# BUT: Always run: "make -f Make_mint.mak config",
-#      and then:  "make -f Make_mint.mak"!
-# Otherwise the postprocessing won't get done.
-#
-
-### This Makefile has been successfully tested on these systems.
-### Check the (*) column for remarks, listed below.
-### Later code changes may cause small problems, otherwise Vim is supposed to
-### compile and run without problems.
-
-#system:	      configurations:			version (*) tested by:
-#-------------	      ------------------------	     -------  -  ----------
-#MiNT 1.12.5	      gcc gcc-2.6.1			3.29	 Jens Felderhoff
-#MiNT 1.12.6	      gcc gcc-2.6.1	  -GUI		4.6b	 Jens Felderhoff
-#MiNT 1.12.6	      gcc gcc-2.6.1	  -GUI		4.6	 Jens Felderhoff
-
-# set this to the pathname prefix of your symbol link editor, i.e. if it is
-# /usr/local/bin/sym-ld set:
-#
-SYMLDPREFIX = /usr/local/bin/sym-
-#SYMLDPREFIX = /gnu/bin/sym-
-
-POSTPROCESS = fixstk 20k $(VIMTARGET)
-DBGPOSTPROCESS = fixstk 20k $(DBGTARGET)
-DBGLDFLAGS = -B$(SYMLDPREFIX)
-DBGTARGET = $(VIMTARGET).sym
-
-
-# Default target is making the executable and then do the post processing
-all: $(VIMTARGET) $(TOOLS)
-	$(POSTPROCESS)
-
-debug: $(DBGTARGET)
-	$(DBGPOSTPROCESS)
-
-#################### include the Unix Makefile ###############
-
-include Makefile
-
-
-### (M)  MiNT with gcc 2.6.1 and gdb 3.5
-CC = gcc -mint
-CFLAGS = -g -O -Iproto
-
-$(DBGTARGET): $(OBJ) version.c version.h
-	$(CC) -c $(ALL_CFLAGS) version.c
-	$(CC) $(LDFLAGS) $(DBGLDFLAGS) -o $(DBGTARGET) -g $(OBJ) \
-		version.o $(ALL_LIBS)
diff --git a/src/digraph.c b/src/digraph.c
index d4175d5..7e6128d 100644
--- a/src/digraph.c
+++ b/src/digraph.c
@@ -35,73 +35,7 @@
  */
 static digr_T digraphdefault[] =
 
-#ifdef __MINT__
-	/*
-	 * ATARI digraphs
-	 */
-       {{'C', ',', 128},	// ~@ XX
-	{'u', '"', 129},	// 
-	{'e', '\'', 130},	// 
-	{'a', '^', 131},	// 
-	{'a', '"', 132},	// 
-	{'a', '`', 133},	// 
-	{'a', '@', 134},	// 
-	{'c', ',', 135},	// ~G XX
-	{'e', '^', 136},	// ~H XX
-	{'e', '"', 137},	// 
-	{'e', '`', 138},	// 
-	{'i', '"', 139},	// 
-	{'i', '^', 140},	// 
-	{'i', '`', 141},	// 
-	{'A', '"', 142},	// 
-	{'A', '@', 143},	// 
-	{'E', '\'', 144},	// 
-	{'a', 'e', 145},	// 
-	{'A', 'E', 146},	// 
-	{'o', '^', 147},	// 
-	{'o', '"', 148},	// 
-	{'o', '`', 149},	// 
-	{'u', '^', 150},	// 
-	{'u', '`', 151},	// 
-	{'y', '"', 152},	// 
-	{'O', '"', 153},	// 
-	{'U', '"', 154},	// 
-	{'c', '|', 155},	// 
-	{'$', '$', 156},	// 
-	{'Y', '-', 157},	// ~] XX
-	{'s', 's', 158},	// 
-	{'f', 'f', 159},	// 
-	{'a', '\'', 160},	//  
-	{'i', '\'', 161},	// ¡
-	{'o', '\'', 162},	// ¢
-	{'u', '\'', 163},	// £
-	{'n', '~', 164},	// ¤
-	{'N', '~', 165},	// ¥
-	{'a', 'a', 166},	// ¦
-	{'o', 'o', 167},	// §
-	{'~', '?', 168},	// ¨
-	{'-', 'a', 169},	// ©
-	{'a', '-', 170},	// ª
-	{'1', '2', 171},	// «
-	{'1', '4', 172},	// ¬
-	{'~', '!', 173},	// ­
-	{'<', '<', 174},	// ®
-	{'>', '>', 175},	// ¯
-	{'j', 'u', 230},	// æ
-	{'o', '/', 237},	// í
-	{'+', '-', 241},	// ñ
-	{'>', '=', 242},	// ò
-	{'<', '=', 243},	// ó
-	{':', '-', 246},	// ö
-	{'~', '~', 247},	// ÷
-	{'~', 'o', 248},	// ø
-	{'2', '2', 253},	// ý
-	{NUL, NUL, NUL}
-	};
-
-#else	// !__MINT__
-# ifdef HPUX_DIGRAPHS
-
+#ifdef HPUX_DIGRAPHS
 	/*
 	 * different HPUX digraphs
 	 */
@@ -203,9 +137,9 @@
 	{NUL, NUL, NUL}
 	};
 
-# else	// !HPUX_DIGRAPHS
+#else	// !HPUX_DIGRAPHS
 
-#  ifdef EBCDIC
+# ifdef EBCDIC
 
 	/*
 	 * EBCDIC - ISO digraphs
@@ -315,8 +249,8 @@
 	{NUL, NUL, NUL}
 	};
 
-#  else
-#   ifdef OLD_DIGRAPHS
+# else // EBCDIC
+#  ifdef OLD_DIGRAPHS
 
 	/*
 	 * digraphs compatible with Vim 5.x
@@ -423,7 +357,7 @@
 	{'y', '"', 255},	// x XX
 	{NUL, NUL, NUL}
 	};
-#   else // OLD_DIGRAPHS
+#  else // OLD_DIGRAPHS
 
 	/*
 	 * digraphs for Unicode from RFC1345
@@ -509,7 +443,7 @@
 	{'P', 'M', 0x9e},
 	{'A', 'C', 0x9f},
 	{'N', 'S', 0xa0},
-#define DG_START_LATIN 0xa1
+#   define DG_START_LATIN 0xa1
 	{'!', 'I', 0xa1},
 	{'~', '!', 0xa1},	// ¡ Vim 5.x compatible
 	{'C', 't', 0xa2},
@@ -658,7 +592,7 @@
 	{'y', ':', 0xff},
 	{'y', '"', 0xff},	// x XX  Vim 5.x compatible
 
-#	define USE_UNICODE_DIGRAPHS
+#   define USE_UNICODE_DIGRAPHS
 
 	{'A', '-', 0x0100},
 	{'a', '-', 0x0101},
@@ -833,7 +767,7 @@
 	{'\'', '0', 0x02da},
 	{'\'', ';', 0x02db},
 	{'\'', '"', 0x02dd},
-#define DG_START_GREEK 0x0386
+#   define DG_START_GREEK 0x0386
 	{'A', '%', 0x0386},
 	{'E', '%', 0x0388},
 	{'Y', '%', 0x0389},
@@ -915,7 +849,7 @@
 	{'p', '3', 0x03e1},
 	{'\'', '%', 0x03f4},
 	{'j', '3', 0x03f5},
-#define DG_START_CYRILLIC 0x0401
+#   define DG_START_CYRILLIC 0x0401
 	{'I', 'O', 0x0401},
 	{'D', '%', 0x0402},
 	{'G', '%', 0x0403},
@@ -1020,7 +954,7 @@
 	{'c', '3', 0x0481},
 	{'G', '3', 0x0490},
 	{'g', '3', 0x0491},
-#define DG_START_HEBREW 0x05d0
+#   define DG_START_HEBREW 0x05d0
 	{'A', '+', 0x05d0},
 	{'B', '+', 0x05d1},
 	{'G', '+', 0x05d2},
@@ -1048,7 +982,7 @@
 	{'R', '+', 0x05e8},
 	{'S', 'h', 0x05e9},
 	{'T', '+', 0x05ea},
-#define DG_START_ARABIC 0x060c
+#   define DG_START_ARABIC 0x060c
 	{',', '+', 0x060c},
 	{';', '+', 0x061b},
 	{'?', '+', 0x061f},
@@ -1111,7 +1045,7 @@
 	{'7', 'a', 0x06f7},
 	{'8', 'a', 0x06f8},
 	{'9', 'a', 0x06f9},
-#define DG_START_LATIN_EXTENDED 0x1e02
+#   define DG_START_LATIN_EXTENDED 0x1e02
 	{'B', '.', 0x1e02},
 	{'b', '.', 0x1e03},
 	{'B', '_', 0x1e06},
@@ -1206,7 +1140,7 @@
 	{'y', '2', 0x1ef7},
 	{'Y', '?', 0x1ef8},
 	{'y', '?', 0x1ef9},
-#define DG_START_GREEK_EXTENDED 0x1f00
+#   define DG_START_GREEK_EXTENDED 0x1f00
 	{';', '\'', 0x1f00},
 	{',', '\'', 0x1f01},
 	{';', '!', 0x1f02},
@@ -1215,7 +1149,7 @@
 	{'?', ',', 0x1f05},
 	{'!', ':', 0x1f06},
 	{'?', ':', 0x1f07},
-#define DG_START_PUNCTUATION 0x2002
+#   define DG_START_PUNCTUATION 0x2002
 	{'1', 'N', 0x2002},
 	{'1', 'M', 0x2003},
 	{'3', 'M', 0x2004},
@@ -1254,7 +1188,7 @@
 	{':', 'X', 0x203b},
 	{'\'', '-', 0x203e},
 	{'/', 'f', 0x2044},
-#define DG_START_SUB_SUPER 0x2070
+#   define DG_START_SUB_SUPER 0x2070
 	{'0', 'S', 0x2070},
 	{'4', 'S', 0x2074},
 	{'5', 'S', 0x2075},
@@ -1283,7 +1217,7 @@
 	{'=', 's', 0x208c},
 	{'(', 's', 0x208d},
 	{')', 's', 0x208e},
-#define DG_START_CURRENCY 0x20a4
+#   define DG_START_CURRENCY 0x20a4
 	{'L', 'i', 0x20a4},
 	{'P', 't', 0x20a7},
 	{'W', '=', 0x20a9},
@@ -1291,7 +1225,7 @@
 	{'E', 'u', 0x20ac}, // euro
 	{'=', 'R', 0x20bd}, // rouble
 	{'=', 'P', 0x20bd}, // rouble
-#define DG_START_OTHER1 0x2103
+#   define DG_START_OTHER1 0x2103
 	{'o', 'C', 0x2103},
 	{'c', 'o', 0x2105},
 	{'o', 'F', 0x2109},
@@ -1314,7 +1248,7 @@
 	{'3', '8', 0x215c},
 	{'5', '8', 0x215d},
 	{'7', '8', 0x215e},
-#define DG_START_ROMAN 0x2160
+#   define DG_START_ROMAN 0x2160
 	{'1', 'R', 0x2160},
 	{'2', 'R', 0x2161},
 	{'3', 'R', 0x2162},
@@ -1339,7 +1273,7 @@
 	{'a', 'r', 0x2179},
 	{'b', 'r', 0x217a},
 	{'c', 'r', 0x217b},
-#define DG_START_ARROWS 0x2190
+#   define DG_START_ARROWS 0x2190
 	{'<', '-', 0x2190},
 	{'-', '!', 0x2191},
 	{'-', '>', 0x2192},
@@ -1349,7 +1283,7 @@
 	{'<', '=', 0x21d0},
 	{'=', '>', 0x21d2},
 	{'=', '=', 0x21d4},
-#define DG_START_MATH 0x2200
+#   define DG_START_MATH 0x2200
 	{'F', 'A', 0x2200},
 	{'d', 'P', 0x2202},
 	{'T', 'E', 0x2203},
@@ -1407,7 +1341,7 @@
 	{'.', 'P', 0x22c5},
 	{':', '3', 0x22ee},
 	{'.', '3', 0x22ef},
-#define DG_START_TECHNICAL 0x2302
+#   define DG_START_TECHNICAL 0x2302
 	{'E', 'h', 0x2302},
 	{'<', '7', 0x2308},
 	{'>', '7', 0x2309},
@@ -1420,7 +1354,7 @@
 	{'I', 'l', 0x2321},
 	{'<', '/', 0x2329},
 	{'/', '>', 0x232a},
-#define DG_START_OTHER2 0x2423
+#   define DG_START_OTHER2 0x2423
 	{'V', 's', 0x2423},
 	{'1', 'h', 0x2440},
 	{'3', 'h', 0x2441},
@@ -1439,7 +1373,7 @@
 	{'7', '.', 0x248e},
 	{'8', '.', 0x248f},
 	{'9', '.', 0x2490},
-#define DG_START_DRAWING 0x2500
+#   define DG_START_DRAWING 0x2500
 	{'h', 'h', 0x2500},
 	{'H', 'H', 0x2501},
 	{'v', 'v', 0x2502},
@@ -1490,7 +1424,7 @@
 	{'V', 'H', 0x254b},
 	{'F', 'D', 0x2571},
 	{'B', 'D', 0x2572},
-#define DG_START_BLOCK 0x2580
+#   define DG_START_BLOCK 0x2580
 	{'T', 'B', 0x2580},
 	{'L', 'B', 0x2584},
 	{'F', 'B', 0x2588},
@@ -1499,7 +1433,7 @@
 	{'.', 'S', 0x2591},
 	{':', 'S', 0x2592},
 	{'?', 'S', 0x2593},
-#define DG_START_SHAPES 0x25a0
+#   define DG_START_SHAPES 0x25a0
 	{'f', 'S', 0x25a0},
 	{'O', 'S', 0x25a1},
 	{'R', 'O', 0x25a2},
@@ -1533,7 +1467,7 @@
 	{'I', 'c', 0x25d9},
 	{'F', 'd', 0x25e2},
 	{'B', 'd', 0x25e3},
-#define DG_START_SYMBOLS 0x2605
+#   define DG_START_SYMBOLS 0x2605
 	{'*', '2', 0x2605},
 	{'*', '1', 0x2606},
 	{'<', 'H', 0x261c},
@@ -1553,11 +1487,11 @@
 	{'M', 'b', 0x266d},
 	{'M', 'x', 0x266e},
 	{'M', 'X', 0x266f},
-#define DG_START_DINGBATS 0x2713
+#   define DG_START_DINGBATS 0x2713
 	{'O', 'K', 0x2713},
 	{'X', 'X', 0x2717},
 	{'-', 'X', 0x2720},
-#define DG_START_CJK_SYMBOLS 0x3000
+#   define DG_START_CJK_SYMBOLS 0x3000
 	{'I', 'S', 0x3000},
 	{',', '_', 0x3001},
 	{'.', '_', 0x3002},
@@ -1581,7 +1515,7 @@
 	{'(', 'I', 0x3016},
 	{')', 'I', 0x3017},
 	{'-', '?', 0x301c},
-#define DG_START_HIRAGANA 0x3041
+#   define DG_START_HIRAGANA 0x3041
 	{'A', '5', 0x3041},
 	{'a', '5', 0x3042},
 	{'I', '5', 0x3043},
@@ -1670,7 +1604,7 @@
 	{'0', '5', 0x309c},
 	{'*', '5', 0x309d},
 	{'+', '5', 0x309e},
-#define DG_START_KATAKANA 0x30a1
+#   define DG_START_KATAKANA 0x30a1
 	{'a', '6', 0x30a1},
 	{'A', '6', 0x30a2},
 	{'i', '6', 0x30a3},
@@ -1765,7 +1699,7 @@
 	{'-', '6', 0x30fc},
 	{'*', '6', 0x30fd},
 	{'+', '6', 0x30fe},
-#define DG_START_BOPOMOFO 0x3105
+#   define DG_START_BOPOMOFO 0x3105
 	{'b', '4', 0x3105},
 	{'p', '4', 0x3106},
 	{'m', '4', 0x3107},
@@ -1805,7 +1739,7 @@
 	{'v', '4', 0x312a},
 	{'n', 'G', 0x312b},
 	{'g', 'n', 0x312c},
-#define DG_START_OTHER3 0x3220
+#   define DG_START_OTHER3 0x3220
 	{'1', 'c', 0x3220},
 	{'2', 'c', 0x3221},
 	{'3', 'c', 0x3222},
@@ -1826,10 +1760,9 @@
 	{NUL, NUL, NUL}
        };
 
-#   endif // OLD_DIGRAPHS
-#  endif // EBCDIC
-# endif // !HPUX_DIGRAPHS
-#endif // !__MINT__
+#  endif // OLD_DIGRAPHS
+# endif // EBCDIC
+#endif // !HPUX_DIGRAPHS
 
 /*
  * handle digraphs after typing a character
diff --git a/src/fileio.c b/src/fileio.c
index e462310..189d4f4 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -13,7 +13,7 @@
 
 #include "vim.h"
 
-#if defined(__TANDEM) || defined(__MINT__)
+#if defined(__TANDEM)
 # include <limits.h>		// for SSIZE_MAX
 #endif
 #if defined(UNIX) && defined(FEAT_EVAL)
diff --git a/src/memfile.c b/src/memfile.c
index 4fe3294..ec65ceb 100644
--- a/src/memfile.c
+++ b/src/memfile.c
@@ -46,9 +46,6 @@
 #  include <sys/statfs.h>
 #  define STATFS statfs
 #  define F_BSIZE f_bsize
-#  ifdef __MINT__		// do we still need this?
-#   define fstatfs(fd, buf, len, nul) mch_fstat((fd), (buf))
-#  endif
 # endif
 #endif
 
diff --git a/src/os_mint.h b/src/os_mint.h
deleted file mode 100644
index 18bd78b..0000000
--- a/src/os_mint.h
+++ /dev/null
@@ -1,13 +0,0 @@
-/* vi:set ts=8 sts=4 sw=4 noet:
- *
- * VIM - Vi IMproved	by Bram Moolenaar
- *
- * Do ":help uganda"  in Vim to read copying and usage conditions.
- * Do ":help credits" in Vim to see a list of people who contributed.
- */
-
-/*
- * Atari MiNT Machine-dependent things.
- */
-
-#define BINARY_FILE_IO
diff --git a/src/os_unix.c b/src/os_unix.c
index a82256c..c9b3f92 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -3505,9 +3505,8 @@
 	// ~IXON disables CTRL-S stopping output, so that it can be mapped.
 	tnew.c_iflag &= ~(ICRNL | IXON);
 	tnew.c_lflag &= ~(ICANON | ECHO | ISIG | ECHOE
-# if defined(IEXTEN) && !defined(__MINT__)
+# if defined(IEXTEN)
 		    | IEXTEN	    // IEXTEN enables typing ^V on SOLARIS
-				    // but it breaks function keys on MINT
 # endif
 				);
 # ifdef ONLCR
diff --git a/src/term.c b/src/term.c
index 07acc11..3c0ca77 100644
--- a/src/term.c
+++ b/src/term.c
@@ -781,7 +781,7 @@
     {K_BS,		"\x7f"},	// for some reason 0177 doesn't work
 # endif
 
-# if defined(ALL_BUILTIN_TCAPS) || defined(__MINT__)
+# if defined(ALL_BUILTIN_TCAPS)
 /*
  * Ordinary vt52
  */
@@ -805,41 +805,8 @@
     {K_F1,		IF_EB("\033P", ESC_STR "P")},
     {K_F2,		IF_EB("\033Q", ESC_STR "Q")},
     {K_F3,		IF_EB("\033R", ESC_STR "R")},
-#  ifdef __MINT__
-    {(int)KS_CL,	IF_EB("\033E", ESC_STR "E")},
-    {(int)KS_VE,	IF_EB("\033e", ESC_STR "e")},
-    {(int)KS_VI,	IF_EB("\033f", ESC_STR "f")},
-    {(int)KS_SO,	IF_EB("\033p", ESC_STR "p")},
-    {(int)KS_SE,	IF_EB("\033q", ESC_STR "q")},
-    {K_S_UP,		IF_EB("\033a", ESC_STR "a")},
-    {K_S_DOWN,		IF_EB("\033b", ESC_STR "b")},
-    {K_S_LEFT,		IF_EB("\033d", ESC_STR "d")},
-    {K_S_RIGHT,		IF_EB("\033c", ESC_STR "c")},
-    {K_F4,		IF_EB("\033S", ESC_STR "S")},
-    {K_F5,		IF_EB("\033T", ESC_STR "T")},
-    {K_F6,		IF_EB("\033U", ESC_STR "U")},
-    {K_F7,		IF_EB("\033V", ESC_STR "V")},
-    {K_F8,		IF_EB("\033W", ESC_STR "W")},
-    {K_F9,		IF_EB("\033X", ESC_STR "X")},
-    {K_F10,		IF_EB("\033Y", ESC_STR "Y")},
-    {K_S_F1,		IF_EB("\033p", ESC_STR "p")},
-    {K_S_F2,		IF_EB("\033q", ESC_STR "q")},
-    {K_S_F3,		IF_EB("\033r", ESC_STR "r")},
-    {K_S_F4,		IF_EB("\033s", ESC_STR "s")},
-    {K_S_F5,		IF_EB("\033t", ESC_STR "t")},
-    {K_S_F6,		IF_EB("\033u", ESC_STR "u")},
-    {K_S_F7,		IF_EB("\033v", ESC_STR "v")},
-    {K_S_F8,		IF_EB("\033w", ESC_STR "w")},
-    {K_S_F9,		IF_EB("\033x", ESC_STR "x")},
-    {K_S_F10,		IF_EB("\033y", ESC_STR "y")},
-    {K_INS,		IF_EB("\033I", ESC_STR "I")},
-    {K_HOME,		IF_EB("\033E", ESC_STR "E")},
-    {K_PAGEDOWN,	IF_EB("\033b", ESC_STR "b")},
-    {K_PAGEUP,		IF_EB("\033a", ESC_STR "a")},
-#  else
     {(int)KS_CL,	IF_EB("\033H\033J", ESC_STR "H" ESC_STR_nc "J")},
     {(int)KS_MS,	"y"},
-#  endif
 # endif
 
 # if defined(UNIX) || defined(ALL_BUILTIN_TCAPS) || defined(SOME_BUILTIN_TCAPS)
@@ -1399,14 +1366,10 @@
 # define DEFAULT_TERM	(char_u *)"win32"
 #endif
 
-#if defined(UNIX) && !defined(__MINT__)
+#if defined(UNIX)
 # define DEFAULT_TERM	(char_u *)"ansi"
 #endif
 
-#ifdef __MINT__
-# define DEFAULT_TERM	(char_u *)"vt52"
-#endif
-
 #ifdef VMS
 # define DEFAULT_TERM	(char_u *)"vt320"
 #endif
diff --git a/src/version.c b/src/version.c
index 4727aeb..ce0a53e 100644
--- a/src/version.c
+++ b/src/version.c
@@ -755,6 +755,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1215,
+/**/
     1214,
 /**/
     1213,
diff --git a/src/vim.h b/src/vim.h
index a0fa629..1001117 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -264,10 +264,6 @@
 # include "os_win32.h"
 #endif
 
-#ifdef __MINT__
-# include "os_mint.h"
-#endif
-
 #if defined(MACOS_X)
 # include "os_mac.h"
 #endif
