\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}