From 0d4a4e5e95a58ca1cb821df1cf9afd8b559ccac2 Mon Sep 17 00:00:00 2001 From: mooglyguy Date: Fri, 10 Aug 2018 01:39:10 +0200 Subject: -68153bim: Removed MCFG and added devcb3, nw --- src/devices/bus/vme/vme_fccpu20.cpp | 4 +-- src/devices/bus/vme/vme_fcisio.cpp | 2 +- src/devices/machine/68153bim.h | 51 +++++++++---------------------------- 3 files changed, 15 insertions(+), 42 deletions(-) diff --git a/src/devices/bus/vme/vme_fccpu20.cpp b/src/devices/bus/vme/vme_fccpu20.cpp index 1e38411a44f..f863b8c1681 100644 --- a/src/devices/bus/vme/vme_fccpu20.cpp +++ b/src/devices/bus/vme/vme_fccpu20.cpp @@ -266,8 +266,8 @@ MACHINE_CONFIG_START(vme_fccpu20_device::device_add_mconfig) MCFG_PIT68230_TIMER_IRQ_CB(WRITELINE("bim", bim68153_device, int2_w)) /* BIM */ - MCFG_MC68153_ADD("bim", CLOCK32 / 8) - MCFG_BIM68153_OUT_INT_CB(WRITELINE(*this, vme_fccpu20_device, bim_irq_callback)) + bim68153_device &bim(MC68153(config, "bim", CLOCK32 / 8)); + bim.out_int_callback().set(FUNC(vme_fccpu20_device::bim_irq_callback)); /*INT0 - Abort switch */ /*INT1 - MPCC@8.064 MHz aswell */ /*INT2 - PI/T timer */ diff --git a/src/devices/bus/vme/vme_fcisio.cpp b/src/devices/bus/vme/vme_fcisio.cpp index 7db85954e23..3d26762bb55 100644 --- a/src/devices/bus/vme/vme_fcisio.cpp +++ b/src/devices/bus/vme/vme_fcisio.cpp @@ -365,7 +365,7 @@ MACHINE_CONFIG_START(vme_fcisio1_card_device::device_add_mconfig) MCFG_DEVICE_ADD ("pit", PIT68230, XTAL(20'000'000) / 2) MCFG_PIT68230_PB_INPUT_CB(READ8(*this, vme_fcisio1_card_device, config_rd)) - MCFG_MC68153_ADD("bim", XTAL(20'000'000) / 2) + MC68153(config, "bim", XTAL(20'000'000) / 2); MACHINE_CONFIG_END const tiny_rom_entry *vme_fcisio1_card_device::device_rom_region() const diff --git a/src/devices/machine/68153bim.h b/src/devices/machine/68153bim.h index a0e223b6b2e..3b5da05c9eb 100644 --- a/src/devices/machine/68153bim.h +++ b/src/devices/machine/68153bim.h @@ -34,38 +34,6 @@ #pragma once -//************************************************************************** -// DEVICE CONFIGURATION MACROS -//************************************************************************** - -/* Variant ADD macros - use the right one to enable the right feature set! */ -#define MCFG_MC68153_ADD(_tag, _clock) \ - MCFG_DEVICE_ADD(_tag, MC68153, _clock) - -#define MCFG_EI68C153_ADD(_tag, _clock) \ - MCFG_DEVICE_ADD(_tag, EI68C153, _clock) - -#define MCFG_BIM68153_OUT_INT_CB(_devcb) \ - downcast(*device).set_out_int_callback(DEVCB_##_devcb); - -// These callback sets INTAL0 and INTAL1 but is probably not needed as the -// shorthand OUT_IACK0..OUT_IACK3 below embedd the channel information -#define MCFG_BIM68153_OUT_INTAL0_CB(_devcb) \ - downcast(*device).set_out_intal0_callback(DEVCB_##_devcb); - -#define MCFG_BIM68153_OUT_INTAL1_CB(_devcb) \ - downcast(*device).set_out_intal1_callback(DEVCB_##_devcb); - -// LOCAL IACK callbacks emulating the INTAL0 and INTAL1 outputs for INTAE requesting a vector from a sub device -#define MCFG_BIM68153_OUT_IACK0_CB(_devcb) \ - downcast(*device).set_out_iack0_callback(DEVCB_##_devcb); -#define MCFG_BIM68153_OUT_IACK1_CB(_devcb) \ - downcast(*device).set_out_iack1_callback(DEVCB_##_devcb); -#define MCFG_BIM68153_OUT_IACK2_CB(_devcb) \ - downcast(*device).set_out_iack2_callback(DEVCB_##_devcb); -#define MCFG_BIM68153_OUT_IACK3_CB(_devcb) \ - downcast(*device).set_out_iack3_callback(DEVCB_##_devcb); - //************************************************************************** // TYPE DEFINITIONS //************************************************************************** @@ -140,14 +108,19 @@ public: int acknowledge(); int get_irq_level(); - template devcb_base &set_out_int_callback(Object &&cb) { return m_out_int_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_intal0_callback(Object &&cb) { return m_out_intal0_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_intal1_callback(Object &&cb) { return m_out_intal1_cb.set_callback(std::forward(cb)); } + auto out_int_callback() { return m_out_int_cb.bind(); } + + // These callback set INTAL0 and INTAL1 but are probably not needed as the + // shorthand OUT_IACK0..OUT_IACK3 below embed the channel information + auto out_intal0_callback() { return m_out_intal0_cb.bind(); } + auto out_intal1_callback() { return m_out_intal1_cb.bind(); } - template devcb_base &set_out_iack0_callback(Object &&cb) { return m_chn[CHN_0]->m_out_iack_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_iack1_callback(Object &&cb) { return m_chn[CHN_1]->m_out_iack_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_iack2_callback(Object &&cb) { return m_chn[CHN_2]->m_out_iack_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_iack4_callback(Object &&cb) { return m_chn[CHN_3]->m_out_iack_cb.set_callback(std::forward(cb)); } + // LOCAL IACK callbacks emulating the INTAL0 and INTAL1 outputs for INTAE requesting a vector from a sub device + template out_iack_callback() { return m_chn[Bit]->m_out_iack_cb.bind(); } + auto out_iack0_callback() { return m_chn[CHN_0]->m_out_iack_cb.bind(); } + auto out_iack1_callback() { return m_chn[CHN_1]->m_out_iack_cb.bind(); } + auto out_iack2_callback() { return m_chn[CHN_2]->m_out_iack_cb.bind(); } + auto out_iack3_callback() { return m_chn[CHN_3]->m_out_iack_cb.bind(); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); -- cgit v1.2.3