mirror of
https://github.com/freewilll/apple2-go.git
synced 2024-05-29 01:41:26 +00:00
Made everything that can be private in cpu package private
This commit is contained in:
parent
01e92c6c80
commit
c397f0e092
94
cpu/cpu.go
94
cpu/cpu.go
|
@ -153,26 +153,26 @@ func branch(instructionName string, doBranch bool) {
|
||||||
|
|
||||||
func getAddressFromAddressMode(addressMode byte) (result uint16, pageBoundaryCrossed bool) {
|
func getAddressFromAddressMode(addressMode byte) (result uint16, pageBoundaryCrossed bool) {
|
||||||
switch addressMode {
|
switch addressMode {
|
||||||
case AmZeroPage:
|
case amZeroPage:
|
||||||
result = uint16(mmu.ReadMemory(State.PC + 1))
|
result = uint16(mmu.ReadMemory(State.PC + 1))
|
||||||
case AmZeroPageX:
|
case amZeroPageX:
|
||||||
result = (uint16(mmu.ReadMemory(State.PC+1)) + uint16(State.X)) & 0xff
|
result = (uint16(mmu.ReadMemory(State.PC+1)) + uint16(State.X)) & 0xff
|
||||||
case AmZeroPageY:
|
case amZeroPageY:
|
||||||
result = (uint16(mmu.ReadMemory(State.PC+1)) + uint16(State.Y)) & 0xff
|
result = (uint16(mmu.ReadMemory(State.PC+1)) + uint16(State.Y)) & 0xff
|
||||||
case AmAbsolute:
|
case amAbsolute:
|
||||||
result = uint16(mmu.ReadMemory(State.PC+1)) + uint16(mmu.ReadMemory(State.PC+2))<<8
|
result = uint16(mmu.ReadMemory(State.PC+1)) + uint16(mmu.ReadMemory(State.PC+2))<<8
|
||||||
case AmAbsoluteX:
|
case amAbsoluteX:
|
||||||
value := uint16(mmu.ReadMemory(State.PC+1)) + uint16(mmu.ReadMemory(State.PC+2))<<8
|
value := uint16(mmu.ReadMemory(State.PC+1)) + uint16(mmu.ReadMemory(State.PC+2))<<8
|
||||||
pageBoundaryCrossed = (value & 0xff00) != ((value + uint16(State.X)) & 0xff00)
|
pageBoundaryCrossed = (value & 0xff00) != ((value + uint16(State.X)) & 0xff00)
|
||||||
result = value + uint16(State.X)
|
result = value + uint16(State.X)
|
||||||
case AmAbsoluteY:
|
case amAbsoluteY:
|
||||||
value := uint16(mmu.ReadMemory(State.PC+1)) + uint16(mmu.ReadMemory(State.PC+2))<<8
|
value := uint16(mmu.ReadMemory(State.PC+1)) + uint16(mmu.ReadMemory(State.PC+2))<<8
|
||||||
pageBoundaryCrossed = (value & 0xff00) != ((value + uint16(State.Y)) & 0xff00)
|
pageBoundaryCrossed = (value & 0xff00) != ((value + uint16(State.Y)) & 0xff00)
|
||||||
result = value + uint16(State.Y)
|
result = value + uint16(State.Y)
|
||||||
case AmIndirectX:
|
case amIndirectX:
|
||||||
zeroPageAddress := (mmu.ReadMemory(State.PC+1) + State.X) & 0xff
|
zeroPageAddress := (mmu.ReadMemory(State.PC+1) + State.X) & 0xff
|
||||||
result = uint16(mmu.ReadMemory(uint16(zeroPageAddress))) + uint16(mmu.ReadMemory(uint16(zeroPageAddress)+1))<<8
|
result = uint16(mmu.ReadMemory(uint16(zeroPageAddress))) + uint16(mmu.ReadMemory(uint16(zeroPageAddress)+1))<<8
|
||||||
case AmIndirectY:
|
case amIndirectY:
|
||||||
address := uint16(mmu.ReadMemory(State.PC + 1))
|
address := uint16(mmu.ReadMemory(State.PC + 1))
|
||||||
lsb := uint16(mmu.ReadMemory(address))
|
lsb := uint16(mmu.ReadMemory(address))
|
||||||
msb := uint16(mmu.ReadMemory(address + 1))
|
msb := uint16(mmu.ReadMemory(address + 1))
|
||||||
|
@ -188,45 +188,45 @@ func getAddressFromAddressMode(addressMode byte) (result uint16, pageBoundaryCro
|
||||||
|
|
||||||
func readMemoryWithAddressMode(addressMode byte) (result uint8, pageBoundaryCrossed bool) {
|
func readMemoryWithAddressMode(addressMode byte) (result uint8, pageBoundaryCrossed bool) {
|
||||||
switch addressMode {
|
switch addressMode {
|
||||||
case AmImmediate:
|
case amImmediate:
|
||||||
result = mmu.ReadMemory(State.PC + 1)
|
result = mmu.ReadMemory(State.PC + 1)
|
||||||
State.PC += 2
|
State.PC += 2
|
||||||
case AmZeroPage:
|
case amZeroPage:
|
||||||
var address uint16
|
var address uint16
|
||||||
address, pageBoundaryCrossed = getAddressFromAddressMode(addressMode)
|
address, pageBoundaryCrossed = getAddressFromAddressMode(addressMode)
|
||||||
result = mmu.ReadMemory(address)
|
result = mmu.ReadMemory(address)
|
||||||
State.PC += 2
|
State.PC += 2
|
||||||
case AmZeroPageX:
|
case amZeroPageX:
|
||||||
var address uint16
|
var address uint16
|
||||||
address, pageBoundaryCrossed = getAddressFromAddressMode(addressMode)
|
address, pageBoundaryCrossed = getAddressFromAddressMode(addressMode)
|
||||||
result = mmu.ReadMemory(address)
|
result = mmu.ReadMemory(address)
|
||||||
State.PC += 2
|
State.PC += 2
|
||||||
case AmZeroPageY:
|
case amZeroPageY:
|
||||||
var address uint16
|
var address uint16
|
||||||
address, pageBoundaryCrossed = getAddressFromAddressMode(addressMode)
|
address, pageBoundaryCrossed = getAddressFromAddressMode(addressMode)
|
||||||
result = mmu.ReadMemory(address)
|
result = mmu.ReadMemory(address)
|
||||||
State.PC += 2
|
State.PC += 2
|
||||||
case AmAbsolute:
|
case amAbsolute:
|
||||||
var address uint16
|
var address uint16
|
||||||
address, pageBoundaryCrossed = getAddressFromAddressMode(addressMode)
|
address, pageBoundaryCrossed = getAddressFromAddressMode(addressMode)
|
||||||
result = mmu.ReadMemory(address)
|
result = mmu.ReadMemory(address)
|
||||||
State.PC += 3
|
State.PC += 3
|
||||||
case AmAbsoluteX:
|
case amAbsoluteX:
|
||||||
var address uint16
|
var address uint16
|
||||||
address, pageBoundaryCrossed = getAddressFromAddressMode(addressMode)
|
address, pageBoundaryCrossed = getAddressFromAddressMode(addressMode)
|
||||||
result = mmu.ReadMemory(address)
|
result = mmu.ReadMemory(address)
|
||||||
State.PC += 3
|
State.PC += 3
|
||||||
case AmAbsoluteY:
|
case amAbsoluteY:
|
||||||
var address uint16
|
var address uint16
|
||||||
address, pageBoundaryCrossed = getAddressFromAddressMode(addressMode)
|
address, pageBoundaryCrossed = getAddressFromAddressMode(addressMode)
|
||||||
result = mmu.ReadMemory(address)
|
result = mmu.ReadMemory(address)
|
||||||
State.PC += 3
|
State.PC += 3
|
||||||
case AmIndirectX:
|
case amIndirectX:
|
||||||
var address uint16
|
var address uint16
|
||||||
address, pageBoundaryCrossed = getAddressFromAddressMode(addressMode)
|
address, pageBoundaryCrossed = getAddressFromAddressMode(addressMode)
|
||||||
result = mmu.ReadMemory(address)
|
result = mmu.ReadMemory(address)
|
||||||
State.PC += 2
|
State.PC += 2
|
||||||
case AmIndirectY:
|
case amIndirectY:
|
||||||
var address uint16
|
var address uint16
|
||||||
address, pageBoundaryCrossed = getAddressFromAddressMode(addressMode)
|
address, pageBoundaryCrossed = getAddressFromAddressMode(addressMode)
|
||||||
result = mmu.ReadMemory(address)
|
result = mmu.ReadMemory(address)
|
||||||
|
@ -245,31 +245,31 @@ func store(regValue uint8, addressMode byte) {
|
||||||
mmu.WriteMemory(address, regValue)
|
mmu.WriteMemory(address, regValue)
|
||||||
|
|
||||||
switch addressMode {
|
switch addressMode {
|
||||||
case AmZeroPage:
|
case amZeroPage:
|
||||||
State.PC += 2
|
State.PC += 2
|
||||||
system.FrameCycles += 3
|
system.FrameCycles += 3
|
||||||
case AmZeroPageX:
|
case amZeroPageX:
|
||||||
State.PC += 2
|
State.PC += 2
|
||||||
system.FrameCycles += 4
|
system.FrameCycles += 4
|
||||||
case AmZeroPageY:
|
case amZeroPageY:
|
||||||
State.PC += 2
|
State.PC += 2
|
||||||
system.FrameCycles += 4
|
system.FrameCycles += 4
|
||||||
case AmAbsolute:
|
case amAbsolute:
|
||||||
State.PC += 3
|
State.PC += 3
|
||||||
system.FrameCycles += 4
|
system.FrameCycles += 4
|
||||||
case AmAbsoluteX:
|
case amAbsoluteX:
|
||||||
State.PC += 3
|
State.PC += 3
|
||||||
system.FrameCycles += 5
|
system.FrameCycles += 5
|
||||||
case AmAbsoluteY:
|
case amAbsoluteY:
|
||||||
State.PC += 3
|
State.PC += 3
|
||||||
system.FrameCycles += 5
|
system.FrameCycles += 5
|
||||||
case AmIndirect:
|
case amIndirect:
|
||||||
State.PC += 2
|
State.PC += 2
|
||||||
system.FrameCycles += 6
|
system.FrameCycles += 6
|
||||||
case AmIndirectX:
|
case amIndirectX:
|
||||||
State.PC += 2
|
State.PC += 2
|
||||||
system.FrameCycles += 6
|
system.FrameCycles += 6
|
||||||
case AmIndirectY:
|
case amIndirectY:
|
||||||
State.PC += 2
|
State.PC += 2
|
||||||
system.FrameCycles += 6
|
system.FrameCycles += 6
|
||||||
default:
|
default:
|
||||||
|
@ -285,23 +285,23 @@ func advanceCyclesForAcculumatorOperation(addressMode byte, pageBoundaryCrossed
|
||||||
}
|
}
|
||||||
|
|
||||||
switch addressMode {
|
switch addressMode {
|
||||||
case AmImmediate:
|
case amImmediate:
|
||||||
system.FrameCycles += 2
|
system.FrameCycles += 2
|
||||||
case AmZeroPage:
|
case amZeroPage:
|
||||||
system.FrameCycles += 3
|
system.FrameCycles += 3
|
||||||
case AmZeroPageX:
|
case amZeroPageX:
|
||||||
system.FrameCycles += 4
|
system.FrameCycles += 4
|
||||||
case AmZeroPageY:
|
case amZeroPageY:
|
||||||
system.FrameCycles += 4
|
system.FrameCycles += 4
|
||||||
case AmAbsolute:
|
case amAbsolute:
|
||||||
system.FrameCycles += 4
|
system.FrameCycles += 4
|
||||||
case AmAbsoluteX:
|
case amAbsoluteX:
|
||||||
system.FrameCycles += 4 + extraCycle
|
system.FrameCycles += 4 + extraCycle
|
||||||
case AmAbsoluteY:
|
case amAbsoluteY:
|
||||||
system.FrameCycles += 4 + extraCycle
|
system.FrameCycles += 4 + extraCycle
|
||||||
case AmIndirectX:
|
case amIndirectX:
|
||||||
system.FrameCycles += 6
|
system.FrameCycles += 6
|
||||||
case AmIndirectY:
|
case amIndirectY:
|
||||||
system.FrameCycles += 5 + extraCycle
|
system.FrameCycles += 5 + extraCycle
|
||||||
default:
|
default:
|
||||||
panic(fmt.Sprintf("Unknown address mode %d in advanceCyclesForAcculumatorOperation()", addressMode))
|
panic(fmt.Sprintf("Unknown address mode %d in advanceCyclesForAcculumatorOperation()", addressMode))
|
||||||
|
@ -441,14 +441,14 @@ func bit(address uint16) {
|
||||||
|
|
||||||
// Read the address/value for an ASL, LSR, ROR, ROL
|
// Read the address/value for an ASL, LSR, ROR, ROL
|
||||||
func preProcessShift(addressMode byte) (address uint16, value uint8) {
|
func preProcessShift(addressMode byte) (address uint16, value uint8) {
|
||||||
if addressMode == AmAccumulator {
|
if addressMode == amAccumulator {
|
||||||
value = State.A
|
value = State.A
|
||||||
} else {
|
} else {
|
||||||
address, _ = getAddressFromAddressMode(addressMode)
|
address, _ = getAddressFromAddressMode(addressMode)
|
||||||
value = mmu.ReadMemory(address)
|
value = mmu.ReadMemory(address)
|
||||||
}
|
}
|
||||||
|
|
||||||
if addressMode == AmAccumulator {
|
if addressMode == amAccumulator {
|
||||||
value = State.A
|
value = State.A
|
||||||
} else {
|
} else {
|
||||||
address, _ = getAddressFromAddressMode(addressMode)
|
address, _ = getAddressFromAddressMode(addressMode)
|
||||||
|
@ -461,23 +461,23 @@ func preProcessShift(addressMode byte) (address uint16, value uint8) {
|
||||||
// Store the result of a ASL, LSR, ROR, ROL and advance PC and system.FrameCycles
|
// Store the result of a ASL, LSR, ROR, ROL and advance PC and system.FrameCycles
|
||||||
func postProcessShift(addressMode byte, address uint16, value uint8) {
|
func postProcessShift(addressMode byte, address uint16, value uint8) {
|
||||||
switch addressMode {
|
switch addressMode {
|
||||||
case AmAccumulator:
|
case amAccumulator:
|
||||||
State.A = value
|
State.A = value
|
||||||
State.PC += 1
|
State.PC += 1
|
||||||
system.FrameCycles += 2
|
system.FrameCycles += 2
|
||||||
case AmZeroPage:
|
case amZeroPage:
|
||||||
mmu.WriteMemory(address, value)
|
mmu.WriteMemory(address, value)
|
||||||
State.PC += 2
|
State.PC += 2
|
||||||
system.FrameCycles += 5
|
system.FrameCycles += 5
|
||||||
case AmZeroPageX:
|
case amZeroPageX:
|
||||||
mmu.WriteMemory(address, value)
|
mmu.WriteMemory(address, value)
|
||||||
State.PC += 2
|
State.PC += 2
|
||||||
system.FrameCycles += 6
|
system.FrameCycles += 6
|
||||||
case AmAbsolute:
|
case amAbsolute:
|
||||||
mmu.WriteMemory(address, value)
|
mmu.WriteMemory(address, value)
|
||||||
State.PC += 3
|
State.PC += 3
|
||||||
system.FrameCycles += 6
|
system.FrameCycles += 6
|
||||||
case AmAbsoluteX:
|
case amAbsoluteX:
|
||||||
mmu.WriteMemory(address, value)
|
mmu.WriteMemory(address, value)
|
||||||
State.PC += 3
|
State.PC += 3
|
||||||
system.FrameCycles += 7
|
system.FrameCycles += 7
|
||||||
|
@ -488,16 +488,16 @@ func postProcessShift(addressMode byte, address uint16, value uint8) {
|
||||||
|
|
||||||
func postProcessIncDec(addressMode byte) {
|
func postProcessIncDec(addressMode byte) {
|
||||||
switch addressMode {
|
switch addressMode {
|
||||||
case AmZeroPage:
|
case amZeroPage:
|
||||||
State.PC += 2
|
State.PC += 2
|
||||||
system.FrameCycles += 5
|
system.FrameCycles += 5
|
||||||
case AmZeroPageX:
|
case amZeroPageX:
|
||||||
State.PC += 2
|
State.PC += 2
|
||||||
system.FrameCycles += 6
|
system.FrameCycles += 6
|
||||||
case AmAbsolute:
|
case amAbsolute:
|
||||||
State.PC += 3
|
State.PC += 3
|
||||||
system.FrameCycles += 6
|
system.FrameCycles += 6
|
||||||
case AmAbsoluteX:
|
case amAbsoluteX:
|
||||||
State.PC += 3
|
State.PC += 3
|
||||||
system.FrameCycles += 7
|
system.FrameCycles += 7
|
||||||
default:
|
default:
|
||||||
|
@ -567,7 +567,7 @@ func Run(showInstructions bool, breakAddress *uint16, exitAtBreak bool, disableF
|
||||||
}
|
}
|
||||||
|
|
||||||
opcode := mmu.ReadMemory(State.PC)
|
opcode := mmu.ReadMemory(State.PC)
|
||||||
addressMode := OpCodes[opcode].AddressingMode.Mode
|
addressMode := opCodes[opcode].addressingMode.mode
|
||||||
|
|
||||||
if breakAddress != nil && State.PC == *breakAddress {
|
if breakAddress != nil && State.PC == *breakAddress {
|
||||||
if exitAtBreak {
|
if exitAtBreak {
|
||||||
|
|
14
cpu/debug.go
14
cpu/debug.go
|
@ -42,10 +42,10 @@ func printInstruction(instruction string, showRegisters bool) {
|
||||||
|
|
||||||
func PrintInstruction(showRegisters bool) {
|
func PrintInstruction(showRegisters bool) {
|
||||||
opcodeValue := mmu.ReadPageTable[(State.PC)>>8][(State.PC)&0xff]
|
opcodeValue := mmu.ReadPageTable[(State.PC)>>8][(State.PC)&0xff]
|
||||||
opcode := OpCodes[opcodeValue]
|
opcode := opCodes[opcodeValue]
|
||||||
mnemonic := opcode.Mnemonic
|
mnemonic := opcode.mnemonic
|
||||||
size := opcode.AddressingMode.OperandSize
|
size := opcode.addressingMode.operandSize
|
||||||
stringFormat := opcode.AddressingMode.StringFormat
|
stringFormat := opcode.addressingMode.stringFormat
|
||||||
|
|
||||||
var value uint16
|
var value uint16
|
||||||
if size == 0 {
|
if size == 0 {
|
||||||
|
@ -56,7 +56,7 @@ func PrintInstruction(showRegisters bool) {
|
||||||
var opcodes string
|
var opcodes string
|
||||||
var suffix string
|
var suffix string
|
||||||
|
|
||||||
if opcode.AddressingMode.Mode == AmRelative {
|
if opcode.addressingMode.mode == amRelative {
|
||||||
value = uint16(mmu.ReadPageTable[(State.PC+1)>>8][(State.PC+1)&0xff])
|
value = uint16(mmu.ReadPageTable[(State.PC+1)>>8][(State.PC+1)&0xff])
|
||||||
var relativeAddress uint16
|
var relativeAddress uint16
|
||||||
if (value & 0x80) == 0 {
|
if (value & 0x80) == 0 {
|
||||||
|
@ -84,8 +84,8 @@ func PrintInstruction(showRegisters bool) {
|
||||||
|
|
||||||
func AdvanceInstruction() {
|
func AdvanceInstruction() {
|
||||||
opcodeValue := mmu.ReadPageTable[(State.PC)>>8][(State.PC)&0xff]
|
opcodeValue := mmu.ReadPageTable[(State.PC)>>8][(State.PC)&0xff]
|
||||||
opcode := OpCodes[opcodeValue]
|
opcode := opCodes[opcodeValue]
|
||||||
size := opcode.AddressingMode.OperandSize + 1
|
size := opcode.addressingMode.operandSize + 1
|
||||||
State.PC += uint16(size)
|
State.PC += uint16(size)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
600
cpu/opcodes.go
600
cpu/opcodes.go
|
@ -1,315 +1,317 @@
|
||||||
package cpu
|
package cpu
|
||||||
|
|
||||||
|
// Address mode constants
|
||||||
const (
|
const (
|
||||||
AmNone byte = 1 + iota
|
amNone byte = 1 + iota
|
||||||
AmAccumulator //
|
amAccumulator //
|
||||||
AmImplied //
|
amImplied //
|
||||||
AmRelative //
|
amRelative //
|
||||||
AmExpansion //
|
amExpansion //
|
||||||
AmImmediate // #$00
|
amImmediate // #$00
|
||||||
AmZeroPage // $00
|
amZeroPage // $00
|
||||||
AmZeroPageX // $00,X
|
amZeroPageX // $00,X
|
||||||
AmZeroPageY // $00,Y
|
amZeroPageY // $00,Y
|
||||||
AmAbsolute // $0000
|
amAbsolute // $0000
|
||||||
AmAbsoluteX // $0000,X
|
amAbsoluteX // $0000,X
|
||||||
AmAbsoluteY // $0000,Y
|
amAbsoluteY // $0000,Y
|
||||||
AmIndirect // ($0000)
|
amIndirect // ($0000)
|
||||||
AmIndirectX // ($00,X)
|
amIndirectX // ($00,X)
|
||||||
AmIndirectY // ($00),Y
|
amIndirectY // ($00),Y
|
||||||
)
|
)
|
||||||
|
|
||||||
type AddressingMode struct {
|
// addressingMode is a struct that describes a single addressing mode
|
||||||
Mode byte
|
type addressingMode struct {
|
||||||
OperandSize byte
|
mode byte // One of the Am* constants
|
||||||
StringFormat string
|
operandSize byte // Number of bytes
|
||||||
|
stringFormat string // Format string for the disassembler
|
||||||
}
|
}
|
||||||
|
|
||||||
type OpCode struct {
|
type opCode struct {
|
||||||
Mnemonic string
|
mnemonic string // 3-letter mnemonic, e.g. LDA, STA
|
||||||
AddressingMode AddressingMode
|
addressingMode addressingMode // Addressing mode
|
||||||
}
|
}
|
||||||
|
|
||||||
var AddressingModes map[byte]AddressingMode
|
var addressingModes map[byte]addressingMode
|
||||||
var OpCodes [0x100]OpCode
|
var opCodes [0x100]opCode
|
||||||
|
|
||||||
func InitAddressingModes() {
|
func initAddressingModes() {
|
||||||
AddressingModes = make(map[byte]AddressingMode)
|
addressingModes = make(map[byte]addressingMode)
|
||||||
AddressingModes[AmAccumulator] = AddressingMode{Mode: AmAccumulator, OperandSize: 0, StringFormat: ""}
|
addressingModes[amAccumulator] = addressingMode{mode: amAccumulator, operandSize: 0, stringFormat: ""}
|
||||||
AddressingModes[AmImplied] = AddressingMode{Mode: AmImplied, OperandSize: 0, StringFormat: ""}
|
addressingModes[amImplied] = addressingMode{mode: amImplied, operandSize: 0, stringFormat: ""}
|
||||||
AddressingModes[AmRelative] = AddressingMode{Mode: AmRelative, OperandSize: 1, StringFormat: "$%04x"}
|
addressingModes[amRelative] = addressingMode{mode: amRelative, operandSize: 1, stringFormat: "$%04x"}
|
||||||
AddressingModes[AmExpansion] = AddressingMode{Mode: AmExpansion, OperandSize: 0, StringFormat: ""}
|
addressingModes[amExpansion] = addressingMode{mode: amExpansion, operandSize: 0, stringFormat: ""}
|
||||||
AddressingModes[AmImmediate] = AddressingMode{Mode: AmImmediate, OperandSize: 1, StringFormat: "#$%02x"}
|
addressingModes[amImmediate] = addressingMode{mode: amImmediate, operandSize: 1, stringFormat: "#$%02x"}
|
||||||
AddressingModes[AmZeroPage] = AddressingMode{Mode: AmZeroPage, OperandSize: 1, StringFormat: "$%02x"}
|
addressingModes[amZeroPage] = addressingMode{mode: amZeroPage, operandSize: 1, stringFormat: "$%02x"}
|
||||||
AddressingModes[AmZeroPageX] = AddressingMode{Mode: AmZeroPageX, OperandSize: 1, StringFormat: "$%02x,X"}
|
addressingModes[amZeroPageX] = addressingMode{mode: amZeroPageX, operandSize: 1, stringFormat: "$%02x,X"}
|
||||||
AddressingModes[AmZeroPageY] = AddressingMode{Mode: AmZeroPageY, OperandSize: 1, StringFormat: "$%02x,Y"}
|
addressingModes[amZeroPageY] = addressingMode{mode: amZeroPageY, operandSize: 1, stringFormat: "$%02x,Y"}
|
||||||
AddressingModes[AmAbsolute] = AddressingMode{Mode: AmAbsolute, OperandSize: 2, StringFormat: "$%04x"}
|
addressingModes[amAbsolute] = addressingMode{mode: amAbsolute, operandSize: 2, stringFormat: "$%04x"}
|
||||||
AddressingModes[AmAbsoluteX] = AddressingMode{Mode: AmAbsoluteX, OperandSize: 2, StringFormat: "$%04x,X"}
|
addressingModes[amAbsoluteX] = addressingMode{mode: amAbsoluteX, operandSize: 2, stringFormat: "$%04x,X"}
|
||||||
AddressingModes[AmAbsoluteY] = AddressingMode{Mode: AmAbsoluteY, OperandSize: 2, StringFormat: "$%04x,Y"}
|
addressingModes[amAbsoluteY] = addressingMode{mode: amAbsoluteY, operandSize: 2, stringFormat: "$%04x,Y"}
|
||||||
AddressingModes[AmIndirect] = AddressingMode{Mode: AmIndirect, OperandSize: 2, StringFormat: "($%04x)"}
|
addressingModes[amIndirect] = addressingMode{mode: amIndirect, operandSize: 2, stringFormat: "($%04x)"}
|
||||||
AddressingModes[AmIndirectX] = AddressingMode{Mode: AmIndirectX, OperandSize: 1, StringFormat: "($%02x,X)"}
|
addressingModes[amIndirectX] = addressingMode{mode: amIndirectX, operandSize: 1, stringFormat: "($%02x,X)"}
|
||||||
AddressingModes[AmIndirectY] = AddressingMode{Mode: AmIndirectY, OperandSize: 1, StringFormat: "($%02x),Y"}
|
addressingModes[amIndirectY] = addressingMode{mode: amIndirectY, operandSize: 1, stringFormat: "($%02x),Y"}
|
||||||
}
|
}
|
||||||
|
|
||||||
func InitOpCodes() {
|
func initOpCodes() {
|
||||||
OpCodes[0x00] = OpCode{Mnemonic: "BRK", AddressingMode: AddressingModes[AmNone]}
|
opCodes[0x00] = opCode{mnemonic: "BRK", addressingMode: addressingModes[amNone]}
|
||||||
OpCodes[0x01] = OpCode{Mnemonic: "ORA", AddressingMode: AddressingModes[AmIndirectX]}
|
opCodes[0x01] = opCode{mnemonic: "ORA", addressingMode: addressingModes[amIndirectX]}
|
||||||
OpCodes[0x02] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x02] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x03] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x03] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x04] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x04] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x05] = OpCode{Mnemonic: "ORA", AddressingMode: AddressingModes[AmZeroPage]}
|
opCodes[0x05] = opCode{mnemonic: "ORA", addressingMode: addressingModes[amZeroPage]}
|
||||||
OpCodes[0x06] = OpCode{Mnemonic: "ASL", AddressingMode: AddressingModes[AmZeroPage]}
|
opCodes[0x06] = opCode{mnemonic: "ASL", addressingMode: addressingModes[amZeroPage]}
|
||||||
OpCodes[0x07] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x07] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x08] = OpCode{Mnemonic: "PHP", AddressingMode: AddressingModes[AmNone]}
|
opCodes[0x08] = opCode{mnemonic: "PHP", addressingMode: addressingModes[amNone]}
|
||||||
OpCodes[0x09] = OpCode{Mnemonic: "ORA", AddressingMode: AddressingModes[AmImmediate]}
|
opCodes[0x09] = opCode{mnemonic: "ORA", addressingMode: addressingModes[amImmediate]}
|
||||||
OpCodes[0x0A] = OpCode{Mnemonic: "ASL", AddressingMode: AddressingModes[AmAccumulator]}
|
opCodes[0x0A] = opCode{mnemonic: "ASL", addressingMode: addressingModes[amAccumulator]}
|
||||||
OpCodes[0x0B] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x0B] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x0C] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x0C] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x0D] = OpCode{Mnemonic: "ORA", AddressingMode: AddressingModes[AmAbsolute]}
|
opCodes[0x0D] = opCode{mnemonic: "ORA", addressingMode: addressingModes[amAbsolute]}
|
||||||
OpCodes[0x0E] = OpCode{Mnemonic: "ASL", AddressingMode: AddressingModes[AmAbsolute]}
|
opCodes[0x0E] = opCode{mnemonic: "ASL", addressingMode: addressingModes[amAbsolute]}
|
||||||
OpCodes[0x0F] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x0F] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x10] = OpCode{Mnemonic: "BPL", AddressingMode: AddressingModes[AmRelative]}
|
opCodes[0x10] = opCode{mnemonic: "BPL", addressingMode: addressingModes[amRelative]}
|
||||||
OpCodes[0x11] = OpCode{Mnemonic: "ORA", AddressingMode: AddressingModes[AmIndirectY]}
|
opCodes[0x11] = opCode{mnemonic: "ORA", addressingMode: addressingModes[amIndirectY]}
|
||||||
OpCodes[0x12] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x12] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x13] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x13] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x14] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x14] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x15] = OpCode{Mnemonic: "ORA", AddressingMode: AddressingModes[AmZeroPageX]}
|
opCodes[0x15] = opCode{mnemonic: "ORA", addressingMode: addressingModes[amZeroPageX]}
|
||||||
OpCodes[0x16] = OpCode{Mnemonic: "ASL", AddressingMode: AddressingModes[AmZeroPageX]}
|
opCodes[0x16] = opCode{mnemonic: "ASL", addressingMode: addressingModes[amZeroPageX]}
|
||||||
OpCodes[0x17] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x17] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x18] = OpCode{Mnemonic: "CLC", AddressingMode: AddressingModes[AmNone]}
|
opCodes[0x18] = opCode{mnemonic: "CLC", addressingMode: addressingModes[amNone]}
|
||||||
OpCodes[0x19] = OpCode{Mnemonic: "ORA", AddressingMode: AddressingModes[AmAbsoluteY]}
|
opCodes[0x19] = opCode{mnemonic: "ORA", addressingMode: addressingModes[amAbsoluteY]}
|
||||||
OpCodes[0x1A] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x1A] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x1B] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x1B] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x1C] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x1C] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x1D] = OpCode{Mnemonic: "ORA", AddressingMode: AddressingModes[AmAbsoluteX]}
|
opCodes[0x1D] = opCode{mnemonic: "ORA", addressingMode: addressingModes[amAbsoluteX]}
|
||||||
OpCodes[0x1E] = OpCode{Mnemonic: "ASL", AddressingMode: AddressingModes[AmAbsoluteX]}
|
opCodes[0x1E] = opCode{mnemonic: "ASL", addressingMode: addressingModes[amAbsoluteX]}
|
||||||
OpCodes[0x1F] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x1F] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x20] = OpCode{Mnemonic: "JSR", AddressingMode: AddressingModes[AmAbsolute]}
|
opCodes[0x20] = opCode{mnemonic: "JSR", addressingMode: addressingModes[amAbsolute]}
|
||||||
OpCodes[0x21] = OpCode{Mnemonic: "AND", AddressingMode: AddressingModes[AmIndirectX]}
|
opCodes[0x21] = opCode{mnemonic: "AND", addressingMode: addressingModes[amIndirectX]}
|
||||||
OpCodes[0x22] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x22] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x23] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x23] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x24] = OpCode{Mnemonic: "BIT", AddressingMode: AddressingModes[AmZeroPage]}
|
opCodes[0x24] = opCode{mnemonic: "BIT", addressingMode: addressingModes[amZeroPage]}
|
||||||
OpCodes[0x25] = OpCode{Mnemonic: "AND", AddressingMode: AddressingModes[AmZeroPage]}
|
opCodes[0x25] = opCode{mnemonic: "AND", addressingMode: addressingModes[amZeroPage]}
|
||||||
OpCodes[0x26] = OpCode{Mnemonic: "ROL", AddressingMode: AddressingModes[AmZeroPage]}
|
opCodes[0x26] = opCode{mnemonic: "ROL", addressingMode: addressingModes[amZeroPage]}
|
||||||
OpCodes[0x27] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x27] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x28] = OpCode{Mnemonic: "PLP", AddressingMode: AddressingModes[AmNone]}
|
opCodes[0x28] = opCode{mnemonic: "PLP", addressingMode: addressingModes[amNone]}
|
||||||
OpCodes[0x29] = OpCode{Mnemonic: "AND", AddressingMode: AddressingModes[AmImmediate]}
|
opCodes[0x29] = opCode{mnemonic: "AND", addressingMode: addressingModes[amImmediate]}
|
||||||
OpCodes[0x2A] = OpCode{Mnemonic: "ROL", AddressingMode: AddressingModes[AmAccumulator]}
|
opCodes[0x2A] = opCode{mnemonic: "ROL", addressingMode: addressingModes[amAccumulator]}
|
||||||
OpCodes[0x2B] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x2B] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x2C] = OpCode{Mnemonic: "BIT", AddressingMode: AddressingModes[AmAbsolute]}
|
opCodes[0x2C] = opCode{mnemonic: "BIT", addressingMode: addressingModes[amAbsolute]}
|
||||||
OpCodes[0x2D] = OpCode{Mnemonic: "AND", AddressingMode: AddressingModes[AmAbsolute]}
|
opCodes[0x2D] = opCode{mnemonic: "AND", addressingMode: addressingModes[amAbsolute]}
|
||||||
OpCodes[0x2E] = OpCode{Mnemonic: "ROL", AddressingMode: AddressingModes[AmAbsolute]}
|
opCodes[0x2E] = opCode{mnemonic: "ROL", addressingMode: addressingModes[amAbsolute]}
|
||||||
OpCodes[0x2F] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x2F] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x30] = OpCode{Mnemonic: "BMI", AddressingMode: AddressingModes[AmRelative]}
|
opCodes[0x30] = opCode{mnemonic: "BMI", addressingMode: addressingModes[amRelative]}
|
||||||
OpCodes[0x31] = OpCode{Mnemonic: "AND", AddressingMode: AddressingModes[AmIndirectY]}
|
opCodes[0x31] = opCode{mnemonic: "AND", addressingMode: addressingModes[amIndirectY]}
|
||||||
OpCodes[0x32] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x32] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x33] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x33] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x34] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x34] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x35] = OpCode{Mnemonic: "AND", AddressingMode: AddressingModes[AmZeroPageX]}
|
opCodes[0x35] = opCode{mnemonic: "AND", addressingMode: addressingModes[amZeroPageX]}
|
||||||
OpCodes[0x36] = OpCode{Mnemonic: "ROL", AddressingMode: AddressingModes[AmZeroPageX]}
|
opCodes[0x36] = opCode{mnemonic: "ROL", addressingMode: addressingModes[amZeroPageX]}
|
||||||
OpCodes[0x37] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x37] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x38] = OpCode{Mnemonic: "SEC", AddressingMode: AddressingModes[AmNone]}
|
opCodes[0x38] = opCode{mnemonic: "SEC", addressingMode: addressingModes[amNone]}
|
||||||
OpCodes[0x39] = OpCode{Mnemonic: "AND", AddressingMode: AddressingModes[AmAbsoluteY]}
|
opCodes[0x39] = opCode{mnemonic: "AND", addressingMode: addressingModes[amAbsoluteY]}
|
||||||
OpCodes[0x3A] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x3A] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x3B] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x3B] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x3C] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x3C] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x3D] = OpCode{Mnemonic: "AND", AddressingMode: AddressingModes[AmAbsoluteX]}
|
opCodes[0x3D] = opCode{mnemonic: "AND", addressingMode: addressingModes[amAbsoluteX]}
|
||||||
OpCodes[0x3E] = OpCode{Mnemonic: "ROL", AddressingMode: AddressingModes[AmAbsoluteX]}
|
opCodes[0x3E] = opCode{mnemonic: "ROL", addressingMode: addressingModes[amAbsoluteX]}
|
||||||
OpCodes[0x3F] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x3F] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x40] = OpCode{Mnemonic: "RTI", AddressingMode: AddressingModes[AmNone]}
|
opCodes[0x40] = opCode{mnemonic: "RTI", addressingMode: addressingModes[amNone]}
|
||||||
OpCodes[0x41] = OpCode{Mnemonic: "EOR", AddressingMode: AddressingModes[AmIndirectX]}
|
opCodes[0x41] = opCode{mnemonic: "EOR", addressingMode: addressingModes[amIndirectX]}
|
||||||
OpCodes[0x42] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x42] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x43] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x43] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x44] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x44] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x45] = OpCode{Mnemonic: "EOR", AddressingMode: AddressingModes[AmZeroPage]}
|
opCodes[0x45] = opCode{mnemonic: "EOR", addressingMode: addressingModes[amZeroPage]}
|
||||||
OpCodes[0x46] = OpCode{Mnemonic: "LSR", AddressingMode: AddressingModes[AmZeroPage]}
|
opCodes[0x46] = opCode{mnemonic: "LSR", addressingMode: addressingModes[amZeroPage]}
|
||||||
OpCodes[0x47] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x47] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x48] = OpCode{Mnemonic: "PHA", AddressingMode: AddressingModes[AmNone]}
|
opCodes[0x48] = opCode{mnemonic: "PHA", addressingMode: addressingModes[amNone]}
|
||||||
OpCodes[0x49] = OpCode{Mnemonic: "EOR", AddressingMode: AddressingModes[AmImmediate]}
|
opCodes[0x49] = opCode{mnemonic: "EOR", addressingMode: addressingModes[amImmediate]}
|
||||||
OpCodes[0x4A] = OpCode{Mnemonic: "LSR", AddressingMode: AddressingModes[AmAccumulator]}
|
opCodes[0x4A] = opCode{mnemonic: "LSR", addressingMode: addressingModes[amAccumulator]}
|
||||||
OpCodes[0x4B] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x4B] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x4C] = OpCode{Mnemonic: "JMP", AddressingMode: AddressingModes[AmAbsolute]}
|
opCodes[0x4C] = opCode{mnemonic: "JMP", addressingMode: addressingModes[amAbsolute]}
|
||||||
OpCodes[0x4D] = OpCode{Mnemonic: "EOR", AddressingMode: AddressingModes[AmAbsolute]}
|
opCodes[0x4D] = opCode{mnemonic: "EOR", addressingMode: addressingModes[amAbsolute]}
|
||||||
OpCodes[0x4E] = OpCode{Mnemonic: "LSR", AddressingMode: AddressingModes[AmAbsolute]}
|
opCodes[0x4E] = opCode{mnemonic: "LSR", addressingMode: addressingModes[amAbsolute]}
|
||||||
OpCodes[0x4F] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x4F] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x50] = OpCode{Mnemonic: "BVC", AddressingMode: AddressingModes[AmRelative]}
|
opCodes[0x50] = opCode{mnemonic: "BVC", addressingMode: addressingModes[amRelative]}
|
||||||
OpCodes[0x51] = OpCode{Mnemonic: "EOR", AddressingMode: AddressingModes[AmIndirectY]}
|
opCodes[0x51] = opCode{mnemonic: "EOR", addressingMode: addressingModes[amIndirectY]}
|
||||||
OpCodes[0x52] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x52] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x53] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x53] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x54] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x54] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x55] = OpCode{Mnemonic: "EOR", AddressingMode: AddressingModes[AmZeroPageX]}
|
opCodes[0x55] = opCode{mnemonic: "EOR", addressingMode: addressingModes[amZeroPageX]}
|
||||||
OpCodes[0x56] = OpCode{Mnemonic: "LSR", AddressingMode: AddressingModes[AmZeroPageX]}
|
opCodes[0x56] = opCode{mnemonic: "LSR", addressingMode: addressingModes[amZeroPageX]}
|
||||||
OpCodes[0x57] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x57] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x58] = OpCode{Mnemonic: "CLI", AddressingMode: AddressingModes[AmNone]}
|
opCodes[0x58] = opCode{mnemonic: "CLI", addressingMode: addressingModes[amNone]}
|
||||||
OpCodes[0x59] = OpCode{Mnemonic: "EOR", AddressingMode: AddressingModes[AmAbsoluteY]}
|
opCodes[0x59] = opCode{mnemonic: "EOR", addressingMode: addressingModes[amAbsoluteY]}
|
||||||
OpCodes[0x5A] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x5A] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x5B] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x5B] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x5C] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x5C] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x5D] = OpCode{Mnemonic: "EOR", AddressingMode: AddressingModes[AmAbsoluteX]}
|
opCodes[0x5D] = opCode{mnemonic: "EOR", addressingMode: addressingModes[amAbsoluteX]}
|
||||||
OpCodes[0x5E] = OpCode{Mnemonic: "LSR", AddressingMode: AddressingModes[AmAbsoluteX]}
|
opCodes[0x5E] = opCode{mnemonic: "LSR", addressingMode: addressingModes[amAbsoluteX]}
|
||||||
OpCodes[0x5F] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x5F] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x60] = OpCode{Mnemonic: "RTS", AddressingMode: AddressingModes[AmNone]}
|
opCodes[0x60] = opCode{mnemonic: "RTS", addressingMode: addressingModes[amNone]}
|
||||||
OpCodes[0x61] = OpCode{Mnemonic: "ADC", AddressingMode: AddressingModes[AmIndirectX]}
|
opCodes[0x61] = opCode{mnemonic: "ADC", addressingMode: addressingModes[amIndirectX]}
|
||||||
OpCodes[0x62] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x62] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x63] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x63] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x64] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x64] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x65] = OpCode{Mnemonic: "ADC", AddressingMode: AddressingModes[AmZeroPage]}
|
opCodes[0x65] = opCode{mnemonic: "ADC", addressingMode: addressingModes[amZeroPage]}
|
||||||
OpCodes[0x66] = OpCode{Mnemonic: "ROR", AddressingMode: AddressingModes[AmZeroPage]}
|
opCodes[0x66] = opCode{mnemonic: "ROR", addressingMode: addressingModes[amZeroPage]}
|
||||||
OpCodes[0x67] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x67] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x68] = OpCode{Mnemonic: "PLA", AddressingMode: AddressingModes[AmNone]}
|
opCodes[0x68] = opCode{mnemonic: "PLA", addressingMode: addressingModes[amNone]}
|
||||||
OpCodes[0x69] = OpCode{Mnemonic: "ADC", AddressingMode: AddressingModes[AmImmediate]}
|
opCodes[0x69] = opCode{mnemonic: "ADC", addressingMode: addressingModes[amImmediate]}
|
||||||
OpCodes[0x6A] = OpCode{Mnemonic: "ROR", AddressingMode: AddressingModes[AmAccumulator]}
|
opCodes[0x6A] = opCode{mnemonic: "ROR", addressingMode: addressingModes[amAccumulator]}
|
||||||
OpCodes[0x6B] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x6B] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x6C] = OpCode{Mnemonic: "JMP", AddressingMode: AddressingModes[AmIndirect]}
|
opCodes[0x6C] = opCode{mnemonic: "JMP", addressingMode: addressingModes[amIndirect]}
|
||||||
OpCodes[0x6D] = OpCode{Mnemonic: "ADC", AddressingMode: AddressingModes[AmAbsolute]}
|
opCodes[0x6D] = opCode{mnemonic: "ADC", addressingMode: addressingModes[amAbsolute]}
|
||||||
OpCodes[0x6E] = OpCode{Mnemonic: "ROR", AddressingMode: AddressingModes[AmAbsolute]}
|
opCodes[0x6E] = opCode{mnemonic: "ROR", addressingMode: addressingModes[amAbsolute]}
|
||||||
OpCodes[0x6F] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x6F] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x70] = OpCode{Mnemonic: "BVS", AddressingMode: AddressingModes[AmRelative]}
|
opCodes[0x70] = opCode{mnemonic: "BVS", addressingMode: addressingModes[amRelative]}
|
||||||
OpCodes[0x71] = OpCode{Mnemonic: "ADC", AddressingMode: AddressingModes[AmIndirectY]}
|
opCodes[0x71] = opCode{mnemonic: "ADC", addressingMode: addressingModes[amIndirectY]}
|
||||||
OpCodes[0x72] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x72] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x73] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x73] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x74] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x74] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x75] = OpCode{Mnemonic: "ADC", AddressingMode: AddressingModes[AmZeroPageX]}
|
opCodes[0x75] = opCode{mnemonic: "ADC", addressingMode: addressingModes[amZeroPageX]}
|
||||||
OpCodes[0x76] = OpCode{Mnemonic: "ROR", AddressingMode: AddressingModes[AmZeroPageX]}
|
opCodes[0x76] = opCode{mnemonic: "ROR", addressingMode: addressingModes[amZeroPageX]}
|
||||||
OpCodes[0x77] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x77] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x78] = OpCode{Mnemonic: "SEI", AddressingMode: AddressingModes[AmNone]}
|
opCodes[0x78] = opCode{mnemonic: "SEI", addressingMode: addressingModes[amNone]}
|
||||||
OpCodes[0x79] = OpCode{Mnemonic: "ADC", AddressingMode: AddressingModes[AmAbsoluteY]}
|
opCodes[0x79] = opCode{mnemonic: "ADC", addressingMode: addressingModes[amAbsoluteY]}
|
||||||
OpCodes[0x7A] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x7A] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x7B] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x7B] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x7C] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x7C] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x7D] = OpCode{Mnemonic: "ADC", AddressingMode: AddressingModes[AmAbsoluteX]}
|
opCodes[0x7D] = opCode{mnemonic: "ADC", addressingMode: addressingModes[amAbsoluteX]}
|
||||||
OpCodes[0x7E] = OpCode{Mnemonic: "ROR", AddressingMode: AddressingModes[AmAbsoluteX]}
|
opCodes[0x7E] = opCode{mnemonic: "ROR", addressingMode: addressingModes[amAbsoluteX]}
|
||||||
OpCodes[0x7F] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x7F] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x80] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x80] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x81] = OpCode{Mnemonic: "STA", AddressingMode: AddressingModes[AmIndirectX]}
|
opCodes[0x81] = opCode{mnemonic: "STA", addressingMode: addressingModes[amIndirectX]}
|
||||||
OpCodes[0x82] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x82] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x83] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x83] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x84] = OpCode{Mnemonic: "STY", AddressingMode: AddressingModes[AmZeroPage]}
|
opCodes[0x84] = opCode{mnemonic: "STY", addressingMode: addressingModes[amZeroPage]}
|
||||||
OpCodes[0x85] = OpCode{Mnemonic: "STA", AddressingMode: AddressingModes[AmZeroPage]}
|
opCodes[0x85] = opCode{mnemonic: "STA", addressingMode: addressingModes[amZeroPage]}
|
||||||
OpCodes[0x86] = OpCode{Mnemonic: "STX", AddressingMode: AddressingModes[AmZeroPage]}
|
opCodes[0x86] = opCode{mnemonic: "STX", addressingMode: addressingModes[amZeroPage]}
|
||||||
OpCodes[0x87] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x87] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x88] = OpCode{Mnemonic: "DEY", AddressingMode: AddressingModes[AmNone]}
|
opCodes[0x88] = opCode{mnemonic: "DEY", addressingMode: addressingModes[amNone]}
|
||||||
OpCodes[0x89] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x89] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x8A] = OpCode{Mnemonic: "TXA", AddressingMode: AddressingModes[AmNone]}
|
opCodes[0x8A] = opCode{mnemonic: "TXA", addressingMode: addressingModes[amNone]}
|
||||||
OpCodes[0x8B] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x8B] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x8C] = OpCode{Mnemonic: "STY", AddressingMode: AddressingModes[AmAbsolute]}
|
opCodes[0x8C] = opCode{mnemonic: "STY", addressingMode: addressingModes[amAbsolute]}
|
||||||
OpCodes[0x8D] = OpCode{Mnemonic: "STA", AddressingMode: AddressingModes[AmAbsolute]}
|
opCodes[0x8D] = opCode{mnemonic: "STA", addressingMode: addressingModes[amAbsolute]}
|
||||||
OpCodes[0x8E] = OpCode{Mnemonic: "STX", AddressingMode: AddressingModes[AmAbsolute]}
|
opCodes[0x8E] = opCode{mnemonic: "STX", addressingMode: addressingModes[amAbsolute]}
|
||||||
OpCodes[0x8F] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x8F] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x90] = OpCode{Mnemonic: "BCC", AddressingMode: AddressingModes[AmRelative]}
|
opCodes[0x90] = opCode{mnemonic: "BCC", addressingMode: addressingModes[amRelative]}
|
||||||
OpCodes[0x91] = OpCode{Mnemonic: "STA", AddressingMode: AddressingModes[AmIndirectY]}
|
opCodes[0x91] = opCode{mnemonic: "STA", addressingMode: addressingModes[amIndirectY]}
|
||||||
OpCodes[0x92] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x92] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x93] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x93] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x94] = OpCode{Mnemonic: "STY", AddressingMode: AddressingModes[AmZeroPageX]}
|
opCodes[0x94] = opCode{mnemonic: "STY", addressingMode: addressingModes[amZeroPageX]}
|
||||||
OpCodes[0x95] = OpCode{Mnemonic: "STA", AddressingMode: AddressingModes[AmZeroPageX]}
|
opCodes[0x95] = opCode{mnemonic: "STA", addressingMode: addressingModes[amZeroPageX]}
|
||||||
OpCodes[0x96] = OpCode{Mnemonic: "STX", AddressingMode: AddressingModes[AmZeroPageY]}
|
opCodes[0x96] = opCode{mnemonic: "STX", addressingMode: addressingModes[amZeroPageY]}
|
||||||
OpCodes[0x97] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x97] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x98] = OpCode{Mnemonic: "TYA", AddressingMode: AddressingModes[AmNone]}
|
opCodes[0x98] = opCode{mnemonic: "TYA", addressingMode: addressingModes[amNone]}
|
||||||
OpCodes[0x99] = OpCode{Mnemonic: "STA", AddressingMode: AddressingModes[AmAbsoluteY]}
|
opCodes[0x99] = opCode{mnemonic: "STA", addressingMode: addressingModes[amAbsoluteY]}
|
||||||
OpCodes[0x9A] = OpCode{Mnemonic: "TXS", AddressingMode: AddressingModes[AmNone]}
|
opCodes[0x9A] = opCode{mnemonic: "TXS", addressingMode: addressingModes[amNone]}
|
||||||
OpCodes[0x9B] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x9B] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x9C] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x9C] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x9D] = OpCode{Mnemonic: "STA", AddressingMode: AddressingModes[AmAbsoluteX]}
|
opCodes[0x9D] = opCode{mnemonic: "STA", addressingMode: addressingModes[amAbsoluteX]}
|
||||||
OpCodes[0x9E] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x9E] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0x9F] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0x9F] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0xA0] = OpCode{Mnemonic: "LDY", AddressingMode: AddressingModes[AmImmediate]}
|
opCodes[0xA0] = opCode{mnemonic: "LDY", addressingMode: addressingModes[amImmediate]}
|
||||||
OpCodes[0xA1] = OpCode{Mnemonic: "LDA", AddressingMode: AddressingModes[AmIndirectX]}
|
opCodes[0xA1] = opCode{mnemonic: "LDA", addressingMode: addressingModes[amIndirectX]}
|
||||||
OpCodes[0xA2] = OpCode{Mnemonic: "LDX", AddressingMode: AddressingModes[AmImmediate]}
|
opCodes[0xA2] = opCode{mnemonic: "LDX", addressingMode: addressingModes[amImmediate]}
|
||||||
OpCodes[0xA3] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0xA3] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0xA4] = OpCode{Mnemonic: "LDY", AddressingMode: AddressingModes[AmZeroPage]}
|
opCodes[0xA4] = opCode{mnemonic: "LDY", addressingMode: addressingModes[amZeroPage]}
|
||||||
OpCodes[0xA5] = OpCode{Mnemonic: "LDA", AddressingMode: AddressingModes[AmZeroPage]}
|
opCodes[0xA5] = opCode{mnemonic: "LDA", addressingMode: addressingModes[amZeroPage]}
|
||||||
OpCodes[0xA6] = OpCode{Mnemonic: "LDX", AddressingMode: AddressingModes[AmZeroPage]}
|
opCodes[0xA6] = opCode{mnemonic: "LDX", addressingMode: addressingModes[amZeroPage]}
|
||||||
OpCodes[0xA7] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0xA7] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0xA8] = OpCode{Mnemonic: "TAY", AddressingMode: AddressingModes[AmNone]}
|
opCodes[0xA8] = opCode{mnemonic: "TAY", addressingMode: addressingModes[amNone]}
|
||||||
OpCodes[0xA9] = OpCode{Mnemonic: "LDA", AddressingMode: AddressingModes[AmImmediate]}
|
opCodes[0xA9] = opCode{mnemonic: "LDA", addressingMode: addressingModes[amImmediate]}
|
||||||
OpCodes[0xAA] = OpCode{Mnemonic: "TAX", AddressingMode: AddressingModes[AmNone]}
|
opCodes[0xAA] = opCode{mnemonic: "TAX", addressingMode: addressingModes[amNone]}
|
||||||
OpCodes[0xAB] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0xAB] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0xAC] = OpCode{Mnemonic: "LDY", AddressingMode: AddressingModes[AmAbsolute]}
|
opCodes[0xAC] = opCode{mnemonic: "LDY", addressingMode: addressingModes[amAbsolute]}
|
||||||
OpCodes[0xAD] = OpCode{Mnemonic: "LDA", AddressingMode: AddressingModes[AmAbsolute]}
|
opCodes[0xAD] = opCode{mnemonic: "LDA", addressingMode: addressingModes[amAbsolute]}
|
||||||
OpCodes[0xAE] = OpCode{Mnemonic: "LDX", AddressingMode: AddressingModes[AmAbsolute]}
|
opCodes[0xAE] = opCode{mnemonic: "LDX", addressingMode: addressingModes[amAbsolute]}
|
||||||
OpCodes[0xAF] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0xAF] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0xB0] = OpCode{Mnemonic: "BCS", AddressingMode: AddressingModes[AmRelative]}
|
opCodes[0xB0] = opCode{mnemonic: "BCS", addressingMode: addressingModes[amRelative]}
|
||||||
OpCodes[0xB1] = OpCode{Mnemonic: "LDA", AddressingMode: AddressingModes[AmIndirectY]}
|
opCodes[0xB1] = opCode{mnemonic: "LDA", addressingMode: addressingModes[amIndirectY]}
|
||||||
OpCodes[0xB2] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0xB2] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0xB3] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0xB3] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0xB4] = OpCode{Mnemonic: "LDY", AddressingMode: AddressingModes[AmZeroPageX]}
|
opCodes[0xB4] = opCode{mnemonic: "LDY", addressingMode: addressingModes[amZeroPageX]}
|
||||||
OpCodes[0xB5] = OpCode{Mnemonic: "LDA", AddressingMode: AddressingModes[AmZeroPageX]}
|
opCodes[0xB5] = opCode{mnemonic: "LDA", addressingMode: addressingModes[amZeroPageX]}
|
||||||
OpCodes[0xB6] = OpCode{Mnemonic: "LDX", AddressingMode: AddressingModes[AmZeroPageY]}
|
opCodes[0xB6] = opCode{mnemonic: "LDX", addressingMode: addressingModes[amZeroPageY]}
|
||||||
OpCodes[0xB7] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0xB7] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0xB8] = OpCode{Mnemonic: "CLV", AddressingMode: AddressingModes[AmNone]}
|
opCodes[0xB8] = opCode{mnemonic: "CLV", addressingMode: addressingModes[amNone]}
|
||||||
OpCodes[0xB9] = OpCode{Mnemonic: "LDA", AddressingMode: AddressingModes[AmAbsoluteY]}
|
opCodes[0xB9] = opCode{mnemonic: "LDA", addressingMode: addressingModes[amAbsoluteY]}
|
||||||
OpCodes[0xBA] = OpCode{Mnemonic: "TSX", AddressingMode: AddressingModes[AmNone]}
|
opCodes[0xBA] = opCode{mnemonic: "TSX", addressingMode: addressingModes[amNone]}
|
||||||
OpCodes[0xBB] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0xBB] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0xBC] = OpCode{Mnemonic: "LDY", AddressingMode: AddressingModes[AmAbsoluteX]}
|
opCodes[0xBC] = opCode{mnemonic: "LDY", addressingMode: addressingModes[amAbsoluteX]}
|
||||||
OpCodes[0xBD] = OpCode{Mnemonic: "LDA", AddressingMode: AddressingModes[AmAbsoluteX]}
|
opCodes[0xBD] = opCode{mnemonic: "LDA", addressingMode: addressingModes[amAbsoluteX]}
|
||||||
OpCodes[0xBE] = OpCode{Mnemonic: "LDX", AddressingMode: AddressingModes[AmAbsoluteY]}
|
opCodes[0xBE] = opCode{mnemonic: "LDX", addressingMode: addressingModes[amAbsoluteY]}
|
||||||
OpCodes[0xBF] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0xBF] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0xC0] = OpCode{Mnemonic: "CPY", AddressingMode: AddressingModes[AmImmediate]}
|
opCodes[0xC0] = opCode{mnemonic: "CPY", addressingMode: addressingModes[amImmediate]}
|
||||||
OpCodes[0xC1] = OpCode{Mnemonic: "CMP", AddressingMode: AddressingModes[AmIndirectX]}
|
opCodes[0xC1] = opCode{mnemonic: "CMP", addressingMode: addressingModes[amIndirectX]}
|
||||||
OpCodes[0xC2] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0xC2] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0xC3] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0xC3] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0xC4] = OpCode{Mnemonic: "CPY", AddressingMode: AddressingModes[AmZeroPage]}
|
opCodes[0xC4] = opCode{mnemonic: "CPY", addressingMode: addressingModes[amZeroPage]}
|
||||||
OpCodes[0xC5] = OpCode{Mnemonic: "CMP", AddressingMode: AddressingModes[AmZeroPage]}
|
opCodes[0xC5] = opCode{mnemonic: "CMP", addressingMode: addressingModes[amZeroPage]}
|
||||||
OpCodes[0xC6] = OpCode{Mnemonic: "DEC", AddressingMode: AddressingModes[AmZeroPage]}
|
opCodes[0xC6] = opCode{mnemonic: "DEC", addressingMode: addressingModes[amZeroPage]}
|
||||||
OpCodes[0xC7] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0xC7] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0xC8] = OpCode{Mnemonic: "INY", AddressingMode: AddressingModes[AmNone]}
|
opCodes[0xC8] = opCode{mnemonic: "INY", addressingMode: addressingModes[amNone]}
|
||||||
OpCodes[0xC9] = OpCode{Mnemonic: "CMP", AddressingMode: AddressingModes[AmImmediate]}
|
opCodes[0xC9] = opCode{mnemonic: "CMP", addressingMode: addressingModes[amImmediate]}
|
||||||
OpCodes[0xCA] = OpCode{Mnemonic: "DEX", AddressingMode: AddressingModes[AmNone]}
|
opCodes[0xCA] = opCode{mnemonic: "DEX", addressingMode: addressingModes[amNone]}
|
||||||
OpCodes[0xCB] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0xCB] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0xCC] = OpCode{Mnemonic: "CPY", AddressingMode: AddressingModes[AmAbsolute]}
|
opCodes[0xCC] = opCode{mnemonic: "CPY", addressingMode: addressingModes[amAbsolute]}
|
||||||
OpCodes[0xCD] = OpCode{Mnemonic: "CMP", AddressingMode: AddressingModes[AmAbsolute]}
|
opCodes[0xCD] = opCode{mnemonic: "CMP", addressingMode: addressingModes[amAbsolute]}
|
||||||
OpCodes[0xCE] = OpCode{Mnemonic: "DEC", AddressingMode: AddressingModes[AmAbsolute]}
|
opCodes[0xCE] = opCode{mnemonic: "DEC", addressingMode: addressingModes[amAbsolute]}
|
||||||
OpCodes[0xCF] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0xCF] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0xD0] = OpCode{Mnemonic: "BNE", AddressingMode: AddressingModes[AmRelative]}
|
opCodes[0xD0] = opCode{mnemonic: "BNE", addressingMode: addressingModes[amRelative]}
|
||||||
OpCodes[0xD1] = OpCode{Mnemonic: "CMP", AddressingMode: AddressingModes[AmIndirectY]}
|
opCodes[0xD1] = opCode{mnemonic: "CMP", addressingMode: addressingModes[amIndirectY]}
|
||||||
OpCodes[0xD2] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0xD2] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0xD3] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0xD3] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0xD4] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0xD4] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0xD5] = OpCode{Mnemonic: "CMP", AddressingMode: AddressingModes[AmZeroPageX]}
|
opCodes[0xD5] = opCode{mnemonic: "CMP", addressingMode: addressingModes[amZeroPageX]}
|
||||||
OpCodes[0xD6] = OpCode{Mnemonic: "DEC", AddressingMode: AddressingModes[AmZeroPageX]}
|
opCodes[0xD6] = opCode{mnemonic: "DEC", addressingMode: addressingModes[amZeroPageX]}
|
||||||
OpCodes[0xD7] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0xD7] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0xD8] = OpCode{Mnemonic: "CLD", AddressingMode: AddressingModes[AmNone]}
|
opCodes[0xD8] = opCode{mnemonic: "CLD", addressingMode: addressingModes[amNone]}
|
||||||
OpCodes[0xD9] = OpCode{Mnemonic: "CMP", AddressingMode: AddressingModes[AmAbsoluteY]}
|
opCodes[0xD9] = opCode{mnemonic: "CMP", addressingMode: addressingModes[amAbsoluteY]}
|
||||||
OpCodes[0xDA] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0xDA] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0xDB] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0xDB] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0xDC] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0xDC] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0xDD] = OpCode{Mnemonic: "CMP", AddressingMode: AddressingModes[AmAbsoluteX]}
|
opCodes[0xDD] = opCode{mnemonic: "CMP", addressingMode: addressingModes[amAbsoluteX]}
|
||||||
OpCodes[0xDE] = OpCode{Mnemonic: "DEC", AddressingMode: AddressingModes[AmAbsoluteX]}
|
opCodes[0xDE] = opCode{mnemonic: "DEC", addressingMode: addressingModes[amAbsoluteX]}
|
||||||
OpCodes[0xDF] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0xDF] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0xE0] = OpCode{Mnemonic: "CPX", AddressingMode: AddressingModes[AmImmediate]}
|
opCodes[0xE0] = opCode{mnemonic: "CPX", addressingMode: addressingModes[amImmediate]}
|
||||||
OpCodes[0xE1] = OpCode{Mnemonic: "SBC", AddressingMode: AddressingModes[AmIndirectX]}
|
opCodes[0xE1] = opCode{mnemonic: "SBC", addressingMode: addressingModes[amIndirectX]}
|
||||||
OpCodes[0xE2] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0xE2] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0xE3] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0xE3] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0xE4] = OpCode{Mnemonic: "CPX", AddressingMode: AddressingModes[AmZeroPage]}
|
opCodes[0xE4] = opCode{mnemonic: "CPX", addressingMode: addressingModes[amZeroPage]}
|
||||||
OpCodes[0xE5] = OpCode{Mnemonic: "SBC", AddressingMode: AddressingModes[AmZeroPage]}
|
opCodes[0xE5] = opCode{mnemonic: "SBC", addressingMode: addressingModes[amZeroPage]}
|
||||||
OpCodes[0xE6] = OpCode{Mnemonic: "INC", AddressingMode: AddressingModes[AmZeroPage]}
|
opCodes[0xE6] = opCode{mnemonic: "INC", addressingMode: addressingModes[amZeroPage]}
|
||||||
OpCodes[0xE7] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0xE7] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0xE8] = OpCode{Mnemonic: "INX", AddressingMode: AddressingModes[AmNone]}
|
opCodes[0xE8] = opCode{mnemonic: "INX", addressingMode: addressingModes[amNone]}
|
||||||
OpCodes[0xE9] = OpCode{Mnemonic: "SBC", AddressingMode: AddressingModes[AmImmediate]}
|
opCodes[0xE9] = opCode{mnemonic: "SBC", addressingMode: addressingModes[amImmediate]}
|
||||||
OpCodes[0xEA] = OpCode{Mnemonic: "NOP", AddressingMode: AddressingModes[AmNone]}
|
opCodes[0xEA] = opCode{mnemonic: "NOP", addressingMode: addressingModes[amNone]}
|
||||||
OpCodes[0xEB] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0xEB] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0xEC] = OpCode{Mnemonic: "CPX", AddressingMode: AddressingModes[AmAbsolute]}
|
opCodes[0xEC] = opCode{mnemonic: "CPX", addressingMode: addressingModes[amAbsolute]}
|
||||||
OpCodes[0xED] = OpCode{Mnemonic: "SBC", AddressingMode: AddressingModes[AmAbsolute]}
|
opCodes[0xED] = opCode{mnemonic: "SBC", addressingMode: addressingModes[amAbsolute]}
|
||||||
OpCodes[0xEE] = OpCode{Mnemonic: "INC", AddressingMode: AddressingModes[AmAbsolute]}
|
opCodes[0xEE] = opCode{mnemonic: "INC", addressingMode: addressingModes[amAbsolute]}
|
||||||
OpCodes[0xEF] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0xEF] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0xF0] = OpCode{Mnemonic: "BEQ", AddressingMode: AddressingModes[AmRelative]}
|
opCodes[0xF0] = opCode{mnemonic: "BEQ", addressingMode: addressingModes[amRelative]}
|
||||||
OpCodes[0xF1] = OpCode{Mnemonic: "SBC", AddressingMode: AddressingModes[AmIndirectY]}
|
opCodes[0xF1] = opCode{mnemonic: "SBC", addressingMode: addressingModes[amIndirectY]}
|
||||||
OpCodes[0xF2] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0xF2] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0xF3] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0xF3] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0xF4] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0xF4] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0xF5] = OpCode{Mnemonic: "SBC", AddressingMode: AddressingModes[AmZeroPageX]}
|
opCodes[0xF5] = opCode{mnemonic: "SBC", addressingMode: addressingModes[amZeroPageX]}
|
||||||
OpCodes[0xF6] = OpCode{Mnemonic: "INC", AddressingMode: AddressingModes[AmZeroPageX]}
|
opCodes[0xF6] = opCode{mnemonic: "INC", addressingMode: addressingModes[amZeroPageX]}
|
||||||
OpCodes[0xF7] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0xF7] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0xF8] = OpCode{Mnemonic: "SED", AddressingMode: AddressingModes[AmNone]}
|
opCodes[0xF8] = opCode{mnemonic: "SED", addressingMode: addressingModes[amNone]}
|
||||||
OpCodes[0xF9] = OpCode{Mnemonic: "SBC", AddressingMode: AddressingModes[AmAbsoluteY]}
|
opCodes[0xF9] = opCode{mnemonic: "SBC", addressingMode: addressingModes[amAbsoluteY]}
|
||||||
OpCodes[0xFA] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0xFA] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0xFB] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0xFB] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0xFC] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0xFC] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
OpCodes[0xFD] = OpCode{Mnemonic: "SBC", AddressingMode: AddressingModes[AmAbsoluteX]}
|
opCodes[0xFD] = opCode{mnemonic: "SBC", addressingMode: addressingModes[amAbsoluteX]}
|
||||||
OpCodes[0xFE] = OpCode{Mnemonic: "INC", AddressingMode: AddressingModes[AmAbsoluteX]}
|
opCodes[0xFE] = opCode{mnemonic: "INC", addressingMode: addressingModes[amAbsoluteX]}
|
||||||
OpCodes[0xFF] = OpCode{Mnemonic: "???", AddressingMode: AddressingModes[AmExpansion]}
|
opCodes[0xFF] = opCode{mnemonic: "???", addressingMode: addressingModes[amExpansion]}
|
||||||
}
|
}
|
||||||
|
|
||||||
func InitInstructionDecoder() {
|
func InitInstructionDecoder() {
|
||||||
InitAddressingModes()
|
initAddressingModes()
|
||||||
InitOpCodes()
|
initOpCodes()
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user