summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/m6502/xavix.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/m6502/xavix.h')
-rw-r--r--src/devices/cpu/m6502/xavix.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/devices/cpu/m6502/xavix.h b/src/devices/cpu/m6502/xavix.h
index 557c39ecea3..4e0a76424a2 100644
--- a/src/devices/cpu/m6502/xavix.h
+++ b/src/devices/cpu/m6502/xavix.h
@@ -12,6 +12,9 @@
#include "m6502.h"
+#define MCFG_XAVIX_VECTOR_CALLBACK(_class, _method) \
+ xavix_device::set_vector_callback(*device, xavix_device::xavix_interrupt_vector_delegate(&_class::_method, #_class "::" #_method, this));
+
class xavix_device : public m6502_device {
public:
xavix_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -25,6 +28,12 @@ public:
// xaviv opcodes
O(callf_xa3);
O(retf_imp);
+ O(brk_xav_imp);
+
+ typedef device_delegate<uint8_t (int which, int half)> xavix_interrupt_vector_delegate;
+
+ static void set_vector_callback(device_t &device, xavix_interrupt_vector_delegate &&cb) { downcast<xavix_device &>(device).m_vector_callback = std::move(cb); }
+
#undef O
@@ -63,6 +72,9 @@ protected:
virtual void device_reset() override;
virtual void state_export(const device_state_entry &entry) override;
+private:
+ xavix_interrupt_vector_delegate m_vector_callback;
+
};
DECLARE_DEVICE_TYPE(XAVIX, xavix_device)