diff options
author | 2016-11-03 06:36:30 -0400 | |
---|---|---|
committer | 2016-11-03 06:36:30 -0400 | |
commit | 87672cf2d3b79c9df05e46d7c42e893537aa259f (patch) | |
tree | 8528c37b0e02f5e45dfbe5da26644121aa872ed0 | |
parent | 3ee5564b78b88035fe02c9b515550e62bb4ea58f (diff) |
Changed the sc61860 disassembler to use 'std::ostream &' internally
-rw-r--r-- | src/devices/cpu/sc61860/scdasm.cpp | 34 |
1 files changed, 22 insertions, 12 deletions
diff --git a/src/devices/cpu/sc61860/scdasm.cpp b/src/devices/cpu/sc61860/scdasm.cpp index c49ad9c77b4..fce5b8cd608 100644 --- a/src/devices/cpu/sc61860/scdasm.cpp +++ b/src/devices/cpu/sc61860/scdasm.cpp @@ -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; +} |