diff --git a/src/Make_bc5.mak b/src/Make_bc5.mak
index 3dd0421..7b5b0f2 100644
--- a/src/Make_bc5.mak
+++ b/src/Make_bc5.mak
@@ -72,7 +72,6 @@
 #		3 for 386, 4 for 486, 5 for pentium, 6 for pentium pro.
 # 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)
 # FASTCALL	no or yes: set to yes to use register-based function protocol (yes)
 # OPTIMIZE	SPACE, SPEED, or MAXSPEED: type of optimization (MAXSPEED)
@@ -187,9 +186,6 @@
 USEDLL = no
 !endif
 
-### 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)
 !if ("$(ALIGN)"=="")
 ALIGN = 4
@@ -411,12 +407,7 @@
 !else
 TARGET = gvim.exe
 !endif
-!if ("$(VIMDLL)"=="yes")
-EXETYPE=-WD
-DEFINES = $(DEFINES) -DVIMDLL
-!else
 EXETYPE=-W
-!endif
 STARTUPOBJ = c0w32.obj
 LINK2 = -aa
 RESFILE = vim.res
@@ -424,7 +415,6 @@
 !undef NETBEANS
 !undef CHANNEL
 !undef XPM
-!undef VIMDLL
 !if ("$(DEBUG)"=="yes")
 TARGET = vimd.exe
 !else
@@ -515,13 +505,8 @@
 
 vimmain = \
 	$(OBJDIR)\os_w32exe.obj
-!if ("$(VIMDLL)"=="yes")
-vimwinmain = \
-	$(OBJDIR)\os_w32dll.obj
-!else
 vimwinmain = \
 	$(OBJDIR)\os_w32exe.obj
-!endif
 
 vimobj =  \
 	$(OBJDIR)\arabic.obj \
@@ -638,17 +623,6 @@
     $(OBJDIR)\xpm_w32.obj
 !endif
 
-!if ("$(VIMDLL)"=="yes")
-vimdllobj = $(vimobj)
-!if ("$(DEBUG)"=="yes")
-DLLTARGET = vim32d.dll
-!else
-DLLTARGET = vim32.dll
-!endif
-!else
-DLLTARGET = joebob
-!endif
-
 !if ("$(GUI)"=="yes")
 vimobj = $(vimobj) \
 	$(vimwinmain) \
@@ -670,9 +644,6 @@
 !if ("$(USEDLL)"=="yes")
 MSG = $(MSG) USEDLL
 !endif
-!if ("$(VIMDLL)"=="yes")
-MSG = $(MSG) VIMDLL
-!endif
 !if ("$(FASTCALL)"=="yes")
 MSG = $(MSG) FASTCALL
 !endif
@@ -747,9 +718,6 @@
 
 !message $(MSG)
 
-!if ("$(VIMDLL)"=="yes")
-TARGETS = $(DLLTARGET)
-!endif
 TARGETS = $(TARGETS) $(TARGET)
 
 # Targets:
@@ -832,60 +800,12 @@
 	$(MAKE) /f Make_bc5.mak BOR="$(BOR)" clean
 	cd ..
 
-$(DLLTARGET): $(OBJDIR) $(vimdllobj)
-  $(LINK) @&&|
-	$(LFLAGSDLL) +
-	c0d32.obj +
-	$(vimdllobj)
-	$<,$*
-!if ("$(CODEGUARD)"=="yes")
-	cg32.lib+
-!endif
-# $(OSTYPE)==WIN32 causes os_mswin.c compilation. FEAT_SHORTCUT in it needs OLE
-	ole2w32.lib +
-	import32.lib+
-!ifdef LUA
-	$(LUA_LIB_FLAG)lua.lib+
-!endif
-!ifdef PERL
-	$(PERL_LIB_FLAG)perl.lib+
-!endif
-!ifdef PYTHON
-	$(PYTHON_LIB_FLAG)python.lib+
-!endif
-!ifdef PYTHON3
-	$(PYTHON3_LIB_FLAG)python3.lib+
-!endif
-!ifdef RUBY
-	$(RUBY_LIB_FLAG)ruby.lib+
-!endif
-!ifdef TCL
-	$(TCL_LIB_FLAG)tcl.lib+
-!endif
-!ifdef XPM
-	xpm.lib+
-!endif
-!if ("$(USEDLL)"=="yes")
-	cw32i.lib
-!else
-	cw32.lib
-!endif
-	vim.def
-|
 
-!if ("$(VIMDLL)"=="yes")
-$(TARGET): $(OBJDIR) $(DLLTARGET) $(vimmain) $(OBJDIR)\$(RESFILE)
-!else
 $(TARGET): $(OBJDIR) $(vimobj) $(OBJDIR)\$(RESFILE)
-!endif
   $(LINK) @&&|
 	$(LFLAGS) +
 	$(STARTUPOBJ) +
-!if ("$(VIMDLL)"=="yes")
-	$(vimmain)
-!else
 	$(vimobj)
-!endif
 	$<,$*
 !if ("$(CODEGUARD)"=="yes")
 	cg32.lib+
diff --git a/src/gui_w32.c b/src/gui_w32.c
index c584d8c..e6d2e80 100644
--- a/src/gui_w32.c
+++ b/src/gui_w32.c
@@ -2280,9 +2280,6 @@
 
 #ifndef PROTO
 void
-#ifdef VIMDLL
-_export
-#endif
 _cdecl
 SaveInst(HINSTANCE hInst)
 {
diff --git a/src/main.c b/src/main.c
index d4e0349..3041df9 100644
--- a/src/main.c
+++ b/src/main.c
@@ -96,9 +96,6 @@
 static int has_dash_c_arg = FALSE;
 
     int
-# ifdef VIMDLL
-_export
-# endif
 # ifdef FEAT_GUI_MSWIN
 #  ifdef __BORLANDC__
 _cdecl
diff --git a/src/os_w32dll.c b/src/os_w32dll.c
deleted file mode 100644
index 5b94400..0000000
--- a/src/os_w32dll.c
+++ /dev/null
@@ -1,24 +0,0 @@
-/* vi:set ts=8 sts=4 sw=4 noet:
- *
- * VIM - Vi IMproved		by Bram Moolenaar
- *				GUI support by Robert Webb
- *
- * 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.
- */
-/*
- * Windows GUI: main program (DLL) entry point:
- *
- * Ron Aaron <ronaharon@yahoo.com> wrote this and  the DLL support code.
- */
-#ifndef WIN32_LEAN_AND_MEAN
-# define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-
-BOOL WINAPI DllMain(HINSTANCE  hinstDLL, DWORD	fdwReason, LPVOID  lpvReserved)
-{
-    return TRUE;
-}
-
diff --git a/src/os_w32exe.c b/src/os_w32exe.c
index d3ac092..93817ad 100644
--- a/src/os_w32exe.c
+++ b/src/os_w32exe.c
@@ -32,9 +32,7 @@
 
 #ifndef PROTO
 #ifdef FEAT_GUI
-#ifndef VIMDLL
 void _cdecl SaveInst(HINSTANCE hInst);
-#endif
 static void (_cdecl *pSaveInst)(HINSTANCE);
 #endif
 
@@ -47,60 +45,17 @@
 {
     int		argc = 0;
     char	**argv = NULL;
-#ifdef VIMDLL
-    char	prog[256];
-    char	*p;
-    HANDLE	hLib;
-
-    /* Ron: added full path name so that the $VIM variable will get set to our
-     * startup path (so the .vimrc file can be found w/o a VIM env. var.) */
-    GetModuleFileName(NULL, prog, 255);
-
-# ifdef DYNAMIC_GETTEXT
-    /* Initialize gettext library */
-    dyn_libintl_init();
-# endif
-
-    // LoadLibrary - get name of dll to load in here:
-    p = strrchr(prog, '\\');
-    if (p != NULL)
-    {
-# ifdef DEBUG
-	strcpy(p+1, "vim32d.dll");
-# else
-	strcpy(p+1, "vim32.dll");
-# endif
-    }
-    hLib = LoadLibrary(prog);
-    if (hLib == NULL)
-    {
-	MessageBox(0, _("Could not load vim32.dll!"), _("VIM Error"), 0);
-	goto errout;
-    }
-    // fix up the function pointers
-# ifdef FEAT_GUI
-    pSaveInst = GetProcAddress(hLib, (LPCSTR)2);
-# endif
-    pmain = GetProcAddress(hLib, (LPCSTR)1);
-    if (pmain == NULL)
-    {
-	MessageBox(0, _("Could not fix up function pointers to the DLL!"),
-							    _("VIM Error"),0);
-	goto errout;
-    }
-#else
-# ifdef FEAT_GUI
+#ifdef FEAT_GUI
     pSaveInst = SaveInst;
-# endif
+#endif
     pmain =
-# if defined(FEAT_GUI_MSWIN)
+#if defined(FEAT_GUI_MSWIN)
     //&& defined(__MINGW32__)
 	VimMain
-# else
+#else
 	main
-# endif
-	;
 #endif
+	;
 #ifdef FEAT_GUI
     pSaveInst(
 #ifdef __MINGW32__
@@ -112,10 +67,6 @@
 #endif
     pmain(argc, argv);
 
-#ifdef VIMDLL
-    FreeLibrary(hLib);
-errout:
-#endif
     free_cmd_argsW();
 
     return 0;
diff --git a/src/version.c b/src/version.c
index be23284..ea04d06 100644
--- a/src/version.c
+++ b/src/version.c
@@ -776,6 +776,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1066,
+/**/
     1065,
 /**/
     1064,
