mirror of
https://github.com/holub/mame
synced 2025-04-23 17:00:53 +03:00
Changed the h6280 disassembler to use 'std::ostream &' internally
This commit is contained in:
parent
0f060802b5
commit
76b57669cf
@ -144,7 +144,7 @@ static const unsigned char op6280[512]=
|
||||
/*****************************************************************************
|
||||
* Disassemble a single command and return the number of bytes it uses.
|
||||
*****************************************************************************/
|
||||
CPU_DISASSEMBLE( h6280 )
|
||||
static offs_t internal_disasm_h6280(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options)
|
||||
{
|
||||
uint32_t flags = 0;
|
||||
int PC, OP, opc, arg;
|
||||
@ -165,90 +165,100 @@ CPU_DISASSEMBLE( h6280 )
|
||||
switch(arg)
|
||||
{
|
||||
case _acc:
|
||||
sprintf(buffer,"%-5sa", token[opc]);
|
||||
util::stream_format(stream, "%-5sa", token[opc]);
|
||||
break;
|
||||
case _imp:
|
||||
sprintf(buffer,"%s", token[opc]);
|
||||
util::stream_format(stream, "%s", token[opc]);
|
||||
break;
|
||||
case _rel:
|
||||
sprintf(buffer,"%-5s$%04X", token[opc], (PC + 1 + (signed char)RDBYTE(PC)) & 0xffff);
|
||||
util::stream_format(stream, "%-5s$%04X", token[opc], (PC + 1 + (signed char)RDBYTE(PC)) & 0xffff);
|
||||
PC+=1;
|
||||
break;
|
||||
case _imm:
|
||||
sprintf(buffer,"%-5s#$%02X", token[opc], RDBYTE(PC));
|
||||
util::stream_format(stream, "%-5s#$%02X", token[opc], RDBYTE(PC));
|
||||
PC+=1;
|
||||
break;
|
||||
case _zpg:
|
||||
sprintf(buffer,"%-5s$%02X", token[opc], RDBYTE(PC));
|
||||
util::stream_format(stream, "%-5s$%02X", token[opc], RDBYTE(PC));
|
||||
PC+=1;
|
||||
break;
|
||||
case _zpx:
|
||||
sprintf(buffer,"%-5s$%02X,x", token[opc], RDBYTE(PC));
|
||||
util::stream_format(stream, "%-5s$%02X,x", token[opc], RDBYTE(PC));
|
||||
PC+=1;
|
||||
break;
|
||||
case _zpy:
|
||||
sprintf(buffer,"%-5s$%02X,y", token[opc], RDBYTE(PC));
|
||||
util::stream_format(stream, "%-5s$%02X,y", token[opc], RDBYTE(PC));
|
||||
PC+=1;
|
||||
break;
|
||||
case _idx:
|
||||
sprintf(buffer,"%-5s($%02X,x)", token[opc], RDBYTE(PC));
|
||||
util::stream_format(stream, "%-5s($%02X,x)", token[opc], RDBYTE(PC));
|
||||
PC+=1;
|
||||
break;
|
||||
case _idy:
|
||||
sprintf(buffer,"%-5s($%02X),y", token[opc], RDBYTE(PC));
|
||||
util::stream_format(stream, "%-5s($%02X),y", token[opc], RDBYTE(PC));
|
||||
PC+=1;
|
||||
break;
|
||||
case _zpi:
|
||||
sprintf(buffer,"%-5s($%02X)", token[opc], RDBYTE(PC));
|
||||
util::stream_format(stream, "%-5s($%02X)", token[opc], RDBYTE(PC));
|
||||
PC+=1;
|
||||
break;
|
||||
case _abs:
|
||||
sprintf(buffer,"%-5s$%04X", token[opc], RDWORD(PC));
|
||||
util::stream_format(stream, "%-5s$%04X", token[opc], RDWORD(PC));
|
||||
PC+=2;
|
||||
break;
|
||||
case _abx:
|
||||
sprintf(buffer,"%-5s$%04X,x", token[opc], RDWORD(PC));
|
||||
util::stream_format(stream, "%-5s$%04X,x", token[opc], RDWORD(PC));
|
||||
PC+=2;
|
||||
break;
|
||||
case _aby:
|
||||
sprintf(buffer,"%-5s$%04X,y", token[opc], RDWORD(PC));
|
||||
util::stream_format(stream, "%-5s$%04X,y", token[opc], RDWORD(PC));
|
||||
PC+=2;
|
||||
break;
|
||||
case _ind:
|
||||
sprintf(buffer,"%-5s($%04X)", token[opc], RDWORD(PC));
|
||||
util::stream_format(stream, "%-5s($%04X)", token[opc], RDWORD(PC));
|
||||
PC+=2;
|
||||
break;
|
||||
case _iax:
|
||||
sprintf(buffer,"%-5s($%04X),X", token[opc], RDWORD(PC));
|
||||
util::stream_format(stream, "%-5s($%04X),X", token[opc], RDWORD(PC));
|
||||
PC+=2;
|
||||
break;
|
||||
case _blk:
|
||||
sprintf(buffer,"%-5s$%04X $%04X $%04X", token[opc], RDWORD(PC), RDWORD(PC+2), RDWORD(PC+4));
|
||||
util::stream_format(stream, "%-5s$%04X $%04X $%04X", token[opc], RDWORD(PC), RDWORD(PC+2), RDWORD(PC+4));
|
||||
PC+=6;
|
||||
break;
|
||||
case _zrl:
|
||||
sprintf(buffer,"%-5s$%02X $%04X", token[opc], RDBYTE(PC), (PC + 2 + (signed char)RDBYTE(PC+1)) & 0xffff);
|
||||
util::stream_format(stream, "%-5s$%02X $%04X", token[opc], RDBYTE(PC), (PC + 2 + (signed char)RDBYTE(PC+1)) & 0xffff);
|
||||
PC+=2;
|
||||
break;
|
||||
case _imz:
|
||||
sprintf(buffer,"%-5s#$%02X $%02X", token[opc], RDBYTE(PC), RDBYTE(PC+1));
|
||||
util::stream_format(stream, "%-5s#$%02X $%02X", token[opc], RDBYTE(PC), RDBYTE(PC+1));
|
||||
PC+=2;
|
||||
break;
|
||||
case _izx:
|
||||
sprintf(buffer,"%-5s#$%02X $%02X,x", token[opc], RDBYTE(PC), RDBYTE(PC+1));
|
||||
util::stream_format(stream, "%-5s#$%02X $%02X,x", token[opc], RDBYTE(PC), RDBYTE(PC+1));
|
||||
PC+=2;
|
||||
break;
|
||||
case _ima:
|
||||
sprintf(buffer,"%-5s#$%02X $%04X", token[opc], RDBYTE(PC), RDWORD(PC+1));
|
||||
util::stream_format(stream, "%-5s#$%02X $%04X", token[opc], RDBYTE(PC), RDWORD(PC+1));
|
||||
PC+=3;
|
||||
break;
|
||||
case _imx:
|
||||
sprintf(buffer,"%-5s#$%02X $%04X,x", token[opc], RDBYTE(PC), RDWORD(PC+1));
|
||||
util::stream_format(stream, "%-5s#$%02X $%04X,x", token[opc], RDBYTE(PC), RDWORD(PC+1));
|
||||
PC+=3;
|
||||
break;
|
||||
|
||||
default:
|
||||
sprintf(buffer,"%-5s$%02X", token[opc], OP >> 1);
|
||||
util::stream_format(stream, "%-5s$%02X", token[opc], OP >> 1);
|
||||
}
|
||||
return (PC - pc) | flags | DASMFLAG_SUPPORTED;
|
||||
}
|
||||
|
||||
|
||||
CPU_DISASSEMBLE(h6280)
|
||||
{
|
||||
std::ostringstream stream;
|
||||
offs_t result = internal_disasm_h6280(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