summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/z8000/z8000.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/z8000/z8000.cpp')
-rw-r--r--src/devices/cpu/z8000/z8000.cpp19
1 files changed, 7 insertions, 12 deletions
diff --git a/src/devices/cpu/z8000/z8000.cpp b/src/devices/cpu/z8000/z8000.cpp
index 5df67004181..8cfe08c72ec 100644
--- a/src/devices/cpu/z8000/z8000.cpp
+++ b/src/devices/cpu/z8000/z8000.cpp
@@ -16,9 +16,6 @@
#include "z8000.h"
#include "z8000cpu.h"
-#include "debugger.h"
-#include "debug/debugcon.h"
-
//#define VERBOSE 1
#include "logmacro.h"
@@ -40,7 +37,7 @@ z8002_device::z8002_device(const machine_config &mconfig, device_type type, cons
, m_opcodes_config("first_word", ENDIANNESS_BIG, 16, addrbits, 0)
, m_stack_config("stack", ENDIANNESS_BIG, 16, addrbits, 0)
, m_sio_config("io_spc", ENDIANNESS_BIG, 16, 16, 0)
- , m_iack_in(*this)
+ , m_iack_in(*this, 0xffff)
, m_mo_out(*this)
, m_ppc(0), m_pc(0), m_psapseg(0), m_psapoff(0), m_fcw(0), m_refresh(0), m_nspseg(0), m_nspoff(0), m_irq_req(0), m_irq_vec(0), m_op_valid(0), m_nmi_state(0), m_mi(0), m_halt(false), m_icount(0)
, m_vector_mult(vecmult)
@@ -255,7 +252,7 @@ uint16_t z8002_device::RDPORT_W(int mode, uint16_t addr)
{
memory_access<16, 1, 0, ENDIANNESS_BIG>::specific &space = (mode == 0) ? m_io : m_sio;
if (BIT(addr, 0))
- return swapendian_int16(space.read_word(addr & ~1, 0x00ff));
+ return swapendian_int16(space.read_word(addr & ~1, 0xffff));
else
return space.read_word(addr);
}
@@ -271,7 +268,7 @@ void z8002_device::WRPORT_W(int mode, uint16_t addr, uint16_t value)
{
memory_access<16, 1, 0, ENDIANNESS_BIG>::specific &space = (mode == 0) ? m_io : m_sio;
if (BIT(addr, 0))
- space.write_word(addr & ~1, swapendian_int16(value), 0x00ff);
+ space.write_word(addr & ~1, swapendian_int16(value), 0xffff);
else
space.write_word(addr, value, 0xffff);
}
@@ -396,7 +393,7 @@ void z8002_device::Interrupt()
else
if (m_irq_req & Z8000_SEGTRAP)
{
- //standard_irq_callback(SEGT_LINE);
+ //standard_irq_callback(SEGT_LINE, m_pc);
m_irq_vec = m_iack_in[0](m_pc);
CHANGE_FCW(fcw | F_S_N | F_SEG_Z8001());/* switch to segmented (on Z8001) system mode */
@@ -411,7 +408,7 @@ void z8002_device::Interrupt()
else
if (m_irq_req & Z8000_NMI)
{
- standard_irq_callback(NMI_LINE);
+ standard_irq_callback(NMI_LINE, m_pc);
m_irq_vec = m_iack_in[1](m_pc);
m_halt = false;
@@ -428,7 +425,7 @@ void z8002_device::Interrupt()
else
if ((m_irq_req & Z8000_NVI) && (m_fcw & F_NVIE))
{
- standard_irq_callback(NVI_LINE);
+ standard_irq_callback(NVI_LINE, m_pc);
m_irq_vec = m_iack_in[2](m_pc);
m_halt = false;
@@ -444,7 +441,7 @@ void z8002_device::Interrupt()
else
if ((m_irq_req & Z8000_VI) && (m_fcw & F_VIE))
{
- standard_irq_callback(VI_LINE);
+ standard_irq_callback(VI_LINE, m_pc);
m_irq_vec = m_iack_in[3](m_pc);
m_halt = false;
@@ -613,8 +610,6 @@ void z8002_device::device_start()
register_save_state();
set_icountptr(m_icount);
- m_iack_in.resolve_all_safe(0xffff);
- m_mo_out.resolve_safe();
m_mi = CLEAR_LINE;
}