|
|
@@ -10,23 +10,22 @@ |
|
|
|
#define MAX_ARG_SIZE 256 |
|
|
|
|
|
|
|
typedef enum { |
|
|
|
AT_NONE, |
|
|
|
AT_NONE = 0, |
|
|
|
/* Register */ |
|
|
|
AT_REG_A, AT_REG_B, AT_REG_C, AT_REG_D, AT_REG_E, AT_REG_H, |
|
|
|
AT_REG_L, AT_REG_I, AT_REG_R, AT_REG_AF, AT_REG_BC, AT_REG_DE, |
|
|
|
AT_REG_HL, AT_REG_IX, AT_REG_IY, AT_REG_SP, AT_REG_AF_, AT_REG_IXH, |
|
|
|
AT_REG_IXL, AT_REG_IYH, AT_REG_IYL, |
|
|
|
AT_REG_HL, AT_REG_IXY, AT_REG_SP, AT_REG_AF_, AT_REG_IH, AT_REG_IL, |
|
|
|
/* Immediate */ |
|
|
|
AT_IMM_U16, AT_IMM_U8, AT_IMM_REL, AT_IMM_BIT, AT_IMM_RST, AT_IMM_IM, |
|
|
|
/* Indirect */ |
|
|
|
AT_IDR_HL, AT_IDR_BC, AT_IDR_DE, AT_IDR_SP, AT_IDR_IMM, |
|
|
|
AT_IDR_HL, AT_IDR_BC, AT_IDR_DE, AT_IDR_SP, AT_IDR_IXY, AT_IDR_IMM, |
|
|
|
/* Indexed */ |
|
|
|
AT_IX_IY, |
|
|
|
/* Condition */ |
|
|
|
AT_COND_NZ, AT_COND_Z, AT_COND_NC, AT_COND_C, AT_COND_PO, AT_COND_PE, |
|
|
|
AT_COND_P, AT_COND_M, |
|
|
|
/* Port */ |
|
|
|
AT_PORT_C, AT_PORT_IM |
|
|
|
AT_PORT_C, AT_PORT_IM, AT_PORT_0 |
|
|
|
} ArgType; |
|
|
|
|
|
|
|
#define __ AT_NONE |
|
|
@@ -43,14 +42,11 @@ typedef enum { |
|
|
|
#define BC AT_REG_BC |
|
|
|
#define DE AT_REG_DE |
|
|
|
#define HL AT_REG_HL |
|
|
|
#define IX AT_REG_IX |
|
|
|
#define IY AT_REG_IY |
|
|
|
#define XY AT_REG_IXY |
|
|
|
#define SP AT_REG_SP |
|
|
|
#define AS AT_REG_AF_ |
|
|
|
#define XH AT_REG_IXH |
|
|
|
#define XL AT_REG_IXL |
|
|
|
#define YH AT_REG_IYH |
|
|
|
#define YL AT_REG_IYL |
|
|
|
#define IH AT_REG_IH |
|
|
|
#define IL AT_REG_IL |
|
|
|
#define M2 AT_IMM_U16 |
|
|
|
#define M1 AT_IMM_U8 |
|
|
|
#define ML AT_IMM_REL |
|
|
@@ -61,8 +57,9 @@ typedef enum { |
|
|
|
#define NB AT_IDR_BC |
|
|
|
#define ND AT_IDR_DE |
|
|
|
#define NS AT_IDR_SP |
|
|
|
#define NI AT_IDR_IXY |
|
|
|
#define NM AT_IDR_IMM |
|
|
|
#define XY AT_IX_IY |
|
|
|
#define II AT_IX_IY |
|
|
|
#define NZ AT_COND_NZ |
|
|
|
#define Z_ AT_COND_Z |
|
|
|
#define NC AT_COND_NC |
|
|
@@ -73,62 +70,46 @@ typedef enum { |
|
|
|
#define M_ AT_COND_M |
|
|
|
#define PC AT_PORT_C |
|
|
|
#define PM AT_PORT_IM |
|
|
|
#define R0 AT_PORT_0 |
|
|
|
|
|
|
|
static ArgType instr_args[3][256] = { |
|
|
|
{ |
|
|
|
__, BC, NB, BC, B_, __, B_, __, __, __, __, BC, C_, C_, C_, __, |
|
|
|
__, DE, ND, DE, D_, __, __, __, __, __, __, DE, E_, E_, E_, __, |
|
|
|
__, HL, __, HL, H_, __, __, __, __, __, __, HL, L_, L_, L_, __, |
|
|
|
__, SP, __, SP, __, __, __, __, __, __, __, SP, A_, A_, A_, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, MR, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, MR, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __ |
|
|
|
__, BC, NB, BC, B_, B_, B_, __, AF, HL, A_, BC, C_, C_, C_, __, |
|
|
|
ML, DE, ND, DE, D_, D_, D_, __, ML, HL, A_, DE, E_, E_, E_, __, |
|
|
|
NZ, HL, NM, HL, H_, H_, H_, __, Z_, HL, HL, HL, L_, L_, L_, __, |
|
|
|
NC, SP, NM, SP, NH, NH, NH, __, CC, HL, A_, SP, A_, A_, A_, __, |
|
|
|
B_, B_, B_, B_, B_, B_, B_, B_, C_, C_, C_, C_, C_, C_, C_, C_, |
|
|
|
D_, D_, D_, D_, D_, D_, D_, D_, E_, E_, E_, E_, E_, E_, E_, E_, |
|
|
|
H_, H_, H_, H_, H_, H_, H_, H_, L_, L_, L_, L_, L_, L_, L_, L_, |
|
|
|
NH, NH, NH, NH, NH, NH, __, NH, A_, A_, A_, A_, A_, A_, A_, A_, |
|
|
|
A_, A_, A_, A_, A_, A_, A_, A_, A_, A_, A_, A_, A_, A_, A_, A_, |
|
|
|
B_, C_, D_, E_, H_, L_, NH, A_, A_, A_, A_, A_, A_, A_, A_, A_, |
|
|
|
B_, C_, D_, E_, H_, L_, NH, A_, B_, C_, D_, E_, H_, L_, NH, A_, |
|
|
|
B_, C_, D_, E_, H_, L_, NH, A_, B_, C_, D_, E_, H_, L_, NH, A_, |
|
|
|
NZ, BC, NZ, M2, NZ, BC, A_, MR, Z_, __, Z_, __, Z_, M2, A_, MR, |
|
|
|
NC, DE, NC, PM, NC, DE, M1, MR, CC, __, CC, A_, CC, __, A_, MR, |
|
|
|
PO, HL, PO, NS, PO, HL, M1, MR, PE, NH, PE, DE, PE, __, M1, MR, |
|
|
|
P_, AF, P_, __, P_, AF, M1, MR, M_, SP, M_, __, M_, __, M1, MR |
|
|
|
}, |
|
|
|
{ |
|
|
|
__, M2, __, __, __, __, M1, __, __, __, __, __, __, __, M1, __, |
|
|
|
__, M2, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, M2, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, M2, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __ |
|
|
|
__, M2, A_, __, __, __, M1, __, AS, BC, NB, __, __, __, M1, __, |
|
|
|
__, M2, A_, __, __, __, M1, __, __, DE, ND, __, __, __, M1, __, |
|
|
|
ML, M2, HL, __, __, __, M1, __, ML, HL, NM, __, __, __, M1, __, |
|
|
|
ML, M2, A_, __, __, __, M1, __, ML, SP, NM, __, __, __, M1, __, |
|
|
|
B_, C_, D_, E_, H_, L_, NH, A_, B_, C_, D_, E_, H_, L_, NH, A_, |
|
|
|
B_, C_, D_, E_, H_, L_, NH, A_, B_, C_, D_, E_, H_, L_, NH, A_, |
|
|
|
B_, C_, D_, E_, H_, L_, NH, A_, B_, C_, D_, E_, H_, L_, NH, A_, |
|
|
|
B_, C_, D_, E_, H_, L_, NH, A_, B_, C_, D_, E_, H_, L_, NH, A_, |
|
|
|
B_, C_, D_, E_, H_, L_, NH, A_, B_, C_, D_, E_, H_, L_, NH, A_, |
|
|
|
__, __, __, __, __, __, __, __, B_, C_, D_, E_, H_, L_, NH, A_, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, M2, M2, M2, __, M1, __, __, __, M2, __, M2, __, M1, __, |
|
|
|
__, __, M2, A_, M2, __, __, __, __, __, M2, PM, M2, __, M1, __, |
|
|
|
__, __, M2, HL, M2, __, __, __, __, __, M2, HL, M2, __, __, __, |
|
|
|
__, __, M2, __, M2, __, __, __, __, HL, M2, __, M2, __, __, __ |
|
|
|
}, |
|
|
|
{ |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __ |
|
|
|
} |
|
|
|
{ __ } |
|
|
|
}; |
|
|
|
|
|
|
|
static ArgType instr_args_extended[3][256] = { |
|
|
@@ -137,10 +118,10 @@ static ArgType instr_args_extended[3][256] = { |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, MI, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
B_, PC, HL, NM, __, __, MI, I_, C_, PC, HL, BC, __, __, MI, R_, |
|
|
|
D_, PC, HL, NM, __, __, MI, A_, E_, PC, HL, DE, __, __, MI, A_, |
|
|
|
H_, PC, HL, NM, __, __, MI, __, L_, PC, HL, HL, __, __, MI, __, |
|
|
|
PC, PC, HL, NM, __, __, MI, __, A_, PC, HL, SP, __, __, MI, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
@@ -155,10 +136,10 @@ static ArgType instr_args_extended[3][256] = { |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
PC, B_, BC, BC, __, __, __, A_, PC, C_, BC, NM, __, __, __, A_, |
|
|
|
PC, D_, DE, DE, __, __, __, I_, PC, E_, DE, NM, __, __, __, R_, |
|
|
|
PC, H_, HL, HL, __, __, __, __, PC, L_, HL, NM, __, __, __, __, |
|
|
|
__, R0, SP, SP, __, __, __, __, PC, A_, SP, NM, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
@@ -168,176 +149,125 @@ static ArgType instr_args_extended[3][256] = { |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __ |
|
|
|
}, |
|
|
|
{ |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __ |
|
|
|
} |
|
|
|
{ __ } |
|
|
|
}; |
|
|
|
|
|
|
|
static ArgType instr_args_bits[3][256] = { |
|
|
|
{ |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, MB, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __ |
|
|
|
B_, C_, D_, E_, H_, L_, NH, A_, B_, C_, D_, E_, H_, L_, NH, A_, |
|
|
|
B_, C_, D_, E_, H_, L_, NH, A_, B_, C_, D_, E_, H_, L_, NH, A_, |
|
|
|
B_, C_, D_, E_, H_, L_, NH, A_, B_, C_, D_, E_, H_, L_, NH, A_, |
|
|
|
B_, C_, D_, E_, H_, L_, NH, A_, B_, C_, D_, E_, H_, L_, NH, A_, |
|
|
|
MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, |
|
|
|
MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, |
|
|
|
MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, |
|
|
|
MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, |
|
|
|
MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, |
|
|
|
MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, |
|
|
|
MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, |
|
|
|
MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, |
|
|
|
MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, |
|
|
|
MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, |
|
|
|
MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, |
|
|
|
MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB |
|
|
|
}, |
|
|
|
{ |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, B_, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __ |
|
|
|
B_, C_, D_, E_, H_, L_, NH, A_, B_, C_, D_, E_, H_, L_, NH, A_, |
|
|
|
B_, C_, D_, E_, H_, L_, NH, A_, B_, C_, D_, E_, H_, L_, NH, A_, |
|
|
|
B_, C_, D_, E_, H_, L_, NH, A_, B_, C_, D_, E_, H_, L_, NH, A_, |
|
|
|
B_, C_, D_, E_, H_, L_, NH, A_, B_, C_, D_, E_, H_, L_, NH, A_, |
|
|
|
B_, C_, D_, E_, H_, L_, NH, A_, B_, C_, D_, E_, H_, L_, NH, A_, |
|
|
|
B_, C_, D_, E_, H_, L_, NH, A_, B_, C_, D_, E_, H_, L_, NH, A_, |
|
|
|
B_, C_, D_, E_, H_, L_, NH, A_, B_, C_, D_, E_, H_, L_, NH, A_, |
|
|
|
B_, C_, D_, E_, H_, L_, NH, A_, B_, C_, D_, E_, H_, L_, NH, A_, |
|
|
|
B_, C_, D_, E_, H_, L_, NH, A_, B_, C_, D_, E_, H_, L_, NH, A_, |
|
|
|
B_, C_, D_, E_, H_, L_, NH, A_, B_, C_, D_, E_, H_, L_, NH, A_, |
|
|
|
B_, C_, D_, E_, H_, L_, NH, A_, B_, C_, D_, E_, H_, L_, NH, A_, |
|
|
|
B_, C_, D_, E_, H_, L_, NH, A_, B_, C_, D_, E_, H_, L_, NH, A_ |
|
|
|
}, |
|
|
|
{ |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __ |
|
|
|
} |
|
|
|
{ __ } |
|
|
|
}; |
|
|
|
|
|
|
|
static ArgType instr_args_index[3][256] = { |
|
|
|
{ |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, XY, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __ |
|
|
|
__, __, __, __, __, __, __, __, __, XY, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, XY, __, __, __, __, __, __, |
|
|
|
__, XY, NM, XY, IH, IH, IH, __, __, XY, XY, XY, IL, IL, IL, __, |
|
|
|
__, __, __, __, II, II, II, __, __, XY, __, __, __, __, __, __, |
|
|
|
__, __, __, __, B_, B_, B_, __, __, __, __, __, C_, C_, C_, __, |
|
|
|
__, __, __, __, D_, D_, D_, __, __, __, __, __, E_, E_, E_, __, |
|
|
|
IH, IH, IH, IH, IH, IH, H_, IH, IL, IL, IL, IL, IL, IL, L_, IL, |
|
|
|
II, II, II, II, II, II, __, II, __, __, __, __, A_, A_, A_, __, |
|
|
|
__, __, __, __, A_, A_, A_, __, __, __, __, __, A_, A_, A_, __, |
|
|
|
__, __, __, __, IH, IL, II, __, __, __, __, __, A_, A_, A_, __, |
|
|
|
__, __, __, __, IH, IL, II, __, __, __, __, __, IH, IL, II, __, |
|
|
|
__, __, __, __, IH, IL, II, __, __, __, __, __, IH, IL, II, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, XY, __, NS, __, XY, __, __, __, NI, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, SP, __, __, __, __, __, __ |
|
|
|
}, |
|
|
|
{ |
|
|
|
__, __, __, __, __, __, __, __, __, BC, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, DE, __, __, __, __, __, __, |
|
|
|
__, M2, XY, __, __, __, M1, __, __, XY, NM, __, __, __, M1, __, |
|
|
|
__, __, __, __, __, __, M1, __, __, SP, __, __, __, __, __, __, |
|
|
|
__, __, __, __, IH, IL, II, __, __, __, __, __, IH, IL, II, __, |
|
|
|
__, __, __, __, IH, IL, II, __, __, __, __, __, IH, IL, II, __, |
|
|
|
B_, C_, D_, E_, IH, IL, II, A_, B_, C_, D_, E_, IH, IL, II, A_, |
|
|
|
B_, C_, D_, E_, H_, L_, __, A_, __, __, __, __, IH, IL, II, __, |
|
|
|
__, __, __, __, IH, IL, II, __, __, __, __, __, IH, IL, II, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, IH, IL, II, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __ |
|
|
|
__, __, __, XY, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, XY, __, __, __, __, __, __ |
|
|
|
}, |
|
|
|
{ |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __ |
|
|
|
} |
|
|
|
{ __ } |
|
|
|
}; |
|
|
|
|
|
|
|
static ArgType instr_args_index_bits[3][256] = { |
|
|
|
{ |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __ |
|
|
|
II, II, II, II, II, II, II, II, II, II, II, II, II, II, II, II, |
|
|
|
II, II, II, II, II, II, II, II, II, II, II, II, II, II, II, II, |
|
|
|
II, II, II, II, II, II, II, II, II, II, II, II, II, II, II, II, |
|
|
|
II, II, II, II, II, II, II, II, II, II, II, II, II, II, II, II, |
|
|
|
MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, |
|
|
|
MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, |
|
|
|
MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, |
|
|
|
MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, |
|
|
|
MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, |
|
|
|
MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, |
|
|
|
MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, |
|
|
|
MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, |
|
|
|
MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, |
|
|
|
MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, |
|
|
|
MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, |
|
|
|
MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB |
|
|
|
}, |
|
|
|
{ |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __ |
|
|
|
B_, C_, D_, E_, H_, L_, __, A_, B_, C_, D_, E_, H_, L_, __, A_, |
|
|
|
B_, C_, D_, E_, H_, L_, __, A_, B_, C_, D_, E_, H_, L_, __, A_, |
|
|
|
B_, C_, D_, E_, H_, L_, __, A_, B_, C_, D_, E_, H_, L_, __, A_, |
|
|
|
B_, C_, D_, E_, H_, L_, __, A_, B_, C_, D_, E_, H_, L_, __, A_, |
|
|
|
II, II, II, II, II, II, II, II, II, II, II, II, II, II, II, II, |
|
|
|
II, II, II, II, II, II, II, II, II, II, II, II, II, II, II, II, |
|
|
|
II, II, II, II, II, II, II, II, II, II, II, II, II, II, II, II, |
|
|
|
II, II, II, II, II, II, II, II, II, II, II, II, II, II, II, II, |
|
|
|
II, II, II, II, II, II, II, II, II, II, II, II, II, II, II, II, |
|
|
|
II, II, II, II, II, II, II, II, II, II, II, II, II, II, II, II, |
|
|
|
II, II, II, II, II, II, II, II, II, II, II, II, II, II, II, II, |
|
|
|
II, II, II, II, II, II, II, II, II, II, II, II, II, II, II, II, |
|
|
|
II, II, II, II, II, II, II, II, II, II, II, II, II, II, II, II, |
|
|
|
II, II, II, II, II, II, II, II, II, II, II, II, II, II, II, II, |
|
|
|
II, II, II, II, II, II, II, II, II, II, II, II, II, II, II, II, |
|
|
|
II, II, II, II, II, II, II, II, II, II, II, II, II, II, II, II |
|
|
|
}, |
|
|
|
{ |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
@@ -348,14 +278,14 @@ static ArgType instr_args_index_bits[3][256] = { |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, |
|
|
|
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __ |
|
|
|
B_, C_, D_, E_, H_, L_, __, A_, B_, C_, D_, E_, H_, L_, __, A_, |
|
|
|
B_, C_, D_, E_, H_, L_, __, A_, B_, C_, D_, E_, H_, L_, __, A_, |
|
|
|
B_, C_, D_, E_, H_, L_, __, A_, B_, C_, D_, E_, H_, L_, __, A_, |
|
|
|
B_, C_, D_, E_, H_, L_, __, A_, B_, C_, D_, E_, H_, L_, __, A_, |
|
|
|
B_, C_, D_, E_, H_, L_, __, A_, B_, C_, D_, E_, H_, L_, __, A_, |
|
|
|
B_, C_, D_, E_, H_, L_, __, A_, B_, C_, D_, E_, H_, L_, __, A_, |
|
|
|
B_, C_, D_, E_, H_, L_, __, A_, B_, C_, D_, E_, H_, L_, __, A_, |
|
|
|
B_, C_, D_, E_, H_, L_, __, A_, B_, C_, D_, E_, H_, L_, __, A_ |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
@@ -373,14 +303,11 @@ static ArgType instr_args_index_bits[3][256] = { |
|
|
|
#undef BC |
|
|
|
#undef DE |
|
|
|
#undef HL |
|
|
|
#undef IX |
|
|
|
#undef IY |
|
|
|
#undef XY |
|
|
|
#undef SP |
|
|
|
#undef AS |
|
|
|
#undef XH |
|
|
|
#undef XL |
|
|
|
#undef YH |
|
|
|
#undef YL |
|
|
|
#undef IH |
|
|
|
#undef IL |
|
|
|
#undef M2 |
|
|
|
#undef M1 |
|
|
|
#undef ML |
|
|
@@ -391,8 +318,9 @@ static ArgType instr_args_index_bits[3][256] = { |
|
|
|
#undef NB |
|
|
|
#undef ND |
|
|
|
#undef NS |
|
|
|
#undef NI |
|
|
|
#undef NM |
|
|
|
#undef XY |
|
|
|
#undef II |
|
|
|
#undef NZ |
|
|
|
#undef Z_ |
|
|
|
#undef NC |
|
|
@@ -403,6 +331,7 @@ static ArgType instr_args_index_bits[3][256] = { |
|
|
|
#undef M_ |
|
|
|
#undef PC |
|
|
|
#undef PM |
|
|
|
#undef R0 |
|
|
|
|
|
|
|
/* |
|
|
|
Decode an immediate argument. |
|
|
@@ -478,14 +407,8 @@ static void decode_argument( |
|
|
|
case AT_REG_BC: value = "bc"; break; |
|
|
|
case AT_REG_DE: value = "de"; break; |
|
|
|
case AT_REG_HL: value = "hl"; break; |
|
|
|
case AT_REG_IX: value = "ix"; break; |
|
|
|
case AT_REG_IY: value = "iy"; break; |
|
|
|
case AT_REG_SP: value = "sp"; break; |
|
|
|
case AT_REG_AF_: value = "af'"; break; |
|
|
|
case AT_REG_IXH: value = "ixh"; break; |
|
|
|
case AT_REG_IXL: value = "ixl"; break; |
|
|
|
case AT_REG_IYH: value = "iyh"; break; |
|
|
|
case AT_REG_IYL: value = "iyl"; break; |
|
|
|
case AT_IDR_HL: value = "(hl)"; break; |
|
|
|
case AT_IDR_BC: value = "(bc)"; break; |
|
|
|
case AT_IDR_DE: value = "(de)"; break; |
|
|
@@ -499,6 +422,11 @@ static void decode_argument( |
|
|
|
case AT_COND_P: value = "p"; break; |
|
|
|
case AT_COND_M: value = "m"; break; |
|
|
|
case AT_PORT_C: value = "(c)"; break; |
|
|
|
case AT_PORT_0: value = "0"; break; |
|
|
|
case AT_REG_IXY: value = (bytes[0] == 0xDD) ? "ix" : "iy"; break; |
|
|
|
case AT_REG_IH: value = (bytes[0] == 0xDD) ? "ixh" : "iyh"; break; |
|
|
|
case AT_REG_IL: value = (bytes[0] == 0xDD) ? "ixl" : "iyl"; break; |
|
|
|
case AT_IDR_IXY: value = (bytes[0] == 0xDD) ? "(ix)" : "(iy)"; break; |
|
|
|
case AT_IMM_U16: |
|
|
|
case AT_IMM_U8: |
|
|
|
case AT_IMM_REL: |
|
|
|