diff --git a/Doc/lib/lib.tex b/Doc/lib/lib.tex
index 0d4198b..537e48c 100644
--- a/Doc/lib/lib.tex
+++ b/Doc/lib/lib.tex
@@ -218,6 +218,7 @@
 %\input{libpanel}
 
 \input{libsun}			% SUNOS ONLY
+\input{libsunaudio}
 
 \input{libundoc}
 
diff --git a/Doc/lib/libsun.tex b/Doc/lib/libsun.tex
index 68d2c8b..25826cd 100644
--- a/Doc/lib/libsun.tex
+++ b/Doc/lib/libsun.tex
@@ -1,115 +1,6 @@
 \chapter{SunOS Specific Services}
+\label{sunos}
 
 The modules described in this chapter provide interfaces to features
 that are unique to the SunOS operating system (versions 4 and 5; the
 latter is also known as Solaris version 2).
-
-\section{Built-in Module \sectcode{sunaudiodev}}
-\label{module-sunaudiodev}
-\bimodindex{sunaudiodev}
-
-This module allows you to access the sun audio interface. The sun
-audio hardware is capable of recording and playing back audio data
-in U-LAW format with a sample rate of 8K per second. A full
-description can be gotten with \samp{man audio}.
-
-The module defines the following variables and functions:
-
-\setindexsubitem{(in module sunaudiodev)}
-\begin{excdesc}{error}
-This exception is raised on all errors. The argument is a string
-describing what went wrong.
-\end{excdesc}
-
-\begin{funcdesc}{open}{mode}
-This function opens the audio device and returns a sun audio device
-object. This object can then be used to do I/O on. The \var{mode} parameter
-is one of \code{'r'} for record-only access, \code{'w'} for play-only
-access, \code{'rw'} for both and \code{'control'} for access to the
-control device. Since only one process is allowed to have the recorder
-or player open at the same time it is a good idea to open the device
-only for the activity needed. See the audio manpage for details.
-\end{funcdesc}
-
-\subsection{Audio Device Objects}
-
-The audio device objects are returned by \code{open} define the
-following methods (except \code{control} objects which only provide
-getinfo, setinfo and drain):
-
-\setindexsubitem{(audio device method)}
-
-\begin{funcdesc}{close}{}
-This method explicitly closes the device. It is useful in situations
-where deleting the object does not immediately close it since there
-are other references to it. A closed device should not be used again.
-\end{funcdesc}
-
-\begin{funcdesc}{drain}{}
-This method waits until all pending output is processed and then returns.
-Calling this method is often not necessary: destroying the object will
-automatically close the audio device and this will do an implicit drain.
-\end{funcdesc}
-
-\begin{funcdesc}{flush}{}
-This method discards all pending output. It can be used avoid the
-slow response to a user's stop request (due to buffering of up to one
-second of sound).
-\end{funcdesc}
-
-\begin{funcdesc}{getinfo}{}
-This method retrieves status information like input and output volume,
-etc. and returns it in the form of
-an audio status object. This object has no methods but it contains a
-number of attributes describing the current device status. The names
-and meanings of the attributes are described in
-\file{/usr/include/sun/audioio.h} and in the audio man page. Member names
-are slightly different from their C counterparts: a status object is
-only a single structure. Members of the \code{play} substructure have
-\samp{o_} prepended to their name and members of the \code{record}
-structure have \samp{i_}. So, the C member \code{play.sample_rate} is
-accessed as \code{o_sample_rate}, \code{record.gain} as \code{i_gain}
-and \code{monitor_gain} plainly as \code{monitor_gain}.
-\end{funcdesc}
-
-\begin{funcdesc}{ibufcount}{}
-This method returns the number of samples that are buffered on the
-recording side, i.e.
-the program will not block on a \code{read} call of so many samples.
-\end{funcdesc}
-
-\begin{funcdesc}{obufcount}{}
-This method returns the number of samples buffered on the playback
-side. Unfortunately, this number cannot be used to determine a number
-of samples that can be written without blocking since the kernel
-output queue length seems to be variable.
-\end{funcdesc}
-
-\begin{funcdesc}{read}{size}
-This method reads \var{size} samples from the audio input and returns
-them as a python string. The function blocks until enough data is available.
-\end{funcdesc}
-
-\begin{funcdesc}{setinfo}{status}
-This method sets the audio device status parameters. The \var{status}
-parameter is an device status object as returned by \code{getinfo} and
-possibly modified by the program.
-\end{funcdesc}
-
-\begin{funcdesc}{write}{samples}
-Write is passed a python string containing audio samples to be played.
-If there is enough buffer space free it will immediately return,
-otherwise it will block.
-\end{funcdesc}
-
-There is a companion module, \code{SUNAUDIODEV}, which defines useful
-symbolic constants like \code{MIN_GAIN}, \code{MAX_GAIN},
-\code{SPEAKER}, etc. The names of
-the constants are the same names as used in the C include file
-\file{<sun/audioio.h>}, with the leading string \samp{AUDIO_}
-stripped.
-\refstmodindex{SUNAUDIODEV}
-
-Useability of the control device is limited at the moment, since there
-is no way to use the ``wait for something to happen'' feature the
-device provides.
diff --git a/Doc/lib/libsunaudio.tex b/Doc/lib/libsunaudio.tex
new file mode 100644
index 0000000..09b87bf
--- /dev/null
+++ b/Doc/lib/libsunaudio.tex
@@ -0,0 +1,109 @@
+\section{Built-in Module \sectcode{sunaudiodev}}
+\label{module-sunaudiodev}
+\bimodindex{sunaudiodev}
+
+This module allows you to access the sun audio interface. The sun
+audio hardware is capable of recording and playing back audio data
+in U-LAW format with a sample rate of 8K per second. A full
+description can be gotten with \samp{man audio}.
+
+The module defines the following variables and functions:
+
+\setindexsubitem{(in module sunaudiodev)}
+\begin{excdesc}{error}
+This exception is raised on all errors. The argument is a string
+describing what went wrong.
+\end{excdesc}
+
+\begin{funcdesc}{open}{mode}
+This function opens the audio device and returns a sun audio device
+object. This object can then be used to do I/O on. The \var{mode} parameter
+is one of \code{'r'} for record-only access, \code{'w'} for play-only
+access, \code{'rw'} for both and \code{'control'} for access to the
+control device. Since only one process is allowed to have the recorder
+or player open at the same time it is a good idea to open the device
+only for the activity needed. See the audio manpage for details.
+\end{funcdesc}
+
+\subsection{Audio Device Objects}
+
+The audio device objects are returned by \code{open} define the
+following methods (except \code{control} objects which only provide
+getinfo, setinfo and drain):
+
+\setindexsubitem{(audio device method)}
+
+\begin{funcdesc}{close}{}
+This method explicitly closes the device. It is useful in situations
+where deleting the object does not immediately close it since there
+are other references to it. A closed device should not be used again.
+\end{funcdesc}
+
+\begin{funcdesc}{drain}{}
+This method waits until all pending output is processed and then returns.
+Calling this method is often not necessary: destroying the object will
+automatically close the audio device and this will do an implicit drain.
+\end{funcdesc}
+
+\begin{funcdesc}{flush}{}
+This method discards all pending output. It can be used avoid the
+slow response to a user's stop request (due to buffering of up to one
+second of sound).
+\end{funcdesc}
+
+\begin{funcdesc}{getinfo}{}
+This method retrieves status information like input and output volume,
+etc. and returns it in the form of
+an audio status object. This object has no methods but it contains a
+number of attributes describing the current device status. The names
+and meanings of the attributes are described in
+\file{/usr/include/sun/audioio.h} and in the audio man page. Member names
+are slightly different from their C counterparts: a status object is
+only a single structure. Members of the \code{play} substructure have
+\samp{o_} prepended to their name and members of the \code{record}
+structure have \samp{i_}. So, the C member \code{play.sample_rate} is
+accessed as \code{o_sample_rate}, \code{record.gain} as \code{i_gain}
+and \code{monitor_gain} plainly as \code{monitor_gain}.
+\end{funcdesc}
+
+\begin{funcdesc}{ibufcount}{}
+This method returns the number of samples that are buffered on the
+recording side, i.e.
+the program will not block on a \function{read()} call of so many samples.
+\end{funcdesc}
+
+\begin{funcdesc}{obufcount}{}
+This method returns the number of samples buffered on the playback
+side. Unfortunately, this number cannot be used to determine a number
+of samples that can be written without blocking since the kernel
+output queue length seems to be variable.
+\end{funcdesc}
+
+\begin{funcdesc}{read}{size}
+This method reads \var{size} samples from the audio input and returns
+them as a python string. The function blocks until enough data is available.
+\end{funcdesc}
+
+\begin{funcdesc}{setinfo}{status}
+This method sets the audio device status parameters. The \var{status}
+parameter is an device status object as returned by \function{getinfo()} and
+possibly modified by the program.
+\end{funcdesc}
+
+\begin{funcdesc}{write}{samples}
+Write is passed a python string containing audio samples to be played.
+If there is enough buffer space free it will immediately return,
+otherwise it will block.
+\end{funcdesc}
+
+There is a companion module, \module{SUNAUDIODEV}, which defines useful
+symbolic constants like \constant{MIN_GAIN}, \constant{MAX_GAIN},
+\constant{SPEAKER}, etc. The names of
+the constants are the same names as used in the \C{} include file
+\code{<sun/audioio.h>}, with the leading string \samp{AUDIO_}
+stripped.
+\refstmodindex{SUNAUDIODEV}
+
+Useability of the control device is limited at the moment, since there
+is no way to use the ``wait for something to happen'' feature the
+device provides.
