apple2gs: allow slot IRQs to be dispatched [R. Belmont, Peter Ferrie]

This commit is contained in:
arbee 2019-10-02 22:22:49 -04:00
parent 85f85b8607
commit 73c3c08cfc

View file

@ -544,6 +544,8 @@ private:
int m_inh_bank; int m_inh_bank;
bool m_slot_irq;
double m_x_calibration, m_y_calibration; double m_x_calibration, m_y_calibration;
device_a2bus_card_interface *m_slotdevice[8]; device_a2bus_card_interface *m_slotdevice[8];
@ -641,6 +643,7 @@ WRITE_LINE_MEMBER(apple2gs_state::a2bus_irq_w)
if (state == ASSERT_LINE) if (state == ASSERT_LINE)
{ {
raise_irq(IRQS_SLOT); raise_irq(IRQS_SLOT);
m_slot_irq = true;
} }
else else
{ {
@ -1350,6 +1353,8 @@ void apple2gs_state::machine_reset()
m_mouse_dx = 0x00; m_mouse_dx = 0x00;
m_mouse_dy = 0x00; m_mouse_dy = 0x00;
m_slot_irq = false;
#if !RUN_ADB_MICRO #if !RUN_ADB_MICRO
m_adb_state = ADBSTATE_IDLE; m_adb_state = ADBSTATE_IDLE;
m_adb_kmstatus = 0x00; m_adb_kmstatus = 0x00;
@ -2206,9 +2211,15 @@ READ8_MEMBER(apple2gs_state::c000_r)
return adb_read_datareg(); return adb_read_datareg();
case 0x27: // KMSTATUS case 0x27: // KMSTATUS
// hack to let one-second IRQs get through in Nucleus // hack to let one-second IRQs get through in Nucleus
if (m_vgcint & VGCINT_SECOND) if (m_vgcint & VGCINT_SECOND)
return 0; return 0;
// secondary hack for slot IRQs
if (m_slot_irq)
{
m_slot_irq = false;
return 0;
}
return adb_read_kmstatus(); return adb_read_kmstatus();
#endif #endif