mirror of
https://github.com/michaelcmartin/Ophis.git
synced 2024-05-28 09:41:29 +00:00
Remove spurious CRLFs
This commit is contained in:
parent
af50326e39
commit
57e663cf29
|
@ -1,451 +1,451 @@
|
||||||
<appendix id="ref-link">
|
<appendix id="ref-link">
|
||||||
<title>Ophis Command Reference</title>
|
<title>Ophis Command Reference</title>
|
||||||
<section>
|
<section>
|
||||||
<title>Command Modes</title>
|
<title>Command Modes</title>
|
||||||
<para>
|
<para>
|
||||||
These mostly follow the <emphasis>MOS Technology 6500
|
These mostly follow the <emphasis>MOS Technology 6500
|
||||||
Microprocessor Family Programming Manual</emphasis>, except
|
Microprocessor Family Programming Manual</emphasis>, except
|
||||||
for the Accumulator mode. Accumulator instructions are written
|
for the Accumulator mode. Accumulator instructions are written
|
||||||
and interpreted identically to Implied mode instructions.
|
and interpreted identically to Implied mode instructions.
|
||||||
</para>
|
</para>
|
||||||
<itemizedlist>
|
<itemizedlist>
|
||||||
<listitem><para><emphasis>Implied:</emphasis> <literal>RTS</literal></para></listitem>
|
<listitem><para><emphasis>Implied:</emphasis> <literal>RTS</literal></para></listitem>
|
||||||
<listitem><para><emphasis>Accumulator:</emphasis> <literal>LSR</literal></para></listitem>
|
<listitem><para><emphasis>Accumulator:</emphasis> <literal>LSR</literal></para></listitem>
|
||||||
<listitem><para><emphasis>Immediate:</emphasis> <literal>LDA #$06</literal></para></listitem>
|
<listitem><para><emphasis>Immediate:</emphasis> <literal>LDA #$06</literal></para></listitem>
|
||||||
<listitem><para><emphasis>Zero Page:</emphasis> <literal>LDA $7C</literal></para></listitem>
|
<listitem><para><emphasis>Zero Page:</emphasis> <literal>LDA $7C</literal></para></listitem>
|
||||||
<listitem><para><emphasis>Zero Page, X:</emphasis> <literal>LDA $7C,X</literal></para></listitem>
|
<listitem><para><emphasis>Zero Page, X:</emphasis> <literal>LDA $7C,X</literal></para></listitem>
|
||||||
<listitem><para><emphasis>Zero Page, Y:</emphasis> <literal>LDA $7C,Y</literal></para></listitem>
|
<listitem><para><emphasis>Zero Page, Y:</emphasis> <literal>LDA $7C,Y</literal></para></listitem>
|
||||||
<listitem><para><emphasis>Absolute:</emphasis> <literal>LDA $D020</literal></para></listitem>
|
<listitem><para><emphasis>Absolute:</emphasis> <literal>LDA $D020</literal></para></listitem>
|
||||||
<listitem><para><emphasis>Absolute, X:</emphasis> <literal>LDA $D000,X</literal></para></listitem>
|
<listitem><para><emphasis>Absolute, X:</emphasis> <literal>LDA $D000,X</literal></para></listitem>
|
||||||
<listitem><para><emphasis>Absolute, Y:</emphasis> <literal>LDA $D000,Y</literal></para></listitem>
|
<listitem><para><emphasis>Absolute, Y:</emphasis> <literal>LDA $D000,Y</literal></para></listitem>
|
||||||
<listitem><para><emphasis>(Zero Page Indirect, X):</emphasis> <literal>LDA ($80, X)</literal></para></listitem>
|
<listitem><para><emphasis>(Zero Page Indirect, X):</emphasis> <literal>LDA ($80, X)</literal></para></listitem>
|
||||||
<listitem><para><emphasis>(Zero Page Indirect), Y:</emphasis> <literal>LDA ($80), Y</literal></para></listitem>
|
<listitem><para><emphasis>(Zero Page Indirect), Y:</emphasis> <literal>LDA ($80), Y</literal></para></listitem>
|
||||||
<listitem><para><emphasis>(Absolute Indirect):</emphasis> <literal>JMP ($A000)</literal></para></listitem>
|
<listitem><para><emphasis>(Absolute Indirect):</emphasis> <literal>JMP ($A000)</literal></para></listitem>
|
||||||
<listitem><para><emphasis>Relative:</emphasis> <literal>BNE loop</literal></para></listitem>
|
<listitem><para><emphasis>Relative:</emphasis> <literal>BNE loop</literal></para></listitem>
|
||||||
<listitem><para><emphasis>(Absolute Indirect, X):</emphasis> <literal>JMP ($A000, X)</literal> — Only available with 65C02 extensions</para></listitem>
|
<listitem><para><emphasis>(Absolute Indirect, X):</emphasis> <literal>JMP ($A000, X)</literal> — Only available with 65C02 extensions</para></listitem>
|
||||||
<listitem><para><emphasis>(Zero Page Indirect):</emphasis> <literal>LDX ($80)</literal> — Only available with 65C02 extensions</para></listitem>
|
<listitem><para><emphasis>(Zero Page Indirect):</emphasis> <literal>LDX ($80)</literal> — Only available with 65C02 extensions</para></listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<title>Basic arguments</title>
|
<title>Basic arguments</title>
|
||||||
<para>
|
<para>
|
||||||
Most arguments are just a number or label. The formats for
|
Most arguments are just a number or label. The formats for
|
||||||
these are below.
|
these are below.
|
||||||
</para>
|
</para>
|
||||||
<section>
|
<section>
|
||||||
<title>Numeric types</title>
|
<title>Numeric types</title>
|
||||||
<itemizedlist>
|
<itemizedlist>
|
||||||
<listitem><para><emphasis>Hex:</emphasis> <literal>$41</literal> (Prefixed with $)</para></listitem>
|
<listitem><para><emphasis>Hex:</emphasis> <literal>$41</literal> (Prefixed with $)</para></listitem>
|
||||||
<listitem><para><emphasis>Decimal:</emphasis> <literal>65</literal> (No markings)</para></listitem>
|
<listitem><para><emphasis>Decimal:</emphasis> <literal>65</literal> (No markings)</para></listitem>
|
||||||
<listitem><para><emphasis>Octal:</emphasis> <literal>0101</literal> (Prefixed with zero)</para></listitem>
|
<listitem><para><emphasis>Octal:</emphasis> <literal>0101</literal> (Prefixed with zero)</para></listitem>
|
||||||
<listitem><para><emphasis>Binary:</emphasis> <literal>%01000001</literal> (Prefixed with %)</para></listitem>
|
<listitem><para><emphasis>Binary:</emphasis> <literal>%01000001</literal> (Prefixed with %)</para></listitem>
|
||||||
<listitem><para><emphasis>Character:</emphasis> <literal>'A</literal> (Prefixed with single quote)</para></listitem>
|
<listitem><para><emphasis>Character:</emphasis> <literal>'A</literal> (Prefixed with single quote)</para></listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<title>Label types</title>
|
<title>Label types</title>
|
||||||
<para>
|
<para>
|
||||||
Normal labels are simply referred to by name. Anonymous
|
Normal labels are simply referred to by name. Anonymous
|
||||||
labels may be referenced with strings of - or + signs (the
|
labels may be referenced with strings of - or + signs (the
|
||||||
label <literal>-</literal> refers to the immediate
|
label <literal>-</literal> refers to the immediate
|
||||||
previous anonymous label, <literal>--</literal> the
|
previous anonymous label, <literal>--</literal> the
|
||||||
one before that, etc., while <literal>+</literal>
|
one before that, etc., while <literal>+</literal>
|
||||||
refers to the next anonymous label), and the special
|
refers to the next anonymous label), and the special
|
||||||
label <literal>^</literal> refers to the program
|
label <literal>^</literal> refers to the program
|
||||||
counter at the start of the current instruction or directive.
|
counter at the start of the current instruction or directive.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Normal labels are <emphasis>defined</emphasis> by
|
Normal labels are <emphasis>defined</emphasis> by
|
||||||
prefixing a line with the label name and then a colon
|
prefixing a line with the label name and then a colon
|
||||||
(e.g., <literal>label:</literal>). Anonymous labels
|
(e.g., <literal>label:</literal>). Anonymous labels
|
||||||
are defined by prefixing a line with an asterisk
|
are defined by prefixing a line with an asterisk
|
||||||
(e.g., <literal>*</literal>).
|
(e.g., <literal>*</literal>).
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Temporary labels are only reachable from inside the
|
Temporary labels are only reachable from inside the
|
||||||
innermost enclosing <literal>.scope</literal>
|
innermost enclosing <literal>.scope</literal>
|
||||||
statement. They are identical to normal labels in every
|
statement. They are identical to normal labels in every
|
||||||
way, except that they start with an underscore.
|
way, except that they start with an underscore.
|
||||||
</para>
|
</para>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<title>String types</title>
|
<title>String types</title>
|
||||||
<para>
|
<para>
|
||||||
Strings are enclosed in double quotation marks. Backslashed
|
Strings are enclosed in double quotation marks. Backslashed
|
||||||
characters (including backslashes and double quotes) are
|
characters (including backslashes and double quotes) are
|
||||||
treated literally, so the string <literal>"The man said,
|
treated literally, so the string <literal>"The man said,
|
||||||
\"The \\ character is the backslash.\""</literal> produces
|
\"The \\ character is the backslash.\""</literal> produces
|
||||||
the ASCII sequence for <literal>The man said, "The \
|
the ASCII sequence for <literal>The man said, "The \
|
||||||
character is the backslash."</literal>
|
character is the backslash."</literal>
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Strings are generally only used as arguments to assembler
|
Strings are generally only used as arguments to assembler
|
||||||
directives—usually for filenames
|
directives—usually for filenames
|
||||||
(e.g., <literal>.include</literal>) but also for string
|
(e.g., <literal>.include</literal>) but also for string
|
||||||
data (in association with <literal>.byte</literal>).
|
data (in association with <literal>.byte</literal>).
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
It is legal, though unusual, to attempt to pass a string to
|
It is legal, though unusual, to attempt to pass a string to
|
||||||
the other data statements. This will produces a series of
|
the other data statements. This will produces a series of
|
||||||
words/dwords where all bytes that aren't least-significant
|
words/dwords where all bytes that aren't least-significant
|
||||||
are zero. Endianness and size will match what the directive
|
are zero. Endianness and size will match what the directive
|
||||||
itself indicated.
|
itself indicated.
|
||||||
</para>
|
</para>
|
||||||
</section>
|
</section>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<title>Compound Arguments</title>
|
<title>Compound Arguments</title>
|
||||||
<para>
|
<para>
|
||||||
Compound arguments may be built up from simple ones, using the
|
Compound arguments may be built up from simple ones, using the
|
||||||
standard +, -, *, and / operators, which carry the usual
|
standard +, -, *, and / operators, which carry the usual
|
||||||
precedence. Also, the unary operators > and <, which
|
precedence. Also, the unary operators > and <, which
|
||||||
bind more tightly than anything else, provide the high and low
|
bind more tightly than anything else, provide the high and low
|
||||||
bytes of 16-bit values, respectively.
|
bytes of 16-bit values, respectively.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Use brackets [ ] instead of parentheses ( ) when grouping
|
Use brackets [ ] instead of parentheses ( ) when grouping
|
||||||
arithmetic operations, as the parentheses are needed for the
|
arithmetic operations, as the parentheses are needed for the
|
||||||
indirect addressing modes.
|
indirect addressing modes.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Examples:
|
Examples:
|
||||||
</para>
|
</para>
|
||||||
<itemizedlist>
|
<itemizedlist>
|
||||||
<listitem><para><literal>$D000</literal> evaluates to $D000</para></listitem>
|
<listitem><para><literal>$D000</literal> evaluates to $D000</para></listitem>
|
||||||
<listitem><para><literal>$D000+32</literal> evaluates to $D020</para></listitem>
|
<listitem><para><literal>$D000+32</literal> evaluates to $D020</para></listitem>
|
||||||
<listitem><para><literal>$D000+$20</literal> also evaluates to $D020</para></listitem>
|
<listitem><para><literal>$D000+$20</literal> also evaluates to $D020</para></listitem>
|
||||||
<listitem><para><literal><$D000+32</literal> evaluates to $20</para></listitem>
|
<listitem><para><literal><$D000+32</literal> evaluates to $20</para></listitem>
|
||||||
<listitem><para><literal>>$D000+32</literal> evaluates to $F0</para></listitem>
|
<listitem><para><literal>>$D000+32</literal> evaluates to $F0</para></listitem>
|
||||||
<listitem><para><literal>>[$D000+32]</literal> evaluates to $D0</para></listitem>
|
<listitem><para><literal>>[$D000+32]</literal> evaluates to $D0</para></listitem>
|
||||||
<listitem><para><literal>>$D000-275</literal> evaluates to $CE</para></listitem>
|
<listitem><para><literal>>$D000-275</literal> evaluates to $CE</para></listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<title>Memory Model</title>
|
<title>Memory Model</title>
|
||||||
<para>
|
<para>
|
||||||
In order to properly compute the locations of labels and the
|
In order to properly compute the locations of labels and the
|
||||||
like, Ophis must keep track of where assembled code will
|
like, Ophis must keep track of where assembled code will
|
||||||
actually be sitting in memory, and it strives to do this in a
|
actually be sitting in memory, and it strives to do this in a
|
||||||
way that is independent both of the target file and of the
|
way that is independent both of the target file and of the
|
||||||
target machine.
|
target machine.
|
||||||
</para>
|
</para>
|
||||||
<section>
|
<section>
|
||||||
<title>Basic PC tracking</title>
|
<title>Basic PC tracking</title>
|
||||||
<para>
|
<para>
|
||||||
The primary technique Ophis uses is <emphasis>program counter
|
The primary technique Ophis uses is <emphasis>program counter
|
||||||
tracking</emphasis>. As it assembles the code, it keeps
|
tracking</emphasis>. As it assembles the code, it keeps
|
||||||
track of a virtual program counter, and uses that to
|
track of a virtual program counter, and uses that to
|
||||||
determine where the labels should go.
|
determine where the labels should go.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
In the absence of an <literal>.org</literal> directive, it
|
In the absence of an <literal>.org</literal> directive, it
|
||||||
assumes a starting PC of zero. <literal>.org</literal>
|
assumes a starting PC of zero. <literal>.org</literal>
|
||||||
is a simple directive, setting the PC to the value
|
is a simple directive, setting the PC to the value
|
||||||
that <literal>.org</literal> specifies. In the simplest
|
that <literal>.org</literal> specifies. In the simplest
|
||||||
case, one <literal>.org</literal> directive appears at the
|
case, one <literal>.org</literal> directive appears at the
|
||||||
beginning of the code and sets the location for the rest of
|
beginning of the code and sets the location for the rest of
|
||||||
the code, which is one contiguous block.
|
the code, which is one contiguous block.
|
||||||
</para>
|
</para>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<title>Basic Segmentation simulation</title>
|
<title>Basic Segmentation simulation</title>
|
||||||
<para>
|
<para>
|
||||||
However, this isn't always practical. Often one wishes to
|
However, this isn't always practical. Often one wishes to
|
||||||
have a region of memory reserved for data without actually
|
have a region of memory reserved for data without actually
|
||||||
mapping that memory to the file. On some systems (typically
|
mapping that memory to the file. On some systems (typically
|
||||||
cartridge-based systems where ROM and RAM are seperate, and
|
cartridge-based systems where ROM and RAM are seperate, and
|
||||||
the target file only specifies the ROM image) this is
|
the target file only specifies the ROM image) this is
|
||||||
mandatory. In order to access these variables symbolically,
|
mandatory. In order to access these variables symbolically,
|
||||||
it's necessary to put the values into the label lookup
|
it's necessary to put the values into the label lookup
|
||||||
table.
|
table.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
It is possible, but inconvenient, to do this
|
It is possible, but inconvenient, to do this
|
||||||
with <literal>.alias</literal>, assigning a specific
|
with <literal>.alias</literal>, assigning a specific
|
||||||
memory location to each variable. This requires careful
|
memory location to each variable. This requires careful
|
||||||
coordination through your code, and makes creating reusable
|
coordination through your code, and makes creating reusable
|
||||||
libraries all but impossible.
|
libraries all but impossible.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
A better approach is to reserve a section at the beginning
|
A better approach is to reserve a section at the beginning
|
||||||
or end of your program, put an <literal>.org</literal>
|
or end of your program, put an <literal>.org</literal>
|
||||||
directive in, then use the <literal>.space</literal>
|
directive in, then use the <literal>.space</literal>
|
||||||
directive to divide up the data area. This is still a bit
|
directive to divide up the data area. This is still a bit
|
||||||
inconvenient, though, because all variables must be
|
inconvenient, though, because all variables must be
|
||||||
assigned all at once. What we'd really like is to keep
|
assigned all at once. What we'd really like is to keep
|
||||||
multiple PC counters, one for data and one for code.
|
multiple PC counters, one for data and one for code.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
The <literal>.text</literal>
|
The <literal>.text</literal>
|
||||||
and <literal>.data</literal> directives do this. Each
|
and <literal>.data</literal> directives do this. Each
|
||||||
has its own PC that starts at zero, and you can switch
|
has its own PC that starts at zero, and you can switch
|
||||||
between the two at any point without corrupting the other's
|
between the two at any point without corrupting the other's
|
||||||
counter. In this way each function can have
|
counter. In this way each function can have
|
||||||
a <literal>.data</literal> section (filled
|
a <literal>.data</literal> section (filled
|
||||||
with <literal>.space</literal> commands) and
|
with <literal>.space</literal> commands) and
|
||||||
a <literal>.text</literal> section (that contains the
|
a <literal>.text</literal> section (that contains the
|
||||||
actual code). This lets our library routines be almost
|
actual code). This lets our library routines be almost
|
||||||
completely self-contained - we can have one source file
|
completely self-contained - we can have one source file
|
||||||
that could be <literal>.included</literal> by multiple
|
that could be <literal>.included</literal> by multiple
|
||||||
projects without getting in anything's way.
|
projects without getting in anything's way.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
However, any given program may have its own ideas about
|
However, any given program may have its own ideas about
|
||||||
where data and code go, and it's good to ensure with
|
where data and code go, and it's good to ensure with
|
||||||
a <literal>.checkpc</literal> at the end of your code
|
a <literal>.checkpc</literal> at the end of your code
|
||||||
that you haven't accidentally overwritten code with data or
|
that you haven't accidentally overwritten code with data or
|
||||||
vice versa. If your <literal>.data</literal>
|
vice versa. If your <literal>.data</literal>
|
||||||
segment <emphasis>did</emphasis> start at zero, it's
|
segment <emphasis>did</emphasis> start at zero, it's
|
||||||
probably wise to make sure you aren't smashing the stack,
|
probably wise to make sure you aren't smashing the stack,
|
||||||
too (which is sitting in the region from $0100 to
|
too (which is sitting in the region from $0100 to
|
||||||
$01FF).
|
$01FF).
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
If you write code with no segment-defining statements in
|
If you write code with no segment-defining statements in
|
||||||
it, the default segment
|
it, the default segment
|
||||||
is <literal>text</literal>.
|
is <literal>text</literal>.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
The <literal>data</literal> segment is designed only
|
The <literal>data</literal> segment is designed only
|
||||||
for organizing labels. As such, errors will be flagged if
|
for organizing labels. As such, errors will be flagged if
|
||||||
you attempt to actually output information into
|
you attempt to actually output information into
|
||||||
a <literal>data</literal> segment.
|
a <literal>data</literal> segment.
|
||||||
</para>
|
</para>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<title>General Segmentation Simulation</title>
|
<title>General Segmentation Simulation</title>
|
||||||
<para>
|
<para>
|
||||||
One text and data segment each is usually sufficient, but
|
One text and data segment each is usually sufficient, but
|
||||||
for the cases where it is not, Ophis allows for user-defined
|
for the cases where it is not, Ophis allows for user-defined
|
||||||
segments. Putting a label
|
segments. Putting a label
|
||||||
after <literal>.text</literal>
|
after <literal>.text</literal>
|
||||||
or <literal>.data</literal> produces a new segment with
|
or <literal>.data</literal> produces a new segment with
|
||||||
the specified name.
|
the specified name.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Say, for example, that we have access to the RAM at the low
|
Say, for example, that we have access to the RAM at the low
|
||||||
end of the address space, but want to reserve the zero page
|
end of the address space, but want to reserve the zero page
|
||||||
for truly critical variables, and use the rest of RAM for
|
for truly critical variables, and use the rest of RAM for
|
||||||
everything else. Let's also assume that this is a 6510
|
everything else. Let's also assume that this is a 6510
|
||||||
chip, and locations $00 and $01 are reserved for the I/O
|
chip, and locations $00 and $01 are reserved for the I/O
|
||||||
port. We could start our program off with:
|
port. We could start our program off with:
|
||||||
</para>
|
</para>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
.data
|
.data
|
||||||
.org $200
|
.org $200
|
||||||
.data zp
|
.data zp
|
||||||
.org $2
|
.org $2
|
||||||
.text
|
.text
|
||||||
.org $800
|
.org $800
|
||||||
</programlisting>
|
</programlisting>
|
||||||
<para>
|
<para>
|
||||||
And, to be safe, we would probably want to end our code
|
And, to be safe, we would probably want to end our code
|
||||||
with checks to make sure we aren't overwriting anything:
|
with checks to make sure we aren't overwriting anything:
|
||||||
</para>
|
</para>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
.data
|
.data
|
||||||
.checkpc $800
|
.checkpc $800
|
||||||
.data zp
|
.data zp
|
||||||
.checkpc $100
|
.checkpc $100
|
||||||
</programlisting>
|
</programlisting>
|
||||||
</section>
|
</section>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<title>Macros</title>
|
<title>Macros</title>
|
||||||
<para>
|
<para>
|
||||||
Assembly language is a powerful tool—however, there are
|
Assembly language is a powerful tool—however, there are
|
||||||
many tasks that need to be done repeatedly, and with
|
many tasks that need to be done repeatedly, and with
|
||||||
mind-numbing minor modifications. Ophis includes a facility
|
mind-numbing minor modifications. Ophis includes a facility
|
||||||
for <emphasis>macros</emphasis> to allow this. Ophis macros
|
for <emphasis>macros</emphasis> to allow this. Ophis macros
|
||||||
are very similar in form to function calls in higher level
|
are very similar in form to function calls in higher level
|
||||||
languages.
|
languages.
|
||||||
</para>
|
</para>
|
||||||
<section>
|
<section>
|
||||||
<title>Defining Macros</title>
|
<title>Defining Macros</title>
|
||||||
<para>
|
<para>
|
||||||
Macros are defined with the <literal>.macro</literal>
|
Macros are defined with the <literal>.macro</literal>
|
||||||
and <literal>.macend</literal> commands. Here's a
|
and <literal>.macend</literal> commands. Here's a
|
||||||
simple one that will clear the screen on a Commodore
|
simple one that will clear the screen on a Commodore
|
||||||
64:
|
64:
|
||||||
</para>
|
</para>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
.macro clr'screen
|
.macro clr'screen
|
||||||
lda #147
|
lda #147
|
||||||
jsr $FFD2
|
jsr $FFD2
|
||||||
.macend
|
.macend
|
||||||
</programlisting>
|
</programlisting>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<title>Invoking Macros</title>
|
<title>Invoking Macros</title>
|
||||||
<para>
|
<para>
|
||||||
To invoke a macro, either use
|
To invoke a macro, either use
|
||||||
the <literal>.invoke</literal> command or backquote the
|
the <literal>.invoke</literal> command or backquote the
|
||||||
name of the routine. The previous macro may be expanded
|
name of the routine. The previous macro may be expanded
|
||||||
out in either of two ways, at any point in the
|
out in either of two ways, at any point in the
|
||||||
source:
|
source:
|
||||||
</para>
|
</para>
|
||||||
<programlisting>.invoke clr'screen</programlisting>
|
<programlisting>.invoke clr'screen</programlisting>
|
||||||
<para>or</para>
|
<para>or</para>
|
||||||
<programlisting>`clr'screen</programlisting>
|
<programlisting>`clr'screen</programlisting>
|
||||||
<para>will work equally well.</para>
|
<para>will work equally well.</para>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<title>Passing Arguments to Macros</title>
|
<title>Passing Arguments to Macros</title>
|
||||||
<para>
|
<para>
|
||||||
Macros may take arguments. The arguments to a macro are
|
Macros may take arguments. The arguments to a macro are
|
||||||
all of the <quote>word</quote> type, though byte values may
|
all of the <quote>word</quote> type, though byte values may
|
||||||
be passed and used as bytes as well. The first argument in
|
be passed and used as bytes as well. The first argument in
|
||||||
an invocation is bound to the label
|
an invocation is bound to the label
|
||||||
<literal>_1</literal>, the second
|
<literal>_1</literal>, the second
|
||||||
to <literal>_2</literal>, and so on. Here's a macro
|
to <literal>_2</literal>, and so on. Here's a macro
|
||||||
for storing a 16-bit value into a word pointer:
|
for storing a 16-bit value into a word pointer:
|
||||||
</para>
|
</para>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
.macro store16 ; `store16 dest, src
|
.macro store16 ; `store16 dest, src
|
||||||
lda #<_2
|
lda #<_2
|
||||||
sta _1
|
sta _1
|
||||||
lda #>_2
|
lda #>_2
|
||||||
sta _1+1
|
sta _1+1
|
||||||
.macend
|
.macend
|
||||||
</programlisting>
|
</programlisting>
|
||||||
<para>
|
<para>
|
||||||
Macro arguments behave, for the most part, as if they were
|
Macro arguments behave, for the most part, as if they were
|
||||||
defined by <literal>.alias</literal>
|
defined by <literal>.alias</literal>
|
||||||
commands <emphasis>in the calling context</emphasis>.
|
commands <emphasis>in the calling context</emphasis>.
|
||||||
(They differ in that they will not produce duplicate-label
|
(They differ in that they will not produce duplicate-label
|
||||||
errors if those names already exist in the calling scope,
|
errors if those names already exist in the calling scope,
|
||||||
and in that they disappear after the call is
|
and in that they disappear after the call is
|
||||||
completed.)
|
completed.)
|
||||||
</para>
|
</para>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<title>Features and Restrictions of the Ophis Macro Model</title>
|
<title>Features and Restrictions of the Ophis Macro Model</title>
|
||||||
<para>
|
<para>
|
||||||
Unlike most macro systems (which do textual replacement),
|
Unlike most macro systems (which do textual replacement),
|
||||||
Ophis macros evaluate their arguments and bind them into the
|
Ophis macros evaluate their arguments and bind them into the
|
||||||
symbol table as temporary labels. This produces some
|
symbol table as temporary labels. This produces some
|
||||||
benefits, but it also puts some restrictions on what kinds of
|
benefits, but it also puts some restrictions on what kinds of
|
||||||
macros may be defined.
|
macros may be defined.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
The primary benefit of this <quote>expand-via-binding</quote>
|
The primary benefit of this <quote>expand-via-binding</quote>
|
||||||
discipline is that there are no surprises in the semantics.
|
discipline is that there are no surprises in the semantics.
|
||||||
The expression <literal>_1+1</literal> in the macro above
|
The expression <literal>_1+1</literal> in the macro above
|
||||||
will always evaluate to one more than the value that was
|
will always evaluate to one more than the value that was
|
||||||
passed as the first argument, even if that first argument is
|
passed as the first argument, even if that first argument is
|
||||||
some immensely complex expression that an
|
some immensely complex expression that an
|
||||||
expand-via-substitution method may accidentally
|
expand-via-substitution method may accidentally
|
||||||
mangle.
|
mangle.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
The primary disadvantage of the expand-via-binding
|
The primary disadvantage of the expand-via-binding
|
||||||
discipline is that only fixed numbers of words and bytes
|
discipline is that only fixed numbers of words and bytes
|
||||||
may be passed. A substitution-based system could define a
|
may be passed. A substitution-based system could define a
|
||||||
macro including the line <literal>LDA _1</literal> and
|
macro including the line <literal>LDA _1</literal> and
|
||||||
accept as arguments both <literal>$C000</literal>
|
accept as arguments both <literal>$C000</literal>
|
||||||
(which would put the value of memory location $C000 into
|
(which would put the value of memory location $C000 into
|
||||||
the accumulator) and <literal>#$40</literal> (which
|
the accumulator) and <literal>#$40</literal> (which
|
||||||
would put the immediate value $40 into the accumulator).
|
would put the immediate value $40 into the accumulator).
|
||||||
If you <emphasis>really</emphasis> need this kind of
|
If you <emphasis>really</emphasis> need this kind of
|
||||||
behavior, a run a C preprocessor over your Ophis source,
|
behavior, a run a C preprocessor over your Ophis source,
|
||||||
and use <literal>#define</literal> to your heart's
|
and use <literal>#define</literal> to your heart's
|
||||||
content.
|
content.
|
||||||
</para>
|
</para>
|
||||||
</section>
|
</section>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<title>Assembler directives</title>
|
<title>Assembler directives</title>
|
||||||
<para>
|
<para>
|
||||||
Assembler directives are all instructions to the assembler
|
Assembler directives are all instructions to the assembler
|
||||||
that are not actual instructions. Ophis's set of directives
|
that are not actual instructions. Ophis's set of directives
|
||||||
follow.
|
follow.
|
||||||
</para>
|
</para>
|
||||||
<itemizedlist>
|
<itemizedlist>
|
||||||
<listitem><para><literal>.advance</literal> <emphasis>address</emphasis>:
|
<listitem><para><literal>.advance</literal> <emphasis>address</emphasis>:
|
||||||
Forces the program counter to
|
Forces the program counter to
|
||||||
be <emphasis>address</emphasis>. Unlike
|
be <emphasis>address</emphasis>. Unlike
|
||||||
the <literal>.org</literal>
|
the <literal>.org</literal>
|
||||||
directive, <literal>.advance</literal> outputs zeroes until the
|
directive, <literal>.advance</literal> outputs zeroes until the
|
||||||
program counter reaches a specified address. Attempting
|
program counter reaches a specified address. Attempting
|
||||||
to <literal>.advance</literal> to a point behind the current
|
to <literal>.advance</literal> to a point behind the current
|
||||||
program counter is an assemble-time error.</para></listitem>
|
program counter is an assemble-time error.</para></listitem>
|
||||||
<listitem><para><literal>.alias</literal> <emphasis>label</emphasis> <emphasis>value</emphasis>: The
|
<listitem><para><literal>.alias</literal> <emphasis>label</emphasis> <emphasis>value</emphasis>: The
|
||||||
.alias directive assigns an arbitrary value to a label. This
|
.alias directive assigns an arbitrary value to a label. This
|
||||||
value may be an arbitrary argument, but cannot reference any
|
value may be an arbitrary argument, but cannot reference any
|
||||||
label that has not already been defined (this prevents
|
label that has not already been defined (this prevents
|
||||||
recursive label dependencies).</para></listitem>
|
recursive label dependencies).</para></listitem>
|
||||||
<listitem><para><literal>.byte</literal> <emphasis>arg</emphasis> [ , <emphasis>arg</emphasis>, ... ]:
|
<listitem><para><literal>.byte</literal> <emphasis>arg</emphasis> [ , <emphasis>arg</emphasis>, ... ]:
|
||||||
Specifies a series of arguments, which are evaluated, and
|
Specifies a series of arguments, which are evaluated, and
|
||||||
strings, which are included as raw ASCII data. The final
|
strings, which are included as raw ASCII data. The final
|
||||||
results of these arguments must be one byte in size. Seperate
|
results of these arguments must be one byte in size. Seperate
|
||||||
constants are seperated by comments.</para></listitem>
|
constants are seperated by comments.</para></listitem>
|
||||||
<listitem><para><literal>.checkpc</literal> <emphasis>address</emphasis>: Ensures that the
|
<listitem><para><literal>.checkpc</literal> <emphasis>address</emphasis>: Ensures that the
|
||||||
program counter is less than or equal to the address
|
program counter is less than or equal to the address
|
||||||
specified, and emits an assemble-time error if it is not.
|
specified, and emits an assemble-time error if it is not.
|
||||||
<emphasis>This produces no code in the final binary - it is there to
|
<emphasis>This produces no code in the final binary - it is there to
|
||||||
ensure that linking a large amount of data together does not
|
ensure that linking a large amount of data together does not
|
||||||
overstep memory boundaries.</emphasis></para></listitem>
|
overstep memory boundaries.</emphasis></para></listitem>
|
||||||
<listitem><para><literal>.data</literal> <emphasis>[label]</emphasis>: Sets the segment to
|
<listitem><para><literal>.data</literal> <emphasis>[label]</emphasis>: Sets the segment to
|
||||||
the segment name specified and disallows output. If no label
|
the segment name specified and disallows output. If no label
|
||||||
is given, switches to the default data segment.</para></listitem>
|
is given, switches to the default data segment.</para></listitem>
|
||||||
<listitem><para><literal>.incbin</literal> <emphasis>filename</emphasis>: Inserts the
|
<listitem><para><literal>.incbin</literal> <emphasis>filename</emphasis>: Inserts the
|
||||||
contents of the file specified as binary data. Use it to
|
contents of the file specified as binary data. Use it to
|
||||||
include graphics information, precompiled code, or other
|
include graphics information, precompiled code, or other
|
||||||
non-assembler data.</para></listitem>
|
non-assembler data.</para></listitem>
|
||||||
<listitem><para><literal>.include</literal> <emphasis>filename</emphasis>: Includes the
|
<listitem><para><literal>.include</literal> <emphasis>filename</emphasis>: Includes the
|
||||||
entirety of the file specified at that point in the program.
|
entirety of the file specified at that point in the program.
|
||||||
Use this to order your final sources.</para></listitem>
|
Use this to order your final sources.</para></listitem>
|
||||||
<listitem><para><literal>.org</literal> <emphasis>address</emphasis>: Sets the program
|
<listitem><para><literal>.org</literal> <emphasis>address</emphasis>: Sets the program
|
||||||
counter to the address specified. <emphasis>This does not emit any
|
counter to the address specified. <emphasis>This does not emit any
|
||||||
code in and of itself, nor does it overwrite anything that
|
code in and of itself, nor does it overwrite anything that
|
||||||
previously existed.</emphasis> If you wish to jump ahead in memory,
|
previously existed.</emphasis> If you wish to jump ahead in memory,
|
||||||
use <literal>.advance</literal>.</para></listitem>
|
use <literal>.advance</literal>.</para></listitem>
|
||||||
<listitem><para><literal>.require</literal> <emphasis>filename</emphasis>: Includes the entirety
|
<listitem><para><literal>.require</literal> <emphasis>filename</emphasis>: Includes the entirety
|
||||||
of the file specified at that point in the program. Unlike <literal>.include</literal>,
|
of the file specified at that point in the program. Unlike <literal>.include</literal>,
|
||||||
however, code included with <literal>.require</literal> will only be inserted once.
|
however, code included with <literal>.require</literal> will only be inserted once.
|
||||||
The <literal>.require</literal> directive is useful for ensuring that certain code libraries
|
The <literal>.require</literal> directive is useful for ensuring that certain code libraries
|
||||||
are somewhere in the final binary. They are also very useful for guaranteeing that
|
are somewhere in the final binary. They are also very useful for guaranteeing that
|
||||||
macro libraries are available.</para></listitem>
|
macro libraries are available.</para></listitem>
|
||||||
<listitem><para><literal>.space</literal> <emphasis>label</emphasis> <emphasis>size</emphasis>: This
|
<listitem><para><literal>.space</literal> <emphasis>label</emphasis> <emphasis>size</emphasis>: This
|
||||||
directive is used to organize global variables. It defines the
|
directive is used to organize global variables. It defines the
|
||||||
label specified to be at the current location of the program
|
label specified to be at the current location of the program
|
||||||
counter, and then advances the program counter <emphasis>size</emphasis>
|
counter, and then advances the program counter <emphasis>size</emphasis>
|
||||||
steps ahead. No actual code is produced. This is equivalent
|
steps ahead. No actual code is produced. This is equivalent
|
||||||
to <literal>label: .org ^+size</literal>.</para></listitem>
|
to <literal>label: .org ^+size</literal>.</para></listitem>
|
||||||
<listitem><para><literal>.text</literal> <emphasis>[label]</emphasis>: Sets the segment to
|
<listitem><para><literal>.text</literal> <emphasis>[label]</emphasis>: Sets the segment to
|
||||||
the segment name specified and allows output. If no label is
|
the segment name specified and allows output. If no label is
|
||||||
given, switches to the default text segment.</para></listitem>
|
given, switches to the default text segment.</para></listitem>
|
||||||
<listitem><para><literal>.word</literal> <emphasis>arg</emphasis> [ , <emphasis>arg</emphasis>, ... ]:
|
<listitem><para><literal>.word</literal> <emphasis>arg</emphasis> [ , <emphasis>arg</emphasis>, ... ]:
|
||||||
Like <literal>.byte</literal>, but values are all treated as two-byte
|
Like <literal>.byte</literal>, but values are all treated as two-byte
|
||||||
values and stored low-end first (as is the 6502's wont). Use
|
values and stored low-end first (as is the 6502's wont). Use
|
||||||
this to create jump tables (an unadorned label will evaluate
|
this to create jump tables (an unadorned label will evaluate
|
||||||
to that label's location) or otherwise store 16-bit
|
to that label's location) or otherwise store 16-bit
|
||||||
data.</para></listitem>
|
data.</para></listitem>
|
||||||
<listitem><para><literal>.dword</literal> <emphasis>arg</emphasis> [ , <emphasis>arg</emphasis>, ...]:
|
<listitem><para><literal>.dword</literal> <emphasis>arg</emphasis> [ , <emphasis>arg</emphasis>, ...]:
|
||||||
Like <literal>.word</literal>, but for 32-bit values.</para></listitem>
|
Like <literal>.word</literal>, but for 32-bit values.</para></listitem>
|
||||||
<listitem><para><literal>.wordbe</literal> <emphasis>arg</emphasis> [ , <emphasis>arg</emphasis>, ...]:
|
<listitem><para><literal>.wordbe</literal> <emphasis>arg</emphasis> [ , <emphasis>arg</emphasis>, ...]:
|
||||||
Like <literal>.word</literal>, but stores the value in a big-endian format (high byte first).</para></listitem>
|
Like <literal>.word</literal>, but stores the value in a big-endian format (high byte first).</para></listitem>
|
||||||
<listitem><para><literal>.dwordbe</literal> <emphasis>arg</emphasis> [ , <emphasis>arg</emphasis>, ...]:
|
<listitem><para><literal>.dwordbe</literal> <emphasis>arg</emphasis> [ , <emphasis>arg</emphasis>, ...]:
|
||||||
Like <literal>.dword</literal>, but stores the value high byte first.</para></listitem>
|
Like <literal>.dword</literal>, but stores the value high byte first.</para></listitem>
|
||||||
<listitem><para><literal>.scope</literal>: Starts a new scope block. Labels
|
<listitem><para><literal>.scope</literal>: Starts a new scope block. Labels
|
||||||
that begin with an underscore are only reachable from within
|
that begin with an underscore are only reachable from within
|
||||||
their innermost enclosing <literal>.scope</literal> statement.</para></listitem>
|
their innermost enclosing <literal>.scope</literal> statement.</para></listitem>
|
||||||
<listitem><para><literal>.scend</literal>: Ends a scope block. Makes the
|
<listitem><para><literal>.scend</literal>: Ends a scope block. Makes the
|
||||||
temporary labels defined since the last <literal>.scope</literal>
|
temporary labels defined since the last <literal>.scope</literal>
|
||||||
statement unreachable, and permits them to be redefined in a
|
statement unreachable, and permits them to be redefined in a
|
||||||
new scope.</para></listitem>
|
new scope.</para></listitem>
|
||||||
<listitem><para><literal>.macro</literal> <emphasis>name</emphasis>: Begins a macro
|
<listitem><para><literal>.macro</literal> <emphasis>name</emphasis>: Begins a macro
|
||||||
definition block. This is a scope block that can be inlined
|
definition block. This is a scope block that can be inlined
|
||||||
at arbitrary points with <literal>.invoke</literal>. Arguments to the
|
at arbitrary points with <literal>.invoke</literal>. Arguments to the
|
||||||
macro will be bound to temporary labels with names like
|
macro will be bound to temporary labels with names like
|
||||||
<literal>_1</literal>, <literal>_2</literal>, etc.</para></listitem>
|
<literal>_1</literal>, <literal>_2</literal>, etc.</para></listitem>
|
||||||
<listitem><para><literal>.macend</literal>: Ends a macro definition
|
<listitem><para><literal>.macend</literal>: Ends a macro definition
|
||||||
block.</para></listitem>
|
block.</para></listitem>
|
||||||
<listitem><para><literal>.invoke</literal> <emphasis>label</emphasis> [<emphasis>argument</emphasis> [,
|
<listitem><para><literal>.invoke</literal> <emphasis>label</emphasis> [<emphasis>argument</emphasis> [,
|
||||||
<emphasis>argument</emphasis> ...]]: invokes (inlines) the specified
|
<emphasis>argument</emphasis> ...]]: invokes (inlines) the specified
|
||||||
macro, binding the values of the arguments to the ones the
|
macro, binding the values of the arguments to the ones the
|
||||||
macro definition intends to read. A shorthand for <literal>.invoke</literal>
|
macro definition intends to read. A shorthand for <literal>.invoke</literal>
|
||||||
is the name of the macro to invoke, backquoted.</para></listitem>
|
is the name of the macro to invoke, backquoted.</para></listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
</section>
|
</section>
|
||||||
</appendix>
|
</appendix>
|
||||||
|
|
|
@ -1,74 +1,74 @@
|
||||||
; Test file for 65C02 extended opcode compliance
|
; Test file for 65C02 extended opcode compliance
|
||||||
; This odd little source file uses every addressing mode
|
; This odd little source file uses every addressing mode
|
||||||
; of every opcode, and uses the opcode itself as the argument
|
; of every opcode, and uses the opcode itself as the argument
|
||||||
; to each instruction that takes one. The resulting binary's
|
; to each instruction that takes one. The resulting binary's
|
||||||
; bytes are thus in strictly increasing numerical order.
|
; bytes are thus in strictly increasing numerical order.
|
||||||
|
|
||||||
; Some opcodes have multiple mnemonics; we provide both.
|
; Some opcodes have multiple mnemonics; we provide both.
|
||||||
|
|
||||||
; This file also doesn't include the 65C02's opcodes that
|
; This file also doesn't include the 65C02's opcodes that
|
||||||
; are also available in stock 6502s - see testbase.oph for
|
; are also available in stock 6502s - see testbase.oph for
|
||||||
; those.
|
; those.
|
||||||
TSB $04 ; 04: TSB - Zero Page
|
TSB $04 ; 04: TSB - Zero Page
|
||||||
RMB0 $07 ; 07: RMB0 - Zero Page
|
RMB0 $07 ; 07: RMB0 - Zero Page
|
||||||
TSB $0C0C ; 0C: TSB - Absolute
|
TSB $0C0C ; 0C: TSB - Absolute
|
||||||
BBR0 ^+$11 ; 0F: BBR0 - Relative
|
BBR0 ^+$11 ; 0F: BBR0 - Relative
|
||||||
ORA ($12) ; 12: ORA - (Zero Page)
|
ORA ($12) ; 12: ORA - (Zero Page)
|
||||||
TRB $14 ; 14: TRB - Zero Page
|
TRB $14 ; 14: TRB - Zero Page
|
||||||
RMB1 $17 ; 17: RMB1 - Zero Page
|
RMB1 $17 ; 17: RMB1 - Zero Page
|
||||||
INA ; 1A: INA - Implied
|
INA ; 1A: INA - Implied
|
||||||
INC ; INC - Implied
|
INC ; INC - Implied
|
||||||
TRB $1C1C ; 1C: TRB - Absolute
|
TRB $1C1C ; 1C: TRB - Absolute
|
||||||
BBR1 ^+$21 ; 1F: BBR1 - Relative
|
BBR1 ^+$21 ; 1F: BBR1 - Relative
|
||||||
RMB2 $27 ; 27: RMB2 - Zero Page
|
RMB2 $27 ; 27: RMB2 - Zero Page
|
||||||
BBR2 ^+$31 ; 2F: BBR2 - Relative
|
BBR2 ^+$31 ; 2F: BBR2 - Relative
|
||||||
AND ($32) ; 32: AND - (Zero Page)
|
AND ($32) ; 32: AND - (Zero Page)
|
||||||
BIT $34, X ; 34: BIT - Zero Page, X
|
BIT $34, X ; 34: BIT - Zero Page, X
|
||||||
RMB3 $37 ; 37: RMB3 - Zero Page
|
RMB3 $37 ; 37: RMB3 - Zero Page
|
||||||
DEA ; 3A: DEA - Implied
|
DEA ; 3A: DEA - Implied
|
||||||
DEC ; 3A: DEC - Implied
|
DEC ; 3A: DEC - Implied
|
||||||
BIT $3C3C,X ; 3C: BIT - Absolute, X
|
BIT $3C3C,X ; 3C: BIT - Absolute, X
|
||||||
BBR3 ^+$41 ; 3F: BBR3 - Relative
|
BBR3 ^+$41 ; 3F: BBR3 - Relative
|
||||||
RMB4 $47 ; 47: RMB4 - Zero Page
|
RMB4 $47 ; 47: RMB4 - Zero Page
|
||||||
BBR4 ^+$51 ; 4F: BBR4 - Relative
|
BBR4 ^+$51 ; 4F: BBR4 - Relative
|
||||||
EOR ($52) ; 52: EOR - (Zero Page)
|
EOR ($52) ; 52: EOR - (Zero Page)
|
||||||
RMB5 $57 ; 57: RMB5 - Zero Page
|
RMB5 $57 ; 57: RMB5 - Zero Page
|
||||||
PHY ; 5A: PHY - Implied
|
PHY ; 5A: PHY - Implied
|
||||||
BBR5 ^+$61 ; 5F: BBR5 - Relative
|
BBR5 ^+$61 ; 5F: BBR5 - Relative
|
||||||
STZ $64 ; 64: STZ - Zero Page
|
STZ $64 ; 64: STZ - Zero Page
|
||||||
RMB6 $67 ; 67: RMB6 - Zero Page
|
RMB6 $67 ; 67: RMB6 - Zero Page
|
||||||
BBR6 ^+$71 ; 6F: BBR6 - Relative
|
BBR6 ^+$71 ; 6F: BBR6 - Relative
|
||||||
ADC ($72) ; 72: ADC - (Zero Page)
|
ADC ($72) ; 72: ADC - (Zero Page)
|
||||||
STZ $74, X ; 74: STZ - Zero Page, X
|
STZ $74, X ; 74: STZ - Zero Page, X
|
||||||
RMB7 $77 ; 77: RMB7 - Zero Page
|
RMB7 $77 ; 77: RMB7 - Zero Page
|
||||||
PLY ; 7A: PLY - Implied
|
PLY ; 7A: PLY - Implied
|
||||||
JMP ($7C7C, X) ; 7C: JMP - (Absolute, X)
|
JMP ($7C7C, X) ; 7C: JMP - (Absolute, X)
|
||||||
BBR7 ^+$81 ; 7F: BBR7 - Relative
|
BBR7 ^+$81 ; 7F: BBR7 - Relative
|
||||||
BRA ^-$7E ; 80: BRA - Relative
|
BRA ^-$7E ; 80: BRA - Relative
|
||||||
SMB0 $87 ; 87: SMB0 - Zero Page
|
SMB0 $87 ; 87: SMB0 - Zero Page
|
||||||
BIT #$89 ; 89: BIT - Immediate
|
BIT #$89 ; 89: BIT - Immediate
|
||||||
BBS0 ^-$6F ; 8F: BBS0 - Relative
|
BBS0 ^-$6F ; 8F: BBS0 - Relative
|
||||||
STA ($92) ; 92: STA - (Zero Page)
|
STA ($92) ; 92: STA - (Zero Page)
|
||||||
SMB1 $97 ; 97: SMB1 - Zero Page
|
SMB1 $97 ; 97: SMB1 - Zero Page
|
||||||
STZ $9C9C ; 9C: STZ - Absolute
|
STZ $9C9C ; 9C: STZ - Absolute
|
||||||
STZ $9E9E, X ; 9E: STZ - Absolute, X
|
STZ $9E9E, X ; 9E: STZ - Absolute, X
|
||||||
BBS1 ^-$5F ; 9F: BBS1 - Relative
|
BBS1 ^-$5F ; 9F: BBS1 - Relative
|
||||||
SMB2 $A7 ; A7: SMB2 - Zero Page
|
SMB2 $A7 ; A7: SMB2 - Zero Page
|
||||||
BBS2 ^-$4F ; AF: BBS2 - Relative
|
BBS2 ^-$4F ; AF: BBS2 - Relative
|
||||||
LDA ($B2) ; B2: LDA - (Zero Page)
|
LDA ($B2) ; B2: LDA - (Zero Page)
|
||||||
SMB3 $B7 ; B7: SMB3 - Zero Page
|
SMB3 $B7 ; B7: SMB3 - Zero Page
|
||||||
BBS3 ^-$3F ; BF: BBS3 - Relative
|
BBS3 ^-$3F ; BF: BBS3 - Relative
|
||||||
SMB4 $C7 ; C7: SMB4 - Zero Page
|
SMB4 $C7 ; C7: SMB4 - Zero Page
|
||||||
WAI ; CB: WAI - Implied
|
WAI ; CB: WAI - Implied
|
||||||
BBS4 ^-$2F ; CF: BBS4 - Relative
|
BBS4 ^-$2F ; CF: BBS4 - Relative
|
||||||
CMP ($D2) ; D2: CMP - (Zero Page)
|
CMP ($D2) ; D2: CMP - (Zero Page)
|
||||||
SMB5 $D7 ; D7: SMB5 - Zero Page
|
SMB5 $D7 ; D7: SMB5 - Zero Page
|
||||||
PHX ; DA: PHX - Implied
|
PHX ; DA: PHX - Implied
|
||||||
STP ; DB: STP - Implied
|
STP ; DB: STP - Implied
|
||||||
BBS5 ^-$1F ; DF: BBS5 - Relative
|
BBS5 ^-$1F ; DF: BBS5 - Relative
|
||||||
SMB6 $E7 ; E7: SMB6 - Zero Page
|
SMB6 $E7 ; E7: SMB6 - Zero Page
|
||||||
BBS6 ^-$0F ; EF: BBS6 - Relative
|
BBS6 ^-$0F ; EF: BBS6 - Relative
|
||||||
SBC ($F2) ; F2: SBC - (Zero Page)
|
SBC ($F2) ; F2: SBC - (Zero Page)
|
||||||
SMB7 $F7 ; F7: SMB7 - Zero Page
|
SMB7 $F7 ; F7: SMB7 - Zero Page
|
||||||
PLX ; FA: PLX - Implied
|
PLX ; FA: PLX - Implied
|
||||||
BBS7 ^+$01 ; FF: BBS7 - Relative
|
BBS7 ^+$01 ; FF: BBS7 - Relative
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
; This data file just dumps out $00-$0F repeatedly with different forms.
|
; This data file just dumps out $00-$0F repeatedly with different forms.
|
||||||
|
|
||||||
.byte 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
|
.byte 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
|
||||||
.word 256, $0302, $0504, $0706, $0908, $0b0a, $0d0c, $0f0e
|
.word 256, $0302, $0504, $0706, $0908, $0b0a, $0d0c, $0f0e
|
||||||
.dword $03020100, $07060504, $0b0a0908, $0f0e0d0c
|
.dword $03020100, $07060504, $0b0a0908, $0f0e0d0c
|
||||||
.wordbe 1, $0203, $0405, $0607, $0809, $0a0b, $0c0d, $0e0f
|
.wordbe 1, $0203, $0405, $0607, $0809, $0a0b, $0c0d, $0e0f
|
||||||
.dwordbe $010203, $04050607, $08090a0b, $0c0d0e0f
|
.dwordbe $010203, $04050607, $08090a0b, $0c0d0e0f
|
||||||
|
|
|
@ -1,256 +1,256 @@
|
||||||
00: BRK - Implied
|
00: BRK - Implied
|
||||||
01: ORA - (Zero Page, X)
|
01: ORA - (Zero Page, X)
|
||||||
02:
|
02:
|
||||||
03:
|
03:
|
||||||
04:
|
04:
|
||||||
05: ORA - Zero Page
|
05: ORA - Zero Page
|
||||||
06: ASL - Zero Page
|
06: ASL - Zero Page
|
||||||
07:
|
07:
|
||||||
08: PHP - Implied
|
08: PHP - Implied
|
||||||
09: ORA - Immediate
|
09: ORA - Immediate
|
||||||
0A: ASL - Implied
|
0A: ASL - Implied
|
||||||
0B:
|
0B:
|
||||||
0C:
|
0C:
|
||||||
0D: ORA - Absolute
|
0D: ORA - Absolute
|
||||||
0E: ASL - Absolute
|
0E: ASL - Absolute
|
||||||
0F:
|
0F:
|
||||||
10: BPL - Relative
|
10: BPL - Relative
|
||||||
11: ORA - (Zero Page), Y
|
11: ORA - (Zero Page), Y
|
||||||
12:
|
12:
|
||||||
13:
|
13:
|
||||||
14:
|
14:
|
||||||
15: ORA - Zero Page, X
|
15: ORA - Zero Page, X
|
||||||
16: ASL - Zero Page, X
|
16: ASL - Zero Page, X
|
||||||
17:
|
17:
|
||||||
18: CLC - Implied
|
18: CLC - Implied
|
||||||
19: ORA - Absolute, Y
|
19: ORA - Absolute, Y
|
||||||
1A:
|
1A:
|
||||||
1B:
|
1B:
|
||||||
1C:
|
1C:
|
||||||
1D: ORA - Absolute, X
|
1D: ORA - Absolute, X
|
||||||
1E: ASL - Absolute, X
|
1E: ASL - Absolute, X
|
||||||
1F:
|
1F:
|
||||||
20: JSR - Absolute
|
20: JSR - Absolute
|
||||||
21: AND - (Zero Page, X)
|
21: AND - (Zero Page, X)
|
||||||
22:
|
22:
|
||||||
23:
|
23:
|
||||||
24: BIT - Zero Page
|
24: BIT - Zero Page
|
||||||
25: AND - Zero Page
|
25: AND - Zero Page
|
||||||
26: ROL - Zero Page
|
26: ROL - Zero Page
|
||||||
27:
|
27:
|
||||||
28: PLP - Implied
|
28: PLP - Implied
|
||||||
29: AND - Immediate
|
29: AND - Immediate
|
||||||
2A: ROL - Implied
|
2A: ROL - Implied
|
||||||
2B:
|
2B:
|
||||||
2C: BIT - Absolute
|
2C: BIT - Absolute
|
||||||
2D: AND - Absolute
|
2D: AND - Absolute
|
||||||
2E: ROL - Absolute
|
2E: ROL - Absolute
|
||||||
2F:
|
2F:
|
||||||
30: BMI - Relative
|
30: BMI - Relative
|
||||||
31: AND - (Zero Page), Y
|
31: AND - (Zero Page), Y
|
||||||
32:
|
32:
|
||||||
33:
|
33:
|
||||||
34:
|
34:
|
||||||
35: AND - Zero Page, X
|
35: AND - Zero Page, X
|
||||||
36: ROL - Zero Page, X
|
36: ROL - Zero Page, X
|
||||||
37:
|
37:
|
||||||
38: SEC - Implied
|
38: SEC - Implied
|
||||||
39: AND - Absolute, Y
|
39: AND - Absolute, Y
|
||||||
3A:
|
3A:
|
||||||
3B:
|
3B:
|
||||||
3C:
|
3C:
|
||||||
3D: AND - Absolute, X
|
3D: AND - Absolute, X
|
||||||
3E: ROL - Absolute, X
|
3E: ROL - Absolute, X
|
||||||
3F:
|
3F:
|
||||||
40: RTI - Implied
|
40: RTI - Implied
|
||||||
41: EOR - (Zero Page, X)
|
41: EOR - (Zero Page, X)
|
||||||
42:
|
42:
|
||||||
43:
|
43:
|
||||||
44:
|
44:
|
||||||
45: EOR - Zero Page
|
45: EOR - Zero Page
|
||||||
46: LSR - Zero Page
|
46: LSR - Zero Page
|
||||||
47:
|
47:
|
||||||
48: PHA - Implied
|
48: PHA - Implied
|
||||||
49: EOR - Immediate
|
49: EOR - Immediate
|
||||||
4A: LSR - Implied
|
4A: LSR - Implied
|
||||||
4B:
|
4B:
|
||||||
4C: JMP - Absolute
|
4C: JMP - Absolute
|
||||||
4D: EOR - Absolute
|
4D: EOR - Absolute
|
||||||
4E: LSR - Absolute
|
4E: LSR - Absolute
|
||||||
4F:
|
4F:
|
||||||
50: BVC - Relative
|
50: BVC - Relative
|
||||||
51: EOR - (Zero Page), Y
|
51: EOR - (Zero Page), Y
|
||||||
52:
|
52:
|
||||||
53:
|
53:
|
||||||
54:
|
54:
|
||||||
55: EOR - Zero Page, X
|
55: EOR - Zero Page, X
|
||||||
56: LSR - Zero Page, X
|
56: LSR - Zero Page, X
|
||||||
57:
|
57:
|
||||||
58: CLI - Implied
|
58: CLI - Implied
|
||||||
59: EOR - Absolute, Y
|
59: EOR - Absolute, Y
|
||||||
5A:
|
5A:
|
||||||
5B:
|
5B:
|
||||||
5C:
|
5C:
|
||||||
5D: EOR - Absolute, X
|
5D: EOR - Absolute, X
|
||||||
5E: LSR - Absolute, X
|
5E: LSR - Absolute, X
|
||||||
5F:
|
5F:
|
||||||
60: RTS - Implied
|
60: RTS - Implied
|
||||||
61: ADC - (Zero Page, X)
|
61: ADC - (Zero Page, X)
|
||||||
62:
|
62:
|
||||||
63:
|
63:
|
||||||
64:
|
64:
|
||||||
65: ADC - Zero Page
|
65: ADC - Zero Page
|
||||||
66: ROR - Zero Page
|
66: ROR - Zero Page
|
||||||
67:
|
67:
|
||||||
68: PLA - Implied
|
68: PLA - Implied
|
||||||
69: ADC - Immediate
|
69: ADC - Immediate
|
||||||
6A: ROR - Implied
|
6A: ROR - Implied
|
||||||
6B:
|
6B:
|
||||||
6C: JMP - (Absolute)
|
6C: JMP - (Absolute)
|
||||||
6D: ADC - Absolute
|
6D: ADC - Absolute
|
||||||
6E: ROR - Absolute
|
6E: ROR - Absolute
|
||||||
6F:
|
6F:
|
||||||
70: BVS - Relative
|
70: BVS - Relative
|
||||||
71: ADC - (Zero Page), Y
|
71: ADC - (Zero Page), Y
|
||||||
72:
|
72:
|
||||||
73:
|
73:
|
||||||
74:
|
74:
|
||||||
75: ADC - Zero Page, X
|
75: ADC - Zero Page, X
|
||||||
76: ROR - Zero Page, X
|
76: ROR - Zero Page, X
|
||||||
77:
|
77:
|
||||||
78: SEI - Implied
|
78: SEI - Implied
|
||||||
79: ADC - Absolute, Y
|
79: ADC - Absolute, Y
|
||||||
7A:
|
7A:
|
||||||
7B:
|
7B:
|
||||||
7C:
|
7C:
|
||||||
7D: ADC - Absolute, X
|
7D: ADC - Absolute, X
|
||||||
7E: ROR - Absolute, X
|
7E: ROR - Absolute, X
|
||||||
7F:
|
7F:
|
||||||
80:
|
80:
|
||||||
81: STA - (Zero Page, X)
|
81: STA - (Zero Page, X)
|
||||||
82:
|
82:
|
||||||
83:
|
83:
|
||||||
84: STY - Zero Page
|
84: STY - Zero Page
|
||||||
85: STA - Zero Page
|
85: STA - Zero Page
|
||||||
86: STX - Zero Page
|
86: STX - Zero Page
|
||||||
87:
|
87:
|
||||||
88: DEY - Implied
|
88: DEY - Implied
|
||||||
89:
|
89:
|
||||||
8A: TXA - Implied
|
8A: TXA - Implied
|
||||||
8B:
|
8B:
|
||||||
8C: STY - Absolute
|
8C: STY - Absolute
|
||||||
8D: STA - Absolute
|
8D: STA - Absolute
|
||||||
8E: STX - Absolute
|
8E: STX - Absolute
|
||||||
8F:
|
8F:
|
||||||
90: BCC - Relative
|
90: BCC - Relative
|
||||||
91: STA - (Zero Page), Y
|
91: STA - (Zero Page), Y
|
||||||
92:
|
92:
|
||||||
93:
|
93:
|
||||||
94: STY - Zero Page, X
|
94: STY - Zero Page, X
|
||||||
95: STA - Zero Page, X
|
95: STA - Zero Page, X
|
||||||
96: STX - Zero Page, Y
|
96: STX - Zero Page, Y
|
||||||
97:
|
97:
|
||||||
98: TYA - Implied
|
98: TYA - Implied
|
||||||
99: STA - Absolute, Y
|
99: STA - Absolute, Y
|
||||||
9A: TXS - Implied
|
9A: TXS - Implied
|
||||||
9B:
|
9B:
|
||||||
9C:
|
9C:
|
||||||
9D: STA - Absolute, X
|
9D: STA - Absolute, X
|
||||||
9E:
|
9E:
|
||||||
9F:
|
9F:
|
||||||
A0: LDY - Immediate
|
A0: LDY - Immediate
|
||||||
A1: LDA - (Zero Page, X)
|
A1: LDA - (Zero Page, X)
|
||||||
A2: LDX - Immediate
|
A2: LDX - Immediate
|
||||||
A3:
|
A3:
|
||||||
A4: LDY - Zero Page
|
A4: LDY - Zero Page
|
||||||
A5: LDA - Zero Page
|
A5: LDA - Zero Page
|
||||||
A6: LDX - Zero Page
|
A6: LDX - Zero Page
|
||||||
A7:
|
A7:
|
||||||
A8: TAY - Implied
|
A8: TAY - Implied
|
||||||
A9: LDA - Immediate
|
A9: LDA - Immediate
|
||||||
AA: TAX - Implied
|
AA: TAX - Implied
|
||||||
AB:
|
AB:
|
||||||
AC: LDY - Absolute
|
AC: LDY - Absolute
|
||||||
AD: LDA - Absolute
|
AD: LDA - Absolute
|
||||||
AE: LDX - Absolute
|
AE: LDX - Absolute
|
||||||
AF:
|
AF:
|
||||||
B0: BCS - Relative
|
B0: BCS - Relative
|
||||||
B1: LDA - (Zero Page), Y
|
B1: LDA - (Zero Page), Y
|
||||||
B2:
|
B2:
|
||||||
B3:
|
B3:
|
||||||
B4: LDY - Zero Page, X
|
B4: LDY - Zero Page, X
|
||||||
B5: LDA - Zero Page, X
|
B5: LDA - Zero Page, X
|
||||||
B6: LDX - Zero Page, Y
|
B6: LDX - Zero Page, Y
|
||||||
B7:
|
B7:
|
||||||
B8: CLV - Implied
|
B8: CLV - Implied
|
||||||
B9: LDA - Absolute, Y
|
B9: LDA - Absolute, Y
|
||||||
BA: TSX - Implied
|
BA: TSX - Implied
|
||||||
BB:
|
BB:
|
||||||
BC: LDY - Absolute, X
|
BC: LDY - Absolute, X
|
||||||
BD: LDA - Absolute, X
|
BD: LDA - Absolute, X
|
||||||
BE: LDX - Absolute, Y
|
BE: LDX - Absolute, Y
|
||||||
BF:
|
BF:
|
||||||
C0: CPY - Immediate
|
C0: CPY - Immediate
|
||||||
C1: CMP - (Zero Page, X)
|
C1: CMP - (Zero Page, X)
|
||||||
C2:
|
C2:
|
||||||
C3:
|
C3:
|
||||||
C4: CPY - Zero Page
|
C4: CPY - Zero Page
|
||||||
C5: CMP - Zero Page
|
C5: CMP - Zero Page
|
||||||
C6: DEC - Zero Page
|
C6: DEC - Zero Page
|
||||||
C7:
|
C7:
|
||||||
C8: INY - Implied
|
C8: INY - Implied
|
||||||
C9: CMP - Immediate
|
C9: CMP - Immediate
|
||||||
CA: DEX - Implied
|
CA: DEX - Implied
|
||||||
CB:
|
CB:
|
||||||
CC: CPY - Absolute
|
CC: CPY - Absolute
|
||||||
CD: CMP - Absolute
|
CD: CMP - Absolute
|
||||||
CE: DEC - Absolute
|
CE: DEC - Absolute
|
||||||
CF:
|
CF:
|
||||||
D0: BNE - Relative
|
D0: BNE - Relative
|
||||||
D1: CMP - (Zero Page), Y
|
D1: CMP - (Zero Page), Y
|
||||||
D2:
|
D2:
|
||||||
D3:
|
D3:
|
||||||
D4:
|
D4:
|
||||||
D5: CMP - Zero Page, X
|
D5: CMP - Zero Page, X
|
||||||
D6: DEC - Zero Page, X
|
D6: DEC - Zero Page, X
|
||||||
D7:
|
D7:
|
||||||
D8: CLD - Implied
|
D8: CLD - Implied
|
||||||
D9: CMP - Absolute, Y
|
D9: CMP - Absolute, Y
|
||||||
DA:
|
DA:
|
||||||
DB:
|
DB:
|
||||||
DC:
|
DC:
|
||||||
DD: CMP - Absolute, X
|
DD: CMP - Absolute, X
|
||||||
DE: DEC - Absolute, X
|
DE: DEC - Absolute, X
|
||||||
DF:
|
DF:
|
||||||
E0: CPX - Immediate
|
E0: CPX - Immediate
|
||||||
E1: SBC - (Zero Page, X)
|
E1: SBC - (Zero Page, X)
|
||||||
E2:
|
E2:
|
||||||
E3:
|
E3:
|
||||||
E4: CPX - Zero Page
|
E4: CPX - Zero Page
|
||||||
E5: SBC - Zero Page
|
E5: SBC - Zero Page
|
||||||
E6: INC - Zero Page
|
E6: INC - Zero Page
|
||||||
E7:
|
E7:
|
||||||
E8: INX - Implied
|
E8: INX - Implied
|
||||||
E9: SBC - Immediate
|
E9: SBC - Immediate
|
||||||
EA: NOP - Implied
|
EA: NOP - Implied
|
||||||
EB:
|
EB:
|
||||||
EC: CPX - Absolute
|
EC: CPX - Absolute
|
||||||
ED: SBC - Absolute
|
ED: SBC - Absolute
|
||||||
EE: INC - Absolute
|
EE: INC - Absolute
|
||||||
EF:
|
EF:
|
||||||
F0: BEQ - Relative
|
F0: BEQ - Relative
|
||||||
F1: SBC - (Zero Page), Y
|
F1: SBC - (Zero Page), Y
|
||||||
F2:
|
F2:
|
||||||
F3:
|
F3:
|
||||||
F4:
|
F4:
|
||||||
F5: SBC - Zero Page, X
|
F5: SBC - Zero Page, X
|
||||||
F6: INC - Zero Page, X
|
F6: INC - Zero Page, X
|
||||||
F7:
|
F7:
|
||||||
F8: SED - Implied
|
F8: SED - Implied
|
||||||
F9: SBC - Absolute, Y
|
F9: SBC - Absolute, Y
|
||||||
FA:
|
FA:
|
||||||
FB:
|
FB:
|
||||||
FC:
|
FC:
|
||||||
FD: SBC - Absolute, X
|
FD: SBC - Absolute, X
|
||||||
FE: INC - Absolute, X
|
FE: INC - Absolute, X
|
||||||
FF:
|
FF:
|
||||||
|
|
|
@ -1,256 +1,256 @@
|
||||||
00: BRK - Implied
|
00: BRK - Implied
|
||||||
01: ORA - (Zero Page, X)
|
01: ORA - (Zero Page, X)
|
||||||
02:
|
02:
|
||||||
03:
|
03:
|
||||||
04: TSB - Zero Page
|
04: TSB - Zero Page
|
||||||
05: ORA - Zero Page
|
05: ORA - Zero Page
|
||||||
06: ASL - Zero Page
|
06: ASL - Zero Page
|
||||||
07: RMB0 - Zero Page
|
07: RMB0 - Zero Page
|
||||||
08: PHP - Implied
|
08: PHP - Implied
|
||||||
09: ORA - Immediate
|
09: ORA - Immediate
|
||||||
0A: ASL - Implied
|
0A: ASL - Implied
|
||||||
0B:
|
0B:
|
||||||
0C: TSB - Absolute
|
0C: TSB - Absolute
|
||||||
0D: ORA - Absolute
|
0D: ORA - Absolute
|
||||||
0E: ASL - Absolute
|
0E: ASL - Absolute
|
||||||
0F: BBR0 - Relative
|
0F: BBR0 - Relative
|
||||||
10: BPL - Relative
|
10: BPL - Relative
|
||||||
11: ORA - (Zero Page), Y
|
11: ORA - (Zero Page), Y
|
||||||
12: ORA - (Zero Page)
|
12: ORA - (Zero Page)
|
||||||
13:
|
13:
|
||||||
14: TRB - Zero Page
|
14: TRB - Zero Page
|
||||||
15: ORA - Zero Page, X
|
15: ORA - Zero Page, X
|
||||||
16: ASL - Zero Page, X
|
16: ASL - Zero Page, X
|
||||||
17: RMB1 - Zero Page
|
17: RMB1 - Zero Page
|
||||||
18: CLC - Implied
|
18: CLC - Implied
|
||||||
19: ORA - Absolute, Y
|
19: ORA - Absolute, Y
|
||||||
1A: INA - Implied; INC - Implied
|
1A: INA - Implied; INC - Implied
|
||||||
1B:
|
1B:
|
||||||
1C: TRB - Absolute
|
1C: TRB - Absolute
|
||||||
1D: ORA - Absolute, X
|
1D: ORA - Absolute, X
|
||||||
1E: ASL - Absolute, X
|
1E: ASL - Absolute, X
|
||||||
1F: BBR1 - Relative
|
1F: BBR1 - Relative
|
||||||
20: JSR - Absolute
|
20: JSR - Absolute
|
||||||
21: AND - (Zero Page, X)
|
21: AND - (Zero Page, X)
|
||||||
22:
|
22:
|
||||||
23:
|
23:
|
||||||
24: BIT - Zero Page
|
24: BIT - Zero Page
|
||||||
25: AND - Zero Page
|
25: AND - Zero Page
|
||||||
26: ROL - Zero Page
|
26: ROL - Zero Page
|
||||||
27: RMB2 - Zero Page
|
27: RMB2 - Zero Page
|
||||||
28: PLP - Implied
|
28: PLP - Implied
|
||||||
29: AND - Immediate
|
29: AND - Immediate
|
||||||
2A: ROL - Implied
|
2A: ROL - Implied
|
||||||
2B:
|
2B:
|
||||||
2C: BIT - Absolute
|
2C: BIT - Absolute
|
||||||
2D: AND - Absolute
|
2D: AND - Absolute
|
||||||
2E: ROL - Absolute
|
2E: ROL - Absolute
|
||||||
2F: BBR2 - Relative
|
2F: BBR2 - Relative
|
||||||
30: BMI - Relative
|
30: BMI - Relative
|
||||||
31: AND - (Zero Page), Y
|
31: AND - (Zero Page), Y
|
||||||
32: AND - (Zero Page)
|
32: AND - (Zero Page)
|
||||||
33:
|
33:
|
||||||
34: BIT - Zero Page, X
|
34: BIT - Zero Page, X
|
||||||
35: AND - Zero Page, X
|
35: AND - Zero Page, X
|
||||||
36: ROL - Zero Page, X
|
36: ROL - Zero Page, X
|
||||||
37: RMB3 - Zero Page
|
37: RMB3 - Zero Page
|
||||||
38: SEC - Implied
|
38: SEC - Implied
|
||||||
39: AND - Absolute, Y
|
39: AND - Absolute, Y
|
||||||
3A: DEA - Implied; DEC - Implied
|
3A: DEA - Implied; DEC - Implied
|
||||||
3B:
|
3B:
|
||||||
3C: BIT - Absolute, X
|
3C: BIT - Absolute, X
|
||||||
3D: AND - Absolute, X
|
3D: AND - Absolute, X
|
||||||
3E: ROL - Absolute, X
|
3E: ROL - Absolute, X
|
||||||
3F: BBR3 - Relative
|
3F: BBR3 - Relative
|
||||||
40: RTI - Implied
|
40: RTI - Implied
|
||||||
41: EOR - (Zero Page, X)
|
41: EOR - (Zero Page, X)
|
||||||
42:
|
42:
|
||||||
43:
|
43:
|
||||||
44:
|
44:
|
||||||
45: EOR - Zero Page
|
45: EOR - Zero Page
|
||||||
46: LSR - Zero Page
|
46: LSR - Zero Page
|
||||||
47: RMB4 - Zero Page
|
47: RMB4 - Zero Page
|
||||||
48: PHA - Implied
|
48: PHA - Implied
|
||||||
49: EOR - Immediate
|
49: EOR - Immediate
|
||||||
4A: LSR - Implied
|
4A: LSR - Implied
|
||||||
4B:
|
4B:
|
||||||
4C: JMP - Absolute
|
4C: JMP - Absolute
|
||||||
4D: EOR - Absolute
|
4D: EOR - Absolute
|
||||||
4E: LSR - Absolute
|
4E: LSR - Absolute
|
||||||
4F: BBR4 - Relative
|
4F: BBR4 - Relative
|
||||||
50: BVC - Relative
|
50: BVC - Relative
|
||||||
51: EOR - (Zero Page), Y
|
51: EOR - (Zero Page), Y
|
||||||
52: EOR - (Zero Page)
|
52: EOR - (Zero Page)
|
||||||
53:
|
53:
|
||||||
54:
|
54:
|
||||||
55: EOR - Zero Page, X
|
55: EOR - Zero Page, X
|
||||||
56: LSR - Zero Page, X
|
56: LSR - Zero Page, X
|
||||||
57: RMB5 - Zero Page
|
57: RMB5 - Zero Page
|
||||||
58: CLI - Implied
|
58: CLI - Implied
|
||||||
59: EOR - Absolute, Y
|
59: EOR - Absolute, Y
|
||||||
5A: PHY - Implied
|
5A: PHY - Implied
|
||||||
5B:
|
5B:
|
||||||
5C:
|
5C:
|
||||||
5D: EOR - Absolute, X
|
5D: EOR - Absolute, X
|
||||||
5E: LSR - Absolute, X
|
5E: LSR - Absolute, X
|
||||||
5F: BBR5 - Relative
|
5F: BBR5 - Relative
|
||||||
60: RTS - Implied
|
60: RTS - Implied
|
||||||
61: ADC - (Zero Page, X)
|
61: ADC - (Zero Page, X)
|
||||||
62:
|
62:
|
||||||
63:
|
63:
|
||||||
64: STZ - Zero Page
|
64: STZ - Zero Page
|
||||||
65: ADC - Zero Page
|
65: ADC - Zero Page
|
||||||
66: ROR - Zero Page
|
66: ROR - Zero Page
|
||||||
67: RMB6 - Zero Page
|
67: RMB6 - Zero Page
|
||||||
68: PLA - Implied
|
68: PLA - Implied
|
||||||
69: ADC - Immediate
|
69: ADC - Immediate
|
||||||
6A: ROR - Implied
|
6A: ROR - Implied
|
||||||
6B:
|
6B:
|
||||||
6C: JMP - (Absolute)
|
6C: JMP - (Absolute)
|
||||||
6D: ADC - Absolute
|
6D: ADC - Absolute
|
||||||
6E: ROR - Absolute
|
6E: ROR - Absolute
|
||||||
6F: BBR6 - Relative
|
6F: BBR6 - Relative
|
||||||
70: BVS - Relative
|
70: BVS - Relative
|
||||||
71: ADC - (Zero Page), Y
|
71: ADC - (Zero Page), Y
|
||||||
72: ADC - (Zero Page)
|
72: ADC - (Zero Page)
|
||||||
73:
|
73:
|
||||||
74: STZ - Zero Page, X
|
74: STZ - Zero Page, X
|
||||||
75: ADC - Zero Page, X
|
75: ADC - Zero Page, X
|
||||||
76: ROR - Zero Page, X
|
76: ROR - Zero Page, X
|
||||||
77: RMB7 - Zero Page
|
77: RMB7 - Zero Page
|
||||||
78: SEI - Implied
|
78: SEI - Implied
|
||||||
79: ADC - Absolute, Y
|
79: ADC - Absolute, Y
|
||||||
7A: PLY - Implied
|
7A: PLY - Implied
|
||||||
7B:
|
7B:
|
||||||
7C: JMP - (Absolute, X)
|
7C: JMP - (Absolute, X)
|
||||||
7D: ADC - Absolute, X
|
7D: ADC - Absolute, X
|
||||||
7E: ROR - Absolute, X
|
7E: ROR - Absolute, X
|
||||||
7F: BBR7 - Relative
|
7F: BBR7 - Relative
|
||||||
80: BRA - Relative
|
80: BRA - Relative
|
||||||
81: STA - (Zero Page, X)
|
81: STA - (Zero Page, X)
|
||||||
82:
|
82:
|
||||||
83:
|
83:
|
||||||
84: STY - Zero Page
|
84: STY - Zero Page
|
||||||
85: STA - Zero Page
|
85: STA - Zero Page
|
||||||
86: STX - Zero Page
|
86: STX - Zero Page
|
||||||
87: SMB0 - Zero Page
|
87: SMB0 - Zero Page
|
||||||
88: DEY - Implied
|
88: DEY - Implied
|
||||||
89: BIT - Immediate
|
89: BIT - Immediate
|
||||||
8A: TXA - Implied
|
8A: TXA - Implied
|
||||||
8B:
|
8B:
|
||||||
8C: STY - Absolute
|
8C: STY - Absolute
|
||||||
8D: STA - Absolute
|
8D: STA - Absolute
|
||||||
8E: STX - Absolute
|
8E: STX - Absolute
|
||||||
8F: BBS0 - Relative
|
8F: BBS0 - Relative
|
||||||
90: BCC - Relative
|
90: BCC - Relative
|
||||||
91: STA - (Zero Page), Y
|
91: STA - (Zero Page), Y
|
||||||
92: STA - (Zero Page)
|
92: STA - (Zero Page)
|
||||||
93:
|
93:
|
||||||
94: STY - Zero Page, X
|
94: STY - Zero Page, X
|
||||||
95: STA - Zero Page, X
|
95: STA - Zero Page, X
|
||||||
96: STX - Zero Page, Y
|
96: STX - Zero Page, Y
|
||||||
97: SMB1 - Zero Page
|
97: SMB1 - Zero Page
|
||||||
98: TYA - Implied
|
98: TYA - Implied
|
||||||
99: STA - Absolute, Y
|
99: STA - Absolute, Y
|
||||||
9A: TXS - Implied
|
9A: TXS - Implied
|
||||||
9B:
|
9B:
|
||||||
9C: STZ - Absolute
|
9C: STZ - Absolute
|
||||||
9D: STA - Absolute, X
|
9D: STA - Absolute, X
|
||||||
9E: STZ - Absolute, X
|
9E: STZ - Absolute, X
|
||||||
9F: BBS1 - Relative
|
9F: BBS1 - Relative
|
||||||
A0: LDY - Immediate
|
A0: LDY - Immediate
|
||||||
A1: LDA - (Zero Page, X)
|
A1: LDA - (Zero Page, X)
|
||||||
A2: LDX - Immediate
|
A2: LDX - Immediate
|
||||||
A3:
|
A3:
|
||||||
A4: LDY - Zero Page
|
A4: LDY - Zero Page
|
||||||
A5: LDA - Zero Page
|
A5: LDA - Zero Page
|
||||||
A6: LDX - Zero Page
|
A6: LDX - Zero Page
|
||||||
A7: SMB2 - Zero Page
|
A7: SMB2 - Zero Page
|
||||||
A8: TAY - Implied
|
A8: TAY - Implied
|
||||||
A9: LDA - Immediate
|
A9: LDA - Immediate
|
||||||
AA: TAX - Implied
|
AA: TAX - Implied
|
||||||
AB:
|
AB:
|
||||||
AC: LDY - Absolute
|
AC: LDY - Absolute
|
||||||
AD: LDA - Absolute
|
AD: LDA - Absolute
|
||||||
AE: LDX - Absolute
|
AE: LDX - Absolute
|
||||||
AF: BBS2 - Relative
|
AF: BBS2 - Relative
|
||||||
B0: BCS - Relative
|
B0: BCS - Relative
|
||||||
B1: LDA - (Zero Page), Y
|
B1: LDA - (Zero Page), Y
|
||||||
B2: LDA - (Zero Page)
|
B2: LDA - (Zero Page)
|
||||||
B3:
|
B3:
|
||||||
B4: LDY - Zero Page, X
|
B4: LDY - Zero Page, X
|
||||||
B5: LDA - Zero Page, X
|
B5: LDA - Zero Page, X
|
||||||
B6: LDX - Zero Page, Y
|
B6: LDX - Zero Page, Y
|
||||||
B7: SMB3 - Zero Page
|
B7: SMB3 - Zero Page
|
||||||
B8: CLV - Implied
|
B8: CLV - Implied
|
||||||
B9: LDA - Absolute, Y
|
B9: LDA - Absolute, Y
|
||||||
BA: TSX - Implied
|
BA: TSX - Implied
|
||||||
BB:
|
BB:
|
||||||
BC: LDY - Absolute, X
|
BC: LDY - Absolute, X
|
||||||
BD: LDA - Absolute, X
|
BD: LDA - Absolute, X
|
||||||
BE: LDX - Absolute, Y
|
BE: LDX - Absolute, Y
|
||||||
BF: BBS3 - Relative
|
BF: BBS3 - Relative
|
||||||
C0: CPY - Immediate
|
C0: CPY - Immediate
|
||||||
C1: CMP - (Zero Page, X)
|
C1: CMP - (Zero Page, X)
|
||||||
C2:
|
C2:
|
||||||
C3:
|
C3:
|
||||||
C4: CPY - Zero Page
|
C4: CPY - Zero Page
|
||||||
C5: CMP - Zero Page
|
C5: CMP - Zero Page
|
||||||
C6: DEC - Zero Page
|
C6: DEC - Zero Page
|
||||||
C7: SMB4 - Zero Page
|
C7: SMB4 - Zero Page
|
||||||
C8: INY - Implied
|
C8: INY - Implied
|
||||||
C9: CMP - Immediate
|
C9: CMP - Immediate
|
||||||
CA: DEX - Implied
|
CA: DEX - Implied
|
||||||
CB: WAI - Implied
|
CB: WAI - Implied
|
||||||
CC: CPY - Absolute
|
CC: CPY - Absolute
|
||||||
CD: CMP - Absolute
|
CD: CMP - Absolute
|
||||||
CE: DEC - Absolute
|
CE: DEC - Absolute
|
||||||
CF: BBS4 - Relative
|
CF: BBS4 - Relative
|
||||||
D0: BNE - Relative
|
D0: BNE - Relative
|
||||||
D1: CMP - (Zero Page), Y
|
D1: CMP - (Zero Page), Y
|
||||||
D2: CMP - (Zero Page)
|
D2: CMP - (Zero Page)
|
||||||
D3:
|
D3:
|
||||||
D4:
|
D4:
|
||||||
D5: CMP - Zero Page, X
|
D5: CMP - Zero Page, X
|
||||||
D6: DEC - Zero Page, X
|
D6: DEC - Zero Page, X
|
||||||
D7: SMB5 - Zero Page
|
D7: SMB5 - Zero Page
|
||||||
D8: CLD - Implied
|
D8: CLD - Implied
|
||||||
D9: CMP - Absolute, Y
|
D9: CMP - Absolute, Y
|
||||||
DA: PHX - Implied
|
DA: PHX - Implied
|
||||||
DB: STP - Implied
|
DB: STP - Implied
|
||||||
DC:
|
DC:
|
||||||
DD: CMP - Absolute, X
|
DD: CMP - Absolute, X
|
||||||
DE: DEC - Absolute, X
|
DE: DEC - Absolute, X
|
||||||
DF: BBS5 - Relative
|
DF: BBS5 - Relative
|
||||||
E0: CPX - Immediate
|
E0: CPX - Immediate
|
||||||
E1: SBC - (Zero Page, X)
|
E1: SBC - (Zero Page, X)
|
||||||
E2:
|
E2:
|
||||||
E3:
|
E3:
|
||||||
E4: CPX - Zero Page
|
E4: CPX - Zero Page
|
||||||
E5: SBC - Zero Page
|
E5: SBC - Zero Page
|
||||||
E6: INC - Zero Page
|
E6: INC - Zero Page
|
||||||
E7: SMB6 - Zero Page
|
E7: SMB6 - Zero Page
|
||||||
E8: INX - Implied
|
E8: INX - Implied
|
||||||
E9: SBC - Immediate
|
E9: SBC - Immediate
|
||||||
EA: NOP - Implied
|
EA: NOP - Implied
|
||||||
EB:
|
EB:
|
||||||
EC: CPX - Absolute
|
EC: CPX - Absolute
|
||||||
ED: SBC - Absolute
|
ED: SBC - Absolute
|
||||||
EE: INC - Absolute
|
EE: INC - Absolute
|
||||||
EF: BBS6 - Relative
|
EF: BBS6 - Relative
|
||||||
F0: BEQ - Relative
|
F0: BEQ - Relative
|
||||||
F1: SBC - (Zero Page), Y
|
F1: SBC - (Zero Page), Y
|
||||||
F2: SBC - (Zero Page)
|
F2: SBC - (Zero Page)
|
||||||
F3:
|
F3:
|
||||||
F4:
|
F4:
|
||||||
F5: SBC - Zero Page, X
|
F5: SBC - Zero Page, X
|
||||||
F6: INC - Zero Page, X
|
F6: INC - Zero Page, X
|
||||||
F7: SMB7 - Zero Page
|
F7: SMB7 - Zero Page
|
||||||
F8: SED - Implied
|
F8: SED - Implied
|
||||||
F9: SBC - Absolute, Y
|
F9: SBC - Absolute, Y
|
||||||
FA: PLX - Implied
|
FA: PLX - Implied
|
||||||
FB:
|
FB:
|
||||||
FC:
|
FC:
|
||||||
FD: SBC - Absolute, X
|
FD: SBC - Absolute, X
|
||||||
FE: INC - Absolute, X
|
FE: INC - Absolute, X
|
||||||
FF: BBS7 - Relative
|
FF: BBS7 - Relative
|
||||||
|
|
Loading…
Reference in New Issue
Block a user