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:
parent
a4e90bffd1
commit
89288c4d8c
@ -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 <arg></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 <arg></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>
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user