Browse Source

Switched to new fpc style file

michael 27 years ago
parent
commit
c065388019
13 changed files with 2880 additions and 1562 deletions
  1. 275 126
      docs/crt.tex
  2. 392 152
      docs/dos.tex
  3. 16 36
      docs/fpc-html.tex
  4. 14 48
      docs/fpc.sty
  5. 22 24
      docs/getopts.tex
  6. 337 322
      docs/go32.tex
  7. 784 262
      docs/graph.tex
  8. 377 261
      docs/linux.tex
  9. 12 10
      docs/mmx.tex
  10. 168 73
      docs/mouse.tex
  11. 12 8
      docs/printer.tex
  12. 250 142
      docs/sockets.tex
  13. 221 98
      docs/strings.tex

+ 275 - 126
docs/crt.tex

@@ -22,21 +22,18 @@
 \label{ch:crtunit}
 \label{ch:crtunit}
 This chapter describes the \var{CRT} unit for Free Pascal, both under \dos
 This chapter describes the \var{CRT} unit for Free Pascal, both under \dos
 and \linux. The unit was first written for \dos by Florian kl\"ampfl. 
 and \linux. The unit was first written for \dos by Florian kl\"ampfl. 
-
 The unit was ported to \linux by Mark May\footnote{Current
 The unit was ported to \linux by Mark May\footnote{Current
 e-mail address \textsf{[email protected]}}, and enhanced by Micha\"el Van Canneyt
 e-mail address \textsf{[email protected]}}, and enhanced by Micha\"el Van Canneyt
 It works on the \linux console, and in xterm and rxvt windows under
 It works on the \linux console, and in xterm and rxvt windows under
 X-Windows. The functionality for both is the same, except that under \linux
 X-Windows. The functionality for both is the same, except that under \linux
 the use of an early implementation (versions 0.9.1 an earlier of the
 the use of an early implementation (versions 0.9.1 an earlier of the
 compiler) the crt unit automatically cleared the screen at program startup.
 compiler) the crt unit automatically cleared the screen at program startup.
-
 This chapter is divided in two sections. 
 This chapter is divided in two sections. 
 \begin{itemize}
 \begin{itemize}
 \item The first section lists the pre-defined constants, types and variables. 
 \item The first section lists the pre-defined constants, types and variables. 
 \item The second section describes the functions which appear in the
 \item The second section describes the functions which appear in the
 interface part of the CRT unit.
 interface part of the CRT unit.
 \end{itemize}
 \end{itemize}
-
 \section{Types, Variables, Constants}
 \section{Types, Variables, Constants}
 Color definitions :
 Color definitions :
 \begin{verbatim}
 \begin{verbatim}
@@ -105,230 +102,371 @@ screen. It is defined on \dos only.
 \begin{verbatim}
 \begin{verbatim}
 var lastmode : Word;
 var lastmode : Word;
 \end{verbatim}
 \end{verbatim}
-
 \section{Procedures and Functions}
 \section{Procedures and Functions}
+\begin{procedure}{AssignCrt}
+\Declaration
+Procedure AssignCrt (Var F: Text);
+
+\Description
 
 
-\procedure{AssignCrt}{(Var F: Text)}
-{
 Assigns a file F to the console. Everything written to the file F goes to
 Assigns a file F to the console. Everything written to the file F goes to
 the console instead. If the console contains a window, everything is written
 the console instead. If the console contains a window, everything is written
 to the window instead.
 to the window instead.
-}
-{None.}{\seep{Window}}
 
 
+\Errors
+None.
+\SeeAlso
+\seep{Window}
+\end{procedure}
 \latex{\inputlisting{crtex/ex1.pp}}
 \latex{\inputlisting{crtex/ex1.pp}}
  \html{\input{crtex/ex1.tex}}
  \html{\input{crtex/ex1.tex}}
-
-\Procedure{BigCursor}{Makes the cursor a big rectangle. 
-
-Not implemented on \linux.}
-{None.}{\seep{CursorOn}, \seep{CursorOff}}
-
-\Procedure {ClrEol}
-{ ClrEol clears the current line, starting from the cursor position, to the
-end of the window. The cursor doesn't move}
-{None.}{\seep{DelLine}, \seep{InsLine}, \seep{ClrScr}}
-
+\begin{procedure}{BigCursor}
+\Declaration
+Procedure BigCursor ;
+
+\Description
+Makes the cursor a big rectangle. 
+Not implemented on \linux.
+\Errors
+None.
+\SeeAlso
+\seep{CursorOn}, \seep{CursorOff}
+\end{procedure}
+\begin{procedure}{ClrEol}
+\Declaration
+Procedure ClrEol ;
+
+\Description
+ ClrEol clears the current line, starting from the cursor position, to the
+end of the window. The cursor doesn't move
+\Errors
+None.
+\SeeAlso
+\seep{DelLine}, \seep{InsLine}, \seep{ClrScr}
+\end{procedure}
 \latex{\inputlisting{crtex/ex9.pp}}
 \latex{\inputlisting{crtex/ex9.pp}}
  \html{\input{crtex/ex9.tex}}
  \html{\input{crtex/ex9.tex}}
+\begin{procedure}{ClrScr}
+\Declaration
+Procedure ClrScr ;
 
 
-\procedure {ClrScr}{}
-{ ClrScr clears the current window (using the current colors), 
+\Description
+ ClrScr clears the current window (using the current colors), 
 and sets the cursor in the top left
 and sets the cursor in the top left
-corner of the current window.}
-{None.}{ \seep{Window} }
-
+corner of the current window.
+\Errors
+None.
+\SeeAlso
+ \seep{Window} 
+\end{procedure}
 \latex{\inputlisting{crtex/ex8.pp}}
 \latex{\inputlisting{crtex/ex8.pp}}
  \html{\input{crtex/ex8.tex}}
  \html{\input{crtex/ex8.tex}}
+\begin{procedure}{CursorOff}
+\Declaration
+Procedure CursorOff ;
 
 
-\Procedure{CursorOff}{Switches the cursor off (i.e. the cursor is no
+\Description
+Switches the cursor off (i.e. the cursor is no
 longer visible). 
 longer visible). 
-
-Not implemented on \linux.}
-{None.}{\seep{CursorOn}, \seep{BigCursor}}
-
-\Procedure{CursorOn}{Switches the cursor on. 
-
-Not implemented on \linux.}
-{None.}{\seep{BigCursor}, \seep{CursorOff}}
-
-\procedure{Delay}{(DTime: Word)}
-{Delay waits a specified number of milliseconds. The number of specified
-seconds is an approximation, and may be off a lot, if system load is high.}
-{None}{\seep{Sound}, \seep{NoSound}}
-
+Not implemented on \linux.
+\Errors
+None.
+\SeeAlso
+\seep{CursorOn}, \seep{BigCursor}
+\end{procedure}
+\begin{procedure}{CursorOn}
+\Declaration
+Procedure CursorOn ;
+
+\Description
+Switches the cursor on. 
+Not implemented on \linux.
+\Errors
+None.
+\SeeAlso
+\seep{BigCursor}, \seep{CursorOff}
+\end{procedure}
+\begin{procedure}{Delay}
+\Declaration
+Procedure Delay (DTime: Word);
+
+\Description
+Delay waits a specified number of milliseconds. The number of specified
+seconds is an approximation, and may be off a lot, if system load is high.
+\Errors
+None
+\SeeAlso
+\seep{Sound}, \seep{NoSound}
+\end{procedure}
 \latex{\inputlisting{crtex/ex15.pp}}
 \latex{\inputlisting{crtex/ex15.pp}}
  \html{\input{crtex/ex15.tex}}
  \html{\input{crtex/ex15.tex}}
+\begin{procedure}{DelLine}
+\Declaration
+Procedure DelLine ;
 
 
-\Procedure {DelLine}
-{ DelLine removes the current line. Lines following the current line are 
+\Description
+ DelLine removes the current line. Lines following the current line are 
 scrolled 1 line up, and an empty line is inserted at the bottom of the
 scrolled 1 line up, and an empty line is inserted at the bottom of the
-current window. The cursor doesn't move.}
-{None.}{\seep{ClrEol}, \seep{InsLine}, \seep{ClrScr}}
-
+current window. The cursor doesn't move.
+\Errors
+None.
+\SeeAlso
+\seep{ClrEol}, \seep{InsLine}, \seep{ClrScr}
+\end{procedure}
 \latex{\inputlisting{crtex/ex11.pp}}
 \latex{\inputlisting{crtex/ex11.pp}}
  \html{\input{crtex/ex11.tex}}
  \html{\input{crtex/ex11.tex}}
+\begin{procedure}{GotoXY}
+\Declaration
+Procedure GotoXY (X: Byte; Y: Byte);
 
 
-\procedure {GotoXY}{(X: Byte; Y: Byte)}
-{ Positions the cursor at \var{(X,Y)}, \var{X} in horizontal, \var{Y} in
+\Description
+ Positions the cursor at \var{(X,Y)}, \var{X} in horizontal, \var{Y} in
 vertical direction relative to the origin of the current window. The origin
 vertical direction relative to the origin of the current window. The origin
 is located at \var{(1,1)}, the upper-left corner of the window.
 is located at \var{(1,1)}, the upper-left corner of the window.
-}
-{None.}{ \seef{WhereX}, \seef{WhereY}, \seep{Window} }
 
 
+\Errors
+None.
+\SeeAlso
+ \seef{WhereX}, \seef{WhereY}, \seep{Window} 
+\end{procedure}
 \latex{\inputlisting{crtex/ex6.pp}}
 \latex{\inputlisting{crtex/ex6.pp}}
  \html{\input{crtex/ex6.tex}}
  \html{\input{crtex/ex6.tex}}
+\begin{procedure}{HighVideo}
+\Declaration
+Procedure HighVideo ;
 
 
-\procedure {HighVideo}{}
-{ HighVideo switches the output to highlighted text. (It sets the high
+\Description
+ HighVideo switches the output to highlighted text. (It sets the high
 intensity bit of the video attribute)
 intensity bit of the video attribute)
-}
-{None.}{ \seep{TextColor}, \seep{TextBackground}, \seep{LowVideo},
-\seep{NormVideo}}
 
 
+\Errors
+None.
+\SeeAlso
+ \seep{TextColor}, \seep{TextBackground}, \seep{LowVideo},
+\seep{NormVideo}
+\end{procedure}
 \latex{\inputlisting{crtex/ex14.pp}}
 \latex{\inputlisting{crtex/ex14.pp}}
  \html{\input{crtex/ex14.tex}}
  \html{\input{crtex/ex14.tex}}
+\begin{procedure}{InsLine}
+\Declaration
+Procedure InsLine ;
 
 
-\procedure {InsLine}{}
-{ InsLine inserts an empty line at the current cursor position. 
+\Description
+ InsLine inserts an empty line at the current cursor position. 
 Lines following the current line are scrolled 1 line down, 
 Lines following the current line are scrolled 1 line down, 
 causing the last line to disappear from the window. 
 causing the last line to disappear from the window. 
-The cursor doesn't move.}
-{None.}{\seep{ClrEol}, \seep{DelLine}, \seep{ClrScr}}
-
+The cursor doesn't move.
+\Errors
+None.
+\SeeAlso
+\seep{ClrEol}, \seep{DelLine}, \seep{ClrScr}
+\end{procedure}
 \latex{\inputlisting{crtex/ex10.pp}}
 \latex{\inputlisting{crtex/ex10.pp}}
  \html{\input{crtex/ex10.tex}}
  \html{\input{crtex/ex10.tex}}
+\begin{function}{KeyPressed}
+\Declaration
+Function KeyPressed  : Boolean;
 
 
-\Function {KeyPressed}{Boolean}
-{ The Keypressed function scans the keyboard buffer and sees if a key has
+\Description
+ The Keypressed function scans the keyboard buffer and sees if a key has
 been pressed. If this is the case, \var{True} is returned. If not,
 been pressed. If this is the case, \var{True} is returned. If not,
 \var{False} is returned. The \var{Shift, Alt, Ctrl} keys are not reported.
 \var{False} is returned. The \var{Shift, Alt, Ctrl} keys are not reported.
 The key is not removed from the buffer, and can hence still be read after
 The key is not removed from the buffer, and can hence still be read after
 the KeyPressed function has been called.
 the KeyPressed function has been called.
-}
-{None.}{\seef{ReadKey}}
 
 
+\Errors
+None.
+\SeeAlso
+\seef{ReadKey}
+\end{function}
 \latex{\inputlisting{crtex/ex2.pp}}
 \latex{\inputlisting{crtex/ex2.pp}}
  \html{\input{crtex/ex2.tex}}
  \html{\input{crtex/ex2.tex}}
+\begin{procedure}{LowVideo}
+\Declaration
+Procedure LowVideo ;
 
 
-\Procedure {LowVideo}
-{ LowVideo switches the output to non-highlighted text. (It clears the high
+\Description
+ LowVideo switches the output to non-highlighted text. (It clears the high
 intensity bit of the video attribute)
 intensity bit of the video attribute)
-}
-{None.}{ \seep{TextColor}, \seep{TextBackground}, \seep{HighVideo},
-\seep{NormVideo}}
 
 
+\Errors
+None.
+\SeeAlso
+ \seep{TextColor}, \seep{TextBackground}, \seep{HighVideo},
+\seep{NormVideo}
+\end{procedure}
 For an example, see \seep{HighVideo}
 For an example, see \seep{HighVideo}
+\begin{procedure}{NormVideo}
+\Declaration
+Procedure NormVideo ;
 
 
-\Procedure {NormVideo}
-{ NormVideo switches the output to the defaults, read at startup. (The
+\Description
+ NormVideo switches the output to the defaults, read at startup. (The
 defaults are read from the cursor position at startup)
 defaults are read from the cursor position at startup)
-}
-{None.}{ \seep{TextColor}, \seep{TextBackground}, \seep{LowVideo},
-\seep{HighVideo}}
 
 
+\Errors
+None.
+\SeeAlso
+ \seep{TextColor}, \seep{TextBackground}, \seep{LowVideo},
+\seep{HighVideo}
+\end{procedure}
 For an example, see \seep{HighVideo}
 For an example, see \seep{HighVideo}
+\begin{procedure}{NoSound}
+\Declaration
+Procedure NoSound ;
 
 
-\Procedure{NoSound}{
-Stops the speaker sound.
-
-This is not supported in \linux}{None.}{\seep{Sound}}
+\Description
 
 
+Stops the speaker sound.
+This is not supported in \linux
+\Errors
+None.
+\SeeAlso
+\seep{Sound}
+\end{procedure}
 \latex{\inputlisting{crtex/ex16.pp}}
 \latex{\inputlisting{crtex/ex16.pp}}
  \html{\input{crtex/ex16.tex}}
  \html{\input{crtex/ex16.tex}}
+\begin{function}{ReadKey}
+\Declaration
+Function ReadKey  : Char;
+
+\Description
 
 
-\Function  {ReadKey}{Char}
-{
 The ReadKey function reads 1 key from the keyboard buffer, and returns this.
 The ReadKey function reads 1 key from the keyboard buffer, and returns this.
 If an extended or function key has been pressed, then the zero ASCII code is 
 If an extended or function key has been pressed, then the zero ASCII code is 
 returned. You can then read the scan code of the key with a second ReadKey
 returned. You can then read the scan code of the key with a second ReadKey
 call.
 call.
-
 \textbf{Remark.} Key mappings under Linux can cause the wrong key to be
 \textbf{Remark.} Key mappings under Linux can cause the wrong key to be
 reported by ReadKey, so caution is needed when using ReadKey.  
 reported by ReadKey, so caution is needed when using ReadKey.  
-}
-{None.}{\seef{KeyPressed}}
 
 
+\Errors
+None.
+\SeeAlso
+\seef{KeyPressed}
+\end{function}
 \latex{\inputlisting{crtex/ex3.pp}}
 \latex{\inputlisting{crtex/ex3.pp}}
  \html{\input{crtex/ex3.tex}}
  \html{\input{crtex/ex3.tex}}
+\begin{procedure}{Sound}
+\Declaration
+Procedure Sound (hz : word);
+
+\Description
+ Sounds the speaker at a frequency of \var{hz}.
+This is not supported in \linux
+\Errors
+None.
+\SeeAlso
+\seep{NoSound}
+\end{procedure}
+\begin{procedure}{TextBackground}
+\Declaration
+Procedure TextBackground (CL: Byte);
+
+\Description
 
 
-
-\procedure{Sound}{(hz : word)}
-{ Sounds the speaker at a frequency of \var{hz}.
-
-This is not supported in \linux}{None.}{\seep{NoSound}}
-
-\procedure {TextBackground}{(CL: Byte)}
-{
 TextBackground sets the background color to \var{CL}. \var{CL} can be one of the
 TextBackground sets the background color to \var{CL}. \var{CL} can be one of the
 predefined color constants.
 predefined color constants.
-}
-{None.}{ \seep{TextColor}, \seep{HighVideo}, \seep{LowVideo},
-\seep{NormVideo}}
 
 
+\Errors
+None.
+\SeeAlso
+ \seep{TextColor}, \seep{HighVideo}, \seep{LowVideo},
+\seep{NormVideo}
+\end{procedure}
 \latex{\inputlisting{crtex/ex13.pp}}
 \latex{\inputlisting{crtex/ex13.pp}}
  \html{\input{crtex/ex13.tex}}
  \html{\input{crtex/ex13.tex}}
+\begin{procedure}{TextColor}
+\Declaration
+Procedure TextColor (CL: Byte);
+
+\Description
 
 
-\procedure {TextColor}{(CL: Byte)}
-{
 TextColor sets the foreground color to \var{CL}. \var{CL} can be one of the
 TextColor sets the foreground color to \var{CL}. \var{CL} can be one of the
 predefined color constants.
 predefined color constants.
-}
-{None.}{ \seep{TextBackground}, \seep{HighVideo}, \seep{LowVideo},
-\seep{NormVideo}}
 
 
+\Errors
+None.
+\SeeAlso
+ \seep{TextBackground}, \seep{HighVideo}, \seep{LowVideo},
+\seep{NormVideo}
+\end{procedure}
 \latex{\inputlisting{crtex/ex12.pp}}
 \latex{\inputlisting{crtex/ex12.pp}}
  \html{\input{crtex/ex12.tex}}
  \html{\input{crtex/ex12.tex}}
+\begin{function}{WhereX}
+\Declaration
+Function WhereX  : Byte;
+
+\Description
 
 
-\Function  {WhereX}{Byte}
-{
 WhereX returns the current X-coordinate of the cursor, relative to the
 WhereX returns the current X-coordinate of the cursor, relative to the
 current window. The origin is \var{(1,1)}, in the upper-left corner of the
 current window. The origin is \var{(1,1)}, in the upper-left corner of the
 window.
 window.
-}
-{None.}{ \seep{GotoXY}, \seef{WhereY}, \seep{Window} }
-
 
 
+\Errors
+None.
+\SeeAlso
+ \seep{GotoXY}, \seef{WhereY}, \seep{Window} 
+\end{function}
 \latex{\inputlisting{crtex/ex7.pp}}
 \latex{\inputlisting{crtex/ex7.pp}}
  \html{\input{crtex/ex7.tex}}
  \html{\input{crtex/ex7.tex}}
+\begin{function}{WhereY}
+\Declaration
+Function WhereY  : Byte;
+
+\Description
 
 
-\Function  {WhereY}{Byte}
-{
 WhereY returns the current Y-coordinate of the cursor, relative to the
 WhereY returns the current Y-coordinate of the cursor, relative to the
 current window. The origin is \var{(1,1)}, in the upper-left corner of the
 current window. The origin is \var{(1,1)}, in the upper-left corner of the
 window.
 window.
-}
-{None.}{ \seep{GotoXY}, \seef{WhereX}, \seep{Window} }
 
 
+\Errors
+None.
+\SeeAlso
+ \seep{GotoXY}, \seef{WhereX}, \seep{Window} 
+\end{function}
 \latex{\inputlisting{crtex/ex7.pp}}
 \latex{\inputlisting{crtex/ex7.pp}}
  \html{\input{crtex/ex7.tex}}
  \html{\input{crtex/ex7.tex}}
+\begin{procedure}{Window}
+\Declaration
+Procedure Window (X1, Y1, X2, Y2: Byte);
 
 
-\procedure {Window}{(X1, Y1, X2, Y2: Byte)}
-{ Window creates a window on the screen, to which output will be sent.
+\Description
+ Window creates a window on the screen, to which output will be sent.
 \var{(X1,Y1)} are the coordinates of the upper left corner of the window,
 \var{(X1,Y1)} are the coordinates of the upper left corner of the window,
 \var{(X2,Y2)} are the coordinates of the bottom right corner of the window.
 \var{(X2,Y2)} are the coordinates of the bottom right corner of the window.
 These coordinates are relative to the entire screen, with the top left
 These coordinates are relative to the entire screen, with the top left
 corner equal to \var{(1,1)}
 corner equal to \var{(1,1)}
-
 Further coordinate operations, except for the next Window call,
 Further coordinate operations, except for the next Window call,
 are relative to the window's top left corner.
 are relative to the window's top left corner.
-}
-{None.}{\seep{GotoXY}, \seef{WhereX}, \seef{WhereY}, \seep{ClrScr}}
 
 
+\Errors
+None.
+\SeeAlso
+\seep{GotoXY}, \seef{WhereX}, \seef{WhereY}, \seep{ClrScr}
+\end{procedure}
 \latex{\inputlisting{crtex/ex5.pp}}
 \latex{\inputlisting{crtex/ex5.pp}}
 \html{\input{crtex/ex5.tex}}
 \html{\input{crtex/ex5.tex}}
+\begin{procedure}{ScrollWindow}
+\Declaration
+Procedure ScrollWindow (X1,Y1,X2,Y2 : Byte; Count : Longint);
 
 
-
-%\procedure {ScrollWindow}{(X1,Y1,X2,Y2 : Byte; Count : Longint)}
-%{ ScrollWindow scrolls the contents of the window defined by the upper-left
+\Description
+ ScrollWindow scrolls the contents of the window defined by the upper-left
 %\var{(X1,Y1)} and lower-right \var{(X2,Y2)} corners \var{count} lines up if
 %\var{(X1,Y1)} and lower-right \var{(X2,Y2)} corners \var{count} lines up if
 %\var{count} is positive, it scrolls down if \var{count} is negative.
 %\var{count} is positive, it scrolls down if \var{count} is negative.
 %The new lines are made blank using the current textcolors.
 %The new lines are made blank using the current textcolors.
-%}
-%{None.}{\seep{Window}, \seep{ClrScr}}
-
-%\function {SaveScreenRegion}{(X1,Y1,X2,Y2, var P : pointer)}{Boolean}
-%{SaveScreenRegion writes the the contents of the window defined by the upper-left
+%
+\Errors
+None.
+\SeeAlso
+\seep{Window}, \seep{ClrScr}
+\end{procedure}
+\begin{function}{SaveScreenRegion}
+\Declaration
+Function SaveScreenRegion (X1,Y1,X2,Y2, var P : pointer) : Boolean;
+
+\Description
+SaveScreenRegion writes the the contents of the window defined by the upper-left
 %\var{(X1,Y1)} and lower-right \var{(X2,Y2)} corners to the location pointed
 %\var{(X1,Y1)} and lower-right \var{(X2,Y2)} corners to the location pointed
 %to by \var{P}. If \var{P} is \var{nil} then enough memory is allocated to
 %to by \var{P}. If \var{P} is \var{nil} then enough memory is allocated to
 %contain the contents of the window.
 %contain the contents of the window.
@@ -339,17 +477,28 @@ are relative to the window's top left corner.
 %\var{(Y2-Y1+1)*(X2-X1+1)*2} bytes.
 %\var{(Y2-Y1+1)*(X2-X1+1)*2} bytes.
 %
 %
 %The function returns \var{False} if it couldn't allocate the required
 %The function returns \var{False} if it couldn't allocate the required
-%memory, \var{True} if the memory was allocated.}{None.}
-%{\seep{RestoreScreenRegion}, \seep{Window} }
-
-%\procedure {RestoreScreenRegion}{(X1,Y1,X2,Y2, var P : pointer)}
-%{SaveScreenRegion writes the the contents of the memory location pointed to
+%memory, \var{True} if the memory was allocated.
+\Errors
+None.
+\SeeAlso
+\seep{RestoreScreenRegion}, \seep{Window} 
+\end{function}
+\begin{procedure}{RestoreScreenRegion}
+\Declaration
+Procedure RestoreScreenRegion (X1,Y1,X2,Y2, var P : pointer);
+
+\Description
+SaveScreenRegion writes the the contents of the memory location pointed to
 %by \var{P}, to the window defined by the upper-left \var{(X1,Y1)} and 
 %by \var{P}, to the window defined by the upper-left \var{(X1,Y1)} and 
 %lower-right \var{(X2,Y2)} corners. 
 %lower-right \var{(X2,Y2)} corners. 
 %
 %
 %The contents of \var{P} should be arranged as if they are when written by 
 %The contents of \var{P} should be arranged as if they are when written by 
 %a call to the SaveScreenRegion () function.
 %a call to the SaveScreenRegion () function.
 %
 %
-%The memory pointed to by \var{P} is NOT freed.}{None}
-%{\seef{SaveScreenRegion}, \seep{Window} }
+%The memory pointed to by \var{P} is NOT freed.
+\Errors
+None
+\SeeAlso
+\seef{SaveScreenRegion}, \seep{Window} 
+\end{procedure}
 
 

+ 392 - 152
docs/dos.tex

@@ -21,21 +21,18 @@
 \chapter{The DOS unit.}
 \chapter{The DOS unit.}
 This chapter describes the \var{DOS} unit for Free pascal, both under \dos
 This chapter describes the \var{DOS} unit for Free pascal, both under \dos
 and \linux. The unit was first written for \dos by Florian kl\"ampfl. 
 and \linux. The unit was first written for \dos by Florian kl\"ampfl. 
-
 The unit was ported to \linux by Mark May\footnote{Current
 The unit was ported to \linux by Mark May\footnote{Current
 e-mail address \textsf{[email protected]}}, and enhanced by Micha\"el Van
 e-mail address \textsf{[email protected]}}, and enhanced by Micha\"el Van
 Canneyt.
 Canneyt.
 Under \linux, some of the functionality is lost, as it is either impossible 
 Under \linux, some of the functionality is lost, as it is either impossible 
 or meaningless to implement it. Other than that, 
 or meaningless to implement it. Other than that, 
 the functionality for both operating systems is the same.
 the functionality for both operating systems is the same.
-
 This chapter is divided in two sections. 
 This chapter is divided in two sections. 
 \begin{itemize}
 \begin{itemize}
 \item The first section lists the pre-defined constants, types and variables. 
 \item The first section lists the pre-defined constants, types and variables. 
 \item The second section describes the functions which appear in the
 \item The second section describes the functions which appear in the
 interface part of the DOS unit.
 interface part of the DOS unit.
 \end{itemize}
 \end{itemize}
-
 \section{Types, Variables, Constants}
 \section{Types, Variables, Constants}
 \subsection {Constants}
 \subsection {Constants}
 The DOS unit implements the following constants:
 The DOS unit implements the following constants:
@@ -47,7 +44,6 @@ The DOS unit implements the following constants:
   fzero =      $0040;
   fzero =      $0040;
   fsign =      $0080;
   fsign =      $0080;
   foverflow  = $0800;
   foverflow  = $0800;
-
   {Bitmasks for file attribute}
   {Bitmasks for file attribute}
   readonly =   $01;
   readonly =   $01;
   hidden =     $02;
   hidden =     $02;
@@ -100,7 +96,6 @@ different from \dos's, and the calls have to be mimicked.
 \begin{verbatim}
 \begin{verbatim}
 const
 const
   filerecnamelength = 255;
   filerecnamelength = 255;
-
 type
 type
   FileRec = Packed Record
   FileRec = Packed Record
     Handle,
     Handle,
@@ -117,7 +112,6 @@ Text files are handled by the following types :
 const
 const
   TextRecNameLength = 256;
   TextRecNameLength = 256;
   TextRecBufSize    = 256;
   TextRecBufSize    = 256;
-
 type
 type
   TextBuf = array[0..TextRecBufSize-1] of char;
   TextBuf = array[0..TextRecBufSize-1] of char;
   TextRec = Packed Record
   TextRec = Packed Record
@@ -162,7 +156,6 @@ The  \var{registers} type is used in the \var{MSDos} call.
 \end{verbatim}
 \end{verbatim}
 The \var{DateTime} type is used in \seep{PackTime} and \seep{UnPackTime} for
 The \var{DateTime} type is used in \seep{PackTime} and \seep{UnPackTime} for
 setting/reading file times with \seep{GetFTime} and \seep{SetFTime}.
 setting/reading file times with \seep{GetFTime} and \seep{SetFTime}.
-
 \subsection{Variables}
 \subsection{Variables}
 \begin{verbatim}
 \begin{verbatim}
     DosError : integer;
     DosError : integer;
@@ -187,18 +180,18 @@ Other values are possible, but are not documented.
 %\end{verbatim}
 %\end{verbatim}
 %This variable is defined in the \linux version of the \dos unit. It is used
 %This variable is defined in the \linux version of the \dos unit. It is used
 %in the \seef{DiskFree} and \seef{DiskSize} calls.
 %in the \seef{DiskFree} and \seef{DiskSize} calls.
-
 \section{Functions and Procedures}
 \section{Functions and Procedures}
+\begin{procedure}{AddDisk}
+\Declaration
+Procedure AddDisk (Const S : String);
 
 
-\procedure{AddDisk}{(Const S : String)}
-{\var{AddDisk} adds a filename \var{S} to the internal list of disks. It is
+\Description
+\var{AddDisk} adds a filename \var{S} to the internal list of disks. It is
 implemented for \linux only.
 implemented for \linux only.
  This list is used to determine which disks to use in the \seef{DiskFree}
  This list is used to determine which disks to use in the \seef{DiskFree}
 and \seef{DiskSize} calls. 
 and \seef{DiskSize} calls. 
-
 The \seef{DiskFree} and \seef{DiskSize} functions need a file on the 
 The \seef{DiskFree} and \seef{DiskSize} functions need a file on the 
 specified drive, since this is required for the \var{statfs} system call.
 specified drive, since this is required for the \var{statfs} system call.
-
 The names are added sequentially. The dos
 The names are added sequentially. The dos
 initialization code presets the first three disks to:
 initialization code presets the first three disks to:
 \begin{itemize}
 \begin{itemize}
@@ -210,21 +203,27 @@ initialization code presets the first three disks to:
 The first call to \var{AddDisk} will therefore add a name for the second
 The first call to \var{AddDisk} will therefore add a name for the second
 harddisk, The second call for the third drive, and so on until 23 drives
 harddisk, The second call for the third drive, and so on until 23 drives
 have been added (corresponding to drives \var{'D:'} to \var{'Z:'})
 have been added (corresponding to drives \var{'D:'} to \var{'Z:'})
-}{None}{\seef{DiskFree}, \seef{DiskSize} }
 
 
-\function{DiskFree}{(Drive: byte)}{longint}{
+\Errors
+None
+\SeeAlso
+\seef{DiskFree}, \seef{DiskSize} 
+\end{procedure}
+\begin{function}{DiskFree}
+\Declaration
+Function DiskFree (Drive: byte) : longint;
+
+\Description
+
 \var{DiskFree} returns the number of free bytes on a disk. The parameter
 \var{DiskFree} returns the number of free bytes on a disk. The parameter
 \var{Drive} indicates which disk should be checked. This parameter is 1 for
 \var{Drive} indicates which disk should be checked. This parameter is 1 for
 floppy \var{a:}, 2 for floppy \var{b:}, etc. A value of 0 returns the free
 floppy \var{a:}, 2 for floppy \var{b:}, etc. A value of 0 returns the free
 space on the current drive. 
 space on the current drive. 
-
 Typically, the free space is the size of a disk block, multiplied by the
 Typically, the free space is the size of a disk block, multiplied by the
 number of free blocks on the disk.
 number of free blocks on the disk.
-
 \textbf{For \linux only:}\\
 \textbf{For \linux only:}\\
 The \var{diskfree} and \var{disksize} functions need a file on the 
 The \var{diskfree} and \var{disksize} functions need a file on the 
 specified drive, since this is required for the \var{statfs} system call.
 specified drive, since this is required for the \var{statfs} system call.
-
 These filenames are set in the initialization of the dos unit, and have 
 These filenames are set in the initialization of the dos unit, and have 
 been preset to :
 been preset to :
 \begin{itemize}
 \begin{itemize}
@@ -235,20 +234,25 @@ been preset to :
 \end{itemize}
 \end{itemize}
 There is room for 1-26 drives. You can add a drive with the
 There is room for 1-26 drives. You can add a drive with the
 \seep{AddDisk} procedure.
 \seep{AddDisk} procedure.
-
 These settings can be coded in \var{dos.pp}, in the initialization part.
 These settings can be coded in \var{dos.pp}, in the initialization part.
-}{-1 when a failure occurs, or an invalid \var{drivenr} is given.}  
-{\seef{DiskSize}, \seep{AddDisk}}
 
 
+\Errors
+-1 when a failure occurs, or an invalid \var{drivenr} is given.
+\SeeAlso
+\seef{DiskSize}, \seep{AddDisk}
+\end{function}
 \latex{\inputlisting{dosex/ex6.pp}}
 \latex{\inputlisting{dosex/ex6.pp}}
 \html{\input{dosex/ex6.tex}}
 \html{\input{dosex/ex6.tex}}
+\begin{function}{DiskSize}
+\Declaration
+Function DiskSize (Drive: byte) : longint;
+
+\Description
 
 
-\function{DiskSize}{(Drive: byte)}{longint}{
 \var{DiskSize} returns the total size (in bytes) of a disk. The parameter
 \var{DiskSize} returns the total size (in bytes) of a disk. The parameter
 \var{Drive} indicates which disk should be checked. This parameter is 1 for
 \var{Drive} indicates which disk should be checked. This parameter is 1 for
 floppy \var{a:}, 2 for floppy \var{b:}, etc. A value of 0 returns the size
 floppy \var{a:}, 2 for floppy \var{b:}, etc. A value of 0 returns the size
 of the current drive. 
 of the current drive. 
-
 \textbf{For \linux only:}\\
 \textbf{For \linux only:}\\
 The \var{diskfree} and \var{disksize} functions need a file on the specified drive, since this
 The \var{diskfree} and \var{disksize} functions need a file on the specified drive, since this
 is required for the \var{statfs} system call.
 is required for the \var{statfs} system call.
@@ -262,166 +266,268 @@ been preset to :
 \end{itemize}
 \end{itemize}
 There is room for 1-26 drives. You can add a drive with the
 There is room for 1-26 drives. You can add a drive with the
 \seep{AddDisk} procedure.
 \seep{AddDisk} procedure.
-
 These settings can be coded in \var{dos.pp}, in the initialization part.
 These settings can be coded in \var{dos.pp}, in the initialization part.
-}{-1 when a failure occurs, or an invalid drive number is given.}  
-{\seef{DiskFree}, \seep{AddDisk}}
 
 
+\Errors
+-1 when a failure occurs, or an invalid drive number is given.
+\SeeAlso
+\seef{DiskFree}, \seep{AddDisk}
+\end{function}
 For an example, see \seef{DiskFree}.
 For an example, see \seef{DiskFree}.
+\begin{function}{DosExitCode}
+\Declaration
+Function DosExitCode  : Word;
 
 
-\Function{DosExitCode}{Word}{
-\var{DosExitCode} contains (in the low byte) the exit-code of a program 
-executed with the \var{Exec} call.}{None.}{\seep{Exec}}
+\Description
 
 
+\var{DosExitCode} contains (in the low byte) the exit-code of a program 
+executed with the \var{Exec} call.
+\Errors
+None.
+\SeeAlso
+\seep{Exec}
+\end{function}
 \latex{\inputlisting{dosex/ex5.pp}}
 \latex{\inputlisting{dosex/ex5.pp}}
 \html{\input{dosex/ex5.tex}}
 \html{\input{dosex/ex5.tex}}
+\begin{function}{DosVersion}
+\Declaration
+Function DosVersion  : Word;
 
 
-\Function{DosVersion}{Word}
-{\var{DosVersion} returns the \dos version number. On \linux systems, it
+\Description
+\var{DosVersion} returns the \dos version number. On \linux systems, it
 returns the Linux version (The first 2 numbers, e.g Linux version 2.1.76 will
 returns the Linux version (The first 2 numbers, e.g Linux version 2.1.76 will
-give you DosVersion 2.1)}{None.}{}
+give you DosVersion 2.1)
+\Errors
+None.
+\SeeAlso
 
 
+\end{function}
 \latex{\inputlisting{dosex/ex1.pp}}
 \latex{\inputlisting{dosex/ex1.pp}}
 \html{\input{dosex/ex1.tex}}
 \html{\input{dosex/ex1.tex}}
+\begin{function}{EnvCount}
+\Declaration
+Function EnvCount  : longint;
 
 
-\Function{EnvCount}{longint}{
-\var{EnvCount} returns the number of environment variables.}
-{None.}{\seef{EnvStr}, \seef{GetEnv}}
-\function{EnvStr}{(Index: integer)}{string}{
-\var{EnvStr} returns the \var{Index}-th \var{Name=Value} pair from the list
-of environment variables. 
+\Description
+
+\var{EnvCount} returns the number of environment variables.
+\Errors
+None.
+\SeeAlso
+\seef{EnvStr}, \seef{GetEnv}
+\end{function}
+\begin{function}{EnvStr}
+\Declaration
+Function EnvStr (Index: integer) : string;
 
 
-The index of the first pair is zero.}
-{The length is limited to 255 characters. This may cause problems under
-\linux. The \linux unit solves this problem.}{\seef{EnvCount}, \seef{GetEnv}}
+\Description
 
 
+\var{EnvStr} returns the \var{Index}-th \var{Name=Value} pair from the list
+of environment variables. 
+The index of the first pair is zero.
+\Errors
+The length is limited to 255 characters. This may cause problems under
+\linux. The \linux unit solves this problem.
+\SeeAlso
+\seef{EnvCount}, \seef{GetEnv}
+\end{function}
 \latex{\inputlisting{dosex/ex13.pp}}
 \latex{\inputlisting{dosex/ex13.pp}}
 \html{\input{dosex/ex13.tex}}
 \html{\input{dosex/ex13.tex}}
+\begin{procedure}{Exec}
+\Declaration
+Procedure Exec (const Path: pathstr; const ComLine: comstr);
+
+\Description
 
 
-\procedure{Exec}{(const Path: pathstr; const ComLine: comstr)}{
 \var{Exec} executes the program in \var{Path}, with the options given by
 \var{Exec} executes the program in \var{Path}, with the options given by
 \var{ComLine}.
 \var{ComLine}.
 After the program has terminated, the procedure returns. The Exit value of
 After the program has terminated, the procedure returns. The Exit value of
 the program can be consulted with the \var{DosExitCode} function.
 the program can be consulted with the \var{DosExitCode} function.
-}{Errors are reported in \var{DosError}.}{\seef{DosExitCode}}
 
 
+\Errors
+Errors are reported in \var{DosError}.
+\SeeAlso
+\seef{DosExitCode}
+\end{procedure}
 For an example, see \seef{DosExitCode}
 For an example, see \seef{DosExitCode}
+\begin{functionl}{FExpand}{Dos:FExpand}
+\Declaration
+Function FExpand (const path: pathstr) : pathstr;
+
+\Description
 
 
-\functionl{FExpand}{Dos:FExpand}{(const path: pathstr)}{pathstr}{
 \var{FExpand} takes its argument and expands it to a complete filename, i.e.
 \var{FExpand} takes its argument and expands it to a complete filename, i.e.
 a filename starting from the root directory of the current drive, prepended
 a filename starting from the root directory of the current drive, prepended
 with the drive-letter (under \dos).
 with the drive-letter (under \dos).
-
 The resulting name is converted to uppercase on \dos systems. Under \linux,
 The resulting name is converted to uppercase on \dos systems. Under \linux,
 the name is left as it is. (filenames are case sensitive under Unix)
 the name is left as it is. (filenames are case sensitive under Unix)
-}{\seep{FSplit}}
 
 
-\latex{\inputlisting{dosex/ex5.pp}}
+\Errors
+\seep{FSplit}
+\SeeAlso
+\inputlisting{dosex/ex5.pp}
+\end{functionl}
 \html{\input{dosex/ex5.tex}}
 \html{\input{dosex/ex5.tex}}
+\begin{procedure}{FindClose}
+\Declaration
+Procedure FindClose (Var F: SearchRec);
+
+\Description
 
 
-\procedure{FindClose}{(Var F: SearchRec)}{
 \textbf{\linux only}
 \textbf{\linux only}
 Under \linux, the \var{findfirst/findnext} calls have to be mimicked. 
 Under \linux, the \var{findfirst/findnext} calls have to be mimicked. 
 An internal table of file descriptors is kept. 
 An internal table of file descriptors is kept. 
 When using different \var{searchrecs} at the same time, 
 When using different \var{searchrecs} at the same time, 
 the system may run out of file descriptors for directories.
 the system may run out of file descriptors for directories.
-
 The \linux implementation of the \dos unit therefore keeps a table of open
 The \linux implementation of the \dos unit therefore keeps a table of open
 directories, and when the table is full, closes one of the directories, and
 directories, and when the table is full, closes one of the directories, and
 reopens another. This system is adequate but slow if you use a lot of
 reopens another. This system is adequate but slow if you use a lot of
 \var{searchrecs}.
 \var{searchrecs}.
-
 So, to speed up the findfirst/findnext system, the \var{FindClose} call was
 So, to speed up the findfirst/findnext system, the \var{FindClose} call was
 implemented. When you don't need a \var{searchrec} any more, you can tell
 implemented. When you don't need a \var{searchrec} any more, you can tell
 this to the \dos unit by issuing a \var{FindClose} call. The directory
 this to the \dos unit by issuing a \var{FindClose} call. The directory
 which is kept open for this \var{searchrec} is then closed, and the table slot
 which is kept open for this \var{searchrec} is then closed, and the table slot
 freed.
 freed.
-
 It is recommended to use the \linux call \var{Glob} when looking for files.
 It is recommended to use the \linux call \var{Glob} when looking for files.
-}{None.}{\seef{Glob}.}
 
 
-\procedure{FindFirst}{(const Path: pathstr; Attr: word; var F: SearchRec)}{
+\Errors
+None.
+\SeeAlso
+\seef{Glob}.
+\end{procedure}
+\begin{procedure}{FindFirst}
+\Declaration
+Procedure FindFirst (const Path: pathstr; Attr: word; var F: SearchRec);
+
+\Description
+
 \var{FindFirst} searches the file specified in \var{Path}, checks the
 \var{FindFirst} searches the file specified in \var{Path}, checks the
 atrributes specified in \var{Attr}. It returns a \var{SearchRec} record for
 atrributes specified in \var{Attr}. It returns a \var{SearchRec} record for
 further searching in \var{F}.
 further searching in \var{F}.
-
 \var{Path} can contain the wildcard characters \var{?} (matches any single
 \var{Path} can contain the wildcard characters \var{?} (matches any single
 character) and \var{*} (matches 0 ore more arbitrary characters). In this
 character) and \var{*} (matches 0 ore more arbitrary characters). In this
 case \var{FindFirst} will return the first file which matches the specified
 case \var{FindFirst} will return the first file which matches the specified
 criteria.
 criteria.
-
 If \var{DosError} is different from zero, no file(s) matching the criteria 
 If \var{DosError} is different from zero, no file(s) matching the criteria 
-was(were) found.}{Errors are reported in DosError.}{\seep{FindNext},
-\seep{FindClose}}
-
+was(were) found.
+\Errors
+Errors are reported in DosError.
+\SeeAlso
+\seep{FindNext},
+\seep{FindClose}
+\end{procedure}
 \latex{\inputlisting{dosex/ex7.pp}}
 \latex{\inputlisting{dosex/ex7.pp}}
 \html{\input{dosex/ex7.tex}}
 \html{\input{dosex/ex7.tex}}
+\begin{procedure}{FindNext}
+\Declaration
+Procedure FindNext (var f: searchRec);
+
+\Description
 
 
-\procedure{FindNext}{(var f: searchRec)}{
 \var{FindNext} takes as an argument a \var{SearchRec} from a previous
 \var{FindNext} takes as an argument a \var{SearchRec} from a previous
 \var{FindNext} call, or a \var{FindFirst} call, and tries to find another
 \var{FindNext} call, or a \var{FindFirst} call, and tries to find another
 file which matches the criteria, specified in the \var{FindFirst} call.
 file which matches the criteria, specified in the \var{FindFirst} call.
-
 If \var{DosError} is different from zero, no more files matching the
 If \var{DosError} is different from zero, no more files matching the
-criteria were found.}{\var{DosError} is used to report errors.}
-{\seep{FindFirst}, \seep{FindClose}}
-
+criteria were found.
+\Errors
+\var{DosError} is used to report errors.
+\SeeAlso
+\seep{FindFirst}, \seep{FindClose}
+\end{procedure}
 For an example, see \seep{FindFirst}.
 For an example, see \seep{FindFirst}.
+\begin{functionl}{FSearch}{Dos:FSearch}
+\Declaration
+Function FSearch (Path: pathstr; DirList: string) : pathstr;
 
 
-\functionl{FSearch}{Dos:FSearch}{(Path: pathstr; DirList: string)}{pathstr}
-{\var{FSearch} searches the file \var{Path} in all directories listed in
+\Description
+\var{FSearch} searches the file \var{Path} in all directories listed in
 \var{DirList}. The full name of the found file is returned.
 \var{DirList}. The full name of the found file is returned.
-
 \var{DirList} must be a list of directories, separated by semi-colons (or
 \var{DirList} must be a list of directories, separated by semi-colons (or
 colons under \linux).
 colons under \linux).
-
 When no file is found, an empty string is returned.
 When no file is found, an empty string is returned.
-}{None.}{\seefl{FExpand}{Dos:FExpand}}
 
 
+\Errors
+None.
+\SeeAlso
+\seefl{FExpand}{Dos:FExpand}
+\end{functionl}
 \latex{\inputlisting{dosex/ex10.pp}}
 \latex{\inputlisting{dosex/ex10.pp}}
 \html{\input{dosex/ex10.tex}}
 \html{\input{dosex/ex10.tex}}
+ 
+\begin{procedure}{FSplit}
+\Declaration
+Procedure FSplit (path: pathstr; \\ var dir: dirstr; var name: namestr;
+  var ext: extstr);
 
 
+\Description
 
 
- 
-\procedure{FSplit}{(path: pathstr; \\ var dir: dirstr; var name: namestr;
-  var ext: extstr)}{
 \var{FSplit} splits a full file name into 3 parts : A \var{Path}, a
 \var{FSplit} splits a full file name into 3 parts : A \var{Path}, a
 \var{Name} and an extension  (in \var{ext}.) 
 \var{Name} and an extension  (in \var{ext}.) 
-
 Under \linux, the extension is taken to be all letters after the last dot
 Under \linux, the extension is taken to be all letters after the last dot
 (.).
 (.).
-}{None.}{\seefl{FSearch}{Dos:FSearch}}
 
 
+\Errors
+None.
+\SeeAlso
+\seefl{FSearch}{Dos:FSearch}
+\end{procedure}
 \latex{\inputlisting{dosex/ex12.pp}}
 \latex{\inputlisting{dosex/ex12.pp}}
 \html{\input{dosex/ex12.tex}}
 \html{\input{dosex/ex12.tex}}
+\begin{procedure}{GetCBreak}
+\Declaration
+Procedure GetCBreak (var breakvalue: boolean);
+
+\Description
 
 
-\procedure{GetCBreak}{(var breakvalue: boolean)}{
 \var{GetCBreak} gets the status of CTRL-Break checking under \dos.
 \var{GetCBreak} gets the status of CTRL-Break checking under \dos.
 When \var{BreakValue} is \var{false}, then \dos only checks for the 
 When \var{BreakValue} is \var{false}, then \dos only checks for the 
 CTRL-Break key-press when I/O is performed. When it is set to \var{True},
 CTRL-Break key-press when I/O is performed. When it is set to \var{True},
-then a check is done at every system call.}{Under Linux, this exists but is 
-not implemented, i.e. the call does nothing.}{\seep{SetCBreak}}
+then a check is done at every system call.
+\Errors
+Under Linux, this exists but is 
+not implemented, i.e. the call does nothing.
+\SeeAlso
+\seep{SetCBreak}
+\end{procedure}
+\begin{procedurel}{GetDate}{Dos:GetDate}
+\Declaration
+Procedure GetDate (var year, month, mday, wday: word);
+
+\Description
 
 
-\procedurel{GetDate}{Dos:GetDate}{(var year, month, mday, wday: word)}{
 \var{GetDate} returns the system's date. \var{Year} is a number in the range
 \var{GetDate} returns the system's date. \var{Year} is a number in the range
 1980..2099.\var{mday} is the day of the month,
 1980..2099.\var{mday} is the day of the month,
-\var{wday} is the day of the week, starting with Sunday as day 0.}
-{None.}{\seepl{GetTime}{Dos:GetTime},\seep{SetDate}}
-
+\var{wday} is the day of the week, starting with Sunday as day 0.
+\Errors
+None.
+\SeeAlso
+\seepl{GetTime}{Dos:GetTime},\seep{SetDate}
+\end{procedurel}
 \latex{\inputlisting{dosex/ex2.pp}}
 \latex{\inputlisting{dosex/ex2.pp}}
 \html{\input{dosex/ex2.tex}}
 \html{\input{dosex/ex2.tex}}
+\begin{functionl}{GetEnv}{Dos:GetEnv}
+\Declaration
+Function GetEnv (EnvVar: String) : String;
+
+\Description
 
 
-\functionl{GetEnv}{Dos:GetEnv}{(EnvVar: String)}{String}{
 \var{Getenv} returns the value of the environment variable \var{EnvVar}.
 \var{Getenv} returns the value of the environment variable \var{EnvVar}.
 Under \linux, case is important when looking for \var{EnvVar}.
 Under \linux, case is important when looking for \var{EnvVar}.
-
 When there is no environment variable \var{EnvVar} defined, an empty
 When there is no environment variable \var{EnvVar} defined, an empty
-string is returned.}{None.}{\seef{EnvCount}, \seef{EnvStr}}
-
+string is returned.
+\Errors
+None.
+\SeeAlso
+\seef{EnvCount}, \seef{EnvStr}
+\end{functionl}
 \latex{\inputlisting{dosex/ex14.pp}}
 \latex{\inputlisting{dosex/ex14.pp}}
 \html{\input{dosex/ex14.tex}}
 \html{\input{dosex/ex14.tex}}
+\begin{procedure}{GetFAttr}
+\Declaration
+Procedure GetFAttr (var F; var Attr: word);
+
+\Description
 
 
-\procedure{GetFAttr}{(var F; var Attr: word)}{
 \var{GetFAttr} returns the file attributes of the file-variable \var{f}.
 \var{GetFAttr} returns the file attributes of the file-variable \var{f}.
  \var{F} can be a untyped or typed file, or of type \var{Text}. \var{f} must
  \var{F} can be a untyped or typed file, or of type \var{Text}. \var{f} must
 have been assigned, but not opened. The attributes can be examined with the
 have been assigned, but not opened. The attributes can be examined with the
@@ -441,86 +547,173 @@ Under \linux, supported attributes are:
 \item \var{ReadOnly} if the current process doesn't have access to the file.
 \item \var{ReadOnly} if the current process doesn't have access to the file.
 \item \var{Hidden} for files whose name starts with a dot \var{('.')}.
 \item \var{Hidden} for files whose name starts with a dot \var{('.')}.
 \end{itemize}
 \end{itemize}
-}{Errors are reported in \var{DosError}}{\seep{SetFAttr}}
 
 
+\Errors
+Errors are reported in \var{DosError}
+\SeeAlso
+\seep{SetFAttr}
+\end{procedure}
 \latex{\inputlisting{dosex/ex8.pp}}
 \latex{\inputlisting{dosex/ex8.pp}}
 \html{\input{dosex/ex8.tex}}
 \html{\input{dosex/ex8.tex}}
+\begin{procedure}{GetFTime}
+\Declaration
+Procedure GetFTime (var F; var Time: longint);
+
+\Description
 
 
-\procedure{GetFTime}{(var F; var Time: longint)}{
 \var{GetFTime} returns the modification time of a file.
 \var{GetFTime} returns the modification time of a file.
 This time is encoded and must be decoded with \var{UnPackTime}. 
 This time is encoded and must be decoded with \var{UnPackTime}. 
 \var{F} must be a file type, which has been assigned, and
 \var{F} must be a file type, which has been assigned, and
-opened.}{Errors are reported in \var{DosError}}
-{\seep{SetFTime}, \seep{PackTime},\seep{UnPackTime}}
-
+opened.
+\Errors
+Errors are reported in \var{DosError}
+\SeeAlso
+\seep{SetFTime}, \seep{PackTime},\seep{UnPackTime}
+\end{procedure}
 \latex{\inputlisting{dosex/ex9.pp}}
 \latex{\inputlisting{dosex/ex9.pp}}
 \html{\input{dosex/ex9.tex}}
 \html{\input{dosex/ex9.tex}}
+\begin{procedure}{GetIntVec}
+\Declaration
+Procedure GetIntVec (IntNo: byte; var Vector: pointer);
+
+\Description
 
 
-\procedure{GetIntVec}{(IntNo: byte; var Vector: pointer)}{
 \var{GetIntVec} returns the address of interrupt vector
 \var{GetIntVec} returns the address of interrupt vector
-\var{IntNo}.}{None. Under \linux, this call exists bout isn't implemented,
-i.e. it does nothing.}{\seep{SetIntVec}}
+\var{IntNo}.
+\Errors
+None. Under \linux, this call exists bout isn't implemented,
+i.e. it does nothing.
+\SeeAlso
+\seep{SetIntVec}
+\end{procedure}
+\begin{procedurel}{GetTime}{Dos:GetTime}
+\Declaration
+Procedure GetTime (var hour, minute, second, sec100: word);
+
+\Description
 
 
-\procedurel{GetTime}{Dos:GetTime}{(var hour, minute, second, sec100: word)}{
 \var{GetTime} returns the system's time. \var{Hour} is a on a 24-hour time
 \var{GetTime} returns the system's time. \var{Hour} is a on a 24-hour time
 scale. \var{sec100} is in hundredth of a
 scale. \var{sec100} is in hundredth of a
-second.}{None.}{\seepl{GetDate}{Dos:GetDate},
-\seep{SetTime}}
-
+second.
+\Errors
+None.
+\SeeAlso
+\seepl{GetDate}{Dos:GetDate},
+\seep{SetTime}
+\end{procedurel}
 \latex{\inputlisting{dosex/ex3.pp}}
 \latex{\inputlisting{dosex/ex3.pp}}
 \html{\input{dosex/ex3.tex}}
 \html{\input{dosex/ex3.tex}}
+\begin{procedure}{GetVerify}
+\Declaration
+Procedure GetVerify (var verify: boolean);
+
+\Description
 
 
-\procedure{GetVerify}{(var verify: boolean)}{
 \var{GetVerify} returns the status of the verify flag under \dos. When
 \var{GetVerify} returns the status of the verify flag under \dos. When
 \var{Verify} is \var{True}, then \dos checks data which are written to disk,
 \var{Verify} is \var{True}, then \dos checks data which are written to disk,
 by reading them after writing. If \var{Verify} is \var{False}, then data
 by reading them after writing. If \var{Verify} is \var{False}, then data
-written to disk are not verified.}{Under \linux,  Verify is always
-\var{True}.}{\seep{SetVerify}}
+written to disk are not verified.
+\Errors
+Under \linux,  Verify is always
+\var{True}.
+\SeeAlso
+\seep{SetVerify}
+\end{procedure}
+\begin{procedure}{Intr}
+\Declaration
+Procedure Intr (IntNo: byte; var Regs: registers);
+
+\Description
 
 
-\procedure{Intr}{(IntNo: byte; var Regs: registers)}{
 \var{Intr} executes a software interrupt number \var{IntNo} (must be between
 \var{Intr} executes a software interrupt number \var{IntNo} (must be between
 0 and 255), with processor registers set to \var{Regs}. After the interrupt call
 0 and 255), with processor registers set to \var{Regs}. After the interrupt call
-returned, the processor registers are saved in \var{Regs}.}
-{Under \linux this call does nothing, because interrupts are managed by the
-kernel. The only allowed interrupt is 80h, the kernel entry interrupt.}
-{\seep{MSDos}, see the \linux unit.}
+returned, the processor registers are saved in \var{Regs}.
+\Errors
+Under \linux this call does nothing, because interrupts are managed by the
+kernel. The only allowed interrupt is 80h, the kernel entry interrupt.
+\SeeAlso
+\seep{MSDos}, see the \linux unit.
+\end{procedure}
+\begin{procedure}{Keep}
+\Declaration
+Procedure Keep (ExitCode: word);
+
+\Description
 
 
-\procedure{Keep}{(ExitCode: word)}{
 \var{Keep} terminates the program, but stays in memory. This is used for TSR
 \var{Keep} terminates the program, but stays in memory. This is used for TSR
 (Terminate Stay Resident) programs which catch some interrupt.
 (Terminate Stay Resident) programs which catch some interrupt.
-\var{ExitCode} is the same parameter as the \var{Halt} function takes.}
-{Under \linux, this call does nothing.}{\seem{Halt}{}}
+\var{ExitCode} is the same parameter as the \var{Halt} function takes.
+\Errors
+Under \linux, this call does nothing.
+\SeeAlso
+\seem{Halt}{}
+\end{procedure}
+\begin{procedure}{MSDos}
+\Declaration
+Procedure MSDos (var regs: registers);
+
+\Description
 
 
-
-\procedure{MSDos}{(var regs: registers)}{
 \var{MSDos} executes an MS-\dos call (int 21h). This is the same as doing a
 \var{MSDos} executes an MS-\dos call (int 21h). This is the same as doing a
-\var{Intr} call with an interrupt number of 21h.}{None.}{\seep{Intr}}
+\var{Intr} call with an interrupt number of 21h.
+\Errors
+None.
+\SeeAlso
+\seep{Intr}
+\end{procedure}
+\begin{procedure}{PackTime}
+\Declaration
+Procedure PackTime (var T: datetime; var P: longint);
+
+\Description
 
 
-\procedure{PackTime}{(var T: datetime; var P: longint)}{
 \var{UnPackTime} converts the date and time specified in \var{T}
 \var{UnPackTime} converts the date and time specified in \var{T}
-to a packed-time format which can be fed to \var{SetFTime}.}
-{None.}
-{\seep{SetFTime}, \seep{FindFirst}, \seep{FindNext}, \seep{UnPackTime}}
-
+to a packed-time format which can be fed to \var{SetFTime}.
+\Errors
+None.
+\SeeAlso
+\seep{SetFTime}, \seep{FindFirst}, \seep{FindNext}, \seep{UnPackTime}
+\end{procedure}
 \latex{\inputlisting{dosex/ex4.pp}}
 \latex{\inputlisting{dosex/ex4.pp}}
 \html{\input{dosex/ex4.tex}}
 \html{\input{dosex/ex4.tex}}
+\begin{procedure}{SetCBreak}
+\Declaration
+Procedure SetCBreak (breakvalue: boolean);
+
+\Description
 
 
-\procedure{SetCBreak}{(breakvalue: boolean)}{
 \var{SetCBreak} sets the status of CTRL-Break checking under \dos.
 \var{SetCBreak} sets the status of CTRL-Break checking under \dos.
 When \var{BreakValue} is \var{false}, then \dos only checks for the 
 When \var{BreakValue} is \var{false}, then \dos only checks for the 
 CTRL-Break key-press when I/O is performed. When it is set to \var{True},
 CTRL-Break key-press when I/O is performed. When it is set to \var{True},
-then a check is done at every system call.}{Under Linux, this call exists
-but is not implemented, i.e. it does nothing.}{\seep{GetCBreak}}
+then a check is done at every system call.
+\Errors
+Under Linux, this call exists
+but is not implemented, i.e. it does nothing.
+\SeeAlso
+\seep{GetCBreak}
+\end{procedure}
+\begin{procedure}{SetDate}
+\Declaration
+Procedure SetDate (year,month,day: word);
+
+\Description
 
 
-\procedure{SetDate}{(year,month,day: word)}{
 \var{SetDate} sets the system's internal date. \var{Year} is a number
 \var{SetDate} sets the system's internal date. \var{Year} is a number
-between 1980 and 2099.}
-{On a \linux  machine, this is not implemented (allthough a procedure
+between 1980 and 2099.
+\Errors
+On a \linux  machine, this is not implemented (allthough a procedure
 exists, it just doesn't do anything. The setting of the date is a
 exists, it just doesn't do anything. The setting of the date is a
-root-only privilege, and is hence not implemented.}{\seep{GetDate},
-\seep{SetTime}}
+root-only privilege, and is hence not implemented.
+\SeeAlso
+\seep{GetDate},
+\seep{SetTime}
+\end{procedure}
+\begin{procedure}{SetFAttr}
+\Declaration
+Procedure SetFAttr (var F; Attr: word);
+
+\Description
 
 
-\procedure{SetFAttr}{(var F; Attr: word)}{
 \var{SetFAttr} sets the file attributes of the file-variable \var{F}.
 \var{SetFAttr} sets the file attributes of the file-variable \var{F}.
  \var{F} can be a untyped or typed file, or of type \var{Text}. \var{F} must
  \var{F} can be a untyped or typed file, or of type \var{Text}. \var{F} must
 have been assigned, but not opened. The attributes can be a sum of the
 have been assigned, but not opened. The attributes can be a sum of the
@@ -534,54 +727,101 @@ following constants:
 \item \var{Archive   = 20h}
 \item \var{Archive   = 20h}
 \item \var{AnyFile   = 3fh}
 \item \var{AnyFile   = 3fh}
 \end{itemize}
 \end{itemize}
-}{Errors are reported in \var{DosError}.
 
 
-Under \linux the call exists, but is not implemented, i.e. it does nothing.}
-{\seep{GetFAttr}}
+\Errors
+Errors are reported in \var{DosError}.
+Under \linux the call exists, but is not implemented, i.e. it does nothing.
+\SeeAlso
+\seep{GetFAttr}
+\end{procedure}
+\begin{procedure}{SetFTime}
+\Declaration
+Procedure SetFTime (var F; Time: longint);
+
+\Description
 
 
-\procedure{SetFTime}{(var F; Time: longint)}{
 \var{SetFTime} sets the modification time of a file,
 \var{SetFTime} sets the modification time of a file,
 this time is encoded and must be encoded with \var{PackTime}. 
 this time is encoded and must be encoded with \var{PackTime}. 
 \var{F} must be a file type, which has been assigned, and
 \var{F} must be a file type, which has been assigned, and
-opened.}{Errors are reported in \var{DosError}}
-{\seep{GetFTime}, \seep{PackTime},\seep{UnPackTime}}
-
+opened.
+\Errors
+Errors are reported in \var{DosError}
+\SeeAlso
+\seep{GetFTime}, \seep{PackTime},\seep{UnPackTime}
+\end{procedure}
+\begin{procedure}{SetIntVec}
+\Declaration
+Procedure SetIntVec (IntNo: byte; Vector: pointer);
+
+\Description
 
 
-\procedure{SetIntVec}{(IntNo: byte; Vector: pointer)}{
 \var{SetIntVec} sets interrupt vector \var{IntNo} to \var{Vector}.
 \var{SetIntVec} sets interrupt vector \var{IntNo} to \var{Vector}.
-\var{Vector} should point to an interrupt procedure.}{Under \linux, this
-call exists but is not implemented, the kernel manages all interrupts.}
-{\seep{GetIntVec}}
+\var{Vector} should point to an interrupt procedure.
+\Errors
+Under \linux, this
+call exists but is not implemented, the kernel manages all interrupts.
+\SeeAlso
+\seep{GetIntVec}
+\end{procedure}
+\begin{procedure}{SetTime}
+\Declaration
+Procedure SetTime (hour,minute,second,sec100: word);
+
+\Description
 
 
-\procedure{SetTime}{(hour,minute,second,sec100: word)}{
 \var{SetTime} sets the system's internal clock. The \var{Hour} parameter is
 \var{SetTime} sets the system's internal clock. The \var{Hour} parameter is
-on a 24-hour time scale.}{this call exists, but is not implemented on \linux, 
-as setting the time is a root-only privilege.}
-{\seep{GetTime}, \seep{SetDate}}
+on a 24-hour time scale.
+\Errors
+this call exists, but is not implemented on \linux, 
+as setting the time is a root-only privilege.
+\SeeAlso
+\seep{GetTime}, \seep{SetDate}
+\end{procedure}
+\begin{procedure}{SetVerify}
+\Declaration
+Procedure SetVerify (verify: boolean);
+
+\Description
 
 
-
-\procedure{SetVerify}{(verify: boolean)}{
 \var{SetVerify} sets the status of the verify flag under \dos. When
 \var{SetVerify} sets the status of the verify flag under \dos. When
 \var{Verify} is \var{True}, then \dos checks data which are written to disk,
 \var{Verify} is \var{True}, then \dos checks data which are written to disk,
 by reading them after writing. If \var{Verify} is \var{False}, then data
 by reading them after writing. If \var{Verify} is \var{False}, then data
-written to disk are not verified.}{Under \linux,  Verify is always
-\var{True}.}{\seep{SetVerify}}
+written to disk are not verified.
+\Errors
+Under \linux,  Verify is always
+\var{True}.
+\SeeAlso
+\seep{SetVerify}
+\end{procedure}
+\begin{procedure}{SwapVectors}
+\Declaration
+Procedure SwapVectors ;
+
+\Description
 
 
-\Procedure{SwapVectors}{
 \var{SwapVectors} swaps the contents of the internal table of interrupt 
 \var{SwapVectors} swaps the contents of the internal table of interrupt 
 vectors with the current contents of the interrupt vectors.
 vectors with the current contents of the interrupt vectors.
-
 This is called typically in before and after an \var{Exec} call.
 This is called typically in before and after an \var{Exec} call.
-}{Under \linux this call does nothing, as the interrupt vectors are 
-managed by the kernel.}{\seep{Exec}, \seep{SetIntVec}}
 
 
+\Errors
+Under \linux this call does nothing, as the interrupt vectors are 
+managed by the kernel.
+\SeeAlso
+\seep{Exec}, \seep{SetIntVec}
+\end{procedure}
+\begin{procedure}{UnPackTime}
+\Declaration
+Procedure UnPackTime (p: longint; var T: datetime);
+
+\Description
 
 
-\procedure{UnPackTime}{(p: longint; var T: datetime)}{
 \var{UnPackTime} converts the file-modification time in \var{p}
 \var{UnPackTime} converts the file-modification time in \var{p}
 to a \var{DateTime} record. The file-modification time can be 
 to a \var{DateTime} record. The file-modification time can be 
-returned by \var{GetFTime}, \var{FindFirst} or \var{FindNext} calls.}
-{None.}
-{\seep{GetFTime}, \seep{FindFirst}, \seep{FindNext}, \seep{PackTime}}
-
+returned by \var{GetFTime}, \var{FindFirst} or \var{FindNext} calls.
+\Errors
+None.
+\SeeAlso
+\seep{GetFTime}, \seep{FindFirst}, \seep{FindNext}, \seep{PackTime}
+\end{procedure}
 For an example, see \seep{PackTime}.
 For an example, see \seep{PackTime}.
 
 

+ 16 - 36
docs/fpc-html.tex

@@ -20,32 +20,21 @@
 %
 %
 % Dummy
 % Dummy
 \newenvironment{FPCList}{\begin{description}}{\end{description}}
 \newenvironment{FPCList}{\begin{description}}{\end{description}}
-\newcommand{\functionl}[7]{
-\subsection{#1}
-\label{fu:#2}
-\index{#1}
-\subsubsection*{Declaration:}
-\texttt {Function #1  #3  : #4;}
-\subsubsection*{Description:}
-#5
-\subsubsection*{Errors:}
-#6
-\subsubsection*{See also:}
-#7
-}
-\newcommand{\procedurel}[6]{
-\subsection{#1}
-\label{pro:#2}
-\index{#1}
-\subsubsection*{Declaration:}
-\texttt {Procedure #1  #3 ;}
-\subsubsection*{Description:}
-#4
-\subsubsection*{Errors:}
-#5
-\subsubsection*{See also:}
-#6
-}
+%
+%
+\newcommand{\Declaration}{\item[Declaration]\ttfamily}
+\newcommand{\Description}{\item[Description]\rmfamily}
+\newcommand{\Errors}{\item[Errors]\rmfamily}
+\newcommand{\SeeAlso}{\item[See also]\rmfamily}
+%
+%  The environments
+%
+\newenvironment{functionl}[2]{\subsection{#1}%
+\index{#1}\label{fu:#2}\begin{FPCList}}{\end{FPCList}}
+\newenvironment{procedurel}[2]{\subsection{#1}%
+\index{#1}\label{pro:#2}\begin{FPCList}}{\end{FPCList}}
+\newenvironment{function}[1]{\begin{functionl}{#1}{#1}}{\end{functionl}}
+\newenvironment{procedure}[1]{\begin{procedurel}{#1}{#1}}{\end{procedurel}}
 \newcommand{\seefl}[2]{
 \newcommand{\seefl}[2]{
 \htmlref{#1}{fu:#2}
 \htmlref{#1}{fu:#2}
 }
 }
@@ -65,17 +54,8 @@
 \newcommand{\var}[1]{\texttt {#1}}
 \newcommand{\var}[1]{\texttt {#1}}
 \newcommand{\file}[1]{\textsf {#1}}
 \newcommand{\file}[1]{\textsf {#1}}
 %
 %
-% procedures without args
-%
-\newcommand{\Procedurel}[5]{\procedurel{#1}{#2}{}{#3}{#4}{#5}}
-\newcommand{\Functionl}[6]{\functionl{#1}{#2}{}{#3}{#4}{#5}{#6}}
-%
-% Procedures without labels.
+% Abbreviations
 %
 %
-\newcommand{\procedure}[5]{\procedurel{#1}{#1}{#2}{#3}{#4}{#5}}
-\newcommand{\function}[6]{\functionl{#1}{#1}{#2}{#3}{#4}{#5}{#6}}
-\newcommand{\Procedure}[4]{\procedure{#1}{}{#2}{#3}{#4}}
-\newcommand{\Function}[5]{\function{#1}{}{#2}{#3}{#4}{#5}}
 \newcommand{\linux}{\textsc{LinuX} }
 \newcommand{\linux}{\textsc{LinuX} }
 \newcommand{\dos}  {\textsc{dos} }
 \newcommand{\dos}  {\textsc{dos} }
 \newcommand{\msdos}{\textsc{ms-dos} }
 \newcommand{\msdos}{\textsc{ms-dos} }

+ 14 - 48
docs/fpc.sty

@@ -80,54 +80,20 @@
 }
 }
 {\end{list}}
 {\end{list}}
 %
 %
-% define a version of \procedure and \function 
-% which allows you to give a label.
-%
-\newcommand{\functionl}[7]{
-\subsection{#1}
-\raisebox{1ex}{\rule{\linewidth}{0.5mm}}
-\label{fu:#2}
-\index{#1}
-\begin{FPCList}
-\item[Declaration]
-\texttt {Function #1  #3  : #4;}
-\item[Description]
-#5
-\item[Errors]
-#6
-\item[See also]
-#7
-\end{FPCList}
-}
-\newcommand{\procedurel}[6]{
-\subsection{#1}
-\raisebox{1ex}{\rule{\linewidth}{0.5mm}}
-\label{pro:#2}
-\index{#1}
-\begin{FPCList}
-\item[Declaration]
-\texttt {Procedure #1  #3;}
-\item[Description]
-#4
-\item[Errors]
-#5
-\item[See also]
-#6
-\end{FPCList}
-}
-% define a capital version, 
-% for function/command which has no options passed to it.
-\newcommand{\Functionl}[6]{\functionl{#1}{#2}{}{#3}{#4}{#5}{#6}}
-\newcommand{\Procedurel}[5]{\procedurel{#1}{#2}{}{#3}{#4}{#5}}
-%
-% These versions take the function name as the label.
-%
-\newcommand{\function}[6]{\functionl{#1}{#1}{#2}{#3}{#4}{#5}{#6}}
-\newcommand{\procedure}[5]{\procedurel{#1}{#1}{#2}{#3}{#4}{#5}}
-% define a capital version, 
-% for function/command which has no options passed to it.
-\newcommand{\Function}[5]{\function{#1}{}{#2}{#3}{#4}{#5}}
-\newcommand{\Procedure}[4]{\procedure{#1}{}{#2}{#3}{#4}}
+%
+\newcommand{\Declaration}{\item[Declaration]\ttfamily}
+\newcommand{\Description}{\item[Description]\rmfamily}
+\newcommand{\Errors}{\item[Errors]\rmfamily}
+\newcommand{\SeeAlso}{\item[See also]\rmfamily}
+%
+%  The environments
+%
+\newenvironment{functionl}[2]{\subsection{#1}%
+\index{#1}\label{fu:#2}\begin{FPCList}}{\end{FPCList}}
+\newenvironment{procedurel}[2]{\subsection{#1}%
+\index{#1}\label{pro:#2}\begin{FPCList}}{\end{FPCList}}
+\newenvironment{function}[1]{\begin{functionl}{#1}{#1}}{\end{functionl}}
+\newenvironment{procedure}[1]{\begin{procedurel}{#1}{#1}}{\end{procedurel}}
 % Now the referencing commands.
 % Now the referencing commands.
 %
 %
 % First, the ones with alternate label (second argument}
 % First, the ones with alternate label (second argument}

+ 22 - 24
docs/getopts.tex

@@ -21,14 +21,12 @@
 \chapter{The GETOPTS unit.}
 \chapter{The GETOPTS unit.}
 This document describes the GETOPTS unit for Free Pascal. It was written for
 This document describes the GETOPTS unit for Free Pascal. It was written for
 \linux\ by Micha\"el Van Canneyt. It also works under DOS and Tp7.
 \linux\ by Micha\"el Van Canneyt. It also works under DOS and Tp7.
-
 The chapter is divided in 2 sections:
 The chapter is divided in 2 sections:
 \begin{itemize}
 \begin{itemize}
 \item The first section lists types, constants and variables from the
 \item The first section lists types, constants and variables from the
 interface part of the unit.
 interface part of the unit.
 \item The second section describes the functions defined in the unit.
 \item The second section describes the functions defined in the unit.
 \end{itemize}
 \end{itemize}
-
 \section {Types, Constants and variables : }
 \section {Types, Constants and variables : }
 \subsection{Constants}
 \subsection{Constants}
 \var{No\_Argument=0} : Specifies that a long option does not take an
 \var{No\_Argument=0} : Specifies that a long option does not take an
@@ -53,11 +51,9 @@ The \var{option} type is used to communicate the long options to \var{GetLongOpt
 The \var{Name} field is the name of the option. \var{Has\_arg} specifies if the option
 The \var{Name} field is the name of the option. \var{Has\_arg} specifies if the option
 wants an argument, \var{Flag} is a pointer to a \var{char}, which is set to
 wants an argument, \var{Flag} is a pointer to a \var{char}, which is set to
 \var{Value}, if it is non-\var{nil}. 
 \var{Value}, if it is non-\var{nil}. 
-
 \var{POption} is a pointer to a
 \var{POption} is a pointer to a
 \var{Option} record. It is used as an argument to the \var{GetLongOpts}
 \var{Option} record. It is used as an argument to the \var{GetLongOpts}
 function.
 function.
-
 \subsection{Variables}
 \subsection{Variables}
 \var{OptArg:String} \ Is set to the argument of an option, if the option needs
 \var{OptArg:String} \ Is set to the argument of an option, if the option needs
 one.\\
 one.\\
@@ -70,69 +66,71 @@ messages.\\
 \var{OptOpt:Char} \  In case of an error, contains the character causing the 
 \var{OptOpt:Char} \  In case of an error, contains the character causing the 
 error.
 error.
 \section {Procedures and functions}
 \section {Procedures and functions}
+\begin{function}{GetLongOpts}
+\Declaration
+Function GetLongOpts (Shortopts : String, LongOpts : POption; var Longint
+: Longint ) : Char;
+
+\Description
 
 
-\function {GetLongOpts}{(Shortopts : String, LongOpts : POption; var Longint
-: Longint )}{Char}
-{
 Returns the next option found on the command-line, taking into account long
 Returns the next option found on the command-line, taking into account long
 options as well. If no more options are
 options as well. If no more options are
 found, returns \var{EndOfOptions}. If the option requires an argument, it is
 found, returns \var{EndOfOptions}. If the option requires an argument, it is
 returned in the \var{OptArg} variable.
 returned in the \var{OptArg} variable.
-
 \var{ShortOptions} is a string containing all possible one-letter options.
 \var{ShortOptions} is a string containing all possible one-letter options.
 (see \seef{Getopt} for its description and use)
 (see \seef{Getopt} for its description and use)
-
 \var{LongOpts} is a pointer to the first element of an array of \var{Option} 
 \var{LongOpts} is a pointer to the first element of an array of \var{Option} 
 records, the last of which needs a name of zero length.  
 records, the last of which needs a name of zero length.  
 The function tries to match the names even partially (i.e. \var{--app} 
 The function tries to match the names even partially (i.e. \var{--app} 
 will match e.g. the \var{append} option), but will report an error in case of
 will match e.g. the \var{append} option), but will report an error in case of
 ambiguity.
 ambiguity.
-
 If the option needs an argument, set \var{Has\_arg} to
 If the option needs an argument, set \var{Has\_arg} to
 \var{Required\_argument}, if the option optionally has an argument, set
 \var{Required\_argument}, if the option optionally has an argument, set
 \var{Has\_arg} to \var{Optional\_argument}. If the option needs no argument,
 \var{Has\_arg} to \var{Optional\_argument}. If the option needs no argument,
 set \var{Has\_arg} to zero.
 set \var{Has\_arg} to zero.
-
-
 Required arguments can be specified in two ways : 
 Required arguments can be specified in two ways : 
 \begin{enumerate}
 \begin{enumerate}
 \item \ Pasted to the option : \var{--option=value}
 \item \ Pasted to the option : \var{--option=value}
 \item \ As a separate argument : \var {--option value}
 \item \ As a separate argument : \var {--option value}
 \end{enumerate}
 \end{enumerate}
 Optional arguments can only be specified through the first method.
 Optional arguments can only be specified through the first method.
-}
-{ see \seef{Getopt}, \seem{getopt}{3}}
 
 
-For an example, see \seef{Getopt}
+\Errors
+ see \seef{Getopt}, \seem{getopt}{3}
+\SeeAlso
+Getopt
+\end{function}
+\begin{function}{Getopt}
+\Declaration
+Function Getopt (Shortopts : String) : Char;
+
+\Description
 
 
-\function {Getopt}{(Shortopts : String)}{Char}
-{
 Returns the next option found on the command-line. If no more options are
 Returns the next option found on the command-line. If no more options are
 found, returns \var{EndOfOptions}. If the option requires an argument, it is
 found, returns \var{EndOfOptions}. If the option requires an argument, it is
 returned in the \var{OptArg} variable.
 returned in the \var{OptArg} variable.
-
 \var{ShortOptions} is a string containing all possible one-letter options.
 \var{ShortOptions} is a string containing all possible one-letter options.
 If a letter is followed by a colon (:), then that option needs an argument.
 If a letter is followed by a colon (:), then that option needs an argument.
 If a letter is followed by 2 colons, the option has an optional argument.
 If a letter is followed by 2 colons, the option has an optional argument.
-
 If the first character of \var{shortoptions} is a \var{'+'} then options following a non-option are
 If the first character of \var{shortoptions} is a \var{'+'} then options following a non-option are
 regarded as non-options (standard Unix behavior). If it is a \var{'-'},
 regarded as non-options (standard Unix behavior). If it is a \var{'-'},
 then all non-options are treated as arguments of a option with character
 then all non-options are treated as arguments of a option with character
 \var{\#0}. This is useful for applications that require their options in
 \var{\#0}. This is useful for applications that require their options in
 the exact order as they appear on the command-line.
 the exact order as they appear on the command-line.
-
 If the first character of \var{shortoptions} is none of the above, options
 If the first character of \var{shortoptions} is none of the above, options
 and non-options are permuted, so all non-options are behind all options.
 and non-options are permuted, so all non-options are behind all options.
 This allows options and non-options to be in random order on the command
 This allows options and non-options to be in random order on the command
 line.
 line.
-}
-{ 
+
+\Errors
+ 
 Errors are reported through giving back a \var{'?'} character. \var{OptOpt}
 Errors are reported through giving back a \var{'?'} character. \var{OptOpt}
 then gives the character which caused the error. If \var{OptErr} is
 then gives the character which caused the error. If \var{OptErr} is
 \var{True} then getopt prints an error-message to \var{stdout}.
 \var{True} then getopt prints an error-message to \var{stdout}.
-}
-{\seef{GetLongOpts}, \seem{getopt}{3}}
 
 
+\SeeAlso
+\seef{GetLongOpts}, \seem{getopt}{3}
+\end{function}
 \latex{\inputlisting{optex/optex.pp}}
 \latex{\inputlisting{optex/optex.pp}}
 \html{\input{optex/optex.tex}}
 \html{\input{optex/optex.tex}}
 
 

File diff suppressed because it is too large
+ 337 - 322
docs/go32.tex


File diff suppressed because it is too large
+ 784 - 262
docs/graph.tex


File diff suppressed because it is too large
+ 377 - 261
docs/linux.tex


+ 12 - 10
docs/mmx.tex

@@ -54,31 +54,33 @@ initialization code.
 is_mmx_cpu : boolean = false;
 is_mmx_cpu : boolean = false;
 is_amd_3d_cpu : boolean = false;
 is_amd_3d_cpu : boolean = false;
 \end{verbatim}
 \end{verbatim}
-
 \section{Functions and Procedures}
 \section{Functions and Procedures}
+\begin{procedure}{Emms}
+\Declaration
+Procedure Emms ;
 
 
-\Procedure{Emms}
-{\var{Emms} sets all floating point registers to empty. This procedure must
+\Description
+\var{Emms} sets all floating point registers to empty. This procedure must
 be called after you have used any \var{MMX} instructions, if you want to use
 be called after you have used any \var{MMX} instructions, if you want to use
 floating point arithmetic. If you just want to move floating point data
 floating point arithmetic. If you just want to move floating point data
 around, it isn't necessary to call this function, the compiler doesn't use
 around, it isn't necessary to call this function, the compiler doesn't use
 the FPU registers when moving data. Only when doing calculations, you should
 the FPU registers when moving data. Only when doing calculations, you should
 use this function.
 use this function.
-}
-{None.}
-{ \progref }
+
+\Errors
+None.
+\SeeAlso
+ \progref 
+\end{procedure}
 \begin{FPCList}
 \begin{FPCList}
 \item[Example:]
 \item[Example:]
 \begin{verbatim}
 \begin{verbatim}
 Program MMXDemo;
 Program MMXDemo;
-
 uses mmx;
 uses mmx;
-
 var
 var
    d1 : double;
    d1 : double;
    a : array[0..10000] of double;
    a : array[0..10000] of double;
    i : longint;
    i : longint;
-
 begin
 begin
    d1:=1.0;
    d1:=1.0;
 {$mmx+}
 {$mmx+}
@@ -90,4 +92,4 @@ begin
    { now we can do floating point arithmetic again }
    { now we can do floating point arithmetic again }
 end. 
 end. 
 \end{verbatim}
 \end{verbatim}
-\end{FPCList}
+\end{FPCList}

+ 168 - 73
docs/mouse.tex

@@ -1,41 +1,32 @@
 \chapter{The Mouse unit}
 \chapter{The Mouse unit}
-
 The mouse unit provides basic Mouse handling under Dos (Go32v1 and Go32v2)
 The mouse unit provides basic Mouse handling under Dos (Go32v1 and Go32v2)
-
 Some general remarks about the mouse unit:
 Some general remarks about the mouse unit:
-
 \begin{itemize}
 \begin{itemize}
 \item The mouse driver does not know when the text screen scrolls. This results
 \item The mouse driver does not know when the text screen scrolls. This results
 in unerased mouse cursors on the screen when the screen scrolls while the
 in unerased mouse cursors on the screen when the screen scrolls while the
 mouse cursor is visible. The solution is to hide the mouse cursor (using
 mouse cursor is visible. The solution is to hide the mouse cursor (using
 HideMouse) when you write something to the screen and to show it again
 HideMouse) when you write something to the screen and to show it again
 afterwards (using ShowMouse).
 afterwards (using ShowMouse).
-
 \item All Functions/Procedures that return and/or accept coordinates of the mouse
 \item All Functions/Procedures that return and/or accept coordinates of the mouse
 cursor, always do so in pixels and zero based (so the upper left corner of
 cursor, always do so in pixels and zero based (so the upper left corner of
 the screen is (0,0)). To get the (column, row) in standard text mode, divide
 the screen is (0,0)). To get the (column, row) in standard text mode, divide
 both x and y by 8 (and add 1 if you want to have it 1 based).
 both x and y by 8 (and add 1 if you want to have it 1 based).
-
 \item The real resolution of graphic modes and the one the mouse driver uses can
 \item The real resolution of graphic modes and the one the mouse driver uses can
 differ. For example, mode 13h (320*200 pixels) is handled by the mouse driver
 differ. For example, mode 13h (320*200 pixels) is handled by the mouse driver
 as 640*200, so you will have to multiply the X coordinates you give to the
 as 640*200, so you will have to multiply the X coordinates you give to the
 driver and divide the ones you get from it by 2 in that mode.
 driver and divide the ones you get from it by 2 in that mode.
-
 \item By default the mouse unit is compiled with the conditional define
 \item By default the mouse unit is compiled with the conditional define
 MouseCheck. This causes every procedure/function of the unit to check the
 MouseCheck. This causes every procedure/function of the unit to check the
 MouseFound variable prior to doing anything. Of course this is not necessary,
 MouseFound variable prior to doing anything. Of course this is not necessary,
 so if you are sure you are not calling any mouse unit procedures when no
 so if you are sure you are not calling any mouse unit procedures when no
 mouse is found, you can recompile the mouse unit without this conditional
 mouse is found, you can recompile the mouse unit without this conditional
 define.
 define.
-
 \item
 \item
 You will notice that several procedures/functions have longint sized
 You will notice that several procedures/functions have longint sized
 parameters while only the lower 16 bits are used. This is because FPC is
 parameters while only the lower 16 bits are used. This is because FPC is
 a 32 bit compiler and consequently 32 bit parameters result in faster code.
 a 32 bit compiler and consequently 32 bit parameters result in faster code.
 \end{itemize}
 \end{itemize}
-
 \section{Constants, types and variables}
 \section{Constants, types and variables}
-
 The following constants are defined (to be used in e.g. the
 The following constants are defined (to be used in e.g. the
 \seef{GetLastButtonPress} call).
 \seef{GetLastButtonPress} call).
 \begin{verbatim}
 \begin{verbatim}
@@ -43,16 +34,18 @@ The following constants are defined (to be used in e.g. the
  RButton = 2; {right button}
  RButton = 2; {right button}
  MButton = 4; {middle button}
  MButton = 4; {middle button}
 \end{verbatim}
 \end{verbatim}
-
 The following variable exist: 
 The following variable exist: 
 \begin{verbatim}
 \begin{verbatim}
   MouseFound: Boolean;
   MouseFound: Boolean;
 \end{verbatim}
 \end{verbatim}
 it is set to \var{True} or \var{False} in the unit's initialization code.
 it is set to \var{True} or \var{False} in the unit's initialization code.
-
 \section{Functions and procedures}
 \section{Functions and procedures}
+\begin{function}{GetLastButtonPress}
+\Declaration
+Function GetLastButtonPress (Button: Longint; Var x,y:Longint) : Longint;
 
 
-\function{GetLastButtonPress}{(Button: Longint; Var x,y:Longint)}{Longint}{ 
+\Description
+ 
 \var{GetLastButtonPress}
 \var{GetLastButtonPress}
 Stores the position where \var{Button} was last pressed in \var{x} and
 Stores the position where \var{Button} was last pressed in \var{x} and
 \var{y} and returns
 \var{y} and returns
@@ -60,15 +53,22 @@ the number of times this button has been pressed since the last call to this
 function with \var{Button} as parameter. For \var{Button} you can use the 
 function with \var{Button} as parameter. For \var{Button} you can use the 
 \var{LButton}, \var{RButton} and \var{MButton} constants for resp. the left, 
 \var{LButton}, \var{RButton} and \var{MButton} constants for resp. the left, 
 right and middle button.
 right and middle button.
-
 For two-button mice, checking the status of the middle button seems to give
 For two-button mice, checking the status of the middle button seems to give
 and clear the stats of the right button.
 and clear the stats of the right button.
-}{None.}{\seef{GetLastButtonRelease}}
 
 
+\Errors
+None.
+\SeeAlso
+\seef{GetLastButtonRelease}
+\end{function}
 \latex{\inputlisting{mouseex/mouse5.pp}}
 \latex{\inputlisting{mouseex/mouse5.pp}}
 \html{\input{mouseex/mouse5.tex}}
 \html{\input{mouseex/mouse5.tex}}
+\begin{function}{GetLastButtonRelease}
+\Declaration
+Function GetLastButtonRelease (Button: Longint; Var x,y:Longint) : Longint;
+
+\Description
 
 
-\function{GetLastButtonRelease}{(Button: Longint; Var x,y:Longint)}{Longint}{
 \var{GetLastButtonRelease}
 \var{GetLastButtonRelease}
 stores the position where \var{Button} was last released in \var{x} and 
 stores the position where \var{Button} was last released in \var{x} and 
 \var{y} and returns
 \var{y} and returns
@@ -76,195 +76,290 @@ the number of times this button has been released since the last call to this
 function with \var{Button} as parameter. For button you can use the
 function with \var{Button} as parameter. For button you can use the
 \var{LButton}, \var{RButton} and \var{MButton} constants for resp. 
 \var{LButton}, \var{RButton} and \var{MButton} constants for resp. 
 the left, right and middle button.
 the left, right and middle button.
-
 For two-button mice, checking the stats of the middle button seems to give
 For two-button mice, checking the stats of the middle button seems to give
 and clear the stats of the right button.
 and clear the stats of the right button.
-}{None.}{\seef{GetLastButtonPress}}
 
 
+\Errors
+None.
+\SeeAlso
+\seef{GetLastButtonPress}
+\end{function}
 For an example, see \seef{GetLastButtonPress}.
 For an example, see \seef{GetLastButtonPress}.
+\begin{procedure}{GetMouseState}
+\Declaration
+Procedure GetMouseState (Var x, y, buttons: Longint);
+
+\Description
 
 
-\procedure{GetMouseState}{(Var x, y, buttons: Longint)}{
 \var{GetMouseState} Returns information on the current mouse position 
 \var{GetMouseState} Returns information on the current mouse position 
 and which buttons are currently pressed.
 and which buttons are currently pressed.
-
 \var{x} and \var{y} return the mouse cursor coordinates in pixels.
 \var{x} and \var{y} return the mouse cursor coordinates in pixels.
-
 \var{Buttons} is a bitmask. Check the example program to see how you can get the
 \var{Buttons} is a bitmask. Check the example program to see how you can get the
 necessary information from it.
 necessary information from it.
-}{None.}{\seef{LPressed}, \seef{MPressed}, \seef{RPressed},
-\seep{SetMousePos}}
-
 
 
+\Errors
+None.
+\SeeAlso
+\seef{LPressed}, \seef{MPressed}, \seef{RPressed},
+\seep{SetMousePos}
+\end{procedure}
 \latex{\inputlisting{mouseex/mouse3.pp}}
 \latex{\inputlisting{mouseex/mouse3.pp}}
 \html{\input{mouseex/mouse3.tex}}
 \html{\input{mouseex/mouse3.tex}}
+\begin{procedure}{HideMouse}
+\Declaration
+Procedure HideMouse ;
 
 
-\Procedure{HideMouse}{
-\var{HideMouse} makes the mouse cursor invisible.
+\Description
 
 
+\var{HideMouse} makes the mouse cursor invisible.
 Multiple calls to HideMouse will require just as many calls to ShowMouse to
 Multiple calls to HideMouse will require just as many calls to ShowMouse to
 make the mouse cursor again visible.
 make the mouse cursor again visible.
-}{None.}{\seep{ShowMouse}, \seep{SetMouseHideWindow}}
 
 
+\Errors
+None.
+\SeeAlso
+\seep{ShowMouse}, \seep{SetMouseHideWindow}
+\end{procedure}
 For an example, see \seep{ShowMouse}.
 For an example, see \seep{ShowMouse}.
+\begin{procedure}{InitMouse}
+\Declaration
+Procedure InitMouse ;
+
+\Description
 
 
-\Procedure{InitMouse}{
 \var{InitMouse}
 \var{InitMouse}
 Initializes the mouse driver sets the variable \var{MouseFound} depending on
 Initializes the mouse driver sets the variable \var{MouseFound} depending on
 whether or not a mouse is found.
 whether or not a mouse is found.
-
 This is Automatically called at the start of your program. 
 This is Automatically called at the start of your program. 
 You should never have to call it, unless you want to reset everything to 
 You should never have to call it, unless you want to reset everything to 
 its default values.
 its default values.
-}{None.}{\var{MouseFound} variable.}
 
 
+\Errors
+None.
+\SeeAlso
+\var{MouseFound} variable.
+\end{procedure}
 \latex{\inputlisting{mouseex/mouse1.pp}}
 \latex{\inputlisting{mouseex/mouse1.pp}}
 \html{\input{mouseex/mouse1.tex}}
 \html{\input{mouseex/mouse1.tex}}
+\begin{function}{LPressed}
+\Declaration
+Function LPressed  : Boolean;
 
 
-\Function{LPressed}{Boolean}{
+\Description
 
 
 \var{LPressed} returns \var{True} if the left mouse button is pressed.
 \var{LPressed} returns \var{True} if the left mouse button is pressed.
-
 This is simply a wrapper for the GetMouseState procedure.
 This is simply a wrapper for the GetMouseState procedure.
-}{None.}{\seep{GetMouseState}, \seef{MPressed}, \seef{RPressed}}
-
 
 
+\Errors
+None.
+\SeeAlso
+\seep{GetMouseState}, \seef{MPressed}, \seef{RPressed}
+\end{function}
 For an example, see \seep{GetMouseState}.
 For an example, see \seep{GetMouseState}.
+\begin{function}{MPressed}
+\Declaration
+Function MPressed  : Boolean;
 
 
-\Function{MPressed}{Boolean}{
-\var{MPressed} returns \var{True} if the middle mouse button is pressed.
+\Description
 
 
+\var{MPressed} returns \var{True} if the middle mouse button is pressed.
 This is simply a wrapper for the GetMouseState procedure.
 This is simply a wrapper for the GetMouseState procedure.
-}{None.}{\seep{GetMouseState}, \seef{LPressed}, \seef{RPressed}}
 
 
+\Errors
+None.
+\SeeAlso
+\seep{GetMouseState}, \seef{LPressed}, \seef{RPressed}
+\end{function}
 For an example, see \seep{GetMouseState}.
 For an example, see \seep{GetMouseState}.
+\begin{function}{RPressed}
+\Declaration
+Function RPressed  : Boolean;
 
 
-\Function{RPressed}{Boolean}{
-\var{RPressed} returns \var{True} if the right mouse button is pressed.
+\Description
 
 
+\var{RPressed} returns \var{True} if the right mouse button is pressed.
 This is simply a wrapper for the GetMouseState procedure.
 This is simply a wrapper for the GetMouseState procedure.
-}{None.}{\seep{GetMouseState}, \seef{LPressed}, \seef{MPressed}}
 
 
+\Errors
+None.
+\SeeAlso
+\seep{GetMouseState}, \seef{LPressed}, \seef{MPressed}
+\end{function}
 For an example, see \seep{GetMouseState}.
 For an example, see \seep{GetMouseState}.
+\begin{procedure}{SetMouseAscii}
+\Declaration
+Procedure SetMouseAscii (Ascii: Byte);
+
+\Description
 
 
-\procedure{SetMouseAscii}{(Ascii: Byte)}{
 \var{SetMouseAscii}
 \var{SetMouseAscii}
 sets the \var{Ascii} value of the character that depicts the mouse cursor in 
 sets the \var{Ascii} value of the character that depicts the mouse cursor in 
 text mode.
 text mode.
-
 The difference between this one and \seep{SetMouseShape}, is that the foreground
 The difference between this one and \seep{SetMouseShape}, is that the foreground
 and background colors stay the same and that the Ascii code you enter is the
 and background colors stay the same and that the Ascii code you enter is the
 character that you will get on screen; there's no XOR'ing.
 character that you will get on screen; there's no XOR'ing.
-}{None}{\seep{SetMouseShape}}
 
 
+\Errors
+None
+\SeeAlso
+\seep{SetMouseShape}
+\end{procedure}
 \latex{\inputlisting{mouseex/mouse8.pp}}
 \latex{\inputlisting{mouseex/mouse8.pp}}
 \html{\input{mouseex/mouse8.tex}}
 \html{\input{mouseex/mouse8.tex}}
+\begin{procedure}{SetMouseHideWindow}
+\Declaration
+Procedure SetMouseHideWindow (xmin,ymin,xmax,ymax: Longint);
 
 
+\Description
 
 
-
-\procedure{SetMouseHideWindow}{(xmin,ymin,xmax,ymax: Longint)}{
 \var{SetMouseHideWindow}
 \var{SetMouseHideWindow}
 defines a rectangle on screen with top-left corner at (\var{xmin,ymin}) and
 defines a rectangle on screen with top-left corner at (\var{xmin,ymin}) and
 botto-right corner at (\var{xmax,ymax}),which causes the mouse cursor to be 
 botto-right corner at (\var{xmax,ymax}),which causes the mouse cursor to be 
 turned off when it is moved into it.
 turned off when it is moved into it.
-
 When the mouse is moved into the specified region, it is turned off until you
 When the mouse is moved into the specified region, it is turned off until you
 call \var{ShowMouse} again. However, once you've called \seep{ShowMouse}, you'll have to
 call \var{ShowMouse} again. However, once you've called \seep{ShowMouse}, you'll have to
 call \var{SetMouseHideWindow} again to redefine the hide window... 
 call \var{SetMouseHideWindow} again to redefine the hide window... 
 This may be annoying, but it's the way it's implemented in the mouse driver.
 This may be annoying, but it's the way it's implemented in the mouse driver.
-
 While \var{xmin, ymin, xmax} and \var{ymax} are Longint parameters, 
 While \var{xmin, ymin, xmax} and \var{ymax} are Longint parameters, 
 only the lower 16 bits are used.
 only the lower 16 bits are used.
-}{None.}{\seep{ShowMouse}, \seep{HideMouse}}
-
 
 
+\Errors
+None.
+\SeeAlso
+\seep{ShowMouse}, \seep{HideMouse}
+\end{procedure}
 \latex{nputlisting{mouseex/mouse9.pp}}
 \latex{nputlisting{mouseex/mouse9.pp}}
 \html{\input{mouseex/mouse9.tex}}
 \html{\input{mouseex/mouse9.tex}}
+\begin{procedure}{SetMousePos}
+\Declaration
+Procedure SetMousePos (x,y:Longint);
+
+\Description
 
 
-\procedure{SetMousePos}{(x,y:Longint)}{
 \var{SetMosusePos} sets the position of the mouse cursor on the screen.
 \var{SetMosusePos} sets the position of the mouse cursor on the screen.
 \var{x} is the horizontal position in pixels, \var{y} the vertical position
 \var{x} is the horizontal position in pixels, \var{y} the vertical position
 in pixels. The upper-left hand corner of the screen is the origin.
 in pixels. The upper-left hand corner of the screen is the origin.
-
 While \var{x} and \var{y} are longints, only the lower 16 bits are used.
 While \var{x} and \var{y} are longints, only the lower 16 bits are used.
-}{None.}{\seep{GetMouseState}}
-
 
 
+\Errors
+None.
+\SeeAlso
+\seep{GetMouseState}
+\end{procedure}
 \latex{\inputlisting{mouseex/mouse4.pp}}
 \latex{\inputlisting{mouseex/mouse4.pp}}
 \html{\input{mouseex/mouse4.tex}}
 \html{\input{mouseex/mouse4.tex}}
+\begin{procedure}{SetMouseShape}
+\Declaration
+Procedure SetMouseShape (ForeColor,BackColor,Ascii: Byte);
+
+\Description
 
 
-\procedure{SetMouseShape}{(ForeColor,BackColor,Ascii: Byte)}{
 \var{SetMouseShape}
 \var{SetMouseShape}
 defines how the mouse cursor looks in textmode
 defines how the mouse cursor looks in textmode
-
 The character and its attributes that are on the mouse cursor's position on
 The character and its attributes that are on the mouse cursor's position on
 screen are XOR'ed with resp. \var{ForeColor}, \var{BackColor} and
 screen are XOR'ed with resp. \var{ForeColor}, \var{BackColor} and
 \var{Ascii}. Set them all to 0 for a "transparent" cursor.
 \var{Ascii}. Set them all to 0 for a "transparent" cursor.
-}{None.}{\seep{SetMouseAscii}}
-
 
 
+\Errors
+None.
+\SeeAlso
+\seep{SetMouseAscii}
+\end{procedure}
 \latex{\inputlisting{mouseex/mouse7.pp}}
 \latex{\inputlisting{mouseex/mouse7.pp}}
 \html{\input{mouseex/mouse7.tex}}
 \html{\input{mouseex/mouse7.tex}}
+\begin{procedure}{SetMouseSpeed}
+\Declaration
+Procedure SetMouseSpeed (Horizontal, Vertical: Longint);
 
 
-\procedure{SetMouseSpeed}{(Horizontal, Vertical: Longint)}{
-\var{SetMouseSpeed} sets the mouse speed in mickeys per 8 pixels.
+\Description
 
 
+\var{SetMouseSpeed} sets the mouse speed in mickeys per 8 pixels.
 A mickey is the smallest measurement unit handled by a mouse. With this
 A mickey is the smallest measurement unit handled by a mouse. With this
 procedure you can set how many mickeys the mouse should move to move the
 procedure you can set how many mickeys the mouse should move to move the
 cursor 8 pixels horizontally of vertically. The default values are 8 for
 cursor 8 pixels horizontally of vertically. The default values are 8 for
 horizontal and 16 for vertical movement.
 horizontal and 16 for vertical movement.
-
 While this procedure accepts longint parameters, only the low 16 bits are
 While this procedure accepts longint parameters, only the low 16 bits are
 actually used.
 actually used.
-}{None.}{}
 
 
+\Errors
+None.
+\SeeAlso
+
+\end{procedure}
 \latex{\inputlisting{mouseex/mouse10.pp}}
 \latex{\inputlisting{mouseex/mouse10.pp}}
 \html{\input{mouseex/mouse10.tex}}
 \html{\input{mouseex/mouse10.tex}}
+\begin{procedure}{SetMouseWindow}
+\Declaration
+Procedure SetMouseWindow (xmin,ymin,xmax,ymax: Longint);
 
 
-\procedure{SetMouseWindow}{(xmin,ymin,xmax,ymax: Longint)}{
+\Description
 
 
 \var{SetMousWindow}
 \var{SetMousWindow}
 defines a rectangle on screen with top-left corner at (\var{xmin,ymin}) and
 defines a rectangle on screen with top-left corner at (\var{xmin,ymin}) and
 botto-right corner at (\var{xmax,ymax}), out of which the mouse 
 botto-right corner at (\var{xmax,ymax}), out of which the mouse 
 cursor can't move.
 cursor can't move.
-
 This procedure is simply a wrapper for the \seep{SetMouseXRange} and 
 This procedure is simply a wrapper for the \seep{SetMouseXRange} and 
 \seep{SetMouseYRange} procedures.
 \seep{SetMouseYRange} procedures.
-
 While \var{xmin, ymin, xmax} and \var{ymax} are Longint parameters, 
 While \var{xmin, ymin, xmax} and \var{ymax} are Longint parameters, 
 only the lower 16 bits are used.
 only the lower 16 bits are used.
-}{None.}{\seep{SetMouseXRange}, \seep{SetMouseYRange}}
 
 
+\Errors
+None.
+\SeeAlso
+\seep{SetMouseXRange}, \seep{SetMouseYRange}
+\end{procedure}
 For an example, see \seep{SetMouseXRange}.
 For an example, see \seep{SetMouseXRange}.
+\begin{procedure}{SetMouseXRange}
+\Declaration
+Procedure SetMouseXRange (Min, Max: Longint);
 
 
-\procedure{SetMouseXRange}{(Min, Max: Longint)}{ 
+\Description
+ 
 \var{SetMouseXRange}
 \var{SetMouseXRange}
 sets the minimum (\var{Min}) and maximum (\var{Max}) horizontal coordinates in between which the
 sets the minimum (\var{Min}) and maximum (\var{Max}) horizontal coordinates in between which the
 mouse cursor can move.
 mouse cursor can move.
-
 While \var{Min} and \var{Max} are Longint parameters, only the lower 16 bits 
 While \var{Min} and \var{Max} are Longint parameters, only the lower 16 bits 
 are used.
 are used.
-}{None.}{\seep{SetMouseYRange}, \seep{SetMouseWindow}}
 
 
+\Errors
+None.
+\SeeAlso
+\seep{SetMouseYRange}, \seep{SetMouseWindow}
+\end{procedure}
 \latex{\inputlisting{mouseex/mouse6.pp}}
 \latex{\inputlisting{mouseex/mouse6.pp}}
 \html{\input{mouseex/mouse6.tex}}
 \html{\input{mouseex/mouse6.tex}}
+\begin{procedure}{SetMouseYRange}
+\Declaration
+Procedure SetMouseYRange (Min, Max: Longint);
+
+\Description
 
 
-\procedure{SetMouseYRange}{(Min, Max: Longint)}{
 \var{SetMouseYRange}
 \var{SetMouseYRange}
 sets the minimum (\var{Min}) and maximum (\var{Max}) vertical coordinates in between which the
 sets the minimum (\var{Min}) and maximum (\var{Max}) vertical coordinates in between which the
 mouse cursor can move.
 mouse cursor can move.
-
 While \var{Min} and \var{Max} are Longint parameters, only the lower 16 bits 
 While \var{Min} and \var{Max} are Longint parameters, only the lower 16 bits 
 are used.
 are used.
-}{None.}{\seep{SetMouseXRange}, \seep{SetMouseWindow}}
 
 
+\Errors
+None.
+\SeeAlso
+\seep{SetMouseXRange}, \seep{SetMouseWindow}
+\end{procedure}
 For an example, see \seep{SetMouseXRange}.
 For an example, see \seep{SetMouseXRange}.
+\begin{procedure}{ShowMouse}
+\Declaration
+Procedure ShowMouse ;
 
 
-\Procedure{ShowMouse}{
-\var{ShowMouse} makes the mouse cursor visible.
+\Description
 
 
+\var{ShowMouse} makes the mouse cursor visible.
 At the start of your progam, the mouse is invisible.
 At the start of your progam, the mouse is invisible.
-}{None.}{\seep{HideMouse},\seep{SetMouseHideWindow}}
 
 
+\Errors
+None.
+\SeeAlso
+\seep{HideMouse},\seep{SetMouseHideWindow}
+\end{procedure}
 \latex{\inputlisting{mouseex/mouse2.pp}}
 \latex{\inputlisting{mouseex/mouse2.pp}}
 \html{\input{mouseex/mouse2.tex}}
 \html{\input{mouseex/mouse2.tex}}
 
 

+ 12 - 8
docs/printer.tex

@@ -23,14 +23,12 @@ This chapter describes the PRINTER unit for Free Pascal. It was written for
 \dos by Florian kl\"ampfl, and 
 \dos by Florian kl\"ampfl, and 
 it was written for \linux by Micha\"el Van Canneyt. Its basic functionality
 it was written for \linux by Micha\"el Van Canneyt. Its basic functionality
 is the same for both systems.
 is the same for both systems.
-
 The chapter is divided in 2 sections:
 The chapter is divided in 2 sections:
 \begin{itemize}
 \begin{itemize}
 \item The first section lists types, constants and variables from the
 \item The first section lists types, constants and variables from the
 interface part of the unit.
 interface part of the unit.
 \item The second section describes the functions defined in the unit.
 \item The second section describes the functions defined in the unit.
 \end{itemize}
 \end{itemize}
-
 \section {Types, Constants and variables : }
 \section {Types, Constants and variables : }
 \begin{verbatim}
 \begin{verbatim}
 var 
 var 
@@ -40,8 +38,12 @@ var
 \var{Lst} is set up using \var{AssignLst('/tmp/PID.lst')}. 
 \var{Lst} is set up using \var{AssignLst('/tmp/PID.lst')}. 
 You can change this behaviour at compile time, setting the DefFile constant.
 You can change this behaviour at compile time, setting the DefFile constant.
 \section {Procedures and functions}
 \section {Procedures and functions}
-\procedure {AssignLst}{ ( Var F : text; ToFile : string[255])}
-{ \linux only. \\
+\begin{procedure}{AssignLst}
+\Declaration
+Procedure AssignLst  ( Var F : text; ToFile : string[255]);
+
+\Description
+ \linux only. \\
  Assigns to F a printing device. ToFile is a string with the following form:
  Assigns to F a printing device. ToFile is a string with the following form:
 \begin{itemize}
 \begin{itemize}
 \item \var{ '|filename options'}  : This sets up a pipe with the program filename,
 \item \var{ '|filename options'}  : This sets up a pipe with the program filename,
@@ -55,9 +57,11 @@ You can change this behaviour at compile time, setting the DefFile constant.
              deleted.
              deleted.
              (useful for opening /dev/printer or for later printing)
              (useful for opening /dev/printer or for later printing)
 \end{itemize}
 \end{itemize}
-}
-{ Errors are reported in Linuxerror.}
-{\seem{lpr}{1}}
 
 
+\Errors
+ Errors are reported in Linuxerror.
+\SeeAlso
+\seem{lpr}{1}
+\end{procedure}
 \latex{\inputlisting{printex/printex.pp}}
 \latex{\inputlisting{printex/printex.pp}}
-\html{\input{printex/printex.tex}}
+\html{\input{printex/printex.tex}}

+ 250 - 142
docs/sockets.tex

@@ -21,14 +21,12 @@
 \chapter{The SOCKETS unit.}
 \chapter{The SOCKETS unit.}
 This chapter describes the SOCKETS unit for Free Pascal. 
 This chapter describes the SOCKETS unit for Free Pascal. 
 it was written for \linux by Micha\"el Van Canneyt. 
 it was written for \linux by Micha\"el Van Canneyt. 
-
 The chapter is divided in 2 sections:
 The chapter is divided in 2 sections:
 \begin{itemize}
 \begin{itemize}
 \item The first section lists types, constants and variables from the
 \item The first section lists types, constants and variables from the
 interface part of the unit.
 interface part of the unit.
 \item The second section describes the functions defined in the unit.
 \item The second section describes the functions defined in the unit.
 \end{itemize}
 \end{itemize}
-
 \section {Types, Constants and variables : }
 \section {Types, Constants and variables : }
 The following constants identify the different socket types, as needed in
 The following constants identify the different socket types, as needed in
 the \seef{Socket} call.
 the \seef{Socket} call.
@@ -79,12 +77,10 @@ TSockAddr = packed Record
   family:word;
   family:word;
   data  :array [0..13] of char;
   data  :array [0..13] of char;
   end;
   end;
-
 TUnixSockAddr = packed Record
 TUnixSockAddr = packed Record
   family:word;
   family:word;
   path:array[0..108] of char;
   path:array[0..108] of char;
   end;
   end;
-
 TInetSockAddr = packed Record
 TInetSockAddr = packed Record
   family:Word;
   family:Word;
   port  :Word;
   port  :Word;
@@ -96,20 +92,22 @@ The following type is returned by the \seef{SocketPair} call.
 \begin{verbatim}
 \begin{verbatim}
 TSockArray = Array[1..2] of Longint;
 TSockArray = Array[1..2] of Longint;
 \end{verbatim}
 \end{verbatim}
-
 \section {Functions and Procedures}
 \section {Functions and Procedures}
+\begin{function}{Accept}
+\Declaration
+Function Accept (Sock:Longint;Var Addr;Var Addrlen:Longint) : Longint;
 
 
-\function{Accept}{(Sock:Longint;Var Addr;Var Addrlen:Longint)}{Longint}
-{\var{Accept} accepts a connection from a socket \var{Sock}, which was
+\Description
+\var{Accept} accepts a connection from a socket \var{Sock}, which was
 listening for a connection. The accepted socket may NOT be used to accept
 listening for a connection. The accepted socket may NOT be used to accept
 more connections. The original socket remains open.
 more connections. The original socket remains open.
-
 The \var{Accept} call fills the address of the connecting entity in \var{Addr},
 The \var{Accept} call fills the address of the connecting entity in \var{Addr},
 and sets its length in \var{Addrlen}. \var{Addr} should be pointing to
 and sets its length in \var{Addrlen}. \var{Addr} should be pointing to
 enough space, and \var{Addrlen} should be set to the amount of space
 enough space, and \var{Addrlen} should be set to the amount of space
 available, prior to the call.
 available, prior to the call.
-}
-{Errors are reported in \var{SocketError}, and include the following:
+
+\Errors
+Errors are reported in \var{SocketError}, and include the following:
 \begin{description}
 \begin{description}
 \item[SYS\_EBADF] The socket descriptor is invalid.
 \item[SYS\_EBADF] The socket descriptor is invalid.
 \item[SYS\_ENOTSOCK] The descriptor is not a socket.
 \item[SYS\_ENOTSOCK] The descriptor is not a socket.
@@ -118,57 +116,75 @@ operation.
 \item[SYS\_EFAULT] \var{Addr} points outside your address space.
 \item[SYS\_EFAULT] \var{Addr} points outside your address space.
 \item[SYS\_EWOULDBLOCK] The requested operation would block the process.
 \item[SYS\_EWOULDBLOCK] The requested operation would block the process.
 \end{description}
 \end{description}
-}
-{\seef{Listen}, \seef{Connect}}
 
 
+\SeeAlso
+\seef{Listen}, \seef{Connect}
+\end{function}
 \latex{\inputlisting{sockex/sock_svr.pp}}
 \latex{\inputlisting{sockex/sock_svr.pp}}
 \html{\input{sockex/sock_svr.tex}}
 \html{\input{sockex/sock_svr.tex}}
+\begin{functionl}{Accept}{AltAAccept}
+\Declaration
+Function Accept (Sock:longint;var addr:string;var SockIn,SockOut:text) : Boolean;
 
 
-\functionl{Accept}{AltAAccept}{(Sock:longint;var addr:string;var SockIn,SockOut:text)}{Boolean}
-{ This is an alternate form of the \seef{Accept} command. It is equivalent
+\Description
+ This is an alternate form of the \seef{Accept} command. It is equivalent
 to subsequently calling the regular \seef{Accept}
 to subsequently calling the regular \seef{Accept}
 function and the \seep{Sock2Text} function.
 function and the \seep{Sock2Text} function.
-
 The function returns \var{True} if successfull, \var{False} otherwise.
 The function returns \var{True} if successfull, \var{False} otherwise.
-}
-{The errors are those of \seef{Accept}.}
-{\seef{Accept}}
 
 
-\functionl{Accept}{AltBAccept}{(Sock:longint;var addr:string;var SockIn,SockOut:File)}{Boolean}
-{ This is an alternate form of the \seef{Accept} command. 
+\Errors
+The errors are those of \seef{Accept}.
+\SeeAlso
+\seef{Accept}
+\end{functionl}
+\begin{functionl}{Accept}{AltBAccept}
+\Declaration
+Function Accept (Sock:longint;var addr:string;var SockIn,SockOut:File) : Boolean;
+
+\Description
+ This is an alternate form of the \seef{Accept} command. 
 It is equivalent
 It is equivalent
 to subsequently calling the regular \seef{Accept} function and the 
 to subsequently calling the regular \seef{Accept} function and the 
 \seep{Sock2File} function.
 \seep{Sock2File} function.
 The \var{Addr} parameter contains the name of the unix socket file to be
 The \var{Addr} parameter contains the name of the unix socket file to be
 opened. 
 opened. 
-
 The function returns \var{True} if successfull, \var{False} otherwise.
 The function returns \var{True} if successfull, \var{False} otherwise.
-}
-{The errors are those of \seef{Accept}.}
-{\seef{Accept}}
-
 
 
-\functionl{Accept}{AltCAccept}{(Sock:longint;var addr:TInetSockAddr;var SockIn,SockOut:File)}{Boolean}
-{ This is an alternate form of the \seef{Accept} command. 
+\Errors
+The errors are those of \seef{Accept}.
+\SeeAlso
+\seef{Accept}
+\end{functionl}
+\begin{functionl}{Accept}{AltCAccept}
+\Declaration
+Function Accept (Sock:longint;var addr:TInetSockAddr;var SockIn,SockOut:File) : Boolean;
+
+\Description
+ This is an alternate form of the \seef{Accept} command. 
 It is equivalent
 It is equivalent
 to subsequently calling the regular \seef{Accept} function and the 
 to subsequently calling the regular \seef{Accept} function and the 
 \seep{Sock2File} function.
 \seep{Sock2File} function.
 The \var{Addr} parameter contains the parameters of the internet socket that
 The \var{Addr} parameter contains the parameters of the internet socket that
 should be opened.
 should be opened.
-
 The function returns \var{True} if successfull, \var{False} otherwise.
 The function returns \var{True} if successfull, \var{False} otherwise.
-}
-{The errors are those of \seef{Accept}.}
-{\seef{Accept}}
 
 
-\function{Bind}{(Sock:Longint;Var Addr;AddrLen:Longint)}{Boolean}
-{\var{Bind} binds the socket \var{Sock} to address \var{Addr}. \var{Addr}
+\Errors
+The errors are those of \seef{Accept}.
+\SeeAlso
+\seef{Accept}
+\end{functionl}
+\begin{function}{Bind}
+\Declaration
+Function Bind (Sock:Longint;Var Addr;AddrLen:Longint) : Boolean;
+
+\Description
+\var{Bind} binds the socket \var{Sock} to address \var{Addr}. \var{Addr}
 has length \var{Addrlen}.
 has length \var{Addrlen}.
-
 The function returns \var{True} if the call was succesful, \var{False} if
 The function returns \var{True} if the call was succesful, \var{False} if
 not.
 not.
-}
-{Errors are returned in \var{SocketError} and include the following:
+
+\Errors
+Errors are returned in \var{SocketError} and include the following:
 \begin{description}
 \begin{description}
 \item[SYS\_EBADF] The socket descriptor is invalid.
 \item[SYS\_EBADF] The socket descriptor is invalid.
 \item[SYS\_EINVAL] The socket is already bound to an address,
 \item[SYS\_EINVAL] The socket is already bound to an address,
@@ -176,76 +192,108 @@ not.
 open it.
 open it.
 \end{description}
 \end{description}
 More arrors can be found in the Unix man pages.
 More arrors can be found in the Unix man pages.
-}{\seef{Socket}}
 
 
-\functionl{Bind}{AltBind}{(Sock:longint;const addr:string)}{boolean}
-{This is an alternate form of the \var{Bind} command.
+\SeeAlso
+\seef{Socket}
+\end{function}
+\begin{functionl}{Bind}{AltBind}
+\Declaration
+Function Bind (Sock:longint;const addr:string) : boolean;
+
+\Description
+This is an alternate form of the \var{Bind} command.
 This form of the \var{Bind} command is equivalent to subsequently 
 This form of the \var{Bind} command is equivalent to subsequently 
 calling \seep{Str2UnixSockAddr} and the regular \seef{Bind} function.
 calling \seep{Str2UnixSockAddr} and the regular \seef{Bind} function.
-
 The function returns \var{True} if successfull, \var{False} otherwise.
 The function returns \var{True} if successfull, \var{False} otherwise.
-}
-{Errors are those of the regular \seef{Bind} command.}
-{\seef{Bind}}
 
 
-\function{Connect}{(Sock:Longint;Var Addr;Addrlen:Longint)}{Boolean}
-{\var{Connect} opens a connection to a peer, whose address is described by
+\Errors
+Errors are those of the regular \seef{Bind} command.
+\SeeAlso
+\seef{Bind}
+\end{functionl}
+\begin{function}{Connect}
+\Declaration
+Function Connect (Sock:Longint;Var Addr;Addrlen:Longint) : Boolean;
+
+\Description
+\var{Connect} opens a connection to a peer, whose address is described by
 var{Addr}. \var{AddrLen} contains the length of the address.
 var{Addr}. \var{AddrLen} contains the length of the address.
-
 The type of \var{Addr} depends on the kind of connection you're trying to
 The type of \var{Addr} depends on the kind of connection you're trying to
 make, but is generally one of \var{TSockAddr} or \var{TUnixSockAddr}.
 make, but is generally one of \var{TSockAddr} or \var{TUnixSockAddr}.
-}
-{Errors are reported in \var{SocketError}.}
-{\seef{Listen}, \seef{Bind},\seef{Accept}}
 
 
+\Errors
+Errors are reported in \var{SocketError}.
+\SeeAlso
+\seef{Listen}, \seef{Bind},\seef{Accept}
+\end{function}
 \latex{\inputlisting{sockex/sock_cli.pp}}
 \latex{\inputlisting{sockex/sock_cli.pp}}
 \html{\input{sockex/sock_cli.tex}}
 \html{\input{sockex/sock_cli.tex}}
+\begin{functionl}{Connect}{AltAConnect}
+\Declaration
+Function Connect (Sock:longint;const addr:string;var SockIn,SockOut:text) : Boolean;
 
 
-\functionl{Connect}{AltAConnect}{(Sock:longint;const addr:string;var SockIn,SockOut:text)}{Boolean}
-{ This is an alternate form of the \seef{Connect} command. 
+\Description
+ This is an alternate form of the \seef{Connect} command. 
 It is equivalent
 It is equivalent
 to subsequently calling the regular \seef{Connect} function and the 
 to subsequently calling the regular \seef{Connect} function and the 
 \seep{Sock2Text} function.
 \seep{Sock2Text} function.
-
 The function returns \var{True} if successfull, \var{False} otherwise.
 The function returns \var{True} if successfull, \var{False} otherwise.
-}{The errors are those of \seef{Connect}.}
-{\seef{Connect}}
 
 
-\functionl{Connect}{AltBConnect}{(Sock:longint;const addr:string;var SockIn,SockOut:file)}{Boolean}
-{ This is an alternate form of the \seef{Connect} command. The parameter
+\Errors
+The errors are those of \seef{Connect}.
+\SeeAlso
+\seef{Connect}
+\end{functionl}
+\begin{functionl}{Connect}{AltBConnect}
+\Declaration
+Function Connect (Sock:longint;const addr:string;var SockIn,SockOut:file) : Boolean;
+
+\Description
+ This is an alternate form of the \seef{Connect} command. The parameter
 \var{addr} contains the name of the unix socket file to be opened. 
 \var{addr} contains the name of the unix socket file to be opened. 
 It is equivalent to subsequently calling the regular \seef{Connect} 
 It is equivalent to subsequently calling the regular \seef{Connect} 
 function and the  \seep{Sock2File} function.
 function and the  \seep{Sock2File} function.
-
 The function returns \var{True} if successfull, \var{False} otherwise.
 The function returns \var{True} if successfull, \var{False} otherwise.
-}{The errors are those of \seef{Connect}.}
-{\seef{Connect}}
-
 
 
-\functionl{Connect}{AltCConnect}{(Sock:longint;const addr: TInetSockAddr;var SockIn,SockOut:file)}{Boolean}
-{ This is another alternate form of the \seef{Connect} command. 
+\Errors
+The errors are those of \seef{Connect}.
+\SeeAlso
+\seef{Connect}
+\end{functionl}
+\begin{functionl}{Connect}{AltCConnect}
+\Declaration
+Function Connect (Sock:longint;const addr: TInetSockAddr;var SockIn,SockOut:file) : Boolean;
+
+\Description
+ This is another alternate form of the \seef{Connect} command. 
 It is equivalent
 It is equivalent
 to subsequently calling the regular \seef{Connect} function and the 
 to subsequently calling the regular \seef{Connect} function and the 
 \seep{Sock2File} function. The \var{Addr} parameter contains the parameters
 \seep{Sock2File} function. The \var{Addr} parameter contains the parameters
 of the internet socket to connect to.
 of the internet socket to connect to.
-
 The function returns \var{True} if successfull, \var{False} otherwise.
 The function returns \var{True} if successfull, \var{False} otherwise.
-}{The errors are those of \seef{Connect}.}
-{\seef{Connect}}
 
 
+\Errors
+The errors are those of \seef{Connect}.
+\SeeAlso
+\seef{Connect}
+\end{functionl}
 \latex{\inputlisting{sockex/pfinger.pp}}
 \latex{\inputlisting{sockex/pfinger.pp}}
 \html{\input{sockex/pfinger.tex}}
 \html{\input{sockex/pfinger.tex}}
+\begin{function}{GetPeerName}
+\Declaration
+Function GetPeerName (Sock:Longint;Var Addr;Var Addrlen:Longint) : Longint;
 
 
-\function{GetPeerName}{(Sock:Longint;Var Addr;Var Addrlen:Longint)}{Longint}
-{\var{GetPeerName} returns the name of the entity connected to the 
+\Description
+\var{GetPeerName} returns the name of the entity connected to the 
 specified socket \var{Sock}. The Socket must be connected for this call to
 specified socket \var{Sock}. The Socket must be connected for this call to
 work. 
 work. 
 \var{Addr} should point to enough space to store the name, the
 \var{Addr} should point to enough space to store the name, the
 amount of space pointed to should be set in \var{Addrlen}. 
 amount of space pointed to should be set in \var{Addrlen}. 
 When the function returns succesfully, \var{Addr} will be filled with the 
 When the function returns succesfully, \var{Addr} will be filled with the 
 name, and \var{Addrlen} will be set to the length of \var{Addr}.
 name, and \var{Addrlen} will be set to the length of \var{Addr}.
-}
-{Errors are reported in \var{SocketError}, and include the following:
+
+\Errors
+Errors are reported in \var{SocketError}, and include the following:
 \begin{description}
 \begin{description}
 \item[SYS\_EBADF] The socket descriptor is invalid.
 \item[SYS\_EBADF] The socket descriptor is invalid.
 \item[SYS\_ENOBUFS] The system doesn't have enough buffers to perform the
 \item[SYS\_ENOBUFS] The system doesn't have enough buffers to perform the
@@ -254,15 +302,22 @@ operation.
 \item[SYS\_EFAULT] \var{Addr} points outside your address space.
 \item[SYS\_EFAULT] \var{Addr} points outside your address space.
 \item[SYS\_ENOTCONN] The socket isn't connected.
 \item[SYS\_ENOTCONN] The socket isn't connected.
 \end{description}
 \end{description}
-}{\seef{Connect}, \seef{Socket}, \seem{connect}{2}}
 
 
-\function{GetSocketName}{(Sock:Longint;Var Addr;Var Addrlen:Longint)}{Longint}
-{\var{GetSockName} returns the current name of the specified socket
+\SeeAlso
+\seef{Connect}, \seef{Socket}, \seem{connect}{2}
+\end{function}
+\begin{function}{GetSocketName}
+\Declaration
+Function GetSocketName (Sock:Longint;Var Addr;Var Addrlen:Longint) : Longint;
+
+\Description
+\var{GetSockName} returns the current name of the specified socket
 \var{Sock}. \var{Addr} should point to enough space to store the name, the
 \var{Sock}. \var{Addr} should point to enough space to store the name, the
 amount of space pointed to should be set in \var{Addrlen}. 
 amount of space pointed to should be set in \var{Addrlen}. 
 When the function returns succesfully, \var{Addr} will be filled with the 
 When the function returns succesfully, \var{Addr} will be filled with the 
-name, and \var{Addrlen} will be set to the length of \var{Addr}.}
-{Errors are reported in \var{SocketError}, and include the following:
+name, and \var{Addrlen} will be set to the length of \var{Addr}.
+\Errors
+Errors are reported in \var{SocketError}, and include the following:
 \begin{description}
 \begin{description}
 \item[SYS\_EBADF] The socket descriptor is invalid.
 \item[SYS\_EBADF] The socket descriptor is invalid.
 \item[SYS\_ENOBUFS] The system doesn't have enough buffers to perform the
 \item[SYS\_ENOBUFS] The system doesn't have enough buffers to perform the
@@ -270,11 +325,16 @@ operation.
 \item[SYS\_ENOTSOCK] The descriptor is not a socket.
 \item[SYS\_ENOTSOCK] The descriptor is not a socket.
 \item[SYS\_EFAULT] \var{Addr} points outside your address space.
 \item[SYS\_EFAULT] \var{Addr} points outside your address space.
 \end{description}
 \end{description}
-}{\seef{Bind}}
 
 
+\SeeAlso
+\seef{Bind}
+\end{function}
+\begin{function}{GetSocketOptions}
+\Declaration
+Function GetSocketOptions (Sock,Level,OptName:Longint;Var OptVal;optlen:longint) : Longint;
 
 
-\function{GetSocketOptions}{(Sock,Level,OptName:Longint;Var OptVal;optlen:longint)}{Longint}
-{\var{GetSocketOptions} gets the connection options for socket \var{Sock}.
+\Description
+\var{GetSocketOptions} gets the connection options for socket \var{Sock}.
 The socket may be obtained from different levels, indicated by \var{Level},
 The socket may be obtained from different levels, indicated by \var{Level},
 which can be one of the following:
 which can be one of the following:
 \begin{description}
 \begin{description}
@@ -283,47 +343,58 @@ which can be one of the following:
 which should interprete the option.
 which should interprete the option.
  \end{description}
  \end{description}
 For more information on this call, refer to the unix manual page \seem{getsockopt}{2}.
 For more information on this call, refer to the unix manual page \seem{getsockopt}{2}.
-}
-{Errors are reported in \var{SocketError}, and include the following:
+
+\Errors
+Errors are reported in \var{SocketError}, and include the following:
 \begin{description}
 \begin{description}
 \item[SYS\_EBADF] The socket descriptor is invalid.
 \item[SYS\_EBADF] The socket descriptor is invalid.
 \item[SYS\_ENOTSOCK] The descriptor is not a socket.
 \item[SYS\_ENOTSOCK] The descriptor is not a socket.
 \item[SYS\_EFAULT] \var{OptVal} points outside your address space.
 \item[SYS\_EFAULT] \var{OptVal} points outside your address space.
 \end{description}
 \end{description}
-}
-{\seef{GetSocketOptions}}
 
 
-\function{Listen}{(Sock,MaxConnect:Longint)}{Boolean}
-{\var{Listen} listens for up to \var{MaxConnect} connections from socket
+\SeeAlso
+\seef{GetSocketOptions}
+\end{function}
+\begin{function}{Listen}
+\Declaration
+Function Listen (Sock,MaxConnect:Longint) : Boolean;
+
+\Description
+\var{Listen} listens for up to \var{MaxConnect} connections from socket
 \var{Sock}. The socket \var{Sock} must be of type \var{SOCK\_STREAM} or
 \var{Sock}. The socket \var{Sock} must be of type \var{SOCK\_STREAM} or
 \var{Sock\_SEQPACKET}.
 \var{Sock\_SEQPACKET}.
-
 The function returns \var{True} if a connection was accepted, \var{False} 
 The function returns \var{True} if a connection was accepted, \var{False} 
 if an error occurred.
 if an error occurred.
-}
-{Errors are reported in \var{SocketError}, and include the following:
+
+\Errors
+Errors are reported in \var{SocketError}, and include the following:
 \begin{description}
 \begin{description}
 \item[SYS\_EBADF] The socket descriptor is invalid.
 \item[SYS\_EBADF] The socket descriptor is invalid.
 \item[SYS\_ENOTSOCK] The descriptor is not a socket.
 \item[SYS\_ENOTSOCK] The descriptor is not a socket.
 \item[SYS\_EOPNOTSUPP] The socket type doesn't support the \var{Listen}
 \item[SYS\_EOPNOTSUPP] The socket type doesn't support the \var{Listen}
 operation.
 operation.
 \end{description}
 \end{description}
-}{\seef{Socket}, \seef{Bind}, \seef{Connect}}
 
 
-\function{Recv}{(Sock:Longint;Var Addr;AddrLen,Flags:Longint)}{Longint}
-{\var{Recv} reads at most \var{Addrlen} bytes from socket \var{Sock} into
-address \var{Addr}. The socket must be in a connected state.
+\SeeAlso
+\seef{Socket}, \seef{Bind}, \seef{Connect}
+\end{function}
+\begin{function}{Recv}
+\Declaration
+Function Recv (Sock:Longint;Var Addr;AddrLen,Flags:Longint) : Longint;
 
 
+\Description
+\var{Recv} reads at most \var{Addrlen} bytes from socket \var{Sock} into
+address \var{Addr}. The socket must be in a connected state.
 \var{Flags} can be one of the following:
 \var{Flags} can be one of the following:
 \begin{description}
 \begin{description}
 \item [1] : Process out-of band data.
 \item [1] : Process out-of band data.
 \item [4] : Bypass routing, use a direct interface.
 \item [4] : Bypass routing, use a direct interface.
 \item [??] : Wait for full request or report an error.
 \item [??] : Wait for full request or report an error.
 \end{description}
 \end{description}
-
 The functions returns the number of bytes actually read from the socket, or
 The functions returns the number of bytes actually read from the socket, or
--1 if a detectable error occurred.}
-{Errors are reported in \var{SocketError}, and include the following:
+-1 if a detectable error occurred.
+\Errors
+Errors are reported in \var{SocketError}, and include the following:
 \begin{description}
 \begin{description}
 \item[SYS\_EBADF] The socket descriptor is invalid.
 \item[SYS\_EBADF] The socket descriptor is invalid.
 \item[SYS\_ENOTCONN] The socket isn't connected.
 \item[SYS\_ENOTCONN] The socket isn't connected.
@@ -333,22 +404,27 @@ The functions returns the number of bytes actually read from the socket, or
 \item[SYS\_EWOULDBLOCK] The requested operation would block the process.
 \item[SYS\_EWOULDBLOCK] The requested operation would block the process.
 \item[SYS\_ENOBUFS] The system doesn't have enough free buffers available.
 \item[SYS\_ENOBUFS] The system doesn't have enough free buffers available.
 \end{description}
 \end{description}
-}{\seef{Send}}
 
 
-\function{Send}{(Sock:Longint;Var Addr;AddrLen,Flags:Longint)}{Longint}
-{\var{Send} sends \var{AddrLen} bytes starting from address \var{Addr}
-to socket \var{Sock}. \var{Sock} must be in a connected state.
+\SeeAlso
+\seef{Send}
+\end{function}
+\begin{function}{Send}
+\Declaration
+Function Send (Sock:Longint;Var Addr;AddrLen,Flags:Longint) : Longint;
 
 
+\Description
+\var{Send} sends \var{AddrLen} bytes starting from address \var{Addr}
+to socket \var{Sock}. \var{Sock} must be in a connected state.
 The function returns the number of bytes sent, or -1 if a detectable 
 The function returns the number of bytes sent, or -1 if a detectable 
 error occurred.
 error occurred.
-
 \var{Flags} can be one of the following:
 \var{Flags} can be one of the following:
 \begin{description}
 \begin{description}
 \item [1] : Process out-of band data.
 \item [1] : Process out-of band data.
 \item [4] : Bypass routing, use a direct interface.
 \item [4] : Bypass routing, use a direct interface.
 \end{description}
 \end{description}
-}
-{Errors are reported in \var{SocketError}, and include the following:
+
+\Errors
+Errors are reported in \var{SocketError}, and include the following:
 \begin{description}
 \begin{description}
 \item[SYS\_EBADF] The socket descriptor is invalid.
 \item[SYS\_EBADF] The socket descriptor is invalid.
 \item[SYS\_ENOTSOCK] The descriptor is not a socket.
 \item[SYS\_ENOTSOCK] The descriptor is not a socket.
@@ -357,10 +433,16 @@ error occurred.
 \item[SYS\_EWOULDBLOCK] The requested operation would block the process.
 \item[SYS\_EWOULDBLOCK] The requested operation would block the process.
 \item[SYS\_ENOBUFS] The system doesn't have enough free buffers available.
 \item[SYS\_ENOBUFS] The system doesn't have enough free buffers available.
 \end{description}
 \end{description}
-}{\seef{Recv}, \seem{send}{2}}
 
 
-\function{SetSocketOptions}{(Sock,Level,OptName:Longint;Var OptVal;optlen:longint)}{Longint}
-{\var{SetSocketOptions} sets the connection options for socket \var{Sock}.
+\SeeAlso
+\seef{Recv}, \seem{send}{2}
+\end{function}
+\begin{function}{SetSocketOptions}
+\Declaration
+Function SetSocketOptions (Sock,Level,OptName:Longint;Var OptVal;optlen:longint) : Longint;
+
+\Description
+\var{SetSocketOptions} sets the connection options for socket \var{Sock}.
 The socket may be manipulated at different levels, indicated by \var{Level},
 The socket may be manipulated at different levels, indicated by \var{Level},
 which can be one of the following:
 which can be one of the following:
 \begin{description}
 \begin{description}
@@ -369,18 +451,24 @@ which can be one of the following:
 which should interprete the option.
 which should interprete the option.
  \end{description}
  \end{description}
 For more information on this call, refer to the unix manual page \seem{setsockopt}{2}.
 For more information on this call, refer to the unix manual page \seem{setsockopt}{2}.
-}
-{Errors are reported in \var{SocketError}, and include the following:
+
+\Errors
+Errors are reported in \var{SocketError}, and include the following:
 \begin{description}
 \begin{description}
 \item[SYS\_EBADF] The socket descriptor is invalid.
 \item[SYS\_EBADF] The socket descriptor is invalid.
 \item[SYS\_ENOTSOCK] The descriptor is not a socket.
 \item[SYS\_ENOTSOCK] The descriptor is not a socket.
 \item[SYS\_EFAULT] \var{OptVal} points outside your address space.
 \item[SYS\_EFAULT] \var{OptVal} points outside your address space.
 \end{description}
 \end{description}
-}
-{\seef{GetSocketOptions}}
 
 
-\function{Shutdown}{(Sock:Longint;How:Longint)}{Longint}
-{\var{ShutDown} closes one end of a full duplex socket connection, described
+\SeeAlso
+\seef{GetSocketOptions}
+\end{function}
+\begin{function}{Shutdown}
+\Declaration
+Function Shutdown (Sock:Longint;How:Longint) : Longint;
+
+\Description
+\var{ShutDown} closes one end of a full duplex socket connection, described
 by \var{Sock}. \var{How} determines how the connection will be shut down,
 by \var{Sock}. \var{How} determines how the connection will be shut down,
 and can be one of the following:
 and can be one of the following:
 \begin{description}
 \begin{description}
@@ -388,44 +476,59 @@ and can be one of the following:
 \item[1] : Further sends are disallowed.
 \item[1] : Further sends are disallowed.
 \item[2] : Sending nor receiving are allowed.
 \item[2] : Sending nor receiving are allowed.
 \end{description}
 \end{description}
-
 On succes, the function returns 0, on error -1 is returned.
 On succes, the function returns 0, on error -1 is returned.
-}
-{\var{SocketError} is used to report errors, and includes the following:
+
+\Errors
+\var{SocketError} is used to report errors, and includes the following:
 \begin{description}
 \begin{description}
 \item[SYS\_EBADF] The socket descriptor is invalid.
 \item[SYS\_EBADF] The socket descriptor is invalid.
 \item[SYS\_ENOTCONN] The socket isn't connected.
 \item[SYS\_ENOTCONN] The socket isn't connected.
 \item[SYS\_ENOTSOCK] The descriptor is not a socket.
 \item[SYS\_ENOTSOCK] The descriptor is not a socket.
 \end{description}
 \end{description}
-}{\seef{Socket}, \seef{Connect}}
 
 
-\procedure{Sock2File}{(Sock:Longint;Var SockIn,SockOut:File)}
-{\var{Sock2File} transforms a socket \var{Sock} into 2 Pascal file
-descriptors of type \var{File}, one for reading from the socket
-(\var{SockIn}), one for writing to the socket (\var{SockOut}).}
-{None.}
-{\seef{Socket}, \seep{Sock2Text}}
+\SeeAlso
+\seef{Socket}, \seef{Connect}
+\end{function}
+\begin{procedure}{Sock2File}
+\Declaration
+Procedure Sock2File (Sock:Longint;Var SockIn,SockOut:File);
 
 
-\procedure{Sock2Text}{(Sock:Longint;Var SockIn,SockOut: Text)}
-{\var{Sock2Text} transforms a socket \var{Sock} into 2 Pascal file
+\Description
+\var{Sock2File} transforms a socket \var{Sock} into 2 Pascal file
+descriptors of type \var{File}, one for reading from the socket
+(\var{SockIn}), one for writing to the socket (\var{SockOut}).
+\Errors
+None.
+\SeeAlso
+\seef{Socket}, \seep{Sock2Text}
+\end{procedure}
+\begin{procedure}{Sock2Text}
+\Declaration
+Procedure Sock2Text (Sock:Longint;Var SockIn,SockOut: Text);
+
+\Description
+\var{Sock2Text} transforms a socket \var{Sock} into 2 Pascal file
 descriptors of type \var{Text}, one for reading from the socket
 descriptors of type \var{Text}, one for reading from the socket
-(\var{SockIn}), one for writing to the socket (\var{SockOut}).}
-{None.}
-{\seef{Socket}, \seep{Sock2File}}
-
-
-
-\function{Socket}{(Domain,SocketType,Protocol:Longint)}{Longint}
-{\var{Socket} creates a new socket in domain \var{Domain}, from type
+(\var{SockIn}), one for writing to the socket (\var{SockOut}).
+\Errors
+None.
+\SeeAlso
+\seef{Socket}, \seep{Sock2File}
+\end{procedure}
+\begin{function}{Socket}
+\Declaration
+Function Socket (Domain,SocketType,Protocol:Longint) : Longint;
+
+\Description
+\var{Socket} creates a new socket in domain \var{Domain}, from type
 \var{SocketType} using protocol \var{Protocol}.
 \var{SocketType} using protocol \var{Protocol}.
-
 The Domain, Socket type and Protocol can be specified using predefined
 The Domain, Socket type and Protocol can be specified using predefined
 constants (see the section on constants for available constants)
 constants (see the section on constants for available constants)
-
 If succesfull, the function returns a socket descriptor, which can be passed
 If succesfull, the function returns a socket descriptor, which can be passed
 to a subsequent \seef{Bind} call. If unsuccesfull, the function returns -1.
 to a subsequent \seef{Bind} call. If unsuccesfull, the function returns -1.
-}
-{Errors are returned in \var{SocketError}, and include the follwing:
+
+\Errors
+Errors are returned in \var{SocketError}, and include the follwing:
 \begin{description}
 \begin{description}
 \item[SYS\_EPROTONOSUPPORT]
 \item[SYS\_EPROTONOSUPPORT]
 The protocol type or the specified protocol is not
 The protocol type or the specified protocol is not
@@ -441,21 +544,26 @@ The system file table is full.
  Insufficient  buffer  space  is  available.    The
  Insufficient  buffer  space  is  available.    The
  socket   cannot   be   created   until  sufficient
  socket   cannot   be   created   until  sufficient
  resources are freed.
  resources are freed.
-\end{description}}
-{\seef{SocketPair}, \seem{socket}{2}}
+\end{description}
+\SeeAlso
+\seef{SocketPair}, \seem{socket}{2}
+\end{function}
 for an example, see \seef{Accept}.
 for an example, see \seef{Accept}.
+\begin{function}{SocketPair}
+\Declaration
+Function SocketPair (Domain,SocketType,Protocol:Longint;var Pair:TSockArray) : Longint;
 
 
-\function{SocketPair}{(Domain,SocketType,Protocol:Longint;var Pair:TSockArray)}{Longint}
-{\var{SocketPair} creates 2 sockets in domain \var{Domain}, from type
+\Description
+\var{SocketPair} creates 2 sockets in domain \var{Domain}, from type
 \var{SocketType} and using protocol \var{Protocol}.
 \var{SocketType} and using protocol \var{Protocol}.
-
 The pair is returned in \var{Pair}, and they are indistinguishable.
 The pair is returned in \var{Pair}, and they are indistinguishable.
-
 The function returns -1 upon error and 0 upon success.
 The function returns -1 upon error and 0 upon success.
-}
-{Errors are reported in \var{SocketError}, and are the same as in \seef{Socket}}
 
 
-\procedure{Str2UnixSockAddr}{(const addr:string;var t:TUnixSockAddr;var len:longint)}
+\Errors
+Errors are reported in \var{SocketError}, and are the same as in \seef{Socket}
+\SeeAlso
+Str2UnixSockAddr{(const addr:string;var t:TUnixSockAddr;var len:longint)}
+\end{function}
 {\var{Str2UnixSockAddr} transforms a Unix socket address in a string to a
 {\var{Str2UnixSockAddr} transforms a Unix socket address in a string to a
 \var{TUnixSockAddr} sturcture which can be passed to the \seef{Bind} call.
 \var{TUnixSockAddr} sturcture which can be passed to the \seef{Bind} call.
 }
 }

+ 221 - 98
docs/strings.tex

@@ -21,253 +21,376 @@
 \chapter{The STRINGS unit.}
 \chapter{The STRINGS unit.}
 This chapter describes the \var{STRINGS} unit for 
 This chapter describes the \var{STRINGS} unit for 
 \fpc. 
 \fpc. 
-
 Since the unit only provides some procedures and functions, there is
 Since the unit only provides some procedures and functions, there is
 only one section, which gives the declarations of these functions, together
 only one section, which gives the declarations of these functions, together
 with an explanation. 
 with an explanation. 
-
 \section{Functions and procedures.}
 \section{Functions and procedures.}
+\begin{procedure}{StrAlloc}
+\Declaration
+Procedure StrAlloc (Len : Longint);
+
+\Description
+PChar
+\Errors
 
 
-\procedure{StrAlloc}{(Len : Longint)}{PChar}
-{
 \var{StrAlloc} reserves memory on the heap for a string with length \var{Len},
 \var{StrAlloc} reserves memory on the heap for a string with length \var{Len},
 terminating \var{\#0} included, and returns a pointer to it.
 terminating \var{\#0} included, and returns a pointer to it.
-}
 
 
-For an example, see \seef{StrPCopy}.
+\SeeAlso
+StrPCopy.
+\end{procedure}
+\begin{function}{StrCat}
+\Declaration
+Function StrCat (Dest,Source : PChar) : PChar;
+
+\Description
 
 
-\function{StrCat}{(Dest,Source : PChar)}{PChar}
-{
 Attaches \var{Source} to \var{Dest} and returns \var{Dest}.
 Attaches \var{Source} to \var{Dest} and returns \var{Dest}.
-}
-{No length checking is performed.}
-{\seem{Concat}{}}
 
 
+\Errors
+No length checking is performed.
+\SeeAlso
+\seem{Concat}{}
+\end{function}
 \latex{\inputlisting{stringex/ex11.pp}}
 \latex{\inputlisting{stringex/ex11.pp}}
 \html{\input{stringex/ex11.tex}}
 \html{\input{stringex/ex11.tex}}
+\begin{function}{StrComp}
+\Declaration
+Function StrComp (S1,S2 : PChar) : Longint;
 
 
-\function{StrComp}{(S1,S2 : PChar)}{Longint}
-{
-Compares the null-terminated strings \var{S1} and \var{S2}.
+\Description
 
 
+Compares the null-terminated strings \var{S1} and \var{S2}.
 The result is 
 The result is 
 \begin{itemize}
 \begin{itemize}
 \item A negative \var{Longint} when \var{S1<S2}.
 \item A negative \var{Longint} when \var{S1<S2}.
 \item 0 when \var{S1=S2}.
 \item 0 when \var{S1=S2}.
 \item A positive \var{Longint} when \var{S1>S2}.
 \item A positive \var{Longint} when \var{S1>S2}.
 \end{itemize}
 \end{itemize}
-}
-{None.}{\seef{StrLComp}, \seef{StrIComp}, \seef{StrLIComp}}
 
 
+\Errors
+None.
+\SeeAlso
+\seef{StrLComp}, \seef{StrIComp}, \seef{StrLIComp}
+\end{function}
 For an example, see \seef{StrLComp}.
 For an example, see \seef{StrLComp}.
+\begin{function}{StrCopy}
+\Declaration
+Function StrCopy (Dest,Source : PChar) : PChar;
 
 
-\function {StrCopy}{(Dest,Source : PChar)}{PChar}
-{ 
+\Description
+ 
 Copy the null terminated string in \var{Source} to \var{Dest}, and
 Copy the null terminated string in \var{Source} to \var{Dest}, and
 returns a pointer to \var{Dest}. \var{Dest} needs enough room to contain
 returns a pointer to \var{Dest}. \var{Dest} needs enough room to contain
 \var{Source}, i.e. \var{StrLen(Source)+1} bytes.
 \var{Source}, i.e. \var{StrLen(Source)+1} bytes.
-}
-{No length checking is performed.}{ \seef{StrPCopy}, \seef{StrLCopy}, \seef{StrECopy}}
 
 
+\Errors
+No length checking is performed.
+\SeeAlso
+ \seef{StrPCopy}, \seef{StrLCopy}, \seef{StrECopy}
+\end{function}
 \latex{\inputlisting{stringex/ex4.pp}}
 \latex{\inputlisting{stringex/ex4.pp}}
 \html{\input{stringex/ex4.tex}}
 \html{\input{stringex/ex4.tex}}
+\begin{procedure}{StrDispose}
+\Declaration
+Procedure StrDispose (P : PChar);
+
+\Description
 
 
-\procedure{StrDispose}{(P : PChar)}
-{
 Removes the string in \var{P} from the heap and releases the memory.
 Removes the string in \var{P} from the heap and releases the memory.
-}
-{None.}{\seem{Dispose}{}, \seef{StrNew}}
 
 
+\Errors
+None.
+\SeeAlso
+\seem{Dispose}{}, \seef{StrNew}
+\end{procedure}
 \latex{\inputlisting{stringex/ex17.pp}}
 \latex{\inputlisting{stringex/ex17.pp}}
 \html{\input{stringex/ex17.tex}}
 \html{\input{stringex/ex17.tex}}
+\begin{function}{StrECopy}
+\Declaration
+Function StrECopy (Dest,Source : PChar) : PChar;
+
+\Description
 
 
-\function{StrECopy}{(Dest,Source : PChar)}{PChar}
-{
 Copies the Null-terminated string in \var{Source} to \var{Dest}, and
 Copies the Null-terminated string in \var{Source} to \var{Dest}, and
 returns a pointer to the end (i.e. the terminating Null-character) of the
 returns a pointer to the end (i.e. the terminating Null-character) of the
 copied string.
 copied string.
-}
-{No length checking is performed.}
-{\seef{StrLCopy}, \seef{StrCopy}}
 
 
+\Errors
+No length checking is performed.
+\SeeAlso
+\seef{StrLCopy}, \seef{StrCopy}
+\end{function}
 \latex{\inputlisting{stringex/ex6.pp}}
 \latex{\inputlisting{stringex/ex6.pp}}
 \html{\input{stringex/ex6.tex}}
 \html{\input{stringex/ex6.tex}}
+\begin{function}{StrEnd}
+\Declaration
+Function StrEnd (P : PChar) : PChar;
+
+\Description
 
 
-\function{StrEnd}{(P : PChar)}{PChar}
-{
 Returns a pointer to the end of \var{P}. (i.e. to the terminating
 Returns a pointer to the end of \var{P}. (i.e. to the terminating
 null-character.
 null-character.
-}
-{None.}{\seef{StrLen}}
 
 
+\Errors
+None.
+\SeeAlso
+\seef{StrLen}
+\end{function}
 \latex{\inputlisting{stringex/ex7.pp}}
 \latex{\inputlisting{stringex/ex7.pp}}
 \html{\input{stringex/ex7.tex}}
 \html{\input{stringex/ex7.tex}}
+\begin{function}{StrIComp}
+\Declaration
+Function StrIComp (S1,S2 : PChar) : Longint;
 
 
-\function{StrIComp}{(S1,S2 : PChar)}{Longint}
-{
-Compares the null-terminated strings \var{S1} and \var{S2}, ignoring case.
+\Description
 
 
+Compares the null-terminated strings \var{S1} and \var{S2}, ignoring case.
 The result is 
 The result is 
 \begin{itemize}
 \begin{itemize}
 \item A negative \var{Longint} when \var{S1<S2}.
 \item A negative \var{Longint} when \var{S1<S2}.
 \item 0 when \var{S1=S2}.
 \item 0 when \var{S1=S2}.
 \item A positive \var{Longint} when \var{S1>S2}.
 \item A positive \var{Longint} when \var{S1>S2}.
 \end{itemize}
 \end{itemize}
-}
-{None.}{\seef{StrLComp}, \seef{StrComp}, \seef{StrLIComp}}
 
 
+\Errors
+None.
+\SeeAlso
+\seef{StrLComp}, \seef{StrComp}, \seef{StrLIComp}
+\end{function}
 \latex{\inputlisting{stringex/ex8.pp}}
 \latex{\inputlisting{stringex/ex8.pp}}
 \html{\input{stringex/ex8.tex}}
 \html{\input{stringex/ex8.tex}}
+\begin{function}{StrLCat}
+\Declaration
+Function StrLCat (Dest,Source : PChar; MaxLen : Longint) : PChar;
+
+\Description
 
 
-\function{StrLCat}{(Dest,Source : PChar; MaxLen : Longint)}{PChar}
-{
 Adds \var{MaxLen} characters from \var{Source} to \var{Dest}, and adds a
 Adds \var{MaxLen} characters from \var{Source} to \var{Dest}, and adds a
 terminating null-character. Returns \var{Dest}.
 terminating null-character. Returns \var{Dest}.
-}
-{None.}{\seef{StrCat}}
 
 
+\Errors
+None.
+\SeeAlso
+\seef{StrCat}
+\end{function}
 \latex{\inputlisting{stringex/ex12.pp}}
 \latex{\inputlisting{stringex/ex12.pp}}
 \html{\input{stringex/ex12.tex}}
 \html{\input{stringex/ex12.tex}}
+\begin{function}{StrLComp}
+\Declaration
+Function StrLComp (S1,S2 : PChar; L : Longint) : Longint;
+
+\Description
 
 
-\function{StrLComp}{(S1,S2 : PChar; L : Longint)}{Longint}
-{
 Compares maximum \var{L} characters of the null-terminated strings 
 Compares maximum \var{L} characters of the null-terminated strings 
 \var{S1} and \var{S2}. 
 \var{S1} and \var{S2}. 
-
 The result is 
 The result is 
 \begin{itemize}
 \begin{itemize}
 \item A negative \var{Longint} when \var{S1<S2}.
 \item A negative \var{Longint} when \var{S1<S2}.
 \item 0 when \var{S1=S2}.
 \item 0 when \var{S1=S2}.
 \item A positive \var{Longint} when \var{S1>S2}.
 \item A positive \var{Longint} when \var{S1>S2}.
 \end{itemize}
 \end{itemize}
-}
-{None.}{\seef{StrComp}, \seef{StrIComp}, \seef{StrLIComp}}
 
 
+\Errors
+None.
+\SeeAlso
+\seef{StrComp}, \seef{StrIComp}, \seef{StrLIComp}
+\end{function}
 \latex{\inputlisting{stringex/ex8.pp}}
 \latex{\inputlisting{stringex/ex8.pp}}
 \html{\input{stringex/ex8.tex}}
 \html{\input{stringex/ex8.tex}}
+\begin{function}{StrLCopy}
+\Declaration
+Function StrLCopy (Dest,Source : PChar; MaxLen : Longint) : PChar;
+
+\Description
 
 
-\function{StrLCopy}{(Dest,Source : PChar; MaxLen : Longint)}{PChar}
-{
 Copies \var{MaxLen} characters from \var{Source} to \var{Dest}, and makes
 Copies \var{MaxLen} characters from \var{Source} to \var{Dest}, and makes
 \var{Dest} a null terminated string. 
 \var{Dest} a null terminated string. 
-}
-{No length checking is performed.}
-{\seef{StrCopy}, \seef{StrECopy}}
+
+\Errors
+No length checking is performed.
+\SeeAlso
+\seef{StrCopy}, \seef{StrECopy}
+\end{function}
  
  
 \latex{\inputlisting{stringex/ex5.pp}}
 \latex{\inputlisting{stringex/ex5.pp}}
 \html{\input{stringex/ex5.tex}}
 \html{\input{stringex/ex5.tex}}
+\begin{function}{StrLen}
+\Declaration
+Function StrLen (p : PChar) : Longint;
+
+\Description
 
 
-\function{StrLen}{(p : PChar)}{Longint}
-{
 Returns the length of the null-terminated string \var{P}.
 Returns the length of the null-terminated string \var{P}.
-}
-{None.}{\seem{Length}{}}
 
 
+\Errors
+None.
+\SeeAlso
+\seem{Length}{}
+\end{function}
 \latex{\inputlisting{stringex/ex1.pp}}
 \latex{\inputlisting{stringex/ex1.pp}}
 \html{\input{stringex/ex1.tex}}
 \html{\input{stringex/ex1.tex}}
+\begin{function}{StrLIComp}
+\Declaration
+Function StrLIComp (S1,S2 : PChar; L : Longint) : Longint;
+
+\Description
 
 
-\function{StrLIComp}{(S1,S2 : PChar; L : Longint)}{Longint}
-{
 Compares maximum \var{L} characters of the null-terminated strings \var{S1} 
 Compares maximum \var{L} characters of the null-terminated strings \var{S1} 
 and \var{S2}, ignoring case.
 and \var{S2}, ignoring case.
-
 The result is 
 The result is 
 \begin{itemize}
 \begin{itemize}
 \item A negative \var{Longint} when \var{S1<S2}.
 \item A negative \var{Longint} when \var{S1<S2}.
 \item 0 when \var{S1=S2}.
 \item 0 when \var{S1=S2}.
 \item A positive \var{Longint} when \var{S1>S2}.
 \item A positive \var{Longint} when \var{S1>S2}.
 \end{itemize}
 \end{itemize}
-}
-{None.}{\seef{StrLComp}, \seef{StrComp}, \seef{StrIComp}}
 
 
+\Errors
+None.
+\SeeAlso
+\seef{StrLComp}, \seef{StrComp}, \seef{StrIComp}
+\end{function}
 For an example, see \seef{StrIComp}
 For an example, see \seef{StrIComp}
+\begin{function}{StrLower}
+\Declaration
+Function StrLower (P : PChar) : PChar;
+
+\Description
 
 
-\function{StrLower}{(P : PChar)}{PChar}
-{
 Converts \var{P} to an all-lowercase string. Returns \var{P}.
 Converts \var{P} to an all-lowercase string. Returns \var{P}.
-}
-{None.}{\seem{Upcase}{}, \seef{StrUpper}}
 
 
+\Errors
+None.
+\SeeAlso
+\seem{Upcase}{}, \seef{StrUpper}
+\end{function}
 \latex{\inputlisting{stringex/ex14.pp}}
 \latex{\inputlisting{stringex/ex14.pp}}
 \html{\input{stringex/ex14.tex}}
 \html{\input{stringex/ex14.tex}}
+\begin{function}{StrMove}
+\Declaration
+Function StrMove (Dest,Source : PChar; MaxLen : Longint) : PChar;
+
+\Description
 
 
-\function{StrMove}{(Dest,Source : PChar; MaxLen : Longint)}{PChar}
-{
 Copies \var{MaxLen} characters from \var{Source} to \var{Dest}. No
 Copies \var{MaxLen} characters from \var{Source} to \var{Dest}. No
 terminating null-character is copied.
 terminating null-character is copied.
 Returns \var {Dest}.
 Returns \var {Dest}.
-}
-{None.}{\seef{StrLCopy}, \seef{StrCopy}}
 
 
+\Errors
+None.
+\SeeAlso
+\seef{StrLCopy}, \seef{StrCopy}
+\end{function}
 \latex{\inputlisting{stringex/ex10.pp}}
 \latex{\inputlisting{stringex/ex10.pp}}
 \html{\input{stringex/ex10.tex}}
 \html{\input{stringex/ex10.tex}}
+\begin{function}{StrNew}
+\Declaration
+Function StrNew (P : PChar) : PChar;
+
+\Description
 
 
-\function{StrNew}{(P : PChar)}{PChar}
-{
 Copies \var{P} to the Heap, and returns a pointer to the copy.
 Copies \var{P} to the Heap, and returns a pointer to the copy.
-}
-{Returns \var{Nil} if no memory was available for the copy.}
-{\seem{New}{}, \seef{StrCopy}, \seep{StrDispose}}
 
 
+\Errors
+Returns \var{Nil} if no memory was available for the copy.
+\SeeAlso
+\seem{New}{}, \seef{StrCopy}, \seep{StrDispose}
+\end{function}
 \latex{\inputlisting{stringex/ex16.pp}}
 \latex{\inputlisting{stringex/ex16.pp}}
 \html{\input{stringex/ex16.tex}}
 \html{\input{stringex/ex16.tex}}
+\begin{function}{StrPas}
+\Declaration
+Function StrPas (P : PChar) : String;
+
+\Description
 
 
-\function {StrPas}{(P : PChar)}{String}
-{
 Converts a null terminated string in \var{P} to a Pascal string, and returns
 Converts a null terminated string in \var{P} to a Pascal string, and returns
 this string. The string is truncated at 255 characters.
 this string. The string is truncated at 255 characters.
-}
-{None.}{ \seef{StrPCopy}}
 
 
+\Errors
+None.
+\SeeAlso
+ \seef{StrPCopy}
+\end{function}
 \latex{\inputlisting{stringex/ex3.pp}}
 \latex{\inputlisting{stringex/ex3.pp}}
 \html{\input{stringex/ex3.tex}}
 \html{\input{stringex/ex3.tex}}
+\begin{function}{StrPCopy}
+\Declaration
+Function StrPCopy (Dest : PChar; Const Source : String) : PChar;
+
+\Description
 
 
-\function{StrPCopy}{(Dest : PChar; Const Source : String)}{PChar}
-{
 Converts the Pascal string in \var{Source} to a Null-terminated 
 Converts the Pascal string in \var{Source} to a Null-terminated 
 string, and copies it to \var{Dest}. \var{Dest} needs enough room to contain
 string, and copies it to \var{Dest}. \var{Dest} needs enough room to contain
 the string \var{Source}, i.e. \var{Length(Source)+1} bytes.
 the string \var{Source}, i.e. \var{Length(Source)+1} bytes.
-}
-{No length checking is performed.}{ \seef{StrPas}}
 
 
+\Errors
+No length checking is performed.
+\SeeAlso
+ \seef{StrPas}
+\end{function}
 \latex{\inputlisting{stringex/ex2.pp}}
 \latex{\inputlisting{stringex/ex2.pp}}
 \html{\input{stringex/ex2.tex}}
 \html{\input{stringex/ex2.tex}}
+\begin{function}{StrPos}
+\Declaration
+Function StrPos (S1,S2 : PChar) : PChar;
+
+\Description
 
 
-\function{StrPos}{(S1,S2 : PChar)}{PChar}
-{
 Returns a pointer to the first occurrence of \var{S2} in \var{S1}.
 Returns a pointer to the first occurrence of \var{S2} in \var{S1}.
 If \var{S2} does not occur in \var{S1}, returns \var{Nil}.
 If \var{S2} does not occur in \var{S1}, returns \var{Nil}.
-}
-{None.}{\seem{Pos}{}, \seef{StrScan}, \seef{StrRScan}}
 
 
+\Errors
+None.
+\SeeAlso
+\seem{Pos}{}, \seef{StrScan}, \seef{StrRScan}
+\end{function}
 \latex{\inputlisting{stringex/ex15.pp}}
 \latex{\inputlisting{stringex/ex15.pp}}
 \html{\input{stringex/ex15.tex}}
 \html{\input{stringex/ex15.tex}}
+\begin{function}{StrRScan}
+\Declaration
+Function StrRScan (P : PChar; C : Char) : PChar;
+
+\Description
 
 
-\function{StrRScan}{(P : PChar; C : Char)}{PChar}
-{
 Returns a pointer to the last occurrence of the character \var{C} in the
 Returns a pointer to the last occurrence of the character \var{C} in the
 null-terminated string \var{P}. If \var{C} does not occur, returns
 null-terminated string \var{P}. If \var{C} does not occur, returns
 \var{Nil}.
 \var{Nil}.
-}
-{None.}{\seem{Pos}{}, \seef{StrScan}, \seef{StrPos}}
 
 
+\Errors
+None.
+\SeeAlso
+\seem{Pos}{}, \seef{StrScan}, \seef{StrPos}
+\end{function}
 For an example, see \seef{StrScan}.
 For an example, see \seef{StrScan}.
+\begin{function}{StrScan}
+\Declaration
+Function StrScan (P : PChar; C : Char) : PChar;
+
+\Description
 
 
-\function{StrScan}{(P : PChar; C : Char)}{PChar}
-{
 Returns a pointer to the first occurrence of the character \var{C} in the
 Returns a pointer to the first occurrence of the character \var{C} in the
 null-terminated string \var{P}. If \var{C} does not occur, returns
 null-terminated string \var{P}. If \var{C} does not occur, returns
 \var{Nil}.
 \var{Nil}.
-}
-{None.}{\seem{Pos}{}, \seef{StrRScan}, \seef{StrPos}}
 
 
+\Errors
+None.
+\SeeAlso
+\seem{Pos}{}, \seef{StrRScan}, \seef{StrPos}
+\end{function}
 \latex{\inputlisting{stringex/ex13.pp}}
 \latex{\inputlisting{stringex/ex13.pp}}
 \html{\input{stringex/ex13.tex}}
 \html{\input{stringex/ex13.tex}}
+\begin{function}{StrUpper}
+\Declaration
+Function StrUpper (P : PChar) : PChar;
+
+\Description
 
 
-\function{StrUpper}{(P : PChar)}{PChar}
-{
 Converts \var{P} to an all-uppercase string. Returns \var{P}.
 Converts \var{P} to an all-uppercase string. Returns \var{P}.
-}
-{None.}{\seem{Upcase}{}, \seef{StrLower}}
 
 
+\Errors
+None.
+\SeeAlso
+\seem{Upcase}{}, \seef{StrLower}
+\end{function}
 For an example, see \seef{StrLower}
 For an example, see \seef{StrLower}

Some files were not shown because too many files changed in this diff