summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2018-10-12 10:28:02 -0400
committer AJR <ajrhacker@users.noreply.github.com>2018-10-12 10:28:02 -0400
commit484aef76978e09b0b1a6bf7ac18e4734824ab025 (patch)
treebe57905db8b29bdfb5226de8d09c0b286347f76f
parent4623ffc0a463311d2d3baf6a2ca8f33b6c39c6b1 (diff)
crt9007: Convert callbacks to devcb3 and remove MCFG_ macros (nw)
-rw-r--r--src/devices/video/crt9007.cpp3
-rw-r--r--src/devices/video/crt9007.h66
-rw-r--r--src/mame/drivers/tandy2k.cpp26
3 files changed, 26 insertions, 69 deletions
diff --git a/src/devices/video/crt9007.cpp b/src/devices/video/crt9007.cpp
index f8b72603ea2..22b73a98124 100644
--- a/src/devices/video/crt9007.cpp
+++ b/src/devices/video/crt9007.cpp
@@ -964,5 +964,6 @@ void crt9007_device::set_character_width(unsigned value)
{
m_hpixels_per_column = value;
- recompute_parameters();
+ if (started())
+ recompute_parameters();
}
diff --git a/src/devices/video/crt9007.h b/src/devices/video/crt9007.h
index aa024d2c24e..5f0b1f30897 100644
--- a/src/devices/video/crt9007.h
+++ b/src/devices/video/crt9007.h
@@ -38,48 +38,6 @@
//**************************************************************************
-// INTERFACE CONFIGURATION MACROS
-//**************************************************************************
-
-#define MCFG_CRT9007_CHARACTER_WIDTH(_value) \
- downcast<crt9007_device &>(*device).config_set_character_width(_value);
-
-#define MCFG_CRT9007_INT_CALLBACK(_write) \
- downcast<crt9007_device &>(*device).set_int_wr_callback(DEVCB_##_write);
-
-#define MCFG_CRT9007_DMAR_CALLBACK(_write) \
- downcast<crt9007_device &>(*device).set_dmar_wr_callback(DEVCB_##_write);
-
-#define MCFG_CRT9007_VS_CALLBACK(_write) \
- downcast<crt9007_device &>(*device).set_vs_wr_callback(DEVCB_##_write);
-
-#define MCFG_CRT9007_HS_CALLBACK(_write) \
- downcast<crt9007_device &>(*device).set_hs_wr_callback(DEVCB_##_write);
-
-#define MCFG_CRT9007_VLT_CALLBACK(_write) \
- downcast<crt9007_device &>(*device).set_vlt_wr_callback(DEVCB_##_write);
-
-#define MCFG_CRT9007_CURS_CALLBACK(_write) \
- downcast<crt9007_device &>(*device).set_curs_wr_callback(DEVCB_##_write);
-
-#define MCFG_CRT9007_DRB_CALLBACK(_write) \
- downcast<crt9007_device &>(*device).set_drb_wr_callback(DEVCB_##_write);
-
-#define MCFG_CRT9007_WBEN_CALLBACK(_write) \
- downcast<crt9007_device &>(*device).set_wben_wr_callback(DEVCB_##_write);
-
-#define MCFG_CRT9007_CBLANK_CALLBACK(_write) \
- downcast<crt9007_device &>(*device).set_cblank_wr_callback(DEVCB_##_write);
-
-#define MCFG_CRT9007_SLG_CALLBACK(_write) \
- downcast<crt9007_device &>(*device).set_slg_wr_callback(DEVCB_##_write);
-
-#define MCFG_CRT9007_SLD_CALLBACK(_write) \
- downcast<crt9007_device &>(*device).set_sld_wr_callback(DEVCB_##_write);
-
-
-
-//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -93,19 +51,17 @@ public:
// construction/destruction
crt9007_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- void config_set_character_width(unsigned value) { m_hpixels_per_column = value; }
-
- template <class Object> devcb_base &set_int_wr_callback(Object &&cb) { return m_write_int.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_dmar_wr_callback(Object &&cb) { return m_write_dmar.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_vs_wr_callback(Object &&cb) { return m_write_vs.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_hs_wr_callback(Object &&cb) { return m_write_hs.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_vlt_wr_callback(Object &&cb) { return m_write_vlt.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_curs_wr_callback(Object &&cb) { return m_write_curs.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_drb_wr_callback(Object &&cb) { return m_write_drb.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_wben_wr_callback(Object &&cb) { return m_write_wben.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_cblank_wr_callback(Object &&cb) { return m_write_cblank.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_slg_wr_callback(Object &&cb) { return m_write_slg.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_sld_wr_callback(Object &&cb) { return m_write_sld.set_callback(std::forward<Object>(cb)); }
+ auto int_callback() { return m_write_int.bind(); }
+ auto dmar_callback() { return m_write_dmar.bind(); }
+ auto vs_callback() { return m_write_vs.bind(); }
+ auto hs_callback() { return m_write_hs.bind(); }
+ auto vlt_callback() { return m_write_vlt.bind(); }
+ auto curs_callback() { return m_write_curs.bind(); }
+ auto drb_callback() { return m_write_drb.bind(); }
+ auto wben_callback() { return m_write_wben.bind(); }
+ auto cblank_callback() { return m_write_cblank.bind(); }
+ auto slg_callback() { return m_write_slg.bind(); }
+ auto sld_callback() { return m_write_sld.bind(); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
diff --git a/src/mame/drivers/tandy2k.cpp b/src/mame/drivers/tandy2k.cpp
index 2f76b848870..1f6c268c532 100644
--- a/src/mame/drivers/tandy2k.cpp
+++ b/src/mame/drivers/tandy2k.cpp
@@ -786,19 +786,19 @@ MACHINE_CONFIG_START(tandy2k_state::tandy2k)
MCFG_PALETTE_ADD_MONOCHROME("palette")
- MCFG_DEVICE_ADD(CRT9007_TAG, CRT9007, 16_MHz_XTAL * 28 / 20 / 8)
- MCFG_DEVICE_ADDRESS_MAP(0, vpac_mem)
- MCFG_CRT9007_CHARACTER_WIDTH(8)
- MCFG_CRT9007_INT_CALLBACK(WRITELINE(I8259A_1_TAG, pic8259_device, ir1_w))
- MCFG_CRT9007_VS_CALLBACK(WRITELINE(CRT9021B_TAG, crt9021_device, vsync_w))
- MCFG_CRT9007_VLT_CALLBACK(WRITELINE(*this, tandy2k_state, vpac_vlt_w))
- MCFG_CRT9007_CURS_CALLBACK(WRITELINE(CRT9021B_TAG, crt9021_device, cursor_w))
- MCFG_CRT9007_DRB_CALLBACK(WRITELINE(*this, tandy2k_state, vpac_drb_w))
- MCFG_CRT9007_WBEN_CALLBACK(WRITELINE(*this, tandy2k_state, vpac_wben_w))
- MCFG_CRT9007_CBLANK_CALLBACK(WRITELINE(*this, tandy2k_state, vpac_cblank_w))
- MCFG_CRT9007_SLG_CALLBACK(WRITELINE(*this, tandy2k_state, vpac_slg_w))
- MCFG_CRT9007_SLD_CALLBACK(WRITELINE(*this, tandy2k_state, vpac_sld_w))
- MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
+ crt9007_device &vpac(CRT9007(config, CRT9007_TAG, 16_MHz_XTAL * 28 / 20 / 8));
+ vpac.set_addrmap(0, &tandy2k_state::vpac_mem);
+ vpac.set_character_width(8);
+ vpac.int_callback().set(I8259A_1_TAG, FUNC(pic8259_device::ir1_w));
+ vpac.vs_callback().set(CRT9021B_TAG, FUNC(crt9021_device::vsync_w));
+ vpac.vlt_callback().set(FUNC(tandy2k_state::vpac_vlt_w));
+ vpac.curs_callback().set(CRT9021B_TAG, FUNC(crt9021_device::cursor_w));
+ vpac.drb_callback().set(FUNC(tandy2k_state::vpac_drb_w));
+ vpac.wben_callback().set(FUNC(tandy2k_state::vpac_wben_w));
+ vpac.cblank_callback().set(FUNC(tandy2k_state::vpac_cblank_w));
+ vpac.slg_callback().set(FUNC(tandy2k_state::vpac_slg_w));
+ vpac.sld_callback().set(FUNC(tandy2k_state::vpac_sld_w));
+ vpac.set_screen(SCREEN_TAG);
MCFG_DEVICE_ADD(CRT9212_0_TAG, CRT9212, 0)
MCFG_CRT9212_WEN2_VCC()