module Nes.CPU.Instructions.Map (opcodeMap, OpType (..), OpCodeEntry) where

import Data.ByteString
import Data.Map (Map, fromList)
import Nes.CPU.Instructions.Access
import Nes.CPU.Instructions.Addressing
import Nes.CPU.Instructions.Arith
import Nes.CPU.Instructions.Bitwise
import Nes.CPU.Instructions.Branch
import Nes.CPU.Instructions.Compare
import Nes.CPU.Instructions.Flags
import Nes.CPU.Instructions.Interrupt (brk)
import Nes.CPU.Instructions.Jump
import Nes.CPU.Instructions.Noop
import Nes.CPU.Instructions.Stack
import Nes.CPU.Instructions.Transfer
import Nes.CPU.Instructions.Unofficial
import Nes.CPU.Monad
import Nes.Memory (Byte)
import Prelude hiding (and)

data OpType = Official | Unofficial deriving (OpType -> OpType -> Bool
(OpType -> OpType -> Bool)
-> (OpType -> OpType -> Bool) -> Eq OpType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: OpType -> OpType -> Bool
== :: OpType -> OpType -> Bool
$c/= :: OpType -> OpType -> Bool
/= :: OpType -> OpType -> Bool
Eq)

type OpCodeEntry r = (ByteString, AddressingMode -> CPU r (), AddressingMode, OpType)

-- | Maps op code to the function that executes it and the addressing mode
opcodeMap :: Map Byte (OpCodeEntry r)
opcodeMap :: forall r. Map Byte (OpCodeEntry r)
opcodeMap =
    [(Byte, OpCodeEntry r)] -> Map Byte (OpCodeEntry r)
forall k a. Ord k => [(k, a)] -> Map k a
fromList
        [ (Byte
0x85, (ByteString
"STA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
sta, AddressingMode
ZeroPage, OpType
Official))
        , (Byte
0x95, (ByteString
"STA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
sta, AddressingMode
ZeroPageX, OpType
Official))
        , (Byte
0x8D, (ByteString
"STA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
sta, AddressingMode
Absolute, OpType
Official))
        , (Byte
0x9D, (ByteString
"STA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
sta, AddressingMode
AbsoluteX, OpType
Official))
        , (Byte
0x99, (ByteString
"STA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
sta, AddressingMode
AbsoluteY, OpType
Official))
        , (Byte
0x81, (ByteString
"STA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
sta, AddressingMode
IndirectX, OpType
Official))
        , (Byte
0x91, (ByteString
"STA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
sta, AddressingMode
IndirectY, OpType
Official))
        , (Byte
0x86, (ByteString
"STX", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
stx, AddressingMode
ZeroPage, OpType
Official))
        , (Byte
0x96, (ByteString
"STX", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
stx, AddressingMode
ZeroPageY, OpType
Official))
        , (Byte
0x8E, (ByteString
"STX", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
stx, AddressingMode
Absolute, OpType
Official))
        , (Byte
0x84, (ByteString
"STY", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
sty, AddressingMode
ZeroPage, OpType
Official))
        , (Byte
0x94, (ByteString
"STY", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
sty, AddressingMode
ZeroPageX, OpType
Official))
        , (Byte
0x8c, (ByteString
"STY", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
sty, AddressingMode
Absolute, OpType
Official))
        , (Byte
0xa9, (ByteString
"LDA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
lda, AddressingMode
Immediate, OpType
Official))
        , (Byte
0xa5, (ByteString
"LDA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
lda, AddressingMode
ZeroPage, OpType
Official))
        , (Byte
0xb5, (ByteString
"LDA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
lda, AddressingMode
ZeroPageX, OpType
Official))
        , (Byte
0xad, (ByteString
"LDA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
lda, AddressingMode
Absolute, OpType
Official))
        , (Byte
0xbd, (ByteString
"LDA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
lda, AddressingMode
AbsoluteX, OpType
Official))
        , (Byte
0xb9, (ByteString
"LDA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
lda, AddressingMode
AbsoluteY, OpType
Official))
        , (Byte
0xa1, (ByteString
"LDA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
lda, AddressingMode
IndirectX, OpType
Official))
        , (Byte
0xb1, (ByteString
"LDA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
lda, AddressingMode
IndirectY, OpType
Official))
        , (Byte
0xa2, (ByteString
"LDX", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
ldx, AddressingMode
Immediate, OpType
Official))
        , (Byte
0xa6, (ByteString
"LDX", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
ldx, AddressingMode
ZeroPage, OpType
Official))
        , (Byte
0xb6, (ByteString
"LDX", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
ldx, AddressingMode
ZeroPageY, OpType
Official))
        , (Byte
0xae, (ByteString
"LDX", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
ldx, AddressingMode
Absolute, OpType
Official))
        , (Byte
0xbe, (ByteString
"LDX", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
ldx, AddressingMode
AbsoluteY, OpType
Official))
        , (Byte
0xa0, (ByteString
"LDY", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
ldy, AddressingMode
Immediate, OpType
Official))
        , (Byte
0xa4, (ByteString
"LDY", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
ldy, AddressingMode
ZeroPage, OpType
Official))
        , (Byte
0xb4, (ByteString
"LDY", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
ldy, AddressingMode
ZeroPageX, OpType
Official))
        , (Byte
0xac, (ByteString
"LDY", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
ldy, AddressingMode
Absolute, OpType
Official))
        , (Byte
0xbc, (ByteString
"LDY", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
ldy, AddressingMode
AbsoluteX, OpType
Official))
        , (Byte
0xe6, (ByteString
"INC", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
inc, AddressingMode
ZeroPage, OpType
Official))
        , (Byte
0xf6, (ByteString
"INC", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
inc, AddressingMode
ZeroPageX, OpType
Official))
        , (Byte
0xee, (ByteString
"INC", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
inc, AddressingMode
Absolute, OpType
Official))
        , (Byte
0xfe, (ByteString
"INC", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
inc, AddressingMode
AbsoluteX, OpType
Official))
        , (Byte
0xc6, (ByteString
"DEC", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
dec, AddressingMode
ZeroPage, OpType
Official))
        , (Byte
0xd6, (ByteString
"DEC", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
dec, AddressingMode
ZeroPageX, OpType
Official))
        , (Byte
0xce, (ByteString
"DEC", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
dec, AddressingMode
Absolute, OpType
Official))
        , (Byte
0xde, (ByteString
"DEC", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
dec, AddressingMode
AbsoluteX, OpType
Official))
        , (Byte
0x50, (ByteString
"BVC", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
bvc, AddressingMode
Relative, OpType
Official))
        , (Byte
0x70, (ByteString
"BVS", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
bvs, AddressingMode
Relative, OpType
Official))
        , (Byte
0x90, (ByteString
"BCC", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
bcc, AddressingMode
Relative, OpType
Official))
        , (Byte
0xb0, (ByteString
"BCS", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
bcs, AddressingMode
Relative, OpType
Official))
        , (Byte
0xf0, (ByteString
"BEQ", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
beq, AddressingMode
Relative, OpType
Official))
        , (Byte
0xd0, (ByteString
"BNE", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
bne, AddressingMode
Relative, OpType
Official))
        , (Byte
0x30, (ByteString
"BMI", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
bmi, AddressingMode
Relative, OpType
Official))
        , (Byte
0x10, (ByteString
"BPL", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
bpl, AddressingMode
Relative, OpType
Official))
        , (Byte
0xc9, (ByteString
"CMP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
cmp, AddressingMode
Immediate, OpType
Official))
        , (Byte
0xc5, (ByteString
"CMP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
cmp, AddressingMode
ZeroPage, OpType
Official))
        , (Byte
0xd5, (ByteString
"CMP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
cmp, AddressingMode
ZeroPageX, OpType
Official))
        , (Byte
0xcd, (ByteString
"CMP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
cmp, AddressingMode
Absolute, OpType
Official))
        , (Byte
0xdd, (ByteString
"CMP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
cmp, AddressingMode
AbsoluteX, OpType
Official))
        , (Byte
0xd9, (ByteString
"CMP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
cmp, AddressingMode
AbsoluteY, OpType
Official))
        , (Byte
0xc1, (ByteString
"CMP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
cmp, AddressingMode
IndirectX, OpType
Official))
        , (Byte
0xd1, (ByteString
"CMP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
cmp, AddressingMode
IndirectY, OpType
Official))
        , (Byte
0xe0, (ByteString
"CPX", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
cpx, AddressingMode
Immediate, OpType
Official))
        , (Byte
0xe4, (ByteString
"CPX", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
cpx, AddressingMode
ZeroPage, OpType
Official))
        , (Byte
0xec, (ByteString
"CPX", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
cpx, AddressingMode
Absolute, OpType
Official))
        , (Byte
0xc0, (ByteString
"CPY", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
cpy, AddressingMode
Immediate, OpType
Official))
        , (Byte
0xc4, (ByteString
"CPY", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
cpy, AddressingMode
ZeroPage, OpType
Official))
        , (Byte
0xcc, (ByteString
"CPY", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
cpy, AddressingMode
Absolute, OpType
Official))
        , (Byte
0x4c, (ByteString
"JMP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
jmp, AddressingMode
Absolute, OpType
Official))
        , (Byte
0x6c, (ByteString
"JMP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
jmp, AddressingMode
Indirect, OpType
Official))
        , (Byte
0x20, (ByteString
"JSR", CPU r () -> AddressingMode -> CPU r ()
forall a b. a -> b -> a
const CPU r ()
forall r. CPU r ()
jsr, AddressingMode
Absolute, OpType
Official))
        , (Byte
0x29, (ByteString
"AND", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
and, AddressingMode
Immediate, OpType
Official))
        , (Byte
0x25, (ByteString
"AND", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
and, AddressingMode
ZeroPage, OpType
Official))
        , (Byte
0x35, (ByteString
"AND", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
and, AddressingMode
ZeroPageX, OpType
Official))
        , (Byte
0x2d, (ByteString
"AND", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
and, AddressingMode
Absolute, OpType
Official))
        , (Byte
0x3d, (ByteString
"AND", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
and, AddressingMode
AbsoluteX, OpType
Official))
        , (Byte
0x39, (ByteString
"AND", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
and, AddressingMode
AbsoluteY, OpType
Official))
        , (Byte
0x21, (ByteString
"AND", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
and, AddressingMode
IndirectX, OpType
Official))
        , (Byte
0x31, (ByteString
"AND", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
and, AddressingMode
IndirectY, OpType
Official))
        , (Byte
0x09, (ByteString
"ORA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
ora, AddressingMode
Immediate, OpType
Official))
        , (Byte
0x05, (ByteString
"ORA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
ora, AddressingMode
ZeroPage, OpType
Official))
        , (Byte
0x15, (ByteString
"ORA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
ora, AddressingMode
ZeroPageX, OpType
Official))
        , (Byte
0x0d, (ByteString
"ORA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
ora, AddressingMode
Absolute, OpType
Official))
        , (Byte
0x1d, (ByteString
"ORA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
ora, AddressingMode
AbsoluteX, OpType
Official))
        , (Byte
0x19, (ByteString
"ORA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
ora, AddressingMode
AbsoluteY, OpType
Official))
        , (Byte
0x01, (ByteString
"ORA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
ora, AddressingMode
IndirectX, OpType
Official))
        , (Byte
0x11, (ByteString
"ORA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
ora, AddressingMode
IndirectY, OpType
Official))
        , (Byte
0x49, (ByteString
"EOR", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
eor, AddressingMode
Immediate, OpType
Official))
        , (Byte
0x45, (ByteString
"EOR", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
eor, AddressingMode
ZeroPage, OpType
Official))
        , (Byte
0x55, (ByteString
"EOR", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
eor, AddressingMode
ZeroPageX, OpType
Official))
        , (Byte
0x4d, (ByteString
"EOR", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
eor, AddressingMode
Absolute, OpType
Official))
        , (Byte
0x5d, (ByteString
"EOR", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
eor, AddressingMode
AbsoluteX, OpType
Official))
        , (Byte
0x59, (ByteString
"EOR", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
eor, AddressingMode
AbsoluteY, OpType
Official))
        , (Byte
0x41, (ByteString
"EOR", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
eor, AddressingMode
IndirectX, OpType
Official))
        , (Byte
0x51, (ByteString
"EOR", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
eor, AddressingMode
IndirectY, OpType
Official))
        , (Byte
0x2a, (ByteString
"ROL", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
rol, AddressingMode
Accumulator, OpType
Official))
        , (Byte
0x26, (ByteString
"ROL", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
rol, AddressingMode
ZeroPage, OpType
Official))
        , (Byte
0x36, (ByteString
"ROL", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
rol, AddressingMode
ZeroPageX, OpType
Official))
        , (Byte
0x2e, (ByteString
"ROL", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
rol, AddressingMode
Absolute, OpType
Official))
        , (Byte
0x3e, (ByteString
"ROL", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
rol, AddressingMode
AbsoluteX, OpType
Official))
        , (Byte
0x6a, (ByteString
"ROR", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
ror, AddressingMode
Accumulator, OpType
Official))
        , (Byte
0x66, (ByteString
"ROR", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
ror, AddressingMode
ZeroPage, OpType
Official))
        , (Byte
0x76, (ByteString
"ROR", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
ror, AddressingMode
ZeroPageX, OpType
Official))
        , (Byte
0x6e, (ByteString
"ROR", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
ror, AddressingMode
Absolute, OpType
Official))
        , (Byte
0x7e, (ByteString
"ROR", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
ror, AddressingMode
AbsoluteX, OpType
Official))
        , (Byte
0x24, (ByteString
"BIT", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
bit, AddressingMode
ZeroPage, OpType
Official))
        , (Byte
0x2c, (ByteString
"BIT", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
bit, AddressingMode
Absolute, OpType
Official))
        , (Byte
0xe9, (ByteString
"SBC", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
sbc, AddressingMode
Immediate, OpType
Official))
        , (Byte
0xe5, (ByteString
"SBC", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
sbc, AddressingMode
ZeroPage, OpType
Official))
        , (Byte
0xf5, (ByteString
"SBC", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
sbc, AddressingMode
ZeroPageX, OpType
Official))
        , (Byte
0xed, (ByteString
"SBC", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
sbc, AddressingMode
Absolute, OpType
Official))
        , (Byte
0xfd, (ByteString
"SBC", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
sbc, AddressingMode
AbsoluteX, OpType
Official))
        , (Byte
0xf9, (ByteString
"SBC", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
sbc, AddressingMode
AbsoluteY, OpType
Official))
        , (Byte
0xe1, (ByteString
"SBC", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
sbc, AddressingMode
IndirectX, OpType
Official))
        , (Byte
0xf1, (ByteString
"SBC", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
sbc, AddressingMode
IndirectY, OpType
Official))
        , (Byte
0xeb, (ByteString
"SBC", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
sbc, AddressingMode
Immediate, OpType
Unofficial))
        , (Byte
0x69, (ByteString
"ADC", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
adc, AddressingMode
Immediate, OpType
Official))
        , (Byte
0x65, (ByteString
"ADC", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
adc, AddressingMode
ZeroPage, OpType
Official))
        , (Byte
0x75, (ByteString
"ADC", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
adc, AddressingMode
ZeroPageX, OpType
Official))
        , (Byte
0x6d, (ByteString
"ADC", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
adc, AddressingMode
Absolute, OpType
Official))
        , (Byte
0x7d, (ByteString
"ADC", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
adc, AddressingMode
AbsoluteX, OpType
Official))
        , (Byte
0x79, (ByteString
"ADC", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
adc, AddressingMode
AbsoluteY, OpType
Official))
        , (Byte
0x61, (ByteString
"ADC", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
adc, AddressingMode
IndirectX, OpType
Official))
        , (Byte
0x71, (ByteString
"ADC", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
adc, AddressingMode
IndirectY, OpType
Official))
        , (Byte
0x0A, (ByteString
"ASL", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
asl, AddressingMode
Accumulator, OpType
Official))
        , (Byte
0x06, (ByteString
"ASL", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
asl, AddressingMode
ZeroPage, OpType
Official))
        , (Byte
0x16, (ByteString
"ASL", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
asl, AddressingMode
ZeroPageX, OpType
Official))
        , (Byte
0x0e, (ByteString
"ASL", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
asl, AddressingMode
Absolute, OpType
Official))
        , (Byte
0x1e, (ByteString
"ASL", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
asl, AddressingMode
AbsoluteX, OpType
Official))
        , (Byte
0x4A, (ByteString
"LSR", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
lsr, AddressingMode
Accumulator, OpType
Official))
        , (Byte
0x46, (ByteString
"LSR", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
lsr, AddressingMode
ZeroPage, OpType
Official))
        , (Byte
0x56, (ByteString
"LSR", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
lsr, AddressingMode
ZeroPageX, OpType
Official))
        , (Byte
0x4e, (ByteString
"LSR", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
lsr, AddressingMode
Absolute, OpType
Official))
        , (Byte
0x5e, (ByteString
"LSR", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
lsr, AddressingMode
AbsoluteX, OpType
Official))
        , -- W/o addressing
          (Byte
0x18, (ByteString
"CLC", CPU r () -> AddressingMode -> CPU r ()
forall a b. a -> b -> a
const CPU r ()
forall r. CPU r ()
clc, AddressingMode
None, OpType
Official))
        , (Byte
0xd8, (ByteString
"CLD", CPU r () -> AddressingMode -> CPU r ()
forall a b. a -> b -> a
const CPU r ()
forall r. CPU r ()
cld, AddressingMode
None, OpType
Official))
        , (Byte
0x58, (ByteString
"CLI", CPU r () -> AddressingMode -> CPU r ()
forall a b. a -> b -> a
const CPU r ()
forall r. CPU r ()
cli, AddressingMode
None, OpType
Official))
        , (Byte
0xB8, (ByteString
"CLV", CPU r () -> AddressingMode -> CPU r ()
forall a b. a -> b -> a
const CPU r ()
forall r. CPU r ()
clv, AddressingMode
None, OpType
Official))
        , (Byte
0x38, (ByteString
"SEC", CPU r () -> AddressingMode -> CPU r ()
forall a b. a -> b -> a
const CPU r ()
forall r. CPU r ()
sec, AddressingMode
None, OpType
Official))
        , (Byte
0xf8, (ByteString
"SED", CPU r () -> AddressingMode -> CPU r ()
forall a b. a -> b -> a
const CPU r ()
forall r. CPU r ()
sed, AddressingMode
None, OpType
Official))
        , (Byte
0x78, (ByteString
"SEI", CPU r () -> AddressingMode -> CPU r ()
forall a b. a -> b -> a
const CPU r ()
forall r. CPU r ()
sei, AddressingMode
None, OpType
Official))
        , (Byte
0xca, (ByteString
"DEX", CPU r () -> AddressingMode -> CPU r ()
forall a b. a -> b -> a
const CPU r ()
forall r. CPU r ()
dex, AddressingMode
None, OpType
Official))
        , (Byte
0x88, (ByteString
"DEY", CPU r () -> AddressingMode -> CPU r ()
forall a b. a -> b -> a
const CPU r ()
forall r. CPU r ()
dey, AddressingMode
None, OpType
Official))
        , (Byte
0xaa, (ByteString
"TAX", CPU r () -> AddressingMode -> CPU r ()
forall a b. a -> b -> a
const CPU r ()
forall r. CPU r ()
tax, AddressingMode
None, OpType
Official))
        , (Byte
0xa8, (ByteString
"TAY", CPU r () -> AddressingMode -> CPU r ()
forall a b. a -> b -> a
const CPU r ()
forall r. CPU r ()
tay, AddressingMode
None, OpType
Official))
        , (Byte
0x8a, (ByteString
"TXA", CPU r () -> AddressingMode -> CPU r ()
forall a b. a -> b -> a
const CPU r ()
forall r. CPU r ()
txa, AddressingMode
None, OpType
Official))
        , (Byte
0x98, (ByteString
"TYA", CPU r () -> AddressingMode -> CPU r ()
forall a b. a -> b -> a
const CPU r ()
forall r. CPU r ()
tya, AddressingMode
None, OpType
Official))
        , (Byte
0x9a, (ByteString
"TXS", CPU r () -> AddressingMode -> CPU r ()
forall a b. a -> b -> a
const CPU r ()
forall r. CPU r ()
txs, AddressingMode
None, OpType
Official))
        , (Byte
0xba, (ByteString
"TSX", CPU r () -> AddressingMode -> CPU r ()
forall a b. a -> b -> a
const CPU r ()
forall r. CPU r ()
tsx, AddressingMode
None, OpType
Official))
        , (Byte
0xe8, (ByteString
"INX", CPU r () -> AddressingMode -> CPU r ()
forall a b. a -> b -> a
const CPU r ()
forall r. CPU r ()
inx, AddressingMode
None, OpType
Official))
        , (Byte
0xc8, (ByteString
"INY", CPU r () -> AddressingMode -> CPU r ()
forall a b. a -> b -> a
const CPU r ()
forall r. CPU r ()
iny, AddressingMode
None, OpType
Official))
        , (Byte
0x60, (ByteString
"RTS", CPU r () -> AddressingMode -> CPU r ()
forall a b. a -> b -> a
const CPU r ()
forall r. CPU r ()
rts, AddressingMode
None, OpType
Official))
        , (Byte
0x40, (ByteString
"RTI", CPU r () -> AddressingMode -> CPU r ()
forall a b. a -> b -> a
const CPU r ()
forall r. CPU r ()
rti, AddressingMode
None, OpType
Official))
        , (Byte
0x48, (ByteString
"PHA", CPU r () -> AddressingMode -> CPU r ()
forall a b. a -> b -> a
const CPU r ()
forall r. CPU r ()
pha, AddressingMode
None, OpType
Official))
        , (Byte
0x08, (ByteString
"PHP", CPU r () -> AddressingMode -> CPU r ()
forall a b. a -> b -> a
const CPU r ()
forall r. CPU r ()
php, AddressingMode
None, OpType
Official))
        , (Byte
0x68, (ByteString
"PLA", CPU r () -> AddressingMode -> CPU r ()
forall a b. a -> b -> a
const CPU r ()
forall r. CPU r ()
pla, AddressingMode
None, OpType
Official))
        , (Byte
0x28, (ByteString
"PLP", CPU r () -> AddressingMode -> CPU r ()
forall a b. a -> b -> a
const CPU r ()
forall r. CPU r ()
plp, AddressingMode
None, OpType
Official))
        , (Byte
0xea, (ByteString
"NOP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
noop, AddressingMode
None, OpType
Official))
        , (Byte
0x04, (ByteString
"NOP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
noop, AddressingMode
ZeroPage, OpType
Unofficial))
        , (Byte
0x44, (ByteString
"NOP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
noop, AddressingMode
ZeroPage, OpType
Unofficial))
        , (Byte
0x64, (ByteString
"NOP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
noop, AddressingMode
ZeroPage, OpType
Unofficial))
        , (Byte
0x80, (ByteString
"NOP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
noop, AddressingMode
Immediate, OpType
Unofficial))
        , (Byte
0x82, (ByteString
"NOP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
noop, AddressingMode
Immediate, OpType
Unofficial))
        , (Byte
0xc2, (ByteString
"NOP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
noop, AddressingMode
Immediate, OpType
Unofficial))
        , (Byte
0xe2, (ByteString
"NOP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
noop, AddressingMode
Immediate, OpType
Unofficial))
        , (Byte
0x89, (ByteString
"NOP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
noop, AddressingMode
Immediate, OpType
Unofficial))
        , (Byte
0x0c, (ByteString
"NOP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
noop, AddressingMode
Absolute, OpType
Unofficial))
        , (Byte
0x14, (ByteString
"NOP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
noop, AddressingMode
ZeroPageX, OpType
Unofficial))
        , (Byte
0x34, (ByteString
"NOP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
noop, AddressingMode
ZeroPageX, OpType
Unofficial))
        , (Byte
0x54, (ByteString
"NOP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
noop, AddressingMode
ZeroPageX, OpType
Unofficial))
        , (Byte
0x74, (ByteString
"NOP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
noop, AddressingMode
ZeroPageX, OpType
Unofficial))
        , (Byte
0xd4, (ByteString
"NOP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
noop, AddressingMode
ZeroPageX, OpType
Unofficial))
        , (Byte
0xf4, (ByteString
"NOP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
noop, AddressingMode
ZeroPageX, OpType
Unofficial))
        , (Byte
0x1a, (ByteString
"NOP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
noop, AddressingMode
None, OpType
Unofficial))
        , (Byte
0x3a, (ByteString
"NOP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
noop, AddressingMode
None, OpType
Unofficial))
        , (Byte
0x5a, (ByteString
"NOP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
noop, AddressingMode
None, OpType
Unofficial))
        , (Byte
0x7a, (ByteString
"NOP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
noop, AddressingMode
None, OpType
Unofficial))
        , (Byte
0xda, (ByteString
"NOP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
noop, AddressingMode
None, OpType
Unofficial))
        , (Byte
0xfa, (ByteString
"NOP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
noop, AddressingMode
None, OpType
Unofficial))
        , (Byte
0x1c, (ByteString
"NOP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
noop, AddressingMode
AbsoluteX, OpType
Unofficial))
        , (Byte
0x3c, (ByteString
"NOP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
noop, AddressingMode
AbsoluteX, OpType
Unofficial))
        , (Byte
0x5c, (ByteString
"NOP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
noop, AddressingMode
AbsoluteX, OpType
Unofficial))
        , (Byte
0x7c, (ByteString
"NOP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
noop, AddressingMode
AbsoluteX, OpType
Unofficial))
        , (Byte
0xdc, (ByteString
"NOP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
noop, AddressingMode
AbsoluteX, OpType
Unofficial))
        , (Byte
0xfc, (ByteString
"NOP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
noop, AddressingMode
AbsoluteX, OpType
Unofficial))
        , (Byte
0xa3, (ByteString
"LAX", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
lax, AddressingMode
IndirectX, OpType
Unofficial))
        , (Byte
0xa7, (ByteString
"LAX", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
lax, AddressingMode
ZeroPage, OpType
Unofficial))
        , (Byte
0xaf, (ByteString
"LAX", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
lax, AddressingMode
Absolute, OpType
Unofficial))
        , (Byte
0xb3, (ByteString
"LAX", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
lax, AddressingMode
IndirectY, OpType
Unofficial))
        , (Byte
0xb7, (ByteString
"LAX", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
lax, AddressingMode
ZeroPageY, OpType
Unofficial))
        , (Byte
0xbf, (ByteString
"LAX", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
lax, AddressingMode
AbsoluteY, OpType
Unofficial))
        , (Byte
0x83, (ByteString
"SAX", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
sax, AddressingMode
IndirectX, OpType
Unofficial))
        , (Byte
0x87, (ByteString
"SAX", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
sax, AddressingMode
ZeroPage, OpType
Unofficial))
        , (Byte
0x8f, (ByteString
"SAX", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
sax, AddressingMode
Absolute, OpType
Unofficial))
        , (Byte
0x97, (ByteString
"SAX", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
sax, AddressingMode
ZeroPageY, OpType
Unofficial))
        , (Byte
0xc3, (ByteString
"DCP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
dcp, AddressingMode
IndirectX, OpType
Unofficial))
        , (Byte
0xc7, (ByteString
"DCP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
dcp, AddressingMode
ZeroPage, OpType
Unofficial))
        , (Byte
0xcf, (ByteString
"DCP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
dcp, AddressingMode
Absolute, OpType
Unofficial))
        , (Byte
0xd3, (ByteString
"DCP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
dcp, AddressingMode
IndirectY, OpType
Unofficial))
        , (Byte
0xd7, (ByteString
"DCP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
dcp, AddressingMode
ZeroPageX, OpType
Unofficial))
        , (Byte
0xdb, (ByteString
"DCP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
dcp, AddressingMode
AbsoluteY, OpType
Unofficial))
        , (Byte
0xdf, (ByteString
"DCP", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
dcp, AddressingMode
AbsoluteX, OpType
Unofficial))
        , (Byte
0xe3, (ByteString
"ISB", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
isb, AddressingMode
IndirectX, OpType
Unofficial))
        , (Byte
0xe7, (ByteString
"ISB", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
isb, AddressingMode
ZeroPage, OpType
Unofficial))
        , (Byte
0xef, (ByteString
"ISB", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
isb, AddressingMode
Absolute, OpType
Unofficial))
        , (Byte
0xf3, (ByteString
"ISB", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
isb, AddressingMode
IndirectY, OpType
Unofficial))
        , (Byte
0xf7, (ByteString
"ISB", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
isb, AddressingMode
ZeroPageX, OpType
Unofficial))
        , (Byte
0xf7, (ByteString
"ISB", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
isb, AddressingMode
ZeroPageX, OpType
Unofficial))
        , (Byte
0xfb, (ByteString
"ISB", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
isb, AddressingMode
AbsoluteY, OpType
Unofficial))
        , (Byte
0xff, (ByteString
"ISB", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
isb, AddressingMode
AbsoluteX, OpType
Unofficial))
        , (Byte
0x03, (ByteString
"SLO", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
slo, AddressingMode
IndirectX, OpType
Unofficial))
        , (Byte
0x07, (ByteString
"SLO", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
slo, AddressingMode
ZeroPage, OpType
Unofficial))
        , (Byte
0x0f, (ByteString
"SLO", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
slo, AddressingMode
Absolute, OpType
Unofficial))
        , (Byte
0x13, (ByteString
"SLO", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
slo, AddressingMode
IndirectY, OpType
Unofficial))
        , (Byte
0x17, (ByteString
"SLO", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
slo, AddressingMode
ZeroPageX, OpType
Unofficial))
        , (Byte
0x1b, (ByteString
"SLO", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
slo, AddressingMode
AbsoluteY, OpType
Unofficial))
        , (Byte
0x1f, (ByteString
"SLO", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
slo, AddressingMode
AbsoluteX, OpType
Unofficial))
        , (Byte
0x23, (ByteString
"RLA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
rla, AddressingMode
IndirectX, OpType
Unofficial))
        , (Byte
0x27, (ByteString
"RLA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
rla, AddressingMode
ZeroPage, OpType
Unofficial))
        , (Byte
0x2f, (ByteString
"RLA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
rla, AddressingMode
Absolute, OpType
Unofficial))
        , (Byte
0x33, (ByteString
"RLA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
rla, AddressingMode
IndirectY, OpType
Unofficial))
        , (Byte
0x37, (ByteString
"RLA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
rla, AddressingMode
ZeroPageX, OpType
Unofficial))
        , (Byte
0x3b, (ByteString
"RLA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
rla, AddressingMode
AbsoluteY, OpType
Unofficial))
        , (Byte
0x3f, (ByteString
"RLA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
rla, AddressingMode
AbsoluteX, OpType
Unofficial))
        , (Byte
0x0b, (ByteString
"ANC", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
anc, AddressingMode
Immediate, OpType
Unofficial))
        , (Byte
0x2b, (ByteString
"ANC", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
anc, AddressingMode
Immediate, OpType
Unofficial))
        , (Byte
0x43, (ByteString
"SRE", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
sre, AddressingMode
IndirectX, OpType
Unofficial))
        , (Byte
0x47, (ByteString
"SRE", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
sre, AddressingMode
ZeroPage, OpType
Unofficial))
        , (Byte
0x4f, (ByteString
"SRE", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
sre, AddressingMode
Absolute, OpType
Unofficial))
        , (Byte
0x53, (ByteString
"SRE", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
sre, AddressingMode
IndirectY, OpType
Unofficial))
        , (Byte
0x57, (ByteString
"SRE", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
sre, AddressingMode
ZeroPageX, OpType
Unofficial))
        , (Byte
0x5b, (ByteString
"SRE", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
sre, AddressingMode
AbsoluteY, OpType
Unofficial))
        , (Byte
0x5f, (ByteString
"SRE", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
sre, AddressingMode
AbsoluteX, OpType
Unofficial))
        , (Byte
0x63, (ByteString
"RRA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
rra, AddressingMode
IndirectX, OpType
Unofficial))
        , (Byte
0x67, (ByteString
"RRA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
rra, AddressingMode
ZeroPage, OpType
Unofficial))
        , (Byte
0x6f, (ByteString
"RRA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
rra, AddressingMode
Absolute, OpType
Unofficial))
        , (Byte
0x73, (ByteString
"RRA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
rra, AddressingMode
IndirectY, OpType
Unofficial))
        , (Byte
0x77, (ByteString
"RRA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
rra, AddressingMode
ZeroPageX, OpType
Unofficial))
        , (Byte
0x7b, (ByteString
"RRA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
rra, AddressingMode
AbsoluteY, OpType
Unofficial))
        , (Byte
0x7f, (ByteString
"RRA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
rra, AddressingMode
AbsoluteX, OpType
Unofficial))
        , (Byte
0x4b, (ByteString
"ALR", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
alr, AddressingMode
Immediate, OpType
Unofficial))
        , (Byte
0x6b, (ByteString
"ARR", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
arr, AddressingMode
Immediate, OpType
Unofficial))
        , (Byte
0x8b, (ByteString
"XAA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
xaa, AddressingMode
Immediate, OpType
Unofficial))
        , (Byte
0x9e, (ByteString
"SHX", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
shx, AddressingMode
AbsoluteY, OpType
Unofficial))
        , (Byte
0x9b, (ByteString
"SHS", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
shs, AddressingMode
AbsoluteY, OpType
Unofficial))
        , (Byte
0x9c, (ByteString
"SHY", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
shy, AddressingMode
AbsoluteX, OpType
Unofficial))
        , (Byte
0x93, (ByteString
"SHA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
sha, AddressingMode
IndirectY, OpType
Unofficial))
        , (Byte
0x9f, (ByteString
"SHA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
sha, AddressingMode
AbsoluteY, OpType
Unofficial))
        , (Byte
0xbb, (ByteString
"LAS", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
las, AddressingMode
AbsoluteY, OpType
Unofficial))
        , (Byte
0xab, (ByteString
"LXA", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
lxa, AddressingMode
Immediate, OpType
Unofficial))
        , (Byte
0xcb, (ByteString
"AXS", AddressingMode -> CPU r ()
forall r. AddressingMode -> CPU r ()
axs, AddressingMode
Immediate, OpType
Unofficial))
        , (Byte
0x00, (ByteString
"BRK", CPU r () -> AddressingMode -> CPU r ()
forall a b. a -> b -> a
const CPU r ()
forall r. CPU r ()
brk, AddressingMode
Immediate, OpType
Official))
        , (Byte
0x02, (ByteString
"KIL", CPU r () -> AddressingMode -> CPU r ()
forall a b. a -> b -> a
const CPU r ()
forall r. CPU r ()
kil, AddressingMode
None, OpType
Unofficial))
        , (Byte
0x12, (ByteString
"KIL", CPU r () -> AddressingMode -> CPU r ()
forall a b. a -> b -> a
const CPU r ()
forall r. CPU r ()
kil, AddressingMode
None, OpType
Unofficial))
        , (Byte
0x22, (ByteString
"KIL", CPU r () -> AddressingMode -> CPU r ()
forall a b. a -> b -> a
const CPU r ()
forall r. CPU r ()
kil, AddressingMode
None, OpType
Unofficial))
        , (Byte
0x32, (ByteString
"KIL", CPU r () -> AddressingMode -> CPU r ()
forall a b. a -> b -> a
const CPU r ()
forall r. CPU r ()
kil, AddressingMode
None, OpType
Unofficial))
        , (Byte
0x42, (ByteString
"KIL", CPU r () -> AddressingMode -> CPU r ()
forall a b. a -> b -> a
const CPU r ()
forall r. CPU r ()
kil, AddressingMode
None, OpType
Unofficial))
        , (Byte
0x52, (ByteString
"KIL", CPU r () -> AddressingMode -> CPU r ()
forall a b. a -> b -> a
const CPU r ()
forall r. CPU r ()
kil, AddressingMode
None, OpType
Unofficial))
        , (Byte
0x62, (ByteString
"KIL", CPU r () -> AddressingMode -> CPU r ()
forall a b. a -> b -> a
const CPU r ()
forall r. CPU r ()
kil, AddressingMode
None, OpType
Unofficial))
        , (Byte
0x72, (ByteString
"KIL", CPU r () -> AddressingMode -> CPU r ()
forall a b. a -> b -> a
const CPU r ()
forall r. CPU r ()
kil, AddressingMode
None, OpType
Unofficial))
        , (Byte
0x92, (ByteString
"KIL", CPU r () -> AddressingMode -> CPU r ()
forall a b. a -> b -> a
const CPU r ()
forall r. CPU r ()
kil, AddressingMode
None, OpType
Unofficial))
        , (Byte
0xB2, (ByteString
"KIL", CPU r () -> AddressingMode -> CPU r ()
forall a b. a -> b -> a
const CPU r ()
forall r. CPU r ()
kil, AddressingMode
None, OpType
Unofficial))
        , (Byte
0xD2, (ByteString
"KIL", CPU r () -> AddressingMode -> CPU r ()
forall a b. a -> b -> a
const CPU r ()
forall r. CPU r ()
kil, AddressingMode
None, OpType
Unofficial))
        , (Byte
0xF2, (ByteString
"KIL", CPU r () -> AddressingMode -> CPU r ()
forall a b. a -> b -> a
const CPU r ()
forall r. CPU r ()
kil, AddressingMode
None, OpType
Unofficial))
        ]