2015-06-12 06:26:47 +00:00
|
|
|
package android.emu6502.instructions.impl
|
|
|
|
|
|
|
|
import android.emu6502.CPU
|
|
|
|
import android.emu6502.Memory
|
|
|
|
import android.emu6502.instructions.BaseInstruction
|
|
|
|
import android.emu6502.instructions.Instruction
|
|
|
|
|
|
|
|
/** STore Accumulator */
|
|
|
|
class STA(private val memory: Memory, private val cpu: CPU)
|
2015-06-30 07:35:06 +00:00
|
|
|
: BaseInstruction(Instruction.STA, cpu) {
|
2015-06-12 06:26:47 +00:00
|
|
|
|
|
|
|
override fun absolute() {
|
2015-06-28 00:47:02 +00:00
|
|
|
memory.storeByte(cpu.popWord(), cpu.A)
|
|
|
|
}
|
|
|
|
|
|
|
|
override fun zeroPage() {
|
|
|
|
memory.storeByte(cpu.popByte(), cpu.A)
|
2015-06-12 06:26:47 +00:00
|
|
|
}
|
2015-06-29 06:26:56 +00:00
|
|
|
|
|
|
|
override fun zeroPageX() {
|
|
|
|
cpu.memory.storeByte((cpu.popByte() + cpu.X).and(0xff), cpu.A)
|
|
|
|
}
|
|
|
|
|
|
|
|
override fun indirectY() {
|
|
|
|
val addr = memory.getWord(cpu.popByte()) + cpu.Y
|
|
|
|
memory.storeByte(addr, cpu.A)
|
|
|
|
}
|
|
|
|
|
|
|
|
override fun indirectX() {
|
2017-03-08 05:30:12 +00:00
|
|
|
val zp = (cpu.popByte() + cpu.X).and(0xff)
|
|
|
|
val addr = memory.getWord(zp)
|
2015-06-29 06:26:56 +00:00
|
|
|
memory.storeByte(addr, cpu.A)
|
|
|
|
}
|
2015-06-12 06:26:47 +00:00
|
|
|
}
|
|
|
|
|