Loading files
This file is pinned to the selected release. Download the original to open it in your design tool.
e5db072deThis file is pinned to the selected release. Download the original to open it in your design tool.
#pragma once
//-----------------------------------------------------------------------------
#define OP_QUAD ((op >> 6) & 3)
#define OP_ROW ((op >> 3) & 7)
#define OP_COL ((op >> 0) & 7)
#define NOP (op == 0x00)
#define STOP (op == 0x10)
#define STM_A8_A (op == 0xE0)
#define STM_C_A (op == 0xE2)
#define STM_A16_SP (op == 0x08)
#define STM_A16_A (op == 0xEA)
#define ADD_SP_R8 (op == 0xE8)
#define LD_HL_SP_R8 (op == 0xF8)
#define LDM_A_A16 (op == 0xFA)
#define LDM_A_C (op == 0xF2)
#define LDM_A_A8 (op == 0xF0)
#define JP_A16 (op == 0xC3)
#define JR_R8 (op == 0x18)
#define JP_HL (op == 0xE9)
#define CALL_A16 (op == 0xCD)
#define RET (op == 0xC9)
#define RETI (op == 0xD9)
#define DI (op == 0xF3)
#define EI (op == 0xFB)
#define HALT (op == 0x76)
#define LD_SP_HL (op == 0xF9)
#define LD_BC_D16 (op == 0b00000001)
#define LD_DE_D16 (op == 0b00010001)
#define LD_HL_D16 (op == 0b00100001)
#define LD_SP_D16 (op == 0b00110001)
#define LD_RR_D16 ((op & 0b11001111) == 0b00000001)
#define ADD_HL_BC (op == 0b00001001)
#define ADD_HL_DE (op == 0b00011001)
#define ADD_HL_HL (op == 0b00101001)
#define ADD_HL_SP (op == 0b00111001)
#define ADD_HL_RR ((op & 0b11001111) == 0b00001001)
#define STM_BC_A (op == 0x02)
#define STM_DE_A (op == 0x12)
#define STM_HLP_A (op == 0x22)
#define STM_HLM_A (op == 0x32)
#define LDM_A_BC (op == 0x0A)
#define LDM_A_DE (op == 0x1A)
#define LDM_A_HLP (op == 0x2A)
#define LDM_A_HLM (op == 0x3A)
#define INC_BC (op == 0b00000011)
#define INC_DE (op == 0b00010011)
#define INC_HL (op == 0b00100011)
#define INC_SP (op == 0b00110011)
#define DEC_BC (op == 0x0B)
#define DEC_DE (op == 0x1B)
#define DEC_HL (op == 0x2B)
#define DEC_SP (op == 0x3B)
#define INC_AT_HL (op == 0x34)
#define DEC_AT_HL (op == 0x35)
#define INC_R ((op & 0b11000111) == 0b00000100 && !INC_AT_HL)
#define DEC_R ((op & 0b11000111) == 0b00000101 && !DEC_AT_HL)
#define STM_HL_A (op == 0x77)
#define STM_HL_D8 (op == 0x36)
#define LD_R_D8 ((op & 0b11000111) == 0b00000110 && !STM_HL_D8)
#define RLU_A ((op & 0b11000111) == 0b00000111)
#define RLC_A (op == 0x07)
#define RRC_A (op == 0x0F)
#define RL_A (op == 0x17)
#define RR_A (op == 0x1F)
#define DAA (op == 0x27)
#define CPL (op == 0x2F)
#define SCF (op == 0x37)
#define CCF (op == 0x3F)
#define LDM_B_HL (op == 0x46)
#define LDM_C_HL (op == 0x4E)
#define LDM_D_HL (op == 0x56)
#define LDM_E_HL (op == 0x5E)
#define LDM_H_HL (op == 0x66)
#define LDM_L_HL (op == 0x6E)
#define LDM_A_HL (op == 0x7E)
#define LDM_R_HL ((op & 0b11000111) == 0b01000110 && !HALT)
#define STM_HL_R ((op & 0b11111000) == 0b01110000 && !HALT)
#define MV_R_R ((op & 0b11000000) == 0b01000000 && (op & 0b00000111) != 0b00000110 && (op & 0b00111000) != 0b00110000)
#define JR_CC_R8 ((op & 0b11100111) == 0b00100000)
#define RET_CC ((op & 0b11100111) == 0b11000000)
#define JP_CC_A16 ((op & 0b11100111) == 0b11000010)
#define CALL_CC_A16 ((op & 0b11100111) == 0b11000100)
#define PUSH_BC (op == 0b11000101)
#define PUSH_DE (op == 0b11010101)
#define PUSH_HL (op == 0b11100101)
#define PUSH_AF (op == 0b11110101)
#define PUSH_RR ((op & 0b11001111) == 0b11000101)
#define POP_BC (op == 0b11000001)
#define POP_DE (op == 0b11010001)
#define POP_HL (op == 0b11100001)
#define POP_AF (op == 0b11110001)
#define POP_RR ((op & 0b11001111) == 0b11000001)
#define PREFIX_CB (op == 0xCB)
#define CB_QUAD ((cb >> 6) & 3)
#define CB_ROW ((cb >> 3) & 7)
#define CB_COL ((cb >> 0) & 7)
#define OP_CB_R (PREFIX_CB && CB_COL != 6)
#define OP_CB_HL (PREFIX_CB && CB_COL == 6)
#define ALU_A_R ((OP_QUAD == 2) && (OP_COL != 6))
#define ALU_A_HL ((OP_QUAD == 2) && (OP_COL == 6))
#define ALU_A_D8 ((OP_QUAD == 3) && (OP_COL == 6))
#define RST_NN ((OP_QUAD == 3) && (OP_COL == 7))
// fake opcode to indicate interrupt handling
#define INT (op == 0xF4)