diff --git a/src/devices/cpu/h6280/6280dasm.cpp b/src/devices/cpu/h6280/6280dasm.cpp index 68d2ec5589c..2f6d1d9d84f 100644 --- a/src/devices/cpu/h6280/6280dasm.cpp +++ b/src/devices/cpu/h6280/6280dasm.cpp @@ -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; +}