diff --git a/Modules/config.c.in b/Modules/config.c.in
index fe48023..692827e 100644
--- a/Modules/config.c.in
+++ b/Modules/config.c.in
@@ -141,7 +141,7 @@
 
 #ifdef MSDOS
 /* In MS-DOS, the delimiter is a semicolon */
-#define PYTHONPATH ".;C\\python\\lib"
+#define PYTHONPATH ".;..\\lib;\\python\\lib"
 #endif /* MSDOS */
 
 #ifndef PYTHONPATH
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 88861c6..e29be40 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -32,6 +32,7 @@
 #ifdef MSDOS
 #define NO_LSTAT
 #define NO_UNAME
+#include <dos.h>
 #endif
 
 #ifdef __sgi
@@ -79,17 +80,19 @@
 #include <unistd.h>
 #else /* _SEQUENT_ */
 /* XXX Aren't these always declared in unistd.h? */
-extern char *strerror PROTO((int));
-extern int chmod PROTO((const char *, mode_t));
-extern char *getcwd PROTO((char *, int)); /* XXX or size_t? */
 extern int mkdir PROTO((const char *, mode_t));
 extern int chdir PROTO((const char *));
+extern int rmdir PROTO((const char *));
+extern int chmod PROTO((const char *, mode_t));
+extern char *getcwd PROTO((char *, int)); /* XXX or size_t? */
+#if 0
+extern char *strerror PROTO((int));
 extern int link PROTO((const char *, const char *));
 extern int rename PROTO((const char *, const char *));
-extern int rmdir PROTO((const char *));
 extern int stat PROTO((const char *, struct stat *));
 extern int unlink PROTO((const char *));
 extern int pclose PROTO((FILE *));
+#endif
 #endif /* _SEQUENT_ */
 #ifdef NO_LSTAT
 #define lstat stat
@@ -279,7 +282,7 @@
 	char *name;
 	object *d, *v;
 
-#ifdef MSDOS
+#ifdef TURBO_C
 	struct ffblk ep;
 	int rv;
 	if (!getstrarg(args, &name))
@@ -304,7 +307,54 @@
 		}
 		DECREF(v);
 	} while ((rv = findnext(&ep)) == 0);
-#else /* !MSDOS */
+#endif /* TURBO_C */
+#ifdef MSDOS
+	struct find_t ep;
+	int rv;
+	char _name[100];
+	int attrib;
+	int num= 0;
+
+	if (!getstrarg(args, &name))
+		return NULL;
+	strcpy( _name, name );
+
+again:
+	if ((d = newlistobject(0)) == NULL)
+		return NULL;
+
+	if( _name[strlen( _name )-1]=='/' )
+		strcat( _name, "*.*" );
+
+	if (_dos_findfirst(_name, _A_NORMAL|_A_SUBDIR, &ep) == -1)
+		return posix_error();
+	attrib= ep.attrib;
+	do {
+		v = newstringobject(ep.name);
+		if (v == NULL) {
+			DECREF(d);
+			d = NULL;
+			break;
+		}
+		if (addlistitem(d, v) != 0) {
+			DECREF(v);
+			DECREF(d);
+			d = NULL;
+			break;
+		}
+		num++;
+		DECREF(v);
+	} while ((rv = _dos_findnext(&ep)) == 0);
+
+	if( attrib&_A_SUBDIR && num==1 )
+		{
+		DECREF( d );
+		strcat( _name, "/*.*" );
+		goto again;
+		}
+
+#endif /* MSDOS */
+#ifdef unix
 	DIR *dirp;
 	struct direct *ep;
 	if (!getstrarg(args, &name))
@@ -336,7 +386,7 @@
 	}
 	closedir(dirp);
 	END_SAVE
-#endif /* !MSDOS */
+#endif /* unix */
 
 	return d;
 }
@@ -1205,11 +1255,11 @@
 }
 
 
-#ifdef MSDOS
+#ifdef TURBO_C
 
 /* A small "compatibility library" for TurboC under MS-DOS */
 
-#include <sir.h>
+//#include <sir.h>
 #include <io.h>
 #include <dos.h>
 #include <fcntl.h>
@@ -1247,4 +1297,4 @@
 	close(fh);				/* close the temp handle */
 }
 
-#endif /* MSDOS */
+#endif /* TURBO_C */
diff --git a/Modules/stropmodule.c b/Modules/stropmodule.c
index 6fc2719..4a10b7c 100644
--- a/Modules/stropmodule.c
+++ b/Modules/stropmodule.c
@@ -28,6 +28,8 @@
 #include "modsupport.h"
 
 #include <ctype.h>
+/* XXX This file assumes that the <ctype.h> is*() functions
+   XXX are defined for all 8-bit characters! */
 
 
 static object *
@@ -365,8 +367,6 @@
 };
 
 
-/* Initialization function for the module (*must* be called initstrop) */
-
 void
 initstrop()
 {
@@ -375,12 +375,42 @@
 	int c, n;
 	m = initmodule("strop", strop_methods);
 	d = getmoduledict(m);
+
+	/* Create 'whitespace' object */
 	n = 0;
 	for (c = 1; c < 256; c++) {
 		if (isspace(c))
 			buf[n++] = c;
 	}
+	if (s) {
+		s = newsizedstringobject(buf, n);
+		dictinsert(d, "whitespace", s);
+		DECREF(s);
+	}
+	/* Create 'lowercase' object */
+	n = 0;
+	for (c = 1; c < 256; c++) {
+		if (islower(c))
+			buf[n++] = c;
+	}
 	s = newsizedstringobject(buf, n);
-	dictinsert(d, "whitespace", s);
-	DECREF(s);
+	if (s) {
+		dictinsert(d, "lowercase", s);
+		DECREF(s);
+	}
+
+	/* Create 'uppercase' object */
+	n = 0;
+	for (c = 1; c < 256; c++) {
+		if (isupper(c))
+			buf[n++] = c;
+	}
+	s = newsizedstringobject(buf, n);
+	if (s) {
+		dictinsert(d, "uppercase", s);
+		DECREF(s);
+	}
+
+	if (err_occurred())
+		fatal("can't initialize module strop");
 }
diff --git a/Modules/timemodule.c b/Modules/timemodule.c
index 68c5ac7..5bf1340 100644
--- a/Modules/timemodule.c
+++ b/Modules/timemodule.c
@@ -174,7 +174,7 @@
 #define DO_MILLI
 #endif /* BSD_TIME */
 
-#ifdef TURBO_C
+#ifdef MSDOS
 #define DO_MILLI
 #endif
 
@@ -469,7 +469,7 @@
 #endif /* unix */
 
 
-#ifdef TURBO_C
+#ifdef MSDOS
 
 #ifndef CLOCKS_PER_SEC
 #define CLOCKS_PER_SEC 55	/* 54.945 msec per tick (18.2 HZ clock) */
@@ -491,10 +491,6 @@
 	return ticks * CLOCKS_PER_SEC;/* XXX shouldn't this be different? */
 }
 
-#endif /* TURBO_C */
-
-#ifdef MSDOS
-
 floatsleep(secs)
       double secs;
 {
@@ -502,4 +498,5 @@
       while( (clock()-t)/CLOCKS_PER_SEC<secs )
               ;
 }
+
 #endif /* MSDOS */
