mirror of
https://github.com/holub/mame
synced 2025-06-07 13:23:50 +03:00
s2650: correct interrupt cycles
This commit is contained in:
parent
c6fea74bd8
commit
1539249cfd
@ -73,7 +73,8 @@ device_memory_interface::space_config_vector s2650_device::memory_space_config()
|
|||||||
|
|
||||||
|
|
||||||
// condition code changes for a byte
|
// condition code changes for a byte
|
||||||
static const uint8_t ccc[0x100] = {
|
static const uint8_t ccc[0x100] =
|
||||||
|
{
|
||||||
0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
|
0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
|
||||||
0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
|
0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
|
||||||
0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
|
0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
|
||||||
@ -196,6 +197,7 @@ inline int s2650_device::check_irq_line()
|
|||||||
int vector = m_intack_handler();
|
int vector = m_intack_handler();
|
||||||
|
|
||||||
// build effective address within first 8K page
|
// build effective address within first 8K page
|
||||||
|
cycles += 9; // ZBSR
|
||||||
m_ea = util::sext(vector, 7) & PMSK;
|
m_ea = util::sext(vector, 7) & PMSK;
|
||||||
if (vector & 0x80) // indirect bit set ?
|
if (vector & 0x80) // indirect bit set ?
|
||||||
{
|
{
|
||||||
@ -215,6 +217,7 @@ inline int s2650_device::check_irq_line()
|
|||||||
m_iar = m_ea & PMSK;
|
m_iar = m_ea & PMSK;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return cycles;
|
return cycles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,8 +42,8 @@ protected:
|
|||||||
virtual void device_reset() override ATTR_COLD;
|
virtual void device_reset() override ATTR_COLD;
|
||||||
|
|
||||||
// device_execute_interface overrides
|
// device_execute_interface overrides
|
||||||
virtual uint32_t execute_min_cycles() const noexcept override { return 5; }
|
virtual uint32_t execute_min_cycles() const noexcept override { return 6; }
|
||||||
virtual uint32_t execute_max_cycles() const noexcept override { return 13; }
|
virtual uint32_t execute_max_cycles() const noexcept override { return 18+15; } // includes interrupt
|
||||||
virtual uint32_t execute_default_irq_vector(int inputnum) const noexcept override { return 0; }
|
virtual uint32_t execute_default_irq_vector(int inputnum) const noexcept override { return 0; }
|
||||||
virtual void execute_run() override;
|
virtual void execute_run() override;
|
||||||
virtual void execute_set_input(int inputnum, int state) override;
|
virtual void execute_set_input(int inputnum, int state) override;
|
||||||
|
Loading…
Reference in New Issue
Block a user