.th MACRO I 15\ March\ 1977
.sh NAME
macro \*- macro assembler
.sh SYNOPSIS
\fBas\fP [ options ] \fIname\fP\*|.\*|.\*|.
.sh DESCRIPTION
\fIMacro\fP is a (barely recognizable) version of DEC's macro-assembler
(DMA-11).
It assembles the concatenation of the named files, after first appending
the suffix `\fB.mac\fP' to each name.
The output of the assembler is left in the files `\fIname\fP\fB.rel\fP'
(object file), `\fIname\fP\fB.lst\fP' (assembly listing), and
`\fIname\fP\fB.crf\fP' (cross reference information)
unless the \fB\*-na\fP option is given.
The output of this assembler is in \fIrel\fP-format, so that it must
first be converted into the standard load-file format through the
use of \fIrelld\fP.
.s2
For the use of this assembler, see the DEC publication `\fIMacro-11
Assembler Programmer's Manual\fP'.
The major differences and incompatibilities between \fImacro\fP and
the description in the manual are listed here.
.s2
.lp +8 8
1)	Command line options are in standard UNIX form;  i.e.\ use
`\fB\*-li:me\fP'.
.lp +8 8
2)	The option `\fB\*-na\fP\ \fIname1\fP' will cause the output
files to be named `\fIname1\fP.*' instead of being named after the
first specified source file.
Note that \fIname1\fP may include a directory specifictaion.
.lp +8 8
2)	The option `\fB\*-no\fP' will supress the creation of an object file.
.lp +8 8
3)	The option `\fB\*-li\fP' at the end of the command line will cause
an assembly listing to be produced (not normally done).
.lp +8 8
4)	The default is to accept both lower and upper case, and to
distinguish the difference between them in user defined symbols.
Lower case text may be passed to macros.
.lp +8 8
5)	Symbols may be 65 characters long or less.
Symbols longer than 65 characters give a \fBT\fP error.
Titles may be up to 86 characters long.
.lp +8 8
6)	\fBP1\fP and \fBP2\fP may be used with .if and .iif to test for
pass\ 1 and pass\ 2 of the assembler.
.lp +8 8
7)	The correct format of a .iif is `.iif\ <cond>,<arg>,<stmnt>'
(note the use of commas).
.lp +8 8
8)	The \fB\*-ls\fP option still doesn't work.
.lp +8 8
9)	The maximum nesting level of .if's is 15.
.lp +8 8
10)	The pseudo-op `.ENTRY\ <x>,<y>' defines the (external) entry point
<y> to refer to the (internal) location <x>.
The symbol <x> must be defined before issuing the .ENTRY directive.
.lp +8 8
11)	The pseudo-op `.CSECT\ [<name>[,<attr>[,EXTERNAL]]]' is used to
place attributes on control sections.
Premitted attributes are STATIC (read/write data), DPURE (read-only data),
and IPURE (read-only instructions). The default attribute is IPURE. EXTERNAL
csects will be overlaid by
.it bind
(I), e.g. like FORTRAN named common.
Note that the attribute need only be included once, usually when the csect is
first defined.
.lp +8 8
12)	The pseudo-op's `.INSRT\ <name>' and `.INSR1\ <name>' are used
to include other files into an assembly.
\&.INSRT will textually insert the named file into the source file.
\&.INSR1 inserts the named file only on pass\ 1.
.dt
.i0
.sh SEE\ ALSO
bind\ (I),
relld\ (VI),
rel\ (V).
