Pārlūkot izejas kodu

+ Added dxeload and emu387

michael 25 gadi atpakaļ
vecāks
revīzija
2bc4761214
4 mainītis faili ar 131 papildinājumiem un 1 dzēšanām
  1. 60 0
      docs/dxeload.tex
  2. 62 0
      docs/emu387.tex
  3. 3 1
      docs/onechap.tex
  4. 6 0
      docs/units.tex

+ 60 - 0
docs/dxeload.tex

@@ -0,0 +1,60 @@
+%
+%   $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 DXELOAD unit}
+\section{Introduction}
+The \file{dxeload} unit was implemented by Pierre M\"uller for \dos,
+it allows to load a DXE file (an object file with 1 entry point)
+into memory and return a pointer to the entry point.
+
+It exists only for \dos.
+
+\section{Constants, types and variables}
+\subsection{Constants}
+The following constant is the magic number, found in the header of a DXE
+file.
+\begin{verbatim}
+DXE_MAGIC  = $31455844;
+\end{verbatim}
+\subsection{Types}
+The following record describes the header of a DXE file. It is used to
+determine the magic number of the DXE file and number of relocations that 
+must be done when the object file i sloaded in memory.
+\begin{verbatim}
+dxe_header = record
+   magic,
+   symbol_offset,
+   element_size,
+   nrelocs       : longint;
+end;
+\end{verbatim}
+
+\section{Functions and Procedures}
+\begin{functionl}{dxe\_load}{dxeload}
+\Declaration
+function dxe\_load(filename : string) : pointer;
+\Description
+\var{dxe\_load} loads the contents of the file \var{filename} into memory.
+It performs the necessary relocations in the object code, and returns then
+a pointer to the entry point of the code.
+\Errors
+If an error occurs during the load or relocations, \var{Nil} is returned.
+\end{functionl}
+For an example, see the \file{emu387} unit in the RTL.

+ 62 - 0
docs/emu387.tex

@@ -0,0 +1,62 @@
+%
+%   $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}

+ 3 - 1
docs/onechap.tex

@@ -28,9 +28,11 @@
 \begin{document}
 %\input{crt.tex}
 %\input{dos.tex}
+%\input{dxeload}
+\input{emu387}
 %\input{getopts.tex}
 %\input{go32.tex}
-\input{gpm.tex}
+%\input{gpm.tex}
 %\input{graph.tex}
 %\input{heaptrc.tex}
 %\input{ipc.tex}

+ 6 - 0
docs/units.tex

@@ -114,6 +114,10 @@ lookup.
 \input{crt.tex}
 % The Dos unit
 \input{dos.tex}
+% The DXELoad unit
+\input{dxeload.tex}
+% The emu387 unit
+\input{emu387.tex}
 % The getopts unit
 \input{getopts.tex}
 % The GPM unit
@@ -134,6 +138,8 @@ lookup.
 \input{mouse.tex}
 % the objects unit
 \input{objects.tex}
+% the ports unit
+\input{ports.tex}
 % the printer unit
 \input{printer.tex}
 % the sockets unit