1
0
mirror of https://github.com/fadden/6502bench.git synced 2025-02-18 08:30:28 +00:00

Updated assembler bugs & quirks

Notably, updated remarks regarding cc65's handling of block move
operands, which are apparently "broken as intended".
This commit is contained in:
Andy McFadden 2019-08-05 11:48:10 -07:00
parent a4e90bffd1
commit 89288c4d8c

View File

@ -132,7 +132,7 @@ code, but also needs to know how to handle the corner cases.</p>
<ul>
<li>Undocumented opcode <code>SHA (ZP),Y</code> ($93) is not supported;
the assembler appears to be expecting <code>SHA ABS,X</code> instead.</li>
<li>BRK, COP, and WDM are not allowed to have operands.</li>
<li>COP and WDM are not allowed to have operands.</li>
</ul>
<p>Quirks:</p>
@ -170,6 +170,7 @@ code, but also needs to know how to handle the corner cases.</p>
outside bank zero cannot be assembled. SourceGen currently deals with
this by outputting the entire file as a hex dump.</li>
<li>Undocumented opcode $AB (<code>LAX #imm</code>) generates an error.</li>
<li>WDM is not allowed to have an operand.</li>
</ul>
<p>Quirks:</p>
@ -186,9 +187,11 @@ code, but also needs to know how to handle the corner cases.</p>
<code>ASR</code> instead.</li>
<li>Officially, the preferred file extension for ACME source code is ".a",
but this is already used on UNIX systems for static libraries (which
means shell file completion tends to ignore it). Since ".S" is pretty
universally recognized as assembly source, code generated by SourceGen
for ACME also uses ".S".</li>
means shell filename completion tends to ignore them). Since ".S" is
pretty universally recognized as assembly source, code generated by
SourceGen for ACME also uses ".S".</li>
<li>Does not allow the accumulator to be specified explicitly as an
operand, e.g. you can't write <code>LSR A</code>.</li>
</ul>
@ -199,12 +202,11 @@ code, but also needs to know how to handle the corner cases.</p>
<p>Bugs:</p>
<ul>
<li>The arguments to <code>MVN</code>/<code>MVP</code> are reversed (v2.17)
or zeroed (v2.18).</li>
<li>PC relative branches don't wrap around at bank boundaries.</li>
<li>[fixed in v2.18] <code>BRK &lt;arg&gt;</code> is assembled to opcode
<li>[Fixed in v2.18] The arguments to <code>MVN</code>/<code>MVP</code> are reversed.</li>
<li>[Fixed in v2.18] <code>BRK &lt;arg&gt;</code> is assembled to opcode
$05 rather than $00.</li>
<li>[fixed in v2.18] <code>WDM</code> is not supported.</li>
<li>[Fixed in v2.18] <code>WDM</code> is not supported.</li>
</ul>
<p>Quirks:</p>
@ -228,6 +230,9 @@ code, but also needs to know how to handle the corner cases.</p>
multiple segments (it is, after all, an assembler for a C compiler).
A linker configuration script is expected to be provided for anything
complex. SourceGen generates a custom config file for each project.</li>
<li>The syntax for the 65816 block move instructions
(<code>MVN</code>/<code>MVP</code>) changed to a non-standard format
in v2.18, requiring a '#' before 8-bit constants.</li>
</ul>