6502-emulator/src/opcode/handler/compare-opcode-handler-cont...

57 lines
1.7 KiB
C++

#ifndef INC_6502_EMULATOR_COMPARE_OPCODE_HANDLER_CONTAINER_H
#define INC_6502_EMULATOR_COMPARE_OPCODE_HANDLER_CONTAINER_H
#include "opcode-handler-container.h"
#include "../../machine/register.h"
namespace emu_6502 {
class CompareOpcodeHandlerContainer : public OpcodeHandlerContainer {
private:
enum Op {
CMP_IMM = 0xC9,
CMP_ZPG = 0xC5,
CMP_ZPG_X = 0xD5,
CMP_ABS = 0xCD,
CMP_ABS_X = 0xDD,
CMP_ABS_Y = 0xD9,
CMP_IND_X = 0xC1,
CMP_IND_Y = 0xD1,
CPX_IMM = 0xE0,
CPX_ZPG = 0xE4,
CPX_ABS = 0xEC,
CPY_IMM = 0xC0,
CPY_ZPG = 0xC4,
CPY_ABS = 0xCC,
};
void cmp(Machine& machine, Register<uint8_t>& reg, uint8_t value);
void cmp_imm(Machine& machine);
void cmp_zpg(Machine& machine);
void cmp_zpg_x(Machine& machine);
void cmp_abs(Machine& machine);
void cmp_abs_x(Machine& machine);
void cmp_abs_y(Machine& machine);
void cmp_ind_x(Machine& machine);
void cmp_ind_y(Machine& machine);
void cpx_imm(Machine& machine);
void cpx_zpg(Machine& machine);
void cpx_abs(Machine& machine);
void cpy_imm(Machine& machine);
void cpy_zpg(Machine& machine);
void cpy_abs(Machine& machine);
public:
CompareOpcodeHandlerContainer();
CompareOpcodeHandlerContainer(const CompareOpcodeHandlerContainer&) = delete;
CompareOpcodeHandlerContainer& operator=(CompareOpcodeHandlerContainer&) = delete;
};
}
#endif //INC_6502_EMULATOR_COMPARE_OPCODE_HANDLER_CONTAINER_H