diff options
Diffstat (limited to 'src/devices/bus/iq151')
-rw-r--r-- | src/devices/bus/iq151/disc2.cpp | 11 | ||||
-rw-r--r-- | src/devices/bus/iq151/iq151.h | 52 |
2 files changed, 22 insertions, 41 deletions
diff --git a/src/devices/bus/iq151/disc2.cpp b/src/devices/bus/iq151/disc2.cpp index db9919ef516..0fde6792d40 100644 --- a/src/devices/bus/iq151/disc2.cpp +++ b/src/devices/bus/iq151/disc2.cpp @@ -95,7 +95,7 @@ const tiny_rom_entry *iq151_disc2_device::device_rom_region() const void iq151_disc2_device::read(offs_t offset, uint8_t &data) { - // interal ROM is mapped at 0xe000-0xe7ff + // internal ROM is mapped at 0xe000-0xe7ff if (offset >= 0xe000 && offset < 0xe800 && m_rom_enabled) data = m_rom[offset & 0x7ff]; } @@ -107,12 +107,10 @@ void iq151_disc2_device::read(offs_t offset, uint8_t &data) void iq151_disc2_device::io_read(offs_t offset, uint8_t &data) { - /* This is gross */ - address_space *space = nullptr; if (offset == 0xaa) - data = m_fdc->msr_r(*space, 0, 0xff); + data = m_fdc->msr_r(); else if (offset == 0xab) - data = m_fdc->fifo_r(*space, 0, 0xff); + data = m_fdc->fifo_r(); } //------------------------------------------------- @@ -121,9 +119,8 @@ void iq151_disc2_device::io_read(offs_t offset, uint8_t &data) void iq151_disc2_device::io_write(offs_t offset, uint8_t data) { - address_space *space = nullptr; if (offset == 0xab) - m_fdc->fifo_w(*space, 0, data, 0xff); + m_fdc->fifo_w(data); else if (offset == 0xac) m_rom_enabled = (data == 0x01); } diff --git a/src/devices/bus/iq151/iq151.h b/src/devices/bus/iq151/iq151.h index e68d27a007d..306fef47ee6 100644 --- a/src/devices/bus/iq151/iq151.h +++ b/src/devices/bus/iq151/iq151.h @@ -87,16 +87,26 @@ class iq151cart_slot_device : public device_t, { public: // construction/destruction - iq151cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + template <typename T> + iq151cart_slot_device(machine_config const &mconfig, char const *tag, device_t *owner, T &&opts, char const *dflt) + : iq151cart_slot_device(mconfig, tag, owner, 0) + { + option_reset(); + opts(*this); + set_default_option(dflt); + set_fixed(false); + } + + iq151cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); virtual ~iq151cart_slot_device(); - void set_screen_tag(const char *tag) { m_screen.set_tag(tag); } - template <class Object> devcb_base &set_out_irq0_callback(Object &&cb) { return m_out_irq0_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_out_irq1_callback(Object &&cb) { return m_out_irq1_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_out_irq2_callback(Object &&cb) { return m_out_irq2_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_out_irq3_callback(Object &&cb) { return m_out_irq3_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_out_irq4_callback(Object &&cb) { return m_out_irq4_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_out_drq_callback(Object &&cb) { return m_out_drq_cb.set_callback(std::forward<Object>(cb)); } + template <typename T> void set_screen_tag(T &&tag) { m_screen.set_tag(std::forward<T>(tag)); } + auto out_irq0_callback() { return m_out_irq0_cb.bind(); } + auto out_irq1_callback() { return m_out_irq1_cb.bind(); } + auto out_irq2_callback() { return m_out_irq2_cb.bind(); } + auto out_irq3_callback() { return m_out_irq3_cb.bind(); } + auto out_irq4_callback() { return m_out_irq4_cb.bind(); } + auto out_drq_callback() { return m_out_drq_cb.bind(); } // device-level overrides virtual void device_start() override; @@ -139,30 +149,4 @@ public: // device type definition DECLARE_DEVICE_TYPE(IQ151CART_SLOT, iq151cart_slot_device) - -/*************************************************************************** - DEVICE CONFIGURATION MACROS -***************************************************************************/ - -#define MCFG_IQ151CART_SLOT_OUT_IRQ0_CB(_devcb) \ - downcast<iq151cart_slot_device &>(*device).set_out_irq0_callback(DEVCB_##_devcb); - -#define MCFG_IQ151CART_SLOT_OUT_IRQ1_CB(_devcb) \ - downcast<iq151cart_slot_device &>(*device).set_out_irq1_callback(DEVCB_##_devcb); - -#define MCFG_IQ151CART_SLOT_OUT_IRQ2_CB(_devcb) \ - downcast<iq151cart_slot_device &>(*device).set_out_irq2_callback(DEVCB_##_devcb); - -#define MCFG_IQ151CART_SLOT_OUT_IRQ3_CB(_devcb) \ - downcast<iq151cart_slot_device &>(*device).set_out_irq3_callback(DEVCB_##_devcb); - -#define MCFG_IQ151CART_SLOT_OUT_IRQ4_CB(_devcb) \ - downcast<iq151cart_slot_device &>(*device).set_out_irq4_callback(DEVCB_##_devcb); - -#define MCFG_IQ151CART_SLOT_OUT_DRQ_CB(_devcb) \ - downcast<iq151cart_slot_device &>(*device).set_out_drq_callback(DEVCB_##_devcb); - -#define MCFG_IQ151CART_SLOT_SCREEN_TAG(screen_tag) \ - downcast<iq151cart_slot_device &>(*device).set_screen_tag(screen_tag); - #endif // MAME_BUS_IQ151_IQ151_H |