diff options
author | arbee <rb6502@users.noreply.github.com> | 2020-09-28 20:12:01 -0400 |
---|---|---|
committer | arbee <rb6502@users.noreply.github.com> | 2020-09-28 20:12:01 -0400 |
commit | 44fd97da4e759b793242f7bc446302560f9e00b2 (patch) | |
tree | 9cb2dd9b69ec5b32956489f798549df2a53569df | |
parent | 1a298e6670306eef5f7d2f8023d33efeb66447c4 (diff) |
apple3: fix low-memory indirection through the X byte and get slot IRQs working [Rob Justice]
-rw-r--r-- | src/devices/bus/a2bus/a2bus.cpp | 4 | ||||
-rw-r--r-- | src/mame/machine/apple3.cpp | 12 |
2 files changed, 8 insertions, 8 deletions
diff --git a/src/devices/bus/a2bus/a2bus.cpp b/src/devices/bus/a2bus/a2bus.cpp index ae5dbf82643..e09671f8f16 100644 --- a/src/devices/bus/a2bus/a2bus.cpp +++ b/src/devices/bus/a2bus/a2bus.cpp @@ -205,8 +205,6 @@ uint8_t a2bus_device::get_a2bus_nmi_mask() void a2bus_device::set_irq_line(int state, int slot) { - m_out_irq_cb(state); - if (state == CLEAR_LINE) { m_slot_irq_mask &= ~(1<<slot); @@ -215,6 +213,8 @@ void a2bus_device::set_irq_line(int state, int slot) { m_slot_irq_mask |= (1<<slot); } + + m_out_irq_cb(state); } void a2bus_device::set_nmi_line(int state, int slot) diff --git a/src/mame/machine/apple3.cpp b/src/mame/machine/apple3.cpp index f5849d8ca85..a875d6dfc9e 100644 --- a/src/mame/machine/apple3.cpp +++ b/src/mame/machine/apple3.cpp @@ -680,7 +680,7 @@ uint8_t *apple3_state::apple3_get_indexed_addr(offs_t offset) if ((offset >= 0xFFD0) && (offset <= 0xFFEF)) result = apple3_bankaddr(~0, offset & 0x7FFF); else if (offset < 0x2000) - result = apple3_bankaddr(~0, offset - 0x2000); + result = apple3_bankaddr(~0, offset); else if (offset > 0x9FFF) result = apple3_bankaddr(~0, offset - 0x8000); else @@ -1367,24 +1367,24 @@ WRITE_LINE_MEMBER(apple3_state::a2bus_irq_w) { uint8_t irq_mask = m_a2bus->get_a2bus_irq_mask(); - m_via[0]->write_ca1(state); + m_via[0]->write_ca1(!state); if (irq_mask & (1<<4)) { - m_via[1]->write_pa4(ASSERT_LINE); + m_via[1]->write_pa4(CLEAR_LINE); } else { - m_via[1]->write_pa4(CLEAR_LINE); + m_via[1]->write_pa4(ASSERT_LINE); } if (irq_mask & (1<<3)) { - m_via[1]->write_pa5(ASSERT_LINE); + m_via[1]->write_pa5(CLEAR_LINE); } else { - m_via[1]->write_pa5(CLEAR_LINE); + m_via[1]->write_pa5(ASSERT_LINE); } } |