Mercurial > hg > index.cgi
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 |