diff --git a/Lib/dos-8x3/sre_comp.py b/Lib/dos-8x3/sre_comp.py
index e48a7eb..590e45f 100644
--- a/Lib/dos-8x3/sre_comp.py
+++ b/Lib/dos-8x3/sre_comp.py
@@ -39,7 +39,7 @@
                     return _sre.getlower(literal, flags)
             else:
                 emit(OPCODES[op])
-		fixup = lambda x: x
+                fixup = lambda x: x
             skip = len(code); emit(0)
             for op, av in av:
                 emit(OPCODES[op])
@@ -118,7 +118,7 @@
         elif op is AT:
             emit(OPCODES[op])
             if flags & SRE_FLAG_MULTILINE:
-                emit(ATCODES[AT_MULTILINE[av]])
+                emit(ATCODES[AT_MULTILINE.get(av, av)])
             else:
                 emit(ATCODES[av])
         elif op is BRANCH:
@@ -203,7 +203,7 @@
     if type(p) in (type(""), type(u"")):
         import sre_parse
         pattern = p
-        p = sre_parse.parse(p)
+        p = sre_parse.parse(p, flags)
     else:
         pattern = None
 
diff --git a/Lib/dos-8x3/sre_pars.py b/Lib/dos-8x3/sre_pars.py
index fb954e9..53616f6 100644
--- a/Lib/dos-8x3/sre_pars.py
+++ b/Lib/dos-8x3/sre_pars.py
@@ -19,8 +19,9 @@
 # FIXME: should be 65535, but the arraymodule is still broken
 MAXREPEAT = 32767
 
-# FIXME: same here
-CHARMASK = 0x7fff
+# FIXME: might change in 2.0 final.  but for now, this seems
+# to be the best way to be compatible with 1.5.2
+CHARMASK = 0xff
 
 SPECIAL_CHARS = ".\\[{()*+?^$|"
 REPEAT_CHARS  = "*+?{"
@@ -30,7 +31,7 @@
 OCTDIGITS = tuple("01234567")
 HEXDIGITS = tuple("0123456789abcdefABCDEF")
 
-WHITESPACE = string.whitespace
+WHITESPACE = tuple(string.whitespace)
 
 ESCAPES = {
     r"\a": (LITERAL, 7),
@@ -295,7 +296,7 @@
     subpattern.append((BRANCH, (None, items)))
     return subpattern
 
-def _parse(source, state, flags=0):
+def _parse(source, state):
 
     # parse regular expression pattern into an operator list.
 
@@ -467,7 +468,7 @@
                     char = source.get()
                     b = []
                     while 1:
-                        p = _parse(source, state, flags)
+                        p = _parse(source, state)
                         if source.next == ")":
                             if b:
                                 b.append(p)
@@ -494,7 +495,7 @@
                 else:
                     group = state.getgroup(name)
                 while 1:
-                    p = _parse(source, state, flags)
+                    p = _parse(source, state)
                     if source.match(")"):
                         if b:
                             b.append(p)
@@ -531,9 +532,10 @@
     # parse 're' pattern into list of (opcode, argument) tuples
     source = Tokenizer(pattern)
     state = State()
+    state.flags = flags
     b = []
     while 1:
-        p = _parse(source, state, flags)
+        p = _parse(source, state)
         tail = source.get()
         if tail == "|":
             b.append(p)
@@ -616,9 +618,9 @@
     a = p.append
     sep = match.string[:0]
     if type(sep) is type(""):
-	char = chr
+        char = chr
     else:
-	char = unichr
+        char = unichr
     for c, s in template:
         if c is LITERAL:
             a(char(s))
