summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/xavix2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/xavix2.cpp')
-rw-r--r--src/mame/drivers/xavix2.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/mame/drivers/xavix2.cpp b/src/mame/drivers/xavix2.cpp
index 1bd77684b77..094f4d129ef 100644
--- a/src/mame/drivers/xavix2.cpp
+++ b/src/mame/drivers/xavix2.cpp
@@ -52,6 +52,7 @@ private:
void irq_raise(u32 level);
void irq_clear(u32 level);
bool irq_state(u32 level) const;
+ void irq_clear_w(u16 data);
u8 irq_level_r();
void dma_src_w(offs_t, u32 data, u32 mem_mask);
@@ -92,6 +93,14 @@ void xavix2_state::irq_clear(u32 level)
m_maincpu->set_input_line(0, CLEAR_LINE);
}
+void xavix2_state::irq_clear_w(u16 data)
+{
+ m_int_active &= ~data;
+ if(!m_int_active)
+ m_maincpu->set_input_line(0, CLEAR_LINE);
+
+}
+
u8 xavix2_state::irq_level_r()
{
for(u32 i=31; i>=0; i--)
@@ -240,6 +249,7 @@ void xavix2_state::mem(address_map &map)
map(0xffffe634, 0xffffe64b).w(FUNC(xavix2_state::crtc_w));
map(0xfffffc00, 0xfffffc00).r(FUNC(xavix2_state::irq_level_r));
+ map(0xfffffc04, 0xfffffc05).w(FUNC(xavix2_state::irq_clear_w));
}
uint32_t xavix2_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
@@ -250,9 +260,6 @@ uint32_t xavix2_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap
void xavix2_state::machine_start()
{
m_dma_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(xavix2_state::dma_end), this));
-
- m_maincpu->space(AS_PROGRAM).install_write_tap(0x7c0, 0x7c3, "7c0", [this](offs_t offset, u32 &data, u32 mem_mask) { logerror("write %x, %x @ %x (%x)\n", offset, data, mem_mask, machine().describe_context()); });
- m_maincpu->space(AS_PROGRAM).install_write_tap(0xc00007c0, 0xc00007c3, "7c0", [this](offs_t offset, u32 &data, u32 mem_mask) { logerror("write %x, %x @ %x (%x)\n", offset, data, mem_mask, machine().describe_context()); });
}
void xavix2_state::machine_reset()