diff --git a/Lib/pdb.doc b/Lib/pdb.doc
new file mode 100644
index 0000000..7eb68d2
--- /dev/null
+++ b/Lib/pdb.doc
@@ -0,0 +1,157 @@
+The Python Debugger
+===================
+
+To use the debugger in its simplest form:
+
+	>>> import pdb
+	>>> pdb.run('<a statement>')
+
+The debugger's prompt is '(Pdb) '.  This will stop in the first
+function call in <a statement>.
+
+The commands recognized by the debugger are listed in the next
+section.  Most can be abbreviated as indicated; e.g., h(elp) means
+that 'help' can be typed as 'h' or 'help' (but not as 'he' or 'hel',
+nor as 'H' or 'Help' or 'HELP').  Optional arguments are enclosed in
+square brackets.
+
+A blank line repeats the previous command literally.  (Except for
+'list', where it lists the next 11 lines.)
+
+Commands that the debugger doesn't recognize are assumed to be Python
+statements and are executed in the context of the program being
+debugged.  Python statements can also be prefixed with an exclamation
+point ('!').  This is a powerful way to inspect the program being
+debugged; it is even possible to change variables.  When an exception
+occurs in such a statement, the exception name is printed but the
+debugger's state is not changed.
+
+The debugger is not directly programmable; but it is implemented as a
+class from which you can derive your own debugger class, so you can
+make as fancy as you like.
+
+
+Debugger commands
+=================
+
+h(elp)
+	Without argument, print the list of available commands.
+	With a command name as argument, print help about that command
+	(this is currently not implemented).
+
+w(here)
+	Print a stack trace, with the most recent frame at the bottom.
+	An arrow indicates the "current frame", which determines the
+	context of most commands.
+
+d(own)
+	Move the current frame one level down in the stack trace
+	(to an older frame).
+
+u(p)
+	Move the current frame one level up in the stack trace
+	(to a newer frame).
+
+b(reak) [lineno]
+	With a line number argument, set a break there in the current file.
+	Without argument, list all breaks.
+
+cl(ear) [lineno]
+	With a line number argument, clear that break in the current file.
+	Without argument, clear all breaks (but first ask confirmation).
+
+s(tep)
+	Execute the current line, stop at the first possible occasion
+	(either in a function that is called or in the current function).
+
+n(ext)
+	Continue execution until the next line in the current function
+	is reached or it returns.
+
+r(eturn)
+	Continue execution until the current function returns.
+
+c(ont(inue))
+	Continue execution, only stop when a breakpoint is encountered.
+
+l(ist) [first [,last]]
+	List source code for the current file.
+	Without arguments, list 11 lines around the current line
+	or continue the previous listing.
+	With one argument, list 11 lines starting at that line.
+	With two arguments, list the given range;
+	if the second argument is less than the first, it is a count.
+
+a(rgs)
+	Print the argument list of the current function.
+
+p expression
+	Print the value of the expression.
+
+(!) statement
+	Execute the (one-line) statement in the context of
+	the current stack frame.
+	The exclamation point can be omitted unless the first word
+	of the statement resembles a debugger command.
+	To assign to a global variable you must always prefix the
+	command with a 'global' command, e.g.:
+	(Pdb) global list_options; list_options = ['-l']
+	(Pdb)
+
+q(uit)
+	Quit from the debugger.
+	The program being executed is aborted.
+
+
+How it works
+============
+
+Some changes were made to the interpreter:
+- if sys.trace is defined (by the user) and not None, it should be a function
+- sys.trace is called the global trace function
+- there can also a local trace function (see later)
+
+Trace functions have three arguments: (frame, event, arg)
+  - frame is the current stack frame
+  - event is a string: 'call', 'line', 'return' or 'exception'
+  - arg is dependent on the event type
+A trace function should return a new trace function or None.
+Class methods are accepted (and most useful!) as trace methods.
+
+The events have the following meaning:
+
+  'call':      A function is called (or some other code block entered).
+               The global trace function is called;
+               arg is the argument list to the function;
+               the return value specifies the local trace function.
+
+  'line':      The interpreter is about to execute a new line of code
+               (sometimes multiple line events on one line exist).
+               The local trace function is called; arg in None;
+               the return value specifies the new local trace function.
+
+  'return':    A function (or other code block) is about to return.
+               The local trace function is called;
+               arg is the value that will be returned.
+               The trace function's return value is ignored.
+
+  'exception': An exception has occurred.
+               The local trace function is called;
+               arg is a triple (exception, value, traceback);
+               the return value specifies the new local trace function
+
+Note that as an exception is propagated down the chain of callers, an
+'exception' event is generated at each level.
+
+Stack frame objects have the following read-only attributes:
+  f_code:      the code object being executed
+  f_lineno:    the current line number (-1 for 'call' events)
+  f_back:      the stack frame of the caller, or None
+  f_locals:    dictionary containing local name bindings
+  f_globals:   dictionary containing global name bindings
+
+Code objects have the following read-only attributes:
+  co_code:     the code string
+  co_names:    the list of names used by the code
+  co_consts:   the list of (literal) constants used by the code
+  co_filename: the filename from which the code was compiled
diff --git a/Lib/test/test_b1.py b/Lib/test/test_b1.py
new file mode 100644
index 0000000..1fafc4f
--- /dev/null
+++ b/Lib/test/test_b1.py
@@ -0,0 +1,127 @@
+# Python test set -- part 4a, built-in functions a-m
+
+from test_support import *
+
+print 'abs'
+if abs(0) <> 0: raise TestFailed, 'abs(0)'
+if abs(1234) <> 1234: raise TestFailed, 'abs(1234)'
+if abs(-1234) <> 1234: raise TestFailed, 'abs(-1234)'
+#
+if abs(0.0) <> 0.0: raise TestFailed, 'abs(0.0)'
+if abs(3.14) <> 3.14: raise TestFailed, 'abs(3.14)'
+if abs(-3.14) <> 3.14: raise TestFailed, 'abs(-3.14)'
+#
+if abs(0L) <> 0L: raise TestFailed, 'abs(0L)'
+if abs(1234L) <> 1234L: raise TestFailed, 'abs(1234L)'
+if abs(-1234L) <> 1234L: raise TestFailed, 'abs(-1234L)'
+
+print 'apply'
+def f0(*args):
+	if args != (): raise TestFailed, 'f0 called with ' + `args`
+def f1(a1):
+	if a1 != 1: raise TestFailed, 'f1 called with ' + `a1`
+def f2(a1, a2):
+	if a1 != 1 or a2 != 2:
+		raise TestFailed, 'f2 called with ' + `a1, a2`
+def f3(a1, a2, a3):
+	if a1 != 1 or a2 != 2 or a3 != 3:
+		raise TestFailed, 'f2 called with ' + `a1, a2, a3`
+apply(f0, ())
+apply(f1, (1,))
+apply(f2, (1, 2))
+apply(f3, (1, 2, 3))
+
+print 'chr'
+if chr(32) <> ' ': raise TestFailed, 'chr(32)'
+if chr(65) <> 'A': raise TestFailed, 'chr(65)'
+if chr(97) <> 'a': raise TestFailed, 'chr(97)'
+
+print 'dir'
+x = 1
+if 'x' not in dir(): raise TestFailed, 'dir()'
+import sys
+if 'modules' not in dir(sys): raise TestFailed, 'dir(sys)'
+
+print 'divmod'
+if divmod(12, 7) <> (1, 5): raise TestFailed, 'divmod(12, 7)'
+if divmod(-12, 7) <> (-2, 2): raise TestFailed, 'divmod(-12, 7)'
+if divmod(12, -7) <> (-2, -2): raise TestFailed, 'divmod(12, -7)'
+if divmod(-12, -7) <> (1, -5): raise TestFailed, 'divmod(-12, -7)'
+#
+if divmod(12L, 7L) <> (1L, 5L): raise TestFailed, 'divmod(12L, 7L)'
+if divmod(-12L, 7L) <> (-2L, 2L): raise TestFailed, 'divmod(-12L, 7L)'
+if divmod(12L, -7L) <> (-2L, -2L): raise TestFailed, 'divmod(12L, -7L)'
+if divmod(-12L, -7L) <> (1L, -5L): raise TestFailed, 'divmod(-12L, -7L)'
+#
+if divmod(12, 7L) <> (1, 5L): raise TestFailed, 'divmod(12, 7L)'
+if divmod(-12, 7L) <> (-2, 2L): raise TestFailed, 'divmod(-12, 7L)'
+if divmod(12L, -7) <> (-2L, -2): raise TestFailed, 'divmod(12L, -7)'
+if divmod(-12L, -7) <> (1L, -5): raise TestFailed, 'divmod(-12L, -7)'
+#
+if divmod(3.25, 1.0) <> (3.0, 0.25): raise TestFailed, 'divmod(3.25, 1.0)'
+if divmod(-3.25, 1.0) <> (-4.0, 0.75): raise TestFailed, 'divmod(-3.25, 1.0)'
+if divmod(3.25, -1.0) <> (-4.0, -0.75): raise TestFailed, 'divmod(3.25, -1.0)'
+if divmod(-3.25, -1.0) <> (3.0, -0.25): raise TestFailed, 'divmod(-3.25, -1.0)'
+
+print 'eval'
+if eval('1+1') <> 2: raise TestFailed, 'eval(\'1+1\')'
+
+print 'exec'
+z = 0
+exec('z=1+1\n')
+if z <> 2: raise TestFailed, 'exec(\'z=1+1\'\\n)'
+
+print 'float'
+if float(3.14) <> 3.14: raise TestFailed, 'float(3.14)'
+if float(314) <> 314.0: raise TestFailed, 'float(314)'
+if float(314L) <> 314.0: raise TestFailed, 'float(314L)'
+
+print 'getattr'
+import sys
+if getattr(sys, 'stdout') is not sys.stdout: raise TestFailed, 'getattr'
+
+print 'hex'
+if hex(16) != '0x10': raise TestFailed, 'hex(16)'
+if hex(16L) != '0x10L': raise TestFailed, 'hex(16L)'
+if hex(-16) != '-0x10': raise TestFailed, 'hex(-16)'
+if hex(-16L) != '-0x10L': raise TestFailed, 'hex(-16L)'
+
+# Test input() later, together with raw_input
+
+print 'int'
+if int(314) <> 314: raise TestFailed, 'int(314)'
+if int(3.14) <> 3: raise TestFailed, 'int(3.14)'
+if int(314L) <> 314: raise TestFailed, 'int(314L)'
+
+print 'len'
+if len('123') <> 3: raise TestFailed, 'len(\'123\')'
+if len(()) <> 0: raise TestFailed, 'len(())'
+if len((1, 2, 3, 4)) <> 4: raise TestFailed, 'len((1, 2, 3, 4))'
+if len([1, 2, 3, 4]) <> 4: raise TestFailed, 'len([1, 2, 3, 4])'
+if len({}) <> 0: raise TestFailed, 'len({})'
+if len({'a':1, 'b': 2}) <> 2: raise TestFailed, 'len({\'a\':1, \'b\': 2})'
+
+print 'long'
+if long(314) <> 314L: raise TestFailed, 'long(314)'
+if long(3.14) <> 3L: raise TestFailed, 'long(3.14)'
+if long(314L) <> 314L: raise TestFailed, 'long(314L)'
+
+print 'max'
+if max('123123') <> '3': raise TestFailed, 'max(\'123123\')'
+if max(1, 2, 3) <> 3: raise TestFailed, 'max(1, 2, 3)'
+if max((1, 2, 3, 1, 2, 3)) <> 3: raise TestFailed, 'max((1, 2, 3, 1, 2, 3))'
+if max([1, 2, 3, 1, 2, 3]) <> 3: raise TestFailed, 'max([1, 2, 3, 1, 2, 3])'
+#
+if max(1, 2L, 3.0) <> 3.0: raise TestFailed, 'max(1, 2L, 3.0)'
+if max(1L, 2.0, 3) <> 3: raise TestFailed, 'max(1L, 2.0, 3)'
+if max(1.0, 2, 3L) <> 3L: raise TestFailed, 'max(1.0, 2, 3L)'
+
+print 'min'
+if min('123123') <> '1': raise TestFailed, 'min(\'123123\')'
+if min(1, 2, 3) <> 1: raise TestFailed, 'min(1, 2, 3)'
+if min((1, 2, 3, 1, 2, 3)) <> 1: raise TestFailed, 'min((1, 2, 3, 1, 2, 3))'
+if min([1, 2, 3, 1, 2, 3]) <> 1: raise TestFailed, 'min([1, 2, 3, 1, 2, 3])'
+#
+if min(1, 2L, 3.0) <> 1: raise TestFailed, 'min(1, 2L, 3.0)'
+if min(1L, 2.0, 3) <> 1L: raise TestFailed, 'min(1L, 2.0, 3)'
+if min(1.0, 2, 3L) <> 1.0: raise TestFailed, 'min(1.0, 2, 3L)'
diff --git a/Lib/test/test_b2.py b/Lib/test/test_b2.py
new file mode 100644
index 0000000..a4bea24
--- /dev/null
+++ b/Lib/test/test_b2.py
@@ -0,0 +1,130 @@
+# Python test set -- part 4b, built-in functions n-z
+
+from test_support import *
+
+print 'oct'
+if oct(100) != '0144': raise TestFailed, 'oct(100)'
+if oct(100L) != '0144L': raise TestFailed, 'oct(100L)'
+if oct(-100) != '-0144': raise TestFailed, 'oct(-100)'
+if oct(-100L) != '-0144L': raise TestFailed, 'oct(-100L)'
+
+print 'open'
+# NB the first 4 lines are also used to test input and raw_input, below
+fp = open(TESTFN, 'w')
+try:
+	fp.write('1+1\n')
+	fp.write('1+1\n')
+	fp.write('The quick brown fox jumps over the lazy dog')
+	fp.write('.\n')
+	fp.write('Dear John\n')
+	fp.write('XXX'*100)
+	fp.write('YYY'*100)
+finally:
+	fp.close()
+#
+fp = open(TESTFN, 'r')
+try:
+	if fp.readline(4) <> '1+1\n': raise TestFailed, 'readline(4) # exact'
+	if fp.readline(4) <> '1+1\n': raise TestFailed, 'readline(4) # exact'
+	if fp.readline() <> 'The quick brown fox jumps over the lazy dog.\n':
+		raise TestFailed, 'readline() # default'
+	if fp.readline(4) <> 'Dear': raise TestFailed, 'readline(4) # short'
+	if fp.readline(100) <> ' John\n': raise TestFailed, 'readline(100)'
+	if fp.read(300) <> 'XXX'*100: raise TestFailed, 'read(300)'
+	if fp.read(1000) <> 'YYY'*100: raise TestFailed, 'read(1000) # truncate'
+finally:
+	fp.close()
+
+print 'ord'
+if ord(' ') <> 32: raise TestFailed, 'ord(\' \')'
+if ord('A') <> 65: raise TestFailed, 'ord(\'A\')'
+if ord('a') <> 97: raise TestFailed, 'ord(\'a\')'
+
+print 'pow'
+if pow(0,0) <> 1: raise TestFailed, 'pow(0,0)'
+if pow(0,1) <> 0: raise TestFailed, 'pow(0,1)'
+if pow(1,0) <> 1: raise TestFailed, 'pow(1,0)'
+if pow(1,1) <> 1: raise TestFailed, 'pow(1,1)'
+#
+if pow(2,0) <> 1: raise TestFailed, 'pow(2,0)'
+if pow(2,10) <> 1024: raise TestFailed, 'pow(2,10)'
+if pow(2,20) <> 1024*1024: raise TestFailed, 'pow(2,20)'
+if pow(2,30) <> 1024*1024*1024: raise TestFailed, 'pow(2,30)'
+#
+if pow(-2,0) <> 1: raise TestFailed, 'pow(-2,0)'
+if pow(-2,1) <> -2: raise TestFailed, 'pow(-2,1)'
+if pow(-2,2) <> 4: raise TestFailed, 'pow(-2,2)'
+if pow(-2,3) <> -8: raise TestFailed, 'pow(-2,3)'
+#
+if pow(0L,0) <> 1: raise TestFailed, 'pow(0L,0)'
+if pow(0L,1) <> 0: raise TestFailed, 'pow(0L,1)'
+if pow(1L,0) <> 1: raise TestFailed, 'pow(1L,0)'
+if pow(1L,1) <> 1: raise TestFailed, 'pow(1L,1)'
+#
+if pow(2L,0) <> 1: raise TestFailed, 'pow(2L,0)'
+if pow(2L,10) <> 1024: raise TestFailed, 'pow(2L,10)'
+if pow(2L,20) <> 1024*1024: raise TestFailed, 'pow(2L,20)'
+if pow(2L,30) <> 1024*1024*1024: raise TestFailed, 'pow(2L,30)'
+#
+if pow(-2L,0) <> 1: raise TestFailed, 'pow(-2L,0)'
+if pow(-2L,1) <> -2: raise TestFailed, 'pow(-2L,1)'
+if pow(-2L,2) <> 4: raise TestFailed, 'pow(-2L,2)'
+if pow(-2L,3) <> -8: raise TestFailed, 'pow(-2L,3)'
+#
+if pow(0.,0) <> 1.: raise TestFailed, 'pow(0.,0)'
+if pow(0.,1) <> 0.: raise TestFailed, 'pow(0.,1)'
+if pow(1.,0) <> 1.: raise TestFailed, 'pow(1.,0)'
+if pow(1.,1) <> 1.: raise TestFailed, 'pow(1.,1)'
+#
+if pow(2.,0) <> 1.: raise TestFailed, 'pow(2.,0)'
+if pow(2.,10) <> 1024.: raise TestFailed, 'pow(2.,10)'
+if pow(2.,20) <> 1024.*1024.: raise TestFailed, 'pow(2.,20)'
+if pow(2.,30) <> 1024.*1024.*1024.: raise TestFailed, 'pow(2.,30)'
+#
+# XXX These don't work -- negative float to the float power...
+#if pow(-2.,0) <> 1.: raise TestFailed, 'pow(-2.,0)'
+#if pow(-2.,1) <> -2.: raise TestFailed, 'pow(-2.,1)'
+#if pow(-2.,2) <> 4.: raise TestFailed, 'pow(-2.,2)'
+#if pow(-2.,3) <> -8.: raise TestFailed, 'pow(-2.,3)'
+
+print 'range'
+if range(3) <> [0, 1, 2]: raise TestFailed, 'range(3)'
+if range(1, 5) <> [1, 2, 3, 4]: raise TestFailed, 'range(1, 5)'
+if range(0) <> []: raise TestFailed, 'range(0)'
+if range(-3) <> []: raise TestFailed, 'range(-3)'
+if range(1, 10, 3) <> [1, 4, 7]: raise TestFailed, 'range(1, 10, 3)'
+if range(5, -5, -3) <> [5, 2, -1, -4]: raise TestFailed, 'range(5, -5, -3)'
+
+print 'input and raw_input'
+import sys
+fp = open(TESTFN, 'r')
+savestdin = sys.stdin
+try:
+	sys.stdin = fp
+	if input() <> 2: raise TestFailed, 'input()'
+	if input('testing\n') <> 2: raise TestFailed, 'input()'
+	if raw_input() <> 'The quick brown fox jumps over the lazy dog.':
+		raise TestFailed, 'raw_input()'
+	if raw_input('testing\n') <> 'Dear John':
+		raise TestFailed, 'raw_input(\'testing\\n\')'
+finally:
+	sys.stdin = savestdin
+	fp.close()
+
+print 'reload'
+import string
+reload(string)
+
+print 'setattr'
+import sys
+setattr(sys, 'foobar', 1)
+if sys.foobar != 1: raise TestFailed, 'setattr(sys, \'foobar\', 1)'
+
+print 'type'
+if type('') <> type('123') or type('') == type(()):
+	raise TestFailed, 'type()'
+
+
+# Epilogue -- unlink the temp file
+
+unlink(TESTFN)
diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py
new file mode 100644
index 0000000..33fef8d
--- /dev/null
+++ b/Lib/test/test_builtin.py
@@ -0,0 +1,13 @@
+# Python test set -- part 4, built-in functions
+
+from test_support import *
+
+print '4. Built-in functions'
+
+print 'test_b1'
+unload('test_b1')
+import test_b1
+
+print 'test_b2'
+unload('test_b2')
+import test_b2
diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py
new file mode 100644
index 0000000..7ee6e21
--- /dev/null
+++ b/Lib/test/test_exceptions.py
@@ -0,0 +1,91 @@
+# Python test set -- part 5, built-in exceptions
+
+from test_support import *
+
+print '5. Built-in exceptions'
+# XXX This is not really enough, each *operation* should be tested!
+
+def r(name): print name
+
+r(AttributeError)
+import sys
+try: x = sys.undefined_attribute
+except AttributeError: pass
+
+r(EOFError)
+import sys
+fp = open(TESTFN, 'w')
+fp.close()
+fp = open(TESTFN, 'r')
+savestdin = sys.stdin
+try:
+	sys.stdin = fp
+	x = raw_input()
+except EOFError:
+	pass
+finally:
+	sys.stdin = savestdin
+	fp.close()
+
+r(IOError)
+try: open('this file does not exist', 'r')
+except IOError: pass
+
+r(ImportError)
+try: import undefined_module
+except ImportError: pass
+
+r(IndexError)
+x = []
+try: a = x[10]
+except IndexError: pass
+
+r(KeyError)
+x = {}
+try: a = x['key']
+except KeyError: pass
+
+r(KeyboardInterrupt)
+print '(not testable in a script)'
+
+r(MemoryError)
+print '(not safe to test)'
+
+r(NameError)
+try: x = undefined_variable
+except NameError: pass
+
+r(OverflowError)
+x = 1
+try:
+	while 1: x = x+x
+except OverflowError: pass
+
+r(RuntimeError)
+print '(not used any more?)'
+
+r(SyntaxError)
+try: exec('/\n')
+except SyntaxError: pass
+
+r(SystemError)
+print '(hard to reproduce)'
+
+r(SystemExit)
+import sys
+try: sys.exit(0)
+except SystemExit: pass
+
+r(TypeError)
+try: [] + ()
+except TypeError: pass
+
+r(ValueError)
+try: x = chr(10000)
+except ValueError: pass
+
+r(ZeroDivisionError)
+try: x = 1/0
+except ZeroDivisionError: pass
+
+unlink(TESTFN)
diff --git a/Lib/test/test_grammar.py b/Lib/test/test_grammar.py
new file mode 100644
index 0000000..3f1447f
--- /dev/null
+++ b/Lib/test/test_grammar.py
@@ -0,0 +1,344 @@
+# Python test set -- part 1, grammar.
+# This just tests whether the parser accepts them all.
+
+from test_support import *
+
+print '1. Parser'
+
+print '1.1 Tokens'
+
+print '1.1.1 Backslashes'
+
+# Backslash means line continuation:
+x = 1 \
++ 1
+if x <> 2: raise TestFailed, 'backslash for line continuation'
+
+# Backslash does not means continuation in comments :\
+x = 0
+if x <> 0: raise TestFailed, 'backslash ending comment'
+
+print '1.1.2 Numeric literals'
+
+print '1.1.2.1 Plain integers'
+if 0xff <> 255: raise TestFailed, 'hex int'
+if 0377 <> 255: raise TestFailed, 'octal int'
+if  2147483647   != 017777777777: raise TestFailed, 'max positive int'
+if -2147483647-1 != 020000000000: raise TestFailed, 'max negative int'
+# XXX -2147483648
+if 037777777777 != -1: raise TestFailed, 'oct -1'
+if 0xffffffff != -1: raise TestFailed, 'hex -1'
+for s in '2147483648', '040000000000', '0x100000000':
+	try:
+		x = eval(s)
+	except OverflowError:
+		continue
+	raise TestFailed, 'No OverflowError on huge integer literal ' + `s`
+
+print '1.1.2.2 Long integers'
+x = 0L
+x = 0l
+x = 0xffffffffffffffffL
+x = 0xffffffffffffffffl
+x = 077777777777777777L
+x = 077777777777777777l
+x = 123456789012345678901234567890L
+x = 123456789012345678901234567890l
+
+print '1.1.2.3 Floating point'
+x = 3.14
+x = 314.
+x = 0.314
+# XXX x = 000.314
+x = .314
+x = 3e14
+x = 3E14
+x = 3e-14
+x = 3e+14
+x = 3.e14
+x = .3e14
+x = 3.1e4
+
+print '1.2 Grammar'
+
+print 'single_input' # NEWLINE | simple_stmt | compound_stmt NEWLINE
+# XXX can't test in a script -- this rule is only used when interactive
+
+print 'file_input' # (NEWLINE | stmt)* ENDMARKER
+# Being tested as this very moment this very module
+
+print 'expr_input' # testlist NEWLINE
+# XXX Hard to test -- used only in calls to input()
+
+print 'eval_input' # testlist ENDMARKER
+x = eval('1, 0 or 1')
+
+print 'funcdef'
+### 'def' NAME parameters ':' suite
+### parameters: '(' [varargslist] ')'
+### varargslist: (fpdef ',')* ('+'|'*') NAME | fpdef (',' fpdef)* [',']
+### fpdef: NAME | '(' fplist ')'
+### fplist: fpdef (',' fpdef)* [',']
+def f1(): pass
+def f2(one_argument): pass
+def f3(two, arguments): pass
+def f4(two, (compound, (argument, list))): pass
+def a1(one_arg,): pass
+def a2(two, args,): pass
+def v0(*rest): pass
+def v1(a, *rest): pass
+def v2(a, b, *rest): pass
+def v3(a, (b, c), *rest): pass
+
+### stmt: simple_stmt | compound_stmt
+# Tested below
+
+### simple_stmt: small_stmt (';' small_stmt)* [';']
+print 'simple_stmt'
+x = 1; pass; del x
+
+### small_stmt: expr_stmt | print_stmt  | pass_stmt | del_stmt | flow_stmt | import_stmt
+# Tested below
+
+print 'expr_stmt' # (exprlist '=')* exprlist
+1
+1, 2, 3
+x = 1
+x = 1, 2, 3
+x = y = z = 1, 2, 3
+x, y, z = 1, 2, 3
+abc = a, b, c = x, y, z = xyz = 1, 2, (3, 4)
+# NB these variables are deleted below
+
+print 'print_stmt' # 'print' (test ',')* [test]
+print 1, 2, 3
+print 1, 2, 3,
+print
+print 0 or 1, 0 or 1,
+print 0 or 1
+
+print 'del_stmt' # 'del' exprlist
+del abc
+del x, y, (z, xyz)
+
+print 'pass_stmt' # 'pass'
+pass
+
+print 'flow_stmt' # break_stmt | continue_stmt | return_stmt | raise_stmt
+# Tested below
+
+print 'break_stmt' # 'break'
+while 1: break
+
+print 'continue_stmt' # 'continue'
+i = 1
+while i: i = 0; continue
+
+print 'return_stmt' # 'return' [testlist]
+def g1(): return
+def g2(): return 1
+g1()
+x = g2()
+
+print 'raise_stmt' # 'raise' test [',' test]
+try: raise RuntimeError, 'just testing'
+except RuntimeError: pass
+try: raise KeyboardInterrupt
+except KeyboardInterrupt: pass
+
+print 'import_stmt' # 'import' NAME (',' NAME)* | 'from' NAME 'import' ('*' | NAME (',' NAME)*)
+[1]
+import sys
+[2]
+import time, math
+[3]
+from time import sleep
+[4]
+from sys import *
+[5]
+from math import sin, cos
+[6]
+
+print 'global_stmt' # 'global' NAME (',' NAME)*
+def f():
+	global a
+	global a, b
+	global one, two, three, four, five, six, seven, eight, nine, ten
+
+### compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt | funcdef | classdef
+# Tested below
+
+print 'if_stmt' # 'if' test ':' suite ('elif' test ':' suite)* ['else' ':' suite]
+if 1: pass
+if 1: pass
+else: pass
+if 0: pass
+elif 0: pass
+if 0: pass
+elif 0: pass
+elif 0: pass
+elif 0: pass
+else: pass
+
+print 'while_stmt' # 'while' test ':' suite ['else' ':' suite]
+while 0: pass
+while 0: pass
+else: pass
+
+print 'for_stmt' # 'for' exprlist 'in' exprlist ':' suite ['else' ':' suite]
+[1]
+for i in 1, 2, 3: pass
+[2]
+for i, j, k in (): pass
+else: pass
+[3]
+
+print 'try_stmt' # 'try' ':' suite (except_clause ':' suite)* ['finally' ':' suite]
+### except_clause: 'except' [expr [',' expr]]
+try: pass
+try: 1/0
+except ZeroDivisionError: pass
+try: 1/0
+except EOFError: pass
+except TypeError, msg: pass
+except RuntimeError, msg: pass
+except: pass
+try: pass
+finally: pass
+try: 1/0
+except: pass
+finally: pass
+
+print 'suite' # simple_stmt | NEWLINE INDENT NEWLINE* (stmt NEWLINE*)+ DEDENT
+if 1: pass
+if 1:
+	pass
+if 1:
+	#
+	#
+	#
+	pass
+	pass
+	#
+	pass
+	#
+
+print 'test'
+### and_test ('or' and_test)*
+### and_test: not_test ('and' not_test)*
+### not_test: 'not' not_test | comparison
+if not 1: pass
+if 1 and 1: pass
+if 1 or 1: pass
+if not not not 1: pass
+if not 1 and 1 and 1: pass
+if 1 and 1 or 1 and 1 and 1 or not 1 and 1: pass
+
+print 'comparison'
+### comparison: expr (comp_op expr)*
+### comp_op: '<'|'>'|'=='|'>='|'<='|'<>'|'!='|'in'|'not' 'in'|'is'|'is' 'not'
+if 1: pass
+x = (1 == 1)
+if 1 == 1: pass
+if 1 != 1: pass
+if 1 <> 1: pass
+if 1 < 1: pass
+if 1 > 1: pass
+if 1 <= 1: pass
+if 1 >= 1: pass
+if 1 is 1: pass
+if 1 is not 1: pass
+if 1 in (): pass
+if 1 not in (): pass
+if 1 < 1 > 1 == 1 >= 1 <= 1 <> 1 in 1 not in 1 is 1 is not 1: pass
+
+print 'binary mask ops'
+x = 1 & 1
+x = 1 ^ 1
+x = 1 | 1
+
+print 'shift ops'
+x = 1 << 1
+x = 1 >> 1
+x = 1 << 1 >> 1
+
+print 'additive ops'
+x = 1
+x = 1 + 1
+x = 1 - 1 - 1
+x = 1 - 1 + 1 - 1 + 1
+
+print 'multiplicative ops'
+x = 1 * 1
+x = 1 / 1
+x = 1 % 1
+x = 1 / 1 * 1 % 1
+
+print 'unary ops'
+x = +1
+x = -1
+x = ~1
+x = ~1 ^ 1 & 1 | 1 & 1 ^ -1
+x = -1*1/1 + 1*1 - ---1*1
+
+print 'selectors'
+### trailer: '(' [testlist] ')' | '[' subscript ']' | '.' NAME
+### subscript: expr | [expr] ':' [expr]
+import sys, time
+c = sys.path[0]
+x = time.time()
+x = sys.modules['time'].time()
+a = '01234'
+c = a[0]
+c = a[-1]
+s = a[0:5]
+s = a[:5]
+s = a[0:]
+s = a[:]
+s = a[-5:]
+s = a[:-1]
+s = a[-4:-3]
+
+print 'atoms'
+### atom: '(' [testlist] ')' | '[' [testlist] ']' | '{' [dictmaker] '}' | '`' testlist '`' | NAME | NUMBER | STRING
+### dictmaker: test ':' test (',' test ':' test)* [',']
+
+x = (1)
+x = (1 or 2 or 3)
+x = (1 or 2 or 3, 2, 3)
+
+x = []
+x = [1]
+x = [1 or 2 or 3]
+x = [1 or 2 or 3, 2, 3]
+x = []
+
+x = {}
+x = {'one': 1}
+x = {'one': 1,}
+x = {'one' or 'two': 1 or 2}
+x = {'one': 1, 'two': 2}
+x = {'one': 1, 'two': 2,}
+x = {'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5, 'six': 6}
+
+x = `x`
+x = `1 or 2 or 3`
+x = x
+x = 'x'
+x = 123
+
+### exprlist: expr (',' expr)* [',']
+### testlist: test (',' test)* [',']
+# These have been exercised enough above
+
+print 'classdef' # 'class' NAME parameters ['=' baselist] ':' suite
+### baselist: atom arguments (',' atom arguments)*
+### arguments: '(' [testlist] ')'
+class B: pass
+class C1(B): pass
+class C2(B): pass
+class D(C1, C2, B): pass
+class C:
+	def meth1(self): pass
+	def meth2(self, arg): pass
+	def meth3(self, a1, a2): pass
diff --git a/Lib/test/test_opcodes.py b/Lib/test/test_opcodes.py
new file mode 100644
index 0000000..41f1b8f
--- /dev/null
+++ b/Lib/test/test_opcodes.py
@@ -0,0 +1,24 @@
+# Python test set -- part 2, opcodes
+
+from test_support import *
+
+
+print '2. Opcodes'
+print 'XXX Not yet fully implemented'
+
+print '2.1 try inside for loop'
+n = 0
+for i in range(10):
+	n = n+i
+	try: 1/0
+	except NameError: pass
+	except ZeroDivisionError: pass
+	except TypeError: pass
+	finally: pass
+	try: pass
+	except: pass
+	try: pass
+	finally: pass
+	n = n+i
+if n <> 90:
+	raise TestFailed, 'try inside for'
diff --git a/Lib/test/test_operations.py b/Lib/test/test_operations.py
new file mode 100644
index 0000000..1a75065
--- /dev/null
+++ b/Lib/test/test_operations.py
@@ -0,0 +1,5 @@
+# Python test set -- part 3, built-in operations.
+
+
+print '3. Operations'
+print 'XXX Not yet implemented'
diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py
new file mode 100644
index 0000000..c6d0611
--- /dev/null
+++ b/Lib/test/test_support.py
@@ -0,0 +1,22 @@
+# Python test set -- supporting definitions.
+
+TestFailed = 'test_support -- test failed'	# Exception
+
+def unload(name):
+	import sys
+	try:
+		del sys.modules[name]
+	except KeyError:
+		pass
+
+def forget(modname):
+	unload(modname)
+	import sys, os
+	for dirname in sys.path:
+		try:
+			os.unlink(os.path.join(dirname, modname + '.pyc'))
+		except os.error:
+			pass
+
+TESTFN = '@test' # Filename used for testing
+from os import unlink
