]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 7.4.1399 v7.4.1399
authorBram Moolenaar <Bram@vim.org>
Tue, 23 Feb 2016 13:53:34 +0000 (14:53 +0100)
committerBram Moolenaar <Bram@vim.org>
Tue, 23 Feb 2016 13:53:34 +0000 (14:53 +0100)
Problem:    The MS-DOS code does not build.
Solution:   Remove the old MS-DOS code.

45 files changed:
Filelist
src/Make_bc3.mak [deleted file]
src/Make_bc5.mak
src/Make_djg.mak [deleted file]
src/Makefile
src/blowfish.c
src/buffer.c
src/diff.c
src/digraph.c
src/dosinst.h
src/eval.c
src/ex_cmds.c
src/ex_cmds2.c
src/ex_docmd.c
src/ex_getln.c
src/feature.h
src/fileio.c
src/getchar.c
src/globals.h
src/macros.h
src/main.c
src/mbyte.c
src/memfile.c
src/memline.c
src/misc1.c
src/misc2.c
src/netbeans.c
src/option.c
src/option.h
src/os_msdos.c [deleted file]
src/os_msdos.h [deleted file]
src/proto.h
src/proto/os_msdos.pro [deleted file]
src/regexp.c
src/screen.c
src/structs.h
src/syntax.c
src/term.c
src/undo.c
src/uninstal.c
src/version.c
src/vim.h
src/window.c
src/xxd/Make_bc3.mak [deleted file]
src/xxd/Make_djg.mak [deleted file]

index ddbce267f7758f3143c0a9b73e55424b6120aea9..c7bc515460d3720c1fd9a445c85910f1a19021fe 100644 (file)
--- a/Filelist
+++ b/Filelist
@@ -291,11 +291,9 @@ SRC_DOS =  \
                src/GvimExt/uninst.bat \
                README_srcdos.txt \
                src/INSTALLpc.txt \
-               src/Make_bc3.mak \
                src/Make_bc5.mak \
                src/Make_cyg.mak \
                src/Make_cyg_ming.mak \
-               src/Make_djg.mak \
                src/Make_ivc.mak \
                src/Make_dvc.mak \
                src/Make_ming.mak \
@@ -321,8 +319,6 @@ SRC_DOS =   \
                src/if_perl_msvc/stdbool.h \
                src/iid_ole.c \
                src/os_dos.h \
-               src/os_msdos.c \
-               src/os_msdos.h \
                src/os_w32dll.c \
                src/os_w32exe.c \
                src/os_win32.c \
@@ -330,7 +326,6 @@ SRC_DOS =   \
                src/os_win32.h \
                src/proto/gui_w32.pro \
                src/proto/if_ole.pro \
-               src/proto/os_msdos.pro \
                src/proto/os_win32.pro \
                src/proto/os_mswin.pro \
                src/testdir/Make_dos.mak \
@@ -345,9 +340,7 @@ SRC_DOS =   \
                src/vimtbar.h \
                src/xpm_w32.c \
                src/xpm_w32.h \
-               src/xxd/Make_bc3.mak \
                src/xxd/Make_bc5.mak \
-               src/xxd/Make_djg.mak \
                src/xxd/Make_ming.mak \
                src/xxd/Make_mvc.mak \
                nsis/gvim.nsi \
diff --git a/src/Make_bc3.mak b/src/Make_bc3.mak
deleted file mode 100644 (file)
index 0de7847..0000000
+++ /dev/null
@@ -1,184 +0,0 @@
-# Makefile for Borland C++ 3.1 or 4.0 to compile a 16 bit version of Vim.
-#
-# NOTE: THIS IS OLD AND PROBABLY NO LONGER WORKS.
-#
-# There are compilation options at the end of this file.
-#
-# Command line variables:
-# BOR          path to root of Borland C (E:\BORLANDC)
-# DEBUG                set to "yes" for debugging (no)
-# SPAWNO       path to the spawno library directory, empty if you do not have
-#              it; use 8.3 filenames! (C:\CC\SPAWN)
-
-.AUTODEPEND
-
-!ifndef BOR
-BOR = E:\BORLANDC
-!endif
-
-!if ("$(DEBUG)" == "yes")
-DEBUG_FLAG = -v
-!else
-DEBUG_FLAG =
-!endif
-
-CC = $(BOR)\bin\bcc.exe +VIM.CFG
-TLINK = $(BOR)\bin\tlink.exe
-
-!ifndef SPAWNO
-SPAWNO = C:\CC\SPAWN
-!endif
-
-!if ("$(SPAWNO)" == "")
-LIBPATH = $(BOR)\LIB
-INCLUDEPATH = $(BOR)\INCLUDE
-SPAWND =
-SPAWNL =
-!else
-LIBPATH = $(BOR)\LIB;$(SPAWNO)
-INCLUDEPATH = $(BOR)\INCLUDE;$(SPAWNO)
-SPAWND = ;SPAWNO
-SPAWNL = spawnl.lib
-!endif
-
-
-#              *Implicit Rules*
-#
-# use -v for debugging
-#
-.c.obj:
-       $(CC) -c $(DEBUG_FLAG) {$< }
-
-#              *List Macros*
-
-
-EXE_dependencies = \
-       blowfish.obj \
-       buffer.obj \
-       charset.obj \
-       crypt.obj \
-       crypt_zip.obj \
-       diff.obj \
-       digraph.obj \
-       edit.obj \
-       eval.obj \
-       ex_cmds.obj \
-       ex_cmds2.obj \
-       ex_docmd.obj \
-       ex_eval.obj \
-       ex_getln.obj \
-       fileio.obj \
-       fold.obj \
-       getchar.obj \
-       hardcopy.obj \
-       hashtab.obj \
-       json.obj \
-       main.obj \
-       mark.obj \
-       memfile.obj \
-       memline.obj \
-       menu.obj \
-       message.obj \
-       misc1.obj \
-       misc2.obj \
-       move.obj \
-       os_msdos.obj \
-       normal.obj \
-       ops.obj \
-       option.obj \
-       popupmnu.obj \
-       quickfix.obj \
-       regexp.obj \
-       screen.obj \
-       search.obj \
-       sha256.obj \
-       spell.obj \
-       syntax.obj \
-       tag.obj \
-       term.obj \
-       ui.obj \
-       undo.obj \
-       window.obj
-
-all: vim.exe install.exe uninstal.exe xxd/xxd.exe
-
-#              *Explicit Rules*
-
-vim.exe: vim.cfg $(EXE_dependencies) version.c
-       $(CC) $(DEBUG_FLAG) -c version.c
-       $(TLINK) /x/c/L$(LIBPATH) $(DEBUG_FLAG) @&&|
-c0l.obj $(EXE_dependencies) version.obj
-vim
-               # no map file
-$(SPAWNL) cl.lib
-|
-
-install.exe: dosinst.c
-       $(CC) -einstall $(DEBUG_FLAG) dosinst.c
-
-uninstal.exe: uninstal.c
-       $(CC) $(DEBUG_FLAG) uninstal.c
-
-# This may fail for older make versions, building xxd will fail anyway then.
-xxd/xxd.exe: xxd/xxd.c
-       cd xxd
-       $(MAKE) -f Make_bc3.mak BOR=$(BOR) DEBUG=$(DEBUG)
-       cd ..
-
-# cleaning up: Delete all generated files
-clean:
-       -del *.obj
-       -del vim.exe
-       -del vim.sym
-       -del install.exe
-       -del uninstal.exe
-       -del xxd\*.obj
-       -del xxd\xxd.exe
-       -del vim.cfg
-       -del testdir\*.out
-
-# Individual File Dependencies (incomplete)
-ex_docmd.obj: ex_docmd.c ex_cmds.h
-
-ex_eval.obj: ex_eval.c ex_cmds.h
-
-main.obj: main.c globals.h option.h
-
-term.obj: term.c term.h
-
-version.obj: version.c version.h
-
-
-# Compiler Configuration File
-#
-# The following compile options can be changed for better machines.
-#      replace -1- with -2 to produce code for a 80286 or higher
-#      replace -1- with -3 to produce code for a 80386 or higher
-#      add -v for source debugging
-vim.cfg: Make_bc3.mak
-       copy &&|
--ml
--1-
--f-
--C
--N
--O
--Z
--k-
--d
--h
--vi-
--H=VIM.SYM
--w-par
--weas
--wpre
--Iproto
--I$(INCLUDEPATH)
--L$(LIBPATH)
--DMSDOS;FEAT_TINY$(SPAWND)
-| vim.cfg
-
-test:
-       cd testdir
-       $(MAKE) -f Make_dos.mak small
-       cd ..
index cb48ce05a36575cc75c69ecfa2f2eb54b2cc8f30..012866be1cc481f2d6812853fa2560fa7c647375 100644 (file)
@@ -7,6 +7,7 @@
 #
 # Contributed by Ben Singer.
 # Updated 4/1997 by Ron Aaron
+#      2016: removed support for 16 bit DOS
 #      6/1997 - added support for 16 bit DOS
 #      Note: this has been tested, and works, for BC5.  Your mileage may vary.
 #      Has been reported NOT to work with BC 4.52.  Maybe it can be fixed?
@@ -34,8 +35,7 @@
 # name         value (default)
 #
 # BOR          path to root of Borland C install (c:\bc5)
-# LINK         name of the linker ($(BOR)\bin\ilink if OSTYPE is DOS16,
-#              $(BOR)\bin\ilink32 otherwise)
+# LINK         name of the linker ($(BOR)\bin\ilink32)
 # GUI          no or yes: set to yes if you want the GUI version (yes)
 # LUA     define to path to Lua dir to get Lua support (not defined)
 #   LUA_VER      define to version of Lua being used (51)
@@ -70,7 +70,6 @@
 # GETTEXT      no or yes: set to yes for multi-language support (yes)
 # ICONV                no or yes: set to yes for dynamic iconv support (yes)
 # OLE          no or yes: set to yes to make OLE gvim (no)
-# OSTYPE       DOS16 or WIN32 (WIN32)
 # DEBUG                no or yes: set to yes if you wish a DEBUGging build (no)
 # CODEGUARD    no or yes: set to yes if you want to use CODEGUARD (no)
 # CPUNR                1 through 6: select -CPU argument to compile with (3)
 # USEDLL       no or yes: set to yes to use the Runtime library DLL (no)
 #              For USEDLL=yes the cc3250.dll is required to run Vim.
 # VIMDLL       no or yes: create vim32.dll, and stub (g)vim.exe (no)
-# ALIGN                1, 2 or 4: Alignment to use (4 for Win32, 2 for DOS16)
+# ALIGN                1, 2 or 4: Alignment to use (4 for Win32)
 # FASTCALL     no or yes: set to yes to use register-based function protocol (yes)
 # OPTIMIZE     SPACE, SPEED, or MAXSPEED: type of optimization (MAXSPEED)
 # POSTSCRIPT   no or yes: set to yes for PostScript printing
-# FEATURES     TINY, SMALL, NORMAL, BIG or HUGE
-#              (BIG for WIN32, SMALL for DOS16)
+# FEATURES     TINY, SMALL, NORMAL, BIG or HUGE (BIG for WIN32)
 # WINVER       0x0400 or 0x0500: minimum Win32 version to support (0x0400)
 # CSCOPE       no or yes: include support for Cscope interface (yes)
 # NETBEANS     no or yes: include support for Netbeans interface; also
@@ -99,8 +97,7 @@
 BOR = c:\bc5
 !endif
 
-### LINK: Name of the linker: tlink or ilink32 (this is below, depends on
-# $(OSTYPE)
+### LINK: Name of the linker: ilink32 (this is below)
 
 ### GUI: yes for GUI version, no for console version
 !if ("$(GUI)"=="")
@@ -166,12 +163,6 @@ CHANNEL = yes
 ### OLE: no for normal gvim, yes for OLE-capable gvim (only works with GUI)
 #OLE = yes
 
-### OSTYPE: DOS16 for Windows 3.1 version, WIN32 for Windows 95/98/NT/2000
-#   version
-!if ("$(OSTYPE)"=="")
-OSTYPE = WIN32
-!endif
-
 ### DEBUG: Uncomment to make an executable for debugging
 # DEBUG = yes
 !if ("$(DEBUG)"=="yes")
@@ -208,14 +199,10 @@ USEDLL = no
 ### VIMDLL: yes for a DLL version of VIM (NOT RECOMMENDED), no otherwise
 #VIMDLL = yes
 
-### ALIGN: alignment you desire: (1,2 or 4: s/b 4 for Win32, 2 for DOS)
+### ALIGN: alignment you desire: (1,2 or 4: s/b 4 for Win32)
 !if ("$(ALIGN)"=="")
-!if ($(OSTYPE)==DOS16)
-ALIGN = 2
-!else
 ALIGN = 4
 !endif
-!endif
 
 ### FASTCALL: yes to use FASTCALL calling convention (RECOMMENDED!), no otherwise
 #   Incompatible when calling external functions (like MSVC-compiled DLLs), so
@@ -239,13 +226,9 @@ FASTCALL = yes
 OPTIMIZE = MAXSPEED
 !endif
 
-### FEATURES: TINY, SMALL, NORMAL, BIG or HUGE (BIG for WIN32, SMALL for DOS16)
+### FEATURES: TINY, SMALL, NORMAL, BIG or HUGE (BIG for WIN32)
 !if ("$(FEATURES)"=="")
-! if ($(OSTYPE)==DOS16)
-FEATURES = SMALL
-! else
 FEATURES = BIG
-! endif
 !endif
 
 ### POSTSCRIPT: uncomment this line if you want PostScript printing
@@ -266,24 +249,7 @@ WINVER = 0x0400
 # Sanity checks for the above options:
 #
 
-!if ($(OSTYPE)==DOS16)
-!if (($(CPUNR)+0)>4)
-!error CPUNR Must be less than or equal to 4 for DOS16
-!endif
-
-!if (($(ALIGN)+0)>2)
-!error ALIGN Must be less than or equal to 2 for DOS16
-!endif
-
-!else  # not DOS16
-!if (($(CPUNR)+0)<3)
-!error CPUNR Must be greater or equal to 3 for WIN32
-!endif
-!endif
-
-!if ($(OSTYPE)!=WIN32) && ($(OSTYPE)!=DOS16)
-!error Check the OSTYPE variable again: $(OSTYPE) is not supported!
-!endif
+OSTYPE = WIN32
 
 #
 # Optimizations: change as desired (RECOMMENDATION: Don't change!):
@@ -305,11 +271,6 @@ OPT = $(OPT) -pr
 OPT = $(OPT) -vi-
 !endif
 !endif
-!if ($(OSTYPE)==DOS16)
-!undef GUI
-!undef VIMDLL
-!undef USEDLL
-!endif
 # shouldn't have to change:
 LIB = $(BOR)\lib
 INCLUDE = $(BOR)\include;.;proto
@@ -483,16 +444,9 @@ TARGET = vimd.exe
 # for now, anyway: VIMDLL is only for the GUI version
 TARGET = vim.exe
 !endif
-!if ($(OSTYPE)==DOS16)
-DEFINES= -DFEAT_$(FEATURES) -DMSDOS
-EXETYPE=-ml
-STARTUPOBJ = c0l.obj
-LINK2 =
-!else
 EXETYPE=-WC
 STARTUPOBJ = c0x32.obj
 LINK2 = -ap -OS -o -P
-!endif
 RESFILE = vim.res
 !endif
 
@@ -545,16 +499,6 @@ DEFINES = $(DEFINES) -DMSWINPS
 ##### BASE COMPILER/TOOLS RULES #####
 MAKE = $(BOR)\bin\make
 CFLAGS = -w-aus -w-par -w-pch -w-ngu -w-csu -I$(INCLUDE)
-!if ($(OSTYPE)==DOS16)
-BRC =
-!if ("$(LINK)"=="")
-LINK   = $(BOR)\BIN\TLink
-!endif
-CC   = $(BOR)\BIN\Bcc
-LFLAGS = -Tde -c -m -L$(LIB) $(DEBUG_FLAG) $(LINK2)
-LFLAGSDLL  =
-CFLAGS = $(CFLAGS) -H- $(HEADERS)
-!else
 BRC = $(BOR)\BIN\brc32
 !if ("$(LINK)"=="")
 LINK   = $(BOR)\BIN\ILink32
@@ -563,7 +507,6 @@ CC   = $(BOR)\BIN\Bcc32
 LFLAGS = -OS -Tpe -c -m -L$(LIB) $(DEBUG_FLAG) $(LINK2)
 LFLAGSDLL  = -Tpd -c -m -L$(LIB) $(DEBUG_FLAG) $(LINK2)
 CFLAGS = $(CFLAGS) -d -RT- -k- -Oi $(HEADERS) -f-
-!endif
 
 CC1 = -c
 CC2 = -o
@@ -583,8 +526,6 @@ CCARG = +$(OBJDIR)\bcc.cfg
 .cpp.obj:
        $(CC) $(CCARG) $(CC1) $(CC2)$@ $*.cpp
 
-!if ($(OSTYPE)==DOS16)
-!else # win32:
 vimmain = \
        $(OBJDIR)\os_w32exe.obj
 !if ("$(VIMDLL)"=="yes")
@@ -594,7 +535,6 @@ vimwinmain = \
 vimwinmain = \
        $(OBJDIR)\os_w32exe.obj
 !endif
-!endif
 
 vimobj =  \
        $(OBJDIR)\blowfish.obj \
@@ -720,13 +660,8 @@ vimobj = $(vimobj) \
        $(OBJDIR)\gui_w32.obj
 !endif
 
-!if ($(OSTYPE)==WIN32)
 vimobj = $(vimobj) \
        $(OBJDIR)\os_win32.obj $(OBJDIR)\os_mswin.obj $(OBJDIR)\winclip.obj
-!elif ($(OSTYPE)==DOS16)
-vimobj = $(vimobj) \
-       $(OBJDIR)\os_msdos.obj
-!endif
 # Blab what we are going to do:
 MSG = Compiling $(OSTYPE) $(TARGET) $(OLETARGET), with:
 !if ("$(GUI)"=="yes")
@@ -818,14 +753,10 @@ MSG = $(MSG) Align=$(ALIGNARG)
 
 !message $(MSG)
 
-!if ($(OSTYPE)==DOS16)
-TARGETS = $(TARGET)
-!else
 !if ("$(VIMDLL)"=="yes")
 TARGETS = $(DLLTARGET)
 !endif
 TARGETS = $(TARGETS) $(TARGET)
-!endif
 
 # Targets:
 all: vim vimrun.exe install.exe xxd uninstal.exe GvimExt/gvimext.dll
@@ -851,18 +782,10 @@ GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h
        cd ..
 
 install.exe: dosinst.c $(OBJDIR)\bcc.cfg
-!if ($(OSTYPE)==WIN32)
        $(CC) $(CCARG) -WC -DWIN32 -einstall dosinst.c
-!else
-       $(CC) $(CCARG) -WC -einstall dosinst.c
-!endif
 
 uninstal.exe: uninstal.c $(OBJDIR)\bcc.cfg
-!if ($(OSTYPE)==WIN32)
        $(CC) $(CCARG) -WC -DWIN32 -O2 -euninstal uninstal.c
-!else
-       $(CC) $(CCARG) -WC -O2 -euninstal uninstal.c
-!endif
 
 clean:
 !if "$(OS)" == "Windows_NT"
@@ -923,10 +846,7 @@ $(DLLTARGET): $(OBJDIR) $(vimdllobj)
        cg32.lib+
 !endif
 # $(OSTYPE)==WIN32 causes os_mswin.c compilation. FEAT_SHORTCUT in it needs OLE
-!if ("$(OLE)"=="yes" || $(OSTYPE)==WIN32)
        ole2w32.lib +
-!endif
-!if ($(OSTYPE)==WIN32)
        import32.lib+
 !ifdef LUA
        $(LUA_LIB_FLAG)lua.lib+
@@ -955,9 +875,6 @@ $(DLLTARGET): $(OBJDIR) $(vimdllobj)
        cw32.lib
 !endif
        vim.def
-!else
-       cl.lib
-!endif
 |
 
 !if ("$(VIMDLL)"=="yes")
@@ -974,14 +891,11 @@ $(TARGET): $(OBJDIR) $(vimobj) $(OBJDIR)\$(RESFILE)
        $(vimobj)
 !endif
        $<,$*
-!if ($(OSTYPE)==WIN32)
 !if ("$(CODEGUARD)"=="yes")
        cg32.lib+
 !endif
 # $(OSTYPE)==WIN32 causes os_mswin.c compilation. FEAT_SHORTCUT in it needs OLE
-!if ("$(OLE)"=="yes" || $(OSTYPE)==WIN32)
        ole2w32.lib +
-!endif
        import32.lib+
 !ifdef LUA
        $(LUA_LIB_FLAG)lua.lib+
@@ -1011,9 +925,6 @@ $(TARGET): $(OBJDIR) $(vimobj) $(OBJDIR)\$(RESFILE)
 !endif
 
        $(OBJDIR)\$(RESFILE)
-!else
-       emu.lib + cl.lib
-!endif
 |
 
 test:
diff --git a/src/Make_djg.mak b/src/Make_djg.mak
deleted file mode 100644 (file)
index 5b77b5c..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-#
-# Makefile for VIM on MSDOS, using DJGPP 2.0
-#
-# NOTE: THIS IS OLD AND PROBABLY NO LONGER WORKS.
-#
-
-#>>>>> choose options:
-
-### See feature.h for a list of optionals.
-### Any other defines can be included here.
-
-DEFINES =
-
-#>>>>> name of the compiler and linker, name of lib directory
-CC = gcc
-
-#>>>>> end of choices
-###########################################################################
-
-INCL = vim.h globals.h option.h keymap.h macros.h ascii.h term.h os_msdos.h structs.h
-CFLAGS = -O2 -DMSDOS -Iproto $(DEFINES) -Wall -Dinterrupt= -Dfar= -DMAXMEM=512 -D_NAIVE_DOS_REGS
-
-OBJ = \
-       obj/blowfish.o \
-       obj/buffer.o \
-       obj/charset.o \
-       obj/crypt.o \
-       obj/crypt_zip.o \
-       obj/diff.o \
-       obj/digraph.o \
-       obj/edit.o \
-       obj/eval.o \
-       obj/ex_cmds.o \
-       obj/ex_cmds2.o \
-       obj/ex_docmd.o \
-       obj/ex_eval.o \
-       obj/ex_getln.o \
-       obj/fileio.o \
-       obj/fold.o \
-       obj/getchar.o \
-       obj/hardcopy.o \
-       obj/hashtab.o \
-       obj/main.o \
-       obj/mark.o \
-       obj/memfile.o \
-       obj/memline.o \
-       obj/menu.o \
-       obj/message.o \
-       obj/misc1.o \
-       obj/misc2.o \
-       obj/move.o \
-       obj/mbyte.o \
-       obj/normal.o \
-       obj/ops.o \
-       obj/option.o \
-       obj/os_msdos.o \
-       obj/popupmnu.o \
-       obj/quickfix.o \
-       obj/regexp.o \
-       obj/screen.o \
-       obj/search.o \
-       obj/sha256.o \
-       obj/spell.o \
-       obj/syntax.o \
-       obj/tag.o \
-       obj/term.o \
-       obj/ui.o \
-       obj/undo.o \
-       obj/window.o \
-       $(TERMLIB)
-
-all: vim.exe install.exe uninstal.exe xxd/xxd.exe
-
-# version.c is compiled each time, so that it sets the build time.
-vim.exe: obj $(OBJ) version.c version.h
-       $(CC) $(CFLAGS) -s -o vim.exe version.c $(OBJ) -lpc
-
-install.exe: dosinst.c
-       $(CC) $(CFLAGS) -s -o install.exe dosinst.c -lpc
-
-uninstal.exe: uninstal.c
-       $(CC) $(CFLAGS) -s -o uninstal.exe uninstal.c -lpc
-
-# This requires GNU make.
-xxd/xxd.exe: xxd/xxd.c
-       $(MAKE) --directory=xxd -f Make_djg.mak
-
-obj:
-       mkdir obj
-
-tags:
-       command /c ctags *.c $(INCL) ex_cmds.h
-
-clean:
-       -del obj\*.o
-       -rmdir obj
-       -del vim.exe
-       -del install.exe
-       -del xxd\xxd.exe
-       -del testdir\*.out
-
-# This requires GNU make.
-test:
-       $(MAKE) --directory=testdir -f Make_dos.mak
-
-###########################################################################
-
-obj/%.o: %.c obj $(INCL)
-       $(CC) -c $(CFLAGS) -o $@ $<
-
-# Extra dependency (there are actually many more...)
-obj/ex_docmd.o:        ex_cmds.h
index 13c7bc6041865e662443e12e83a0f74dc2e58419..1326cf06efb0be2ac8e0e68993ebe44e168545ca 100644 (file)
@@ -908,7 +908,7 @@ SANITIZER_LIBS = $(SANITIZER_CFLAGS)
 ### after changing this, you need to do "make reconfig".
 #CONF_TERM_LIB = --with-tlib=ncurses
 
-### For GCC on MSDOS, the ".exe" suffix will be added.
+### For GCC on MS-Windows, the ".exe" suffix will be added.
 #EXEEXT = .exe
 #LNKEXT = .exe
 
@@ -1715,7 +1715,7 @@ PRO_AUTO = \
 # Resources used for the Mac are in one directory.
 RSRC_DIR = os_mac_rsrc
 
-PRO_MANUAL = os_amiga.pro os_msdos.pro os_win32.pro \
+PRO_MANUAL = os_amiga.pro os_win32.pro \
        os_mswin.pro winclip.pro os_beos.pro os_vms.pro $(PERL_PRO)
 
 # Default target is making the executable and tools
@@ -1836,7 +1836,7 @@ update-po:
 # Generate function prototypes.  This is not needed to compile vim, but if
 # you want to use it, cproto is out there on the net somewhere -- Webb
 #
-# When generating os_amiga.pro, os_msdos.pro and os_win32.pro there will be a
+# When generating os_amiga.pro and os_win32.pro there will be a
 # few include files that can not be found, that's OK.
 
 proto: $(PRO_AUTO) $(PRO_MANUAL)
@@ -1864,10 +1864,6 @@ os_amiga.pro: os_amiga.c
        $(CPROTO) -DAMIGA -UHAVE_CONFIG_H -DBPTR=char* $< > proto/$@
        echo "/* vim: set ft=c : */" >> proto/$@
 
-os_msdos.pro: os_msdos.c
-       $(CPROTO) -DMSDOS -UHAVE_CONFIG_H $< > proto/$@
-       echo "/* vim: set ft=c : */" >> proto/$@
-
 os_win32.pro: os_win32.c
        $(CPROTO) -DWIN32 -UHAVE_CONFIG_H $< > proto/$@
        echo "/* vim: set ft=c : */" >> proto/$@
index d24aa2c745fe804f68de7980fa8832e1c66acb76..37d5a554c1698013493376181db07847d29e0c9a 100644 (file)
@@ -34,7 +34,7 @@ typedef union {
     char_u   uc[8];
 } block8;
 
-#if defined(WIN3264) || defined(DOS32)
+#if defined(WIN3264)
   /* MS-Windows is always little endian */
 #else
 # ifdef HAVE_CONFIG_H
index 9f61eefd1cd2628a9a735fec7ea4adcbce5451df..89dedc58f92b9207abd4983bf53ece331ac6f0d2 100644 (file)
@@ -541,9 +541,7 @@ buf_clear_file(buf_T *buf)
 {
     buf->b_ml.ml_line_count = 1;
     unchanged(buf, TRUE);
-#ifndef SHORT_FNAME
     buf->b_shortname = FALSE;
-#endif
     buf->b_p_eol = TRUE;
     buf->b_start_eol = TRUE;
 #ifdef FEAT_MBYTE
@@ -2911,9 +2909,7 @@ setfname(
     }
 #endif
 
-#ifndef SHORT_FNAME
     buf->b_shortname = FALSE;
-#endif
 
     buf_name_changed(buf);
     return OK;
@@ -4480,7 +4476,7 @@ fix_fname(char_u  *fname)
 # ifdef BACKSLASH_IN_FILENAME
            || strstr((char *)fname, "\\\\") != NULL
 # endif
-# if defined(MSWIN) || defined(DJGPP)
+# if defined(MSWIN)
            || vim_strchr(fname, '~') != NULL
 # endif
            )
index db1d066f968086d750db87f499d0e084007ab707..be7e38ccbeaf8abb6962082f0bb228433b3f997c 100644 (file)
@@ -29,7 +29,7 @@ static int    diff_flags = DIFF_FILLER;
 
 static int diff_a_works = MAYBE; /* TRUE when "diff -a" works, FALSE when it
                                    doesn't work, MAYBE when not checked yet */
-#if defined(MSWIN) || defined(MSDOS)
+#if defined(MSWIN)
 static int diff_bin_works = MAYBE; /* TRUE when "diff --binary" works, FALSE
                                      when it doesn't work, MAYBE when not
                                      checked yet */
@@ -733,7 +733,7 @@ ex_diffupdate(
            break;
 #endif
 
-#if defined(MSWIN) || defined(MSDOS)
+#if defined(MSWIN)
        /* If the "-a" argument works, also check if "--binary" works. */
        if (ok && diff_a_works == MAYBE && diff_bin_works == MAYBE)
        {
@@ -764,7 +764,7 @@ ex_diffupdate(
            EMSG(_("E810: Cannot read or write temp files"));
        EMSG(_("E97: Cannot create diffs"));
        diff_a_works = MAYBE;
-#if defined(MSWIN) || defined(MSDOS)
+#if defined(MSWIN)
        diff_bin_works = MAYBE;
 #endif
        goto theend;
@@ -845,7 +845,7 @@ diff_file(
             * non-zero when differences have been found. */
            vim_snprintf((char *)cmd, len, "diff %s%s%s%s%s %s",
                    diff_a_works == FALSE ? "" : "-a ",
-#if defined(MSWIN) || defined(MSDOS)
+#if defined(MSWIN)
                    diff_bin_works == TRUE ? "--binary " : "",
 #else
                    "",
index 2195d644a48fedc2db5914d1d9b7e565d12c95b0..5dab51b20fcfd484b1c7a6e81d19a046386b2562 100644 (file)
@@ -39,74 +39,7 @@ static garray_T      user_digraphs = {0, 0, (int)sizeof(digr_T), 10, NULL};
  * compilers cannot handle them (Amiga SAS/C is the most picky one).
  */
 static digr_T digraphdefault[] =
-#if defined(MSDOS)
-       /*
-        * MSDOS digraphs.
-        */
-       {{'C', ',', 128},       /* ~@ XX */
-       {'u', '"', 129},        /* \81 */
-       {'e', '\'', 130},       /* \82 */
-       {'a', '^', 131},        /* \83 */
-       {'a', '"', 132},        /* \84 */
-       {'a', '`', 133},        /* \85 */
-       {'a', '@', 134},        /* \86 */
-       {'c', ',', 135},        /* ~G XX */
-       {'e', '^', 136},        /* ~H XX */
-       {'e', '"', 137},        /* \89 */
-       {'e', '`', 138},        /* \8a */
-       {'i', '"', 139},        /* \8b */
-       {'i', '^', 140},        /* \8c */
-       {'i', '`', 141},        /* \8d */
-       {'A', '"', 142},        /* ~N XX */
-       {'A', '@', 143},        /* \8f */
-       {'E', '\'', 144},       /* \90 */
-       {'a', 'e', 145},        /* \91 */
-       {'A', 'E', 146},        /* \92 */
-       {'o', '^', 147},        /* \93 */
-       {'o', '"', 148},        /* \94 */
-       {'o', '`', 149},        /* \95 */
-       {'u', '^', 150},        /* \96 */
-       {'u', '`', 151},        /* \97 */
-       {'y', '"', 152},        /* \98 */
-       {'O', '"', 153},        /* \99 */
-       {'U', '"', 154},        /* \9a */
-       {'c', '|', 155},        /* \9b */
-       {'$', '$', 156},        /* \9c */
-       {'Y', '-', 157},        /* ~] XX */
-       {'P', 't', 158},        /* \9e */
-       {'f', 'f', 159},        /* \9f */
-       {'a', '\'', 160},       /* Â  */
-       {'i', '\'', 161},       /* Â¡ */
-       {'o', '\'', 162},       /* Â¢ */
-       {'u', '\'', 163},       /* x XX */
-       {'n', '~', 164},        /* Â¤ */
-       {'N', '~', 165},        /* Â¥ */
-       {'a', 'a', 166},        /* Â¦ */
-       {'o', 'o', 167},        /* Â§ */
-       {'~', '?', 168},        /* Â¨ */
-       {'-', 'a', 169},        /* Â© */
-       {'a', '-', 170},        /* Âª */
-       {'1', '2', 171},        /* Â« */
-       {'1', '4', 172},        /* Â¬ */
-       {'~', '!', 173},        /* Â­ */
-       {'<', '<', 174},        /* Â® */
-       {'>', '>', 175},        /* Â¯ */
-
-       {'s', 's', 225},        /* Ã¡ */
-       {'j', 'u', 230},        /* Ã¦ */
-       {'o', '/', 237},        /* Ã­ */
-       {'+', '-', 241},        /* Ã± */
-       {'>', '=', 242},        /* Ã² */
-       {'<', '=', 243},        /* Ã³ */
-       {':', '-', 246},        /* Ã¶ */
-       {'~', '~', 247},        /* Ã· */
-       {'~', 'o', 248},        /* Ã¸ */
-       {'2', '2', 253},        /* Ã½ */
-       {NUL, NUL, NUL}
-       };
-
-#else  /* !MSDOS */
-# ifdef __MINT__
+#ifdef __MINT__
 
        /*
         * ATARI digraphs
@@ -171,8 +104,8 @@ static digr_T digraphdefault[] =
        {NUL, NUL, NUL}
        };
 
-# else /* !__MINT__ */
-#  ifdef HPUX_DIGRAPHS
+#else  /* !__MINT__ */
+# ifdef HPUX_DIGRAPHS
 
        /*
         * different HPUX digraphs
@@ -275,9 +208,9 @@ static digr_T digraphdefault[] =
        {NUL, NUL, NUL}
        };
 
-#  else        /* !HPUX_DIGRAPHS */
+# else /* !HPUX_DIGRAPHS */
 
-#   ifdef EBCDIC
+#  ifdef EBCDIC
 
        /*
         * EBCDIC - ISO digraphs
@@ -387,8 +320,8 @@ static digr_T digraphdefault[] =
        {NUL, NUL, NUL}
        };
 
-#   else
-#    if defined(MACOS) && !defined(FEAT_MBYTE)
+#  else
+#   if defined(MACOS) && !defined(FEAT_MBYTE)
 
        /*
         * Macintosh digraphs
@@ -516,9 +449,9 @@ static digr_T digraphdefault[] =
        {NUL, NUL, NUL}
        };
 
-#    else      /* !MACOS */
+#   else       /* !MACOS */
 
-#     ifdef OLD_DIGRAPHS
+#    ifdef OLD_DIGRAPHS
 
        /*
         * digraphs compatible with Vim 5.x
@@ -625,7 +558,7 @@ static digr_T digraphdefault[] =
        {'y', '"', 255},        /* x XX */
        {NUL, NUL, NUL}
        };
-#     else /* OLD_DIGRAPHS */
+#    else /* OLD_DIGRAPHS */
 
        /*
         * digraphs for Unicode from RFC1345
@@ -2001,13 +1934,12 @@ static digr_T digraphdefault[] =
        {NUL, NUL, NUL}
        };
 
-#     endif /* OLD_DIGRAPHS */
+#    endif /* OLD_DIGRAPHS */
 
-#    endif /* Macintosh */
-#   endif /* EBCDIC */
-#  endif    /* !HPUX_DIGRAPHS */
-# endif        /* !__MINT__ */
-#endif /* !MSDOS */
+#   endif /* Macintosh */
+#  endif /* EBCDIC */
+# endif    /* !HPUX_DIGRAPHS */
+#endif /* !__MINT__ */
 
 /*
  * handle digraphs after typing a character
index 97d83d9700e576ee403e1da6606330f2512235e5..b73f0975b9f102b51710056836aec6d8a5e28364 100644 (file)
 char *searchpath(char *name);
 #endif
 
-#if defined(DJGPP) || defined(UNIX_LINT)
+#if defined(UNIX_LINT)
 # include <unistd.h>
 # include <errno.h>
 #endif
 
 #include "version.h"
 
-#if defined(DJGPP) || defined(UNIX_LINT)
+#if defined(UNIX_LINT)
 # define vim_mkdir(x, y) mkdir((char *)(x), y)
 #else
 # if defined(WIN3264) && !defined(__BORLANDC__)
@@ -63,9 +63,7 @@ char *searchpath(char *name);
 # endif
 #endif
 
-#ifndef DJGPP
-# define sleep(n) Sleep((n) * 1000)
-#endif
+#define sleep(n) Sleep((n) * 1000)
 
 /* ---------------------------------------- */
 
@@ -423,9 +421,7 @@ run_command(char *cmd)
     char       *p;
 
     /* On WinNT, 'start' is a shell built-in for cmd.exe rather than an
-     * executable (start.exe) like in Win9x.  DJGPP, being a DOS program,
-     * is given the COMSPEC command.com by WinNT, so we have to find
-     * cmd.exe manually and use it. */
+     * executable (start.exe) like in Win9x. */
     cmd_path = searchpath_save("cmd.exe");
     if (cmd_path != NULL)
     {
@@ -640,14 +636,6 @@ char       *sysdrive;              /* system drive or "c:\" */
     static void
 do_inits(char **argv)
 {
-#ifdef DJGPP
-    /*
-     * Use Long File Names by default, if $LFN not set.
-     */
-    if (getenv("LFN") == NULL)
-       putenv("LFN=y");
-#endif
-
     /* Find out the full path of our executable. */
     if (my_fullpath(installdir, argv[0], BUFSIZE) == NULL)
     {
index 341199c17f7bd719cd914af87de946c63a8bf602..3b1172ecd8879c991c4adbc0672b7d419bfb64de 100644 (file)
@@ -13503,13 +13503,6 @@ f_has(typval_T *argvars, typval_T *rettv)
 #ifdef __BEOS__
        "beos",
 #endif
-#ifdef MSDOS
-# ifdef DJGPP
-       "dos32",
-# else
-       "dos16",
-# endif
-#endif
 #ifdef MACOS
        "mac",
 #endif
index 78d9f95613e6967c744f826b5c1df69503559a78..a2186b2b61a18f68a2bc7c587158966ab74fe67d 100644 (file)
@@ -1925,14 +1925,10 @@ write_viminfo(char_u *file, int forceit)
 #ifdef UNIX
                                    shortname,
 #else
-# ifdef SHORT_FNAME
-                                   TRUE,
-# else
-#  ifdef FEAT_GUI_W32
+# ifdef FEAT_GUI_W32
                                    gui_is_win32s(),
-#  else
+# else
                                    FALSE,
-#  endif
 # endif
 #endif
                                    fname,
index e105fa00ba8a3825fa45ba09f8513de5eb9bdeb2..ec20daaeb15a802c8333b7af0ff2f0b775deb1b1 100644 (file)
@@ -4256,8 +4256,7 @@ get_locale_val(int what)
 {
     char_u     *loc;
 
-    /* Obtain the locale value from the libraries.  For DJGPP this is
-     * redefined and it doesn't use the arguments. */
+    /* Obtain the locale value from the libraries. */
     loc = (char_u *)setlocale(what, NULL);
 
 # ifdef WIN32
index 1321b7fd66770dd87206e47febc432fe27059d46..1f493ad1e6d72e31b2f2111cc915dc6f167e8177 100644 (file)
@@ -3758,7 +3758,7 @@ set_one_cmd_context(
 
        /* Check for environment variable */
        if (*xp->xp_pattern == '$'
-#if defined(MSDOS) || defined(MSWIN)
+#if defined(MSWIN)
                || *xp->xp_pattern == '%'
 #endif
                )
index a0c9877243bd4acb13682e2455a883dc9bea9a21..6741e1119cabc39f526c4e6700dd4a43c96d1c01 100644 (file)
@@ -4918,7 +4918,7 @@ expand_shellcmd(
        if (*s == ' ')
            ++s;        /* Skip space used for absolute path name. */
 
-#if defined(MSDOS) || defined(MSWIN)
+#if defined(MSWIN)
        e = vim_strchr(s, ';');
 #else
        e = vim_strchr(s, ':');
@@ -5217,7 +5217,7 @@ globpath(
        copy_option_part(&path, buf, MAXPATHL, ",");
        if (STRLEN(buf) + STRLEN(file) + 2 < MAXPATHL)
        {
-# if defined(MSWIN) || defined(MSDOS)
+# if defined(MSWIN)
            /* Using the platform's path separator (\) makes vim incorrectly
             * treat it as an escape character, use '/' instead. */
            if (*buf != NUL && !after_pathsep(buf, buf + STRLEN(buf)))
index ab0ec5aafc667052c8117b20080c5649bab9e660..4150f07b5efd21b96f059882c24a2a81d33e02f9 100644 (file)
 # if defined(UNIX) || defined(WIN3264) || defined(MACOS)
 #  define FEAT_HUGE
 # else
-#  if defined(MSWIN) || defined(DJGPP) || defined(VMS) || defined(MACOS) || defined(AMIGA)
+#  if defined(MSWIN) || defined(VMS) || defined(MACOS) || defined(AMIGA)
 #   define FEAT_BIG
 #  else
-#   ifdef MSDOS
-#    define FEAT_SMALL
-#   else
-#    define FEAT_NORMAL
-#   endif
+#   define FEAT_NORMAL
 #  endif
 # endif
 #endif
  *                     and byte2line().
  *                     Note: Required for Macintosh.
  */
-#if defined(FEAT_NORMAL) && !defined(MSDOS)
+#if defined(FEAT_NORMAL)
 # define FEAT_TITLE
 #endif
 
  *                     with HAVE_TGETENT defined).
  *
  * (nothing)           Machine specific termcap entries will be included.
- *                     This is default for win16 to save static data.
  *
  * SOME_BUILTIN_TCAPS  Include most useful builtin termcap entries (used only
  *                     with NO_BUILTIN_TCAPS not defined).
 # ifdef FEAT_BIG
 #  define FEAT_MOUSE_SGR
 # endif
-# if defined(FEAT_NORMAL) && (defined(MSDOS) || defined(WIN3264))
+# if defined(FEAT_NORMAL) && defined(WIN3264)
 #  define DOS_MOUSE
 # endif
 # if defined(FEAT_NORMAL) && defined(__QNX__)
  */
 #ifdef FEAT_NORMAL
 /* MS-DOS console and Win32 console can change cursor shape */
-# if defined(MSDOS) || (defined(WIN3264) && !defined(FEAT_GUI_W32))
+# if defined(WIN3264) && !defined(FEAT_GUI_W32)
 #  define MCH_CURSOR_SHAPE
 # endif
 # if defined(FEAT_GUI_W32) || defined(FEAT_GUI_MOTIF) \
index c5a3f2a8d15c4de8650e806aea3b77bb52078d2c..ed8d45ba1d3d0b5ac7b9db6eb5584d1e35cb5f64 100644 (file)
@@ -445,7 +445,7 @@ readfile(
            return FAIL;
        }
 #endif
-#if defined(MSDOS) || defined(MSWIN)
+#if defined(MSWIN)
        /*
         * MS-Windows allows opening a device, but we will probably get stuck
         * trying to read it.
@@ -521,12 +521,12 @@ readfile(
 
 /*
  * for UNIX: check readonly with perm and mch_access()
- * for MSDOS and Amiga: check readonly by trying to open the file for writing
+ * for Amiga: check readonly by trying to open the file for writing
  */
     file_readonly = FALSE;
     if (read_stdin)
     {
-#if defined(MSDOS) || defined(MSWIN)
+#if defined(MSWIN)
        /* Force binary I/O on stdin to avoid CR-LF -> LF conversion. */
        setmode(0, O_BINARY);
 #endif
@@ -561,7 +561,7 @@ readfile(
        msg_scroll = msg_save;
 #ifndef UNIX
        /*
-        * On MSDOS and Amiga we can't open a directory, check here.
+        * On Amiga we can't open a directory, check here.
         */
        isdir_f = (mch_isdir(fname));
        perm = mch_getperm(fname);  /* check if the file exists */
@@ -3546,7 +3546,7 @@ buf_write(
     }
     if (c == NODE_WRITABLE)
     {
-# if defined(MSDOS) || defined(MSWIN)
+# if defined(MSWIN)
        /* MS-Windows allows opening a device, but we will probably get stuck
         * trying to write to it.  */
        if (!p_odev)
@@ -3791,7 +3791,7 @@ buf_write(
            struct stat st_new;
            char_u      *dirp;
            char_u      *rootname;
-#if defined(UNIX) && !defined(SHORT_FNAME)
+#if defined(UNIX)
            int         did_set_shortname;
 #endif
 
@@ -3834,7 +3834,7 @@ buf_write(
                    goto nobackup;
                }
 
-#if defined(UNIX) && !defined(SHORT_FNAME)
+#if defined(UNIX)
                did_set_shortname = FALSE;
 #endif
 
@@ -3846,12 +3846,7 @@ buf_write(
                    /*
                     * Make backup file name.
                     */
-                   backup = buf_modname(
-#ifdef SHORT_FNAME
-                           TRUE,
-#else
-                           (buf->b_p_sn || buf->b_shortname),
-#endif
+                   backup = buf_modname((buf->b_p_sn || buf->b_shortname),
                                                 rootname, backup_ext, FALSE);
                    if (backup == NULL)
                    {
@@ -3878,7 +3873,6 @@ buf_write(
                        {
                            vim_free(backup);
                            backup = NULL;      /* no backup file to delete */
-# ifndef SHORT_FNAME
                            /*
                             * may try again with 'shortname' set
                             */
@@ -3891,7 +3885,6 @@ buf_write(
                                /* setting shortname didn't help */
                            if (did_set_shortname)
                                buf->b_shortname = FALSE;
-# endif
                            break;
                        }
 #endif
@@ -4059,12 +4052,7 @@ buf_write(
                    backup = NULL;
                else
                {
-                   backup = buf_modname(
-#ifdef SHORT_FNAME
-                           TRUE,
-#else
-                           (buf->b_p_sn || buf->b_shortname),
-#endif
+                   backup = buf_modname((buf->b_p_sn || buf->b_shortname),
                                                 rootname, backup_ext, FALSE);
                    vim_free(rootname);
                }
@@ -4911,12 +4899,7 @@ restore_backup:
      */
     if (*p_pm && dobackup)
     {
-       char *org = (char *)buf_modname(
-#ifdef SHORT_FNAME
-                                       TRUE,
-#else
-                                       (buf->b_p_sn || buf->b_shortname),
-#endif
+       char *org = (char *)buf_modname((buf->b_p_sn || buf->b_shortname),
                                                          fname, p_pm, FALSE);
 
        if (backup != NULL)
@@ -5287,7 +5270,7 @@ check_mtime(buf_T *buf, struct stat *st)
     static int
 time_differs(long t1, long t2)
 {
-#if defined(__linux__) || defined(MSDOS) || defined(MSWIN)
+#if defined(__linux__) || defined(MSWIN)
     /* On a FAT filesystem, esp. under Linux, there are only 5 bits to store
      * the seconds.  Since the roundoff is done when flushing the inode, the
      * time may change unexpectedly by one second!!! */
@@ -6030,9 +6013,9 @@ shorten_fname(char_u *full_path, char_u *dir_name)
     if (fnamencmp(dir_name, full_path, len) == 0)
     {
        p = full_path + len;
-#if defined(MSDOS) || defined(MSWIN)
+#if defined(MSWIN)
        /*
-        * MSDOS: when a file is in the root directory, dir_name will end in a
+        * MSWIN: when a file is in the root directory, dir_name will end in a
         * slash, since C: by itself does not define a specific dir. In this
         * case p may already be correct. <negri>
         */
@@ -6047,7 +6030,7 @@ shorten_fname(char_u *full_path, char_u *dir_name)
 #endif
        }
     }
-#if defined(MSDOS) || defined(MSWIN)
+#if defined(MSWIN)
     /*
      * When using a file in the current drive, remove the drive name:
      * "A:\dir\file" -> "\dir\file".  This helps when moving a session file on
@@ -6163,12 +6146,7 @@ modname(
     char_u *ext,
     int            prepend_dot)        /* may prepend a '.' to file name */
 {
-    return buf_modname(
-#ifdef SHORT_FNAME
-                       TRUE,
-#else
-                       (curbuf->b_p_sn || curbuf->b_shortname),
-#endif
+    return buf_modname((curbuf->b_p_sn || curbuf->b_shortname),
                                                     fname, ext, prepend_dot);
 }
 
@@ -6207,9 +6185,7 @@ buf_modname(
            retval[fnamelen++] = PATHSEP;
            retval[fnamelen] = NUL;
        }
-#ifndef SHORT_FNAME
        prepend_dot = FALSE;        /* nothing to prepend a dot to */
-#endif
     }
     else
     {
@@ -6235,9 +6211,7 @@ buf_modname(
 #ifdef USE_LONG_FNAME
                    && (!USE_LONG_FNAME || shortname)
 #else
-# ifndef SHORT_FNAME
                    && shortname
-# endif
 #endif
                                                                )
            if (*ptr == '.')    /* replace '.' by '_' */
@@ -6250,10 +6224,8 @@ buf_modname(
     }
 
     /* the file name has at most BASENAMELEN characters. */
-#ifndef SHORT_FNAME
     if (STRLEN(ptr) > (unsigned)BASENAMELEN)
        ptr[BASENAMELEN] = '\0';
-#endif
 
     s = ptr + STRLEN(ptr);
 
@@ -6263,9 +6235,7 @@ buf_modname(
 #ifdef USE_LONG_FNAME
     if (!USE_LONG_FNAME || shortname)
 #else
-# ifndef SHORT_FNAME
     if (shortname)
-# endif
 #endif
     {
        /*
@@ -6320,7 +6290,6 @@ buf_modname(
      */
     STRCPY(s, ext);
 
-#ifndef SHORT_FNAME
     /*
      * Prepend the dot.
      */
@@ -6333,7 +6302,6 @@ buf_modname(
        STRMOVE(e + 1, e);
        *e = '.';
     }
-#endif
 
     /*
      * Check that, after appending the extension, the file name is really
index 034751492f90045cc5abf260d7e284e1ad81ac97..4a225e1b640405c7be5ab7efa938496aec5f1e82 100644 (file)
@@ -1677,15 +1677,6 @@ vgetc(void)
                c = CSI;
 #endif
        }
-#ifdef MSDOS
-       /*
-        * If K_NUL was typed, it is replaced by K_NUL, 3 in mch_inchar().
-        * Delete the 3 here.
-        */
-       else if (c == K_NUL && vpeekc() == 3)
-           (void)vgetorpeek(TRUE);
-#endif
-
        /* a keypad or special function key was not mapped, use it like
         * its ASCII equivalent */
        switch (c)
@@ -5241,7 +5232,7 @@ check_map(
 }
 #endif
 
-#if defined(MSDOS) || defined(MSWIN) || defined(MACOS)
+#if defined(MSWIN) || defined(MACOS)
 
 #define VIS_SEL        (VISUAL+SELECTMODE)     /* abbreviation */
 
@@ -5254,7 +5245,7 @@ static struct initmap
     int                mode;
 } initmappings[] =
 {
-#if defined(MSDOS) || defined(MSWIN)
+#if defined(MSWIN)
        /* Use the Windows (CUA) keybindings. */
 # ifdef FEAT_GUI
        /* paste, copy and cut */
@@ -5274,17 +5265,6 @@ static struct initmap
 
        /* paste, copy and cut */
 #  ifdef FEAT_CLIPBOARD
-#   ifdef DJGPP
-       {(char_u *)"\316\122 \"*P", NORMAL},        /* SHIFT-Insert is "*P */
-       {(char_u *)"\316\122 \"-d\"*P", VIS_SEL},   /* SHIFT-Insert is "-d"*P */
-       {(char_u *)"\316\122 \022\017*", INSERT},  /* SHIFT-Insert is ^R^O* */
-       {(char_u *)"\316\222 \"*y", VIS_SEL},       /* CTRL-Insert is "*y */
-#    if 0 /* Shift-Del produces the same code as Del */
-       {(char_u *)"\316\123 \"*d", VIS_SEL},       /* SHIFT-Del is "*d */
-#    endif
-       {(char_u *)"\316\223 \"*d", VIS_SEL},       /* CTRL-Del is "*d */
-       {(char_u *)"\030 \"-d", VIS_SEL},           /* CTRL-X is "-d */
-#   else
        {(char_u *)"\316\324 \"*P", NORMAL},        /* SHIFT-Insert is "*P */
        {(char_u *)"\316\324 \"-d\"*P", VIS_SEL},   /* SHIFT-Insert is "-d"*P */
        {(char_u *)"\316\324 \022\017*", INSERT},  /* SHIFT-Insert is ^R^O* */
@@ -5292,7 +5272,6 @@ static struct initmap
        {(char_u *)"\316\327 \"*d", VIS_SEL},       /* SHIFT-Del is "*d */
        {(char_u *)"\316\330 \"*d", VIS_SEL},       /* CTRL-Del is "*d */
        {(char_u *)"\030 \"-d", VIS_SEL},           /* CTRL-X is "-d */
-#   endif
 #  else
        {(char_u *)"\316\324 P", NORMAL},           /* SHIFT-Insert is P */
        {(char_u *)"\316\324 \"-dP", VIS_SEL},      /* SHIFT-Insert is "-dP */
@@ -5325,7 +5304,7 @@ static struct initmap
     void
 init_mappings(void)
 {
-#if defined(MSDOS) || defined(MSWIN) ||defined(MACOS)
+#if defined(MSWIN) ||defined(MACOS)
     int                i;
 
     for (i = 0; i < (int)(sizeof(initmappings) / sizeof(struct initmap)); ++i)
@@ -5333,8 +5312,7 @@ init_mappings(void)
 #endif
 }
 
-#if defined(MSDOS) || defined(MSWIN) \
-       || defined(FEAT_CMDWIN) || defined(MACOS) || defined(PROTO)
+#if defined(MSWIN) || defined(FEAT_CMDWIN) || defined(MACOS) || defined(PROTO)
 /*
  * Add a mapping "map" for mode "mode".
  * Need to put string in allocated memory, because do_map() will modify it.
index b43f1a270862193d470e90e2bb6a2c968de205ba..6fd86fba5622c195f53bc91e4f7dc8c83efe2218 100644 (file)
@@ -19,7 +19,7 @@
  */
 EXTERN long    Rows                    /* nr of rows in the screen */
 #ifdef DO_INIT
-# if defined(MSDOS) || defined(WIN3264)
+# if defined(WIN3264)
                            = 25L
 # else
                            = 24L
@@ -948,9 +948,6 @@ EXTERN int  ctrl_x_mode INIT(= 0);  /* Which Ctrl-X mode are we in? */
 #endif
 
 EXTERN int     no_abbr INIT(= TRUE);   /* TRUE when no abbreviations loaded */
-#ifdef MSDOS
-EXTERN int     beep_count INIT(= 0);   /* nr of beeps since last char typed */
-#endif
 
 #ifdef USE_EXE_NAME
 EXTERN char_u  *exe_name;              /* the name of the executable */
index 012def6aeadbf276d0b57925c7dc6445b6582227..ffc29f062e27d72915f1b8a0a53431e63b085a49 100644 (file)
 #if defined(UNIX) || defined(VMS)  /* open in rw------- mode */
 # define mch_open_rw(n, f)     mch_open((n), (f), (mode_t)0600)
 #else
-# if defined(MSDOS) || defined(MSWIN)  /* open read/write */
+# if defined(MSWIN)  /* open read/write */
 #  define mch_open_rw(n, f)    mch_open((n), (f), S_IREAD | S_IWRITE)
 # else
 #  define mch_open_rw(n, f)    mch_open((n), (f), 0)
index f19ea1d122c40fb80d8e671f49d47437f35cd583..ac4c7a6d2540fec8379a6352c6914db82de84b6c 100644 (file)
 #define EXTERN
 #include "vim.h"
 
-#ifdef SPAWNO
-# include <spawno.h>           /* special MS-DOS swapping library */
-#endif
-
 #ifdef __CYGWIN__
 # ifndef WIN32
 #  include <cygwin/version.h>
@@ -505,8 +501,7 @@ main
 
     /*
      * mch_init() sets up the terminal (window) for use.  This must be
-     * done after resetting full_screen, otherwise it may move the cursor
-     * (MSDOS).
+     * done after resetting full_screen, otherwise it may move the cursor.
      * Note that we may use mch_exit() before mch_init()!
      */
     mch_init();
@@ -710,10 +705,6 @@ vim_main2(int argc UNUSED, char **argv UNUSED)
     }
 #endif
 
-#ifdef SPAWNO          /* special MSDOS swapping library */
-    init_SPAWNO("", SWAP_ANY);
-#endif
-
 #ifdef FEAT_VIMINFO
     /*
      * Read in registers, history etc, but not marks, from the viminfo file.
index c5b0b59cc31be873f09ae0267aa3a2178825bb75..16092843b88351e568be0fcdbaa2e9317c3cccb9 100644 (file)
@@ -6005,7 +6005,7 @@ convert_setup_ext(
 }
 
 #if defined(FEAT_GUI) || defined(AMIGA) || defined(WIN3264) \
-       || defined(MSDOS) || defined(PROTO)
+       || defined(PROTO)
 /*
  * Do conversion on typed input characters in-place.
  * The input and output are not NUL terminated!
index 56719eec7c464e26a6bd9ea723836965e0bc4b7a..f6fda8d34c17fdfcb8f2ab22c7b47af64d375a1a 100644 (file)
@@ -541,7 +541,7 @@ mf_sync(memfile_T *mfp, int flags)
 {
     int                status;
     bhdr_T     *hp;
-#if defined(SYNC_DUP_CLOSE) && !defined(MSDOS)
+#if defined(SYNC_DUP_CLOSE)
     int                fd;
 #endif
     int                got_int_save = got_int;
@@ -635,18 +635,13 @@ mf_sync(memfile_T *mfp, int flags)
                status = FAIL;
        }
 #endif
-#ifdef MSDOS
-       if (_dos_commit(mfp->mf_fd))
-           status = FAIL;
-#else
-# ifdef SYNC_DUP_CLOSE
+#ifdef SYNC_DUP_CLOSE
        /*
         * Win32 is a bit more work: Duplicate the file handle and close it.
         * This should flush the file to disk.
         */
        if ((fd = dup(mfp->mf_fd)) >= 0)
            close(fd);
-# endif
 #endif
 #ifdef AMIGA
 # if defined(__AROS__) || defined(__amigaos4__)
@@ -1263,7 +1258,7 @@ mf_do_open(
      * fname cannot be NameBuff, because it must have been allocated.
      */
     mf_set_ffname(mfp);
-#if defined(MSDOS) || defined(MSWIN)
+#if defined(MSWIN)
     /*
      * A ":!cd e:xxx" may change the directory without us knowing, use the
      * full pathname always.  Careful: This frees fname!
index 1cb1bb083e97e9d0b8670adf8029f39a89bebe5a..17062823b3ff8e7bfec01b365d71172bcccb1168 100644 (file)
@@ -326,13 +326,6 @@ ml_open(buf_T *buf)
     curwin->w_nrwidth_line_count = 0;
 #endif
 
-#if defined(MSDOS) && !defined(DJGPP)
-    /* for 16 bit MS-DOS create a swapfile now, because we run out of
-     * memory very quickly */
-    if (p_uc != 0)
-       ml_open_file(buf);
-#endif
-
 /*
  * fill block0 struct and write page 0
  */
@@ -641,7 +634,7 @@ ml_setname(buf_T *buf)
     memfile_T  *mfp;
     char_u     *fname;
     char_u     *dirp;
-#if defined(MSDOS) || defined(MSWIN)
+#if defined(MSWIN)
     char_u     *p;
 #endif
 
@@ -672,7 +665,7 @@ ml_setname(buf_T *buf)
        if (fname == NULL)          /* no file name found for this dir */
            continue;
 
-#if defined(MSDOS) || defined(MSWIN)
+#if defined(MSWIN)
        /*
         * Set full pathname for swap file now, because a ":!cd dir" may
         * change directory without us knowing it.
@@ -704,7 +697,7 @@ ml_setname(buf_T *buf)
            vim_free(mfp->mf_fname);
            mfp->mf_fname = fname;
            vim_free(mfp->mf_ffname);
-#if defined(MSDOS) || defined(MSWIN)
+#if defined(MSWIN)
            mfp->mf_ffname = NULL;  /* mf_fname is full pathname already */
 #else
            mf_set_ffname(mfp);
@@ -797,7 +790,7 @@ ml_open_file(buf_T *buf)
            continue;
        if (mf_open_file(mfp, fname) == OK)     /* consumes fname! */
        {
-#if defined(MSDOS) || defined(MSWIN)
+#if defined(MSWIN)
            /*
             * set full pathname for swap file now, because a ":!cd dir" may
             * change directory without us knowing it.
@@ -986,7 +979,7 @@ set_b0_fname(ZERO_BL *b0p, buf_T *buf)
        b0p->b0_fname[0] = NUL;
     else
     {
-#if defined(MSDOS) || defined(MSWIN) || defined(AMIGA)
+#if defined(MSWIN) || defined(AMIGA)
        /* Systems that cannot translate "~user" back into a path: copy the
         * file name unmodified.  Do use slashes instead of backslashes for
         * portability. */
@@ -1280,7 +1273,7 @@ ml_recover(void)
     {
        msg_start();
        msg_outtrans_attr(mfp->mf_fname, attr | MSG_HIST);
-#if defined(MSDOS) || defined(MSWIN)
+#if defined(MSWIN)
        if (STRNCMP(b0p->b0_hname, "PC ", 3) == 0)
            MSG_PUTS_ATTR(_(" cannot be used with this version of Vim.\n"),
                                                             attr | MSG_HIST);
@@ -2147,7 +2140,7 @@ swapfile_info(char_u *fname)
 
                if (b0_magic_wrong(&b0))
                {
-#if defined(MSDOS) || defined(MSWIN)
+#if defined(MSWIN)
                    if (STRNCMP(b0.b0_hname, "PC ", 3) == 0)
                        MSG_PUTS(_("\n         [not usable with this version of Vim]"));
                    else
@@ -2172,13 +2165,6 @@ recov_file_names(char_u **names, char_u *path, int prepend_dot)
 {
     int                num_names;
 
-#ifdef SHORT_FNAME
-    /*
-     * (MS-DOS) always short names
-     */
-    names[0] = modname(path, (char_u *)".sw?", FALSE);
-    num_names = 1;
-#else /* !SHORT_FNAME */
     /*
      * (Win32 and Win64) never short names, but do prepend a dot.
      * (Not MS-DOS or Win32 or Win64) maybe short name, maybe not: Try both.
@@ -2262,8 +2248,6 @@ end:
     curbuf->b_shortname = shortname;
 # endif
 
-#endif /* !SHORT_FNAME */
-
     return num_names;
 }
 
@@ -3953,11 +3937,7 @@ makeswapname(
 #endif
 
     r = buf_modname(
-#ifdef SHORT_FNAME
-           TRUE,
-#else
            (buf->b_p_sn || buf->b_shortname),
-#endif
            fname_res,
            (char_u *)
 #if defined(VMS)
@@ -3965,13 +3945,8 @@ makeswapname(
 #else
            ".swp",
 #endif
-#ifdef SHORT_FNAME             /* always 8.3 file name */
-           FALSE
-#else
            /* Prepend a '.' to the swap file name for the current directory. */
-           dir_name[0] == '.' && dir_name[1] == NUL
-#endif
-              );
+           dir_name[0] == '.' && dir_name[1] == NUL);
     if (r == NULL)         /* out of memory */
        return NULL;
 
@@ -4152,12 +4127,10 @@ findswapname(
 #ifdef AMIGA
     BPTR       fh;
 #endif
-#ifndef SHORT_FNAME
     int                r;
-#endif
     char_u     *buf_fname = buf->b_fname;
 
-#if !defined(SHORT_FNAME) && !defined(UNIX)
+#if !defined(UNIX)
 # define CREATE_DUMMY_FILE
     FILE       *dummyfd = NULL;
 
@@ -4217,7 +4190,7 @@ findswapname(
            fname = NULL;
            break;
        }
-#if defined(UNIX) && !defined(SHORT_FNAME)
+#if defined(UNIX)
 /*
  * Some systems have a MS-DOS compatible filesystem that use 8.3 character
  * file names. If this is the first try and the swap file name does not fit in
@@ -4356,7 +4329,6 @@ findswapname(
         */
        if (fname[n - 2] == 'w' && fname[n - 1] == 'p') /* first try */
        {
-#ifndef SHORT_FNAME
            /*
             * on MS-DOS compatible filesystems (e.g. messydos) file.doc.swp
             * and file.doc are the same file. To guess if this problem is
@@ -4379,7 +4351,6 @@ findswapname(
                    continue;       /* try again with '.' replaced with '_' */
                }
            }
-#endif
            /*
             * If we get here the ".swp" file really exists.
             * Give an error message, unless recovering, no file name, we are
index cb45a72372a5fe70b5bcf2b6c29d5ed8926db641..27ca83ef3c7140875ac30969400829c466d9da71 100644 (file)
@@ -3676,28 +3676,9 @@ vim_beep(
                    && !(gui.in_use && gui.starting)
 #endif
                    )
-           {
                out_str(T_VB);
-           }
            else
-           {
-#ifdef MSDOS
-               /*
-                * The number of beeps outputted is reduced to avoid having to
-                * wait for all the beeps to finish. This is only a problem on
-                * systems where the beeps don't overlap.
-                */
-               if (beep_count == 0 || beep_count == 10)
-               {
-                   out_char(BELL);
-                   beep_count = 1;
-               }
-               else
-                   ++beep_count;
-#else
                out_char(BELL);
-#endif
-           }
        }
 
        /* When 'verbose' is set and we are sourcing a script or executing a
@@ -3811,7 +3792,7 @@ init_homedir(void)
 # endif
 #endif
 
-#if defined(MSDOS) || defined(MSWIN)
+#if defined(MSWIN)
     /*
      * Default home dir is C:/
      * Best assumption we can make in such a situation.
@@ -3947,7 +3928,7 @@ expand_env_esc(
                    && at_start
 #endif
           )
-#if defined(MSDOS) || defined(MSWIN)
+#if defined(MSWIN)
                || *src == '%'
 #endif
                || (*src == '~' && at_start))
@@ -3976,7 +3957,7 @@ expand_env_esc(
 #endif
                {
                    while (c-- > 0 && *tail != NUL && ((vim_isIDc(*tail))
-#if defined(MSDOS) || defined(MSWIN)
+#if defined(MSWIN)
                            || (*src == '%' && *tail != '%')
 #endif
                            ))
@@ -3985,7 +3966,7 @@ expand_env_esc(
                    }
                }
 
-#if defined(MSDOS) || defined(MSWIN) || defined(UNIX)
+#if defined(MSWIN) || defined(UNIX)
 # ifdef UNIX
                if (src[1] == '{' && *tail != '}')
 # else
@@ -4003,7 +3984,7 @@ expand_env_esc(
 #endif
                    *var = NUL;
                    var = vim_getenv(dst, &mustfree);
-#if defined(MSDOS) || defined(MSWIN) || defined(UNIX)
+#if defined(MSWIN) || defined(UNIX)
                }
 #endif
            }
@@ -4194,7 +4175,7 @@ vim_getenv(char_u *name, int *mustfree)
     char_u     *pend;
     int                vimruntime;
 
-#if defined(MSDOS) || defined(MSWIN)
+#if defined(MSWIN)
     /* use "C:/" when $HOME is not set */
     if (STRCMP(name, "HOME") == 0)
        return homedir;
@@ -4932,7 +4913,7 @@ get_past_head(char_u *path)
 {
     char_u  *retval;
 
-#if defined(MSDOS) || defined(MSWIN)
+#if defined(MSWIN)
     /* may skip "c:" */
     if (isalpha(path[0]) && path[1] == ':')
        retval = path + 2;
@@ -9734,13 +9715,13 @@ static int vim_backtick(char_u *p);
 static int expand_backtick(garray_T *gap, char_u *pat, int flags);
 # endif
 
-# if defined(MSDOS) || defined(WIN3264)
+# if defined(WIN3264)
 /*
  * File name expansion code for MS-DOS, Win16 and Win32.  It's here because
  * it's shared between these systems.
  */
-# if defined(DJGPP) || defined(PROTO)
-#  define _cdecl           /* DJGPP doesn't have this */
+# if defined(PROTO)
+#  define _cdecl
 # else
 #  ifdef __BORLANDC__
 #   define _cdecl _RTLENTRYF
@@ -9762,14 +9743,8 @@ namelowcpy(
     char_u *d,
     char_u *s)
 {
-#  ifdef DJGPP
-    if (USE_LONG_FNAME)            /* don't lower case on Windows 95/NT systems */
-       while (*s)
-           *d++ = *s++;
-    else
-#  endif
-       while (*s)
-           *d++ = TOLOWER_LOC(*s++);
+    while (*s)
+       *d++ = TOLOWER_LOC(*s++);
     *d = NUL;
 }
 # endif
@@ -10078,7 +10053,7 @@ mch_expandpath(
 {
     return dos_expandpath(gap, path, 0, flags, FALSE);
 }
-# endif /* MSDOS || WIN3264 */
+# endif /* WIN3264 */
 
 #if (defined(UNIX) && !defined(VMS)) || defined(USE_UNIXFILENAME) \
        || defined(PROTO)
@@ -10444,7 +10419,7 @@ expand_path_option(char_u *curdir, garray_T *gap)
        if (ga_grow(gap, 1) == FAIL)
            break;
 
-# if defined(MSWIN) || defined(MSDOS)
+# if defined(MSWIN)
        /* Avoid the path ending in a backslash, it fails when a comma is
         * appended. */
        len = (int)STRLEN(buf);
@@ -10482,7 +10457,7 @@ get_path_cutoff(char_u *fname, garray_T *gap)
        int j = 0;
 
        while ((fname[j] == path_part[i][j]
-# if defined(MSWIN) || defined(MSDOS)
+# if defined(MSWIN)
                || (vim_ispathsep(fname[j]) && vim_ispathsep(path_part[i][j]))
 #endif
                             ) && fname[j] != NUL && path_part[i][j] != NUL)
@@ -10603,7 +10578,7 @@ uniquefy_paths(garray_T *gap, char_u *pattern)
             */
            short_name = shorten_fname(path, curdir);
            if (short_name != NULL && short_name > path + 1
-#if defined(MSWIN) || defined(MSDOS)
+#if defined(MSWIN)
                    /* On windows,
                     *      shorten_fname("c:\a\a.txt", "c:\a\b")
                     * returns "\a\a.txt", which is not really the short
@@ -10743,7 +10718,7 @@ has_env_var(char_u *p)
        if (*p == '\\' && p[1] != NUL)
            ++p;
        else if (vim_strchr((char_u *)
-#if defined(MSDOS) || defined(MSWIN)
+#if defined(MSWIN)
                                    "$%"
 #else
                                    "$"
index 7665d2931cb64a52f919316ecb4b60443af94619..c1519ef915b3d4acacd439c2bdf171a4afa386c3 100644 (file)
@@ -805,12 +805,7 @@ alloc_does_fail(long_u size)
  * Some memory is reserved for error messages and for being able to
  * call mf_release_all(), which needs some memory for mf_trans_add().
  */
-#if defined(MSDOS) && !defined(DJGPP)
-# define SMALL_MEM
-# define KEEP_ROOM 8192L
-#else
-# define KEEP_ROOM (2 * 8192L)
-#endif
+#define KEEP_ROOM (2 * 8192L)
 #define KEEP_ROOM_KB (KEEP_ROOM / 1024L)
 
 /*
@@ -892,7 +887,7 @@ lalloc(long_u size, int message)
     char_u     *p;                 /* pointer to new storage space */
     static int releasing = FALSE;  /* don't do mf_release_all() recursive */
     int                try_again;
-#if defined(HAVE_AVAIL_MEM) && !defined(SMALL_MEM)
+#if defined(HAVE_AVAIL_MEM)
     static long_u allocated = 0;    /* allocated since last avail check */
 #endif
 
@@ -909,12 +904,6 @@ lalloc(long_u size, int message)
     mem_pre_alloc_l(&size);
 #endif
 
-#if defined(MSDOS) && !defined(DJGPP)
-    if (size >= 0xfff0)                /* in MSDOS we can't deal with >64K blocks */
-       p = NULL;
-    else
-#endif
-
     /*
      * Loop when out of memory: Try to release some memfile blocks and
      * if some blocks are released call malloc again.
@@ -934,14 +923,13 @@ lalloc(long_u size, int message)
            /* 1. No check for available memory: Just return. */
            goto theend;
 #else
-# ifndef SMALL_MEM
            /* 2. Slow check for available memory: call mch_avail_mem() after
             *    allocating (KEEP_ROOM / 2) amount of memory. */
            allocated += size;
            if (allocated < KEEP_ROOM / 2)
                goto theend;
            allocated = 0;
-# endif
+
            /* 3. check for available memory: call mch_avail_mem() */
            if (mch_avail_mem(TRUE) < KEEP_ROOM_KB && !releasing)
            {
@@ -5453,7 +5441,7 @@ find_file_in_path_option(
     if (vim_isAbsName(ff_file_to_find)
            /* "..", "../path", "." and "./path": don't use the path_option */
            || rel_to_curdir
-#if defined(MSWIN) || defined(MSDOS)
+#if defined(MSWIN)
            /* handle "\tmp" as absolute path */
            || vim_ispathsep(ff_file_to_find[0])
            /* handle "c:name" as absolute path */
@@ -5507,18 +5495,10 @@ find_file_in_path_option(
                buf = suffixes;
                for (;;)
                {
-                   if (
-#ifdef DJGPP
-                           /* "C:" by itself will fail for mch_getperm(),
-                            * assume it's always valid. */
-                           (find_what != FINDFILE_FILE && NameBuff[0] != NUL
-                                 && NameBuff[1] == ':'
-                                 && NameBuff[2] == NUL) ||
-#endif
-                           (mch_getperm(NameBuff) >= 0
+                   if (mch_getperm(NameBuff) >= 0
                             && (find_what == FINDFILE_BOTH
                                 || ((find_what == FINDFILE_DIR)
-                                                   == mch_isdir(NameBuff)))))
+                                                   == mch_isdir(NameBuff))))
                    {
                        file_name = vim_strsave(NameBuff);
                        goto theend;
index 05142a8b0e62f474c91fc0964ba79adc2973145f..ca0278eeeb5e5d6722664726c6cac84da31b6c32 100644 (file)
@@ -1432,7 +1432,7 @@ nb_do_cmd(
                if (buf_was_empty)
                {
                    if (ff_detected == EOL_UNKNOWN)
-#if defined(MSDOS) || defined(MSWIN)
+#if defined(MSWIN)
                        ff_detected = EOL_DOS;
 #else
                        ff_detected = EOL_UNIX;
index 4f73c0b21ec9c01e15798fe4488bb3a6b6f1c5fc..b624aad094922eefdd852895b08567b7c798a756 100644 (file)
 #ifdef FEAT_SMARTINDENT
 # define PV_SI         OPT_BUF(BV_SI)
 #endif
-#ifndef SHORT_FNAME
-# define PV_SN         OPT_BUF(BV_SN)
-#endif
+#define PV_SN          OPT_BUF(BV_SN)
 #ifdef FEAT_SYN_HL
 # define PV_SMC                OPT_BUF(BV_SMC)
 # define PV_SYN                OPT_BUF(BV_SYN)
@@ -352,9 +350,7 @@ static int  p_ro;
 #ifdef FEAT_SMARTINDENT
 static int     p_si;
 #endif
-#ifndef SHORT_FNAME
 static int     p_sn;
-#endif
 static long    p_sts;
 #if defined(FEAT_SEARCHPATH)
 static char_u  *p_sua;
@@ -464,7 +460,7 @@ struct vimoption
 
 /* 'isprint' for latin1 is also used for MS-Windows cp1252, where 0x80 is used
  * for the currency sign. */
-#if defined(MSDOS) || defined(MSWIN)
+#if defined(MSWIN)
 # define ISP_LATIN1 (char_u *)"@,~-255"
 #else
 # define ISP_LATIN1 (char_u *)"@,161-255"
@@ -497,7 +493,7 @@ static struct vimoption options[] =
                            (char_u *)NULL, PV_NONE,
 #endif
                            {
-#if (defined(MSDOS) || defined(WIN3264)) && !defined(FEAT_GUI_W32)
+#if (defined(WIN3264)) && !defined(FEAT_GUI_W32)
                            (char_u *)128L,
 #else
                            (char_u *)224L,
@@ -572,7 +568,7 @@ static struct vimoption options[] =
     {"background",  "bg",   P_STRING|P_VI_DEF|P_RCLR,
                            (char_u *)&p_bg, PV_NONE,
                            {
-#if (defined(MSDOS) || defined(WIN3264)) && !defined(FEAT_GUI)
+#if (defined(WIN3264)) && !defined(FEAT_GUI)
                            (char_u *)"dark",
 #else
                            (char_u *)"light",
@@ -637,11 +633,7 @@ static struct vimoption options[] =
                            (char_u *)&p_bin, PV_BIN,
                            {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
     {"bioskey",            "biosk",P_BOOL|P_VI_DEF,
-#ifdef MSDOS
-                           (char_u *)&p_biosk, PV_NONE,
-#else
                            (char_u *)NULL, PV_NONE,
-#endif
                            {(char_u *)TRUE, (char_u *)0L} SCRIPTID_INIT},
     {"bomb",       NULL,   P_BOOL|P_NO_MKRC|P_VI_DEF|P_RSTAT,
 #ifdef FEAT_MBYTE
@@ -889,11 +881,7 @@ static struct vimoption options[] =
 #endif
                            {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
     {"conskey",            "consk",P_BOOL|P_VI_DEF,
-#ifdef MSDOS
-                           (char_u *)&p_consk, PV_NONE,
-#else
                            (char_u *)NULL, PV_NONE,
-#endif
                            {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
     {"copyindent",  "ci",   P_BOOL|P_VI_DEF|P_VIM,
                            (char_u *)&p_ci, PV_CI,
@@ -1317,7 +1305,7 @@ static struct vimoption options[] =
                            {
 # ifdef FEAT_GUI
                                (char_u *)"n-v-c:block-Cursor/lCursor,ve:ver35-Cursor,o:hor50-Cursor,i-ci:ver25-Cursor/lCursor,r-cr:hor20-Cursor/lCursor,sm:block-Cursor-blinkwait175-blinkoff150-blinkon175",
-# else /* MSDOS or Win32 console */
+# else /* Win32 console */
                                (char_u *)"n-v-c:block,o:hor50,i-ci:hor15,r-cr:hor30,sm:block",
 # endif
                                    (char_u *)0L}
@@ -1596,7 +1584,7 @@ static struct vimoption options[] =
     {"isident",            "isi",  P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
                            (char_u *)&p_isi, PV_NONE,
                            {
-#if defined(MSDOS) || defined(MSWIN)
+#if defined(MSWIN)
                            (char_u *)"@,48-57,_,128-167,224-235",
 #else
 # ifdef EBCDIC
@@ -1622,7 +1610,7 @@ static struct vimoption options[] =
                                    "251-254",
 #else
                                (char_u *)"@,48-57,_",
-# if defined(MSDOS) || defined(MSWIN)
+# if defined(MSWIN)
                                (char_u *)"@,48-57,_,128-167,224-235"
 # else
                                ISK_LATIN1
@@ -1632,8 +1620,7 @@ static struct vimoption options[] =
     {"isprint",            "isp",  P_STRING|P_VI_DEF|P_RALL|P_COMMA|P_NODUP,
                            (char_u *)&p_isp, PV_NONE,
                            {
-#if defined(MSDOS) || defined(MSWIN) \
-               || (defined(MACOS) && !defined(MACOS_X)) \
+#if defined(MSWIN) || (defined(MACOS) && !defined(MACOS_X)) \
                || defined(VMS)
                            (char_u *)"@,~-255",
 #else
@@ -1672,18 +1659,18 @@ static struct vimoption options[] =
     {"keywordprg",  "kp",   P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
                            (char_u *)&p_kp, PV_KP,
                            {
-#if defined(MSDOS) || defined(MSWIN)
+#if defined(MSWIN)
                            (char_u *)":help",
 #else
-#ifdef VMS
+# ifdef VMS
                            (char_u *)"help",
-#else
-# ifdef USEMAN_S
-                           (char_u *)"man -s",
 # else
+#  ifdef USEMAN_S
+                           (char_u *)"man -s",
+#  else
                            (char_u *)"man",
+#  endif
 # endif
-#endif
 #endif
                                (char_u *)0L} SCRIPTID_INIT},
     {"langmap",     "lmap", P_STRING|P_VI_DEF|P_ONECOMMA|P_NODUP|P_SECURE,
@@ -1729,7 +1716,7 @@ static struct vimoption options[] =
     {"lines",      NULL,   P_NUM|P_NODEFAULT|P_NO_MKRC|P_VI_DEF|P_RCLR,
                            (char_u *)&Rows, PV_NONE,
                            {
-#if defined(MSDOS) || defined(WIN3264)
+#if defined(WIN3264)
                            (char_u *)25L,
 #else
                            (char_u *)24L,
@@ -1880,7 +1867,7 @@ static struct vimoption options[] =
     {"mouse",      NULL,   P_STRING|P_VI_DEF|P_FLAGLIST,
                            (char_u *)&p_mouse, PV_NONE,
                            {
-#if defined(MSDOS) || defined(WIN3264)
+#if defined(WIN3264)
                                (char_u *)"a",
 #else
                                (char_u *)"",
@@ -1903,7 +1890,7 @@ static struct vimoption options[] =
     {"mousemodel",  "mousem", P_STRING|P_VI_DEF,
                            (char_u *)&p_mousem, PV_NONE,
                            {
-#if defined(MSDOS) || defined(MSWIN)
+#if defined(MSWIN)
                                (char_u *)"popup",
 #else
 # if defined(MACOS)
@@ -1962,7 +1949,7 @@ static struct vimoption options[] =
                            (char_u *)NULL, PV_NONE,
                            {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
     {"opendevice",  "odev", P_BOOL|P_VI_DEF,
-#if defined(MSDOS) || defined(MSWIN)
+#if defined(MSWIN)
                            (char_u *)&p_odev, PV_NONE,
 #else
                            (char_u *)NULL, PV_NONE,
@@ -2008,7 +1995,7 @@ static struct vimoption options[] =
     {"path",       "pa",   P_STRING|P_EXPAND|P_VI_DEF|P_COMMA|P_NODUP,
                            (char_u *)&p_path, PV_PATH,
                            {
-#if defined AMIGA || defined MSDOS || defined MSWIN
+#if defined(AMIGA) || defined(MSWIN)
                            (char_u *)".,,",
 #else
 # if defined(__EMX__)
@@ -2294,21 +2281,17 @@ static struct vimoption options[] =
 #ifdef VMS
                            (char_u *)"-",
 #else
-# if defined(MSDOS)
-                           (char_u *)"command",
-# else
-#  if defined(WIN3264)
+# if defined(WIN3264)
                            (char_u *)"",       /* set in set_init_1() */
-#  else
+# else
                            (char_u *)"sh",
-#  endif
 # endif
 #endif /* VMS */
                                (char_u *)0L} SCRIPTID_INIT},
     {"shellcmdflag","shcf", P_STRING|P_VI_DEF|P_SECURE,
                            (char_u *)&p_shcf, PV_NONE,
                            {
-#if defined(MSDOS) || defined(MSWIN)
+#if defined(MSWIN)
                            (char_u *)"/c",
 #else
                            (char_u *)"-c",
@@ -2364,7 +2347,7 @@ static struct vimoption options[] =
     {"shellxescape", "sxe", P_STRING|P_VI_DEF|P_SECURE,
                            (char_u *)&p_sxe, PV_NONE,
                            {
-#if defined(MSDOS) || defined(WIN3264)
+#if defined(WIN3264)
                            (char_u *)"\"&|<>()@^",
 #else
                            (char_u *)"",
@@ -2381,11 +2364,7 @@ static struct vimoption options[] =
                            {(char_u *)"", (char_u *)"filnxtToO"}
                            SCRIPTID_INIT},
     {"shortname",   "sn",   P_BOOL|P_VI_DEF,
-#ifdef SHORT_FNAME
-                           (char_u *)NULL, PV_NONE,
-#else
                            (char_u *)&p_sn, PV_SN,
-#endif
                            {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
     {"showbreak",   "sbr",  P_STRING|P_VI_DEF|P_RALL,
 #ifdef FEAT_LINEBREAK
@@ -2795,7 +2774,7 @@ static struct vimoption options[] =
     {"viminfo",            "vi",   P_STRING|P_ONECOMMA|P_NODUP|P_SECURE,
 #ifdef FEAT_VIMINFO
                            (char_u *)&p_viminfo, PV_NONE,
-#if defined(MSDOS) || defined(MSWIN)
+#if defined(MSWIN)
                            {(char_u *)"", (char_u *)"'100,<50,s10,h,rA:,rB:"}
 #else
 # ifdef AMIGA
@@ -3187,7 +3166,7 @@ set_init_1(void)
      * Don't use it if it is empty.
      */
     if (((p = mch_getenv((char_u *)"SHELL")) != NULL && *p != NUL)
-#if defined(MSDOS) || defined(MSWIN)
+#if defined(MSWIN)
 # ifdef __EMX__
            || ((p = mch_getenv((char_u *)"EMXSHELL")) != NULL && *p != NUL)
 # endif
@@ -3363,7 +3342,7 @@ set_init_1(void)
 #ifdef FEAT_POSTSCRIPT
     /* 'printexpr' must be allocated to be able to evaluate it. */
     set_string_default("pexpr",
-# if defined(MSWIN) || defined(MSDOS)
+# if defined(MSWIN)
            (char_u *)"system('copy' . ' ' . v:fname_in . (&printdevice == '' ? ' LPT1:' : (' \"' . &printdevice . '\"'))) . delete(v:fname_in)"
 # else
 #  ifdef VMS
@@ -3513,8 +3492,7 @@ set_init_1(void)
                options[opt_idx].flags |= P_DEF_ALLOCED;
            }
 
-#if defined(MSDOS) || defined(MSWIN) || defined(MACOS) \
-               || defined(VMS)
+#if defined(MSWIN) || defined(MACOS) || defined(VMS)
            if (STRCMP(p_enc, "latin1") == 0
 # ifdef FEAT_MBYTE
                    || enc_utf8
@@ -3793,7 +3771,7 @@ set_init_2(void)
     set_number_default("window", Rows - 1);
 
     /* For DOS console the default is always black. */
-#if !((defined(MSDOS) || defined(WIN3264)) && !defined(FEAT_GUI))
+#if !((defined(WIN3264)) && !defined(FEAT_GUI))
     /*
      * If 'background' wasn't set by the user, try guessing the value,
      * depending on the terminal name.  Only need to check for terminals
@@ -3836,7 +3814,7 @@ set_init_2(void)
     static char_u *
 term_bg_default(void)
 {
-#if defined(MSDOS) || defined(WIN3264)
+#if defined(WIN3264)
     /* DOS console nearly always black */
     return (char_u *)"dark";
 #else
@@ -3963,15 +3941,14 @@ set_init_3(void)
     }
 #endif
 
-#if defined(MSDOS) || defined(WIN3264)
+#if defined(WIN3264)
     /*
      * Set 'shellcmdflag', 'shellxquote', and 'shellquote' depending on the
      * 'shell' option.
      * This is done after other initializations, where 'shell' might have been
      * set, but only if they have not been set before.  Default for p_shcf is
      * "/c", for p_shq is "".  For "sh" like  shells it is changed here to
-     * "-c" and "\"", but not for DJGPP, because it starts the shell without
-     * command.com.  And for Win32 we need to set p_sxq instead.
+     * "-c" and "\"".  And for Win32 we need to set p_sxq instead.
      */
     if (strstr((char *)gettail(p_sh), "sh") != NULL)
     {
@@ -3984,8 +3961,7 @@ set_init_3(void)
            options[idx3].def_val[VI_DEFAULT] = p_shcf;
        }
 
-# ifndef DJGPP
-#  ifdef WIN3264
+# ifdef WIN3264
        /* Somehow Win32 requires the quotes around the redirection too */
        idx3 = findoption((char_u *)"sxq");
        if (idx3 >= 0 && !(options[idx3].flags & P_WAS_SET))
@@ -3993,14 +3969,13 @@ set_init_3(void)
            p_sxq = (char_u *)"\"";
            options[idx3].def_val[VI_DEFAULT] = p_sxq;
        }
-#  else
+# else
        idx3 = findoption((char_u *)"shq");
        if (idx3 >= 0 && !(options[idx3].flags & P_WAS_SET))
        {
            p_shq = (char_u *)"\"";
            options[idx3].def_val[VI_DEFAULT] = p_shq;
        }
-#  endif
 # endif
     }
     else if (strstr((char *)gettail(p_sh), "cmd.exe") != NULL)
@@ -4424,8 +4399,8 @@ do_set(
            }
 
            /*
-            * allow '=' and ':' as MSDOS command.com allows only one
-            * '=' character per "set" command line. grrr. (jw)
+            * allow '=' and ':' for hystorical reasons (MSDOS command.com
+            * allows only one '=' character per "set" command line. grrr. (jw)
             */
            if (nextchar == '?'
                    || (prefix == 1
@@ -6558,7 +6533,7 @@ did_set_string_option(
        {
            out_str(T_ME);
            redraw_later(CLEAR);
-#if defined(MSDOS) || (defined(WIN3264) && !defined(FEAT_GUI_W32))
+#if defined(WIN3264) && !defined(FEAT_GUI_W32)
            /* Since t_me has been set, this probably means that the user
             * wants to use this as default colors.  Need to reset default
             * background/foreground colors. */
@@ -8794,12 +8769,6 @@ set_num_option(
     }
     limit_screen_size();
 
-#ifdef DJGPP
-    /* avoid a crash by checking for a too large value of 'columns' */
-    if (old_Columns != Columns && full_screen && term_console)
-       mch_check_columns();
-#endif
-
     /*
      * If the screen (shell) height has been changed, assume it is the
      * physical screenheight.
@@ -10389,9 +10358,7 @@ get_varp(struct vimoption *p)
 #ifdef FEAT_SMARTINDENT
        case PV_SI:     return (char_u *)&(curbuf->b_p_si);
 #endif
-#ifndef SHORT_FNAME
        case PV_SN:     return (char_u *)&(curbuf->b_p_sn);
-#endif
        case PV_STS:    return (char_u *)&(curbuf->b_p_sts);
 #ifdef FEAT_SEARCHPATH
        case PV_SUA:    return (char_u *)&(curbuf->b_p_sua);
@@ -10722,9 +10689,7 @@ buf_copy_options(buf_T *buf, int flags)
 #endif
            buf->b_p_sts = p_sts;
            buf->b_p_sts_nopaste = p_sts_nopaste;
-#ifndef SHORT_FNAME
            buf->b_p_sn = p_sn;
-#endif
 #ifdef FEAT_COMMENTS
            buf->b_p_com = vim_strsave(p_com);
 #endif
index 24e4184f08ab29dd726b5337e9226351e8be1ed2..2f1f04f0469f5e6dfb92ac783df7cd15a749cf05 100644 (file)
@@ -18,7 +18,7 @@
 #ifdef AMIGA
 # define DFLT_EFM      "%f>%l:%c:%t:%n:%m,%f:%l: %t%*\\D%n: %m,%f %l %t%*\\D%n: %m,%*[^\"]\"%f\"%*\\D%l: %m,%f:%l:%m,%f|%l| %m"
 #else
-# if defined(MSDOS) || defined(WIN3264)
+# if defined(WIN3264)
 #  define DFLT_EFM     "%f(%l) : %t%*\\D%n: %m,%*[^\"]\"%f\"%*\\D%l: %m,%f(%l) : %m,%*[^ ] %f %l: %m,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,%f|%l| %m"
 # else
 #  if defined(__EMX__) /* put most common here (i.e. gcc format) at front */
@@ -386,10 +386,6 @@ EXTERN char_u      *p_bexpr;
 #ifdef FEAT_BROWSE
 EXTERN char_u  *p_bsdir;       /* 'browsedir' */
 #endif
-#ifdef MSDOS
-EXTERN int     p_biosk;        /* 'bioskey' */
-EXTERN int     p_consk;        /* 'conskey' */
-#endif
 #ifdef FEAT_LINEBREAK
 EXTERN char_u  *p_breakat;     /* 'breakat' */
 #endif
@@ -671,7 +667,7 @@ EXTERN int  p_more;         /* 'more' */
 #ifdef FEAT_MZSCHEME
 EXTERN long    p_mzq;          /* 'mzquantum */
 #endif
-#if defined(MSDOS) || defined(MSWIN)
+#if defined(MSWIN)
 EXTERN int     p_odev;         /* 'opendevice' */
 #endif
 EXTERN char_u  *p_opfunc;      /* 'operatorfunc' */
@@ -1074,9 +1070,7 @@ enum
 #ifdef FEAT_SMARTINDENT
     , BV_SI
 #endif
-#ifndef SHORT_FNAME
     , BV_SN
-#endif
 #ifdef FEAT_SYN_HL
     , BV_SMC
     , BV_SYN
diff --git a/src/os_msdos.c b/src/os_msdos.c
deleted file mode 100644 (file)
index 5596e34..0000000
+++ /dev/null
@@ -1,3086 +0,0 @@
-/* vi:set ts=8 sts=4 sw=4:
- *
- * 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.
- * See README.txt for an overview of the Vim source code.
- */
-
-/*
- * os_msdos.c
- *
- * MSDOS system-dependent routines.
- * A cheap plastic imitation of the amiga dependent code.
- * A lot in this file was made by Juergen Weigert (jw).
- *
- * DJGPP changes by Gert van Antwerpen
- * Faster text screens by John Lange (jlange@zilker.net)
- * Windows clipboard functionality added by David Kotchan (dk)
- *
- * Some functions are also used for Win16 (MS-Windows 3.1).
- */
-
-#include "vim.h"
-
-/* cproto fails on missing include files */
-#ifndef PROTO
-# include <conio.h>
-#endif
-
-#ifndef PROTO
-# include <bios.h>
-# ifdef DJGPP
-#  include <dpmi.h>
-#  include <signal.h>
-#  include <sys/movedata.h>
-#  include <crt0.h>
-#  ifdef FEAT_CLIPBOARD
-#   include <sys/segments.h>
-#  endif
-# else
-#  include <alloc.h>
-# endif
-#endif
-
-#if defined(DJGPP) || defined(PROTO)
-# define _cdecl            /* DJGPP doesn't have this */
-#endif
-
-static int cbrk_pressed = FALSE;    /* set by ctrl-break interrupt */
-static int ctrlc_pressed = FALSE;   /* set when ctrl-C or ctrl-break detected */
-static int delayed_redraw = FALSE;  /* set when ctrl-C detected */
-
-static int bioskey_read = _NKEYBRD_READ;   /* bioskey() argument: read key */
-static int bioskey_ready = _NKEYBRD_READY; /* bioskey() argument: key ready? */
-
-#ifdef FEAT_MOUSE
-static int mouse_avail = FALSE;                /* mouse present */
-static int mouse_active;               /* mouse enabled */
-static int mouse_hidden;               /* mouse not shown */
-static int mouse_click = -1;           /* mouse status */
-static int mouse_last_click = -1;      /* previous status at click */
-static int mouse_x = -1;               /* mouse x coordinate */
-static int mouse_y = -1;               /* mouse y coordinate */
-static long mouse_click_time = 0;      /* biostime() of last click */
-static int mouse_click_count = 0;      /* count for multi-clicks */
-static int mouse_click_x = 0;          /* x of previous mouse click */
-static int mouse_click_y = 0;          /* y of previous mouse click */
-static linenr_T mouse_topline = 0;     /* w_topline at previous mouse click */
-#ifdef FEAT_DIFF
-static int mouse_topfill = 0;          /* w_topfill at previous mouse click */
-#endif
-static int mouse_x_div = 8;            /* column = x coord / mouse_x_div */
-static int mouse_y_div = 8;            /* line   = y coord / mouse_y_div */
-#endif
-
-#define BIOSTICK    55                 /* biostime() increases one tick about
-                                          every 55 msec */
-
-static int orig_attr = 0x0700;         /* video attributes when starting */
-
-static int S_iLeft = 0;                        /* Scroll window; these are 1 offset */
-static int S_iTop = 0;
-static int S_iRight = 0;
-static int S_iBottom = 0;
-
-/*
- * Need to remember the values, because we set horizontal and vertical
- * edges separately.
- */
-    static void
-mywindow(int iLeft, int iTop, int iRight, int iBottom)
-{
-    S_iLeft = iLeft;
-    S_iTop = iTop;
-    S_iRight = iRight;
-    S_iBottom = iBottom;
-    window(iLeft, iTop, iRight, iBottom);
-}
-
-#ifdef DJGPP
-/*
- * For DJGPP, use our own functions for fast text screens.  JML 1/18/98
- */
-
-unsigned long  S_ulScreenBase = 0xb8000;
-unsigned short S_uiAttribute = 0;
-int            S_iCurrentRow = 0;      /* These are 0 offset */
-int            S_iCurrentColumn = 0;
-short          S_selVideo;     /* Selector for DJGPP direct video transfers */
-
-/*
- * Use burst writes to improve mch_write speed - VJN 01/10/99
- */
-unsigned short S_linebuffer[8000]; /* <VN> enough for 160x50 */
-unsigned short S_blankbuffer[256]; /* <VN> max length of console line */
-unsigned short *S_linebufferpos = S_linebuffer;
-int            S_iBufferRow;
-int            S_iBufferColumn;
-
-    static void
-myflush(void)
-{
-    if (S_linebufferpos != S_linebuffer)
-    {
-       _dosmemputw(S_linebuffer, (S_linebufferpos - S_linebuffer),
-               S_ulScreenBase
-                     + S_iBufferRow * (Columns << 1) + (S_iBufferColumn << 1));
-       S_linebufferpos = S_linebuffer;
-    }
-}
-
-    static void
-mygotoxy(int x, int y)
-{
-    S_iCurrentRow = y - 1;
-    S_iCurrentColumn = x - 1;
-}
-
-/*
- * Set the system cursor to our cursor position.
- */
-    static void
-set_sys_cursor(void)
-{
-    if (term_console && full_screen)
-    {
-       myflush();
-       gotoxy(S_iCurrentColumn + 1, S_iCurrentRow + 1);
-    }
-}
-
-    static void
-setblankbuffer(unsigned short uiValue)
-{
-    int                                i;
-    static unsigned short      olduiValue = 0;
-
-    if (olduiValue != uiValue)
-    {
-       /* Load blank line buffer with spaces */
-       for (i = 0; i < Columns; ++i)
-           S_blankbuffer[i] = uiValue;
-       olduiValue = uiValue;
-    }
-}
-
-    static void
-myclreol(void)
-{
-    /* Clear to end of line */
-    setblankbuffer(S_uiAttribute | ' ');
-    _dosmemputw(S_blankbuffer, S_iRight - S_iCurrentColumn, S_ulScreenBase
-                        + (S_iCurrentRow) * (Columns << 1)
-                        + (S_iCurrentColumn << 1));
-}
-
-    static void
-myclrscr(void)
-{
-    /* Clear whole screen */
-    short      iColumn;
-    int                endpoint = (Rows * Columns) << 1;
-
-    setblankbuffer(S_uiAttribute | ' ');
-
-    for (iColumn = 0; iColumn < endpoint; iColumn += (Columns << 1))
-       _dosmemputw(S_blankbuffer, Columns, S_ulScreenBase + iColumn);
-}
-
-    static void
-mydelline(void)
-{
-    short iRow, iColumn;
-
-    iColumn = (S_iLeft - 1) << 1;
-
-    /* Copy the lines underneath */
-    for (iRow = S_iCurrentRow; iRow < S_iBottom - 1; iRow++)
-       movedata(S_selVideo, (((iRow + 1) * Columns) << 1) + iColumn,
-               S_selVideo, ((iRow * Columns) << 1) + iColumn,
-               (S_iRight - S_iLeft + 1) << 1);
-
-    /* Clear the new row */
-    setblankbuffer(S_uiAttribute | ' ');
-
-    _dosmemputw(S_blankbuffer, (S_iRight - S_iLeft) + 1, S_ulScreenBase
-                        + (S_iBottom - 1) * (Columns << 1) + iColumn);
-}
-
-    static void
-myinsline(void)
-{
-    short iRow, iColumn;
-
-    iColumn = (S_iLeft - 1) << 1;
-
-    /* Copy the lines underneath */
-    for (iRow = S_iBottom - 1; iRow >= S_iTop; iRow--)
-       movedata(S_selVideo, (((iRow - 1) * Columns) << 1) + iColumn,
-               S_selVideo, ((iRow * Columns) << 1) + iColumn,
-               (S_iRight - S_iLeft + 1) << 1);
-
-    /* Clear the new row */
-    setblankbuffer(S_uiAttribute | ' ');
-
-    _dosmemputw(S_blankbuffer, (S_iRight - S_iLeft) + 1, S_ulScreenBase
-                        + (S_iTop - 1) * (Columns << 1) + iColumn);
-}
-
-/*
- * Scroll the screen one line up, clear the last line.
- */
-    static void
-myscroll(void)
-{
-    short              iRow, iColumn;
-
-    iColumn = (S_iLeft - 1) << 1;
-
-    /* Copy the screen */
-    for (iRow = S_iTop; iRow < S_iBottom; iRow++)
-       movedata(S_selVideo, ((iRow * Columns) << 1) + iColumn,
-               S_selVideo, (((iRow - 1) * Columns) << 1) + iColumn,
-               (S_iRight - S_iLeft + 1) << 1);
-
-    /* Clear the bottom row */
-    setblankbuffer(S_uiAttribute | ' ');
-
-    _dosmemputw(S_blankbuffer, (S_iRight - S_iLeft) + 1, S_ulScreenBase
-                        + (S_iBottom - 1) * (Columns << 1) + iColumn);
-}
-
-    static int
-myputch(int iChar)
-{
-    unsigned short uiValue;
-
-    if (iChar == '\n')
-    {
-       myflush();
-       if (S_iCurrentRow >= S_iBottom - S_iTop)
-           myscroll();
-       else
-       {
-           S_iCurrentColumn = S_iLeft - 1;
-           S_iCurrentRow++;
-       }
-    }
-    else if (iChar == '\r')
-    {
-       myflush();
-       S_iCurrentColumn = S_iLeft - 1;
-    }
-    else if (iChar == '\b')
-    {
-       myflush();
-       if (S_iCurrentColumn >= S_iLeft)
-           S_iCurrentColumn--;
-    }
-    else if (iChar == 7)
-    {
-       sound(440);     /* short beep */
-       delay(200);
-       nosound();
-    }
-    else
-    {
-       uiValue = S_uiAttribute | (unsigned char)iChar;
-
-       /*
-        * Normal char - are we starting to buffer?
-        */
-       if (S_linebufferpos == S_linebuffer)
-       {
-           S_iBufferColumn = S_iCurrentColumn;
-           S_iBufferRow = S_iCurrentRow;
-       }
-
-       *S_linebufferpos++ = uiValue;
-
-       S_iCurrentColumn++;
-       if (S_iCurrentColumn >= S_iRight && S_iCurrentRow >= S_iBottom - S_iTop)
-       {
-           myflush();
-           myscroll();
-           S_iCurrentColumn = S_iLeft - 1;
-           S_iCurrentRow++;
-       }
-    }
-
-    return 0;
-}
-
-    static void
-mytextinit(struct text_info *pTextinfo)
-{
-    S_selVideo = __dpmi_segment_to_descriptor(S_ulScreenBase >> 4);
-    S_uiAttribute = pTextinfo->normattr << 8;
-}
-
-    static void
-get_screenbase(void)
-{
-    static union REGS      regs;
-
-    /* old Hercules grafic card has different base address (Macewicz) */
-    regs.h.ah = 0x0f;
-    (void)int86(0x10, &regs, &regs);   /* int 10 0f */
-    if (regs.h.al == 0x07)             /* video mode 7 -- hercules mono */
-       S_ulScreenBase = 0xb0000;
-    else
-       S_ulScreenBase = 0xb8000;
-}
-
-    static void
-mytextattr(int iAttribute)
-{
-    S_uiAttribute = (unsigned short)iAttribute << 8;
-}
-
-    static void
-mynormvideo(void)
-{
-    mytextattr(orig_attr);
-}
-
-    static void
-mytextcolor(int iTextColor)
-{
-    S_uiAttribute = (unsigned short)((S_uiAttribute & 0xf000)
-                                          | (unsigned short)iTextColor << 8);
-}
-
-    static void
-mytextbackground(int iBkgColor)
-{
-    S_uiAttribute = (unsigned short)((S_uiAttribute & 0x0f00)
-                                        | (unsigned short)(iBkgColor << 12));
-}
-/*
- * Getdigits: Get a number from a string and skip over it.
- * Note: the argument is a pointer to a char_u pointer!
- */
-
-    static long
-mygetdigits(char_u **pp)
-{
-    char_u     *p;
-    long       retval = 0;
-
-    p = *pp;
-    if (*p == '-')             /* skip negative sign */
-       ++p;
-    while (VIM_ISDIGIT(*p))
-    {
-       retval = (retval * 10) + (*p - '0');
-       ++p;
-    }
-    if (**pp == '-')           /* process negative sign */
-       retval = -retval;
-
-    *pp = p;
-    return retval;
-}
-#else
-# define mygotoxy gotoxy
-# define myputch putch
-# define myscroll scroll
-# define mynormvideo normvideo
-# define mytextattr textattr
-# define mytextcolor textcolor
-# define mytextbackground textbackground
-# define mygetdigits getdigits
-# define myclreol clreol
-# define myclrscr clrscr
-# define myinsline insline
-# define mydelline delline
-#endif
-
-static const struct
-{
-    char_u     scancode;
-    char_u     metakey;
-} altkey_table[] =
-{
-    {0x1e, 0xe1}, /* a */
-    {0x30, 0xe2}, /* b */
-    {0x2e, 0xe3}, /* c */
-    {0x20, 0xe4}, /* d */
-    {0x12, 0xe5}, /* e */
-    {0x21, 0xe6}, /* f */
-    {0x22, 0xe7}, /* g */
-    {0x23, 0xe8}, /* h */
-    {0x17, 0xe9}, /* i */
-    {0x24, 0xea}, /* j */
-    {0x25, 0xeb}, /* k */
-    {0x26, 0xec}, /* l */
-    {0x32, 0xed}, /* m */
-    {0x31, 0xee}, /* n */
-    {0x18, 0xef}, /* o */
-    {0x19, 0xf0}, /* p */
-    {0x10, 0xf1}, /* q */
-    {0x13, 0xf2}, /* r */
-    {0x1f, 0xf3}, /* s */
-    {0x14, 0xf4}, /* t */
-    {0x16, 0xf5}, /* u */
-    {0x2f, 0xf6}, /* v */
-    {0x11, 0xf7}, /* w */
-    {0x2d, 0xf8}, /* x */
-    {0x15, 0xf9}, /* y */
-    {0x2c, 0xfa}, /* z */
-    {0x78, 0xb1}, /* 1 */
-    {0x79, 0xb2}, /* 2 */
-    {0x7a, 0xb3}, /* 3 */
-    {0x7b, 0xb4}, /* 4 */
-    {0x7c, 0xb5}, /* 5 */
-    {0x7d, 0xb6}, /* 6 */
-    {0x7e, 0xb7}, /* 7 */
-    {0x7f, 0xb8}, /* 8 */
-    {0x80, 0xb9}, /* 9 */
-    {0x81, 0xb0}, /* 0 */
-};
-
-/*
- * Translate extended keycodes into meta-chars where applicable
- */
-    static int
-translate_altkeys(int rawkey)
-{
-    int i, c;
-
-    if ((rawkey & 0xff) == 0)
-    {
-       c = (rawkey >> 8);
-       for (i = sizeof(altkey_table) / sizeof(altkey_table[0]); --i >= 0; )
-       {
-           if (c == altkey_table[i].scancode)
-               return (int)altkey_table[i].metakey;
-       }
-    }
-    return rawkey;
-}
-
-/*
- * Set normal fg/bg color, based on T_ME.  Called when t_me has been set.
- */
-    void
-mch_set_normal_colors(void)
-{
-    char_u     *p;
-    int                n;
-
-    cterm_normal_fg_color = (orig_attr & 0xf) + 1;
-    cterm_normal_bg_color = ((orig_attr >> 4) & 0xf) + 1;
-    if (T_ME[0] == ESC && T_ME[1] == '|')
-    {
-       p = T_ME + 2;
-       n = getdigits(&p);
-       if (*p == 'm' && n > 0)
-       {
-           cterm_normal_fg_color = (n & 0xf) + 1;
-           cterm_normal_bg_color = ((n >> 4) & 0xf) + 1;
-       }
-    }
-}
-
-#if defined(MCH_CURSOR_SHAPE) || defined(PROTO)
-/*
- * Save/restore the shape of the cursor.
- * call with FALSE to save, TRUE to restore
- */
-    static void
-mch_restore_cursor_shape(int restore)
-{
-    static union REGS      regs;
-    static int             saved = FALSE;
-
-    if (restore)
-    {
-       if (saved)
-           regs.h.ah = 0x01;       /* Set Cursor */
-       else
-           return;
-    }
-    else
-    {
-       regs.h.ah = 0x03;           /* Get Cursor */
-       regs.h.bh = 0x00;           /* Page */
-       saved = TRUE;
-    }
-
-    (void)int86(0x10, &regs, &regs);
-}
-
-/*
- * Set the shape of the cursor.
- * 'thickness' can be from 0 (thin) to 7 (block)
- */
-    static void
-mch_set_cursor_shape(int thickness)
-{
-    union REGS     regs;
-
-    regs.h.ch = 7 - thickness;     /* Starting Line */
-    regs.h.cl = 7;                 /* Ending Line */
-    regs.h.ah = 0x01;              /* Set Cursor */
-    (void)int86(0x10, &regs, &regs);
-}
-
-    void
-mch_update_cursor(void)
-{
-    int                idx;
-    int                thickness;
-
-    /*
-     * How the cursor is drawn depends on the current mode.
-     */
-    idx = get_shape_idx(FALSE);
-
-    if (shape_table[idx].shape == SHAPE_BLOCK)
-       thickness = 7;
-    else
-       thickness = (7 * shape_table[idx].percentage + 90) / 100;
-    mch_set_cursor_shape(thickness);
-}
-#endif
-
-/*
- * Return amount of memory currently available in Kbyte.
- */
-    long_u
-mch_avail_mem(int special)
-{
-#ifdef DJGPP
-    return _go32_dpmi_remaining_virtual_memory() >> 10;
-#else
-    return coreleft() >> 10;
-#endif
-}
-
-#ifdef FEAT_MOUSE
-
-/*
- * Set area where mouse can be moved to: The whole screen.
- * Rows and Columns must be valid when calling!
- */
-    static void
-mouse_area(void)
-{
-    union REGS     regs;
-
-    if (mouse_avail)
-    {
-       regs.x.cx = 0;  /* mouse visible between cx and dx */
-       regs.x.dx = Columns * mouse_x_div - 1;
-       regs.x.ax = 7;
-       (void)int86(0x33, &regs, &regs);
-
-       regs.x.cx = 0;  /* mouse visible between cx and dx */
-       regs.x.dx = Rows * mouse_y_div - 1;
-       regs.x.ax = 8;
-       (void)int86(0x33, &regs, &regs);
-    }
-}
-
-    static void
-show_mouse(int on)
-{
-    static int     was_on = FALSE;
-    union REGS     regs;
-
-    if (mouse_avail)
-    {
-       if (!mouse_active || mouse_hidden)
-           on = FALSE;
-       /*
-        * Careful: Each switch on must be compensated by exactly one switch
-        * off
-        */
-       if ((on && !was_on) || (!on && was_on))
-       {
-           was_on = on;
-           regs.x.ax = on ? 1 : 2;
-           int86(0x33, &regs, &regs);  /* show mouse */
-           if (on)
-               mouse_area();
-       }
-    }
-}
-
-#endif
-
-/*
- * Version of kbhit() and getch() that use direct console I/O.
- * This avoids trouble with CTRL-P and the like, and should work over a telnet
- * connection (it works for Xvi).
- */
-
-static int cons_key = -1;
-
-/*
- * Try to get one character directly from the console.
- * If there is a key, it is stored in cons_key.
- * Only call when cons_key is -1!
- */
-    static void
-cons_getkey(void)
-{
-    union REGS regs;
-
-    /* call DOS function 6: Direct console I/O */
-    regs.h.ah = 0x06;
-    regs.h.dl = 0xff;
-    (void)intdos(&regs, &regs);
-    if ((regs.x.flags & 0x40) == 0)    /* zero flag not set? */
-       cons_key = (regs.h.al & 0xff);
-}
-
-/*
- * Return TRUE if a character is available.
- */
-    static int
-cons_kbhit(void)
-{
-    if (cons_key < 0)
-       cons_getkey();
-    return (cons_key >= 0);
-}
-
-/*
- * Return a character from the console.
- * Should only be called when vim_kbhit() returns TRUE.
- */
-    static int
-cons_getch(void)
-{
-    int            c = -1;
-
-    if (cons_key < 0)
-       cons_getkey();
-    c = cons_key;
-    cons_key = -1;
-    return c;
-}
-
-
-#ifdef DJGPP
-/*
- * DJGPP provides a kbhit() function that goes to the BIOS instead of DOS.
- * This doesn't work for terminals connected to a serial port.
- * Redefine kbhit() here to make it work.
- */
-    static int
-vim_kbhit(void)
-{
-    union REGS regs;
-
-    regs.h.ah = 0x0b;
-    (void)intdos(&regs, &regs);
-    return regs.h.al;
-}
-
-#ifdef kbhit
-# undef kbhit      /* might have been defined in conio.h */
-#endif
-#define kbhit()        vim_kbhit()
-
-#endif
-
-/*
- * Simulate WaitForChar() by slowly polling with bioskey(1) or kbhit().
- *
- * If Vim should work over the serial line after a 'ctty com1' we must use
- * kbhit() and getch(). (jw)
- * Usually kbhit() is not used, because then CTRL-C and CTRL-P
- * will be caught by DOS (mool).
- *
- * return TRUE if a character is available, FALSE otherwise
- */
-
-#define FOREVER 1999999999L
-
-    static  int
-WaitForChar(long msec)
-{
-    long       starttime = 0;
-
-    if (msec != 0)
-       starttime = biostime(0, 0L);
-
-    for (;;)
-    {
-#ifdef FEAT_MOUSE
-       long            clicktime;
-       static int      old_status = 0;
-       union REGS      regs;
-       int             x, y;
-
-       if (mouse_avail && mouse_active && mouse_click < 0)
-       {
-           regs.x.ax = 3;
-           int86(0x33, &regs, &regs);      /* check mouse status */
-               /* only recognize button-down and button-up event */
-           x = regs.x.cx / mouse_x_div;
-           y = regs.x.dx / mouse_y_div;
-           if ((old_status == 0) != (regs.x.bx == 0))
-           {
-               if (old_status) /* button up */
-                   mouse_click = MOUSE_RELEASE;
-               else                    /* button down */
-               {
-                   /*
-                    * Translate MSDOS mouse events to Vim mouse events.
-                    * TODO: should handle middle mouse button, by pressing
-                    * left and right at the same time.
-                    */
-                   if (regs.x.bx & MSDOS_MOUSE_LEFT)
-                       mouse_click = MOUSE_LEFT;
-                   else if (regs.x.bx & MSDOS_MOUSE_RIGHT)
-                       mouse_click = MOUSE_RIGHT;
-                   else if (regs.x.bx & MSDOS_MOUSE_MIDDLE)
-                       mouse_click = MOUSE_MIDDLE;
-
-                   /*
-                    * Find out if this is a multi-click
-                    */
-                   clicktime = biostime(0, 0L);
-                   if (mouse_click_x == x && mouse_click_y == y
-                           && mouse_topline == curwin->w_topline
-#ifdef FEAT_DIFF
-                           && mouse_topfill == curwin->w_topfill
-#endif
-                           && mouse_click_count != 4
-                           && mouse_click == mouse_last_click
-                           && clicktime < mouse_click_time
-                                                       + p_mouset / BIOSTICK)
-                       ++mouse_click_count;
-                   else
-                       mouse_click_count = 1;
-                   mouse_click_time = clicktime;
-                   mouse_last_click = mouse_click;
-                   mouse_click_x = x;
-                   mouse_click_y = y;
-                   mouse_topline = curwin->w_topline;
-#ifdef FEAT_DIFF
-                   mouse_topfill = curwin->w_topfill;
-#endif
-                   SET_NUM_MOUSE_CLICKS(mouse_click, mouse_click_count);
-               }
-           }
-           else if (old_status && (x != mouse_x || y != mouse_y))
-               mouse_click = MOUSE_DRAG;
-           old_status = regs.x.bx;
-           if (mouse_hidden && mouse_x >= 0 && (mouse_x != x || mouse_y != y))
-           {
-               mouse_hidden = FALSE;
-               show_mouse(TRUE);
-           }
-           mouse_x = x;
-           mouse_y = y;
-       }
-#endif
-
-       if ((p_consk ? cons_kbhit()
-                                : p_biosk ? bioskey(bioskey_ready) : kbhit())
-               || cbrk_pressed
-#ifdef FEAT_MOUSE
-                                                   || mouse_click >= 0
-#endif
-               )
-           return TRUE;
-       /*
-        * Use biostime() to wait until our time is done.
-        * We busy-wait here.  Unfortunately, delay() and usleep() have been
-        * reported to give problems with the original Windows 95.  This is
-        * fixed in service pack 1, but not everybody installed that.
-        * The DJGPP implementation of usleep() uses a busy-wait loop too.
-        */
-       if (msec == 0 || (msec != FOREVER
-                           && biostime(0, 0L) > starttime + msec / BIOSTICK))
-           break;
-
-#ifdef DJGPP
-       /* Yield the CPU to the next process. */
-       __dpmi_yield();
-#endif
-    }
-    return FALSE;
-}
-
-/*
- * don't do anything for about "msec" msec
- */
-    void
-mch_delay(
-    long       msec,
-    int                ignoreinput)
-{
-    long       starttime;
-
-    if (ignoreinput)
-    {
-       /*
-        * We busy-wait here.  Unfortunately, delay() and usleep() have been
-        * reported to give problems with the original Windows 95.  This is
-        * fixed in service pack 1, but not everybody installed that.
-        */
-       starttime = biostime(0, 0L);
-       while (biostime(0, 0L) < starttime + msec / BIOSTICK)
-           ;
-    }
-    else
-       WaitForChar(msec);
-}
-
-/*
- * mch_write(): write the output buffer to the screen
- */
-    void
-mch_write(
-    char_u     *s,
-    int                len)
-{
-    char_u     *p;
-    int                row, col;
-
-    if (term_console && full_screen)
-       while (len--)
-       {
-           /* translate ESC | sequences into bios calls */
-           if (p_wd)       /* testing: wait a bit for each char */
-               WaitForChar(p_wd);
-
-           if (s[0] == '\n')
-#ifdef DJGPP
-           {
-               myflush();
-               S_iCurrentColumn = S_iLeft - 1;
-           }
-#else
-               myputch('\r');
-#endif
-           else if (s[0] == ESC && len > 1 && s[1] == '|')
-           {
-               switch (s[2])
-               {
-#ifdef DJGPP
-               case 'B':   ScreenVisualBell();
-                           goto got3;
-#endif
-               case 'J':
-#ifdef DJGPP
-                           myflush();
-#endif
-                           myclrscr();
-                           goto got3;
-
-               case 'K':
-#ifdef DJGPP
-                           myflush();
-#endif
-                           myclreol();
-                           goto got3;
-
-               case 'L':
-#ifdef DJGPP
-                           myflush();
-#endif
-                           myinsline();
-                           goto got3;
-
-               case 'M':
-#ifdef DJGPP
-                           myflush();
-#endif
-                           mydelline();
-got3:                      s += 3;
-                           len -= 2;
-                           continue;
-
-               case '0':
-               case '1':
-               case '2':
-               case '3':
-               case '4':
-               case '5':
-               case '6':
-               case '7':
-               case '8':
-               case '9':   p = s + 2;
-                           row = mygetdigits(&p);    /* no check for length! */
-                           if (p > s + len)
-                               break;
-                           if (*p == ';')
-                           {
-                               ++p;
-                               col = mygetdigits(&p); /* no check for length! */
-                               if (p > s + len)
-                                   break;
-                               if (*p == 'H' || *p == 'r' || *p == 'V')
-                               {
-#ifdef DJGPP
-                                   myflush();
-#endif
-                                   if (*p == 'H')  /* set cursor position */
-                                       mygotoxy(col, row);
-                                   else if (*p == 'V')
-                                       mywindow(row, S_iTop, col, S_iBottom);
-                                   else            /* set scroll region  */
-                                       mywindow(S_iLeft, row, S_iRight, col);
-                                   len -= p - s;
-                                   s = p + 1;
-                                   continue;
-                               }
-                           }
-                           else if (*p == 'm' || *p == 'f' || *p == 'b')
-                           {
-                               if (*p == 'm')      /* set color */
-                               {
-                                   if (row == 0)
-                                       mynormvideo();/* reset color */
-                                   else
-                                       mytextattr(row);
-                               }
-                               else if (*p == 'f') /* set foreground color */
-                                   mytextcolor(row);
-                               else                /* set background color */
-                                   mytextbackground(row);
-
-                               len -= p - s;
-                               s = p + 1;
-                               continue;
-                           }
-               }
-           }
-           myputch(*s++);
-       }
-    else
-    {
-       write(1, s, (unsigned)len);
-    }
-}
-
-/*
- * mch_inchar(): low level input function.
- * Get a characters from the keyboard.
- * If time == 0 do not wait for characters.
- * If time == n wait a short time for characters.
- * If time == -1 wait forever for characters.
- *
- * return the number of characters obtained
- */
-    int
-mch_inchar(
-    char_u     *buf,
-    int                maxlen,
-    long       time,
-    int                tb_change_cnt)
-{
-    int                len = 0;
-    int                c;
-    int                tmp_c;
-    static int nextchar = 0;       /* may keep character when maxlen == 1 */
-
-    /*
-     * if we got a ctrl-C when we were busy, there will be a "^C" somewhere
-     * on the screen, so we need to redisplay it.
-     */
-    if (delayed_redraw)
-    {
-       delayed_redraw = FALSE;
-       update_screen(CLEAR);
-       setcursor();
-       out_flush();
-    }
-
-    /* return remaining character from last call */
-    if (nextchar)
-    {
-       *buf = nextchar;
-       nextchar = 0;
-       return 1;
-    }
-
-#ifdef FEAT_MOUSE
-    if (time != 0)
-       show_mouse(TRUE);
-#endif
-#ifdef DJGPP
-    set_sys_cursor();
-#endif
-    if (time >= 0)
-    {
-       if (WaitForChar(time) == 0)     /* no character available */
-       {
-#ifdef FEAT_MOUSE
-           show_mouse(FALSE);
-#endif
-           return 0;
-       }
-    }
-    else    /* time == -1 */
-    {
-       /*
-        * If there is no character available within 2 seconds (default)
-        * write the autoscript file to disk.  Or cause the CursorHold event
-        * to be triggered.
-        */
-       if (WaitForChar(p_ut) == 0)
-       {
-#ifdef FEAT_AUTOCMD
-           if (trigger_cursorhold() && maxlen >= 3)
-           {
-               buf[0] = K_SPECIAL;
-               buf[1] = KS_EXTRA;
-               buf[2] = (int)KE_CURSORHOLD;
-               return 3;
-           }
-#endif
-           before_blocking();
-       }
-    }
-    WaitForChar(FOREVER);      /* wait for key or mouse click */
-
-/*
- * Try to read as many characters as there are, until the buffer is full.
- */
-    /*
-     * we will get at least one key. Get more if they are available
-     * After a ctrl-break we have to read a 0 (!) from the buffer.
-     * bioskey(1) will return 0 if no key is available and when a
-     * ctrl-break was typed. When ctrl-break is hit, this does not always
-     * implies a key hit.
-     */
-    cbrk_pressed = FALSE;
-#ifdef FEAT_MOUSE
-    if (mouse_click >= 0 && maxlen >= 5)
-    {
-       len = 5;
-       *buf++ = ESC + 128;
-       *buf++ = 'M';
-       *buf++ = mouse_click;
-       *buf++ = mouse_x + '!';
-       *buf++ = mouse_y + '!';
-       mouse_click = -1;
-    }
-    else
-#endif
-    {
-#ifdef FEAT_MOUSE
-       mouse_hidden = TRUE;
-#endif
-       if (p_biosk && !p_consk)
-       {
-           while ((len == 0 || bioskey(bioskey_ready)) && len < maxlen)
-           {
-               c = translate_altkeys(bioskey(bioskey_read)); /* get the key */
-               /*
-                * translate a few things for inchar():
-                * 0x0000 == CTRL-break         -> 3    (CTRL-C)
-                * 0x0300 == CTRL-@             -> NUL
-                * 0xnn00 == extended key code  -> K_NUL, nn
-                * 0xnne0 == enhanced keyboard  -> K_NUL, nn
-                * K_NUL                        -> K_NUL, 3
-                */
-               if (c == 0)
-                   c = 3;
-               else if (c == 0x0300)
-                   c = NUL;
-               else if ((c & 0xff) == 0
-                       || c == K_NUL
-                       || c == 0x4e2b
-                       || c == 0x4a2d
-                       || c == 0x372a
-                       || ((c & 0xff) == 0xe0 && c != 0xe0))
-               {
-                   if (c == K_NUL)
-                       c = 3;
-                   else
-                       c >>= 8;
-                   *buf++ = K_NUL;
-                   ++len;
-               }
-
-               if (len < maxlen)
-               {
-                   *buf++ = c;
-                   len++;
-#ifdef FEAT_MBYTE
-                   /* Convert from 'termencoding' to 'encoding'. Only
-                    * translate normal characters, not key codes. */
-                   if (input_conv.vc_type != CONV_NONE
-                                           && (len == 1 || buf[-2] != K_NUL))
-                       len += convert_input(buf - 1, 1, maxlen - len + 1) - 1;
-#endif
-               }
-               else
-                   nextchar = c;
-           }
-       }
-       else
-       {
-           while ((len == 0 || (p_consk ? cons_kbhit() : kbhit()))
-                   && len < maxlen)
-           {
-               switch (c = (p_consk ? cons_getch() : getch()))
-               {
-                   case 0:
-                       /* NUL means that there is another character.
-                        * Get it immediately, because kbhit() doesn't always
-                        * return TRUE for the second character.
-                        */
-                       if (p_consk)
-                           c = cons_getch();
-                       else
-                           c = getch();
-                       tmp_c = translate_altkeys(c << 8);
-                       if (tmp_c == (c << 8))
-                       {
-                           *buf++ = K_NUL;
-                           ++len;
-                       }
-                       else
-                           c = tmp_c;
-                       break;
-                   case K_NUL:
-                       *buf++ = K_NUL;
-                       ++len;
-                       c = 3;
-                       break;
-                   case 3:
-                       cbrk_pressed = TRUE;
-                       /*FALLTHROUGH*/
-                   default:
-                       break;
-               }
-               if (len < maxlen)
-               {
-                   *buf++ = c;
-                   ++len;
-               }
-               else
-                   nextchar = c;
-           }
-       }
-    }
-#ifdef FEAT_MOUSE
-    show_mouse(FALSE);
-#endif
-
-    beep_count = 0;        /* may beep again now that we got some chars */
-    return len;
-}
-
-/*
- * return non-zero if a character is available
- */
-    int
-mch_char_avail(void)
-{
-    return WaitForChar(0L);
-}
-
-#ifdef DJGPP
-# define INT_ARG    int
-#else
-# define INT_ARG
-#endif
-
-/*
- * function for ctrl-break interrupt
- */
-    static void interrupt
-#ifdef DJGPP
-catch_cbrk(int a)
-#else
-catch_cbrk(void)
-#endif
-{
-    cbrk_pressed = TRUE;
-    ctrlc_pressed = TRUE;
-}
-
-#ifndef DJGPP
-/*
- * ctrl-break handler for DOS. Never called when a ctrl-break is typed, because
- * we catch interrupt 1b. If you type ctrl-C while Vim is waiting for a
- * character this function is not called. When a ctrl-C is typed while Vim is
- * busy this function may be called. By that time a ^C has been displayed on
- * the screen, so we have to redisplay the screen. We can't do that here,
- * because we may be called by DOS. The redraw is in mch_inchar().
- */
-    static int _cdecl
-cbrk_handler(void)
-{
-    delayed_redraw = TRUE;
-    return 1;              /* resume operation after ctrl-break */
-}
-
-/*
- * function for critical error interrupt
- * For DOS 1 and 2 return 0 (Ignore).
- * For DOS 3 and later return 3 (Fail)
- */
-    static void interrupt
-catch_cint(
-    unsigned bp,
-    unsigned di,
-    unsigned si,
-    unsigned ds,
-    unsigned es,
-    unsigned dx,
-    unsigned cx,
-    unsigned bx,
-    unsigned ax)
-{
-    ax = (ax & 0xff00);            /* set AL to 0 */
-    if (_osmajor >= 3)
-       ax |= 3;            /* set AL to 3 */
-}
-#endif
-
-/*
- * Set the interrupt vectors for use with Vim on or off.
- * on == TRUE means as used within Vim
- */
-    static void
-set_interrupts(int on)
-{
-    static int saved_cbrk;
-#ifndef DJGPP
-    static void interrupt (*old_cint)();
-#endif
-    static void interrupt (*old_cbrk)(INT_ARG);
-
-    if (on)
-    {
-       saved_cbrk = getcbrk();         /* save old ctrl-break setting */
-       setcbrk(0);                     /* do not check for ctrl-break */
-#ifdef DJGPP
-       old_cbrk = signal(SIGINT, catch_cbrk);  /* critical error interrupt */
-#else
-       old_cint = getvect(0x24);       /* save old critical error interrupt */
-       setvect(0x24, catch_cint);      /* install our critical error interrupt */
-       old_cbrk = getvect(0x1B);       /* save old ctrl-break interrupt */
-       setvect(0x1B, catch_cbrk);      /* install our ctrl-break interrupt */
-       ctrlbrk(cbrk_handler);          /* vim's ctrl-break handler */
-#endif
-       if (term_console)
-           out_str(T_ME);              /* set colors */
-    }
-    else
-    {
-       setcbrk(saved_cbrk);            /* restore ctrl-break setting */
-#ifdef DJGPP
-       signal(SIGINT,old_cbrk);        /* critical error interrupt */
-#else
-       setvect(0x24, old_cint);        /* restore critical error interrupt */
-       setvect(0x1B, old_cbrk);        /* restore ctrl-break interrupt */
-#endif
-       /* restore ctrl-break handler, how ??? */
-       if (term_console)
-           mynormvideo();              /* restore screen colors */
-    }
-}
-
-/*
- * We have no job control, fake it by starting a new shell.
- */
-    void
-mch_suspend(void)
-{
-    suspend_shell();
-}
-
-extern int _fmode;
-
-/*
- * Prepare window for use by Vim.
- */
-    void
-mch_init(void)
-{
-    union REGS regs;
-
-#if defined(DJGPP) && defined(FEAT_CLIPBOARD)
-    __dpmi_regs  dpmi_regs;
-#endif
-
-    /*
-     * Get the video attributes at the cursor.  These will be used as the
-     * default attributes.
-     */
-    regs.h.ah = 0x08;
-    regs.h.bh = 0x00;          /* video page 0 */
-    int86(0x10, &regs, &regs);
-    orig_attr = regs.h.ah;
-    mynormvideo();
-    if (cterm_normal_fg_color == 0)
-       cterm_normal_fg_color = (orig_attr & 0xf) + 1;
-    if (cterm_normal_bg_color == 0)
-       cterm_normal_bg_color = ((orig_attr >> 4) & 0xf) + 1;
-
-    term_console = TRUE;    /* assume using the console for the things here */
-    _fmode = O_BINARY;     /* we do our own CR-LF translation */
-    out_flush();
-    set_interrupts(TRUE);   /* catch interrupts */
-
-#ifdef DJGPP
-    /*
-     * Use Long File Names by default, if $LFN not set.
-     */
-    if (getenv("LFN") == NULL)
-       putenv("LFN=y");
-
-    get_screenbase();
-#endif
-
-#ifdef FEAT_MOUSE
-/* find out if a MS compatible mouse is available */
-    regs.x.ax = 0;
-    (void)int86(0x33, &regs, &regs);
-    mouse_avail = regs.x.ax;
-    /* best guess for mouse coordinate computations */
-    mch_get_shellsize();
-    if (Columns <= 40)
-       mouse_x_div = 16;
-    if (Rows == 30)
-       mouse_y_div = 16;
-#endif
-
-    /*
-     * Try switching to 16 colors for background, instead of 8 colors and
-     * blinking.  Does this always work?  Can the old value be restored?
-     */
-    regs.x.ax = 0x1003;
-    regs.h.bl = 0x00;
-    regs.h.bh = 0x00;
-    int86(0x10, &regs, &regs);
-
-    /*
-     * Test if we have an enhanced AT keyboard.  Write 0xFFFF to the keyboard
-     * buffer and try to read it back.  If we can't in 16 tries, it's an old
-     * type XT keyboard.
-     */
-    regs.h.ah = 0x05;
-    regs.x.cx = 0xffff;
-    int86(0x16, &regs, &regs);
-    if (regs.h.al != 1)        /* skip this when keyboard buffer is full */
-    {
-       int i;
-
-       for (i = 0; i < 16; ++i)
-       {
-           regs.h.ah = 0x10;
-           int86(0x16, &regs, &regs);
-           if (regs.x.ax == 0xffff)
-               break;
-       }
-       if (i == 16)    /* 0xffff not read, must be old keyboard */
-       {
-           bioskey_read = 0;
-           bioskey_ready = 1;
-       }
-    }
-
-#ifdef MCH_CURSOR_SHAPE
-    /* Save the old cursor shape */
-    mch_restore_cursor_shape(FALSE);
-    /* Initialise the cursor shape */
-    mch_update_cursor();
-#endif
-
-#if defined(DJGPP) && defined(FEAT_CLIPBOARD)
-    /*
-     * Check to see if the Windows clipboard is available, ie. are we
-     * running from a DOS session within Windows.  Obviously, the Windows
-     * clipboard will not be available if we're running under pure DOS.
-     *
-     * int 0x2f, AX = 0x1700 identifies the Windows version we're running
-     * under.  Upon return from the interrupt, if AX is unchanged, we're
-     * running under pure DOS and no Windows clipboard is available.
-     *
-     * Remark: could use int86() here but __dpmi_int() is recommended in
-     * the DJGPP docs, since int86() doesn't cover all available interrupts.
-     */
-    dpmi_regs.x.ax = 0x1700;
-    if (__dpmi_int(0x2f, &dpmi_regs) == -1)
-       /* real-mode interrupt failed? */
-       dpmi_regs.x.ax = 0x1700;        /* force failure */
-
-    if (dpmi_regs.x.ax == 0x1700)      /* no change in AX? */
-       clip_init(FALSE);               /* no clipboard available, too bad */
-    else                               /* else, running under Windows, OK */
-       clip_init(TRUE);                /* clipboard is available */
-#endif
-}
-
-    int
-mch_check_win(
-    int                argc,
-    char       **argv)
-{
-    /* store argv[0], may be used for $VIM */
-    if (*argv[0] != NUL)
-       exe_name = FullName_save((char_u *)argv[0], FALSE);
-
-    /*
-     * Try the DOS search path.  The executable may in
-     * fact be called differently, so try this last.
-     */
-    if (exe_name == NULL || *exe_name == NUL)
-       exe_name = searchpath("vim.exe");
-
-    if (isatty(1))
-       return OK;
-    return FAIL;
-}
-
-/*
- * Return TRUE if the input comes from a terminal, FALSE otherwise.
- */
-    int
-mch_input_isatty(void)
-{
-    if (isatty(read_cmd_fd))
-       return TRUE;
-    return FALSE;
-}
-
-#if defined(USE_FNAME_CASE) || defined(PROTO)
-/*
- * fname_case(): Set the case of the file name, if it already exists.
- * TODO: should expand short to long file names.  Need to use DOS interrupts,
- * see DJGPP sources libc/dos/dir/findfirs.c.
- */
-    void
-fname_case(char_u *name, int len)
-{
-    char_u         *tail;
-    struct ffblk    fb;
-
-    slash_adjust(name);
-    if (findfirst(name, &fb, 0) == 0)
-    {
-       tail = gettail(name);
-       if (len == 0 ? STRLEN(tail) == STRLEN(fb.ff_name)
-               : (tail - name) + STRLEN(fb.ff_name) < len)
-           STRCPY(tail, fb.ff_name);
-    }
-}
-#endif
-
-/*
- * return process ID
- */
-    long
-mch_get_pid(void)
-{
-    return (long)0;
-}
-
-/*
- * Change default drive (just like _chdrive of Borland C 3.1)
- */
-    static int
-change_drive(int drive)
-{
-    union REGS regs;
-
-    regs.h.ah = 0x0e;
-    regs.h.dl = drive - 1;
-    intdos(&regs, &regs);   /* set default drive */
-    regs.h.ah = 0x19;
-    intdos(&regs, &regs);   /* get default drive */
-    if (regs.h.al == drive - 1)
-       return 0;
-    return -1;
-}
-
-/*
- * Get absolute file name into buffer 'buf' of length 'len' bytes.
- * All slashes are replaced with backslashes, to avoid trouble when comparing
- * file names.  When 'shellslash' set do it the other way around.
- *
- * return FAIL for failure, OK otherwise
- */
-    int
-mch_FullName(
-    char_u     *fname,
-    char_u     *buf,
-    int                len,
-    int                force)
-{
-    if (!force && mch_isFullName(fname))       /* already expanded */
-    {
-       vim_strncpy(buf, fname, len - 1);
-       slash_adjust(buf);
-       return OK;
-    }
-
-#ifdef __BORLANDC__            /* Only Borland C++ has this */
-    if (_fullpath((char *)buf, (char *)fname, len - 1) == NULL)
-       return FAIL;
-    return OK;
-#else                  /* almost the same as mch_FullName() in os_unix.c */
-    {
-# if 1
-       char_u  fullpath[MAXPATHL];
-
-       if (!_truename(fname, fullpath))
-           return FAIL;
-       slash_adjust(fullpath);     /* Only needed when 'shellslash' set */
-       vim_strncpy(buf, fullpath, len - 1);
-       return OK;
-
-# else  /* Old code, to be deleted... */
-       int     l;
-       char_u  olddir[MAXPATHL];
-       char_u  *p, *q;
-       int     c;
-       int     retval = OK;
-
-       *buf = 0;
-       /*
-        * change to the directory for a moment,
-        * and then do the getwd() (and get back to where we were).
-        * This will get the correct path name with "../" things.
-        */
-       p = vim_strrchr(fname, '/');
-       q = vim_strrchr(fname, '\\');
-       if (q != NULL && (p == NULL || q > p))
-           p = q;
-       q = vim_strrchr(fname, ':');
-       if (q != NULL && (p == NULL || q > p))
-           p = q;
-       if (p != NULL)
-       {
-           if (getcwd(olddir, MAXPATHL) == NULL)
-           {
-               p = NULL;       /* can't get current dir: don't chdir */
-               retval = FAIL;
-           }
-           else
-           {
-               if (p == fname)                 /* /fname           */
-                   q = p + 1;                  /* -> /             */
-               else if (q + 1 == p)            /* ... c:\foo       */
-                   q = p + 1;                  /* -> c:\           */
-               else                            /* but c:\foo\bar   */
-                   q = p;                      /* -> c:\foo        */
-
-               c = *q;                 /* truncate at start of fname */
-               *q = NUL;
-# ifdef DJGPP
-               STRCPY(buf, fname);
-               slash_adjust(buf);      /* needed when fname starts with \ */
-               if (mch_chdir(buf))     /* change to the directory */
-# else
-               if (mch_chdir(fname))   /* change to the directory */
-# endif
-                   retval = FAIL;
-               else
-               {
-                   fname = q;
-                   if (c == psepc)         /* if we cut the name at a */
-                       fname++;            /* '\', don't add it again */
-               }
-               *q = c;
-           }
-       }
-       if (getcwd(buf, len) == NULL)
-       {
-           retval = FAIL;
-           *buf = NUL;
-       }
-#  ifdef USE_FNAME_CASE
-       else
-       {
-           char_u      *head;
-           char_u      *tail;
-           struct ffblk fb;
-           int         c;
-           int         added;
-
-           /* Apparently "longna~1" isn't expanded by getcwd(), at least not
-            * for DJGPP.  Expand it here.  Have to do each dirname
-            * separately. */
-           slash_adjust(buf);
-           head = buf;
-           if (isalpha(*head) && head[1] == ':')
-               head += 2;      /* skip "c:" */
-           while (*head != NUL)
-           {
-               /* Advance "head" to the start of a dirname and "tail" to just
-                * after it. */
-               while (*head == '/' || *head == '\\')
-                   ++head;
-               for (tail = head; *tail != NUL; ++tail)
-                   if (*tail == '/' || *tail == '\\')
-                       break;
-               c = *tail;
-               *tail = NUL;
-
-               if (findfirst(buf, &fb, FA_DIREC) == 0)
-               {
-                   added = STRLEN(fb.ff_name);
-                   if ((head - buf) + added + STRLEN(tail + 1) + 2 < len)
-                   {
-                       added -= (tail - head);
-                       if (added != 0)
-                           STRMOVE(tail + 1 + added, tail + 1);
-                       STRCPY(head, fb.ff_name);
-                       tail += added;
-                   }
-               }
-               *tail = c;
-               head = tail;
-           }
-       }
-#  endif
-       if (p != NULL)
-           mch_chdir(olddir);
-       /*
-        * Concatenate the file name to the path.
-        */
-       if (*fname != NUL)
-       {
-           l = STRLEN(buf);
-           if (l > 0 && buf[l - 1] != '/' && buf[l - 1] != '\\')
-               strcat(buf, pseps);
-           strcat(buf, fname);
-       }
-       return retval;
-# endif
-    }
-#endif
-}
-
-/*
- * Replace all slashes by backslashes.
- * This used to be the other way around, but MS-DOS sometimes has problems
- * with slashes (e.g. in a command name).  We can't have mixed slashes and
- * backslashes, because comparing file names will not work correctly.  The
- * commands that use a file name should try to avoid the need to type a
- * backslash twice.
- * When 'shellslash' set do it the other way around.
- */
-    void
-slash_adjust(char_u *p)
-{
-#ifdef OLD_DJGPP    /* this seems to have been fixed in DJGPP 2.01 */
-    /* DJGPP can't handle a file name that starts with a backslash, and when it
-     * starts with a slash there should be no backslashes */
-    if (*p == '\\' || *p == '/')
-       while (*p)
-       {
-           if (*p == '\\')
-               *p = '/';
-           mb_ptr_adv(p);
-       }
-    else
-#endif
-    while (*p)
-    {
-       if (*p == psepcN)
-           *p = psepc;
-       mb_ptr_adv(p);
-    }
-}
-
-/*
- * Return TRUE if "fname" does not depend on the current directory.
- */
-    int
-mch_isFullName(char_u *fname)
-{
-    /* A name like "d:/foo" and "//server/share" is absolute */
-    return (fname[0] != NUL && fname[1] == ':'
-                                    && (fname[2] == '/' || fname[2] == '\\'))
-       || (fname[0] == fname[1] && (fname[0] == '/' || fname[0] == '\\'));
-}
-
-
-    void
-mch_early_init(void)
-{
-}
-
-/*
- * Careful: mch_exit() may be called before mch_init()!
- */
-    void
-mch_exit(int r)
-{
-    settmode(TMODE_COOK);
-    stoptermcap();
-    set_interrupts(FALSE);         /* restore interrupts */
-#ifdef DJGPP
-    set_sys_cursor();
-#endif
-    /* Somehow outputting CR-NL causes the original colors to be restored */
-    out_char('\r');
-    out_char('\n');
-    out_flush();
-    ml_close_all(TRUE);                    /* remove all memfiles */
-#ifdef MCH_CURSOR_SHAPE
-    mch_restore_cursor_shape(TRUE);
-#endif
-    exit(r);
-}
-
-/*
- * set the tty in (raw) ? "raw" : "cooked" mode
- * Does not change the tty, as bioskey() and kbhit() work raw all the time.
- */
-    void
-mch_settmode(int tmode)
-{
-}
-
-#ifdef FEAT_MOUSE
-    void
-mch_setmouse(int on)
-{
-    mouse_active = on;
-    mouse_hidden = TRUE;       /* don't show it until moved */
-}
-#endif
-
-/*
- * set screen mode
- * return FAIL for failure, OK otherwise
- */
-    int
-mch_screenmode(char_u *arg)
-{
-    int                    mode;
-    int                    i;
-    static char           *(names[]) = {"BW40", "C40", "BW80", "C80", "MONO", "C4350"};
-    static int     modes[]   = { BW40,   C40,   BW80,   C80,   MONO,   C4350};
-
-    mode = -1;
-    if (VIM_ISDIGIT(*arg))                 /* mode number given */
-       mode = atoi((char *)arg);
-    else
-    {
-       for (i = 0; i < sizeof(names) / sizeof(char_u *); ++i)
-           if (stricmp(names[i], (char *)arg) == 0)
-           {
-               mode = modes[i];
-               break;
-           }
-    }
-    if (mode == -1)
-    {
-       EMSG("E362: Unsupported screen mode");
-       return FAIL;
-    }
-    textmode(mode);                /* use Borland function */
-#ifdef DJGPP
-    /* base address may have changed */
-    get_screenbase();
-#endif
-
-    /* Screen colors may have changed. */
-    out_str(T_ME);
-
-#ifdef FEAT_MOUSE
-    if (mode <= 1 || mode == 4 || mode == 5 || mode == 13 || mode == 0x13)
-       mouse_x_div = 16;
-    else
-       mouse_x_div = 8;
-    if (mode == 0x11 || mode == 0x12)
-       mouse_y_div = 16;
-    else if (mode == 0x10)
-       mouse_y_div = 14;
-    else
-       mouse_y_div = 8;
-    shell_resized();
-#endif
-    return OK;
-}
-
-/*
- * Structure used by Turbo-C/Borland-C to store video parameters.
- */
-#ifndef DJGPP
-extern struct text_info _video;
-#endif
-
-/*
- * try to get the real window size
- * return FAIL for failure, OK otherwise
- */
-    int
-mch_get_shellsize(void)
-{
-    struct text_info textinfo;
-
-    /*
-     * The screenwidth is returned by the BIOS OK.
-     * The screenheight is in a location in the bios RAM, if the display is
-     * EGA or VGA.
-     */
-    if (!term_console)
-       return FAIL;
-    gettextinfo(&textinfo);
-    Columns = textinfo.screenwidth;
-    Rows = textinfo.screenheight;
-#ifndef DJGPP
-    if (textinfo.currmode > 10)
-       Rows = *(char far *)MK_FP(0x40, 0x84) + 1;
-#endif
-
-    if (Columns < MIN_COLUMNS || Rows < MIN_LINES)
-    {
-       /* these values are overwritten by termcap size or default */
-       Columns = 80;
-       Rows = 25;
-       return FAIL;
-    }
-#ifdef DJGPP
-    mytextinit(&textinfo);   /* Added by JML, 1/15/98 */
-#endif
-
-    return OK;
-}
-
-/*
- * Set the active window for delline/insline.
- */
-    static void
-set_window(void)
-{
-    if (term_console)
-    {
-#ifndef DJGPP
-       _video.screenheight = Rows;
-#endif
-       mywindow(1, 1, Columns, Rows);
-    }
-    screen_start();
-}
-
-    void
-mch_set_shellsize(void)
-{
-    /* Should try to set the window size to Rows and Columns.
-     * May involve switching display mode....
-     * We assume the user knows the size and just use it. */
-}
-
-/*
- * Rows and/or Columns has changed.
- */
-    void
-mch_new_shellsize(void)
-{
-#ifdef FEAT_MOUSE
-    /* best guess for mouse coordinate computations */
-    if (Columns <= 40)
-       mouse_x_div = 16;
-    if (Rows == 30)
-       mouse_y_div = 16;
-#endif
-    set_window();
-#ifdef FEAT_MOUSE
-    mouse_area();      /* set area where mouse can go */
-#endif
-}
-
-#if defined(DJGPP) || defined(PROTO)
-/*
- * Check the number of Columns with a BIOS call.  This avoids a crash of the
- * DOS console when 'columns' is set to a too large value.
- */
-    void
-mch_check_columns(void)
-{
-    static union REGS  regs;
-
-    regs.h.ah = 0x0f;
-    (void)int86(0x10, &regs, &regs);
-    if ((unsigned)Columns > (unsigned)regs.h.ah)
-       Columns = (unsigned)regs.h.ah;
-}
-#endif
-
-/*
- * call shell, return FAIL for failure, OK otherwise
- * options: SHELL_*, see vim.h.
- */
-    int
-mch_call_shell(
-    char_u     *cmd,
-    int                options)
-{
-    int                x;
-    int                tmode = cur_tmode;
-#ifndef DJGPP
-    char_u     *newcmd;
-#endif
-
-    out_flush();
-#ifdef DJGPP
-    set_sys_cursor();
-#endif
-
-    if (options & SHELL_COOKED)
-       settmode(TMODE_COOK);   /* set to normal mode */
-    set_interrupts(FALSE);     /* restore interrupts */
-
-#ifdef DJGPP
-    /* ignore signals while external command is running */
-    signal(SIGINT, SIG_IGN);
-    signal(SIGHUP, SIG_IGN);
-    signal(SIGQUIT, SIG_IGN);
-    signal(SIGTERM, SIG_IGN);
-#endif
-    if (cmd == NULL)
-       x = system((char *)p_sh);
-    else
-    {
-#ifdef DJGPP
-       /*
-        * Use 'shell' for system().
-        */
-       setenv("SHELL", (char *)p_sh, 1);
-       x = system(cmd);
-#else
-       /* we use "command" to start the shell, slow but easy */
-       newcmd = alloc(STRLEN(p_sh) + STRLEN(p_shcf) + STRLEN(cmd) + 3);
-       if (newcmd == NULL)
-           x = -1;
-       else
-       {
-           sprintf((char *)newcmd, "%s %s %s", p_sh, p_shcf, cmd);
-           x = system((char *)newcmd);
-           vim_free(newcmd);
-       }
-#endif
-    }
-#ifdef DJGPP
-    signal(SIGINT, SIG_DFL);
-    signal(SIGHUP, SIG_DFL);
-    signal(SIGQUIT, SIG_DFL);
-    signal(SIGTERM, SIG_DFL);
-#endif
-    if (tmode == TMODE_RAW)
-       settmode(TMODE_RAW);    /* set to raw mode */
-    set_interrupts(TRUE);      /* catch interrupts */
-
-    if (x && !(options & SHELL_SILENT) && !emsg_silent)
-    {
-       MSG_PUTS("\nshell returned ");
-       msg_outnum((long)x);
-       msg_putchar('\n');
-    }
-
-    return x;
-}
-
-/*
- * check for an "interrupt signal": CTRL-break or CTRL-C
- */
-    void
-mch_breakcheck(void)
-{
-    if (ctrlc_pressed)
-    {
-       ctrlc_pressed = FALSE;
-       got_int = TRUE;
-    }
-}
-
-/*
- * Return TRUE if "p" contain a wildcard that can be expanded by
- * dos_expandpath().
- */
-    int
-mch_has_exp_wildcard(char_u *p)
-{
-    for ( ; *p; mb_ptr_adv(p))
-    {
-       if (vim_strchr((char_u *)"?*[", *p) != NULL
-               || (*p == '~' && p[1] != NUL))
-           return TRUE;
-    }
-    return FALSE;
-}
-
-/*
- * Return TRUE if "p" contain a wildcard or a "~1" kind of thing (could be a
- * shortened file name).
- */
-    int
-mch_has_wildcard(char_u *p)
-{
-    for ( ; *p; mb_ptr_adv(p))
-    {
-       if (vim_strchr((char_u *)
-#  ifdef VIM_BACKTICK
-                                   "?*$[`"
-#  else
-                                   "?*$["
-#  endif
-                                               , *p) != NULL
-               || (*p == '~' && p[1] != NUL))
-           return TRUE;
-    }
-    return FALSE;
-}
-
-/*
- * Change directory to "path".
- * The normal chdir() does not change the default drive.  This one does.
- * Return 0 for success, -1 for failure.
- */
-    int
-mch_chdir(char *path)
-{
-    if (path[0] == NUL)                    /* just checking... */
-       return 0;
-    if (p_verbose >= 5)
-    {
-       verbose_enter();
-       smsg((char_u *)"chdir(%s)", path);
-       verbose_leave();
-    }
-    if (path[1] == ':')                    /* has a drive name */
-    {
-       if (change_drive(TOLOWER_ASC(path[0]) - 'a' + 1))
-           return -1;              /* invalid drive name */
-       path += 2;
-    }
-    if (*path == NUL)              /* drive name only */
-       return 0;
-    return chdir(path);                    /* let the normal chdir() do the rest */
-}
-
-#ifdef DJGPP
-/*
- * mch_rename() works around a bug in rename (aka MoveFile) in
- * Windows 95: rename("foo.bar", "foo.bar~") will generate a
- * file whose short file name is "FOO.BAR" (its long file name will
- * be correct: "foo.bar~").  Because a file can be accessed by
- * either its SFN or its LFN, "foo.bar" has effectively been
- * renamed to "foo.bar", which is not at all what was wanted.  This
- * seems to happen only when renaming files with three-character
- * extensions by appending a suffix that does not include ".".
- * Windows NT gets it right, however, with an SFN of "FOO~1.BAR".
- * This works like mch_rename in os_win32.c, but is a bit simpler.
- *
- * Like rename(), returns 0 upon success, non-zero upon failure.
- * Should probably set errno appropriately when errors occur.
- */
-
-    int
-mch_rename(const char *OldFile, const char *NewFile)
-{
-    char_u  *TempFile;
-    int            retval;
-    int            fd;
-
-    /* rename() works correctly without long file names, so use that */
-    if (!_USE_LFN)
-       return rename(OldFile, NewFile);
-
-    if ((TempFile = alloc((unsigned)(STRLEN(OldFile) + 13))) == NULL)
-       return -1;
-
-    STRCPY(TempFile, OldFile);
-    STRCPY(gettail(TempFile), "axlqwqhy.ba~");
-    if (rename(OldFile, TempFile))
-       retval = -1;
-    else
-    {
-       /* now create an empty file called OldFile; this prevents
-        * the operating system using OldFile as an alias (SFN)
-        * if we're renaming within the same directory.  For example,
-        * we're editing a file called filename.asc.txt by its SFN,
-        * filena~1.txt.  If we rename filena~1.txt to filena~1.txt~
-        * (i.e., we're making a backup while writing it), the SFN
-        * for filena~1.txt~ will be filena~1.txt, by default, which
-        * will cause all sorts of problems later in buf_write().  So, we
-        * create an empty file called filena~1.txt and the system will have
-        * to find some other SFN for filena~1.txt~, such as filena~2.txt
-        */
-       if ((fd = open(OldFile, O_RDWR|O_CREAT|O_EXCL, 0444)) < 0)
-           return -1;
-       retval = rename(TempFile, NewFile);
-       close(fd);
-       mch_remove((char_u *)OldFile);
-
-       /* If renaming to NewFile failed, rename TempFile back to OldFile, so
-        * that it looks like nothing happened. */
-       if (retval)
-           rename(TempFile, OldFile);
-    }
-    vim_free(TempFile);
-
-    return retval;  /* success */
-}
-#endif
-
-#if defined(DJGPP) || defined(PROTO)
-/*
- * setlocale() for DJGPP with MS-DOS codepage support
- * Author: Cyril Slobin <slobin@fe.msk.ru>
- *
- * Scaled down a lot for use by Vim: Only support setlocale(LC_ALL, "").
- */
-
-#undef setlocale
-
-#ifndef PROTO
-# include <go32.h>
-# include <inlines/ctype.ha>
-#endif
-#include <locale.h>
-
-#define UPCASE (__dj_ISALNUM | __dj_ISALPHA | __dj_ISGRAPH | __dj_ISPRINT | __dj_ISUPPER)
-#define LOCASE (__dj_ISALNUM | __dj_ISALPHA | __dj_ISGRAPH | __dj_ISPRINT | __dj_ISLOWER)
-
-    char *
-djgpp_setlocale(void)
-{
-    __dpmi_regs regs;
-    struct { char id; unsigned short off, seg; } __attribute__ ((packed)) info;
-    unsigned char buffer[0x82], lower, upper;
-    int i;
-
-    regs.x.ax = 0x6502;
-    regs.x.bx = 0xffff;
-    regs.x.dx = 0xffff;
-    regs.x.cx = 5;
-    regs.x.es = __tb >> 4;
-    regs.x.di = __tb & 0xf;
-
-    __dpmi_int(0x21, &regs);
-
-    if (regs.x.flags & 1)
-       return NULL;
-
-    dosmemget(__tb, 5, &info);
-    dosmemget((info.seg << 4) + info.off, 0x82, buffer);
-
-    if (*(short *)buffer != 0x80)
-       return NULL;
-
-    /* Fix problem of underscores being replaced with y-umlaut. (Levin) */
-    if (buffer[26] == 0x5f)
-       buffer[26] = 0x98;
-
-    for (i = 0; i < 0x80; i++)
-    {
-       lower = i + 0x80;
-       upper = (buffer+2)[i];
-       if (lower != upper)
-       {
-           __dj_ctype_flags[lower+1] = LOCASE;
-           __dj_ctype_toupper[lower+1] = upper;
-           if (__dj_ctype_flags[upper+1] == 0)
-               __dj_ctype_flags[upper+1] = UPCASE;
-           if (__dj_ctype_tolower[upper+1] == upper)
-               __dj_ctype_tolower[upper+1] = lower;
-       }
-    }
-
-    return "C";
-}
-
-#if defined(FEAT_CLIPBOARD) || defined(PROTO)
-
-/*
- * Clipboard stuff, for cutting and pasting text to other windows.
- *
- * Implementation of DOS/Windows clipboard data transfer
- * by David Kotchan (dkotchan@sympatico.ca)
- */
-
-#define CF_TEXT            0x01    /* Windows clipboard format: Windows (ANSI) text */
-#define CF_OEMTEXT  0x07    /* Windows clipboard format: OEM (DOS) text */
-#define CF_VIMCLIP  0x04    /* trick: SYLK clipboard format for VimClipboard */
-
-static int Win16OpenClipboard(void);
-static int Win16CloseClipboard(void);
-static int Win16EmptyClipboard(void);
-static char_u *Win16GetClipboardData(int clip_data_format);
-static int Win16SetClipboardData(int clip_data_format, char_u *clip_data, int clip_data_size, int clip_data_type);
-
-/*
- * Make vim the owner of the current selection.  Return OK upon success.
- */
-    int
-clip_mch_own_selection(VimClipboard *cbd)
-{
-    /*
-     * Never actually own the clipboard.  If another application sets the
-     * clipboard, we don't want to think that we still own it.
-     */
-    return FAIL;
-}
-
-/*
- * Make vim NOT the owner of the current selection.
- */
-    void
-clip_mch_lose_selection(VimClipboard *cbd)
-{
-    /* Nothing needs to be done here */
-}
-
-/*
- * Read the Windows clipboard text and put it in Vim's clipboard register.
- */
-    void
-clip_mch_request_selection(VimClipboard *cbd)
-{
-    int                type = MAUTO;
-    char_u     *pAllocated = NULL;
-    char_u     *pClipText = NULL;
-    int                clip_data_format = 0;
-
-    if (Win16OpenClipboard())
-    {
-       /* Check for Vim's own clipboard format first.  The CF_VIMCLIP format
-        * is just ordinary text (like CF_TEXT) except prepended by the
-        * selection type (as a single character).  Note that under DOS we
-        * actually cannot define a custom CF_VIMCLIP clipboard format; we
-        * use instead one of the existing Windows-defined formats, usually
-        * "DIF" or "SYLK".  See Win16GetClipboardData() for details.
-        *
-        * Note that Win16GetClipboardData() returns the address of the memory
-        * block it allocated.  This is not necessary the start of the
-        * clipboard text data: there may be other bytes ahead of the
-        * text (particularly for CF_VIMCLIP) which are used for data
-        * management.  So pClipText is not necessarily == pAllocated.
-        */
-
-       if ((pAllocated = Win16GetClipboardData(CF_VIMCLIP)) != NULL)
-       {
-           clip_data_format = CF_VIMCLIP;
-           pClipText = pAllocated;
-
-           switch (*pClipText++)       /* after ++, pClipText points to text */
-           {
-               default:
-               case 'L':       type = MLINE;   break;
-               case 'C':       type = MCHAR;   break;
-               case 'B':       type = MBLOCK;  break;
-           }
-       }
-
-       /* Otherwise, check for the normal Windows text formats.  There are
-        * two of these: CF_TEXT (common) and CF_OEMTEXT (used for DOS
-        * compatibility).  Experiments show that, under the DOS/Windows
-        * clipboard interface, writing CF_TEXT data to the clipboard
-        * automatically creates a CF_OEMTEXT format as well.
-        */
-
-       else if ((pAllocated = Win16GetClipboardData(CF_TEXT)) != NULL)
-       {
-           clip_data_format = CF_TEXT;
-           pClipText = pAllocated;
-       }
-
-       else if ((pAllocated = Win16GetClipboardData(CF_OEMTEXT)) != NULL)
-       {
-           clip_data_format = CF_OEMTEXT;
-           pClipText = pAllocated;
-       }
-
-       /* Did we get anything? */
-
-       if (pClipText != NULL)
-       {
-           char_u *pDest;
-           char_u *pStart;
-           char_u *pEnd;
-
-           long_u clip_data_size = 0;
-
-           /* The Windows clipboard normally stores its text lines terminated
-            * by <CR><NL>.  But Vim uses only <NL>, so translate the <CR><NL>
-            * into <NL>.  Also, watch for possible null bytes at the end of
-            * pClipText.  These are padding added by "get_clipboard_data"
-            * (int 0x2f, AX= 0x1705) in order to round the data size up to the
-            * next multiple of 32 bytes.  See Win16GetClipboardData() for
-            * details.
-            */
-
-           pDest = strstr( pClipText, "\r\n" );    /* find first <CR><NL> */
-
-           if (pDest != NULL)                  /* found one? */
-           {
-               pStart = pDest + 1;             /* points to <NL> after <CR> */
-               pEnd = strstr( pStart, "\r\n" );/* find next <CR><NL> */
-
-               while (pEnd != NULL)            /* found one? */
-               {
-                   memmove(pDest, pStart, (long)(pEnd - pStart));
-                                                       /* exclude <CR> */
-                   pDest += (long)(pEnd - pStart);     /* new destination */
-                   pStart = pEnd + 1;                  /* new starting point */
-                   pEnd = strstr(pStart, "\r\n");      /* find next <CR><NL> */
-               }
-
-               /* Fell out of while() loop: no more <CR><NL> pairs.  Just copy
-                * the rest of the data, up to the first null byte.  */
-               pEnd = strchr(pStart, '\0');            /* find first null */
-
-               memmove(pDest, pStart, (long)(pEnd - pStart)); /* exclude nul */
-               pDest += (long)(pEnd - pStart);
-               *pDest = '\0';                              /* terminate */
-
-               /* Now that all <CR><NL> pairs have been "compressed" into just
-                * <NL>'s, determine the true text length.  */
-               clip_data_size = (long_u)(pDest - pClipText);
-           }
-           else
-           {
-               /* no <CR><NL> pairs at all */
-               /* Since the data may have been padded with trailing nulls,
-                * determine the true string length. */
-               clip_data_size = STRLEN(pClipText);     /* true data length */
-           }
-
-           /* Copy the cleaned-up data over to Vim's clipboard "*" register. */
-           clip_yank_selection(type, pClipText, clip_data_size, cbd);
-
-           /* Free the memory that Win16GetClipboardData() allocated. */
-           vim_free(pAllocated);
-       }
-
-       Win16CloseClipboard();
-
-    }  // end if (Win16OpenClipboard())
-}
-
-/*
- * Send the currently selected Vim text to the Windows clipboard.
- */
-    void
-clip_mch_set_selection( VimClipboard *cbd )
-{
-    char_u     *pClipData = NULL;
-    long_u     clip_data_size;
-    int                clip_data_type;
-
-    /* If the '*' register isn't already filled in, fill it in now. */
-    cbd->owned = TRUE;
-    clip_get_selection(cbd);
-    cbd->owned = FALSE;
-
-    /*
-     * clip_convert_selection() returns a pointer to a buffer containing
-     * the text to send to the Windows clipboard, together with a count
-     * of the number of characters (bytes) in the buffer.  The function's
-     * return value is the 'type' of selection: MLINE, MCHAR, or MBLOCK;
-     * or -1 for failure.
-     */
-    clip_data_type = clip_convert_selection(&pClipData, &clip_data_size, cbd);
-
-    if (clip_data_type < 0)        /* could not convert? */
-       return;                     /* early exit */
-
-    if (Win16OpenClipboard())
-    {
-       if (Win16EmptyClipboard())
-       {
-           int sentOK;
-
-           sentOK = Win16SetClipboardData(CF_TEXT, pClipData,
-                                             clip_data_size, clip_data_type);
-           sentOK = Win16SetClipboardData(CF_VIMCLIP,
-                        pClipData, clip_data_size, clip_data_type) && sentOK;
-
-           if (!sentOK)
-           {
-               /* one or both of Win16SetClipboardData() failed. */
-               /* Technically we don't know why Win16SetClipboardData()
-                * failed, but almost always it will be because there wasn't
-                * enough DOS memory to buffer the data, so report that as the
-                * problem.
-                *
-                * We report the error here (instead of in
-                * Win16SetClipboardData()) because we don't want the error
-                * reported twice.
-                */
-               EMSG("E450: Selection too large, cannot allocate DOS buffer");
-           }
-       }
-
-       Win16CloseClipboard();
-    }
-
-    /* release memory allocated by clip_convert_selection() */
-    vim_free(pClipData);
-
-    return;
-}
-
-/*
- * Win16OpenClipboard: open the Windows clipboard.  The clipboard must be open
- * before it can be communicated with at all.  Return TRUE on success,
- * FALSE on failure.
- */
-    static int
-Win16OpenClipboard(void)
-{
-    __dpmi_regs  dpmi_regs;
-
-    long    start_time;
-    int            tick_count;
-
-    /* int 0x2f, AX = 0x1701 attempts to open the Windows clipboard.  Upon
-     * return from the interrupt, if AX is non-zero, the clipboard was
-     * successfully opened.  If AX is zero, the clipboard could not be opened
-     * because it is currently in use by another process.
-     *
-     * Remark: other DOS programs I (dk) have written that use the Windows
-     * clipboard sometimes encounter the problem that the clipboard cannot
-     * be opened even though it is demonstrably not in use by any other
-     * process.  In all cases, repeated attempts to open the clipboard
-     * eventually succeed, but the initial attempt occasionally fails.
-     *
-     * The problem is intermittent and appears to be related to DOS being
-     * "busy" at certain unpredictable times.  DOS maintains two internal
-     * flags that indicate whether it's busy: InDOS and CritErr.  The
-     * location of InDOS can be found by calling int 0x21, AH = 0x34.  The
-     * location of CritErr can be found by calling int 0x21, AX = 0x5d06.
-     * If either of these flags is set, DOS is "busy" and cannot be
-     * interrupted.  See "Undocumented DOS" by Schulman et al for details.
-     *
-     * However here I take the easier approach that if the first call to open
-     * the clipboard does not succeed, just try again.  In fact, try once per
-     * biostime() clock tick, up to 18 times (about one second).
-     */
-
-    tick_count = 0;
-
-    dpmi_regs.x.ax = 0x1701;   /* open Windows clipboard */
-    if (__dpmi_int(0x2f, &dpmi_regs) == -1)
-    {
-       /* real-mode interrupt failed? */
-       return FALSE;           /* FALSE --> clipboard not open */
-    }
-
-    /* wait up to one second */
-    while (dpmi_regs.x.ax == 0 && tick_count++ < 18)
-    {
-       /* Wait one clock tick (18.2 ticks/sec = 55 msec per tick).
-        *
-        * We busy-wait here.  Unfortunately, delay() and usleep() have been
-        * reported to give problems with the original Windows 95.  This is
-        * fixed in service pack 1, but not everybody installed that.
-        */
-       start_time = biostime(0, 0L);
-       while (biostime(0, 0L) == start_time)
-           ;
-
-       dpmi_regs.x.ax = 0x1701;    /* open Windows clipboard */
-       if (__dpmi_int(0x2f, &dpmi_regs) == -1)
-       {
-           /* real-mode interrupt failed? */
-           return FALSE;               /* FALSE --> clipboard not open */
-       }
-    }
-
-    /* Couldn't open the clipboard, even after 18 attempts? */
-
-    if (tick_count >= 18 && dpmi_regs.x.ax == 0)
-       return FALSE;           /* FALSE --> clipboard not open */
-
-    return TRUE;       /* TRUE --> clipboard opened successfully, OK */
-}
-
-/*
- * Win16CloseClipboard: close the Windows clipboard.  Return TRUE on
- * success, FALSE on failure.  This function can always be called,
- * whether the clipboard is open or not.
- */
-    static int
-Win16CloseClipboard(void)
-{
-    __dpmi_regs  dpmi_regs;
-
-    /* Close the clipboard.  This interrupt can always be called, even
-     * if the clipboard is already closed.
-     */
-
-    dpmi_regs.x.ax = 0x1708;       /* close the clipboard */
-    if (__dpmi_int(0x2f, &dpmi_regs) == -1)
-    {
-       /* real-mode interrupt failed? */
-       return FALSE;           /* FALSE --> clipboard could not be closed */
-    }
-
-    return TRUE;       /* TRUE --> clipboard closed successfully, OK */
-}
-
-/*
- * Win16EmptyClipboard: empty the (previously opened) Windows clipboard.
- * Return TRUE on success, FALSE on failure.
- */
-    static int
-Win16EmptyClipboard(void)
-{
-    __dpmi_regs  dpmi_regs;
-
-    /* int 0x2f, AX = 0x1702 attempts to empty the Windows clipboard.  Upon
-     * return from the interrupt, if AX == 0, the clipboard could not be
-     * emptied (for some reason).
-     */
-    dpmi_regs.x.ax = 0x1702;    /*  empty the Windows clipboard */
-    if (__dpmi_int(0x2f, &dpmi_regs) == -1)
-    {
-       /* real-mode interrupt failed? */
-       return FALSE;           /* FALSE --> clipboard could not be emptied */
-    }
-
-    /* Did we succeed in clearing the clipboard? */
-    if (dpmi_regs.x.ax == 0)
-       return FALSE;           /* FALSE --> clipboard could not be emptied */
-
-    return TRUE;               /* TRUE --> clipboard was emptied, OK */
-}
-
-/*
- * FreeDOSMemory: a helper function to free memory previously
- * allocated by a call to __dpmi_allocate_dos_memory().
- */
-    static void
-FreeDOSMemory(int protected_mode_selector)
-{
-    /* Free the DOS buffer and release the DPMI prot-mode selector.
-     *
-     * It's important that DOS memory be properly released because
-     * there's only a limited amount of it.  Therefore, if the call
-     * to __dpmi_free_dos_memory() fails, emit an error message
-     * unconditionally.
-     */
-    if (__dpmi_free_dos_memory(protected_mode_selector) == -1)
-       EMSG("E451: could not free DOS memory buffer (DJGPP)");
-}
-
-/*
- * Win16GetClipboardData: query the Windows clipboard as to whether data
- * is available in a particular clipboard format.  If data is
- * available, allocate a buffer for it and read the data from the
- * clipboard into the buffer.  Return a pointer to the buffer.  If
- * no data is available in the requested format, return NULL.
- *
- * This routine allocates memory to hold the retrieved clipboard
- * data.  It's the caller's responsibility to free this memory
- * once it's finished using it.  The memory should be freed by
- * calling vim_free().
- */
-    static char_u *
-Win16GetClipboardData(int clip_data_format)
-{
-    __dpmi_regs  dpmi_regs;
-
-    int                real_mode_segment_address;
-    int                protected_mode_selector;
-
-    char_u     *clip_data_buffer;
-    long_u     clip_data_size;
-
-    /* We only handle clipboard formats we recognize, others are ignored.
-     *
-     * It's not possible to create a custom clipboard format for VimClipboard
-     * data under DOS, so one of the predefined Windows formats had to be
-     * used for CF_VIMCLIP.  Two obscure formats, popular when Windows 3.0
-     * came out but no longer in much use today, are the DIF and SYLK formats.
-     * DIF is the Data Interchange Format, SYLK is the Symbolic Link format.
-     * They are both text formats and either one can be hijacked for use as
-     * "the VimClipboard format".  Of course, this conflicts with anyone who
-     * still *is* using DIF or SYLK data formats, but that will be very few
-     * people.
-     *
-     * I (dk) chose SYLK as the more obscure format because it was used
-     * mostly for Microsoft Multiplan (the pre-cursor to Excel) and it's not
-     * likely Multiplan is used anywhere much anymore.  Mind you, Excel can
-     * still export to both DIF and SYLK formats.
-     */
-
-    switch (clip_data_format)
-    {
-    case CF_VIMCLIP:               /* Vim's own special clipboard format */
-    case CF_TEXT:                  /* Windows text */
-    case CF_OEMTEXT:               /* DOS (OEM) text */
-
-       /* int 0x2f, AX = 0x1704 returns the number of bytes of data currently
-        * on the Windows clipboard, for the specified format.  Upon return
-        * from the interrupt, DX:AX = the number of bytes, rounded up to the
-        * nearest multiple of 32.
-        */
-
-       dpmi_regs.x.ax = 0x1704;    /* get size of clipbd data */
-       dpmi_regs.x.dx = clip_data_format;
-       if (__dpmi_int(0x2f, &dpmi_regs) == -1)
-       {
-           /* real-mode interrupt failed? */
-           return NULL;                                    /* early exit */
-       }
-
-       /* Did we get anything?  If not, this is not an error. */
-       if (dpmi_regs.x.dx == 0 && dpmi_regs.x.ax == 0)
-       {
-           /* no CF_VIMCLIP data? */
-           return NULL;                                    /* early exit */
-       }
-
-       /* There is data available in the requested clipboard format.
-        *
-        * Calculate data size.  Remember this is rounded up to the nearest
-        * multiple of 32, so clip_data_size is actually an upper limit.
-        * The extra bytes, if any, are set to null (0x00) when the data is
-        * read from the clipboard.  (Later:) actually I'm no longer sure
-        * this is strictly true: the end-of-data is marked by a null, but
-        * the extra bytes appear to sometimes be null, sometimes not.
-        * They may just be garbage.
-        */
-       clip_data_size = dpmi_regs.x.ax + (dpmi_regs.x.dx << 16);
-
-       /* Allocate memory to retrieve the data.  The buffer has to lie in the
-        * DOS memory region (in the first 1 MByte of address space) because
-        * the Windows clipboard interface expects a 16-bit segment:offset
-        * pointer to a buffer address within the DOS region.  Must therefore
-        * use __dpmi_allocate_dos_memory() instead of lalloc() or alloc().
-        */
-       real_mode_segment_address = __dpmi_allocate_dos_memory(
-               (clip_data_size + 15) >> 4,     /* buffer size, in 16-byte paragraphs */
-               &protected_mode_selector);      /* prot-mode selector for the address */
-
-       if (real_mode_segment_address == -1)
-       {
-           /* memory allocation failed. */
-
-           /* Technically we don't know why the allocation failed, but
-            * almost always it will be because there wasn't enough DOS
-            * memory to satisfy the request, so report that as the problem.
-            * On my system, DJGPP is able to satisfy a DOS allocation request
-            * up to about 600K in size.  This depends on your HIMEM.SYS and
-            * EMM386.EXE settings however.
-            */
-           EMSG("E452: Clipboard data too large, cannot allocate DOS buffer");
-           return NULL;                                    /* early exit */
-       }
-
-       /* Copy data from the clipboard into the buffer.  Experiments show that
-        * the Windows clipboard is smart enough to handle data transfers
-        * larger than 64K properly, even though the buffer address is a 16-bit
-        * segment:offset (which would normally limit the block size to 64K
-        * unless ES gets incremented).
-        */
-       dpmi_regs.x.ax = 0x1705;        /* get clipboard data */
-       dpmi_regs.x.dx = clip_data_format;              /* CF_VIMCLIP */
-       dpmi_regs.x.es = real_mode_segment_address;     /* buffer ad: segment */
-       dpmi_regs.x.bx = 0;                             /* buffer ad: offset */
-       if (__dpmi_int( 0x2f, &dpmi_regs) == -1)
-       {
-           /* real-mode interrupt failed? */
-           EMSG("E453: could not copy clipboard data to DOS buffer");
-           FreeDOSMemory(protected_mode_selector);     /* clean up DOS mem */
-           return NULL;                                /* early exit */
-       }
-
-       /* Clipboard data is now in DOS memory in the buffer pointed to by
-        * ES:BX.  Copy this into ordinary memory that Vim can access (ie.
-        * prot-mode memory).  Allocate one extra byte to ensure the text
-        * is terminated properly (in case it was somehow corrupted).
-        */
-       clip_data_buffer = (char_u *)lalloc(clip_data_size + 1, TRUE);
-
-       if (clip_data_buffer == NULL)
-       {
-           /* allocation failed? */
-           EMSG("E454: could not allocate clipboard memory buffer");
-           FreeDOSMemory(protected_mode_selector);     /* clean up DOS mem */
-           return NULL;                                /* early exit */
-       }
-
-       *(clip_data_buffer + clip_data_size) = '\0';    /* ensure terminated */
-
-       /* Copy the data from DOS memory to Vim-accessible memory. */
-       movedata(                               /* DJGPP version of memcpy() */
-               protected_mode_selector, 0, /* source: DOS ad (via selector) */
-               _my_ds(), (unsigned)clip_data_buffer,
-                                               /* target: normal mem address */
-               clip_data_size);                /* how many bytes */
-
-       /* Free the DOS buffer and release the DPMI prot-mode selector. */
-       FreeDOSMemory(protected_mode_selector);  /* clean up DOS memory */
-
-       return clip_data_buffer;    /* return pointer to allocated buffer */
-
-    default:           /* unknown clipboard format */
-       return NULL;
-    }
-}
-
-/*
- * Win16SetClipboardData: send 'clip_data_size' bytes of data from the buffer
- * pointed to by 'clip_data', to the Windows clipboard.  The data is
- * registered with the clipboard as being in the 'clip_data_format'
- * format.
- */
-    static int
-Win16SetClipboardData(
-       int     clip_data_format,
-       char_u  *clip_data,
-       int     clip_data_size,
-       int     clip_data_type)
-{
-    __dpmi_regs  dpmi_regs;
-
-    int                real_mode_segment_address;
-    int                protected_mode_selector;
-    long_u     protected_mode_offset = 0L;
-    int                total_size = clip_data_size;
-
-    char_u     *clip_sel_type;
-
-    /* If we're using the CF_VIMCLIP custom format, allocate an extra
-     * byte for clip_sel_type, which is a character indicating the type
-     * of text selection: MLINE, MCHAR, or MBLOCK.
-     */
-    if (clip_data_format == CF_VIMCLIP)
-       total_size++;                   /* extra byte for marker */
-
-    /* Data cannot be sent directly from a Vim string (pClipData) to
-     * the Windows clipboard, because the Windows clipboard interface
-     * expects a 16-bit (DOS) segment:offset address for the source
-     * buffer.  Therefore we must create a "transfer buffer" in the DOS
-     * memory region (in the first 1 MByte of address space) and copy
-     * the Vim string into that.  From there, the data can then be sent
-     * to the Windows clipboard.
-     *
-     * To allocate DOS memory, we must use __dpmi_allocate_dos_memory()
-     * instead of lalloc() or alloc().  If the allocation fails, it will
-     * almost invariably be because there is not enough DOS memory
-     * available to accommodate the size of clip_data.  There is nothing
-     * we can do about this, we simply have to fail.
-     */
-    real_mode_segment_address = __dpmi_allocate_dos_memory(
-           (total_size + 15) >> 4,     /* buffer size, in 16-byte paragraphs */
-           &protected_mode_selector);  /* prot-mode selector for the address */
-
-    if (real_mode_segment_address == -1)
-    {
-       /* memory allocation failed. */
-       /* Technically we don't know why the allocation failed, but
-        * almost always it will be because there wasn't enough DOS
-        * memory to satisfy the request.  On my system, DJGPP is able
-        * to satisfy a DOS allocation request up to about 600K in size.
-        * This depends however on HIMEM.SYS and EMM386.EXE settings.
-        */
-       return FALSE;                           /* early exit */
-    }
-
-    /* Copy data from Vim's buffer (clip_data) into the DOS transfer buffer.
-     * This can be larger than 64K; movedata() takes care of crossing any
-     * 16-bit segment boundaries.
-     *
-     * If we're using Vim's custom clipboard format, we must copy one extra
-     * byte to indicate the type of selection: line, character, or block.
-     */
-    if (clip_data_format == CF_VIMCLIP)
-    {
-       switch (clip_data_type)
-       {
-           default:
-           case MLINE:     clip_sel_type = "L";        break;
-           case MCHAR:     clip_sel_type = "C";        break;
-           case MBLOCK:    clip_sel_type = "B";        break;
-       }
-
-       movedata(
-               _my_ds(), (unsigned)clip_sel_type,
-                                           /* source: normal memory address */
-               protected_mode_selector, 0, /* target: DOS ad (via selector) */
-               1);                         /* how many bytes to copy */
-
-       protected_mode_offset += STRLEN(clip_sel_type); /* allow for marker */
-    }
-
-    movedata(
-       _my_ds(), (unsigned)clip_data,  /* source: normal memory address */
-       protected_mode_selector,        /* target: DOS address (via selector) */
-       protected_mode_offset,          /* non-zero, if using clip_sel_type */
-       clip_data_size);                /* how many bytes to copy */
-
-    /* Send data from the DOS transfer buffer to the Windows clipboard.
-     * int 0x2f, AX = 0x1703 sends SI:CX bytes of data from the buffer
-     * at ES:BX, to the clipboard.
-     */
-    dpmi_regs.x.ax = 0x1703;                   /* send clipboard data */
-    dpmi_regs.x.dx = clip_data_format;         /* flag: format of the data */
-    dpmi_regs.x.si = ((total_size >> 16)
-           & 0x0000ffffL);                     /* hi word of data size */
-    dpmi_regs.x.cx = (total_size & 0x0000ffffL);
-                                               /* lo word of data size */
-    dpmi_regs.x.es = real_mode_segment_address;        /* buffer address: segment */
-    dpmi_regs.x.bx = 0;                                /* buffer address: offset */
-    if (__dpmi_int(0x2f, &dpmi_regs) == -1)
-    {
-       /* real-mode interrupt failed. */
-       FreeDOSMemory(protected_mode_selector);   /* clean up DOS memory */
-       return FALSE;                             /* early exit */
-    }
-
-    /* Free the DOS buffer and release the DPMI prot-mode selector. */
-    FreeDOSMemory(protected_mode_selector);      /* clean up DOS memory */
-
-    return TRUE;       /* TRUE --> data successfully sent to clipboard */
-}
-
-#endif /* FEAT_CLIPBOARD */
-#endif /* DJGPP */
-
-/* common MS-DOS and Win16 code follows */
-
-    static int
-vim_chmod(char_u *name)
-{
-    char_u     *p;
-    int                f;
-    int                c = 0;
-
-    /* chmod() can't handle a file name with a trailing slash, remove it.
-     * But don't remove it for "/" or "c:/". */
-    p = name + STRLEN(name);
-    if (p > name)
-       --p;
-    if (p > name && (*p == '\\' || *p == '/') && p[-1] != ':')
-    {
-       c = *p;                         /* remove trailing (back)slash */
-       *p = NUL;
-    }
-    else
-       p = NULL;
-#if defined(__BORLANDC__) && (__BORLANDC__ > 0x410)
-    /* this also sets the archive bit, supported by Borland C 4.0 and later,
-     * where __BORLANDC__ is 0x450 (3.1 is 0x410) */
-    f = _rtl_chmod((char *)name, 0, 0);
-#else
-    f = _chmod((char *)name, 0, 0);
-#endif
-    if (p != NULL)
-       *p = c;                         /* put back (back)slash */
-    return f;
-}
-
-/*
- * get file permissions for 'name'
- * Returns -1 for error.
- * Returns FA_attributes defined in dos.h
- */
-    long
-mch_getperm(char_u *name)
-{
-    return (long)vim_chmod(name);      /* get file mode */
-}
-
-/*
- * set file permission for 'name' to 'perm'
- *
- * return FAIL for failure, OK otherwise
- */
-    int
-mch_setperm(
-    char_u     *name,
-    long       perm)
-{
-    perm |= FA_ARCH;       /* file has changed, set archive bit */
-#if defined(__BORLANDC__) && (__BORLANDC__ > 0x410)
-    return (_rtl_chmod((char *)name, 1, (int)perm) == -1 ? FAIL : OK);
-#else
-    return (_chmod((char *)name, 1, (int)perm) == -1 ? FAIL : OK);
-#endif
-}
-
-/*
- * Set hidden flag for "name".
- */
-    void
-mch_hide(char_u *name)
-{
-    /* DOS 6.2 share.exe causes "seek error on file write" errors when making
-     * the swap file hidden.  Thus don't do it. */
-}
-
-/*
- * return TRUE if "name" is a directory
- * return FALSE if "name" is not a directory
- * return FALSE for error
- *
- * beware of a trailing (back)slash
- */
-    int
-mch_isdir(char_u *name)
-{
-    int                f;
-
-    f = vim_chmod(name);
-    if (f == -1)
-       return FALSE;               /* file does not exist at all */
-    if ((f & FA_DIREC) == 0)
-       return FALSE;               /* not a directory */
-    return TRUE;
-}
-
-/*
- * Return 1 if "name" can be executed, 0 if not.
- * If "use_path" is FALSE only check if "name" is executable.
- * Return -1 if unknown.
- */
-    int
-mch_can_exe(
-    char_u     *name,
-    char_u     **path,
-    int                use_path)
-{
-    char       *p;
-    int                mode;
-
-    if (!use_path)
-    {
-       /* TODO: proper check if file is executable. */
-       mode = vim_chmod(name);
-       return mode != -1 && (mode & FA_DIREC) == 0;
-    }
-    p = searchpath(name);
-    if (p == NULL || mch_isdir(p))
-       return FALSE;
-    if (path != NULL)
-       *path = vim_strsave(p);
-    return TRUE;
-}
-
-/*
- * Check what "name" is:
- * NODE_NORMAL: file or directory (or doesn't exist)
- * NODE_WRITABLE: writable device, socket, fifo, etc.
- * NODE_OTHER: non-writable things
- */
-    int
-mch_nodetype(char_u *name)
-{
-    if (STRICMP(name, "AUX") == 0
-           || STRICMP(name, "CON") == 0
-           || STRICMP(name, "CLOCK$") == 0
-           || STRICMP(name, "NUL") == 0
-           || STRICMP(name, "PRN") == 0
-           || ((STRNICMP(name, "COM", 3) == 0
-                   || STRNICMP(name, "LPT", 3) == 0)
-               && VIM_ISDIGIT(name[3])
-               && name[4] == NUL))
-       return NODE_WRITABLE;
-    /* TODO: NODE_OTHER? */
-    return NODE_NORMAL;
-}
-
-/*
- * Get name of current directory into buffer 'buf' of length 'len' bytes.
- * Return OK for success, FAIL for failure.
- */
-    int
-mch_dirname(
-    char_u     *buf,
-    int                len)
-{
-#ifdef DJGPP
-    if (getcwd((char *)buf, len) == NULL)
-       return FAIL;
-    /* turn the '/'s returned by DJGPP into '\'s */
-    slash_adjust(buf);
-    return OK;
-#else
-    return (getcwd((char *)buf, len) != NULL ? OK : FAIL);
-#endif
-}
-
-/*
- * this version of remove is not scared by a readonly (backup) file
- *
- * returns -1 on error, 0 otherwise (just like remove())
- */
-    int
-mch_remove(char_u *name)
-{
-    (void)mch_setperm(name, 0);    /* default permissions */
-    return unlink((char *)name);
-}
-
-/*
- * Special version of getenv(): Use uppercase name.
- */
-    char_u *
-mch_getenv(char_u *name)
-{
-    int                i;
-#define MAXENVLEN 50
-    char_u     var_copy[MAXENVLEN + 1];
-    char_u     *p;
-    char_u     *res;
-
-    /*
-     * Take a copy of the argument, and force it to upper case before passing
-     * to getenv().  On DOS systems, getenv() doesn't like lower-case argument
-     * (unlike Win32 et al.)  If the name is too long to fit in var_copy[]
-     * allocate memory.
-     */
-    if ((i = STRLEN(name)) > MAXENVLEN)
-       p = alloc(i + 1);
-    else
-       p = var_copy;
-    if (p == NULL)
-       p = name;   /* out of memory, fall back to unmodified name */
-    else
-    {
-       for (i = 0; name[i] != NUL; ++i)
-           p[i] = toupper(name[i]);
-       p[i] = NUL;
-    }
-
-    res = (char_u *)getenv((char *)p);
-
-    if (p != var_copy && p != name)
-       vim_free(p);
-
-    return res;
-}
-
-/*
- * Insert user name in s[len].
- */
-    int
-mch_get_user_name(
-    char_u     *s,
-    int                len)
-{
-    *s = NUL;
-    return FAIL;
-}
-
-/*
- * Insert host name is s[len].
- */
-    void
-mch_get_host_name(
-    char_u     *s,
-    int                len)
-{
-#ifdef DJGPP
-    vim_strncpy(s, "PC (32 bits Vim)", len - 1);
-#else
-    vim_strncpy(s, "PC (16 bits Vim)", len - 1);
-#endif
-}
diff --git a/src/os_msdos.h b/src/os_msdos.h
deleted file mode 100644 (file)
index 245f478..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-/* vi:set ts=8 sts=4 sw=4:
- *
- * 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.
- */
-
-/*
- * MSDOS Machine-dependent things.
- */
-
-#include "os_dos.h"            /* common MS-DOS and Win32 stuff */
-
-#define BINARY_FILE_IO
-#define USE_EXE_NAME           /* use argv[0] for $VIM */
-#define SYNC_DUP_CLOSE         /* sync() a file with dup() and close() */
-#define USE_TERM_CONSOLE
-#ifdef DJGPP
-# include <fcntl.h>            /* defines _USE_LFN */
-# define USE_LONG_FNAME _USE_LFN    /* decide at run time */
-# define USE_FNAME_CASE
-# define HAVE_PUTENV
-#else
-# define SHORT_FNAME           /* always 8.3 file name */
-#endif
-#define HAVE_STDLIB_H
-#define HAVE_STRING_H
-#define HAVE_FCNTL_H
-#define HAVE_STRCSPN
-#define HAVE_STRICMP
-#define HAVE_STRFTIME          /* guessed */
-#define HAVE_STRNICMP
-#define HAVE_MEMSET
-#define HAVE_QSORT
-#define HAVE_ST_MODE           /* have stat.st_mode */
-#define HAVE_MATH_H
-#if defined(__DATE__) && defined(__TIME__)
-# define HAVE_DATE_TIME
-#endif
-#define BREAKCHECK_SKIP            1   /* call mch_breakcheck() each time, it's fast */
-#define HAVE_AVAIL_MEM
-
-/*
- * Borland C++ 3.1 doesn't have _RTLENTRYF
- */
-#ifdef __BORLANDC__
-# if __BORLANDC__ < 0x450
-#  define _RTLENTRYF
-# endif
-#endif
-
-#define FNAME_ILLEGAL "\"*?><|" /* illegal characters in a file name */
-
-/* cproto fails on missing include files */
-#ifndef PROTO
-# include <dos.h>
-# include <dir.h>
-# include <time.h>
-#endif
-
-#ifdef DJGPP
-# include <unistd.h>
-# define HAVE_LOCALE_H
-# define setlocale(c, p)    djgpp_setlocale()
-#endif
-
-#ifndef DJGPP
-typedef long off_t;
-#endif
-
-/*
- * Try several directories to put the temp files.
- */
-#define TEMPDIRNAMES   "$TMP", "$TEMP", "c:\\TMP", "c:\\TEMP", ""
-#define TEMPNAMELEN    128
-
-#ifndef DFLT_MAXMEM
-# define DFLT_MAXMEM   256             /* use up to 256Kbyte for buffer */
-#endif
-#ifndef DFLT_MAXMEMTOT
-# define DFLT_MAXMEMTOT        0               /* decide in set_init */
-#endif
-
-#ifdef DJGPP
-# define BASENAMELEN  (_USE_LFN?250:8) /* length of base of file name */
-#else
-# define BASENAMELEN       8           /* length of base of file name */
-#endif
-
-/* codes for msdos mouse event */
-#define MSDOS_MOUSE_LEFT       0x01
-#define MSDOS_MOUSE_RIGHT      0x02
-#define MSDOS_MOUSE_MIDDLE     0x04
-
-#ifdef DJGPP
-int mch_rename(const char *OldFile, const char *NewFile);
-#else
-# define mch_rename(src, dst) rename(src, dst)
-#endif
-
-#ifdef DJGPP
-# define vim_mkdir(x, y) mkdir((char *)(x), y)
-#else
-# define vim_mkdir(x, y) mkdir((char *)(x))
-#endif
-#define mch_rmdir(x) rmdir((char *)(x))
-
-#define mch_setenv(name, val, x) setenv(name, val, x)
index 843d422d1372aba679b7f47e6d111d0f0bb84896..7e4180b7d85115c5ec30a358479159ff8a4b5623 100644 (file)
@@ -38,9 +38,6 @@
 # if defined(UNIX) || defined(__EMX__) || defined(VMS)
 #  include "os_unix.pro"
 # endif
-# if defined(MSDOS)
-#  include "os_msdos.pro"
-# endif
 # ifdef WIN3264
 #  include "os_win32.pro"
 #  include "os_mswin.pro"
diff --git a/src/proto/os_msdos.pro b/src/proto/os_msdos.pro
deleted file mode 100644 (file)
index 3d3a3c7..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-/* os_msdos.c */
-void mch_set_normal_colors(void);
-void mch_update_cursor(void);
-long_u mch_avail_mem(int special);
-void mch_delay(long msec, int ignoreinput);
-void mch_write(char_u *s, int len);
-int mch_inchar(char_u *buf, int maxlen, long time, int tb_change_cnt);
-int mch_char_avail(void);
-void mch_suspend(void);
-void mch_init(void);
-int mch_check_win(int argc, char **argv);
-int mch_input_isatty(void);
-void fname_case(char_u *name, int len);
-long mch_get_pid(void);
-int mch_FullName(char_u *fname, char_u *buf, int len, int force);
-void slash_adjust(char_u *p);
-int mch_isFullName(char_u *fname);
-void mch_early_init(void);
-void mch_exit(int r);
-void mch_settmode(int tmode);
-void mch_setmouse(int on);
-int mch_screenmode(char_u *arg);
-int mch_get_shellsize(void);
-void mch_set_shellsize(void);
-void mch_new_shellsize(void);
-void mch_check_columns(void);
-int mch_call_shell(char_u *cmd, int options);
-void mch_breakcheck(void);
-int mch_has_exp_wildcard(char_u *p);
-int mch_has_wildcard(char_u *p);
-int mch_chdir(char *path);
-char *djgpp_setlocale(void);
-int clip_mch_own_selection(VimClipboard *cbd);
-void clip_mch_lose_selection(VimClipboard *cbd);
-void clip_mch_request_selection(VimClipboard *cbd);
-void clip_mch_set_selection(VimClipboard *cbd);
-long mch_getperm(char_u *name);
-int mch_setperm(char_u *name, long perm);
-void mch_hide(char_u *name);
-int mch_isdir(char_u *name);
-int mch_can_exe(char_u *name, char_u **path, int use_path);
-int mch_nodetype(char_u *name);
-int mch_dirname(char_u *buf, int len);
-int mch_remove(char_u *name);
-char_u *mch_getenv(char_u *name);
-int mch_get_user_name(char_u *s, int len);
-void mch_get_host_name(char_u *s, int len);
-/* vim: set ft=c : */
index 9ed5c75704ae6ae4f323e9e4f77a3bfbfda3dc3d..cd7dc3f2283461b255f2c2ad26a288a2e5d5eabb 100644 (file)
@@ -1338,12 +1338,6 @@ bt_regcomp(char_u *expr, int re_flags)
     if (reg(REG_NOPAREN, &flags) == NULL)
        return NULL;
 
-    /* Small enough for pointer-storage convention? */
-#ifdef SMALL_MALLOC            /* 16 bit storage allocation */
-    if (regsize >= 65536L - 256L)
-       EMSG_RET_NULL(_("E339: Pattern too long"));
-#endif
-
     /* Allocate space. */
     r = (bt_regprog_T *)lalloc(sizeof(bt_regprog_T) + regsize, TRUE);
     if (r == NULL)
index c7b46ee4ec60fcd2ffda66d0ab262acb0d25e3fe..b293869cb23934546941b72010b051bc747ce3fb 100644 (file)
@@ -3191,15 +3191,13 @@ win_line(
            }
        }
 
-#ifndef MSDOS
        /* Check if the character under the cursor should not be inverted */
        if (!highlight_match && lnum == curwin->w_cursor.lnum && wp == curwin
-# ifdef FEAT_GUI
+#ifdef FEAT_GUI
                && !gui.in_use
-# endif
+#endif
                )
            noinvcur = TRUE;
-#endif
 
        /* if inverting in this line set area_highlighting */
        if (fromcol >= 0)
@@ -9379,8 +9377,8 @@ win_do_lines(
      * ScreenLines[] when t_CV isn't defined.  That's faster than using
      * win_line().
      * Don't use a scroll region when we are going to redraw the text, writing
-     * a character in the lower right corner of the scroll region causes a
-     * scroll-up in the DJGPP version.
+     * a character in the lower right corner of the scroll region may cause a
+     * scroll-up .
      */
     if (scroll_region
 #ifdef FEAT_VERTSPLIT
index cf5ae2b179f20d497871b3ffefefffb7fbb2b7dd..c47eef31ae4bf7748065a16003706a7d0e1b5234 100644 (file)
@@ -1845,9 +1845,7 @@ struct file_buffer
 #endif
     int                b_p_ro;         /* 'readonly' */
     long       b_p_sw;         /* 'shiftwidth' */
-#ifndef SHORT_FNAME
     int                b_p_sn;         /* 'shortname' */
-#endif
 #ifdef FEAT_SMARTINDENT
     int                b_p_si;         /* 'smartindent' */
 #endif
@@ -1983,9 +1981,7 @@ struct file_buffer
                                   access b_spell without #ifdef. */
 #endif
 
-#ifndef SHORT_FNAME
     int                b_shortname;    /* this file has an 8.3 file name */
-#endif
 
 #ifdef FEAT_MZSCHEME
     void       *b_mzscheme_ref; /* The MzScheme reference to this buffer */
index 2dd54654c857389d381df5ccc35ead6f06f71b8c..b385d1a70983c25580fc16274867ba2e435125f1 100644 (file)
@@ -8055,7 +8055,7 @@ free_highlight(void)
     void
 restore_cterm_colors(void)
 {
-#if defined(MSDOS) || (defined(WIN3264) && !defined(FEAT_GUI_W32))
+#if defined(WIN3264) && !defined(FEAT_GUI_W32)
     /* Since t_me has been set, this probably means that the user
      * wants to use this as default colors.  Need to reset default
      * background/foreground colors. */
index b38a4364e1f7ba43461b9c2dd0aeb447681a7499..a97fe54848f5a1f8d2689720e97528c1a2a4fa9d 100644 (file)
@@ -10,7 +10,7 @@
  *
  * term.c: functions for controlling the terminal
  *
- * primitive termcap support for Amiga, MSDOS, and Win32 included
+ * primitive termcap support for Amiga and Win32 included
  *
  * NOTE: padding and variable substitution is not performed,
  * when compiling without HAVE_TGETENT, we use tputs() and tgoto() dummies.
@@ -428,7 +428,7 @@ static struct builtin_term builtin_termcaps[] =
 #  endif
 # endif
 
-# if defined(MSDOS) || defined(ALL_BUILTIN_TCAPS) || defined(__EMX__)
+# if defined(ALL_BUILTIN_TCAPS) || defined(__EMX__)
 /*
  * These codes are valid when nansi.sys or equivalent has been installed.
  * Function keys on a PC are preceded with a NUL. These are converted into
@@ -513,107 +513,6 @@ static struct builtin_term builtin_termcaps[] =
     {K_PAGEUP,         "\316I"},
 # endif
 
-# if defined(MSDOS)
-/*
- * These codes are valid for the pc video.  The entries that start with ESC |
- * are translated into conio calls in os_msdos.c. Default for MSDOS.
- */
-    {(int)KS_NAME,     "pcterm"},
-    {(int)KS_CE,       "\033|K"},
-    {(int)KS_AL,       "\033|L"},
-    {(int)KS_DL,       "\033|M"},
-#  ifdef TERMINFO
-    {(int)KS_CS,       "\033|%i%p1%d;%p2%dr"},
-#   ifdef FEAT_VERTSPLIT
-    {(int)KS_CSV,      "\033|%i%p1%d;%p2%dV"},
-#   endif
-#  else
-    {(int)KS_CS,       "\033|%i%d;%dr"},
-#   ifdef FEAT_VERTSPLIT
-    {(int)KS_CSV,      "\033|%i%d;%dV"},
-#   endif
-#  endif
-    {(int)KS_CL,       "\033|J"},
-    {(int)KS_ME,       "\033|0m"},     /* normal */
-    {(int)KS_MR,       "\033|112m"},   /* reverse: black on lightgrey */
-    {(int)KS_MD,       "\033|15m"},    /* bold: white text */
-    {(int)KS_SE,       "\033|0m"},     /* standout end */
-    {(int)KS_SO,       "\033|31m"},    /* standout: white on blue */
-    {(int)KS_CZH,      "\033|225m"},   /* italic mode: blue text on yellow */
-    {(int)KS_CZR,      "\033|0m"},     /* italic mode end */
-    {(int)KS_US,       "\033|67m"},    /* underscore mode: cyan text on red */
-    {(int)KS_UE,       "\033|0m"},     /* underscore mode end */
-    {(int)KS_CCO,      "16"},          /* allow 16 colors */
-#  ifdef TERMINFO
-    {(int)KS_CAB,      "\033|%p1%db"}, /* set background color */
-    {(int)KS_CAF,      "\033|%p1%df"}, /* set foreground color */
-#  else
-    {(int)KS_CAB,      "\033|%db"},    /* set background color */
-    {(int)KS_CAF,      "\033|%df"},    /* set foreground color */
-#  endif
-    {(int)KS_MS,       "y"},
-    {(int)KS_UT,       "y"},
-    {(int)KS_LE,       "\b"},
-#  ifdef TERMINFO
-    {(int)KS_CM,       "\033|%i%p1%d;%p2%dH"},
-#  else
-    {(int)KS_CM,       "\033|%i%d;%dH"},
-#  endif
-#ifdef DJGPP
-    {(int)KS_VB,       "\033|B"},      /* visual bell */
-#endif
-    {K_UP,             "\316H"},
-    {K_DOWN,           "\316P"},
-    {K_LEFT,           "\316K"},
-    {K_RIGHT,          "\316M"},
-    {K_S_LEFT,         "\316s"},
-    {K_S_RIGHT,                "\316t"},
-    {K_S_TAB,          "\316\017"},
-    {K_F1,             "\316;"},
-    {K_F2,             "\316<"},
-    {K_F3,             "\316="},
-    {K_F4,             "\316>"},
-    {K_F5,             "\316?"},
-    {K_F6,             "\316@"},
-    {K_F7,             "\316A"},
-    {K_F8,             "\316B"},
-    {K_F9,             "\316C"},
-    {K_F10,            "\316D"},
-    {K_F11,            "\316\205"},
-    {K_F12,            "\316\206"},
-    {K_S_F1,           "\316T"},
-    {K_S_F2,           "\316U"},
-    {K_S_F3,           "\316V"},
-    {K_S_F4,           "\316W"},
-    {K_S_F5,           "\316X"},
-    {K_S_F6,           "\316Y"},
-    {K_S_F7,           "\316Z"},
-    {K_S_F8,           "\316["},
-    {K_S_F9,           "\316\\"},
-    {K_S_F10,          "\316]"},
-    {K_S_F11,          "\316\207"},
-    {K_S_F12,          "\316\210"},
-    {K_INS,            "\316R"},
-    {K_DEL,            "\316S"},
-    {K_HOME,           "\316G"},
-    {K_END,            "\316O"},
-    {K_PAGEDOWN,       "\316Q"},
-    {K_PAGEUP,         "\316I"},
-    {K_KPLUS,          "\316N"},
-    {K_KMINUS,         "\316J"},
-    {K_KMULTIPLY,      "\3167"},
-    {K_K0,             "\316\332"},
-    {K_K1,             "\316\336"},
-    {K_K2,             "\316\342"},
-    {K_K3,             "\316\346"},
-    {K_K4,             "\316\352"},
-    {K_K5,             "\316\356"},
-    {K_K6,             "\316\362"},
-    {K_K7,             "\316\366"},
-    {K_K8,             "\316\372"},
-    {K_K9,             "\316\376"},
-# endif
-
 # if defined(WIN3264) || defined(ALL_BUILTIN_TCAPS) || defined(__EMX__)
 /*
  * These codes are valid for the Win32 Console .  The entries that start with
@@ -1369,10 +1268,6 @@ static struct builtin_term builtin_termcaps[] =
 # define DEFAULT_TERM  (char_u *)"win32"
 #endif
 
-#ifdef MSDOS
-# define DEFAULT_TERM  (char_u *)"pcterm"
-#endif
-
 #if defined(UNIX) && !defined(__MINT__)
 # define DEFAULT_TERM  (char_u *)"ansi"
 #endif
@@ -1971,7 +1866,7 @@ set_termname(char_u *term)
        /* termcap failed to report size */
        /* set defaults, in case ui_get_shellsize() also fails */
        width = 80;
-#if defined(MSDOS) || defined(WIN3264)
+#if defined(WIN3264)
        height = 25;        /* console is often 25 lines */
 #else
        height = 24;        /* most terminals are 24 lines */
@@ -4482,7 +4377,7 @@ check_termcode(
            if (key_name[0] == (int)KS_MOUSE)
            {
                /*
-                * For xterm and MSDOS we get "<t_mouse>scr", where
+                * For xterm we get "<t_mouse>scr", where
                 *  s == encoded button state:
                 *         0x20 = left button down
                 *         0x21 = middle button down
@@ -4646,7 +4541,7 @@ check_termcode(
 #endif
            )
        {
-#  if !defined(MSWIN) && !defined(MSDOS)
+#  if !defined(MSWIN)
                /*
                 * Handle mouse events.
                 * Recognize the xterm mouse wheel, but not in the GUI, the
index 27e2218267a7a7f7070d18d7f6361940e48426ab..2bf815ba456f30ad4cc2f6d362094b18aaba4557 100644 (file)
@@ -641,9 +641,9 @@ u_savecommon(
        u_getbot();
     }
 
-#if !defined(UNIX) && !defined(DJGPP) && !defined(WIN32) && !defined(__EMX__)
+#if !defined(UNIX) && !defined(WIN32) && !defined(__EMX__)
        /*
-        * With Amiga and MSDOS 16 bit we can't handle big undo's, because
+        * With Amiga we can't handle big undo's, because
         * then u_alloc_line would have to allocate a block larger than 32K
         */
     if (size >= 8000)
index 0532eb9f379c8b6887fe0addf21e93759db93fed..79f6ef69a6aec18cca3163262ef423579d3abaef 100644 (file)
@@ -289,41 +289,7 @@ remove_start_menu(void)
     static void
 delete_uninstall_key(void)
 {
-#ifdef WIN3264
     reg_delete_key(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Vim " VIM_VERSION_SHORT);
-#else
-    FILE       *fd;
-    char       buf[BUFSIZE];
-
-    /*
-     * On DJGPP we delete registry entries by creating a .inf file and
-     * installing it.
-     */
-    fd = fopen("vim.inf", "w");
-    if (fd != NULL)
-    {
-       fprintf(fd, "[version]\n");
-       fprintf(fd, "signature=\"$CHICAGO$\"\n\n");
-       fprintf(fd, "[DefaultInstall]\n");
-       fprintf(fd, "DelReg=DeleteMe\n\n");
-       fprintf(fd, "[DeleteMe]\n");
-       fprintf(fd, "HKLM,\"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Vim " VIM_VERSION_SHORT "\"\n");
-       fclose(fd);
-
-       /* Don't know how to detect Win NT with DJGPP.  Hack: Just try the Win
-        * 95/98/ME method, since the DJGPP version can't use long filenames
-        * on Win NT anyway. */
-       sprintf(buf, "rundll setupx.dll,InstallHinfSection DefaultInstall 132 %s\\vim.inf", installdir);
-       run_command(buf);
-#if 0
-       /* Windows NT method (untested). */
-       sprintf(buf, "rundll32 syssetup,SetupInfObjectInstallAction DefaultInstall 128 %s\\vim.inf", installdir);
-       run_command(buf);
-#endif
-
-       remove("vim.inf");
-    }
-#endif
 }
 
     int
index c23db828c3b6b8e6dd27290516f82d82e3ee976e..e8226192e516bcc371c95ff4f02d5f5a79a3e938 100644 (file)
@@ -748,6 +748,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1399,
 /**/
     1398,
 /**/
@@ -3709,13 +3711,6 @@ list_version(void)
 #  endif
 # endif
 #endif
-#ifdef MSDOS
-# ifdef DJGPP
-    MSG_PUTS(_("\n32-bit MS-DOS version"));
-# else
-    MSG_PUTS(_("\n16-bit MS-DOS version"));
-# endif
-#endif
 #ifdef MACOS
 # ifdef MACOS_X
 #  ifdef MACOS_X_UNIX
index 7a7a7581c3cb3b3f35c8e0823f22d3cb65c7cff8..4156671fb6f45f90210b3b26c8f41005fbbe6bda 100644 (file)
--- a/src/vim.h
+++ b/src/vim.h
@@ -27,8 +27,7 @@
 # endif
 #endif
 
-#if defined(MSDOS) || defined(WIN32) || defined(_WIN64) \
-       || defined(__EMX__)
+#if defined(WIN32) || defined(_WIN64) || defined(__EMX__)
 # include "vimio.h"
 #endif
 
 #ifdef WIN3264
 # define VIM_SIZEOF_INT 4
 #endif
-#ifdef MSDOS
-# ifdef DJGPP
-#  ifndef FEAT_GUI_GTK         /* avoid problems when generating prototypes */
-#   define VIM_SIZEOF_INT 4    /* 32 bit ints */
-#  endif
-#  define DOS32
-#  define FEAT_CLIPBOARD
-# else
-#  ifndef FEAT_GUI_GTK         /* avoid problems when generating prototypes */
-#   define VIM_SIZEOF_INT 2    /* 16 bit ints */
-#  endif
-#  define SMALL_MALLOC         /* 16 bit storage allocation */
-#  define DOS16
-# endif
-#endif
 
 #ifdef AMIGA
   /* Be conservative about sizeof(int). It could be 4 too. */
 # include "os_amiga.h"
 #endif
 
-#ifdef MSDOS
-# include "os_msdos.h"
-#endif
-
 #ifdef WIN3264
 # include "os_win32.h"
 #endif
@@ -462,11 +442,11 @@ typedef unsigned long u8char_T;       /* long should be 32 bits or more */
 #ifdef _DCC
 # include <sys/stat.h>
 #endif
-#if defined(MSDOS) || defined(MSWIN)
+#if defined(MSWIN)
 # include <sys/stat.h>
 #endif
 
-#if defined(HAVE_ERRNO_H) || defined(DJGPP) \
+#if defined(HAVE_ERRNO_H) \
        || defined(WIN32) || defined(_WIN64) || defined(__EMX__)
 # include <errno.h>
 #endif
index ae17660bf8feb6a86f0b6ac16c65346ec6ab2006..ee69921ff97bd722379ff628754150847a2a2981 100644 (file)
@@ -6438,7 +6438,7 @@ vim_FullName(
        /* something failed; use the file name (truncate when too long) */
        vim_strncpy(buf, fname, len - 1);
     }
-#if defined(MACOS_CLASSIC) || defined(MSDOS) || defined(MSWIN)
+#if defined(MACOS_CLASSIC) || defined(MSWIN)
     slash_adjust(buf);
 #endif
     return retval;
diff --git a/src/xxd/Make_bc3.mak b/src/xxd/Make_bc3.mak
deleted file mode 100644 (file)
index dee2521..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-# Simple makefile for Borland C++ 4.0
-# 3.1 can NOT be used, it has problems with the fileno() define.
-
-# Command line variables:
-# BOR          path to root of Borland C (E:\BORLANDC)
-# DEBUG                set to "yes" for debugging (no)
-
-!ifndef BOR
-BOR    = e:\bc4
-!endif
-
-!if ("$(DEBUG)" == "yes")
-DEBUG_FLAG = -v -DDEBUG
-!else
-DEBUG_FLAG =
-!endif
-
-CC     = $(BOR)\bin\bcc
-INC    = -I$(BOR)\include
-LIB    = -L$(BOR)\lib
-
-# The following compile options can be changed for better machines.
-#      replace -1- with -2 to produce code for a 80286 or higher
-#      replace -1- with -3 to produce code for a 80386 or higher
-#      add -v for source debugging
-OPTIMIZE= -1- -Ox
-
-CFLAGS = -A -mc -DMSDOS $(DEBUG_FLAG) $(OPTIMIZE) $(INC) $(LIB)
-
-xxd.exe: xxd.c
-       $(CC) $(CFLAGS) xxd.c
diff --git a/src/xxd/Make_djg.mak b/src/xxd/Make_djg.mak
deleted file mode 100644 (file)
index f6eed31..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-# The most simplistic Makefile, for DJGPP on MS-DOS
-
-CFLAGS = -O2 -Wall
-
-xxd.exe: xxd.c
-       gcc $(CFLAGS) -s -o xxd.exe xxd.c -lpc
-
-clean:
-       del xxd.exe