mirror of
https://github.com/holub/mame
synced 2025-07-05 01:48:29 +03:00
68307, mc68681, tmp68301: Disable side effects for interrupt acknowledgment (nw)
This commit is contained in:
parent
3826322efb
commit
a4742d0129
@ -225,7 +225,8 @@ void m68307_cpu_device::licr2_interrupt()
|
|||||||
uint8_t m68307_cpu_device::int_ack(offs_t offset)
|
uint8_t m68307_cpu_device::int_ack(offs_t offset)
|
||||||
{
|
{
|
||||||
uint8_t type = m_m68307SIM->get_int_type(this, offset);
|
uint8_t type = m_m68307SIM->get_int_type(this, offset);
|
||||||
logerror("Interrupt acknowledged: level %d, type %01X\n", offset, type);
|
if (!machine().side_effects_disabled())
|
||||||
|
logerror("Interrupt acknowledged: level %d, type %01X\n", offset, type);
|
||||||
|
|
||||||
// UART provides its own vector
|
// UART provides its own vector
|
||||||
if (type == 0x0c)
|
if (type == 0x0c)
|
||||||
|
@ -357,6 +357,14 @@ void mc68681_device::update_interrupts()
|
|||||||
m_read_vector = false; // clear IACK too
|
m_read_vector = false; // clear IACK too
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint8_t mc68681_device::get_irq_vector()
|
||||||
|
{
|
||||||
|
if (!machine().side_effects_disabled())
|
||||||
|
m_read_vector = true;
|
||||||
|
|
||||||
|
return IVR;
|
||||||
|
}
|
||||||
|
|
||||||
double duart_base_device::get_ct_rate()
|
double duart_base_device::get_ct_rate()
|
||||||
{
|
{
|
||||||
double rate = 0.0f;
|
double rate = 0.0f;
|
||||||
|
@ -197,7 +197,7 @@ public:
|
|||||||
|
|
||||||
virtual uint8_t read(offs_t offset) override;
|
virtual uint8_t read(offs_t offset) override;
|
||||||
virtual void write(offs_t offset, uint8_t data) override;
|
virtual void write(offs_t offset, uint8_t data) override;
|
||||||
uint8_t get_irq_vector() { m_read_vector = true; return IVR; }
|
uint8_t get_irq_vector();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void device_start() override;
|
virtual void device_start() override;
|
||||||
|
@ -217,12 +217,15 @@ uint8_t tmp68301_device::irq_callback(offs_t offset)
|
|||||||
u16 mask = (src > 2 ? 2 : 1) << src;
|
u16 mask = (src > 2 ? 2 : 1) << src;
|
||||||
if ((m_ipr & mask) != 0 && (m_imr & mask) == 0)
|
if ((m_ipr & mask) != 0 && (m_imr & mask) == 0)
|
||||||
{
|
{
|
||||||
// add cause to interrupt in-service register
|
if (!machine().side_effects_disabled())
|
||||||
m_iisr |= mask;
|
{
|
||||||
|
// add cause to interrupt in-service register
|
||||||
|
m_iisr |= mask;
|
||||||
|
|
||||||
// no longer pending
|
// no longer pending
|
||||||
m_ipr &= ~mask;
|
m_ipr &= ~mask;
|
||||||
update_ipl();
|
update_ipl();
|
||||||
|
}
|
||||||
|
|
||||||
// vary vector number by type
|
// vary vector number by type
|
||||||
if (src > 6)
|
if (src > 6)
|
||||||
|
Loading…
Reference in New Issue
Block a user