summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2018-05-18 13:32:56 -0400
committer AJR <ajrhacker@users.noreply.github.com>2018-05-18 13:40:29 -0400
commit0ba652e723036746aa1b1ac665411bee83771654 (patch)
treeba3cf42c70bf33ad22c07ad85b9d41f863a373e7 /src/devices/cpu
parente5dc17a4881d2b9ce4573b42d825cb6456bf529c (diff)
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.
Diffstat (limited to 'src/devices/cpu')
-rw-r--r--src/devices/cpu/cp1610/cp1610.cpp2
-rw-r--r--src/devices/cpu/cp1610/cp1610.h1
-rw-r--r--src/devices/cpu/dsp56k/dsp56k.h2
-rw-r--r--src/devices/cpu/h6280/h6280.cpp11
-rw-r--r--src/devices/cpu/h6280/h6280.h1
-rw-r--r--src/devices/cpu/h8/h8.cpp5
-rw-r--r--src/devices/cpu/h8/h8.h1
-rw-r--r--src/devices/cpu/hphybrid/hphybrid.h2
-rw-r--r--src/devices/cpu/i386/i386.cpp2
-rw-r--r--src/devices/cpu/i386/i386.h2
-rw-r--r--src/devices/cpu/i8085/i8085.h3
-rw-r--r--src/devices/cpu/i86/i86.h1
-rw-r--r--src/devices/cpu/i960/i960.h1
-rw-r--r--src/devices/cpu/lh5801/lh5801.h2
-rw-r--r--src/devices/cpu/m37710/m37710op.h1
-rw-r--r--src/devices/cpu/m6502/m6502.cpp5
-rw-r--r--src/devices/cpu/m6502/m6502.h1
-rw-r--r--src/devices/cpu/m6800/m6800.h2
-rw-r--r--src/devices/cpu/m6800/m6801.h1
-rw-r--r--src/devices/cpu/m68000/m68000.h38
-rw-r--r--src/devices/cpu/m6805/m6805.h2
-rw-r--r--src/devices/cpu/m6805/m68hc05.cpp4
-rw-r--r--src/devices/cpu/m6809/m6809.h1
-rw-r--r--src/devices/cpu/mc68hc11/mc68hc11.h1
-rw-r--r--src/devices/cpu/mcs48/mcs48.h1
-rw-r--r--src/devices/cpu/mcs51/mcs51.h1
-rw-r--r--src/devices/cpu/nanoprocessor/nanoprocessor.h2
-rw-r--r--src/devices/cpu/nec/nec.h6
-rw-r--r--src/devices/cpu/nec/v25.h3
-rw-r--r--src/devices/cpu/pic16c5x/pic16c5x.h2
-rw-r--r--src/devices/cpu/pic16c62x/pic16c62x.h1
-rw-r--r--src/devices/cpu/pps4/pps4.h1
-rw-r--r--src/devices/cpu/rsp/rsp.h1
-rw-r--r--src/devices/cpu/s2650/s2650.h2
-rw-r--r--src/devices/cpu/se3208/se3208.h1
-rw-r--r--src/devices/cpu/sh/sh2.h3
-rw-r--r--src/devices/cpu/sh/sh4.h1
-rw-r--r--src/devices/cpu/spc700/spc700.h1
-rw-r--r--src/devices/cpu/t11/t11.h2
-rw-r--r--src/devices/cpu/tlcs870/tlcs870.h2
-rw-r--r--src/devices/cpu/tlcs90/tlcs90.h2
-rw-r--r--src/devices/cpu/tlcs900/tlcs900.h1
-rw-r--r--src/devices/cpu/upd7810/upd7810.h1
-rw-r--r--src/devices/cpu/v30mz/v30mz.h1
-rw-r--r--src/devices/cpu/v60/v60.h1
-rw-r--r--src/devices/cpu/z180/z180.h3
-rw-r--r--src/devices/cpu/z8/z8.h1
-rw-r--r--src/devices/cpu/z80/z80.h3
-rw-r--r--src/devices/cpu/z8000/z8000.h3
49 files changed, 69 insertions, 69 deletions
diff --git a/src/devices/cpu/cp1610/cp1610.cpp b/src/devices/cpu/cp1610/cp1610.cpp
index 784281f71d8..f9b77df991e 100644
--- a/src/devices/cpu/cp1610/cp1610.cpp
+++ b/src/devices/cpu/cp1610/cp1610.cpp
@@ -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)
diff --git a/src/devices/cpu/cp1610/cp1610.h b/src/devices/cpu/cp1610/cp1610.h
index 86b22e43f70..d2ab4fa18bf 100644
--- a/src/devices/cpu/cp1610/cp1610.h
+++ b/src/devices/cpu/cp1610/cp1610.h
@@ -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;
diff --git a/src/devices/cpu/dsp56k/dsp56k.h b/src/devices/cpu/dsp56k/dsp56k.h
index e13b160c8a4..bee7c335b03 100644
--- a/src/devices/cpu/dsp56k/dsp56k.h
+++ b/src/devices/cpu/dsp56k/dsp56k.h
@@ -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;
diff --git a/src/devices/cpu/h6280/h6280.cpp b/src/devices/cpu/h6280/h6280.cpp
index 2a38aed615f..4fb069d5390 100644
--- a/src/devices/cpu/h6280/h6280.cpp
+++ b/src/devices/cpu/h6280/h6280.cpp
@@ -2265,6 +2265,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
//-------------------------------------------------
diff --git a/src/devices/cpu/h6280/h6280.h b/src/devices/cpu/h6280/h6280.h
index 22155e0edb6..7c73187ab36 100644
--- a/src/devices/cpu/h6280/h6280.h
+++ b/src/devices/cpu/h6280/h6280.h
@@ -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;
diff --git a/src/devices/cpu/h8/h8.cpp b/src/devices/cpu/h8/h8.cpp
index 3863407c64c..e0214a6ea38 100644
--- a/src/devices/cpu/h8/h8.cpp
+++ b/src/devices/cpu/h8/h8.cpp
@@ -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) {
diff --git a/src/devices/cpu/h8/h8.h b/src/devices/cpu/h8/h8.h
index 598e033fa87..698d21b26cc 100644
--- a/src/devices/cpu/h8/h8.h
+++ b/src/devices/cpu/h8/h8.h
@@ -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
diff --git a/src/devices/cpu/hphybrid/hphybrid.h b/src/devices/cpu/hphybrid/hphybrid.h
index 700a2e09894..404100a8115 100644
--- a/src/devices/cpu/hphybrid/hphybrid.h
+++ b/src/devices/cpu/hphybrid/hphybrid.h
@@ -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;
diff --git a/src/devices/cpu/i386/i386.cpp b/src/devices/cpu/i386/i386.cpp
index bfcebd533b2..d0bb0c8e396 100644
--- a/src/devices/cpu/i386/i386.cpp
+++ b/src/devices/cpu/i386/i386.cpp
@@ -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;
}
diff --git a/src/devices/cpu/i386/i386.h b/src/devices/cpu/i386/i386.h
index 4112aaf61e1..c6039009209 100644
--- a/src/devices/cpu/i386/i386.h
+++ b/src/devices/cpu/i386/i386.h
@@ -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;
diff --git a/src/devices/cpu/i8085/i8085.h b/src/devices/cpu/i8085/i8085.h
index 9d94e850580..8c70aa03d71 100644
--- a/src/devices/cpu/i8085/i8085.h
+++ b/src/devices/cpu/i8085/i8085.h
@@ -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; }
diff --git a/src/devices/cpu/i86/i86.h b/src/devices/cpu/i86/i86.h
index 5c7af40f92b..2631003c576 100644
--- a/src/devices/cpu/i86/i86.h
+++ b/src/devices/cpu/i86/i86.h
@@ -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;
diff --git a/src/devices/cpu/i960/i960.h b/src/devices/cpu/i960/i960.h
index a17a52c401b..3b6e7758f13 100644
--- a/src/devices/cpu/i960/i960.h
+++ b/src/devices/cpu/i960/i960.h
@@ -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;
diff --git a/src/devices/cpu/lh5801/lh5801.h b/src/devices/cpu/lh5801/lh5801.h
index fbdb54a0f31..1d004105a9c 100644
--- a/src/devices/cpu/lh5801/lh5801.h
+++ b/src/devices/cpu/lh5801/lh5801.h
@@ -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;
diff --git a/src/devices/cpu/m37710/m37710op.h b/src/devices/cpu/m37710/m37710op.h
index 52eeaee19c2..c751be0fc7e 100644
--- a/src/devices/cpu/m37710/m37710op.h
+++ b/src/devices/cpu/m37710/m37710op.h
@@ -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])
diff --git a/src/devices/cpu/m6502/m6502.cpp b/src/devices/cpu/m6502/m6502.cpp
index 9ed8d4b63f0..333f0e7dfa5 100644
--- a/src/devices/cpu/m6502/m6502.cpp
+++ b/src/devices/cpu/m6502/m6502.cpp
@@ -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;
diff --git a/src/devices/cpu/m6502/m6502.h b/src/devices/cpu/m6502/m6502.h
index 18e7f54a920..c16757581f3 100644
--- a/src/devices/cpu/m6502/m6502.h
+++ b/src/devices/cpu/m6502/m6502.h
@@ -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;
diff --git a/src/devices/cpu/m6800/m6800.h b/src/devices/cpu/m6800/m6800.h
index 018280813fb..72fc1ada619 100644
--- a/src/devices/cpu/m6800/m6800.h
+++ b/src/devices/cpu/m6800/m6800.h
@@ -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;
diff --git a/src/devices/cpu/m6800/m6801.h b/src/devices/cpu/m6800/m6801.h
index c31248f18fc..8c8c98d8104 100644
--- a/src/devices/cpu/m6800/m6801.h
+++ b/src/devices/cpu/m6800/m6801.h
@@ -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
};
diff --git a/src/devices/cpu/m68000/m68000.h b/src/devices/cpu/m68000/m68000.h
index f2f0995196e..a147a78bf64 100644
--- a/src/devices/cpu/m68000/m68000.h
+++ b/src/devices/cpu/m68000/m68000.h
@@ -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;
diff --git a/src/devices/cpu/m6805/m6805.h b/src/devices/cpu/m6805/m6805.h
index ad3b2ca61ec..e4114e5b0ab 100644
--- a/src/devices/cpu/m6805/m6805.h
+++ b/src/devices/cpu/m6805/m6805.h
@@ -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; }
diff --git a/src/devices/cpu/m6805/m68hc05.cpp b/src/devices/cpu/m6805/m68hc05.cpp
index e794a7f476d..ba75e7853c4 100644
--- a/src/devices/cpu/m6805/m68hc05.cpp
+++ b/src/devices/cpu/m6805/m68hc05.cpp
@@ -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;
diff --git a/src/devices/cpu/m6809/m6809.h b/src/devices/cpu/m6809/m6809.h
index 6886dcbb3d3..6451a3074ca 100644
--- a/src/devices/cpu/m6809/m6809.h
+++ b/src/devices/cpu/m6809/m6809.h
@@ -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;
diff --git a/src/devices/cpu/mc68hc11/mc68hc11.h b/src/devices/cpu/mc68hc11/mc68hc11.h
index f2d834b7ad4..df8b05a4b27 100644
--- a/src/devices/cpu/mc68hc11/mc68hc11.h
+++ b/src/devices/cpu/mc68hc11/mc68hc11.h
@@ -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;
diff --git a/src/devices/cpu/mcs48/mcs48.h b/src/devices/cpu/mcs48/mcs48.h
index 35b2feec29b..ae26c1a2d62 100644
--- a/src/devices/cpu/mcs48/mcs48.h
+++ b/src/devices/cpu/mcs48/mcs48.h
@@ -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;
diff --git a/src/devices/cpu/mcs51/mcs51.h b/src/devices/cpu/mcs51/mcs51.h
index 32425cdc0f3..1001d355bc1 100644
--- a/src/devices/cpu/mcs51/mcs51.h
+++ b/src/devices/cpu/mcs51/mcs51.h
@@ -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;
diff --git a/src/devices/cpu/nanoprocessor/nanoprocessor.h b/src/devices/cpu/nanoprocessor/nanoprocessor.h
index 145ec5e2e5b..a4de6b661fb 100644
--- a/src/devices/cpu/nanoprocessor/nanoprocessor.h
+++ b/src/devices/cpu/nanoprocessor/nanoprocessor.h
@@ -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;
diff --git a/src/devices/cpu/nec/nec.h b/src/devices/cpu/nec/nec.h
index 2124d0814f9..5d8e2ad3338 100644
--- a/src/devices/cpu/nec/nec.h
+++ b/src/devices/cpu/nec/nec.h
@@ -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;
diff --git a/src/devices/cpu/nec/v25.h b/src/devices/cpu/nec/v25.h
index 27a63b739b0..9deaa0951ae 100644
--- a/src/devices/cpu/nec/v25.h
+++ b/src/devices/cpu/nec/v25.h
@@ -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;
diff --git a/src/devices/cpu/pic16c5x/pic16c5x.h b/src/devices/cpu/pic16c5x/pic16c5x.h
index 0cff2843715..f83e2a420b4 100644
--- a/src/devices/cpu/pic16c5x/pic16c5x.h
+++ b/src/devices/cpu/pic16c5x/pic16c5x.h
@@ -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;
diff --git a/src/devices/cpu/pic16c62x/pic16c62x.h b/src/devices/cpu/pic16c62x/pic16c62x.h
index 0d228b4b8fd..52a38b65696 100644
--- a/src/devices/cpu/pic16c62x/pic16c62x.h
+++ b/src/devices/cpu/pic16c62x/pic16c62x.h
@@ -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
diff --git a/src/devices/cpu/pps4/pps4.h b/src/devices/cpu/pps4/pps4.h
index f551cf2c0be..d74621890b3 100644
--- a/src/devices/cpu/pps4/pps4.h
+++ b/src/devices/cpu/pps4/pps4.h
@@ -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
diff --git a/src/devices/cpu/rsp/rsp.h b/src/devices/cpu/rsp/rsp.h
index a4a3b239c1b..4c4c315e111 100644
--- a/src/devices/cpu/rsp/rsp.h
+++ b/src/devices/cpu/rsp/rsp.h
@@ -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 { }
diff --git a/src/devices/cpu/s2650/s2650.h b/src/devices/cpu/s2650/s2650.h
index fd0a7d29286..eed957ee828 100644
--- a/src/devices/cpu/s2650/s2650.h
+++ b/src/devices/cpu/s2650/s2650.h
@@ -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;
diff --git a/src/devices/cpu/se3208/se3208.h b/src/devices/cpu/se3208/se3208.h
index b62470c987f..d0528b8208d 100644
--- a/src/devices/cpu/se3208/se3208.h
+++ b/src/devices/cpu/se3208/se3208.h
@@ -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;
diff --git a/src/devices/cpu/sh/sh2.h b/src/devices/cpu/sh/sh2.h
index c5693ca9ebd..2fd53b05e93 100644
--- a/src/devices/cpu/sh/sh2.h
+++ b/src/devices/cpu/sh/sh2.h
@@ -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;
diff --git a/src/devices/cpu/sh/sh4.h b/src/devices/cpu/sh/sh4.h
index 8d6af845820..eb84a9128f9 100644
--- a/src/devices/cpu/sh/sh4.h
+++ b/src/devices/cpu/sh/sh4.h
@@ -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;
diff --git a/src/devices/cpu/spc700/spc700.h b/src/devices/cpu/spc700/spc700.h
index 9050bdfe981..7e95c09765d 100644
--- a/src/devices/cpu/spc700/spc700.h
+++ b/src/devices/cpu/spc700/spc700.h
@@ -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;
diff --git a/src/devices/cpu/t11/t11.h b/src/devices/cpu/t11/t11.h
index 371f05780c7..a6e12b51518 100644
--- a/src/devices/cpu/t11/t11.h
+++ b/src/devices/cpu/t11/t11.h
@@ -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;
diff --git a/src/devices/cpu/tlcs870/tlcs870.h b/src/devices/cpu/tlcs870/tlcs870.h
index d0ab90221c5..42ca4b1c6c6 100644
--- a/src/devices/cpu/tlcs870/tlcs870.h
+++ b/src/devices/cpu/tlcs870/tlcs870.h
@@ -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;
diff --git a/src/devices/cpu/tlcs90/tlcs90.h b/src/devices/cpu/tlcs90/tlcs90.h
index 3d5a27a25b9..9fb16ad5bd4 100644
--- a/src/devices/cpu/tlcs90/tlcs90.h
+++ b/src/devices/cpu/tlcs90/tlcs90.h
@@ -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;
diff --git a/src/devices/cpu/tlcs900/tlcs900.h b/src/devices/cpu/tlcs900/tlcs900.h
index 5bddc3ead85..0da3f597a61 100644
--- a/src/devices/cpu/tlcs900/tlcs900.h
+++ b/src/devices/cpu/tlcs900/tlcs900.h
@@ -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
diff --git a/src/devices/cpu/upd7810/upd7810.h b/src/devices/cpu/upd7810/upd7810.h
index bde0a6c6a7f..a609707f1d9 100644
--- a/src/devices/cpu/upd7810/upd7810.h
+++ b/src/devices/cpu/upd7810/upd7810.h
@@ -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;
diff --git a/src/devices/cpu/v30mz/v30mz.h b/src/devices/cpu/v30mz/v30mz.h
index 90eddd0f842..8a9ebbb2797 100644
--- a/src/devices/cpu/v30mz/v30mz.h
+++ b/src/devices/cpu/v30mz/v30mz.h
@@ -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;
diff --git a/src/devices/cpu/v60/v60.h b/src/devices/cpu/v60/v60.h
index a0c7ebe6e7e..14a0ca62615 100644
--- a/src/devices/cpu/v60/v60.h
+++ b/src/devices/cpu/v60/v60.h
@@ -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;
diff --git a/src/devices/cpu/z180/z180.h b/src/devices/cpu/z180/z180.h
index ae1476762a6..ad5d1589717 100644
--- a/src/devices/cpu/z180/z180.h
+++ b/src/devices/cpu/z180/z180.h
@@ -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;
diff --git a/src/devices/cpu/z8/z8.h b/src/devices/cpu/z8/z8.h
index ff37f5f2edd..f0f135296e4 100644
--- a/src/devices/cpu/z8/z8.h
+++ b/src/devices/cpu/z8/z8.h
@@ -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;
diff --git a/src/devices/cpu/z80/z80.h b/src/devices/cpu/z80/z80.h
index a1482fc10a4..9e7471c9826 100644
--- a/src/devices/cpu/z80/z80.h
+++ b/src/devices/cpu/z80/z80.h
@@ -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;
diff --git a/src/devices/cpu/z8000/z8000.h b/src/devices/cpu/z8000/z8000.h
index 46cd26200d1..93cab12a193 100644
--- a/src/devices/cpu/z8000/z8000.h
+++ b/src/devices/cpu/z8000/z8000.h
@@ -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;