%
%   $Id$
%   This file is part of the FPC documentation.
%   Copyright (C) 1997, by Michael Van Canneyt
%
%   The FPC documentation is free text; you can redistribute it and/or
%   modify it under the terms of the GNU Library General Public License as
%   published by the Free Software Foundation; either version 2 of the
%   License, or (at your option) any later version.
%
%   The FPC Documentation is distributed in the hope that it will be useful,
%   but WITHOUT ANY WARRANTY; without even the implied warranty of
%   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
%   Library General Public License for more details.
%
%   You should have received a copy of the GNU Library General Public
%   License along with the FPC documentation; see the file COPYING.LIB.  If not,
%   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
%   Boston, MA 02111-1307, USA.
%
\chapter{The EMU387 unit}
The \file{emu387} unit was written by Pierre M\"uller for \dos. It
sets up the coprocessor emulation for FPC under \dos. It is not necessary to
use this unit on other OS platforms because they either simply do not run on 
a machine without coprocessor, or they provide the coprocessor emulation 
themselves.

It shouldn't be necessary to use the function in this unit, it should be
enough to place this unit in the \var{uses} clause of your program to
enable the coprocessor emulation under \dos. The unit initialization
code will try and load the coprocessor emulation code and initialize it.

\section{Functions and procedures}
\begin{function}{npxsetup}
\Declaration
procedure npxsetup(prog\_name : string);
\Description
\var{npxsetup} checks whether a coprocessor is found. If not, it loads the 
file \file{wmemu387.dxe} into memory and initializes the code in it.

If the environment variable \var{387} is set to \var{N}, then the emulation
will be loaded, even if there is a coprocessor present. If the variable
doesn't exist, or is set to any other value, the unit will try to detect 
the presence of a coprocessor unit.

The function searches the file \file{wmemu387.dxe} in the following way:
\begin{enumerate}
\item If the environment variable \var{EMU387} is set, then it is assumed
to point at the \file{wmemu387.dxe} file.
\item if the environment variable \var{EMU387} does not exist, then the 
function will take the path part of  \var{prog\_name} and look in that
directory for the file \file{wmemu387.dxe}.
\end{enumerate}

It should never be necessary to call this function, because the
initialization code of the unit contains a call to the function with
as an argument \var{paramstr(0)}. This means that you should deliver the
file \var{wmemu387.dxe} together with your program.
\Errors
If there is an error, an error message is printed to standard error, and
the program is halted, since any floating-point code is bound to fail anyhow.
\end{function}
