diff options
Diffstat (limited to 'src/devices/cpu/upd7725/upd7725.cpp')
-rw-r--r-- | src/devices/cpu/upd7725/upd7725.cpp | 49 |
1 files changed, 18 insertions, 31 deletions
diff --git a/src/devices/cpu/upd7725/upd7725.cpp b/src/devices/cpu/upd7725/upd7725.cpp index cb63995abb3..45f685c1370 100644 --- a/src/devices/cpu/upd7725/upd7725.cpp +++ b/src/devices/cpu/upd7725/upd7725.cpp @@ -24,23 +24,23 @@ DEFINE_DEVICE_TYPE(UPD7725, upd7725_device, "upd7725", "NEC uPD7725") DEFINE_DEVICE_TYPE(UPD96050, upd96050_device, "upd96050", "NEC uPD96050") -necdsp_device::necdsp_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t abits, uint32_t dbits) - : cpu_device(mconfig, type, tag, owner, clock), - m_program_config("program", ENDIANNESS_BIG, 32, abits, -2), // data bus width, address bus width, -2 means DWORD-addressable - m_data_config("data", ENDIANNESS_BIG, 16, dbits, -1), m_icount(0), // -1 for WORD-addressable - m_irq(0), - m_irq_firing(0), - m_in_int_cb(*this), - //m_in_si_cb(*this), - //m_in_sck_cb(*this), - //m_in_sien_cb(*this), - //m_in_soen_cb(*this), - //m_in_dack_cb(*this), - m_out_p0_cb(*this), - m_out_p1_cb(*this) - //m_out_so_cb(*this), - //m_out_sorq_cb(*this), - //m_out_drq_cb(*this) +necdsp_device::necdsp_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t abits, uint32_t dbits) : + cpu_device(mconfig, type, tag, owner, clock), + m_program_config("program", ENDIANNESS_BIG, 32, abits, -2), // data bus width, address bus width, -2 means DWORD-addressable + m_data_config("data", ENDIANNESS_BIG, 16, dbits, -1), m_icount(0), // -1 for WORD-addressable + m_irq(0), + m_irq_firing(0), + m_in_int_cb(*this, 0), + //m_in_si_cb(*this, 0), + //m_in_sck_cb(*this, 0), + //m_in_sien_cb(*this, 0), + //m_in_soen_cb(*this, 0), + //m_in_dack_cb(*this, 0), + m_out_p0_cb(*this), + m_out_p1_cb(*this) + //m_out_so_cb(*this), + //m_out_sorq_cb(*this), + //m_out_drq_cb(*this) { } @@ -86,19 +86,6 @@ void necdsp_device::device_start() state_add(UPD7725_SO, "SO", regs.so); state_add(UPD7725_IDB, "IDB", regs.idb); - // resolve callbacks - m_in_int_cb.resolve_safe(0); - //m_in_si_cb.resolve_safe(0); - //m_in_sck_cb.resolve_safe(0); - //m_in_sien_cb.resolve_safe(0); - //m_in_soen_cb.resolve_safe(0); - //m_in_dack_cb.resolve_safe(0); - m_out_p0_cb.resolve_safe(); - m_out_p1_cb.resolve_safe(); - //m_out_so_cb.resolve_safe(); - //m_out_sorq_cb.resolve_safe(); - //m_out_drq_cb.resolve_safe(); - // save state registrations save_item(NAME(regs.pc)); save_item(NAME(regs.rp)); @@ -437,7 +424,7 @@ void necdsp_device::exec_op(uint32_t opcode) { case 12: r = (q << 1) | (c ? 1 : 0); break; //SHL1 (ROL) case 13: r = (q << 2) | 3; break; //SHL2 case 14: r = (q << 4) | 15; break; //SHL4 - case 15: r = (q << 8) | (q >> 8); break; //XCHG + case 15: r = swapendian_int16(q); break; //XCHG } flag.s0 = (r & 0x8000); |