From ce12c84eadd8ee1886dc524916bc45ed9ee7fede Mon Sep 17 00:00:00 2001 From: mooglyguy Date: Thu, 6 Dec 2018 22:00:54 +0100 Subject: tms7000: Removed MCFG. [Ryan Holtz] --- src/devices/bus/coco/coco_ssc.cpp | 16 ++++++------- src/devices/cpu/tms7000/tms7000.h | 46 ++++++++++++------------------------- src/mame/drivers/cc40.cpp | 8 +++---- src/mame/drivers/exelv.cpp | 48 ++++++++++++++++++++------------------- src/mame/drivers/m24.cpp | 10 ++++---- src/mame/drivers/ti74.cpp | 20 ++++++++-------- 6 files changed, 67 insertions(+), 81 deletions(-) diff --git a/src/devices/bus/coco/coco_ssc.cpp b/src/devices/bus/coco/coco_ssc.cpp index 1b0abd7217d..8840df18835 100644 --- a/src/devices/bus/coco/coco_ssc.cpp +++ b/src/devices/bus/coco/coco_ssc.cpp @@ -108,7 +108,7 @@ namespace uint8_t m_tms7000_portc; uint8_t m_tms7000_portd; emu_timer *m_tms7000_busy_timer; - required_device m_tms7040; + required_device m_tms7040; required_device m_staticram; required_device m_ay; required_device m_spo; @@ -153,13 +153,13 @@ DEFINE_DEVICE_TYPE(COCOSSC_SAC, cocossc_sac_device, "cocossc_sac", "CoCo SSC Sou //************************************************************************** MACHINE_CONFIG_START(coco_ssc_device::device_add_mconfig) - MCFG_DEVICE_ADD(PIC_TAG, TMS7040, DERIVED_CLOCK(2, 1)) - MCFG_TMS7000_IN_PORTA_CB(READ8(*this, coco_ssc_device, ssc_port_a_r)) - MCFG_TMS7000_OUT_PORTB_CB(WRITE8(*this, coco_ssc_device, ssc_port_b_w)) - MCFG_TMS7000_IN_PORTC_CB(READ8(*this, coco_ssc_device, ssc_port_c_r)) - MCFG_TMS7000_OUT_PORTC_CB(WRITE8(*this, coco_ssc_device, ssc_port_c_w)) - MCFG_TMS7000_IN_PORTD_CB(READ8(*this, coco_ssc_device, ssc_port_d_r)) - MCFG_TMS7000_OUT_PORTD_CB(WRITE8(*this, coco_ssc_device, ssc_port_d_w)) + TMS7040(config, m_tms7040, DERIVED_CLOCK(2, 1)); + m_tms7040->in_porta().set(FUNC(coco_ssc_device::ssc_port_a_r)); + m_tms7040->out_portb().set(FUNC(coco_ssc_device::ssc_port_b_w)); + m_tms7040->in_portc().set(FUNC(coco_ssc_device::ssc_port_c_r)); + m_tms7040->out_portc().set(FUNC(coco_ssc_device::ssc_port_c_w)); + m_tms7040->in_portd().set(FUNC(coco_ssc_device::ssc_port_d_r)); + m_tms7040->out_portd().set(FUNC(coco_ssc_device::ssc_port_d_w)); RAM(config, "staticram").set_default_size("2K").set_default_value(0); diff --git a/src/devices/cpu/tms7000/tms7000.h b/src/devices/cpu/tms7000/tms7000.h index a1a50084b18..0d1d3b82490 100644 --- a/src/devices/cpu/tms7000/tms7000.h +++ b/src/devices/cpu/tms7000/tms7000.h @@ -13,34 +13,6 @@ #include "debugger.h" - -// read-only on 70x0 -#define MCFG_TMS7000_IN_PORTA_CB(_devcb) \ - downcast(*device).set_port_read_cb(0, DEVCB_##_devcb); -#define MCFG_TMS7000_OUT_PORTA_CB(_devcb) \ - downcast(*device).set_port_write_cb(0, DEVCB_##_devcb); - -// write-only -#define MCFG_TMS7000_OUT_PORTB_CB(_devcb) \ - downcast(*device).set_port_write_cb(1, DEVCB_##_devcb); - -#define MCFG_TMS7000_IN_PORTC_CB(_devcb) \ - downcast(*device).set_port_read_cb(2, DEVCB_##_devcb); -#define MCFG_TMS7000_OUT_PORTC_CB(_devcb) \ - downcast(*device).set_port_write_cb(2, DEVCB_##_devcb); - -#define MCFG_TMS7000_IN_PORTD_CB(_devcb) \ - downcast(*device).set_port_read_cb(3, DEVCB_##_devcb); -#define MCFG_TMS7000_OUT_PORTD_CB(_devcb) \ - downcast(*device).set_port_write_cb(3, DEVCB_##_devcb); - -// TMS70C46 only -#define MCFG_TMS7000_IN_PORTE_CB(_devcb) \ - downcast(*device).set_port_read_cb(4, DEVCB_##_devcb); -#define MCFG_TMS7000_OUT_PORTE_CB(_devcb) \ - downcast(*device).set_port_write_cb(4, DEVCB_##_devcb); - - enum { TMS7000_PC=1, TMS7000_SP, TMS7000_ST }; enum @@ -57,9 +29,21 @@ public: // construction/destruction tms7000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // configuration - template devcb_base &set_port_read_cb(int p, Object &&cb) { return m_port_in_cb[p].set_callback(std::forward(cb)); } - template devcb_base &set_port_write_cb(int p, Object &&cb) { return m_port_out_cb[p].set_callback(std::forward(cb)); } + // read-only on 70x0 + auto in_porta() { return m_port_in_cb[0].bind(); } + auto out_porta() { return m_port_out_cb[0].bind(); } + + // write-only + auto out_portb() { return m_port_out_cb[1].bind(); } + + auto in_portc() { return m_port_in_cb[2].bind(); } + auto out_portc() { return m_port_out_cb[2].bind(); } + auto in_portd() { return m_port_in_cb[3].bind(); } + auto out_portd() { return m_port_out_cb[3].bind(); } + + // TMS70C46 only + auto in_porte() { return m_port_in_cb[4].bind(); } + auto out_porte() { return m_port_out_cb[4].bind(); } DECLARE_READ8_MEMBER(tms7000_unmapped_rf_r) { if (!machine().side_effects_disabled()) logerror("'%s' (%04X): unmapped_rf_r @ $%04x\n", tag(), m_pc, offset + 0x80); return 0; }; DECLARE_WRITE8_MEMBER(tms7000_unmapped_rf_w) { logerror("'%s' (%04X): unmapped_rf_w @ $%04x = $%02x\n", tag(), m_pc, offset + 0x80, data); }; diff --git a/src/mame/drivers/cc40.cpp b/src/mame/drivers/cc40.cpp index b618b6f0550..c9a10c48f53 100644 --- a/src/mame/drivers/cc40.cpp +++ b/src/mame/drivers/cc40.cpp @@ -585,10 +585,10 @@ void cc40_state::machine_start() MACHINE_CONFIG_START(cc40_state::cc40) /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", TMS70C20, XTAL(5'000'000) / 2) - MCFG_DEVICE_PROGRAM_MAP(main_map) - MCFG_TMS7000_IN_PORTA_CB(READ8(*this, cc40_state, keyboard_r)) - MCFG_TMS7000_OUT_PORTB_CB(WRITE8(*this, cc40_state, keyboard_w)) + TMS70C20(config, m_maincpu, XTAL(5'000'000) / 2); + m_maincpu->set_addrmap(AS_PROGRAM, &cc40_state::main_map); + m_maincpu->in_porta().set(FUNC(cc40_state::keyboard_r)); + m_maincpu->out_portb().set(FUNC(cc40_state::keyboard_w)); NVRAM(config, "sysram.0", nvram_device::DEFAULT_ALL_0); NVRAM(config, "sysram.1", nvram_device::DEFAULT_ALL_0); diff --git a/src/mame/drivers/exelv.cpp b/src/mame/drivers/exelv.cpp index 2c3d425d1b0..3d6b7968cf6 100644 --- a/src/mame/drivers/exelv.cpp +++ b/src/mame/drivers/exelv.cpp @@ -76,6 +76,7 @@ public: exelv_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), + m_subcpu(*this, "subcpu"), m_tms3556(*this, "tms3556"), m_tms5220c(*this, "tms5220c"), m_cart(*this, "cartslot") @@ -85,7 +86,8 @@ public: void exl100(machine_config &config); private: - required_device m_maincpu; + required_device m_maincpu; + required_device m_subcpu; required_device m_tms3556; required_device m_tms5220c; optional_device m_cart; @@ -484,21 +486,21 @@ MACHINE_START_MEMBER( exelv_state, exeltel) MACHINE_CONFIG_START(exelv_state::exl100) /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", TMS7020_EXL, XTAL(4'915'200)) - MCFG_DEVICE_PROGRAM_MAP(tms7020_mem) - MCFG_TMS7000_IN_PORTA_CB(READ8(*this, exelv_state, tms7020_porta_r)) - MCFG_TMS7000_OUT_PORTB_CB(WRITE8(*this, exelv_state, tms7020_portb_w)) + TMS7020_EXL(config, m_maincpu, XTAL(4'915'200)); + m_maincpu->set_addrmap(AS_PROGRAM, &exelv_state::tms7020_mem); + m_maincpu->in_porta().set(FUNC(exelv_state::tms7020_porta_r)); + m_maincpu->out_portb().set(FUNC(exelv_state::tms7020_portb_w)); MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", exelv_state, exelv_hblank_interrupt, "screen", 0, 1) MCFG_MACHINE_START_OVERRIDE(exelv_state, exl100) - MCFG_DEVICE_ADD("tms7041", TMS7041, XTAL(4'915'200)) - MCFG_TMS7000_IN_PORTA_CB(READ8(*this, exelv_state, tms7041_porta_r)) - MCFG_TMS7000_OUT_PORTB_CB(WRITE8(*this, exelv_state, tms7041_portb_w)) - MCFG_TMS7000_IN_PORTC_CB(READ8(*this, exelv_state, tms7041_portc_r)) - MCFG_TMS7000_OUT_PORTC_CB(WRITE8(*this, exelv_state, tms7041_portc_w)) - MCFG_TMS7000_IN_PORTD_CB(READ8(*this, exelv_state, tms7041_portd_r)) - MCFG_TMS7000_OUT_PORTD_CB(WRITE8(*this, exelv_state, tms7041_portd_w)) + TMS7041(config, m_subcpu, XTAL(4'915'200)); + m_subcpu->in_porta().set(FUNC(exelv_state::tms7041_porta_r)); + m_subcpu->out_portb().set(FUNC(exelv_state::tms7041_portb_w)); + m_subcpu->in_portc().set(FUNC(exelv_state::tms7041_portc_r)); + m_subcpu->out_portc().set(FUNC(exelv_state::tms7041_portc_w)); + m_subcpu->in_portd().set(FUNC(exelv_state::tms7041_portd_r)); + m_subcpu->out_portd().set(FUNC(exelv_state::tms7041_portd_w)); MCFG_QUANTUM_PERFECT_CPU("maincpu") @@ -540,21 +542,21 @@ MACHINE_CONFIG_END MACHINE_CONFIG_START(exelv_state::exeltel) /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", TMS7040, XTAL(4'915'200)) - MCFG_DEVICE_PROGRAM_MAP(tms7040_mem) - MCFG_TMS7000_IN_PORTA_CB(READ8(*this, exelv_state, tms7020_porta_r)) - MCFG_TMS7000_OUT_PORTB_CB(WRITE8(*this, exelv_state, tms7020_portb_w)) + TMS7040(config, m_maincpu, XTAL(4'915'200)); + m_maincpu->set_addrmap(AS_PROGRAM, &exelv_state::tms7040_mem); + m_maincpu->in_porta().set(FUNC(exelv_state::tms7020_porta_r)); + m_maincpu->out_portb().set(FUNC(exelv_state::tms7020_portb_w)); MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", exelv_state, exelv_hblank_interrupt, "screen", 0, 1) MCFG_MACHINE_START_OVERRIDE(exelv_state, exeltel) - MCFG_DEVICE_ADD("tms7042", TMS7042, XTAL(4'915'200)) - MCFG_TMS7000_IN_PORTA_CB(READ8(*this, exelv_state, tms7041_porta_r)) - MCFG_TMS7000_OUT_PORTB_CB(WRITE8(*this, exelv_state, tms7041_portb_w)) - MCFG_TMS7000_IN_PORTC_CB(READ8(*this, exelv_state, tms7041_portc_r)) - MCFG_TMS7000_OUT_PORTC_CB(WRITE8(*this, exelv_state, tms7041_portc_w)) - MCFG_TMS7000_IN_PORTD_CB(READ8(*this, exelv_state, tms7041_portd_r)) - MCFG_TMS7000_OUT_PORTD_CB(WRITE8(*this, exelv_state, tms7041_portd_w)) + TMS7042(config, m_subcpu, XTAL(4'915'200)); + m_subcpu->in_porta().set(FUNC(exelv_state::tms7041_porta_r)); + m_subcpu->out_portb().set(FUNC(exelv_state::tms7041_portb_w)); + m_subcpu->in_portc().set(FUNC(exelv_state::tms7041_portc_r)); + m_subcpu->out_portc().set(FUNC(exelv_state::tms7041_portc_w)); + m_subcpu->in_portd().set(FUNC(exelv_state::tms7041_portd_r)); + m_subcpu->out_portd().set(FUNC(exelv_state::tms7041_portd_w)); MCFG_QUANTUM_PERFECT_CPU("maincpu") diff --git a/src/mame/drivers/m24.cpp b/src/mame/drivers/m24.cpp index 5b298ede92f..978599455e2 100644 --- a/src/mame/drivers/m24.cpp +++ b/src/mame/drivers/m24.cpp @@ -39,7 +39,7 @@ public: private: required_device m_maincpu; required_device m_mb; - required_device m_kbc; + required_device m_kbc; required_device m_keyboard; optional_device m_z8000_apb; @@ -278,10 +278,10 @@ MACHINE_CONFIG_START(m24_state::olivetti) /* internal ram */ RAM(config, RAM_TAG).set_default_size("640K").set_extra_options("64K, 128K, 256K, 512K"); - MCFG_DEVICE_ADD("kbc", TMS7000, XTAL(4'000'000)) - MCFG_DEVICE_PROGRAM_MAP(kbc_map) - MCFG_TMS7000_IN_PORTA_CB(READ8(*this, m24_state, pa_r)) - MCFG_TMS7000_OUT_PORTB_CB(WRITE8(*this, m24_state, pb_w)) + TMS7000(config, m_kbc, XTAL(4'000'000)); + m_kbc->set_addrmap(AS_PROGRAM, &m24_state::kbc_map); + m_kbc->in_porta().set(FUNC(m24_state::pa_r)); + m_kbc->out_portb().set(FUNC(m24_state::pb_w)); M24_KEYBOARD(config, m_keyboard, 0); m_keyboard->out_data_handler().set(FUNC(m24_state::kbcin_w)); diff --git a/src/mame/drivers/ti74.cpp b/src/mame/drivers/ti74.cpp index eb0af761923..8ed43e76aeb 100644 --- a/src/mame/drivers/ti74.cpp +++ b/src/mame/drivers/ti74.cpp @@ -520,11 +520,11 @@ void ti74_state::machine_start() MACHINE_CONFIG_START(ti74_state::ti74) /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", TMS70C46, XTAL(4'000'000)) - MCFG_DEVICE_PROGRAM_MAP(main_map) - MCFG_TMS7000_IN_PORTA_CB(READ8(*this, ti74_state, keyboard_r)) - MCFG_TMS7000_OUT_PORTB_CB(WRITE8(*this, ti74_state, bankswitch_w)) - MCFG_TMS7000_OUT_PORTE_CB(WRITE8(*this, ti74_state, keyboard_w)) + TMS70C46(config, m_maincpu, XTAL(4'000'000)); + m_maincpu->set_addrmap(AS_PROGRAM, &ti74_state::main_map); + m_maincpu->in_porta().set(FUNC(ti74_state::keyboard_r)); + m_maincpu->out_portb().set(FUNC(ti74_state::bankswitch_w)); + m_maincpu->out_porte().set(FUNC(ti74_state::keyboard_w)); NVRAM(config, "sysram.ic3", nvram_device::DEFAULT_ALL_0); @@ -556,11 +556,11 @@ MACHINE_CONFIG_END MACHINE_CONFIG_START(ti74_state::ti95) /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", TMS70C46, XTAL(4'000'000)) - MCFG_DEVICE_PROGRAM_MAP(main_map) - MCFG_TMS7000_IN_PORTA_CB(READ8(*this, ti74_state, keyboard_r)) - MCFG_TMS7000_OUT_PORTB_CB(WRITE8(*this, ti74_state, bankswitch_w)) - MCFG_TMS7000_OUT_PORTE_CB(WRITE8(*this, ti74_state, keyboard_w)) + TMS70C46(config, m_maincpu, XTAL(4'000'000)); + m_maincpu->set_addrmap(AS_PROGRAM, &ti74_state::main_map); + m_maincpu->in_porta().set(FUNC(ti74_state::keyboard_r)); + m_maincpu->out_portb().set(FUNC(ti74_state::bankswitch_w)); + m_maincpu->out_porte().set(FUNC(ti74_state::keyboard_w)); NVRAM(config, "sysram.ic3", nvram_device::DEFAULT_ALL_0); -- cgit v1.2.3