trunk/src/emu/cpu/hmcs40/hmcs40.h
| r244815 | r244816 | |
| 86 | 86 | |
| 87 | 87 | // device_disasm_interface overrides |
| 88 | 88 | virtual UINT32 disasm_min_opcode_bytes() const { return 2; } |
| 89 | | virtual UINT32 disasm_max_opcode_bytes() const { return 2; } |
| 89 | virtual UINT32 disasm_max_opcode_bytes() const { return 2+1; } |
| 90 | 90 | virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options); |
| 91 | 91 | void state_string_export(const device_state_entry &entry, astring &string); |
| 92 | 92 | |
trunk/src/emu/cpu/hmcs40/hmcs40d.c
| r244815 | r244816 | |
| 75 | 75 | 0, 0 |
| 76 | 76 | }; |
| 77 | 77 | |
| 78 | // next program counter in sequence (relative) |
| 79 | static const INT8 s_next_pc[0x40] = |
| 80 | { |
| 81 | 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, |
| 82 | 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32+1, |
| 83 | -32, -31, -30, -29, -28, -27, -26, -25, -24, -23, -22, -21, -20, -19, -18, -17, |
| 84 | -15, -14, -13, -12, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, -1 |
| 85 | }; |
| 78 | 86 | |
| 87 | |
| 79 | 88 | static const UINT8 hmcs40_mnemonic[0x400] = |
| 80 | 89 | { |
| 81 | 90 | /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ |
| r244815 | r244816 | |
| 171 | 180 | |
| 172 | 181 | CPU_DISASSEMBLE(hmcs40) |
| 173 | 182 | { |
| 174 | | int pos = 0; |
| 175 | | UINT16 op = (oprom[pos] | oprom[pos + 1] << 8) & 0x3ff; |
| 176 | | pos++; |
| 183 | UINT16 op = (oprom[0] | oprom[1] << 8) & 0x3ff; |
| 177 | 184 | char *dst = buffer; |
| 178 | 185 | UINT8 instr = hmcs40_mnemonic[op]; |
| 179 | 186 | INT8 bits = s_bits[instr]; |
| r244815 | r244816 | |
| 201 | 208 | else |
| 202 | 209 | dst += sprintf(dst, "%d", param); |
| 203 | 210 | } |
| 204 | | |
| 211 | |
| 212 | int pos = s_next_pc[pc & 0x3f] & DASMFLAG_LENGTHMASK; |
| 205 | 213 | return pos | s_flags[instr] | DASMFLAG_SUPPORTED; |
| 206 | 214 | } |