6502-emulator/src/opcode/handler/status-opcode-handler-conta...

42 lines
1.6 KiB
C++

#include "status-opcode-handler-container.h"
namespace emu_6502 {
StatusOpcodeHandlerContainer::StatusOpcodeHandlerContainer() {
handlers.insert({Op::CLC, [this](Machine& machine) { clc(machine); }});
handlers.insert({Op::CLD, [this](Machine& machine) { cld(machine); }});
handlers.insert({Op::CLI, [this](Machine& machine) { cli(machine); }});
handlers.insert({Op::CLV, [this](Machine& machine) { clv(machine); }});
handlers.insert({Op::SEC, [this](Machine& machine) { sec(machine); }});
handlers.insert({Op::SED, [this](Machine& machine) { sed(machine); }});
handlers.insert({Op::SEI, [this](Machine& machine) { sei(machine); }});
}
void StatusOpcodeHandlerContainer::clc(Machine& machine) {
machine.get_cpu().get_ps().set_carry(false);
}
void StatusOpcodeHandlerContainer::cld(Machine& machine) {
machine.get_cpu().get_ps().set_decimal(false);
}
void StatusOpcodeHandlerContainer::cli(Machine& machine) {
machine.get_cpu().get_ps().set_interupt_disable(false);
}
void StatusOpcodeHandlerContainer::clv(Machine& machine) {
machine.get_cpu().get_ps().set_overflow(false);
}
void StatusOpcodeHandlerContainer::sec(Machine& machine) {
machine.get_cpu().get_ps().set_carry(true);
}
void StatusOpcodeHandlerContainer::sed(Machine& machine) {
machine.get_cpu().get_ps().set_decimal(true);
}
void StatusOpcodeHandlerContainer::sei(Machine& machine) {
machine.get_cpu().get_ps().set_interupt_disable(true);
}
}