| @@ -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: | |||