\documentstyle[a4,12pt]{article}
\begin{document}
\author{Rainer Thonnes}
\title{APM Cross-Assembler for M6800}
\maketitle
\parskip .1 in
\setcounter{secnumdepth}{10}
\parindent 0in

\section{Preamble}
{\hspace*{1.1 in}} EUCSD Motorola M6800 Assembler - User Notes

{\hspace*{0.2 in}} This assembler is a local implementation of the Motorola M6800 cross
assembler, documented in the 'M6800 Microprocessor Programming Manual'.
Wherever possible it is upward compatible with the Motorola assembler and
like it, contains no macro facilites.

\section{Differences}

\subsection{Restrictions}

\small\tt \begin{verbatim}      1) Only one program may be assembled in a single input stream.  As a
         result the MON and END directives are synonymous and optional.

      2) Only object tapes are produced by the assembler.  As a result the
         OPT  directive  options  MEMORY  and OTAPE and their variants are
         illegal.

      3) Error messages are of a different and fixed form  and  hence  the
         OPT directive options SERROR and SER are synonymous with ERROR.
\end{verbatim}\rm  \normalsize 

\subsection{Extensions}

\small\tt \begin{verbatim}      1)  The  mnemonics  LSL, BHS and BLO are provided and are synonymous
         with ASL, BCC and BCS respectively.

      2) The delimited form of  the  FCC  directive  accepts  the  doubled
         delimiter  as a single instance of the delimiter in the generated
         text.

            e.g.                     FCC   /A//B/
            is the same as           FCC   'A/B'

      3) The OPT directive has the following additional options:

         Long form  Short form   

         BLANK      B            Ignores  redundant  spaces   in   operand
                                 field. e.g. around ',' and '+'.

         NOBLANK    NOB          No   spaces   allowed  in  operand  field
                                 (selected by default).

         CYCLE      C            Print execution time  in  machine  cycles
                                 for each executable statement.

         NOCYCLE    NOC          No  execution  times printed (selected by
                                 default).

         FULL       F            Allows  fully  parenthesised   arithmetic
                                 expressions as operands (see (4) below).

         NOFULL     NOF          Only      unparenthesised     expressions
                                 evaluated strictly from left to right are
                                 allowed   as   operands   (selected    by
                                 default).

         WRAP       W            Long input lines are wrapped around on to
                                 next line of listing.

         NOWRAP     NOW          Long input lines are truncated in listing
                                 (selected by default).

         XREF       X            Symbol  cross  reference is listed at end
                                 of listing.

         NOXREF     NOX          No  cross  reference  table  is   printed
                                 (selected by default).

      4)   By   specifying   OPT   FULL,  fully  parenthesised  arithmetic
         expressions evaluated in the usual algebraic order are acceptable
         as operands.  The valid binary operators are (in increasing order
         of precedence):

                    ! (or), \ (exclusive or)
                    & (and)
                    +, -
                    *, /, | (remainder)
                    < (left shift), > (right shift)

         The unary  operators  +  (ignored),  -  and  \  (complement)  are
         accepted and take precedence over all binary operators.

      5) Apart from catastrophic failures, error messages are generated in
         the  final  pass  only  and always immediately follow the line to
         which they apply.

      6) This is a multi-pass assembler in which there are no  constraints
         on  the  order  of  definition  of  symbols and which attempts to
         optimise the use of direct addressing.
\end{verbatim}\rm  \normalsize 

\section{Implementations}

\subsection{LEGOS}

{\hspace*{0.6 in}} assem.M6800 $<$source$>$/$<$object$>$,$<$listing$>$
\\ {\hspace*{0.6 in}} eprom.m6800 $<$source$>$/$<$object$>$,$<$listing$>$

{\hspace*{0.6 in}} No default file names are provided. {\hspace{0.2 in}} The ASSEM version generates
\\ {\hspace*{0.6 in}} object code in Motorola M6800 loader format. {\hspace{0.2 in}} The EPROM version
\\ {\hspace*{0.6 in}} produces a binary file suitable for the SOFTY EPROM programmer
\\ {\hspace*{0.6 in}} and M6802 personality cards.


\subsection{VAX}

{\hspace*{0.6 in}} M6800

{\hspace*{0.6 in}} The user is promted for i/o streams. {\hspace{0.2 in}} The object code is in
\\ {\hspace*{0.6 in}} Motorola M6800 loader format.

\vspace{.75in} assem:m6800.doc printed on 14/03/89 at 17.12

\newpage
\tableofcontents
\end{document}
