summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/m6502
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/m6502')
-rw-r--r--src/devices/cpu/m6502/xavix.cpp20
-rw-r--r--src/devices/cpu/m6502/xavix.h17
2 files changed, 7 insertions, 30 deletions
diff --git a/src/devices/cpu/m6502/xavix.cpp b/src/devices/cpu/m6502/xavix.cpp
index 522d9374b5f..de7726d7239 100644
--- a/src/devices/cpu/m6502/xavix.cpp
+++ b/src/devices/cpu/m6502/xavix.cpp
@@ -34,28 +34,16 @@
DEFINE_DEVICE_TYPE(XAVIX, xavix_device, "xavix", "XaviX (SSD 97 / SSD 98)")
xavix_device::xavix_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- m6502_device(mconfig, XAVIX, tag, owner, clock),
- XPC(0),
- m_lowbus_config("lowbus", ENDIANNESS_LITTLE, 8, 15),
- m_extbus_config("extbus", ENDIANNESS_LITTLE, 8, 24)
+ xavix_device(mconfig, XAVIX, tag, owner, clock)
{
- program_config.m_addr_width = 24;
- program_config.m_logaddr_width = 24;
- sprogram_config.m_addr_width = 24;
- sprogram_config.m_logaddr_width = 24;
- // XaviX specific spaces
- m_lowbus_config.m_addr_width = 15;
- m_lowbus_config.m_logaddr_width = 15;
- m_extbus_config.m_addr_width = 24;
- m_extbus_config.m_logaddr_width = 24;
-
}
xavix_device::xavix_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
m6502_device(mconfig, type, tag, owner, clock),
XPC(0),
m_lowbus_config("lowbus", ENDIANNESS_LITTLE, 8, 15),
- m_extbus_config("extbus", ENDIANNESS_LITTLE, 8, 24)
+ m_extbus_config("extbus", ENDIANNESS_LITTLE, 8, 24),
+ m_vector_callback(*this)
{
program_config.m_addr_width = 24;
program_config.m_logaddr_width = 24;
@@ -89,7 +77,7 @@ void xavix_device::device_start()
mintf = std::make_unique<mi_xavix_normal>(this);
// bind delegates
- m_vector_callback.bind_relative_to(*owner());
+ m_vector_callback.resolve();
init();
diff --git a/src/devices/cpu/m6502/xavix.h b/src/devices/cpu/m6502/xavix.h
index 89f97f574bd..240730f46f3 100644
--- a/src/devices/cpu/m6502/xavix.h
+++ b/src/devices/cpu/m6502/xavix.h
@@ -135,22 +135,11 @@ public:
- typedef device_delegate<int16_t (int which, int half)> xavix_interrupt_vector_delegate;
-
- template <typename Object> void set_vector_callback(Object &&cb) { m_vector_callback = std::forward<Object>(cb); }
- void set_vector_callback(xavix_interrupt_vector_delegate callback) { m_vector_callback = callback; }
- template <class FunctionClass> void set_vector_callback(const char *devname, int16_t (FunctionClass::*callback)(int, int), const char *name)
- {
- set_vector_callback(xavix_interrupt_vector_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr)));
- }
- template <class FunctionClass> void set_vector_callback(int16_t (FunctionClass::*callback)(int, int), const char *name)
- {
- set_vector_callback(xavix_interrupt_vector_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)));
- }
-
-
#undef O
+ typedef device_delegate<int16_t (int which, int half)> xavix_interrupt_vector_delegate;
+
+ template <typename... T> void set_vector_callback(T &&... args) { m_vector_callback.set(std::forward<T>(args)...); }
uint8_t read_full_data(uint8_t databank, uint16_t addr);
uint8_t read_full_data(uint32_t addr);