mirror of
https://github.com/holub/mame
synced 2025-06-07 13:23:50 +03:00
z80dma: Added IEO callback. [Curt Coder]
This commit is contained in:
parent
bb1670b623
commit
f85348e977
@ -154,6 +154,7 @@ z80dma_device::z80dma_device(const machine_config &mconfig, const char *tag, dev
|
||||
, device_z80daisy_interface(mconfig, *this)
|
||||
, m_out_busreq_cb(*this)
|
||||
, m_out_int_cb(*this)
|
||||
, m_out_ieo_cb(*this)
|
||||
, m_out_bao_cb(*this)
|
||||
, m_in_mreq_cb(*this)
|
||||
, m_out_mreq_cb(*this)
|
||||
@ -172,6 +173,7 @@ void z80dma_device::device_start()
|
||||
// resolve callbacks
|
||||
m_out_busreq_cb.resolve_safe();
|
||||
m_out_int_cb.resolve_safe();
|
||||
m_out_ieo_cb.resolve_safe();
|
||||
m_out_bao_cb.resolve_safe();
|
||||
m_in_mreq_cb.resolve_safe(0);
|
||||
m_out_mreq_cb.resolve_safe();
|
||||
@ -189,6 +191,7 @@ void z80dma_device::device_start()
|
||||
save_item(NAME(m_status));
|
||||
save_item(NAME(m_dma_enabled));
|
||||
save_item(NAME(m_vector));
|
||||
save_item(NAME(m_iei));
|
||||
save_item(NAME(m_ip));
|
||||
save_item(NAME(m_ius));
|
||||
save_item(NAME(m_addressA));
|
||||
@ -331,6 +334,7 @@ int z80dma_device::is_ready()
|
||||
void z80dma_device::interrupt_check()
|
||||
{
|
||||
m_out_int_cb(m_ip ? ASSERT_LINE : CLEAR_LINE);
|
||||
m_out_ieo_cb(m_iei && !m_ip);
|
||||
}
|
||||
|
||||
|
||||
|
@ -53,6 +53,7 @@ public:
|
||||
|
||||
auto out_busreq_callback() { return m_out_busreq_cb.bind(); }
|
||||
auto out_int_callback() { return m_out_int_cb.bind(); }
|
||||
auto out_ieo_callback() { return m_out_ieo_cb.bind(); }
|
||||
auto out_bao_callback() { return m_out_bao_cb.bind(); }
|
||||
auto in_mreq_callback() { return m_in_mreq_cb.bind(); }
|
||||
auto out_mreq_callback() { return m_out_mreq_cb.bind(); }
|
||||
@ -62,6 +63,7 @@ public:
|
||||
uint8_t read();
|
||||
void write(uint8_t data);
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER(iei_w) { m_iei = state; interrupt_check(); }
|
||||
DECLARE_WRITE_LINE_MEMBER(rdy_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(wait_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(bai_w);
|
||||
@ -94,6 +96,7 @@ private:
|
||||
// internal state
|
||||
devcb_write_line m_out_busreq_cb;
|
||||
devcb_write_line m_out_int_cb;
|
||||
devcb_write_line m_out_ieo_cb;
|
||||
devcb_write_line m_out_bao_cb;
|
||||
devcb_read8 m_in_mreq_cb;
|
||||
devcb_write8 m_out_mreq_cb;
|
||||
@ -125,6 +128,7 @@ private:
|
||||
uint8_t m_latch;
|
||||
|
||||
// interrupts
|
||||
bool m_iei;
|
||||
int m_ip; // interrupt pending
|
||||
int m_ius; // interrupt under service
|
||||
uint8_t m_vector; // interrupt vector
|
||||
|
Loading…
Reference in New Issue
Block a user