summaryrefslogtreecommitdiff
path: root/share/tmac
diff options
context:
space:
mode:
authorTheo de Raadt <deraadt@cvs.openbsd.org>1995-10-18 08:53:40 +0000
committerTheo de Raadt <deraadt@cvs.openbsd.org>1995-10-18 08:53:40 +0000
commitd6583bb2a13f329cf0332ef2570eb8bb8fc0e39c (patch)
treeece253b876159b39c620e62b6c9b1174642e070e /share/tmac
initial import of NetBSD tree
Diffstat (limited to 'share/tmac')
-rw-r--r--share/tmac/Makefile27
-rw-r--r--share/tmac/README177
-rw-r--r--share/tmac/doc3415
-rw-r--r--share/tmac/doc-common466
-rw-r--r--share/tmac/doc-ditroff269
-rw-r--r--share/tmac/doc-nroff225
-rw-r--r--share/tmac/doc-syms316
-rw-r--r--share/tmac/tmac.andoc45
8 files changed, 4940 insertions, 0 deletions
diff --git a/share/tmac/Makefile b/share/tmac/Makefile
new file mode 100644
index 00000000000..25e3e3f8866
--- /dev/null
+++ b/share/tmac/Makefile
@@ -0,0 +1,27 @@
+# from: @(#)Makefile 6.13 (Berkeley) 3/20/91
+# $Id: Makefile,v 1.1 1995/10/18 08:44:49 deraadt Exp $
+
+BINDIR= /usr/share
+FILES= tmac.andoc
+MSRCS= doc doc-ditroff doc-common doc-nroff doc-syms
+LINKS= ${BINDIR}/tmac/tmac.andoc ${BINDIR}/tmac/tmac.an
+NOOBJ= noobj
+
+STRIP_SED = ../me/strip.sed
+
+# old macros not currently installed...
+OFILES= tmac.an.v6compat tmac.an6n tmac.an6t tmac.a tmac.cp tmac.doc.old
+
+all clean cleandir depend lint tags:
+
+realinstall:
+ for i in ${MSRCS}; do \
+ rm -f ${DESTDIR}${BINDIR}/tmac/tmac.$$i; \
+ sed -f ${STRIP_SED} < $$i > ${DESTDIR}${BINDIR}/tmac/tmac.$$i; \
+ chown ${BINOWN}:${BINGRP} ${DESTDIR}${BINDIR}/tmac/tmac.$$i; \
+ chmod 444 ${DESTDIR}${BINDIR}/tmac/tmac.$$i; \
+ done
+ install -c -o ${BINOWN} -g ${BINGRP} -m 444 ${FILES} \
+ ${DESTDIR}${BINDIR}/tmac
+
+.include <bsd.prog.mk>
diff --git a/share/tmac/README b/share/tmac/README
new file mode 100644
index 00000000000..8c16b9ec52e
--- /dev/null
+++ b/share/tmac/README
@@ -0,0 +1,177 @@
+.\" Copyright (c) 1990 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)README 5.2 (Berkeley) 4/20/91
+.\"
+
+-mdoc stuff
+ doc-* files are unstripped tmac.doc-* files
+
+Site specific string and register names (for doc-{common,nroff,ditroff})
+
+.\" tmac.doc-nroff
+.\"
+.\" Default fonts
+.\" FONT DITROFF style TROFF Style NROFF Style
+.\" Default Times Roman Times Roman Printer Dependent
+.\" Default bold Times Bold Times Bold Printer Dependent
+.\" Default italic Times Italic Times Italic Underline
+.\" Const width lit Courier Times ? Printer Dependent
+.\" Const width bold Courier Bold ? Printer Dependent
+.\" Const width ital Courier Oblique ? Printer Dependent
+.\"
+.\" Default point size 10 (vs 12), Section Header point size 12 (vs 14)
+.\"
+.\" STRING CONSTANTS
+.\" NS aD string (site) Address Style
+.\" NS aR string (site) Argument Reference Style
+.\" NS cM string (site) Interactive Comand Modifier (flag)
+.\" NS eM string (site) Emphasis (in the English sense - usually italics)
+.\" NS eR string (site) Errno Style
+.\" NS eV string (site) Environment Variable Style
+.\" NS fA string (site) Function Argument Style
+.\" NS fL string (site) Command Line Flag Style
+.\" NS fN string (site) Function Name Style
+.\" NS Hs string (site) Header String Style
+.\" NS iC string (site) Interactive Command Style
+.\" NS lI string (site) Literal Style
+.\" NS lp string (site) Left Function Parenthesis Style
+.\" NS rp string (site) Right Function Parenthesis Style
+.\" NS lP string (site) Left Parenthesis Style
+.\" NS rP string (site) Right Parenthesis Style
+.\" NS lB string (site) Bracket Open Style
+.\" NS rB string (site) Bracket Close Style
+.\" NS mL string (site) Diagnostic Message List Style
+.\" NS nM string (site) Name (subject of manpage) Style
+.\" NS nO string (site) normal font (default)
+.\" NS lO string (site) Options Open Bracket Style
+.\" NS rO string (site) Options Close Bracket Style
+.\" NS pA string (site) Pathname Style
+.\" NS Pu string (site) Accepted punctuation string for -mdoc syntax
+.\" NS rA string (site) Reference Author Style
+.\" NS rT string (site) Reference Title Style
+.\" NS sH string (site) Section Header Style
+.\" NS sY string (site) Symbolic Emphasis (boldface)
+.\" NS sX string (site) Section Header Cross References
+.\" NS tN string (site) Trade Name Style
+.\" NS vA string (site) Generic Variable Style
+.\" NS Vs string (site) Volume Title Style
+.\" NS xR string (site) Cross Reference STyle (man page only)
+.\" MISCELLANEOUS
+.\" NS lS string (site) list-label-sep (list-types hang, number, bullet, diag)
+.\" NS iV string soft space (can be split on a newline or padded in adjust mode)
+.\" NS sV string manipulable space
+.\" NS hV string hard space (cannot be split on newline or padded)
+.\" NS tV string tab space (for column function)
+.\" NS sI register (site) subheader indent
+.\" NS tI register (site) text indent
+.\" NS cR register nroff crt flag (1 for crt/online, 0 for printer)
+.\" NS Pp register (site) paragraph vertical spacing
+.\" NS dI register flag (Bd)
+.\" INDENT WIDTHS (used for tag widths, and argument tests)
+.\" NS Ad register (site) Width Needed for Address Tag (indented amount)
+.\" NS Ac register (site) Angle Quote Close Value
+.\" NS Ao register (site) Angle Quote Open Width
+.\" NS Aq register (site) Angle Quote Width
+.\" NS Bc register (site) Bracket Quote Close Value
+.\" NS Bl register (site) Bullet List Macro Value
+.\" NS Bo register (site) Bracket Quote Open Width
+.\" NS Bq register (site) Bracket Quote Width
+.\" NS Ar register (site) Width Needed for Argument
+.\" NS Cm register (site) Width neeeded for Interactive Command Modifier
+.\" NS Co register (site) Width Needed for Column offset
+.\" NS Cx register (site) Width Needed for Complex Expressions
+.\" NS Ds register (site) Width Needed for Display (right and left margins)
+.\" NS Dc register (site) Double Quote Close Value
+.\" NS Do register (site) Double Quote Open Width
+.\" NS Dq register (site) Double Quote Width
+.\" NS Dv register (site) Defined (#define) variable (markup)
+.\" NS tI register (site) tI is dependent on Ds and used by .Dp
+.\" NS Ec register (site) Enclose Quote Close Value
+.\" NS El register (site) Enumerated List Macro Value
+.\" NS Eo register (site) Enclose Quote Open Width
+.\" NS Em register (site) Width Needed for Display
+.\" NS Eq register (site) Enclose Quote Width
+.\" NS Er register (site) Width Needed for Errno Types
+.\" NS Ev register (site) Width Needed for Environment Variables
+.\" NS Ex register (site) Width Needed for Example Indent
+.\" NS Fa register (site) Width Needed for Function Argument
+.\" NS Fl register (site) Width Needed for Flag
+.\" NS Fc register (site) Funtion Quote Close Value
+.\" NS Fn register (site) Width Needed for Function
+.\" NS Fo register (site) Funtion Quote Open Width
+.\" NS Hl register (site) Hypehnated List Macro Value (sub bullet list)
+.\" NS I1, I2, I3 register (site) Indent values
+.\" NS Ic register (site) Width neeeded for Interactive Command Name
+.\" NS Li register (site) Width Needed for Literal Constant
+.\" NS Ms register (site) Width Needed for Math Symbol ? not sure if needed
+.\" NS Nm register (site) Width Needed for Name
+.\" NS No register (site) Width Needed for Name
+.\" NS Ns register (site) No Space Macro Value
+.\" NS Oo register (site) Width Needed for Option Open
+.\" NS Oc register (site) Width Needed for Option Close
+.\" NS Op register (site) Width Needed for Option (one line)
+.\" NS Pa register (site) Width Needed for Pathname
+.\" NS Pf register (site) Prefix Macro Value
+.\" NS Pq register (site) Parenthesis Quote Width
+.\" NS Ql register (site) Width Needed for Quoted Literal
+.\" NS Sc register (site) Single Quote Close Value
+.\" NS So register (site) Single Quote Open Width
+.\" NS Sq register (site) Single Quote Width
+.\" NS Sy register (site) Width Needed for Symbols, Modes or Masks
+.\" NS Sx register (site) Width Needed for Section Header Cross References
+.\" NS Ra register (site) Reference Author
+.\" NS Rj register (site) Reference Journal Name
+.\" NS Rn register (site) Reference Issue Number
+.\" NS Ro register (site) Reference Optional Information
+.\" NS Rr register (site) Reference Technical Report Name
+.\" NS Rt register (site) Reference Book or Article title Title
+.\" NS Rv register (site) Reference Volume
+.\" NS Ta register (site) Tab macro register
+.\" NS Tn register (site) Trade Name Macro Value
+.\" NS Tv register (site) Tab Macro Value
+.\" NS Tx register (site) Width needed for default or unknown text width
+.\" NS Va register (site) Width Needed for Generic Variable
+.\" NS Xc register (site) Extended Argument List Close Value
+.\" NS Xo register (site) Extended Argument List Open Width
+.\" NS Xr register (site) Width Needed for Cross Reference.
+.\" .nr %A 1
+.\" .nr %J 1
+.\" .nr %N 1
+.\" .nr %O 1
+.\" .nr %R 1
+.\" .nr %T 1
+.\" .nr %V 1
+.\" PAGE LAYOUT
+.\" NS pL macro - page layout
+.\" NS Hm register header margin
+.\" NS Fm register footer margin
+.\" NS vV register vertical distance (from Section headers/Lists/Subsections)
diff --git a/share/tmac/doc b/share/tmac/doc
new file mode 100644
index 00000000000..a1b2114371f
--- /dev/null
+++ b/share/tmac/doc
@@ -0,0 +1,3415 @@
+.\" Copyright (c) 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)doc 5.8 (Berkeley) 8/5/91
+.\"
+.\" .mdoc-parse - attempt to parse troff request arguments
+.\" %beginstrip%
+.if \n(.g \{\
+.cp 0
+.ftr C CR
+.\}
+.if t \{\
+. so /usr/share/tmac/tmac.doc-ditroff
+.\}
+.if n \{\
+. so /usr/share/tmac/tmac.doc-nroff
+.\}
+.so /usr/share/tmac/tmac.doc-common
+.so /usr/share/tmac/tmac.doc-syms
+.\" NS Db macro - start/stop DEBUG MODE
+.\" NS Db register DEBUG MODE
+.\" NS iN register DEBUG MODE (inline if 1, to stderr if 0 (default))
+.nr Db 0
+.de Db
+.ie \\n(.$==0 \{\
+. ie \\n(Db==0 \{\
+.tm DEBUGGING ON
+. nr Db 1
+. \}
+. el \{\
+.tm DEBUGGING OFF
+. nr Db 0
+. \}
+.\}
+.el \{\
+. if "\\$1"on" \{\
+.tm DEBUGGING ON
+. nr Db 1
+. \}
+. if "\\$1"off" \{\
+.tm DEBUGGING OFF
+. nr Db 0
+. \}
+.\}
+..
+.\" NS aV macro - parse argument vector (recursive) (.aV arg ... )
+.\" NS fV macro - parse argument vector (recursive) (.fV)
+.\" NS aC register argument counter (aV/fV)
+.\" NS fV register argument counter (must set to \\n(.$ prior to reuqest) (fV)
+.\" NS A[0-9] argument vector (aV/fV)
+.\" NS C[0-9] reg. arg type(1=macro, 2=arg, 3=punct-suf, 4=punct-pre) (aV/fV)
+.\" NS S[0-9] space vector (sV)
+.\" NS aP register argument pointer (aV)
+.\" NS yU local string used for debugging
+.\" NS iI local register (indent for inline debug mode)
+.\" NS mN name of calling request (set in each user requestable macro)
+.de aV
+.nr aC \\n(aC+1
+.ie "\\$1"|" \{\
+. if "\\*(mN"Op" .ds A\\n(aC \fR\\$1\fP
+. if "\\*(mN"Ar" .ds A\\n(aC \fR\\$1\fP
+. if "\\*(mN"Fl" .ds A\\n(aC \fR\\$1\fP
+. if "\\*(mN"Cm" .ds A\\n(aC \fR\\$1\fP
+. if "\\*(mN"It" .ds A\\n(aC \fR\\$1\fP
+.\}
+.el .ds A\\n(aC \\$1
+.aU \\n(aC
+.nr C\\n(aC \\n(aT
+.s\\n(aT
+.if \\n(Db \{\
+. if \\n(aT==1 .ds yU Executable
+. if \\n(aT==2 .ds yU String
+. if \\n(aT==3 .ds yU Closing Punctuation or suffix
+. if \\n(aT==4 .ds yU Opening Punctuation or prefix
+. if \\n(iN==1 \{\
+. br
+. nr iI \\n(.iu
+. in -\\n(iIu
+. if \\n(aC==1 \{\
+\&\fBDEBUG(argv) MACRO:\fP `.\\*(mN' \fBLine #:\fP \\n(.c
+. \}
+\&\t\fBArgc:\fP \\n(aC \fBArgv:\fP `\\*(A\\n(aC' \fBLength:\fP \\n(sW
+\&\t\fBSpace:\fP `\\*(S\\n(aC' \fBClass:\fP \\*(yU
+. \}
+. if \\n(iN==0 \{\
+. if \\n(aC==1 \{\
+. tm DEBUG(argv) MACRO: `.\\*(mN' Line #: \\n(.c
+. \}
+. tm \tArgc: \\n(aC Argv: `\\*(A\\n(aC' Length: \\n(sW
+. tm \tSpace: `\\*(S\\n(aC' Class: \\*(yU
+. \}
+.\}
+.ie \\n(.$==1 \{\
+. nr aP 0
+. ie \\n(dZ==1 \{\
+. if \\n(oM>1 .as b1 \\*(S0
+. \}
+. el \{\
+. if \\n(oM>0 \{\
+. if \\n(fC==0 .as b1 \\*(S0
+. \}
+. \}
+. ds S0 \\*(S\\n(aC
+. if \\n(Db \{\
+. if \\n(iN==1 \{\
+\&MACRO REQUEST: \t.\\*(mN \\*(A1 \\*(A2 \\*(A3 \\*(A4 \\*(A5 \\*(A6 \\*(A7 \\*(A8 \\*(A9
+. br
+. in \\n(iIu
+. \}
+. if \\n(iN==0 \{\
+.tm \tMACRO REQUEST: .\\*(mN \\*(A1 \\*(A2 \\*(A3 \\*(A4 \\*(A5 \\*(A6 \\*(A7 \\*(A8 \\*(A9
+. \}
+. \}
+.\}
+.el .aV \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+..
+.de fV
+.nr aC \\n(aC+1
+.if "\\*(A\\n(aC"|" \{\
+. if "\\*(mN"Op" .ds A\\n(aC \fR\\*(A\\n(aC\fP
+. if "\\*(mN"Ar" .ds A\\n(aC \fR\\*(A\\n(aC\fP
+. if "\\*(mN"Fl" .ds A\\n(aC \fR\&\\*(A\\n(aC\fP
+. if "\\*(mN"Cm" .ds A\\n(aC \fR\\*(A\\n(aC\fP
+. if "\\*(mN"It" .ds A\\n(aC \fR\\*(A\\n(aC\fP
+.\}
+.aU \\n(aC
+.nr C\\n(aC \\n(aT
+.s\\n(aT
+.if \\n(Db \{\
+. if \\n(aT==1 .ds yU Executable
+. if \\n(aT==2 .ds yU String
+. if \\n(aT==3 .ds yU Closing Punctuation or suffix
+. if \\n(aT==4 .ds yU Opening Punctuation or prefix
+. if \\n(iN==1 \{\
+. br
+. nr iI \\n(.iu
+. in -\\n(iIu
+. if \\n(aC==1 \{\
+\&\fBDEBUG(fargv) MACRO:\fP `.\\*(mN' \fBLine #:\fP \\n(.c
+. \}
+\&\t\fBArgc:\fP \\n(aC \fBArgv:\fP `\\*(A\\n(aC' \fBLength:\fP \\n(sW
+\&\t\fBSpace:\fP `\\*(S\\n(aC' \fBClass:\fP \\*(yU
+. \}
+. if \\n(iN==0 \{\
+. if \\n(aC==1 \{\
+. tm DEBUG(fargv) MACRO: `.\\*(mN' Line #: \\n(.c
+. \}
+. tm \tArgc: \\n(aC Argv: `\\*(A\\n(aC' Length: \\n(sW
+. tm \tSpace: `\\*(S\\n(aC' Class: \\*(yU
+. \}
+.\}
+.ie \\n(fV==1 \{\
+. nr aP 0
+. ie \\n(dZ==1 \{\
+. if \\n(oM>1 .as b1 \\*(S0
+. \}
+. el \{\
+. if \\n(oM>0 \{\
+. if \\n(fC==0 .as b1 \\*(S0
+. \}
+. \}
+. ds S0 \\*(S\\n(aC
+. nr fV 0
+. if \\n(Db \{\
+. ie \\n(iN \{\
+\&\tMACRO REQUEST: .\\*(mN \\*(A1 \\*(A2 \\*(A3 \\*(A4 \\*(A5 \\*(A6 \\*(A7 \\*(A8 \\*(A9
+. br
+. in \\n(iIu
+. \}
+. el \{\
+.tm \tMACRO REQUEST: .\\*(mN \\*(A1 \\*(A2 \\*(A3 \\*(A4 \\*(A5 \\*(A6 \\*(A7 \\*(A8 \\*(A9
+. \}
+. \}
+.\}
+.el \{\
+. nr fV \\n(fV-1
+. fV
+.\}
+..
+.\" NS aX macro - stuff saved strings into `b1' (used by -diag list)
+.de aX
+.nr aP \\n(aP+1
+.as b1 \&\\*(A\\n(aP
+.ie \\n(fV==1 \{\
+. nr aP 0
+. nr fV 0
+.\}
+.el \{\
+. as b1 \&\\*(sV
+. nr fV \\n(fV-1
+. aX
+.\}
+..
+.\" NS aI macro - append arg to arg vector: .aI [arg] [type] (used by .En only)
+.de aI
+.ie \\n(aC<9 \{\
+. nr aC \\n(aC+1
+. ds A\\n(aC \\$1
+. nr C\\n(aC \\$2
+. s\\$2
+. ds xV S\\n(aC
+.\}
+.el \{\
+. tm Usage: Too many arguments (maximum of 8 accepted) (#\\n(.c)
+. tm \\*(A1 \\*(A2 \\*(A3 \\*(A4 \\*(A5 \\*(A6 \\*(A7 \\*(A8 \\*(A9
+.\}
+..
+.\"
+.\" NS aZ macro - print buffer (pB) and clean up arg vectors (aY)
+.de aZ
+.pB
+.aY
+..
+.\" NS aY macro - clean up arg vector
+.de aY
+.rm C0 C1 C2 C3 C4 C5 C6 C7 C8 C9
+.rm A0 A1 A2 A3 A4 A5 A6 A7 A8 A9
+.rm S1 S2 S3 S4 S5 S6 S7 S8 S9
+.nr aC 0
+.nr aP 0
+..
+.\" NS pB macro - test for end of vector (eol) (print b1 buffer or divert)
+.de pB
+.ie \\n(dZ==1 \{\
+. if \\n(oM==1 \{\&\\*(b1
+. rm S0
+. ds b1
+. \}
+. if \\n(oM==0 \{\
+. x2
+. \}
+.\}
+.el \{\
+. ie \\n(oM==0 \{\&\\*(b1
+. rm S0
+. ds b1
+. \}
+. el \{\
+. if ((\\n(sM==1)&(\\n(tP==0)) \{\
+. x1
+. \}
+. \}
+.\}
+.hy
+..
+.\" NS x1 macro - save buffer and divert if tP flag set
+.\" NS eB diversion string
+.\" NS b2 string save of buffer
+.\" NS lK register count of lines read from input file
+.de x1
+.nr dZ \\n(dZ+1
+.ds b2 \\*(b1
+.ds b1
+.nr lK \\n(.c
+.ev 2
+.fi
+.di eB
+..
+.\"
+.\" NS x2 macro - end diversion and print
+.\" NS b0 string local temporary
+.de x2
+.br
+.di
+.ev
+.ie (\\n(.c-\\n(lK>1) \{\
+. ds b0 \&\\*(eB\\
+. ds b1 \\*(b2\\*(b0\\*(b1
+.\}
+.el .ds b1 \\*(b2\\*(b1
+\&\\*(b1
+.rm eB b2 b0 b1
+.nr dZ \\n(dZ-1
+..
+.\" NS Fl macro - flags (appends - and prints flags)
+.\" NS cF register save current font
+.\" NS cZ register save current font size
+.de Fl
+.as b1 \&\\*(fL
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 \{\
+. as b1 \&\|\-\|\fP\s0
+. pB
+. \}
+. el \{\
+. ds mN Fl
+. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+. \}
+.\}
+.if \\n(aC>0 \{\
+. ie (\\n(aC-\\n(aP)==0 \{\
+. as b1 \&\|\-\fP\s0
+. aZ
+. \}
+. el \{\
+. nr aP \\n(aP+1
+. ie \\n(C\\n(aP==1 \{\
+. as b1 \&\|\-\fP\s0
+. \\*(A\\n(aP
+. \}
+. el \{\
+. nr cF \\n(.f
+. nr cZ \\n(.s
+. if \\n(C\\n(aP==3 \{\
+. as b1 \&\|\-\|
+. \}
+. fR
+. \}
+. \}
+.\}
+..
+.\"
+.\" NS fR macro - Fl flag recursion routine (special handling)
+.\" NS jM local register
+.\" NS jN local register
+.\"
+.de fR
+.hy 0
+.nr jM \\n(C\\n(aP
+.ie \\n(jM==1 \{\
+. as b1 \&\fP\s0
+. \\*(A\\n(aP
+.\}
+.el \{\
+. nr jN \\n(aP
+. ie \\n(jM==2 \{\
+. ie !"\\*(A\\n(aP"\\*(Ba" \{\
+. ie !"\\*(A\\n(aP"\fR|\fP" \{\
+. ie "\\*(A\\n(aP"-" .as b1 \&\|\-\^\-\|
+. el .as b1 \&\|\-\\*(A\\n(aP
+. \}
+. el .as b1 \&\\*(A\\n(aP
+. \}
+. el .as b1 \&\\*(A\\n(aP
+. \}
+. el .as b1 \&\f\\n(cF\s\\n(cZ\\*(A\\n(aP\fP\s0
+. ie \\n(aC==\\n(aP \{\
+. if \\n(jM==4 .as b1 \&\|\-
+. as b1 \&\fP\s0
+. aZ
+. \}
+. el \{\
+. nr aP \\n(aP+1
+. ie ((\\n(C\\n(aP==3)&(\\n(C\\n(jN==4)) .as b1 \&\|\-
+. el .as b1 \&\\*(S\\n(jN
+. fR \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+. \}
+.\}
+.rr jM jN
+..
+.\"
+.\" NS nR macro - general name recursion routine
+.\" NS jM local register
+.\" NS jN local register
+.de nR
+.hy 0
+.nr jM \\n(C\\n(aP
+.ie \\n(jM==1 \{\
+. as b1 \&\f\\n(cF\s\\n(cZ
+. \\*(A\\n(aP
+.\}
+.el \{\
+. nr jN \\n(aP
+. ie \\n(jM==2 .as b1 \&\\*(A\\n(aP
+. el .as b1 \&\f\\n(cF\s\\n(cZ\\*(A\\n(aP\fP\s0
+. ie \\n(aC==\\n(aP \{\
+. as b1 \&\f\\n(cF\s\\n(cZ
+. aZ
+. \}
+. el \{\
+. nr aP \\n(aP+1
+. as b1 \&\\*(S\\n(jN
+. nR
+. \}
+.\}
+.rr jM jN
+..
+.\" NS Ar macro - command line `argument' macro
+.\"
+.de Ar
+.as b1 \\*(aR
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 \{\
+. as b1 file\ ...\fP\s0
+. pB
+. \}
+. el \{\
+. ds mN Ar
+. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+. \}
+.\}
+.if \\n(aC>0 \{\
+. ie (\\n(aC-\\n(aP)==0 \{\
+. as b1 \&file\ ...\fP\s0
+. aZ
+. \}
+. el \{\
+. nr aP \\n(aP+1
+. ie \\n(C\\n(aP==1 \{\
+. as b1 \&file\ ...\fP\s0
+. \\*(A\\n(aP
+. \}
+. el \{\
+. nr cF \\n(.f
+. nr cZ \\n(.s
+. if \\n(C\\n(aP==3 \{\
+. as b1 \&file\ ...
+. \}
+. nR
+. \}
+. \}
+.\}
+..
+.\" NS Ad macro - Addresses
+.de Ad
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 .tm Usage: .Ad address ... \\*(Pu (#\\n(.c)
+. el \{\
+. ds mN Ad
+. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+. \}
+.\}
+.if \\n(aC>\\n(aP \{\
+. as b1 \\*(aD
+. nr aP \\n(aP+1
+. nr cF \\n(.f
+. nr cZ \\n(.s
+. nR
+.\}
+..
+.\" NS Cd macro - Config declaration (for section 4 SYNOPSIS) (not callable)
+.\" needs work - not very translatable
+.de Cd
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 .tm Usage: .Cd Configuration file declaration (#\\n(.c)
+. el \{\
+. ds mN Cd
+. ds A1 \\$1
+. ds A2 \\$2
+. ds A3 \\$3
+. ds A4 \\$4
+. ds A5 \\$5
+. ds A6 \\$6
+. ds A7 \\$7
+. ds A8 \\$8
+. ds A9 \\$9
+. nr fV \\n(.$
+. fV
+. \}
+.\}
+.br
+.if \\n(aC>\\n(aP \{\
+. as b1 \\*(nM
+. nr aP \\n(aP+1
+. nr cF \\n(.f
+. nr cZ \\n(.s
+. ie \\n(nS \{\
+. if "\\*(mN"Cd" \{\
+. rs
+. ie \\n(nS>1 .br
+. el \{\
+. if \\n(iS==0 .nr iS \\n(Dsu
+. \}
+. in +\\n(iSu
+. ti -\\n(iSu
+. nr nS \\n(nS+1
+. \}
+. nR
+. in -\\n(iSu
+. \}
+. el .nR
+.\}
+..
+.\" NS Cm macro - Interactive command modifier (flag)
+.de Cm
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 .tm Usage: .Cm Interactive command modifier ... \\*(Pu (#\\n(.c)
+. el \{\
+. ds mN Cm
+. ds A1 \\$1
+. ds A2 \\$2
+. ds A3 \\$3
+. ds A4 \\$4
+. ds A5 \\$5
+. ds A6 \\$6
+. ds A7 \\$7
+. ds A8 \\$8
+. ds A9 \\$9
+. nr fV \\n(.$
+. fV
+. \}
+.\}
+.if \\n(aC>\\n(aP \{\
+. as b1 \\*(cM
+. nr aP \\n(aP+1
+. nr cF \\n(.f
+. nr cZ \\n(.s
+. nR
+.\}
+..
+.\" NS Dv macro - define variable
+.de Dv
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 .tm Usage: .Dv define_variable ... \\*(Pu (#\\n(.c)
+. el \{\
+. ds mN Dv
+. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+. \}
+.\}
+.if \\n(aC>\\n(aP \{\
+. as b1 \\*(eR
+. nr aP \\n(aP+1
+. nr cF \\n(.f
+. nr cZ \\n(.s
+. nR
+.\}
+..
+.\" NS Em macro - Emphasis
+.de Em
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 \{\
+. tm Usage: .Em text ... \\*(Pu (#\\n(.c)
+. \}
+. el \{\
+. ds mN Em
+. ds A1 \\$1
+. ds A2 \\$2
+. ds A3 \\$3
+. ds A4 \\$4
+. ds A5 \\$5
+. ds A6 \\$6
+. ds A7 \\$7
+. ds A8 \\$8
+. ds A9 \\$9
+. nr fV \\n(.$
+. fV
+. \}
+.\}
+.if \\n(aC>\\n(aP \{\
+. as b1 \\*(eM
+. nr aP \\n(aP+1
+. nr cF \\n(.f
+. nr cZ \\n(.s
+. nR
+.\}
+..
+.\" NS Er macro - Errnotype
+.de Er
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 .tm Usage: .Er ERRNOTYPE ... \\*(Pu (#\\n(.c)
+. el \{\
+. ds mN Er
+. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+. \}
+.\}
+.if \\n(aC>\\n(aP \{\
+. as b1 \\*(eR
+. nr aP \\n(aP+1
+. nr cF \\n(.f
+. nr cZ \\n(.s
+. nR
+.\}
+..
+.\" NS Ev macro - Environment variable
+.de Ev
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 .tm Usage: .Ev ENVIRONMENT_VARIABLE ... \\*(Pu (#\\n(.c)
+. el \{\
+. ds mN Ev
+. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+. \}
+.\}
+.if \\n(aC>\\n(aP \{\
+. as b1 \\*(eV
+. nr aP \\n(aP+1
+. nr cF \\n(.f
+. nr cZ \\n(.s
+. nR
+.\}
+..
+.\" NS Fd macro - function declaration - not callable (& no err check)
+.\" NS fD register subroutine test (in synopsis only)
+.\" NS fY register subroutine count (in synopsis only) (fortran only)
+.\" NS fZ register also subroutine count (in synopsis only)
+.de Fd
+.ds mN Fd
+.if \\n(nS>0 \{\
+.\" if a variable type was the last thing given, want vertical space
+. if \\n(fX>0 \{\
+. Pp
+. nr fX 0
+. \}
+.\" if a subroutine was the last thing given, want vertical space
+. if \\n(fZ>0 \{\
+. ie \\n(fD==0 \{\
+. Pp
+. rs
+. \}
+. el .br
+. \}
+. nr fD \\n(fD+1
+.\}
+.nr cF \\n(.f
+.nr cZ \\n(.s
+\&\\*(fD\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+.br
+.ft \\n(cF
+.fs \\n(cZ
+..
+.\" NS Fr macro - function return value - not callable (at the moment)
+.de Fr
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 .tm Usage: .Fr Function_return_value... \\*(Pu (#\\n(.c)
+. el \{\
+. ds mN Fr
+. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+. \}
+.\}
+.if \\n(aC>\\n(aP \{\
+. as b1 \\*(aR
+. nr aP \\n(aP+1
+. nr cF \\n(.f
+. nr cZ \\n(.s
+. nR
+.\}
+..
+.\" NS Ic macro - Interactive command
+.de Ic
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 .tm Usage: .Ic Interactive command ... \\*(Pu (#\\n(.c)
+. el \{\
+. ds mN Ic
+. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+. \}
+.\}
+.if \\n(aC>\\n(aP \{\
+. as b1 \\*(iC
+. nr aP \\n(aP+1
+. nr cF \\n(.f
+. nr cZ \\n(.s
+. nR
+.\}
+..
+.\" NS Li macro - literals
+.de Li
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 .tm Usage .Li argument ... \\*(Pu (#\\n(.c)
+. el \{\
+. ds mN Li
+. ds A1 \\$1
+. ds A2 \\$2
+. ds A3 \\$3
+. ds A4 \\$4
+. ds A5 \\$5
+. ds A6 \\$6
+. ds A7 \\$7
+. ds A8 \\$8
+. ds A9 \\$9
+. nr fV \\n(.$
+. fV
+. \}
+.\}
+.if \\n(aC>\\n(aP \{\
+. as b1 \\*(lI
+. nr aP \\n(aP+1
+. nr cF \\n(.f
+. nr cZ \\n(.s
+. nR
+.\}
+..
+.\" NS Or macro - Pipe symbol (OR)
+.de Or
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 .tm Usage: .Or ... \\*(Pu (#\\n(.c)
+. el \{\
+. ds mN Or
+. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+. \}
+.\}
+.if \\n(aC>\\n(aP \{\
+. as b1 \\*(iC
+. nr aP \\n(aP+1
+. nr cF \\n(.f
+. nr cZ \\n(.s
+. nR
+.\}
+..
+.\" NS Ms macro - Math symbol
+.de Ms
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 .tm Usage: .Ms Math symbol ... \\*(Pu (#\\n(.c)
+. el \{\
+. ds mN Ms
+. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+. \}
+.\}
+.if \\n(aC>\\n(aP \{\
+. as b1 \\*(sY
+. nr aP \\n(aP+1
+. nr cF \\n(.f
+. nr cZ \\n(.s
+. nR
+.\}
+..
+.\" NS Nm macro - Name of command or page topic
+.\" NS n1 string - save first invocation of .Nm
+.\" NS iS register - indent second command line in a synopsis
+.de Nm
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 \{\
+. ie "\\*(n1"" .tm Usage: .Nm Name(s) ... \\*(Pu (#\\n(.c)
+. el \&\\*(nM\\*(n1\fP\s0
+. \}
+. el \{\
+. ds mN Nm
+. ds A1 \\$1
+. ds A2 \\$2
+. ds A3 \\$3
+. ds A4 \\$4
+. ds A5 \\$5
+. ds A6 \\$6
+. ds A7 \\$7
+. ds A8 \\$8
+. ds A9 \\$9
+. nr fV \\n(.$
+. fV
+. \}
+.\}
+.if \\n(aC>0 \{\
+. ie \\n(aC==\\n(aP \{\
+. as b1 \&\\*(nM\\*(n1\fP\s0
+. aZ
+. \}
+. el \{\
+. as b1 \\*(nM
+. nr aP \\n(aP+1
+. ie \\n(C\\n(aP==1 \{\
+. as b1 \&\\*(n1\fP\s0
+. \\*(A\\n(aP
+. \}
+. el \{\
+. nr cF \\n(.f
+. nr cZ \\n(.s
+. if \\n(nS \{\
+. if "\\*(mN"Nm" \{\
+. rs
+. in -\\n(iSu
+. ie \\n(nS>1 .br
+. el \{\
+. if \\n(iS==0 \{\
+. sw \\$1
+. nr iS ((\\n(sWu+1)*\\n(fW)u
+. \}
+. \}
+. in +\\n(iSu
+. ti -\\n(iSu
+. nr nS \\n(nS+1
+. \}
+. \}
+. if "\\*(n1"" .ds n1 \\*(A\\n(aP
+. nR
+. \}
+. \}
+.\}
+..
+.\" NS Pa macro - Pathname
+.de Pa
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 \&\\*(pA~\fP\s0
+. el \{\
+. ds mN Pa
+. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+. \}
+.\}
+.if \\n(aC>\\n(aP \{\
+. as b1 \\*(pA
+. nr aP \\n(aP+1
+. nr cF \\n(.f
+. nr cZ \\n(.s
+. nR
+.\}
+..
+.\" NS Sy macro - Symbolics
+.de Sy
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 .tm Usage: .Sy symbolic_text ... \\*(Pu (#\\n(.c)
+. el \{\
+. ds mN Sy
+. ds A1 \\$1
+. ds A2 \\$2
+. ds A3 \\$3
+. ds A4 \\$4
+. ds A5 \\$5
+. ds A6 \\$6
+. ds A7 \\$7
+. ds A8 \\$8
+. ds A9 \\$9
+. nr fV \\n(.$
+. fV
+. \}
+.\}
+.if \\n(aC>\\n(aP \{\
+. as b1 \\*(sY
+. nr aP \\n(aP+1
+. nr cF \\n(.f
+. nr cZ \\n(.s
+. nR
+.\}
+..
+.\" NS Tn macro - Trade Name Macro
+.de Tn
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 .tm Usage: .Tn Trade_name(s) ... \\*(Pu (#\\n(.c)
+. el \{\
+. ds mN Tn
+. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+. \}
+.\}
+.if \\n(aC>\\n(aP \{\
+. as b1 \\*(tN\\*(tF
+. nr aP \\n(aP+1
+. nr cF \\n(.f
+. nr cZ \\n(.s
+. nR
+.\}
+..
+.\" NS nN macro - Trade Name Macro for inside of reference
+.de nN
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 .tm Usage: .Tn Trade_name(s) ... \\*(Pu (#\\n(.c)
+. el \{\
+. ds mN Tn
+. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+. \}
+.\}
+.if \\n(aC>\\n(aP \{\
+. as b1 \\*(tN
+. nr aP \\n(aP+1
+. nr cF \\n(.f
+. nr cZ \\n(.s
+. rR
+.\}
+..
+.\" NS Va macro - variable name macro
+.de Va
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 .tm Usage: .Va variable_name(s) ... \\*(Pu (#\\n(.c)
+. el \{\
+. ds mN Va
+. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+. \}
+.\}
+.if \\n(aC>\\n(aP \{\
+. as b1 \\*(vA
+. nr aP \\n(aP+1
+. nr cF \\n(.f
+. nr cZ \\n(.s
+. nR
+.\}
+..
+.\"
+.\" NS No macro - Normal text macro (default text style if mess up)
+.de No
+.as b1 \\*(nO
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 .tm Usage: .No must be called with arguments (#\\n(.c)
+. el \{\
+. ds mN No
+. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+. \}
+.\}
+.if \\n(aC>\\n(aP \{\
+. nr aP \\n(aP+1
+. ie \\n(C\\n(aP==1 \{\
+. \\*(A\\n(aP
+. \}
+. el \{\
+. nr cF \\n(.f
+. nr cZ \\n(.s
+. nR
+. \}
+.\}
+..
+.\"------------------------------------------------------------------------
+.\" NS Op macro - Option Expression
+.de Op
+.if \\n(aC==0 \{\
+. ds mN Op
+.\}
+.\" .ds qL \&\\*(lO
+.\" .ds qR \&\\*(rO
+.ds qL \&\\*(lB
+.ds qR \&\\*(rB
+.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
+..
+.\" NS Aq macro - Enclose string in angle brackets
+.de Aq
+.if \\n(aC==0 .ds mN Aq
+.ds qL \&<
+.ds qR \&>
+.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+..
+.\" NS Bq macro - Enclose string in square brackets
+.de Bq
+.if \\n(aC==0 .ds mN Bq
+.ds qL \&\\*(lB
+.ds qR \&\\*(rB
+.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+..
+.\" NS Dq macro - Enclose string in double quotes
+.de Dq
+.if \\n(aC==0 .ds mN Dq
+.ds qL \&\\*(Lq
+.ds qR \&\\*(Rq
+.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+..
+.\" NS Eq macro - Enclose string in double quotes
+.de Eq
+.if \\n(aC==0 .ds mN Eq
+.ds qL \\$1
+.ds qR \\$2
+.En \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+..
+.\" NS Pq macro - Enclose string in parenthesis
+.de Pq
+.if \\n(aC==0 .ds mN Pq
+.ds qL \&\\*(lP
+.ds qR \&\\*(rP
+.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+..
+.\" NS Ql macro - Quoted literal is in file mdoc-[dit|n|g]roff (too large
+.\" an if-else to carry along recursively for `if n ...')
+.\"
+.\" NS Sq macro - Enclose string in single quotes
+.de Qq
+.if \\n(aC==0 .ds mN Qq
+.ds qL \&\\*q
+.ds qR \&\\*q
+.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+..
+.\" NS Sq macro - Enclose string in single quotes
+.de Sq
+.if \\n(aC==0 .ds mN Sq
+.ds qL \&\\*(sL
+.ds qR \&\\*(sR
+.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+..
+.\"
+.\" NS Es macro - Set up strings for .En call
+.de Es
+.if \\n(aC==0 \{\
+. ie \\n(.$>2 .aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+. el \{\
+. ds qL \\$1
+. ds qR \\$2
+. \}
+.\}
+.if \\n(aC>\\n(aP \{\
+. nr aP \\n(aP+1
+. ds qL \\*(A\\n(aP
+. nr aP \\n(aP+1
+. ds qR \\*(A\\n(aP
+. ie \\n(aC>\\n(aP .c\\n(C\\n(aP
+. el .aZ
+.\}
+..
+.\" .tm En beg arg(A[\\n(aP])==\\*(A\\n(aP;
+.\" .tm En oM==\\n(oM; dZ==\\n(dZ; Xt==\\n(Xt; aC==\\n(aC
+.\" NS En macro - Enclose string with given args (eg [ and ] etc)
+.\" NS qL string variable set by calling macro
+.\" NS qR string variable set by calling macro
+.\" NS aJ register (for vR)
+.de En
+.ie \\n(aC==0 \{\
+. ie \\n(.$==0 \{\
+. as b1 \&\\*(qL\\*(qR
+. pB
+. \}
+. el \{\
+.\". as mN (En)
+. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+. as b1 \&\\*(qL
+. \}
+.\}
+.el \{\
+. as b1 \&\\*(qL
+.\}
+.if \\n(aC>0 \{\
+. ie (\\n(aC-\\n(aP)==0 \{\
+. as b1 \&\\*(qR
+. aZ
+. \}
+. el \{\
+. ie \\n(C\\n(aC==3 \{\
+. nr aJ \\n(aC-1
+. vR
+. nr aJ \\n(aJ+1
+. ds A\\n(aJ \&\\*(qR\\*(A\\n(aJ
+. nr aJ 0
+. \}
+. el .aI \&\\*(qR 3
+. nr aP \\n(aP+1
+. if \\n(C\\n(aP==1 .\\*(A\\n(aP
+. if \\n(C\\n(aP>1 \{\
+. nr aP \\n(aP-1
+. No
+. \}
+. \}
+.\}
+..
+.\" NS vR macro - vector routine (for En, trace backwards past trail punct)
+.de vR
+.if \\n(C\\n(aJ==3 \{\
+. nr aJ \\n(aJ-1
+. vR
+.\}
+..
+.\"------------------------------------------------------------------------
+.\" NS Ao macro - Angle open
+.de Ao
+.if \\n(aC==0 .ds mN Ao
+.ds qL \&<
+.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+..
+.\" NS Ac macro - Angle close
+.de Ac
+.if \\n(aC==0 .ds mN Ac
+.ds qR \&>
+.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+..
+.\" NS Bo macro - Bracket open
+.de Bo
+.if \\n(aC==0 .ds mN Bo
+.ds qL \&[
+.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+..
+.\" NS Bc macro - Bracket close
+.de Bc
+.if \\n(aC==0 .ds mN Bc
+.ds qR \&]
+.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+..
+.\" NS Do macro - Double Quote open
+.de Do
+.if \\n(aC==0 .ds mN Do
+.ds qL \&\\*(Lq
+.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+..
+.\" NS Dc macro - Double Quote close
+.de Dc
+.if \\n(aC==0 .ds mN Dc
+.ds qR \&\\*(Rq
+.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+..
+.\" NS Eo macro - Enclose open
+.de Eo
+.if \\n(aC==0 .ds mN Eo
+.ds qL \\$1
+.eO \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+..
+.\" NS Ec macro - Enclose close
+.de Ec
+.if \\n(aC==0 .ds mN Ec
+.ds qR \\$1
+.eC \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+..
+.\" NS Oo macro - Option open
+.de Oo
+.if \\n(aC==0 .ds mN Oo
+.ds qL \&[
+.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+..
+.\" NS Oc macro - Option close
+.de Oc
+.if \\n(aC==0 .ds mN Oc
+.ds qR \&]
+.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+..
+.\" NS Po macro - Parenthesis open
+.de Po
+.if \\n(aC==0 .ds mN Po
+.ds qL \&(
+.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+..
+.\" NS Pc macro - Parenthesis close
+.de Pc
+.if \\n(aC==0 .ds mN Pc
+.ds qR \&)
+.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+..
+.\" NS Qo macro - Straight Double Quote open
+.de Qo
+.if \\n(aC==0 .ds mN Qo
+.ds qL \&\\*q
+.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+..
+.\" NS Qc macro - Straight Double Quote close
+.de Qc
+.if \\n(aC==0 .ds mN Qc
+.ds qR \&\\*q
+.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+..
+.\" NS So macro - Single Quote open
+.de So
+.if \\n(aC==0 .ds mN So
+.ds qL \&\\*(sL
+.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+..
+.\" NS Sc macro - Single Quote close
+.de Sc
+.if \\n(aC==0 .ds mN Sc
+.ds qR \&\\*(sR
+.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+..
+.\" NS Xo macro - Extend open (continue)
+.de Xo
+.if \\n(aC==0 .ds mN Xo
+.\" .nr mN 1
+.ds qL
+.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+..
+.\" NS Xe macro - Extend close (end)
+.de Xc
+.\" .nr mN 0
+.if \\n(aC==0 .ds mN Xc
+.ds qR
+.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+..
+.\" NS eO macro - enclose string open
+.\" NS oM register (extension possible)
+.de eO
+.nr oM \\n(oM+1
+.\" .tm eO last arg==A[\\n(aC]==\\*(A\\n(aC; aP==\\n(aP; oM==\\n(oM; dZ==\\n(dZ;
+.ie \\n(aC==0 \{\
+. ie \\n(.$>0 \{\
+. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+. as b1 \\*(qL
+. \}
+. el \{\
+. as b1 \\*(qL
+. if (\\n(dZ==0)&(\\n(sM==1) \{\
+. nr dZ \\n(dZ+1
+. ds b2 \\*(b1
+. ds b1
+. nr lK \\n(.c
+. ev 2
+. fi
+. di eB
+. \}
+. \}
+.\}
+.el \{\
+. as b1 \\*(qL
+.\}
+.ie \\n(aC>0 \{\
+. if \\n(aC>\\n(aP \{\
+. nr aP \\n(aP+1
+. ie \\n(C\\n(aP==1 .\\*(A\\n(aP
+. el \{\
+. nr aP \\n(aP-1
+. No
+. \}
+. \}
+. if \\n(aC==\\n(aP \{\
+. if \\n(tP==1 \{\
+.\" .tm SETTING Xt!!!
+. nr Xt 1
+. \}
+.\".\" . ds S0
+.\"CHANGED ds S0 \\*(iV
+. aY
+. \}
+.\}
+.el \{\
+. if \\n(oM>1 .as b1 \\*(sV
+.\}
+..
+.\"
+.\" NS eC macro - enclose string close
+.\" NS aa local register
+.de eC
+.nr oM \\n(oM-1
+.\" tm eC last arg==A[\\n(aC]==\\*(A\\n(aC; aP==\\n(aP; oM==\\n(oM; dZ==\\n(dZ;
+.as b1 \\*(qR
+.if \\n(aC==0 \{\
+. ie \\n(.$>0 \{\
+. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+. \}
+. el \{\
+. ie "\\*(xB"" \{\
+. pB
+. \}
+. el \{\
+. pB
+.\\*(L\\n(lC
+. nr Xt 0
+. ds xB
+. \}
+. \}
+.\}
+.if \\n(aC>0 \{\
+. ie \\n(aC==\\n(aP \{\
+. ie \\n(oM==0 \{\
+. aZ
+. \}
+. el .aY
+. \}
+. el \{\
+. nr aa \\n(aP+1
+. if \\n(C\\n(aa==2 .as b1 \\*(S\\n(aC
+.\" tm CURRENT arg (aP==\\*(A\\n(aP and ap+1==\\*(A\\n(aa) tP==\\n(tP Xt==\\n(Xt
+. rr aa
+. if \\n(tP>0 \{\
+.\" tm UNSETTING Xt==\\n(Xt!!!!
+. if \\n(Xt>0 .nr Xt \\n(Xt-1
+.\" tm NOW Xt==\\n(Xt!!!!
+. \}
+. No
+. \}
+.\}
+..
+.\"------------------------------------------------------------------------
+.\" NS Pf macro - Prefix (calls .pF)
+.de Pf
+.if \\n(aC==0 .ds mN Pf
+.ds qL \&\\$1
+.pF \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+..
+.\" NS pF macro - Prefix (for prefixing open quotes, brackets etc)
+.de pF
+.ie \\n(aC==0 \{\
+. as b1 \&\\*(qL
+. ie \\n(.$<2 \{\
+. tm Warning: Missing arguments - prefix .Pf)
+. pB
+. \}
+. el .aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+.\}
+.el \{\
+. ie (\\n(aC-\\n(aP)>1 \{\
+. nr aP \\n(aP+1
+. as b1 \&\\*(A\\n(aP
+. \}
+. el .tm Warning: .Pf: trailing prefix (#\\n(.c)
+.\}
+.if \\n(aC>0 \{\
+. ie (\\n(aC-\\n(aP)==0 .aZ
+. el \{\
+. nr aP \\n(aP+1
+. c\\n(C\\n(aP
+. \}
+.\}
+..
+.\" NS Ns macro - remove space (space remove done by .aV or .fV)
+.de Ns
+.if \\n(aC==0 \{\
+. ds mN Ns
+. ie \\n(.$>0 .aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+. el .tm Usage: .Ns must be called with arguments (#\\n(.c)
+.\}
+.No
+..
+.de Ap
+.if \\n(aC==0 \{\
+. ds mN Ap
+. tm Usage: Ap "cannot be first request on a line (no .Ap)" (#\\n(.c)
+.\}
+.as b1 \&'
+.No
+..
+.\" NS Hv macro - Hard (unpaddable) Space vector
+.\" NS iV string inter-vector space
+.\" NS sV string inter-argument space
+.de Hv
+.ds iV \\*(sV
+.ds sV \\*(hV
+..
+.\" NS Sv macro - Soft Space vector (troff limitation)
+.de Sv
+.ds sV \\*(iV
+..
+.\" NS Tv macro - Tab Space vector
+.de Tv
+.ds sV \\*(tV
+..
+.\" NS Sm macro - Space mode
+.\" NS sM register - default is one (space mode on)
+.nr sM 1
+.de Sm
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 .tm "Usage: .Sm [off | on]" (#\\n(.c)
+. el \{\
+. ds mN Sm
+. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+. \}
+.\}
+.if \\n(aC>0 \{\
+. nr aP \\n(aP+1
+. if "\\*(A\\n(aP"on" \{\
+. ds sV \\*(iV
+. nr sM 1
+. \}
+. if "\\*(A\\n(aP"off" \{\
+. ds sV
+. rm S0 S1 S2 S3 S4 S5 S6 S7 S8 S9
+. nr sM 0
+. \}
+. ie \\n(aC>\\n(aP \{\
+. No
+. \}
+. el .aY
+.\}
+..
+.\"------------------------------------------------------------------------
+.\" Size and Argument type macros
+.\" NS aT macro - argument type
+.\" NS aU macro - argument type (same as .aT but uses A[1-9] strings
+.\" NS aT register argument type
+.if \n(.g \{\
+.de aT
+.nr aT 0
+.ie \\n(sW>2:(\A'\\$1'==0) \{\
+. nr aT 2
+.\}
+.el \{\
+. if \\n(sW==1 \{\
+. ie \\n(z\\$1>2 \{\
+. nr aT \\n(z\\$1
+. \}
+. el .nr aT 2
+. \}
+. if \\n(sW==2 \{\
+. ie \\n(\\$1 \{\
+. nr aT 1
+. \}
+. el .nr aT 2
+. \}
+.\}
+..
+.de aU
+.nr aT 0
+.aW \\$1
+.ie \\n(sW>2:(\A'\\*(A\\$1'==0) .nr aT 2
+.el \{\
+. if \\n(sW==1 \{\
+. ie \\n(z\\*(A\\$1>2 \{\
+. nr aT \\n(z\\*(A\\$1
+. \}
+. el .nr aT 2
+. \}
+. if \\n(sW==2 \{\
+. ie (\\n(\\*(A\\$1) \{\
+. nr aT 1
+. \}
+. el .nr aT 2
+. \}
+.\}
+..
+.\}
+.if !\n(.g \{\
+.de aT
+.nr aT 0
+.ie \\n(sW>2 \{\
+. nr aT 2
+.\}
+.el \{\
+. if \\n(sW==1 \{\
+. ie \\n(z\\$1>2 \{\
+. nr aT \\n(z\\$1
+. \}
+. el .nr aT 2
+. \}
+. if \\n(sW==2 \{\
+. ie \\n(\\$1 \{\
+. nr aT 1
+. \}
+. el .nr aT 2
+. \}
+.\}
+..
+.de aU
+.nr aT 0
+.aW \\$1
+.ie \\n(sW>2 .nr aT 2
+.el \{\
+. if \\n(sW==1 \{\
+. ie \\n(z\\*(A\\$1>2 \{\
+. nr aT \\n(z\\*(A\\$1
+. \}
+. el .nr aT 2
+. \}
+. if \\n(sW==2 \{\
+. ie (\\n(\\*(A\\$1) \{\
+. nr aT 1
+. \}
+. el .nr aT 2
+. \}
+.\}
+..
+.\}
+.\" NS s1 macro - set spacing for class type 1
+.\" NS s2 macro - set spacing for class type 2
+.\" NS s3 macro - set spacing for class type 3
+.\" NS s1 macro - set spacing for class type 1
+.\" NS s2 macro - set spacing for class type 2
+.\" NS s3 macro - set spacing for class type 3
+.\" NS s4 macro - set spacing for class type 4
+.\" NS S[0-9] string spacing
+.\" NS xX local register
+.\" NS aa local register
+.de s0
+.tm MDOC-ERROR: bogus type 0 (can't set space '\\*(A\\n(aC') (#\\n(.c)
+..
+.de s1
+.if \\n(\\*(A\\n(aC==3 \{\
+. nr xX \\n(aC-1
+. rm S\\n(xX
+. ds S\\n(aC \\*(sV
+.\}
+.if \\n(\\*(A\\n(aC==2 \{\
+. nr xX \\n(aC-1
+.\" this kludge can probably go away, but need to double check first
+. ie "\\*(A\\n(aC"Nb" .ds S\\n(xX \\*(hV
+. el .rm S\\n(xX
+.\}
+..
+.de s2
+.ds S\\n(aC \\*(sV
+..
+.de s3
+.if \\n(aC>1 \{\
+. nr xX \\n(aC-1
+. rm S\\n(xX
+.\}
+.ds S\\n(aC \\*(sV
+..
+.de s4
+.nr aa 0
+..
+.\" Class switches (on current argument aP)
+.\" NS c0 macro - catch errors (non-existent class type 0)
+.\" NS c1 macro - call request if type 1
+.\" NS c2 macro - call .No if type 2
+.\" NS c3 macro - call .No if type 3
+.\" NS c4 macro - call .No if type 4
+.de c0
+.tm MDOC-ERROR: bogus class 0 (can't determine '\\*(A\\n(aC') (#\\n(.c)
+..
+.de c1
+.\\*(A\\n(aP
+..
+.de c2
+.nr aP \\n(aP-1
+.No
+..
+.de c3
+.nr aP \\n(aP-1
+.No
+..
+.de c4
+.nr aP \\n(aP-1
+.No
+..
+.\" NS y1 macro - ignore if class 1
+.\" NS y2 macro - ignore if class 2
+.\" NS y3 macro - append if type 3
+.\" NS y4 macro - append if type 4
+.de y1
+.nr aa 1
+..
+.de y2
+.nr aa 1
+..
+.de y3
+.as b1 \\*(A\\n(aP
+.nr aP \\n(aP+1
+.n\\C\\n(aP
+..
+.de y4
+.as b1 \\*(A\\n(aP
+.nr aP \\n(aP+1
+.n\\C\\n(aP
+..
+.\"--------------------------------------------------------------------------
+.\" Ns Bf macro - Begin Font Mode (will be begin-mode/end-mode in groff & TeX)
+.\" Ns Ef macro - End Font Mode
+.de Bf
+.ds mN Bf
+.ie \\n(.$>0 \{\
+. nr bF \\n(.f
+. nr bZ \\n(.s
+. if "\\$1"Em" \&\\*(eM\c
+. if "\\$1"Li" \&\\*(lI\c
+. if "\\$1"Sy" \&\\*(sY\c
+. if "\\$1"-emphasis" \&\\*(eM\c
+. if "\\$1"-literal" \&\\*(lI\c
+. if "\\$1"-symbolic" \&\\*(sY\c
+.\}
+.el .tm Usage .Bf [Em | emphasis | Li | literal | Sy | symbolic] (#\\n(.c)
+..
+.de Ef
+.ds mN Ef
+.ie \\n(.$>0 .tm Usage .Ef (does not take arguments) (#\\n(.c)
+.el \&\f\\n(bF\s\\n(bZ
+..
+.\" Ns Bk macro - Begin Keep
+.\" Ns Ek macro - End Keep
+.\" Ns kS string - keep type
+.de Bk
+.ds mN Bk
+.ie \\n(.$==0 \{\
+.tm Usage: .Bk [-lines | -words] (#\\n(.c)
+.\}
+.el \{\
+. if !"\\*(kS"" .tm .Bk: nesting keeps not implemented yet. (#\\n(.c)
+. if "\\$1"-lines" .tm .Bd -lines: Not implemented yet. (#\\n(.c)
+. if "\\$1"-words" .Hv
+. ds kS \\$1
+.\}
+..
+.de Ek
+.ds mN Ek
+.ie \\n(.$>0 .tm Usage .Ek (does not take arguments) (#\\n(.c)
+.el \{\
+. if "\\*(kS"-lines" .tm .Bd -lines: Not implemented yet. (#\\n(.c)
+. if "\\*(kS"-words" .Sv
+. rm kS
+.\}
+..
+.\" NS Bd macro - Begin Display display-type [offset string]
+.\" NS Ed macro - end Display
+.\" NS O[0-9] registers - stack of indent
+.\" NS d[0-9] registers - display-type stack
+.de Bd
+.ds mN Bd
+.ie \\n(.$==0 \{\
+.tm Usage: .Bd [-literal | -filled | -ragged | -unfilled] [-offset [string]] [-compact] (#\\n(.c)
+.\}
+.el \{\
+. ds aa
+. nr bV 0
+. nr iD 0
+. nr dP \\n(dP+1
+. if "\\$1"-literal" \{\
+. nr iD \\n(iD+1
+. ds d\\n(dP dL
+. nr cF \\n(.f
+. nr cZ \\n(.s
+. ie t \{\&\\*(lI
+' ta 9n 18n 27n 36n 45n 54n 63n 72n
+. \}
+. el \{\
+' ta 8n 16n 24n 32n 40n 48n 56n 64n 72n
+. \}
+. nf
+. \}
+. if "\\$1"-filled" \{\
+. nr iD \\n(iD+1
+. ds d\\n(dP dF
+. br
+. \}
+. if "\\$1"-ragged" \{\
+. nr iD \\n(iD+1
+. ds d\\n(dP dR
+. na
+. \}
+. if "\\$1"-unfilled" \{\
+. nr iD \\n(iD+1
+. ds d\\n(dP dU
+. nf
+. \}
+.\" .tm Here is argc: \\n(.$ and here is iD \\n(iD
+. if ((\\n(iD>=1)&(\\n(.$>\\n(iD)) \{\
+. bV \\$2 \\$3 \\$4
+. \}
+. if \\n(O\\n(dP>0 'in \\n(.iu+\\n(O\\n(dPu
+. if (\\n(bV==0) \{\
+. if (\\n(nS==0) \{\
+. ie "\\*(d\\n(dP"dR" .sp \\n(dVu
+. el 'sp \\n(dVu
+. \}
+. \}
+. if \\n(cR==0 .ne 2v
+. nr bV 0
+. nr iD 0
+.\}
+..
+.\" NS bV macro - resolve remaining .Bd arguments
+.de bV
+.\" .tm in bV with args: \\$1 \\$2 \\$3
+.nr iD 1
+.ds bY
+.if "\\$1"-offset" \{\
+. ds bY \\$2
+. if "\\*(bY"left" \{\
+. nr iD \\n(iD+1
+. nr O\\n(dP 0
+. \}
+. if "\\*(bY"right" \{\
+. nr iD \\n(iD+1
+. nr O\\n(dP (\\n(.l/3)u
+. \}
+. if "\\*(bY"center" \{\
+. nr iD \\n(iD+1
+. nr O\\n(dP (\\n(.l-\\n(.i)/4u
+. \}
+. if "\\*(bY"indent" \{\
+. nr iD \\n(iD+1
+. nr O\\n(dP \\n(dIu
+. \}
+. if "\\*(bY"indent-two" \{\
+. nr iD \\n(iD+1
+. nr O\\n(dP \\n(dIu+\\n(dIu
+. \}
+. if \\n(iD==1 \{\
+. nr iD \\n(iD+1
+. sW "\\*(bY"
+. ie \\n(sW>2 \{\
+. ie ((\\*(bY>9n)&(\\*(bY<100n)) \{\
+. nr O\\n(dP \\*(bY
+. \}
+. el .nr O\\n(dP (\\n(sW)*\\n(fWu
+. \}
+. el \{\
+. if \\n(sW==2 .aT \\*(bY
+. ie \\n(aT==1 \{\
+. nr O\\n(dP \\n(\\*(bY
+. \}
+. el .nr O\\n(dP \\*(bY
+. \}
+. \}
+.\}
+.if "\\$1"-compact" \{\
+. nr bV 1
+.\}
+.if \\n(iD<\\n(.$ \{\
+. ie "\\*(bY"" \{\
+. bV \\$2 \\$3
+. \}
+. el \{\
+. bV \\$3
+. \}
+.\}
+..
+.\" NS Ed macro - end display
+.de Ed
+.ds mN Ed
+.br
+.if \\n(dP==0 .tm mdoc: Extraneous .Ed
+.if "\\*(d\\n(dP"dL" \{\
+. ft \\n(cF
+. fz \\n(cZ
+.\}
+.in \\n(.iu-\\n(O\\n(dPu
+.rr O\\n(dP
+.rm d\\n(dP
+.nr dP \\n(dP-1
+.fi
+.if t .ad
+..
+.\"--------------------------------------------------------------------------
+.\" NS Bl macro - begin list (.Bl list-type)
+.\" NS L[0-9] registers - stack of list types
+.de Bl
+.ie \\n(.$==0 \{\
+.tm Usage: .Bl [[-hang | -tag] [-width]] [ -item | -enum | -bullet | -diag] (#\\n(.c)
+.\}
+.el \{\
+. ds mN Bl
+. nr aP 0
+. nr lC \\n(lC+1
+. ds A1 \\$2
+. ds A2 \\$3
+. ds A3 \\$4
+. ds A4 \\$5
+. ds A5 \\$6
+. ds A6 \\$7
+. ds A7 \\$8
+. ds A8 \\$9
+. nr fV \\n(.$-1
+. if "\\$1"-hang" \{\
+. nr aP \\n(aP+1
+. ds L\\n(lC hL
+. nr w\\n(lC 6n
+. nr tC 1
+. \}
+. if "\\$1"-tag" \{\
+. nr aP \\n(aP+1
+. ds L\\n(lC tL
+. nr tC 1
+. \}
+. if "\\$1"-item" \{\
+. nr aP \\n(aP+1
+. ds L\\n(lC iT
+. nr tC 1
+. \}
+. if "\\$1"-enum" \{\
+. nr aP \\n(aP+1
+. ds L\\n(lC nU
+. nr w\\n(lC 3n
+. nr tC 1
+. \}
+. if "\\$1"-bullet" \{\
+. nr aP \\n(aP+1
+. ds L\\n(lC bU
+. nr w\\n(lC 2n
+. nr tC 1
+. \}
+. if "\\$1"-dash" \{\
+. nr aP \\n(aP+1
+. ds L\\n(lC hU
+. nr w\\n(lC 2n
+. nr tC 1
+. \}
+. if "\\$1"-hyphen" \{\
+. nr aP \\n(aP+1
+. ds L\\n(lC hU
+. nr w\\n(lC 2n
+. nr tC 1
+. \}
+. if "\\$1"-inset" \{\
+. nr aP \\n(aP+1
+. ds L\\n(lC lL
+. nr tC 1
+. \}
+. if "\\$1"-diag" \{\
+. nr aP \\n(aP+1
+. ds L\\n(lC mL
+. nr mL 1
+. \}
+. if "\\$1"-ohang" \{\
+. nr aP \\n(aP+1
+. ds L\\n(lC oL
+. nr tC 1
+. \}
+. if "\\$1"-column" \{\
+. nr aP \\n(aP+1
+. ds L\\n(lC cL
+. \}
+. ie \\n(aP==0 \{\
+. tm \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+. tm Usage: .Bl [[-inset|-tag] -width] [-item|-enum|-bullet|-diag] (#\\n(.c)
+. \}
+. el \{\
+. tY
+. if (\\n(aP==1)&(\\n(aP<\\n(.$) \{\
+. nr aP 0
+. lV
+. if "\\*(L\\n(lC"cL" \{\
+. W\\n(wV
+. nr w\\n(lC 0
+' in -\\n(eWu
+. ie \\n(v\\n(lC==1 \{\
+. nr aa 0
+. \}
+. el \{\
+. sp \\n(dVu
+. \}
+. nf
+. nr wV 0
+. \}
+. \}
+. \}
+. nr aP 0
+.\" . ds b1
+. aY
+.\" .tm Here is L[\\n(lC]==\\*(L\\n(lC
+.\}
+..
+.if \n(.g \{\
+. nr i 10
+. while \ni<100 \{\
+. nr num!\nin 1
+. nr i +1
+. \}
+.\}
+.\" NS lV macro - resolve remaining .Bl arguments
+.de lV
+.nr aP \\n(aP+1
+.if \\n(fV>=\\n(aP \{\
+. nr iD 0
+. if "\\*(A\\n(aP"-compact" \{\
+. nr iD 1
+. nr v\\n(lC 1
+. \}
+. if "\\*(A\\n(aP"-width" \{\
+. nr iD 1
+. nr aP \\n(aP+1
+. nr tW 1
+. ds t\\n(lC TagwidtH
+. ds tS \\*(A\\n(aP
+. aW \\n(aP
+. ie \\n(sW>2 \{\
+. nr w\\n(lC (\\n(sW)*\\n(fWu
+. if \\n(sW==3 \{\
+. ie \\n(.g \{\
+. if \A'\\*(tS' .if r num!\\*(tS \{\
+. nr w\\n(lC \\*(tS
+. \}
+. \}
+. el \{\
+. if (\\*(tS>9n)&(\\*(tS<99n) \{\
+. nr w\\n(lC \\*(tSu
+. \}
+. \}
+. \}
+. \}
+. el \{\
+. aT \\*(tS
+. ie \\n(aT==1 \{\
+. nr w\\n(lC \\n(\\*(tS
+. \}
+. el \{\
+. nr w\\n(lC \\*(tSu
+. \}
+. \}
+. \}
+. if "\\*(A\\n(aP"-offset" \{\
+. nr iD 1
+. nr aP \\n(aP+1
+. ie "\\*(A\\n(aP"indent" \{\
+. nr o\\n(lC \\n(Dsu
+. \}
+. el \{\
+. ds tS \\*(A\\n(aP
+. aW \\n(aP
+. ie \\n(sW>2 \{\
+. nr o\\n(lC (\\n(sW)*\\n(fWu
+. ie \\n(.g \{\
+. if \A'\\*(tS' .if r num!\\*(tS \{\
+. nr o\\n(lC \\*(tS
+. \}
+. \}
+. el \{\
+. if (\\*(tS>9n)&(\\*(tS<100n) \{\
+. nr o\\n(lC \\*(tS
+. \}
+. \}
+. \}
+. el \{\
+. ie \\n(C\\n(aP==1 .nr o\\n(lC \\n(\\*(tS
+. el .nr o\\n(lC \\*(tS
+. \}
+. \}
+. \}
+. if \\n(iD==0 \{\
+. if "\\*(L\\n(lC"cL" \{\
+. nr wV \\n(wV+1
+. ds A\\n(wV \\*(A\\n(aP
+. \}
+. \}
+. if \\n(fV>\\n(aP .lV
+.\}
+..
+.\" NS El macro - end list
+.\" NS iD local register
+.de El
+.ie \\n(.$>0 \{\
+. tm Usage: .El (#\\n(.c)
+.\}
+.el \{\
+. ds mN El
+. nr iD 0
+. if "\\*(L\\n(lC"cL" \{\
+. nr iD 1
+. cC
+. \}
+. if "\\*(L\\n(lC"nU" \{\
+. nr nU 0
+. \}
+. if \\n(mL>0 \{\
+. nr iD 1
+. nr mL 0
+. tZ
+. nr lC \\n(lC-1
+. tY
+. \}
+. if "\\*(L\\n(lC"iT" \{\
+' in \\n(.iu-\\n(o\\n(lCu
+. tZ
+. nr lC \\n(lC-1
+. tY
+. nr iD 1
+. \}
+. if "\\*(L\\n(lC"oL" \{\
+' in \\n(.iu-\\n(o\\n(lCu
+. tZ
+. nr lC \\n(lC-1
+. tY
+. nr iD 1
+. \}
+. if "\\*(L\\n(lC"lL" \{\
+' in \\n(.iu-\\n(o\\n(lCu
+. tZ
+. nr lC \\n(lC-1
+. tY
+. nr iD 1
+. \}
+. if \\n(iD==0 \{\
+. lE
+. \}
+. br
+. nr iD 0
+.\}
+..
+.\" NS It macro - list item
+.\" NS iD local register
+.\" NS aA save pA font string for section FILES (no underline if nroff)
+.de It
+.if "\\*(L\\n(lC"" \{\
+. tm Usage .Bl -list-type [-width [string] | -compact | -offset [string]] (#\\n(.c)
+. tm .It \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
+.\}
+.\" .tm Here is L[\\n(lC]==\\*(L\\n(lC
+.ne 3v
+.ie \\n(.$>0 \{\
+. ds mN It
+. ds b1
+. nr iD 0
+. ds A1 \\$1
+. ds A2 \\$2
+. ds A3 \\$3
+. ds A4 \\$4
+. ds A5 \\$5
+. ds A6 \\$6
+. ds A7 \\$7
+. ds A8 \\$8
+. ds A9 \\$9
+. nr fV \\n(.$
+. if "\\*(L\\n(lC"mL" \{\
+. nr iD 1
+. nr aP 0
+. aX
+. \\*(L\\n(lC
+. \}
+. if "\\*(L\\n(lC"cL" \{\
+. ds b1
+. nr aP 0
+. nr iD 1
+. \\*(L\\n(lC
+. \}
+. if "\\*(L\\n(lC"iT" \{\
+. nr aP 0
+. nr iD 1
+. \\*(L\\n(lC
+. \}
+. if \\n(iD==0 \{\
+. fV
+.\" tm ------------------------------------------------------------------------
+.\" tm It list-type==\\*(L\\n(lC, aP==\\n(aP
+.\" tm It beg arg(A[1])==\\*(A1; oM==\\n(oM; dZ==\\n(dZ; Xt==\\n(Xt; aC==\\n(aC
+. nr oM \\n(oM+1
+. nr tP 1
+. nr aP \\n(aP+1
+. nr tX \\n(C\\n(aP
+. ds tX \\*(A\\n(aP
+. if \\n(nF==1 \{\
+. ds aA \\*(pA
+. if n .ds pA \\*(nO
+. \}
+. ie \\n(C\\n(aP==1 \{\
+. \\*(A\\n(aP
+. \}
+. el \{\
+. nr aP \\n(aP-1
+. No
+. \}
+.\" tm in It here is b1==\\*(b1
+.\" tm It mid arg(A[1])==\\*(A1; oM==\\n(oM; dZ==\\n(dZ; Xt==\\n(Xt; aC==\\n(aC
+. ie \\n(Xt==1 .ds xB \&\\*(L\\n(lC
+. el .\\*(L\\n(lC
+. \}
+. nr iD 0
+.\}
+.el .\\*(L\\n(lC
+..
+.\" NS lL macro - .It item of list-type inset
+.de lL
+.lY
+.br
+\&\\*(b1
+.nr oM \\n(oM-1
+.nr tP 0
+.ds b1
+.aY
+'fi
+..
+.\" NS hL macro - .It item of list-type hanging label (as opposed to tagged)
+.de hL
+.lX
+.nr bb \\n(w\\n(lCu+\\n(lSu
+.ti -\\n(bbu
+.ie \w\\*(b1u>=(\\n(w\\n(lCu) \&\\*(b1
+.el \&\\*(b1\h'|\\n(bbu'\c
+.nr oM \\n(oM-1
+.ds b1
+.nr tP 0
+.aY
+'fi
+..
+.\" NS oL macro - .It item of list-type overhanging label
+.de oL
+.lY
+\&\\*(b1
+.br
+.nr oM \\n(oM-1
+.ds b1
+.nr tP 0
+.aY
+'fi
+..
+.\" NS iT macro - .It item of list-type [empty label]
+.de iT
+.lY
+.br
+.\" .ds b1
+.aY
+'fi
+..
+.\" NS nU macro - Enumerated list
+.\" NS nU register count
+.\" NS hU macro - Hyphen paragraph list (sub bullet list)
+.\" NS bU macro - Bullet paragraph list
+.de nU
+.nr oM \\n(oM+1
+.nr nU \\n(nU+1
+.ds b1 \&\\n(nU.
+.uL
+..
+.de bU
+.nr oM \\n(oM+1
+.nr bU \\n(bU+1
+.ds b1 \&\\*(sY\&\(bu\fP
+.uL
+..
+.de hU
+.nr oM \\n(oM+1
+.nr bU \\n(bU+1
+.ds b1 \&\\*(sY\&\-\fP
+.uL
+..
+.\" NS uL macro - .It item of list-type enum/bullet/hyphen
+.de uL
+.lX
+.nr bb \\n(w\\n(lCu+\\n(lSu
+.ti -\\n(bbu
+.ie \w\\*(b1u>=(\\n(w\\n(lCu) \&\\*(b1
+.el \&\\*(b1\h'|\\n(bbu'\c
+.nr oM \\n(oM-1
+.\" .nr dZ \\n(dZ+1
+.ds b1
+.nr tP 0
+.aY
+'fi
+..
+.\" NS mL macro - .It item of list-type diagnostic-message
+.de mL
+.nr cF \\n(.f
+.nr cZ \\n(.s
+.ie \\n(mL==1 \{\
+. nr zB \\n(.c
+. ie (\\n(zB-\\n(zA)>1 .Pp
+. el .br
+. nr zA \\n(zB
+. nr zB 0
+.\}
+.el \{\
+. nr zA \\n(.c
+. br
+.\}
+\&\\*(sY\\*(b1\f\\n(cF\s\\n(cZ\\*(lS\c
+.aY
+.ds b1
+'fi
+..
+.\" NS tL macro - .It item of list-type "tag"
+.de tL
+.\" tm in tL here is b1==\\*(b1
+.if \\n(tW==0 .lW
+.lX
+.nr bb \\n(w\\n(lCu+\\n(lSu
+.ti -\\n(bbu
+.ie (\w\\*(b1u)>(\\n(w\\n(lCu) \{\&\\*(b1
+. br
+.\}
+.el \&\\*(b1\h'|\\n(bbu'\c
+.if \\n(nF==1 \{\
+. if n .ds pA \\*(aA
+.\}
+.nr oM \\n(oM-1
+.nr tP 0
+.\" .nr dZ \\n(dZ+1
+.ds b1
+.aY
+'fi
+..
+.\" NS lW macro - resolve unknown label/tag width (if .Bl [inset | tag] only)
+.de lW
+.if !"TagwidtH"\\*(t\\n(lC" \{\
+. ie \\n(tX==1 \{\
+. ds t\\n(lN \\*(tX
+. nr w\\n(lN \\n(\\*(tX
+. \}
+. el \{\
+. ds t\\n(lN No
+. nr w\\n(lN \\n(No
+. \}
+. if !"\\*(t\\n(lC"\\*(t\\n(lN" .nr tC 1
+.\}
+..
+.\" NS lX macro - set up vertical spacing (if compact) and offset+indent (all)
+.de lX
+.ie \\n(tC \{\
+. nr tC 0
+. nr tW 0
+. if \\n(v\\n(lC==0 .sp \\n(dVu
+. in \\n(.iu+\\n(w\\n(lCu+\\n(o\\n(lCu+\\n(lSu
+.\}
+.el \{\
+. ie \\n(v\\n(lC==1 \{\
+. nr aa 0
+. \}
+. el \{\
+. sp \\n(dVu
+. \}
+.\}
+.if !\\n(cR .ne 2v
+..
+.\" NS lY macro - set up vertical spacing (if compact) and offset+indent (all)
+.de lY
+.ie \\n(tC \{\
+. nr tC 0
+. nr tW 0
+. if \\n(v\\n(lC==0 .sp \\n(dVu
+. in \\n(.iu+\\n(o\\n(lCu
+.\}
+.el \{\
+. ie \\n(v\\n(lC==1 \{\
+. nr aa 0
+. \}
+. el \{\
+. sp \\n(dVu
+. \}
+.\}
+.if !\\n(cR .ne 2v
+..
+.\" NS tS temporary string
+.\" NS hL macro - hanging list function
+.\" NS tS temporary string
+.\" NS hL macro - hanging list function
+.\" NS lT macro - tagged list function
+.\" NS lE macro - list end function
+.\" NS tX string (initial string)
+.\" NS tX register (initial class)
+.\" NS tC parameter change flag
+.\" NS Xt save current list-type flag
+.\" NS lC register - list type stack counter
+.\" NS tP register tag flag (for diversions)
+.\" NS w[0-9] register tag stack (nested tags)
+.\" NS t[0-9] register tag string stack (nested tags)
+.\" NS o[0-9] register offset stack (nested tags)
+.\" NS v[0-9] register vertical tag break stack
+.\" NS h[0-9] register horizontal tag stack (continuous if 1, break if 0)
+.nr lC 0
+.nr wV 0
+.nr w1 0
+.nr o1 0
+.nr v1 0
+.nr h1 0
+.ds t\n(lC
+.de lE
+.\" IN lC o[\\n(lC]==\\n(o\\n(lC, w[\\n(lC]==\\n(w\\n(lC,
+.ie \\n(o\\n(lC>0 \{\
+' in \\n(.iu-(\\n(w\\n(lCu)-(\\n(o\\n(lCu)-\\n(lSu
+. rr o\\n(lC
+.\}
+.el 'in \\n(.iu-\\n(w\\n(lCu-\\n(lSu
+.if \\n(lC<=0 .tm Extraneous .El call (#\\n(.c)
+.tZ
+.nr lC \\n(lC-1
+.tY
+..
+.\" NS tY macro - set up next block for list
+.\" NS tZ macro - decrement stack
+.\" NS tY register (next possible lC value)
+.de tY
+.nr tY (\\n(lC+1)
+.nr w\\n(tY 0
+.nr h\\n(tY 0
+.nr o\\n(tY 0
+.ds t\\n(tY \\*(t\\n(lC
+.ds L\\n(tY
+.nr v\\n(tY 0
+..
+.de tZ
+.rm L\\n(tY
+.rr w\\n(tY
+.rr h\\n(tY
+.rr o\\n(tY
+.rm t\\n(tY
+.rr v\\n(tY
+.nr tY \\n(tY-1
+..
+.\" initial values
+.nr w1 0
+.nr o1 0
+.nr h1 0
+.ds t1
+.nr v1 0
+.nr tY 1
+.\" NS Xr macro - cross reference (man page only)
+.de Xr
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 .tm Usage: .Xr manpage_name [section#] \\*(Pu (#\\n(.c)
+. el \{\
+. ds mN Xr
+. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+. \}
+.\}
+.if \\n(aC>\\n(aP \{\
+. nr aP \\n(aP+1
+. ie \\n(C\\n(aP==1 .tm Usage: .Xr manpage_name [section#] \\*(Pu (#\\n(.c)
+. el \{\
+. ie \\n(C\\n(aP>2 .y\\n(C\\n(aP
+. el \{\
+. as b1 \&\\*(xR\\*(A\\n(aP\fP\s0
+. if \\n(aC>\\n(aP \{\
+. nr aP \\n(aP+1
+. if \\n(C\\n(aP==2 \{\
+. as b1 \&(\\*(A\\n(aP)
+. nr aP \\n(aP+1
+. \}
+. if \\n(aC>=\\n(aP \{\
+. c\\n(C\\n(aP
+. \}
+. \}
+. \}
+. aZ
+. \}
+.\}
+..
+.\" NS Sx macro - cross section reference
+.de Sx
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 .tm Sx Usage: .Sx Section Header \\*(Pu (#\\n(.c)
+. el \{\
+. ds mN Sx
+. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+. \}
+.\}
+.\}
+.if \\n(aC>\\n(aP \{\
+. nr aP \\n(aP+1
+. as b1 \\*(sX
+. nr cF \\n(.f
+. nr cZ \\n(.s
+. nR
+.\}
+..
+.\" NS cC macro - column-list end-list
+.\" NS eW macro - column indent width
+.\" NS cI register - column indent width
+.\" NS W[1-5] macro - establish tabs for list-type column
+.de cC
+'in \\n(.iu-\\n(o\\n(lCu-\\n(w\\n(lCu
+.ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
+.fi
+.tZ
+.nr lC \\n(lC-1
+.tY
+..
+.de W1
+.ta \w\\*(A1 u
+.nr eW \w\\*(A1 u
+'in \\n(.iu+\\n(eWu+\\n(o\\n(lCu
+..
+.de W2
+.ta \w\\*(A1 u +\w\\*(A2 u
+.nr eW \w\\*(A1 u+\w\\*(A2 u
+'in \\n(.iu+\\n(eWu+\\n(o\\n(lCu
+..
+.de W3
+.ta \w\\*(A1 u +\w\\*(A2 u +\w\\*(A3 u
+.nr eW \w\\*(A1 u+\w\\*(A2 u+\w\\*(A3 u
+'in \\n(.iu+\\n(eWu+\\n(o\\n(lCu
+..
+.de W4
+.ta \w\\*(A1 u +\w\\*(A2 u +\w\\*(A3 u +\w\\*(A4 u
+.nr eW \w\\*(A1 u+\w\\*(A2 u +\w\\*(A3 u +\w\\*(A4 u
+'in \\n(.iu+\\n(eWu+\\n(o\\n(lCu
+..
+.de W5
+.ta \w\\*(A1 u +\w\\*(A2 u +\w\\*(A3 u +\w\\*(A4 u +\w\\*(A5 u
+.nr eW \w\\*(A1 u +\w\\*(A2 u +\w\\*(A3 u +\w\\*(A4 u +\w\\*(A5 u
+' in \\n(.iu+\\n(eWu+\\n(o\\n(lCu
+..
+.\" This is packed abnormally close, intercol width should be an option
+.de W6
+.ta \w\\*(A1 u +\w\\*(A2 u +\w\\*(A3 u +\w\\*(A4 u +\w\\*(A5 u +\w\\*(A6
+.nr eW \w\\*(A1 u +\w\\*(A2 u +\w\\*(A3 u +\w\\*(A4 u +\w\\*(A5 u +\w\\*(A6
+' in \\n(.iu+\\n(eWu+\\n(o\\n(lCu
+..
+.\" NS cL macro - column items
+.de cL
+.if \\n(w\\n(lC==0 .nr w\\n(lC \\n(eWu
+.if \\n(.u==0 \{\
+. fi
+' in \\n(.iu+\\n(eWu
+.\}
+.ti -\\n(eWu
+.fV
+.nr aP \\n(aP+1
+.ie \\n(aC>=\\n(aP \{\
+. if "\\*(A\\n(aP"Ta" \{\
+. nr jJ \\n(aP-1
+. rm S\\n(jJ
+. rr jJ
+. \}
+. c\\n(C\\n(aP
+.\}
+.el .tm Usage: .It column_string [Ta [column_string ...] ] (#\\n(.c)
+..
+.\" NS Ta macro - append tab (\t)
+.de Ta
+.ie \\n(aC>0 \{\
+. nr aP \\n(aP+1
+. ie \\n(aC>=\\n(aP \{\
+. if "\\*(A\\n(aP"Ta" \{\
+. nr jJ \\n(aP-1
+. rm S\\n(jJ
+. rr jJ
+. \}
+. as b1 \\t
+. c\\n(C\\n(aP
+. \}
+. el \{\
+. as b1 \\t\\c
+. rm S\\n(aP
+. pB
+. aY
+.\" . ds b1
+. \}
+.\}
+.el \{\
+. tm Usage: Ta must follow column entry: e.g. (#\\n(.c)
+. tm .It column_string [Ta [column_string ...] ]
+.\}
+..
+.\"
+.\" NS Dl macro - display (one line) literal
+.de Dl
+'ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
+.in \\n(.iu+\\n(Dsu
+.ie \\n(aC==0 \{\
+. ie \\n(.$==0 \{\
+. tm Usage: .Dl argument ... (#\\n(.c)
+. \}
+. el \{\
+. ds mN Dl
+. ds A1 \\$1
+. ds A2 \\$2
+. ds A3 \\$3
+. ds A4 \\$4
+. ds A5 \\$5
+. ds A6 \\$6
+. ds A7 \\$7
+. ds A8 \\$8
+. ds A9 \\$9
+. nr fV \\n(.$
+. fV
+. Li
+. \}
+.\}
+.el \{\
+. tm Usage: .Dl not callable by other macros (#\\n(.c)
+.\}
+.in \\n(.iu-\\n(Dsu
+..
+.\"
+.\" NS D1 macro - display (one line)
+.de D1
+'ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
+.in \\n(.iu+\\n(Dsu
+.ie \\n(aC==0 \{\
+. ie \\n(.$==0 \{\
+. tm Usage: .D1 argument ... (#\\n(.c)
+. \}
+. el \{\
+. ds mN D1
+. ds A1 \\$1
+. ds A2 \\$2
+. ds A3 \\$3
+. ds A4 \\$4
+. ds A5 \\$5
+. ds A6 \\$6
+. ds A7 \\$7
+. ds A8 \\$8
+. ds A9 \\$9
+. nr fV \\n(.$
+. fV
+. nr aP \\n(aP+1
+. ie \\n(C\\n(aP==1 .\\*(A\\n(aP
+. el .No
+. \}
+.\}
+.el \{\
+. tm Usage: .D1 not callable by other macros (#\\n(.c)
+.\}
+.in \\n(.iu-\\n(Dsu
+..
+.\" NS Ex macro - DEFUNCT
+.de Ex
+.tm Ex defunct, Use .D1: \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+..
+.\"
+.\" NS Ex macro - DEFUNCT
+.de Ex
+.tm Ex defunct, Use .D1: \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+..
+.\"
+.\" NS Vt macro - Variable type (for forcing old style variable declarations)
+.\" this is not done in the same manner as .Ot for fortrash - clean up later
+.de Vt
+.\" if a function declaration was the last thing given, want vertical space
+.if \\n(fD>0 \{\
+. Pp
+. nr fD 0
+.\}
+.\" if a subroutine was the last thing given, want vertical space
+.if \\n(fZ>0 \{\
+. ie \\n(fX==0 \{\
+. Pp
+. rs
+. \}
+. el .br
+.\}
+.nr fX \\n(fX+1
+.nr cF \\n(.f
+.nr cZ \\n(.s
+\\*(fT\&\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+.ie \\n(oT==0 .br
+.el \&\ \&
+.ft \\n(cF
+.fs \\n(cZ
+..
+.\"
+.\" NS Ft macro - Function type
+.nr fZ 0
+.de Ft
+.if \\n(nS>0 \{\
+. if \\n(fZ>0 \{\
+. Pp
+. nr fD 0
+. nr fX 0
+. \}
+. if \\n(fD>0 \{\
+. Pp
+. nr fD 0
+. nr fX 0
+. \}
+. if \\n(fX>0 \{\
+. Pp
+. nr fX 0
+. \}
+. nr fY 1
+.\}
+.nr cF \\n(.f
+.nr cZ \\n(.s
+\&\\*(fT\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+.ft \\n(cF
+.fs \\n(cZ
+.\" .br
+..
+.\"
+.\" NS Ot macro - Old Function type (fortran - no newline)
+.\" Ns oT register
+.nr oT 0
+.de Ot
+.nr oT 1
+.if \\n(nS>0 \{\
+. if \\n(fZ>0 \{\
+. Pp
+. nr fD 0
+. nr fX 0
+. \}
+. if \\n(fD>0 \{\
+. Pp
+. nr fD 0
+. nr fX 0
+. \}
+. if \\n(fX>0 \{\
+. Pp
+. nr fX 0
+. \}
+. nr fY 1
+.\}
+.if \\n(.$==4 .as b1 \&\\*(fT\&\\$1 \\$2 \\$3 \\$4
+.if \\n(.$==3 .as b1 \&\\*(fT\&\\$1 \\$2 \\$3
+.if \\n(.$==2 .as b1 \&\\*(fT\&\\$1 \\$2
+.if \\n(.$==1 .as b1 \&\\*(fT\&\\$1
+.as b1 \&\ \fP
+..
+.\"
+.\" NS Fa macro - Function arguments
+.de Fa
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 .tm Usage: .Fa Function Arguments ... \\*(Pu (#\\n(.c)
+. el \{\
+. ds mN Fa
+. ds A1 \\$1
+. ds A2 \\$2
+. ds A3 \\$3
+. ds A4 \\$4
+. ds A5 \\$5
+. ds A6 \\$6
+. ds A7 \\$7
+. ds A8 \\$8
+. ds A9 \\$9
+. nr fV \\n(.$
+. fV
+. \}
+.\}
+.ie \\n(fC>0 \{\
+. fC
+.\}
+.el \{\
+. if \\n(aC>\\n(aP \{\
+. as b1 \\*(fA
+. nr aP \\n(aP+1
+. nr cF \\n(.f
+. nr cZ \\n(.s
+. nR
+. if \\n(nS>0 \{\
+. if \\n(fZ>0 .br
+. \}
+. \}
+.\}
+..
+.\" NS fC macro - interal .Fa for .FO and .Fc
+.de fC
+.ie \\n(aC>\\n(aP \{\
+. nr aP \\n(aP+1
+.\" . nr aa \\n(aP
+.\" . if \\n(nS>0 \{\
+. ds Fb
+. nr fB 0
+. nr Fb 0
+. fB \\*(A\\n(aP
+. if \\n(fB>1 \{\
+. rm A\\n(aP
+. rn Fb A\\n(aP
+. \}
+.\" . \}
+. if \\n(fC>1 \{\
+. as b1 \&\f\\n(cF\s\\n(cZ,\\*(S\\n(aP\\*(fA\\*(A\\n(aP\fP\s0
+.\" . as b1 \&\\,\\*(S\\n(aP\fP\s0\\*(fA\\*(A\\n(aP\fP\s0
+. \}
+. if \\n(fC==1 \{\
+. as b1 \&\|\\*(fA\\*(A\\n(aP\fP\s0
+. \}
+. nr fC \\n(fC+1
+. fC
+.\}
+.el \{\
+. aY
+.\}
+..
+.\" NS Fn macro - functions
+.\" NS fY register - dick with old style function declarations (fortran)
+.\" NS fZ register - break a line when more than one function in a synopsis
+.\"
+.de Fn
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 .tm Usage: .Fn function_name function_arg(s) ... \\*(Pu (#\\n(.c)
+. el \{\
+. ds mN Fn
+. ds A1 \\$1
+. ds A2 \\$2
+. ds A3 \\$3
+. ds A4 \\$4
+. ds A5 \\$5
+. ds A6 \\$6
+. ds A7 \\$7
+. ds A8 \\$8
+. ds A9 \\$9
+. nr fV \\n(.$
+. fV
+. \}
+.\}
+.if \\n(nS>0 \{\
+.\" if there is/has been more than one subroutine declaration
+. if \\n(fY==0 \{\
+. if \\n(fZ>0 \{\
+. Pp
+. nr fX 0
+. nr fD 0
+. \}
+. \}
+. if \\n(fY==1 \{\
+. br
+. nr fX 0
+. nr fD 0
+. nr fY 0
+. \}
+. if \\n(fD>0 \{\
+. Pp
+. nr fX 0
+. \}
+. if \\n(fX>0 \{\
+. Pp
+. nr fD 0
+. \}
+. nr fZ \\n(fZ+1
+. nr fY 0
+. rs
+. ie \\n(nS>1 .br
+. el \{\
+. if \\n(iS==0 \{\
+. nr iS ((8)*\\n(fW)u
+. \}
+. \}
+. in +\\n(iSu
+. ti -\\n(iSu
+. nr nS \\n(nS+1
+.\}
+.if \\n(aC>\\n(aP \{\
+. nr aP \\n(aP+1
+. nr cF \\n(.f
+. nr cZ \\n(.s
+. as b1 \\*(fN\\*(A\\n(aP\fP\s0\\*(lp
+. ie \\n(aC>\\n(aP \{\
+. as b1 \\*(fA
+. nr aP \\n(aP+1
+. f\\n(C\\n(aP
+. \}
+. el \{\
+. as b1 \|\\*(rp
+. aZ
+. \}
+. if \\n(nS>0 \{\
+. in -\\n(iSu
+. \}
+.\}
+..
+.\"
+.\" NS f1 macro - class switch
+.\" NS f2 macro - handle function arguments
+.\" NS f3 macro - punctuation
+.\" NS f4 macro - write out function
+.de f1
+.as b1 \\*(rp\f\\n(cF\s\\n(cZ
+.\\*(A\\n(aP
+..
+.de f2
+.if \\n(nS>0 \{\
+. ds Fb
+. nr fB 0
+. nr Fb 0
+. fB \\*(A\\n(aP
+. if \\n(fB>1 \{\
+. rm A\\n(aP
+. rn Fb A\\n(aP
+. \}
+.\}
+.as b1 \\*(A\\n(aP
+.ie \\n(aC>\\n(aP \{\
+. nr aa \\n(aP
+. nr aP \\n(aP+1
+. if \\n(C\\n(aP==2 \{\
+. as b1 \&\|\f\\n(cF\s\\n(cZ,\\*(S\\n(aa\fP\s0\|
+. \}
+. f\\n(C\\n(aP
+.\}
+.el \{\
+. as b1 \\*(rp\f\\n(cF\s\\n(cZ
+. aZ
+.\}
+..
+.de f3
+.as b1 \\*(rp\f\\n(cF\s\\n(cZ\\*(A\\n(aP
+.ie \\n(aC>\\n(aP \{\
+. No
+.\}
+.el .aZ
+..
+.de f4
+.as b1 \\*(rp\f\\n(cF\s\\n(cZ\\*(S\\n(aP\\*(A\\n(aP
+.ie \\n(aC>\\n(aP \{\
+. nr aP \\n(aP+1
+. No
+.\}
+.el .aZ
+..
+.de Fo
+.hy 0
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 .tm Usage: .Fo function_name
+. el \{\
+. ds mN Fo
+. ds A1 \\$1
+. ds A2 \\$2
+. ds A3 \\$3
+. ds A4 \\$4
+. ds A5 \\$5
+. ds A6 \\$6
+. ds A7 \\$7
+. ds A8 \\$8
+. ds A9 \\$9
+. nr fV \\n(.$
+. fV
+. \}
+.\}
+.if \\n(nS>0 \{\
+.\" if there is/has been more than one subroutine declaration
+. if \\n(fY==0 \{\
+. if \\n(fZ>0 \{\
+. Pp
+. nr fX 0
+. nr fD 0
+. \}
+. \}
+. if \\n(fY==1 \{\
+. br
+. nr fX 0
+. nr fD 0
+. nr fY 0
+. \}
+. if \\n(fD>0 \{\
+. Pp
+. nr fX 0
+. \}
+. if \\n(fX>0 \{\
+. Pp
+. nr fD 0
+. \}
+. nr fZ \\n(fZ+1
+. nr fY 0
+. rs
+. ie \\n(nS>1 .br
+. el \{\
+. if \\n(iS==0 \{\
+. nr iS ((8)*\\n(fW)u
+. \}
+. \}
+. in +\\n(iSu
+. ti -\\n(iSu
+. nr nS \\n(nS+1
+.\}
+.if \\n(aC>\\n(aP \{\
+. nr oM \\n(oM+1
+. nr fC 1
+. nr aP \\n(aP+1
+. nr cF \\n(.f
+. nr cZ \\n(.s
+. as b1 \\*(fN\\*(A\\n(aP\fP\s0\\*(lp
+. aY
+.\}
+..
+.de Fc
+.if \\n(aC==0 \{\
+. if \\n(.$>0 \{\
+. ds mN Fo
+. ds A1 \\$1
+. ds A2 \\$2
+. ds A3 \\$3
+. ds A4 \\$4
+. ds A5 \\$5
+. ds A6 \\$6
+. ds A7 \\$7
+. ds A8 \\$8
+. ds A9 \\$9
+. nr fV \\n(.$
+. fV
+. \}
+.\}
+.nr fC 0
+.nr oM \\n(oM-1
+.as b1 \|\\*(rp
+.ie \\n(aC>\\n(aP \{\
+. nr aP \\n(aP+1
+. \\*(A\\n(aP
+.\}
+.el \{\
+. aZ
+.\}
+.if \\n(nS>0 \{\
+. in -\\n(iSu
+.\}
+.hy
+..
+.\" NS fb macro - if SYNOPSIS, set hard space inbetween function args
+.\" NS fb register - count of words in a function argument
+.\" NS Fb register - counter
+.\" NS Fb string - temporary string
+.de fB
+.\" .tm fB==\\n(fB, Fb==\\n(Fb, 1==\\$1 2==\\$2 3==\\$3 4==\\$4 5==\\$5 6==\\$6
+.if \\n(fB==0 \{\
+. nr fB \\n(.$
+. nr Fb 0
+. ds Fb
+.\}
+.nr Fb \\n(Fb+1
+.as Fb \&\\$1
+.if \\n(Fb<\\n(fB \{\
+. as Fb \&\\*(hV
+. fB \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+.\}
+..
+.\" NS Fc - Function close - not implemented yet
+.\" NS Fo - Function open - not implemented yet
+.\"
+.\" Very crude references, stash all reference info into strings (usual
+.\" use of b1 buffer, then b1 contents copied to string of retrievable
+.\" naming convention), print out reference on .Re request and clean up.
+.\" Ordering very limited, no fancy citations, but can do articles, journals
+.\" and books - need to add several missing options (like city etc).
+.\" should be able to grab a refer entry, massage it a wee bit (prefix
+.\" a `.' to the %[A-Z]) and not worry (ha!)
+.\"
+.\" NS Rs macro - Reference Start
+.\" NS rS register - Reference Start flag
+.\" NS rS string - Reference Start buffer name for next save (of b1 buffer)
+.de Rs
+.nr rS 1
+.rC
+.if \\n(nA==1 .Pp
+.nr Kl 0
+..
+.\" NS Re macro - Reference End
+.de Re
+.rZ
+.rC
+.nr rS 0
+..
+.\" NS rC macro - reference cleanup
+.de rC
+.nr uK 0
+.nr jK 0
+.nr nK 0
+.nr oK 0
+.nr qK 0
+.nr rK 0
+.nr tK 0
+.nr vK 0
+.nr dK 0
+.nr pK 0
+.nr bK 0
+.ds rS
+.rm U1 U2 U3 U4 U5 U6 U7 U8
+.rm uK jK nK oK rK qK tK vK dK pK bK
+..
+.\" NS rZ macro - reference print
+.de rZ
+.if \\n(uK \{\&\\*(U1,
+. nr aK 1
+. if (\\n(uK>1 \{\
+. aK
+. \}
+. nr Kl -\\n(uK
+.\}
+.if \\n(tK \{\
+. nr Kl \\n(Kl-1
+. if \\n(Kl==0 \{\
+. ie (\\n(jK==1):(\\n(bK==1) \{\&\\*q\\*(tK\\*q.
+. \}
+. el \{\&\\*(eM\\*(tK\\*(nO.
+. \}
+. \}
+. if \\n(Kl>0 \{\
+. ie (\\n(jK==1):(\\n(bK==1) \{\&\\*q\\*(tK\\*q,
+. \}
+. el \{\&\\*(eM\\*(tK\\*(nO,
+. \}
+. \}
+.\}
+.if \\n(bK \{\
+. nr Kl \\n(Kl-1
+. if \\n(Kl==0 \&\\*(eM\\*(bK\\*(nO.
+. if \\n(Kl>0 \&\\*(eM\\*(bK\\*(nO,
+.\}
+.if \\n(jK \{\
+. nr Kl \\n(Kl-1
+. if \\n(Kl==0 \&\\*(eM\\*(jK\\*(nO.
+. if \\n(Kl>0 \&\\*(eM\\*(jK\\*(nO,
+.\}
+.if \\n(rK \{\
+. nr Kl \\n(Kl-1
+. if \\n(Kl==0 \&\\*(rK.
+. if \\n(Kl>0 \&\\*(rK,
+.\}
+.if \\n(nK \{\
+. nr Kl \\n(Kl-1
+. if \\n(Kl==0 \&\\*(nK.
+. if \\n(Kl>0 \&\\*(nK,
+.\}
+.if \\n(vK \{\
+. nr Kl \\n(Kl-1
+. if \\n(Kl==0 \&\\*(vK.
+. if \\n(Kl>0 \&\\*(vK,
+.\}
+.if \\n(pK \{\
+. nr Kl \\n(Kl-1
+. if \\n(Kl==0 \&\\*(pK.
+. if \\n(Kl>0 \&\\*(pK,
+.\}
+.if \\n(qK \{\
+. nr Kl \\n(Kl-1
+. if \\n(Kl==0 \&\\*(qK.
+. if \\n(Kl>0 \&\\*(qK,
+.\}
+.if \\n(dK \{\
+. nr Kl \\n(Kl-1
+. if \\n(Kl==0 \&\\*(dK.
+. if \\n(Kl>0 \&\\*(dK,
+.\}
+.if \\n(oK \{\
+. nr Kl \\n(Kl-1
+. if \\n(Kl==0 \&\\*(oK.
+. if \\n(Kl>0 \&\\*(oK,
+.\}
+.if \\n(Kl>0 .tm unresolved reference problem
+..
+.\" NS aK macro - print out reference authors
+.de aK
+.nr aK \\n(aK+1
+.ie (\\n(uK-\\n(aK)==0 \{\&and \\*(U\\n(aK,
+.\}
+.el \{\&\\*(U\\n(aK,
+. aK
+.\}
+..
+.\" NS %A macro - reference author(s)
+.\" NS uK register - reference author(s) counter
+.\" NS U[1-9] strings - reference author(s) names
+.de %A
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 .tm Usage: .%A Author_name (#\\n(.c)
+. el \{\
+. nr uK \\n(uK+1
+. nr Kl \\n(Kl+1
+. ds rS U\\n(uK
+. ds mN %A
+. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+. \}
+.\}
+.if \\n(aC>\\n(aP \{\
+. nr aP \\n(aP+1
+. nr cF \\n(.f
+. nr cZ \\n(.s
+. rR
+.\}
+..
+.\" NS %B macro - [reference] Book Name
+.\" NS bK string - Book Name
+.\" NS bK register - Book Name flag
+.de %B
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 .tm Usage: .%B Book Name (#\\n(.c)
+. el \{\
+. ds mN %B
+. if \\n(rS>0 \{\
+. nr bK \\n(bK+1
+. nr Kl \\n(Kl+1
+. ds rS bK
+. \}
+. ds A1 \\$1
+. ds A2 \\$2
+. ds A3 \\$3
+. ds A4 \\$4
+. ds A5 \\$5
+. ds A6 \\$6
+. ds A7 \\$7
+. ds A8 \\$8
+. ds A9 \\$9
+. nr fV \\n(.$
+. fV
+. \}
+.\}
+.if \\n(aC>\\n(aP \{\
+. nr aP \\n(aP+1
+. nr cF \\n(.f
+. nr cZ \\n(.s
+. ie \\n(rS==0 \{\
+. as b1 \&\\*(eM
+. nR
+. \}
+. el .rR
+.\}
+..
+.\" NS %D macro - [reference] Date
+.\" NS dK string - Date String
+.\" NS dK register - Date flag
+.de %D
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 .tm Usage: .%D Date (#\\n(.c)
+. el \{\
+. ds mN %D
+. nr dK \\n(dK+1
+. nr Kl \\n(Kl+1
+. ds rS dK
+. ds A1 \\$1
+. ds A2 \\$2
+. ds A3 \\$3
+. ds A4 \\$4
+. ds A5 \\$5
+. ds A6 \\$6
+. ds A7 \\$7
+. ds A8 \\$8
+. ds A9 \\$9
+. nr fV \\n(.$
+. fV
+. \}
+.\}
+.if \\n(aC>\\n(aP \{\
+. nr aP \\n(aP+1
+. nr cF \\n(.f
+. nr cZ \\n(.s
+. rR
+.\}
+..
+.\" NS %J macro - [reference] Journal Name
+.\" NS jK register - [reference] Journal Name flag
+.\" NS jK string - [reference] Journal Name
+.de %J
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 .tm Usage: .%J Journal Name (#\\n(.c)
+. el \{\
+. ds mN %J
+. nr jK \\n(jK+1
+. ds rS jK
+. nr Kl \\n(Kl+1
+. ds A1 \\$1
+. ds A2 \\$2
+. ds A3 \\$3
+. ds A4 \\$4
+. ds A5 \\$5
+. ds A6 \\$6
+. ds A7 \\$7
+. ds A8 \\$8
+. ds A9 \\$9
+. nr fV \\n(.$
+. fV
+. \}
+.\}
+.if \\n(aC>\\n(aP \{\
+. nr aP \\n(aP+1
+. nr cF \\n(.f
+. nr cZ \\n(.s
+. rR
+.\}
+..
+.\" NS %N macro - [reference] issue number
+.\" NS nK register - [reference] issue number flag
+.\" NS nK string - [reference] issue number
+.de %N
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 .tm Usage: .%N issue number (#\\n(.c)
+. el \{\
+. nr nK \\n(nK+1
+. nr Kl \\n(Kl+1
+. ds rS nK
+. ds mN %N
+. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+. \}
+.\}
+.if \\n(aC>\\n(aP \{\
+. nr aP \\n(aP+1
+. nr cF \\n(.f
+. nr cZ \\n(.s
+. rR
+.\}
+..
+.\" NS %O macro - [reference] optional information
+.\" NS oK register - [reference] optional information flag
+.\" NS oK string - [reference] optional information
+.de %O
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 .tm Usage: .%O optional information ... \\*(Pu (#\\n(.c)
+. el \{\
+. ds mN %O
+. nr oK \\n(oK+1
+. nr Kl \\n(Kl+1
+. ds rS oK
+. ds A1 \\$1
+. ds A2 \\$2
+. ds A3 \\$3
+. ds A4 \\$4
+. ds A5 \\$5
+. ds A6 \\$6
+. ds A7 \\$7
+. ds A8 \\$8
+. ds A9 \\$9
+. nr fV \\n(.$
+. fV
+. \}
+.\}
+.if \\n(aC>\\n(aP \{\
+. nr aP \\n(aP+1
+. nr cF \\n(.f
+. nr cZ \\n(.s
+. rR
+.\}
+..
+.\" NS %P macro - [reference] page numbers
+.\" NS pK register - [reference] page number flag
+.\" NS pK string - [reference] page number
+.de %P
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 .tm Usage: .%P page numbers ... \\*(Pu (#\\n(.c)
+. el \{\
+. ds mN %P
+. nr pK \\n(pK+1
+. nr Kl \\n(Kl+1
+. ds rS pK
+. ds A1 \\$1
+. ds A2 \\$2
+. ds A3 \\$3
+. ds A4 \\$4
+. ds A5 \\$5
+. ds A6 \\$6
+. ds A7 \\$7
+. ds A8 \\$8
+. ds A9 \\$9
+. nr fV \\n(.$
+. fV
+. \}
+.\}
+.if \\n(aC>\\n(aP \{\
+. nr aP \\n(aP+1
+. nr cF \\n(.f
+. nr cZ \\n(.s
+. rR
+.\}
+..
+.\" NS %Q macro - Corporate or Foreign Author
+.\" NS qK string - Corporate or Foreign Author
+.\" NS qK register - Corporate or Foreign Author flag
+.de %Q
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 .tm Usage: .%Q Corporate or Foreign Author (#\\n(.c)
+. el \{\
+. ds mN %Q
+. nr qK \\n(qK+1
+. nr Kl \\n(Kl+1
+. ds rS qK
+. ds A1 \\$1
+. ds A2 \\$2
+. ds A3 \\$3
+. ds A4 \\$4
+. ds A5 \\$5
+. ds A6 \\$6
+. ds A7 \\$7
+. ds A8 \\$8
+. ds A9 \\$9
+. nr fV \\n(.$
+. fV
+. \}
+.\}
+.if \\n(aC>\\n(aP \{\
+. nr aP \\n(aP+1
+. nr cF \\n(.f
+. nr cZ \\n(.s
+. rR
+.\}
+..
+.\" NS %R macro - [reference] report name
+.\" NS rK string - [reference] report name
+.\" NS rK register - [reference] report flag
+.de %R
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 .tm Usage: .%R reference report (#\\n(.c)
+. el \{\
+. ds mN %R
+. nr rK \\n(rK+1
+. nr Kl \\n(Kl+1
+. ds rS rK
+. ds A1 \\$1
+. ds A2 \\$2
+. ds A3 \\$3
+. ds A4 \\$4
+. ds A5 \\$5
+. ds A6 \\$6
+. ds A7 \\$7
+. ds A8 \\$8
+. ds A9 \\$9
+. nr fV \\n(.$
+. fV
+. \}
+.\}
+.if \\n(aC>\\n(aP \{\
+. nr aP \\n(aP+1
+. nr cF \\n(.f
+. nr cZ \\n(.s
+. rR
+.\}
+..
+.\" NS %T macro - reference title
+.\" NS tK string - reference title
+.\" NS tK register - reference title flag
+.de %T
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 .tm Usage: .%T (#\\n(.c)
+. el \{\
+. ds mN %T
+. if \\n(rS>0 \{\
+. nr tK \\n(tK+1
+. nr Kl \\n(Kl+1
+. ds rS tK
+. \}
+. ds A1 \\$1
+. ds A2 \\$2
+. ds A3 \\$3
+. ds A4 \\$4
+. ds A5 \\$5
+. ds A6 \\$6
+. ds A7 \\$7
+. ds A8 \\$8
+. ds A9 \\$9
+. nr fV \\n(.$
+. fV
+. \}
+.\}
+.if \\n(aC>\\n(aP \{\
+.\" . ie \\n(jS==1 \{\
+.\" . nr cF \\n(.f
+.\" . nr cZ \\n(.s
+.\" . ds qL \&\\*(Lq\\*(rA
+.\" . ds qR \&\\*(Rq\f\\n(cF\s\\n(cZ
+.\" . En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+.\" . \}
+.\" . el \{\
+. nr aP \\n(aP+1
+. nr cF \\n(.f
+. nr cZ \\n(.s
+. ie \\n(rS==0 \{\
+. as b1 \&\\*(eM
+. nR
+. \}
+. el .rR
+.\" . \}
+.\}
+..
+.\" NS %V macro - reference volume
+.\" NS vK string - reference volume
+.\" NS vK register - reference volume flag
+.de %V
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 .tm Usage: .%V Volume , ... \\*(Pu (#\\n(.c)
+. el \{\
+. ds mN %V
+. nr vK \\n(vK+1
+. nr Kl \\n(Kl+1
+. ds rS vK
+. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+. \}
+.\}
+.if \\n(aC>\\n(aP \{\
+. nr aP \\n(aP+1
+. nr cF \\n(.f
+. nr cZ \\n(.s
+. rR
+.\}
+..
+.\" NS rR macro - reference recursion routine
+.\" NS jM local register
+.\" NS jN local register
+.de rR
+.hy 0
+.nr jM \\n(C\\n(aP
+.ie \\n(jM==1 \{\
+.\" . as b1 \&\f\\n(cF\s\\n(cZ
+. ie "\\*(A\\n(aP"Tn" \{\
+. nN
+. \}
+. el \{\
+. if \\n(aC>8 .tm Usage: \\*(mN - maximum 8 arguments (#\\n(.c)
+. aI rR 1
+. \\*(A\\n(aP
+. \}
+.\}
+.el \{\
+. nr jN \\n(aP
+. ie \\n(jM==2 .as b1 \&\\*(A\\n(aP
+. el .as b1 \&\\*(A\\n(aP
+.\" . el .as b1 \&\f\\n(cF\s\\n(cZ\\*(A\\n(aP\fP\s0
+. ie \\n(aC==\\n(aP \{\
+.\" . as b1 \&\f\\n(cF\s\\n(cZ
+. rD
+. \}
+. el \{\
+. nr aP \\n(aP+1
+. as b1 \&\\*(S\\n(jN
+. rR
+. \}
+.\}
+.rr jM jN
+..
+.\" NS rD macro - save b1 buffer in to appropriate name
+.de rD
+.as \\*(rS \\*(b1
+.ds b1
+.ds rS
+.aY
+..
+.\" NS Hf macro - source include header files.
+.de Hf
+.Pp
+File:
+.Pa \\$1
+.Pp
+.nr cF \\n(.f
+.nr cZ \\n(.s
+.ie t \{\
+\&\\*(lI
+.br
+.ta +9n 18n 27n 36n 45n 54n 63n 72n
+.\}
+.el \{\
+.ta +8n 16n 24n 32n 40n 48n 56n 64n 72n
+.\}
+.nf
+.so \\$1
+.fi
+.ft \\n(cF
+.fz \\n(cZ
+.Pp
+..
+.\" NS An macro - author name
+.\" NS aN register
+.nr aN 0
+.de An
+.if \\n(nY==1 \{\
+. ie \\n(aN==1 \{\
+. br
+. \}
+. el \{\
+. nr aN 1
+. \}
+.\}
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 .tm Usage: .An author_name ... \\*(Pu (#\\n(.c)
+. el \{\
+. ds mN An
+. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+. \}
+.\}
+.if \\n(aC>\\n(aP \{\
+. nr aP \\n(aP+1
+. nr cF \\n(.f
+. nr cZ \\n(.s
+. nR
+.\}
+..
+.\" NS Sf macro -defunct
+.de Sf
+.tm .Sf defunct, use prefix or Ns
+..
+.ds rV "function returns the value 0 if successful; otherwise the value -1 is returned and the global variable \\*(vAerrno\fP is set to indicate the error.
+.\" Ns Rv macro - return values
+.\" Ns rV string - standard return message
+.de Rv
+.ie \\n(.$==0 \{\
+.tm Usage: .Rv [-std] (#\\n(.c)
+.\}
+.el \{\
+. ds mN Rv
+.\" . nr aP 0
+.\" . nr lR \\n(lR+1
+.\" . ds A1 \\$2
+.\" . ds A2 \\$3
+.\" . ds A3 \\$4
+.\" . ds A4 \\$5
+.\" . ds A5 \\$6
+.\" . ds A6 \\$7
+.\" . ds A7 \\$8
+.\" . ds A8 \\$9
+.\" . nr fV \\n(.$-1
+. if "\\$1"-std" \{\
+. nr cH \\*(cH
+. if (\\n(cH<2):(\\n(cH>3) .tm Usage: .Rv -std sections 2 and 3 only
+. br
+\&The
+.Fn \\$2
+\&\\*(rV
+. \}
+.\}
+..
diff --git a/share/tmac/doc-common b/share/tmac/doc-common
new file mode 100644
index 00000000000..241633ac977
--- /dev/null
+++ b/share/tmac/doc-common
@@ -0,0 +1,466 @@
+.\" Copyright (c) 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)doc-common 5.7 (Berkeley) 8/5/91
+.\"
+.\" %beginstrip%
+.nr %A 1
+.nr %J 1
+.nr %N 1
+.nr %O 1
+.nr %R 1
+.nr %T 1
+.nr %V 1
+.nr Ad 12n
+.nr Ac 3
+.nr Ao 12n
+.nr Ap 2
+.nr An 12n
+.nr Aq 12n
+.nr Ar 12n
+.nr Bc 3
+.nr Bl 1
+.nr Bo 12n
+.nr Bq 12n
+.nr Bx 12n
+.nr Cd 12n
+.nr Cm 10n
+.nr Co 15n
+.nr Cx 20n
+.nr Dc 3
+.nr Do 10n
+.nr Dq 12n
+.nr Ds 6n
+.nr Dq 12n
+.nr Dv 12n
+.nr tI \n(Dsu
+.nr Ec 3
+.nr El 1
+.nr Eo 12n
+.nr Eq 12n
+.nr Em 10n
+.nr Er 12n
+.nr Ev 15n
+.nr Ex 10n
+.nr Fa 12n
+.nr Fl 10n
+.nr Fc 3
+.nr Fo 16n
+.nr Fn 16n
+.nr Hl 1
+.nr I1 6n
+.nr I2 12n
+.nr I3 18n
+.nr Ic 10n
+.nr Li 16n
+.nr Ms 6n
+.nr Nm 10n
+.nr No 12n
+.nr Ns 2
+.nr Oo 10n
+.nr Oc 3
+.nr Op 14n
+.nr Pa 32n
+.nr Pf 12n
+.nr Pc 3
+.nr Po 12n
+.nr Pq 12n
+.nr Ql 16n
+.nr Qc 3
+.nr Qo 12n
+.nr Qq 12n
+.nr Sc 3
+.nr So 12n
+.nr Sq 12n
+.nr Sy 6n
+.nr Sx 16n
+.nr Ra 1
+.nr Rj 1
+.nr Rn 1
+.nr Ro 1
+.nr Rr 1
+.nr Rt 1
+.nr Rv 1
+.nr Tn 10n
+.nr Ta 1
+.nr Tv 1
+.nr Tx 22n
+.nr Ux 10n
+.nr Va 12n
+.nr Xc 3
+.nr Xo 1
+.nr Xr 10n
+.ds sV \& \&
+.ds hV \&\ \&
+.ds iV \& \&
+.ds tV \&\\t\&
+.\" Punctuation values (3 = closing punctuation, 4 = opening)
+.nr z. 3
+.nr z, 3
+.nr z: 3
+.nr z; 3
+.nr z( 4
+.nr z) 3
+.nr z[ 4
+.nr z] 3
+.\" Matching pairs
+.ds z( z)
+.ds z[ z]
+.ds z< z>
+.\" This is disgusting, troff not parse ``if'' stmt properly
+.nr z0 0
+.nr z1 0
+.nr z2 0
+.nr z3 0
+.nr z4 0
+.nr z5 0
+.nr z6 0
+.nr z7 0
+.nr z8 0
+.nr z9 0
+.nr z# 0
+.\" Header assembly macros
+.de Dt
+.ds dT UNTITLED
+.ds vT LOCAL
+.ds cH Null
+.if !"\\$1"" .ds dT \\$1
+.if !"\\$2"" \{\
+. ds cH \\$2
+.\" . if "\\$3"" \{\
+. if \\$2>=1 .if \\$2<=8 \{\
+. ds vT NetBSD Reference Manual
+. if \\$2>1 .if \\$2<6 .ds vT NetBSD Programmer's Manual
+. if "\\$2"8" .ds vT NetBSD System Manager's Manual
+. nr sN \\$2
+. \}
+. if "\\$2"unass" .ds vT DRAFT
+. if "\\$2"draft" .ds vT DRAFT
+. if "\\$2"paper" .ds vT UNTITLED
+.\" . \}
+.\}
+.if !"\\$3"" \{\
+. if "\\$3"USD" .ds vT NetBSD User's Supplementary Documents
+. if "\\$3"PS1" .ds vT NetBSD Programmers's Supplementary Documents
+. if "\\$3"AMD" .ds vT NetBSD Ancestral Manual Documents
+. if "\\$3"SMM" .ds vT NetBSD System Manager's Manual
+. if "\\$3"URM" .ds vT NetBSD Reference Manual
+. if "\\$3"PRM" .ds vT NetBSD Programmers's Manual
+. if "\\$3"IND" .ds vT NetBSD Manual Master Index
+.\" . if "\\$3"CON" .ds vT NetBSD Contributed Software Manual
+.\" . if "\\$3"IMP" .ds vT NetBSD Implementation Notes
+.\" . if "\\$3"HOW" .ds vT NetBSD How Pocket Manual
+. if "\\$3"LOCAL" .ds vT NetBSD Local Manual
+. if "\\$3"amiga" .as vT \ (AMIGA Architecture)
+. if "\\$3"da30" .as vT \ (DA30 Architecture)
+. if "\\$3"hp300" .as vT \ (HP300 Architecture)
+. if "\\$3"i386" .as vT \ (I386 Architecture)
+. if "\\$3"mac68k" .as vT \ (MAC68K Architecture)
+. if "\\$3"pc532" .as vT \ (PC532 Architecture)
+. if "\\$3"pmax" .as vT \ (PMAX Architecture)
+. if "\\$3"sparc" .as vT \ (SPARC Architecture)
+. if "\\$3"sun3" .as vT \ (SUN3 Architecture)
+. if "\\$3"tahoe" .as vT \ (TAHOE Architecture)
+. if "\\$3"vax" .as vT \ (VAX Architecture)
+. if "\\*(vT"LOCAL" .ds vT \\$3
+.\}
+..
+.\" NS Os macro - Operating System (behaviour changes after first call)
+.\" . ds vT \f(CODRAFT\fP\ \ \-\-\ \ \\*(vT\ \ \-\-\ \ \f(CODRAFT
+.\" . ds dD \f(CODRAFT\fP\ \ \-\-\ \ \\*(dD\ \ \-\-\ \ \f(CODRAFT
+.\" .ds vT \s+4\f(CODRAFT\fP\s-4\ \ \-\-\ \ \\*(vT\ \ \-\-\ \ \s+4\f(CODRAFT\s-4
+.\" .ds dD \s+4\f(CODRAFT\fP\s-4\ \ \-\-\ \ \\*(dD\ \ \-\-\ \ \s+4\f(CODRAFT\s-4
+.de Os
+.ds oS Null
+.if "\\$1"" \{\
+. ds oS BSD Experimental
+.\}
+.if "\\$2"" \{\
+. ds aa Non-Null
+.\}
+.if "\\$1"ATT" \{\
+. ds oS AT&T
+. if "\\$2"" .as oS \0UNIX
+. if "\\$2"7th" .as oS \07th Edition
+. if "\\$2"7" .as oS \07th Edition
+. if "\\$2"III" .as oS \0System III
+. if "\\$2"3" .as oS \0System III
+. if "\\$2"V" .as oS \0System V
+. if "\\$2"V.2" .as oS \0System V Release 2
+. if "\\$2"V.3" .as oS \0System V Release 3
+. if "\\$2"V.4" .as oS \0System V Release 4
+.\}
+.if "\\$1"BSD" \{\
+. if "\\$2"3" .ds oS 3rd Berkeley Distribution
+. if "\\$2"4" .ds oS 4th Berkeley Distribution
+. if "\\$2"4.1" .ds oS 4.1 Berkeley Distribution
+. if "\\$2"4.2" .ds oS 4.2 Berkeley Distribution
+. if "\\$2"4.3" .ds oS 4.3 Berkeley Distribution
+. if "\\$2"4.3T" .ds oS 4.3-Tahoe Berkeley Distribution
+. if "\\$2"4.3R" .ds oS 4.3-Reno Berkeley Distribution
+. if "\\$2"4.3t" .ds oS 4.3-Tahoe Berkeley Distribution
+. if "\\$2"4.3r" .ds oS 4.3-Reno Berkeley Distribution
+. if "\\$2"4.4" .ds oS BSD Experimental
+.\}
+.if "\\$1"NetBSD" \{\
+. ds oS NetBSD
+. if "\\$2"0.8" .as oS \00.8
+. if "\\$2"0.8a" .as oS \00.8a
+. if "\\$2"0.9" .as oS \00.9
+. if "\\$2"0.9a" .as oS \00.9a
+. if "\\$2"1.0" .as oS \01.0
+. if "\\$2"1.1" .as oS \01.1 Experimental
+.\}
+.if "\\*(oS"Null" .ds oS \0\\$1
+.if "\\*(aa"Non-Null" .as oS \0\\$2
+.rm aa
+..
+.de Dd
+.if !"\\*(dD"" .nr gX 1
+.ie \\n(.$>0 \{\
+. ie \\n(.$==3 \{\
+. ds dD \\$1 \\$2 \\$3
+. \}
+. el \{\
+. if "\\n(mo"1" .ds dD January
+. if "\\n(mo"2" .ds dD February
+. if "\\n(mo"3" .ds dD March
+. if "\\n(mo"4" .ds dD April
+. if "\\n(mo"5" .ds dD May
+. if "\\n(mo"6" .ds dD June
+. if "\\n(mo"7" .ds dD July
+. if "\\n(mo"8" .ds dD August
+. if "\\n(mo"9" .ds dD September
+. if "\\n(mo"10" .ds dD October
+. if "\\n(mo"11" .ds dD November
+. if "\\n(mo"12" .ds dD December
+. as dD \&\ \\n(dy, 19\\n(yr
+. \}
+.\}
+.el \{\
+. ds dD Epoch
+.\}
+..
+.de hM
+.ev 1
+.pL
+.if !\\n(cR 'sp \\n(Hmu
+.tl @\\*(Hs\\*(hT\fP@\\*(Vs\\*(vT\fP@\\*(Hs\\*(hT\fP@
+'sp \\n(Hmu
+.ev
+..
+.de fM
+.ie \\n(cR 'br
+.el \{\
+. ev 1
+. pL
+. if !\\n(cR \{\
+' sp \\n(Fmu
+. tl @\\*(Hs\\*(oS\fP@\\*(Vs\\*(dD\fP@%@
+' bp
+. \}
+. ev
+.\}
+.\" .tm IN 444 fM .k == \\n(.k and nl == \\n(nl
+..
+.de lM
+.fl
+.if \\n(cR \{\
+' sp
+. tl @\\*(Hs\\*(oS\fP@\\*(Vs\\*(dD\fP@%@
+. pl \\n(nlu
+.\}
+..
+.de Pp
+.sp \\n(Ppu
+.ne 2
+.ns
+..
+.de Lp
+.Pp
+..
+.de LP
+.tm Not a \-mdoc command: .LP
+..
+.de PP
+.tm Not a \-mdoc command: .PP
+..
+.de pp
+.tm Not a \-mdoc command: .pp
+..
+.de Nd
+\&\-\& \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+..
+.de Ss
+.sp
+.ne 2
+.ti -.25i
+\&\\*(sH\\$1 \|\\$2 \|\\$3 \|\\$4 \|\\$5 \|\\$6 \|\\$7 \|\\$8 \|\\$9
+\&\fP\s0
+.ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
+.if !\\n(cR .ne 2
+.br
+..
+.de Rd
+.tm MDOC REGISTER DUMP
+.tm Db==\\n(Db register DEBUG MODE
+.tm L[0-9] registers - stack of list types
+.tm L0==\\n(L0
+.tm L1==\\n(L1
+.tm L2==\\n(L2
+.tm L3==\\n(L3
+.tm L4==\\n(L4
+.tm L5==\\n(L5
+.tm L6==\\n(L6
+.tm L7==\\n(L7
+.tm L8==\\n(L8
+.tm L9==\\n(L9
+.tm O[0-9] registers - stack of indent
+.tm O0==\\n(O0
+.tm O1==\\n(O1
+.tm O2==\\n(O2
+.tm O3==\\n(O3
+.tm O4==\\n(O4
+.tm O5==\\n(O5
+.tm O6==\\n(O6
+.tm O7==\\n(O7
+.tm O8==\\n(O8
+.tm O9==\\n(O9
+.tm aC==\\n(aC register argument counter (aV/fV)
+.tm aJ==\\n(aJ register (for vR)
+.tm aN==\\n(aN register
+.tm aP==\\n(aP register argument pointer (aV)
+.tm aT==\\n(aT register argument type
+.tm aa==\\n(aa local register
+.tm bK==\\n(bK register - Book Name flag
+.tm cF==\\n(cF register save current font
+.tm cI==\\n(cI register - column indent width
+.tm cZ==\\n(cZ register save current font size
+.tm dK==\\n(dK register - Date flag
+.tm d[0-9] registers - display-type stack
+.tm d0==\\n(d0
+.tm d1==\\n(d1
+.tm d2==\\n(d2
+.tm d3==\\n(d3
+.tm d4==\\n(d4
+.tm d5==\\n(d5
+.tm d6==\\n(d6
+.tm d7==\\n(d7
+.tm d8==\\n(d8
+.tm d9==\\n(d9
+.tm dZ==\\n(dZ register diversion count
+.tm fD==\\n(fD register subroutine test (in synopsis only)
+.tm fV==\\n(fV register argument counter (must set to \\n(.$ prior to
+.tm fY==\\n(fY register - dick with old style function declarations (fortran)
+.tm fZ==\\n(fZ register also subroutine count (in synopsis only)
+.tm h[0-9] register horizontal tag stack (continuous if 1, break if
+.tm h0==\\n(h0
+.tm h1==\\n(h1
+.tm h2==\\n(h2
+.tm h3==\\n(h3
+.tm h4==\\n(h4
+.tm h5==\\n(h5
+.tm h6==\\n(h6
+.tm h7==\\n(h7
+.tm h8==\\n(h8
+.tm h9==\\n(h9
+.tm iD==\\n(iD local register
+.tm iI==\\n(iI local register (indent for inline debug mode)
+.tm iN==\\n(iN register DEBUG MODE (inline if 1, to stderr if
+.tm iS==\\n(iS register - indent second command line in a synopsis
+.tm jK==\\n(jK register - [reference] Journal Name flag
+.tm jM==\\n(jM local register
+.tm jN==\\n(jN local register
+.tm lC==\\n(lC register - list type stack counter
+.tm lK==\\n(lK register count of lines read from input file
+.tm nK==\\n(nK register - [reference] issue number flag
+.tm nU==\\n(nU register count
+.tm oK==\\n(oK register - [reference] optional information flag
+.tm oM==\\n(oM register (extension possible)
+.tm o[0-9] register offset stack (nested tags)
+.tm o0==\\n(o0
+.tm o1==\\n(o1
+.tm o2==\\n(o2
+.tm o3==\\n(o3
+.tm o4==\\n(o4
+.tm o5==\\n(o5
+.tm o6==\\n(o6
+.tm o7==\\n(o7
+.tm o8==\\n(o8
+.tm o9==\\n(o9
+.tm oM==\\n(oM register open ended line flag
+.tm pK==\\n(pK register - [reference] page number flag
+.tm qK==\\n(qK register - Corporate or Foreign Author flag
+.tm rK==\\n(rK register - [reference] report flag
+.tm rS==\\n(rS register - Reference Start flag
+.tm sM==\\n(sM register - default is one (space mode on)
+.tm tK==\\n(tK register - reference title flag
+.tm tP==\\n(tP register tag flag (for diversions)
+.tm tX==\\n(tX register (initial class)
+.tm tY==\\n(tY register (next possible lC value)
+.tm t[0-9] register tag string stack (nested tags)
+.tm t0==\\n(t0
+.tm t1==\\n(t1
+.tm t2==\\n(t2
+.tm t3==\\n(t3
+.tm t4==\\n(t4
+.tm t5==\\n(t5
+.tm t6==\\n(t6
+.tm t7==\\n(t7
+.tm t8==\\n(t8
+.tm t9==\\n(t9
+.tm uK==\\n(uK register - reference author(s) counter
+.tm vK==\\n(vK register - reference volume flag
+.tm v[0-9] register vertical tag break stack
+.tm v0==\\n(v0
+.tm v1==\\n(v1
+.tm v2==\\n(v2
+.tm v3==\\n(v3
+.tm v4==\\n(v4
+.tm v5==\\n(v5
+.tm v6==\\n(v6
+.tm v7==\\n(v7
+.tm v8==\\n(v8
+.tm v9==\\n(v9
+.tm w[0-9] register tag stack (nested tags)
+.tm w0==\\n(w0
+.tm w1==\\n(w1
+.tm w2==\\n(w2
+.tm w3==\\n(w3
+.tm w4==\\n(w4
+.tm w5==\\n(w5
+.tm w6==\\n(w6
+.tm w7==\\n(w7
+.tm w8==\\n(w8
+.tm w9==\\n(w9
+.tm xX==\\n(xX local register
+.tm END OF REGISTER DUMP
+..
diff --git a/share/tmac/doc-ditroff b/share/tmac/doc-ditroff
new file mode 100644
index 00000000000..d63923eb5e7
--- /dev/null
+++ b/share/tmac/doc-ditroff
@@ -0,0 +1,269 @@
+.\" Copyright (c) 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)doc-ditroff 5.8 (Berkeley) 8/5/91
+.\"
+.\" tmac.mdoc-ditroff
+.\" %beginstrip%
+.\"
+.ds aD \fI\s10
+.ds aR \f(CO\s10
+.ds cM \f(CB\s10
+.ds dF \fR\s10
+.ds eM \fI\s10
+.ds eR \fC\s10
+.ds eV \fC\s10
+.ds fA \f(CO\s10
+.ds fD \f(CB\s10
+.ds fL \f(CB\s10
+.ds fN \f(CB\s10
+.ds fP \fP\s0
+.ds fS \s0
+.ds fT \f(CO\s10
+.ds Hs \fR\s10
+.ds iC \f(CB\s10
+.ds lI \fC
+.ds lP \fR\|(\|\fP\s10
+.ds lp \fR(\fP\s10
+.ds rP \fR\|)\|\fP\s10
+.ds rp \fR)\fP\s10
+.ds lB \fR\^[\^\fP\s10
+.ds rB \fR\^]\fP\s10
+.ds mL \fB\s10
+.ds nM \f(CB\s10
+.ds nO \fR\s10
+.ds nT \s0
+.ds pA \fC\s10
+.ds Pu \fR{\ .\ ,\ :\ ;\ (\ )\ [\ ]\ \fR}
+.ds rA \fR\s10
+.ds rT \f(CO\s10
+.ds sH \fB\s10
+.ds sP \s0
+.ds sY \fB\s10
+.ds sX \fR\s10
+.ds tF \fR
+.ds tN \s9
+.ds vA \fI\s10
+.ds Vs \fR\s10
+.ds vT \f(CB\s10
+.ds xR \fC\s10
+.tr *\(**
+.nr sI \w\fC,u*5
+.nr Ti \n(sIu
+.nr Pp .5v
+.ds lS \0
+.nr lS \w'\0'u
+.nr dI 6n
+.de pL
+.nr Hm .5i
+.nr Fm .5i
+.nr ll 6.5i
+.ll 6.5i
+.nr lt 6.5i
+.lt 6.5i
+.nr po 1i
+.po 1.i
+.nr dV .5v
+..
+.ds <= \(<=
+.ds >= \(>=
+.ds Lq \&``
+.ds Rq \&''
+.ds ua \(ua
+.ds aa \(aa
+.ds ga \(ga
+.ds sR \&'
+.ds sL \&`
+.ds q \&"
+.\" Math stuff
+.ds Pi \(*p
+.ds Ne \(!=
+.ds Le \(<=
+.ds Ge \(>=
+.ds Lt <
+.ds Gt >
+.ds Pm \(+-
+.ds If \(if
+.ds Na \fINaN\fP
+.ds Ba \fR\&|\fP
+.\"
+.nr gX 0
+.de hK
+.ds hT \\*(dT
+.if !"\\*(cH"Null" \{\
+. ie !"\\*(gP"Null" .as hT \|(\|\\*(cH\\*(gP\|)
+. el .as hT \\|(\\|\\*(cH\\|)
+.\}
+.if "\\*(cH"Null" \{\
+. if !"\\*(gP"Null" .as hT \&\|(\|\\*(gP\|)
+.\}
+.wh 0 hM
+.wh -1.25i fM
+.\" .tm Here is gX == \\n(gX
+.ie \\n(gX==1 \{\
+. rm n1
+. if \\n(.g .br
+. if !\\n(.g .bp
+.\}
+.el \{\
+. if \\n(.g .br
+. if !\\n(.g 'bp
+.\}
+.nr % 1
+.nr gX 0
+.em lM
+..
+.\"
+.nr fW \w\fC0
+.de sW
+.nr sW \w\fC\\$1
+.ie \\n(sW>=\\n(fW \{\
+. ie \\n(sW%\\n(fW .nr sW (\\n(sW/\\n(fW)+1
+. el .nr sW \\n(sW/\\n(fW
+.\}
+.el \{\
+. ie \\n(sW>0 .nr sW 1
+. el .nr sW 0
+.\}
+..
+.\"
+.de aW
+.nr sW \w\fC\\*(A\\$1
+.ie \\n(sW>=\\n(fW \{\
+. ie \\n(sW%\\n(fW .nr sW (\\n(sW/\\n(fW)+1
+. el .nr sW \\n(sW/\\n(fW
+.\}
+.el \{\
+. ie \\n(sW>0 .nr sW 1
+. el .nr sW 0
+.\}
+..
+.\" NS Ql macro - Quoted literal define
+.de Ql
+.if \\n(aC==0 \{\
+. ds mN Ql
+. ds A1 \\$1
+. ds A2 \\$2
+. ds A3 \\$3
+. ds A4 \\$4
+. ds A5 \\$5
+. ds A6 \\$6
+. ds A7 \\$7
+. ds A8 \\$8
+. nr fV \\n(.$
+. fV
+.\}
+.nr aP \\n(aP+1
+.aW \\n(aP
+.nr aP \\n(aP-1
+.if \\n(sW>2 .Li
+.if \\n(sW<=2 \{\
+.\" Db on
+. if (\\n(aP>0) \{\
+. ds A\\n(aP Li
+. nr aP \\n(aP -1
+. \}
+. if (\\n(aP==0) \{\
+. rm C0 C1 C2 C3 C4 C5 C6 C7 C8 C9
+. rm S1 S2 S3 S4 S5 S6 S7 S8 S9
+. rn A8 A9
+. rn A7 A8
+. rn A6 A7
+. rn A5 A6
+. rn A4 A5
+. rn A3 A4
+. rn A2 A3
+. rn A1 A2
+. ds A1 Li
+. nr fV \\n(aC+1
+. nr aC 0
+. fV
+. \}
+. ds qL \&\\*(sL
+. ds qR \&\\*(sR
+. En
+.\" Db off
+.\}
+..
+.\" NS Sh macro - Section Headers
+.\" NS nS register - Section Header SYNOPSIS flag
+.\" NS nF register - Section Header FILES flag
+.\" NS nA register - Section Header SEE ALSO flag
+.\" NS nT register - Section Header STANDARDS flag
+.de Sh
+.nr nS 0
+.nr sE 0
+.nr iS 0
+'ad
+.ie "\\$1"NAME" \{\
+. hK
+' in 0
+.\}
+.el \{\
+. nr nS 0
+. nr nA 0
+. nr nF 0
+. nr nT 0
+. nr nY 0
+. nr oT 0
+. if "\\$1"SYNOPSIS" \{\
+. na
+. nr nS 1
+. \}
+. if "\\$1"DESCRIPTION" \{\
+. nr fY 0
+. nr fZ 0
+. nr fB 0
+. nr Fb 0
+. ds Fb
+. \}
+. if "\\$1"SEE" \{\
+. nr nA 1
+. na
+. \}
+. if "\\$1"FILES" .nr nF 1
+. if "\\$1"STANDARDS" .nr nT 1
+. if "\\$1"AUTHORS" .nr nY 1
+. if "\\$1"SEE" .nr sE 1
+. in 0
+. nr aN 0
+.\}
+.pL
+'sp
+.ns
+.ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
+.if !\\n(cR .ne 3
+'fi
+\&\\*(sH\\$1 \|\\$2 \|\\$3 \|\\$4 \|\\$5 \|\\$6 \|\\$7 \|\\$8 \|\\$9
+\&\fP\s0\&
+.in \\n(.iu+\\n(Tiu
+.ns
+..
diff --git a/share/tmac/doc-nroff b/share/tmac/doc-nroff
new file mode 100644
index 00000000000..c036f218125
--- /dev/null
+++ b/share/tmac/doc-nroff
@@ -0,0 +1,225 @@
+.\" Copyright (c) 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)doc-nroff 5.6 (Berkeley) 8/5/91
+.\"
+.\" tmac.mdoc-nroff
+.\" %beginstrip%
+.\"
+.ds aD \fI
+.ds aR \fI
+.ds cM \fB
+.ds dF \fR
+.ds eM \fI
+.ds eR \fR
+.ds eV \fR
+.ds fA \fI
+.ds fD \fB
+.ds fL \fB
+.ds fN \fB
+.ds fP \fP
+.ds fS
+.ds fT \fI
+.ds Hs \fR
+.ds iC \fB
+.ds lI \fR
+.ds lP \fR\|(\fP
+.ds rP \fR\|)\fP
+.ds lp \fR\|(\fP
+.ds rp \fR\|)\fP
+.ds lB \fR\|[\|\fP
+.ds rB \fR\|]\fP
+.ds mL \fB
+.ds nM \fB
+.ds nO \fR
+.ds pA \fI
+.ds Pu {\ .\ ,\ ;\ :\ (\ )\ [\ ]}
+.ds rA \fR
+.ds rT \fI
+.ds sH \fB
+.ds sP
+.ds sY \fB
+.ds sX \fI
+.ds tF \fR
+.ds tN
+.ds vA \fI
+.ds Vs \fR
+.ds vT \fB
+.ds xR \fR
+.\" MISCELLANEOUS
+.nr sI .5i
+.nr Ti .5i
+.nr cR 1
+.nr Pp 1v
+.ds lS \0\0
+.nr lS \w'\0\0'u
+.nr dI 6n
+.\"
+.de pL
+.ie \\n(cR .nr Hm 0
+.el .nr Hm .5i
+.nr Fm .5i
+.nr ll 78n
+.ll 78n
+.nr lt 78n
+.lt 78n
+.nr po 0i
+.po 0i
+.nr dV 1v
+.ad l
+.na
+..
+.ds <= \&<\&=
+.ds >= \&>\&=
+.ds Rq ''
+.ds Lq ``
+.ds ua ^
+.ds aa \'
+.ds ga \`
+.ds sL `
+.ds sR '
+.ds q \&"
+.\" Math stuff
+.ds Pi pi
+.ds Ne !=
+.ds Le <=
+.ds Ge >=
+.ds Lt <
+.ds Gt >
+.ds Pm +-
+.ds If infinity
+.ds Na \fINaN\fP
+.ds Ba \fR\&|\fP
+
+.\"
+.de hK
+.nr % 1
+.ds hT \\*(dT
+.if !"\\*(cH"Null" \{\
+. ie !"\\*(gP"Null" .as hT \|(\|\\*(cH\\*(gP\|)
+. el .as hT \\|(\\|\\*(cH\\|)
+.\}
+.if "\\*(cH"Null" .if !"\\*(gP"Null" .as hT \&\|(\|\\*(gP\|)
+.ie \\n(cR \{\
+. hM
+. wh -1v fM
+.\}
+.el \{\
+. wh 0 hM
+. wh -1.167i fM
+.\}
+.if \\n(nl==0:\\n(nl==-1 'bp
+.em lM
+..
+.nr fW \w'0'
+.de sW
+.nr sW \w\\$1
+.ie \\n(sW>=\\n(fW \{\
+. ie \\n(sW%\\n(fW .nr sW (\\n(sW/\\n(fW)+1
+. el .nr sW \\n(sW/\\n(fW
+.\}
+.el .nr sW 0
+..
+.de aW
+.nr sW \w\\*(A\\$1
+.ie \\n(sW>=\\n(fW \{\
+. ie \\n(sW%\\n(fW .nr sW (\\n(sW/\\n(fW)+1
+. el .nr sW \\n(sW/\\n(fW
+.\}
+.el .nr sW 0
+..
+.\" NS Ql macro - Quoted literal define
+.de Ql
+.if \\n(aC==0 \{\
+. ds mN Ql
+. ds A1 \\$1
+. ds A2 \\$2
+. ds A3 \\$3
+. ds A4 \\$4
+. ds A5 \\$5
+. ds A6 \\$6
+. ds A7 \\$7
+. ds A8 \\$8
+. ds A9 \\$9
+. nr fV \\n(.$
+. fV
+.\}
+.ds qL \&\\*(sL
+.ds qR \&\\*(sR
+.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+..
+.\" NS Sh macro - Section Headers
+.\" NS nS register - Section Header SYNOPSIS flag
+.\" NS nF register - Section Header FILES flag
+.\" NS nA register - Section Header SEE ALSO flag
+.\" NS nT register - Section Header STANDARDS flag
+.de Sh
+.nr nS 0
+.nr sE 0
+.nr iS 0
+.ie "\\$1"NAME" \{\
+. hK
+' in 0
+.\}
+.el \{\
+. nr nS 0
+. nr nA 0
+. nr nF 0
+. nr nT 0
+. nr nY 0
+. nr aN 0
+. nr oT 0
+. if "\\$1"SEE" .nr nA 1
+. if "\\$1"FILES" .nr nF 1
+. if "\\$1"STANDARDS" .nr nT 1
+. if "\\$1"SYNOPSIS" .nr nS 1
+. if "\\$1"DESCRIPTION" \{\
+. rr fB
+. rr Fb
+. ds Fb
+. nr fY 0
+. nr fZ 0
+. \}
+. if "\\$1"AUTHORS" .nr nY 1
+. in 0
+.\}
+.pL
+'sp
+.ns
+.ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
+.if !\\n(cR .ne 3
+'fi
+\&\\*(sH\\$1 \|\\$2 \|\\$3 \|\\$4 \|\\$5 \|\\$6 \|\\$7 \|\\$8 \|\\$9
+\&\fP\s0\&
+.in \\n(.iu+\\n(Tiu
+.if "\\$1"SEE" .nr sE 1
+.ns
+..
diff --git a/share/tmac/doc-syms b/share/tmac/doc-syms
new file mode 100644
index 00000000000..aabd555c9b0
--- /dev/null
+++ b/share/tmac/doc-syms
@@ -0,0 +1,316 @@
+.\" Copyright (c) 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)doc-syms 5.6 (Berkeley) 8/5/91
+.\"
+.\" %beginstrip%
+.\" NS Ux macro - UNIX
+.de Ux
+.nr cF \\n(.f
+.nr cZ \\n(.s
+.ds aa \&\f\\n(cF\s\\n(cZ
+.as b1 \&\\*(tNUNIX\\*(aa
+.rm aa
+.if \\n(aC==0 \{\
+. if \\n(.$>0 .aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+.\}
+.ie \\n(aC>\\n(aP \{\
+. nr aP \\n(aP+1
+. ie \\n(C\\n(aP==1 \{\
+. \\*(A\\n(aP
+. \}
+. el .nR
+.\}
+.el .aZ
+..
+.\" NS Bx macro -BSD UNIX (fix smaller nroff version)
+.de Bx
+.nr cF \\n(.f
+.nr cZ \\n(.s
+.ds aa \&\f\\n(cF\s\\n(cZ
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 \&\\*(tNBSD\\*(aa \\*(tNUNIX\\*(aa
+. el .aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+.\}
+.if "\\$1"-alpha" \{\
+\&currently in alpha test.
+. aY
+.\}
+.if "\\$1"-beta" \{\
+\&currently in beta test.
+. aY
+.\}
+.if "\\$1"-devel" \{\
+\&currently under development.
+. aY
+.\}
+.if \\n(aC>\\n(aP \{\
+. nr aP \\n(aP+1
+. ie \\n(C\\n(aP==2 \{\
+. as b1 \&\\*(A\\n(aP\&\\*(tNBSD\\*(aa
+. ie \\n(aC>\\n(aP \{\
+. nr jj \\n(aP+1
+. ie \\n(C\\n(jj==2 \{\
+. if "\\*(A\\n(jj"Reno" \{\
+. nr aP \\n(aP+1
+. as b1 \&\-\\*(A\\n(jj
+. \}
+. if "\\*(A\\n(jj"reno" \{\
+. nr aP \\n(aP+1
+. as b1 \&\-Reno
+. \}
+. if "\\*(A\\n(jj"Tahoe" \{\
+. nr aP \\n(aP+1
+. as b1 \&\-\\*(A\\n(jj
+. \}
+. if "\\*(A\\n(jj"tahoe" \{\
+. nr aP \\n(aP+1
+. as b1 \&\-Tahoe
+. \}
+. ie \\n(aC>\\n(aP \{\
+. nr aP \\n(aP+1
+. nR
+. \}
+. el .aZ
+. \}
+. el \{\
+. nr aP \\n(aP+1
+. nR
+. \}
+. rr jj
+. \}
+. el .aZ
+. \}
+. el \{\
+. as b1 \&\\*(tNBSD\\*(aa U\\*(tNNIX\\*(aa
+. nR
+. \}
+.\}
+..
+.\" Ns Ud macro - prints "currently under development" (HISTORY section)
+.de Ud
+\&currently under development.
+..
+.\" Ns Nx macro - NetBSD
+.de Nx
+.nr cF \\n(.f
+.nr cZ \\n(.s
+.ds aa \&\f\\n(cF\s\\n(cZ
+.if \\n(.$==2 \{\
+. if "\\$1"0.8" \&\\*(tNNetBSD\\*(aa 0.8\\*(aa\\$2
+. if "\\$1"0.8a" \&\\*(tNNetBSD\\*(aa 0.8a\\*(aa\\$2
+. if "\\$1"0.9" \&\\*(tNNetBSD\\*(aa 0.9\\*(aa\\$2
+. if "\\$1"0.9a" \&\\*(tNNetBSD\\*(aa 0.9a\\*(aa\\$2
+. if "\\$1"1.0" \&\\*(tNNetBSD\\*(aa 1.0\\*(aa\\$2
+. if "\\$1"1.0a" \&\\*(tNNetBSD\\*(aa 1.0a\\*(aa\\$2
+.\}
+.if \\n(.$==1 \{\
+. if "\\$1"0.8" \&\\*(tNNetBSD\\*(aa 0.8\\*(aa
+. if "\\$1"0.8a" \&\\*(tNNetBSD\\*(aa 0.8a\\*(aa
+. if "\\$1"0.9" \&\\*(tNNetBSD\\*(aa 0.9\\*(aa
+. if "\\$1"0.9a" \&\\*(tNNetBSD\\*(aa 0.9a\\*(aa
+. if "\\$1"1.0" \&\\*(tNNetBSD\\*(aa 1.0\\*(aa
+. if "\\$1"1.0a" \&\\*(tNNetBSD\\*(aa 1.0a\\*(aa
+.\}
+..
+.\" Ns At macro - AT&T UNIX
+.de At
+.nr cF \\n(.f
+.nr cZ \\n(.s
+.ds aa \&\f\\n(cF\s\\n(cZ
+.if \\n(.$==2 \{\
+. if "\\$1"32v" \&Version 32V \\*(tNAT&T UNIX\\*(aa\\$2
+. if "\\$1"v6" \&Version 6 \\*(tNAT&T UNIX\\*(aa\\$2
+. if "\\$1"v7" \&Version 7 \\*(tNAT&T UNIX\\*(aa\\$2
+. if "\\$1"V" \&\\*(tNAT&T\\*(aa System V \\*(tNUNIX\\*(aa\\$2
+. if "\\$1"V.1" \&\\*(tNAT&T\\*(aa System V.1 \\*(tNUNIX\\*(aa\\$2
+. if "\\$1"V.2" \&\\*(tNAT&T\\*(aa System V.2 \\*(tNUNIX\\*(aa\\$2
+. if "\\$1"V.4" \&\\*(tNAT&T\\*(aa System V.4 \\*(tNUNIX\\*(aa\\$2
+.\}
+.if \\n(.$==1 \{\
+. if "\\$1"32v" \&Version 32V \\*(tNAT&T UNIX\\*(aa
+. if "\\$1"v6" \&Version 6 \\*(tNAT&T UNIX\\*(aa
+. if "\\$1"v7" \&Version 7 \\*(tNAT&T UNIX\\*(aa
+. if "\\$1"V" \&\\*(tNAT&T\\*(aa System V \\*(tNUNIX\\*(aa
+. if "\\$1"V.1" \&\\*(tNAT&T\\*(aa System V.1 \\*(tNUNIX\\*(aa
+. if "\\$1"V.2" \&\\*(tNAT&T\\*(aa System V.2 \\*(tNUNIX\\*(aa
+. if "\\$1"V.4" \&\\*(tNAT&T\\*(aa System V.4 \\*(tNUNIX\\*(aa
+.\}
+..
+.\" The Bt macro should go away now
+.\" Ns Bt macro - prints "is currently in beta test." (HISTORY section)
+.de Bt
+\&is currently in beta test.
+..
+.\" NS St macro - standards (posix, ansi - formal standard names)
+.ds Px \\*(tNPOSIX
+.ds Ai \\*(tNANSI
+.de St
+.if \\n(aC==0 \{\
+. ie \\n(.$==0 \{\
+.tm Usage: .St [-p1003.1-90 | -p1003.2 | -ansiC-89 | -iso ] \\*(Pu ... (#\\n(.c)
+. \}
+. el \{\
+. ds mN St
+. nr aP 0
+. ds A1 \\$1
+. ds A2 \\$2
+. ds A3 \\$3
+. ds A4 \\$4
+. ds A5 \\$5
+. ds A6 \\$6
+. ds A7 \\$7
+. ds A8 \\$8
+. ds A9 \\$9
+. nr fV \\n(.$
+. fV
+. \}
+.\}
+.if \\n(aC>\\n(aP \{\
+. nr cF \\n(.f
+. nr cZ \\n(.s
+. ds aa \&\f\\n(cF\s\\n(cZ
+. nr aP \\n(aP+1
+. if "\\*(A\\n(aP"-p1003.1-90" \{\
+. ie \\n(sT==1 \{\
+. ds b1 \&\\*(tNIEEE Std\\*(aa1003.1-1990\\*(sV
+. as b1 (``\\*(tN\\*(Px\\*(aa'')
+. \}
+. el \{\
+. ds b1 \&\\*(tNIEEE Std\\*(aa1003.1-1990\\*(sV
+. as b1 (``\\*(tN\\*(Px\\*(aa'')
+. \}
+. \}
+. if "\\*(A\\n(aP"-p1003.1-88" \{\
+. ie \\n(sT==1 \{\
+. ds b1 \&\\*(tNIEEE Std\\*(aa1003.1-1988\\*(sV
+. as b1 (``\\*(tN\\*(Px\\*(aa'')
+. \}
+. el \{\
+. ds b1 \&\\*(tNIEEE Std\\*(aa1003.1-1988\\*(sV
+. as b1 (``\\*(tN\\*(Px\\*(aa'')
+. \}
+. \}
+. if "\\*(A\\n(aP"-p1003.1" \{\
+. ie \\n(sT==1 \{\
+. ds b1 \&\\*(tNIEEE Std\\*(aa1003.1\\*(sV
+. as b1 (``\\*(tN\\*(Px\\*(aa'')
+. \}
+. el \{\
+. ds b1 \&\\*(tNIEEE Std\\*(aa1003.1\\*(sV
+. as b1 (``\\*(tN\\*(Px\\*(aa'')
+. \}
+. \}
+. if "\\*(A\\n(aP"-p1003.2-92" \{\
+. ie \\n(sT==1 \{\
+. ds b1 \&\\*(tNIEEE Std\\*(aa1003.2-1992\\*(sV
+. as b1 (``\\*(tN\\*(Px.2\\*(aa'')
+. \}
+. el \{\
+. ds b1 \&\\*(tNIEEE Std\\*(aa1003.2-1992\\*(sV
+. as b1 (``\\*(tN\\*(Px.2\\*(aa'')
+. \}
+. \}
+. if "\\*(A\\n(aP"-p1003.2" \{\
+. ie \\n(sT==1 \{\
+. ds b1 \&\\*(tNIEEE Std\\*(aa1003.2\\*(sV
+. as b1 (``\\*(tN\\*(Px.2\\*(aa'')
+. \}
+. el \{\
+. ds b1 \&\\*(tNIEEE Std\\*(aa1003.2\\*(sV
+. as b1 (``\\*(tN\\*(Px.2\\*(aa'')
+. \}
+. \}
+. if "\\*(A\\n(aP"-ansiC" \{\
+. ie \\n(sT==1 \{\
+. ds b1 \&\\*(tNANSI \\*(aaX3.159-1989\\*(sV
+. as b1 (``\\*(tNANSI C\\*(aa'')
+. \}
+. el \{\
+. ds b1 \&\\*(tNANSI \\*(aaX3.159-1989\\*(sV
+. as b1 (``\\*(tNANSI C\\*(aa'')
+. \}
+. \}
+. if "\\*(A\\n(aP"-ansiC-89" \{\
+. ie \\n(sT==1 \{\
+. ds b1 \&\\*(tNANSI \\*(aaX3.159-1989\\*(sV
+. as b1 (``\\*(tNANSI C\\*(aa'')
+. \}
+. el \{\
+. ds b1 \&\\*(tNANSI \\*(aaX3.159-1989\\*(sV
+. as b1 (``\\*(tNANSI C\\*(aa'')
+. \}
+. \}
+. if "\\*(A\\n(aP"-ieee754" \{\
+. ie \\n(sT==1 \{\
+. ds b1 \&\\*(tNIEEE Std\\*(aa754-1985
+. \}
+. el \{\
+. ds b1 \&\\*(tNIEEE Std\\*(aa754-1985
+. \}
+. \}
+. if "\\*(A\\n(aP"-iso8802-3" \{\
+. ie \\n(sT==1 \{\
+. ds b1 \&\\*(tNISO \\*(aa8802-3: 1989\\*(sV
+.\" . as b1 (``\\*(tNANSI C\\*(aa'')
+. \}
+. el \{\
+. ds b1 \&\\*(tNISO \\*(aa8802-3: 1989\\*(sV
+.\" . as b1 (``\\*(tNANSI C\\*(aa'')
+. \}
+. \}
+. if "\\*(A\\n(aP"-xpg3" \{\
+. ie \\n(sT==1 \{\
+. ds b1 \&\\*(tNX/Open Portability Guide Issue 3\\*(aa\\*(sV
+. as b1 (``\\*(tNXPG3\\*(aa'')
+. \}
+. el \{\
+. ds b1 \&\\*(tNX/Open Portability Guide Issue 3\\*(aa\\*(sV
+. as b1 (``\\*(tNXPG3\\*(aa'')
+. \}
+. \}
+. if "\\*(A\\n(aP"-xpg4" \{\
+. ie \\n(sT==1 \{\
+. ds b1 \&\\*(tNX/Open Portability Guide Issue 4\\*(aa\\*(sV
+. as b1 (``\\*(tNXPG4\\*(aa'')
+. \}
+. el \{\
+. ds b1 \&\\*(tNX/Open Portability Guide Issue 4\\*(aa\\*(sV
+. as b1 (``\\*(tNXPG4\\*(aa'')
+. \}
+. \}
+. ie \\n(aC>\\n(aP \{\
+. nr aP \\n(aP+1
+. nR
+. \}
+. el .aZ
+.\}
+..
diff --git a/share/tmac/tmac.andoc b/share/tmac/tmac.andoc
new file mode 100644
index 00000000000..696c7654e83
--- /dev/null
+++ b/share/tmac/tmac.andoc
@@ -0,0 +1,45 @@
+.\"
+.\" Copyright (c) 1990 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)tmac.andoc 5.6 (Berkeley) 8/5/91
+.\" $Header: /cvs/OpenBSD/src/share/tmac/tmac.andoc,v 1.1 1995/10/18 08:44:50 deraadt Exp $
+.\"
+.de Dd
+.rm Dd
+.so /usr/share/tmac/tmac.doc
+.Dd "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7" "\\$8"
+..
+.de TH
+.rm TH
+.so /usr/share/tmac/tmac.an.old
+.TH "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7" "\\$8"
+..