All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.pawelkrol.CPU6502.OpCode.scala Maven / Gradle / Ivy

There is a newer version: 1.0.0
Show newest version
package com.github.pawelkrol.CPU6502

/** Operation code */
trait OpCode {

  def cycles: Int

  def memSize: Int

  def symName: String

  def bytes(core: Core) = core.memory.read(core.register.PC, memSize)

  protected def argBytes(core: Core) = bytes(core).tail

  def argValue(core: Core): String

  override def toString = symName
}

object OpCode {

  def apply(value: ByteVal, core: Core) = value match {
    case ByteVal(0x00) => OpCode_BRK_IMP
    case ByteVal(0x01) => OpCode_ORA_INDX
    case ByteVal(0x05) => OpCode_ORA_ZP
    case ByteVal(0x06) => OpCode_ASL_ZP
    case ByteVal(0x08) => OpCode_PHP
    case ByteVal(0x09) => OpCode_ORA_IMM
    case ByteVal(0x0a) => OpCode_ASL_AC
    case ByteVal(0x0d) => OpCode_ORA_ABS
    case ByteVal(0x0e) => OpCode_ASL_ABS
    case ByteVal(0x10) => OpCode_BPL_REL
    case ByteVal(0x11) => OpCode_ORA_INDY
    case ByteVal(0x15) => OpCode_ORA_ZPX
    case ByteVal(0x16) => OpCode_ASL_ZPX
    case ByteVal(0x18) => OpCode_CLC
    case ByteVal(0x19) => OpCode_ORA_ABSY
    case ByteVal(0x1d) => OpCode_ORA_ABSX
    case ByteVal(0x1e) => OpCode_ASL_ABSX
    case ByteVal(0x20) => OpCode_JSR_ABS
    case ByteVal(0x21) => OpCode_AND_INDX
    case ByteVal(0x24) => OpCode_BIT_ZP
    case ByteVal(0x25) => OpCode_AND_ZP
    case ByteVal(0x26) => OpCode_ROL_ZP
    case ByteVal(0x28) => OpCode_PLP
    case ByteVal(0x29) => OpCode_AND_IMM
    case ByteVal(0x2a) => OpCode_ROL_AC
    case ByteVal(0x2c) => OpCode_BIT_ABS
    case ByteVal(0x2d) => OpCode_AND_ABS
    case ByteVal(0x2e) => OpCode_ROL_ABS
    case ByteVal(0x30) => OpCode_BMI_REL
    case ByteVal(0x31) => OpCode_AND_INDY
    case ByteVal(0x35) => OpCode_AND_ZPX
    case ByteVal(0x36) => OpCode_ROL_ZPX
    case ByteVal(0x38) => OpCode_SEC
    case ByteVal(0x39) => OpCode_AND_ABSY
    case ByteVal(0x3d) => OpCode_AND_ABSX
    case ByteVal(0x3e) => OpCode_ROL_ABSX
    case ByteVal(0x40) => OpCode_RTI
    case ByteVal(0x41) => OpCode_EOR_INDX
    case ByteVal(0x45) => OpCode_EOR_ZP
    case ByteVal(0x46) => OpCode_LSR_ZP
    case ByteVal(0x48) => OpCode_PHA
    case ByteVal(0x49) => OpCode_EOR_IMM
    case ByteVal(0x4a) => OpCode_LSR_AC
    case ByteVal(0x4c) => OpCode_JMP_ABS
    case ByteVal(0x4d) => OpCode_EOR_ABS
    case ByteVal(0x4e) => OpCode_LSR_ABS
    case ByteVal(0x50) => OpCode_BVC_REL
    case ByteVal(0x51) => OpCode_EOR_INDY
    case ByteVal(0x55) => OpCode_EOR_ZPX
    case ByteVal(0x56) => OpCode_LSR_ZPX
    case ByteVal(0x58) => OpCode_CLI
    case ByteVal(0x59) => OpCode_EOR_ABSY
    case ByteVal(0x5d) => OpCode_EOR_ABSX
    case ByteVal(0x5e) => OpCode_LSR_ABSX
    case ByteVal(0x60) => OpCode_RTS
    case ByteVal(0x61) => OpCode_ADC_INDX
    case ByteVal(0x65) => OpCode_ADC_ZP
    case ByteVal(0x66) => OpCode_ROR_ZP
    case ByteVal(0x68) => OpCode_PLA
    case ByteVal(0x69) => OpCode_ADC_IMM
    case ByteVal(0x6a) => OpCode_ROR_AC
    case ByteVal(0x6c) => OpCode_JMP_IND
    case ByteVal(0x6d) => OpCode_ADC_ABS
    case ByteVal(0x6e) => OpCode_ROR_ABS
    case ByteVal(0x70) => OpCode_BVS_REL
    case ByteVal(0x71) => OpCode_ADC_INDY
    case ByteVal(0x75) => OpCode_ADC_ZPX
    case ByteVal(0x76) => OpCode_ROR_ZPX
    case ByteVal(0x78) => OpCode_SEI
    case ByteVal(0x79) => OpCode_ADC_ABSY
    case ByteVal(0x7d) => OpCode_ADC_ABSX
    case ByteVal(0x7e) => OpCode_ROR_ABSX
    case ByteVal(0x81) => OpCode_STA_INDX
    case ByteVal(0x84) => OpCode_STY_ZP
    case ByteVal(0x85) => OpCode_STA_ZP
    case ByteVal(0x86) => OpCode_STX_ZP
    case ByteVal(0x88) => OpCode_DEY
    case ByteVal(0x8a) => OpCode_TXA
    case ByteVal(0x8c) => OpCode_STY_ABS
    case ByteVal(0x8d) => OpCode_STA_ABS
    case ByteVal(0x8e) => OpCode_STX_ABS
    case ByteVal(0x90) => OpCode_BCC_REL
    case ByteVal(0x91) => OpCode_STA_INDY
    case ByteVal(0x94) => OpCode_STY_ZPX
    case ByteVal(0x95) => OpCode_STA_ZPX
    case ByteVal(0x96) => OpCode_STX_ZPY
    case ByteVal(0x98) => OpCode_TYA
    case ByteVal(0x99) => OpCode_STA_ABSY
    case ByteVal(0x9a) => OpCode_TXS
    case ByteVal(0x9d) => OpCode_STA_ABSX
    case ByteVal(0xa0) => OpCode_LDY_IMM
    case ByteVal(0xa1) => OpCode_LDA_INDX
    case ByteVal(0xa2) => OpCode_LDX_IMM
    case ByteVal(0xa4) => OpCode_LDY_ZP
    case ByteVal(0xa5) => OpCode_LDA_ZP
    case ByteVal(0xa6) => OpCode_LDX_ZP
    case ByteVal(0xa8) => OpCode_TAY
    case ByteVal(0xa9) => OpCode_LDA_IMM
    case ByteVal(0xaa) => OpCode_TAX
    case ByteVal(0xac) => OpCode_LDY_ABS
    case ByteVal(0xad) => OpCode_LDA_ABS
    case ByteVal(0xae) => OpCode_LDX_ABS
    case ByteVal(0xb0) => OpCode_BCS_REL
    case ByteVal(0xb1) => OpCode_LDA_INDY
    case ByteVal(0xb4) => OpCode_LDY_ZPX
    case ByteVal(0xb5) => OpCode_LDA_ZPX
    case ByteVal(0xb6) => OpCode_LDX_ZPY
    case ByteVal(0xb8) => OpCode_CLV
    case ByteVal(0xb9) => OpCode_LDA_ABSY
    case ByteVal(0xba) => OpCode_TSX
    case ByteVal(0xbc) => OpCode_LDY_ABSX
    case ByteVal(0xbd) => OpCode_LDA_ABSX
    case ByteVal(0xbe) => OpCode_LDX_ABSY
    case ByteVal(0xc0) => OpCode_CPY_IMM
    case ByteVal(0xc1) => OpCode_CMP_INDX
    case ByteVal(0xc4) => OpCode_CPY_ZP
    case ByteVal(0xc5) => OpCode_CMP_ZP
    case ByteVal(0xc6) => OpCode_DEC_ZP
    case ByteVal(0xc8) => OpCode_INY
    case ByteVal(0xc9) => OpCode_CMP_IMM
    case ByteVal(0xca) => OpCode_DEX
    case ByteVal(0xcc) => OpCode_CPY_ABS
    case ByteVal(0xcd) => OpCode_CMP_ABS
    case ByteVal(0xce) => OpCode_DEC_ABS
    case ByteVal(0xd0) => OpCode_BNE_REL
    case ByteVal(0xd1) => OpCode_CMP_INDY
    case ByteVal(0xd5) => OpCode_CMP_ZPX
    case ByteVal(0xd6) => OpCode_DEC_ZPX
    case ByteVal(0xd8) => OpCode_CLD
    case ByteVal(0xd9) => OpCode_CMP_ABSY
    case ByteVal(0xdd) => OpCode_CMP_ABSX
    case ByteVal(0xde) => OpCode_DEC_ABSX
    case ByteVal(0xe0) => OpCode_CPX_IMM
    case ByteVal(0xe1) => OpCode_SBC_INDX
    case ByteVal(0xe4) => OpCode_CPX_ZP
    case ByteVal(0xe5) => OpCode_SBC_ZP
    case ByteVal(0xe6) => OpCode_INC_ZP
    case ByteVal(0xe8) => OpCode_INX
    case ByteVal(0xe9) => OpCode_SBC_IMM
    case ByteVal(0xea) => OpCode_NOP
    case ByteVal(0xec) => OpCode_CPX_ABS
    case ByteVal(0xed) => OpCode_SBC_ABS
    case ByteVal(0xee) => OpCode_INC_ABS
    case ByteVal(0xf0) => OpCode_BEQ_REL
    case ByteVal(0xf1) => OpCode_SBC_INDY
    case ByteVal(0xf5) => OpCode_SBC_ZPX
    case ByteVal(0xf6) => OpCode_INC_ZPX
    case ByteVal(0xf8) => OpCode_SED
    case ByteVal(0xf9) => OpCode_SBC_ABSY
    case ByteVal(0xfd) => OpCode_SBC_ABSX
    case ByteVal(0xfe) => OpCode_INC_ABSX
    case _ => throw IllegalOpCodeError(value, core)
  }
}

trait OpCode_SP extends OpCode {

  def memSize = 0x01

  def argValue(core: Core) = ""
}

trait OpCodePop_SP extends OpCode_SP {

  val cycles = 0x04
}

trait OpCodePush_SP extends OpCode_SP {

  val cycles = 0x03
}

trait OpCode_IMP extends OpCode {

  val cycles = 0x02

  def memSize = 0x01

  def argValue(core: Core) = ""
}

trait OpCodeReturn_IMP extends OpCode_IMP {

  override val cycles = 0x06
}

trait OpCode_IMM extends OpCode {

  val cycles = 0x02

  def memSize = 0x02

  def argValue(core: Core) = "#$%02X".format(argBytes(core).head())
}

trait OpCode_ZP extends OpCode {

  val cycles = 0x03

  def memSize = 0x02

  def argValue(core: Core) = "$%02X".format(argBytes(core).head())
}

trait OpCode_ZPX extends OpCode {

  val cycles = 0x04

  def memSize = 0x02

  def argValue(core: Core) = "$%02X,X".format(argBytes(core).head())
}

trait OpCode_ZPY extends OpCode {

  val cycles = 0x04

  def memSize = 0x02

  def argValue(core: Core) = "$%02X,Y".format(argBytes(core).head())
}

trait OpCode_ABS extends OpCode {

  val cycles = 0x04

  def memSize = 0x03

  def argValue(core: Core) = "$%04X".format(Util.byteVals2Addr(argBytes(core)))
}

trait OpCodeCall_ABS extends OpCode_ABS {

  override val cycles = 0x06
}

trait OpCodeJump_ABS extends OpCode_ABS {

  override val cycles = 0x03
}

trait OpCode_IND extends OpCode {

  val cycles = 0x05

  def memSize = 0x03
}

trait OpCodeJump_IND extends OpCode_IND {

  def argValue(core: Core) = "($%04X)".format(Util.byteVals2Addr(argBytes(core)))
}

trait OpCode_ABSX extends OpCode {

  val cycles = 0x04

  def memSize = 0x03

  def argValue(core: Core) = "$%04X,X".format(Util.byteVals2Addr(argBytes(core)))
}

trait OpCodeStore_ABSX extends OpCode_ABSX {

  override val cycles = 0x05
}

trait OpCode_ABSY extends OpCode {

  val cycles = 0x04

  def memSize = 0x03

  def argValue(core: Core) = "$%04X,Y".format(Util.byteVals2Addr(argBytes(core)))
}

trait OpCodeStore_ABSY extends OpCode_ABSY {

  override val cycles = 0x05
}

trait OpCode_INDX extends OpCode {

  val cycles = 0x06

  def memSize = 0x02

  def argValue(core: Core) = "($%02X,X)".format(argBytes(core).head())
}

trait OpCode_INDY extends OpCode {

  val cycles = 0x05

  def memSize = 0x02

  def argValue(core: Core) = "($%02X),Y".format(argBytes(core).head())
}

trait OpCodeStore_INDY extends OpCode_INDY {

  override val cycles = 0x06
}

trait OpCode_REL extends OpCode {

  val cycles = 0x02

  def memSize = 0x02

  def argValue(core: Core) = "$%04X".format(core.register.PC + argBytes(core).head.value + memSize)
}

trait OpCode_AC extends OpCode {

  val cycles = 0x02

  def memSize = 0x01

  def argValue(core: Core) = "A"
}

trait OpCodeModify_ZP extends OpCode_ZP {

  override val cycles = 0x05
}

trait OpCodeModify_ABS extends OpCode_ABS {

  override val cycles = 0x06
}

trait OpCodeModify_ZPX extends OpCode_ZPX {

  override val cycles = 0x06
}

trait OpCodeModify_ABSX extends OpCode_ABSX {

  override val cycles = 0x07
}

object OpCode_BRK_IMP extends OpCode_IMP with SymName_BRK {

  override val cycles = 0x07
}

object OpCode_ORA_INDX extends OpCode_INDX with SymName_ORA

object OpCode_ORA_ZP extends OpCode_ZP with SymName_ORA

object OpCode_ASL_ZP extends OpCodeModify_ZP with SymName_ASL

object OpCode_PHP extends OpCodePush_SP with SymName_PHP

object OpCode_ORA_IMM extends OpCode_IMM with SymName_ORA

object OpCode_ASL_AC extends OpCode_AC with SymName_ASL

object OpCode_ORA_ABS extends OpCode_ABS with SymName_ORA

object OpCode_ASL_ABS extends OpCodeModify_ABS with SymName_ASL

object OpCode_BPL_REL extends OpCode_REL with SymName_BPL

object OpCode_ORA_INDY extends OpCode_INDY with SymName_ORA

object OpCode_ORA_ZPX extends OpCode_ZPX with SymName_ORA

object OpCode_ASL_ZPX extends OpCodeModify_ZPX with SymName_ASL

object OpCode_CLC extends OpCode_IMP with SymName_CLC

object OpCode_ORA_ABSY extends OpCode_ABSY with SymName_ORA

object OpCode_ORA_ABSX extends OpCode_ABSX with SymName_ORA

object OpCode_ASL_ABSX extends OpCodeModify_ABSX with SymName_ASL

object OpCode_JSR_ABS extends OpCodeCall_ABS with SymName_JSR

object OpCode_AND_INDX extends OpCode_INDX with SymName_AND

object OpCode_BIT_ZP extends OpCode_ZP with SymName_BIT

object OpCode_AND_ZP extends OpCode_ZP with SymName_AND

object OpCode_ROL_ZP extends OpCodeModify_ZP with SymName_ROL

object OpCode_PLP extends OpCodePop_SP with SymName_PLP

object OpCode_AND_IMM extends OpCode_IMM with SymName_AND

object OpCode_ROL_AC extends OpCode_AC with SymName_ROL

object OpCode_BIT_ABS extends OpCode_ABS with SymName_BIT

object OpCode_AND_ABS extends OpCode_ABS with SymName_AND

object OpCode_ROL_ABS extends OpCodeModify_ABS with SymName_ROL

object OpCode_BMI_REL extends OpCode_REL with SymName_BMI

object OpCode_AND_INDY extends OpCode_INDY with SymName_AND

object OpCode_AND_ZPX extends OpCode_ZPX with SymName_AND

object OpCode_ROL_ZPX extends OpCodeModify_ZPX with SymName_ROL

object OpCode_SEC extends OpCode_IMP with SymName_SEC

object OpCode_AND_ABSY extends OpCode_ABSY with SymName_AND

object OpCode_AND_ABSX extends OpCode_ABSX with SymName_AND

object OpCode_ROL_ABSX extends OpCodeModify_ABSX with SymName_ROL

object OpCode_RTI extends OpCodeReturn_IMP with SymName_RTI

object OpCode_EOR_INDX extends OpCode_INDX with SymName_EOR

object OpCode_EOR_ZP extends OpCode_ZP with SymName_EOR

object OpCode_LSR_ZP extends OpCodeModify_ZP with SymName_LSR

object OpCode_PHA extends OpCodePush_SP with SymName_PHA

object OpCode_EOR_IMM extends OpCode_IMM with SymName_EOR

object OpCode_LSR_AC extends OpCode_AC with SymName_LSR

object OpCode_JMP_ABS extends OpCodeJump_ABS with SymName_JMP

object OpCode_EOR_ABS extends OpCode_ABS with SymName_EOR

object OpCode_LSR_ABS extends OpCodeModify_ABS with SymName_LSR

object OpCode_BVC_REL extends OpCode_REL with SymName_BVC

object OpCode_EOR_INDY extends OpCode_INDY with SymName_EOR

object OpCode_EOR_ZPX extends OpCode_ZPX with SymName_EOR

object OpCode_LSR_ZPX extends OpCodeModify_ZPX with SymName_LSR

object OpCode_CLI extends OpCode_IMP with SymName_CLI

object OpCode_EOR_ABSY extends OpCode_ABSY with SymName_EOR

object OpCode_EOR_ABSX extends OpCode_ABSX with SymName_EOR

object OpCode_LSR_ABSX extends OpCodeModify_ABSX with SymName_LSR

object OpCode_RTS extends OpCodeReturn_IMP with SymName_RTS

object OpCode_ADC_INDX extends OpCode_INDX with SymName_ADC

object OpCode_ADC_ZP extends OpCode_ZP with SymName_ADC

object OpCode_ROR_ZP extends OpCodeModify_ZP with SymName_ROR

object OpCode_PLA extends OpCodePop_SP with SymName_PLA

object OpCode_ADC_IMM extends OpCode_IMM with SymName_ADC

object OpCode_ROR_AC extends OpCode_AC with SymName_ROR

object OpCode_JMP_IND extends OpCodeJump_IND with SymName_JMP

object OpCode_ADC_ABS extends OpCode_ABS with SymName_ADC

object OpCode_ROR_ABS extends OpCodeModify_ABS with SymName_ROR

object OpCode_BVS_REL extends OpCode_REL with SymName_BVS

object OpCode_ADC_INDY extends OpCode_INDY with SymName_ADC

object OpCode_ADC_ZPX extends OpCode_ZPX with SymName_ADC

object OpCode_ROR_ZPX extends OpCodeModify_ZPX with SymName_ROR

object OpCode_SEI extends OpCode_IMP with SymName_SEI

object OpCode_ADC_ABSY extends OpCode_ABSY with SymName_ADC

object OpCode_ADC_ABSX extends OpCode_ABSX with SymName_ADC

object OpCode_ROR_ABSX extends OpCodeModify_ABSX with SymName_ROR

object OpCode_STA_INDX extends OpCode_INDX with SymName_STA

object OpCode_STY_ZP extends OpCode_ZP with SymName_STY

object OpCode_STA_ZP extends OpCode_ZP with SymName_STA

object OpCode_STX_ZP extends OpCode_ZP with SymName_STX

object OpCode_DEY extends OpCode_IMP with SymName_DEY

object OpCode_TXA extends OpCode_IMP with SymName_TXA

object OpCode_STY_ABS extends OpCode_ABS with SymName_STY

object OpCode_STA_ABS extends OpCode_ABS with SymName_STA

object OpCode_STX_ABS extends OpCode_ABS with SymName_STX

object OpCode_BCC_REL extends OpCode_REL with SymName_BCC

object OpCode_STA_INDY extends OpCodeStore_INDY with SymName_STA

object OpCode_STY_ZPX extends OpCode_ZPX with SymName_STY

object OpCode_STA_ZPX extends OpCode_ZPX with SymName_STA

object OpCode_STX_ZPY extends OpCode_ZPY with SymName_STX

object OpCode_TYA extends OpCode_IMP with SymName_TYA

object OpCode_STA_ABSY extends OpCodeStore_ABSY with SymName_STA

object OpCode_TXS extends OpCode_IMP with SymName_TXS

object OpCode_STA_ABSX extends OpCodeStore_ABSX with SymName_STA

object OpCode_LDY_IMM extends OpCode_IMM with SymName_LDY

object OpCode_LDA_INDX extends OpCode_INDX with SymName_LDA

object OpCode_LDX_IMM extends OpCode_IMM with SymName_LDX

object OpCode_LDY_ZP extends OpCode_ZP with SymName_LDY

object OpCode_LDA_ZP extends OpCode_ZP with SymName_LDA

object OpCode_LDX_ZP extends OpCode_ZP with SymName_LDX

object OpCode_TAY extends OpCode_IMP with SymName_TAY

object OpCode_LDA_IMM extends OpCode_IMM with SymName_LDA

object OpCode_TAX extends OpCode_IMP with SymName_TAX

object OpCode_LDY_ABS extends OpCode_ABS with SymName_LDY

object OpCode_LDA_ABS extends OpCode_ABS with SymName_LDA

object OpCode_LDX_ABS extends OpCode_ABS with SymName_LDX

object OpCode_BCS_REL extends OpCode_REL with SymName_BCS

object OpCode_LDA_INDY extends OpCode_INDY with SymName_LDA

object OpCode_LDY_ZPX extends OpCode_ZPX with SymName_LDY

object OpCode_LDA_ZPX extends OpCode_ZPX with SymName_LDA

object OpCode_LDX_ZPY extends OpCode_ZPY with SymName_LDX

object OpCode_CLV extends OpCode_IMP with SymName_CLV

object OpCode_LDA_ABSY extends OpCode_ABSY with SymName_LDA

object OpCode_TSX extends OpCode_IMP with SymName_TSX

object OpCode_LDY_ABSX extends OpCode_ABSX with SymName_LDY

object OpCode_LDA_ABSX extends OpCode_ABSX with SymName_LDA

object OpCode_LDX_ABSY extends OpCode_ABSY with SymName_LDX

object OpCode_CPY_IMM extends OpCode_IMM with SymName_CPY

object OpCode_CMP_INDX extends OpCode_INDX with SymName_CMP

object OpCode_CPY_ZP extends OpCode_ZP with SymName_CPY

object OpCode_CMP_ZP extends OpCode_ZP with SymName_CMP

object OpCode_DEC_ZP extends OpCodeModify_ZP with SymName_DEC

object OpCode_INY extends OpCode_IMP with SymName_INY

object OpCode_CMP_IMM extends OpCode_IMM with SymName_CMP

object OpCode_DEX extends OpCode_IMP with SymName_DEX

object OpCode_CPY_ABS extends OpCode_ABS with SymName_CPY

object OpCode_CMP_ABS extends OpCode_ABS with SymName_CMP

object OpCode_DEC_ABS extends OpCodeModify_ABS with SymName_DEC

object OpCode_BNE_REL extends OpCode_REL with SymName_BNE

object OpCode_CMP_INDY extends OpCode_INDY with SymName_CMP

object OpCode_CMP_ZPX extends OpCode_ZPX with SymName_CMP

object OpCode_DEC_ZPX extends OpCodeModify_ZPX with SymName_DEC

object OpCode_CLD extends OpCode_IMP with SymName_CLD

object OpCode_CMP_ABSY extends OpCode_ABSY with SymName_CMP

object OpCode_CMP_ABSX extends OpCode_ABSX with SymName_CMP

object OpCode_DEC_ABSX extends OpCodeModify_ABSX with SymName_DEC

object OpCode_CPX_IMM extends OpCode_IMM with SymName_CPX

object OpCode_SBC_INDX extends OpCode_INDX with SymName_SBC

object OpCode_CPX_ZP extends OpCode_ZP with SymName_CPX

object OpCode_SBC_ZP extends OpCode_ZP with SymName_SBC

object OpCode_INC_ZP extends OpCodeModify_ZP with SymName_INC

object OpCode_INX extends OpCode_IMP with SymName_INX

object OpCode_NOP extends OpCode_IMP with SymName_NOP

object OpCode_SBC_IMM extends OpCode_IMM with SymName_SBC

object OpCode_CPX_ABS extends OpCode_ABS with SymName_CPX

object OpCode_SBC_ABS extends OpCode_ABS with SymName_SBC

object OpCode_INC_ABS extends OpCodeModify_ABS with SymName_INC

object OpCode_BEQ_REL extends OpCode_REL with SymName_BEQ

object OpCode_SBC_INDY extends OpCode_INDY with SymName_SBC

object OpCode_SBC_ZPX extends OpCode_ZPX with SymName_SBC

object OpCode_INC_ZPX extends OpCodeModify_ZPX with SymName_INC

object OpCode_SED extends OpCode_IMP with SymName_SED

object OpCode_SBC_ABSY extends OpCode_ABSY with SymName_SBC

object OpCode_SBC_ABSX extends OpCode_ABSX with SymName_SBC

object OpCode_INC_ABSX extends OpCodeModify_ABSX with SymName_INC




© 2015 - 2025 Weber Informatics LLC | Privacy Policy