|
An opcode is an instruction of one or more bytes that a CPU executes. Many opcodes are fixed values like the two byte Z80 instruction “DDF9” that copies the contents of the IX register to the SP register. Most opcodes, however, are combinations of fixed values and fill-in values. The four byte Z80 instruction “DDCBii3E” adds the value ii to the IX register and does a shift-left on the memory at the resulting address.
Some opcodes have multiple fill-in values. The Z80 opcode “FD36bbii” adds ii to the IY register and stores the byte value bb at the resulting address. Some fill-in values are multi-byte. The three byte Z80 opcode “01wlwm” loads the BC register pair with the word value wlwm. The “l” and “m” indicates the “least significant byte” and the “most significant byte” of the two-byte value. Some processors e.g. Z80 and 6502 store the least-significant byte first. Others like the 6809 store the most-significant byte first. The notation makes the order clear.
Most fill-in values are complete bytes or words, but sometimes an opcode uses a smaller bit field within a fixed value. The Z80 has an instruction that subtracts another register from the A register. This instruction has the binary form “10010rrr” where the value of r indicates the other register: 0=B, 1=C, and so forth. For these opcodes the various combinations of the bit field are listed as separate opcodes.
I will use the term “opcode parameter” to refer to fill-in values in an opcode. Most processors are similar enough to identify similar types of parameters across all processors.
For instance the 6809, 6502, and Z80 processors all have a “jump to code address” instruction that changes the program-counter to a new spot in the program. I will use the letter “m” for this fill in value. Adding the “least” and “most” info to the parameter results in the two byte value “mlmm” on the 6502 and Z80 and “mmml” on the 6809 where the most-significant comes first.
Most processors include an instruction for loading a register from a memory address given in the opcode. For these the letter “t” will indicate a two byte memory address used to load data from memory as in “tltm” and “tmtl”.
Most processors include the ability to load a register with a two byte immediate constant given as an opcode parameter. For these the letter “w” will indicate a two byte constant as in “wlwm” and “wmwl”.
In all of these cases the opcode parameter is two-bytes, and in each case the processor knows exactly what to do with the two bytes. The lettering is purely for our benefit helping us decode what the opcodes do.
Some opcode parameters are very processor specific. The 6809 has a complex push/pull opcode where the bits of a fill-in parameter byte define which registers are pushed or pulled. These 512 combinations (256 for push and 256 for pull … in reverse order) could be listed out as separate opcodes. But it is easier to write 6809-specific code in an assembler/disassemble to handle these opcodes.
The following table from the Java enum defines the various types of opcode parameters.
//bytes sub signed address pc-offset io code INDEX_BYTE ( 1, 'i', false, false, false, false, false), // Unsigned byte used as an address offset SIGNED_INDEX_BYTE ( 1, 'j', true, false, false, false, false), // Signed byte used as an address offset SIGNED_INDEX_WORD ( 2, 'k', true, false, false, false, false), // Signed word used an an address offset IMMEDIATE_BYTE ( 1, 'b', false, false, false, false, false), // Byte constant IMMEDIATE_WORD ( 2, 'w', false, false, false, false, false), // Word constant ADDRESS_WORD_DATA ( 2, 't', false, true, false, false, false), // Word address for data BASE_ADDRESS_BYTE_DATA ( 1, 'p', false, true, false, false, false), // Byte address for data PORT_ADDRESS_BYTE ( 1, 'o', false, false, false, true, false), // Byte port address for I/O ADDRESS_WORD_TEXT ( 2, 'm', false, true, false, false, true), // Word address for code REL_BYTE_ADDRESS_TEXT ( 1, 'r', true, true, true, false, true), // PC relative address offset byte for code REL_WORD_ADDRESS_TEXT ( 2, 's', true, true, true, false, true), // PC relative address offset word for code // 6809 Specific PUSH_6809_U ( 1, 'u', false, false, false, false, false), // 6809 register set for pushes to U stack PUSH_6809_S ( 1, 'x', false, false, false, false, false), // 6809 register set for pushes to S stack PULL_6809_U ( 1, 'v', false, false, false, false, false), // 6809 register set for pulls from S stack PULL_6809_S ( 1, 'q', false, false, false, false, false), // 6809 register set for pulls from S stack REG_6809_TFR ( 1, 'z', false, false, false, false, false), // Byte field used in 6809 for register-pairs POST_6809 ( 1, 'y', false, false, false, false, false); // Byte used in 6809 to identify indexed form
Programming would be much too tedious if you had to work with opcodes in numeric form like “3E 45”. Though some hardcore embedded programmers patch code by remembering opcodes. Programming would be too verbose if you had to type out what the instruction does instead: “Load 45 into the A register”. Though sometimes we write assembly comments like this if we can’t think of anything better.
Instead we use shortcut mnemonics to stand in for opcodes. Instead of “3E 45” we write “LD A,45h” in Z80 assembly. The exact same opcode “3E 45” appears in 8080 code as “MVI A,45h”. In 6502 the similar instruction “A9 45” would be written as “LDA #$45”.
The 8080 is the predecessor of Z80. The Z80 opcodes are backwards compatible with 8080 opcodes, and the Z80 adds many new registers, addressing modes, and instructions. Notice how the mnemonics evolved from the 8080 to the Z80. The “MVI”, which means “Move Immediate” changed to a generic “LD” (load), which is used in all data-copies from register to register, from memory to register, and even from register to memory.
With the 6502 and 6809 mnemonics your programs are register-centered and you either “load” (LDA) data from memory or “store” (STA) data back. The mnemonics may look very different from CPU to CPU, but at the opcode level CPUs do basically the same things. If you understand opcodes on one CPU you can easily move to another.
You probably noted some other syntactic differences in the mnemonics. On the 8080 and Z80, hex numbers are written with a postfix “h” to indicate hexadecimal. Since case doesn’t matter, the trailing “H” makes for some human-word-like constants like “BAH” and “0H”. These could be confused with symbols in an assembly language program. The 6502 and 6809 use a prefix “$” to indicate hex. This prefix can’t be used in another context and stands out readily from the number itself. Most modern languages use a prefix notation of some sort.
Mnemonics must differentiate a numeric constant from a memory access. On the 6502 “LDA #$45” means “load the value $45 into A”. But the mnemonic “LDA $45”, without the “#”, means “load the value at address $45 into A”. The number-sign means “number” as in immediate numeric constant. With a number-sign a value is a number. Without a number-sign a value is a memory address.
The 8080 and Z80 mnemonics take a different approach to immediacy. They assume that a plain, unmarked value is a constant number. For a memory address you have to surround the value with parenthesis. Thus “LD A,$45” means “load A with the value $45” and “LD A,($45)” means “load A with the value at address $45”. Both techniques are equally correct. I prefer the number-sign since I grew up with the 6809. But I recognize this is just taste.
The 8080 evolved into the 8086 assembly, which still tags memory addresses though now with brackets “[ ]” to avoid confusion with mathematical parenthesis. Enter “debug” at the command prompt on your PC and enter “u” several times and you’ll see the brackets.
Remember that all this mnemonic syntax discussion has no place at the opcode level. The fact that a value is a memory address or constant is hardcoded into the opcode. What the opcode does is hardcoded whether a human sees it as “LDA or “MVI”. In fact, you are free to come up with your own mnemonics and write your own tool chain to support them. As a Java programmer I’d like to see all the processors use mnemonics like “A = #$45”. That might make a good future tool, though my BLEND tool already does some of that.
We’ve seen how the same operation has different opcodes in different mnemonic families. There are even some variances within a single family. The 6809 opcode “24rr” jumps to new address if the carry flag is clear. One obvious mnemonic for this opcode is “BCC rr”, which is the branch-if-carry-clear.
Conditional flow instructions are almost always preceded by a comparison statement. The program compares two numbers and then jumps away if they are equal or if they are not equal or one is greater-than-or-equal to the other. Comparison means subtraction. Comparing A to B means subtracting B from A. If B is larger than A then a borrow (carry) happens. If A is greater than or equal to B then there is no borrow (carry).
There are lots of reasons the carry flag may be clear, but if it is cleared by comparing A to B then it means A is higher or the same as B. And a programmer can think in these terms by using an alternate mnemonic for 24rr: “BHS rr”. The branch-higher-or-same does the same thing (branch if carry is clear), but the alternate mnemonic is easier to understand in the context of comparing two numbers.
This saves the programmer from having to remember: the carry flag is clear when there is no borrow and that means the second number was larger or equal to the first. That may seem trivial, but on the 6502 the borrow flag is backwards. It is CLEARED if there is a borrow. And there is no alternate form of the mnemonic. The programmer has to write this knowledge into every comparison. Again, my BLEND tool hides these details behind standard high-level language flow constructs.
If you list out all the opcodes for a processor in numerical order (like I have done below) you will see gaps in the table. In the 6502, for instance, there is no opcode with value “02”, “03”, or “04”. What happens if the processor tries to execute one of these invalid opcodes?
Most of these invalid opcodes do nothing. Some opcodes behave differently from chip to chip with tiny variations in the fabrication process. Some invalid opcodes are so unstable they behave differently each time they are executed on the same chip. But a few of the invalid opcodes actually perform useful functions. These invalid opcodes are called “undocumented” because the original chip manufacturers do not list them in the official documentation. But over the years they have become explored and highly documented on the web.
On the Z80 the “DD” opcode is normally used to prefix other opcodes that involve the HL register. If the “DD” prefix is used the opcode generally uses the IX register instead of the HL register. For instance, the opcode “210000” is “LD HL,0”. But with a “DD” prefix “DD210000” becomes “LD IX,0”. This is a familiar, officially documented opcode.
The opcode “67” is “LD H,A” which copies A into H. H and L are the High and Low part of the combined HL register. If you prefix this opcode with DD you get “DD67” which is “LD IXh,A”. This opcode copies A into the high byte of the IX register. But the IX register is not documented as having upper and lower addressable parts. This undocumented opcode is very useful nonetheless and is quite common in Z80 programs. The arcade game Galaga uses this undocumented opcode a lot including at address 1EBB in CPU1 in the MoveBeeFire function (see the Galaga No-Fire Cheat).
The tables below contain detailed information about the opcodes and mnemonics of various processors. The information has been compiled from various sites around the web and many ancient books in my collection. The information is in a single XML file for each processor family you can download here:
This information is not intended as a reference or teaching tool. You can find wonderfully rich tutorial sites on each processor using a web search.
This XML form is great for computer consumption. It is the core of the assembler/disassemble/emulator tools used on this site. The XML is formatted in a table for human consumption. Snippets of the table-XML appear below.
Each processor in the XML has a “cpu” name for identification. Within each “processor” tag there is a long list of opcodes.
The “code” attribute of an opcode is the static and parameter bytes that make up the opcode.
The “clocks” attribute is the number of clock cycles the opcode takes to complete. Many opcodes have several numbers separated by “/”. For instance the Z80 conditional CALL instructions like “CALL Z,m” have clocks as “17/10”. If the branch is taken, the opcode burns 17 clocks. If the branch is not taken, the opcode burns only 10 clocks.
The “flags” attribute explains which flags are affected by the opcode and how.
Each opcode has one or more mnemonics given as “mn” attributes like “mnZ80”, “mn8080”, “mnCish” and so on. These different mnemonic families are explained in the processor sections below.
If a specific mnemonic has alternate forms then the forms are separated by “;” within the mnemonic. For instance, the 6809 “BCC” alternates discussed above appear like this “BHS r;BCC r”.
<?xml version="1.0" encoding="UTF-8"?>
<ProcessorFamily name="6801/6803" endian="big">
<printSpacing>
<set name="6801" dataFieldSize="10" mnemonicFieldSize="20"/>
<set name="6803" dataFieldSize="10" mnemonicFieldSize="20"/>
<set name="Cish" dataFieldSize="10" mnemonicFieldSize="20"/>
</printSpacing>
<processors>
<processor name="6801" />
<processor name="6803" />
</processors>
<registers>
<register name="CC" size="1">
<flag name="C" bit="0" description="carry/borrow" />
<flag name="V" bit="1" description="overflow" />
<flag name="Z" bit="2" description="zero" />
<flag name="N" bit="3" description="negative" />
<flag name="I" bit="4" description="interrupt" />
<flag name="H" bit="5" description="half carry" />
</register>
<register name="A" size="1" />
<register name="B" size="1" />
<register name="D" size="2" pair="A:B" />
<register name="X" size="2" />
<register name="SP" size="2" />
<register name="PC" size="2" />
</registers>
<opcodes> <!-- ...HINZVC -->
<op code="01" m6801="NOP" m6803="NOP" clocks="2" flags="----****" />
<op code="04" m6801="LSRD" m6803="LSRD" clocks="3" flags="----0***" />
<op code="06" m6801="TAP" m6803="TAP" clocks="2" flags="--******" />
<op code="07" m6801="TPA" m6803="TPA" clocks="2" flags="--------" />
<op code="08" m6801="INX" m6803="INX" clocks="3" flags="------*-" />
<op code="09" m6801="DEX" m6803="DEX" clocks="3" flags="------*-" />
<op code="0A" m6801="CLV" m6803="CLV" clocks="2" flags="------0-" />
<op code="0B" m6801="SEV" m6803="SEV" clocks="2" flags="------1-" />
<op code="0C" m6801="CLC" m6803="CLC" clocks="2" flags="-------0" />
<op code="0D" m6801="SEC" m6803="SEC" clocks="2" flags="-------1" />
<op code="0E" m6801="CLI" m6803="CLI" clocks="2" flags="---0----" />
<op code="0F" m6801="SEI" m6803="SEI" clocks="2" flags="---1----" />
<op code="10" m6801="SBA" m6803="SBA" clocks="2" flags="----****" />
<op code="11" m6801="CBA" m6803="CBA" clocks="2" flags="----****" />
<op code="16" m6801="TAB" m6803="TAB" clocks="2" flags="----**0-" />
<op code="17" m6801="TBA" m6803="TBA" clocks="2" flags="----**0-" />
<op code="19" m6801="DAA" m6803="DAA" clocks="2" flags="----****" />
<op code="1B" m6801="ABA" m6803="ABA" clocks="2" flags="--*-****" />
<op code="20rr" m6801="BRA r" m6803="BRA r" clocks="3" flags="--------" />
<op code="21rr" m6801="BRN r" m6803="BRN r" clocks="3" flags="--------" />
<op code="22rr" m6801="BHI r" m6803="BHI r" clocks="3" flags="--------" />
<op code="23rr" m6801="BLS r" m6803="BLS r" clocks="3" flags="--------" />
<op code="24rr" m6801="BCC r;BHS r" m6803="BCC r;BHS r" clocks="3" flags="--------" />
<op code="25rr" m6801="BCS r;BLO r" m6803="BCS r;BLO r" clocks="3" flags="--------" />
<op code="26rr" m6801="BNE r" m6803="BNE r" clocks="3" flags="--------" />
<op code="27rr" m6801="BEQ r" m6803="BEQ r" clocks="3" flags="--------" />
<op code="28rr" m6801="BVC r" m6803="BVC r" clocks="3" flags="--------" />
<op code="29rr" m6801="BVS r" m6803="BVS r" clocks="3" flags="--------" />
<op code="2Arr" m6801="BPL r" m6803="BPL r" clocks="3" flags="--------" />
<op code="2Brr" m6801="BMI r" m6803="BMI r" clocks="3" flags="--------" />
<op code="2Crr" m6801="BGE r" m6803="BGE r" clocks="3" flags="--------" />
<op code="2Drr" m6801="BLT r" m6803="BLT r" clocks="3" flags="--------" />
<op code="2Err" m6801="BGT r" m6803="BGT r" clocks="3" flags="--------" />
<op code="2Frr" m6801="BLE r" m6803="BLE r" clocks="3" flags="--------" />
<op code="30" m6801="TSX" m6803="TSX" clocks="3" flags="--------" />
<op code="31" m6801="INS" m6803="INS" clocks="3" flags="--------" />
<op code="32" m6801="PULA" m6803="PULA" clocks="4" flags="--------" />
<op code="33" m6801="PULB" m6803="PULB" clocks="4" flags="--------" />
<op code="34" m6801="DES" m6803="DES" clocks="3" flags="--------" />
<op code="35" m6801="TXS" m6803="TXS" clocks="3" flags="--------" />
<op code="36" m6801="PSHA" m6803="PSHA" clocks="3" flags="--------" />
<op code="37" m6801="PSHB" m6803="PSHB" clocks="3" flags="--------" />
<op code="38" m6801="PULX" m6803="PULX" clocks="5" flags="--------" />
<op code="39" m6801="RTS" m6803="RTS" clocks="5" flags="--------" />
<op code="3A" m6801="ABX" m6803="ABX" clocks="3" flags="--------" />
<op code="3B" m6801="RTI" m6803="RTI" clocks="10" flags="--******" />
<op code="3C" m6801="PSHX" m6803="PSHX" clocks="4" flags="--------" />
<op code="3D" m6801="MUL" m6803="MUL" clocks="10" flags="----****" />
<op code="3E" m6801="WAI" m6803="WAI" clocks="9" flags="--------" />
<op code="3F" m6801="SWI" m6803="SWI" clocks="12" flags="---1----" />
<op code="40" m6801="NEGA" m6803="NEGA" clocks="2" flags="----****" />
<op code="43" m6801="COMA" m6803="COMA" clocks="2" flags="----**01" />
<op code="44" m6801="LSRA" m6803="LSRA" clocks="2" flags="----0***" />
<op code="46" m6801="RORA" m6803="RORA" clocks="2" flags="----****" />
<op code="47" m6801="ASRA" m6803="ASRA" clocks="2" flags="----****" />
<op code="48" m6801="ASLA;LSLA" m6803="ASLA;LSLA" clocks="2" flags="----****" />
<op code="49" m6801="ROLA" m6803="ROLA" clocks="2" flags="----****" />
<op code="4A" m6801="DECA" m6803="DECA" clocks="2" flags="----***-" />
<op code="4C" m6801="INCA" m6803="INCA" clocks="2" flags="----***-" />
<op code="4D" m6801="TSTA" m6803="TSTA" clocks="2" flags="----**00" />
<op code="4F" m6801="CLRA" m6803="CLRA" clocks="2" flags="----0100" />
<op code="50" m6801="NEGB" m6803="NEGB" clocks="2" flags="----****" />
<op code="53" m6801="COMB" m6803="COMB" clocks="2" flags="----**01" />
<op code="54" m6801="LSRB" m6803="LSRB" clocks="2" flags="----0***" />
<op code="56" m6801="RORB" m6803="RORB" clocks="2" flags="----****" />
<op code="57" m6801="ASRB" m6803="ASRB" clocks="2" flags="----****" />
<op code="58" m6801="ASLB;LSLB" m6803="ASLB;LSLB" clocks="2" flags="----****" />
<op code="59" m6801="ROLB" m6803="ROLB" clocks="2" flags="----****" />
<op code="5A" m6801="DECB" m6803="DECB" clocks="2" flags="----***-" />
<op code="5C" m6801="INCB" m6803="INCB" clocks="2" flags="----***-" />
<op code="5D" m6801="TSTB" m6803="TSTB" clocks="2" flags="----**00" />
<op code="5F" m6801="CLRB" m6803="CLRB" clocks="2" flags="----0100" />
<op code="60ii" m6801="NEG i,X" m6803="NEG i,X" clocks="6" flags="----****" />
<op code="63ii" m6801="COM i,X" m6803="COM i,X" clocks="6" flags="----**01" />
<op code="64ii" m6801="LSR i,X" m6803="LSR i,X" clocks="6" flags="----0***" />
<op code="66ii" m6801="ROR i,X" m6803="ROR i,X" clocks="6" flags="----****" />
<op code="67ii" m6801="ASR i,X" m6803="ASR i,X" clocks="6" flags="----****" />
<op code="68ii" m6801="ASL i,X;LSL i,X" m6803="ASL i,X;LSL i,X" clocks="2" flags="----****" />
<op code="69ii" m6801="ROL i,X" m6803="ROL i,X" clocks="6" flags="----****" />
<op code="6Aii" m6801="DEC i,X" m6803="DEC i,X" clocks="6" flags="----***-" />
<op code="6Cii" m6801="INC i,X" m6803="INC i,X" clocks="6" flags="----***-" />
<op code="6Dii" m6801="TST i,X" m6803="TST i,X" clocks="6" flags="----**00" />
<op code="6Eii" m6801="JMP i,X" m6803="JMP i,X" clocks="3" flags="--------" />
<op code="6Fii" m6801="CLR i,X" m6803="CLR i,X" clocks="6" flags="----0100" />
<op code="70mmml" m6801="NEG m" m6803="NEG m" clocks="6" flags="----****" />
<op code="73mmml" m6801="COM m" m6803="COM m" clocks="6" flags="----**01" />
<op code="74mmml" m6801="LSR m" m6803="LSR m" clocks="6" flags="----0***" />
<op code="76mmml" m6801="ROR m" m6803="ROR m" clocks="6" flags="----****" />
<op code="77mmml" m6801="ASR m" m6803="ASR m" clocks="6" flags="----****" />
<op code="78mmml" m6801="ASL m;LSL m" m6803="ASL m;LSL m" clocks="6" flags="----****" />
<op code="79mmml" m6801="ROL m" m6803="ROL m" clocks="6" flags="----****" />
<op code="7Ammml" m6801="DEC m" m6803="DEC m" clocks="6" flags="----***-" />
<op code="7Cmmml" m6801="INC m" m6803="INC m" clocks="6" flags="----***-" />
<op code="7Dmmml" m6801="TST m" m6803="TST m" clocks="6" flags="----**00" />
<op code="7Emmml" m6801="JMP m" m6803="JMP m" clocks="3" flags="--------" />
<op code="7Fmmml" m6801="CLR m" m6803="CLR m" clocks="6" flags="----0100" />
<op code="80bb" m6801="SUBA #b" m6803="SUBA #b" clocks="2" flags="----****" />
<op code="81bb" m6801="CMPA #b" m6803="CMPA #b" clocks="2" flags="----****" />
<op code="82bb" m6801="SBCA #b" m6803="SBCA #b" clocks="2" flags="----****" />
<op code="83wmwl" m6801="SUBD #w" m6803="SUBD #w" clocks="4" flags="----****" />
<op code="84bb" m6801="ANDA #b" m6803="ANDA #b" clocks="2" flags="----**0*" />
<op code="85bb" m6801="BITA #b" m6803="BITA #b" clocks="2" flags="----**0-" />
<op code="86bb" m6801="LDA #b" m6803="LDA #b" clocks="2" flags="----**0-" />
<op code="88bb" m6801="EORA #b" m6803="EORA #b" clocks="2" flags="----**0-" />
<op code="89bb" m6801="ADCA #b" m6803="ADCA #b" clocks="2" flags="--*-****" />
<op code="8Abb" m6801="ORA #b" m6803="ORA #b" clocks="2" flags="----**0-" />
<op code="8Bbb" m6801="ADDA #b" m6803="ADDA #b" clocks="2" flags="--*-****" />
<op code="8Cwmwl" m6801="CPX #w" m6803="CPX #w" clocks="4" flags="----****" />
<op code="8Drr" m6801="BSR r" m6803="BSR r" clocks="6" flags="--------" />
<op code="8Ewmwl" m6801="LDS #w" m6803="LDS #w" clocks="3" flags="----**0-" />
<op code="90pp" m6801="SUBA >p" m6803="SUBA >p" clocks="3" flags="----****" />
<op code="91pp" m6801="CMPA >p" m6803="CMPA >p" clocks="3" flags="----****" />
<op code="92pp" m6801="SBCA >p" m6803="SBCA >p" clocks="3" flags="----****" />
<op code="93pp" m6801="SUBD >p" m6803="SUBD >p" clocks="5" flags="----****" />
<op code="94pp" m6801="ANDA >p" m6803="ANDA >p" clocks="3" flags="----**0*" />
<op code="95pp" m6801="BITA >p" m6803="BITA >p" clocks="3" flags="----**0-" />
<op code="96pp" m6801="LDA >p" m6803="LDA >p" clocks="3" flags="----**0-" />
<op code="97pp" m6801="STA >p" m6803="STA >p" clocks="3" flags="----**0-" />
<op code="98pp" m6801="EORA >p" m6803="EORA >p" clocks="3" flags="----**0-" />
<op code="99pp" m6801="ADCA >p" m6803="ADCA >p" clocks="3" flags="--*-****" />
<op code="9App" m6801="ORA >p" m6803="ORA >p" clocks="3" flags="----**0-" />
<op code="9Bpp" m6801="ADDA >p" m6803="ADDA >p" clocks="3" flags="--*-****" />
<op code="9Cpp" m6801="CPX >p" m6803="CPX >p" clocks="5" flags="----****" />
<op code="9Dpp" m6801="JSR >p" m6803="JSR >p" clocks="5" flags="--------" />
<op code="9Epp" m6801="LDS >p" m6803="LDS >p" clocks="4" flags="----**0-" />
<op code="9Fpp" m6801="STS >p" m6803="STS >p" clocks="4" flags="----**0-" />
<op code="A0ii" m6801="SUBA i,X" m6803="SUBA i,X" clocks="4" flags="----****" />
<op code="A1ii" m6801="CMPA i,X" m6803="CMPA i,X" clocks="4" flags="----****" />
<op code="A2ii" m6801="SBCA i,X" m6803="SBCA i,X" clocks="4" flags="----****" />
<op code="A3ii" m6801="SUBD i,X" m6803="SUBD i,X" clocks="6" flags="----****" />
<op code="A4ii" m6801="ANDA i,X" m6803="ANDA i,X" clocks="4" flags="----**0*" />
<op code="A5ii" m6801="BITA i,X" m6803="BITA i,X" clocks="4" flags="----**0-" />
<op code="A6ii" m6801="LDA i,X" m6803="LDA i,X" clocks="4" flags="----**0-" />
<op code="A7ii" m6801="STA i,X" m6803="STA i,X" clocks="4" flags="----**0-" />
<op code="A8ii" m6801="EORA i,X" m6803="EORA i,X" clocks="4" flags="----**0-" />
<op code="A9ii" m6801="ADCA i,X" m6803="ADCA i,X" clocks="4" flags="--*-****" />
<op code="AAii" m6801="ORA i,X" m6803="ORA i,X" clocks="4" flags="----**0-" />
<op code="ABii" m6801="ADDA i,X" m6803="ADDA i,X" clocks="4" flags="--*-****" />
<op code="ACii" m6801="CPX i,X" m6803="CPX i,X" clocks="6" flags="----****" />
<op code="ADii" m6801="JSR i,X" m6803="JSR i,X" clocks="6" flags="--------" />
<op code="AEii" m6801="LDS i,X" m6803="LDS i,X" clocks="5" flags="----**0-" />
<op code="AFii" m6801="STS i,X" m6803="STS i,X" clocks="5" flags="----**0-" />
<op code="B0mmml" m6801="SUBA m" m6803="SUBA m" clocks="4" flags="----****" />
<op code="B1mmml" m6801="CMPA m" m6803="CMPA m" clocks="4" flags="----****" />
<op code="B2mmml" m6801="SBCA m" m6803="SBCA m" clocks="4" flags="----****" />
<op code="B3mmml" m6801="SUBD m" m6803="SUBD m" clocks="6" flags="----****" />
<op code="B4mmml" m6801="ANDA m" m6803="ANDA m" clocks="4" flags="----**0*" />
<op code="B5mmml" m6801="BITA m" m6803="BITA m" clocks="4" flags="----**0-" />
<op code="B6mmml" m6801="LDA m" m6803="LDA m" clocks="4" flags="----**0-" />
<op code="B7mmml" m6801="STA m" m6803="STA m" clocks="4" flags="----**0-" />
<op code="B8mmml" m6801="EORA m" m6803="EORA m" clocks="4" flags="----**0-" />
<op code="B9mmml" m6801="ADCA m" m6803="ADCA m" clocks="4" flags="--*-****" />
<op code="BAmmml" m6801="ORA m" m6803="ORA m" clocks="4" flags="----**0-" />
<op code="BBmmml" m6801="ADDA m" m6803="ADDA m" clocks="4" flags="--*-****" />
<op code="BCmmml" m6801="CPX m" m6803="CPX m" clocks="6" flags="----****" />
<op code="BDmmml" m6801="JSR m" m6803="JSR m" clocks="6" flags="--------" />
<op code="BEmmml" m6801="LDS m" m6803="LDS m" clocks="5" flags="----**0-" />
<op code="BFmmml" m6801="STS m" m6803="STS m" clocks="5" flags="----**0-" />
<op code="C0bb" m6801="SUBB #b" m6803="SUBB #b" clocks="2" flags="----****" />
<op code="C1bb" m6801="CMPB #b" m6803="CMPB #b" clocks="2" flags="----****" />
<op code="C2bb" m6801="SBCB #b" m6803="SBCB #b" clocks="2" flags="----****" />
<op code="C3wmwl" m6801="ADDD #w" m6803="ADDD #w" clocks="4" flags="--*-****" />
<op code="C4bb" m6801="ANDB #b" m6803="ANDB #b" clocks="2" flags="----**0*" />
<op code="C5bb" m6801="BITB #b" m6803="BITB #b" clocks="2" flags="----**0-" />
<op code="C6bb" m6801="LDB #b" m6803="LDB #b" clocks="2" flags="----**0-" />
<op code="C8bb" m6801="EORB #b" m6803="EORB #b" clocks="2" flags="----**0-" />
<op code="C9bb" m6801="ADCB #b" m6803="ADCB #b" clocks="2" flags="--*-****" />
<op code="CAbb" m6801="ORB #b" m6803="ORB #b" clocks="2" flags="----**0-" />
<op code="CBbb" m6801="ADDB #b" m6803="ADDB #b" clocks="2" flags="--*-****" />
<op code="CCwmwl" m6801="LDD w" m6803="LDD w" clocks="3" flags="----**0-" />
<op code="CEwmwl" m6801="LDX #w" m6803="LDX #w" clocks="3" flags="----**0-" />
<op code="D0pp" m6801="SUBB >p" m6803="SUBB >p" clocks="3" flags="----****" />
<op code="D1pp" m6801="CMPB >p" m6803="CMPB >p" clocks="3" flags="----****" />
<op code="D2pp" m6801="SBCB >p" m6803="SBCB >p" clocks="3" flags="----****" />
<op code="D3pp" m6801="ADDD >p" m6803="ADDD >p" clocks="5" flags="--*-****" />
<op code="D4pp" m6801="ANDB >p" m6803="ANDB >p" clocks="3" flags="----**0*" />
<op code="D5pp" m6801="BITB >p" m6803="BITB >p" clocks="3" flags="----**0-" />
<op code="D6pp" m6801="LDB >p" m6803="LDB >p" clocks="3" flags="----**0-" />
<op code="D7pp" m6801="STB >p" m6803="STB >p" clocks="3" flags="----**0-" />
<op code="D8pp" m6801="EORB >p" m6803="EORB >p" clocks="3" flags="----**0-" />
<op code="D9pp" m6801="ADCB >p" m6803="ADCB >p" clocks="3" flags="--*-****" />
<op code="DApp" m6801="ORB >p" m6803="ORB >p" clocks="3" flags="----**0-" />
<op code="DBpp" m6801="ADDB >p" m6803="ADDB >p" clocks="3" flags="--*-****" />
<op code="DCpp" m6801="LDD >p" m6803="LDD >p" clocks="4" flags="----**0-" />
<op code="DDpp" m6801="STD >p" m6803="STD >p" clocks="4" flags="----**0-" />
<op code="DEpp" m6801="LDX >p" m6803="LDX >p" clocks="4" flags="----**0-" />
<op code="DFpp" m6801="STX >p" m6803="STX >p" clocks="4" flags="----**0-" />
<op code="E0ii" m6801="SUBB i,X" m6803="SUBB i,X" clocks="4" flags="----****" />
<op code="E1ii" m6801="CMPB i,X" m6803="CMPB i,X" clocks="4" flags="----****" />
<op code="E2ii" m6801="SBCB i,X" m6803="SBCB i,X" clocks="4" flags="----****" />
<op code="E3ii" m6801="ADDD i,x" m6803="ADDD i,x" clocks="6" flags="--*-****" />
<op code="E4ii" m6801="ANDB i,X" m6803="ANDB i,X" clocks="4" flags="----**0*" />
<op code="E5ii" m6801="BITB i,X" m6803="BITB i,X" clocks="4" flags="----**0-" />
<op code="E6ii" m6801="LDB i,X" m6803="LDB i,X" clocks="4" flags="----**0-" />
<op code="E7ii" m6801="STB i,X" m6803="STB i,X" clocks="4" flags="----**0-" />
<op code="E8ii" m6801="EORB i,X" m6803="EORB i,X" clocks="4" flags="----**0-" />
<op code="E9ii" m6801="ADCB i,X" m6803="ADCB i,X" clocks="4" flags="--*-****" />
<op code="EAii" m6801="ORB i,X" m6803="ORB i,X" clocks="4" flags="----**0-" />
<op code="EBii" m6801="ADDB i,X" m6803="ADDB i,X" clocks="4" flags="--*-****" />
<op code="ECii" m6801="LDD i,X" m6803="LDD i,X" clocks="5" flags="----**0-" />
<op code="EDpp" m6801="STD i,X" m6803="STD i,X" clocks="5" flags="----**0-" />
<op code="EEii" m6801="LDX i,X" m6803="LDX i,X" clocks="5" flags="----**0-" />
<op code="EFii" m6801="STX i,X" m6803="STX i,X" clocks="5" flags="----**0-" />
<op code="F0mmml" m6801="SUBB m" m6803="SUBB m" clocks="4" flags="----****" />
<op code="F1mmml" m6801="CMPB m" m6803="CMPB m" clocks="4" flags="----****" />
<op code="F2mmml" m6801="SBCB m" m6803="SBCB m" clocks="4" flags="----****" />
<op code="F3mmml" m6801="ADDD m" m6803="ADDD m" clocks="6" flags="--*-****" />
<op code="F4mmml" m6801="ANDB m" m6803="ANDB m" clocks="4" flags="----**0*" />
<op code="F5mmml" m6801="BITB m" m6803="BITB m" clocks="4" flags="----**0-" />
<op code="F6mmml" m6801="LDB m" m6803="LDB m" clocks="4" flags="----**0-" />
<op code="F7mmml" m6801="STB m" m6803="STB m" clocks="4" flags="----**0-" />
<op code="F8mmml" m6801="EORB m" m6803="EORB m" clocks="4" flags="----**0-" />
<op code="F9mmml" m6801="ADCB m" m6803="ADCB m" clocks="4" flags="--*-****" />
<op code="FAmmml" m6801="ORB m" m6803="ORB m" clocks="4" flags="----**0-" />
<op code="FBmmml" m6801="ADDB m" m6803="ADDB m" clocks="4" flags="--*-****" />
<op code="FCmmml" m6801="LDD m" m6803="LDD m" clocks="5" flags="----**0-" />
<op code="FDpp" m6801="STD m" m6803="STD m" clocks="5" flags="----**0-" />
<op code="FEmmml" m6801="LDX m" m6803="LDX m" clocks="5" flags="----**0-" />
<op code="FFmmml" m6801="STX m" m6803="STX m" clocks="5" flags="----**0-" />
</opcodes>
</ProcessorFamily>
<?xml version="1.0" encoding="UTF-8"?>
<ProcessorFamily name="Z80/8080" endian="little">
<printSpacing>
<set name="Z80" dataFieldSize="10" mnemonicFieldSize="20"/>
<set name="8080" dataFieldSize="10" mnemonicFieldSize="20"/>
<set name="Cish" dataFieldSize="10" mnemonicFieldSize="20"/>
</printSpacing>
<processors>
<processor name="Z80">
<registers>
<register name="F" size="1" />
<register name="A" size="1" />
<register name="B" size="1" />
<register name="C" size="1" />
<register name="D" size="1" />
<register name="E" size="1" />
<register name="H" size="1" />
<register name="IXL" size="1" />
<register name="IXH" size="1" />
<register name="IYL" size="1" />
<register name="IYH" size="1" />
<register name="SP" size="2" />
<register name="PC" size="2" />
<registerPair name="BC" msb="B" lsb="C" />
<registerPair name="DE" msb="D" lsb="C" />
<registerPair name="HL" msb="H" lsb="C" />
<registerPair name="IX" msb="IXH" lsb="IXL" />
<registerPair name="IY" msb="IYH" lsb="IYL" />
<flag name="C" register="F" bpos="0" description="carry/borrow" />
<flag name="N" register="F" bpos="1" description="subtract" />
<flag name="P" register="F" bpos="2" description="parity/overflow" />
<flag name="H" register="F" bpos="4" description="half cary" />
<flag name="Z" register="F" bpos="6" description="zero" />
<flag name="S" register="F" bpos="7" description="sign" />
</registers>
</processor>
<processor name="8080">
<registers>
<register name="F" size="1" />
<register name="A" size="1" />
<register name="B" size="1" />
<register name="C" size="1" />
<register name="D" size="1" />
<register name="E" size="1" />
<register name="H" size="1" />
<register name="L" size="1" />
<register name="SP" size="2" />
<register name="PC" size="2" />
<registerPair name="BC" msb="B" lsb="C" />
<registerPair name="DE" msb="D" lsb="C" />
<registerPair name="HL" msb="H" lsb="C" />
<flag name="C" register="F" bpos="0" description="carry/borrow" />
<flag name="N" register="F" bpos="1" description="subtract" />
<flag name="P" register="F" bpos="2" description="parity/overflow" />
<flag name="H" register="F" bpos="4" description="half cary" />
<flag name="Z" register="F" bpos="6" description="zero" />
<flag name="S" register="F" bpos="7" description="sign" />
</registers>
</processor>
</processors>
<blends jump="JP $DEST$">
<!-- Simple one-flag tests. These have equally-short alternate forms -->
<blend left="A" op="==" right="*" branchPass="CP $RIGHT$;JP Z,$PASS$" branchFail="CP $RIGHT$;JP NZ,$FAIL$"/>
<blend left="A" op="!=" right="*" branchPass="CP $RIGHT$;JP NZ,$PASS$" branchFail="CP $RIGHT$;JP Z,$FAIL$"/>
<blend left="A" op="<" right="*" branchPass="CP $RIGHT$;JP C,$PASS$" branchFail="CP $RIGHT$;JP NC,$FAIL$"/>
<blend left="A" op=">=" right="*" branchPass="CP $RIGHT$;JP NC,$PASS$" branchFail="CP $RIGHT$;JP C,$FAIL$" />
<!-- These can't be tested with one flag ... the alternate form is needlessly complicated -->
<blend left="A" op=">" right="*" branchFail="CP $RIGHT$;JP Z,$FAIL$;JP C,$FAIL$" />
<blend left="A" op="<=" right="*" branchPass="CP $RIGHT$;JP Z,$PASS$;JP C,$PASS$" />
<!-- No operation ... just use the existing flags -->
<blend left="ZERO" op="" right="" branchPass="JP Z,$PASS$" branchFail="JP NZ,$FAIL$"/>
<blend left="NOT_ZERO" op="" right="" branchPass="JP NZ,$PASS$" branchFail="JP Z,$FAIL$"/>
<blend left="CARRY" op="" right="" branchPass="JP C,$PASS$" branchFail="JP NC,$FAIL$"/>
<blend left="NOT_CARRY" op="" right="" branchPass="JP NC,$PASS$" branchFail="JP C,$FAIL$"/>
<!-- TRUE and FALSE -->
<blend left="true" op="" right="" branchPass="JP $PASS$" branchFail=""/>
<blend left="false" op="" right="" branchPass="" branchFail="JP $FAIL$"/>
</blends>
<!--
mCish
BYTE[ address ] Byte from memory location "address"
CARRY Carry flag (1 or 0)
-->
<opcodes> <!-- SZ-H-PNC -->
<op code="8F" clocks="4" flags="sz-h-v0c" mZ80="ADC A,A" m8080="ADC A" mCish="A=A+A+CARRY" />
<op code="88" clocks="4" flags="sz-h-v0c" mZ80="ADC A,B" m8080="ADC B" mCish="A=A+B+CARRYy" />
<op code="89" clocks="4" flags="sz-h-v0c" mZ80="ADC A,C" m8080="ADC C" mCish="A=A+C+CARRY" />
<op code="8A" clocks="4" flags="sz-h-v0c" mZ80="ADC A,D" m8080="ADC D" mCish="A=A+D+CARRY" />
<op code="8B" clocks="4" flags="sz-h-v0c" mZ80="ADC A,E" m8080="ADC E" mCish="A=A+E+CARRY" />
<op code="8C" clocks="4" flags="sz-h-v0c" mZ80="ADC A,H" m8080="ADC H" mCish="A=A+H+CARRY" />
<op code="8D" clocks="4" flags="sz-h-v0c" mZ80="ADC A,L" m8080="ADC L" mCish="A=A+L+CARRY" />
<op code="8E" clocks="7" flags="sz-h-v0c" bus="r" mZ80="ADC A,(HL)" m8080="ADC M" mCish="A=A+BYTE[HL]+CARRY" />
<op code="DD8Eii" clocks="19" flags="sz-h-v0c" bus="r" mZ80="ADC A,(IX+i)" mCish="A=A+BYTE[IX+i]+CARRY" />
<op code="FD8Eii" clocks="19" flags="sz-h-v0c" bus="r" mZ80="ADC A,(IY+i)" mCish="A=A+BYTE[IY+i]+CARRY" />
<op code="CEbb" clocks="7" flags="sz-h-v0c" mZ80="ADC A,b" m8080="ACI b" mCish="A=A+b+CARRY" />
<op code="ED4A" clocks="15" flags="sz-h-v0c" mZ80="ADC HL,BC" mCish="HL=HL+BC+CARRY" />
<op code="ED5A" clocks="15" flags="sz-h-v0c" mZ80="ADC HL,DE" mCish="HL=HL+DE+CARRY" />
<op code="ED6A" clocks="15" flags="sz-h-v0c" mZ80="ADC HL,HL" mCish="HL=HL+HL+CARRY" />
<op code="ED7A" clocks="15" flags="sz-h-v0c" mZ80="ADC HL,SP" mCish="HL=HL+SP+CARRY" />
<op code="87" clocks="4" flags="sz-h-v0c" mZ80="ADD A,A" m8080="ADD A" mCish="A=A+A" />
<op code="80" clocks="4" flags="sz-h-v0c" mZ80="ADD A,B" m8080="ADD B" mCish="A=A+B" />
<op code="81" clocks="4" flags="sz-h-v0c" mZ80="ADD A,C" m8080="ADD C" mCish="A=A+C" />
<op code="82" clocks="4" flags="sz-h-v0c" mZ80="ADD A,D" m8080="ADD D" mCish="A=A+D" />
<op code="83" clocks="4" flags="sz-h-v0c" mZ80="ADD A,E" m8080="ADD E" mCish="A=A+E" />
<op code="84" clocks="4" flags="sz-h-v0c" mZ80="ADD A,H" m8080="ADD H" mCish="A=A+H" />
<op code="85" clocks="4" flags="sz-h-v0c" mZ80="ADD A,L" m8080="ADD L" mCish="A=A+L" />
<op code="DD85" clocks="" flags="sz-h-v0c" mZ80="ADD A,IXL" mCish="A=A+IXL" />
<op code="86" clocks="7" flags="sz-h-v0c" bus="r" mZ80="ADD A,(HL)" m8080="ADD M" mCish="A=A+BYTE[HL]" />
<op code="DD86ii" clocks="19" flags="sz-h-v0c" bus="r" mZ80="ADD A,(IX+i)" mCish="A=A+BYTE[IX+i]" />
<op code="FD86ii" clocks="19" flags="sz-h-v0c" bus="r" mZ80="ADD A,(IY+i)" mCish="A=A+BYTE[IY+i]" />
<op code="C6bb" clocks="7" flags="sz-h-v0c" mZ80="ADD A,b" m8080="ADI b" mCish="A=A+b" />
<op code="09" clocks="11" flags="---H--0C" mZ80="ADD HL,BC" m8080="DAD B" mCish="HL=HL+BC" />
<op code="19" clocks="11" flags="---H--0C" mZ80="ADD HL,DE" m8080="DAD D" mCish="HL=HL+DE" />
<op code="29" clocks="11" flags="---H--0C" mZ80="ADD HL,HL" m8080="DAD H" mCish="HL=HL+HL" />
<op code="39" clocks="11" flags="---H--0C" mZ80="ADD HL,SP" m8080="DAD SP" mCish="HL=HL+SP" />
<op code="DD09" clocks="15" flags="---H--0C" mZ80="ADD IX,BC" mCish="IX=IX+BC" />
<op code="DD19" clocks="15" flags="---H--0C" mZ80="ADD IX,DE" mCish="IX=IX+DE" />
<op code="DD29" clocks="15" flags="---H--0C" mZ80="ADD IX,IX" mCish="IX=IX+IX" />
<op code="DD39" clocks="15" flags="---H--0C" mZ80="ADD IX,SP" mCish="IX=IX+SP" />
<op code="FD09" clocks="15" flags="---H--0C" mZ80="ADD IY,BC" mCish="IY=IY+BC" />
<op code="FD19" clocks="15" flags="---H--0C" mZ80="ADD IY,DE" mCish="IY=IY+DE" />
<op code="FD29" clocks="15" flags="---H--0C" mZ80="ADD IY,IY" mCish="IY=IY+IY" />
<op code="FD39" clocks="15" flags="---H--0C" mZ80="ADD IY,SP" mCish="IY=IY+SP" />
<op code="A7" clocks="4" flags="sz-1-p00" mZ80="AND A" m8080="ANA A" mCish="A=A&A" />
<op code="A0" clocks="4" flags="sz-1-p00" mZ80="AND B" m8080="ANA B" mCish="A=A&B" />
<op code="A1" clocks="4" flags="sz-1-p00" mZ80="AND C" m8080="ANA C" mCish="A=A&C" />
<op code="A2" clocks="4" flags="sz-1-p00" mZ80="AND D" m8080="ANA D" mCish="A=A&D" />
<op code="A3" clocks="4" flags="sz-1-p00" mZ80="AND E" m8080="ANA E" mCish="A=A&E" />
<op code="A4" clocks="4" flags="sz-1-p00" mZ80="AND H" m8080="ANA H" mCish="A=A&H" />
<op code="A5" clocks="4" flags="sz-1-p00" mZ80="AND L" m8080="ANA L" mCish="A=A&L" />
<op code="A6" clocks="7" flags="sz-1-p00" bus="r" mZ80="AND (HL)" m8080="ANA M" mCish="A=A&BYTE[HL]" />
<op code="DDA6ii" clocks="19" flags="sz-1-p00" bus="r" mZ80="AND (IX+i)" mCish="A=A&BYTE[IX+i]" />
<op code="FDA6ii" clocks="19" flags="sz-1-p00" bus="r" mZ80="AND (IY+i)" mCish="A=A&BYTE[IY+i]" />
<op code="E6bb" clocks="7" flags="sz-1-p00" mZ80="AND b" m8080="ANI b" mCish="A=A&b" />
<op code="B7" clocks="4" flags="sz-0-p00" mZ80="OR A" m8080="ORA A" />
<op code="B0" clocks="4" flags="sz-0-p00" mZ80="OR B" m8080="ORA B" />
<op code="B1" clocks="4" flags="sz-0-p00" mZ80="OR C" m8080="ORA C" />
<op code="B2" clocks="4" flags="sz-0-p00" mZ80="OR D" m8080="ORA D" />
<op code="B3" clocks="4" flags="sz-0-p00" mZ80="OR E" m8080="ORA E" />
<op code="B4" clocks="4" flags="sz-0-p00" mZ80="OR H" m8080="ORA H" />
<op code="B5" clocks="4" flags="sz-0-p00" mZ80="OR L" m8080="ORA L" />
<op code="B6" clocks="7" flags="sz-0-p00" bus="r" mZ80="OR (HL)" m8080="ORA M" />
<op code="DDB6ii" clocks="19" flags="sz-0-p00" bus="r" mZ80="OR (IX+i)" />
<op code="FDB6ii" clocks="19" flags="sz-0-p00" bus="r" mZ80="OR (IY+i)" />
<op code="F6bb" clocks="7" flags="sz-0-p00" mZ80="OR b" m8080="ORI b" />
<op code="AF" clocks="4" flags="sz-0-p00" mZ80="XOR A" m8080="XRA A" />
<op code="A8" clocks="4" flags="sz-0-p00" mZ80="XOR B" m8080="XRA B" />
<op code="A9" clocks="4" flags="sz-0-p00" mZ80="XOR C" m8080="XRA C" />
<op code="AA" clocks="4" flags="sz-0-p00" mZ80="XOR D" m8080="XRA D" />
<op code="AB" clocks="4" flags="sz-0-p00" mZ80="XOR E" m8080="XRA E" />
<op code="AC" clocks="4" flags="sz-0-p00" mZ80="XOR H" m8080="XRA H" />
<op code="AD" clocks="4" flags="sz-0-p00" mZ80="XOR L" m8080="XRA L" />
<op code="AE" clocks="7" flags="sz-0-p00" bus="r" mZ80="XOR (HL)" m8080="XRA M" />
<op code="DDAEii" clocks="19" flags="sz-0-p00" bus="r" mZ80="XOR (IX+i)" />
<op code="FDAEii" clocks="19" flags="sz-0-p00" bus="r" mZ80="XOR (IY+i)" />
<op code="EEbb" clocks="7" flags="sz-0-p00" mZ80="XOR b" m8080="XRI b" />
<op code="CB47" clocks="8" flags="?z-1-?0-" mZ80="BIT 0,A" />
<op code="CB40" clocks="8" flags="?z-1-?0-" mZ80="BIT 0,B" />
<op code="CB41" clocks="8" flags="?z-1-?0-" mZ80="BIT 0,C" />
<op code="CB42" clocks="8" flags="?z-1-?0-" mZ80="BIT 0,D" />
<op code="CB43" clocks="8" flags="?z-1-?0-" mZ80="BIT 0,E" />
<op code="CB44" clocks="8" flags="?z-1-?0-" mZ80="BIT 0,H" />
<op code="CB45" clocks="8" flags="?z-1-?0-" mZ80="BIT 0,L" />
<op code="CB4F" clocks="8" flags="?z-1-?0-" mZ80="BIT 1,A" />
<op code="CB48" clocks="8" flags="?z-1-?0-" mZ80="BIT 1,B" />
<op code="CB49" clocks="8" flags="?z-1-?0-" mZ80="BIT 1,C" />
<op code="CB4A" clocks="8" flags="?z-1-?0-" mZ80="BIT 1,D" />
<op code="CB4B" clocks="8" flags="?z-1-?0-" mZ80="BIT 1,E" />
<op code="CB4C" clocks="8" flags="?z-1-?0-" mZ80="BIT 1,H" />
<op code="CB4D" clocks="8" flags="?z-1-?0-" mZ80="BIT 1,L" />
<op code="CB57" clocks="8" flags="?z-1-?0-" mZ80="BIT 2,A" />
<op code="CB50" clocks="8" flags="?z-1-?0-" mZ80="BIT 2,B" />
<op code="CB51" clocks="8" flags="?z-1-?0-" mZ80="BIT 2,C" />
<op code="CB52" clocks="8" flags="?z-1-?0-" mZ80="BIT 2,D" />
<op code="CB53" clocks="8" flags="?z-1-?0-" mZ80="BIT 2,E" />
<op code="CB54" clocks="8" flags="?z-1-?0-" mZ80="BIT 2,H" />
<op code="CB55" clocks="8" flags="?z-1-?0-" mZ80="BIT 2,L" />
<op code="CB5F" clocks="8" flags="?z-1-?0-" mZ80="BIT 3,A" />
<op code="CB58" clocks="8" flags="?z-1-?0-" mZ80="BIT 3,B" />
<op code="CB59" clocks="8" flags="?z-1-?0-" mZ80="BIT 3,C" />
<op code="CB5A" clocks="8" flags="?z-1-?0-" mZ80="BIT 3,D" />
<op code="CB5B" clocks="8" flags="?z-1-?0-" mZ80="BIT 3,E" />
<op code="CB5C" clocks="8" flags="?z-1-?0-" mZ80="BIT 3,H" />
<op code="CB5D" clocks="8" flags="?z-1-?0-" mZ80="BIT 3,L" />
<op code="CB67" clocks="8" flags="?z-1-?0-" mZ80="BIT 4,A" />
<op code="CB60" clocks="8" flags="?z-1-?0-" mZ80="BIT 4,B" />
<op code="CB61" clocks="8" flags="?z-1-?0-" mZ80="BIT 4,C" />
<op code="CB62" clocks="8" flags="?z-1-?0-" mZ80="BIT 4,D" />
<op code="CB63" clocks="8" flags="?z-1-?0-" mZ80="BIT 4,E" />
<op code="CB64" clocks="8" flags="?z-1-?0-" mZ80="BIT 4,H" />
<op code="CB65" clocks="8" flags="?z-1-?0-" mZ80="BIT 4,L" />
<op code="CB6F" clocks="8" flags="?z-1-?0-" mZ80="BIT 5,A" />
<op code="CB68" clocks="8" flags="?z-1-?0-" mZ80="BIT 5,B" />
<op code="CB69" clocks="8" flags="?z-1-?0-" mZ80="BIT 5,C" />
<op code="CB6A" clocks="8" flags="?z-1-?0-" mZ80="BIT 5,D" />
<op code="CB6B" clocks="8" flags="?z-1-?0-" mZ80="BIT 5,E" />
<op code="CB6C" clocks="8" flags="?z-1-?0-" mZ80="BIT 5,H" />
<op code="CB6D" clocks="8" flags="?z-1-?0-" mZ80="BIT 5,L" />
<op code="CB77" clocks="8" flags="?z-1-?0-" mZ80="BIT 6,A" />
<op code="CB70" clocks="8" flags="?z-1-?0-" mZ80="BIT 6,B" />
<op code="CB71" clocks="8" flags="?z-1-?0-" mZ80="BIT 6,C" />
<op code="CB72" clocks="8" flags="?z-1-?0-" mZ80="BIT 6,D" />
<op code="CB73" clocks="8" flags="?z-1-?0-" mZ80="BIT 6,E" />
<op code="CB74" clocks="8" flags="?z-1-?0-" mZ80="BIT 6,H" />
<op code="CB75" clocks="8" flags="?z-1-?0-" mZ80="BIT 6,L" />
<op code="CB7F" clocks="8" flags="?z-1-?0-" mZ80="BIT 7,A" />
<op code="CB78" clocks="8" flags="?z-1-?0-" mZ80="BIT 7,B" />
<op code="CB79" clocks="8" flags="?z-1-?0-" mZ80="BIT 7,C" />
<op code="CB7A" clocks="8" flags="?z-1-?0-" mZ80="BIT 7,D" />
<op code="CB7B" clocks="8" flags="?z-1-?0-" mZ80="BIT 7,E" />
<op code="CB7C" clocks="8" flags="?z-1-?0-" mZ80="BIT 7,H" />
<op code="CB7D" clocks="8" flags="?z-1-?0-" mZ80="BIT 7,L" />
<op code="CB46" clocks="12" flags="?z-1-?0-" bus="r" mZ80="BIT 0,(HL)" />
<op code="CB4E" clocks="12" flags="?z-1-?0-" bus="r" mZ80="BIT 1,(HL)" />
<op code="CB56" clocks="12" flags="?z-1-?0-" bus="r" mZ80="BIT 2,(HL)" />
<op code="CB5E" clocks="12" flags="?z-1-?0-" bus="r" mZ80="BIT 3,(HL)" />
<op code="CB66" clocks="12" flags="?z-1-?0-" bus="r" mZ80="BIT 4,(HL)" />
<op code="CB6E" clocks="12" flags="?z-1-?0-" bus="r" mZ80="BIT 5,(HL)" />
<op code="CB76" clocks="12" flags="?z-1-?0-" bus="r" mZ80="BIT 6,(HL)" />
<op code="CB7E" clocks="12" flags="?z-1-?0-" bus="r" mZ80="BIT 7,(HL)" />
<op code="DDCBii46" clocks="20" flags="?z-1-?0-" bus="r" mZ80="BIT 0,(IX+i)" />
<op code="FDCBii46" clocks="20" flags="?z-1-?0-" bus="r" mZ80="BIT 0,(IY+i)" />
<op code="DDCBii4E" clocks="20" flags="?z-1-?0-" bus="r" mZ80="BIT 1,(IX+i)" />
<op code="FDCBii4E" clocks="20" flags="?z-1-?0-" bus="r" mZ80="BIT 1,(IY+i)" />
<op code="DDCBii56" clocks="20" flags="?z-1-?0-" bus="r" mZ80="BIT 2,(IX+i)" />
<op code="FDCBii56" clocks="20" flags="?z-1-?0-" bus="r" mZ80="BIT 2,(IY+i)" />
<op code="DDCBii5E" clocks="20" flags="?z-1-?0-" bus="r" mZ80="BIT 3,(IX+i)" />
<op code="FDCBii5E" clocks="20" flags="?z-1-?0-" bus="r" mZ80="BIT 3,(IY+i)" />
<op code="DDCBii66" clocks="20" flags="?z-1-?0-" bus="r" mZ80="BIT 4,(IX+i)" />
<op code="FDCBii66" clocks="20" flags="?z-1-?0-" bus="r" mZ80="BIT 4,(IY+i)" />
<op code="DDCBii6E" clocks="20" flags="?z-1-?0-" bus="r" mZ80="BIT 5,(IX+i)" />
<op code="FDCBii6E" clocks="20" flags="?z-1-?0-" bus="r" mZ80="BIT 5,(IY+i)" />
<op code="DDCBii76" clocks="20" flags="?z-1-?0-" bus="r" mZ80="BIT 6,(IX+i)" />
<op code="FDCBii76" clocks="20" flags="?z-1-?0-" bus="r" mZ80="BIT 6,(IY+i)" />
<op code="DDCBii7E" clocks="20" flags="?z-1-?0-" bus="r" mZ80="BIT 7,(IX+i)" />
<op code="FDCBii7E" clocks="20" flags="?z-1-?0-" bus="r" mZ80="BIT 7,(IY+i)" />
<op code="CDmlmm" clocks="17" flags="--------" mZ80="CALL m" m8080="CALL m" mCish="m()"/>
<op code="C4mlmm" clocks="17/10" flags="--------" mZ80="CALL NZ,m" m8080="CNZ m" />
<op code="CCmlmm" clocks="17/10" flags="--------" mZ80="CALL Z,m" m8080="CZ m" />
<op code="D4mlmm" clocks="17/10" flags="--------" mZ80="CALL NC,m" m8080="CNC m" />
<op code="DCmlmm" clocks="17/10" flags="--------" mZ80="CALL C,m" m8080="CC m" />
<op code="FDDCmlmm" clocks="?" flags="--------" mZ80="CALL C,m" m8080="CC m" />
<op code="E4mlmm" clocks="17/10" flags="--------" mZ80="CALL PO,m" m8080="CPO m" />
<op code="ECmlmm" clocks="17/10" flags="--------" mZ80="CALL PE,m" m8080="CPE m" />
<op code="F4mlmm" clocks="17/10" flags="--------" mZ80="CALL P,m" m8080="CP m" />
<op code="FCmlmm" clocks="17/10" flags="--------" mZ80="CALL M,m" m8080="CM m" />
<op code="3F" clocks="4" flags="---x--0x" mZ80="CCF" m8080="CMC" />
<op code="BF" clocks="4" flags="sz-u-v1b" mZ80="CP A" m8080="CMP A" />
<op code="B8" clocks="4" flags="sz-u-v1b" mZ80="CP B" m8080="CMP B" />
<op code="B9" clocks="4" flags="sz-u-v1b" mZ80="CP C" m8080="CMP C" />
<op code="BA" clocks="4" flags="sz-u-v1b" mZ80="CP D" m8080="CMP D" />
<op code="BB" clocks="4" flags="sz-u-v1b" mZ80="CP E" m8080="CMP E" />
<op code="BC" clocks="4" flags="sz-u-v1b" mZ80="CP H" m8080="CMP H" />
<op code="BD" clocks="4" flags="sz-u-v1b" mZ80="CP L" m8080="CMP L" />
<op code="BE" clocks="7" flags="sz-u-v1b" bus="r" mZ80="CP (HL)" m8080="CMP M" />
<op code="DDBEii" clocks="19" flags="sz-u-v1b" bus="r" mZ80="CP (IX+i)" />
<op code="FDBEii" clocks="19" flags="sz-u-v1b" bus="r" mZ80="CP (IY+i)" />
<op code="FEbb" clocks="7" flags="sz-u-v1b" mZ80="CP b" m8080="CPI b" />
<op code="EDA9" clocks="16" flags="sz-u-y1-" mZ80="CPD" />
<op code="EDA1" clocks="16" flags="sz-u-y1-" mZ80="CPI" />
<op code="EDB9" clocks="21/16" flags="xxxxxxxx" bus="r" mZ80="CPDR" />
<op code="EDB1" clocks="21/16" flags="xxxxxxxx" bus="r" mZ80="CPIR" />
<op code="27" clocks="4" flags="xxxxxxxx" mZ80="DAA" m8080="DAA" />
<op code="F3" clocks="4" flags="xxxxxxxx" mZ80="DI" m8080="DI" />
<op code="FB" clocks="4" flags="xxxxxxxx" mZ80="EI" m8080="EI" />
<op code="10rr" clocks="13/8" flags="xxxxxxxx" mZ80="DJNZ r" />
<op code="08" clocks="4" flags="xxxxxxxx" mZ80="EX AF,AF'" />
<op code="D9" clocks="4" flags="xxxxxxxx" mZ80="EXX" />
<op code="76" clocks="4" flags="xxxxxxxx" mZ80="HALT" m8080="HLT" />
<op code="ED46" clocks="8" flags="xxxxxxxx" mZ80="IM 0" />
<op code="ED56" clocks="8" flags="xxxxxxxx" mZ80="IM 1" />
<op code="ED5E" clocks="8" flags="xxxxxxxx" mZ80="IM 2" />
<op code="EDAA" clocks="16" flags="xxxxxxxx" bus="i" mZ80="IND" />
<op code="EDBA" clocks="21/16" flags="xxxxxxxx" bus="i" mZ80="INDR" />
<op code="EDA2" clocks="16" flags="xxxxxxxx" bus="i" mZ80="INI" />
<op code="EDB2" clocks="21/16" flags="xxxxxxxx" bus="i" mZ80="INIR" />
<op code="EDB8" clocks="21/16" flags="xxxxxxxx" bus="r" mZ80="LDDR" />
<op code="EDB0" clocks="21/16" flags="xxxxxxxx" bus="r" mZ80="LDIR" />
<op code="EDBB" clocks="21/16" flags="xxxxxxxx" bus="o" mZ80="OTDR" />
<op code="EDB3" clocks="21/16" flags="xxxxxxxx" bus="o" mZ80="OTIR" />
<op code="EDAB" clocks="16" flags="xxxxxxxx" bus="o" mZ80="OUTD" />
<op code="EDA3" clocks="16" flags="xxxxxxxx" bus="o" mZ80="OUTI" />
<op code="ED4D" clocks="14" flags="xxxxxxxx" mZ80="RETI" />
<op code="ED45" clocks="14" flags="xxxxxxxx" mZ80="RETN" />
<op code="ED6F" clocks="18" flags="xxxxxxxx" bus="rw" mZ80="RLD" />
<op code="ED67" clocks="18" flags="xxxxxxxx" bus="rw" mZ80="RRD" />
<op code="2F" clocks="4" flags="---1--1-" mZ80="CPL" m8080="CMA" />
<op code="3D" clocks="4" flags="sz-u-v1-" mZ80="DEC A" m8080="DCR A" />
<op code="05" clocks="4" flags="sz-u-v1-" mZ80="DEC B" m8080="DCR B" />
<op code="0D" clocks="4" flags="sz-u-v1-" mZ80="DEC C" m8080="DCR C" />
<op code="15" clocks="4" flags="sz-u-v1-" mZ80="DEC D" m8080="DCR D" />
<op code="1D" clocks="4" flags="sz-u-v1-" mZ80="DEC E" m8080="DCR E" />
<op code="25" clocks="4" flags="sz-u-v1-" mZ80="DEC H" m8080="DCR H" />
<op code="2D" clocks="4" flags="sz-u-v1-" mZ80="DEC L" m8080="DCR L" />
<op code="35" clocks="11" flags="sz-u-v1-" mZ80="DEC (HL)" m8080="DCR M" />
<op code="DD35ii" clocks="23" flags="sz-u-v1-" bus="rw" mZ80="DEC (IX+i)" />
<op code="FD35ii" clocks="23" flags="sz-u-v1-" bus="rw" mZ80="DEC (IY+i)" />
<op code="0B" clocks="6" flags="--------" mZ80="DEC BC" m8080="DCX B" />
<op code="1B" clocks="6" flags="--------" mZ80="DEC DE" m8080="DCX D" />
<op code="2B" clocks="6" flags="--------" mZ80="DEC HL" m8080="DCX H" />
<op code="3B" clocks="6" flags="--------" mZ80="DEC SP" m8080="DCX SP" />
<op code="DD2B" clocks="10" flags="--------" mZ80="DEC IX" />
<op code="FD2B" clocks="10" flags="--------" mZ80="DEC IY" />
<op code="EB" clocks="4" flags="--------" mZ80="EX DE,HL" m8080="XCHG" />
<op code="E3" clocks="19" flags="--------" bus="rw" mZ80="EX (SP),HL" m8080="XTHL" />
<op code="DDE3" clocks="23" flags="--------" bus="rw" mZ80="EX (SP),IX" />
<op code="FDE3" clocks="23" flags="--------" bus="rw" mZ80="EX (SP),IY" />
<op code="DBoo" clocks="11" flags="--------" mZ80="IN A,(o)" m8080="IN o" />
<op code="ED78" clocks="12" flags="sz-0-p0-" mZ80="IN A,(C)" />
<op code="ED40" clocks="12" flags="sz-0-p0-" mZ80="IN B,(C)" />
<op code="ED48" clocks="12" flags="sz-0-p0-" mZ80="IN C,(C)" />
<op code="ED50" clocks="12" flags="sz-0-p0-" mZ80="IN D,(C)" />
<op code="ED58" clocks="12" flags="sz-0-p0-" mZ80="IN E,(C)" />
<op code="ED60" clocks="12" flags="sz-0-p0-" mZ80="IN H,(C)" />
<op code="ED68" clocks="12" flags="sz-0-p0-" mZ80="IN L,(C)" />
<op code="3C" clocks="4" flags="sz-h-v0-" mZ80="INC A" m8080="INR A" />
<op code="04" clocks="4" flags="sz-h-v0-" mZ80="INC B" m8080="INR B" />
<op code="0C" clocks="4" flags="sz-h-v0-" mZ80="INC C" m8080="INR C" />
<op code="14" clocks="4" flags="sz-h-v0-" mZ80="INC D" m8080="INR D" />
<op code="1C" clocks="4" flags="sz-h-v0-" mZ80="INC E" m8080="INR E" />
<op code="24" clocks="4" flags="sz-h-v0-" mZ80="INC H" m8080="INR H" />
<op code="2C" clocks="4" flags="sz-h-v0-" mZ80="INC L" m8080="INR L" />
<op code="34" clocks="11" flags="sz-h-v0-" bus="rw" mZ80="INC (HL)" m8080="INR M" />
<op code="DD34ii" clocks="23" flags="sz-h-v0-" bus="rw" mZ80="INC (IX+i)" />
<op code="FD34ii" clocks="23" flags="sz-h-v0-" bus="rw" mZ80="INC (IY+i)" />
<op code="03" clocks="6" flags="--------" mZ80="INC BC" m8080="INX B" />
<op code="13" clocks="6" flags="--------" mZ80="INC DE" m8080="INX D" />
<op code="23" clocks="6" flags="--------" mZ80="INC HL" m8080="INX H" />
<op code="33" clocks="6" flags="--------" mZ80="INC SP" m8080="INX SP" />
<op code="DD23" clocks="10" flags="--------" mZ80="INC IX" />
<op code="FD23" clocks="10" flags="--------" mZ80="INC IY" />
<op code="C3mlmm" clocks="10" flags="--------" mZ80="JP m" m8080="JMP m" mCish="GOTO m"/>
<op code="C2mlmm" clocks="10/10" flags="--------" mZ80="JP NZ,m" m8080="JNZ m" />
<op code="CAmlmm" clocks="10/10" flags="--------" mZ80="JP Z,m" m8080="JZ m" />
<op code="D2mlmm" clocks="10/10" flags="--------" mZ80="JP NC,m" m8080="JNC m" />
<op code="DAmlmm" clocks="10/10" flags="--------" mZ80="JP C,m" m8080="JC m" />
<op code="E2mlmm" clocks="10/10" flags="--------" mZ80="JP PO,m" m8080="JPO m" />
<op code="EAmlmm" clocks="10/10" flags="--------" mZ80="JP PE,m" m8080="JPE m" />
<op code="F2mlmm" clocks="10/10" flags="--------" mZ80="JP P,m" m8080="JP m" />
<op code="FAmlmm" clocks="10/10" flags="--------" mZ80="JP M,m" m8080="JM m" />
<op code="E9" clocks="4" flags="--------" bus="r" mZ80="JP (HL)" m8080="PCHL" />
<op code="DDE9" clocks="8" flags="--------" bus="r" mZ80="JP (IX)" />
<op code="FDE9" clocks="8" flags="--------" bus="r" mZ80="JP (IY)" />
<op code="18rr" clocks="12" flags="--------" mZ80="JR r" />
<op code="20rr" clocks="12/7" flags="--------" mZ80="JR NZ,r" />
<op code="28rr" clocks="12/7" flags="--------" mZ80="JR Z,r" />
<op code="30rr" clocks="12/7" flags="--------" mZ80="JR NC,r" />
<op code="38rr" clocks="12/7" flags="--------" mZ80="JR C,r" />
<op code="7F" clocks="4" flags="--------" mZ80="LD A,A" m8080="MOV A,A" />
<op code="78" clocks="4" flags="--------" mZ80="LD A,B" m8080="MOV A,B" />
<op code="79" clocks="4" flags="--------" mZ80="LD A,C" m8080="MOV A,C" mCish="A=C"/>
<op code="7A" clocks="4" flags="--------" mZ80="LD A,D" m8080="MOV A,D" />
<op code="7B" clocks="4" flags="--------" mZ80="LD A,E" m8080="MOV A,E" />
<op code="7C" clocks="4" flags="--------" mZ80="LD A,H" m8080="MOV A,H" />
<op code="7D" clocks="4" flags="--------" mZ80="LD A,L" m8080="MOV A,L" />
<op code="DD7D" clocks="?" flags="--------" mZ80="LD A,IXL" />
<op code="FD6F" clocks="?" flags="--------" mZ80="LD IXH,A" />
<op code="7E" clocks="7" flags="--------" bus="r" mZ80="LD A,(HL)" m8080="MOV A,M" />
<op code="0A" clocks="7" flags="--------" bus="r" mZ80="LD A,(BC)" m8080="LDAX B" />
<op code="1A" clocks="7" flags="--------" bus="r" mZ80="LD A,(DE)" m8080="LDAX D" />
<op code="3Atltm" clocks="13" flags="--------" bus="r" mZ80="LD A,(t)" m8080="LDA t" />
<op code="DD7Eii" clocks="19" flags="--------" bus="r" mZ80="LD A,(IX+i)" />
<op code="FD7Eii" clocks="19" flags="--------" bus="r" mZ80="LD A,(IY+i)" />
<op code="47" clocks="4" flags="--------" mZ80="LD B,A" m8080="MOV B,A" />
<op code="40" clocks="4" flags="--------" mZ80="LD B,B" m8080="MOV B,B" />
<op code="41" clocks="4" flags="--------" mZ80="LD B,C" m8080="MOV B,C" />
<op code="42" clocks="4" flags="--------" mZ80="LD B,D" m8080="MOV B,D" />
<op code="43" clocks="4" flags="--------" mZ80="LD B,E" m8080="MOV B,E" />
<op code="44" clocks="4" flags="--------" mZ80="LD B,H" m8080="MOV B,H" />
<op code="45" clocks="4" flags="--------" mZ80="LD B,L" m8080="MOV B,L" />
<op code="46" clocks="7" flags="--------" bus="r" mZ80="LD B,(HL)" m8080="MOV B,M" />
<op code="DD46ii" clocks="19" flags="--------" bus="r" mZ80="LD B,(IX+i)" />
<op code="FD46ii" clocks="19" flags="--------" bus="r" mZ80="LD B,(IY+i)" />
<op code="4F" clocks="4" flags="--------" mZ80="LD C,A" m8080="MOV C,A" />
<op code="48" clocks="4" flags="--------" mZ80="LD C,B" m8080="MOV C,B" />
<op code="49" clocks="4" flags="--------" mZ80="LD C,C" m8080="MOV C,C" />
<op code="4A" clocks="4" flags="--------" mZ80="LD C,D" m8080="MOV C,D" />
<op code="4B" clocks="4" flags="--------" mZ80="LD C,E" m8080="MOV C,E" />
<op code="4C" clocks="4" flags="--------" mZ80="LD C,H" m8080="MOV C,H" />
<op code="4D" clocks="4" flags="--------" mZ80="LD C,L" m8080="MOV C,L" />
<op code="4E" clocks="7" flags="--------" bus="r" mZ80="LD C,(HL)" m8080="MOV C,M" />
<op code="DD4Eii" clocks="19" flags="--------" bus="r" mZ80="LD C,(IX+i)" />
<op code="FD4Eii" clocks="19" flags="--------" bus="r" mZ80="LD C,(IY+i)" />
<op code="57" clocks="4" flags="--------" mZ80="LD D,A" m8080="MOV D,A" />
<op code="50" clocks="4" flags="--------" mZ80="LD D,B" m8080="MOV D,B" />
<op code="51" clocks="4" flags="--------" mZ80="LD D,C" m8080="MOV D,C" />
<op code="52" clocks="4" flags="--------" mZ80="LD D,D" m8080="MOV D,D" />
<op code="53" clocks="4" flags="--------" mZ80="LD D,E" m8080="MOV D,E" />
<op code="54" clocks="4" flags="--------" mZ80="LD D,H" m8080="MOV D,H" />
<op code="55" clocks="4" flags="--------" mZ80="LD D,L" m8080="MOV D,L" />
<op code="56" clocks="7" flags="--------" bus="r" mZ80="LD D,(HL)" m8080="MOV D,M" />
<op code="DD56ii" clocks="19" flags="--------" bus="r" mZ80="LD D,(IX+i)" />
<op code="FD56ii" clocks="19" flags="--------" bus="r" mZ80="LD D,(IY+i)" />
<op code="5F" clocks="4" flags="--------" mZ80="LD E,A" m8080="MOV E,A" />
<op code="58" clocks="4" flags="--------" mZ80="LD E,B" m8080="MOV E,B" />
<op code="59" clocks="4" flags="--------" mZ80="LD E,C" m8080="MOV E,C" />
<op code="5A" clocks="4" flags="--------" mZ80="LD E,D" m8080="MOV E,D" />
<op code="5B" clocks="4" flags="--------" mZ80="LD E,E" m8080="MOV E,E" />
<op code="5C" clocks="4" flags="--------" mZ80="LD E,H" m8080="MOV E,H" />
<op code="5D" clocks="4" flags="--------" mZ80="LD E,L" m8080="MOV E,L" />
<op code="5E" clocks="7" flags="--------" bus="r" mZ80="LD E,(HL)" m8080="MOV E,M" />
<op code="DD5Eii" clocks="19" flags="--------" bus="r" mZ80="LD E,(IX+i)" />
<op code="FD5Eii" clocks="19" flags="--------" bus="r" mZ80="LD E,(IY+i)" />
<op code="67" clocks="4" flags="--------" mZ80="LD H,A" m8080="MOV H,A" />
<op code="60" clocks="4" flags="--------" mZ80="LD H,B" m8080="MOV H,B" />
<op code="61" clocks="4" flags="--------" mZ80="LD H,C" m8080="MOV H,C" />
<op code="62" clocks="4" flags="--------" mZ80="LD H,D" m8080="MOV H,D" />
<op code="FD62" clocks="?" flags="--------" mZ80="LD IYH,D" />
<op code="63" clocks="4" flags="--------" mZ80="LD H,E" m8080="MOV H,E" />
<op code="64" clocks="4" flags="--------" mZ80="LD H,H" m8080="MOV H,H" />
<op code="65" clocks="4" flags="--------" mZ80="LD H,L" m8080="MOV H,L" />
<op code="66" clocks="7" flags="--------" bus="r" mZ80="LD H,(HL)" m8080="MOV H,M" />
<op code="DD66ii" clocks="19" flags="--------" bus="r" mZ80="LD H,(IX+i)" />
<op code="FD66ii" clocks="19" flags="--------" bus="r" mZ80="LD H,(IY+i)" />
<op code="6F" clocks="4" flags="--------" mZ80="LD L,A" m8080="MOV L,A" />
<op code="DD6F" clocks="?" flags="--------" mZ80="LD IXL,A" />
<op code="68" clocks="4" flags="--------" mZ80="LD L,B" m8080="MOV L,B" />
<op code="69" clocks="4" flags="--------" mZ80="LD L,C" m8080="MOV L,C" />
<op code="6A" clocks="4" flags="--------" mZ80="LD L,D" m8080="MOV L,D" />
<op code="6B" clocks="4" flags="--------" mZ80="LD L,E" m8080="MOV L,E" />
<op code="6C" clocks="4" flags="--------" mZ80="LD L,H" m8080="MOV L,H" />
<op code="6D" clocks="4" flags="--------" mZ80="LD L,L" m8080="MOV L,L" />
<op code="6E" clocks="7" flags="--------" bus="r" mZ80="LD L,(HL)" m8080="MOV L,M" />
<op code="DD6Eii" clocks="19" flags="--------" bus="r" mZ80="LD L,(IX+i)" />
<op code="FD6Eii" clocks="19" flags="--------" bus="r" mZ80="LD L,(IY+i)" />
<op code="77" clocks="7" flags="--------" mZ80="LD (HL),A" m8080="MOV M,A" />
<op code="70" clocks="7" flags="--------" mZ80="LD (HL),B" m8080="MOV M,B" />
<op code="71" clocks="7" flags="--------" mZ80="LD (HL),C" m8080="MOV M,C" />
<op code="72" clocks="7" flags="--------" mZ80="LD (HL),D" m8080="MOV M,D" />
<op code="73" clocks="7" flags="--------" mZ80="LD (HL),E" m8080="MOV M,E" />
<op code="74" clocks="7" flags="--------" mZ80="LD (HL),H" m8080="MOV M,H" />
<op code="75" clocks="7" flags="--------" mZ80="LD (HL),L" m8080="MOV M,L" />
<op code="DD77ii" clocks="19" flags="--------" mZ80="LD (IX+i),A" />
<op code="DD70ii" clocks="19" flags="--------" bus="w" mZ80="LD (IX+i),B" />
<op code="DD71ii" clocks="19" flags="--------" bus="w" mZ80="LD (IX+i),C" />
<op code="DD72ii" clocks="19" flags="--------" bus="w" mZ80="LD (IX+i),D" />
<op code="DD73ii" clocks="19" flags="--------" bus="w" mZ80="LD (IX+i),E" />
<op code="DD74ii" clocks="19" flags="--------" bus="w" mZ80="LD (IX+i),H" />
<op code="DD75ii" clocks="19" flags="--------" bus="w" mZ80="LD (IX+i),L" />
<op code="DD36iibb" clocks="19" flags="--------" bus="w" mZ80="LD (IX+i),b" />
<op code="FD77ii" clocks="19" flags="--------" bus="w" mZ80="LD (IY+i),A" />
<op code="FD70ii" clocks="19" flags="--------" bus="w" mZ80="LD (IY+i),B" />
<op code="FD71ii" clocks="19" flags="--------" bus="w" mZ80="LD (IY+i),C" />
<op code="FD72ii" clocks="19" flags="--------" bus="w" mZ80="LD (IY+i),D" />
<op code="FD73ii" clocks="19" flags="--------" bus="w" mZ80="LD (IY+i),E" />
<op code="FD74ii" clocks="19" flags="--------" bus="w" mZ80="LD (IY+i),H" />
<op code="FD75ii" clocks="19" flags="--------" bus="w" mZ80="LD (IY+i),L" />
<op code="FD36iibb" clocks="19" flags="--------" bus="w" mZ80="LD (IY+i),b" />
<op code="3Ebb" clocks="7" flags="--------" mZ80="LD A,b" m8080="MVI A,b" mCish="A=b"/>
<op code="06bb" clocks="7" flags="--------" mZ80="LD B,b" m8080="MVI B,b" />
<op code="0Ebb" clocks="7" flags="--------" mZ80="LD C,b" m8080="MVI C,b" />
<op code="16bb" clocks="7" flags="--------" mZ80="LD D,b" m8080="MVI D,b" />
<op code="1Ebb" clocks="7" flags="--------" mZ80="LD E,b" m8080="MVI E,b" />
<op code="26bb" clocks="7" flags="--------" mZ80="LD H,b" m8080="MVI H,b" mCish="H=b"/>
<op code="2Ebb" clocks="7" flags="--------" mZ80="LD L,b" m8080="MVI L,b" />
<op code="36bb" clocks="10" flags="--------" bus="w" mZ80="LD (HL),b" m8080="MVI M,b" />
<op code="02" clocks="7" flags="--------" bus="w" mZ80="LD (BC),A" m8080="STAX B" />
<op code="12" clocks="7" flags="--------" bus="w" mZ80="LD (DE),A" m8080="STAX D" />
<op code="32tltm" clocks="13" flags="--------" bus="w" mZ80="LD (t),A" m8080="STA t" mCish="BYTE[t]=A"/>
<op code="01wlwm" clocks="10" flags="--------" mZ80="LD BC,w" m8080="LXI B,w" />
<op code="11wlwm" clocks="10" flags="--------" mZ80="LD DE,w" m8080="LXI D,w" />
<op code="21wlwm" clocks="10" flags="--------" mZ80="LD HL,w" m8080="LXI H,w" />
<op code="31wlwm" clocks="10" flags="--------" mZ80="LD SP,w" m8080="LXI SP,w" mCish="SP=w"/>
<op code="DD21wlwm" clocks="14" flags="--------" mZ80="LD IX,w" />
<op code="FD21wlwm" clocks="14" flags="--------" mZ80="LD IY,w" />
<op code="2Atltm" clocks="16" flags="--------" bus="r" mZ80="LD HL,(t)" m8080="LHLD t" />
<op code="ED4Btltm" clocks="20" flags="--------" bus="r" mZ80="LD BC,(t)" />
<op code="ED5Btltm" clocks="20" flags="--------" bus="r" mZ80="LD DE,(t)" />
<op code="ED6Btltm" clocks="20" flags="--------" bus="r" mZ80="LD HL,(t)" />
<op code="ED7Btltm" clocks="20" flags="--------" bus="r" mZ80="LD SP,(t)" />
<op code="DD2Atltm" clocks="20" flags="--------" bus="r" mZ80="LD IX,(t)" />
<op code="FD2Atltm" clocks="20" flags="--------" bus="r" mZ80="LD IY,(t)" />
<op code="22tltm" clocks="16" flags="--------" bus="w" mZ80="LD (t),HL" m8080="SHLD t" />
<op code="ED43tltm" clocks="20" flags="--------" bus="w" mZ80="LD (t),BC" />
<op code="ED53tltm" clocks="20" flags="--------" bus="w" mZ80="LD (t),DE" />
<op code="DD22tltm" clocks="20" flags="--------" bus="w" mZ80="LD (t),IX" />
<op code="FD22tltm" clocks="20" flags="--------" bus="w" mZ80="LD (t),IY" />
<op code="ED73tltm" clocks="20" flags="--------" bus="w" mZ80="LD (t),SP" />
<op code="F9" clocks="6" flags="--------" mZ80="LD SP,HL" m8080="SPHL" />
<op code="DDF9" clocks="10" flags="--------" mZ80="LD SP,IX" />
<op code="FDF9" clocks="10" flags="--------" mZ80="LD SP,IY" />
<op code="ED47" clocks="9" flags="--------" mZ80="LD I,A" />
<op code="ED57" clocks="9" flags="sz-0-i0-" mZ80="LD A,I" />
<op code="ED4F" clocks="9" flags="--------" mZ80="LD R,A" />
<op code="ED5F" clocks="9" flags="sz-0-i0-" mZ80="LD A,R" />
<op code="EDA8" clocks="16" flags="---0-y0-" bus="rw" mZ80="LDD" />
<op code="EDA0" clocks="16" flags="---0-y0-" bus="rw" mZ80="LDI" />
<op code="ED44" clocks="8" flags="sz-u-v1c" mZ80="NEG" />
<op code="00" clocks="4" flags="--------" mZ80="NOP" m8080="NOP" />
<op code="D3oo" clocks="11" flags="--------" bus="o" mZ80="OUT (o),A" m8080="OUT o" mCish="PORT[o]=A"/>
<op code="ED79" clocks="12" flags="--------" bus="o" mZ80="OUT (C),A" />
<op code="ED41" clocks="12" flags="--------" bus="o" mZ80="OUT (C),B" />
<op code="ED49" clocks="12" flags="--------" bus="o" mZ80="OUT (C),C" />
<op code="ED51" clocks="12" flags="--------" bus="o" mZ80="OUT (C),D" />
<op code="ED59" clocks="12" flags="--------" bus="o" mZ80="OUT (C),E" />
<op code="ED61" clocks="12" flags="--------" bus="o" mZ80="OUT (C),H" />
<op code="ED69" clocks="12" flags="--------" bus="o" mZ80="OUT (C),L" />
<op code="CB87" clocks="8" flags="--------" mZ80="RES 0,A" />
<op code="CB80" clocks="8" flags="--------" mZ80="RES 0,B" />
<op code="CB81" clocks="8" flags="--------" mZ80="RES 0,C" />
<op code="CB82" clocks="8" flags="--------" mZ80="RES 0,D" />
<op code="CB83" clocks="8" flags="--------" mZ80="RES 0,E" />
<op code="CB84" clocks="8" flags="--------" mZ80="RES 0,H" />
<op code="CB85" clocks="8" flags="--------" mZ80="RES 0,L" />
<op code="CB8F" clocks="8" flags="--------" mZ80="RES 1,A" />
<op code="CB88" clocks="8" flags="--------" mZ80="RES 1,B" />
<op code="CB89" clocks="8" flags="--------" mZ80="RES 1,C" />
<op code="CB8A" clocks="8" flags="--------" mZ80="RES 1,D" />
<op code="CB8B" clocks="8" flags="--------" mZ80="RES 1,E" />
<op code="CB8C" clocks="8" flags="--------" mZ80="RES 1,H" />
<op code="CB8D" clocks="8" flags="--------" mZ80="RES 1,L" />
<op code="CB97" clocks="8" flags="--------" mZ80="RES 2,A" />
<op code="CB90" clocks="8" flags="--------" mZ80="RES 2,B" />
<op code="CB91" clocks="8" flags="--------" mZ80="RES 2,C" />
<op code="CB92" clocks="8" flags="--------" mZ80="RES 2,D" />
<op code="CB93" clocks="8" flags="--------" mZ80="RES 2,E" />
<op code="CB94" clocks="8" flags="--------" mZ80="RES 2,H" />
<op code="CB95" clocks="8" flags="--------" mZ80="RES 2,L" />
<op code="CB9F" clocks="8" flags="--------" mZ80="RES 3,A" />
<op code="CB98" clocks="8" flags="--------" mZ80="RES 3,B" />
<op code="CB99" clocks="8" flags="--------" mZ80="RES 3,C" />
<op code="CB9A" clocks="8" flags="--------" mZ80="RES 3,D" />
<op code="CB9B" clocks="8" flags="--------" mZ80="RES 3,E" />
<op code="CB9C" clocks="8" flags="--------" mZ80="RES 3,H" />
<op code="CB9D" clocks="8" flags="--------" mZ80="RES 3,L" />
<op code="CBA7" clocks="8" flags="--------" mZ80="RES 4,A" />
<op code="CBA0" clocks="8" flags="--------" mZ80="RES 4,B" />
<op code="CBA1" clocks="8" flags="--------" mZ80="RES 4,C" />
<op code="CBA2" clocks="8" flags="--------" mZ80="RES 4,D" />
<op code="CBA3" clocks="8" flags="--------" mZ80="RES 4,E" />
<op code="CBA4" clocks="8" flags="--------" mZ80="RES 4,H" />
<op code="CBA5" clocks="8" flags="--------" mZ80="RES 4,L" />
<op code="CBAF" clocks="8" flags="--------" mZ80="RES 5,A" />
<op code="CBA8" clocks="8" flags="--------" mZ80="RES 5,B" />
<op code="CBA9" clocks="8" flags="--------" mZ80="RES 5,C" />
<op code="CBAA" clocks="8" flags="--------" mZ80="RES 5,D" />
<op code="CBAB" clocks="8" flags="--------" mZ80="RES 5,E" />
<op code="CBAC" clocks="8" flags="--------" mZ80="RES 5,H" />
<op code="CBAD" clocks="8" flags="--------" mZ80="RES 5,L" />
<op code="CBB7" clocks="8" flags="--------" mZ80="RES 6,A" />
<op code="CBB0" clocks="8" flags="--------" mZ80="RES 6,B" />
<op code="CBB1" clocks="8" flags="--------" mZ80="RES 6,C" />
<op code="CBB2" clocks="8" flags="--------" mZ80="RES 6,D" />
<op code="CBB3" clocks="8" flags="--------" mZ80="RES 6,E" />
<op code="CBB4" clocks="8" flags="--------" mZ80="RES 6,H" />
<op code="CBB5" clocks="8" flags="--------" mZ80="RES 6,L" />
<op code="CBBF" clocks="8" flags="--------" mZ80="RES 7,A" />
<op code="CBB8" clocks="8" flags="--------" mZ80="RES 7,B" />
<op code="CBB9" clocks="8" flags="--------" mZ80="RES 7,C" />
<op code="CBBA" clocks="8" flags="--------" mZ80="RES 7,D" />
<op code="CBBB" clocks="8" flags="--------" mZ80="RES 7,E" />
<op code="CBBC" clocks="8" flags="--------" mZ80="RES 7,H" />
<op code="CBBD" clocks="8" flags="--------" mZ80="RES 7,L" />
<op code="CB86" clocks="15" flags="--------" bus="r" mZ80="RES 0,(HL)" />
<op code="CB8E" clocks="15" flags="--------" bus="r" mZ80="RES 1,(HL)" />
<op code="CB96" clocks="15" flags="--------" bus="r" mZ80="RES 2,(HL)" />
<op code="CB9E" clocks="15" flags="--------" bus="r" mZ80="RES 3,(HL)" />
<op code="CBA6" clocks="15" flags="--------" bus="r" mZ80="RES 4,(HL)" />
<op code="CBAE" clocks="15" flags="--------" bus="r" mZ80="RES 5,(HL)" />
<op code="CBB6" clocks="15" flags="--------" bus="r" mZ80="RES 6,(HL)" />
<op code="CBBE" clocks="15" flags="--------" bus="r" mZ80="RES 7,(HL)" />
<op code="DDCBii86" clocks="15" flags="--------" bus="r" mZ80="RES 0,(IX+i)" />
<op code="FDCBii86" clocks="15" flags="--------" bus="r" mZ80="RES 0,(IY+i)" />
<op code="DDCBii8E" clocks="15" flags="--------" bus="r" mZ80="RES 1,(IX+i)" />
<op code="FDCBii8E" clocks="15" flags="--------" bus="r" mZ80="RES 1,(IY+i)" />
<op code="DDCBii96" clocks="15" flags="--------" bus="r" mZ80="RES 2,(IX+i)" />
<op code="FDCBii96" clocks="15" flags="--------" bus="r" mZ80="RES 2,(IY+i)" />
<op code="DDCBii9E" clocks="15" flags="--------" bus="r" mZ80="RES 3,(IX+i)" />
<op code="FDCBii9E" clocks="15" flags="--------" bus="r" mZ80="RES 3,(IY+i)" />
<op code="DDCBiiA6" clocks="15" flags="--------" bus="r" mZ80="RES 4,(IX+i)" />
<op code="FDCBiiA6" clocks="15" flags="--------" bus="r" mZ80="RES 4,(IY+i)" />
<op code="DDCBiiAE" clocks="15" flags="--------" bus="r" mZ80="RES 5,(IX+i)" />
<op code="FDCBiiAE" clocks="15" flags="--------" bus="r" mZ80="RES 5,(IY+i)" />
<op code="DDCBiiB6" clocks="15" flags="--------" bus="r" mZ80="RES 6,(IX+i)" />
<op code="FDCBiiB6" clocks="15" flags="--------" bus="r" mZ80="RES 6,(IY+i)" />
<op code="DDCBiiBE" clocks="15" flags="--------" bus="r" mZ80="RES 7,(IX+i)" />
<op code="FDCBiiBE" clocks="15" flags="--------" bus="r" mZ80="RES 7,(IY+i)" />
<op code="CBC7" clocks="8" flags="--------" mZ80="SET 0,A" />
<op code="CBC0" clocks="8" flags="--------" mZ80="SET 0,B" />
<op code="CBC1" clocks="8" flags="--------" mZ80="SET 0,C" />
<op code="CBC2" clocks="8" flags="--------" mZ80="SET 0,D" />
<op code="CBC3" clocks="8" flags="--------" mZ80="SET 0,E" />
<op code="CBC4" clocks="8" flags="--------" mZ80="SET 0,H" />
<op code="CBC5" clocks="8" flags="--------" mZ80="SET 0,L" />
<op code="CBCF" clocks="8" flags="--------" mZ80="SET 1,A" />
<op code="CBC8" clocks="8" flags="--------" mZ80="SET 1,B" />
<op code="CBC9" clocks="8" flags="--------" mZ80="SET 1,C" />
<op code="CBCA" clocks="8" flags="--------" mZ80="SET 1,D" />
<op code="CBCB" clocks="8" flags="--------" mZ80="SET 1,E" />
<op code="CBCC" clocks="8" flags="--------" mZ80="SET 1,H" />
<op code="CBCD" clocks="8" flags="--------" mZ80="SET 1,L" />
<op code="CBD7" clocks="8" flags="--------" mZ80="SET 2,A" />
<op code="CBD0" clocks="8" flags="--------" mZ80="SET 2,B" />
<op code="CBD1" clocks="8" flags="--------" mZ80="SET 2,C" />
<op code="CBD2" clocks="8" flags="--------" mZ80="SET 2,D" />
<op code="CBD3" clocks="8" flags="--------" mZ80="SET 2,E" />
<op code="CBD4" clocks="8" flags="--------" mZ80="SET 2,H" />
<op code="CBD5" clocks="8" flags="--------" mZ80="SET 2,L" />
<op code="CBDF" clocks="8" flags="--------" mZ80="SET 3,A" />
<op code="CBD8" clocks="8" flags="--------" mZ80="SET 3,B" />
<op code="CBD9" clocks="8" flags="--------" mZ80="SET 3,C" />
<op code="CBDA" clocks="8" flags="--------" mZ80="SET 3,D" />
<op code="CBDB" clocks="8" flags="--------" mZ80="SET 3,E" />
<op code="CBDC" clocks="8" flags="--------" mZ80="SET 3,H" />
<op code="CBDD" clocks="8" flags="--------" mZ80="SET 3,L" />
<op code="CBE7" clocks="8" flags="--------" mZ80="SET 4,A" />
<op code="CBE0" clocks="8" flags="--------" mZ80="SET 4,B" />
<op code="CBE1" clocks="8" flags="--------" mZ80="SET 4,C" />
<op code="CBE2" clocks="8" flags="--------" mZ80="SET 4,D" />
<op code="CBE3" clocks="8" flags="--------" mZ80="SET 4,E" />
<op code="CBE4" clocks="8" flags="--------" mZ80="SET 4,H" />
<op code="CBE5" clocks="8" flags="--------" mZ80="SET 4,L" />
<op code="CBEF" clocks="8" flags="--------" mZ80="SET 5,A" />
<op code="CBE8" clocks="8" flags="--------" mZ80="SET 5,B" />
<op code="CBE9" clocks="8" flags="--------" mZ80="SET 5,C" />
<op code="CBEA" clocks="8" flags="--------" mZ80="SET 5,D" />
<op code="CBEB" clocks="8" flags="--------" mZ80="SET 5,E" />
<op code="CBEC" clocks="8" flags="--------" mZ80="SET 5,H" />
<op code="CBED" clocks="8" flags="--------" mZ80="SET 5,L" />
<op code="CBF7" clocks="8" flags="--------" mZ80="SET 6,A" />
<op code="CBF0" clocks="8" flags="--------" mZ80="SET 6,B" />
<op code="CBF1" clocks="8" flags="--------" mZ80="SET 6,C" />
<op code="CBF2" clocks="8" flags="--------" mZ80="SET 6,D" />
<op code="CBF3" clocks="8" flags="--------" mZ80="SET 6,E" />
<op code="CBF4" clocks="8" flags="--------" mZ80="SET 6,H" />
<op code="CBF5" clocks="8" flags="--------" mZ80="SET 6,L" />
<op code="CBFF" clocks="8" flags="--------" mZ80="SET 7,A" />
<op code="CBF8" clocks="8" flags="--------" mZ80="SET 7,B" />
<op code="CBF9" clocks="8" flags="--------" mZ80="SET 7,C" />
<op code="CBFA" clocks="8" flags="--------" mZ80="SET 7,D" />
<op code="CBFB" clocks="8" flags="--------" mZ80="SET 7,E" />
<op code="CBFC" clocks="8" flags="--------" mZ80="SET 7,H" />
<op code="CBFD" clocks="8" flags="--------" mZ80="SET 7,L" />
<op code="CBC6" clocks="15" flags="--------" bus="r" mZ80="SET 0,(HL)" />
<op code="CBCE" clocks="15" flags="--------" bus="r" mZ80="SET 1,(HL)" />
<op code="CBD6" clocks="15" flags="--------" bus="r" mZ80="SET 2,(HL)" />
<op code="CBDE" clocks="15" flags="--------" bus="r" mZ80="SET 3,(HL)" />
<op code="CBE6" clocks="15" flags="--------" bus="r" mZ80="SET 4,(HL)" />
<op code="CBEE" clocks="15" flags="--------" bus="r" mZ80="SET 5,(HL)" />
<op code="CBF6" clocks="15" flags="--------" bus="r" mZ80="SET 6,(HL)" />
<op code="CBFE" clocks="15" flags="--------" bus="r" mZ80="SET 7,(HL)" />
<op code="DDCBiiC6" clocks="23" flags="--------" bus="r" mZ80="SET 0,(IX+i)" />
<op code="FDCBiiC6" clocks="23" flags="--------" bus="r" mZ80="SET 0,(IY+i)" />
<op code="DDCBiiCE" clocks="23" flags="--------" bus="r" mZ80="SET 1,(IX+i)" />
<op code="FDCBiiCE" clocks="23" flags="--------" bus="r" mZ80="SET 1,(IY+i)" />
<op code="DDCBiiD6" clocks="23" flags="--------" bus="r" mZ80="SET 2,(IX+i)" />
<op code="FDCBiiD6" clocks="23" flags="--------" bus="r" mZ80="SET 2,(IY+i)" />
<op code="DDCBiiDE" clocks="23" flags="--------" bus="r" mZ80="SET 3,(IX+i)" />
<op code="FDCBiiDE" clocks="23" flags="--------" bus="r" mZ80="SET 3,(IY+i)" />
<op code="DDCBiiE6" clocks="23" flags="--------" bus="r" mZ80="SET 4,(IX+i)" />
<op code="FDCBiiE6" clocks="23" flags="--------" bus="r" mZ80="SET 4,(IY+i)" />
<op code="DDCBiiEE" clocks="23" flags="--------" bus="r" mZ80="SET 5,(IX+i)" />
<op code="FDCBiiEE" clocks="23" flags="--------" bus="r" mZ80="SET 5,(IY+i)" />
<op code="DDCBiiF6" clocks="23" flags="--------" bus="r" mZ80="SET 6,(IX+i)" />
<op code="FDCBiiF6" clocks="23" flags="--------" bus="r" mZ80="SET 6,(IY+i)" />
<op code="DDCBiiFE" clocks="23" flags="--------" bus="r" mZ80="SET 7,(IX+i)" />
<op code="FDCBiiFE" clocks="23" flags="--------" bus="r" mZ80="SET 7,(IY+i)" />
<op code="C9" clocks="10" flags="--------" mZ80="RET" m8080="RET" mCish="RETURN"/>
<op code="C1" clocks="10" flags="--------" bus="r" mZ80="POP BC" m8080="POP B" />
<op code="D1" clocks="10" flags="--------" bus="r" mZ80="POP DE" m8080="POP D" />
<op code="E1" clocks="10" flags="--------" bus="r" mZ80="POP HL" m8080="POP H" />
<op code="F1" clocks="10" flags="xxxxxxxx" bus="r" mZ80="POP AF" m8080="POP PSW" />
<op code="DDE1" clocks="14" flags="--------" bus="r" mZ80="POP IX" />
<op code="FDE1" clocks="14" flags="--------" bus="r" mZ80="POP IY" />
<op code="C5" clocks="11" flags="--------" bus="w" mZ80="PUSH BC" m8080="PUSH B" />
<op code="D5" clocks="11" flags="--------" bus="w" mZ80="PUSH DE" m8080="PUSH D" />
<op code="E5" clocks="11" flags="--------" bus="w" mZ80="PUSH HL" m8080="PUSH H" />
<op code="F5" clocks="11" flags="--------" bus="w" mZ80="PUSH AF" m8080="PUSH PSW" />
<op code="DDE5" clocks="15" flags="--------" bus="w" mZ80="PUSH IX" />
<op code="FDE5" clocks="15" flags="--------" bus="w" mZ80="PUSH IY" />
<op code="C0" clocks="11/5" flags="--------" mZ80="RET NZ" m8080="RNZ" />
<op code="C8" clocks="11/5" flags="--------" mZ80="RET Z" m8080="RZ" />
<op code="D0" clocks="11/5" flags="--------" mZ80="RET NC" m8080="RNC" />
<op code="D8" clocks="11/5" flags="--------" mZ80="RET C" m8080="RC" />
<op code="E0" clocks="11/5" flags="--------" mZ80="RET PO" m8080="RPO" />
<op code="E8" clocks="11/5" flags="--------" mZ80="RET PE" m8080="RPE" />
<op code="F0" clocks="11/5" flags="--------" mZ80="RET P" m8080="RP" />
<op code="F8" clocks="11/5" flags="--------" mZ80="RET M" m8080="RM" />
<op code="CB17" clocks="8" flags="sz-0-p0x" mZ80="RL A" />
<op code="CB10" clocks="8" flags="sz-0-p0x" mZ80="RL B" />
<op code="CB11" clocks="8" flags="sz-0-p0x" mZ80="RL C" />
<op code="CB12" clocks="8" flags="sz-0-p0x" mZ80="RL D" />
<op code="CB13" clocks="8" flags="sz-0-p0x" mZ80="RL E" />
<op code="CB14" clocks="8" flags="sz-0-p0x" mZ80="RL H" />
<op code="CB15" clocks="8" flags="sz-0-p0x" mZ80="RL L" />
<op code="CB16" clocks="15" flags="sz-0-p0x" bus="rw" mZ80="RL (HL)" />
<op code="DDCBii16" clocks="23" flags="sz-0-p0x" bus="rw" mZ80="RL (IX+i)" />
<op code="FDCBii16" clocks="23" flags="sz-0-p0x" bus="rw" mZ80="RL (IY+i)" />
<op code="17" clocks="4" flags="---0--0x" mZ80="RLA" m8080="RAL" />
<op code="CB07" clocks="8" flags="sz-0-p0x" mZ80="RLC A" />
<op code="CB00" clocks="8" flags="sz-0-p0x" mZ80="RLC B" />
<op code="CB01" clocks="8" flags="sz-0-p0x" mZ80="RLC C" />
<op code="CB02" clocks="8" flags="sz-0-p0x" mZ80="RLC D" />
<op code="CB03" clocks="8" flags="sz-0-p0x" mZ80="RLC E" />
<op code="CB04" clocks="8" flags="sz-0-p0x" mZ80="RLC H" />
<op code="CB05" clocks="8" flags="sz-0-p0x" mZ80="RLC L" />
<op code="CB06" clocks="15" flags="sz-0-p0x" bus="rw" mZ80="RLC (HL)" />
<op code="DDCBii06" clocks="23" flags="sz-0-p0x" bus="rw" mZ80="RLC (IX+i)" />
<op code="FDCBii06" clocks="23" flags="sz-0-p0x" bus="rw" mZ80="RLC (IY+i)" />
<op code="07" clocks="4" flags="---0--0x" mZ80="RLCA" m8080="RLC" />
<op code="CB1F" clocks="8" flags="sz-0-p0x" mZ80="RR A" />
<op code="CB18" clocks="8" flags="sz-0-p0x" mZ80="RR B" />
<op code="CB19" clocks="8" flags="sz-0-p0x" mZ80="RR C" />
<op code="CB1A" clocks="8" flags="sz-0-p0x" mZ80="RR D" />
<op code="CB1B" clocks="8" flags="sz-0-p0x" mZ80="RR E" />
<op code="CB1C" clocks="8" flags="sz-0-p0x" mZ80="RR H" />
<op code="CB1D" clocks="8" flags="sz-0-p0x" mZ80="RR L" />
<op code="CB1E" clocks="15" flags="sz-0-p0x" mZ80="RR (HL)" />
<op code="DDCBii1E" clocks="23" flags="sz-0-p0x" mZ80="RR (IX+i)" />
<op code="FDCBii1E" clocks="23" flags="sz-0-p0x" mZ80="RR (IY+i)" />
<op code="1F" clocks="4" flags="---0--0x" mZ80="RRA" m8080="RAR" />
<op code="CB0F" clocks="8" flags="sz-0-p0x" mZ80="RRC A" />
<op code="CB08" clocks="8" flags="sz-0-p0x" mZ80="RRC B" />
<op code="CB09" clocks="8" flags="sz-0-p0x" mZ80="RRC C" />
<op code="CB0A" clocks="8" flags="sz-0-p0x" mZ80="RRC D" />
<op code="CB0B" clocks="8" flags="sz-0-p0x" mZ80="RRC E" />
<op code="CB0C" clocks="8" flags="sz-0-p0x" mZ80="RRC H" />
<op code="CB0D" clocks="8" flags="sz-0-p0x" mZ80="RRC L" />
<op code="CB0E" clocks="15" flags="sz-0-p0x" bus="rw" mZ80="RRC (HL)" />
<op code="DDCBii0E" clocks="23" flags="sz-0-p0x" bus="rw" mZ80="RRC (IX+i)" />
<op code="FDCBii0E" clocks="23" flags="sz-0-p0x" bus="rw" mZ80="RRC (IY+i)" />
<op code="0F" clocks="4" flags="---0--0x" mZ80="RRCA" m8080="RRC" />
<op code="CB27" clocks="8" flags="sz-0-p0x" mZ80="SLA A" />
<op code="CB20" clocks="8" flags="sz-0-p0x" mZ80="SLA B" />
<op code="CB21" clocks="8" flags="sz-0-p0x" mZ80="SLA C" />
<op code="CB22" clocks="8" flags="sz-0-p0x" mZ80="SLA D" />
<op code="CB23" clocks="8" flags="sz-0-p0x" mZ80="SLA E" />
<op code="CB24" clocks="8" flags="sz-0-p0x" mZ80="SLA H" />
<op code="CB25" clocks="8" flags="sz-0-p0x" mZ80="SLA L" />
<op code="CB26" clocks="15" flags="sz-0-p0x" bus="rw" mZ80="SLA (HL)" />
<op code="DDCBii26" clocks="23" flags="sz-0-p0x" bus="rw" mZ80="SLA (IX+i)" />
<op code="FDCBii26" clocks="23" flags="sz-0-p0x" bus="rw" mZ80="SLA (IY+i)" />
<op code="CB2F" clocks="8" flags="sz-0-p0x" mZ80="SRA A" />
<op code="CB28" clocks="8" flags="sz-0-p0x" mZ80="SRA B" />
<op code="CB29" clocks="8" flags="sz-0-p0x" mZ80="SRA C" />
<op code="CB2A" clocks="8" flags="sz-0-p0x" mZ80="SRA D" />
<op code="CB2B" clocks="8" flags="sz-0-p0x" mZ80="SRA E" />
<op code="CB2C" clocks="8" flags="sz-0-p0x" mZ80="SRA H" />
<op code="CB2D" clocks="8" flags="sz-0-p0x" mZ80="SRA L" />
<op code="CB2E" clocks="15" flags="sz-0-p0x" bus="rw" mZ80="SRA (HL)" />
<op code="DDCBii2E" clocks="23" flags="sz-0-p0x" bus="rw" mZ80="SRA (IX+i)" />
<op code="FDCBii2E" clocks="23" flags="sz-0-p0x" bus="rw" mZ80="SRA (IY+i)" />
<op code="CB3F" clocks="8" flags="sz-0-p0x" mZ80="SRL A" />
<op code="CB38" clocks="8" flags="sz-0-p0x" mZ80="SRL B" />
<op code="CB39" clocks="8" flags="sz-0-p0x" mZ80="SRL C" />
<op code="CB3A" clocks="8" flags="sz-0-p0x" mZ80="SRL D" />
<op code="CB3B" clocks="8" flags="sz-0-p0x" mZ80="SRL E" />
<op code="CB3C" clocks="8" flags="sz-0-p0x" mZ80="SRL H" />
<op code="CB3D" clocks="8" flags="sz-0-p0x" mZ80="SRL L" />
<op code="CB3E" clocks="15" flags="sz-0-p0x" bus="rw" mZ80="SRL (HL)" />
<op code="DDCBii3E" clocks="23" flags="sz-0-p0x" bus="rw" mZ80="SRL (IX+i)" />
<op code="FDCBii3E" clocks="23" flags="sz-0-p0x" bus="rw" mZ80="SRL (IY+i)" />
<op code="C7" clocks="11" flags="--------" mZ80="RST $00" m8080="RST 0" />
<op code="CF" clocks="11" flags="--------" mZ80="RST $08" m8080="RST 1" />
<op code="D7" clocks="11" flags="--------" mZ80="RST $10" m8080="RST 2" />
<op code="DF" clocks="11" flags="--------" mZ80="RST $18" m8080="RST 3" />
<op code="E7" clocks="11" flags="--------" mZ80="RST $20" m8080="RST 4" />
<op code="EF" clocks="11" flags="--------" mZ80="RST $28" m8080="RST 5" />
<op code="F7" clocks="11" flags="--------" mZ80="RST $30" m8080="RST 6" />
<op code="FF" clocks="11" flags="--------" mZ80="RST $38" m8080="RST 7" />
<op code="37" clocks="4" flags="---0--01" mZ80="SCF" m8080="STC" />
<op code="9F" clocks="4" flags="sz-u-v1b" mZ80="SBC A" m8080="SBB A" />
<op code="98" clocks="4" flags="sz-u-v1b" mZ80="SBC B" m8080="SBB B" />
<op code="99" clocks="4" flags="sz-u-v1b" mZ80="SBC C" m8080="SBB C" />
<op code="9A" clocks="4" flags="sz-u-v1b" mZ80="SBC D" m8080="SBB D" />
<op code="9B" clocks="4" flags="sz-u-v1b" mZ80="SBC E" m8080="SBB E" />
<op code="9C" clocks="4" flags="sz-u-v1b" mZ80="SBC H" m8080="SBB H" />
<op code="9D" clocks="4" flags="sz-u-v1b" mZ80="SBC L" m8080="SBB L" />
<op code="9E" clocks="7" flags="sz-u-v1b" bus="r" mZ80="SBC (HL)" m8080="SBB M" />
<op code="DD9Eii" clocks="19" flags="sz-u-v1b*" bus="r" mZ80="SBC A,(IX+i)" />
<op code="FD9Eii" clocks="19" flags="sz-u-v1b" bus="r" mZ80="SBC A,(IY+i)" />
<op code="DEbb" clocks="7" flags="sz-u-v1b" mZ80="SBC A,b" m8080="SBI b" />
<op code="ED42" clocks="15" flags="sz-U-v1b" mZ80="SBC HL,BC" />
<op code="ED52" clocks="15" flags="sz-U-v1b" mZ80="SBC HL,DE" />
<op code="ED62" clocks="15" flags="sz-U-v1b" mZ80="SBC HL,HL" />
<op code="ED72" clocks="15" flags="sz-U-v1b" mZ80="SBC HL,SP" />
<op code="97" clocks="4" flags="sz-u-v1b" mZ80="SUB A" m8080="SUB A" />
<op code="90" clocks="4" flags="sz-u-v1b" mZ80="SUB B" m8080="SUB B" />
<op code="91" clocks="4" flags="sz-u-v1b" mZ80="SUB C" m8080="SUB C" />
<op code="92" clocks="4" flags="sz-u-v1b" mZ80="SUB D" m8080="SUB D" />
<op code="93" clocks="4" flags="sz-u-v1b" mZ80="SUB E" m8080="SUB E" />
<op code="94" clocks="4" flags="sz-u-v1b" mZ80="SUB H" m8080="SUB H" />
<op code="95" clocks="4" flags="sz-u-v1b" mZ80="SUB L" m8080="SUB L" />
<op code="96" clocks="7" flags="sz-u-v1b" bus="r" mZ80="SUB (HL)" m8080="SUB M" />
<op code="DD96ii" clocks="19" flags="sz-u-v1b" bus="r" mZ80="SUB (IX+i)" />
<op code="FD96ii" clocks="19" flags="sz-u-v1b" bus="r" mZ80="SUB (IY+i)" />
<op code="D6bb" clocks="7" flags="sz-u-v1b" mZ80="SUB b" m8080="SUI b" />
<!-- Undocumented opcodes ... added as I run into code that uses them -->
<op code="DD0A" mZ80="LD A,(BC)" />
<op code="DD1B" mZ80="DEC DE" />
<op code="DD26bb" mZ80="LD IXH,b" />
<op code="DD2C" mZ80="INC IXL" />
<op code="DD2D" mZ80="DEC IXL" />
<op code="DD2Ebb" mZ80="LD IXL,b" />
<op code="DD4C" mZ80="LD C,IXH" />
<op code="DD54" mZ80="LD D,IXH" />
<op code="DD5D" mZ80="LD E,IXL" />
<op code="DD60" mZ80="LD IXH,B" />
<op code="DD61" mZ80="LD IXH,C" />
<op code="DD62" mZ80="LD IXH,D" />
<op code="DD63" mZ80="LD IXH,E" />
<op code="DD67" mZ80="LD IXH,A" />
<op code="DD7C" mZ80="LD A,IXH" />
<op code="DD84" mZ80="ADD A,IXH" />
<op code="DD94" mZ80="SUB IXH" />
<op code="DD95" mZ80="SUB IXL" />
<op code="DDAC" mZ80="XOR IXH" />
<op code="FD0B" mZ80="DEC BC" />
<op code="FD1B" mZ80="DEC DE" />
<op code="FDFB" mZ80="EI" />
<op code="FD6B" mZ80="LD IYL,E" />
<op code="FD7C" mZ80="LD A,IYH" />
<op code="FD7D" mZ80="LD A,IYL" />
<op code="FD20rr" mZ80="JR NZ,r" />
<op code="FD25" mZ80="DEC IYH" />
<op code="FD48" mZ80="LD C,B" />
<op code="FD63" mZ80="LD IYH,E" />
<op code="FDAC" mZ80="XOR IYH" />
<op code="FDCCmlmm" mZ80="CALL Z,m" />
<op code="FDD8" mZ80="RET C" />
</opcodes>
</ProcessorFamily>
<?xml version="1.0" encoding="UTF-8"?>
<ProcessorFamily name="650x" endian="little">
<printSpacing>
<set name="6502" dataFieldSize="10" mnemonicFieldSize="20"/>
<set name="65C02" dataFieldSize="10" mnemonicFieldSize="20"/>
<set name="65C816" dataFieldSize="10" mnemonicFieldSize="20"/>
<set name="Cish" dataFieldSize="10" mnemonicFieldSize="20"/>
</printSpacing>
<processors>
<processor name="6502" />
<processor name="65C02" />
<processor name="65C816" />
</processors>
<blends jump="JMP $DEST$">
<!-- CARRY and BORROW are the same flag, but in this family C=0 means borrow -->
<!-- Simple one-flag tests. These have equally-short alternate forms -->
<blend left="A" op="==" right="*" branchPass="CMP $RIGHT$;BEQ $PASS$" branchFail="CMP $RIGHT$;BNE $FAIL$"/>
<blend left="A" op="!=" right="*" branchPass="CMP $RIGHT$;BNE $PASS$" branchFail="CMP $RIGHT$;BEQ $FAIL$"/>
<blend left="A" op="<" right="*" branchPass="CMP $RIGHT$;BCC $PASS$" branchFail="CMP $RIGHT$;BCS $FAIL$"/>
<blend left="A" op=">=" right="*" branchPass="CMP $RIGHT$;BCS $PASS$" branchFail="CMP $RIGHT$;BCC $FAIL$" />
<blend left="X" op="==" right="*" branchPass="CPX $RIGHT$;BEQ $PASS$" branchFail="CPX $RIGHT$;BNE $FAIL$"/>
<blend left="X" op="!=" right="*" branchPass="CPX $RIGHT$;BNE $PASS$" branchFail="CPX $RIGHT$;BEQ $FAIL$"/>
<blend left="X" op="<" right="*" branchPass="CPX $RIGHT$;BCC $PASS$" branchFail="CPX $RIGHT$;BCS $FAIL$"/>
<blend left="X" op=">=" right="*" branchPass="CPX $RIGHT$;BCS $PASS$" branchFail="CPX $RIGHT$;BCC $FAIL$" />
<blend left="Y" op="==" right="*" branchPass="CPY $RIGHT$;BEQ $PASS$" branchFail="CPY $RIGHT$;BNE $FAIL$"/>
<blend left="Y" op="!=" right="*" branchPass="CPY $RIGHT$;BNE $PASS$" branchFail="CPY $RIGHT$;BEQ $FAIL$"/>
<blend left="Y" op="<" right="*" branchPass="CPY $RIGHT$;BCC $PASS$" branchFail="CPY $RIGHT$;BCS $FAIL$"/>
<blend left="Y" op=">=" right="*" branchPass="CPY $RIGHT$;BCS $PASS$" branchFail="CPY $RIGHT$;BCC $FAIL$" />
<!-- These can't be tested with one flag ... the alternate form is needlessly complicated -->
<blend left="A" op=">" right="*" branchFail="CMP $RIGHT$;BEQ $FAIL$;BCC $FAIL$" />
<blend left="A" op="<=" right="*" branchPass="CMP $RIGHT$;BEQ $PASS$;BCC $PASS$" />
<blend left="X" op=">" right="*" branchFail="CPX $RIGHT$;BEQ $FAIL$;BCC $FAIL$" />
<blend left="X" op="<=" right="*" branchPass="CPX $RIGHT$;BEQ $PASS$;BCC $PASS$" />
<blend left="Y" op=">" right="*" branchFail="CPY $RIGHT$;BEQ $FAIL$;BCC $FAIL$" />
<blend left="Y" op="<=" right="*" branchPass="CPY $RIGHT$;BEQ $PASS$;BCC $PASS$" />
<!-- No operation ... just use the existing flags -->
<blend left="ZERO" op="" right="" branchPass="BEQ $PASS$" branchFail="BNE $FAIL$"/>
<blend left="NOT_ZERO" op="" right="" branchPass="BNE $PASS$" branchFail="BEQ $FAIL$"/>
<blend left="CARRY" op="" right="" branchPass="BCS $PASS$" branchFail="BCC $FAIL$"/>
<blend left="NOT_BORROW" op="" right="" branchPass="BCS $PASS$" branchFail="BCC $FAIL$"/>
<blend left="NOT_CARRY" op="" right="" branchPass="BCC $PASS$" branchFail="BCS $FAIL$"/>
<blend left="BORROW" op="" right="" branchPass="BCC $PASS$" branchFail="BCS $FAIL$"/>
<!-- TRUE and FALSE -->
<blend left="true" op="" right="" branchPass="JMP $PASS$" branchFail=""/>
<blend left="false" op="" right="" branchPass="" branchFail="JMP $FAIL$"/>
</blends>
<opcodes>
<op m6502="BRK" m65C02="BRK" m65C816="BRK" code="00" clocks="7" flags="-------" />
<op m6502="ORA (p,X)" m65C02="ORA (p,X)" m65C816="ORA (p,X)" code="01pp" clocks="6" flags="-------" bus="r" mCish="A = A | BYTE[WORD[>p+X]]"/>
<op m65C816="COP b" code="02" clocks="" flags="-------" />
<op m65C816="ORA d,S" code="03" clocks="" flags="-------" />
<op m65C02="TSB d" m65C816="TSB d" code="04" clocks="" flags="-------" />
<op m6502="ORA >p" m65C02="ORA >p" m65C816="ORA >p" code="05pp" clocks="3" flags="-------" bus="r" mCish="A = A | BYTE[>p]"/>
<op m6502="ASL >p" m65C02="ASL >p" m65C816="ASL >p" code="06pp" clocks="5" flags="-------" bus="r" />
<op m65C816="ORA [d]" code="07" clocks="" flags="-------" />
<op m6502="PHP" m65C02="PHP" m65C816="PHP" code="08" clocks="3" flags="-------" bus="w" />
<op m6502="ORA #b" m65C02="ORA #b" m65C816="ORA #b" code="09bb" clocks="2" flags="-------" mCish="A = A | b"/>
<op m6502="ASL A" m65C02="ASL A" m65C816="ASL A" code="0A" clocks="2" flags="-------" />
<op m65C816="PHD" code="0B" clocks="" flags="-------" />
<op m65C02="TSB a" m65C816="TSB a" code="0C" clocks="" flags="-------" />
<op m6502="ORA t" m65C02="ORA t" m65C816="ORA t" code="0Dtltm" clocks="4" flags="-------" bus="r" mCish="A = A | BYTE[t]"/>
<op m6502="ASL t" m65C02="ASL t" m65C816="ASL t" code="0Etltm" clocks="6" flags="-------" bus="r" />
<op m65C816="ORA al" code="0F" clocks="" flags="-------" />
<op m6502="BPL r" m65C02="BPL r" m65C816="BPL r" code="10rr" clocks="2/3/4" flags="-------" />
<op m6502="ORA (p),Y" m65C02="ORA (p),Y" m65C816="ORA (p),Y" code="11pp" clocks="5" flags="-------" bus="r" mCish="A = A | BYTE[WORD[>p]+Y]"/>
<op m65C02="ORA (d)" m65C816="ORA (d)" code="12" clocks="" flags="-------" />
<op m65C816="ORA (d,S),Y" code="13" clocks="" flags="-------" />
<op m65C02="TRB d" m65C816="TRB d" code="14" clocks="" flags="-------" />
<op m6502="ORA p,X" m65C02="ORA p,X" m65C816="ORA p,X" code="15pp" clocks="4" flags="-------" bus="r" mCish="A = A | BYTE[>p+X]"/>
<op m6502="ASL p,X" m65C02="ASL p,X" m65C816="ASL p,X" code="16pp" clocks="6" flags="-------" bus="r" />
<op m65C816="ORA [d],Y" code="17" clocks="" flags="-------" />
<op m6502="CLC" m65C02="CLC" m65C816="CLC" code="18" clocks="2" flags="-------" mCish="CARRY = 0"/>
<op m6502="ORA t,Y" m65C02="ORA t,Y" m65C816="ORA t,Y" code="19tltm" clocks="4" flags="-------" bus="r" mCish="A = A | BYTE[t+Y]"/>
<op m65C02="INC A" m65C816="INC A" code="1A" clocks="" flags="-------" />
<op m65C816="TCS" code="1B" clocks="" flags="-------" />
<op m65C02="TRB a" m65C816="TRB a" code="1C" clocks="" flags="-------" />
<op m6502="ORA t,X" m65C02="ORA t,X" m65C816="ORA t,X" code="1Dtltm" clocks="4" flags="-------" bus="r" mCish="A = A | BYTE[t+X]"/>
<op m6502="ASL t,X" m65C02="ASL t,X" m65C816="ASL t,X" code="1Etltm" clocks="7" flags="-------" bus="r" />
<op m65C816="ORA al,X" code="1F" clocks="" flags="-------" />
<op m6502="JSR t" m65C02="JSR t" m65C816="JSR t" code="20tltm" clocks="6" flags="-------" mCish="t()"/>
<op m6502="AND (p,X)" m65C02="AND (p,X)" m65C816="AND (p,X)" code="21pp" clocks="6" flags="-------" bus="r" mCish="A = A & BYTE[WORD[>p+X]]"/>
<op m65C816="JSL al" code="22" clocks="" flags="-------" />
<op m65C816="AND d,S" code="23" clocks="" flags="-------" />
<op m6502="BIT >p" m65C02="BIT >p" m65C816="BIT >p" code="24pp" clocks="3" flags="-------" bus="r" mCish="A & BYTE[>p]"/>
<op m6502="AND >p" m65C02="AND >p" m65C816="AND >p" code="25pp" clocks="3" flags="-------" bus="r" mCish="A = A & BYTE[>p]"/>
<op m6502="ROL >p" m65C02="ROL >p" m65C816="ROL >p" code="26pp" clocks="5" flags="-------" bus="rw" />
<op m65C816="AND [d]" code="27" clocks="" flags="-------" />
<op m6502="PLP" m65C02="PLP" m65C816="PLP" code="28" clocks="4" flags="-------" bus="r" />
<op m6502="AND #b" m65C02="AND #b" m65C816="AND #b" code="29bb" clocks="2" flags="-------" mCish="A = A & b"/>
<op m6502="ROL A" m65C02="ROL A" m65C816="ROL A" code="2A" clocks="2" flags="-------" />
<op m65C816="PLD" code="2B" clocks="" flags="-------" />
<op m6502="BIT t" m65C02="BIT t" m65C816="BIT t" code="2Ctltm" clocks="4" flags="-------" bus="r" mCish="A & BYTE[t]"/>
<op m6502="AND t" m65C02="AND t" m65C816="AND t" code="2Dtltm" clocks="4" flags="-------" bus="r" mCish="A = A & BYTE[t]"/>
<op m6502="ROL t" m65C02="ROL t" m65C816="ROL t" code="2Etltm" clocks="6" flags="-------" bus="r" />
<op m65C816="AND al" code="2F" clocks="" flags="-------" />
<op m6502="BMI r" m65C02="BMI r" m65C816="BMI r" code="30rr" clocks="2/3/4" flags="-------" />
<op m6502="AND (p),Y" m65C02="AND (p),Y" m65C816="AND (p),Y" code="31pp" clocks="5" flags="-------" bus="r" mCish="A = A & BYTE[WORD[>p]+Y]"/>
<op m65C02="AND (d)" m65C816="AND (d)" code="32" clocks="" flags="-------" />
<op m65C816="AND (d,S),Y" code="33" clocks="" flags="-------" />
<op m65C02="BIT d,X" m65C816="BIT d,X" code="34" clocks="" flags="-------" />
<op m6502="AND p,X" m65C02="AND p,X" m65C816="AND p,X" code="35pp" clocks="4" flags="-------" bus="r" mCish="A = A & BYTE[>p+X]"/>
<op m6502="ROL p,X" m65C02="ROL p,X" m65C816="ROL p,X" code="36pp" clocks="6" flags="-------" bus="r" />
<op m65C816="AND [d],Y" code="37" clocks="" flags="-------" />
<op m6502="SEC" m65C02="SEC" m65C816="SEC" code="38" clocks="2" flags="-------" mCish="CARRY = 1"/>
<op m6502="AND t,Y" m65C02="AND t,Y" m65C816="AND t,Y" code="39tltm" clocks="4" flags="-------" bus="r" mCish="A = A & BYTE[t+Y]" />
<op m65C02="DEC A" m65C816="DEC A" code="3A" clocks="" flags="-------" />
<op m65C816="TSC" code="3B" clocks="" flags="-------" />
<op m65C02="BIT a,X" m65C816="BIT a,X" code="3C" clocks="" flags="-------" />
<op m6502="AND t,X" m65C02="AND t,X" m65C816="AND t,X" code="3Dtltm" clocks="4" flags="-------" bus="r" mCish="A = A & BYTE[t+X]"/>
<op m6502="ROL t,X" m65C02="ROL t,X" m65C816="ROL t,X" code="3Etltm" clocks="7" flags="-------" bus="rw" />
<op m65C816="AND al,X" code="3F" clocks="" flags="-------" />
<op m6502="RTI" m65C02="RTI" m65C816="RTI" code="40" clocks="6" flags="-------" />
<op m6502="EOR (p,X)" m65C02="EOR (p,X)" m65C816="EOR (p,X)" code="41pp" clocks="6" flags="-------" bus="r" mCish="A = A ^ BYTE[WORD[>p+X]]"/>
<op m65C816="WDM" code="42" clocks="" flags="-------" />
<op m65C816="EOR d,S" code="43" clocks="" flags="-------" />
<op m65C816="MVP s,d" code="44" clocks="" flags="-------" />
<op m6502="EOR >p" m65C02="EOR >p" m65C816="EOR >p" code="45pp" clocks="3" flags="-------" bus="r" mCish="A = A ^ BYTE[>p]"/>
<op m6502="LSR >p" m65C02="LSR >p" m65C816="LSR >p" code="46pp" clocks="5" flags="-------" bus="rw" />
<op m65C816="EOR [d]" code="47" clocks="" flags="-------" />
<op m6502="PHA" m65C02="PHA" m65C816="PHA" code="48" clocks="3" flags="-------" bus="w" />
<op m6502="EOR #b" m65C02="EOR #b" m65C816="EOR #b" code="49bb" clocks="2" flags="-------" mCish="A = A ^ b"/>
<op m6502="LSR A" m65C02="LSR A" m65C816="LSR A" code="4A" clocks="2" flags="-------" />
<op m65C816="PHK" code="4B" clocks="" flags="-------" />
<op m6502="JMP t" m65C02="JMP t" m65C816="JMP t" code="4Ctltm" clocks="3" flags="-------" mCish="GOTO t" />
<op m6502="EOR t" m65C02="EOR t" m65C816="EOR t" code="4Dtltm" clocks="4" flags="-------" mCish="A = A ^ BYTE[t]"/>
<op m6502="LSR t" m65C02="LSR t" m65C816="LSR t" code="4Etltm" clocks="6" flags="-------" />
<op m65C816="EOR al" code="4F" clocks="" flags="-------" />
<op m6502="BVC r" m65C02="BVC r" m65C816="BVC r" code="50rr" clocks="2/3/4" flags="-------" />
<op m6502="EOR (p),Y" m65C02="EOR (p),Y" m65C816="EOR (p),Y" code="51pp" clocks="5" flags="-------" bus="r" mCish="A = A ^ BYTE[WORD[>p]+Y]"/>
<op m65C02="EOR (d)" m65C816="EOR (d)" code="52" clocks="" flags="-------" />
<op m65C816="EOR (d,S),Y" code="53" clocks="" flags="-------" />
<op m65C816="MVN s,d" code="54" clocks="" flags="-------" />
<op m6502="EOR p,X" m65C02="EOR p,X" m65C816="EOR p,X" code="55pp" clocks="4" flags="-------" bus="r" mChish="A = A ^ BYTE[>p+X]"/>
<op m6502="LSR p,X" m65C02="LSR p,X" m65C816="LSR p,X" code="56pp" clocks="6" flags="-------" bus="rw" />
<op m65C816="EOR [d],Y" code="57" clocks="" flags="-------" />
<op m6502="CLI" m65C02="CLI" m65C816="CLI" code="58" clocks="2" flags="-------" />
<op m6502="EOR t,Y" m65C02="EOR t,Y" m65C816="EOR t,Y" code="59tltm" clocks="4" flags="-------" bus="r" mCish="A = A ^ BYTE[t+Y]"/>
<op m65C02="PHY" m65C816="PHY" code="5A" clocks="" flags="-------" />
<op m65C816="TCD" code="5B" clocks="" flags="-------" />
<op m65C816="JMP al" code="5C" clocks="" flags="-------" />
<op m6502="EOR t,X" m65C02="EOR t,X" m65C816="EOR t,X" code="5Dtltm" clocks="4" flags="-------" bus="r" mCish="A = A ^ BYTE[t+X]"/>
<op m6502="LSR t,X" m65C02="LSR t,X" m65C816="LSR t,X" code="5Etltm" clocks="7" flags="-------" bus="rw" />
<op m65C816="EOR al,X" code="5F" clocks="" flags="-------" />
<op m6502="RTS" m65C02="RTS" m65C816="RTS" code="60" clocks="6" flags="-------" />
<op m6502="ADC (p,X)" m65C02="ADC (p,X)" m65C816="ADC (p,X)" code="61pp" clocks="6" flags="-------" bus="r" mCish="A = A + CARRY + BYTE[WORD[>p+X]]"/>
<op m65C816="PER rl" code="62" clocks="" flags="-------" />
<op m65C816="ADC d,S" code="63" clocks="" flags="-------" />
<op m65C02="STZ d" m65C816="STZ d" code="64" clocks="" flags="-------" />
<op m6502="ADC >p" m65C02="ADC >p" m65C816="ADC >p" code="65pp" clocks="3" flags="-------" bus="r" mCish="A = A + CARRY + BYTE[>p]"/>
<op m6502="ROR >p" m65C02="ROR >p" m65C816="ROR >p" code="66pp" clocks="5" flags="-------" bus="rw" />
<op m65C816="ADC [d]" code="67" clocks="" flags="-------" />
<op m6502="PLA" m65C02="PLA" m65C816="PLA" code="68" clocks="4" flags="-------" bus="r" />
<op m6502="ADC #b" m65C02="ADC #b" m65C816="ADC #b" code="69bb" clocks="2" flags="-------" mCish="A = A + CARRY + b"/>
<op m6502="ROR A" m65C02="ROR A" m65C816="ROR A" code="6A" clocks="2" flags="-------" />
<op m65C816="RTL" code="6B" clocks="" flags="-------" />
<op m6502="JMP (m)" m65C02="JMP (m)" m65C816="JMP (m)" code="6Cmlmm" clocks="5" flags="-------" mCish="GOTO WORD[m]"/>
<op m6502="ADC t" m65C02="ADC t" m65C816="ADC t" code="6Dtltm" clocks="4" flags="-------" bus="r" mCish="A = A + CARRY + BYTE[t]"/>
<op m6502="ROR t" m65C02="ROR t" m65C816="ROR t" code="6Etltm" clocks="6" flags="-------" bus="r" />
<op m65C816="ADC al" code="6F" clocks="" flags="-------" />
<op m6502="BVS r" m65C02="BVS r" m65C816="BVS r" code="70rr" clocks="2/3/4" flags="-------" />
<op m6502="ADC (p),Y" m65C02="ADC (p),Y" m65C816="ADC (p),Y" code="71pp" clocks="5" flags="-------" bus="r" mCish="A = A + CARRY + BYTE[WORD[>p]+Y]"/>
<op m65C02="ADC (d)" m65C816="ADC (d)" code="72" clocks="" flags="-------" />
<op m65C816="ADC (d,S),Y" code="73" clocks="" flags="-------" />
<op m65C02="STZ d,X" m65C816="STZ d,X" code="74" clocks="" flags="-------" />
<op m6502="ADC >p,X" m65C02="ADC >p,X" m65C816="ADC >p,X" code="75pp" clocks="4" flags="-------" bus="r" mCish="A = A + CARRY + BYTE[>p]"/>
<op m6502="ROR >p,X" m65C02="ROR >p,X" m65C816="ROR >p,X" code="76pp" clocks="6" flags="-------" bus="r" />
<op m65C816="ADC [d],Y" code="77" clocks="" flags="-------" />
<op m6502="SEI" m65C02="SEI" m65C816="SEI" code="78" clocks="2" flags="-------" />
<op m6502="ADC t,Y" m65C02="ADC t,Y" m65C816="ADC t,Y" code="79tltm" clocks="4" flags="-------" bus="r" mCish="A = A + CARRY + BYTE[t+Y]"/>
<op m65C02="PLY" m65C816="PLY" code="7A" clocks="" flags="-------" />
<op m65C816="TDC" code="7B" clocks="" flags="-------" />
<op m65C02="JMP (a,X)" m65C816="JMP (a,X)" code="7C" clocks="" flags="-------" />
<op m6502="ADC t,X" m65C02="ADC t,X" m65C816="ADC t,X" code="7Dtltm" clocks="4" flags="-------" bus="r" mCish="A = A + CARRY + BYTE[t+X]"/>
<op m6502="ROR t,X" m65C02="ROR t,X" m65C816="ROR t,X" code="7Etltm" clocks="7" flags="-------" bus="r" />
<op m65C816="ADC al,X" code="7F" clocks="" flags="-------" />
<op m65C02="BRA r" m65C816="BRA r" code="80" clocks="" flags="-------" />
<op m6502="STA (p,X)" m65C02="STA (p,X)" m65C816="STA (p,X)" code="81pp" clocks="6" flags="-------" bus="w" mCish="BYTE[WORD[>p+X]] = A"/>
<op m65C816="BRL rl" code="82" clocks="" flags="-------" />
<op m65C816="STA d,S" code="83" clocks="" flags="-------" />
<op m6502="STY >p" m65C02="STY >p" m65C816="STY >p" code="84pp" clocks="3" flags="-------" bus="w" mCish="BYTE[>p] = Y"/>
<op m6502="STA >p" m65C02="STA >p" m65C816="STA >p" code="85pp" clocks="3" flags="-------" bus="w" mCish="BYTE[>p] = A"/>
<op m6502="STX >p" m65C02="STX >p" m65C816="STX >p" code="86pp" clocks="3" flags="-------" bus="w" mCish="BYTE[>p] = X"/>
<op m65C816="STA [d]" code="87" clocks="" flags="-------" />
<op m6502="DEY" m65C02="DEY" m65C816="DEY" code="88" clocks="2" flags="-------" mCish="--Y"/>
<op m65C02="BIT #" m65C816="BIT #" code="89" clocks="" flags="-------" />
<op m6502="TXA" m65C02="TXA" m65C816="TXA" code="8A" clocks="2" flags="-------" mCish="A = X"/>
<op m65C816="PHB" code="8B" clocks="" flags="-------" />
<op m6502="STY t" m65C02="STY t" m65C816="STY t" code="8Ctltm" clocks="4" flags="-------" bus="w" mCish="BYTE[t] = Y"/>
<op m6502="STA t" m65C02="STA t" m65C816="STA t" code="8Dtltm" clocks="4" flags="-------" bus="w" mCish="BYTE[t] = A"/>
<op m6502="STX t" m65C02="STX t" m65C816="STX t" code="8Etltm" clocks="4" flags="-------" bus="w" mCish="BYTE[t] = X"/>
<op m65C816="STA al" code="8F" clocks="" flags="-------" />
<op m6502="BCC r" m65C02="BCC r" m65C816="BCC r" code="90rr" clocks="2/3/4" flags="-------" />
<op m6502="STA (p),Y" m65C02="STA (p),Y" m65C816="STA (p),Y" code="91pp" clocks="6" flags="-------" bus="w" mCish="BYTE[WORD[>p]+Y] = A"/>
<op m65C02="STA (d)" m65C816="STA (d)" code="92" clocks="" flags="-------" />
<op m65C816="STA (d,S),Y" code="93" clocks="" flags="-------" />
<op m6502="STY p,X" m65C02="STY p,X" m65C816="STY p,X" code="94pp" clocks="4" flags="-------" bus="w" mCish="BYTE[>p+X] = Y"/>
<op m6502="STA p,X" m65C02="STA p,X" m65C816="STA p,X" code="95pp" clocks="4" flags="-------" bus="w" mCish="BYTE[>p+X] = A"/>
<op m6502="STX p,Y" m65C02="STX p,Y" m65C816="STX p,Y" code="96pp" clocks="4" flags="-------" bus="w" mCish="BYTE[>p+Y] = X"/>
<op m65C816="STA [d],Y" code="97" clocks="" flags="-------" />
<op m6502="TYA" m65C02="TYA" m65C816="TYA" code="98" clocks="2" flags="-------" mCish="A = Y"/>
<op m6502="STA t,Y" m65C02="STA t,Y" m65C816="STA t,Y" code="99tltm" clocks="5" flags="-------" bus="w" mCish="BYTE[t+Y] = A"/>
<op m6502="TXS" m65C02="TXS" m65C816="TXS" code="9A" clocks="2" flags="-------" mCish="S = X"/>
<op m65C816="TXY" code="9B" clocks="" flags="-------" />
<op m65C02="STZ a" m65C816="STZ a" code="9C" clocks="" flags="-------" />
<op m6502="STA t,X" m65C02="STA t,X" m65C816="STA t,X" code="9Dtltm" clocks="5" flags="-------" bus="w" mCish="BYTE[t+X] = A"/>
<op m65C02="STZ a,X" m65C816="STZ a,X" code="9E" clocks="" flags="-------" />
<op m65C816="STA al,X" code="9F" clocks="" flags="-------" />
<op m6502="LDY #b" m65C02="LDY #b" m65C816="LDY #b" code="A0bb" clocks="2" flags="-------" mCish="Y = b"/>
<op m6502="LDA (p,X)" m65C02="LDA (p,X)" m65C816="LDA (p,X)" code="A1pp" clocks="6" flags="-------" bus="r" mCish="A = BYTE[WORD[>p+X]]"/>
<op m6502="LDX #b" m65C02="LDX #b" m65C816="LDX #b" code="A2bb" clocks="2" flags="-------" mCish="X = b"/>
<op m65C816="LDA d,S" code="A3" clocks="" flags="-------" />
<op m6502="LDY >p" m65C02="LDY >p" m65C816="LDY >p" code="A4pp" clocks="3" flags="-------" bus="r" mCish="Y = BYTE[>p]"/>
<op m6502="LDA >p" m65C02="LDA >p" m65C816="LDA >p" code="A5pp" clocks="3" flags="-------" bus="r" mCish="A = BYTE[>p]"/>
<op m6502="LDX >p" m65C02="LDX >p" m65C816="LDX >p" code="A6pp" clocks="3" flags="-------" bus="r" mCish="X = BYTE[>p]"/>
<op m65C816="LDA [d]" code="A7" clocks="" flags="-------" />
<op m6502="TAY" m65C02="TAY" m65C816="TAY" code="A8" clocks="2" flags="-------" mCish="Y = A"/>
<op m6502="LDA #b" m65C02="LDA #b" m65C816="LDA #b" code="A9bb" clocks="2" flags="-------" mCish="A = b"/>
<op m6502="TAX" m65C02="TAX" m65C816="TAX" code="AA" clocks="2" flags="-------" mCish="X = A"/>
<op m65C816="PLB" code="AB" clocks="" flags="-------" />
<op m6502="LDY t" m65C02="LDY t" m65C816="LDY t" code="ACtltm" clocks="4" flags="-------" bus="r" mCish="Y = BYTE[t]"/>
<op m6502="LDA t" m65C02="LDA t" m65C816="LDA t" code="ADtltm" clocks="4" flags="-------" bus="r" mCish="A = BYTE[t]"/>
<op m6502="LDX t" m65C02="LDX t" m65C816="LDX t" code="AEtltm" clocks="4" flags="-------" bus="r" mCish="X = BYTE[t]"/>
<op m65C816="LDA al" code="AF" clocks="" flags="-------" />
<op m6502="BCS r" m65C02="BCS r" m65C816="BCS r" code="B0rr" clocks="2/3/4" flags="-------" />
<op m6502="LDA (p),Y" m65C02="LDA (p),Y" m65C816="LDA (p),Y" code="B1pp" clocks="5" flags="-------" bus="r" mCish="A = BYTE[WORD[>p]+Y]"/>
<op m65C02="LDA (d)" m65C816="LDA (d)" code="B2" clocks="" flags="-------" />
<op m65C816="LDA (d,S),Y" code="B3" clocks="" flags="-------" />
<op m6502="LDY p,X" m65C02="LDY p,X" m65C816="LDY p,X" code="B4pp" clocks="4" flags="-------" bus="r" mCish="Y = BYTE[>p+X]"/>
<op m6502="LDA p,X" m65C02="LDA p,X" m65C816="LDA p,X" code="B5pp" clocks="4" flags="-------" bus="r" mCish="A = BYTE[>p+X]"/>
<op m6502="LDX p,Y" m65C02="LDX p,Y" m65C816="LDX p,Y" code="B6pp" clocks="4" flags="-------" bus="r" mCish="X = BYTE[>p+Y]"/>
<op m65C816="LDA [d],Y" code="B7" clocks="" flags="-------" />
<op m6502="CLV" m65C02="CLV" m65C816="CLV" code="B8" clocks="2" flags="-------" />
<op m6502="LDA t,Y" m65C02="LDA t,Y" m65C816="LDA t,Y" code="B9tltm" clocks="4" flags="-------" bus="r" mCish="A = BYTE[t+Y]"/>
<op m6502="TSX" m65C02="TSX" m65C816="TSX" code="BA" clocks="2" flags="-------" mCish="X = S"/>
<op m65C816="TYX" code="BB" clocks="" flags="-------" />
<op m6502="LDY t,X" m65C02="LDY t,X" m65C816="LDY t,X" code="BCtltm" clocks="4" flags="-------" bus="r" mCish="Y = BYTE[t+X]"/>
<op m6502="LDA t,X" m65C02="LDA t,X" m65C816="LDA t,X" code="BDtltm" clocks="4" flags="-------" bus="r" mCish="A = BYTE[t+X]"/>
<op m6502="LDX t,Y" m65C02="LDX t,Y" m65C816="LDX t,Y" code="BEtltm" clocks="4" flags="-------" bus="r" mCish="X = BYTE[t+Y]"/>
<op m65C816="LDA al,X" code="BF" clocks="" flags="-------" />
<op m6502="CPY #b" m65C02="CPY #b" m65C816="CPY #b" code="C0bb" clocks="2" flags="-------" />
<op m6502="CMP (p,X)" m65C02="CMP (p,X)" m65C816="CMP (p,X)" code="C1pp" clocks="6" flags="-------" bus="r" mCish="A - BYTE[WORD[>p+X]]"/>
<op m65C816="REP #" code="C2" clocks="" flags="-------" />
<op m65C816="CMP d,S" code="C3" clocks="" flags="-------" />
<op m6502="CPY >p" m65C02="CPY >p" m65C816="CPY >p" code="C4pp" clocks="3" flags="-------" bus="r" mCish="Y - BYTE[>p]"/>
<op m6502="CMP >p" m65C02="CMP >p" m65C816="CMP >p" code="C5pp" clocks="3" flags="-------" bus="r" mCish="A - BYTE[>p]"/>
<op m6502="DEC >p" m65C02="DEC >p" m65C816="DEC >p" code="C6pp" clocks="5" flags="-------" bus="rw" mCish="--BYTE[>p]"/>
<op m65C816="CMP [d]" code="C7" clocks="" flags="-------" />
<op m6502="INY" m65C02="INY" m65C816="INY" code="C8" clocks="2" flags="-------" mCish="++Y"/>
<op m6502="CMP #b" m65C02="CMP #b" m65C816="CMP #b" code="C9bb" clocks="2" flags="-------" mCish="A - b"/>
<op m6502="DEX" m65C02="DEX" m65C816="DEX" code="CA" clocks="2" flags="-------" mCish="--X"/>
<op m65C816="WAI" code="CB" clocks="" flags="-------" />
<op m6502="CPY t" m65C02="CPY t" m65C816="CPY t" code="CCtltm" clocks="4" flags="-------" bus="r" mCish="Y - BYTE[t]"/>
<op m6502="CMP t" m65C02="CMP t" m65C816="CMP t" code="CDtltm" clocks="4" flags="-------" bus="r" mCish="A - BYTE[t]"/>
<op m6502="DEC t" m65C02="DEC t" m65C816="DEC t" code="CEtltm" clocks="6" flags="-------" bus="rw" mCish="--BYTE[t]"/>
<op m65C816="CMP al" code="CF" clocks="" flags="-------" />
<op m6502="BNE r" m65C02="BNE r" m65C816="BNE r" code="D0rr" clocks="2/3/4" flags="-------" />
<op m6502="CMP (p),Y" m65C02="CMP (p),Y" m65C816="CMP (p),Y" code="D1pp" clocks="5" flags="-------" bus="r" mCish="A - BYTE[WORD[>p]+Y]"/>
<op m65C02="CMP (d)" m65C816="CMP (d)" code="D2" clocks="" flags="-------" />
<op m65C816="CMP (d,S),Y" code="D3" clocks="" flags="-------" />
<op m65C816="PEI d" code="D4" clocks="" flags="-------" />
<op m6502="CMP p,X" m65C02="CMP p,X" m65C816="CMP p,X" code="D5pp" clocks="4" flags="-------" bus="r" mCish="A - BYTE[>p+X]"/>
<op m6502="DEC p,X" m65C02="DEC p,X" m65C816="DEC p,X" code="D6pp" clocks="6" flags="-------" bus="rw" mCish="--BYTE[>p+X]"/>
<op m65C816="CMP [d],Y" code="D7" clocks="" flags="-------" />
<op m6502="CLD" m65C02="CLD" m65C816="CLD" code="D8" clocks="2" flags="-------" />
<op m6502="CMP t,Y" m65C02="CMP t,Y" m65C816="CMP t,Y" code="D9tltm" clocks="4" flags="-------" bus="r" mCish="A - BYTE[t+Y]"/>
<op m65C02="PHX" m65C816="PHX" code="DA" clocks="" flags="-------" />
<op m65C816="STP" code="DB" clocks="" flags="-------" />
<op m65C816="JML (a)" code="DC" clocks="" flags="-------" />
<op m6502="CMP t,X" m65C02="CMP t,X" m65C816="CMP t,X" code="DDtltm" clocks="4" flags="-------" bus="r" mCish="A - BYTE[t+X]"/>
<op m6502="DEC t,X" m65C02="DEC t,X" m65C816="DEC t,X" code="DEtltm" clocks="7" flags="-------" bus="rw" mCish="--BYTE[t+X]"/>
<op m65C816="CMP al,X" code="DF" clocks="" flags="-------" />
<op m6502="CPX #b" m65C02="CPX #b" m65C816="CPX #b" code="E0bb" clocks="2" flags="-------" mCish="X - b"/>
<op m6502="SBC (p,X)" m65C02="SBC (p,X)" m65C816="SBC (p,X)" code="E1pp" clocks="" flags="-------" bus="r" mCish="A = A - BORROW - BYTE[WORD[>p+X]]"/>
<op m65C816="SEP #" code="E2" clocks="" flags="-------" />
<op m65C816="SBC d,S" code="E3" clocks="" flags="-------" />
<op m6502="CPX >p" m65C02="CPX >p" m65C816="CPX >p" code="E4pp" clocks="3" flags="-------" bus="r" mCish="X - BYTE[>p]"/>
<op m6502="SBC >p" m65C02="SBC >p" m65C816="SBC >p" code="E5pp" clocks="" flags="-------" bus="r" mCish="A = A - BORROW - BYTE[>p]"/>
<op m6502="INC >p" m65C02="INC >p" m65C816="INC >p" code="E6pp" clocks="5" flags="-------" bus="rw" mCish="++BYTE[>p]"/>
<op m65C816="SBC [d]" code="E7" clocks="" flags="-------" />
<op m6502="INX" m65C02="INX" m65C816="INX" code="E8" clocks="2" flags="-------" mCish="++X"/>
<op m6502="SBC #b" m65C02="SBC #b" m65C816="SBC #b" code="E9bb" clocks="" flags="-------" mCish="A = A - BORROW - b"/>
<op m6502="NOP" m65C02="NOP" m65C816="NOP" code="EA" clocks="2" flags="-------" />
<op m65C816="XBA" code="EB" clocks="" flags="-------" />
<op m6502="CPX t" m65C02="CPX t" m65C816="CPX t" code="ECtltm" clocks="4" flags="-------" bus="r" mCish="X - BYTE[t]"/>
<op m6502="SBC t" m65C02="SBC t" m65C816="SBC t" code="EDtltm" clocks="" flags="-------" bus="r" mCish="A = A - BORROW - BYTE[t]"/>
<op m6502="INC t" m65C02="INC t" m65C816="INC t" code="EEtltm" clocks="6" flags="-------" bus="rw" mCish="++BYTE[t]"/>
<op m65C816="SBC al" code="EF" clocks="" flags="-------" />
<op m6502="BEQ r" m65C02="BEQ r" m65C816="BEQ r" code="F0rr" clocks="2/3/4" flags="-------" />
<op m6502="SBC (p),Y" m65C02="SBC (p),Y" m65C816="SBC (p),Y" code="F1pp" clocks="" flags="-------" bus="r" mCish="A = A - BORROW - BYTE[WORD[>p]+Y]"/>
<op m65C02="SBC (d)" m65C816="SBC (d)" code="F2" clocks="" flags="-------" />
<op m65C816="SBC (d,S),Y" code="F3" clocks="" flags="-------" />
<op m65C816="PEA a" code="F4" clocks="" flags="-------" />
<op m6502="SBC p,X" m65C02="SBC p,X" m65C816="SBC p,X" code="F5pp" clocks="" flags="-------" bus="r" mCish="A = A - BORROW - BYTE[>p+X]"/>
<op m6502="INC p,X" m65C02="INC p,X" m65C816="INC p,X" code="F6pp" clocks="6" flags="-------" bus="rw" mCish="++BYTE[>p+X]"/>
<op m65C816="SBC [d],Y" code="F7" clocks="" flags="-------" />
<op m6502="SED" m65C02="SED" m65C816="SED" code="F8" clocks="2" flags="-------" />
<op m6502="SBC t,Y" m65C02="SBC t,Y" m65C816="SBC t,Y" code="F9tltm" clocks="" flags="-------" bus="r" mCish="A = A - BORROW - BYTE[t+Y]"/>
<op m65C02="PLX" m65C816="PLX" code="FA" clocks="" flags="-------" />
<op m65C816="XCE" code="FB" clocks="" flags="-------" />
<op m65C816="JSR (a,X)" code="FC" clocks="" flags="-------" />
<op m6502="SBC t,X" m65C02="SBC t,X" m65C816="SBC t,X" code="FDtltm" clocks="" flags="-------" bus="r" mCish="A = A - BORROW - BYTE[t+X]"/>
<op m6502="INC t,X" m65C02="INC t,X" m65C816="INC t,X" code="FEtltm" clocks="7" flags="-------" bus="rw" mCish="++BYTE[t+X]"/>
<op m65C816="SBC al,X" code="FF" clocks="" flags="-------" />
</opcodes>
</ProcessorFamily>
The 6809 has a rich indexed-addressing mode. For indexed forms the opcode is followed by a post byte that describes the operation. Many of the post bytes use additional bytes of opcode parameters and additional clock cycles. A separate table below the opcodes describes the indexed forms.
For instance the 6809 opcode “10AEyy” is “LDY y”. The “y” means this instruction is a complex indexed form.
If the “y” parameter byte is filled in with “D9” then the post-byte table tells us the opcode is “10AED9kmkl”, which is “LDY [k,U]”. This instruction adds the 2-byte signed value “k” to the U register. The resulting value is used as an address and the 2-byte value from this resulting location is loaded into the Y register.
That is a lot of processing by a single instruction! The 6809 is a great example of a CISC processor where each instruction packs a lot of function. (People joke about the 6809 including a “branch and make coffee” instruction).
But the functionality comes at a cost. The base “10AEyy” opcode takes 6 clocks. The “D9” post-byte form adds an additional 7 clocks to the processing. The resulting opcode is 5 bytes long and burns 13 clocks! That’s like two or three shorter instructions combined, which is exactly what RISC is all about.
<?xml version="1.0" encoding="UTF-8"?>
<ProcessorFamily name="6809" endian="big">
<printSpacing>
<set name="6809" dataFieldSize="10" mnemonicFieldSize="20"/>
<set name="Cish" dataFieldSize="10" mnemonicFieldSize="20"/>
</printSpacing>
<processors>
<processor name="6809" class="Processor_6809"/>
</processors>
<opcodes>
<op code="00pp" m6809="NEG >p" clocks="6" flags="uaaaa" />
<op code="03pp" m6809="COM >p" clocks="6" flags="-aa01" />
<op code="04pp" m6809="LSR >p" clocks="6" flags="-0a-s" />
<op code="06pp" m6809="ROR >p" clocks="6" flags="-aa-s" />
<op code="07pp" m6809="ASR >p" clocks="6" flags="uaa-s" />
<op code="08pp" m6809="LSL >p;ASL >p" clocks="6" flags="naaas" />
<op code="09pp" m6809="ROL >p" clocks="6" flags="-aaas" />
<op code="0App" m6809="DEC >p" clocks="6" flags="-aaa-" />
<op code="0Cpp" m6809="INC >p" clocks="6" flags="-aaa-" />
<op code="0Dpp" m6809="TST >p" clocks="6" flags="-aa0-" />
<op code="0Epp" m6809="JMP >p" clocks="3" flags="-----" />
<op code="0Fpp" m6809="CLR >p" clocks="6" flags="-0100" />
<op code="1021smsl" m6809="LBRN s" clocks="5(6)" flags="-----" />
<op code="1022smsl" m6809="LBHI s" clocks="5(6)" flags="-----" />
<op code="1023smsl" m6809="LBLS s" clocks="5(6)" flags="-----" />
<op code="1024smsl" m6809="LBCC s;LBHS s" clocks="5(6)" flags="-----" />
<op code="1025smsl" m6809="LBCS s;LBLO s" clocks="5(6)" flags="-----" />
<op code="1026smsl" m6809="LBNE s" clocks="5(6)" flags="-----" />
<op code="1027smsl" m6809="LBEQ s" clocks="5(6)" flags="-----" />
<op code="1028smsl" m6809="LBVC s" clocks="5(6)" flags="-----" />
<op code="1029smsl" m6809="LBVS s" clocks="5(6)" flags="-----" />
<op code="102Asmsl" m6809="LBPL s" clocks="5(6)" flags="-----" />
<op code="102Bsmsl" m6809="LBMI s" clocks="5(6)" flags="-----" />
<op code="102Csmsl" m6809="LBGE s" clocks="5(6)" flags="-----" />
<op code="102Dsmsl" m6809="LBLT s" clocks="5(6)" flags="-----" />
<op code="102Esmsl" m6809="LBGT s" clocks="5(6)" flags="-----" />
<op code="102Fsmsl" m6809="LBLE s" clocks="5(6)" flags="-----" />
<op code="103F" m6809="SWI2" clocks="20" flags="-----" />
<op code="1083wmwl" m6809="CMPD #w" clocks="5" flags="-aaaa" />
<op code="108Cwmwl" m6809="CMPY #w" clocks="5" flags="-aaaa" />
<op code="108Ewmwl" m6809="LDY #w" clocks="4" flags="-aa0-" />
<op code="1093pp" m6809="CMPD >p" clocks="7" flags="-aaaa" />
<op code="109Cpp" m6809="CMPY >p" clocks="7" flags="-aaaa" />
<op code="109Epp" m6809="LDY >p" clocks="6" flags="-aa0-" />
<op code="109Fpp" m6809="STY >p" clocks="6" flags="-aa0-" />
<op code="10A3yy" m6809="CMPD y" clocks="7" flags="-aaaa" />
<op code="10ACyy" m6809="CMPY y" clocks="7" flags="-aaaa" />
<op code="10AEyy" m6809="LDY y" clocks="6" flags="-aa0-" />
<op code="10AFyy" m6809="STY y" clocks="6" flags="-aa0-" />
<op code="10B3tmtl" m6809="CMPD t" clocks="8" flags="-aaaa" />
<op code="10BCtmtl" m6809="CMPY t" clocks="8" flags="-aaaa" />
<op code="10BEtmtl" m6809="LDY t" clocks="7" flags="-aa0-" />
<op code="10BFtmtl" m6809="STY t" clocks="7" flags="-aa0-" />
<op code="10CEwmwl" m6809="LDS #w" clocks="4" flags="-aa0-" />
<op code="10DEpp" m6809="LDS >p" clocks="6" flags="-aa0-" />
<op code="10DFpp" m6809="STS >p" clocks="6" flags="-aa0-" />
<op code="10EEyy" m6809="LDS y" clocks="6" flags="-aa0-" />
<op code="10EFyy" m6809="STS y" clocks="6" flags="-aa0-" />
<op code="10FEtmtl" m6809="LDS t" clocks="7" flags="-aa0-" />
<op code="10FFtmtl" m6809="STS t" clocks="7" flags="-aa0-" />
<op code="113F" m6809="SWI3" clocks="20" flags="-----" />
<op code="1183wmwl" m6809="CMPU #w" clocks="5" flags="-aaaa" />
<op code="118Cwmwl" m6809="CMPS #w" clocks="5" flags="-aaaa" />
<op code="1193pp" m6809="CMPU >p" clocks="7" flags="-aaaa" />
<op code="119Cpp" m6809="CMPS >p" clocks="7" flags="-aaaa" />
<op code="11A3yy" m6809="CMPU y" clocks="7" flags="-aaaa" />
<op code="11ACyy" m6809="CMPS y" clocks="7" flags="-aaaa" />
<op code="11B3tmtl" m6809="CMPU t" clocks="8" flags="-aaaa" />
<op code="11BCtmtl" m6809="CMPS t" clocks="8" flags="-aaaa" />
<op code="12" m6809="NOP" clocks="2" flags="-----" />
<op code="13" m6809="SYNC" clocks="2" flags="-----" />
<op code="16smsl" m6809="LBRA s" clocks="5" flags="-----" />
<op code="17smsl" m6809="LBSR s" clocks="9" flags="-----" />
<op code="19" m6809="DAA" clocks="2" flags="-aa0a" />
<op code="1Abb" m6809="ORCC #b" clocks="3" flags="ddddd" />
<op code="1Cbb" m6809="ANDCC #b" clocks="3" flags="ddddd" />
<op code="1D" m6809="SEX" clocks="2" flags="-aa0-" />
<op code="1Ezz" m6809="EXG z" clocks="8" flags="ccccc" />
<op code="1Fzz" m6809="TFR z" clocks="7" flags="ccccc" />
<op code="20rr" m6809="BRA r" clocks="3" flags="-----" />
<op code="21rr" m6809="BRN r" clocks="3" flags="-----" />
<op code="22rr" m6809="BHI r" clocks="3" flags="-----" />
<op code="23rr" m6809="BLS r" clocks="3" flags="-----" />
<op code="24rr" m6809="BCC r;BHS r" clocks="3" flags="-----" />
<op code="25rr" m6809="BCS r;BLO r" clocks="3" flags="-----" />
<op code="26rr" m6809="BNE r" clocks="3" flags="-----" />
<op code="27rr" m6809="BEQ r" clocks="3" flags="-----" />
<op code="28rr" m6809="BVC r" clocks="3" flags="-----" />
<op code="29rr" m6809="BVS r" clocks="3" flags="-----" />
<op code="2Arr" m6809="BPL r" clocks="3" flags="-----" />
<op code="2Brr" m6809="BMI r" clocks="3" flags="-----" />
<op code="2Crr" m6809="BGE r" clocks="3" flags="-----" />
<op code="2Drr" m6809="BLT r" clocks="3" flags="-----" />
<op code="2Err" m6809="BGT r" clocks="3" flags="-----" />
<op code="2Frr" m6809="BLE r" clocks="3" flags="-----" />
<op code="30yy" m6809="LEAX y" clocks="4" flags="--a--" />
<op code="31yy" m6809="LEAY y" clocks="4" flags="--a--" />
<op code="32yy" m6809="LEAS y" clocks="4" flags="-----" />
<op code="33yy" m6809="LEAU y" clocks="4" flags="-----" />
<op code="34xx" m6809="PSHS x" clocks="5" flags="-----" />
<op code="35qq" m6809="PULS q" clocks="5" flags="ccccc" />
<op code="36uu" m6809="PSHU u" clocks="5" flags="-----" />
<op code="37vv" m6809="PULU v" clocks="5" flags="ccccc" />
<op code="39" m6809="RTS" clocks="5" flags="-----" />
<op code="3A" m6809="ABX" clocks="3" flags="-----" />
<op code="3B" m6809="RTI" clocks="6/15" flags="-----" />
<op code="3Cbb" m6809="CWAI b" clocks="21" flags="ddddd" />
<op code="3D" m6809="MUL" clocks="11" flags="--a-a" />
<op code="3E" m6809="RESET" clocks="*" flags="*****" />
<op code="3F" m6809="SWI" clocks="19" flags="-----" />
<op code="40" m6809="NEGA" clocks="2" flags="uaaaa" />
<op code="43" m6809="COMA" clocks="2" flags="-aa01" />
<op code="44" m6809="LSRA" clocks="2" flags="-0a-s" />
<op code="46" m6809="RORA" clocks="2" flags="-aa-s" />
<op code="47" m6809="ASRA" clocks="2" flags="uaa-s" />
<op code="48" m6809="ASLA;LSLA" clocks="2" flags="naaas" />
<op code="49" m6809="ROLA" clocks="2" flags="-aaas" />
<op code="4A" m6809="DECA" clocks="2" flags="-aaa-" />
<op code="4C" m6809="INCA" clocks="2" flags="-aaa-" />
<op code="4D" m6809="TSTA" clocks="2" flags="-aa0-" />
<op code="4F" m6809="CLRA" clocks="2" flags="-0100" />
<op code="50" m6809="NEGB" clocks="2" flags="uaaaa" />
<op code="53" m6809="COMB" clocks="2" flags="-aa01" />
<op code="54" m6809="LSRB" clocks="2" flags="-0a-s" />
<op code="56" m6809="RORB" clocks="2" flags="-aa-s" />
<op code="57" m6809="ASRB" clocks="2" flags="uaa-s" />
<op code="58" m6809="ASLB;LSLB" clocks="2" flags="naaas" />
<op code="59" m6809="ROLB" clocks="2" flags="-aaas" />
<op code="5A" m6809="DECB" clocks="2" flags="-aaa-" />
<op code="5C" m6809="INCB" clocks="2" flags="-aaa-" />
<op code="5D" m6809="TSTB" clocks="2" flags="-aa0-" />
<op code="5F" m6809="CLRB" clocks="2" flags="-0100" />
<op code="60yy" m6809="NEG y" clocks="6" flags="uaaaa" />
<op code="63yy" m6809="COM y" clocks="6" flags="-aa01" />
<op code="64yy" m6809="LSR y" clocks="6" flags="-0a-s" />
<op code="66yy" m6809="ROR y" clocks="6" flags="-aa-s" />
<op code="67yy" m6809="ASR y" clocks="6" flags="uaa-s" />
<op code="68yy" m6809="ASL y;LSL y" clocks="6" flags="naaas" />
<op code="69yy" m6809="ROL y" clocks="6" flags="-aaas" />
<op code="6Ayy" m6809="DEC y" clocks="6" flags="-aaa-" />
<op code="6Cyy" m6809="INC y" clocks="6" flags="-aaa-" />
<op code="6Dyy" m6809="TST y" clocks="6" flags="-aa0-" />
<op code="6Eyy" m6809="JMP y" clocks="3" flags="-----" />
<op code="6Fyy" m6809="CLR y" clocks="6" flags="-0100" />
<op code="70tmtl" m6809="NEG t" clocks="7" flags="uaaaa" />
<op code="73tmtl" m6809="COM t" clocks="7" flags="-aa01" />
<op code="74tmtl" m6809="LSR t" clocks="7" flags="-0a-s" />
<op code="76tmtl" m6809="ROR t" clocks="7" flags="-aa-s" />
<op code="77tmtl" m6809="ASR t" clocks="7" flags="uaa-s" />
<op code="78tmtl" m6809="ASL t;LSL t" clocks="7" flags="naaas" />
<op code="79tmtl" m6809="ROL t" clocks="7" flags="-aaas" />
<op code="7Atmtl" m6809="DEC t" clocks="7" flags="-aaa-" />
<op code="7Ctmtl" m6809="INC t" clocks="7" flags="-aaa-" />
<op code="7Dtmtl" m6809="TST t" clocks="7" flags="-aa0-" />
<op code="7Etmtl" m6809="JMP t" clocks="3" flags="-----" />
<op code="7Ftmtl" m6809="CLR t" clocks="7" flags="-0100" />
<op code="80bb" m6809="SUBA #b" clocks="2" flags="uaaaa" />
<op code="81bb" m6809="CMPA #b" clocks="2" flags="uaaaa" />
<op code="82bb" m6809="SBCA #b" clocks="2" flags="uaaaa" />
<op code="83wmwl" m6809="SUBD #w" clocks="4" flags="-aaaa" />
<op code="84bb" m6809="ANDA #b" clocks="2" flags="-aa0-" />
<op code="85bb" m6809="BITA #b" clocks="2" flags="-aa0-" />
<op code="86bb" m6809="LDA #b" clocks="2" flags="-aa0-" />
<op code="88bb" m6809="EORA #b" clocks="2" flags="-aa0-" />
<op code="89bb" m6809="ADCA #b" clocks="2" flags="aaaaa" />
<op code="8Abb" m6809="ORA #b" clocks="2" flags="-aa0-" />
<op code="8Bbb" m6809="ADDA #b" clocks="2" flags="aaaaa" />
<op code="8Cwmwl" m6809="CMPX #w" clocks="4" flags="-aaaa" />
<op code="8Drr" m6809="BSR r" clocks="7" flags="-----" />
<op code="8Ewmwl" m6809="LDX #w" clocks="3" flags="-aa0-" />
<op code="90pp" m6809="SUBA >p" clocks="4" flags="uaaaa" />
<op code="91pp" m6809="CMPA >p" clocks="4" flags="uaaaa" />
<op code="92pp" m6809="SBCA >p" clocks="4" flags="uaaaa" />
<op code="93pp" m6809="SUBD >p" clocks="6" flags="-aaaa" />
<op code="94pp" m6809="ANDA >p" clocks="4" flags="-aa0-" />
<op code="95pp" m6809="BITA >p" clocks="4" flags="-aa0-" />
<op code="96pp" m6809="LDA >p" clocks="4" flags="-aa0-" />
<op code="97pp" m6809="STA >p" clocks="4" flags="-aa0-" />
<op code="98pp" m6809="EORA >p" clocks="4" flags="-aa0-" />
<op code="99pp" m6809="ADCA >p" clocks="4" flags="aaaaa" />
<op code="9App" m6809="ORA >p" clocks="4" flags="-aa0-" />
<op code="9Bpp" m6809="ADDA >p" clocks="4" flags="aaaaa" />
<op code="9Cpp" m6809="CMPX >p" clocks="6" flags="-aaaa" />
<op code="9Dpp" m6809="JSR >p" clocks="7" flags="-----" />
<op code="9Epp" m6809="LDX >p" clocks="5" flags="-aa0-" />
<op code="9Fpp" m6809="STX >p" clocks="5" flags="-aa0-" />
<op code="A0yy" m6809="SUBA y" clocks="4" flags="uaaaa" />
<op code="A1yy" m6809="CMPA y" clocks="4" flags="uaaaa" />
<op code="A2yy" m6809="SBCA y" clocks="4" flags="uaaaa" />
<op code="A3yy" m6809="SUBD y" clocks="6" flags="-aaaa" />
<op code="A4yy" m6809="ANDA y" clocks="4" flags="-aa0-" />
<op code="A5yy" m6809="BITA y" clocks="4" flags="-aa0-" />
<op code="A6yy" m6809="LDA y" clocks="4" flags="-aa0-" />
<op code="A7yy" m6809="STA y" clocks="4" flags="-aa0-" />
<op code="A8yy" m6809="EORA y" clocks="4" flags="-aa0-" />
<op code="A9yy" m6809="ADCA y" clocks="4" flags="aaaaa" />
<op code="AAyy" m6809="ORA y" clocks="4" flags="-aa0-" />
<op code="AByy" m6809="ADDA y" clocks="4" flags="aaaaa" />
<op code="ACyy" m6809="CMPX y" clocks="6" flags="-aaaa" />
<op code="ADyy" m6809="JSR y" clocks="7" flags="-----" />
<op code="AEyy" m6809="LDX y" clocks="5" flags="-aa0-" />
<op code="AFyy" m6809="STX y" clocks="5" flags="-aa0-" />
<op code="B0tmtl" m6809="SUBA t" clocks="5" flags="uaaaa" />
<op code="B1tmtl" m6809="CMPA t" clocks="5" flags="uaaaa" />
<op code="B2tmtl" m6809="SBCA t" clocks="5" flags="uaaaa" />
<op code="B3tmtl" m6809="SUBD t" clocks="7" flags="-aaaa" />
<op code="B4tmtl" m6809="ANDA t" clocks="5" flags="-aa0-" />
<op code="B5tmtl" m6809="BITA t" clocks="5" flags="-aa0-" />
<op code="B6tmtl" m6809="LDA t" clocks="5" flags="-aa0-" />
<op code="B7tmtl" m6809="STA t" clocks="5" flags="-aa0-" />
<op code="B8tmtl" m6809="EORA t" clocks="5" flags="-aa0-" />
<op code="B9tmtl" m6809="ADCA t" clocks="5" flags="aaaaa" />
<op code="BAtmtl" m6809="ORA t" clocks="5" flags="-aa0-" />
<op code="BBtmtl" m6809="ADDA t" clocks="5" flags="aaaaa" />
<op code="BCtmtl" m6809="CMPX t" clocks="7" flags="-aaaa" />
<op code="BDtmtl" m6809="JSR t" clocks="8" flags="-----" />
<op code="BEtmtl" m6809="LDX t" clocks="6" flags="-aa0-" />
<op code="BFtmtl" m6809="STX t" clocks="6" flags="-aa0-" />
<op code="C0bb" m6809="SUBB #b" clocks="2" flags="uaaaa" />
<op code="C1bb" m6809="CMPB #b" clocks="2" flags="uaaaa" />
<op code="C2bb" m6809="SBCB #b" clocks="2" flags="uaaaa" />
<op code="C3wmwl" m6809="ADDD #w" clocks="4" flags="-aaaa" />
<op code="C4bb" m6809="ANDB #b" clocks="2" flags="-aa0-" />
<op code="C5bb" m6809="BITB #b" clocks="2" flags="-aa0-" />
<op code="C6bb" m6809="LDB #b" clocks="2" flags="-aa0-" />
<op code="C8bb" m6809="EORB #b" clocks="2" flags="-aa0-" />
<op code="C9bb" m6809="ADCB #b" clocks="2" flags="aaaaa" />
<op code="CAbb" m6809="ORB #b" clocks="2" flags="-aa0-" />
<op code="CBbb" m6809="ADDB #b" clocks="2" flags="aaaaa" />
<op code="CCwmwl" m6809="LDD #w" clocks="3" flags="-aa0-" />
<op code="CEwmwl" m6809="LDU #w" clocks="3" flags="-aa0-" />
<op code="D0pp" m6809="SUBB >p" clocks="4" flags="uaaaa" />
<op code="D1pp" m6809="CMPB >p" clocks="4" flags="uaaaa" />
<op code="D2pp" m6809="SBCB >p" clocks="4" flags="uaaaa" />
<op code="D3pp" m6809="ADDD >p" clocks="6" flags="-aaaa" />
<op code="D4pp" m6809="ANDB >p" clocks="4" flags="-aa0-" />
<op code="D5pp" m6809="BITB >p" clocks="4" flags="-aa0-" />
<op code="D6pp" m6809="LDB >p" clocks="4" flags="-aa0-" />
<op code="D7pp" m6809="STB >p" clocks="4" flags="-aa0-" />
<op code="D8pp" m6809="EORB >p" clocks="4" flags="-aa0-" />
<op code="D9pp" m6809="ADCB >p" clocks="4" flags="aaaaa" />
<op code="DApp" m6809="ORB >p" clocks="4" flags="-aa0-" />
<op code="DBpp" m6809="ADDB >p" clocks="4" flags="aaaaa" />
<op code="DCpp" m6809="LDD >p" clocks="5" flags="-aa0-" />
<op code="DDpp" m6809="STD >p" clocks="5" flags="-aa0-" />
<op code="DEpp" m6809="LDU >p" clocks="5" flags="-aa0-" />
<op code="DFpp" m6809="STU >p" clocks="5" flags="-aa0-" />
<op code="E0yy" m6809="SUBB y" clocks="4" flags="uaaaa" />
<op code="E1yy" m6809="CMPB y" clocks="4" flags="uaaaa" />
<op code="E2yy" m6809="SBCB y" clocks="4" flags="uaaaa" />
<op code="E3yy" m6809="ADDD y" clocks="6" flags="-aaaa" />
<op code="E4yy" m6809="ANDB y" clocks="4" flags="-aa0-" />
<op code="E5yy" m6809="BITB y" clocks="4" flags="-aa0-" />
<op code="E6yy" m6809="LDB y" clocks="4" flags="-aa0-" />
<op code="E7yy" m6809="STB y" clocks="4" flags="-aa0-" />
<op code="E8yy" m6809="EORB y" clocks="4" flags="-aa0-" />
<op code="E9yy" m6809="ADCB y" clocks="4" flags="aaaaa" />
<op code="EAyy" m6809="ORB y" clocks="4" flags="-aa0-" />
<op code="EByy" m6809="ADDB y" clocks="4" flags="aaaaa" />
<op code="ECyy" m6809="LDD y" clocks="5" flags="-aa0-" />
<op code="EDyy" m6809="STD y" clocks="5" flags="-aa0-" />
<op code="EEyy" m6809="LDU y" clocks="5" flags="-aa0-" />
<op code="EFyy" m6809="STU y" clocks="5" flags="-aa0-" />
<op code="F0tmtl" m6809="SUBB t" clocks="5" flags="uaaaa" />
<op code="F1tmtl" m6809="CMPB t" clocks="5" flags="uaaaa" />
<op code="F2tmtl" m6809="SBCB t" clocks="5" flags="uaaaa" />
<op code="F3tmtl" m6809="ADDD t" clocks="7" flags="-aaaa" />
<op code="F4tmtl" m6809="ANDB t" clocks="5" flags="-aa0-" />
<op code="F5tmtl" m6809="BITB t" clocks="5" flags="-aa0-" />
<op code="F6tmtl" m6809="LDB t" clocks="5" flags="-aa0-" />
<op code="F7tmtl" m6809="STB t" clocks="5" flags="-aa0-" />
<op code="F8tmtl" m6809="EORB t" clocks="5" flags="-aa0-" />
<op code="F9tmtl" m6809="ADCB t" clocks="5" flags="aaaaa" />
<op code="FAtmtl" m6809="ORB t" clocks="5" flags="-aa0-" />
<op code="FBtmtl" m6809="ADDB t" clocks="5" flags="aaaaa" />
<op code="FCtmtl" m6809="LDD t" clocks="6" flags="-aa0-" />
<op code="FDtmtl" m6809="STD t" clocks="6" flags="-aa0-" />
<op code="FEtmtl" m6809="LDU t" clocks="6" flags="-aa0-" />
<op code="FFtmtl" m6809="STU t" clocks="6" flags="-aa0-" />
</opcodes>
<indexed>
<post code="00" m6809="0,X" clocks="1" />
<post code="01" m6809="1,X" clocks="1" />
<post code="02" m6809="2,X" clocks="1" />
<post code="03" m6809="3,X" clocks="1" />
<post code="04" m6809="4,X" clocks="1" />
<post code="05" m6809="5,X" clocks="1" />
<post code="06" m6809="6,X" clocks="1" />
<post code="07" m6809="7,X" clocks="1" />
<post code="08" m6809="8,X" clocks="1" />
<post code="09" m6809="9,X" clocks="1" />
<post code="0A" m6809="10,X" clocks="1" />
<post code="0B" m6809="11,X" clocks="1" />
<post code="0C" m6809="12,X" clocks="1" />
<post code="0D" m6809="13,X" clocks="1" />
<post code="0E" m6809="14,X" clocks="1" />
<post code="0F" m6809="15,X" clocks="1" />
<post code="10" m6809="-16,X" clocks="1" />
<post code="11" m6809="-15,X" clocks="1" />
<post code="12" m6809="-14,X" clocks="1" />
<post code="13" m6809="-13,X" clocks="1" />
<post code="14" m6809="-12,X" clocks="1" />
<post code="15" m6809="-11,X" clocks="1" />
<post code="16" m6809="-10,X" clocks="1" />
<post code="17" m6809="-9,X" clocks="1" />
<post code="18" m6809="-8,X" clocks="1" />
<post code="19" m6809="-7,X" clocks="1" />
<post code="1A" m6809="-6,X" clocks="1" />
<post code="1B" m6809="-5,X" clocks="1" />
<post code="1C" m6809="-4,X" clocks="1" />
<post code="1D" m6809="-3,X" clocks="1" />
<post code="1E" m6809="-2,X" clocks="1" />
<post code="1F" m6809="-1,X" clocks="1" />
<post code="20" m6809="0,Y" clocks="1" />
<post code="21" m6809="1,Y" clocks="1" />
<post code="22" m6809="2,Y" clocks="1" />
<post code="23" m6809="3,Y" clocks="1" />
<post code="24" m6809="4,Y" clocks="1" />
<post code="25" m6809="5,Y" clocks="1" />
<post code="26" m6809="6,Y" clocks="1" />
<post code="27" m6809="7,Y" clocks="1" />
<post code="28" m6809="8,Y" clocks="1" />
<post code="29" m6809="9,Y" clocks="1" />
<post code="2A" m6809="10,Y" clocks="1" />
<post code="2B" m6809="11,Y" clocks="1" />
<post code="2C" m6809="12,Y" clocks="1" />
<post code="2D" m6809="13,Y" clocks="1" />
<post code="2E" m6809="14,Y" clocks="1" />
<post code="2F" m6809="15,Y" clocks="1" />
<post code="30" m6809="-16,Y" clocks="1" />
<post code="31" m6809="-15,Y" clocks="1" />
<post code="32" m6809="-14,Y" clocks="1" />
<post code="33" m6809="-13,Y" clocks="1" />
<post code="34" m6809="-12,Y" clocks="1" />
<post code="35" m6809="-11,Y" clocks="1" />
<post code="36" m6809="-10,Y" clocks="1" />
<post code="37" m6809="-9,Y" clocks="1" />
<post code="38" m6809="-8,Y" clocks="1" />
<post code="39" m6809="-7,Y" clocks="1" />
<post code="3A" m6809="-6,Y" clocks="1" />
<post code="3B" m6809="-5,Y" clocks="1" />
<post code="3C" m6809="-4,Y" clocks="1" />
<post code="3D" m6809="-3,Y" clocks="1" />
<post code="3E" m6809="-2,Y" clocks="1" />
<post code="3F" m6809="-1,Y" clocks="1" />
<post code="40" m6809="0,U" clocks="1" />
<post code="41" m6809="1,U" clocks="1" />
<post code="42" m6809="2,U" clocks="1" />
<post code="43" m6809="3,U" clocks="1" />
<post code="44" m6809="4,U" clocks="1" />
<post code="45" m6809="5,U" clocks="1" />
<post code="46" m6809="6,U" clocks="1" />
<post code="47" m6809="7,U" clocks="1" />
<post code="48" m6809="8,U" clocks="1" />
<post code="49" m6809="9,U" clocks="1" />
<post code="4A" m6809="10,U" clocks="1" />
<post code="4B" m6809="11,U" clocks="1" />
<post code="4C" m6809="12,U" clocks="1" />
<post code="4D" m6809="13,U" clocks="1" />
<post code="4E" m6809="14,U" clocks="1" />
<post code="4F" m6809="15,U" clocks="1" />
<post code="50" m6809="-16,U" clocks="1" />
<post code="51" m6809="-15,U" clocks="1" />
<post code="52" m6809="-14,U" clocks="1" />
<post code="53" m6809="-13,U" clocks="1" />
<post code="54" m6809="-12,U" clocks="1" />
<post code="55" m6809="-11,U" clocks="1" />
<post code="56" m6809="-10,U" clocks="1" />
<post code="57" m6809="-9,U" clocks="1" />
<post code="58" m6809="-8,U" clocks="1" />
<post code="59" m6809="-7,U" clocks="1" />
<post code="5A" m6809="-6,U" clocks="1" />
<post code="5B" m6809="-5,U" clocks="1" />
<post code="5C" m6809="-4,U" clocks="1" />
<post code="5D" m6809="-3,U" clocks="1" />
<post code="5E" m6809="-2,U" clocks="1" />
<post code="5F" m6809="-1,U" clocks="1" />
<post code="60" m6809="0,S" clocks="1" />
<post code="61" m6809="1,S" clocks="1" />
<post code="62" m6809="2,S" clocks="1" />
<post code="63" m6809="3,S" clocks="1" />
<post code="64" m6809="4,S" clocks="1" />
<post code="65" m6809="5,S" clocks="1" />
<post code="66" m6809="6,S" clocks="1" />
<post code="67" m6809="7,S" clocks="1" />
<post code="68" m6809="8,S" clocks="1" />
<post code="69" m6809="9,S" clocks="1" />
<post code="6A" m6809="10,S" clocks="1" />
<post code="6B" m6809="11,S" clocks="1" />
<post code="6C" m6809="12,S" clocks="1" />
<post code="6D" m6809="13,S" clocks="1" />
<post code="6E" m6809="14,S" clocks="1" />
<post code="6F" m6809="15,S" clocks="1" />
<post code="70" m6809="-16,S" clocks="1" />
<post code="71" m6809="-15,S" clocks="1" />
<post code="72" m6809="-14,S" clocks="1" />
<post code="73" m6809="-13,S" clocks="1" />
<post code="74" m6809="-12,S" clocks="1" />
<post code="75" m6809="-11,S" clocks="1" />
<post code="76" m6809="-10,S" clocks="1" />
<post code="77" m6809="-9,S" clocks="1" />
<post code="78" m6809="-8,S" clocks="1" />
<post code="79" m6809="-7,S" clocks="1" />
<post code="7A" m6809="-6,S" clocks="1" />
<post code="7B" m6809="-5,S" clocks="1" />
<post code="7C" m6809="-4,S" clocks="1" />
<post code="7D" m6809="-3,S" clocks="1" />
<post code="7E" m6809="-2,S" clocks="1" />
<post code="7F" m6809="-1,S" clocks="1" />
<post code="80" m6809=",X+" clocks="2" />
<post code="81" m6809=",X++" clocks="3" />
<post code="82" m6809=",-X" clocks="2" />
<post code="83" m6809=",--X" clocks="3" />
<post code="84" m6809=",X" clocks="0" />
<post code="85" m6809="B,X" clocks="1" />
<post code="86" m6809="A,X" clocks="1" />
<post code="88jj" m6809="j,X" clocks="1" />
<post code="89kmkl" m6809="k,X" clocks="4" />
<post code="8B" m6809="D,X" clocks="4" />
<post code="8Cjj" m6809="j,PC" clocks="1" />
<post code="8Dkmkl" m6809="k,PC" clocks="4" />
<post code="91" m6809="[,X++]" clocks="6" />
<post code="93" m6809="[,--X]" clocks="6" />
<post code="94" m6809="[,X]" clocks="3" />
<post code="95" m6809="[B,X]" clocks="4" />
<post code="96" m6809="[A,X]" clocks="4" />
<post code="98jj" m6809="[j,X]" clocks="4" />
<post code="99kmkl" m6809="[k,X]" clocks="7" />
<post code="9B" m6809="[D,X]" clocks="7" />
<post code="9Cjj" m6809="[j,PC]" clocks="4" />
<post code="9Dkmkl" m6809="[k,PC]" clocks="7" />
<post code="9Ftmtl" m6809="[t]" clocks="5" />
<post code="A0" m6809=",Y+" clocks="2" />
<post code="A1" m6809=",Y++" clocks="3" />
<post code="A2" m6809=",-Y" clocks="2" />
<post code="A3" m6809=",--Y" clocks="3" />
<post code="A4" m6809=",Y" clocks="0" />
<post code="A5" m6809="B,Y" clocks="1" />
<post code="A6" m6809="A,Y" clocks="1" />
<post code="A8jj" m6809="j,Y" clocks="1" />
<post code="A9kmkl" m6809="k,Y" clocks="4" />
<post code="AB" m6809="D,Y" clocks="4" />
<post code="ACjj" m6809="j,PC" clocks="1" />
<post code="ADkmkl" m6809="k,PC" clocks="4" />
<post code="B1" m6809="[,Y++]" clocks="6" />
<post code="B3" m6809="[,--Y]" clocks="6" />
<post code="B4" m6809="[,Y]" clocks="3" />
<post code="B5" m6809="[B,Y]" clocks="4" />
<post code="B6" m6809="[A,Y]" clocks="4" />
<post code="B8jj" m6809="[j,Y]" clocks="4" />
<post code="B9kmkl" m6809="[k,Y]" clocks="7" />
<post code="BB" m6809="[D,Y]" clocks="7" />
<post code="BCjj" m6809="[j,PC]" clocks="4" />
<post code="BDkmkl" m6809="[k,PC]" clocks="7" />
<post code="BFtmtl" m6809="[m]" clocks="5" />
<post code="C0" m6809=",U+" clocks="2" />
<post code="C1" m6809=",U++" clocks="3" />
<post code="C2" m6809=",-U" clocks="2" />
<post code="C3" m6809=",--U" clocks="3" />
<post code="C4" m6809=",U" clocks="0" />
<post code="C5" m6809="B,U" clocks="1" />
<post code="C6" m6809="A,U" clocks="1" />
<post code="C8jj" m6809="j,U" clocks="1" />
<post code="C9kmkl" m6809="k,U" clocks="4" />
<post code="CB" m6809="D,U" clocks="4" />
<post code="CCjj" m6809="j,PC" clocks="1" />
<post code="CDkmkl" m6809="k,PC" clocks="4" />
<post code="D1" m6809="[,U++]" clocks="6" />
<post code="D3" m6809="[,--U]" clocks="6" />
<post code="D4" m6809="[,U]" clocks="3" />
<post code="D5" m6809="[B,U]" clocks="4" />
<post code="D6" m6809="[A,U]" clocks="4" />
<post code="D8jj" m6809="[j,U]" clocks="4" />
<post code="D9kmkl" m6809="[k,U]" clocks="7" />
<post code="DB" m6809="[D,U]" clocks="7" />
<post code="DCjj" m6809="[j,PC]" clocks="4" />
<post code="DDkmkl" m6809="[k,PC]" clocks="7" />
<post code="DFtmtl" m6809="[m]" clocks="5" />
<post code="E0" m6809=",S+" clocks="2" />
<post code="E1" m6809=",S++" clocks="3" />
<post code="E2" m6809=",-S" clocks="2" />
<post code="E3" m6809=",--S" clocks="3" />
<post code="E4" m6809=",S" clocks="0" />
<post code="E5" m6809="B,S" clocks="1" />
<post code="E6" m6809="A,S" clocks="1" />
<post code="E8jj" m6809="j,S" clocks="1" />
<post code="E9kmkl" m6809="k,S" clocks="4" />
<post code="EB" m6809="D,S" clocks="4" />
<post code="ECjj" m6809="j,PC" clocks="1" />
<post code="EDkmkl" m6809="k,PC" clocks="4" />
<post code="F1" m6809="[,S++]" clocks="6" />
<post code="F3" m6809="[,--S]" clocks="6" />
<post code="F4" m6809="[,S]" clocks="3" />
<post code="F5" m6809="[B,S]" clocks="4" />
<post code="F6" m6809="[A,S]" clocks="4" />
<post code="F8jj" m6809="[j,S]" clocks="4" />
<post code="F9kmkl" m6809="[k,S]" clocks="7" />
<post code="FB" m6809="[D,S]" clocks="7" />
<post code="FCjj" m6809="[j,PC]" clocks="4" />
<post code="FDkmkl" m6809="[k,PC]" clocks="7" />
<post code="FFtmtl" m6809="[t]" clocks="5" />
</indexed>
</ProcessorFamily>