diff options
Diffstat (limited to 'src/devices/cpu')
396 files changed, 727 insertions, 1920 deletions
diff --git a/src/devices/cpu/8x300/8x300.cpp b/src/devices/cpu/8x300/8x300.cpp index 827c064783a..c9ec6839e9e 100644 --- a/src/devices/cpu/8x300/8x300.cpp +++ b/src/devices/cpu/8x300/8x300.cpp @@ -581,8 +581,8 @@ void n8x300_cpu_device::execute_run() } while (m_icount > 0); } -offs_t n8x300_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t n8x300_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( n8x300 ); - return CPU_DISASSEMBLE_NAME(n8x300)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(n8x300)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/8x300/8x300.h b/src/devices/cpu/8x300/8x300.h index 286701142f9..45d3f71cd91 100644 --- a/src/devices/cpu/8x300/8x300.h +++ b/src/devices/cpu/8x300/8x300.h @@ -73,7 +73,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 2; } virtual uint32_t disasm_max_opcode_bytes() const override { return 2; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const u8 *oprom, const u8 *opram, u32 options) override; address_space_config m_program_config; address_space_config m_io_config; diff --git a/src/devices/cpu/8x300/8x300dasm.cpp b/src/devices/cpu/8x300/8x300dasm.cpp index 5b66dbd1f05..db6f3d2cd00 100644 --- a/src/devices/cpu/8x300/8x300dasm.cpp +++ b/src/devices/cpu/8x300/8x300dasm.cpp @@ -41,7 +41,7 @@ static inline bool is_src_rot(uint16_t opcode) return true; } -static offs_t internal_disasm_n8x300(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(n8x300) { unsigned startpc = pc; uint16_t opcode = (oprom[pc - startpc] << 8) | oprom[pc+1 - startpc]; @@ -129,13 +129,3 @@ static offs_t internal_disasm_n8x300(cpu_device *device, std::ostream &stream, o return (pc - startpc); } - - -CPU_DISASSEMBLE(n8x300) -{ - std::ostringstream stream; - offs_t result = internal_disasm_n8x300(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/adsp2100/2100dasm.cpp b/src/devices/cpu/adsp2100/2100dasm.cpp index 1508d360c81..a126cfa0bcb 100644 --- a/src/devices/cpu/adsp2100/2100dasm.cpp +++ b/src/devices/cpu/adsp2100/2100dasm.cpp @@ -233,7 +233,7 @@ static void aluconst(std::ostream &stream, int dest, int op) /* execute instructions on this CPU until icount expires */ -static offs_t internal_disasm_adsp21xx(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(adsp21xx) { unsigned int op = oprom[0] | (oprom[1] << 8) | (oprom[2] << 16); unsigned dasmflags = 0; @@ -551,14 +551,3 @@ static offs_t internal_disasm_adsp21xx(cpu_device *device, std::ostream &stream, return 1 | dasmflags | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(adsp21xx) -{ - std::ostringstream stream; - offs_t result = internal_disasm_adsp21xx(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} - diff --git a/src/devices/cpu/adsp2100/adsp2100.cpp b/src/devices/cpu/adsp2100/adsp2100.cpp index 617f2324540..edd7cbd9cd3 100644 --- a/src/devices/cpu/adsp2100/adsp2100.cpp +++ b/src/devices/cpu/adsp2100/adsp2100.cpp @@ -774,10 +774,10 @@ uint32_t adsp21xx_device::disasm_max_opcode_bytes() const // helper function //------------------------------------------------- -offs_t adsp21xx_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t adsp21xx_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( adsp21xx ); - return CPU_DISASSEMBLE_NAME(adsp21xx)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(adsp21xx)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/adsp2100/adsp2100.h b/src/devices/cpu/adsp2100/adsp2100.h index f5e43700b0f..aa7fb7853dc 100644 --- a/src/devices/cpu/adsp2100/adsp2100.h +++ b/src/devices/cpu/adsp2100/adsp2100.h @@ -243,7 +243,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override; virtual uint32_t disasm_max_opcode_bytes() const override; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; // helpers void create_tables(); diff --git a/src/devices/cpu/alph8201/8201dasm.cpp b/src/devices/cpu/alph8201/8201dasm.cpp index 6ffae084cea..307456f0633 100644 --- a/src/devices/cpu/alph8201/8201dasm.cpp +++ b/src/devices/cpu/alph8201/8201dasm.cpp @@ -349,7 +349,7 @@ static void InitDasm8201(void) OpInizialized = 1; } -static offs_t internal_disasm_alpha8201(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(alpha8201) { offs_t dasmflags = 0; int i; @@ -413,12 +413,3 @@ static offs_t internal_disasm_alpha8201(cpu_device *device, std::ostream &stream return cnt | dasmflags | DASMFLAG_SUPPORTED; } - -CPU_DISASSEMBLE(alpha8201) -{ - std::ostringstream stream; - offs_t result = internal_disasm_alpha8201(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/alph8201/alph8201.cpp b/src/devices/cpu/alph8201/alph8201.cpp index 9fecc803742..eb4390e251f 100644 --- a/src/devices/cpu/alph8201/alph8201.cpp +++ b/src/devices/cpu/alph8201/alph8201.cpp @@ -688,8 +688,8 @@ void alpha8201_cpu_device::execute_set_input(int inputnum, int state) } -offs_t alpha8201_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t alpha8201_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( alpha8201 ); - return CPU_DISASSEMBLE_NAME(alpha8201)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(alpha8201)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/alph8201/alph8201.h b/src/devices/cpu/alph8201/alph8201.h index d9b34389e69..2f10923e39a 100644 --- a/src/devices/cpu/alph8201/alph8201.h +++ b/src/devices/cpu/alph8201/alph8201.h @@ -76,7 +76,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 4; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; uint8_t M_RDMEM(uint16_t A) { return m_program->read_byte(A); } void M_WRMEM(uint16_t A,uint8_t V) { m_program->write_byte(A, V); } diff --git a/src/devices/cpu/alto2/alto2cpu.h b/src/devices/cpu/alto2/alto2cpu.h index 4caad7911bc..eb275154216 100644 --- a/src/devices/cpu/alto2/alto2cpu.h +++ b/src/devices/cpu/alto2/alto2cpu.h @@ -238,7 +238,7 @@ protected: //! device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 4; } virtual uint32_t disasm_max_opcode_bytes() const override { return 4; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: @@ -913,8 +913,6 @@ private: uint8_t m_ether_id; //!< configured Ethernet ID for this machine - offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options); - //******************************************* // inline the sub-devices //******************************************* diff --git a/src/devices/cpu/alto2/alto2dsm.cpp b/src/devices/cpu/alto2/alto2dsm.cpp index e6e18543d8c..65c5d0b4acd 100644 --- a/src/devices/cpu/alto2/alto2dsm.cpp +++ b/src/devices/cpu/alto2/alto2dsm.cpp @@ -394,13 +394,3 @@ offs_t alto2_cpu_device::disasm_disassemble(std::ostream &main_stream, offs_t pc return result; } - - -offs_t alto2_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) -{ - std::ostringstream stream; - offs_t result = disasm_disassemble(stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/am29000/am29000.cpp b/src/devices/cpu/am29000/am29000.cpp index 3c808b8c27b..fbc5a231ac3 100644 --- a/src/devices/cpu/am29000/am29000.cpp +++ b/src/devices/cpu/am29000/am29000.cpp @@ -695,8 +695,8 @@ void am29000_cpu_device::execute_set_input(int inputnum, int state) } -offs_t am29000_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t am29000_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( am29000 ); - return CPU_DISASSEMBLE_NAME(am29000)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(am29000)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/am29000/am29000.h b/src/devices/cpu/am29000/am29000.h index d78097b90df..d685e5c7272 100644 --- a/src/devices/cpu/am29000/am29000.h +++ b/src/devices/cpu/am29000/am29000.h @@ -468,7 +468,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 4; } virtual uint32_t disasm_max_opcode_bytes() const override { return 4; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; void signal_exception(uint32_t type); void external_irq_check(); diff --git a/src/devices/cpu/am29000/am29dasm.cpp b/src/devices/cpu/am29000/am29dasm.cpp index 7357fb929ec..8c7f832e69f 100644 --- a/src/devices/cpu/am29000/am29dasm.cpp +++ b/src/devices/cpu/am29000/am29dasm.cpp @@ -117,7 +117,7 @@ static const char* get_spr(int spid) } } -static offs_t internal_disasm_am29000(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(am29000) { uint32_t op = (oprom[0] << 24) | (oprom[1] << 16) | (oprom[2] << 8) | oprom[3]; uint32_t flags = 0; @@ -230,12 +230,3 @@ static offs_t internal_disasm_am29000(cpu_device *device, std::ostream &stream, return 4 | flags | DASMFLAG_SUPPORTED; } - -CPU_DISASSEMBLE(am29000) -{ - std::ostringstream stream; - offs_t result = internal_disasm_am29000(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/amis2000/amis2000.cpp b/src/devices/cpu/amis2000/amis2000.cpp index e5e9b3898fb..a9b45e865b3 100644 --- a/src/devices/cpu/amis2000/amis2000.cpp +++ b/src/devices/cpu/amis2000/amis2000.cpp @@ -89,10 +89,10 @@ void amis2000_base_device::state_string_export(const device_state_entry &entry, } } -offs_t amis2000_base_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t amis2000_base_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE(amis2000); - return CPU_DISASSEMBLE_NAME(amis2000)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(amis2000)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/amis2000/amis2000.h b/src/devices/cpu/amis2000/amis2000.h index 5d7967eeb38..f5611b4d54d 100644 --- a/src/devices/cpu/amis2000/amis2000.h +++ b/src/devices/cpu/amis2000/amis2000.h @@ -88,7 +88,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 1; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/amis2000/amis2000d.cpp b/src/devices/cpu/amis2000/amis2000d.cpp index 90a786de0af..2dd3433718f 100644 --- a/src/devices/cpu/amis2000/amis2000d.cpp +++ b/src/devices/cpu/amis2000/amis2000d.cpp @@ -100,7 +100,7 @@ static const uint8_t s2000_mnemonic[0x100] = -static offs_t internal_disasm_amis2000(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(amis2000) { int pos = 0; uint8_t op = oprom[pos++]; @@ -130,13 +130,3 @@ static offs_t internal_disasm_amis2000(cpu_device *device, std::ostream &stream, return pos | s_flags[instr] | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(amis2000) -{ - std::ostringstream stream; - offs_t result = internal_disasm_amis2000(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/apexc/apexc.cpp b/src/devices/cpu/apexc/apexc.cpp index 4e8f0cca659..fa1014230fd 100644 --- a/src/devices/cpu/apexc/apexc.cpp +++ b/src/devices/cpu/apexc/apexc.cpp @@ -848,8 +848,8 @@ void apexc_cpu_device::execute_run() } -offs_t apexc_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t apexc_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( apexc ); - return CPU_DISASSEMBLE_NAME(apexc)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(apexc)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/apexc/apexc.h b/src/devices/cpu/apexc/apexc.h index eefff1e7c73..28aba6a5b52 100644 --- a/src/devices/cpu/apexc/apexc.h +++ b/src/devices/cpu/apexc/apexc.h @@ -42,7 +42,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 4; } virtual uint32_t disasm_max_opcode_bytes() const override { return 4; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; inline uint32_t apexc_readmem(uint32_t address) { return m_program->read_dword((address)<<2); } inline void apexc_writemem(uint32_t address, uint32_t data) { m_program->write_dword((address)<<2, (data)); } diff --git a/src/devices/cpu/apexc/apexcdsm.cpp b/src/devices/cpu/apexc/apexcdsm.cpp index 6113ef2e137..e3626a40af9 100644 --- a/src/devices/cpu/apexc/apexcdsm.cpp +++ b/src/devices/cpu/apexc/apexcdsm.cpp @@ -83,7 +83,7 @@ static const instr_desc instructions[16] = { "A", store }, { "S", swap } }; -static offs_t internal_disasm_apexc(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(apexc) { uint32_t instruction; /* 32-bit machine instruction */ int x, y, function, c6, vector; /* instruction fields */ @@ -179,16 +179,5 @@ static offs_t internal_disasm_apexc(cpu_device *device, std::ostream &stream, of /* print Y address */ util::stream_format(stream, "%03X(%02d/%02d)", y<<2, (y >> 5) & 0x1f, y & 0x1f); /* 7 chars */ - return 4; } - - -CPU_DISASSEMBLE(apexc) -{ - std::ostringstream stream; - offs_t result = internal_disasm_apexc(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/arc/arc.cpp b/src/devices/cpu/arc/arc.cpp index c9f1f0ecf2d..71c55b674a2 100644 --- a/src/devices/cpu/arc/arc.cpp +++ b/src/devices/cpu/arc/arc.cpp @@ -25,10 +25,10 @@ arc_device::arc_device(const machine_config &mconfig, const char *tag, device_t } -offs_t arc_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t arc_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( arc ); - return CPU_DISASSEMBLE_NAME(arc)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(arc)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/arc/arc.h b/src/devices/cpu/arc/arc.h index dd92ea5f36d..04639abf17c 100644 --- a/src/devices/cpu/arc/arc.h +++ b/src/devices/cpu/arc/arc.h @@ -45,7 +45,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 4; } virtual uint32_t disasm_max_opcode_bytes() const override { return 4; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: address_space_config m_program_config; diff --git a/src/devices/cpu/arc/arcdasm.cpp b/src/devices/cpu/arc/arcdasm.cpp index abf36e83027..752ece7a150 100644 --- a/src/devices/cpu/arc/arcdasm.cpp +++ b/src/devices/cpu/arc/arcdasm.cpp @@ -180,7 +180,7 @@ static const char *regnames[0x40] = #define ARC_REGOP_SHIMM ((op & 0x000001ff) >> 0 ) // aka D -static offs_t internal_disasm_arc(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(arc) { uint32_t op = oprom[0] | (oprom[1] << 8) | (oprom[2] << 16) | (oprom[3] << 24); op = big_endianize_int32(op); @@ -207,14 +207,3 @@ static offs_t internal_disasm_arc(cpu_device *device, std::ostream &stream, offs return 4 | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(arc) -{ - std::ostringstream stream; - offs_t result = internal_disasm_arc(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} - diff --git a/src/devices/cpu/arcompact/arcompact.cpp b/src/devices/cpu/arcompact/arcompact.cpp index e3498cd01cb..cd44d6b5681 100644 --- a/src/devices/cpu/arcompact/arcompact.cpp +++ b/src/devices/cpu/arcompact/arcompact.cpp @@ -58,10 +58,10 @@ arcompact_device::arcompact_device(const machine_config &mconfig, const char *ta } -offs_t arcompact_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t arcompact_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( arcompact ); - return CPU_DISASSEMBLE_NAME(arcompact)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(arcompact)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/arcompact/arcompact.h b/src/devices/cpu/arcompact/arcompact.h index fd18ce0a124..227abe8f912 100644 --- a/src/devices/cpu/arcompact/arcompact.h +++ b/src/devices/cpu/arcompact/arcompact.h @@ -104,7 +104,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 2; } virtual uint32_t disasm_max_opcode_bytes() const override { return 8; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; diff --git a/src/devices/cpu/arcompact/arcompactdasm.cpp b/src/devices/cpu/arcompact/arcompactdasm.cpp index 8103797deea..cd557017332 100644 --- a/src/devices/cpu/arcompact/arcompactdasm.cpp +++ b/src/devices/cpu/arcompact/arcompactdasm.cpp @@ -22,7 +22,7 @@ #define ARCOMPACT_OPERATION ((op & 0xf800) >> 11) -static offs_t internal_disasm_arcompact(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(arcompact) { int size; @@ -87,13 +87,3 @@ static offs_t internal_disasm_arcompact(cpu_device *device, std::ostream &stream return size | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(arcompact) -{ - std::ostringstream stream; - offs_t result = internal_disasm_arcompact(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/arm/arm.cpp b/src/devices/cpu/arm/arm.cpp index 1b342b3ea56..a46bdb03ed6 100644 --- a/src/devices/cpu/arm/arm.cpp +++ b/src/devices/cpu/arm/arm.cpp @@ -1553,15 +1553,15 @@ void arm_cpu_device::HandleCoPro( uint32_t insn ) } -offs_t arm_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t arm_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( arm ); - return CPU_DISASSEMBLE_NAME(arm)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(arm)(this, stream, pc, oprom, opram, options); } -offs_t arm_be_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t arm_be_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( arm_be ); - return CPU_DISASSEMBLE_NAME(arm_be)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(arm_be)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/arm/arm.h b/src/devices/cpu/arm/arm.h index 051c88f64b9..4c8dbec4384 100644 --- a/src/devices/cpu/arm/arm.h +++ b/src/devices/cpu/arm/arm.h @@ -66,7 +66,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 4; } virtual uint32_t disasm_max_opcode_bytes() const override { return 4; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; address_space_config m_program_config; @@ -113,7 +113,7 @@ public: arm_be_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); protected: - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; }; diff --git a/src/devices/cpu/arm/armdasm.cpp b/src/devices/cpu/arm/armdasm.cpp index b93b509789e..67d65209871 100644 --- a/src/devices/cpu/arm/armdasm.cpp +++ b/src/devices/cpu/arm/armdasm.cpp @@ -390,23 +390,14 @@ static uint32_t arm_disasm( std::ostream &stream, uint32_t pc, uint32_t opcode ) return dasmflags | DASMFLAG_SUPPORTED; } -static uint32_t arm_disasm(char *buffer, uint32_t pc, uint32_t opcode) -{ - std::ostringstream stream; - uint32_t result = arm_disasm(stream, pc, opcode); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} - CPU_DISASSEMBLE( arm ) { uint32_t opcode = oprom[0] | (oprom[1] << 8) | (oprom[2] << 16) | (oprom[3] << 24); - return 4 | arm_disasm(buffer, pc, opcode); + return 4 | arm_disasm(stream, pc, opcode); } CPU_DISASSEMBLE( arm_be ) { uint32_t opcode = oprom[3] | (oprom[2] << 8) | (oprom[1] << 16) | (oprom[0] << 24); - return 4 | arm_disasm(buffer, pc, opcode); + return 4 | arm_disasm(stream, pc, opcode); } diff --git a/src/devices/cpu/arm7/arm7.cpp b/src/devices/cpu/arm7/arm7.cpp index 67a91a4f19c..9ae2d06cb85 100644 --- a/src/devices/cpu/arm7/arm7.cpp +++ b/src/devices/cpu/arm7/arm7.cpp @@ -764,7 +764,7 @@ void arm7_cpu_device::execute_set_input(int irqline, int state) } -offs_t arm7_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t arm7_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( arm7arm ); extern CPU_DISASSEMBLE( arm7thumb ); @@ -774,16 +774,16 @@ offs_t arm7_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_ if (T_IS_SET(m_r[eCPSR])) { if ( m_endian == ENDIANNESS_BIG ) - return CPU_DISASSEMBLE_NAME(arm7thumb_be)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(arm7thumb_be)(this, stream, pc, oprom, opram, options); else - return CPU_DISASSEMBLE_NAME(arm7thumb)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(arm7thumb)(this, stream, pc, oprom, opram, options); } else { if ( m_endian == ENDIANNESS_BIG ) - return CPU_DISASSEMBLE_NAME(arm7arm_be)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(arm7arm_be)(this, stream, pc, oprom, opram, options); else - return CPU_DISASSEMBLE_NAME(arm7arm)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(arm7arm)(this, stream, pc, oprom, opram, options); } } diff --git a/src/devices/cpu/arm7/arm7.h b/src/devices/cpu/arm7/arm7.h index 8309b3b7dee..7007f4b4be6 100644 --- a/src/devices/cpu/arm7/arm7.h +++ b/src/devices/cpu/arm7/arm7.h @@ -76,7 +76,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 2; } virtual uint32_t disasm_max_opcode_bytes() const override { return 4; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; address_space_config m_program_config; diff --git a/src/devices/cpu/arm7/arm7dasm.cpp b/src/devices/cpu/arm7/arm7dasm.cpp index e0416d8aacd..5288f27e9b5 100644 --- a/src/devices/cpu/arm7/arm7dasm.cpp +++ b/src/devices/cpu/arm7/arm7dasm.cpp @@ -1300,40 +1300,22 @@ static uint32_t thumb_disasm(std::ostream &stream, uint32_t pc, uint16_t opcode) return dasmflags | DASMFLAG_SUPPORTED; } -static uint32_t arm7_disasm(char *buffer, uint32_t pc, uint32_t opcode) -{ - std::ostringstream stream; - uint32_t result = arm7_disasm(stream, pc, opcode); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} - -static uint32_t thumb_disasm(char *buffer, uint32_t pc, uint16_t opcode) -{ - std::ostringstream stream; - uint32_t result = thumb_disasm(stream, pc, opcode); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} - CPU_DISASSEMBLE( arm7arm ) { - return arm7_disasm(buffer, pc, oprom[0] | (oprom[1] << 8) | (oprom[2] << 16) | (oprom[3] << 24)) | 4; + return arm7_disasm(stream, pc, oprom[0] | (oprom[1] << 8) | (oprom[2] << 16) | (oprom[3] << 24)) | 4; } CPU_DISASSEMBLE( arm7arm_be ) { - return arm7_disasm(buffer, pc, oprom[3] | (oprom[2] << 8) | (oprom[1] << 16) | (oprom[0] << 24)) | 4; + return arm7_disasm(stream, pc, oprom[3] | (oprom[2] << 8) | (oprom[1] << 16) | (oprom[0] << 24)) | 4; } CPU_DISASSEMBLE( arm7thumb ) { - return thumb_disasm(buffer, pc, oprom[0] | (oprom[1] << 8)) | 2; + return thumb_disasm(stream, pc, oprom[0] | (oprom[1] << 8)) | 2; } CPU_DISASSEMBLE( arm7thumb_be ) { - return thumb_disasm(buffer, pc, oprom[1] | (oprom[0] << 8)) | 2; + return thumb_disasm(stream, pc, oprom[1] | (oprom[0] << 8)) | 2; } diff --git a/src/devices/cpu/asap/asap.cpp b/src/devices/cpu/asap/asap.cpp index c5271ab128a..6e539784ab1 100644 --- a/src/devices/cpu/asap/asap.cpp +++ b/src/devices/cpu/asap/asap.cpp @@ -324,10 +324,10 @@ uint32_t asap_device::disasm_max_opcode_bytes() const // helper function //------------------------------------------------- -offs_t asap_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t asap_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( asap ); - return CPU_DISASSEMBLE_NAME(asap)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(asap)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/asap/asap.h b/src/devices/cpu/asap/asap.h index 1ed0583d4d1..4ac44a9bcdb 100644 --- a/src/devices/cpu/asap/asap.h +++ b/src/devices/cpu/asap/asap.h @@ -53,7 +53,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override; virtual uint32_t disasm_max_opcode_bytes() const override; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; // helpers inline uint32_t readop(offs_t pc); diff --git a/src/devices/cpu/asap/asapdasm.cpp b/src/devices/cpu/asap/asapdasm.cpp index 1f24fef64ec..f26c6db046f 100644 --- a/src/devices/cpu/asap/asapdasm.cpp +++ b/src/devices/cpu/asap/asapdasm.cpp @@ -45,7 +45,7 @@ static inline char *src2(uint32_t op, int scale) return temp; } -static offs_t internal_disasm_asap(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(asap) { uint32_t op = oprom[0] | (oprom[1] << 8) | (oprom[2] << 16) | (oprom[3] << 24); int opcode = op >> 27; @@ -141,16 +141,6 @@ static offs_t internal_disasm_asap(cpu_device *device, std::ostream &stream, off util::stream_format(stream, "jmp%s %s[%s]", setcond[cond], reg[rsrc1], src2(op,2)); break; case 0x1f: util::stream_format(stream, "trap $1f"); flags = DASMFLAG_STEP_OVER; break; - } + } return 4 | flags | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(asap) -{ - std::ostringstream stream; - offs_t result = internal_disasm_asap(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/avr8/avr8.cpp b/src/devices/cpu/avr8/avr8.cpp index 6f0a4278d5b..7ae680fd3b5 100644 --- a/src/devices/cpu/avr8/avr8.cpp +++ b/src/devices/cpu/avr8/avr8.cpp @@ -949,10 +949,10 @@ uint32_t avr8_device::disasm_max_opcode_bytes() const // helper function //------------------------------------------------- -offs_t avr8_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t avr8_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( avr8 ); - return CPU_DISASSEMBLE_NAME(avr8)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(avr8)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/avr8/avr8.h b/src/devices/cpu/avr8/avr8.h index 006d052f70c..ffef27cd781 100644 --- a/src/devices/cpu/avr8/avr8.h +++ b/src/devices/cpu/avr8/avr8.h @@ -128,7 +128,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override; virtual uint32_t disasm_max_opcode_bytes() const override; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/avr8/avr8dasm.cpp b/src/devices/cpu/avr8/avr8dasm.cpp index bd870b5d840..cfc99b955d3 100644 --- a/src/devices/cpu/avr8/avr8dasm.cpp +++ b/src/devices/cpu/avr8/avr8dasm.cpp @@ -25,7 +25,7 @@ #define ACONST6(op) ((((op) >> 5) & 0x0030) | ((op) & 0x000f)) #define MULCONST2(op) ((((op) >> 6) & 0x0002) | (((op) >> 3) & 0x0001)) -static offs_t internal_disasm_avr8(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(avr8) { int pos = 0; uint32_t op = oprom[pos++]; @@ -671,13 +671,3 @@ static offs_t internal_disasm_avr8(cpu_device *device, std::ostream &stream, off return pos | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(avr8) -{ - std::ostringstream stream; - offs_t result = internal_disasm_avr8(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/ccpu/ccpu.cpp b/src/devices/cpu/ccpu/ccpu.cpp index cc40e4edcd4..ad9fbedca86 100644 --- a/src/devices/cpu/ccpu/ccpu.cpp +++ b/src/devices/cpu/ccpu/ccpu.cpp @@ -687,8 +687,8 @@ void ccpu_cpu_device::execute_run() } -offs_t ccpu_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t ccpu_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( ccpu ); - return CPU_DISASSEMBLE_NAME(ccpu)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(ccpu)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/ccpu/ccpu.h b/src/devices/cpu/ccpu/ccpu.h index 6fff475a3b6..73cd5c6109c 100644 --- a/src/devices/cpu/ccpu/ccpu.h +++ b/src/devices/cpu/ccpu/ccpu.h @@ -87,7 +87,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 3; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; address_space_config m_program_config; address_space_config m_data_config; diff --git a/src/devices/cpu/ccpu/ccpudasm.cpp b/src/devices/cpu/ccpu/ccpudasm.cpp index 309b4167cc1..bb843374c2b 100644 --- a/src/devices/cpu/ccpu/ccpudasm.cpp +++ b/src/devices/cpu/ccpu/ccpudasm.cpp @@ -14,7 +14,7 @@ #include "ccpu.h" -static offs_t internal_disasm_ccpu(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(ccpu) { unsigned startpc = pc; uint8_t opcode = oprom[pc++ - startpc]; @@ -328,13 +328,3 @@ static offs_t internal_disasm_ccpu(cpu_device *device, std::ostream &stream, off return (pc - startpc) | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(ccpu) -{ - std::ostringstream stream; - offs_t result = internal_disasm_ccpu(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/cop400/cop400.cpp b/src/devices/cpu/cop400/cop400.cpp index 58a5c672a35..fd0164f83a1 100644 --- a/src/devices/cpu/cop400/cop400.cpp +++ b/src/devices/cpu/cop400/cop400.cpp @@ -1171,7 +1171,7 @@ void cop400_cpu_device::state_string_export(const device_state_entry &entry, std } -offs_t cop400_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t cop400_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( cop410 ); extern CPU_DISASSEMBLE( cop420 ); @@ -1179,15 +1179,15 @@ offs_t cop400_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint if ( m_featuremask & COP444_FEATURE ) { - return CPU_DISASSEMBLE_NAME(cop444)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(cop444)(this, stream, pc, oprom, opram, options); } if ( m_featuremask & COP420_FEATURE ) { - return CPU_DISASSEMBLE_NAME(cop420)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(cop420)(this, stream, pc, oprom, opram, options); } - return CPU_DISASSEMBLE_NAME(cop410)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(cop410)(this, stream, pc, oprom, opram, options); } READ8_MEMBER( cop400_cpu_device::microbus_rd ) diff --git a/src/devices/cpu/cop400/cop400.h b/src/devices/cpu/cop400/cop400.h index 6788d52c2a2..bace4710008 100644 --- a/src/devices/cpu/cop400/cop400.h +++ b/src/devices/cpu/cop400/cop400.h @@ -169,7 +169,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 2; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; address_space_config m_program_config; address_space_config m_data_config; diff --git a/src/devices/cpu/cop400/cop410ds.cpp b/src/devices/cpu/cop400/cop410ds.cpp index 1c28ea070bf..b6f6f4d06f4 100644 --- a/src/devices/cpu/cop400/cop410ds.cpp +++ b/src/devices/cpu/cop400/cop410ds.cpp @@ -10,7 +10,7 @@ #include "emu.h" -static offs_t internal_disasm_cop410(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(cop410) { uint8_t opcode = oprom[0]; uint8_t next_opcode = oprom[1]; @@ -348,13 +348,3 @@ static offs_t internal_disasm_cop410(cpu_device *device, std::ostream &stream, o return bytes | flags | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(cop410) -{ - std::ostringstream stream; - offs_t result = internal_disasm_cop410(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/cop400/cop420ds.cpp b/src/devices/cpu/cop400/cop420ds.cpp index bf032238687..7c337edb0a1 100644 --- a/src/devices/cpu/cop400/cop420ds.cpp +++ b/src/devices/cpu/cop400/cop420ds.cpp @@ -10,7 +10,7 @@ #include "emu.h" -static offs_t internal_disasm_cop420(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(cop420) { uint8_t opcode = oprom[0]; uint8_t next_opcode = oprom[1]; @@ -396,13 +396,3 @@ static offs_t internal_disasm_cop420(cpu_device *device, std::ostream &stream, o return bytes | flags | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(cop420) -{ - std::ostringstream stream; - offs_t result = internal_disasm_cop420(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/cop400/cop440ds.cpp b/src/devices/cpu/cop400/cop440ds.cpp index 0150e20ea76..5f7517fca05 100644 --- a/src/devices/cpu/cop400/cop440ds.cpp +++ b/src/devices/cpu/cop400/cop440ds.cpp @@ -10,7 +10,7 @@ #include "emu.h" -static offs_t internal_disasm_cop444(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(cop444) { uint8_t opcode = oprom[0]; uint8_t next_opcode = oprom[1]; @@ -413,13 +413,3 @@ static offs_t internal_disasm_cop444(cpu_device *device, std::ostream &stream, o return bytes | flags | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(cop444) -{ - std::ostringstream stream; - offs_t result = internal_disasm_cop444(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/cosmac/cosdasm.cpp b/src/devices/cpu/cosmac/cosdasm.cpp index c5689b25fcc..72f039037b5 100644 --- a/src/devices/cpu/cosmac/cosdasm.cpp +++ b/src/devices/cpu/cosmac/cosdasm.cpp @@ -185,23 +185,13 @@ static uint32_t disassemble(device_t *device, std::ostream &stream, offs_t pc, c } -static uint32_t disassemble(device_t *device, char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t variant) -{ - std::ostringstream stream; - uint32_t result = disassemble(device, stream, pc, oprom, opram, variant); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} - - CPU_DISASSEMBLE( cdp1801 ) { - return disassemble(device, buffer, pc, oprom, opram, TYPE_1801); + return disassemble(device, stream, pc, oprom, opram, TYPE_1801); } CPU_DISASSEMBLE( cdp1802 ) { - return disassemble(device, buffer, pc, oprom, opram, TYPE_1802); + return disassemble(device, stream, pc, oprom, opram, TYPE_1802); } diff --git a/src/devices/cpu/cosmac/cosmac.cpp b/src/devices/cpu/cosmac/cosmac.cpp index a05d9cd1825..0e8c3de3f3c 100644 --- a/src/devices/cpu/cosmac/cosmac.cpp +++ b/src/devices/cpu/cosmac/cosmac.cpp @@ -512,16 +512,16 @@ uint32_t cosmac_device::disasm_max_opcode_bytes() const // helper function //------------------------------------------------- -offs_t cdp1801_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t cdp1801_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( cdp1801 ); - return CPU_DISASSEMBLE_NAME( cdp1801 )(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME( cdp1801 )(this, stream, pc, oprom, opram, options); } -offs_t cdp1802_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t cdp1802_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( cdp1802 ); - return CPU_DISASSEMBLE_NAME( cdp1802 )(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME( cdp1802 )(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/cosmac/cosmac.h b/src/devices/cpu/cosmac/cosmac.h index 7e4728f918b..e9ff3b705bb 100644 --- a/src/devices/cpu/cosmac/cosmac.h +++ b/src/devices/cpu/cosmac/cosmac.h @@ -451,7 +451,7 @@ public: protected: // device_disasm_interface overrides - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual cosmac_device::ophandler get_ophandler(uint8_t opcode) override; @@ -469,7 +469,7 @@ public: protected: // device_disasm_interface overrides - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual cosmac_device::ophandler get_ophandler(uint8_t opcode) override; diff --git a/src/devices/cpu/cp1610/1610dasm.cpp b/src/devices/cpu/cp1610/1610dasm.cpp index 5a2daf2cbfe..0e9ed461dd3 100644 --- a/src/devices/cpu/cp1610/1610dasm.cpp +++ b/src/devices/cpu/cp1610/1610dasm.cpp @@ -4,7 +4,7 @@ #include "debugger.h" #include "cp1610.h" -static offs_t internal_disasm_cp1610(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(cp1610) { uint16_t oprom16[4]={ static_cast<uint16_t>((oprom[0] << 8) | oprom[1]), static_cast<uint16_t>((oprom[2] << 8) | oprom[3]), static_cast<uint16_t>((oprom[4] << 8) | oprom[5]), static_cast<uint16_t>((oprom[6] << 8) | oprom[7]) }; uint16_t op = oprom16[0]; uint16_t subop; @@ -1488,13 +1488,3 @@ static offs_t internal_disasm_cp1610(cpu_device *device, std::ostream &stream, o return size; } - - -CPU_DISASSEMBLE(cp1610) -{ - std::ostringstream stream; - offs_t result = internal_disasm_cp1610(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/cp1610/cp1610.cpp b/src/devices/cpu/cp1610/cp1610.cpp index 9c2ed837b3b..b2b923fbc8f 100644 --- a/src/devices/cpu/cp1610/cp1610.cpp +++ b/src/devices/cpu/cp1610/cp1610.cpp @@ -3417,8 +3417,8 @@ void cp1610_cpu_device::state_string_export(const device_state_entry &entry, std } -offs_t cp1610_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t cp1610_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( cp1610 ); - return CPU_DISASSEMBLE_NAME(cp1610)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(cp1610)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/cp1610/cp1610.h b/src/devices/cpu/cp1610/cp1610.h index cec2c567776..545c37fbb83 100644 --- a/src/devices/cpu/cp1610/cp1610.h +++ b/src/devices/cpu/cp1610/cp1610.h @@ -61,7 +61,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 2; } virtual uint32_t disasm_max_opcode_bytes() const override { return 8; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: address_space_config m_program_config; diff --git a/src/devices/cpu/cubeqcpu/cubedasm.cpp b/src/devices/cpu/cubeqcpu/cubedasm.cpp index 6d346f9dc7a..20fd5a266d0 100644 --- a/src/devices/cpu/cubeqcpu/cubedasm.cpp +++ b/src/devices/cpu/cubeqcpu/cubedasm.cpp @@ -58,7 +58,7 @@ static const char *const dst[] = SOUND DISASSEMBLY HOOK ***************************************************************************/ -static offs_t internal_disasm_cquestsnd(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(cquestsnd) { static const char *const jmps[] = { @@ -125,21 +125,11 @@ static offs_t internal_disasm_cquestsnd(cpu_device *device, std::ostream &stream } -CPU_DISASSEMBLE(cquestsnd) -{ - std::ostringstream stream; - offs_t result = internal_disasm_cquestsnd(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} - - /*************************************************************************** ROTATE DISASSEMBLY HOOK ***************************************************************************/ -static offs_t internal_disasm_cquestrot(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(cquestrot) { static const char *const jmps[] = { @@ -231,21 +221,11 @@ static offs_t internal_disasm_cquestrot(cpu_device *device, std::ostream &stream } -CPU_DISASSEMBLE(cquestrot) -{ - std::ostringstream stream; - offs_t result = internal_disasm_cquestrot(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} - - /*************************************************************************** LINE DRAWER DISASSEMBLY HOOK ***************************************************************************/ -static offs_t internal_disasm_cquestlin(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(cquestlin) { static const char *const jmps[] = { @@ -325,13 +305,3 @@ static offs_t internal_disasm_cquestlin(cpu_device *device, std::ostream &stream return 1 | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(cquestlin) -{ - std::ostringstream stream; - offs_t result = internal_disasm_cquestlin(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/cubeqcpu/cubeqcpu.cpp b/src/devices/cpu/cubeqcpu/cubeqcpu.cpp index 6939332b647..a2216a1025a 100644 --- a/src/devices/cpu/cubeqcpu/cubeqcpu.cpp +++ b/src/devices/cpu/cubeqcpu/cubeqcpu.cpp @@ -84,10 +84,10 @@ cquestsnd_cpu_device::cquestsnd_cpu_device(const machine_config &mconfig, const } -offs_t cquestsnd_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t cquestsnd_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( cquestsnd ); - return CPU_DISASSEMBLE_NAME(cquestsnd)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(cquestsnd)(this, stream, pc, oprom, opram, options); } @@ -105,10 +105,10 @@ READ16_MEMBER( cquestrot_cpu_device::linedata_r ) } -offs_t cquestrot_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t cquestrot_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( cquestrot ); - return CPU_DISASSEMBLE_NAME(cquestrot)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(cquestrot)(this, stream, pc, oprom, opram, options); } @@ -122,10 +122,10 @@ cquestlin_cpu_device::cquestlin_cpu_device(const machine_config &mconfig, const } -offs_t cquestlin_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t cquestlin_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( cquestlin ); - return CPU_DISASSEMBLE_NAME(cquestlin)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(cquestlin)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/cubeqcpu/cubeqcpu.h b/src/devices/cpu/cubeqcpu/cubeqcpu.h index 824ec9c29b1..590993d07d5 100644 --- a/src/devices/cpu/cubeqcpu/cubeqcpu.h +++ b/src/devices/cpu/cubeqcpu/cubeqcpu.h @@ -166,7 +166,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 8; } virtual uint32_t disasm_max_opcode_bytes() const override { return 8; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: address_space_config m_program_config; @@ -237,7 +237,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 8; } virtual uint32_t disasm_max_opcode_bytes() const override { return 8; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: address_space_config m_program_config; @@ -321,7 +321,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 8; } virtual uint32_t disasm_max_opcode_bytes() const override { return 8; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: address_space_config m_program_config; diff --git a/src/devices/cpu/dsp16/dsp16.cpp b/src/devices/cpu/dsp16/dsp16.cpp index f6d597e741d..6baaa215e73 100644 --- a/src/devices/cpu/dsp16/dsp16.cpp +++ b/src/devices/cpu/dsp16/dsp16.cpp @@ -348,10 +348,10 @@ uint32_t dsp16_device::disasm_max_opcode_bytes() const // helper function //------------------------------------------------- -offs_t dsp16_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t dsp16_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( dsp16a ); - return CPU_DISASSEMBLE_NAME(dsp16a)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(dsp16a)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/dsp16/dsp16.h b/src/devices/cpu/dsp16/dsp16.h index 1a558f1f18a..e138edae5b4 100644 --- a/src/devices/cpu/dsp16/dsp16.h +++ b/src/devices/cpu/dsp16/dsp16.h @@ -51,7 +51,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override; virtual uint32_t disasm_max_opcode_bytes() const override; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; // address spaces const address_space_config m_program_config; diff --git a/src/devices/cpu/dsp16/dsp16dis.cpp b/src/devices/cpu/dsp16/dsp16dis.cpp index 52b76fee297..c1166dd105f 100644 --- a/src/devices/cpu/dsp16/dsp16dis.cpp +++ b/src/devices/cpu/dsp16/dsp16dis.cpp @@ -248,7 +248,7 @@ bool disasmSIField(const uint8_t& SI) } -static offs_t internal_disasm_dsp16a(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(dsp16a) { uint8_t opSize = 1; uint32_t dasmflags = 0; @@ -584,13 +584,3 @@ static offs_t internal_disasm_dsp16a(cpu_device *device, std::ostream &stream, o return opSize | dasmflags | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(dsp16a) -{ - std::ostringstream stream; - offs_t result = internal_disasm_dsp16a(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/dsp32/dsp32.cpp b/src/devices/cpu/dsp32/dsp32.cpp index 2f0d8d2eeab..ca4a757ee41 100644 --- a/src/devices/cpu/dsp32/dsp32.cpp +++ b/src/devices/cpu/dsp32/dsp32.cpp @@ -421,10 +421,10 @@ uint32_t dsp32c_device::disasm_max_opcode_bytes() const // helper function //------------------------------------------------- -offs_t dsp32c_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t dsp32c_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( dsp32c ); - return CPU_DISASSEMBLE_NAME(dsp32c)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(dsp32c)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/dsp32/dsp32.h b/src/devices/cpu/dsp32/dsp32.h index 62a56ef4a0a..4b39600284a 100644 --- a/src/devices/cpu/dsp32/dsp32.h +++ b/src/devices/cpu/dsp32/dsp32.h @@ -128,7 +128,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override; virtual uint32_t disasm_max_opcode_bytes() const override; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; // memory accessors uint32_t ROPCODE(offs_t pc); diff --git a/src/devices/cpu/dsp32/dsp32dis.cpp b/src/devices/cpu/dsp32/dsp32dis.cpp index d893b412f44..aaf9dc63abb 100644 --- a/src/devices/cpu/dsp32/dsp32dis.cpp +++ b/src/devices/cpu/dsp32/dsp32dis.cpp @@ -694,21 +694,11 @@ static unsigned dasm_dsp32(std::ostream &stream, unsigned pc, uint32_t op) } -static unsigned dasm_dsp32(char *buffer, unsigned pc, uint32_t op) -{ - std::ostringstream stream; - unsigned result = dasm_dsp32(stream, pc, op); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} - - /*************************************************************************** DISASSEMBLY HOOK ***************************************************************************/ CPU_DISASSEMBLE( dsp32c ) { - return dasm_dsp32(buffer, pc, oprom[0] | (oprom[1] << 8) | (oprom[2] << 16) | (oprom[3] << 24)); + return dasm_dsp32(stream, pc, oprom[0] | (oprom[1] << 8) | (oprom[2] << 16) | (oprom[3] << 24)); } diff --git a/src/devices/cpu/dsp56k/dsp56dsm.cpp b/src/devices/cpu/dsp56k/dsp56dsm.cpp index 27d80cbfc77..133cfc40509 100644 --- a/src/devices/cpu/dsp56k/dsp56dsm.cpp +++ b/src/devices/cpu/dsp56k/dsp56dsm.cpp @@ -16,7 +16,7 @@ /*****************************/ /* Main disassembly function */ /*****************************/ -static offs_t internal_disasm_dsp56k(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(dsp56k) { const uint16_t w0 = oprom[0] | (oprom[1] << 8); const uint16_t w1 = oprom[2] | (oprom[3] << 8); @@ -28,13 +28,3 @@ static offs_t internal_disasm_dsp56k(cpu_device *device, std::ostream &stream, o const unsigned size = op.size(); return (size | DASMFLAG_SUPPORTED); } - - -CPU_DISASSEMBLE(dsp56k) -{ - std::ostringstream stream; - offs_t result = internal_disasm_dsp56k(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/dsp56k/dsp56k.cpp b/src/devices/cpu/dsp56k/dsp56k.cpp index 5c24d5431bc..a4ace1425a8 100644 --- a/src/devices/cpu/dsp56k/dsp56k.cpp +++ b/src/devices/cpu/dsp56k/dsp56k.cpp @@ -494,8 +494,8 @@ void dsp56k_device::execute_run() } -offs_t dsp56k_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t dsp56k_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( dsp56k ); - return CPU_DISASSEMBLE_NAME(dsp56k)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(dsp56k)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/dsp56k/dsp56k.h b/src/devices/cpu/dsp56k/dsp56k.h index 419800a3265..443dd811508 100644 --- a/src/devices/cpu/dsp56k/dsp56k.h +++ b/src/devices/cpu/dsp56k/dsp56k.h @@ -236,7 +236,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 2; } virtual uint32_t disasm_max_opcode_bytes() const override { return 4; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: address_space_config m_program_config; diff --git a/src/devices/cpu/e0c6200/e0c6200.cpp b/src/devices/cpu/e0c6200/e0c6200.cpp index 9cc9468429d..a7ccf514438 100644 --- a/src/devices/cpu/e0c6200/e0c6200.cpp +++ b/src/devices/cpu/e0c6200/e0c6200.cpp @@ -40,10 +40,10 @@ void e0c6200_cpu_device::state_string_export(const device_state_entry &entry, st } } -offs_t e0c6200_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t e0c6200_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE(e0c6200); - return CPU_DISASSEMBLE_NAME(e0c6200)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(e0c6200)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/e0c6200/e0c6200.h b/src/devices/cpu/e0c6200/e0c6200.h index cc23c0b1897..e1b95d0381c 100644 --- a/src/devices/cpu/e0c6200/e0c6200.h +++ b/src/devices/cpu/e0c6200/e0c6200.h @@ -43,7 +43,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 2; } virtual uint32_t disasm_max_opcode_bytes() const override { return 2; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; address_space_config m_program_config; diff --git a/src/devices/cpu/e0c6200/e0c6200d.cpp b/src/devices/cpu/e0c6200/e0c6200d.cpp index 62cbfab9ad5..eb8c4d55091 100644 --- a/src/devices/cpu/e0c6200/e0c6200d.cpp +++ b/src/devices/cpu/e0c6200/e0c6200d.cpp @@ -110,7 +110,7 @@ static char* decode_param(uint16_t opcode, int param, char* buffer) } -static offs_t internal_disasm_e0c6200(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(e0c6200) { uint16_t op = (oprom[1] | oprom[0] << 8) & 0xfff; @@ -705,13 +705,3 @@ static offs_t internal_disasm_e0c6200(cpu_device *device, std::ostream &stream, return 1 | em_flags[m] | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(e0c6200) -{ - std::ostringstream stream; - offs_t result = internal_disasm_e0c6200(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/e132xs/32xsdasm.cpp b/src/devices/cpu/e132xs/32xsdasm.cpp index bf230f9137a..b44da23a7bb 100644 --- a/src/devices/cpu/e132xs/32xsdasm.cpp +++ b/src/devices/cpu/e132xs/32xsdasm.cpp @@ -2136,16 +2136,7 @@ unsigned dasm_hyperstone(std::ostream &stream, unsigned pc, const uint8_t *oprom return size | flags | DASMFLAG_SUPPORTED; } -static unsigned dasm_hyperstone(char *buffer, unsigned pc, const uint8_t *oprom, unsigned h_flag, int private_fp) -{ - std::ostringstream stream; - unsigned result = dasm_hyperstone(stream, pc, oprom, h_flag, private_fp); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} - CPU_DISASSEMBLE( hyperstone_generic ) { - return dasm_hyperstone( buffer, pc, oprom, 0, 0 ); + return dasm_hyperstone( stream, pc, oprom, 0, 0 ); } diff --git a/src/devices/cpu/e132xs/e132xs.cpp b/src/devices/cpu/e132xs/e132xs.cpp index 6f26c9daa8d..5eaf69b7e9e 100644 --- a/src/devices/cpu/e132xs/e132xs.cpp +++ b/src/devices/cpu/e132xs/e132xs.cpp @@ -1904,13 +1904,10 @@ uint32_t hyperstone_device::disasm_max_opcode_bytes() const // helper function //------------------------------------------------- -offs_t hyperstone_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t hyperstone_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { - std::ostringstream stream; - offs_t result = dasm_hyperstone(stream, pc, oprom, GET_H, GET_FP); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; + extern CPU_DISASSEMBLE( hyperstone ); + return dasm_hyperstone(stream, pc, oprom, GET_H, GET_FP ); } /* Opcodes */ diff --git a/src/devices/cpu/e132xs/e132xs.h b/src/devices/cpu/e132xs/e132xs.h index 376e0cf634a..5b286eda50c 100644 --- a/src/devices/cpu/e132xs/e132xs.h +++ b/src/devices/cpu/e132xs/e132xs.h @@ -238,7 +238,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override; virtual uint32_t disasm_max_opcode_bytes() const override; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/es5510/es5510.cpp b/src/devices/cpu/es5510/es5510.cpp index 9d44de1acd7..8113c5c3bd9 100644 --- a/src/devices/cpu/es5510/es5510.cpp +++ b/src/devices/cpu/es5510/es5510.cpp @@ -933,7 +933,7 @@ uint32_t es5510_device::disasm_max_opcode_bytes() const return 6; } -offs_t es5510_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t es5510_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return pc; } diff --git a/src/devices/cpu/es5510/es5510.h b/src/devices/cpu/es5510/es5510.h index 76d890db2a7..4d85cb87e5c 100644 --- a/src/devices/cpu/es5510/es5510.h +++ b/src/devices/cpu/es5510/es5510.h @@ -134,7 +134,7 @@ protected: virtual void execute_run() override; virtual uint32_t disasm_min_opcode_bytes() const override; virtual uint32_t disasm_max_opcode_bytes() const override; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual void execute_set_input(int linenum, int state) override; int32_t alu_operation(uint8_t op, int32_t aValue, int32_t bValue, uint8_t &flags); diff --git a/src/devices/cpu/esrip/esrip.cpp b/src/devices/cpu/esrip/esrip.cpp index dc5e79a18d3..f59f4d46bdf 100644 --- a/src/devices/cpu/esrip/esrip.cpp +++ b/src/devices/cpu/esrip/esrip.cpp @@ -398,10 +398,10 @@ uint32_t esrip_device::disasm_max_opcode_bytes() const // helper function //------------------------------------------------- -offs_t esrip_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t esrip_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( esrip ); - return CPU_DISASSEMBLE_NAME(esrip)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(esrip)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/esrip/esrip.h b/src/devices/cpu/esrip/esrip.h index 3d7fdc093e2..42f397ca5b4 100644 --- a/src/devices/cpu/esrip/esrip.h +++ b/src/devices/cpu/esrip/esrip.h @@ -149,7 +149,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override; virtual uint32_t disasm_max_opcode_bytes() const override; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/esrip/esripdsm.cpp b/src/devices/cpu/esrip/esripdsm.cpp index 61d8d878ad3..04890fba2e4 100644 --- a/src/devices/cpu/esrip/esripdsm.cpp +++ b/src/devices/cpu/esrip/esripdsm.cpp @@ -17,7 +17,7 @@ DISASSEMBLY HOOK (TODO: FINISH) ***************************************************************************/ -static offs_t internal_disasm_esrip(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(esrip) { #if 0 static const char* const jmp_types[] = @@ -93,13 +93,3 @@ static offs_t internal_disasm_esrip(cpu_device *device, std::ostream &stream, of return 1 | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(esrip) -{ - std::ostringstream stream; - offs_t result = internal_disasm_esrip(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/f8/f8.cpp b/src/devices/cpu/f8/f8.cpp index a4470c0686d..4a0b76347cc 100644 --- a/src/devices/cpu/f8/f8.cpp +++ b/src/devices/cpu/f8/f8.cpp @@ -2062,10 +2062,10 @@ void f8_cpu_device::state_string_export(const device_state_entry &entry, std::st } -offs_t f8_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t f8_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( f8 ); - return CPU_DISASSEMBLE_NAME(f8)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(f8)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/f8/f8.h b/src/devices/cpu/f8/f8.h index 6f96bea3f49..114372a23d1 100644 --- a/src/devices/cpu/f8/f8.h +++ b/src/devices/cpu/f8/f8.h @@ -56,7 +56,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 3; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: address_space_config m_program_config; diff --git a/src/devices/cpu/f8/f8dasm.cpp b/src/devices/cpu/f8/f8dasm.cpp index c67a1372c2d..4c44aa2c424 100644 --- a/src/devices/cpu/f8/f8dasm.cpp +++ b/src/devices/cpu/f8/f8dasm.cpp @@ -9,7 +9,7 @@ static const char *const rname[16] = { "R8", "J", "HU", "HL", "KU", "KL", "QU", "QL" }; -static offs_t internal_disasm_f8(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(f8) { unsigned size = 0; uint8_t op = oprom[size++]; @@ -532,13 +532,3 @@ static offs_t internal_disasm_f8(cpu_device *device, std::ostream &stream, offs_ return size; } - - -CPU_DISASSEMBLE(f8) -{ - std::ostringstream stream; - offs_t result = internal_disasm_f8(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/g65816/g65816.cpp b/src/devices/cpu/g65816/g65816.cpp index 5eef5b1f386..9f2689b93f9 100644 --- a/src/devices/cpu/g65816/g65816.cpp +++ b/src/devices/cpu/g65816/g65816.cpp @@ -759,14 +759,14 @@ void g65816_device::execute_set_input(int line, int state) #include "g65816ds.h" -offs_t g65816_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t g65816_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { - return g65816_disassemble(buffer, (pc & 0x00ffff), (pc & 0xff0000) >> 16, oprom, FLAG_M, FLAG_X); + return g65816_disassemble(stream, (pc & 0x00ffff), (pc & 0xff0000) >> 16, oprom, FLAG_M, FLAG_X); } CPU_DISASSEMBLE( g65816 ) { - return g65816_disassemble(buffer, (pc & 0x00ffff), (pc & 0xff0000) >> 16, oprom, 0/*FLAG_M*/, 0/*FLAG_X*/); + return g65816_disassemble(stream, (pc & 0x00ffff), (pc & 0xff0000) >> 16, oprom, 0/*FLAG_M*/, 0/*FLAG_X*/); } void g65816_device::g65816_restore_state() diff --git a/src/devices/cpu/g65816/g65816.h b/src/devices/cpu/g65816/g65816.h index 87bb2795101..8e14baabc9f 100644 --- a/src/devices/cpu/g65816/g65816.h +++ b/src/devices/cpu/g65816/g65816.h @@ -87,7 +87,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 4; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; address_space_config m_program_config; diff --git a/src/devices/cpu/g65816/g65816ds.cpp b/src/devices/cpu/g65816/g65816ds.cpp index 0d5d5409086..aad24ceb545 100644 --- a/src/devices/cpu/g65816/g65816ds.cpp +++ b/src/devices/cpu/g65816/g65816ds.cpp @@ -382,16 +382,7 @@ unsigned g65816_disassemble(std::ostream &stream, unsigned int pc, unsigned int return length | DASMFLAG_SUPPORTED | dasm_flags; } -unsigned g65816_disassemble(char *buffer, unsigned int pc, unsigned int pb, const uint8_t *oprom, int m_flag, int x_flag) -{ - std::ostringstream stream; - unsigned result = g65816_disassemble(stream, pc, pb, oprom, m_flag, x_flag); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} - CPU_DISASSEMBLE( g65816_generic ) { - return g65816_disassemble(buffer, (pc & 0x00ffff), (pc & 0xff0000) >> 16, oprom, 0, 0); + return g65816_disassemble(stream, (pc & 0x00ffff), (pc & 0xff0000) >> 16, oprom, 0, 0); } diff --git a/src/devices/cpu/g65816/g65816ds.h b/src/devices/cpu/g65816/g65816ds.h index a0dfc7a2034..892dd065a10 100644 --- a/src/devices/cpu/g65816/g65816ds.h +++ b/src/devices/cpu/g65816/g65816ds.h @@ -17,7 +17,6 @@ All rights reserved. */ unsigned g65816_disassemble(std::ostream &stream, unsigned int pc, unsigned int pb, const uint8_t *oprom, int m_flag, int x_flag); -unsigned g65816_disassemble(char *buffer, unsigned int pc, unsigned int pb, const uint8_t *oprom, int m_flag, int x_flag); #endif /* __G65816DS_H__ */ diff --git a/src/devices/cpu/h6280/6280dasm.cpp b/src/devices/cpu/h6280/6280dasm.cpp index 2f6d1d9d84f..5679ab17226 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. *****************************************************************************/ -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) +CPU_DISASSEMBLE(h6280) { uint32_t flags = 0; int PC, OP, opc, arg; @@ -249,16 +249,6 @@ static offs_t internal_disasm_h6280(cpu_device *device, std::ostream &stream, of default: 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; -} diff --git a/src/devices/cpu/h6280/h6280.cpp b/src/devices/cpu/h6280/h6280.cpp index ecb2420e366..a3fae0075f5 100644 --- a/src/devices/cpu/h6280/h6280.cpp +++ b/src/devices/cpu/h6280/h6280.cpp @@ -2238,10 +2238,10 @@ uint32_t h6280_device::disasm_max_opcode_bytes() const // helper function //------------------------------------------------- -offs_t h6280_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t h6280_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( h6280 ); - return CPU_DISASSEMBLE_NAME(h6280)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(h6280)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/h6280/h6280.h b/src/devices/cpu/h6280/h6280.h index 5717b3fa55f..66b7386b399 100644 --- a/src/devices/cpu/h6280/h6280.h +++ b/src/devices/cpu/h6280/h6280.h @@ -95,7 +95,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override; virtual uint32_t disasm_max_opcode_bytes() const override; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/h8/h8.cpp b/src/devices/cpu/h8/h8.cpp index 7a95b59b922..6d62453a2ff 100644 --- a/src/devices/cpu/h8/h8.cpp +++ b/src/devices/cpu/h8/h8.cpp @@ -568,18 +568,9 @@ offs_t h8_device::disassemble_generic(std::ostream &stream, offs_t pc, const uin return e.flags | DASMFLAG_SUPPORTED; } -offs_t h8_device::disassemble_generic(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options, const disasm_entry *table) +offs_t h8_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { - std::ostringstream stream; - offs_t result = disassemble_generic(stream, pc, oprom, opram, options, table); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} - -offs_t h8_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) -{ - return disassemble_generic(buffer, pc, oprom, opram, options, disasm_entries); + return disassemble_generic(stream, pc, oprom, opram, options, disasm_entries); } uint16_t h8_device::read16i(uint32_t adr) diff --git a/src/devices/cpu/h8/h8.h b/src/devices/cpu/h8/h8.h index 735df6f9de9..089cec91fb7 100644 --- a/src/devices/cpu/h8/h8.h +++ b/src/devices/cpu/h8/h8.h @@ -175,7 +175,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override; virtual uint32_t disasm_max_opcode_bytes() const override; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; address_space_config program_config, io_config; address_space *program, *io; @@ -209,7 +209,6 @@ protected: static const disasm_entry disasm_entries[]; offs_t disassemble_generic(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options, const disasm_entry *table); - offs_t disassemble_generic(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options, const disasm_entry *table); void disassemble_am(std::ostream &stream, int am, offs_t pc, const uint8_t *oprom, uint32_t opcode, int slot, int offset); virtual void do_exec_full(); diff --git a/src/devices/cpu/h8/h8h.cpp b/src/devices/cpu/h8/h8h.cpp index 1710cb930f6..87ae39a884b 100644 --- a/src/devices/cpu/h8/h8h.cpp +++ b/src/devices/cpu/h8/h8h.cpp @@ -10,9 +10,9 @@ h8h_device::h8h_device(const machine_config &mconfig, device_type type, const ch mode_advanced = true; } -offs_t h8h_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t h8h_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { - return disassemble_generic(buffer, pc, oprom, opram, options, disasm_entries); + return disassemble_generic(stream, pc, oprom, opram, options, disasm_entries); } #include "cpu/h8/h8h.hxx" diff --git a/src/devices/cpu/h8/h8h.h b/src/devices/cpu/h8/h8h.h index b4385d96ef6..f634e0aa82a 100644 --- a/src/devices/cpu/h8/h8h.h +++ b/src/devices/cpu/h8/h8h.h @@ -23,7 +23,7 @@ public: protected: static const disasm_entry disasm_entries[]; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual void do_exec_full() override; virtual void do_exec_partial() override; diff --git a/src/devices/cpu/h8/h8s2000.cpp b/src/devices/cpu/h8/h8s2000.cpp index ff8997e4728..99086cbc95f 100644 --- a/src/devices/cpu/h8/h8s2000.cpp +++ b/src/devices/cpu/h8/h8s2000.cpp @@ -9,9 +9,9 @@ h8s2000_device::h8s2000_device(const machine_config &mconfig, device_type type, has_exr = true; } -offs_t h8s2000_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t h8s2000_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { - return disassemble_generic(buffer, pc, oprom, opram, options, disasm_entries); + return disassemble_generic(stream, pc, oprom, opram, options, disasm_entries); } #include "cpu/h8/h8s2000.hxx" diff --git a/src/devices/cpu/h8/h8s2000.h b/src/devices/cpu/h8/h8s2000.h index 24808f8d596..34edb361cd8 100644 --- a/src/devices/cpu/h8/h8s2000.h +++ b/src/devices/cpu/h8/h8s2000.h @@ -25,7 +25,7 @@ public: protected: static const disasm_entry disasm_entries[]; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual void do_exec_full() override; virtual void do_exec_partial() override; diff --git a/src/devices/cpu/h8/h8s2600.cpp b/src/devices/cpu/h8/h8s2600.cpp index 7717bc2f179..5bd2d7419cc 100644 --- a/src/devices/cpu/h8/h8s2600.cpp +++ b/src/devices/cpu/h8/h8s2600.cpp @@ -8,9 +8,9 @@ h8s2600_device::h8s2600_device(const machine_config &mconfig, device_type type, { } -offs_t h8s2600_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t h8s2600_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { - return disassemble_generic(buffer, pc, oprom, opram, options, disasm_entries); + return disassemble_generic(stream, pc, oprom, opram, options, disasm_entries); } #include "cpu/h8/h8s2600.hxx" diff --git a/src/devices/cpu/h8/h8s2600.h b/src/devices/cpu/h8/h8s2600.h index a7c686e910d..eb2881d66dd 100644 --- a/src/devices/cpu/h8/h8s2600.h +++ b/src/devices/cpu/h8/h8s2600.h @@ -23,7 +23,7 @@ public: protected: static const disasm_entry disasm_entries[]; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual void do_exec_full() override; virtual void do_exec_partial() override; diff --git a/src/devices/cpu/hcd62121/hcd62121.cpp b/src/devices/cpu/hcd62121/hcd62121.cpp index 8a3e6fa5049..3c8e98149ea 100644 --- a/src/devices/cpu/hcd62121/hcd62121.cpp +++ b/src/devices/cpu/hcd62121/hcd62121.cpp @@ -525,8 +525,8 @@ void hcd62121_cpu_device::execute_run() } -offs_t hcd62121_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t hcd62121_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( hcd62121 ); - return CPU_DISASSEMBLE_NAME(hcd62121)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(hcd62121)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/hcd62121/hcd62121.h b/src/devices/cpu/hcd62121/hcd62121.h index df804d9a0e3..af105c2a3a3 100644 --- a/src/devices/cpu/hcd62121/hcd62121.h +++ b/src/devices/cpu/hcd62121/hcd62121.h @@ -59,7 +59,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 18; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; uint8_t read_op(); uint8_t datasize( uint8_t op ); diff --git a/src/devices/cpu/hcd62121/hcd62121d.cpp b/src/devices/cpu/hcd62121/hcd62121d.cpp index a0321e63c40..d355385f793 100644 --- a/src/devices/cpu/hcd62121/hcd62121d.cpp +++ b/src/devices/cpu/hcd62121/hcd62121d.cpp @@ -129,7 +129,7 @@ static const hcd62121_dasm hcd62121_ops[256] = }; -static offs_t internal_disasm_hcd62121(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(hcd62121) { uint8_t op; uint8_t op1; @@ -357,12 +357,3 @@ static offs_t internal_disasm_hcd62121(cpu_device *device, std::ostream &stream, return pos | DASMFLAG_SUPPORTED; } - -CPU_DISASSEMBLE(hcd62121) -{ - std::ostringstream stream; - offs_t result = internal_disasm_hcd62121(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/hd61700/hd61700.cpp b/src/devices/cpu/hd61700/hd61700.cpp index 11e0ab9f0c2..c7c646a7a4b 100644 --- a/src/devices/cpu/hd61700/hd61700.cpp +++ b/src/devices/cpu/hd61700/hd61700.cpp @@ -292,10 +292,10 @@ void hd61700_cpu_device::state_string_export(const device_state_entry &entry, st // helper function //------------------------------------------------- -offs_t hd61700_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t hd61700_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( hd61700 ); - return CPU_DISASSEMBLE_NAME(hd61700)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(hd61700)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/hd61700/hd61700.h b/src/devices/cpu/hd61700/hd61700.h index c0b7666b36f..fee2e4cd465 100644 --- a/src/devices/cpu/hd61700/hd61700.h +++ b/src/devices/cpu/hd61700/hd61700.h @@ -100,7 +100,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 16; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; // interrupts bool check_irqs(void); diff --git a/src/devices/cpu/hd61700/hd61700d.cpp b/src/devices/cpu/hd61700/hd61700d.cpp index daa45c6b649..53a98be2145 100644 --- a/src/devices/cpu/hd61700/hd61700d.cpp +++ b/src/devices/cpu/hd61700/hd61700d.cpp @@ -392,7 +392,7 @@ uint32_t get_dasmflags(uint8_t op) } -static offs_t internal_disasm_hd61700(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(hd61700) { const hd61700_dasm *inst; uint32_t dasmflags; @@ -433,13 +433,3 @@ static offs_t internal_disasm_hd61700(cpu_device *device, std::ostream &stream, return (pos>>1) | dasmflags | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(hd61700) -{ - std::ostringstream stream; - offs_t result = internal_disasm_hd61700(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/hmcs40/hmcs40.cpp b/src/devices/cpu/hmcs40/hmcs40.cpp index b9e9f8e904b..a15b7cc907c 100644 --- a/src/devices/cpu/hmcs40/hmcs40.cpp +++ b/src/devices/cpu/hmcs40/hmcs40.cpp @@ -148,10 +148,10 @@ void hmcs40_cpu_device::state_string_export(const device_state_entry &entry, std } } -offs_t hmcs40_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t hmcs40_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE(hmcs40); - return CPU_DISASSEMBLE_NAME(hmcs40)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(hmcs40)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/hmcs40/hmcs40.h b/src/devices/cpu/hmcs40/hmcs40.h index 225d5790b68..73ae6308940 100644 --- a/src/devices/cpu/hmcs40/hmcs40.h +++ b/src/devices/cpu/hmcs40/hmcs40.h @@ -174,7 +174,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 2; } virtual uint32_t disasm_max_opcode_bytes() const override { return 2; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; address_space_config m_program_config; diff --git a/src/devices/cpu/hmcs40/hmcs40d.cpp b/src/devices/cpu/hmcs40/hmcs40d.cpp index b322b4c3208..867972d82db 100644 --- a/src/devices/cpu/hmcs40/hmcs40d.cpp +++ b/src/devices/cpu/hmcs40/hmcs40d.cpp @@ -184,7 +184,7 @@ static const uint8_t hmcs40_mnemonic[0x400] = -static offs_t internal_disasm_hmcs40(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(hmcs40) { uint16_t op = (oprom[0] | oprom[1] << 8) & 0x3ff; uint8_t instr = hmcs40_mnemonic[op]; @@ -229,13 +229,3 @@ static offs_t internal_disasm_hmcs40(cpu_device *device, std::ostream &stream, o int pos = s_next_pc[pc & 0x3f] & DASMFLAG_LENGTHMASK; return pos | s_flags[instr] | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(hmcs40) -{ - std::ostringstream stream; - offs_t result = internal_disasm_hmcs40(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/hphybrid/hphybrid.cpp b/src/devices/cpu/hphybrid/hphybrid.cpp index e2c58c86f15..d2930111c2e 100644 --- a/src/devices/cpu/hphybrid/hphybrid.cpp +++ b/src/devices/cpu/hphybrid/hphybrid.cpp @@ -675,10 +675,10 @@ void hp_hybrid_cpu_device::state_string_export(const device_state_entry &entry, } } -offs_t hp_hybrid_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t hp_hybrid_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE(hp_hybrid); - return CPU_DISASSEMBLE_NAME(hp_hybrid)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(hp_hybrid)(this, stream, pc, oprom, opram, options); } uint16_t hp_hybrid_cpu_device::remove_mae(uint32_t addr) @@ -1536,10 +1536,10 @@ uint16_t hp_5061_3001_cpu_device::execute_no_bpc_ioc(uint16_t opcode) return m_reg_P + 1; } -offs_t hp_5061_3001_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t hp_5061_3001_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { - extern CPU_DISASSEMBLE(hp_5061_3001); - return CPU_DISASSEMBLE_NAME(hp_5061_3001)(this, buffer, pc, oprom, opram, options); + extern CPU_DISASSEMBLE(hp_5061_3001); + return CPU_DISASSEMBLE_NAME(hp_5061_3001)(this, stream, pc, oprom, opram, options); } uint32_t hp_5061_3001_cpu_device::add_mae(aec_cases_t aec_case , uint16_t addr) diff --git a/src/devices/cpu/hphybrid/hphybrid.h b/src/devices/cpu/hphybrid/hphybrid.h index b7b9fc20c93..c4f85f196b5 100644 --- a/src/devices/cpu/hphybrid/hphybrid.h +++ b/src/devices/cpu/hphybrid/hphybrid.h @@ -119,7 +119,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 2; } virtual uint32_t disasm_max_opcode_bytes() const override { return 2; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; // Different cases of memory access // See patent @ pg 361 @@ -213,8 +213,8 @@ protected: void do_mpy(void); virtual uint16_t execute_no_bpc_ioc(uint16_t opcode) override; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; - virtual uint32_t add_mae(aec_cases_t aec_case , uint16_t addr) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual uint32_t add_mae(aec_cases_t aec_case, uint16_t addr) override; virtual uint16_t read_non_common_reg(uint16_t addr) override; virtual void write_non_common_reg(uint16_t addr , uint16_t v) override; diff --git a/src/devices/cpu/hphybrid/hphybrid_dasm.cpp b/src/devices/cpu/hphybrid/hphybrid_dasm.cpp index 269a37a3482..e825e31c36c 100644 --- a/src/devices/cpu/hphybrid/hphybrid_dasm.cpp +++ b/src/devices/cpu/hphybrid/hphybrid_dasm.cpp @@ -371,7 +371,7 @@ static offs_t disassemble_table(uint16_t opcode , offs_t pc , const dis_entry_t return 0; } -static offs_t internal_disasm_hp_hybrid(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(hp_hybrid) { uint16_t opcode = ((uint16_t)oprom[ 0 ] << 8) | oprom[ 1 ]; offs_t res; @@ -388,16 +388,7 @@ static offs_t internal_disasm_hp_hybrid(cpu_device *device, std::ostream &stream return res; } -CPU_DISASSEMBLE(hp_hybrid) -{ - std::ostringstream stream; - offs_t result = internal_disasm_hp_hybrid(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} - -static offs_t internal_disasm_hp_5061_3001(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(hp_5061_3001) { uint16_t opcode = ((uint16_t)oprom[ 0 ] << 8) | oprom[ 1 ]; offs_t res; @@ -418,13 +409,3 @@ static offs_t internal_disasm_hp_5061_3001(cpu_device *device, std::ostream &str return res; } - - -CPU_DISASSEMBLE(hp_5061_3001) -{ - std::ostringstream stream; - offs_t result = internal_disasm_hp_5061_3001(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/i386/i386.cpp b/src/devices/cpu/i386/i386.cpp index 98ad81ac427..d2f9dc761fb 100644 --- a/src/devices/cpu/i386/i386.cpp +++ b/src/devices/cpu/i386/i386.cpp @@ -3989,13 +3989,9 @@ bool i386_device::memory_translate(address_spacenum spacenum, int intention, off return ret; } -offs_t i386_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t i386_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { - std::ostringstream stream; - offs_t result = i386_dasm_one(stream, pc, oprom, m_sreg[CS].d ? 32 : 16); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; + return i386_dasm_one(stream, pc, oprom, m_sreg[CS].d ? 32 : 16); } diff --git a/src/devices/cpu/i386/i386.h b/src/devices/cpu/i386/i386.h index 06e74163ee1..c4abab31915 100644 --- a/src/devices/cpu/i386/i386.h +++ b/src/devices/cpu/i386/i386.h @@ -64,7 +64,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 15; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; address_space_config m_program_config; address_space_config m_io_config; diff --git a/src/devices/cpu/i386/i386dasm.cpp b/src/devices/cpu/i386/i386dasm.cpp index e25819437f5..3c815612ffa 100644 --- a/src/devices/cpu/i386/i386dasm.cpp +++ b/src/devices/cpu/i386/i386dasm.cpp @@ -3115,26 +3115,17 @@ int i386_dasm_one(std::ostream &stream, offs_t eip, const uint8_t *oprom, int mo return i386_dasm_one_ex(stream, eip, oprom, mode); } -static int i386_dasm_one_ex(char *buffer, uint64_t eip, const uint8_t *oprom, int mode) -{ - std::ostringstream stream; - int result = i386_dasm_one_ex(stream, eip, oprom, mode); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} - CPU_DISASSEMBLE( x86_16 ) { - return i386_dasm_one_ex(buffer, pc, oprom, 16); + return i386_dasm_one_ex(stream, pc, oprom, 16); } CPU_DISASSEMBLE( x86_32 ) { - return i386_dasm_one_ex(buffer, pc, oprom, 32); + return i386_dasm_one_ex(stream, pc, oprom, 32); } CPU_DISASSEMBLE( x86_64 ) { - return i386_dasm_one_ex(buffer, pc, oprom, 64); + return i386_dasm_one_ex(stream, pc, oprom, 64); } diff --git a/src/devices/cpu/i4004/4004dasm.cpp b/src/devices/cpu/i4004/4004dasm.cpp index 7b521a2aa86..09cef4a9873 100644 --- a/src/devices/cpu/i4004/4004dasm.cpp +++ b/src/devices/cpu/i4004/4004dasm.cpp @@ -13,7 +13,7 @@ #define OP(A) oprom[(A) - PC] #define ARG(A) opram[(A) - PC] -static offs_t internal_disasm_i4004(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(i4004) { uint32_t flags = 0; uint8_t op; @@ -131,13 +131,3 @@ static offs_t internal_disasm_i4004(cpu_device *device, std::ostream &stream, of } return (pc - PC) | flags | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(i4004) -{ - std::ostringstream stream; - offs_t result = internal_disasm_i4004(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/i4004/i4004.cpp b/src/devices/cpu/i4004/i4004.cpp index d0db65e6d63..eaaae3b8148 100644 --- a/src/devices/cpu/i4004/i4004.cpp +++ b/src/devices/cpu/i4004/i4004.cpp @@ -522,8 +522,8 @@ void i4004_cpu_device::state_string_export(const device_state_entry &entry, std: } } -offs_t i4004_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t i4004_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( i4004 ); - return CPU_DISASSEMBLE_NAME(i4004)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(i4004)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/i4004/i4004.h b/src/devices/cpu/i4004/i4004.h index 1b875f10aee..7bc3d17427b 100644 --- a/src/devices/cpu/i4004/i4004.h +++ b/src/devices/cpu/i4004/i4004.h @@ -59,7 +59,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 2; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; uint8_t ROP(); uint8_t READ_ROM(); diff --git a/src/devices/cpu/i8008/8008dasm.cpp b/src/devices/cpu/i8008/8008dasm.cpp index 7cefac8e71e..66be08a40b7 100644 --- a/src/devices/cpu/i8008/8008dasm.cpp +++ b/src/devices/cpu/i8008/8008dasm.cpp @@ -16,7 +16,7 @@ static const char reg[] = { 'a', 'b', 'c', 'd', 'e', 'h', 'l', 'm' }; static const char flag_names[] = { 'c', 'z', 's', 'p' }; -static offs_t internal_disasm_i8008(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(i8008) { uint32_t flags = 0; unsigned PC = pc; @@ -113,13 +113,3 @@ static offs_t internal_disasm_i8008(cpu_device *device, std::ostream &stream, of } return (pc - PC) | flags | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(i8008) -{ - std::ostringstream stream; - offs_t result = internal_disasm_i8008(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/i8008/i8008.cpp b/src/devices/cpu/i8008/i8008.cpp index a323ed077c4..f55dac14b88 100644 --- a/src/devices/cpu/i8008/i8008.cpp +++ b/src/devices/cpu/i8008/i8008.cpp @@ -226,10 +226,10 @@ uint32_t i8008_device::disasm_max_opcode_bytes() const // helper function //------------------------------------------------- -offs_t i8008_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t i8008_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( i8008 ); - return CPU_DISASSEMBLE_NAME(i8008)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(i8008)(this, stream, pc, oprom, opram, options); } //************************************************************************** diff --git a/src/devices/cpu/i8008/i8008.h b/src/devices/cpu/i8008/i8008.h index 4ba000f3fe9..fde75d3948a 100644 --- a/src/devices/cpu/i8008/i8008.h +++ b/src/devices/cpu/i8008/i8008.h @@ -50,7 +50,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override; virtual uint32_t disasm_max_opcode_bytes() const override; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual void execute_one(int opcode); diff --git a/src/devices/cpu/i8085/8085dasm.cpp b/src/devices/cpu/i8085/8085dasm.cpp index 1db5fe0b23f..037d5d9fde1 100644 --- a/src/devices/cpu/i8085/8085dasm.cpp +++ b/src/devices/cpu/i8085/8085dasm.cpp @@ -18,7 +18,7 @@ #define ARG(A) opram[(A) - PC] #define ARGW(A) (opram[(A) - PC] | (opram[(A) + 1 - PC] << 8)) -static offs_t internal_disasm_i8085(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(i8085) { uint32_t flags = 0; uint8_t op; @@ -543,13 +543,3 @@ static offs_t internal_disasm_i8085(cpu_device *device, std::ostream &stream, of } return (pc - PC) | flags | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(i8085) -{ - std::ostringstream stream; - offs_t result = internal_disasm_i8085(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/i8085/i8085.cpp b/src/devices/cpu/i8085/i8085.cpp index 09f4a1375d5..f60e594bad9 100644 --- a/src/devices/cpu/i8085/i8085.cpp +++ b/src/devices/cpu/i8085/i8085.cpp @@ -1094,8 +1094,8 @@ void i8085a_cpu_device::execute_set_input(int irqline, int state) } -offs_t i8085a_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t i8085a_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( i8085 ); - return CPU_DISASSEMBLE_NAME(i8085)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(i8085)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/i8085/i8085.h b/src/devices/cpu/i8085/i8085.h index c1e8c33e70b..71074291d1a 100644 --- a/src/devices/cpu/i8085/i8085.h +++ b/src/devices/cpu/i8085/i8085.h @@ -88,7 +88,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 3; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: address_space_config m_program_config; diff --git a/src/devices/cpu/i8089/i8089.cpp b/src/devices/cpu/i8089/i8089.cpp index 2b20984c061..234e2e33503 100644 --- a/src/devices/cpu/i8089/i8089.cpp +++ b/src/devices/cpu/i8089/i8089.cpp @@ -148,10 +148,10 @@ const address_space_config *i8089_device::memory_space_config(address_spacenum s // disasm_disassemble - disassembler //------------------------------------------------- -offs_t i8089_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t i8089_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE(i8089); - return CPU_DISASSEMBLE_NAME(i8089)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(i8089)(this, stream, pc, oprom, opram, options); } //------------------------------------------------- diff --git a/src/devices/cpu/i8089/i8089.h b/src/devices/cpu/i8089/i8089.h index 0231f6c3b8a..4354ceffdf2 100644 --- a/src/devices/cpu/i8089/i8089.h +++ b/src/devices/cpu/i8089/i8089.h @@ -85,7 +85,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 7; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/i8089/i8089_dasm.cpp b/src/devices/cpu/i8089/i8089_dasm.cpp index e40e831f337..bbc4ab1a59e 100644 --- a/src/devices/cpu/i8089/i8089_dasm.cpp +++ b/src/devices/cpu/i8089/i8089_dasm.cpp @@ -437,20 +437,10 @@ const char *i8089_instruction::m_reg[] = "ga", "gb", "gc", "bc", "tp", "ix", "cc", "mc" }; -static offs_t internal_disasm_i8089(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(i8089) { std::unique_ptr<i8089_instruction> i = std::make_unique<i8089_instruction>(pc, oprom); stream << i->buffer(); offs_t result = i->length() | i->flags(); return result; } - - -CPU_DISASSEMBLE(i8089) -{ - std::ostringstream stream; - offs_t result = internal_disasm_i8089(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/i86/i86.cpp b/src/devices/cpu/i86/i86.cpp index 799ab25685d..1bcc2bff719 100644 --- a/src/devices/cpu/i86/i86.cpp +++ b/src/devices/cpu/i86/i86.cpp @@ -508,14 +508,10 @@ void i8086_common_cpu_device::execute_set_input( int inptnum, int state ) } } -offs_t i8086_common_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t i8086_common_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern int i386_dasm_one(std::ostream &stream, offs_t eip, const uint8_t *oprom, int mode); - std::ostringstream stream; - offs_t result = i386_dasm_one(stream, pc, oprom, 1); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; + return i386_dasm_one(stream, pc, oprom, 1); } uint8_t i8086_common_cpu_device::read_port_byte(uint16_t port) diff --git a/src/devices/cpu/i86/i86.h b/src/devices/cpu/i86/i86.h index 6004158d8c1..9013de54f2e 100644 --- a/src/devices/cpu/i86/i86.h +++ b/src/devices/cpu/i86/i86.h @@ -124,7 +124,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 8; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/i860/i860.cpp b/src/devices/cpu/i860/i860.cpp index fff1efec75a..199a410b2db 100644 --- a/src/devices/cpu/i860/i860.cpp +++ b/src/devices/cpu/i860/i860.cpp @@ -225,10 +225,10 @@ void i860_cpu_device::device_reset() } -offs_t i860_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t i860_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( i860 ); - return CPU_DISASSEMBLE_NAME(i860)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(i860)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/i860/i860.h b/src/devices/cpu/i860/i860.h index 60d2bcd4c65..d107f111c97 100644 --- a/src/devices/cpu/i860/i860.h +++ b/src/devices/cpu/i860/i860.h @@ -82,7 +82,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 4; } virtual uint32_t disasm_max_opcode_bytes() const override { return 4; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: address_space_config m_program_config; diff --git a/src/devices/cpu/i860/i860dis.cpp b/src/devices/cpu/i860/i860dis.cpp index 8b5a6c95cb8..a1230d570cc 100644 --- a/src/devices/cpu/i860/i860dis.cpp +++ b/src/devices/cpu/i860/i860dis.cpp @@ -694,9 +694,5 @@ static offs_t internal_disasm_i860(cpu_device *device, std::ostream &main_stream CPU_DISASSEMBLE(i860) { - std::ostringstream stream; - offs_t result = internal_disasm_i860(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; + return internal_disasm_i860(device, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/i960/i960.cpp b/src/devices/cpu/i960/i960.cpp index 4be6f937e42..1f9db2d385e 100644 --- a/src/devices/cpu/i960/i960.cpp +++ b/src/devices/cpu/i960/i960.cpp @@ -2117,8 +2117,8 @@ void i960_cpu_device::device_reset() } -offs_t i960_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t i960_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( i960 ); - return CPU_DISASSEMBLE_NAME(i960)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(i960)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/i960/i960.h b/src/devices/cpu/i960/i960.h index a7ebe01bfd0..12de144357c 100644 --- a/src/devices/cpu/i960/i960.h +++ b/src/devices/cpu/i960/i960.h @@ -100,7 +100,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 4; } virtual uint32_t disasm_max_opcode_bytes() const override { return 8; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: address_space_config m_program_config; diff --git a/src/devices/cpu/i960/i960dis.cpp b/src/devices/cpu/i960/i960dis.cpp index 95be77f0aa0..4def96dad4d 100644 --- a/src/devices/cpu/i960/i960dis.cpp +++ b/src/devices/cpu/i960/i960dis.cpp @@ -293,7 +293,7 @@ static void i960_disassemble(disassemble_t *diss) -static offs_t internal_disasm_i960(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(i960) { disassemble_t dis(stream, pc, oprom); @@ -301,13 +301,3 @@ static offs_t internal_disasm_i960(cpu_device *device, std::ostream &stream, off return dis.IPinc | dis.disflags | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(i960) -{ - std::ostringstream stream; - offs_t result = internal_disasm_i960(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/ie15/ie15.cpp b/src/devices/cpu/ie15/ie15.cpp index 608d363e8a4..eeebbe2cd4c 100644 --- a/src/devices/cpu/ie15/ie15.cpp +++ b/src/devices/cpu/ie15/ie15.cpp @@ -171,10 +171,10 @@ uint32_t ie15_device::disasm_max_opcode_bytes() const // helper function //------------------------------------------------- -offs_t ie15_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t ie15_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( ie15 ); - return CPU_DISASSEMBLE_NAME(ie15)(nullptr, buffer, pc, oprom, opram, 0); + return CPU_DISASSEMBLE_NAME(ie15)(nullptr, stream, pc, oprom, opram, 0); } //************************************************************************** diff --git a/src/devices/cpu/ie15/ie15.h b/src/devices/cpu/ie15/ie15.h index 823dd8f27b6..0fb6baeae06 100644 --- a/src/devices/cpu/ie15/ie15.h +++ b/src/devices/cpu/ie15/ie15.h @@ -50,7 +50,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override; virtual uint32_t disasm_max_opcode_bytes() const override; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual void execute_one(int opcode); diff --git a/src/devices/cpu/ie15/ie15dasm.cpp b/src/devices/cpu/ie15/ie15dasm.cpp index d18fd3c81a6..f13e8f52e44 100644 --- a/src/devices/cpu/ie15/ie15dasm.cpp +++ b/src/devices/cpu/ie15/ie15dasm.cpp @@ -5,7 +5,7 @@ #define OP(A) oprom[(A) - PC] #define ARG(A) opram[(A) - PC] -static offs_t internal_disasm_ie15(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(ie15) { uint32_t flags = 0; uint8_t op; @@ -122,15 +122,6 @@ static offs_t internal_disasm_ie15(cpu_device *device, std::ostream &stream, off util::stream_format(stream, "ota #$%02x", op & 0x0f); break; } - return (pc - PC) | flags | DASMFLAG_SUPPORTED; -} - -CPU_DISASSEMBLE(ie15) -{ - std::ostringstream stream; - offs_t result = internal_disasm_ie15(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; + return (pc - PC) | flags | DASMFLAG_SUPPORTED; } diff --git a/src/devices/cpu/jaguar/jagdasm.cpp b/src/devices/cpu/jaguar/jagdasm.cpp index 60e70aade59..5be18a327a3 100644 --- a/src/devices/cpu/jaguar/jagdasm.cpp +++ b/src/devices/cpu/jaguar/jagdasm.cpp @@ -182,24 +182,16 @@ static unsigned dasmjag(int variant, std::ostream &stream, unsigned pc, const ui util::stream_format(stream, "addqmod $%x,r%d", convert_zero[reg1], reg2); break; } - return size | flags | DASMFLAG_SUPPORTED; -} -static unsigned dasmjag(int variant, char *buffer, unsigned pc, const uint8_t *oprom) -{ - std::ostringstream stream; - unsigned result = dasmjag(variant, stream, pc, oprom); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; + return size | flags | DASMFLAG_SUPPORTED; } CPU_DISASSEMBLE( jaguargpu ) { - return dasmjag(JAGUAR_VARIANT_GPU, buffer, pc, oprom); + return dasmjag(JAGUAR_VARIANT_GPU, stream, pc, oprom); } CPU_DISASSEMBLE( jaguardsp ) { - return dasmjag(JAGUAR_VARIANT_DSP, buffer, pc, oprom); + return dasmjag(JAGUAR_VARIANT_DSP, stream, pc, oprom); } diff --git a/src/devices/cpu/jaguar/jaguar.cpp b/src/devices/cpu/jaguar/jaguar.cpp index 2906245858d..1a3d7d9f41e 100644 --- a/src/devices/cpu/jaguar/jaguar.cpp +++ b/src/devices/cpu/jaguar/jaguar.cpp @@ -1430,15 +1430,15 @@ WRITE32_MEMBER( jaguardsp_cpu_device::ctrl_w ) } -offs_t jaguargpu_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t jaguargpu_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( jaguargpu ); - return CPU_DISASSEMBLE_NAME(jaguargpu)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(jaguargpu)(this, stream, pc, oprom, opram, options); } -offs_t jaguardsp_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t jaguardsp_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( jaguardsp ); - return CPU_DISASSEMBLE_NAME(jaguardsp)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(jaguardsp)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/jaguar/jaguar.h b/src/devices/cpu/jaguar/jaguar.h index cc71cc35887..e01afb5f24f 100644 --- a/src/devices/cpu/jaguar/jaguar.h +++ b/src/devices/cpu/jaguar/jaguar.h @@ -258,7 +258,7 @@ public: protected: virtual void execute_run() override; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; }; @@ -275,7 +275,7 @@ protected: virtual uint32_t execute_input_lines() const override { return 6; } virtual void execute_run() override; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; }; diff --git a/src/devices/cpu/lc8670/lc8670.h b/src/devices/cpu/lc8670/lc8670.h index 525eecf1643..e2fc9582e48 100644 --- a/src/devices/cpu/lc8670/lc8670.h +++ b/src/devices/cpu/lc8670/lc8670.h @@ -118,7 +118,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 4; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: // helpers @@ -260,8 +260,6 @@ private: OP_RII8 }; - offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options); - // disasm table struct dasm_entry { diff --git a/src/devices/cpu/lc8670/lc8670dsm.cpp b/src/devices/cpu/lc8670/lc8670dsm.cpp index 180cc54e16b..d1a223fc3a8 100644 --- a/src/devices/cpu/lc8670/lc8670dsm.cpp +++ b/src/devices/cpu/lc8670/lc8670dsm.cpp @@ -173,17 +173,3 @@ offs_t lc8670_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, co return pos; } - -//------------------------------------------------- -// disasm_disassemble - call the disassembly -// helper function -//------------------------------------------------- - -offs_t lc8670_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) -{ - std::ostringstream stream; - offs_t result = disasm_disassemble(stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/lh5801/5801dasm.cpp b/src/devices/cpu/lh5801/5801dasm.cpp index 86cb6bf6e06..2cf6f105b8d 100644 --- a/src/devices/cpu/lh5801/5801dasm.cpp +++ b/src/devices/cpu/lh5801/5801dasm.cpp @@ -663,7 +663,7 @@ const Entry Entry::table_fd[0x100]={ } // anonymous namespace -static offs_t internal_disasm_lh5801(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(lh5801) { int pos = 0; int oper; @@ -747,13 +747,3 @@ static offs_t internal_disasm_lh5801(cpu_device *device, std::ostream &stream, o return pos; } - - -CPU_DISASSEMBLE(lh5801) -{ - std::ostringstream stream; - offs_t result = internal_disasm_lh5801(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/lh5801/lh5801.cpp b/src/devices/cpu/lh5801/lh5801.cpp index 67a09e2ae51..80c218d9e47 100644 --- a/src/devices/cpu/lh5801/lh5801.cpp +++ b/src/devices/cpu/lh5801/lh5801.cpp @@ -248,8 +248,8 @@ void lh5801_cpu_device::execute_set_input(int irqline, int state) } } -offs_t lh5801_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t lh5801_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( lh5801 ); - return CPU_DISASSEMBLE_NAME(lh5801)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(lh5801)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/lh5801/lh5801.h b/src/devices/cpu/lh5801/lh5801.h index 6df2bb06a37..fba37fed2c7 100644 --- a/src/devices/cpu/lh5801/lh5801.h +++ b/src/devices/cpu/lh5801/lh5801.h @@ -95,7 +95,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 5; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: address_space_config m_program_config; diff --git a/src/devices/cpu/lr35902/lr35902.cpp b/src/devices/cpu/lr35902/lr35902.cpp index d5fcb710c46..137337be5be 100644 --- a/src/devices/cpu/lr35902/lr35902.cpp +++ b/src/devices/cpu/lr35902/lr35902.cpp @@ -226,10 +226,10 @@ void lr35902_cpu_device::device_reset() } -offs_t lr35902_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t lr35902_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( lr35902 ); - return CPU_DISASSEMBLE_NAME(lr35902)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(lr35902)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/lr35902/lr35902.h b/src/devices/cpu/lr35902/lr35902.h index 4288eac51dc..ad032fbebba 100644 --- a/src/devices/cpu/lr35902/lr35902.h +++ b/src/devices/cpu/lr35902/lr35902.h @@ -91,7 +91,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 4; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; inline void cycles_passed(uint8_t cycles); inline uint8_t mem_read_byte(uint16_t addr); diff --git a/src/devices/cpu/lr35902/lr35902d.cpp b/src/devices/cpu/lr35902/lr35902d.cpp index 735befe10a4..a723cac408d 100644 --- a/src/devices/cpu/lr35902/lr35902d.cpp +++ b/src/devices/cpu/lr35902/lr35902d.cpp @@ -190,7 +190,7 @@ static const lr35902dasm mnemonic_main[256]= { * Disassemble opcode at PC and return number of bytes it takes ****************************************************************************/ -static offs_t internal_disasm_lr35902(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(lr35902) { const lr35902dasm *d; const char /* *symbol,*/ *src; @@ -273,13 +273,3 @@ static offs_t internal_disasm_lr35902(cpu_device *device, std::ostream &stream, return pos | s_flags[d->mnemonic] | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(lr35902) -{ - std::ostringstream stream; - offs_t result = internal_disasm_lr35902(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/m37710/m37710.cpp b/src/devices/cpu/m37710/m37710.cpp index ea4356f6a26..8da01b9b843 100644 --- a/src/devices/cpu/m37710/m37710.cpp +++ b/src/devices/cpu/m37710/m37710.cpp @@ -939,13 +939,13 @@ void m37710_cpu_device::m37710_set_irq_line(int line, int state) CPU_DISASSEMBLE( m37710 ) { - return m7700_disassemble(buffer, (pc&0xffff), pc>>16, oprom, 0, 0); + return m7700_disassemble(stream, (pc&0xffff), pc>>16, oprom, 0, 0); } -offs_t m37710_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t m37710_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { - return m7700_disassemble(buffer, (pc&0xffff), pc>>16, oprom, FLAG_M, FLAG_X); + return m7700_disassemble(stream, (pc&0xffff), pc>>16, oprom, FLAG_M, FLAG_X); } diff --git a/src/devices/cpu/m37710/m37710.h b/src/devices/cpu/m37710/m37710.h index 32ec57ee04a..d775b8564c3 100644 --- a/src/devices/cpu/m37710/m37710.h +++ b/src/devices/cpu/m37710/m37710.h @@ -122,7 +122,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 6; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: address_space_config m_program_config; diff --git a/src/devices/cpu/m37710/m7700ds.cpp b/src/devices/cpu/m37710/m7700ds.cpp index 2d1b664086a..ed81e320a3c 100644 --- a/src/devices/cpu/m37710/m7700ds.cpp +++ b/src/devices/cpu/m37710/m7700ds.cpp @@ -636,26 +636,7 @@ int m7700_disassemble(std::ostream &stream, unsigned int pc, unsigned int pb, co return length | flags | DASMFLAG_SUPPORTED; } -int m7700_disassemble(char *buffer, unsigned int pc, unsigned int pb, const uint8_t *oprom, int m_flag, int x_flag) -{ - std::ostringstream stream; - offs_t result = m7700_disassemble(stream, pc, pb, oprom, m_flag, x_flag); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} - -static offs_t internal_disasm_m37710_generic(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) -{ - return m7700_disassemble(stream, (pc&0xffff), pc>>16, oprom, 0, 0); -} - - CPU_DISASSEMBLE(m37710_generic) { - std::ostringstream stream; - offs_t result = internal_disasm_m37710_generic(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; + return m7700_disassemble(stream, (pc&0xffff), pc>>16, oprom, 0, 0); } diff --git a/src/devices/cpu/m37710/m7700ds.h b/src/devices/cpu/m37710/m7700ds.h index 12bec764f30..c7bd0897162 100644 --- a/src/devices/cpu/m37710/m7700ds.h +++ b/src/devices/cpu/m37710/m7700ds.h @@ -20,5 +20,6 @@ All rights reserved. int m7700_disassemble(std::ostream &stream, unsigned int pc, unsigned int pb, const uint8_t *oprom, int m_flag, int x_flag); int m7700_disassemble(char* buff, unsigned int pc, unsigned int pb, const uint8_t *oprom, int m_flag, int x_flag); +int m7700_disassemble(std::ostream &stream, unsigned int pc, unsigned int pb, const uint8_t *oprom, int m_flag, int x_flag); #endif /* __M7700DS_H__ */ diff --git a/src/devices/cpu/m6502/deco16.cpp b/src/devices/cpu/m6502/deco16.cpp index 482c7b1c0b7..d6ad1c7077a 100644 --- a/src/devices/cpu/m6502/deco16.cpp +++ b/src/devices/cpu/m6502/deco16.cpp @@ -22,9 +22,9 @@ deco16_device::deco16_device(const machine_config &mconfig, const char *tag, dev { } -offs_t deco16_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t deco16_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { - return disassemble_generic(buffer, pc, oprom, opram, options, disasm_entries); + return disassemble_generic(stream, pc, oprom, opram, options, disasm_entries); } diff --git a/src/devices/cpu/m6502/deco16.h b/src/devices/cpu/m6502/deco16.h index 3afc7af081f..f018ddec056 100644 --- a/src/devices/cpu/m6502/deco16.h +++ b/src/devices/cpu/m6502/deco16.h @@ -19,7 +19,7 @@ public: static const disasm_entry disasm_entries[0x100]; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual void do_exec_full() override; virtual void do_exec_partial() override; diff --git a/src/devices/cpu/m6502/m4510.cpp b/src/devices/cpu/m6502/m4510.cpp index bfb89dbcdc8..61a4f9d8c8f 100644 --- a/src/devices/cpu/m6502/m4510.cpp +++ b/src/devices/cpu/m6502/m4510.cpp @@ -26,9 +26,9 @@ m4510_device::m4510_device(const machine_config &mconfig, const char *tag, devic sprogram_config.m_page_shift = 13; } -offs_t m4510_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t m4510_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { - return disassemble_generic(buffer, pc, oprom, opram, options, disasm_entries); + return disassemble_generic(stream, pc, oprom, opram, options, disasm_entries); } void m4510_device::device_start() diff --git a/src/devices/cpu/m6502/m4510.h b/src/devices/cpu/m6502/m4510.h index 97629581531..62e55ea7a8c 100644 --- a/src/devices/cpu/m6502/m4510.h +++ b/src/devices/cpu/m6502/m4510.h @@ -19,7 +19,7 @@ public: static const disasm_entry disasm_entries[0x100]; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual void do_exec_full() override; virtual void do_exec_partial() override; diff --git a/src/devices/cpu/m6502/m6502.cpp b/src/devices/cpu/m6502/m6502.cpp index 3562e6c8788..af1110957cb 100644 --- a/src/devices/cpu/m6502/m6502.cpp +++ b/src/devices/cpu/m6502/m6502.cpp @@ -628,15 +628,6 @@ offs_t m6502_device::disassemble_generic(std::ostream &stream, offs_t pc, const return flags; } -offs_t m6502_device::disassemble_generic(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options, const disasm_entry *table) -{ - std::ostringstream stream; - offs_t result = disassemble_generic(stream, pc, oprom, opram, options, table); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} - void m6502_device::prefetch() { sync = true; @@ -673,9 +664,9 @@ void m6502_device::set_nz(uint8_t v) P |= F_Z; } -offs_t m6502_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t m6502_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { - return disassemble_generic(buffer, pc, oprom, opram, options, disasm_entries); + return disassemble_generic(stream, pc, oprom, opram, options, disasm_entries); } diff --git a/src/devices/cpu/m6502/m6502.h b/src/devices/cpu/m6502/m6502.h index e84fe37b8e0..bb112697431 100644 --- a/src/devices/cpu/m6502/m6502.h +++ b/src/devices/cpu/m6502/m6502.h @@ -146,7 +146,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override; virtual uint32_t disasm_max_opcode_bytes() const override; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; address_space_config program_config, sprogram_config; @@ -172,7 +172,6 @@ protected: static const disasm_entry disasm_entries[0x100]; offs_t disassemble_generic(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options, const disasm_entry *table); - offs_t disassemble_generic(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options, const disasm_entry *table); uint8_t read(uint16_t adr) { return mintf->read(adr); } uint8_t read_9(uint16_t adr) { return mintf->read_9(adr); } void write(uint16_t adr, uint8_t val) { mintf->write(adr, val); } diff --git a/src/devices/cpu/m6502/m6509.cpp b/src/devices/cpu/m6502/m6509.cpp index 459021a9bc6..e0fcedd75cf 100644 --- a/src/devices/cpu/m6502/m6509.cpp +++ b/src/devices/cpu/m6502/m6509.cpp @@ -54,9 +54,9 @@ void m6509_device::state_export(const device_state_entry &entry) } } -offs_t m6509_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t m6509_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { - return disassemble_generic(buffer, pc, oprom, opram, options, disasm_entries); + return disassemble_generic(stream, pc, oprom, opram, options, disasm_entries); } diff --git a/src/devices/cpu/m6502/m6509.h b/src/devices/cpu/m6502/m6509.h index ec9e8e6690a..349ea8b20f7 100644 --- a/src/devices/cpu/m6502/m6509.h +++ b/src/devices/cpu/m6502/m6509.h @@ -19,7 +19,7 @@ public: static const disasm_entry disasm_entries[0x100]; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual void do_exec_full() override; virtual void do_exec_partial() override; diff --git a/src/devices/cpu/m6502/m6510.cpp b/src/devices/cpu/m6502/m6510.cpp index 26d881438f2..c2f59403780 100644 --- a/src/devices/cpu/m6502/m6510.cpp +++ b/src/devices/cpu/m6502/m6510.cpp @@ -37,9 +37,9 @@ void m6510_device::set_pulls(uint8_t _pullup, uint8_t _floating) floating = _floating; } -offs_t m6510_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t m6510_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { - return disassemble_generic(buffer, pc, oprom, opram, options, disasm_entries); + return disassemble_generic(stream, pc, oprom, opram, options, disasm_entries); } void m6510_device::device_start() diff --git a/src/devices/cpu/m6502/m6510.h b/src/devices/cpu/m6502/m6510.h index 101d6bb2c71..e51bf21e718 100644 --- a/src/devices/cpu/m6502/m6510.h +++ b/src/devices/cpu/m6502/m6510.h @@ -34,7 +34,7 @@ public: static const disasm_entry disasm_entries[0x100]; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual void do_exec_full() override; virtual void do_exec_partial() override; diff --git a/src/devices/cpu/m6502/m65c02.cpp b/src/devices/cpu/m6502/m65c02.cpp index 1fe8882c63c..1d9d158bf29 100644 --- a/src/devices/cpu/m6502/m65c02.cpp +++ b/src/devices/cpu/m6502/m65c02.cpp @@ -24,9 +24,9 @@ m65c02_device::m65c02_device(const machine_config &mconfig, device_type type, co { } -offs_t m65c02_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t m65c02_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { - return disassemble_generic(buffer, pc, oprom, opram, options, disasm_entries); + return disassemble_generic(stream, pc, oprom, opram, options, disasm_entries); } #include "cpu/m6502/m65c02.hxx" diff --git a/src/devices/cpu/m6502/m65c02.h b/src/devices/cpu/m6502/m65c02.h index ff1dbc0c780..5d6d1503c2f 100644 --- a/src/devices/cpu/m6502/m65c02.h +++ b/src/devices/cpu/m6502/m65c02.h @@ -21,7 +21,7 @@ public: static const disasm_entry disasm_entries[0x100]; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual void do_exec_full() override; virtual void do_exec_partial() override; diff --git a/src/devices/cpu/m6502/m65ce02.cpp b/src/devices/cpu/m6502/m65ce02.cpp index ce19861f70c..f45d3edcf47 100644 --- a/src/devices/cpu/m6502/m65ce02.cpp +++ b/src/devices/cpu/m6502/m65ce02.cpp @@ -23,9 +23,9 @@ m65ce02_device::m65ce02_device(const machine_config &mconfig, device_type type, { } -offs_t m65ce02_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t m65ce02_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { - return disassemble_generic(buffer, pc, oprom, opram, options, disasm_entries); + return disassemble_generic(stream, pc, oprom, opram, options, disasm_entries); } void m65ce02_device::init() diff --git a/src/devices/cpu/m6502/m65ce02.h b/src/devices/cpu/m6502/m65ce02.h index 2046975d103..019ced7d0b2 100644 --- a/src/devices/cpu/m6502/m65ce02.h +++ b/src/devices/cpu/m6502/m65ce02.h @@ -20,7 +20,7 @@ public: static const disasm_entry disasm_entries[0x100]; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual void do_exec_full() override; virtual void do_exec_partial() override; diff --git a/src/devices/cpu/m6502/m740.cpp b/src/devices/cpu/m6502/m740.cpp index 005446487db..1f4c1cd45a4 100644 --- a/src/devices/cpu/m6502/m740.cpp +++ b/src/devices/cpu/m6502/m740.cpp @@ -23,9 +23,9 @@ m740_device::m740_device(const machine_config &mconfig, device_type type, const { } -offs_t m740_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t m740_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { - return disassemble_generic(buffer, pc, oprom, opram, options, disasm_entries); + return disassemble_generic(stream, pc, oprom, opram, options, disasm_entries); } void m740_device::device_start() diff --git a/src/devices/cpu/m6502/m740.h b/src/devices/cpu/m6502/m740.h index 214cede5edc..2e94a82980a 100644 --- a/src/devices/cpu/m6502/m740.h +++ b/src/devices/cpu/m6502/m740.h @@ -46,7 +46,7 @@ public: virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual void do_exec_full() override; virtual void do_exec_partial() override; virtual void execute_set_input(int inputnum, int state) override; diff --git a/src/devices/cpu/m6502/n2a03.cpp b/src/devices/cpu/m6502/n2a03.cpp index d818813540d..338ee91c3e5 100644 --- a/src/devices/cpu/m6502/n2a03.cpp +++ b/src/devices/cpu/m6502/n2a03.cpp @@ -56,9 +56,9 @@ n2a03_device::n2a03_device(const machine_config &mconfig, const char *tag, devic { } -offs_t n2a03_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t n2a03_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { - return disassemble_generic(buffer, pc, oprom, opram, options, disasm_entries); + return disassemble_generic(stream, pc, oprom, opram, options, disasm_entries); } void n2a03_device::device_start() diff --git a/src/devices/cpu/m6502/n2a03.h b/src/devices/cpu/m6502/n2a03.h index 9d01b5b6f83..9a236839c59 100644 --- a/src/devices/cpu/m6502/n2a03.h +++ b/src/devices/cpu/m6502/n2a03.h @@ -22,7 +22,7 @@ public: static const disasm_entry disasm_entries[0x100]; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual void do_exec_full() override; virtual void do_exec_partial() override; virtual void device_clock_changed() override; diff --git a/src/devices/cpu/m6502/r65c02.cpp b/src/devices/cpu/m6502/r65c02.cpp index fe0c4826a83..15594594360 100644 --- a/src/devices/cpu/m6502/r65c02.cpp +++ b/src/devices/cpu/m6502/r65c02.cpp @@ -23,9 +23,9 @@ r65c02_device::r65c02_device(const machine_config &mconfig, device_type type, co { } -offs_t r65c02_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t r65c02_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { - return disassemble_generic(buffer, pc, oprom, opram, options, disasm_entries); + return disassemble_generic(stream, pc, oprom, opram, options, disasm_entries); } #include "cpu/m6502/r65c02.hxx" diff --git a/src/devices/cpu/m6502/r65c02.h b/src/devices/cpu/m6502/r65c02.h index d25b1facf40..4a406654422 100644 --- a/src/devices/cpu/m6502/r65c02.h +++ b/src/devices/cpu/m6502/r65c02.h @@ -20,7 +20,7 @@ public: static const disasm_entry disasm_entries[0x100]; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual void do_exec_full() override; virtual void do_exec_partial() override; }; diff --git a/src/devices/cpu/m6800/6800dasm.cpp b/src/devices/cpu/m6800/6800dasm.cpp index 1b33f96f599..781af28f468 100644 --- a/src/devices/cpu/m6800/6800dasm.cpp +++ b/src/devices/cpu/m6800/6800dasm.cpp @@ -249,51 +249,42 @@ static unsigned Dasm680x (int subtype, std::ostream &stream, unsigned pc, const } } -static unsigned Dasm680x(int subtype, char *buffer, unsigned pc, const uint8_t *oprom, const uint8_t *opram) -{ - std::ostringstream stream; - unsigned result = Dasm680x(subtype, stream, pc, oprom, opram); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} - CPU_DISASSEMBLE( m6800 ) { - return Dasm680x(6800,buffer,pc,oprom,opram); + return Dasm680x(6800,stream,pc,oprom,opram); } CPU_DISASSEMBLE( m6801 ) { - return Dasm680x(6801,buffer,pc,oprom,opram); + return Dasm680x(6801,stream,pc,oprom,opram); } CPU_DISASSEMBLE( m6802 ) { - return Dasm680x(6802,buffer,pc,oprom,opram); + return Dasm680x(6802,stream,pc,oprom,opram); } CPU_DISASSEMBLE( m6803 ) { - return Dasm680x(6803,buffer,pc,oprom,opram); + return Dasm680x(6803,stream,pc,oprom,opram); } CPU_DISASSEMBLE( m6808 ) { - return Dasm680x(6808,buffer,pc,oprom,opram); + return Dasm680x(6808,stream,pc,oprom,opram); } CPU_DISASSEMBLE( hd6301 ) { - return Dasm680x(6301,buffer,pc,oprom,opram); + return Dasm680x(6301,stream,pc,oprom,opram); } CPU_DISASSEMBLE( hd63701 ) { - return Dasm680x(63701,buffer,pc,oprom,opram); + return Dasm680x(63701,stream,pc,oprom,opram); } CPU_DISASSEMBLE( nsc8105 ) { - return Dasm680x(8105,buffer,pc,oprom,opram); + return Dasm680x(8105,stream,pc,oprom,opram); } diff --git a/src/devices/cpu/m6800/m6800.cpp b/src/devices/cpu/m6800/m6800.cpp index cde4bb70a92..ca4182afff0 100644 --- a/src/devices/cpu/m6800/m6800.cpp +++ b/src/devices/cpu/m6800/m6800.cpp @@ -1752,57 +1752,57 @@ void m6801_cpu_device::m6801_clock_serial() } } -offs_t m6800_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t m6800_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( m6800 ); - return CPU_DISASSEMBLE_NAME(m6800)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(m6800)(this, stream, pc, oprom, opram, options); } -offs_t m6801_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t m6801_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( m6801 ); - return CPU_DISASSEMBLE_NAME(m6801)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(m6801)(this, stream, pc, oprom, opram, options); } -offs_t m6802_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t m6802_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( m6802 ); - return CPU_DISASSEMBLE_NAME(m6802)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(m6802)(this, stream, pc, oprom, opram, options); } -offs_t m6803_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t m6803_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( m6803 ); - return CPU_DISASSEMBLE_NAME(m6803)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(m6803)(this, stream, pc, oprom, opram, options); } -offs_t m6808_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t m6808_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( m6808 ); - return CPU_DISASSEMBLE_NAME(m6808)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(m6808)(this, stream, pc, oprom, opram, options); } -offs_t hd6301_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t hd6301_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( hd6301 ); - return CPU_DISASSEMBLE_NAME(hd6301)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(hd6301)(this, stream, pc, oprom, opram, options); } -offs_t hd63701_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t hd63701_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( hd63701 ); - return CPU_DISASSEMBLE_NAME(hd63701)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(hd63701)(this, stream, pc, oprom, opram, options); } -offs_t nsc8105_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t nsc8105_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( nsc8105 ); - return CPU_DISASSEMBLE_NAME(nsc8105)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(nsc8105)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/m6800/m6800.h b/src/devices/cpu/m6800/m6800.h index cd36cc7ff3e..c81f98c6fb3 100644 --- a/src/devices/cpu/m6800/m6800.h +++ b/src/devices/cpu/m6800/m6800.h @@ -109,7 +109,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 4; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; address_space_config m_program_config; address_space_config m_decrypted_opcodes_config; @@ -459,7 +459,7 @@ public: protected: virtual uint64_t execute_clocks_to_cycles(uint64_t clocks) const override { return (clocks + 4 - 1) / 4; } virtual uint64_t execute_cycles_to_clocks(uint64_t cycles) const override { return (cycles * 4); } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; }; @@ -472,7 +472,7 @@ public: protected: virtual uint64_t execute_clocks_to_cycles(uint64_t clocks) const override { return (clocks + 4 - 1) / 4; } virtual uint64_t execute_cycles_to_clocks(uint64_t cycles) const override { return (cycles * 4); } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; }; @@ -482,7 +482,7 @@ public: m6803_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); protected: - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; }; @@ -492,7 +492,7 @@ public: m6808_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); protected: - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; }; @@ -503,7 +503,7 @@ public: hd6301_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); protected: - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; }; @@ -513,7 +513,7 @@ public: hd63701_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); protected: - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; }; @@ -523,7 +523,7 @@ public: nsc8105_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); protected: - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; }; diff --git a/src/devices/cpu/m68000/m68000.h b/src/devices/cpu/m68000/m68000.h index c4ce844867f..c7b803fefdf 100644 --- a/src/devices/cpu/m68000/m68000.h +++ b/src/devices/cpu/m68000/m68000.h @@ -110,7 +110,6 @@ enum }; unsigned int m68k_disassemble_raw(std::ostream &stream, unsigned int pc, const unsigned char* opdata, const unsigned char* argdata, unsigned int cpu_type); -unsigned int m68k_disassemble_raw(char* str_buff, unsigned int pc, const unsigned char* opdata, const unsigned char* argdata, unsigned int cpu_type); class m68000_base_device; @@ -137,7 +136,7 @@ public: virtual uint32_t disasm_min_opcode_bytes() const override { return 2; }; virtual uint32_t disasm_max_opcode_bytes() const override { return 10; }; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; @@ -413,7 +412,7 @@ public: virtual uint32_t disasm_min_opcode_bytes() const override { return 2; }; virtual uint32_t disasm_max_opcode_bytes() const override { return 10; }; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual uint32_t execute_min_cycles() const override { return 4; }; virtual uint32_t execute_max_cycles() const override { return 158; }; @@ -432,7 +431,7 @@ public: virtual uint32_t disasm_min_opcode_bytes() const override { return 2; }; virtual uint32_t disasm_max_opcode_bytes() const override { return 10; }; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual uint32_t execute_min_cycles() const override { return 4; }; virtual uint32_t execute_max_cycles() const override { return 158; }; @@ -454,7 +453,7 @@ public: virtual uint32_t disasm_min_opcode_bytes() const override { return 2; }; virtual uint32_t disasm_max_opcode_bytes() const override { return 10; }; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual uint32_t execute_min_cycles() const override { return 4; }; virtual uint32_t execute_max_cycles() const override { return 158; }; @@ -473,7 +472,7 @@ public: virtual uint32_t disasm_min_opcode_bytes() const override { return 2; }; virtual uint32_t disasm_max_opcode_bytes() const override { return 10; }; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual uint32_t execute_min_cycles() const override { return 4; }; virtual uint32_t execute_max_cycles() const override { return 158; }; @@ -492,7 +491,7 @@ public: virtual uint32_t disasm_min_opcode_bytes() const override { return 2; }; virtual uint32_t disasm_max_opcode_bytes() const override { return 10; }; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual uint32_t execute_min_cycles() const override { return 4; }; virtual uint32_t execute_max_cycles() const override { return 158; }; @@ -511,7 +510,7 @@ public: virtual uint32_t disasm_min_opcode_bytes() const override { return 2; }; virtual uint32_t disasm_max_opcode_bytes() const override { return 20; }; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual uint32_t execute_min_cycles() const override { return 2; }; virtual uint32_t execute_max_cycles() const override { return 158; }; @@ -530,7 +529,7 @@ public: virtual uint32_t disasm_min_opcode_bytes() const override { return 2; }; virtual uint32_t disasm_max_opcode_bytes() const override { return 20; }; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual uint32_t execute_min_cycles() const override { return 2; }; virtual uint32_t execute_max_cycles() const override { return 158; }; @@ -549,7 +548,7 @@ public: virtual uint32_t disasm_min_opcode_bytes() const override { return 2; }; virtual uint32_t disasm_max_opcode_bytes() const override { return 20; }; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual uint32_t execute_min_cycles() const override { return 2; }; virtual uint32_t execute_max_cycles() const override { return 158; }; @@ -568,7 +567,7 @@ public: virtual uint32_t disasm_min_opcode_bytes() const override { return 2; }; virtual uint32_t disasm_max_opcode_bytes() const override { return 20; }; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual uint32_t execute_min_cycles() const override { return 2; }; virtual uint32_t execute_max_cycles() const override { return 158; }; @@ -587,7 +586,7 @@ public: virtual uint32_t disasm_min_opcode_bytes() const override { return 2; }; virtual uint32_t disasm_max_opcode_bytes() const override { return 20; }; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual uint32_t execute_min_cycles() const override { return 2; }; virtual uint32_t execute_max_cycles() const override { return 158; }; @@ -608,7 +607,7 @@ public: virtual uint32_t disasm_min_opcode_bytes() const override { return 2; }; virtual uint32_t disasm_max_opcode_bytes() const override { return 20; }; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual uint32_t execute_min_cycles() const override { return 2; }; virtual uint32_t execute_max_cycles() const override { return 158; }; @@ -627,7 +626,7 @@ public: virtual uint32_t disasm_min_opcode_bytes() const override { return 2; }; virtual uint32_t disasm_max_opcode_bytes() const override { return 20; }; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual uint32_t execute_min_cycles() const override { return 2; }; virtual uint32_t execute_max_cycles() const override { return 158; }; @@ -646,7 +645,7 @@ public: virtual uint32_t disasm_min_opcode_bytes() const override { return 2; }; virtual uint32_t disasm_max_opcode_bytes() const override { return 20; }; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual uint32_t execute_min_cycles() const override { return 2; }; virtual uint32_t execute_max_cycles() const override { return 158; }; @@ -665,7 +664,7 @@ public: virtual uint32_t disasm_min_opcode_bytes() const override { return 2; }; virtual uint32_t disasm_max_opcode_bytes() const override { return 20; }; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual uint32_t execute_min_cycles() const override { return 2; }; virtual uint32_t execute_max_cycles() const override { return 158; }; @@ -684,7 +683,7 @@ public: virtual uint32_t disasm_min_opcode_bytes() const override { return 2; }; virtual uint32_t disasm_max_opcode_bytes() const override { return 20; }; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual uint32_t execute_min_cycles() const override { return 2; }; virtual uint32_t execute_max_cycles() const override { return 158; }; @@ -703,7 +702,7 @@ public: virtual uint32_t disasm_min_opcode_bytes() const override { return 2; }; virtual uint32_t disasm_max_opcode_bytes() const override { return 10; }; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual uint32_t execute_min_cycles() const override { return 4; }; virtual uint32_t execute_max_cycles() const override { return 158; }; @@ -728,7 +727,7 @@ public: virtual uint32_t disasm_min_opcode_bytes() const override { return 2; }; virtual uint32_t disasm_max_opcode_bytes() const override { return 20; }; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual uint32_t execute_min_cycles() const override { return 2; }; virtual uint32_t execute_max_cycles() const override { return 158; }; @@ -749,7 +748,7 @@ public: virtual uint32_t disasm_min_opcode_bytes() const override { return 2; }; virtual uint32_t disasm_max_opcode_bytes() const override { return 20; }; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual uint32_t execute_min_cycles() const override { return 2; }; virtual uint32_t execute_max_cycles() const override { return 158; }; diff --git a/src/devices/cpu/m68000/m68kcpu.cpp b/src/devices/cpu/m68000/m68kcpu.cpp index dd01540ae3e..244ad3149c8 100644 --- a/src/devices/cpu/m68000/m68kcpu.cpp +++ b/src/devices/cpu/m68000/m68kcpu.cpp @@ -2135,78 +2135,78 @@ void m68000_base_device::init_cpu_coldfire(void) CPU_DISASSEMBLE( dasm_m68000 ) { - return m68k_disassemble_raw(buffer, pc, oprom, opram, M68K_CPU_TYPE_68000); + return m68k_disassemble_raw(stream, pc, oprom, opram, M68K_CPU_TYPE_68000); } CPU_DISASSEMBLE( dasm_m68008 ) { - return m68k_disassemble_raw(buffer, pc, oprom, opram, M68K_CPU_TYPE_68008); + return m68k_disassemble_raw(stream, pc, oprom, opram, M68K_CPU_TYPE_68008); } CPU_DISASSEMBLE( dasm_m68010 ) { - return m68k_disassemble_raw(buffer, pc, oprom, opram, M68K_CPU_TYPE_68010); + return m68k_disassemble_raw(stream, pc, oprom, opram, M68K_CPU_TYPE_68010); } CPU_DISASSEMBLE( dasm_m68020 ) { - return m68k_disassemble_raw(buffer, pc, oprom, opram, M68K_CPU_TYPE_68020); + return m68k_disassemble_raw(stream, pc, oprom, opram, M68K_CPU_TYPE_68020); } CPU_DISASSEMBLE( dasm_m68030 ) { - return m68k_disassemble_raw(buffer, pc, oprom, opram, M68K_CPU_TYPE_68030); + return m68k_disassemble_raw(stream, pc, oprom, opram, M68K_CPU_TYPE_68030); } CPU_DISASSEMBLE( dasm_m68ec030 ) { - return m68k_disassemble_raw(buffer, pc, oprom, opram, M68K_CPU_TYPE_68EC030); + return m68k_disassemble_raw(stream, pc, oprom, opram, M68K_CPU_TYPE_68EC030); } CPU_DISASSEMBLE( dasm_m68040 ) { - return m68k_disassemble_raw(buffer, pc, oprom, opram, M68K_CPU_TYPE_68040); + return m68k_disassemble_raw(stream, pc, oprom, opram, M68K_CPU_TYPE_68040); } CPU_DISASSEMBLE( dasm_m68ec040 ) { - return m68k_disassemble_raw(buffer, pc, oprom, opram, M68K_CPU_TYPE_68EC040); + return m68k_disassemble_raw(stream, pc, oprom, opram, M68K_CPU_TYPE_68EC040); } CPU_DISASSEMBLE( dasm_m68lc040 ) { - return m68k_disassemble_raw(buffer, pc, oprom, opram, M68K_CPU_TYPE_68LC040); + return m68k_disassemble_raw(stream, pc, oprom, opram, M68K_CPU_TYPE_68LC040); } CPU_DISASSEMBLE( dasm_fscpu32 ) { - return m68k_disassemble_raw(buffer, pc, oprom, opram, M68K_CPU_TYPE_FSCPU32); + return m68k_disassemble_raw(stream, pc, oprom, opram, M68K_CPU_TYPE_FSCPU32); } CPU_DISASSEMBLE( dasm_coldfire ) { - return m68k_disassemble_raw(buffer, pc, oprom, opram, M68K_CPU_TYPE_COLDFIRE); -} - -offs_t m68000_base_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68000)(this, buffer, pc, oprom, opram, options); } -offs_t m68000_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68000)(this, buffer, pc, oprom, opram, options); } -offs_t m68301_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68000)(this, buffer, pc, oprom, opram, options); } -offs_t m68008_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68008)(this, buffer, pc, oprom, opram, options); } -offs_t m68008plcc_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68008)(this, buffer, pc, oprom, opram, options); } -offs_t m68010_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68010)(this, buffer, pc, oprom, opram, options); } -offs_t m68ec020_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68020)(this, buffer, pc, oprom, opram, options); } -offs_t m68020_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68020)(this, buffer, pc, oprom, opram, options); } -offs_t m68020fpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68020)(this, buffer, pc, oprom, opram, options); } -offs_t m68020pmmu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68020)(this, buffer, pc, oprom, opram, options); } -offs_t m68020hmmu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68020)(this, buffer, pc, oprom, opram, options); } -offs_t m68ec030_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68ec030)(this, buffer, pc, oprom, opram, options); } -offs_t m68030_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68030)(this, buffer, pc, oprom, opram, options); } -offs_t m68ec040_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68ec040)(this, buffer, pc, oprom, opram, options); } -offs_t m68lc040_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68lc040)(this, buffer, pc, oprom, opram, options); } -offs_t m68040_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68040)(this, buffer, pc, oprom, opram, options); } -offs_t scc68070_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68000)(this, buffer, pc, oprom, opram, options); } -offs_t fscpu32_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_fscpu32)(this, buffer, pc, oprom, opram, options); } -offs_t mcf5206e_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_coldfire)(this, buffer, pc, oprom, opram, options); } + return m68k_disassemble_raw(stream, pc, oprom, opram, M68K_CPU_TYPE_COLDFIRE); +} + +offs_t m68000_base_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68000)(this, stream, pc, oprom, opram, options); } +offs_t m68000_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68000)(this, stream, pc, oprom, opram, options); } +offs_t m68301_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68000)(this, stream, pc, oprom, opram, options); } +offs_t m68008_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68008)(this, stream, pc, oprom, opram, options); } +offs_t m68008plcc_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68008)(this, stream, pc, oprom, opram, options); } +offs_t m68010_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68010)(this, stream, pc, oprom, opram, options); } +offs_t m68ec020_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68020)(this, stream, pc, oprom, opram, options); } +offs_t m68020_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68020)(this, stream, pc, oprom, opram, options); } +offs_t m68020fpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68020)(this, stream, pc, oprom, opram, options); } +offs_t m68020pmmu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68020)(this, stream, pc, oprom, opram, options); } +offs_t m68020hmmu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68020)(this, stream, pc, oprom, opram, options); } +offs_t m68ec030_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68ec030)(this, stream, pc, oprom, opram, options); } +offs_t m68030_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68030)(this, stream, pc, oprom, opram, options); } +offs_t m68ec040_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68ec040)(this, stream, pc, oprom, opram, options); } +offs_t m68lc040_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68lc040)(this, stream, pc, oprom, opram, options); } +offs_t m68040_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68040)(this, stream, pc, oprom, opram, options); } +offs_t scc68070_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68000)(this, stream, pc, oprom, opram, options); } +offs_t fscpu32_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_fscpu32)(this, stream, pc, oprom, opram, options); } +offs_t mcf5206e_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_coldfire)(this, stream, pc, oprom, opram, options); } /* Service an interrupt request and start exception processing */ diff --git a/src/devices/cpu/m68000/m68kdasm.cpp b/src/devices/cpu/m68000/m68kdasm.cpp index c92b73126c5..5bd074f731e 100644 --- a/src/devices/cpu/m68000/m68kdasm.cpp +++ b/src/devices/cpu/m68000/m68kdasm.cpp @@ -3900,15 +3900,6 @@ unsigned int m68k_disassemble_raw(std::ostream &stream, unsigned int pc, const u return result; } -unsigned int m68k_disassemble_raw(char* str_buff, unsigned int pc, const unsigned char* opdata, const unsigned char* argdata, unsigned int cpu_type) -{ - std::ostringstream stream; - unsigned int result = m68k_disassemble_raw(stream, pc, opdata, argdata, cpu_type); - std::string stream_str = stream.str(); - strcpy(str_buff, stream_str.c_str()); - return result; -} - #ifdef UNUSED_FUNCTION /* Check if the instruction is a valid one */ unsigned int m68k_is_valid_instruction(unsigned int instruction, unsigned int cpu_type) @@ -4123,42 +4114,42 @@ unsigned int m68k_is_valid_instruction(unsigned int instruction, unsigned int cp CPU_DISASSEMBLE( m68000 ) { - return m68k_disassemble_raw(buffer, pc, oprom, opram, M68K_CPU_TYPE_68000); + return m68k_disassemble_raw(stream, pc, oprom, opram, M68K_CPU_TYPE_68000); } CPU_DISASSEMBLE( m68008 ) { - return m68k_disassemble_raw(buffer, pc, oprom, opram, M68K_CPU_TYPE_68008); + return m68k_disassemble_raw(stream, pc, oprom, opram, M68K_CPU_TYPE_68008); } CPU_DISASSEMBLE( m68010 ) { - return m68k_disassemble_raw(buffer, pc, oprom, opram, M68K_CPU_TYPE_68010); + return m68k_disassemble_raw(stream, pc, oprom, opram, M68K_CPU_TYPE_68010); } CPU_DISASSEMBLE( m68020 ) { - return m68k_disassemble_raw(buffer, pc, oprom, opram, M68K_CPU_TYPE_68020); + return m68k_disassemble_raw(stream, pc, oprom, opram, M68K_CPU_TYPE_68020); } CPU_DISASSEMBLE( m68030 ) { - return m68k_disassemble_raw(buffer, pc, oprom, opram, M68K_CPU_TYPE_68030); + return m68k_disassemble_raw(stream, pc, oprom, opram, M68K_CPU_TYPE_68030); } CPU_DISASSEMBLE( m68040 ) { - return m68k_disassemble_raw(buffer, pc, oprom, opram, M68K_CPU_TYPE_68040); + return m68k_disassemble_raw(stream, pc, oprom, opram, M68K_CPU_TYPE_68040); } CPU_DISASSEMBLE( m68340 ) { - return m68k_disassemble_raw(buffer, pc, oprom, opram, M68K_CPU_TYPE_FSCPU32); + return m68k_disassemble_raw(stream, pc, oprom, opram, M68K_CPU_TYPE_FSCPU32); } CPU_DISASSEMBLE( coldfire ) { - return m68k_disassemble_raw(buffer, pc, oprom, opram, M68K_CPU_TYPE_COLDFIRE); + return m68k_disassemble_raw(stream, pc, oprom, opram, M68K_CPU_TYPE_COLDFIRE); } /* ======================================================================== */ diff --git a/src/devices/cpu/m6805/6805dasm.cpp b/src/devices/cpu/m6805/6805dasm.cpp index 0c69248c084..58a02366f31 100644 --- a/src/devices/cpu/m6805/6805dasm.cpp +++ b/src/devices/cpu/m6805/6805dasm.cpp @@ -160,7 +160,7 @@ static const char *const opcode_strings[0x0100] = }; #endif -static offs_t internal_disasm_m6805(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(m6805) { int code, bit; uint16_t ea; @@ -224,13 +224,3 @@ static offs_t internal_disasm_m6805(cpu_device *device, std::ostream &stream, of } return result; } - - -CPU_DISASSEMBLE(m6805) -{ - std::ostringstream stream; - offs_t result = internal_disasm_m6805(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/m6805/m6805.cpp b/src/devices/cpu/m6805/m6805.cpp index 8e7b6b963f8..b8b9a8c7d48 100644 --- a/src/devices/cpu/m6805/m6805.cpp +++ b/src/devices/cpu/m6805/m6805.cpp @@ -540,10 +540,10 @@ uint32_t m6805_base_device::disasm_max_opcode_bytes() const // helper function //------------------------------------------------- -offs_t m6805_base_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t m6805_base_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( m6805 ); - return CPU_DISASSEMBLE_NAME(m6805)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(m6805)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/m6805/m6805.h b/src/devices/cpu/m6805/m6805.h index 3b146d98ae1..29493af20c9 100644 --- a/src/devices/cpu/m6805/m6805.h +++ b/src/devices/cpu/m6805/m6805.h @@ -48,7 +48,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override; virtual uint32_t disasm_max_opcode_bytes() const override; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/m6809/6x09dasm.cpp b/src/devices/cpu/m6809/6x09dasm.cpp index 2efd49e352c..1018db9385c 100644 --- a/src/devices/cpu/m6809/6x09dasm.cpp +++ b/src/devices/cpu/m6809/6x09dasm.cpp @@ -108,7 +108,6 @@ namespace } offs_t disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram); - offs_t disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram); protected: virtual void indirect(std::ostream &stream, uint8_t pb, const uint8_t *opram, int &p) = 0; @@ -180,20 +179,6 @@ const opcodeinfo *m6x09_disassembler_base::fetch_opcode(const uint8_t *oprom, in // disassemble - core of the disassembler //------------------------------------------------- -offs_t m6x09_disassembler_base::disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram) -{ - std::ostringstream stream; - offs_t result = disassemble(stream, pc, oprom, opram); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} - - -//------------------------------------------------- -// disassemble - core of the disassembler -//------------------------------------------------- - offs_t m6x09_disassembler_base::disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram) { uint8_t pb; @@ -1098,7 +1083,7 @@ CPU_DISASSEMBLE(m6809) "A", "B", "CC", "DP", "inv", "inv", "inv", "inv" }; m6x09_disassembler disasm(M6x09_GENERAL, m6809_teregs); - return disasm.disassemble(buffer, pc, oprom, opram); + return disasm.disassemble(stream, pc, oprom, opram); } @@ -1114,7 +1099,7 @@ CPU_DISASSEMBLE(hd6309) "A", "B", "CC", "DP", "0", "0", "E", "F" }; m6x09_disassembler disasm(HD6309_EXCLUSIVE, hd6309_teregs); - return disasm.disassemble(buffer, pc, oprom, opram); + return disasm.disassemble(stream, pc, oprom, opram); } @@ -1562,5 +1547,5 @@ void konami_disassembler::register_register(std::ostream &stream, uint8_t pb) CPU_DISASSEMBLE(konami) { konami_disassembler disasm; - return disasm.disassemble(buffer, pc, oprom, opram); + return disasm.disassemble(stream, pc, oprom, opram); } diff --git a/src/devices/cpu/m6809/hd6309.cpp b/src/devices/cpu/m6809/hd6309.cpp index ef9ff98f4f2..d8227c6162f 100644 --- a/src/devices/cpu/m6809/hd6309.cpp +++ b/src/devices/cpu/m6809/hd6309.cpp @@ -313,10 +313,10 @@ uint32_t hd6309_device::disasm_max_opcode_bytes() const // helper function //------------------------------------------------- -offs_t hd6309_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t hd6309_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( hd6309 ); - return CPU_DISASSEMBLE_NAME(hd6309)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(hd6309)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/m6809/hd6309.h b/src/devices/cpu/m6809/hd6309.h index 852f03d2d0d..f4eae899bfa 100644 --- a/src/devices/cpu/m6809/hd6309.h +++ b/src/devices/cpu/m6809/hd6309.h @@ -44,7 +44,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override; virtual uint32_t disasm_max_opcode_bytes() const override; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual bool is_6809() override { return false; }; diff --git a/src/devices/cpu/m6809/konami.cpp b/src/devices/cpu/m6809/konami.cpp index 8762d358635..ba6acfe05a5 100644 --- a/src/devices/cpu/m6809/konami.cpp +++ b/src/devices/cpu/m6809/konami.cpp @@ -109,10 +109,10 @@ void konami_cpu_device::device_start() // helper function //------------------------------------------------- -offs_t konami_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t konami_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( konami ); - return CPU_DISASSEMBLE_NAME(konami)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(konami)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/m6809/konami.h b/src/devices/cpu/m6809/konami.h index ca42bbfb666..2850eff7372 100644 --- a/src/devices/cpu/m6809/konami.h +++ b/src/devices/cpu/m6809/konami.h @@ -46,7 +46,7 @@ protected: virtual void execute_run() override; // device_disasm_interface overrides - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: typedef m6809_base_device super; diff --git a/src/devices/cpu/m6809/m6809.cpp b/src/devices/cpu/m6809/m6809.cpp index db0cbee9a3c..27b15dc97a5 100644 --- a/src/devices/cpu/m6809/m6809.cpp +++ b/src/devices/cpu/m6809/m6809.cpp @@ -373,10 +373,10 @@ uint32_t m6809_base_device::disasm_max_opcode_bytes() const // helper function //------------------------------------------------- -offs_t m6809_base_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t m6809_base_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( m6809 ); - return CPU_DISASSEMBLE_NAME(m6809)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(m6809)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/m6809/m6809.h b/src/devices/cpu/m6809/m6809.h index b9b6c365f35..73f8477d51e 100644 --- a/src/devices/cpu/m6809/m6809.h +++ b/src/devices/cpu/m6809/m6809.h @@ -77,7 +77,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override; virtual uint32_t disasm_max_opcode_bytes() const override; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; // device_state_interface overrides virtual void state_import(const device_state_entry &entry) override; diff --git a/src/devices/cpu/mb86233/mb86233.cpp b/src/devices/cpu/mb86233/mb86233.cpp index f8be4ec3af9..d37ae61e740 100644 --- a/src/devices/cpu/mb86233/mb86233.cpp +++ b/src/devices/cpu/mb86233/mb86233.cpp @@ -37,10 +37,10 @@ mb86233_cpu_device::mb86233_cpu_device(const machine_config &mconfig, const char } -offs_t mb86233_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t mb86233_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( mb86233 ); - return CPU_DISASSEMBLE_NAME(mb86233)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(mb86233)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/mb86233/mb86233.h b/src/devices/cpu/mb86233/mb86233.h index 9169d3477c4..135227a2524 100644 --- a/src/devices/cpu/mb86233/mb86233.h +++ b/src/devices/cpu/mb86233/mb86233.h @@ -79,7 +79,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 4; } virtual uint32_t disasm_max_opcode_bytes() const override { return 4; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: address_space_config m_program_config; diff --git a/src/devices/cpu/mb86233/mb86233d.cpp b/src/devices/cpu/mb86233/mb86233d.cpp index 37e5e52e7b2..afc8a0a65f1 100644 --- a/src/devices/cpu/mb86233/mb86233d.cpp +++ b/src/devices/cpu/mb86233/mb86233d.cpp @@ -750,18 +750,9 @@ static unsigned dasm_mb86233(std::ostream &stream, uint32_t opcode ) return (1 | DASMFLAG_SUPPORTED); } -static offs_t internal_disasm_mb86233(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(mb86233) { uint32_t op = *(uint32_t *)oprom; op = little_endianize_int32(op); return dasm_mb86233(stream, op); } - -CPU_DISASSEMBLE(mb86233) -{ - std::ostringstream stream; - offs_t result = internal_disasm_mb86233(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/mb86235/mb86235.cpp b/src/devices/cpu/mb86235/mb86235.cpp index b765614d074..c2641521ad4 100644 --- a/src/devices/cpu/mb86235/mb86235.cpp +++ b/src/devices/cpu/mb86235/mb86235.cpp @@ -123,8 +123,8 @@ void mb86235_cpu_device::state_string_export(const device_state_entry &entry, st } } -offs_t mb86235_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t mb86235_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( mb86235 ); - return CPU_DISASSEMBLE_NAME(mb86235)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(mb86235)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/mb86235/mb86235.h b/src/devices/cpu/mb86235/mb86235.h index 7531607688c..8a8bd867609 100644 --- a/src/devices/cpu/mb86235/mb86235.h +++ b/src/devices/cpu/mb86235/mb86235.h @@ -47,7 +47,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 8; } virtual uint32_t disasm_max_opcode_bytes() const override { return 8; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: address_space_config m_program_config; diff --git a/src/devices/cpu/mb86235/mb86235d.cpp b/src/devices/cpu/mb86235/mb86235d.cpp index 73cd908cc29..d85753cd7d6 100644 --- a/src/devices/cpu/mb86235/mb86235d.cpp +++ b/src/devices/cpu/mb86235/mb86235d.cpp @@ -825,21 +825,10 @@ static unsigned dasm_mb86235(std::ostream &stream, uint32_t pc, uint64_t opcode) } - -static offs_t internal_disasm_mb86235(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(mb86235) { uint64_t op = *(uint64_t*)oprom; op = little_endianize_int64(op); return dasm_mb86235(stream, pc, op); } - - -CPU_DISASSEMBLE(mb86235) -{ - std::ostringstream stream; - offs_t result = internal_disasm_mb86235(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/mb88xx/mb88dasm.cpp b/src/devices/cpu/mb88xx/mb88dasm.cpp index d47eef69559..eced68233b0 100644 --- a/src/devices/cpu/mb88xx/mb88dasm.cpp +++ b/src/devices/cpu/mb88xx/mb88dasm.cpp @@ -13,7 +13,7 @@ #include "mb88xx.h" -static offs_t internal_disasm_mb88(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(mb88) { unsigned startpc = pc; uint8_t op = oprom[pc++ - startpc]; @@ -222,13 +222,3 @@ static offs_t internal_disasm_mb88(cpu_device *device, std::ostream &stream, off return (pc - startpc) | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(mb88) -{ - std::ostringstream stream; - offs_t result = internal_disasm_mb88(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/mb88xx/mb88xx.cpp b/src/devices/cpu/mb88xx/mb88xx.cpp index 2be8354d9f9..0c3c8b70758 100644 --- a/src/devices/cpu/mb88xx/mb88xx.cpp +++ b/src/devices/cpu/mb88xx/mb88xx.cpp @@ -163,10 +163,10 @@ mb8844_cpu_device::mb8844_cpu_device(const machine_config &mconfig, const char * } -offs_t mb88_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t mb88_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( mb88 ); - return CPU_DISASSEMBLE_NAME(mb88)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(mb88)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/mb88xx/mb88xx.h b/src/devices/cpu/mb88xx/mb88xx.h index 911574ce092..e5acb3e7526 100644 --- a/src/devices/cpu/mb88xx/mb88xx.h +++ b/src/devices/cpu/mb88xx/mb88xx.h @@ -97,7 +97,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 2; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: address_space_config m_program_config; diff --git a/src/devices/cpu/mc68hc11/hc11dasm.cpp b/src/devices/cpu/mc68hc11/hc11dasm.cpp index e0ff95a7ad7..20ad20c4d0a 100644 --- a/src/devices/cpu/mc68hc11/hc11dasm.cpp +++ b/src/devices/cpu/mc68hc11/hc11dasm.cpp @@ -1274,7 +1274,7 @@ static uint32_t decode_opcode(std::ostream &stream, uint32_t pc, const M68HC11_O return flags; } -static offs_t internal_disasm_hc11(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(hc11) { uint32_t flags; uint8_t opcode; @@ -1286,13 +1286,3 @@ static offs_t internal_disasm_hc11(cpu_device *device, std::ostream &stream, off return (rombase-oprom) | flags | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(hc11) -{ - std::ostringstream stream; - offs_t result = internal_disasm_hc11(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/mc68hc11/mc68hc11.cpp b/src/devices/cpu/mc68hc11/mc68hc11.cpp index fe6f5988d73..c8eeec1ca23 100644 --- a/src/devices/cpu/mc68hc11/mc68hc11.cpp +++ b/src/devices/cpu/mc68hc11/mc68hc11.cpp @@ -54,10 +54,10 @@ mc68hc11_cpu_device::mc68hc11_cpu_device(const machine_config &mconfig, const ch } -offs_t mc68hc11_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t mc68hc11_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( hc11 ); - return CPU_DISASSEMBLE_NAME(hc11)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(hc11)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/mc68hc11/mc68hc11.h b/src/devices/cpu/mc68hc11/mc68hc11.h index 7105a97f987..1c83b137d06 100644 --- a/src/devices/cpu/mc68hc11/mc68hc11.h +++ b/src/devices/cpu/mc68hc11/mc68hc11.h @@ -75,7 +75,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 5; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: address_space_config m_program_config; diff --git a/src/devices/cpu/mcs48/mcs48.cpp b/src/devices/cpu/mcs48/mcs48.cpp index d27e8cf438e..423c522c195 100644 --- a/src/devices/cpu/mcs48/mcs48.cpp +++ b/src/devices/cpu/mcs48/mcs48.cpp @@ -324,17 +324,17 @@ i8742_device::i8742_device(const machine_config &mconfig, const char *tag, devic } -offs_t mcs48_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t mcs48_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( mcs48 ); - return CPU_DISASSEMBLE_NAME(mcs48)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(mcs48)(this, stream, pc, oprom, opram, options); } -offs_t upi41_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t upi41_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( upi41 ); - return CPU_DISASSEMBLE_NAME(upi41)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(upi41)(this, stream, pc, oprom, opram, options); } /*************************************************************************** diff --git a/src/devices/cpu/mcs48/mcs48.h b/src/devices/cpu/mcs48/mcs48.h index 096b1e6331c..e48f670f496 100644 --- a/src/devices/cpu/mcs48/mcs48.h +++ b/src/devices/cpu/mcs48/mcs48.h @@ -152,7 +152,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 2; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; protected: address_space_config m_program_config; @@ -594,7 +594,7 @@ public: DECLARE_WRITE8_MEMBER(upi41_master_w); protected: - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; TIMER_CALLBACK_MEMBER( master_callback ); }; diff --git a/src/devices/cpu/mcs48/mcs48dsm.cpp b/src/devices/cpu/mcs48/mcs48dsm.cpp index a19ca9c47eb..08afa12f6b3 100644 --- a/src/devices/cpu/mcs48/mcs48dsm.cpp +++ b/src/devices/cpu/mcs48/mcs48dsm.cpp @@ -315,23 +315,13 @@ static uint32_t common_dasm(device_t *device, std::ostream &stream, offs_t pc, c } -static uint32_t common_dasm(device_t *device, char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, bool upi41) -{ - std::ostringstream stream; - offs_t result = common_dasm(device, stream, pc, oprom, opram, upi41); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} - - CPU_DISASSEMBLE( mcs48 ) { - return common_dasm(device, buffer, pc, oprom, opram, false); + return common_dasm(device, stream, pc, oprom, opram, false); } CPU_DISASSEMBLE( upi41 ) { - return common_dasm(device, buffer, pc, oprom, opram, true); + return common_dasm(device, stream, pc, oprom, opram, true); } diff --git a/src/devices/cpu/mcs51/mcs51.cpp b/src/devices/cpu/mcs51/mcs51.cpp index 19a6434a319..bea6b8351e3 100644 --- a/src/devices/cpu/mcs51/mcs51.cpp +++ b/src/devices/cpu/mcs51/mcs51.cpp @@ -2462,43 +2462,43 @@ uint8_t ds5002fp_device::sfr_read(size_t offset) } -offs_t mcs51_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t mcs51_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( i8051 ); - return CPU_DISASSEMBLE_NAME(i8051)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(i8051)(this, stream, pc, oprom, opram, options); } -offs_t i8052_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t i8052_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( i8052 ); - return CPU_DISASSEMBLE_NAME(i8052)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(i8052)(this, stream, pc, oprom, opram, options); } -offs_t i80c31_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t i80c31_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( i80c51 ); - return CPU_DISASSEMBLE_NAME(i80c51)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(i80c51)(this, stream, pc, oprom, opram, options); } -offs_t i80c51_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t i80c51_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( i80c51 ); - return CPU_DISASSEMBLE_NAME(i80c51)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(i80c51)(this, stream, pc, oprom, opram, options); } -offs_t i80c52_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t i80c52_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( i80c52 ); - return CPU_DISASSEMBLE_NAME(i80c52)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(i80c52)(this, stream, pc, oprom, opram, options); } -offs_t ds5002fp_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t ds5002fp_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( ds5002fp ); - return CPU_DISASSEMBLE_NAME(ds5002fp)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(ds5002fp)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/mcs51/mcs51.h b/src/devices/cpu/mcs51/mcs51.h index 970ee46b531..df5aba90d11 100644 --- a/src/devices/cpu/mcs51/mcs51.h +++ b/src/devices/cpu/mcs51/mcs51.h @@ -120,7 +120,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 5; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; protected: address_space_config m_program_config; @@ -393,7 +393,7 @@ public: i8052_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, int program_width, int data_width, uint8_t features = 0); protected: - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; /* SFR Callbacks */ virtual void sfr_write(size_t offset, uint8_t data) override; @@ -421,7 +421,7 @@ public: i80c31_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); protected: - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; }; @@ -433,7 +433,7 @@ public: i80c51_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, int program_width, int data_width, uint8_t features = 0); protected: - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; }; class i87c51_device : public i80c51_device @@ -452,7 +452,7 @@ public: i80c52_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, int program_width, int data_width, uint8_t features = 0); protected: - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; /* SFR Callbacks */ virtual void sfr_write(size_t offset, uint8_t data) override; @@ -512,7 +512,7 @@ public: static void set_crc(device_t &device, uint8_t crc) { downcast<ds5002fp_device &>(device).m_ds5002fp.crc = crc; } protected: - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; /* SFR Callbacks */ virtual void sfr_write(size_t offset, uint8_t data) override; diff --git a/src/devices/cpu/mcs51/mcs51dasm.cpp b/src/devices/cpu/mcs51/mcs51dasm.cpp index 447d1bee27c..b96ae46a4a1 100644 --- a/src/devices/cpu/mcs51/mcs51dasm.cpp +++ b/src/devices/cpu/mcs51/mcs51dasm.cpp @@ -1147,15 +1147,6 @@ static offs_t mcs51_dasm( const char **mem_names, std::ostream &stream, offs_t p return (PC - pc) | flags | DASMFLAG_SUPPORTED; } -static offs_t mcs51_dasm(const char **mem_names, char *dst, offs_t pc, const uint8_t *oprom, const uint8_t *opram) -{ - std::ostringstream stream; - offs_t result = mcs51_dasm(mem_names, stream, pc, oprom, opram); - std::string stream_str = stream.str(); - strcpy(dst, stream_str.c_str()); - return result; -} - CPU_DISASSEMBLE( i8051 ) { static const char *mem_names[0x200]; @@ -1166,7 +1157,7 @@ CPU_DISASSEMBLE( i8051 ) init_mem_names( FEATURE_NONE, mem_names); mem_names_initialized = 1; } - return mcs51_dasm(mem_names, buffer, pc, oprom, opram); + return mcs51_dasm(mem_names, stream, pc, oprom, opram); } CPU_DISASSEMBLE( i8052 ) @@ -1179,7 +1170,7 @@ CPU_DISASSEMBLE( i8052 ) init_mem_names( FEATURE_I8052, mem_names); mem_names_initialized = 1; } - return mcs51_dasm(mem_names, buffer, pc, oprom, opram); + return mcs51_dasm(mem_names, stream, pc, oprom, opram); } CPU_DISASSEMBLE( i80c51 ) @@ -1192,7 +1183,7 @@ CPU_DISASSEMBLE( i80c51 ) init_mem_names( FEATURE_CMOS, mem_names); mem_names_initialized = 1; } - return mcs51_dasm(mem_names, buffer, pc, oprom, opram); + return mcs51_dasm(mem_names, stream, pc, oprom, opram); } CPU_DISASSEMBLE( i80c52 ) @@ -1205,7 +1196,7 @@ CPU_DISASSEMBLE( i80c52 ) init_mem_names( FEATURE_I8052 | FEATURE_CMOS | FEATURE_I80C52, mem_names); mem_names_initialized = 1; } - return mcs51_dasm(mem_names, buffer, pc, oprom, opram); + return mcs51_dasm(mem_names, stream, pc, oprom, opram); } CPU_DISASSEMBLE( ds5002fp ) @@ -1218,5 +1209,5 @@ CPU_DISASSEMBLE( ds5002fp ) init_mem_names( FEATURE_DS5002FP | FEATURE_CMOS, mem_names); mem_names_initialized = 1; } - return mcs51_dasm(mem_names, buffer, pc, oprom, opram); + return mcs51_dasm(mem_names, stream, pc, oprom, opram); } diff --git a/src/devices/cpu/mcs96/i8x9x.cpp b/src/devices/cpu/mcs96/i8x9x.cpp index f75fdec4f8c..a1302b5c3d7 100644 --- a/src/devices/cpu/mcs96/i8x9x.cpp +++ b/src/devices/cpu/mcs96/i8x9x.cpp @@ -18,9 +18,9 @@ i8x9x_device::i8x9x_device(const machine_config &mconfig, device_type type, cons { } -offs_t i8x9x_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t i8x9x_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { - return disasm_generic(buffer, pc, oprom, opram, options, disasm_entries); + return disasm_generic(stream, pc, oprom, opram, options, disasm_entries); } const address_space_config *i8x9x_device::memory_space_config(address_spacenum spacenum) const diff --git a/src/devices/cpu/mcs96/i8x9x.h b/src/devices/cpu/mcs96/i8x9x.h index 099618e94f1..efb8997dabb 100644 --- a/src/devices/cpu/mcs96/i8x9x.h +++ b/src/devices/cpu/mcs96/i8x9x.h @@ -32,7 +32,7 @@ protected: static const disasm_entry disasm_entries[0x100]; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual void do_exec_full() override; virtual void do_exec_partial() override; virtual void internal_update(uint64_t current_time) override; diff --git a/src/devices/cpu/mcs96/i8xc196.cpp b/src/devices/cpu/mcs96/i8xc196.cpp index 5d814f7e272..ce9c9b9d8ac 100644 --- a/src/devices/cpu/mcs96/i8xc196.cpp +++ b/src/devices/cpu/mcs96/i8xc196.cpp @@ -16,9 +16,9 @@ i8xc196_device::i8xc196_device(const machine_config &mconfig, device_type type, { } -offs_t i8xc196_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t i8xc196_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { - return disasm_generic(buffer, pc, oprom, opram, options, disasm_entries); + return disasm_generic(stream, pc, oprom, opram, options, disasm_entries); } void i8xc196_device::io_w8(uint8_t adr, uint8_t data) diff --git a/src/devices/cpu/mcs96/i8xc196.h b/src/devices/cpu/mcs96/i8xc196.h index eeaf580aa64..54e811e35b0 100644 --- a/src/devices/cpu/mcs96/i8xc196.h +++ b/src/devices/cpu/mcs96/i8xc196.h @@ -19,7 +19,7 @@ public: static const disasm_entry disasm_entries[0x100]; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual void do_exec_full() override; virtual void do_exec_partial() override; diff --git a/src/devices/cpu/mcs96/mcs96.h b/src/devices/cpu/mcs96/mcs96.h index 26c7886a070..f4cda34c224 100644 --- a/src/devices/cpu/mcs96/mcs96.h +++ b/src/devices/cpu/mcs96/mcs96.h @@ -90,14 +90,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override; virtual uint32_t disasm_max_opcode_bytes() const override; - virtual offs_t disasm_generic(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options, const disasm_entry *entries) - { - std::ostringstream stream; - offs_t result = disasm_generic(stream, pc, oprom, opram, options, entries); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; - } + virtual offs_t disasm_generic(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options, const disasm_entry *entries); address_space_config program_config; address_space *program; @@ -252,9 +245,6 @@ protected: O(fetch_noirq); #undef O - -private: - offs_t disasm_generic(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options, const disasm_entry *entries); }; enum { diff --git a/src/devices/cpu/melps4/m58846.cpp b/src/devices/cpu/melps4/m58846.cpp index b96f479fdd9..261876c3eef 100644 --- a/src/devices/cpu/melps4/m58846.cpp +++ b/src/devices/cpu/melps4/m58846.cpp @@ -30,10 +30,10 @@ m58846_device::m58846_device(const machine_config &mconfig, const char *tag, dev // disasm -offs_t m58846_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t m58846_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE(m58846); - return CPU_DISASSEMBLE_NAME(m58846)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(m58846)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/melps4/m58846.h b/src/devices/cpu/melps4/m58846.h index 0e754b1eafb..d270074ff74 100644 --- a/src/devices/cpu/melps4/m58846.h +++ b/src/devices/cpu/melps4/m58846.h @@ -28,7 +28,7 @@ protected: virtual void execute_one() override; // device_disasm_interface overrides - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; // timers virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; diff --git a/src/devices/cpu/melps4/melps4d.cpp b/src/devices/cpu/melps4/melps4d.cpp index a6a358db3a5..efd199097c5 100644 --- a/src/devices/cpu/melps4/melps4d.cpp +++ b/src/devices/cpu/melps4/melps4d.cpp @@ -100,7 +100,7 @@ static const uint8_t m58846_opmap[0xc0] = em_LA, em_LA, em_LA, em_LA, em_LA, em_LA, em_LA, em_LA, em_LA, em_LA, em_LA, em_LA, em_LA, em_LA, em_LA, em_LA // Bx }; -static offs_t internal_disasm_m58846(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(m58846) { uint16_t op = (oprom[0] | oprom[1] << 8) & 0x1ff; @@ -138,13 +138,3 @@ static offs_t internal_disasm_m58846(cpu_device *device, std::ostream &stream, o return 1 | em_flags[instr] | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(m58846) -{ - std::ostringstream stream; - offs_t result = internal_disasm_m58846(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/minx/minx.cpp b/src/devices/cpu/minx/minx.cpp index 4ec4a344371..307cf8d73c7 100644 --- a/src/devices/cpu/minx/minx.cpp +++ b/src/devices/cpu/minx/minx.cpp @@ -228,8 +228,8 @@ void minx_cpu_device::execute_set_input(int inputnum, int state) } -offs_t minx_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t minx_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( minx ); - return CPU_DISASSEMBLE_NAME(minx)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(minx)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/minx/minx.h b/src/devices/cpu/minx/minx.h index ca0c18692ff..8ab7ce18a06 100644 --- a/src/devices/cpu/minx/minx.h +++ b/src/devices/cpu/minx/minx.h @@ -41,7 +41,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 5; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: address_space_config m_program_config; diff --git a/src/devices/cpu/minx/minxd.cpp b/src/devices/cpu/minx/minxd.cpp index 8005d1ecc9f..0e3b9d5b090 100644 --- a/src/devices/cpu/minx/minxd.cpp +++ b/src/devices/cpu/minx/minxd.cpp @@ -420,7 +420,7 @@ 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; -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) +CPU_DISASSEMBLE(minx) { const minxdasm *instr; uint8_t op, op1; @@ -462,13 +462,3 @@ static offs_t internal_disasm_minx(cpu_device *device, std::ostream &stream, off } 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; -} diff --git a/src/devices/cpu/mips/mips3.cpp b/src/devices/cpu/mips/mips3.cpp index 940e22d1892..86f823bafdc 100644 --- a/src/devices/cpu/mips/mips3.cpp +++ b/src/devices/cpu/mips/mips3.cpp @@ -963,14 +963,14 @@ bool mips3_device::memory_translate(address_spacenum spacenum, int intention, of } -offs_t mips3_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t mips3_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { uint32_t op = *(uint32_t *)oprom; if (m_bigendian) op = big_endianize_int32(op); else op = little_endianize_int32(op); - return dasmmips3(buffer, pc, op); + return dasmmips3(stream, pc, op); } diff --git a/src/devices/cpu/mips/mips3.h b/src/devices/cpu/mips/mips3.h index e69afbc0c8d..e9022aff082 100644 --- a/src/devices/cpu/mips/mips3.h +++ b/src/devices/cpu/mips/mips3.h @@ -308,7 +308,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 4; } virtual uint32_t disasm_max_opcode_bytes() const override { return 4; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: diff --git a/src/devices/cpu/mips/mips3dsm.cpp b/src/devices/cpu/mips/mips3dsm.cpp index ac490eb94f8..acc7abbcc75 100644 --- a/src/devices/cpu/mips/mips3dsm.cpp +++ b/src/devices/cpu/mips/mips3dsm.cpp @@ -536,21 +536,11 @@ unsigned dasmmips3(std::ostream &stream, unsigned pc, uint32_t op) } -unsigned dasmmips3(char *buffer, unsigned pc, uint32_t op) -{ - std::ostringstream stream; - unsigned result = dasmmips3(stream, pc, op); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} - - CPU_DISASSEMBLE( mips3be ) { uint32_t op = *(uint32_t *)oprom; op = big_endianize_int32(op); - return dasmmips3(buffer, pc, op); + return dasmmips3(stream, pc, op); } @@ -558,5 +548,5 @@ CPU_DISASSEMBLE( mips3le ) { uint32_t op = *(uint32_t *)oprom; op = little_endianize_int32(op); - return dasmmips3(buffer, pc, op); + return dasmmips3(stream, pc, op); } diff --git a/src/devices/cpu/mips/r3000.cpp b/src/devices/cpu/mips/r3000.cpp index 2e37da309a0..f959dd4485d 100644 --- a/src/devices/cpu/mips/r3000.cpp +++ b/src/devices/cpu/mips/r3000.cpp @@ -480,15 +480,15 @@ uint32_t r3000_device::disasm_max_opcode_bytes() const // helper function //------------------------------------------------- -offs_t r3000_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t r3000_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( r3000le ); extern CPU_DISASSEMBLE( r3000be ); if (m_endianness == ENDIANNESS_BIG) - return CPU_DISASSEMBLE_NAME(r3000be)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(r3000be)(this, stream, pc, oprom, opram, options); else - return CPU_DISASSEMBLE_NAME(r3000le)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(r3000le)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/mips/r3000.h b/src/devices/cpu/mips/r3000.h index 138e6fc2a6f..e424877d9ae 100644 --- a/src/devices/cpu/mips/r3000.h +++ b/src/devices/cpu/mips/r3000.h @@ -131,7 +131,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override; virtual uint32_t disasm_max_opcode_bytes() const override; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; // memory accessors struct r3000_data_accessors diff --git a/src/devices/cpu/mips/r3kdasm.cpp b/src/devices/cpu/mips/r3kdasm.cpp index 71c7fe2dd35..1e8a2d7a16d 100644 --- a/src/devices/cpu/mips/r3kdasm.cpp +++ b/src/devices/cpu/mips/r3kdasm.cpp @@ -378,21 +378,11 @@ static unsigned dasmr3k(std::ostream &stream, unsigned pc, uint32_t op) } -static unsigned dasmr3k(char *buffer, unsigned pc, uint32_t op) -{ - std::ostringstream stream; - unsigned result = dasmr3k(stream, pc, op); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} - - CPU_DISASSEMBLE( r3000be ) { uint32_t op = *(uint32_t *)oprom; op = big_endianize_int32(op); - return dasmr3k(buffer, pc, op); + return dasmr3k(stream, pc, op); } @@ -400,5 +390,5 @@ CPU_DISASSEMBLE( r3000le ) { uint32_t op = *(uint32_t *)oprom; op = little_endianize_int32(op); - return dasmr3k(buffer, pc, op); + return dasmr3k(stream, pc, op); } diff --git a/src/devices/cpu/mn10200/mn10200.cpp b/src/devices/cpu/mn10200/mn10200.cpp index 6f43d7f3f13..77af7f4d180 100644 --- a/src/devices/cpu/mn10200/mn10200.cpp +++ b/src/devices/cpu/mn10200/mn10200.cpp @@ -72,10 +72,10 @@ void mn10200_device::state_string_export(const device_state_entry &entry, std::s } } -offs_t mn10200_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t mn10200_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( mn10200 ); - return CPU_DISASSEMBLE_NAME(mn10200)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(mn10200)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/mn10200/mn10200.h b/src/devices/cpu/mn10200/mn10200.h index 100eb03a2b8..cfa5c53457e 100644 --- a/src/devices/cpu/mn10200/mn10200.h +++ b/src/devices/cpu/mn10200/mn10200.h @@ -93,7 +93,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 7; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: address_space_config m_program_config; diff --git a/src/devices/cpu/mn10200/mn102dis.cpp b/src/devices/cpu/mn10200/mn102dis.cpp index 617a1bab6f1..be3fb46c0eb 100644 --- a/src/devices/cpu/mn10200/mn102dis.cpp +++ b/src/devices/cpu/mn10200/mn102dis.cpp @@ -1034,9 +1034,5 @@ static int mn102_disassemble(std::ostream &stream, uint32_t pc, const uint8_t *o CPU_DISASSEMBLE( mn10200 ) { - std::ostringstream stream; - offs_t result = mn102_disassemble(stream, pc, oprom); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; + return mn102_disassemble(stream, pc, oprom); } diff --git a/src/devices/cpu/nanoprocessor/nanoprocessor.cpp b/src/devices/cpu/nanoprocessor/nanoprocessor.cpp index 273f73f2c48..a67bd8465c1 100644 --- a/src/devices/cpu/nanoprocessor/nanoprocessor.cpp +++ b/src/devices/cpu/nanoprocessor/nanoprocessor.cpp @@ -159,10 +159,10 @@ void hp_nanoprocessor_device::state_string_export(const device_state_entry &entr } -offs_t hp_nanoprocessor_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t hp_nanoprocessor_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE(hp_nanoprocessor); - return CPU_DISASSEMBLE_NAME(hp_nanoprocessor)(this , buffer , pc , oprom , opram , options); + return CPU_DISASSEMBLE_NAME(hp_nanoprocessor)(this , stream , pc , oprom , opram , options); } void hp_nanoprocessor_device::execute_one(uint8_t opcode) diff --git a/src/devices/cpu/nanoprocessor/nanoprocessor.h b/src/devices/cpu/nanoprocessor/nanoprocessor.h index 9193e1b5302..d94c5159599 100644 --- a/src/devices/cpu/nanoprocessor/nanoprocessor.h +++ b/src/devices/cpu/nanoprocessor/nanoprocessor.h @@ -102,7 +102,7 @@ public: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 2; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: devcb_write8 m_dc_changed_func; diff --git a/src/devices/cpu/nanoprocessor/nanoprocessor_dasm.cpp b/src/devices/cpu/nanoprocessor/nanoprocessor_dasm.cpp index 4c38d248936..418d6f57c7f 100644 --- a/src/devices/cpu/nanoprocessor/nanoprocessor_dasm.cpp +++ b/src/devices/cpu/nanoprocessor/nanoprocessor_dasm.cpp @@ -114,7 +114,6 @@ static const dis_entry_t dis_table[] = { CPU_DISASSEMBLE(hp_nanoprocessor) { - std::ostringstream stream; const uint8_t opcode = *oprom; opram++; @@ -125,8 +124,6 @@ CPU_DISASSEMBLE(hp_nanoprocessor) if (ent.m_param_fn != nullptr) { ent.m_param_fn(stream , opcode , opram); } - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); return ent.m_dasm_flags | DASMFLAG_SUPPORTED; } } diff --git a/src/devices/cpu/nec/nec.cpp b/src/devices/cpu/nec/nec.cpp index 33c68acbd69..1211e59bbd7 100644 --- a/src/devices/cpu/nec/nec.cpp +++ b/src/devices/cpu/nec/nec.cpp @@ -161,10 +161,10 @@ v33a_device::v33a_device(const machine_config &mconfig, const char *tag, device_ } -offs_t nec_common_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t nec_common_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( nec ); - return CPU_DISASSEMBLE_NAME(nec)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(nec)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/nec/nec.h b/src/devices/cpu/nec/nec.h index 5d696eb417b..36a38019990 100644 --- a/src/devices/cpu/nec/nec.h +++ b/src/devices/cpu/nec/nec.h @@ -49,7 +49,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 8; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: address_space_config m_program_config; diff --git a/src/devices/cpu/nec/necdasm.cpp b/src/devices/cpu/nec/necdasm.cpp index e3fdb36f94a..d313eeaf531 100644 --- a/src/devices/cpu/nec/necdasm.cpp +++ b/src/devices/cpu/nec/necdasm.cpp @@ -1596,16 +1596,7 @@ int necv_dasm_one(std::ostream &stream, uint32_t eip, const uint8_t *oprom, cons return (pc-eip) | dasm_flags | DASMFLAG_SUPPORTED; } -int necv_dasm_one(char *buffer, uint32_t eip, const uint8_t *oprom, const uint8_t *decryption_table) -{ - std::ostringstream stream; - int result = necv_dasm_one(stream, eip, oprom, decryption_table); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} - CPU_DISASSEMBLE( nec ) { - return necv_dasm_one(buffer, pc, oprom, nullptr); + return necv_dasm_one(stream, pc, oprom, nullptr); } diff --git a/src/devices/cpu/nec/v25.cpp b/src/devices/cpu/nec/v25.cpp index ebce1dbaa90..a7abd58133e 100644 --- a/src/devices/cpu/nec/v25.cpp +++ b/src/devices/cpu/nec/v25.cpp @@ -412,9 +412,9 @@ void v25_common_device::execute_set_input(int irqline, int state) } } -offs_t v25_common_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t v25_common_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { - return necv_dasm_one(buffer, pc, oprom, m_v25v35_decryptiontable); + return necv_dasm_one(stream, pc, oprom, m_v25v35_decryptiontable); } void v25_common_device::device_start() diff --git a/src/devices/cpu/nec/v25.h b/src/devices/cpu/nec/v25.h index 28815e16609..c5cc0b5ee2a 100644 --- a/src/devices/cpu/nec/v25.h +++ b/src/devices/cpu/nec/v25.h @@ -92,7 +92,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 8; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: address_space_config m_program_config; diff --git a/src/devices/cpu/patinhofeio/patinho_feio.cpp b/src/devices/cpu/patinhofeio/patinho_feio.cpp index ceeab59fcc4..6aa770af3a6 100644 --- a/src/devices/cpu/patinhofeio/patinho_feio.cpp +++ b/src/devices/cpu/patinhofeio/patinho_feio.cpp @@ -775,8 +775,8 @@ void patinho_feio_cpu_device::execute_instruction() printf("unimplemented opcode: 0x%02X\n", m_opcode); } -offs_t patinho_feio_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t patinho_feio_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( patinho_feio ); - return CPU_DISASSEMBLE_NAME(patinho_feio)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(patinho_feio)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/patinhofeio/patinho_feio_dasm.cpp b/src/devices/cpu/patinhofeio/patinho_feio_dasm.cpp index 7f366749c25..c655314f348 100644 --- a/src/devices/cpu/patinhofeio/patinho_feio_dasm.cpp +++ b/src/devices/cpu/patinhofeio/patinho_feio_dasm.cpp @@ -3,7 +3,7 @@ #include "emu.h" #include "cpu/patinhofeio/patinhofeio_cpu.h" -static offs_t internal_disasm_patinho_feio(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(patinho_feio) { int addr, value, n, f; @@ -161,13 +161,3 @@ static offs_t internal_disasm_patinho_feio(cpu_device *device, std::ostream &str util::stream_format(stream, "illegal instruction"); return 1; } - - -CPU_DISASSEMBLE(patinho_feio) -{ - std::ostringstream stream; - offs_t result = internal_disasm_patinho_feio(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/patinhofeio/patinhofeio_cpu.h b/src/devices/cpu/patinhofeio/patinhofeio_cpu.h index b10d3b7f0b1..13d27aec613 100644 --- a/src/devices/cpu/patinhofeio/patinhofeio_cpu.h +++ b/src/devices/cpu/patinhofeio/patinhofeio_cpu.h @@ -66,7 +66,7 @@ public: protected: virtual void execute_run() override; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; address_space_config m_program_config; diff --git a/src/devices/cpu/pdp1/pdp1.cpp b/src/devices/cpu/pdp1/pdp1.cpp index ef7e5524399..4dee1695d4b 100644 --- a/src/devices/cpu/pdp1/pdp1.cpp +++ b/src/devices/cpu/pdp1/pdp1.cpp @@ -412,10 +412,10 @@ void pdp1_device::device_config_complete() } -offs_t pdp1_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t pdp1_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( pdp1 ); - return CPU_DISASSEMBLE_NAME(pdp1)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(pdp1)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/pdp1/pdp1.h b/src/devices/cpu/pdp1/pdp1.h index a17c2d37858..8b6bfa23654 100644 --- a/src/devices/cpu/pdp1/pdp1.h +++ b/src/devices/cpu/pdp1/pdp1.h @@ -114,7 +114,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 4; } virtual uint32_t disasm_max_opcode_bytes() const override { return 4; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: address_space_config m_program_config; diff --git a/src/devices/cpu/pdp1/pdp1dasm.cpp b/src/devices/cpu/pdp1/pdp1dasm.cpp index 21424dc91da..3313aa83f37 100644 --- a/src/devices/cpu/pdp1/pdp1dasm.cpp +++ b/src/devices/cpu/pdp1/pdp1dasm.cpp @@ -20,7 +20,7 @@ static inline void ea (void) #define IN if (ib) util::stream_format(stream, " i") -static offs_t internal_disasm_pdp1(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(pdp1) { int md; //int etime = 0; @@ -290,13 +290,3 @@ static offs_t internal_disasm_pdp1(cpu_device *device, std::ostream &stream, off } return 4; } - - -CPU_DISASSEMBLE(pdp1) -{ - std::ostringstream stream; - offs_t result = internal_disasm_pdp1(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/pdp1/tx0.cpp b/src/devices/cpu/pdp1/tx0.cpp index 25830f4cbb5..3b7e9f47546 100644 --- a/src/devices/cpu/pdp1/tx0.cpp +++ b/src/devices/cpu/pdp1/tx0.cpp @@ -1068,15 +1068,15 @@ void tx0_device::io_complete() } -offs_t tx0_8kw_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t tx0_8kw_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( tx0_8kw ); - return CPU_DISASSEMBLE_NAME(tx0_8kw)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(tx0_8kw)(this, stream, pc, oprom, opram, options); } -offs_t tx0_64kw_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t tx0_64kw_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( tx0_64kw ); - return CPU_DISASSEMBLE_NAME(tx0_64kw)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(tx0_64kw)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/pdp1/tx0.h b/src/devices/cpu/pdp1/tx0.h index 3893cd88e27..afd39fc938a 100644 --- a/src/devices/cpu/pdp1/tx0.h +++ b/src/devices/cpu/pdp1/tx0.h @@ -151,7 +151,7 @@ public: protected: virtual void execute_run() override; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: void execute_instruction_8kw(); @@ -166,7 +166,7 @@ public: protected: virtual void execute_run() override; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: void execute_instruction_64kw(); diff --git a/src/devices/cpu/pdp1/tx0dasm.cpp b/src/devices/cpu/pdp1/tx0dasm.cpp index e309b27603d..cda24ed930c 100644 --- a/src/devices/cpu/pdp1/tx0dasm.cpp +++ b/src/devices/cpu/pdp1/tx0dasm.cpp @@ -3,7 +3,7 @@ #include "emu.h" #include "cpu/pdp1/tx0.h" -static offs_t internal_disasm_tx0_64kw(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(tx0_64kw) { int md; int x; @@ -29,16 +29,7 @@ static offs_t internal_disasm_tx0_64kw(cpu_device *device, std::ostream &stream, return 1; } -CPU_DISASSEMBLE(tx0_64kw) -{ - std::ostringstream stream; - offs_t result = internal_disasm_tx0_64kw(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} - -static offs_t internal_disasm_tx0_8kw(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(tx0_8kw) { int md; int x; @@ -130,12 +121,3 @@ static offs_t internal_disasm_tx0_8kw(cpu_device *device, std::ostream &stream, } return 1; } - -CPU_DISASSEMBLE(tx0_8kw) -{ - std::ostringstream stream; - offs_t result = internal_disasm_tx0_8kw(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/pdp8/pdp8.cpp b/src/devices/cpu/pdp8/pdp8.cpp index 8946932b147..d158786d553 100644 --- a/src/devices/cpu/pdp8/pdp8.cpp +++ b/src/devices/cpu/pdp8/pdp8.cpp @@ -174,10 +174,10 @@ uint32_t pdp8_device::disasm_max_opcode_bytes() const // helper function //------------------------------------------------- -offs_t pdp8_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t pdp8_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( pdp8 ); - return CPU_DISASSEMBLE_NAME(pdp8)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(pdp8)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/pdp8/pdp8.h b/src/devices/cpu/pdp8/pdp8.h index 55958cb2029..416ecb4a2a0 100644 --- a/src/devices/cpu/pdp8/pdp8.h +++ b/src/devices/cpu/pdp8/pdp8.h @@ -42,7 +42,7 @@ public: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override; virtual uint32_t disasm_max_opcode_bytes() const override; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/pdp8/pdp8dasm.cpp b/src/devices/cpu/pdp8/pdp8dasm.cpp index e71f4ebe61d..5c2219af4f8 100644 --- a/src/devices/cpu/pdp8/pdp8dasm.cpp +++ b/src/devices/cpu/pdp8/pdp8dasm.cpp @@ -160,14 +160,6 @@ static offs_t pdp8_dasm_one(std::ostream &stream, offs_t pc, uint16_t op) return 2 | DASMFLAG_SUPPORTED; } -static offs_t pdp8_dasm_one(char *buffer, offs_t pc, uint16_t op) -{ - std::ostringstream stream; - offs_t result = pdp8_dasm_one(stream, pc, op); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} /*****************************************************************************/ @@ -175,5 +167,5 @@ CPU_DISASSEMBLE( pdp8 ) { uint16_t op = (*(uint8_t *)(opram + 0) << 8) | (*(uint8_t *)(opram + 1) << 0); - return pdp8_dasm_one(buffer, pc, op); + return pdp8_dasm_one(stream, pc, op); } diff --git a/src/devices/cpu/pic16c5x/16c5xdsm.cpp b/src/devices/cpu/pic16c5x/16c5xdsm.cpp index d1bb0494299..03cd0539c8c 100644 --- a/src/devices/cpu/pic16c5x/16c5xdsm.cpp +++ b/src/devices/cpu/pic16c5x/16c5xdsm.cpp @@ -149,7 +149,7 @@ static void InitDasm16C5x(void) OpInizialized = 1; } -static offs_t internal_disasm_pic16c5x(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(pic16c5x) { int a, b, d, f, k; /* these can all be filled in by parsing an instruction */ int i; @@ -250,13 +250,3 @@ static offs_t internal_disasm_pic16c5x(cpu_device *device, std::ostream &stream, } return cnt | flags | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(pic16c5x) -{ - std::ostringstream stream; - offs_t result = internal_disasm_pic16c5x(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/pic16c5x/pic16c5x.cpp b/src/devices/cpu/pic16c5x/pic16c5x.cpp index 48a683eaed7..09279821e06 100644 --- a/src/devices/cpu/pic16c5x/pic16c5x.cpp +++ b/src/devices/cpu/pic16c5x/pic16c5x.cpp @@ -153,10 +153,10 @@ pic16c58_device::pic16c58_device(const machine_config &mconfig, const char *tag, } -offs_t pic16c5x_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t pic16c5x_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( pic16c5x ); - return CPU_DISASSEMBLE_NAME(pic16c5x)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(pic16c5x)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/pic16c5x/pic16c5x.h b/src/devices/cpu/pic16c5x/pic16c5x.h index 3a5aa41f5b3..ef0f7dbbbd4 100644 --- a/src/devices/cpu/pic16c5x/pic16c5x.h +++ b/src/devices/cpu/pic16c5x/pic16c5x.h @@ -122,7 +122,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 2; } virtual uint32_t disasm_max_opcode_bytes() const override { return 2; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: address_space_config m_program_config; diff --git a/src/devices/cpu/pic16c62x/16c62xdsm.cpp b/src/devices/cpu/pic16c62x/16c62xdsm.cpp index 48854d9057a..f9fb88a88d1 100644 --- a/src/devices/cpu/pic16c62x/16c62xdsm.cpp +++ b/src/devices/cpu/pic16c62x/16c62xdsm.cpp @@ -160,7 +160,7 @@ static void InitDasm16C5x(void) OpInizialized = 1; } -static offs_t internal_disasm_pic16c62x(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(pic16c62x) { int a, b, d, f, k; /* these can all be filled in by parsing an instruction */ int i; @@ -261,13 +261,3 @@ static offs_t internal_disasm_pic16c62x(cpu_device *device, std::ostream &stream } return cnt | flags | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(pic16c62x) -{ - std::ostringstream stream; - offs_t result = internal_disasm_pic16c62x(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/pic16c62x/pic16c62x.cpp b/src/devices/cpu/pic16c62x/pic16c62x.cpp index a3b3c270690..ceb12c33bb0 100644 --- a/src/devices/cpu/pic16c62x/pic16c62x.cpp +++ b/src/devices/cpu/pic16c62x/pic16c62x.cpp @@ -158,10 +158,10 @@ pic16c622a_device::pic16c622a_device(const machine_config &mconfig, const char * } -offs_t pic16c62x_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t pic16c62x_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( pic16c62x ); - return CPU_DISASSEMBLE_NAME(pic16c62x)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(pic16c62x)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/pic16c62x/pic16c62x.h b/src/devices/cpu/pic16c62x/pic16c62x.h index 7321296cc9d..0c2c19f41be 100644 --- a/src/devices/cpu/pic16c62x/pic16c62x.h +++ b/src/devices/cpu/pic16c62x/pic16c62x.h @@ -84,7 +84,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 2; } virtual uint32_t disasm_max_opcode_bytes() const override { return 2; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: address_space_config m_program_config; diff --git a/src/devices/cpu/powerpc/ppc.h b/src/devices/cpu/powerpc/ppc.h index 0d20214d47f..c51823fb208 100644 --- a/src/devices/cpu/powerpc/ppc.h +++ b/src/devices/cpu/powerpc/ppc.h @@ -269,7 +269,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 4; } virtual uint32_t disasm_max_opcode_bytes() const override { return 4; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; /* exception types */ enum diff --git a/src/devices/cpu/powerpc/ppc_dasm.cpp b/src/devices/cpu/powerpc/ppc_dasm.cpp index 3c067e4a234..77f01f9f552 100644 --- a/src/devices/cpu/powerpc/ppc_dasm.cpp +++ b/src/devices/cpu/powerpc/ppc_dasm.cpp @@ -1169,18 +1169,10 @@ offs_t ppc_dasm_one(std::ostream &stream, uint32_t pc, uint32_t op) return 4 | flags; } -offs_t ppc_dasm_one(char *buffer, uint32_t pc, uint32_t op) -{ - std::ostringstream stream; - offs_t result = ppc_dasm_one(stream, pc, op); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} CPU_DISASSEMBLE( powerpc ) { uint32_t op = *(uint32_t *)oprom; op = big_endianize_int32(op); - return ppc_dasm_one(buffer, pc, op); + return ppc_dasm_one(stream, pc, op); } diff --git a/src/devices/cpu/powerpc/ppccom.cpp b/src/devices/cpu/powerpc/ppccom.cpp index 026f382eabb..2030489da00 100644 --- a/src/devices/cpu/powerpc/ppccom.cpp +++ b/src/devices/cpu/powerpc/ppccom.cpp @@ -1232,11 +1232,11 @@ void ppc_device::device_reset() CPU -------------------------------------------------*/ -offs_t ppc_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t ppc_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { uint32_t op = *(uint32_t *)oprom; op = big_endianize_int32(op); - return ppc_dasm_one(buffer, pc, op); + return ppc_dasm_one(stream, pc, op); } diff --git a/src/devices/cpu/pps4/pps4.cpp b/src/devices/cpu/pps4/pps4.cpp index a8f0a08e5cc..f71c563caaa 100644 --- a/src/devices/cpu/pps4/pps4.cpp +++ b/src/devices/cpu/pps4/pps4.cpp @@ -100,10 +100,10 @@ void pps4_device::W(uint8_t data) m_SAG = 0; } -offs_t pps4_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t pps4_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( pps4 ); - return CPU_DISASSEMBLE_NAME(pps4)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(pps4)(this, stream, pc, oprom, opram, options); } /** diff --git a/src/devices/cpu/pps4/pps4.h b/src/devices/cpu/pps4/pps4.h index 224060efee1..c590ac85384 100644 --- a/src/devices/cpu/pps4/pps4.h +++ b/src/devices/cpu/pps4/pps4.h @@ -64,7 +64,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 2; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: address_space_config m_program_config; diff --git a/src/devices/cpu/pps4/pps4dasm.cpp b/src/devices/cpu/pps4/pps4dasm.cpp index 3dad2e7d1fd..71bf93dcb44 100644 --- a/src/devices/cpu/pps4/pps4dasm.cpp +++ b/src/devices/cpu/pps4/pps4dasm.cpp @@ -367,7 +367,7 @@ static const uint16_t table[] = { /* ff */ t_TM | t_I6i | t_OVER }; -static offs_t internal_disasm_pps4(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(pps4) { uint32_t flags = 0; unsigned PC = pc; @@ -440,12 +440,3 @@ static offs_t internal_disasm_pps4(cpu_device *device, std::ostream &stream, off return (pc - PC) | flags | DASMFLAG_SUPPORTED; } - -CPU_DISASSEMBLE(pps4) -{ - std::ostringstream stream; - offs_t result = internal_disasm_pps4(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/psx/psx.cpp b/src/devices/cpu/psx/psx.cpp index 9db209dc393..f0e55340221 100644 --- a/src/devices/cpu/psx/psx.cpp +++ b/src/devices/cpu/psx/psx.cpp @@ -2052,9 +2052,9 @@ void psxcpu_device::state_string_export( const device_state_entry &entry, std::s // helper function //------------------------------------------------- -offs_t psxcpu_device::disasm_disassemble( char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options ) +offs_t psxcpu_device::disasm_disassemble( std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options ) { - return DasmPSXCPU( this, buffer, pc, opram ); + return DasmPSXCPU( this, stream, pc, opram ); } diff --git a/src/devices/cpu/psx/psx.h b/src/devices/cpu/psx/psx.h index 1def8ce9a86..2c2d8cdd17b 100644 --- a/src/devices/cpu/psx/psx.h +++ b/src/devices/cpu/psx/psx.h @@ -227,7 +227,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 4; } virtual uint32_t disasm_max_opcode_bytes() const override { return 8; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; // CPU registers uint32_t m_pc; @@ -522,7 +522,6 @@ extern const device_type CXD8606CQ; #define CF_TLBP ( 8 ) #define CF_RFE ( 16 ) -extern unsigned DasmPSXCPU( psxcpu_state *state, std::ostream &stream, uint32_t pc, const uint8_t *opram); -extern unsigned DasmPSXCPU( psxcpu_state *state, char *buffer, uint32_t pc, const uint8_t *opram ); +extern unsigned DasmPSXCPU(psxcpu_state *state, std::ostream &stream, uint32_t pc, const uint8_t *opram); #endif /* __PSXCPU_H__ */ diff --git a/src/devices/cpu/psx/psxdasm.cpp b/src/devices/cpu/psx/psxdasm.cpp index e8dd0645577..7d65b097a86 100644 --- a/src/devices/cpu/psx/psxdasm.cpp +++ b/src/devices/cpu/psx/psxdasm.cpp @@ -683,16 +683,8 @@ unsigned DasmPSXCPU( psxcpu_state *state, std::ostream &stream, uint32_t pc, con return ( opram - oldopram ) | flags | DASMFLAG_SUPPORTED; } -unsigned DasmPSXCPU(psxcpu_state *state, char *buffer, uint32_t pc, const uint8_t *opram) -{ - std::ostringstream stream; - unsigned result = DasmPSXCPU(state, stream, pc, opram); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} CPU_DISASSEMBLE( psxcpu_generic ) { - return DasmPSXCPU( nullptr, buffer, pc, opram ); + return DasmPSXCPU( nullptr, stream, pc, opram ); } diff --git a/src/devices/cpu/rsp/rsp.cpp b/src/devices/cpu/rsp/rsp.cpp index 9c0e7e4cbd8..ff6b4043a37 100644 --- a/src/devices/cpu/rsp/rsp.cpp +++ b/src/devices/cpu/rsp/rsp.cpp @@ -139,10 +139,10 @@ rsp_device::rsp_device(const machine_config &mconfig, const char *tag, device_t { } -offs_t rsp_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t rsp_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( rsp ); - return CPU_DISASSEMBLE_NAME( rsp )(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME( rsp )(this, stream, pc, oprom, opram, options); } void rsp_device::rsp_add_imem(uint32_t *base) diff --git a/src/devices/cpu/rsp/rsp.h b/src/devices/cpu/rsp/rsp.h index 19e3557bf1e..e8a525237a9 100644 --- a/src/devices/cpu/rsp/rsp.h +++ b/src/devices/cpu/rsp/rsp.h @@ -189,7 +189,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 4; } virtual uint32_t disasm_max_opcode_bytes() const override { return 4; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; void unimplemented_opcode(uint32_t op); diff --git a/src/devices/cpu/rsp/rsp_dasm.cpp b/src/devices/cpu/rsp/rsp_dasm.cpp index bc6f5e76549..1222c0023a4 100644 --- a/src/devices/cpu/rsp/rsp_dasm.cpp +++ b/src/devices/cpu/rsp/rsp_dasm.cpp @@ -341,20 +341,11 @@ offs_t rsp_dasm_one(std::ostream &stream, offs_t pc, uint32_t op) return 4 | flags | DASMFLAG_SUPPORTED; } -offs_t rsp_dasm_one(char *buffer, offs_t pc, uint32_t op) -{ - std::ostringstream stream; - offs_t result = rsp_dasm_one(stream, pc, op); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} - /*****************************************************************************/ CPU_DISASSEMBLE( rsp ) { uint32_t op = *(uint32_t *)opram; op = big_endianize_int32(op); - return rsp_dasm_one(buffer, pc, op); + return rsp_dasm_one(stream, pc, op); } diff --git a/src/devices/cpu/s2650/2650dasm.cpp b/src/devices/cpu/s2650/2650dasm.cpp index 6b078177c56..872de095a3b 100644 --- a/src/devices/cpu/s2650/2650dasm.cpp +++ b/src/devices/cpu/s2650/2650dasm.cpp @@ -221,7 +221,7 @@ static char *ADR(int pc) } /* disassemble one instruction at PC into buff. return byte size of instr */ -static offs_t internal_disasm_s2650(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(s2650) { uint32_t flags = 0; int PC = pc; @@ -866,13 +866,3 @@ static offs_t internal_disasm_s2650(cpu_device *device, std::ostream &stream, of } return (pc - PC) | flags | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(s2650) -{ - std::ostringstream stream; - offs_t result = internal_disasm_s2650(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/s2650/s2650.cpp b/src/devices/cpu/s2650/s2650.cpp index 6844a1ee510..65fe70fb13a 100644 --- a/src/devices/cpu/s2650/s2650.cpp +++ b/src/devices/cpu/s2650/s2650.cpp @@ -42,10 +42,10 @@ s2650_device::s2650_device(const machine_config &mconfig, const char *tag, devic } -offs_t s2650_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t s2650_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( s2650 ); - return CPU_DISASSEMBLE_NAME(s2650)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(s2650)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/s2650/s2650.h b/src/devices/cpu/s2650/s2650.h index 8b7f36479f3..ae41f5baa6e 100644 --- a/src/devices/cpu/s2650/s2650.h +++ b/src/devices/cpu/s2650/s2650.h @@ -71,7 +71,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 3; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: address_space_config m_program_config; diff --git a/src/devices/cpu/saturn/saturn.cpp b/src/devices/cpu/saturn/saturn.cpp index 3f3f05b05bd..324caee4a99 100644 --- a/src/devices/cpu/saturn/saturn.cpp +++ b/src/devices/cpu/saturn/saturn.cpp @@ -58,10 +58,10 @@ saturn_device::saturn_device(const machine_config &mconfig, const char *tag, dev } -offs_t saturn_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t saturn_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( saturn ); - return CPU_DISASSEMBLE_NAME(saturn)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(saturn)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/saturn/saturn.h b/src/devices/cpu/saturn/saturn.h index c12dfd98418..df7c5f80df8 100644 --- a/src/devices/cpu/saturn/saturn.h +++ b/src/devices/cpu/saturn/saturn.h @@ -111,7 +111,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 20; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: address_space_config m_program_config; diff --git a/src/devices/cpu/saturn/saturnds.cpp b/src/devices/cpu/saturn/saturnds.cpp index a834ca5bc9c..a71aec2cbf6 100644 --- a/src/devices/cpu/saturn/saturnds.cpp +++ b/src/devices/cpu/saturn/saturnds.cpp @@ -1267,7 +1267,7 @@ static const int field_adr_a[]= static const int field_adr_b[]= { FieldP, FieldWP, FieldXS, FieldX, FieldS, FieldM, FieldB, FieldW }; -static offs_t internal_disasm_saturn(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(saturn) { int adr=0; @@ -1468,13 +1468,3 @@ static offs_t internal_disasm_saturn(cpu_device *device, std::ostream &stream, o return pos; } - - -CPU_DISASSEMBLE(saturn) -{ - std::ostringstream stream; - offs_t result = internal_disasm_saturn(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/sc61860/sc61860.cpp b/src/devices/cpu/sc61860/sc61860.cpp index e22bc422270..72843013855 100644 --- a/src/devices/cpu/sc61860/sc61860.cpp +++ b/src/devices/cpu/sc61860/sc61860.cpp @@ -64,10 +64,10 @@ sc61860_device::sc61860_device(const machine_config &mconfig, const char *tag, d } -offs_t sc61860_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t sc61860_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( sc61860 ); - return CPU_DISASSEMBLE_NAME(sc61860)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(sc61860)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/sc61860/sc61860.h b/src/devices/cpu/sc61860/sc61860.h index d8f993a60f4..e3da855936a 100644 --- a/src/devices/cpu/sc61860/sc61860.h +++ b/src/devices/cpu/sc61860/sc61860.h @@ -111,7 +111,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 4; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: address_space_config m_program_config; diff --git a/src/devices/cpu/sc61860/scdasm.cpp b/src/devices/cpu/sc61860/scdasm.cpp index fce5b8cd608..050dfaa3b1d 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 }, }; -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) +CPU_DISASSEMBLE(sc61860) { const uint8_t *base_oprom = oprom; int oper=*(oprom++); @@ -208,13 +208,3 @@ static offs_t internal_disasm_sc61860(cpu_device *device, std::ostream &stream, } 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; -} diff --git a/src/devices/cpu/scmp/scmp.cpp b/src/devices/cpu/scmp/scmp.cpp index 04f7023ac62..49e5d737695 100644 --- a/src/devices/cpu/scmp/scmp.cpp +++ b/src/devices/cpu/scmp/scmp.cpp @@ -53,10 +53,10 @@ ins8060_device::ins8060_device(const machine_config &mconfig, const char *tag, d } -offs_t scmp_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t scmp_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( scmp ); - return CPU_DISASSEMBLE_NAME(scmp)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(scmp)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/scmp/scmp.h b/src/devices/cpu/scmp/scmp.h index 9706b4167c0..be53c83e16c 100644 --- a/src/devices/cpu/scmp/scmp.h +++ b/src/devices/cpu/scmp/scmp.h @@ -58,7 +58,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 2; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: address_space_config m_program_config; diff --git a/src/devices/cpu/scmp/scmpdasm.cpp b/src/devices/cpu/scmp/scmpdasm.cpp index 359c819bdda..2f77afc519d 100644 --- a/src/devices/cpu/scmp/scmpdasm.cpp +++ b/src/devices/cpu/scmp/scmpdasm.cpp @@ -13,7 +13,7 @@ #define OP(A) oprom[(A) - PC] #define ARG(A) opram[(A) - PC] -static offs_t internal_disasm_scmp(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(scmp) { unsigned PC = pc; uint8_t op = OP(pc++); @@ -151,13 +151,3 @@ static offs_t internal_disasm_scmp(cpu_device *device, std::ostream &stream, off return (pc - PC); } - - -CPU_DISASSEMBLE(scmp) -{ - std::ostringstream stream; - offs_t result = internal_disasm_scmp(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/score/score.h b/src/devices/cpu/score/score.h index 5f4b2ec2c2b..8fb1002095d 100644 --- a/src/devices/cpu/score/score.h +++ b/src/devices/cpu/score/score.h @@ -55,14 +55,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 2; } virtual uint32_t disasm_max_opcode_bytes() const override { return 4; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override - { - std::ostringstream stream; - offs_t result = disasm_disassemble(stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; - } + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: // helpers @@ -150,8 +143,6 @@ private: static const char *const m_i1a_op[8]; static const char *const m_i1b_op[8]; static const char *const m_cr_op[2]; - - offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options); }; extern const device_type SCORE7; diff --git a/src/devices/cpu/scudsp/scudsp.cpp b/src/devices/cpu/scudsp/scudsp.cpp index 89173a7a60d..4d608b3b8d5 100644 --- a/src/devices/cpu/scudsp/scudsp.cpp +++ b/src/devices/cpu/scudsp/scudsp.cpp @@ -1033,8 +1033,8 @@ void scudsp_cpu_device::state_string_export(const device_state_entry &entry, std } -offs_t scudsp_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t scudsp_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( scudsp ); - return CPU_DISASSEMBLE_NAME(scudsp)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(scudsp)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/scudsp/scudsp.h b/src/devices/cpu/scudsp/scudsp.h index fb18d832703..b30667dd319 100644 --- a/src/devices/cpu/scudsp/scudsp.h +++ b/src/devices/cpu/scudsp/scudsp.h @@ -101,7 +101,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 4; } virtual uint32_t disasm_max_opcode_bytes() const override { return 4; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; devcb_write_line m_out_irq_cb; devcb_read16 m_in_dma_cb; diff --git a/src/devices/cpu/scudsp/scudspdasm.cpp b/src/devices/cpu/scudsp/scudspdasm.cpp index 068107a99d6..584073aceca 100644 --- a/src/devices/cpu/scudsp/scudspdasm.cpp +++ b/src/devices/cpu/scudsp/scudspdasm.cpp @@ -237,7 +237,7 @@ static void scudsp_dasm_prefix( const char* format, char* buffer, uint32_t *data } -static offs_t internal_disasm_scudsp(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(scudsp) { uint32_t op = oprom[0]<<24|oprom[1]<<16|oprom[2]<<8|oprom[3]<<0; unsigned size = 1; @@ -361,13 +361,3 @@ static offs_t internal_disasm_scudsp(cpu_device *device, std::ostream &stream, o return size; } - - -CPU_DISASSEMBLE(scudsp) -{ - std::ostringstream stream; - offs_t result = internal_disasm_scudsp(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/se3208/se3208.cpp b/src/devices/cpu/se3208/se3208.cpp index 9420e5fabe8..32cbf4d224d 100644 --- a/src/devices/cpu/se3208/se3208.cpp +++ b/src/devices/cpu/se3208/se3208.cpp @@ -1838,8 +1838,8 @@ void se3208_device::execute_set_input( int line, int state ) m_IRQ=state; } -offs_t se3208_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t se3208_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( se3208 ); - return CPU_DISASSEMBLE_NAME(se3208)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(se3208)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/se3208/se3208.h b/src/devices/cpu/se3208/se3208.h index a4fac45e1dd..7f005bec2f3 100644 --- a/src/devices/cpu/se3208/se3208.h +++ b/src/devices/cpu/se3208/se3208.h @@ -37,7 +37,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 2; } virtual uint32_t disasm_max_opcode_bytes() const override { return 2; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: address_space_config m_program_config; diff --git a/src/devices/cpu/se3208/se3208dis.cpp b/src/devices/cpu/se3208/se3208dis.cpp index 093dbc123c3..ca7d3761d61 100644 --- a/src/devices/cpu/se3208/se3208dis.cpp +++ b/src/devices/cpu/se3208/se3208dis.cpp @@ -1400,7 +1400,7 @@ static _OP DecodeOp(uint16_t Opcode) } -static offs_t internal_disasm_se3208(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(se3208) { uint16_t Opcode; @@ -1411,13 +1411,3 @@ static offs_t internal_disasm_se3208(cpu_device *device, std::ostream &stream, o Opcode=oprom[0] | (oprom[1] << 8); return 2 | ((*DecodeOp(Opcode))(Opcode, stream)) | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(se3208) -{ - std::ostringstream stream; - offs_t result = internal_disasm_se3208(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/sh2/sh2.cpp b/src/devices/cpu/sh2/sh2.cpp index 78bf317d3e2..ad000212a13 100644 --- a/src/devices/cpu/sh2/sh2.cpp +++ b/src/devices/cpu/sh2/sh2.cpp @@ -248,10 +248,10 @@ const address_space_config *sh2_device::memory_space_config(address_spacenum spa } } -offs_t sh2_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t sh2_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( sh2 ); - return CPU_DISASSEMBLE_NAME( sh2 )(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME( sh2 )(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/sh2/sh2.h b/src/devices/cpu/sh2/sh2.h index cf38bea2526..b13ce13f618 100644 --- a/src/devices/cpu/sh2/sh2.h +++ b/src/devices/cpu/sh2/sh2.h @@ -135,7 +135,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 2; } virtual uint32_t disasm_max_opcode_bytes() const override { return 2; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; address_space *m_program, *m_decrypted_program; private: diff --git a/src/devices/cpu/sh2/sh2dasm.cpp b/src/devices/cpu/sh2/sh2dasm.cpp index a484c2a9cb4..ef823ee28a5 100644 --- a/src/devices/cpu/sh2/sh2dasm.cpp +++ b/src/devices/cpu/sh2/sh2dasm.cpp @@ -606,9 +606,5 @@ unsigned DasmSH2(std::ostream &stream, unsigned pc, uint16_t opcode) CPU_DISASSEMBLE(sh2) { - std::ostringstream stream; - offs_t result = DasmSH2(stream, pc, (oprom[0] << 8) | oprom[1]); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; + return DasmSH2(stream, pc, (oprom[0] << 8) | oprom[1]); } diff --git a/src/devices/cpu/sh4/sh4.cpp b/src/devices/cpu/sh4/sh4.cpp index 773dc9ae566..1d5c69ad483 100644 --- a/src/devices/cpu/sh4/sh4.cpp +++ b/src/devices/cpu/sh4/sh4.cpp @@ -151,27 +151,27 @@ sh4be_device::sh4be_device(const machine_config &mconfig, const char *tag, devic } -offs_t sh34_base_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t sh34_base_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( sh4 ); - return CPU_DISASSEMBLE_NAME(sh4)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(sh4)(this, stream, pc, oprom, opram, options); } -offs_t sh3be_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t sh3be_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( sh4be ); - return CPU_DISASSEMBLE_NAME(sh4be)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(sh4be)(this, stream, pc, oprom, opram, options); } -offs_t sh4be_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t sh4be_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( sh4be ); - return CPU_DISASSEMBLE_NAME(sh4be)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(sh4be)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/sh4/sh4.h b/src/devices/cpu/sh4/sh4.h index 9af8dd3fa1c..7531363c2da 100644 --- a/src/devices/cpu/sh4/sh4.h +++ b/src/devices/cpu/sh4/sh4.h @@ -225,7 +225,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 2; } virtual uint32_t disasm_max_opcode_bytes() const override { return 2; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; protected: address_space_config m_program_config; @@ -758,7 +758,7 @@ public: protected: virtual void execute_run() override; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; }; @@ -776,7 +776,7 @@ public: protected: virtual void execute_run() override; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; }; diff --git a/src/devices/cpu/sh4/sh4dasm.cpp b/src/devices/cpu/sh4/sh4dasm.cpp index 2815dc720be..faff895f3a5 100644 --- a/src/devices/cpu/sh4/sh4dasm.cpp +++ b/src/devices/cpu/sh4/sh4dasm.cpp @@ -896,18 +896,10 @@ unsigned DasmSH4(std::ostream &stream, unsigned pc, uint16_t opcode) CPU_DISASSEMBLE(sh4) { - std::ostringstream stream; - offs_t result = DasmSH4(stream, pc, (oprom[1] << 8) | oprom[0]); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; + return DasmSH4(stream, pc, (oprom[1] << 8) | oprom[0]); } CPU_DISASSEMBLE(sh4be) { - std::ostringstream stream; - offs_t result = DasmSH4(stream, pc, (oprom[0] << 8) | oprom[1]); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; + return DasmSH4(stream, pc, (oprom[0] << 8) | oprom[1]); } diff --git a/src/devices/cpu/sharc/sharc.cpp b/src/devices/cpu/sharc/sharc.cpp index 228acd8c61a..2555d25d7ee 100644 --- a/src/devices/cpu/sharc/sharc.cpp +++ b/src/devices/cpu/sharc/sharc.cpp @@ -80,10 +80,10 @@ adsp21062_device::adsp21062_device(const machine_config &mconfig, const char *ta } -offs_t adsp21062_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t adsp21062_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( sharc ); - return CPU_DISASSEMBLE_NAME(sharc)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(sharc)(this, stream, pc, oprom, opram, options); } void adsp21062_device::enable_recompiler() diff --git a/src/devices/cpu/sharc/sharc.h b/src/devices/cpu/sharc/sharc.h index bf3ae7edaa5..7d36321364b 100644 --- a/src/devices/cpu/sharc/sharc.h +++ b/src/devices/cpu/sharc/sharc.h @@ -263,7 +263,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 6; } virtual uint32_t disasm_max_opcode_bytes() const override { return 6; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; direct_read_data *m_direct; diff --git a/src/devices/cpu/sharc/sharcdsm.cpp b/src/devices/cpu/sharc/sharcdsm.cpp index 192a9fa9bfc..8fdbee4a18b 100644 --- a/src/devices/cpu/sharc/sharcdsm.cpp +++ b/src/devices/cpu/sharc/sharcdsm.cpp @@ -1225,6 +1225,8 @@ CPU_DISASSEMBLE( sharc ) ((uint64_t)oprom[2] << 16) | ((uint64_t)oprom[3] << 24) | ((uint64_t)oprom[4] << 32) | ((uint64_t)oprom[5] << 40); + char buffer[256]; flags = sharc_dasm_one(buffer, pc, op); + stream << buffer; return 1 | flags | DASMFLAG_SUPPORTED; } diff --git a/src/devices/cpu/sharc/sharcops.hxx b/src/devices/cpu/sharc/sharcops.hxx index 4454bf0cf69..c64a56c601d 100644 --- a/src/devices/cpu/sharc/sharcops.hxx +++ b/src/devices/cpu/sharc/sharcops.hxx @@ -2722,8 +2722,8 @@ void adsp21062_device::sharcop_idle() void adsp21062_device::sharcop_unimplemented() { extern CPU_DISASSEMBLE(sharc); - char dasm[1000]; + std::stringstream dasm; CPU_DISASSEMBLE_NAME(sharc)(nullptr, dasm, m_core->pc, nullptr, nullptr, 0); - osd_printf_debug("SHARC: %08X: %s\n", m_core->pc, dasm); + osd_printf_debug("SHARC: %08X: %s\n", m_core->pc, dasm.str().c_str()); fatalerror("SHARC: Unimplemented opcode %04X%08X at %08X\n", (uint16_t)(m_core->opcode >> 32), (uint32_t)(m_core->opcode), m_core->pc); } diff --git a/src/devices/cpu/sm510/kb1013vk1-2.h b/src/devices/cpu/sm510/kb1013vk1-2.h index 825b41f8cc3..56896c940ac 100644 --- a/src/devices/cpu/sm510/kb1013vk1-2.h +++ b/src/devices/cpu/sm510/kb1013vk1-2.h @@ -26,7 +26,7 @@ public: kb1013vk12_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); protected: - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual void execute_one() override; // opcode handlers diff --git a/src/devices/cpu/sm510/kb1013vk1-2core.cpp b/src/devices/cpu/sm510/kb1013vk1-2core.cpp index 25cb6a8288c..b7286e97401 100644 --- a/src/devices/cpu/sm510/kb1013vk1-2core.cpp +++ b/src/devices/cpu/sm510/kb1013vk1-2core.cpp @@ -34,10 +34,10 @@ kb1013vk12_device::kb1013vk12_device(const machine_config &mconfig, const char * // disasm -offs_t kb1013vk12_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t kb1013vk12_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE(kb1013vk12); - return CPU_DISASSEMBLE_NAME(kb1013vk12)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(kb1013vk12)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/sm510/sm500.h b/src/devices/cpu/sm510/sm500.h index 57924114414..262c75fc29b 100644 --- a/src/devices/cpu/sm510/sm500.h +++ b/src/devices/cpu/sm510/sm500.h @@ -50,7 +50,7 @@ public: sm500_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, int stack_levels, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data, const char *shortname, const char *source); protected: - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual void execute_one() override; virtual void get_opcode_param() override; diff --git a/src/devices/cpu/sm510/sm500core.cpp b/src/devices/cpu/sm510/sm500core.cpp index deb32f652f7..84c1c557eb6 100644 --- a/src/devices/cpu/sm510/sm500core.cpp +++ b/src/devices/cpu/sm510/sm500core.cpp @@ -38,10 +38,10 @@ sm500_device::sm500_device(const machine_config &mconfig, device_type type, cons // disasm -offs_t sm500_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t sm500_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE(sm500); - return CPU_DISASSEMBLE_NAME(sm500)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(sm500)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/sm510/sm510.h b/src/devices/cpu/sm510/sm510.h index 0421288f5cb..c60b0395af2 100644 --- a/src/devices/cpu/sm510/sm510.h +++ b/src/devices/cpu/sm510/sm510.h @@ -298,7 +298,7 @@ public: sm510_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); protected: - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual void execute_one() override; virtual void get_opcode_param() override; @@ -313,7 +313,7 @@ public: sm511_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, int stack_levels, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data, const char *shortname, const char *source); protected: - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual void execute_one() override; virtual void get_opcode_param() override; }; diff --git a/src/devices/cpu/sm510/sm510core.cpp b/src/devices/cpu/sm510/sm510core.cpp index e2fdb158544..de503fcbc54 100644 --- a/src/devices/cpu/sm510/sm510core.cpp +++ b/src/devices/cpu/sm510/sm510core.cpp @@ -36,10 +36,10 @@ sm510_device::sm510_device(const machine_config &mconfig, const char *tag, devic // disasm -offs_t sm510_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t sm510_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE(sm510); - return CPU_DISASSEMBLE_NAME(sm510)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(sm510)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/sm510/sm510d.cpp b/src/devices/cpu/sm510/sm510d.cpp index 6a5d97f50de..3929c52a82f 100644 --- a/src/devices/cpu/sm510/sm510d.cpp +++ b/src/devices/cpu/sm510/sm510d.cpp @@ -192,15 +192,6 @@ static offs_t sm510_common_disasm(const uint8_t *lut_mnemonic, const uint8_t *lu return len | s_flags[instr] | DASMFLAG_SUPPORTED; } -static offs_t sm510_common_disasm(const uint8_t *lut_mnemonic, const uint8_t *lut_extended, char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram) -{ - std::ostringstream stream; - offs_t result = sm510_common_disasm(lut_mnemonic, lut_extended, stream, pc, oprom, opram); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} - // SM510 disasm @@ -230,7 +221,7 @@ static const uint8_t sm510_mnemonic[0x100] = CPU_DISASSEMBLE(sm510) { - return sm510_common_disasm(sm510_mnemonic, nullptr, buffer, pc, oprom, opram); + return sm510_common_disasm(sm510_mnemonic, nullptr, stream, pc, oprom, opram); } @@ -272,7 +263,7 @@ CPU_DISASSEMBLE(sm511) memset(ext, 0, 0x100); memcpy(ext + 0x30, sm511_extended, 0x10); - return sm510_common_disasm(sm511_mnemonic, ext, buffer, pc, oprom, opram); + return sm510_common_disasm(sm511_mnemonic, ext, stream, pc, oprom, opram); } @@ -314,7 +305,7 @@ CPU_DISASSEMBLE(sm500) memset(ext, 0, 0x100); memcpy(ext + 0x00, sm500_extended, 0x10); - return sm510_common_disasm(sm500_mnemonic, ext, buffer, pc, oprom, opram); + return sm510_common_disasm(sm500_mnemonic, ext, stream, pc, oprom, opram); } @@ -356,5 +347,5 @@ CPU_DISASSEMBLE(kb1013vk12) memset(ext, 0, 0x100); memcpy(ext + 0x00, kb1013vk12_extended, 0x10); - return sm510_common_disasm(kb1013vk12_mnemonic, ext, buffer, pc, oprom, opram); + return sm510_common_disasm(kb1013vk12_mnemonic, ext, stream, pc, oprom, opram); } diff --git a/src/devices/cpu/sm510/sm511core.cpp b/src/devices/cpu/sm510/sm511core.cpp index b43cacf9dca..ce134b24588 100644 --- a/src/devices/cpu/sm510/sm511core.cpp +++ b/src/devices/cpu/sm510/sm511core.cpp @@ -35,10 +35,10 @@ ADDRESS_MAP_END // disasm -offs_t sm511_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t sm511_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE(sm511); - return CPU_DISASSEMBLE_NAME(sm511)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(sm511)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/sm8500/sm8500.cpp b/src/devices/cpu/sm8500/sm8500.cpp index c03ed425dbe..90aaaaf6ed6 100644 --- a/src/devices/cpu/sm8500/sm8500.cpp +++ b/src/devices/cpu/sm8500/sm8500.cpp @@ -341,10 +341,10 @@ void sm8500_cpu_device::process_interrupts() } -offs_t sm8500_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t sm8500_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( sm8500 ); - return CPU_DISASSEMBLE_NAME(sm8500)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(sm8500)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/sm8500/sm8500.h b/src/devices/cpu/sm8500/sm8500.h index 5356b776c8c..eb0c1f9f703 100644 --- a/src/devices/cpu/sm8500/sm8500.h +++ b/src/devices/cpu/sm8500/sm8500.h @@ -76,7 +76,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 5; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; inline void get_sp(); uint8_t mem_readbyte(uint32_t offset) const; diff --git a/src/devices/cpu/sm8500/sm8500d.cpp b/src/devices/cpu/sm8500/sm8500d.cpp index 4e63baf36e3..1b8b7dd2392 100644 --- a/src/devices/cpu/sm8500/sm8500d.cpp +++ b/src/devices/cpu/sm8500/sm8500d.cpp @@ -173,7 +173,7 @@ static const sm8500dasm mnemonic[256] = { }; -static offs_t internal_disasm_sm8500(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(sm8500) { const sm8500dasm *instr; uint8_t op; @@ -579,13 +579,3 @@ static offs_t internal_disasm_sm8500(cpu_device *device, std::ostream &stream, o return pos | s_flags[instr->mnemonic] | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(sm8500) -{ - std::ostringstream stream; - offs_t result = internal_disasm_sm8500(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/sparc/mb86901.cpp b/src/devices/cpu/sparc/mb86901.cpp index e14921dfbe2..3fc1eca330d 100644 --- a/src/devices/cpu/sparc/mb86901.cpp +++ b/src/devices/cpu/sparc/mb86901.cpp @@ -548,10 +548,10 @@ uint32_t mb86901_device::disasm_max_opcode_bytes() const // helper function //------------------------------------------------- -offs_t mb86901_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t mb86901_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { uint32_t op = *reinterpret_cast<const uint32_t *>(oprom); - return m_dasm.dasm(buffer, pc, big_endianize_int32(op)); + return m_dasm.dasm(stream, pc, big_endianize_int32(op)); } diff --git a/src/devices/cpu/sparc/sparc.h b/src/devices/cpu/sparc/sparc.h index 07fa4cd10a4..dbd7113f2e5 100644 --- a/src/devices/cpu/sparc/sparc.h +++ b/src/devices/cpu/sparc/sparc.h @@ -45,7 +45,7 @@ public: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override; virtual uint32_t disasm_max_opcode_bytes() const override; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/sparc/sparcdasm.cpp b/src/devices/cpu/sparc/sparcdasm.cpp index 2c9b3f11cc1..296c987a467 100644 --- a/src/devices/cpu/sparc/sparcdasm.cpp +++ b/src/devices/cpu/sparc/sparcdasm.cpp @@ -1050,16 +1050,6 @@ offs_t sparc_disassembler::dasm(std::ostream &stream, offs_t pc, uint32_t op) co } -offs_t sparc_disassembler::dasm(char *buf, offs_t pc, uint32_t op) const -{ - std::ostringstream stream; - const offs_t result(dasm(stream, pc, op)); - const std::string stream_str(stream.str()); - strcpy(buf, stream_str.c_str()); - return result; -} - - offs_t sparc_disassembler::dasm_invalid(std::ostream &stream, offs_t pc, uint32_t op) const { util::stream_format(stream, "%-*s0x%08x ! ", m_op_field_width, ".word", op); diff --git a/src/devices/cpu/sparc/sparcdasm.h b/src/devices/cpu/sparc/sparcdasm.h index de0b89d3d74..f5643a0e87b 100644 --- a/src/devices/cpu/sparc/sparcdasm.h +++ b/src/devices/cpu/sparc/sparcdasm.h @@ -107,7 +107,6 @@ public: } offs_t dasm(std::ostream &stream, offs_t pc, uint32_t op) const; - offs_t dasm(char *buf, offs_t pc, uint32_t op) const; private: struct branch_desc diff --git a/src/devices/cpu/spc700/spc700.cpp b/src/devices/cpu/spc700/spc700.cpp index 7d7468f8d9a..39b4efb293c 100644 --- a/src/devices/cpu/spc700/spc700.cpp +++ b/src/devices/cpu/spc700/spc700.cpp @@ -1344,9 +1344,9 @@ void spc700_device::execute_set_input( int inptnum, int state ) #include "spc700ds.h" -offs_t spc700_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t spc700_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { - return CPU_DISASSEMBLE_NAME(spc700)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(spc700)(this, stream, pc, oprom, opram, options); } //int dump_flag = 0; diff --git a/src/devices/cpu/spc700/spc700.h b/src/devices/cpu/spc700/spc700.h index 948e4d5e27c..ba1e064856d 100644 --- a/src/devices/cpu/spc700/spc700.h +++ b/src/devices/cpu/spc700/spc700.h @@ -35,7 +35,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 3; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: address_space_config m_program_config; diff --git a/src/devices/cpu/spc700/spc700ds.cpp b/src/devices/cpu/spc700/spc700ds.cpp index 08fbd80fadc..de7accc7cb8 100644 --- a/src/devices/cpu/spc700/spc700ds.cpp +++ b/src/devices/cpu/spc700/spc700ds.cpp @@ -337,7 +337,7 @@ static inline unsigned int read_16_immediate(void) return result | (*rombase++ << 8); } -static offs_t internal_disasm_spc700(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(spc700) { const spc700_opcode_struct* opcode; uint32_t flags = 0; @@ -430,13 +430,3 @@ static offs_t internal_disasm_spc700(cpu_device *device, std::ostream &stream, o } return (g_pc - pc) | flags | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(spc700) -{ - std::ostringstream stream; - offs_t result = internal_disasm_spc700(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/ssem/ssem.cpp b/src/devices/cpu/ssem/ssem.cpp index a76d9a44182..c2f462a6738 100644 --- a/src/devices/cpu/ssem/ssem.cpp +++ b/src/devices/cpu/ssem/ssem.cpp @@ -188,10 +188,10 @@ uint32_t ssem_device::disasm_max_opcode_bytes() const // helper function //------------------------------------------------- -offs_t ssem_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t ssem_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( ssem ); - return CPU_DISASSEMBLE_NAME(ssem)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(ssem)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/ssem/ssem.h b/src/devices/cpu/ssem/ssem.h index 4bfebaa432e..69118e1326d 100644 --- a/src/devices/cpu/ssem/ssem.h +++ b/src/devices/cpu/ssem/ssem.h @@ -42,7 +42,7 @@ public: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override; virtual uint32_t disasm_max_opcode_bytes() const override; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/ssem/ssemdasm.cpp b/src/devices/cpu/ssem/ssemdasm.cpp index 069d2ad9da3..8ad79f96d8c 100644 --- a/src/devices/cpu/ssem/ssemdasm.cpp +++ b/src/devices/cpu/ssem/ssemdasm.cpp @@ -62,17 +62,6 @@ static offs_t ssem_dasm_one(std::ostream &stream, offs_t pc, uint32_t op) return 4 | DASMFLAG_SUPPORTED; } - -static offs_t ssem_dasm_one(char *buffer, offs_t pc, uint32_t op) -{ - std::ostringstream stream; - offs_t result = ssem_dasm_one(stream, pc, op); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} - - /*****************************************************************************/ CPU_DISASSEMBLE( ssem ) @@ -81,5 +70,5 @@ CPU_DISASSEMBLE( ssem ) (*(uint8_t *)(opram + 1) << 16) | (*(uint8_t *)(opram + 2) << 8) | (*(uint8_t *)(opram + 3) << 0); - return ssem_dasm_one(buffer, pc, op); + return ssem_dasm_one(stream, pc, op); } diff --git a/src/devices/cpu/ssp1601/ssp1601.cpp b/src/devices/cpu/ssp1601/ssp1601.cpp index 1d38f5981a9..25005fd8701 100644 --- a/src/devices/cpu/ssp1601/ssp1601.cpp +++ b/src/devices/cpu/ssp1601/ssp1601.cpp @@ -200,10 +200,10 @@ ssp1601_device::ssp1601_device(const machine_config &mconfig, const char *tag, d } -offs_t ssp1601_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t ssp1601_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( ssp1601 ); - return CPU_DISASSEMBLE_NAME(ssp1601)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(ssp1601)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/ssp1601/ssp1601.h b/src/devices/cpu/ssp1601/ssp1601.h index b59fff81e4f..cf5029fcee5 100644 --- a/src/devices/cpu/ssp1601/ssp1601.h +++ b/src/devices/cpu/ssp1601/ssp1601.h @@ -45,7 +45,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 2; } virtual uint32_t disasm_max_opcode_bytes() const override { return 4; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: address_space_config m_program_config; diff --git a/src/devices/cpu/ssp1601/ssp1601d.cpp b/src/devices/cpu/ssp1601/ssp1601d.cpp index 71a9dbdcaed..465dd657d90 100644 --- a/src/devices/cpu/ssp1601/ssp1601d.cpp +++ b/src/devices/cpu/ssp1601/ssp1601d.cpp @@ -288,20 +288,11 @@ static unsigned dasm_ssp1601(std::ostream &stream, unsigned pc, const uint8_t *o return size | flags | DASMFLAG_SUPPORTED; } -static unsigned dasm_ssp1601(char *buffer, unsigned pc, const uint8_t *oprom) -{ - std::ostringstream stream; - offs_t result = dasm_ssp1601(stream, pc, oprom); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} - // vim:ts=4 CPU_DISASSEMBLE( ssp1601 ) { //ssp1601_state_t *ssp1601_state = get_safe_token(device); - return dasm_ssp1601(buffer, pc, oprom); + return dasm_ssp1601(stream, pc, oprom); } diff --git a/src/devices/cpu/superfx/superfx.cpp b/src/devices/cpu/superfx/superfx.cpp index 9da3d9bd4c7..7ed250b49f4 100644 --- a/src/devices/cpu/superfx/superfx.cpp +++ b/src/devices/cpu/superfx/superfx.cpp @@ -1438,15 +1438,6 @@ void superfx_device::execute_run() } } -offs_t superfx_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) -{ - std::ostringstream stream; - offs_t result = disasm_disassemble(stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} - offs_t superfx_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { uint8_t op = *(uint8_t *)(opram + 0); diff --git a/src/devices/cpu/superfx/superfx.h b/src/devices/cpu/superfx/superfx.h index ba62122eaf2..7f04f44171c 100644 --- a/src/devices/cpu/superfx/superfx.h +++ b/src/devices/cpu/superfx/superfx.h @@ -126,7 +126,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 3; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: address_space_config m_program_config; @@ -209,8 +209,6 @@ private: inline void superfx_add_clocks_internal(uint32_t clocks); void superfx_timing_reset(); inline void superfx_dreg_sfr_sz_update(); - - offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options); }; diff --git a/src/devices/cpu/t11/t11.cpp b/src/devices/cpu/t11/t11.cpp index ce9e4290e87..5c889099cd7 100644 --- a/src/devices/cpu/t11/t11.cpp +++ b/src/devices/cpu/t11/t11.cpp @@ -422,8 +422,8 @@ void t11_device::execute_run() } -offs_t t11_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t t11_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( t11 ); - return CPU_DISASSEMBLE_NAME(t11)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(t11)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/t11/t11.h b/src/devices/cpu/t11/t11.h index 1c62db4ee17..bad743a7645 100644 --- a/src/devices/cpu/t11/t11.h +++ b/src/devices/cpu/t11/t11.h @@ -67,7 +67,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 2; } virtual uint32_t disasm_max_opcode_bytes() const override { return 6; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; protected: address_space_config m_program_config; diff --git a/src/devices/cpu/t11/t11dasm.cpp b/src/devices/cpu/t11/t11dasm.cpp index 54cf781f827..b1936566f9c 100644 --- a/src/devices/cpu/t11/t11dasm.cpp +++ b/src/devices/cpu/t11/t11dasm.cpp @@ -84,7 +84,7 @@ static unsigned MakeEA (char *ea, int lo, unsigned pc, int width) } -static offs_t internal_disasm_t11(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(t11) { char ea1[32], ea2[32]; unsigned PC = pc; @@ -516,13 +516,3 @@ static offs_t internal_disasm_t11(cpu_device *device, std::ostream &stream, offs return (pc - PC) | flags | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(t11) -{ - std::ostringstream stream; - offs_t result = internal_disasm_t11(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/tlcs90/tlcs90.h b/src/devices/cpu/tlcs90/tlcs90.h index b303f8dd3f6..ba25d0ff927 100644 --- a/src/devices/cpu/tlcs90/tlcs90.h +++ b/src/devices/cpu/tlcs90/tlcs90.h @@ -58,14 +58,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 6; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override - { - std::ostringstream stream; - offs_t result = disasm_disassemble(stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; - } + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: enum e_mode { @@ -147,7 +140,6 @@ private: void t90_stop_timer(int i); void t90_stop_timer4(); void set_irq_line(int irq, int state); - offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options); }; diff --git a/src/devices/cpu/tlcs900/dasm900.cpp b/src/devices/cpu/tlcs900/dasm900.cpp index aa1bdcbc9b2..a4d46be2dde 100644 --- a/src/devices/cpu/tlcs900/dasm900.cpp +++ b/src/devices/cpu/tlcs900/dasm900.cpp @@ -1433,7 +1433,7 @@ static const char *const s_cond[16] = }; -static offs_t internal_disasm_tlcs900(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(tlcs900) { const tlcs900inst *dasm; std::string buf; @@ -2256,13 +2256,3 @@ static offs_t internal_disasm_tlcs900(cpu_device *device, std::ostream &stream, return pos | flags | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(tlcs900) -{ - std::ostringstream stream; - offs_t result = internal_disasm_tlcs900(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/tlcs900/tlcs900.cpp b/src/devices/cpu/tlcs900/tlcs900.cpp index cdeb65e2d21..9b87d5f54b4 100644 --- a/src/devices/cpu/tlcs900/tlcs900.cpp +++ b/src/devices/cpu/tlcs900/tlcs900.cpp @@ -141,10 +141,10 @@ void tmp95c063_device::device_config_complete() } -offs_t tlcs900h_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t tlcs900h_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( tlcs900 ); - return CPU_DISASSEMBLE_NAME(tlcs900)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(tlcs900)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/tlcs900/tlcs900.h b/src/devices/cpu/tlcs900/tlcs900.h index e0ab4a99b15..12e6f8f1914 100644 --- a/src/devices/cpu/tlcs900/tlcs900.h +++ b/src/devices/cpu/tlcs900/tlcs900.h @@ -76,7 +76,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 7; } /* FIXME */ - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; protected: int m_am8_16; diff --git a/src/devices/cpu/tms1000/tms0980.cpp b/src/devices/cpu/tms1000/tms0980.cpp index 523844b6366..b3678165d4a 100644 --- a/src/devices/cpu/tms1000/tms0980.cpp +++ b/src/devices/cpu/tms1000/tms0980.cpp @@ -90,10 +90,10 @@ machine_config_constructor tms1980_cpu_device::device_mconfig_additions() const // disasm -offs_t tms0980_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t tms0980_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE(tms0980); - return CPU_DISASSEMBLE_NAME(tms0980)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(tms0980)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/tms1000/tms0980.h b/src/devices/cpu/tms1000/tms0980.h index 921c585769b..afbcaa3647d 100644 --- a/src/devices/cpu/tms1000/tms0980.h +++ b/src/devices/cpu/tms1000/tms0980.h @@ -28,7 +28,7 @@ protected: virtual uint32_t disasm_min_opcode_bytes() const override { return 2; } virtual uint32_t disasm_max_opcode_bytes() const override { return 2; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual uint8_t read_k_input() override; virtual void set_cki_bus() override; diff --git a/src/devices/cpu/tms1000/tms1000.cpp b/src/devices/cpu/tms1000/tms1000.cpp index 5948d9753ff..40add17105c 100644 --- a/src/devices/cpu/tms1000/tms1000.cpp +++ b/src/devices/cpu/tms1000/tms1000.cpp @@ -93,10 +93,10 @@ machine_config_constructor tms1000_cpu_device::device_mconfig_additions() const // disasm -offs_t tms1000_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t tms1000_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE(tms1000); - return CPU_DISASSEMBLE_NAME(tms1000)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(tms1000)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/tms1000/tms1000.h b/src/devices/cpu/tms1000/tms1000.h index 7cb5ba66ac6..049b24873fd 100644 --- a/src/devices/cpu/tms1000/tms1000.h +++ b/src/devices/cpu/tms1000/tms1000.h @@ -24,7 +24,7 @@ protected: virtual machine_config_constructor device_mconfig_additions() const override; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; }; class tms1070_cpu_device : public tms1000_cpu_device diff --git a/src/devices/cpu/tms1000/tms1100.cpp b/src/devices/cpu/tms1000/tms1100.cpp index 6ef15a98043..93c7c07a69c 100644 --- a/src/devices/cpu/tms1000/tms1100.cpp +++ b/src/devices/cpu/tms1000/tms1100.cpp @@ -49,10 +49,10 @@ tms1370_cpu_device::tms1370_cpu_device(const machine_config &mconfig, const char // disasm -offs_t tms1100_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t tms1100_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE(tms1100); - return CPU_DISASSEMBLE_NAME(tms1100)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(tms1100)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/tms1000/tms1100.h b/src/devices/cpu/tms1000/tms1100.h index e57f880df12..b5df68e40cc 100644 --- a/src/devices/cpu/tms1000/tms1100.h +++ b/src/devices/cpu/tms1000/tms1100.h @@ -22,7 +22,7 @@ protected: // overrides virtual void device_reset() override; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual void op_setr() override; virtual void op_rstr() override; diff --git a/src/devices/cpu/tms1000/tms1k_dasm.cpp b/src/devices/cpu/tms1000/tms1k_dasm.cpp index b1c4422d369..8987a666726 100644 --- a/src/devices/cpu/tms1000/tms1k_dasm.cpp +++ b/src/devices/cpu/tms1000/tms1k_dasm.cpp @@ -259,32 +259,23 @@ static offs_t tms1k_dasm(std::ostream &stream, const uint8_t *oprom, const uint8 return pos | s_flags[instr] | DASMFLAG_SUPPORTED; } -static offs_t tms1k_dasm(char *buffer, const uint8_t *oprom, const uint8_t *lut_mnemonic, uint16_t opcode_mask) -{ - std::ostringstream stream; - offs_t result = tms1k_dasm(stream, oprom, lut_mnemonic, opcode_mask); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} - CPU_DISASSEMBLE(tms1000) { - return tms1k_dasm(buffer, oprom, tms1000_mnemonic, 0xff); + return tms1k_dasm(stream, oprom, tms1000_mnemonic, 0xff); } CPU_DISASSEMBLE(tms1100) { - return tms1k_dasm(buffer, oprom, tms1100_mnemonic, 0xff); + return tms1k_dasm(stream, oprom, tms1100_mnemonic, 0xff); } CPU_DISASSEMBLE(tms0980) { - return tms1k_dasm(buffer, oprom, tms0980_mnemonic, 0x1ff); + return tms1k_dasm(stream, oprom, tms0980_mnemonic, 0x1ff); } CPU_DISASSEMBLE(tp0320) { - return tms1k_dasm(buffer, oprom, tp0320_mnemonic, 0x1ff); + return tms1k_dasm(stream, oprom, tp0320_mnemonic, 0x1ff); } diff --git a/src/devices/cpu/tms1000/tp0320.cpp b/src/devices/cpu/tms1000/tp0320.cpp index ab33c3788e2..243ef3bb8e3 100644 --- a/src/devices/cpu/tms1000/tp0320.cpp +++ b/src/devices/cpu/tms1000/tp0320.cpp @@ -58,10 +58,10 @@ machine_config_constructor tp0320_cpu_device::device_mconfig_additions() const // disasm -offs_t tp0320_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t tp0320_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE(tp0320); - return CPU_DISASSEMBLE_NAME(tp0320)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(tp0320)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/tms1000/tp0320.h b/src/devices/cpu/tms1000/tp0320.h index a85fc253cc4..fcff112a900 100644 --- a/src/devices/cpu/tms1000/tp0320.h +++ b/src/devices/cpu/tms1000/tp0320.h @@ -24,7 +24,7 @@ protected: virtual uint32_t decode_fixed(uint16_t op) override { return 0; } // not yet virtual uint32_t decode_micro(uint8_t sel) override; virtual void device_reset() override; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual machine_config_constructor device_mconfig_additions() const override; }; diff --git a/src/devices/cpu/tms32010/32010dsm.cpp b/src/devices/cpu/tms32010/32010dsm.cpp index c1a8f13a914..040a24b11b6 100644 --- a/src/devices/cpu/tms32010/32010dsm.cpp +++ b/src/devices/cpu/tms32010/32010dsm.cpp @@ -222,7 +222,7 @@ static void InitDasm32010(void) OpInizialized = 1; } -static offs_t internal_disasm_tms32010(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(tms32010) { uint32_t flags = 0; int a, b, d, k, m, n, p, r, s, w; /* these can all be filled in by parsing an instruction */ @@ -332,13 +332,3 @@ static offs_t internal_disasm_tms32010(cpu_device *device, std::ostream &stream, } return cnt | flags | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(tms32010) -{ - std::ostringstream stream; - offs_t result = internal_disasm_tms32010(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/tms32010/tms32010.cpp b/src/devices/cpu/tms32010/tms32010.cpp index e5108cb0c7e..76d178b5c73 100644 --- a/src/devices/cpu/tms32010/tms32010.cpp +++ b/src/devices/cpu/tms32010/tms32010.cpp @@ -131,10 +131,10 @@ tms32016_device::tms32016_device(const machine_config &mconfig, const char *tag, } -offs_t tms32010_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t tms32010_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( tms32010 ); - return CPU_DISASSEMBLE_NAME(tms32010)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(tms32010)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/tms32010/tms32010.h b/src/devices/cpu/tms32010/tms32010.h index 99c2f084e62..4be9b7fe7d1 100644 --- a/src/devices/cpu/tms32010/tms32010.h +++ b/src/devices/cpu/tms32010/tms32010.h @@ -72,7 +72,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 2; } virtual uint32_t disasm_max_opcode_bytes() const override { return 4; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: address_space_config m_program_config; diff --git a/src/devices/cpu/tms32025/32025dsm.cpp b/src/devices/cpu/tms32025/32025dsm.cpp index 1299f2a7f19..cf9a61571b5 100644 --- a/src/devices/cpu/tms32025/32025dsm.cpp +++ b/src/devices/cpu/tms32025/32025dsm.cpp @@ -387,7 +387,7 @@ static void InitDasm32025(void) OpInizialized = 1; } -static offs_t internal_disasm_tms32025(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(tms32025) { uint32_t flags = 0; int a, b, c, d, k, m, n, p, r, s, t, w; /* these can all be filled in by parsing an instruction */ @@ -503,13 +503,3 @@ static offs_t internal_disasm_tms32025(cpu_device *device, std::ostream &stream, } return cnt | flags | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(tms32025) -{ - std::ostringstream stream; - offs_t result = internal_disasm_tms32025(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/tms32025/tms32025.cpp b/src/devices/cpu/tms32025/tms32025.cpp index 991b5a0b050..dc0e69eb7aa 100644 --- a/src/devices/cpu/tms32025/tms32025.cpp +++ b/src/devices/cpu/tms32025/tms32025.cpp @@ -242,10 +242,10 @@ tms32026_device::tms32026_device(const machine_config &mconfig, const char *tag, } -offs_t tms32025_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t tms32025_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( tms32025 ); - return CPU_DISASSEMBLE_NAME(tms32025)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(tms32025)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/tms32025/tms32025.h b/src/devices/cpu/tms32025/tms32025.h index a2f907e3769..bd752d5885e 100644 --- a/src/devices/cpu/tms32025/tms32025.h +++ b/src/devices/cpu/tms32025/tms32025.h @@ -118,7 +118,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 2; } virtual uint32_t disasm_max_opcode_bytes() const override { return 4; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: address_space_config m_program_config; diff --git a/src/devices/cpu/tms32031/dis32031.cpp b/src/devices/cpu/tms32031/dis32031.cpp index 0ff8566fb41..ddb47a27d44 100644 --- a/src/devices/cpu/tms32031/dis32031.cpp +++ b/src/devices/cpu/tms32031/dis32031.cpp @@ -724,18 +724,8 @@ static unsigned dasm_tms3203x(std::ostream &stream, unsigned pc, uint32_t op) } -static unsigned dasm_tms3203x(char *buffer, unsigned pc, uint32_t op) -{ - std::ostringstream stream; - unsigned result = dasm_tms3203x(stream, pc, op); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} - - CPU_DISASSEMBLE( tms3203x ) { uint32_t op = oprom[0] | (oprom[1] << 8) | (oprom[2] << 16) | (oprom[3] << 24); - return dasm_tms3203x(buffer, pc, op); + return dasm_tms3203x(stream, pc, op); } diff --git a/src/devices/cpu/tms32031/tms32031.cpp b/src/devices/cpu/tms32031/tms32031.cpp index 06c50c7777a..6f957b685f5 100644 --- a/src/devices/cpu/tms32031/tms32031.cpp +++ b/src/devices/cpu/tms32031/tms32031.cpp @@ -589,10 +589,10 @@ uint32_t tms3203x_device::disasm_max_opcode_bytes() const // helper function //------------------------------------------------- -offs_t tms3203x_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t tms3203x_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( tms3203x ); - return CPU_DISASSEMBLE_NAME(tms3203x)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(tms3203x)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/tms32031/tms32031.h b/src/devices/cpu/tms32031/tms32031.h index 4c554827cf4..acb7f5a3020 100644 --- a/src/devices/cpu/tms32031/tms32031.h +++ b/src/devices/cpu/tms32031/tms32031.h @@ -184,7 +184,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override; virtual uint32_t disasm_max_opcode_bytes() const override; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; // memory helpers DECLARE_DIRECT_UPDATE_MEMBER(direct_handler); diff --git a/src/devices/cpu/tms32051/dis32051.cpp b/src/devices/cpu/tms32051/dis32051.cpp index 6fda434ab36..b963781beeb 100644 --- a/src/devices/cpu/tms32051/dis32051.cpp +++ b/src/devices/cpu/tms32051/dis32051.cpp @@ -273,7 +273,7 @@ static void dasm_group_bf(uint16_t opcode) } } -static offs_t internal_disasm_tms32051(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(tms32051) { uint32_t flags = 0; uint16_t opcode; @@ -583,13 +583,3 @@ static offs_t internal_disasm_tms32051(cpu_device *device, std::ostream &stream, return (npc-pc) | flags | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(tms32051) -{ - std::ostringstream stream; - offs_t result = internal_disasm_tms32051(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/tms32051/tms32051.cpp b/src/devices/cpu/tms32051/tms32051.cpp index c57b7df4794..38240db5c7e 100644 --- a/src/devices/cpu/tms32051/tms32051.cpp +++ b/src/devices/cpu/tms32051/tms32051.cpp @@ -112,10 +112,10 @@ tms32053_device::tms32053_device(const machine_config &mconfig, const char *tag, } -offs_t tms32051_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t tms32051_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( tms32051 ); - return CPU_DISASSEMBLE_NAME(tms32051)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(tms32051)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/tms32051/tms32051.h b/src/devices/cpu/tms32051/tms32051.h index f025db4246f..d276ca79101 100644 --- a/src/devices/cpu/tms32051/tms32051.h +++ b/src/devices/cpu/tms32051/tms32051.h @@ -82,7 +82,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 2; } virtual uint32_t disasm_max_opcode_bytes() const override { return 4; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; address_space_config m_program_config; address_space_config m_data_config; diff --git a/src/devices/cpu/tms32082/dis_mp.cpp b/src/devices/cpu/tms32082/dis_mp.cpp index de5ccdc06f2..0bb6e45d2c5 100644 --- a/src/devices/cpu/tms32082/dis_mp.cpp +++ b/src/devices/cpu/tms32082/dis_mp.cpp @@ -505,16 +505,7 @@ static offs_t tms32082_disasm_mp(std::ostream &stream, offs_t pc, const uint8_t return opbytes | flags | DASMFLAG_SUPPORTED; } -static offs_t tms32082_disasm_mp(char *buffer, offs_t pc, const uint8_t *oprom) -{ - std::ostringstream stream; - offs_t result = tms32082_disasm_mp(stream, pc, oprom); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} - CPU_DISASSEMBLE(tms32082_mp) { - return tms32082_disasm_mp(buffer, pc, oprom); + return tms32082_disasm_mp(stream, pc, oprom); } diff --git a/src/devices/cpu/tms32082/dis_pp.cpp b/src/devices/cpu/tms32082/dis_pp.cpp index bdd6dfc9c97..b685ab54b4f 100644 --- a/src/devices/cpu/tms32082/dis_pp.cpp +++ b/src/devices/cpu/tms32082/dis_pp.cpp @@ -698,16 +698,7 @@ static offs_t tms32082_disasm_pp(std::ostream &stream, offs_t pc, const uint8_t return 8 | flags | DASMFLAG_SUPPORTED; } -static offs_t tms32082_disasm_pp(char *buffer, offs_t pc, const uint8_t *oprom) -{ - std::ostringstream stream; - offs_t result = tms32082_disasm_pp(stream, pc, oprom); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} - CPU_DISASSEMBLE(tms32082_pp) { - return tms32082_disasm_pp(buffer, pc, oprom); + return tms32082_disasm_pp(stream, pc, oprom); } diff --git a/src/devices/cpu/tms32082/tms32082.cpp b/src/devices/cpu/tms32082/tms32082.cpp index a505a6a2045..1540fdc03a2 100644 --- a/src/devices/cpu/tms32082/tms32082.cpp +++ b/src/devices/cpu/tms32082/tms32082.cpp @@ -51,9 +51,9 @@ tms32082_mp_device::tms32082_mp_device(const machine_config &mconfig, const char } -offs_t tms32082_mp_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t tms32082_mp_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { - return CPU_DISASSEMBLE_NAME(tms32082_mp)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(tms32082_mp)(this, stream, pc, oprom, opram, options); } @@ -489,9 +489,9 @@ tms32082_pp_device::tms32082_pp_device(const machine_config &mconfig, const char } -offs_t tms32082_pp_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t tms32082_pp_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { - return CPU_DISASSEMBLE_NAME(tms32082_pp)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(tms32082_pp)(this, stream, pc, oprom, opram, options); } void tms32082_pp_device::device_start() diff --git a/src/devices/cpu/tms32082/tms32082.h b/src/devices/cpu/tms32082/tms32082.h index 0a315d6b79d..9ddf8c6ac00 100644 --- a/src/devices/cpu/tms32082/tms32082.h +++ b/src/devices/cpu/tms32082/tms32082.h @@ -102,7 +102,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 4; } virtual uint32_t disasm_max_opcode_bytes() const override { return 8; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; address_space_config m_program_config; @@ -197,7 +197,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 8; } virtual uint32_t disasm_max_opcode_bytes() const override { return 8; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; address_space_config m_program_config; diff --git a/src/devices/cpu/tms34010/34010dsm.cpp b/src/devices/cpu/tms34010/34010dsm.cpp index 5ac7dd6786a..56fcc3100c0 100644 --- a/src/devices/cpu/tms34010/34010dsm.cpp +++ b/src/devices/cpu/tms34010/34010dsm.cpp @@ -1717,21 +1717,12 @@ static unsigned Dasm340x0(std::ostream &stream, uint32_t pc, bool is_34020) return (_pc - __pc) | flags | DASMFLAG_SUPPORTED; } -static unsigned Dasm340x0(char *buff, uint32_t pc, bool is_34020) -{ - std::ostringstream stream; - unsigned result = Dasm340x0(stream, pc, is_34020); - std::string stream_str = stream.str(); - strcpy(buff, stream_str.c_str()); - return result; -} - CPU_DISASSEMBLE( tms34010 ) { rombase = oprom; rambase = opram; pcbase = pc; - return Dasm340x0(buffer, pc, false); + return Dasm340x0(stream, pc, false); } CPU_DISASSEMBLE( tms34020 ) @@ -1739,5 +1730,5 @@ CPU_DISASSEMBLE( tms34020 ) rombase = oprom; rambase = opram; pcbase = pc; - return Dasm340x0(buffer, pc, true); + return Dasm340x0(stream, pc, true); } diff --git a/src/devices/cpu/tms34010/tms34010.cpp b/src/devices/cpu/tms34010/tms34010.cpp index a21e024efd2..23b181147a6 100644 --- a/src/devices/cpu/tms34010/tms34010.cpp +++ b/src/devices/cpu/tms34010/tms34010.cpp @@ -1627,17 +1627,17 @@ void tms340x0_device::state_string_export(const device_state_entry &entry, std:: } -offs_t tms34010_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t tms34010_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( tms34010 ); - return CPU_DISASSEMBLE_NAME(tms34010)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(tms34010)(this, stream, pc, oprom, opram, options); } -offs_t tms34020_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t tms34020_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( tms34020 ); - return CPU_DISASSEMBLE_NAME(tms34020)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(tms34020)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/tms34010/tms34010.h b/src/devices/cpu/tms34010/tms34010.h index d45d4af6891..a4efa7b14da 100644 --- a/src/devices/cpu/tms34010/tms34010.h +++ b/src/devices/cpu/tms34010/tms34010.h @@ -1029,7 +1029,7 @@ public: protected: virtual uint64_t execute_clocks_to_cycles(uint64_t clocks) const override { return (clocks + 8 - 1) / 8; } virtual uint64_t execute_cycles_to_clocks(uint64_t cycles) const override { return (cycles * 8); } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; }; extern const device_type TMS34010; @@ -1046,7 +1046,7 @@ public: protected: virtual uint64_t execute_clocks_to_cycles(uint64_t clocks) const override { return (clocks + 4 - 1) / 4; } virtual uint64_t execute_cycles_to_clocks(uint64_t cycles) const override { return (cycles * 4); } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; }; extern const device_type TMS34020; diff --git a/src/devices/cpu/tms57002/57002dsm.cpp b/src/devices/cpu/tms57002/57002dsm.cpp index 0bec39e16c7..0f92c9af145 100644 --- a/src/devices/cpu/tms57002/57002dsm.cpp +++ b/src/devices/cpu/tms57002/57002dsm.cpp @@ -31,7 +31,7 @@ static std::string get_memadr(uint32_t opcode, char type) } -static offs_t internal_disasm_tms57002(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(tms57002) { std::streampos original_pos = stream.tellp(); uint32_t opcode = opram[0] | (opram[1] << 8) | (opram[2] << 16); @@ -83,13 +83,3 @@ static offs_t internal_disasm_tms57002(cpu_device *device, std::ostream &stream, return 1; } - - -CPU_DISASSEMBLE(tms57002) -{ - std::ostringstream stream; - offs_t result = internal_disasm_tms57002(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/tms57002/tms57002.cpp b/src/devices/cpu/tms57002/tms57002.cpp index 761bf1e082b..e39b7766107 100644 --- a/src/devices/cpu/tms57002/tms57002.cpp +++ b/src/devices/cpu/tms57002/tms57002.cpp @@ -902,10 +902,10 @@ uint32_t tms57002_device::disasm_max_opcode_bytes() const return 4; } -offs_t tms57002_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t tms57002_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( tms57002 ); - return CPU_DISASSEMBLE_NAME(tms57002)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(tms57002)(this, stream, pc, oprom, opram, options); } const address_space_config *tms57002_device::memory_space_config(address_spacenum spacenum) const diff --git a/src/devices/cpu/tms57002/tms57002.h b/src/devices/cpu/tms57002/tms57002.h index 7ae8102c99c..ba0765b8b07 100644 --- a/src/devices/cpu/tms57002/tms57002.h +++ b/src/devices/cpu/tms57002/tms57002.h @@ -37,7 +37,7 @@ protected: virtual void execute_run() override; virtual uint32_t disasm_min_opcode_bytes() const override; virtual uint32_t disasm_max_opcode_bytes() const override; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: enum { diff --git a/src/devices/cpu/tms57002/tms57kdec.cpp b/src/devices/cpu/tms57002/tms57kdec.cpp index c30bd1fc35a..b3b71cb58e4 100644 --- a/src/devices/cpu/tms57002/tms57kdec.cpp +++ b/src/devices/cpu/tms57002/tms57kdec.cpp @@ -72,7 +72,6 @@ inline int tms57002_device::sfma(uint32_t st1) void tms57002_device::decode_error(uint32_t opcode) { - char buf[256]; uint8_t opr[3]; if(unsupported_inst_warning) return; @@ -82,8 +81,9 @@ void tms57002_device::decode_error(uint32_t opcode) opr[1] = opcode >> 8; opr[2] = opcode >> 16; - disasm_disassemble(buf, pc, opr, opr, 0); - popmessage("tms57002: %s - Contact Mamedev", buf); + std::stringstream stream; + disasm_disassemble(stream, pc, opr, opr, 0); + popmessage("tms57002: %s - Contact Mamedev", stream.str()); } void tms57002_device::decode_cat1(uint32_t opcode, unsigned short *op, cstate *cs) diff --git a/src/devices/cpu/tms7000/7000dasm.cpp b/src/devices/cpu/tms7000/7000dasm.cpp index 12ae32d4dab..1f7f8549852 100644 --- a/src/devices/cpu/tms7000/7000dasm.cpp +++ b/src/devices/cpu/tms7000/7000dasm.cpp @@ -367,7 +367,7 @@ static const tms7000_opcodeinfo opcodes[] = { {0x00, "NOP", 23, 0 } }; -static offs_t internal_disasm_tms7000(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(tms7000) { int opcode, i/*, size = 1*/; int pos = 0; @@ -446,13 +446,3 @@ static offs_t internal_disasm_tms7000(cpu_device *device, std::ostream &stream, stream << "Illegal Opcode"; return pos | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(tms7000) -{ - std::ostringstream stream; - offs_t result = internal_disasm_tms7000(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/tms7000/tms7000.cpp b/src/devices/cpu/tms7000/tms7000.cpp index 5598b393bd8..494eb411f86 100644 --- a/src/devices/cpu/tms7000/tms7000.cpp +++ b/src/devices/cpu/tms7000/tms7000.cpp @@ -267,10 +267,10 @@ void tms7000_device::state_string_export(const device_state_entry &entry, std::s } } -offs_t tms7000_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t tms7000_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( tms7000 ); - return CPU_DISASSEMBLE_NAME(tms7000)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(tms7000)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/tms7000/tms7000.h b/src/devices/cpu/tms7000/tms7000.h index 4f6fb1e8760..50ce3926fa3 100644 --- a/src/devices/cpu/tms7000/tms7000.h +++ b/src/devices/cpu/tms7000/tms7000.h @@ -85,7 +85,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 4; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual void execute_one(uint8_t op); diff --git a/src/devices/cpu/tms9900/9900dasm.cpp b/src/devices/cpu/tms9900/9900dasm.cpp index e0842d3acc8..5d3eac1c105 100644 --- a/src/devices/cpu/tms9900/9900dasm.cpp +++ b/src/devices/cpu/tms9900/9900dasm.cpp @@ -784,26 +784,17 @@ static unsigned Dasm9900 (std::ostream &stream, unsigned pc, int model_id, const return (PC - pc) | DASMFLAG_SUPPORTED | dasmflags; } -static unsigned Dasm9900(char *buffer, unsigned pc, int model_id, const uint8_t *oprom, const uint8_t *opram) -{ - std::ostringstream stream; - unsigned result = Dasm9900(stream, pc, model_id, oprom, opram); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} - CPU_DISASSEMBLE( tms9900 ) { - return Dasm9900(buffer, pc, TMS9900_ID, oprom, opram); + return Dasm9900(stream, pc, TMS9900_ID, oprom, opram); } CPU_DISASSEMBLE( tms9980 ) { - return Dasm9900(buffer, pc, TMS9980_ID, oprom, opram); + return Dasm9900(stream, pc, TMS9980_ID, oprom, opram); } CPU_DISASSEMBLE( tms9995 ) { - return Dasm9900(buffer, pc, TMS9995_ID, oprom, opram); + return Dasm9900(stream, pc, TMS9995_ID, oprom, opram); } diff --git a/src/devices/cpu/tms9900/ti990_10.cpp b/src/devices/cpu/tms9900/ti990_10.cpp index 6465ecf8475..64858239eb0 100644 --- a/src/devices/cpu/tms9900/ti990_10.cpp +++ b/src/devices/cpu/tms9900/ti990_10.cpp @@ -140,10 +140,10 @@ uint32_t ti990_10_device::disasm_max_opcode_bytes() const } // TODO: check 9900dasm -offs_t ti990_10_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t ti990_10_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( tms9900 ); - return CPU_DISASSEMBLE_NAME(tms9900)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(tms9900)(this, stream, pc, oprom, opram, options); } const device_type TI990_10 = &device_creator<ti990_10_device>; diff --git a/src/devices/cpu/tms9900/ti990_10.h b/src/devices/cpu/tms9900/ti990_10.h index 763e64ea00f..8b49abbff41 100644 --- a/src/devices/cpu/tms9900/ti990_10.h +++ b/src/devices/cpu/tms9900/ti990_10.h @@ -34,7 +34,7 @@ protected: // device_disasm_interface overrides uint32_t disasm_min_opcode_bytes() const override; uint32_t disasm_max_opcode_bytes() const override; - offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; const address_space_config* memory_space_config(address_spacenum spacenum) const override; diff --git a/src/devices/cpu/tms9900/tms9900.cpp b/src/devices/cpu/tms9900/tms9900.cpp index 8bc409b801a..08d784e040b 100644 --- a/src/devices/cpu/tms9900/tms9900.cpp +++ b/src/devices/cpu/tms9900/tms9900.cpp @@ -2761,10 +2761,10 @@ uint32_t tms99xx_device::disasm_max_opcode_bytes() const return 6; } -offs_t tms99xx_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t tms99xx_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( tms9900 ); - return CPU_DISASSEMBLE_NAME(tms9900)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(tms9900)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/tms9900/tms9900.h b/src/devices/cpu/tms9900/tms9900.h index 1d4c54b6e17..2a627c98664 100644 --- a/src/devices/cpu/tms9900/tms9900.h +++ b/src/devices/cpu/tms9900/tms9900.h @@ -83,7 +83,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override; virtual uint32_t disasm_max_opcode_bytes() const override; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; const address_space_config* memory_space_config(address_spacenum spacenum) const override; diff --git a/src/devices/cpu/tms9900/tms9980a.cpp b/src/devices/cpu/tms9900/tms9980a.cpp index a71beebd9cf..709400fad6a 100644 --- a/src/devices/cpu/tms9900/tms9980a.cpp +++ b/src/devices/cpu/tms9900/tms9980a.cpp @@ -290,10 +290,10 @@ uint32_t tms9980a_device::disasm_max_opcode_bytes() const return 6; } -offs_t tms9980a_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t tms9980a_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( tms9980 ); - return CPU_DISASSEMBLE_NAME(tms9980)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(tms9980)(this, stream, pc, oprom, opram, options); } const device_type TMS9980A = &device_creator<tms9980a_device>; diff --git a/src/devices/cpu/tms9900/tms9980a.h b/src/devices/cpu/tms9900/tms9980a.h index 3f295b73749..8a7a409f2b8 100644 --- a/src/devices/cpu/tms9900/tms9980a.h +++ b/src/devices/cpu/tms9900/tms9980a.h @@ -45,7 +45,7 @@ protected: uint32_t disasm_min_opcode_bytes() const override; uint32_t disasm_max_opcode_bytes() const override; - offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; address_space_config m_program_config80; address_space_config m_io_config80; }; diff --git a/src/devices/cpu/tms9900/tms9995.cpp b/src/devices/cpu/tms9900/tms9995.cpp index 1ea07f9728b..9e19c39fd26 100644 --- a/src/devices/cpu/tms9900/tms9995.cpp +++ b/src/devices/cpu/tms9900/tms9995.cpp @@ -3536,10 +3536,10 @@ uint32_t tms9995_device::disasm_max_opcode_bytes() const return 6; } -offs_t tms9995_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t tms9995_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( tms9995 ); - return CPU_DISASSEMBLE_NAME(tms9995)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(tms9995)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/tms9900/tms9995.h b/src/devices/cpu/tms9900/tms9995.h index f1867d5b0b1..91bb29e09b1 100644 --- a/src/devices/cpu/tms9900/tms9995.h +++ b/src/devices/cpu/tms9900/tms9995.h @@ -94,7 +94,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override; virtual uint32_t disasm_max_opcode_bytes() const override; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; const address_space_config* memory_space_config(address_spacenum spacenum) const override; diff --git a/src/devices/cpu/ucom4/ucom4.cpp b/src/devices/cpu/ucom4/ucom4.cpp index f3cff841953..7b804c4c4f3 100644 --- a/src/devices/cpu/ucom4/ucom4.cpp +++ b/src/devices/cpu/ucom4/ucom4.cpp @@ -95,10 +95,10 @@ void ucom4_cpu_device::state_string_export(const device_state_entry &entry, std: } } -offs_t ucom4_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t ucom4_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE(ucom4); - return CPU_DISASSEMBLE_NAME(ucom4)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(ucom4)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/ucom4/ucom4.h b/src/devices/cpu/ucom4/ucom4.h index 5e1f3b20a25..be7905f5065 100644 --- a/src/devices/cpu/ucom4/ucom4.h +++ b/src/devices/cpu/ucom4/ucom4.h @@ -155,7 +155,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 2; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/ucom4/ucom4d.cpp b/src/devices/cpu/ucom4/ucom4d.cpp index d1df0ebb5ce..4b29439b5e9 100644 --- a/src/devices/cpu/ucom4/ucom4d.cpp +++ b/src/devices/cpu/ucom4/ucom4d.cpp @@ -113,7 +113,7 @@ static const uint8_t ucom4_mnemonic[0x100] = -static offs_t internal_disasm_ucom4(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(ucom4) { int pos = 0; uint8_t op = oprom[pos++]; @@ -150,13 +150,3 @@ static offs_t internal_disasm_ucom4(cpu_device *device, std::ostream &stream, of return pos | s_flags[instr] | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(ucom4) -{ - std::ostringstream stream; - offs_t result = internal_disasm_ucom4(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/unsp/unsp.cpp b/src/devices/cpu/unsp/unsp.cpp index 11500ba0e48..1d40ba330ee 100644 --- a/src/devices/cpu/unsp/unsp.cpp +++ b/src/devices/cpu/unsp/unsp.cpp @@ -23,10 +23,10 @@ unsp_device::unsp_device(const machine_config &mconfig, const char *tag, device_ } -offs_t unsp_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t unsp_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( unsp ); - return CPU_DISASSEMBLE_NAME(unsp)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(unsp)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/unsp/unsp.h b/src/devices/cpu/unsp/unsp.h index 69e1ad962b0..a9a656478ee 100644 --- a/src/devices/cpu/unsp/unsp.h +++ b/src/devices/cpu/unsp/unsp.h @@ -77,7 +77,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 2; } virtual uint32_t disasm_max_opcode_bytes() const override { return 4; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: address_space_config m_program_config; diff --git a/src/devices/cpu/unsp/unspdasm.cpp b/src/devices/cpu/unsp/unspdasm.cpp index 8694b3b433b..68d620fb7b6 100644 --- a/src/devices/cpu/unsp/unspdasm.cpp +++ b/src/devices/cpu/unsp/unspdasm.cpp @@ -46,7 +46,7 @@ static const char *alu[] = #define UNSP_DASM_OK ((OP2X ? 2 : 1) | DASMFLAG_SUPPORTED) -static offs_t internal_disasm_unsp(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(unsp) { uint16_t op = *(uint16_t *)oprom; uint16_t imm16 = *(uint16_t *)(oprom + 2); @@ -258,13 +258,3 @@ static offs_t internal_disasm_unsp(cpu_device *device, std::ostream &stream, off util::stream_format(stream, "<inv>"); return UNSP_DASM_OK; } - - -CPU_DISASSEMBLE(unsp) -{ - std::ostringstream stream; - offs_t result = internal_disasm_unsp(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/upd7725/dasm7725.cpp b/src/devices/cpu/upd7725/dasm7725.cpp index 303a877e413..f2e644e0bec 100644 --- a/src/devices/cpu/upd7725/dasm7725.cpp +++ b/src/devices/cpu/upd7725/dasm7725.cpp @@ -12,7 +12,7 @@ #include "emu.h" #include "upd7725.h" -static offs_t internal_disasm_upd7725(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(upd7725) { uint32_t opcode = oprom[2] | (oprom[1] << 8) | (oprom[0] << 16); uint32_t type = (opcode >> 22); @@ -222,13 +222,3 @@ static offs_t internal_disasm_upd7725(cpu_device *device, std::ostream &stream, return 1 | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(upd7725) -{ - std::ostringstream stream; - offs_t result = internal_disasm_upd7725(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/upd7725/upd7725.cpp b/src/devices/cpu/upd7725/upd7725.cpp index 841d9322050..d50ff1762c3 100644 --- a/src/devices/cpu/upd7725/upd7725.cpp +++ b/src/devices/cpu/upd7725/upd7725.cpp @@ -308,10 +308,10 @@ uint32_t necdsp_device::disasm_max_opcode_bytes() const // helper function //------------------------------------------------- -offs_t necdsp_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t necdsp_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( upd7725 ); - return CPU_DISASSEMBLE_NAME(upd7725)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(upd7725)(this, stream, pc, oprom, opram, options); } void necdsp_device::execute_run() diff --git a/src/devices/cpu/upd7725/upd7725.h b/src/devices/cpu/upd7725/upd7725.h index 80714d376eb..47ae0bf6f8c 100644 --- a/src/devices/cpu/upd7725/upd7725.h +++ b/src/devices/cpu/upd7725/upd7725.h @@ -115,7 +115,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override; virtual uint32_t disasm_max_opcode_bytes() const override; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; // inline data const address_space_config m_program_config, m_data_config; diff --git a/src/devices/cpu/upd7810/upd7810.cpp b/src/devices/cpu/upd7810/upd7810.cpp index ba375d196e1..618a3d41638 100644 --- a/src/devices/cpu/upd7810/upd7810.cpp +++ b/src/devices/cpu/upd7810/upd7810.cpp @@ -486,28 +486,28 @@ upd78c06_device::upd78c06_device(const machine_config &mconfig, const char *tag, m_opXX = s_opXX_78c06; } -offs_t upd7810_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t upd7810_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( upd7810 ); - return CPU_DISASSEMBLE_NAME(upd7810)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(upd7810)(this, stream, pc, oprom, opram, options); } -offs_t upd7807_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t upd7807_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( upd7807 ); - return CPU_DISASSEMBLE_NAME(upd7807)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(upd7807)(this, stream, pc, oprom, opram, options); } -offs_t upd7801_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t upd7801_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( upd7801 ); - return CPU_DISASSEMBLE_NAME(upd7801)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(upd7801)(this, stream, pc, oprom, opram, options); } -offs_t upd78c05_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t upd78c05_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( upd78c05 ); - return CPU_DISASSEMBLE_NAME(upd78c05)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(upd78c05)(this, stream, pc, oprom, opram, options); } uint8_t upd7810_device::RP(offs_t port) diff --git a/src/devices/cpu/upd7810/upd7810.h b/src/devices/cpu/upd7810/upd7810.h index 28900cb6c43..8880be1c1bb 100644 --- a/src/devices/cpu/upd7810/upd7810.h +++ b/src/devices/cpu/upd7810/upd7810.h @@ -175,7 +175,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 4; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual void handle_timers(int cycles); virtual void upd7810_take_irq(); @@ -1376,7 +1376,7 @@ public: upd7807_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); protected: - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; }; @@ -1389,7 +1389,7 @@ public: protected: virtual void device_reset() override; virtual void execute_set_input(int inputnum, int state) override; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual void handle_timers(int cycles) override; virtual void upd7810_take_irq() override; }; @@ -1407,7 +1407,7 @@ protected: virtual void device_reset() override; virtual uint64_t execute_clocks_to_cycles(uint64_t clocks) const override { return (clocks + 4 - 1) / 4; } virtual uint64_t execute_cycles_to_clocks(uint64_t cycles) const override { return (cycles * 4); } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; virtual void handle_timers(int cycles) override; }; diff --git a/src/devices/cpu/upd7810/upd7810_dasm.cpp b/src/devices/cpu/upd7810/upd7810_dasm.cpp index 2988a8d63f0..f3da1ba4160 100644 --- a/src/devices/cpu/upd7810/upd7810_dasm.cpp +++ b/src/devices/cpu/upd7810/upd7810_dasm.cpp @@ -5483,33 +5483,24 @@ offs_t Dasm( std::ostream &stream, offs_t pc, const dasm_s (&dasmXX)[256], const return idx | flags | DASMFLAG_SUPPORTED; } -offs_t Dasm(char *buffer, offs_t pc, const dasm_s(&dasmXX)[256], const uint8_t *oprom, const uint8_t *opram, bool is_7810) -{ - std::ostringstream stream; - offs_t result = Dasm(stream, pc, dasmXX, oprom, opram, is_7810); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} - } // anonymous namespace CPU_DISASSEMBLE( upd7810 ) { - return Dasm( buffer, pc, dasm_s::XX_7810, oprom, opram, true ); + return Dasm( stream, pc, dasm_s::XX_7810, oprom, opram, true ); } CPU_DISASSEMBLE( upd7807 ) { - return Dasm( buffer, pc, dasm_s::XX_7807, oprom, opram, true ); + return Dasm( stream, pc, dasm_s::XX_7807, oprom, opram, true ); } CPU_DISASSEMBLE( upd7801 ) { - return Dasm( buffer, pc, dasm_s::XX_7801, oprom, opram, false ); + return Dasm( stream, pc, dasm_s::XX_7801, oprom, opram, false ); } CPU_DISASSEMBLE( upd78c05 ) { - return Dasm( buffer, pc, dasm_s::XX_78c05, oprom, opram, false ); + return Dasm( stream, pc, dasm_s::XX_78c05, oprom, opram, false ); } diff --git a/src/devices/cpu/v30mz/v30mz.cpp b/src/devices/cpu/v30mz/v30mz.cpp index 54197ea82c0..6781756a58c 100644 --- a/src/devices/cpu/v30mz/v30mz.cpp +++ b/src/devices/cpu/v30mz/v30mz.cpp @@ -1296,10 +1296,10 @@ void v30mz_cpu_device::execute_set_input( int inptnum, int state ) } -offs_t v30mz_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t v30mz_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( nec ); - return CPU_DISASSEMBLE_NAME(nec)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(nec)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/v30mz/v30mz.h b/src/devices/cpu/v30mz/v30mz.h index db0e0a3ca22..4b818654437 100644 --- a/src/devices/cpu/v30mz/v30mz.h +++ b/src/devices/cpu/v30mz/v30mz.h @@ -49,7 +49,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 7; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; void interrupt(int int_num); diff --git a/src/devices/cpu/v60/v60.cpp b/src/devices/cpu/v60/v60.cpp index 831a826c035..8fee43ffa58 100644 --- a/src/devices/cpu/v60/v60.cpp +++ b/src/devices/cpu/v60/v60.cpp @@ -112,17 +112,17 @@ v70_device::v70_device(const machine_config &mconfig, const char *tag, device_t } -offs_t v60_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t v60_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( v60 ); - return CPU_DISASSEMBLE_NAME(v60)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(v60)(this, stream, pc, oprom, opram, options); } -offs_t v70_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t v70_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( v70 ); - return CPU_DISASSEMBLE_NAME(v70)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(v70)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/v60/v60.h b/src/devices/cpu/v60/v60.h index 2b6fa22b298..befd696d155 100644 --- a/src/devices/cpu/v60/v60.h +++ b/src/devices/cpu/v60/v60.h @@ -111,7 +111,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 22; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: typedef uint32_t (v60_device::*am_func)(); @@ -778,7 +778,7 @@ public: v70_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); protected: - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; }; diff --git a/src/devices/cpu/v60/v60d.cpp b/src/devices/cpu/v60/v60d.cpp index 0438b1fa095..70fcdab8296 100644 --- a/src/devices/cpu/v60/v60d.cpp +++ b/src/devices/cpu/v60/v60d.cpp @@ -1484,35 +1484,16 @@ static int (*const dasm_optable[256])(unsigned ipc, unsigned pc, std::ostream &s /* 0xFF */ dopCLRTLB }; -static offs_t internal_disasm_v60(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(v60) { rombase = oprom; pcbase = pc; return dasm_optable[oprom[0]](pc, pc+1, stream) | DASMFLAG_SUPPORTED; } -CPU_DISASSEMBLE(v60) -{ - std::ostringstream stream; - offs_t result = internal_disasm_v60(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} - -static offs_t internal_disasm_v70(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(v70) { rombase = oprom; pcbase = pc; return dasm_optable[oprom[0]](pc, pc+1, stream) | DASMFLAG_SUPPORTED; } - -CPU_DISASSEMBLE(v70) -{ - std::ostringstream stream; - offs_t result = internal_disasm_v70(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} - diff --git a/src/devices/cpu/v810/v810.cpp b/src/devices/cpu/v810/v810.cpp index ba002562548..ac5cdc75b25 100644 --- a/src/devices/cpu/v810/v810.cpp +++ b/src/devices/cpu/v810/v810.cpp @@ -46,10 +46,10 @@ v810_device::v810_device(const machine_config &mconfig, const char *tag, device_ } -offs_t v810_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t v810_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( v810 ); - return CPU_DISASSEMBLE_NAME(v810)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(v810)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/v810/v810.h b/src/devices/cpu/v810/v810.h index 7b9769cd3ff..e870f514132 100644 --- a/src/devices/cpu/v810/v810.h +++ b/src/devices/cpu/v810/v810.h @@ -106,7 +106,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 2; } virtual uint32_t disasm_max_opcode_bytes() const override { return 4; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: typedef uint32_t (v810_device::*opcode_func)(uint32_t op); diff --git a/src/devices/cpu/v810/v810dasm.cpp b/src/devices/cpu/v810/v810dasm.cpp index e4760f9a8e6..8b80a600a94 100644 --- a/src/devices/cpu/v810/v810dasm.cpp +++ b/src/devices/cpu/v810/v810dasm.cpp @@ -39,7 +39,7 @@ static const char *const dRegs[]= #define GET2s(opcode) dRegs[((opcode)>>5)&0x1f] #define GETRs(opcode) dRegs[32+((opcode)&0x1f)] -static offs_t internal_disasm_v810(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(v810) { uint32_t flags = 0; uint32_t opc,opc2; @@ -175,13 +175,3 @@ static offs_t internal_disasm_v810(cpu_device *device, std::ostream &stream, off } return size | flags | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(v810) -{ - std::ostringstream stream; - offs_t result = internal_disasm_v810(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/z180/z180.cpp b/src/devices/cpu/z180/z180.cpp index 0eab56994b8..a9ba848ebdd 100644 --- a/src/devices/cpu/z180/z180.cpp +++ b/src/devices/cpu/z180/z180.cpp @@ -91,10 +91,10 @@ z180_device::z180_device(const machine_config &mconfig, const char *tag, device_ } -offs_t z180_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t z180_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( z180 ); - return CPU_DISASSEMBLE_NAME(z180)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(z180)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/z180/z180.h b/src/devices/cpu/z180/z180.h index 67befa3a4d3..a7d6676a0ed 100644 --- a/src/devices/cpu/z180/z180.h +++ b/src/devices/cpu/z180/z180.h @@ -153,7 +153,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 4; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: address_space_config m_program_config; diff --git a/src/devices/cpu/z180/z180dasm.cpp b/src/devices/cpu/z180/z180dasm.cpp index 038b1a5d23d..c5a3d9f0186 100644 --- a/src/devices/cpu/z180/z180dasm.cpp +++ b/src/devices/cpu/z180/z180dasm.cpp @@ -391,7 +391,7 @@ static int offs(int8_t offset) /**************************************************************************** * Disassemble opcode at PC and return number of bytes it takes ****************************************************************************/ -static offs_t internal_disasm_z180(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(z180) { const z80dasm *d; const char *src, *ixy; @@ -513,13 +513,3 @@ static offs_t internal_disasm_z180(cpu_device *device, std::ostream &stream, off return pos | flags | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(z180) -{ - std::ostringstream stream; - offs_t result = internal_disasm_z180(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/z8/z8.cpp b/src/devices/cpu/z8/z8.cpp index 3ce48319632..19e27a4070c 100644 --- a/src/devices/cpu/z8/z8.cpp +++ b/src/devices/cpu/z8/z8.cpp @@ -197,10 +197,10 @@ z8611_device::z8611_device(const machine_config &mconfig, const char *_tag, devi } -offs_t z8_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t z8_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( z8 ); - return CPU_DISASSEMBLE_NAME(z8)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(z8)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/z8/z8.h b/src/devices/cpu/z8/z8.h index 1d3afb9aaa0..99c8e831677 100644 --- a/src/devices/cpu/z8/z8.h +++ b/src/devices/cpu/z8/z8.h @@ -61,7 +61,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 3; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; private: diff --git a/src/devices/cpu/z8/z8dasm.cpp b/src/devices/cpu/z8/z8dasm.cpp index d6eccb080fb..80f23fc312f 100644 --- a/src/devices/cpu/z8/z8dasm.cpp +++ b/src/devices/cpu/z8/z8dasm.cpp @@ -82,7 +82,7 @@ static const char *const CONDITION_CODE[16] = DISASSEMBLER ***************************************************************************/ -static offs_t internal_disasm_z8(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(z8) { const uint8_t *startrom = oprom; uint32_t flags = 0; @@ -377,13 +377,3 @@ static offs_t internal_disasm_z8(cpu_device *device, std::ostream &stream, offs_ return (oprom - startrom) | flags | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(z8) -{ - std::ostringstream stream; - offs_t result = internal_disasm_z8(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/z80/z80.cpp b/src/devices/cpu/z80/z80.cpp index 844a5b68373..9e0fec6b487 100644 --- a/src/devices/cpu/z80/z80.cpp +++ b/src/devices/cpu/z80/z80.cpp @@ -3669,10 +3669,10 @@ void z80_device::state_string_export(const device_state_entry &entry, std::strin // helper function //------------------------------------------------- -offs_t z80_device::disasm_disassemble( char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options ) +offs_t z80_device::disasm_disassemble( std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options ) { extern CPU_DISASSEMBLE( z80 ); - return CPU_DISASSEMBLE_NAME(z80)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(z80)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/z80/z80.h b/src/devices/cpu/z80/z80.h index af38e5fec0a..ecfd106e1c1 100644 --- a/src/devices/cpu/z80/z80.h +++ b/src/devices/cpu/z80/z80.h @@ -68,7 +68,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } virtual uint32_t disasm_max_opcode_bytes() const override { return 4; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; #undef PROTOTYPES #define PROTOTYPES(prefix) \ diff --git a/src/devices/cpu/z80/z80dasm.cpp b/src/devices/cpu/z80/z80dasm.cpp index 38b32aae482..2af88954943 100644 --- a/src/devices/cpu/z80/z80dasm.cpp +++ b/src/devices/cpu/z80/z80dasm.cpp @@ -413,7 +413,7 @@ static int offs(int8_t offset) /**************************************************************************** * Disassemble opcode at PC and return number of bytes it takes ****************************************************************************/ -static offs_t internal_disasm_z80(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(z80) { const z80dasm *d; const char *src, *ixy; @@ -527,13 +527,3 @@ static offs_t internal_disasm_z80(cpu_device *device, std::ostream &stream, offs return pos | s_flags[d->mnemonic] | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(z80) -{ - std::ostringstream stream; - offs_t result = internal_disasm_z80(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -}
\ No newline at end of file diff --git a/src/devices/cpu/z8000/8000dasm.cpp b/src/devices/cpu/z8000/8000dasm.cpp index 1c0bffcd2f1..5a6d6c51596 100644 --- a/src/devices/cpu/z8000/8000dasm.cpp +++ b/src/devices/cpu/z8000/8000dasm.cpp @@ -48,7 +48,7 @@ static const char *const ints[4] = { int z8k_segm; /* Current disassembler mode: 0 - non-segmented, 1 - segmented */ int z8k_segm_mode = Z8K_SEGM_MODE_AUTO; /* User disassembler mode setting: segmented, non-segmented, auto */ -static offs_t internal_disasm_z8000(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) +CPU_DISASSEMBLE(z8000) { int new_pc = pc, i, j, tmp; const char *src; @@ -311,13 +311,3 @@ static offs_t internal_disasm_z8000(cpu_device *device, std::ostream &stream, of } return (new_pc - pc) | flags | DASMFLAG_SUPPORTED; } - - -CPU_DISASSEMBLE(z8000) -{ - std::ostringstream stream; - offs_t result = internal_disasm_z8000(device, stream, pc, oprom, opram, options); - std::string stream_str = stream.str(); - strcpy(buffer, stream_str.c_str()); - return result; -} diff --git a/src/devices/cpu/z8000/z8000.cpp b/src/devices/cpu/z8000/z8000.cpp index f94b0c1d09c..be15136f4ff 100644 --- a/src/devices/cpu/z8000/z8000.cpp +++ b/src/devices/cpu/z8000/z8000.cpp @@ -61,10 +61,10 @@ z8001_device::z8001_device(const machine_config &mconfig, const char *tag, devic } -offs_t z8002_device::disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) +offs_t z8002_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( z8000 ); - return CPU_DISASSEMBLE_NAME(z8000)(this, buffer, pc, oprom, opram, options); + return CPU_DISASSEMBLE_NAME(z8000)(this, stream, pc, oprom, opram, options); } diff --git a/src/devices/cpu/z8000/z8000.h b/src/devices/cpu/z8000/z8000.h index 403b3ef729e..410696f500f 100644 --- a/src/devices/cpu/z8000/z8000.h +++ b/src/devices/cpu/z8000/z8000.h @@ -74,7 +74,7 @@ protected: // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 2; } virtual uint32_t disasm_max_opcode_bytes() const override { return 6; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; + virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; address_space_config m_program_config; address_space_config m_io_config; |