From dc59de33518d47c5533ec6f158b04665cd2b4183 Mon Sep 17 00:00:00 2001 From: Michael Zapf Date: Tue, 21 Aug 2018 12:37:55 +0200 Subject: [PATCH] ti99: Simplified GROM declaration. (nw) --- src/devices/bus/ti99/gromport/cartridges.cpp | 32 ++---- src/devices/bus/ti99/peb/pcode.cpp | 6 +- src/devices/machine/tmc0430.h | 6 + src/mame/drivers/ti99_4x.cpp | 14 +-- src/mame/drivers/ti99_8.cpp | 110 ++++--------------- 5 files changed, 41 insertions(+), 127 deletions(-) diff --git a/src/devices/bus/ti99/gromport/cartridges.cpp b/src/devices/bus/ti99/gromport/cartridges.cpp index 8e3d56369bc..e116d00b6e9 100644 --- a/src/devices/bus/ti99/gromport/cartridges.cpp +++ b/src/devices/bus/ti99/gromport/cartridges.cpp @@ -399,30 +399,14 @@ void ti99_cartridge_device::device_config_complete() /* 5 GROMs that may be contained in a cartridge */ -MACHINE_CONFIG_START(ti99_cartridge_device::device_add_mconfig) - - tmc0430_device& grom3(TMC0430(config, GROM3_TAG, 0)); - grom3.ready_cb().set(FUNC(ti99_cartridge_device::ready_line)); - grom3.set_region_and_ident(CARTGROM_TAG, 0x0000, 3); - - tmc0430_device& grom4(TMC0430(config, GROM4_TAG, 0)); - grom4.ready_cb().set(FUNC(ti99_cartridge_device::ready_line)); - grom4.set_region_and_ident(CARTGROM_TAG, 0x2000, 4); - - tmc0430_device& grom5(TMC0430(config, GROM5_TAG, 0)); - grom5.ready_cb().set(FUNC(ti99_cartridge_device::ready_line)); - grom5.set_region_and_ident(CARTGROM_TAG, 0x4000, 5); - - tmc0430_device& grom6(TMC0430(config, GROM6_TAG, 0)); - grom6.ready_cb().set(FUNC(ti99_cartridge_device::ready_line)); - grom6.set_region_and_ident(CARTGROM_TAG, 0x6000, 6); - - tmc0430_device& grom7(TMC0430(config, GROM7_TAG, 0)); - grom7.ready_cb().set(FUNC(ti99_cartridge_device::ready_line)); - grom7.set_region_and_ident(CARTGROM_TAG, 0x8000, 7); - -MACHINE_CONFIG_END - +void ti99_cartridge_device::device_add_mconfig(machine_config& config) +{ + TMC0430(config, GROM3_TAG, CARTGROM_TAG, 0x0000, 3).ready_cb().set(FUNC(ti99_cartridge_device::ready_line)); + TMC0430(config, GROM4_TAG, CARTGROM_TAG, 0x2000, 4).ready_cb().set(FUNC(ti99_cartridge_device::ready_line)); + TMC0430(config, GROM5_TAG, CARTGROM_TAG, 0x4000, 5).ready_cb().set(FUNC(ti99_cartridge_device::ready_line)); + TMC0430(config, GROM6_TAG, CARTGROM_TAG, 0x6000, 6).ready_cb().set(FUNC(ti99_cartridge_device::ready_line)); + TMC0430(config, GROM7_TAG, CARTGROM_TAG, 0x8000, 7).ready_cb().set(FUNC(ti99_cartridge_device::ready_line)); +} /* Memory area for one cartridge. For most cartridges we only need 8 KiB for diff --git a/src/devices/bus/ti99/peb/pcode.cpp b/src/devices/bus/ti99/peb/pcode.cpp index bdf268013f9..f0a24ad1646 100644 --- a/src/devices/bus/ti99/peb/pcode.cpp +++ b/src/devices/bus/ti99/peb/pcode.cpp @@ -349,11 +349,7 @@ ROM_END void ti_pcode_card_device::device_add_mconfig(machine_config &config) { for (unsigned i = 0; m_groms.size() > i; ++i) - { - TMC0430(config, m_groms[i], 0); - m_groms[i]->ready_cb().set(FUNC(ti_pcode_card_device::ready_line)); - m_groms[i]->set_region_and_ident(PCODE_GROM_TAG, 0x2000 * i, i); - } + TMC0430(config, m_groms[i], PCODE_GROM_TAG, 0x2000 * i, i).ready_cb().set(FUNC(ti_pcode_card_device::ready_line)); LS259(config, m_crulatch); // U12 m_crulatch->q_out_cb<0>().set(FUNC(ti_pcode_card_device::pcpage_w)); diff --git a/src/devices/machine/tmc0430.h b/src/devices/machine/tmc0430.h index dbbf1757f46..39f0a805d1d 100644 --- a/src/devices/machine/tmc0430.h +++ b/src/devices/machine/tmc0430.h @@ -26,6 +26,12 @@ enum class tmc0430_device : public device_t { public: + tmc0430_device(const machine_config &mconfig, const char *tag, device_t *owner, const char *regionname, int offset, int ident) + : tmc0430_device(mconfig, tag, owner, 0) + { + set_region_and_ident(regionname, offset, ident); + } + tmc0430_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); auto ready_cb() { return m_gromready.bind(); } diff --git a/src/mame/drivers/ti99_4x.cpp b/src/mame/drivers/ti99_4x.cpp index b1aa21d0af1..6d951a9fa7a 100644 --- a/src/mame/drivers/ti99_4x.cpp +++ b/src/mame/drivers/ti99_4x.cpp @@ -902,17 +902,9 @@ void ti99_4x_state::ti99_4_common(machine_config& config) CASSETTE(config, "cassette2", 0); // GROM devices - tmc0430_device& grom0(TMC0430(config, TI99_GROM0_TAG, 0)); - grom0.ready_cb().set(FUNC(ti99_4x_state::console_ready_grom)); - grom0.set_region_and_ident(TI99_CONSOLEGROM, 0x0000, 0); - - tmc0430_device& grom1(TMC0430(config, TI99_GROM1_TAG, 0)); - grom1.ready_cb().set(FUNC(ti99_4x_state::console_ready_grom)); - grom1.set_region_and_ident(TI99_CONSOLEGROM, 0x2000, 1); - - tmc0430_device& grom2(TMC0430(config, TI99_GROM2_TAG, 0)); - grom2.ready_cb().set(FUNC(ti99_4x_state::console_ready_grom)); - grom2.set_region_and_ident(TI99_CONSOLEGROM, 0x4000, 2); + TMC0430(config, TI99_GROM0_TAG, TI99_CONSOLEGROM, 0x0000, 0).ready_cb().set(FUNC(ti99_4x_state::console_ready_grom)); + TMC0430(config, TI99_GROM1_TAG, TI99_CONSOLEGROM, 0x2000, 1).ready_cb().set(FUNC(ti99_4x_state::console_ready_grom)); + TMC0430(config, TI99_GROM2_TAG, TI99_CONSOLEGROM, 0x4000, 2).ready_cb().set(FUNC(ti99_4x_state::console_ready_grom)); } /********************************************************************** diff --git a/src/mame/drivers/ti99_8.cpp b/src/mame/drivers/ti99_8.cpp index 1a27469c2e2..2ef36476e1a 100644 --- a/src/mame/drivers/ti99_8.cpp +++ b/src/mame/drivers/ti99_8.cpp @@ -808,96 +808,32 @@ void ti99_8_state::ti99_8(machine_config& config) CASSETTE(config, "cassette", 0).add_route(ALL_OUTPUTS, "cass_out", 0.25);; // GROM library - tmc0430_device& sgrom0(TMC0430(config, TI998_SYSGROM0_TAG, 0)); - sgrom0.ready_cb().set(TI998_MAINBOARD_TAG, FUNC(bus::ti99::internal::mainboard8_device::system_grom_ready)); - sgrom0.set_region_and_ident(TI998_SYSGROM_REG, 0x0000, 0); + using namespace bus::ti99::internal; + TMC0430(config, TI998_SYSGROM0_TAG, TI998_SYSGROM_REG, 0x0000, 0).ready_cb().set(TI998_MAINBOARD_TAG, FUNC(mainboard8_device::system_grom_ready)); + TMC0430(config, TI998_SYSGROM1_TAG, TI998_SYSGROM_REG, 0x2000, 1).ready_cb().set(TI998_MAINBOARD_TAG, FUNC(mainboard8_device::system_grom_ready)); + TMC0430(config, TI998_SYSGROM2_TAG, TI998_SYSGROM_REG, 0x4000, 2).ready_cb().set(TI998_MAINBOARD_TAG, FUNC(mainboard8_device::system_grom_ready)); - tmc0430_device& sgrom1(TMC0430(config, TI998_SYSGROM1_TAG, 0)); - sgrom1.ready_cb().set(TI998_MAINBOARD_TAG, FUNC(bus::ti99::internal::mainboard8_device::system_grom_ready)); - sgrom1.set_region_and_ident(TI998_SYSGROM_REG, 0x2000, 1); + TMC0430(config, TI998_GLIB10_TAG, TI998_GROMLIB1_REG, 0x0000, 0).ready_cb().set(TI998_MAINBOARD_TAG, FUNC(mainboard8_device::ptts_grom_ready)); + TMC0430(config, TI998_GLIB11_TAG, TI998_GROMLIB1_REG, 0x2000, 1).ready_cb().set(TI998_MAINBOARD_TAG, FUNC(mainboard8_device::ptts_grom_ready)); + TMC0430(config, TI998_GLIB12_TAG, TI998_GROMLIB1_REG, 0x4000, 2).ready_cb().set(TI998_MAINBOARD_TAG, FUNC(mainboard8_device::ptts_grom_ready)); + TMC0430(config, TI998_GLIB13_TAG, TI998_GROMLIB1_REG, 0x6000, 3).ready_cb().set(TI998_MAINBOARD_TAG, FUNC(mainboard8_device::ptts_grom_ready)); + TMC0430(config, TI998_GLIB14_TAG, TI998_GROMLIB1_REG, 0x8000, 4).ready_cb().set(TI998_MAINBOARD_TAG, FUNC(mainboard8_device::ptts_grom_ready)); + TMC0430(config, TI998_GLIB15_TAG, TI998_GROMLIB1_REG, 0xa000, 5).ready_cb().set(TI998_MAINBOARD_TAG, FUNC(mainboard8_device::ptts_grom_ready)); + TMC0430(config, TI998_GLIB16_TAG, TI998_GROMLIB1_REG, 0xc000, 6).ready_cb().set(TI998_MAINBOARD_TAG, FUNC(mainboard8_device::ptts_grom_ready)); + TMC0430(config, TI998_GLIB17_TAG, TI998_GROMLIB1_REG, 0xe000, 7).ready_cb().set(TI998_MAINBOARD_TAG, FUNC(mainboard8_device::ptts_grom_ready)); - tmc0430_device& sgrom2(TMC0430(config, TI998_SYSGROM2_TAG, 0)); - sgrom2.ready_cb().set(TI998_MAINBOARD_TAG, FUNC(bus::ti99::internal::mainboard8_device::system_grom_ready)); - sgrom2.set_region_and_ident(TI998_SYSGROM_REG, 0x4000, 2); + TMC0430(config, TI998_GLIB20_TAG, TI998_GROMLIB2_REG, 0x0000, 0).ready_cb().set(TI998_MAINBOARD_TAG, FUNC(mainboard8_device::p8_grom_ready)); + TMC0430(config, TI998_GLIB21_TAG, TI998_GROMLIB2_REG, 0x2000, 1).ready_cb().set(TI998_MAINBOARD_TAG, FUNC(mainboard8_device::p8_grom_ready)); + TMC0430(config, TI998_GLIB22_TAG, TI998_GROMLIB2_REG, 0x4000, 2).ready_cb().set(TI998_MAINBOARD_TAG, FUNC(mainboard8_device::p8_grom_ready)); + TMC0430(config, TI998_GLIB23_TAG, TI998_GROMLIB2_REG, 0x6000, 3).ready_cb().set(TI998_MAINBOARD_TAG, FUNC(mainboard8_device::p8_grom_ready)); + TMC0430(config, TI998_GLIB24_TAG, TI998_GROMLIB2_REG, 0x8000, 4).ready_cb().set(TI998_MAINBOARD_TAG, FUNC(mainboard8_device::p8_grom_ready)); + TMC0430(config, TI998_GLIB25_TAG, TI998_GROMLIB2_REG, 0xa000, 5).ready_cb().set(TI998_MAINBOARD_TAG, FUNC(mainboard8_device::p8_grom_ready)); + TMC0430(config, TI998_GLIB26_TAG, TI998_GROMLIB2_REG, 0xc000, 6).ready_cb().set(TI998_MAINBOARD_TAG, FUNC(mainboard8_device::p8_grom_ready)); + TMC0430(config, TI998_GLIB27_TAG, TI998_GROMLIB2_REG, 0xe000, 7).ready_cb().set(TI998_MAINBOARD_TAG, FUNC(mainboard8_device::p8_grom_ready)); - - tmc0430_device& tgrom0(TMC0430(config, TI998_GLIB10_TAG, 0)); - tgrom0.ready_cb().set(TI998_MAINBOARD_TAG, FUNC(bus::ti99::internal::mainboard8_device::ptts_grom_ready)); - tgrom0.set_region_and_ident(TI998_GROMLIB1_REG, 0x0000, 0); - - tmc0430_device& tgrom1(TMC0430(config, TI998_GLIB11_TAG, 0)); - tgrom1.ready_cb().set(TI998_MAINBOARD_TAG, FUNC(bus::ti99::internal::mainboard8_device::ptts_grom_ready)); - tgrom1.set_region_and_ident(TI998_GROMLIB1_REG, 0x2000, 1); - - tmc0430_device& tgrom2(TMC0430(config, TI998_GLIB12_TAG, 0)); - tgrom2.ready_cb().set(TI998_MAINBOARD_TAG, FUNC(bus::ti99::internal::mainboard8_device::ptts_grom_ready)); - tgrom2.set_region_and_ident(TI998_GROMLIB1_REG, 0x4000, 2); - - tmc0430_device& tgrom3(TMC0430(config, TI998_GLIB13_TAG, 0)); - tgrom3.ready_cb().set(TI998_MAINBOARD_TAG, FUNC(bus::ti99::internal::mainboard8_device::ptts_grom_ready)); - tgrom3.set_region_and_ident(TI998_GROMLIB1_REG, 0x6000, 3); - - tmc0430_device& tgrom4(TMC0430(config, TI998_GLIB14_TAG, 0)); - tgrom4.ready_cb().set(TI998_MAINBOARD_TAG, FUNC(bus::ti99::internal::mainboard8_device::ptts_grom_ready)); - tgrom4.set_region_and_ident(TI998_GROMLIB1_REG, 0x8000, 4); - - tmc0430_device& tgrom5(TMC0430(config, TI998_GLIB15_TAG, 0)); - tgrom5.ready_cb().set(TI998_MAINBOARD_TAG, FUNC(bus::ti99::internal::mainboard8_device::ptts_grom_ready)); - tgrom5.set_region_and_ident(TI998_GROMLIB1_REG, 0xa000, 5); - - tmc0430_device& tgrom6(TMC0430(config, TI998_GLIB16_TAG, 0)); - tgrom6.ready_cb().set(TI998_MAINBOARD_TAG, FUNC(bus::ti99::internal::mainboard8_device::ptts_grom_ready)); - tgrom6.set_region_and_ident(TI998_GROMLIB1_REG, 0xc000, 6); - - tmc0430_device& tgrom7(TMC0430(config, TI998_GLIB17_TAG, 0)); - tgrom7.ready_cb().set(TI998_MAINBOARD_TAG, FUNC(bus::ti99::internal::mainboard8_device::ptts_grom_ready)); - tgrom7.set_region_and_ident(TI998_GROMLIB1_REG, 0xe000, 7); - - - tmc0430_device& p8grom0(TMC0430(config, TI998_GLIB20_TAG, 0)); - p8grom0.ready_cb().set(TI998_MAINBOARD_TAG, FUNC(bus::ti99::internal::mainboard8_device::p8_grom_ready)); - p8grom0.set_region_and_ident(TI998_GROMLIB2_REG, 0x0000, 0); - - tmc0430_device& p8grom1(TMC0430(config, TI998_GLIB21_TAG, 0)); - p8grom1.ready_cb().set(TI998_MAINBOARD_TAG, FUNC(bus::ti99::internal::mainboard8_device::p8_grom_ready)); - p8grom1.set_region_and_ident(TI998_GROMLIB2_REG, 0x2000, 1); - - tmc0430_device& p8grom2(TMC0430(config, TI998_GLIB22_TAG, 0)); - p8grom2.ready_cb().set(TI998_MAINBOARD_TAG, FUNC(bus::ti99::internal::mainboard8_device::p8_grom_ready)); - p8grom2.set_region_and_ident(TI998_GROMLIB2_REG, 0x4000, 2); - - tmc0430_device& p8grom3(TMC0430(config, TI998_GLIB23_TAG, 0)); - p8grom3.ready_cb().set(TI998_MAINBOARD_TAG, FUNC(bus::ti99::internal::mainboard8_device::p8_grom_ready)); - p8grom3.set_region_and_ident(TI998_GROMLIB2_REG, 0x6000, 3); - - tmc0430_device& p8grom4(TMC0430(config, TI998_GLIB24_TAG, 0)); - p8grom4.ready_cb().set(TI998_MAINBOARD_TAG, FUNC(bus::ti99::internal::mainboard8_device::p8_grom_ready)); - p8grom4.set_region_and_ident(TI998_GROMLIB2_REG, 0x8000, 4); - - tmc0430_device& p8grom5(TMC0430(config, TI998_GLIB25_TAG, 0)); - p8grom5.ready_cb().set(TI998_MAINBOARD_TAG, FUNC(bus::ti99::internal::mainboard8_device::p8_grom_ready)); - p8grom5.set_region_and_ident(TI998_GROMLIB2_REG, 0xa000, 5); - - tmc0430_device& p8grom6(TMC0430(config, TI998_GLIB26_TAG, 0)); - p8grom6.ready_cb().set(TI998_MAINBOARD_TAG, FUNC(bus::ti99::internal::mainboard8_device::p8_grom_ready)); - p8grom6.set_region_and_ident(TI998_GROMLIB2_REG, 0xc000, 6); - - tmc0430_device& p8grom7(TMC0430(config, TI998_GLIB27_TAG, 0)); - p8grom7.ready_cb().set(TI998_MAINBOARD_TAG, FUNC(bus::ti99::internal::mainboard8_device::p8_grom_ready)); - p8grom7.set_region_and_ident(TI998_GROMLIB2_REG, 0xe000, 7); - - - tmc0430_device& p3grom0(TMC0430(config, TI998_GLIB30_TAG, 0)); - p3grom0.ready_cb().set(TI998_MAINBOARD_TAG, FUNC(bus::ti99::internal::mainboard8_device::p3_grom_ready)); - p3grom0.set_region_and_ident(TI998_GROMLIB3_REG, 0x0000, 0); - - tmc0430_device& p3grom1(TMC0430(config, TI998_GLIB31_TAG, 0)); - p3grom1.ready_cb().set(TI998_MAINBOARD_TAG, FUNC(bus::ti99::internal::mainboard8_device::p3_grom_ready)); - p3grom1.set_region_and_ident(TI998_GROMLIB3_REG, 0x2000, 1); - - tmc0430_device& p3grom2(TMC0430(config, TI998_GLIB32_TAG, 0)); - p3grom2.ready_cb().set(TI998_MAINBOARD_TAG, FUNC(bus::ti99::internal::mainboard8_device::p3_grom_ready)); - p3grom2.set_region_and_ident(TI998_GROMLIB3_REG, 0x4000, 2); + TMC0430(config, TI998_GLIB30_TAG, TI998_GROMLIB3_REG, 0x0000, 0).ready_cb().set(TI998_MAINBOARD_TAG, FUNC(mainboard8_device::p3_grom_ready)); + TMC0430(config, TI998_GLIB31_TAG, TI998_GROMLIB3_REG, 0x2000, 1).ready_cb().set(TI998_MAINBOARD_TAG, FUNC(mainboard8_device::p3_grom_ready)); + TMC0430(config, TI998_GLIB32_TAG, TI998_GROMLIB3_REG, 0x4000, 2).ready_cb().set(TI998_MAINBOARD_TAG, FUNC(mainboard8_device::p3_grom_ready)); // Joystick port TI99_JOYPORT(config, m_joyport, 0, ti99_joyport_options_mouse, "twinjoy");