summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/iq151
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/iq151')
-rw-r--r--src/devices/bus/iq151/disc2.cpp11
-rw-r--r--src/devices/bus/iq151/iq151.h52
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