comparison docs/manual.docbook.sgml @ 333:507f442dc71e

Add support for 6800 compatibility instructions. The occasional program uses the 6800 compatibility instructions since they are actually specified by Motorola in at least some documentation. They advertised the 6809 as source compatible with the 6800. This mode is not enabled by default, however. It is my belief that receiving an error when using a non-6809 instruction is more useful since it is unlikely that much 6800 source code is being assembled for the 6809 these days. Nevertheless, the --6809compat option is present for just those purposes so one does not have to resort to using macros (which would work equally well in most cases).
author William Astle <lost@l-w.ca>
date Tue, 15 Apr 2014 10:57:34 -0600
parents b30091890d62
children e95f07cbce4e
comparison
equal deleted inserted replaced
332:26bfe8d557e2 333:507f442dc71e
285 </para> 285 </para>
286 </listitem> 286 </listitem>
287 </varlistentry> 287 </varlistentry>
288 288
289 <varlistentry> 289 <varlistentry>
290 <term><option>--6800compat</option></term>
291 <listitem>
292 <para>
293 This is equivalent to <option>--pragma=6800compat</option>.</para>
294 <para>This will enable recognition of 6800 compatibility instructions.</para>
295 </listitem>
296 </varlistentry>
297
298 <varlistentry>
290 <term><option>--6809</option></term> 299 <term><option>--6809</option></term>
291 <term><option>-9</option></term> 300 <term><option>-9</option></term>
292 <listitem> 301 <listitem>
293 <para> 302 <para>
294 This will cause the assembler to reject instructions that are only available 303 This will cause the assembler to reject instructions that are only available
461 470
462 </section> 471 </section>
463 472
464 <section> 473 <section>
465 <title>Dialects</title> 474 <title>Dialects</title>
466 <para> 475
467 LWASM supports all documented MC6809 instructions as defined by Motorola. 476 <para> LWASM supports all documented MC6809 instructions as defined by
468 It also supports all known HD6309 instructions. While there is general 477 Motorola. By default, this does not include any MC6800 compatibility
469 agreement on the pneumonics for most of the 6309 instructions, there is some 478 instructions. As of LWASM 4.11, those compatibility instructions can be
470 variance with the block transfer instructions. TFM for all four variations 479 enabled using the <parameter>--6800compat</parameter> option or the
471 seems to have gained the most traction and, thus, this is the form that is 480 <parameter>6800compat</parameter> pragma. It also supports all known HD6309
472 recommended for LWASM. However, it also supports COPY, COPY-, IMP, EXP, 481 instructions. While there is general agreement on the pneumonics for most
473 TFRP, TFRM, TFRS, and TFRR. It further adds COPY+ as a synomym for COPY, 482 of the 6309 instructions, there is some variance with the block transfer
474 IMPLODE for IMP, and EXPAND for EXP. 483 instructions. TFM for all four variations seems to have gained the most
475 </para> 484 traction and, thus, this is the form that is recommended for LWASM.
485 However, it also supports COPY, COPY-, IMP, EXP, TFRP, TFRM, TFRS, and TFRR.
486 It further adds COPY+ as a synomym for COPY, IMPLODE for IMP, and EXPAND for
487 EXP. </para>
476 488
477 <para>By default, LWASM accepts 6309 instructions. However, using the 489 <para>By default, LWASM accepts 6309 instructions. However, using the
478 <parameter>--6809</parameter> parameter, you can cause it to throw errors on 490 <parameter>--6809</parameter> parameter, you can cause it to throw errors on
479 6309 instructions instead.</para> 491 6309 instructions instead.</para>
480 492
1609 present or removing "no" from the beginning if it is present.</para> 1621 present or removing "no" from the beginning if it is present.</para>
1610 1622
1611 <para>Pragmas are not case sensitive.</para> 1623 <para>Pragmas are not case sensitive.</para>
1612 1624
1613 <variablelist> 1625 <variablelist>
1626
1627 <varlistentry>
1628 <term>6800compat</term>
1629 <listitem>
1630
1631 <para>When in force, this pragma enables recognition of various
1632 compatibility instructions useful when assembling 6800 code. These
1633 compatibility instructions are assembled into equivalent 6809 instructions.
1634 This mode also includes several analogous instructions which are not
1635 strictly 6800 instructions but allow the similar style to be applied to 6809
1636 specific features.</para>
1637
1638 <para>Technically, a compliant 6809 assembler must recognize these
1639 instructions by default since Motorola advertised the 6809 as being source
1640 compatible with the 6800. However, most source code does not require this
1641 compatibility and LWASM itself did not support these instructions prior to
1642 version 4.11 so this mode is disabled by default.</para>
1643
1644 </listitem>
1645
1614 <varlistentry> 1646 <varlistentry>
1615 <term>index0tonone</term> 1647 <term>index0tonone</term>
1616 <listitem> 1648 <listitem>
1617 <para> 1649 <para>
1618 When in force, this pragma enables an optimization affecting indexed addressing 1650 When in force, this pragma enables an optimization affecting indexed addressing