mirror of
https://github.com/holub/mame
synced 2025-10-05 08:41:31 +03:00
diexec: Interrupt API changes (nw)
- PULSE_LINE is no longer a value. Existing uses have been changed to pulse_input_line with attotime::zero as the second argument. - Formerly only INPUT_LINE_NMI and INPUT_LINE_RESET were allowed with PULSE_LINE. INPUT_LINE_NMI no longer receives special handling; instead, CPU devices must specify which of their input lines are edge-triggered and thus may be used with zero-width pulses by overriding the execute_input_edge_triggered predicate. INPUT_LINE_RESET is still special-cased, however. - execute_default_irq_vector now allows a different default vector to be specified for each input line. This added flexibility may or may not prove useful.
This commit is contained in:
parent
e5dc17a488
commit
0ba652e723
@ -144,7 +144,7 @@ uint8_t a2bus_applicard_device::read_c0nx(uint8_t offset)
|
||||
fatalerror("Applicard: Z80 IRQ not supported yet\n");
|
||||
|
||||
case 7: // NMI on Z80 (direct)
|
||||
m_z80->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
m_z80->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
break;
|
||||
|
||||
}
|
||||
|
@ -526,7 +526,7 @@ WRITE8_MEMBER( epson_lx810l_device::cr_stepper )
|
||||
|
||||
WRITE_LINE_MEMBER( epson_lx810l_device::e05a30_ready )
|
||||
{
|
||||
m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
|
||||
|
||||
|
@ -103,7 +103,7 @@ INPUT_CHANGED_MEMBER(cpc_transtape_device::button_red_w)
|
||||
{
|
||||
m_output |= 0x1f;
|
||||
map_enable();
|
||||
m_cpu->set_input_line(INPUT_LINE_NMI,PULSE_LINE);
|
||||
m_cpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -376,7 +376,7 @@ void isa8_device::nmi()
|
||||
{
|
||||
if (m_nmi_enabled)
|
||||
{
|
||||
m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE );
|
||||
m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -602,7 +602,7 @@ WRITE8_MEMBER( sb16_lle_device::dsp_reset_w )
|
||||
if(data & 1)
|
||||
{
|
||||
device_reset();
|
||||
m_cpu->set_input_line(INPUT_LINE_RESET, PULSE_LINE);
|
||||
m_cpu->pulse_input_line(INPUT_LINE_RESET, attotime::zero);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -168,7 +168,7 @@ void stereo_fx_device::dack_w(int line, uint8_t data)
|
||||
WRITE8_MEMBER( stereo_fx_device::dsp_reset_w )
|
||||
{
|
||||
device_reset();
|
||||
m_cpu->set_input_line(INPUT_LINE_RESET, PULSE_LINE);
|
||||
m_cpu->pulse_input_line(INPUT_LINE_RESET, attotime::zero);
|
||||
}
|
||||
|
||||
READ8_MEMBER( stereo_fx_device::dsp_wbuf_status_r )
|
||||
|
@ -3369,7 +3369,7 @@ void cp1610_cpu_device::device_start()
|
||||
void cp1610_cpu_device::device_reset()
|
||||
{
|
||||
/* This is how we set the reset vector */
|
||||
set_input_line(CP1610_RESET, PULSE_LINE);
|
||||
pulse_input_line(CP1610_RESET, attotime::zero);
|
||||
}
|
||||
|
||||
void cp1610_cpu_device::execute_set_input(int irqline, int state)
|
||||
|
@ -50,6 +50,7 @@ protected:
|
||||
virtual uint32_t execute_min_cycles() const override { return 1; }
|
||||
virtual uint32_t execute_max_cycles() const override { return 7; }
|
||||
virtual uint32_t execute_input_lines() const override { return 2; }
|
||||
virtual bool execute_input_edge_triggered(int inputnum) const override { return inputnum == CP1610_RESET || inputnum == CP1610_INT_INTR; }
|
||||
virtual void execute_run() override;
|
||||
virtual void execute_set_input(int inputnum, int state) override;
|
||||
|
||||
|
@ -226,7 +226,7 @@ protected:
|
||||
virtual uint32_t execute_min_cycles() const override { return 1; }
|
||||
virtual uint32_t execute_max_cycles() const override { return 8; }
|
||||
virtual uint32_t execute_input_lines() const override { return 4; }
|
||||
virtual uint32_t execute_default_irq_vector() const override { return 0; }
|
||||
virtual bool execute_input_edge_triggered(int inputnum) const override { return inputnum == DSP56K_IRQ_RESET; }
|
||||
virtual void execute_run() override;
|
||||
virtual void execute_set_input(int inputnum, int state) override;
|
||||
|
||||
|
@ -2264,6 +2264,17 @@ uint32_t h6280_device::execute_input_lines() const
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// execute_input_edge_triggered - return true if
|
||||
// the input line has an asynchronous edge trigger
|
||||
//-------------------------------------------------
|
||||
|
||||
bool h6280_device::execute_input_edge_triggered(int inputnum) const
|
||||
{
|
||||
return inputnum == H6280_NMI_STATE;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// execute_set_input - act on a changed input/
|
||||
// interrupt line
|
||||
|
@ -81,6 +81,7 @@ protected:
|
||||
virtual uint32_t execute_min_cycles() const override;
|
||||
virtual uint32_t execute_max_cycles() const override;
|
||||
virtual uint32_t execute_input_lines() const override;
|
||||
virtual bool execute_input_edge_triggered(int inputnum) const override;
|
||||
virtual void execute_run() override;
|
||||
virtual void execute_set_input(int inputnum, int state) override;
|
||||
|
||||
|
@ -177,6 +177,11 @@ uint32_t h8_device::execute_input_lines() const
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool h8_device::execute_input_edge_triggered(int inputnum) const
|
||||
{
|
||||
return inputnum == INPUT_LINE_NMI;
|
||||
}
|
||||
|
||||
void h8_device::recompute_bcount(uint64_t event_time)
|
||||
{
|
||||
if(!event_time || event_time >= total_cycles() + icount) {
|
||||
|
@ -97,6 +97,7 @@ protected:
|
||||
virtual uint32_t execute_min_cycles() const override;
|
||||
virtual uint32_t execute_max_cycles() const override;
|
||||
virtual uint32_t execute_input_lines() const override;
|
||||
virtual bool execute_input_edge_triggered(int inputnum) const override;
|
||||
virtual void execute_run() override;
|
||||
|
||||
// device_memory_interface overrides
|
||||
|
@ -69,7 +69,7 @@ protected:
|
||||
// device_execute_interface overrides
|
||||
virtual uint32_t execute_min_cycles() const override { return 6; }
|
||||
virtual uint32_t execute_input_lines() const override { return 2; }
|
||||
virtual uint32_t execute_default_irq_vector() const override { return 0xffff; }
|
||||
virtual uint32_t execute_default_irq_vector(int inputnum) const override { return 0xff; }
|
||||
virtual void execute_run() override;
|
||||
virtual void execute_set_input(int inputnum, int state) override;
|
||||
|
||||
|
@ -773,7 +773,7 @@ void i386_device::i386_trap(int irq, int irq_gate, int trap_level)
|
||||
if(trap_level >= 3)
|
||||
{
|
||||
logerror("IRQ: Triple fault. CPU reset.\n");
|
||||
set_input_line(INPUT_LINE_RESET, PULSE_LINE);
|
||||
pulse_input_line(INPUT_LINE_RESET, attotime::zero);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -60,6 +60,7 @@ protected:
|
||||
virtual uint32_t execute_min_cycles() const override { return 1; }
|
||||
virtual uint32_t execute_max_cycles() const override { return 40; }
|
||||
virtual uint32_t execute_input_lines() const override { return 32; }
|
||||
virtual bool execute_input_edge_triggered(int inputnum) const override { return inputnum == INPUT_LINE_NMI; }
|
||||
virtual void execute_run() override;
|
||||
virtual void execute_set_input(int inputnum, int state) override;
|
||||
|
||||
@ -1475,6 +1476,7 @@ public:
|
||||
protected:
|
||||
pentium_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
virtual bool execute_input_edge_triggered(int inputnum) const override { return inputnum == INPUT_LINE_NMI || inputnum == INPUT_LINE_SMI; }
|
||||
virtual void execute_set_input(int inputnum, int state) override;
|
||||
virtual void device_start() override;
|
||||
virtual void device_reset() override;
|
||||
|
@ -85,7 +85,8 @@ protected:
|
||||
virtual u32 execute_min_cycles() const override { return 4; }
|
||||
virtual u32 execute_max_cycles() const override { return 16; }
|
||||
virtual u32 execute_input_lines() const override { return 4; }
|
||||
virtual u32 execute_default_irq_vector() const override { return 0xff; }
|
||||
virtual uint32_t execute_default_irq_vector(int inputnum) const override { return 0xff; }
|
||||
virtual bool execute_input_edge_triggered(int inputnum) const override { return inputnum == I8085_RST75_LINE; }
|
||||
virtual void execute_run() override;
|
||||
virtual void execute_set_input(int inputnum, int state) override;
|
||||
virtual u64 execute_clocks_to_cycles(u64 clocks) const override { return (clocks + 2 - 1) / 2; }
|
||||
|
@ -138,6 +138,7 @@ protected:
|
||||
virtual uint32_t execute_min_cycles() const override { return 1; }
|
||||
virtual uint32_t execute_max_cycles() const override { return 50; }
|
||||
virtual void execute_set_input(int inputnum, int state) override;
|
||||
virtual bool execute_input_edge_triggered(int inputnum) const override { return inputnum == INPUT_LINE_NMI; }
|
||||
|
||||
// device_disasm_interface overrides
|
||||
virtual std::unique_ptr<util::disasm_interface> create_disassembler() override;
|
||||
|
@ -90,7 +90,6 @@ protected:
|
||||
virtual uint32_t execute_min_cycles() const override { return 1; } /* ???? TODO: Exact timing unknown */
|
||||
virtual uint32_t execute_max_cycles() const override { return 1; } /* ???? TODO: Exact timing unknown */
|
||||
virtual uint32_t execute_input_lines() const override { return 4; }
|
||||
virtual uint32_t execute_default_irq_vector() const override { return 0xffffffff; }
|
||||
virtual void execute_run() override;
|
||||
virtual void execute_set_input(int inputnum, int state) override;
|
||||
|
||||
|
@ -82,7 +82,7 @@ protected:
|
||||
virtual uint32_t execute_min_cycles() const override { return 2; }
|
||||
virtual uint32_t execute_max_cycles() const override { return 19; }
|
||||
virtual uint32_t execute_input_lines() const override { return 2; }
|
||||
virtual uint32_t execute_default_irq_vector() const override { return 0; }
|
||||
virtual bool execute_input_edge_triggered(int inputnum) const override { return inputnum == LH5801_LINE_MI || inputnum == INPUT_LINE_NMI; }
|
||||
virtual void execute_run() override;
|
||||
virtual void execute_set_input(int inputnum, int state) override;
|
||||
|
||||
|
@ -2523,7 +2523,6 @@ TABLE_FUNCTION(void, set_line, (int line, int state))
|
||||
break;
|
||||
|
||||
case ASSERT_LINE:
|
||||
case PULSE_LINE:
|
||||
case HOLD_LINE:
|
||||
LINE_IRQ |= (1 << line);
|
||||
if (m37710_irq_levels[line])
|
||||
|
@ -140,6 +140,11 @@ uint32_t m6502_device::execute_input_lines() const
|
||||
return NMI_LINE+1;
|
||||
}
|
||||
|
||||
bool m6502_device::execute_input_edge_triggered(int inputnum) const
|
||||
{
|
||||
return inputnum == NMI_LINE;
|
||||
}
|
||||
|
||||
void m6502_device::do_adc_d(uint8_t val)
|
||||
{
|
||||
uint8_t c = P & F_C ? 1 : 0;
|
||||
|
@ -96,6 +96,7 @@ protected:
|
||||
virtual uint32_t execute_input_lines() const override;
|
||||
virtual void execute_run() override;
|
||||
virtual void execute_set_input(int inputnum, int state) override;
|
||||
virtual bool execute_input_edge_triggered(int inputnum) const override;
|
||||
|
||||
// device_memory_interface overrides
|
||||
virtual space_config_vector memory_space_config() const override;
|
||||
|
@ -55,7 +55,7 @@ protected:
|
||||
virtual uint32_t execute_min_cycles() const override { return 1; }
|
||||
virtual uint32_t execute_max_cycles() const override { return 12; }
|
||||
virtual uint32_t execute_input_lines() const override { return 2; }
|
||||
virtual uint32_t execute_default_irq_vector() const override { return 0; }
|
||||
virtual bool execute_input_edge_triggered(int inputnum) const override { return inputnum == INPUT_LINE_NMI; }
|
||||
virtual void execute_run() override;
|
||||
virtual void execute_set_input(int inputnum, int state) override;
|
||||
|
||||
|
@ -16,7 +16,6 @@ enum
|
||||
/* Active eddge is selecrable by internal reg. */
|
||||
/* raise eddge : CLEAR_LINE -> ASSERT_LINE */
|
||||
/* fall eddge : ASSERT_LINE -> CLEAR_LINE */
|
||||
/* it is usuali to use PULSE_LINE state */
|
||||
M6801_SC1_LINE
|
||||
};
|
||||
|
||||
|
@ -117,6 +117,8 @@ protected:
|
||||
virtual uint32_t execute_min_cycles() const override { return 4; };
|
||||
virtual uint32_t execute_max_cycles() const override { return 158; };
|
||||
virtual uint32_t execute_input_lines() const override { return 8; }; // number of input lines
|
||||
virtual uint32_t execute_default_irq_vector(int inputnum) const override { return M68K_INT_ACK_AUTOVECTOR; }
|
||||
virtual bool execute_input_edge_triggered(int inputnum) const override { return inputnum == M68K_IRQ_7; }
|
||||
virtual void execute_run() override;
|
||||
virtual void execute_set_input(int inputnum, int state) override;
|
||||
|
||||
@ -352,8 +354,6 @@ public:
|
||||
virtual uint32_t execute_min_cycles() const override { return 4; };
|
||||
virtual uint32_t execute_max_cycles() const override { return 158; };
|
||||
|
||||
virtual uint32_t execute_default_irq_vector() const override { return -1; };
|
||||
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
|
||||
@ -375,8 +375,6 @@ public:
|
||||
virtual uint32_t execute_min_cycles() const override { return 4; };
|
||||
virtual uint32_t execute_max_cycles() const override { return 158; };
|
||||
|
||||
virtual uint32_t execute_default_irq_vector() const override { return -1; };
|
||||
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
};
|
||||
@ -395,8 +393,6 @@ public:
|
||||
virtual uint32_t execute_min_cycles() const override { return 4; };
|
||||
virtual uint32_t execute_max_cycles() const override { return 158; };
|
||||
|
||||
virtual uint32_t execute_default_irq_vector() const override { return -1; };
|
||||
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
};
|
||||
@ -412,8 +408,6 @@ public:
|
||||
virtual uint32_t execute_min_cycles() const override { return 4; };
|
||||
virtual uint32_t execute_max_cycles() const override { return 158; };
|
||||
|
||||
virtual uint32_t execute_default_irq_vector() const override { return -1; };
|
||||
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
};
|
||||
@ -429,8 +423,6 @@ public:
|
||||
virtual uint32_t execute_min_cycles() const override { return 4; };
|
||||
virtual uint32_t execute_max_cycles() const override { return 158; };
|
||||
|
||||
virtual uint32_t execute_default_irq_vector() const override { return -1; };
|
||||
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
};
|
||||
@ -446,8 +438,6 @@ public:
|
||||
virtual uint32_t execute_min_cycles() const override { return 2; };
|
||||
virtual uint32_t execute_max_cycles() const override { return 158; };
|
||||
|
||||
virtual uint32_t execute_default_irq_vector() const override { return -1; };
|
||||
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
};
|
||||
@ -463,8 +453,6 @@ public:
|
||||
virtual uint32_t execute_min_cycles() const override { return 2; };
|
||||
virtual uint32_t execute_max_cycles() const override { return 158; };
|
||||
|
||||
virtual uint32_t execute_default_irq_vector() const override { return -1; };
|
||||
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
};
|
||||
@ -480,8 +468,6 @@ public:
|
||||
virtual uint32_t execute_min_cycles() const override { return 2; };
|
||||
virtual uint32_t execute_max_cycles() const override { return 158; };
|
||||
|
||||
virtual uint32_t execute_default_irq_vector() const override { return -1; };
|
||||
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
};
|
||||
@ -497,8 +483,6 @@ public:
|
||||
virtual uint32_t execute_min_cycles() const override { return 2; };
|
||||
virtual uint32_t execute_max_cycles() const override { return 158; };
|
||||
|
||||
virtual uint32_t execute_default_irq_vector() const override { return -1; };
|
||||
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
};
|
||||
@ -514,8 +498,6 @@ public:
|
||||
virtual uint32_t execute_min_cycles() const override { return 2; };
|
||||
virtual uint32_t execute_max_cycles() const override { return 158; };
|
||||
|
||||
virtual uint32_t execute_default_irq_vector() const override { return -1; };
|
||||
|
||||
virtual bool memory_translate(int space, int intention, offs_t &address) override;
|
||||
|
||||
// device-level overrides
|
||||
@ -533,8 +515,6 @@ public:
|
||||
virtual uint32_t execute_min_cycles() const override { return 2; };
|
||||
virtual uint32_t execute_max_cycles() const override { return 158; };
|
||||
|
||||
virtual uint32_t execute_default_irq_vector() const override { return -1; };
|
||||
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
};
|
||||
@ -550,8 +530,6 @@ public:
|
||||
virtual uint32_t execute_min_cycles() const override { return 2; };
|
||||
virtual uint32_t execute_max_cycles() const override { return 158; };
|
||||
|
||||
virtual uint32_t execute_default_irq_vector() const override { return -1; };
|
||||
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
};
|
||||
@ -567,8 +545,6 @@ public:
|
||||
virtual uint32_t execute_min_cycles() const override { return 2; };
|
||||
virtual uint32_t execute_max_cycles() const override { return 158; };
|
||||
|
||||
virtual uint32_t execute_default_irq_vector() const override { return -1; };
|
||||
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
};
|
||||
@ -584,8 +560,6 @@ public:
|
||||
virtual uint32_t execute_min_cycles() const override { return 2; };
|
||||
virtual uint32_t execute_max_cycles() const override { return 158; };
|
||||
|
||||
virtual uint32_t execute_default_irq_vector() const override { return -1; };
|
||||
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
};
|
||||
@ -601,8 +575,6 @@ public:
|
||||
virtual uint32_t execute_min_cycles() const override { return 2; };
|
||||
virtual uint32_t execute_max_cycles() const override { return 158; };
|
||||
|
||||
virtual uint32_t execute_default_irq_vector() const override { return -1; };
|
||||
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
};
|
||||
@ -618,8 +590,6 @@ public:
|
||||
virtual uint32_t execute_min_cycles() const override { return 4; };
|
||||
virtual uint32_t execute_max_cycles() const override { return 158; };
|
||||
|
||||
virtual uint32_t execute_default_irq_vector() const override { return -1; };
|
||||
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
};
|
||||
@ -638,8 +608,6 @@ public:
|
||||
virtual uint32_t execute_min_cycles() const override { return 2; };
|
||||
virtual uint32_t execute_max_cycles() const override { return 158; };
|
||||
|
||||
virtual uint32_t execute_default_irq_vector() const override { return -1; };
|
||||
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
|
||||
@ -661,8 +629,6 @@ public:
|
||||
virtual uint32_t execute_min_cycles() const override { return 2; };
|
||||
virtual uint32_t execute_max_cycles() const override { return 158; };
|
||||
|
||||
virtual uint32_t execute_default_irq_vector() const override { return -1; };
|
||||
|
||||
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
|
@ -114,6 +114,7 @@ protected:
|
||||
virtual void execute_set_input(int inputnum, int state) override;
|
||||
virtual uint64_t execute_clocks_to_cycles(uint64_t clocks) const override;
|
||||
virtual uint64_t execute_cycles_to_clocks(uint64_t cycles) const override;
|
||||
virtual bool execute_input_edge_triggered(int inputnum) const override { return true; }
|
||||
|
||||
// device_memory_interface overrides
|
||||
virtual space_config_vector memory_space_config() const override;
|
||||
@ -319,6 +320,7 @@ protected:
|
||||
virtual void device_reset() override;
|
||||
|
||||
virtual void execute_set_input(int inputnum, int state) override;
|
||||
virtual bool execute_input_edge_triggered(int inputnum) const override { return inputnum == INPUT_LINE_NMI; }
|
||||
|
||||
virtual void interrupt_vector() override;
|
||||
virtual bool test_il() override { return m_nmi_state != CLEAR_LINE; }
|
||||
|
@ -618,7 +618,7 @@ void m68hc05_device::burn_cycles(unsigned count)
|
||||
{
|
||||
LOGCOP("PCOP reset\n");
|
||||
m_copcr |= 0x10;
|
||||
set_input_line(INPUT_LINE_RESET, PULSE_LINE);
|
||||
pulse_input_line(INPUT_LINE_RESET, attotime::zero);
|
||||
}
|
||||
m_pcop_cnt = (m_pcop_cnt + count) & ((u32(1) << 21) - 1);
|
||||
|
||||
@ -626,7 +626,7 @@ void m68hc05_device::burn_cycles(unsigned count)
|
||||
m_ncop_cnt += count;
|
||||
if ((u32(1) << 17) <= m_ncop_cnt)
|
||||
{
|
||||
set_input_line(INPUT_LINE_RESET, PULSE_LINE);
|
||||
pulse_input_line(INPUT_LINE_RESET, attotime::zero);
|
||||
LOGCOP("NCOP reset\n");
|
||||
}
|
||||
m_ncop_cnt &= (u32(1) << 17) - 1;
|
||||
|
@ -65,6 +65,7 @@ protected:
|
||||
virtual uint32_t execute_input_lines() const override;
|
||||
virtual void execute_run() override;
|
||||
virtual void execute_set_input(int inputnum, int state) override;
|
||||
virtual bool execute_input_edge_triggered(int inputnum) const override { return inputnum == INPUT_LINE_NMI; }
|
||||
virtual uint64_t execute_clocks_to_cycles(uint64_t clocks) const override;
|
||||
virtual uint64_t execute_cycles_to_clocks(uint64_t cycles) const override;
|
||||
|
||||
|
@ -59,7 +59,6 @@ protected:
|
||||
virtual uint32_t execute_min_cycles() const override { return 1; }
|
||||
virtual uint32_t execute_max_cycles() const override { return 41; }
|
||||
virtual uint32_t execute_input_lines() const override { return 2; }
|
||||
virtual uint32_t execute_default_irq_vector() const override { return 0; }
|
||||
virtual void execute_run() override;
|
||||
virtual void execute_set_input(int inputnum, int state) override;
|
||||
|
||||
|
@ -176,7 +176,6 @@ protected:
|
||||
virtual uint32_t execute_min_cycles() const override { return 1; }
|
||||
virtual uint32_t execute_max_cycles() const override { return 3; }
|
||||
virtual uint32_t execute_input_lines() const override { return 2; }
|
||||
virtual uint32_t execute_default_irq_vector() const override { return MCS48_INPUT_IRQ; }
|
||||
virtual void execute_run() override;
|
||||
virtual void execute_set_input(int inputnum, int state) override;
|
||||
|
||||
|
@ -119,7 +119,6 @@ protected:
|
||||
virtual uint32_t execute_min_cycles() const override { return 1; }
|
||||
virtual uint32_t execute_max_cycles() const override { return 20; }
|
||||
virtual uint32_t execute_input_lines() const override { return 6; }
|
||||
virtual uint32_t execute_default_irq_vector() const override { return 0; }
|
||||
virtual void execute_run() override;
|
||||
virtual void execute_set_input(int inputnum, int state) override;
|
||||
|
||||
|
@ -82,7 +82,7 @@ public:
|
||||
// 3 cycles is for int. acknowledge + 1 instruction
|
||||
virtual uint32_t execute_max_cycles() const override { return 3; }
|
||||
virtual uint32_t execute_input_lines() const override { return 1; }
|
||||
virtual uint32_t execute_default_irq_vector() const override { return 0xff; }
|
||||
virtual uint32_t execute_default_irq_vector(int inputnum) const override { return 0xff; }
|
||||
|
||||
// device_memory_interface overrides
|
||||
virtual space_config_vector memory_space_config() const override;
|
||||
|
@ -7,9 +7,6 @@
|
||||
#pragma once
|
||||
|
||||
|
||||
#define NEC_INPUT_LINE_INTP0 10
|
||||
#define NEC_INPUT_LINE_INTP1 11
|
||||
#define NEC_INPUT_LINE_INTP2 12
|
||||
#define NEC_INPUT_LINE_POLL 20
|
||||
|
||||
enum
|
||||
@ -35,7 +32,8 @@ protected:
|
||||
virtual uint32_t execute_min_cycles() const override { return 1; }
|
||||
virtual uint32_t execute_max_cycles() const override { return 80; }
|
||||
virtual uint32_t execute_input_lines() const override { return 1; }
|
||||
virtual uint32_t execute_default_irq_vector() const override { return 0xff; }
|
||||
virtual uint32_t execute_default_irq_vector(int inputnum) const override { return 0xff; }
|
||||
virtual bool execute_input_edge_triggered(int inputnum) const override { return inputnum == INPUT_LINE_NMI; }
|
||||
virtual void execute_run() override;
|
||||
virtual void execute_set_input(int inputnum, int state) override;
|
||||
|
||||
|
@ -80,7 +80,8 @@ protected:
|
||||
virtual uint32_t execute_min_cycles() const override { return 1; }
|
||||
virtual uint32_t execute_max_cycles() const override { return 80; }
|
||||
virtual uint32_t execute_input_lines() const override { return 1; }
|
||||
virtual uint32_t execute_default_irq_vector() const override { return 0xff; }
|
||||
virtual uint32_t execute_default_irq_vector(int inputnum) const override { return 0xff; }
|
||||
virtual bool execute_input_edge_triggered(int inputnum) const override { return inputnum == INPUT_LINE_NMI || (inputnum >= NEC_INPUT_LINE_INTP0 && inputnum <= NEC_INPUT_LINE_INTP2); }
|
||||
virtual void execute_run() override;
|
||||
virtual void execute_set_input(int inputnum, int state) override;
|
||||
|
||||
|
@ -122,7 +122,7 @@ protected:
|
||||
virtual uint32_t execute_min_cycles() const override { return 1; }
|
||||
virtual uint32_t execute_max_cycles() const override { return 2; }
|
||||
virtual uint32_t execute_input_lines() const override { return 1; }
|
||||
virtual uint32_t execute_default_irq_vector() const override { return 0; }
|
||||
virtual bool execute_input_edge_triggered(int inputnum) const override { return inputnum == PIC16C5x_RTCC; }
|
||||
virtual void execute_run() override;
|
||||
virtual void execute_set_input(int line, int state) override;
|
||||
|
||||
|
@ -67,7 +67,6 @@ protected:
|
||||
virtual uint32_t execute_min_cycles() const override { return 1; }
|
||||
virtual uint32_t execute_max_cycles() const override { return 2; }
|
||||
virtual uint32_t execute_input_lines() const override { return 1; }
|
||||
virtual uint32_t execute_default_irq_vector() const override { return 0; }
|
||||
virtual void execute_run() override;
|
||||
|
||||
// device_memory_interface overrides
|
||||
|
@ -72,7 +72,6 @@ protected:
|
||||
virtual u32 execute_min_cycles() const override { return 1; }
|
||||
virtual u32 execute_max_cycles() const override { return 3; }
|
||||
virtual u32 execute_input_lines() const override { return 0; }
|
||||
virtual u32 execute_default_irq_vector() const override { return 0; }
|
||||
virtual void execute_run() override;
|
||||
|
||||
// device_memory_interface overrides
|
||||
|
@ -145,7 +145,6 @@ protected:
|
||||
virtual uint32_t execute_min_cycles() const override { return 1; }
|
||||
virtual uint32_t execute_max_cycles() const override { return 1; }
|
||||
virtual uint32_t execute_input_lines() const override { return 1; }
|
||||
virtual uint32_t execute_default_irq_vector() const override { return 0; }
|
||||
virtual void execute_run() override;
|
||||
virtual void execute_set_input(int inputnum, int state) override { }
|
||||
|
||||
|
@ -56,7 +56,7 @@ protected:
|
||||
virtual uint32_t execute_min_cycles() const override { return 5; }
|
||||
virtual uint32_t execute_max_cycles() const override { return 13; }
|
||||
virtual uint32_t execute_input_lines() const override { return 2; }
|
||||
virtual uint32_t execute_default_irq_vector() const override { return 0; }
|
||||
virtual uint32_t execute_default_irq_vector(int inputnum) const override { return 0; }
|
||||
virtual void execute_run() override;
|
||||
virtual void execute_set_input(int inputnum, int state) override;
|
||||
|
||||
|
@ -29,6 +29,7 @@ protected:
|
||||
virtual uint32_t execute_min_cycles() const override { return 1; }
|
||||
virtual uint32_t execute_max_cycles() const override { return 1; }
|
||||
virtual uint32_t execute_input_lines() const override { return 1; }
|
||||
virtual bool execute_input_edge_triggered(int inputnum) const override { return inputnum == INPUT_LINE_NMI; }
|
||||
virtual void execute_run() override;
|
||||
virtual void execute_set_input(int inputnum, int state) override;
|
||||
|
||||
|
@ -99,7 +99,8 @@ protected:
|
||||
virtual uint32_t execute_min_cycles() const override { return 1; }
|
||||
virtual uint32_t execute_max_cycles() const override { return 4; }
|
||||
virtual uint32_t execute_input_lines() const override { return 16; }
|
||||
virtual uint32_t execute_default_irq_vector() const override { return 0; }
|
||||
virtual uint32_t execute_default_irq_vector(int inputnum) const override { return 0; }
|
||||
virtual bool execute_input_edge_triggered(int inputnum) const override { return inputnum == INPUT_LINE_NMI; }
|
||||
virtual void execute_run() override;
|
||||
virtual void execute_set_input(int inputnum, int state) override;
|
||||
|
||||
|
@ -309,6 +309,7 @@ protected:
|
||||
virtual uint32_t execute_input_lines() const override { return 5; }
|
||||
virtual void execute_run() override;
|
||||
virtual void execute_set_input(int inputnum, int state) override;
|
||||
virtual bool execute_input_edge_triggered(int inputnum) const override { return inputnum == INPUT_LINE_NMI; }
|
||||
|
||||
// device_memory_interface overrides
|
||||
virtual space_config_vector memory_space_config() const override;
|
||||
|
@ -21,6 +21,7 @@ protected:
|
||||
virtual uint32_t execute_min_cycles() const override { return 2; }
|
||||
virtual uint32_t execute_max_cycles() const override { return 8; }
|
||||
virtual uint32_t execute_input_lines() const override { return 1; }
|
||||
virtual bool execute_input_edge_triggered(int inputnum) const override { return inputnum == INPUT_LINE_NMI; }
|
||||
virtual void execute_run() override;
|
||||
virtual void execute_set_input(int inputnum, int state) override;
|
||||
|
||||
|
@ -57,7 +57,7 @@ protected:
|
||||
virtual uint32_t execute_input_lines() const override { return 4; }
|
||||
virtual void execute_run() override;
|
||||
virtual void execute_set_input(int inputnum, int state) override;
|
||||
virtual uint32_t execute_default_irq_vector() const override { return -1; };
|
||||
virtual uint32_t execute_default_irq_vector(int inputnum) const override { return -1; }
|
||||
|
||||
// device_memory_interface overrides
|
||||
virtual space_config_vector memory_space_config() const override;
|
||||
|
@ -93,7 +93,7 @@ protected:
|
||||
virtual uint32_t execute_min_cycles() const override { return 2; }
|
||||
virtual uint32_t execute_max_cycles() const override { return 26; }
|
||||
virtual uint32_t execute_input_lines() const override { return 1; }
|
||||
virtual uint32_t execute_default_irq_vector() const override { return 0xff; }
|
||||
virtual bool execute_input_edge_triggered(int inputnum) const override { return inputnum == INPUT_LINE_NMI; }
|
||||
virtual void execute_run() override;
|
||||
virtual void execute_set_input(int inputnum, int state) override;
|
||||
|
||||
|
@ -112,7 +112,7 @@ protected:
|
||||
virtual uint32_t execute_min_cycles() const override { return 2; }
|
||||
virtual uint32_t execute_max_cycles() const override { return 26; }
|
||||
virtual uint32_t execute_input_lines() const override { return 1; }
|
||||
virtual uint32_t execute_default_irq_vector() const override { return 0xff; }
|
||||
virtual bool execute_input_edge_triggered(int inputnum) const override { return inputnum == INPUT_LINE_NMI; }
|
||||
virtual void execute_run() override;
|
||||
virtual void execute_set_input(int inputnum, int state) override;
|
||||
virtual void execute_burn(int32_t cycles) override;
|
||||
|
@ -63,6 +63,7 @@ protected:
|
||||
virtual uint32_t execute_min_cycles() const override { return 1; } /* FIXME */
|
||||
virtual uint32_t execute_max_cycles() const override { return 1; } /* FIXME */
|
||||
virtual uint32_t execute_input_lines() const override { return 6; }
|
||||
virtual bool execute_input_edge_triggered(int inputnum) const override { return inputnum == INPUT_LINE_NMI; }
|
||||
virtual void execute_run() override;
|
||||
|
||||
// device_memory_interface overrides
|
||||
|
@ -220,6 +220,7 @@ protected:
|
||||
virtual uint32_t execute_min_cycles() const override { return 1; }
|
||||
virtual uint32_t execute_max_cycles() const override { return 40; }
|
||||
virtual uint32_t execute_input_lines() const override { return 2; }
|
||||
virtual bool execute_input_edge_triggered(int inputnum) const override { return true; }
|
||||
virtual void execute_run() override;
|
||||
virtual void execute_set_input(int inputnum, int state) override;
|
||||
|
||||
|
@ -37,6 +37,7 @@ protected:
|
||||
virtual uint32_t execute_min_cycles() const override { return 1; }
|
||||
virtual uint32_t execute_max_cycles() const override { return 80; }
|
||||
virtual uint32_t execute_input_lines() const override { return 1; }
|
||||
virtual bool execute_input_edge_triggered(int inputnum) const override { return inputnum == INPUT_LINE_NMI; }
|
||||
virtual void execute_run() override;
|
||||
virtual void execute_set_input(int inputnum, int state) override;
|
||||
|
||||
|
@ -99,6 +99,7 @@ protected:
|
||||
virtual uint32_t execute_min_cycles() const override { return 1; }
|
||||
virtual uint32_t execute_max_cycles() const override { return 1; }
|
||||
virtual uint32_t execute_input_lines() const override { return 1; }
|
||||
virtual bool execute_input_edge_triggered(int inputnum) const override { return inputnum == INPUT_LINE_NMI; }
|
||||
virtual void execute_run() override;
|
||||
virtual void execute_set_input(int inputnum, int state) override;
|
||||
|
||||
|
@ -143,7 +143,8 @@ protected:
|
||||
virtual uint32_t execute_min_cycles() const override { return 1; }
|
||||
virtual uint32_t execute_max_cycles() const override { return 16; }
|
||||
virtual uint32_t execute_input_lines() const override { return 5; }
|
||||
virtual uint32_t execute_default_irq_vector() const override { return 0xff; }
|
||||
virtual uint32_t execute_default_irq_vector(int inputnum) const override { return 0xff; }
|
||||
virtual bool execute_input_edge_triggered(int inputnum) const override { return inputnum == INPUT_LINE_NMI; }
|
||||
virtual void execute_run() override;
|
||||
virtual void execute_burn(int32_t cycles) override;
|
||||
virtual void execute_set_input(int inputnum, int state) override;
|
||||
|
@ -75,6 +75,7 @@ protected:
|
||||
virtual uint32_t execute_min_cycles() const override { return 6; }
|
||||
virtual uint32_t execute_max_cycles() const override { return 27; }
|
||||
virtual uint32_t execute_input_lines() const override { return 4; }
|
||||
virtual bool execute_input_edge_triggered(int inputnum) const override { return true; }
|
||||
virtual uint64_t execute_clocks_to_cycles(uint64_t clocks) const override { return (clocks + 2 - 1) / 2; }
|
||||
virtual uint64_t execute_cycles_to_clocks(uint64_t cycles) const override { return (cycles * 2); }
|
||||
virtual void execute_run() override;
|
||||
|
@ -57,7 +57,8 @@ protected:
|
||||
virtual uint32_t execute_min_cycles() const override { return 2; }
|
||||
virtual uint32_t execute_max_cycles() const override { return 16; }
|
||||
virtual uint32_t execute_input_lines() const override { return 4; }
|
||||
virtual uint32_t execute_default_irq_vector() const override { return 0xff; }
|
||||
virtual uint32_t execute_default_irq_vector(int inputnum) const override { return 0xff; }
|
||||
virtual bool execute_input_edge_triggered(int inputnum) const override { return inputnum == INPUT_LINE_NMI; }
|
||||
virtual void execute_run() override;
|
||||
virtual void execute_set_input(int inputnum, int state) override;
|
||||
|
||||
|
@ -53,7 +53,8 @@ protected:
|
||||
virtual uint32_t execute_min_cycles() const override { return 2; }
|
||||
virtual uint32_t execute_max_cycles() const override { return 744; }
|
||||
virtual uint32_t execute_input_lines() const override { return 2; }
|
||||
virtual uint32_t execute_default_irq_vector() const override { return 0xff; }
|
||||
virtual uint32_t execute_default_irq_vector(int inputnum) const override { return 0xff; }
|
||||
virtual bool execute_input_edge_triggered(int inputnum) const override { return inputnum == INPUT_LINE_NMI; }
|
||||
virtual void execute_run() override;
|
||||
virtual void execute_set_input(int inputnum, int state) override;
|
||||
|
||||
|
@ -436,7 +436,7 @@ WRITE8_MEMBER( s2636_device::write_data )
|
||||
|
||||
WRITE_LINE_MEMBER( s2636_device::write_intack )
|
||||
{
|
||||
assert((ASSERT_LINE == state) || (HOLD_LINE == state) || (CLEAR_LINE == state) || (PULSE_LINE == state));
|
||||
assert((ASSERT_LINE == state) || (HOLD_LINE == state) || (CLEAR_LINE == state));
|
||||
|
||||
// pretend interrupt acknowledge is handled instantaneously
|
||||
m_intack = state;
|
||||
|
@ -635,7 +635,7 @@ int z80scc_device::z80daisy_irq_ack()
|
||||
if (ret == -1 && m_cputag != nullptr)
|
||||
{
|
||||
// default irq vector is -1 for 68000 but 0 for z80 for example...
|
||||
ret = owner()->subdevice<cpu_device>(m_cputag)->default_irq_vector();
|
||||
ret = owner()->subdevice<cpu_device>(m_cputag)->default_irq_vector(INPUT_LINE_IRQ0);
|
||||
LOGINT(" - failed to find an interrupt to ack, returning default IRQ vector: %02x\n", ret );
|
||||
logerror("z80sio_irq_ack: failed to find an interrupt to ack!\n");
|
||||
}
|
||||
|
@ -491,7 +491,7 @@ int z80sio_device::z80daisy_irq_ack()
|
||||
{
|
||||
// default irq vector is -1 for 68000 but 0 for z80 for example...
|
||||
// FIXME: use an optional_device or something
|
||||
int const ret = owner()->subdevice<cpu_device>(m_cputag)->default_irq_vector();
|
||||
int const ret = owner()->subdevice<cpu_device>(m_cputag)->default_irq_vector(INPUT_LINE_IRQ0);
|
||||
LOGINT(" - failed to find an interrupt to ack [%s], returning default IRQ vector: %02x\n", m_cputag, ret);
|
||||
return ret;
|
||||
}
|
||||
@ -560,7 +560,7 @@ int i8274_new_device::z80daisy_irq_ack()
|
||||
{
|
||||
// default irq vector is -1 for 68000 but 0 for z80 for example...
|
||||
// FIXME: use an optional_device or something
|
||||
int const ret = owner()->subdevice<cpu_device>(m_cputag)->default_irq_vector();
|
||||
int const ret = owner()->subdevice<cpu_device>(m_cputag)->default_irq_vector(INPUT_LINE_IRQ0);
|
||||
LOGINT(" - failed to find an interrupt to ack [%s], returning default IRQ vector: %02x\n", m_cputag, ret);
|
||||
return ret;
|
||||
}
|
||||
|
@ -296,12 +296,23 @@ u32 device_execute_interface::execute_input_lines() const
|
||||
// IRQ vector when an acknowledge is processed
|
||||
//-------------------------------------------------
|
||||
|
||||
u32 device_execute_interface::execute_default_irq_vector() const
|
||||
u32 device_execute_interface::execute_default_irq_vector(int linenum) const
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// execute_input_edge_triggered - return true if
|
||||
// the input line has an asynchronous edge trigger
|
||||
//-------------------------------------------------
|
||||
|
||||
bool device_execute_interface::execute_input_edge_triggered(int linenum) const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// execute_burn - called after we consume a bunch
|
||||
// of cycles for artifical reasons (such as
|
||||
@ -580,11 +591,22 @@ TIMER_CALLBACK_MEMBER(device_execute_interface::trigger_periodic_interrupt)
|
||||
|
||||
void device_execute_interface::pulse_input_line(int irqline, const attotime &duration)
|
||||
{
|
||||
assert(duration > attotime::zero);
|
||||
set_input_line(irqline, ASSERT_LINE);
|
||||
// treat instantaneous pulses as ASSERT+CLEAR
|
||||
if (duration == attotime::zero)
|
||||
{
|
||||
if (irqline != INPUT_LINE_RESET && !input_edge_triggered(irqline))
|
||||
throw emu_fatalerror("device '%s': zero-width pulse is not allowed for input line %d\n", device().tag(), irqline);
|
||||
|
||||
attotime target_time = local_time() + duration;
|
||||
m_scheduler->timer_set(target_time - m_scheduler->time(), timer_expired_delegate(FUNC(device_execute_interface::irq_pulse_clear), this), irqline);
|
||||
set_input_line(irqline, ASSERT_LINE);
|
||||
set_input_line(irqline, CLEAR_LINE);
|
||||
}
|
||||
else
|
||||
{
|
||||
set_input_line(irqline, ASSERT_LINE);
|
||||
|
||||
attotime target_time = local_time() + duration;
|
||||
m_scheduler->timer_set(target_time - m_scheduler->time(), timer_expired_delegate(FUNC(device_execute_interface::irq_pulse_clear), this), irqline);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -596,11 +618,22 @@ void device_execute_interface::pulse_input_line(int irqline, const attotime &dur
|
||||
|
||||
void device_execute_interface::pulse_input_line_and_vector(int irqline, int vector, const attotime &duration)
|
||||
{
|
||||
assert(duration > attotime::zero);
|
||||
set_input_line_and_vector(irqline, ASSERT_LINE, vector);
|
||||
// treat instantaneous pulses as ASSERT+CLEAR
|
||||
if (duration == attotime::zero)
|
||||
{
|
||||
if (irqline != INPUT_LINE_RESET && !input_edge_triggered(irqline))
|
||||
throw emu_fatalerror("device '%s': zero-width pulse is not allowed for input line %d\n", device().tag(), irqline);
|
||||
|
||||
attotime target_time = local_time() + duration;
|
||||
m_scheduler->timer_set(target_time - m_scheduler->time(), timer_expired_delegate(FUNC(device_execute_interface::irq_pulse_clear), this), irqline);
|
||||
set_input_line_and_vector(irqline, ASSERT_LINE, vector);
|
||||
set_input_line_and_vector(irqline, CLEAR_LINE, vector);
|
||||
}
|
||||
else
|
||||
{
|
||||
set_input_line_and_vector(irqline, ASSERT_LINE, vector);
|
||||
|
||||
attotime target_time = local_time() + duration;
|
||||
m_scheduler->timer_set(target_time - m_scheduler->time(), timer_expired_delegate(FUNC(device_execute_interface::irq_pulse_clear), this), irqline);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -650,7 +683,7 @@ void device_execute_interface::device_input::start(device_execute_interface *exe
|
||||
|
||||
void device_execute_interface::device_input::reset()
|
||||
{
|
||||
m_curvector = m_stored_vector = m_execute->default_irq_vector();
|
||||
m_curvector = m_stored_vector = m_execute->default_irq_vector(m_linenum);
|
||||
m_qindex = 0;
|
||||
}
|
||||
|
||||
@ -665,19 +698,7 @@ void device_execute_interface::device_input::set_state_synced(int state, int vec
|
||||
LOG(("set_state_synced('%s',%d,%d,%02x)\n", m_execute->device().tag(), m_linenum, state, vector));
|
||||
|
||||
if (TEMPLOG) printf("setline(%s,%d,%d,%d)\n", m_execute->device().tag(), m_linenum, state, (vector == USE_STORED_VECTOR) ? 0 : vector);
|
||||
assert(state == ASSERT_LINE || state == HOLD_LINE || state == CLEAR_LINE || state == PULSE_LINE);
|
||||
|
||||
// treat PULSE_LINE as ASSERT+CLEAR
|
||||
if (state == PULSE_LINE)
|
||||
{
|
||||
// catch errors where people use PULSE_LINE for devices that don't support it
|
||||
if (m_linenum != INPUT_LINE_NMI && m_linenum != INPUT_LINE_RESET)
|
||||
throw emu_fatalerror("device '%s': PULSE_LINE can only be used for NMI and RESET lines\n", m_execute->device().tag());
|
||||
|
||||
set_state_synced(ASSERT_LINE, vector);
|
||||
set_state_synced(CLEAR_LINE, vector);
|
||||
return;
|
||||
}
|
||||
assert(state == ASSERT_LINE || state == HOLD_LINE || state == CLEAR_LINE);
|
||||
|
||||
// if we're full of events, flush the queue and log a message
|
||||
int event_index = m_qindex++;
|
||||
|
@ -35,8 +35,7 @@ enum line_state
|
||||
{
|
||||
CLEAR_LINE = 0, // clear (a fired or held) line
|
||||
ASSERT_LINE, // assert an interrupt immediately
|
||||
HOLD_LINE, // hold interrupt line until acknowledged
|
||||
PULSE_LINE // pulse interrupt line instantaneously (only for NMI, RESET)
|
||||
HOLD_LINE // hold interrupt line until acknowledged
|
||||
};
|
||||
|
||||
|
||||
@ -136,7 +135,8 @@ public:
|
||||
attotime cycles_to_attotime(u64 cycles) const { return device().clocks_to_attotime(cycles_to_clocks(cycles)); }
|
||||
u64 attotime_to_cycles(const attotime &duration) const { return clocks_to_cycles(device().attotime_to_clocks(duration)); }
|
||||
u32 input_lines() const { return execute_input_lines(); }
|
||||
u32 default_irq_vector() const { return execute_default_irq_vector(); }
|
||||
u32 default_irq_vector(int linenum) const { return execute_default_irq_vector(linenum); }
|
||||
bool input_edge_triggered(int linenum) const { return execute_input_edge_triggered(linenum); }
|
||||
|
||||
// inline configuration helpers
|
||||
void set_disable() { m_disabled = true; }
|
||||
@ -203,7 +203,8 @@ protected:
|
||||
|
||||
// input line information getters
|
||||
virtual u32 execute_input_lines() const;
|
||||
virtual u32 execute_default_irq_vector() const;
|
||||
virtual u32 execute_default_irq_vector(int linenum) const;
|
||||
virtual bool execute_input_edge_triggered(int linenum) const;
|
||||
|
||||
// optional operation overrides
|
||||
virtual void execute_run() = 0;
|
||||
|
@ -288,7 +288,7 @@ void driver_device::device_reset_after_children()
|
||||
// NMI callbacks
|
||||
//-------------------------------------------------
|
||||
|
||||
INTERRUPT_GEN_MEMBER( driver_device::nmi_line_pulse ) { device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); }
|
||||
INTERRUPT_GEN_MEMBER( driver_device::nmi_line_pulse ) { device.execute().pulse_input_line(INPUT_LINE_NMI, attotime::zero); }
|
||||
INTERRUPT_GEN_MEMBER( driver_device::nmi_line_assert ) { device.execute().set_input_line(INPUT_LINE_NMI, ASSERT_LINE); }
|
||||
|
||||
|
||||
|
@ -67,7 +67,7 @@ WRITE16_MEMBER(cchasm_state::io_w)
|
||||
m_sound_flags |= 0x80;
|
||||
m_soundlatch2->write(space, offset, data);
|
||||
m_ctc->trg2(1);
|
||||
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
m_audiocpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
break;
|
||||
case 2:
|
||||
//led = data;
|
||||
|
@ -1875,7 +1875,7 @@ WRITE16_MEMBER(dcs_audio_device:: adsp_control_w )
|
||||
if ((data & 0x0200) && !(m_rev == REV_DSIO || m_rev == REV_DENV))
|
||||
{
|
||||
logerror("%s Rebooting DCS due to SYSCONTROL write = %04X\n", machine().describe_context(), data);
|
||||
m_cpu->set_input_line(INPUT_LINE_RESET, PULSE_LINE);
|
||||
m_cpu->pulse_input_line(INPUT_LINE_RESET, attotime::zero);
|
||||
dcs_boot();
|
||||
m_control_regs[SYSCONTROL_REG] = 0;
|
||||
}
|
||||
|
@ -101,7 +101,7 @@ INPUT_CHANGED_MEMBER( gottlieb_sound_r0_device::audio_nmi )
|
||||
{
|
||||
// Diagnostic button sends a pulse to NMI pin
|
||||
if (newval==CLEAR_LINE)
|
||||
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
m_audiocpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
|
||||
|
||||
|
@ -225,7 +225,7 @@ TIMER_DEVICE_CALLBACK_MEMBER( acclaim_rax_device::dma_timer_callback )
|
||||
m_control_regs[BDMA_CONTROL_REG] |= ((param >> 14) & 0xff) << 8;
|
||||
|
||||
if (m_control_regs[BDMA_CONTROL_REG] & 8)
|
||||
m_cpu->set_input_line(INPUT_LINE_RESET, PULSE_LINE);
|
||||
m_cpu->pulse_input_line(INPUT_LINE_RESET, attotime::zero);
|
||||
else
|
||||
m_cpu->pulse_input_line(ADSP2181_BDMA, m_cpu->minimum_quantum_time());
|
||||
|
||||
|
@ -73,7 +73,7 @@ WRITE8_MEMBER(redalert_state::redalert_audio_command_w)
|
||||
/* D7 is also connected to the NMI input of the CPU -
|
||||
the NMI is actually toggled by a 74121 (R1=27K, C10=330p) */
|
||||
if ((data & 0x80) == 0x00)
|
||||
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
m_audiocpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
|
||||
|
||||
@ -254,7 +254,7 @@ WRITE8_MEMBER(redalert_state::demoneye_audio_command_w)
|
||||
{
|
||||
/* the byte is connected to port A of the AY8910 */
|
||||
m_soundlatch->write(space, 0, data);
|
||||
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
m_audiocpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
|
||||
|
||||
|
@ -95,7 +95,7 @@ void s11c_bg_device::device_reset()
|
||||
m_cpubank->configure_entries(0, 8, &ROM[0x10000], 0x8000);
|
||||
m_cpubank->set_entry(0);
|
||||
// reset the CPU again, so that the CPU are starting with the right vectors (otherwise sound may die on reset)
|
||||
m_cpu->set_input_line(INPUT_LINE_RESET,PULSE_LINE);
|
||||
m_cpu->pulse_input_line(INPUT_LINE_RESET, attotime::zero);
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER( s11c_bg_device::ym2151_irq_w)
|
||||
|
@ -75,5 +75,5 @@ WRITE8_MEMBER(starwars_state::starwars_soundrst_w)
|
||||
m_mainlatch->acknowledge_w(space, 0, 0);
|
||||
|
||||
/* reset sound CPU here */
|
||||
m_audiocpu->set_input_line(INPUT_LINE_RESET, PULSE_LINE);
|
||||
m_audiocpu->pulse_input_line(INPUT_LINE_RESET, attotime::zero);
|
||||
}
|
||||
|
@ -48,7 +48,7 @@ void wpcsnd_device::wpcsnd_map(address_map &map)
|
||||
|
||||
void wpcsnd_device::ctrl_w(uint8_t data)
|
||||
{
|
||||
m_cpu->set_input_line(INPUT_LINE_RESET,PULSE_LINE);
|
||||
m_cpu->pulse_input_line(INPUT_LINE_RESET, attotime::zero);
|
||||
}
|
||||
|
||||
void wpcsnd_device::data_w(uint8_t data)
|
||||
@ -102,7 +102,7 @@ void wpcsnd_device::device_reset()
|
||||
m_fixedbank->set_entry(0);
|
||||
|
||||
// reset the CPU again, so that the CPU is starting with the right vectors (otherwise sound may die on reset)
|
||||
m_cpu->set_input_line(INPUT_LINE_RESET,PULSE_LINE);
|
||||
m_cpu->pulse_input_line(INPUT_LINE_RESET, attotime::zero);
|
||||
|
||||
m_reply_available = false;
|
||||
}
|
||||
|
@ -485,7 +485,7 @@ INTERRUPT_GEN_MEMBER(_4enlinea_state::_4enlinea_irq)
|
||||
{
|
||||
if(m_irq_count == 0)
|
||||
{
|
||||
//device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
//device.execute().pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
else
|
||||
device.execute().set_input_line(0, HOLD_LINE);
|
||||
|
@ -252,7 +252,7 @@ TIMER_CALLBACK_MEMBER(aces1_state::m_aces1_irq_timer_callback)
|
||||
TIMER_CALLBACK_MEMBER(aces1_state::m_aces1_nmi_timer_callback)
|
||||
{
|
||||
// printf("nmi\n");
|
||||
m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
aces1_reset_nmi_timer();
|
||||
}
|
||||
|
||||
|
@ -942,7 +942,7 @@ WRITE_LINE_MEMBER( adam_state::vdc_int_w )
|
||||
{
|
||||
if (state && !m_vdp_nmi)
|
||||
{
|
||||
m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
|
||||
m_vdp_nmi = state;
|
||||
|
@ -77,7 +77,7 @@ Verification still needed for the other PCBs.
|
||||
WRITE8_MEMBER(aerofgt_state::karatblzbl_soundlatch_w)
|
||||
{
|
||||
m_soundlatch->write(space, 0, data);
|
||||
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
m_audiocpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
|
||||
READ8_MEMBER(aerofgt_state::pending_command_r)
|
||||
|
@ -849,7 +849,7 @@ INTERRUPT_GEN_MEMBER(agat7_state::agat_vblank)
|
||||
{
|
||||
if (m_agat7_interrupts)
|
||||
{
|
||||
m_maincpu->set_input_line(M6502_NMI_LINE, PULSE_LINE);
|
||||
m_maincpu->pulse_input_line(M6502_NMI_LINE, attotime::zero);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -264,7 +264,7 @@ READ8_MEMBER(airbustr_state::devram_r)
|
||||
|
||||
WRITE8_MEMBER(airbustr_state::master_nmi_trigger_w)
|
||||
{
|
||||
m_slave->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
m_slave->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(airbustr_state::master_bankswitch_w)
|
||||
|
@ -293,7 +293,7 @@ WRITE8_MEMBER(alpha68k_state::paddlema_soundlatch_w)
|
||||
WRITE8_MEMBER(alpha68k_state::tnextspc_soundlatch_w)
|
||||
{
|
||||
m_soundlatch->write(space, 0, data);
|
||||
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
m_audiocpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
//ZT
|
||||
/******************************************************************************/
|
||||
@ -2102,7 +2102,7 @@ MACHINE_CONFIG_END
|
||||
INTERRUPT_GEN_MEMBER(alpha68k_state::alpha68k_sound_nmi)
|
||||
{
|
||||
if(m_sound_nmi_mask)
|
||||
device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
device.execute().pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(alpha68k_state::alpha68k_II)
|
||||
|
@ -891,7 +891,7 @@ MACHINE_CONFIG_END
|
||||
WRITE_LINE_MEMBER(amaticmg_state::amaticmg2_irq)
|
||||
{
|
||||
if (state && m_nmi_mask)
|
||||
m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
|
||||
|
||||
|
@ -416,7 +416,7 @@ void appoooh_state::machine_reset()
|
||||
INTERRUPT_GEN_MEMBER(appoooh_state::vblank_irq)
|
||||
{
|
||||
if(m_nmi_mask)
|
||||
device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
device.execute().pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(appoooh_state::appoooh_common)
|
||||
|
@ -285,7 +285,7 @@ WRITE_LINE_MEMBER(ashnojoe_state::ashnojoe_vclk_cb)
|
||||
else
|
||||
{
|
||||
m_msm->data_w(m_adpcm_byte & 0xf);
|
||||
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
m_audiocpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
|
||||
m_msm5205_vclk_toggle ^= 1;
|
||||
|
@ -380,7 +380,7 @@ TIMER_DEVICE_CALLBACK_MEMBER( atari_s1_state::nmi )
|
||||
static const uint8_t patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0, 0, 0, 0, 0, 0 }; // 4511
|
||||
m_bit6++;
|
||||
if (m_t_c > 0x40)
|
||||
m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
else
|
||||
m_t_c++;
|
||||
|
||||
|
@ -597,7 +597,7 @@ WRITE_LINE_MEMBER( atom_state::atom_8271_interrupt_callback )
|
||||
{
|
||||
/* I'll pulse it because if I used hold-line I'm not sure
|
||||
it would clear - to be checked */
|
||||
m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -290,7 +290,7 @@ void bankp_state::machine_reset()
|
||||
INTERRUPT_GEN_MEMBER(bankp_state::vblank_irq)
|
||||
{
|
||||
if(m_nmi_mask)
|
||||
device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
device.execute().pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(bankp_state::bankp)
|
||||
|
@ -53,8 +53,8 @@ WRITE8_MEMBER(battlane_state::battlane_cpu_command_w)
|
||||
/*
|
||||
if (~m_cpu_control & 0x08)
|
||||
{
|
||||
m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
m_subcpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
m_subcpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
*/
|
||||
|
||||
@ -88,8 +88,8 @@ INTERRUPT_GEN_MEMBER(battlane_state::battlane_cpu1_interrupt)
|
||||
/* See note in battlane_cpu_command_w */
|
||||
if (~m_cpu_control & 0x08)
|
||||
{
|
||||
device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
m_subcpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
device.execute().pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
m_subcpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -258,7 +258,7 @@ WRITE16_MEMBER(bbusters_state::sound_cpu_w)
|
||||
if (ACCESSING_BITS_0_7)
|
||||
{
|
||||
m_soundlatch->write(space, 0, data&0xff);
|
||||
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
m_audiocpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -312,7 +312,7 @@ TIMER_CALLBACK_MEMBER(berzerk_state::nmi_callback)
|
||||
|
||||
/* pulse the NMI line if enabled */
|
||||
if (m_nmi_enabled)
|
||||
m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
|
||||
/* set up for next interrupt */
|
||||
next_nmi_number = (nmi_number + 1) % NMIS_PER_FRAME;
|
||||
|
@ -109,7 +109,7 @@ READ8_MEMBER(bingoc_state::sound_test_r)
|
||||
WRITE16_MEMBER(bingoc_state::main_sound_latch_w)
|
||||
{
|
||||
m_soundlatch->write(space,0,data&0xff);
|
||||
m_soundcpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
m_soundcpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -48,7 +48,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(bladestl_state::bladestl_scanline)
|
||||
m_maincpu->set_input_line(HD6309_FIRQ_LINE, HOLD_LINE);
|
||||
|
||||
if(scanline == 0) // vblank-in or timer irq
|
||||
m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
|
||||
/*************************************
|
||||
|
@ -326,7 +326,7 @@ INPUT_CHANGED_MEMBER( blockade_state::coin_inserted )
|
||||
m_coin_inserted = newval;
|
||||
|
||||
if (newval)
|
||||
m_maincpu->set_input_line(INPUT_LINE_RESET, PULSE_LINE);
|
||||
m_maincpu->pulse_input_line(INPUT_LINE_RESET, attotime::zero);
|
||||
}
|
||||
|
||||
CUSTOM_INPUT_MEMBER( blockade_state::coin_r )
|
||||
|
@ -86,7 +86,7 @@ READ8_MEMBER(blueprnt_state::grasspin_sh_dipsw_r)
|
||||
WRITE8_MEMBER(blueprnt_state::blueprnt_sound_command_w)
|
||||
{
|
||||
m_soundlatch->write(space, offset, data);
|
||||
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
m_audiocpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(blueprnt_state::blueprnt_coin_counter_w)
|
||||
|
@ -137,7 +137,7 @@ WRITE8_MEMBER(bottom9_state::bottom9_sh_irqtrigger_w)
|
||||
INTERRUPT_GEN_MEMBER(bottom9_state::bottom9_sound_interrupt)
|
||||
{
|
||||
if (m_nmienable)
|
||||
device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
device.execute().pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(bottom9_state::nmi_enable_w)
|
||||
|
@ -370,7 +370,7 @@ void brkthru_state::machine_reset()
|
||||
WRITE_LINE_MEMBER(brkthru_state::vblank_irq)
|
||||
{
|
||||
if (state && m_nmi_mask)
|
||||
m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(brkthru_state::brkthru)
|
||||
|
@ -164,7 +164,7 @@ INPUT_PORTS_END
|
||||
INPUT_CHANGED_MEMBER( by6803_state::activity_test )
|
||||
{
|
||||
if(newval)
|
||||
m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
|
||||
INPUT_CHANGED_MEMBER( by6803_state::self_test )
|
||||
|
@ -202,19 +202,19 @@ void by133_state::sound_portmap(address_map &map)
|
||||
INPUT_CHANGED_MEMBER( by133_state::video_test )
|
||||
{
|
||||
if(newval)
|
||||
m_videocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
m_videocpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
|
||||
INPUT_CHANGED_MEMBER( by133_state::sound_test )
|
||||
{
|
||||
if(newval)
|
||||
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
m_audiocpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
|
||||
INPUT_CHANGED_MEMBER( by133_state::activity_test )
|
||||
{
|
||||
if(newval)
|
||||
m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
|
||||
INPUT_CHANGED_MEMBER( by133_state::self_test )
|
||||
|
@ -252,7 +252,7 @@ void redbaron_state::machine_start()
|
||||
INTERRUPT_GEN_MEMBER(bzone_state::bzone_interrupt)
|
||||
{
|
||||
if (ioport("IN0")->read() & 0x10)
|
||||
device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
device.execute().pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
|
||||
|
||||
|
@ -97,7 +97,7 @@ WRITE16_MEMBER(cabal_state::sound_irq_trigger_word_w)
|
||||
|
||||
WRITE16_MEMBER(cabal_state::cabalbl_sound_irq_trigger_word_w)
|
||||
{
|
||||
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE );
|
||||
m_audiocpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
|
||||
|
||||
|
@ -353,8 +353,8 @@ void cabaret_state::machine_reset()
|
||||
|
||||
INTERRUPT_GEN_MEMBER(cabaret_state::cabaret_interrupt)
|
||||
{
|
||||
if (m_nmi_enable & 0x80)
|
||||
device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
if (m_nmi_enable & 0x80)
|
||||
device.execute().pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(cabaret_state::cabaret)
|
||||
|
@ -111,7 +111,7 @@
|
||||
INTERRUPT_GEN_MEMBER(capbowl_state::interrupt)
|
||||
{
|
||||
if (ioport("SERVICE")->read() & 1) /* get status of the F2 key */
|
||||
device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); /* trigger self test */
|
||||
device.execute().pulse_input_line(INPUT_LINE_NMI, attotime::zero); /* trigger self test */
|
||||
}
|
||||
|
||||
|
||||
|
@ -2745,7 +2745,7 @@ MACHINE_CONFIG_END
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER( cave_state::sailormn_startup )
|
||||
{
|
||||
m_maincpu->set_input_line(INPUT_LINE_RESET, PULSE_LINE);
|
||||
m_maincpu->pulse_input_line(INPUT_LINE_RESET, attotime::zero);
|
||||
}
|
||||
|
||||
MACHINE_RESET_MEMBER(cave_state,sailormn)
|
||||
|
@ -1100,7 +1100,7 @@ GFXDECODE_END
|
||||
WRITE_LINE_MEMBER(cclimber_state::vblank_irq)
|
||||
{
|
||||
if (state && m_nmi_mask)
|
||||
m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER(cclimber_state::bagmanf_vblank_irq)
|
||||
|
@ -16,7 +16,7 @@ INPUT_CHANGED_MEMBER(cheekyms_state::coin_inserted)
|
||||
{
|
||||
/* this starts a 556 one-shot timer (and triggers a sound effect) */
|
||||
if (newval)
|
||||
m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user