diff --git a/runtime/doc/os_msdos.txt b/runtime/doc/os_msdos.txt
index bd996be..662403e 100644
--- a/runtime/doc/os_msdos.txt
+++ b/runtime/doc/os_msdos.txt
@@ -1,276 +1,15 @@
-*os_msdos.txt*  For Vim version 7.4.  Last change: 2005 Mar 29
+*os_msdos.txt*  For Vim version 7.4.  Last change: 2016 Feb 26
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
 
 
 					*msdos* *ms-dos* *MSDOS* *MS-DOS*
-This file contains the particularities for the MS-DOS version of Vim.
+This file used to contain the particularities for the MS-DOS version of Vim.
+MS-DOS support was removed in patch 7.4.1399.  If you want to use it you will
+need to get a version older than that.  Note that the MS-DOS version doesn't
+work, there is not enough memory.  The DOS32 version (using DJGPP) might still
+work on older systems.
 
-1. Two versions for MS-DOS	|msdos-versions|
-2. Known problems		|msdos-problems|
-3. Long file names		|msdos-longfname|
-4. Termcap codes		|msdos-termcap|
-5. Shifted arrow keys		|msdos-arrows|
-6. Filename extensions		|msdos-fname-extensions|
-7. Memory usage and limitations	|msdos-limitations|
-8. Symbolically linked files	|msdos-linked-files|
-9. Copy/paste in a dos box	|msdos-copy-paste|
-
-Additionally, there are a number of common Win32 and DOS items:
-File locations			|dos-locations|
-Using backslashes		|dos-backslash|
-Standard mappings		|dos-standard-mappings|
-Screen output and colors	|dos-colors|
-File formats			|dos-file-formats|
-:cd command			|dos-:cd|
-Interrupting			|dos-CTRL-Break|
-Temp files			|dos-temp-files|
-Shell option default		|dos-shell|
-
-For compiling Vim see src/INSTALL.pc.			*msdos-compiling*
-
-==============================================================================
-1. Two versions for MS-DOS				*msdos-versions*
-
-There are two versions of Vim that can be used with MS-DOS machines:
-
-							*dos16*
-Dos16 version	Can be used on any MS-DOS system, only uses up to 640 Kbyte of
-		memory.  Also runs on OS/2, Windows 95, and NT.  Excludes some
-		Vim-specific features (autocommands, syntax highlighting,
-		etc.).  Recommended for use on pre-386 machines.
-							*dos32*
-Dos32 version	Requires 386 processor and a |DPMI| driver, uses all
-		available memory.  Supports long file names and the Windows
-		clipboard, but NOT on Windows NT.  Recommended for MS-DOS,
-		Windows 3.1 and Windows 95.
-
-There are also two versions that run under Windows:
-Win32 version   Requires Windows 95 or Windows NT, uses all available
-		memory, supports long file names, etc.  Has some problems on
-		Windows 95.  Recommended for Windows NT.  See |os_win32.txt|
-Win32 GUI	Requirements like the Win32 version, but runs in its own
-		window, instead of a console.  Has scrollbars, menu, etc.
-		Recommended for Windows 95 and Windows NT.  See |gui-w32|.
-
-It is recommended to use the Dos32 or Win32 version.  Although the Dos16
-version is able to edit very big files, it quickly runs out of memory when
-making big changes.  Disabling undo helps: ":set ul=-1".  The screen updating
-of the Dos16 version is the fastest of the three on DOS or Windows 95; on
-Windows NT, the Win32 version is just as fast.
-
-								*DPMI*
-For the Dos32 version, you may need a DPMI driver when running in MS-DOS.  If
-you are running Windows or installed a clever memory manager, it will probably
-work already.  If you get the message "No DPMI", you need to install a DPMI
-driver.  Such a driver is included with the executable in CSDPMI4B.ZIP.  Run
-"cwsdpmi" just before starting Vim each time.  Or you might want to include
-"cwsdpmi -p" in your autoexec.bat to make it resident.  The latest version of
-"CSDPMI*.ZIP" can be obtained from: "ftp.neosoft.com:pub/users/s/sandmann".
-
-							*minimal-features*
-The 16 bit DOS version has been compiled with minimal features.  Check the
-|+feature-list| which ones are included (marked with a "T").
-You can include more features by editing feature.h and recompiling.
-
-==============================================================================
-2. Known problems					*msdos-problems*
-
-When using smartdrive (MS-DOS 6.x) with write-behind caching, it is possible
-that Vim will try to create a swap file on a read-only file system (e.g.
-write protected floppy).  You will then be given the message >
-	A serious disk error has occurred .., Retry (r)?
-There is nothing you can do but unprotect the floppy or switch off the
-computer.  Even CTRL-ALT-DEL will not get you out of this.  This is really a
-problem of smartdrive, not Vim.  Smartdrive works fine otherwise.  If this
-bothers you, don't use the write-behind caching.
-
-Vim can't read swap files that have been opened already, unless the "share"
-command has been used.  If you see stray warnings for existing swap files,
-include the "share" command in your config.sys or autoexec.bat (see your MSDOS
-documentation).
-
-The Dos16 version can only have about 10 files open (in a window or hidden) at
-one time.  With more files you will get error messages when trying to read or
-write a file, and for filter commands.  Or Vim runs out of memory, and random
-problems may result.
-
-The Dos32 version cannot have an unlimited number of files open at any one
-time.  The limit depends on the setting of FILES in your CONFIG.SYS.  This
-defaults to 15; if you need to edit a lot of files, you should increase this.
-If you do not set FILES high enough, you can get strange errors, and shell
-commands may cause a crash!
-
-The Dos32 version can work with long file names.  When doing file name
-completion, matches for the short file name will also be found.  But this will
-result in the corresponding long file name.  For example, if you have the long
-file name "this_is_a_test" with the short file name "this_i~1", the command
-":e *1" will start editing "this_is_a_test".
-
-When using the Dos32 version and you run into problems with DPMI support,
-check if there is a program in your config.sys that eats resources.  One
-program known to cause this problem is "netx", which says "NetWare v. 3.26
-Workstation shell".  Replace it with version 3.32 to fix the problem.
-
-The Dos32 version will parse its arguments to handle quotation.  This is good
-to edit a file with spaces in its name, for example: >
-	vim "program files\accessories\ppp.scp"
-A side effect is that single quotes are removed.  Insert a backslash to avoid
-that.  For example, to edit the file "fi'le.txt": >
-	vim fi\'le.txt
-
-==============================================================================
-3. Long file names					*msdos-longfname*
-
-If the Dos32 version is run on Windows 95, it can use long file names.  It
-will work by default.  If you want to disable this, use this setting:
-	set LFN=N
-You can put this in your autoexec.bat file.
-
-Note: If you have installed DJGPP on your machine, you probably have a
-"djgpp.env" file, which contains "LFN=n".  You need to use "LFN=Y" to switch
-on using long file names then.
-
-==============================================================================
-4. Termcap codes					*msdos-termcap*
-
-If you want to use another output method (e.g., when using a terminal on a COM
-port), set the terminal name to "pcansi".  You can change the termcap options
-when needed (see |terminal-options|).  Note that the
-normal IBM ansi.sys does not support all the codes of the builtin pcansi
-terminal.  If you use ansi.sys, you will need to delete the termcap entries
-t_al and t_dl with >
-   :set t_al= t_dl=
-Otherwise, the screen will not be updated correctly.  It is better to use
-nansi.sys, nnansi.sys, or the like instead of ansi.sys.
-
-If you want to use Vim on a terminal connected to a COM: port, reset the
-'bioskey' option.  Otherwise the commands will be read from the PC keyboard.
-CTRL-C and CTRL-P may not work correctly with 'bioskey' reset.
-
-==============================================================================
-5. Shifted arrow keys					*msdos-arrows*
-
-Use CTRL-arrow-left and CTRL-arrow-right instead of SHIFT-arrow-left and
-SHIFT-arrow-right.  The arrow-up and arrow-down cannot be used with SHIFT or
-CTRL.
-
-==============================================================================
-6. Filename extensions				*msdos-fname-extensions*
-
-MS-DOS allows for only one file name extension.  Therefore, when appending an
-extension, the '.' in the original file name is replaced with a '_', the name
-is truncated to 8 characters, and the new extension (e.g., ".swp") is
-appended.  Two examples: "test.c" becomes "test_c.bak", "thisisat.est"
-becomes "thisisat.bak".  To reduce these problems, the default for
-'backupext' is "~" instead of ".bak".  The backup file for "thisisat.est"
-then becomes "thisisat.es~".  The 'shortname' option is not available,
-because it would always be set.
-
-==============================================================================
-7. Memory usage and limitations			*msdos-limitations*
-
-A swap file is used to store most of the text.  You should be able to edit
-very large files.  However, memory is used for undo and other things.  If you
-delete a lot of text, you can still run out of memory in the Dos16 version.
-
-If Vim gives an "Out of memory" warning, you should stop editing.  The result
-of further editing actions is unpredictable.  Setting 'undolevels' to 0 saves
-some memory.  Running the maze macros on a big maze is guaranteed to run out
-of memory, because each change is remembered for undo.  In this case set
-'undolevels' to a negative number.  This will switch off undo completely.
-
-						*msdos-clipboard-limits*
-In the Dos32 version, extended memory is used to avoid these problems.
-However, if you are using the clipboard, you can still run into memory
-limitations because the Windows clipboard can only communicate with Vim using
-Dos memory.  This means that the largest amount of text that can be sent to
-or received from the Windows clipboard is limited by how much free Dos memory
-is available on your system.
-
-You can usually maximize the amount of available Dos memory by adding the
-following lines to Dos's "config.sys" file: >
-
-	DOS=HIGH,UMB
-	DEVICE=C:\WINDOWS\himem.sys
-	DEVICE=C:\WINDOWS\emm386.exe RAM
-
-Modifying config.sys in this way will also help to make more memory available
-for the Dos16 version, if you are using that.
-
-In the Dos16 version the line length is limited to about 32000 characters.
-When reading a file the lines are automatically split.  But editing a line
-in such a way that it becomes too long may give unexpected results.
-
-==============================================================================
-8. Symbolically linked files			*msdos-linked-files*
-
-When using Vim to edit a symbolically linked file on a unix NFS file server,
-you may run into problems.  When writing the file, Vim does not "write
-through" the symlink.  Instead, it deletes the symbolic link and creates a new
-file in its place.
-
-On Unix, Vim is prepared for links (symbolic or hard).  A backup copy of the
-original file is made and then the original file is overwritten.  This assures
-that all properties of the file remain the same.  On non-Unix systems, the
-original file is renamed and a new file is written.  Only the protection bits
-are set like the original file.  However, this doesn't work properly when
-working on an NFS-mounted file system where links and other things exist.  The
-only way to fix this in the current version is not making a backup file, by
-":set nobackup nowritebackup"	|'writebackup'|
-
-A similar problem occurs when mounting a Unix filesystem through Samba or a
-similar system.  When Vim creates a new file it will get the default user ID
-for the mounted file system.  This may be different from the original user ID.
-To avoid this set the 'backupcopy' option to "yes".
-
-==============================================================================
-9. Copy/paste in a dos box			*msdos-copy-paste*
-
-					*E450* *E451* *E452* *E453* *E454*
-The 32 bit version can copy/paste from/to the Windows clipboard directly.  Use
-the "* register.  Large amounts of text can be copied this way, but it must be
-possible to allocate memory for it, see |msdos-clipboard-limits|.  When moving
-text from one Vim to another, the type of the selection
-(characterwise/linewise/blockwise) is passed on.
-
-In other versions, the following can be used.
-
-(posted to comp.editors by John Velman <velman@igate1.hac.com>)
-
-How to copy/paste text from/to vim in a dos box:
-
-1) To get VIM to run in a window, instead of full screen, press alt+enter.
-   This toggles back and forth between full screen and a dos window.
-   NOTE: In Windows 95 you must have the property "Fast Pasting" unchecked!
-   In the properties dialog box for the MS-DOS window, go to "MS-DOS
-   Prompt/Misc/Fast pasting" and make sure that it is NOT checked.
-   To make this permanent, change the properties for
-   "\windows\system\conagent.exe" (from Philip Nelson, unverified).
-
-2) To paste something _into_ Vim, put Vim in insert mode.
-
-3) Put the text you want to paste on the windows clipboard.
-
-4) Click the control box in the upper left of the Vim window.  (This looks
-   like a big minus sign.)  If you don't want to use the mouse, you can get
-   this with alt+spacebar.
-5) On the resulting dropdown menu choose "Edit".
-6) On the child dropdown menu choose "Paste".
-
-To copy something from the Vim window to the clipboard,
-
-1) Select the control box to get the control drop down menu.
-2) Select "Edit".
-3) Select "Mark".
-4) Using either the keys or the mouse, select the part of the Vim window that
-   you want to copy.  To use the keys, use the arrow keys, and hold down shift
-   to extend the selection.
-5) When you've completed your selection, press 'enter'.  The selection
-   is now in the windows clipboard.  By the way, this can be any
-   rectangular selection, for example columns 4-25 in rows 7-10.  It can
-   include anything in the VIM window: the output of a :!dir, for
-   example.
 
  vim:tw=78:ts=8:ft=help:norl:
