From 484aef76978e09b0b1a6bf7ac18e4734824ab025 Mon Sep 17 00:00:00 2001 From: AJR Date: Fri, 12 Oct 2018 10:28:02 -0400 Subject: crt9007: Convert callbacks to devcb3 and remove MCFG_ macros (nw) --- src/devices/video/crt9007.cpp | 3 +- src/devices/video/crt9007.h | 66 ++++++++----------------------------------- src/mame/drivers/tandy2k.cpp | 26 ++++++++--------- 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 @@ -37,48 +37,6 @@ -//************************************************************************** -// INTERFACE CONFIGURATION MACROS -//************************************************************************** - -#define MCFG_CRT9007_CHARACTER_WIDTH(_value) \ - downcast(*device).config_set_character_width(_value); - -#define MCFG_CRT9007_INT_CALLBACK(_write) \ - downcast(*device).set_int_wr_callback(DEVCB_##_write); - -#define MCFG_CRT9007_DMAR_CALLBACK(_write) \ - downcast(*device).set_dmar_wr_callback(DEVCB_##_write); - -#define MCFG_CRT9007_VS_CALLBACK(_write) \ - downcast(*device).set_vs_wr_callback(DEVCB_##_write); - -#define MCFG_CRT9007_HS_CALLBACK(_write) \ - downcast(*device).set_hs_wr_callback(DEVCB_##_write); - -#define MCFG_CRT9007_VLT_CALLBACK(_write) \ - downcast(*device).set_vlt_wr_callback(DEVCB_##_write); - -#define MCFG_CRT9007_CURS_CALLBACK(_write) \ - downcast(*device).set_curs_wr_callback(DEVCB_##_write); - -#define MCFG_CRT9007_DRB_CALLBACK(_write) \ - downcast(*device).set_drb_wr_callback(DEVCB_##_write); - -#define MCFG_CRT9007_WBEN_CALLBACK(_write) \ - downcast(*device).set_wben_wr_callback(DEVCB_##_write); - -#define MCFG_CRT9007_CBLANK_CALLBACK(_write) \ - downcast(*device).set_cblank_wr_callback(DEVCB_##_write); - -#define MCFG_CRT9007_SLG_CALLBACK(_write) \ - downcast(*device).set_slg_wr_callback(DEVCB_##_write); - -#define MCFG_CRT9007_SLD_CALLBACK(_write) \ - downcast(*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 devcb_base &set_int_wr_callback(Object &&cb) { return m_write_int.set_callback(std::forward(cb)); } - template devcb_base &set_dmar_wr_callback(Object &&cb) { return m_write_dmar.set_callback(std::forward(cb)); } - template devcb_base &set_vs_wr_callback(Object &&cb) { return m_write_vs.set_callback(std::forward(cb)); } - template devcb_base &set_hs_wr_callback(Object &&cb) { return m_write_hs.set_callback(std::forward(cb)); } - template devcb_base &set_vlt_wr_callback(Object &&cb) { return m_write_vlt.set_callback(std::forward(cb)); } - template devcb_base &set_curs_wr_callback(Object &&cb) { return m_write_curs.set_callback(std::forward(cb)); } - template devcb_base &set_drb_wr_callback(Object &&cb) { return m_write_drb.set_callback(std::forward(cb)); } - template devcb_base &set_wben_wr_callback(Object &&cb) { return m_write_wben.set_callback(std::forward(cb)); } - template devcb_base &set_cblank_wr_callback(Object &&cb) { return m_write_cblank.set_callback(std::forward(cb)); } - template devcb_base &set_slg_wr_callback(Object &&cb) { return m_write_slg.set_callback(std::forward(cb)); } - template devcb_base &set_sld_wr_callback(Object &&cb) { return m_write_sld.set_callback(std::forward(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() -- cgit v1.2.3