1 #ifndef R2_H8300_DISAS_H 2 #define R2_H8300_DISAS_H 3 4 #include <stdint.h> 5 6 enum h8300_4bit_opcodes{ 7 H8300_MOV_4BIT_2 = 0x2, 8 H8300_MOV_4BIT_3 = 0x3, 9 H8300_ADD_4BIT = 0x8, 10 H8300_ADDX_4BIT = 0x9, 11 H8300_CMP_4BIT = 0xA, 12 H8300_SUBX_4BIT = 0xB, 13 H8300_OR_4BIT = 0xC, 14 H8300_XOR_4BIT = 0xD, 15 H8300_AND_4BIT = 0xE, 16 H8300_MOV_4BIT = 0xF, 17 }; 18 19 enum h8300_opcodes { 20 H8300_NOP = 0x00, 21 H8300_SLEEP = 0x01, 22 H8300_STC = 0x02, 23 H8300_LDC = 0x03, 24 H8300_ORC = 0x04, 25 H8300_XORC = 0x05, 26 H8300_ANDC = 0x06, 27 H8300_LDC_2 = 0x07, 28 H8300_ADDB_DIRECT = 0x08, 29 H8300_ADDW_DIRECT = 0x09, 30 H8300_INC = 0x0A, 31 H8300_ADDS = 0x0B, 32 H8300_MOV_1 = 0x0C, 33 H8300_MOV_2 = 0x0D, 34 H8300_ADDX = 0x0E, 35 H8300_DAA = 0x0F, 36 H8300_SHL = 0x10, 37 H8300_SHR = 0x11, 38 H8300_ROTL = 0x12, 39 H8300_ROTR = 0x13, 40 H8300_OR = 0x14, 41 H8300_XOR = 0x15, 42 H8300_AND = 0x16, 43 H8300_NOT_NEG = 0x17, 44 H8300_SUB_1 = 0x18, 45 H8300_SUBW = 0x19, 46 H8300_DEC = 0x1A, 47 H8300_SUBS = 0x1B, 48 H8300_CMP_1 = 0x1C, 49 H8300_CMP_2 = 0x1D, 50 H8300_SUBX = 0x1E, 51 H8300_DAS = 0x1F, 52 H8300_BRA = 0x40, 53 H8300_BRN = 0x41, 54 H8300_BHI = 0x42, 55 H8300_BLS = 0x43, 56 H8300_BCC = 0x44, 57 H8300_BCS = 0x45, 58 H8300_BNE = 0x46, 59 H8300_BEQ = 0x47, 60 H8300_BVC = 0x48, 61 H8300_BVS = 0x49, 62 H8300_BPL = 0x4A, 63 H8300_BMI = 0x4B, 64 H8300_BGE = 0x4C, 65 H8300_BLT = 0x4D, 66 H8300_BGT = 0x4E, 67 H8300_BLE = 0x4F, 68 H8300_MULXU = 0x50, 69 H8300_DIVXU = 0x51, 70 H8300_RTS = 0x54, 71 H8300_BSR = 0x55, 72 H8300_RTE = 0x56, 73 H8300_JMP_1 = 0x59, 74 H8300_JMP_2 = 0x5A, 75 H8300_JMP_3 = 0x5B, 76 H8300_JSR_1 = 0x5D, 77 H8300_JSR_2 = 0x5E, 78 H8300_JSR_3 = 0x5F, 79 H8300_BSET_1 = 0x60, 80 H8300_BNOT_1 = 0x61, 81 H8300_BCLR_R2R8 = 0x62, 82 H8300_BTST_R2R8 = 0x63, 83 H8300_BST_BIST = 0x67, 84 H8300_MOV_R82IND16 = 0x68, 85 H8300_MOV_IND162R16 = 0x69, 86 H8300_MOV_R82ABS16 = 0x6a, 87 H8300_MOV_ABS162R16 = 0x6B, 88 H8300_MOV_R82RDEC16 = 0x6C, 89 H8300_MOV_INDINC162R16 = 0x6D, 90 H8300_MOV_R82DISPR16 = 0x6E, 91 H8300_MOV_DISP162R16 = 0x6F, 92 H8300_BSET_2 = 0x70, 93 H8300_BNOT_2 = 0x71, 94 H8300_BCLR_IMM2R8 = 0x72, 95 H8300_BTST = 0x73, 96 H8300_BOR_BIOR = 0x74, 97 H8300_BXOR_BIXOR = 0x75, 98 H8300_BAND_BIAND = 0x76, 99 H8300_BILD_IMM2R8 = 0x77, 100 H8300_MOV_IMM162R16 = 0x79, 101 H8300_EEPMOV = 0x7B, 102 H8300_BIAND_IMM2IND16 = 0x7C, 103 H8300_BCLR_R2IND16 = 0x7D, 104 H8300_BIAND_IMM2ABS8 = 0x7E, 105 H8300_BCLR_R2ABS8 = 0x7F, 106 }; 107 108 #define H8300_INSTR_MAXLEN 20 109 110 enum h8300_opcodes_9bit { 111 H8300_BST = 0x6700 >> 7, 112 H8300_BIST = 0x6780 >> 7, 113 H8300_BOR = 0x7400 >> 7, 114 H8300_BIOR = 0x7480 >> 7, 115 H8300_BXOR = 0x7500 >> 7, 116 H8300_BIXOR = 0x7580 >> 7, 117 H8300_BAND = 0x7600 >> 7, 118 H8300_BIAND = 0x7680 >> 7, 119 H8300_BLD = 0x7700 >> 7, 120 H8300_BILD = 0x7780 >> 7, 121 }; 122 123 struct h8300_cmd { 124 char instr[H8300_INSTR_MAXLEN]; 125 char operands[H8300_INSTR_MAXLEN]; 126 }; 127 128 int h8300_decode_command(const ut8 *instr, struct h8300_cmd *cmd); 129 130 #endif /* H8300_DISAS_H */ 131