diff --git a/Doc/mac/toolbox.tex b/Doc/mac/toolbox.tex
new file mode 100644
index 0000000..5429fff
--- /dev/null
+++ b/Doc/mac/toolbox.tex
@@ -0,0 +1,126 @@
+\chapter{MacOS Toolbox Modules \label{toolbox}}
+
+There are a set of modules that provide interfaces to various MacOS
+toolboxes.  If applicable the module will define a number of Python
+objects for the various structures declared by the toolbox, and
+operations will be implemented as methods of the object.  Other
+operations will be implemented as functions in the module.  Not all
+operations possible in C will also be possible in Python (callbacks
+are often a problem), and parameters will occasionally be different in
+Python (input and output buffers, especially).  All methods and
+functions have a \member{__doc__} string describing their arguments
+and return values, and for additional description you are referred to
+\citetitle[http://developer.apple.com/techpubs/macos8/mac8.html]{Inside
+Macintosh} or similar works.
+
+
+\strong{Warning!}  These modules are not yet documented.  If you
+wish to contribute documentation of any of these modules, please get
+in touch with \email{python-docs@python.org}.
+
+\localmoduletable
+
+
+%\section{Argument Handling for Toolbox Modules}
+
+
+\section{\module{AE} --- Apple Events}
+\declaremodule{standard}{AE}
+  \platform{Mac}
+\modulesynopsis{Interface to the Apple Events toolbox}
+
+
+\section{\module{Cm} --- Component Manager}
+\declaremodule{standard}{Cm}
+  \platform{Cm}
+\modulesynopsis{Interface to the Component Manager}
+
+
+\section{\module{Ctl} --- Control Manager}
+\declaremodule{standard}{Ctl}
+  \platform{Mac}
+\modulesynopsis{Interface to the Control Manager}
+
+
+\section{\module{Dlg} --- Dialog Manager}
+\declaremodule{standard}{Dlg}
+  \platform{Mac}
+\modulesynopsis{Interface to the Dialog Manager}
+
+
+\section{\module{Evt} --- Event Manager}
+\declaremodule{standard}{Evt}
+  \platform{Mac}
+\modulesynopsis{Interface to the Event Manager}
+
+
+\section{\module{Fm} --- Font Manager}
+\declaremodule{standard}{Fm}
+  \platform{Mac}
+\modulesynopsis{Interface to the Font Manager}
+
+
+\section{\module{List} --- List Manager}
+\declaremodule{standard}{List}
+  \platform{Mac}
+\modulesynopsis{Interface to the List Manager}
+
+
+\section{\module{Menu} --- Menu Manager}
+\declaremodule{standard}{Menu}
+  \platform{Mac}
+\modulesynopsis{Interface to the Menu Manager}
+
+
+\section{\module{Qd} --- QuickDraw}
+\declaremodule{builtin}{Qd}
+  \platform{Mac}
+\modulesynopsis{Interface to the QuickDraw toolbox}
+
+
+\section{\module{Qt} --- QuickTime}
+\declaremodule{standard}{Qt}
+  \platform{Mac}
+\modulesynopsis{Interface to the QuickTime toolbox}
+
+
+\section{\module{Res} --- Resource Manager and Handles}
+\declaremodule{standard}{Res}
+  \platform{Mac}
+\modulesynopsis{Interface to the Resource Manager and Handles}
+
+
+\section{\module{Scrap} --- Scrap Manager}
+\declaremodule{standard}{Scrap}
+  \platform{Mac}
+\modulesynopsis{Interface to the Scrap Manager}
+
+
+\section{\module{Snd} --- Sound Manager}
+\declaremodule{standard}{Snd}
+  \platform{Mac}
+\modulesynopsis{Interface to the Sound Manager }
+
+
+\section{\module{TE} --- TextEdit}
+\declaremodule{standard}{TE}
+  \platform{Mac}
+\modulesynopsis{Interface to TextEdit}
+
+
+\section{\module{waste} --- non-Apple \program{TextEdit} replacement}
+\declaremodule{standard}{waste}
+  \platform{Mac}
+\modulesynopsis{Interface to the ``WorldScript-Aware Styled Text Engine.''}
+
+\begin{seealso}
+  \seetitle[http://www.merzwaren.com/waste/]{About WASTE}{Information
+            about the WASTE widget and library, including
+            documentation and downloads.}
+\end{seealso}
+
+
+\section{\module{Win} --- Window Manager}
+\declaremodule{standard}{Win}
+  \platform{Mac}
+\modulesynopsis{Interface to the Window Manager}
diff --git a/Doc/mac/undoc.tex b/Doc/mac/undoc.tex
new file mode 100644
index 0000000..8e99b4b
--- /dev/null
+++ b/Doc/mac/undoc.tex
@@ -0,0 +1,119 @@
+\chapter{Undocumented Modules \label{undocumented-modules}}
+
+
+The modules in this chapter are poorly documented (if at all).  If you
+wish to contribute documentation of any of these modules, please get in
+touch with \email{python-docs@python.org}.
+
+\localmoduletable
+
+
+\section{\module{buildtools} --- Helper module for BuildApplet and Friends}
+\declaremodule{standard}{buildtools}
+  \platform{Mac}
+\modulesynopsis{Helper module for BuildApple, BuildApplication and macfreeze}
+
+
+\section{\module{py_resource} --- }
+\declaremodule[pyresource]{standard}{py_resource}
+  \platform{Mac}
+\modulesynopsis{}
+
+
+\section{\module{cfmfile} --- Code Fragment Resource module}
+\declaremodule{standard}{cfmfile}
+  \platform{Mac}
+\modulesynopsis{Code Fragment Resource module}
+
+\module{cfmfile} is a module that understands Code Fragments and the
+accompanying ``cfrg'' resources. It can parse them and merge them, and is
+used by BuildApplication to combine all plugin modules to a single
+executable.
+
+
+\section{\module{macerrors} --- MacOS Errors}
+\declaremodule{standard}{macerrors}
+  \platform{Mac}
+\modulesynopsis{Constant definitions for many MacOS error codes}
+
+\module{macerrors} cotains constant definitions for many MacOS error codes.
+
+
+\section{\module{macfsn} --- NavServices calls}
+\declaremodule{standard}{macfsn}
+  \platform{Mac}
+\modulesynopsis{NavServices versions of StandardFile calls}
+
+
+\module{macfsn} contains wrapper functions that have the same API as the macfs 
+StandardFile calls, but are implemented with Navigation Services. Importing it 
+will replace the methods in macfs with these, if Navigation Services is 
+available on your machine.
+
+
+\section{\module{icopen} --- Internet Config replacement for \method{open()}}
+\declaremodule{standard}{icopen}
+  \platform{Mac}
+\modulesynopsis{Internet Config replacement for \method{open()}}
+
+Importing \module{icopen} will replace the builtin \method{open()}
+with a version that uses Internet Config to set file type and creator
+for new files.
+
+
+\section{\module{mactty} --- }
+\declaremodule{standard}{mactty}
+  \platform{Mac}
+\modulesynopsis{}
+
+
+\section{\module{nsremote} --- Wrapper around Netscape OSA modules}
+\declaremodule{standard}{nsremote}
+  \platform{Mac}
+\modulesynopsis{Wrapper around Netscape OSA modules}
+
+\module{nsremote} is a wrapper around the Netscape OSA modules that
+allows you to easily send your browser to a given URL.
+
+
+\section{\module{PixMapWrapper} --- Wrapper for PixMap objects}
+\declaremodule{standard}{PixMapWrapper}
+  \platform{Mac}
+\modulesynopsis{Wrapper for PixMap objects}
+
+\module{PixMapWrapper} wraps a PixMap object with a Python object that
+allows access to the fields by name. It also has methods to convert
+to and from \module{PIL} images.
+
+
+\section{\module{preferences} --- }
+\declaremodule{standard}{preferences}
+  \platform{Mac}
+\modulesynopsis{}
+
+
+\section{\module{pythonprefs} --- }
+\declaremodule{standard}{pythonprefs}
+  \platform{Mac}
+\modulesynopsis{}
+
+
+\section{\module{quietconsole} --- non-visible stdout output}
+\declaremodule{standard}{quietconsole}
+  \platform{Mac}
+\modulesynopsis{buffered, non-visible stdout output}
+
+\module{quietconsole} allows you to keep stdio output in a buffer
+without displaying it (or without displaying the stdout window
+altogether, if set with \program{EditPythonPrefs}) until you try to read from
+stdin or disable the buffering, at which point all the saved output is
+sent to the window. Good for GUI programs that do want to display their
+output at a crash.
+
+
+\section{\module{W} --- Widgets built on \module{FrameWork}}
+\declaremodule{standard}{W}
+  \platform{Mac}
+\modulesynopsis{Widgets for the Mac, built on top of \module{FrameWork}}
+
+The \module{W} widgets are used extensively in the \program{IDE}.
