mirror of
https://github.com/holub/mame
synced 2025-04-24 01:11:11 +03:00
Changed the minx disassembler to use 'std::ostream &' internally
This commit is contained in:
parent
894c6320a0
commit
951c6fcedb
@ -349,85 +349,84 @@ static const minxdasm mnemonic_cf[256] = {
|
||||
};
|
||||
|
||||
#define HANDLE_ARGUMENT \
|
||||
case R_A: dst += sprintf( dst, "%cA", fill ); break; \
|
||||
case R_B: dst += sprintf( dst, "%cB", fill ); break; \
|
||||
case R_L: dst += sprintf( dst, "%cL", fill ); break; \
|
||||
case R_H: dst += sprintf( dst, "%cH", fill ); break; \
|
||||
case R_N: dst += sprintf( dst, "%cN", fill ); break; \
|
||||
case R_F: dst += sprintf( dst, "%cF", fill ); break; \
|
||||
case R_SP: dst += sprintf( dst, "%cSP", fill ); break; \
|
||||
case R_BA: dst += sprintf( dst, "%cBA", fill ); break; \
|
||||
case R_HL: dst += sprintf( dst, "%cHL", fill ); break; \
|
||||
case R_X: dst += sprintf( dst, "%cX", fill ); break; \
|
||||
case R_Y: dst += sprintf( dst, "%cY", fill ); break; \
|
||||
case R_U: dst += sprintf( dst, "%cU", fill ); break; \
|
||||
case R_V: dst += sprintf( dst, "%cV", fill ); break; \
|
||||
case R_I: dst += sprintf( dst, "%cI", fill ); break; \
|
||||
case R_XI: dst += sprintf( dst, "%cXI", fill ); break; \
|
||||
case R_YI: dst += sprintf( dst, "%cYI", fill ); break; \
|
||||
case R_PC: dst += sprintf( dst, "%cPC", fill ); break; \
|
||||
case R_A: util::stream_format(stream, "%cA", fill); break; \
|
||||
case R_B: util::stream_format(stream, "%cB", fill); break; \
|
||||
case R_L: util::stream_format(stream, "%cL", fill); break; \
|
||||
case R_H: util::stream_format(stream, "%cH", fill); break; \
|
||||
case R_N: util::stream_format(stream, "%cN", fill); break; \
|
||||
case R_F: util::stream_format(stream, "%cF", fill); break; \
|
||||
case R_SP: util::stream_format(stream, "%cSP", fill); break; \
|
||||
case R_BA: util::stream_format(stream, "%cBA", fill); break; \
|
||||
case R_HL: util::stream_format(stream, "%cHL", fill); break; \
|
||||
case R_X: util::stream_format(stream, "%cX", fill); break; \
|
||||
case R_Y: util::stream_format(stream, "%cY", fill); break; \
|
||||
case R_U: util::stream_format(stream, "%cU", fill); break; \
|
||||
case R_V: util::stream_format(stream, "%cV", fill); break; \
|
||||
case R_I: util::stream_format(stream, "%cI", fill); break; \
|
||||
case R_XI: util::stream_format(stream, "%cXI", fill); break; \
|
||||
case R_YI: util::stream_format(stream, "%cYI", fill); break; \
|
||||
case R_PC: util::stream_format(stream, "%cPC", fill); break; \
|
||||
case I_8: /* 8 bit immediate */ \
|
||||
ea = oprom[pos++]; \
|
||||
dst += sprintf( dst, "%c$%02X", fill, ea ); \
|
||||
util::stream_format(stream, "%c$%02X", fill, ea); \
|
||||
break; \
|
||||
case I_16: /* 16 bit immediate */ \
|
||||
ea = oprom[pos++]; \
|
||||
ea += oprom[pos++] << 8; \
|
||||
dst += sprintf( dst, "%c$%04X", fill, ea ); \
|
||||
util::stream_format(stream, "%c$%04X", fill, ea); \
|
||||
break; \
|
||||
case D_8: /* PC + 8 bit displacement (signed) */ \
|
||||
ofs8 = oprom[pos++]; \
|
||||
dst += sprintf( dst, "%c$%04X", fill, pc + pos - 1 + ofs8 ); \
|
||||
util::stream_format(stream, "%c$%04X", fill, pc + pos - 1 + ofs8); \
|
||||
break; \
|
||||
case D_16: /* PC + 16 bit displacement */ \
|
||||
ea = oprom[pos++]; \
|
||||
ea += oprom[pos++] << 8; \
|
||||
ea = ea - 1; \
|
||||
dst += sprintf( dst, "%c$%04X", fill, pc + pos + ea ); \
|
||||
util::stream_format(stream, "%c$%04X", fill, pc + pos + ea); \
|
||||
break; \
|
||||
case S_8: /* SP + 8 bit displacement (signed) */ \
|
||||
ea = oprom[pos++]; \
|
||||
dst += sprintf( dst, "%cSP+$%02X", fill, ea ); \
|
||||
util::stream_format(stream, "%cSP+$%02X", fill, ea); \
|
||||
break; \
|
||||
case M_IHL: dst += sprintf( dst, "%c[I+HL]", fill ); break; \
|
||||
case M_IHL: util::stream_format(stream, "%c[I+HL]", fill); break; \
|
||||
case M_N8: /* [I+N+ofs8] */ \
|
||||
ea = oprom[pos++]; \
|
||||
dst += sprintf( dst, "%c[I+N+$%02X]", fill, ea ); \
|
||||
util::stream_format(stream, "%c[I+N+$%02X]", fill, ea); \
|
||||
break; \
|
||||
case M_I16: /* [I+ofs16] */ \
|
||||
ea = oprom[pos++]; \
|
||||
ea += oprom[pos++] << 8; \
|
||||
dst += sprintf( dst, "%c[I+$%04X]", fill, ea ); \
|
||||
util::stream_format(stream, "%c[I+$%04X]", fill, ea); \
|
||||
break; \
|
||||
case M_X: dst += sprintf( dst, "%c[X]", fill ); break; \
|
||||
case M_Y: dst += sprintf( dst, "%c[Y]", fill ); break; \
|
||||
case M_X: util::stream_format(stream, "%c[X]", fill); break; \
|
||||
case M_Y: util::stream_format(stream, "%c[Y]", fill); break; \
|
||||
case M_X8: /* [X + 8 bit displacement (signed)] */ \
|
||||
ea = oprom[pos++]; \
|
||||
dst += sprintf( dst, "%c[X+$%02X]", fill, ea ); \
|
||||
util::stream_format(stream, "%c[X+$%02X]", fill, ea); \
|
||||
break; \
|
||||
case M_Y8: /* [Y + 8 bit displacement (signed)] */ \
|
||||
ea = oprom[pos++]; \
|
||||
dst += sprintf( dst, "%c[Y+$%02X]", fill, ea ); \
|
||||
util::stream_format(stream, "%c[Y+$%02X]", fill, ea); \
|
||||
break; \
|
||||
case M_XL: dst += sprintf( dst, "%c[X+L]", fill ); break; \
|
||||
case M_YL: dst += sprintf( dst, "%c[Y+L]", fill ); break; \
|
||||
case M_XL: util::stream_format(stream, "%c[X+L]", fill); break; \
|
||||
case M_YL: util::stream_format(stream, "%c[Y+L]", fill); break; \
|
||||
case M_16: /* [16bit] */ \
|
||||
ea = oprom[pos++]; \
|
||||
ea += oprom[pos++] << 8; \
|
||||
dst += sprintf( dst, "%c[$%04X]", fill, ea ); \
|
||||
util::stream_format(stream, "%c[$%04X]", fill, ea); \
|
||||
break; \
|
||||
case M_HL: dst += sprintf( dst, "%c[HL]", fill ); break; \
|
||||
case OP: dst += sprintf( dst, "%c$%02X", fill, op ); break; \
|
||||
case OP1: dst += sprintf( dst, "%c$%02X", fill, op1 ); break;
|
||||
case M_HL: util::stream_format(stream, "%c[HL]", fill); break; \
|
||||
case OP: util::stream_format(stream, "%c$%02X", fill, op); break; \
|
||||
case OP1: util::stream_format(stream, "%c$%02X", fill, op1); break;
|
||||
|
||||
CPU_DISASSEMBLE( minx )
|
||||
static offs_t internal_disasm_minx(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options)
|
||||
{
|
||||
const minxdasm *instr;
|
||||
uint8_t op, op1;
|
||||
int8_t ofs8;
|
||||
uint16_t ea;
|
||||
int pos = 0;
|
||||
char *dst = buffer;
|
||||
|
||||
op1 = op = oprom[pos++];
|
||||
|
||||
@ -445,7 +444,7 @@ CPU_DISASSEMBLE( minx )
|
||||
break;
|
||||
}
|
||||
|
||||
dst += sprintf( dst, "%-6s", s_mnemonic[ instr->mnemonic ] );
|
||||
util::stream_format(stream, "%-6s", s_mnemonic[ instr->mnemonic ]);
|
||||
|
||||
if ( instr->argument1 ) {
|
||||
char fill = ' ';
|
||||
@ -463,3 +462,13 @@ CPU_DISASSEMBLE( minx )
|
||||
}
|
||||
return pos | s_flags[instr->mnemonic] | DASMFLAG_SUPPORTED;
|
||||
}
|
||||
|
||||
|
||||
CPU_DISASSEMBLE(minx)
|
||||
{
|
||||
std::ostringstream stream;
|
||||
offs_t result = internal_disasm_minx(device, stream, pc, oprom, opram, options);
|
||||
std::string stream_str = stream.str();
|
||||
strcpy(buffer, stream_str.c_str());
|
||||
return result;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user