apple3: fix low-memory indirection through the X byte and get slot IRQs working [Rob Justice]

This commit is contained in:
arbee 2020-09-28 20:12:01 -04:00
parent 1a298e6670
commit 44fd97da4e
2 changed files with 8 additions and 8 deletions

View File

@ -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)

View File

@ -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);
}
}