gno/usr.bin/nroff/tmac.s
1997-03-14 06:22:29 +00:00

407 lines
9.2 KiB
ArmAsm

.\" set this non-zero to turn on debugging
.nr Z 0
.\" **************************************************************************
.\"
.\" partial -ms package for nroff. macros for simple paper/report formats
.\"
.\" usage: nroff -ms file [...]
.\"
.\" included here are:
.\"
.\" TL, AU, AI, AB, AE, SH, NH, PP, LP, QP, XP, RS, RE, IP, I, B, R
.\"
.\" extensions include:
.\"
.\" TI (temp indent), EX (exit NOW)
.\"
.\" includes somewhat kludgy support for XS, XA, XE, PX (table of contents)
.\"
.\" v1.10 7/22/90 rosenkra@convex.com (Bill Rosenkranz)
.\" freely distributable (no copyright, etc.)
.\"
.\" **************************************************************************
.\"
.\" some perdefined strings (Quote, Unquote, dash, footer parts, etc):
.\"
.ds Q ""
.ds U ""
.ds - --
.ds CF "ImPoSsIbLe
.ds LF "\0
.ds RF "\0
.\"
.\" these are various predefined date and time strings
.\"
.\" DW day-of-week:
.if \n(dw=1 .ds DW "Sun
.if \n(dw=2 .ds DW "Mon
.if \n(dw=3 .ds DW "Tue
.if \n(dw=4 .ds DW "Wed
.if \n(dw=5 .ds DW "Thu
.if \n(dw=6 .ds DW "Fri
.if \n(dw=7 .ds DW "Sat
.\" MO month:
.if \n(mo=1 .ds MO "January
.if \n(mo=2 .ds MO "February
.if \n(mo=3 .ds MO "March
.if \n(mo=4 .ds MO "April
.if \n(mo=5 .ds MO "May
.if \n(mo=6 .ds MO "June
.if \n(mo=7 .ds MO "July
.if \n(mo=8 .ds MO "August
.if \n(mo=9 .ds MO "September
.if \n(mo=10 .ds MO "October
.if \n(mo=11 .ds MO "November
.if \n(mo=12 .ds MO "December
.\" make some composites:
.ds Dy "\*(MO \n(dy
.ds Da "\n(hh:\n(mm:\n(ss \n(mo/\n(dy/\n(yr
.ds Yr "19\n(yr
.ds dY "\*(Dy, \*(Yr
.ds DY "\n(dy \*(MO \*(Yr
.ds TM "\n(hh:\n(mm:\n(ss
.ds DA "\*(TM \*(DY
.ds CT "\*(DW \*(Dy \*(TM 19\n(yr
.\"
.\" they look like this:
.\"
.\" DW Sun
.\" MO March
.\" Dy March 4
.\" dY March 4, 1990
.\" DY 4 March 1990 <--- "normal" nroff form
.\" Yr 1990
.\" TM 16:34:00
.\" DA 16:34:00 March 4, 1990
.\" Da 16:34:00 2/4/90
.\" CT Sun March 4 16:34:00 1990 almost like ctime(2)
.\"
.\" **************************************************************************
.\"
.\" startup stuff...
.\"
.pl 66
.ll 6.0i
.lt 6.0i
.m1 3
.m2 2
.m3 3
.m4 3
.\" no header line on first page! (set back in AB, SH, NH, LP, PP, QP)
.tl ||||
.\" this is the default footer (date, centered) unless string CF is defined
.fo ||\*(DY||
.\" these are for NH numbering (up to 5 levels, a la sun, X holds level)
.nr A 0 1
.af A 1
.nr B 0 1
.af B 1
.nr C 0 1
.af C 1
.nr D 0 1
.af D 1
.nr E 0 1
.af E 1
.nr X 1 1
.\"
.\" **************************************************************************
.\"
.\" MACROS...
.\"
.\" ---------------------------------------------------------------------- TL
.\" title for document (optional)
.\"
.de TL
.sp 4
.ce 1000
.\" reset footer. you MUST define CF, even to blank, to get the others!
.if !"\*(CF"ImPoSsIbLe" .fo |\*(LF|\*(CF|\*(RF|
..
.\" ---------------------------------------------------------------------- AU
.\" author(s) (optional, requires .TL)
.\"
.de AU
.sp 2
..
.\" ---------------------------------------------------------------------- AI
.\" author's institution (optional, requires .TL)
.\"
.de AI
.sp 1
..
.\" ---------------------------------------------------------------------- AB
.\" abstract (optional, requires .TL, .AE)
.\"
.de AB
.br
.sp 2
.\" check for arg to AB. can be "no" or something like "SUMMARY". if "no",
.\" no title above the abstract
.if !"$1"no" .if "$1"" ABSTRACT
.if !"$1"no" .if !"$1"" $1
.if !"$1"no" .sp 1
.\" set new line length...
.ce 0
.ll 5.5i
.in 0.5i
.tl ||- % -||
..
.\" ---------------------------------------------------------------------- AE
.\" abstract end (optional, requires .TL)
.\"
.de AE
.br
.sp 1
.\" reset...
.ce 0
.in 0.0i
.ll 6.0i
..
.\" ----------------------------------------------------------------------- SH
.\" section heading, no number (optional)
.\"
.de SH
.\" reset...
.ll 6.0i
.in 0.0i
.tl ||- % -||
.\" see note in TL
.if !"\*(CF"ImPoSsIbLe" .fo |\*(LF|\*(CF|\*(RF|
.br
.ce 0
.sp 2
.ne 4
.\" section title goes here, fill mode only so far...
..
.\" ---------------------------------------------------------------------- NH
.\" numbered section heading. arg (required) is the section level.
.\" this would be MUCH simpler if the .if command supported "{...}". there is
.\" a bug in nroff. i does not set the .$ number register correctly (number of
.\" args for the current macro). that is the reason why level 1 must be set.
.\"
.de NH
.\" do everything from SH...
.SH
.\" if ".NH 0", reset numbering
.if $1=0 .nr A 1 1
.if $1=0 .nr B 0 1
.if $1=0 .nr C 0 1
.if $1=0 .nr D 0 1
.if $1=0 .nr E 0 1
.if $1=0 .nr X 1 1
.\" level 1 (two types here: ".NH" and ".NH 1"):
.\" once .$ num reg is fixed, these 5 should be: .if \n(.$=0 .nr A +1 etc.
.if "$1"" .nr A +1
.if "$1"" .nr B 0 1
.if "$1"" .nr C 0 1
.if "$1"" .nr D 0 1
.if "$1"" .nr E 0 1
.if "$1"" .nr X 1 1
.if "$1"1" .nr A +1
.if "$1"1" .nr B 0 1
.if "$1"1" .nr C 0 1
.if "$1"1" .nr D 0 1
.if "$1"1" .nr E 0 1
.if "$1"1" .nr X 1 1
.\" level 2 (increment B, reset lower levels):
.if "$1"2" .nr B +1
.if "$1"2" .nr C 0 1
.if "$1"2" .nr D 0 1
.if "$1"2" .nr E 0 1
.if "$1"2" .nr X 2 1
.\" level 3 (increment C, reset lower levels):
.if "$1"3" .nr C +1
.if "$1"3" .nr D 0 1
.if "$1"3" .nr E 0 1
.if "$1"3" .nr X 3 1
.\" level 4 (increment D, reset lower levels):
.if "$1"4" .nr D +1
.if "$1"4" .nr E 0 1
.if "$1"4" .nr X 4 1
.\" level 5 (increment E, no more lower levels!):
.if "$1"5" .nr E +1
.if "$1"5" .nr X 5 1
.\" print out the section number now, depending on current level...
.if \nX=1 \nA.
.if \nX=2 \nA.\nB.
.if \nX=3 \nA.\nB.\nC.
.if \nX=4 \nA.\nB.\nC.\nD.
.if \nX=5 \nA.\nB.\nC.\nD.\nE.
.\" section title goes here...
..
.\" ----------------------------------------------------------------------- LP
.\" start a new left block paragraph (either .LP or .PP required)
.\"
.de LP
.br
.\" reset...
.tl ||- % -||
.ce 0
.sp 1
.ll 6.0i
.in 0.0i
..
.\" ----------------------------------------------------------------------- PP
.\" start a new indented paragraph (either .LP or .PP required)
.\"
.de PP
.\" do everything for LP, then make a temp indent...
.LP
.ti +0.5i
..
.\" ----------------------------------------------------------------------- XP
.\" start a new extended paragraph (bibliography)
.\"
.de XP
.br
.\" reset...
.tl ||- % -||
.ce 0
.sp 1
.ll 6.0i
.in 0.5i
.ti -0.5i
..
.\" ----------------------------------------------------------------------- QP
.\" start a new quoted paragraph (indented and shorter)
.\"
.de QP
.br
.tl ||- % -||
.ce 0
.sp 1
.\" set new line length, indent. PP, LP, SH, and NH reset
.ll 6.0i
.in 0.0i
.ll -0.5i
.in +0.5i
..
.\" ----------------------------------------------------------------------- IP
.\" indented paragraph with tag (relative)
.\"
.de IP
.br
.tl ||- % -||
.ce 0
.sp 1
.if \n(.i>4 .in -0.5i
.in +0.5i
.}D "***DEBUG IP: indent before tag is: \n(.i"
.}D .br
.if !"$1"" .ti -0.5i
.if !"$1"" \&$1
.if !"$1"" .br
.}D "***DEBUG IP: indent after tag is: \n(.i"
..
.\" ----------------------------------------------------------------------- RS
.\" start relative indent (requires .RE)
.\"
.de RS
.ce 0
.br
.\" if there is arg, use that as indent, otherwise use +5
.if \n(.$>0 .in +$1
.if \n(.$=0 .in +0.5i
.}D "***DEBUG RS: indent after RS is: \n(.i"
.}D .br
..
.\" ----------------------------------------------------------------------- RE
.\" end relative indent
.\"
.de RE
.ce 0
.br
.\" if there is arg, use that as unindent, otherwise use -5
.if \n(.$>0 .in -$1
.if \n(.$=0 .in -0.5i
.if \n(.i<5 .in 0.0i
.}D "***DEBUG RE: indent after RE is: \n(.i"
.}D .br
..
.\" ----------------------------------------------------------------------- XS
.\" table of contents start
.\"
.de XS
.bp
.ce 1
Table of Contents
.ce 0
.ll 8.0i
.sp 1
.\" \&123456789012345678901234567890123456789012345678901234567890
\&NOTE: add/del "dots" until line ends here ---------------->| (del this line)
.br
.\" save the page number...
.ds Xx "$1
.\" first entry goes here...
..
.\" ----------------------------------------------------------------------- XE
.\" table of contents end
.\"
.de XE
.\" dump last page number...
\&\0........................... \*(Xx
.br
..
.\" ----------------------------------------------------------------------- XA
.\" subsequent table of contents entry
.\"
.de XA
.\" dump last page number...
\&\0........................... \*(Xx
.br
.\" save next page number...
.ds Xx "$1
.\" next entry goes here...
..
.\" ----------------------------------------------------------------------- PX
.\" print table of contents
.\"
.de PX
.\" this is a NOP without diversions...
.ll 6.0i
..
.\" ----------------------------------------------------------------------- TI
.\" temporary indent
.\"
.de TI
.ce 0
.ti +0.5i
..
.\" ----------------------------------------------------------------------- EX
.\" exit NOW! (no extra space at end of document)
.\"
.de EX
.sp
.ex
..
.\" ----------------------------------------------------------------------- I
.\" italic text
.\"
.de I
\&\fI
.if !"$1"" $1\fR$2
..
.\" ----------------------------------------------------------------------- B
.\" bold text
.\"
.de B
\&\fB
.if !"$1"" $1\fR$2
..
.\" ----------------------------------------------------------------------- R
.\" Roman (normal) text
.\"
.de R
\&\fR
..
.\" ----------------------------------------------------------------------- }D
.\" debug. use (e.g. print current indent):
.\"
.\" .}D .br
.\" .}D "** DEBUG ** before RS \n(.i"
.\"
.de }D
.if \nZ>0 \&$1
..