From a4fec5051e3e76261a8f74af2ebfc9e017ee21b6 Mon Sep 17 00:00:00 2001 From: mooglyguy Date: Tue, 4 Sep 2018 05:05:06 +0200 Subject: i8291a, i8355: De-MCFG, nw --- src/devices/bus/ieee488/hp9122c.cpp | 21 ++++++----- src/devices/machine/i8291a.h | 72 ++++++------------------------------- src/devices/machine/i8355.h | 41 +++------------------ src/mame/drivers/exp85.cpp | 7 ++-- src/mame/drivers/sdk85.cpp | 4 +-- 5 files changed, 30 insertions(+), 115 deletions(-) diff --git a/src/devices/bus/ieee488/hp9122c.cpp b/src/devices/bus/ieee488/hp9122c.cpp index 5075e01a38c..794e8a36fc2 100644 --- a/src/devices/bus/ieee488/hp9122c.cpp +++ b/src/devices/bus/ieee488/hp9122c.cpp @@ -376,17 +376,16 @@ MACHINE_CONFIG_START(hp9122c_device::device_add_mconfig) MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(*this, hp9122c_device, fdc_intrq_w)) MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(*this,hp9122c_device, fdc_drq_w)) - MCFG_DEVICE_ADD("i8291a", I8291A, XTAL(2'000'000)) - - MCFG_I8291A_EOI_WRITE_CB(WRITELINE(*this, hp9122c_device, i8291a_eoi_w)) - MCFG_I8291A_DAV_WRITE_CB(WRITELINE(*this, hp9122c_device, i8291a_dav_w)) - MCFG_I8291A_NRFD_WRITE_CB(WRITELINE(*this, hp9122c_device, i8291a_nrfd_w)) - MCFG_I8291A_NDAC_WRITE_CB(WRITELINE(*this, hp9122c_device, i8291a_ndac_w)) - MCFG_I8291A_SRQ_WRITE_CB(WRITELINE(*this, hp9122c_device, i8291a_srq_w)) - MCFG_I8291A_DIO_WRITE_CB(WRITE8(*this, hp9122c_device, i8291a_dio_w)) - MCFG_I8291A_DIO_READ_CB(READ8(*this, hp9122c_device, i8291a_dio_r)) - MCFG_I8291A_INT_WRITE_CB(WRITELINE(*this, hp9122c_device, i8291a_int_w)) - MCFG_I8291A_DREQ_WRITE_CB(WRITELINE(*this, hp9122c_device, i8291a_dreq_w)) + I8291A(config, m_i8291a, XTAL(2'000'000)); + m_i8291a->eoi_write().set(FUNC(hp9122c_device::i8291a_eoi_w)); + m_i8291a->dav_write().set(FUNC(hp9122c_device::i8291a_dav_w)); + m_i8291a->nrfd_write().set(FUNC(hp9122c_device::i8291a_nrfd_w)); + m_i8291a->ndac_write().set(FUNC(hp9122c_device::i8291a_ndac_w)); + m_i8291a->srq_write().set(FUNC(hp9122c_device::i8291a_srq_w)); + m_i8291a->dio_write().set(FUNC(hp9122c_device::i8291a_dio_w)); + m_i8291a->dio_read().set(FUNC(hp9122c_device::i8291a_dio_r)); + m_i8291a->int_write().set(FUNC(hp9122c_device::i8291a_int_w)); + m_i8291a->dreq_write().set(FUNC(hp9122c_device::i8291a_dreq_w)); MCFG_FLOPPY_DRIVE_ADD("floppy0" , hp9122c_floppies , "35hd" , hp9122c_floppy_formats) MCFG_FLOPPY_DRIVE_SOUND(true) diff --git a/src/devices/machine/i8291a.h b/src/devices/machine/i8291a.h index d607ff8f051..566ae4779b7 100644 --- a/src/devices/machine/i8291a.h +++ b/src/devices/machine/i8291a.h @@ -11,76 +11,24 @@ #ifndef MAME_MACHINE_I8291A_H #define MAME_MACHINE_I8291A_H - #pragma once - -#define MCFG_I8291A_INT_WRITE_CB(_write) \ - downcast(*device).set_int_write_cb(DEVCB_##_write); - -#define MCFG_I8291A_DREQ_WRITE_CB(_write) \ - downcast(*device).set_dreq_write_cb(DEVCB_##_write); - -#define MCFG_I8291A_TRIG_WRITE_CB(_write) \ - downcast(*device).set_trig_write_cb(DEVCB_##_write); - -#define MCFG_I8291A_DIO_READ_CB(_read) \ - downcast(*device).set_dio_read_cb(DEVCB_##_read); - -#define MCFG_I8291A_DIO_WRITE_CB(_write) \ - downcast(*device).set_dio_write_cb(DEVCB_##_write); - -#define MCFG_I8291A_EOI_WRITE_CB(_write) \ - downcast(*device).set_eoi_write_cb(DEVCB_##_write); - -#define MCFG_I8291A_DAV_WRITE_CB(_write) \ - downcast(*device).set_dav_write_cb(DEVCB_##_write); - -#define MCFG_I8291A_NRFD_WRITE_CB(_write) \ - downcast(*device).set_nrfd_write_cb(DEVCB_##_write); - -#define MCFG_I8291A_NDAC_WRITE_CB(_write) \ - downcast(*device).set_ndac_write_cb(DEVCB_##_write); - -#define MCFG_I8291A_SRQ_WRITE_CB(_write) \ - downcast(*device).set_srq_write_cb(DEVCB_##_write); - - class i8291a_device : public device_t { public: // construction/destruction i8291a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template devcb_base& set_int_write_cb(Object &&cb) - { return m_int_write_func.set_callback(std::forward(cb)); } - - template devcb_base& set_dreq_write_cb(Object &&cb) - { return m_dreq_write_func.set_callback(std::forward(cb)); } - - template devcb_base& set_trig_write_cb(Object &&cb) - { return m_trig_write_func.set_callback(std::forward(cb)); } - - template devcb_base& set_eoi_write_cb(Object &&cb) - { return m_eoi_write_func.set_callback(std::forward(cb)); } - - template devcb_base& set_dav_write_cb(Object &&cb) - { return m_dav_write_func.set_callback(std::forward(cb)); } - - template devcb_base& set_nrfd_write_cb(Object &&cb) - { return m_nrfd_write_func.set_callback(std::forward(cb)); } - - template devcb_base& set_ndac_write_cb(Object &&cb) - { return m_ndac_write_func.set_callback(std::forward(cb)); } - - template devcb_base& set_srq_write_cb(Object &&cb) - { return m_srq_write_func.set_callback(std::forward(cb)); } - - template devcb_base& set_dio_write_cb(Object &&cb) - { return m_dio_write_func.set_callback(std::forward(cb)); } - - template devcb_base& set_dio_read_cb(Object &&cb) - { return m_dio_read_func.set_callback(std::forward(cb)); } + auto int_write() { return m_int_write_func.bind(); } + auto dreq_write() { return m_dreq_write_func.bind(); } + auto trig_write() { return m_trig_write_func.bind(); } + auto eoi_write() { return m_eoi_write_func.bind(); } + auto dav_write() { return m_dav_write_func.bind(); } + auto nrfd_write() { return m_nrfd_write_func.bind(); } + auto ndac_write() { return m_ndac_write_func.bind(); } + auto srq_write() { return m_srq_write_func.bind(); } + auto dio_write() { return m_dio_write_func.bind(); } + auto dio_read() { return m_dio_read_func.bind(); } // Signal inputs DECLARE_WRITE_LINE_MEMBER(reset_w); diff --git a/src/devices/machine/i8355.h b/src/devices/machine/i8355.h index be2e83d17eb..9a6228d0fa0 100644 --- a/src/devices/machine/i8355.h +++ b/src/devices/machine/i8355.h @@ -34,49 +34,16 @@ #pragma once - - - -///************************************************************************* -// MACROS / CONSTANTS -///************************************************************************* - - - - -///************************************************************************* -// INTERFACE CONFIGURATION MACROS -///************************************************************************* - -#define MCFG_I8355_IN_PA_CB(_devcb) \ - downcast(*device).set_in_pa_callback(DEVCB_##_devcb); - -#define MCFG_I8355_OUT_PA_CB(_devcb) \ - downcast(*device).set_out_pa_callback(DEVCB_##_devcb); - -#define MCFG_I8355_IN_PB_CB(_devcb) \ - downcast(*device).set_in_pb_callback(DEVCB_##_devcb); - -#define MCFG_I8355_OUT_PB_CB(_devcb) \ - downcast(*device).set_out_pb_callback(DEVCB_##_devcb); - - -///************************************************************************* -// TYPE DEFINITIONS -///************************************************************************* - -// ======================> i8355_device - class i8355_device : public device_t { public: // construction/destruction i8355_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template devcb_base &set_in_pa_callback(Object &&cb) { return m_in_pa_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_pa_callback(Object &&cb) { return m_out_pa_cb.set_callback(std::forward(cb)); } - template devcb_base &set_in_pb_callback(Object &&cb) { return m_in_pb_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_pb_callback(Object &&cb) { return m_out_pb_cb.set_callback(std::forward(cb)); } + auto in_pa() { return m_in_pa_cb.bind(); } + auto out_pa() { return m_out_pa_cb.bind(); } + auto in_pb() { return m_in_pb_cb.bind(); } + auto out_pb() { return m_out_pb_cb.bind(); } DECLARE_READ8_MEMBER( io_r ); DECLARE_WRITE8_MEMBER( io_w ); diff --git a/src/mame/drivers/exp85.cpp b/src/mame/drivers/exp85.cpp index a6c4eea8cf6..f83b43f7306 100644 --- a/src/mame/drivers/exp85.cpp +++ b/src/mame/drivers/exp85.cpp @@ -196,9 +196,10 @@ MACHINE_CONFIG_START(exp85_state::exp85) /* devices */ I8155(config, I8155_TAG, 6.144_MHz_XTAL/2); - MCFG_DEVICE_ADD(I8355_TAG, I8355, 6.144_MHz_XTAL/2) - MCFG_I8355_IN_PA_CB(READ8(*this, exp85_state, i8355_a_r)) - MCFG_I8355_OUT_PA_CB(WRITE8(*this, exp85_state, i8355_a_w)) + i8355_device &i8355(I8355(config, I8355_TAG, 6.144_MHz_XTAL/2)); + i8355.in_pa().set(FUNC(exp85_state::i8355_a_r)); + i8355.out_pa().set(FUNC(exp85_state::i8355_a_w)); + MCFG_CASSETTE_ADD("cassette") MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED) diff --git a/src/mame/drivers/sdk85.cpp b/src/mame/drivers/sdk85.cpp index 6023d6542aa..8115b0b9a42 100644 --- a/src/mame/drivers/sdk85.cpp +++ b/src/mame/drivers/sdk85.cpp @@ -154,9 +154,9 @@ MACHINE_CONFIG_START(sdk85_state::sdk85) MCFG_DEVICE_PROGRAM_MAP(sdk85_mem) MCFG_DEVICE_IO_MAP(sdk85_io) - MCFG_DEVICE_ADD("romio", I8355, 6.144_MHz_XTAL / 2) // Monitor ROM (A14) + I8355(config, "romio", 6.144_MHz_XTAL / 2); // Monitor ROM (A14) - MCFG_DEVICE_ADD("expromio", I8355, 6.144_MHz_XTAL / 2) // Expansion ROM (A15) + I8355(config, "expromio", 6.144_MHz_XTAL / 2); // Expansion ROM (A15) i8155_device &i8155(I8155(config, "ramio", 6.144_MHz_XTAL / 2)); // Basic RAM (A16) i8155.out_to_callback().set_inputline(m_maincpu, I8085_TRAP_LINE); -- cgit v1.2.3