mirror of
https://github.com/holub/mame
synced 2025-07-02 00:29:37 +03:00
Changed the sc61860 disassembler to use 'std::ostream &' internally
This commit is contained in:
parent
3ee5564b78
commit
87672cf2d3
@ -152,7 +152,7 @@ static const struct { const char *mnemonic; Adr adr; } table[]={
|
||||
{ nullptr }, { nullptr }, { nullptr }, { nullptr }, { nullptr }, { nullptr }, { nullptr }, { nullptr },
|
||||
};
|
||||
|
||||
CPU_DISASSEMBLE( sc61860 )
|
||||
static offs_t internal_disasm_sc61860(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options)
|
||||
{
|
||||
const uint8_t *base_oprom = oprom;
|
||||
int oper=*(oprom++);
|
||||
@ -161,42 +161,42 @@ CPU_DISASSEMBLE( sc61860 )
|
||||
|
||||
switch(oper&0xc0) {
|
||||
case 0x80:
|
||||
sprintf(buffer,"%-6s%.2x",table[oper&0x80].mnemonic, oper&0x3f);
|
||||
util::stream_format(stream,"%-6s%02x",table[oper&0x80].mnemonic, oper&0x3f);
|
||||
break;
|
||||
default:
|
||||
switch(oper&0xe0) {
|
||||
case 0xe0:
|
||||
sprintf(buffer,"%-6s%.4x",table[oper&0xe0].mnemonic,
|
||||
util::stream_format(stream,"%-6s%04x",table[oper&0xe0].mnemonic,
|
||||
*(oprom++)|((oper&0x1f)<<8));
|
||||
break;
|
||||
default:
|
||||
switch (table[oper].adr) {
|
||||
case Ill: sprintf(buffer,"?%.2x",oper);break;
|
||||
case Imp: sprintf(buffer,"%s",table[oper].mnemonic); break;
|
||||
case Imm: sprintf(buffer,"%-6s%.2x",table[oper].mnemonic, *(oprom++)); break;
|
||||
case Ill: util::stream_format(stream,"?%02x",oper);break;
|
||||
case Imp: util::stream_format(stream,"%s",table[oper].mnemonic); break;
|
||||
case Imm: util::stream_format(stream,"%-6s%02x",table[oper].mnemonic, *(oprom++)); break;
|
||||
case ImmW:
|
||||
adr=(oprom[0]<<8)|oprom[1];oprom+=2;
|
||||
sprintf(buffer,"%-6s%.4x",table[oper].mnemonic, adr);
|
||||
util::stream_format(stream,"%-6s%04x",table[oper].mnemonic, adr);
|
||||
break;
|
||||
case Abs:
|
||||
adr=(oprom[0]<<8)|oprom[1];oprom+=2;
|
||||
sprintf(buffer,"%-6s%.4x",table[oper].mnemonic, adr);
|
||||
util::stream_format(stream,"%-6s%04x",table[oper].mnemonic, adr);
|
||||
break;
|
||||
case RelM:
|
||||
adr=pc-*(oprom++);
|
||||
sprintf(buffer,"%-6s%.4x",table[oper].mnemonic, adr&0xffff);
|
||||
util::stream_format(stream,"%-6s%04x",table[oper].mnemonic, adr&0xffff);
|
||||
break;
|
||||
case RelP:
|
||||
adr=pc+*(oprom++);
|
||||
sprintf(buffer,"%-6s%.4x",table[oper].mnemonic, adr&0xffff);
|
||||
util::stream_format(stream,"%-6s%04x",table[oper].mnemonic, adr&0xffff);
|
||||
break;
|
||||
case Ptc:
|
||||
t=*(oprom++);
|
||||
adr=(oprom[0]<<8)|oprom[1];oprom+=2;
|
||||
sprintf(buffer,"%-6s%.2x,%.4x",table[oper].mnemonic,t, adr);
|
||||
util::stream_format(stream,"%-6s%02x,%04x",table[oper].mnemonic,t, adr);
|
||||
break;
|
||||
case Etc:
|
||||
sprintf(buffer,"%-6s",table[oper].mnemonic);
|
||||
util::stream_format(stream,"%-6s",table[oper].mnemonic);
|
||||
/*H imm, abs */
|
||||
/* abs */
|
||||
break;
|
||||
@ -208,3 +208,13 @@ CPU_DISASSEMBLE( sc61860 )
|
||||
}
|
||||
return oprom - base_oprom;
|
||||
}
|
||||
|
||||
|
||||
CPU_DISASSEMBLE(sc61860)
|
||||
{
|
||||
std::ostringstream stream;
|
||||
offs_t result = internal_disasm_sc61860(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