mirror of
https://github.com/holub/mame
synced 2025-04-26 18:23:08 +03:00
mac: Hook up ASC IRQs in system ASICs. (GitHub #10159) [R. Belmont]
This commit is contained in:
parent
a6032f3f92
commit
e5fcbccff8
@ -78,6 +78,7 @@ void sonora_device::device_add_mconfig(machine_config &config)
|
|||||||
ASC(config, m_asc, C15M, asc_device::asc_type::SONORA);
|
ASC(config, m_asc, C15M, asc_device::asc_type::SONORA);
|
||||||
m_asc->add_route(0, "lspeaker", 1.0);
|
m_asc->add_route(0, "lspeaker", 1.0);
|
||||||
m_asc->add_route(1, "rspeaker", 1.0);
|
m_asc->add_route(1, "rspeaker", 1.0);
|
||||||
|
m_asc->irqf_callback().set(FUNC(sonora_device::asc_irq));
|
||||||
|
|
||||||
SWIM2(config, m_fdc, C15M);
|
SWIM2(config, m_fdc, C15M);
|
||||||
m_fdc->devsel_cb().set(FUNC(sonora_device::devsel_w));
|
m_fdc->devsel_cb().set(FUNC(sonora_device::devsel_w));
|
||||||
@ -302,6 +303,20 @@ WRITE_LINE_MEMBER(sonora_device::vbl_w)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WRITE_LINE_MEMBER(sonora_device::asc_irq)
|
||||||
|
{
|
||||||
|
if (state == ASSERT_LINE)
|
||||||
|
{
|
||||||
|
m_pseudovia_regs[3] |= 0x10; // any VIA 2 interrupt | sound interrupt
|
||||||
|
pseudovia_recalc_irqs();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_pseudovia_regs[3] &= ~0x10;
|
||||||
|
pseudovia_recalc_irqs();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void sonora_device::pseudovia_recalc_irqs()
|
void sonora_device::pseudovia_recalc_irqs()
|
||||||
{
|
{
|
||||||
// check slot interrupts and bubble them down to IFR
|
// check slot interrupts and bubble them down to IFR
|
||||||
|
@ -89,6 +89,7 @@ private:
|
|||||||
DECLARE_WRITE_LINE_MEMBER(via_out_cb2);
|
DECLARE_WRITE_LINE_MEMBER(via_out_cb2);
|
||||||
DECLARE_WRITE_LINE_MEMBER(via1_irq);
|
DECLARE_WRITE_LINE_MEMBER(via1_irq);
|
||||||
DECLARE_WRITE_LINE_MEMBER(via2_irq);
|
DECLARE_WRITE_LINE_MEMBER(via2_irq);
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(asc_irq);
|
||||||
TIMER_CALLBACK_MEMBER(mac_6015_tick);
|
TIMER_CALLBACK_MEMBER(mac_6015_tick);
|
||||||
|
|
||||||
void phases_w(uint8_t phases);
|
void phases_w(uint8_t phases);
|
||||||
|
@ -115,6 +115,7 @@ void v8_device::device_add_mconfig(machine_config &config)
|
|||||||
ASC(config, m_asc, C15M, asc_device::asc_type::V8);
|
ASC(config, m_asc, C15M, asc_device::asc_type::V8);
|
||||||
m_asc->add_route(0, "lspeaker", 1.0);
|
m_asc->add_route(0, "lspeaker", 1.0);
|
||||||
m_asc->add_route(1, "rspeaker", 1.0);
|
m_asc->add_route(1, "rspeaker", 1.0);
|
||||||
|
m_asc->irqf_callback().set(FUNC(v8_device::asc_irq));
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
@ -329,6 +330,20 @@ WRITE_LINE_MEMBER(v8_device::vbl_w)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WRITE_LINE_MEMBER(v8_device::asc_irq)
|
||||||
|
{
|
||||||
|
if (state == ASSERT_LINE)
|
||||||
|
{
|
||||||
|
m_pseudovia_regs[3] |= 0x10; // any VIA 2 interrupt | sound interrupt
|
||||||
|
pseudovia_recalc_irqs();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_pseudovia_regs[3] &= ~0x10;
|
||||||
|
pseudovia_recalc_irqs();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void v8_device::pseudovia_recalc_irqs()
|
void v8_device::pseudovia_recalc_irqs()
|
||||||
{
|
{
|
||||||
// check slot interrupts and bubble them down to IFR
|
// check slot interrupts and bubble them down to IFR
|
||||||
@ -859,6 +874,7 @@ void eagle_device::device_add_mconfig(machine_config &config)
|
|||||||
ASC(config.replace(), m_asc, C15M, asc_device::asc_type::EAGLE);
|
ASC(config.replace(), m_asc, C15M, asc_device::asc_type::EAGLE);
|
||||||
m_asc->add_route(0, "lspeaker", 1.0);
|
m_asc->add_route(0, "lspeaker", 1.0);
|
||||||
m_asc->add_route(1, "rspeaker", 1.0);
|
m_asc->add_route(1, "rspeaker", 1.0);
|
||||||
|
m_asc->irqf_callback().set(FUNC(eagle_device::asc_irq));
|
||||||
}
|
}
|
||||||
|
|
||||||
eagle_device::eagle_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
|
eagle_device::eagle_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
|
||||||
@ -938,6 +954,7 @@ void spice_device::device_add_mconfig(machine_config &config)
|
|||||||
ASC(config.replace(), m_asc, C15M, asc_device::asc_type::SONORA);
|
ASC(config.replace(), m_asc, C15M, asc_device::asc_type::SONORA);
|
||||||
m_asc->add_route(0, "lspeaker", 1.0);
|
m_asc->add_route(0, "lspeaker", 1.0);
|
||||||
m_asc->add_route(1, "rspeaker", 1.0);
|
m_asc->add_route(1, "rspeaker", 1.0);
|
||||||
|
m_asc->irqf_callback().set(FUNC(spice_device::asc_irq));
|
||||||
|
|
||||||
SWIM2(config, m_fdc, C15M);
|
SWIM2(config, m_fdc, C15M);
|
||||||
m_fdc->devsel_cb().set(FUNC(spice_device::devsel_w));
|
m_fdc->devsel_cb().set(FUNC(spice_device::devsel_w));
|
||||||
|
@ -63,6 +63,8 @@ protected:
|
|||||||
|
|
||||||
virtual u8 pseudovia_r(offs_t offset);
|
virtual u8 pseudovia_r(offs_t offset);
|
||||||
|
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(asc_irq);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
devcb_write_line write_pb4, write_pb5, write_cb2, write_hdsel, write_hmmu_enable;
|
devcb_write_line write_pb4, write_pb5, write_cb2, write_hdsel, write_hmmu_enable;
|
||||||
devcb_read_line read_pb3;
|
devcb_read_line read_pb3;
|
||||||
|
@ -90,6 +90,7 @@ void vasp_device::device_add_mconfig(machine_config &config)
|
|||||||
ASC(config, m_asc, C15M, asc_device::asc_type::VASP);
|
ASC(config, m_asc, C15M, asc_device::asc_type::VASP);
|
||||||
m_asc->add_route(0, "lspeaker", 1.0);
|
m_asc->add_route(0, "lspeaker", 1.0);
|
||||||
m_asc->add_route(1, "rspeaker", 1.0);
|
m_asc->add_route(1, "rspeaker", 1.0);
|
||||||
|
m_asc->irqf_callback().set(FUNC(vasp_device::asc_irq));
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
@ -346,6 +347,20 @@ WRITE_LINE_MEMBER(vasp_device::slot2_irq_w)
|
|||||||
pseudovia_recalc_irqs();
|
pseudovia_recalc_irqs();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WRITE_LINE_MEMBER(vasp_device::asc_irq)
|
||||||
|
{
|
||||||
|
if (state == ASSERT_LINE)
|
||||||
|
{
|
||||||
|
m_pseudovia_regs[3] |= 0x10; // any VIA 2 interrupt | sound interrupt
|
||||||
|
pseudovia_recalc_irqs();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_pseudovia_regs[3] &= ~0x10;
|
||||||
|
pseudovia_recalc_irqs();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void vasp_device::pseudovia_recalc_irqs()
|
void vasp_device::pseudovia_recalc_irqs()
|
||||||
{
|
{
|
||||||
// check slot interrupts and bubble them down to IFR
|
// check slot interrupts and bubble them down to IFR
|
||||||
|
@ -92,6 +92,7 @@ private:
|
|||||||
DECLARE_WRITE_LINE_MEMBER(via_out_cb2);
|
DECLARE_WRITE_LINE_MEMBER(via_out_cb2);
|
||||||
DECLARE_WRITE_LINE_MEMBER(via1_irq);
|
DECLARE_WRITE_LINE_MEMBER(via1_irq);
|
||||||
DECLARE_WRITE_LINE_MEMBER(via2_irq);
|
DECLARE_WRITE_LINE_MEMBER(via2_irq);
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(asc_irq);
|
||||||
TIMER_CALLBACK_MEMBER(mac_6015_tick);
|
TIMER_CALLBACK_MEMBER(mac_6015_tick);
|
||||||
|
|
||||||
u32 vram_r(offs_t offset);
|
u32 vram_r(offs_t offset);
|
||||||
|
Loading…
Reference in New Issue
Block a user