diff options
Diffstat (limited to 'src/mame/drivers/chessmst.cpp')
-rw-r--r-- | src/mame/drivers/chessmst.cpp | 121 |
1 files changed, 59 insertions, 62 deletions
diff --git a/src/mame/drivers/chessmst.cpp b/src/mame/drivers/chessmst.cpp index 5b8669f7782..0e29d45d49f 100644 --- a/src/mame/drivers/chessmst.cpp +++ b/src/mame/drivers/chessmst.cpp @@ -30,16 +30,16 @@ class chessmst_state : public driver_device { public: - chessmst_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) - , m_maincpu(*this, "maincpu") - , m_pia2(*this, "z80pio2") - , m_speaker(*this, "speaker") - , m_beeper(*this, "beeper") - , m_extra(*this, "EXTRA") - , m_buttons(*this, "BUTTONS") - , m_digits(*this, "digit%u", 0U) - , m_leds(*this, "led_%c%u", unsigned('a'), 1U) + chessmst_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_pio(*this, "z80pio%u", 0), + m_speaker(*this, "speaker"), + m_beeper(*this, "beeper"), + m_extra(*this, "EXTRA"), + m_buttons(*this, "BUTTONS"), + m_digits(*this, "digit%u", 0U), + m_leds(*this, "led_%c%u", unsigned('a'), 1U) { } DECLARE_INPUT_CHANGED_MEMBER(chessmst_sensor); @@ -71,7 +71,7 @@ private: void update_display(); required_device<z80_device> m_maincpu; - required_device<z80pio_device> m_pia2; + required_device_array<z80pio_device, 2> m_pio; optional_device<speaker_sound_device> m_speaker; optional_device<beep_device> m_beeper; required_ioport m_extra; @@ -109,8 +109,8 @@ void chessmst_state::chessmst_io(address_map &map) map.unmap_value_high(); map.global_mask(0xff); //AM_RANGE(0x00, 0x03) AM_MIRROR(0xf0) read/write in both, not used by the software - map(0x04, 0x07).mirror(0xf0).rw("z80pio1", FUNC(z80pio_device::read), FUNC(z80pio_device::write)); - map(0x08, 0x0b).mirror(0xf0).rw(m_pia2, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0x04, 0x07).mirror(0xf0).rw(m_pio[0], FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0x08, 0x0b).mirror(0xf0).rw(m_pio[1], FUNC(z80pio_device::read), FUNC(z80pio_device::write)); } void chessmst_state::chessmstdm_io(address_map &map) @@ -121,8 +121,8 @@ void chessmst_state::chessmstdm_io(address_map &map) WRITE_LINE_MEMBER( chessmst_state::timer_555_w ) { - m_pia2->strobe_b(state); - m_pia2->data_b_write(m_matrix); + m_pio[1]->strobe_b(state); + m_pio[1]->data_b_write(m_matrix); } INPUT_CHANGED_MEMBER(chessmst_state::reset_button) @@ -237,7 +237,7 @@ static INPUT_PORTS_START( chessmst ) PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("New Game [0]") PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_ENTER) PORT_START("EXTRA") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Halt") PORT_CODE(KEYCODE_F2) PORT_WRITE_LINE_DEVICE_MEMBER("z80pio1", z80pio_device, strobe_a) // -> PIO(1) ASTB pin + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Halt") PORT_CODE(KEYCODE_F2) PORT_WRITE_LINE_DEVICE_MEMBER("z80pio0", z80pio_device, strobe_a) // -> PIO(0) ASTB pin PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Reset") PORT_CODE(KEYCODE_F1) PORT_CHANGED_MEMBER(DEVICE_SELF, chessmst_state, reset_button, 0) // -> Z80 RESET pin INPUT_PORTS_END @@ -368,97 +368,94 @@ WRITE8_MEMBER( chessmst_state::pio2_port_b_w ) static const z80_daisy_config chessmst_daisy_chain[] = { - { "z80pio1" }, + { "z80pio0" }, { nullptr } }; static const z80_daisy_config chessmstdm_daisy_chain[] = { - { "z80pio2" }, + { "z80pio1" }, { nullptr } }; -MACHINE_CONFIG_START(chessmst_state::chessmst) - +void chessmst_state::chessmst(machine_config &config) +{ /* basic machine hardware */ - Z80(config, m_maincpu, 9.8304_MHz_XTAL/4); // U880 Z80 clone + Z80(config, m_maincpu, 9.8304_MHz_XTAL/4); // UB880 Z80 clone m_maincpu->set_addrmap(AS_PROGRAM, &chessmst_state::chessmst_mem); m_maincpu->set_addrmap(AS_IO, &chessmst_state::chessmst_io); m_maincpu->set_daisy_config(chessmst_daisy_chain); - z80pio_device& pio1(Z80PIO(config, "z80pio1", 9.8304_MHz_XTAL/4)); - pio1.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); - pio1.out_pa_callback().set(FUNC(chessmst_state::pio1_port_a_w)); - pio1.out_pb_callback().set(FUNC(chessmst_state::pio1_port_b_w)); + Z80PIO(config, m_pio[0], 9.8304_MHz_XTAL/4); + m_pio[0]->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + m_pio[0]->out_pa_callback().set(FUNC(chessmst_state::pio1_port_a_w)); + m_pio[0]->out_pb_callback().set(FUNC(chessmst_state::pio1_port_b_w)); - Z80PIO(config, m_pia2, 9.8304_MHz_XTAL/4); - m_pia2->in_pa_callback().set(FUNC(chessmst_state::pio2_port_a_r)); - m_pia2->out_pb_callback().set(FUNC(chessmst_state::pio2_port_b_w)); + Z80PIO(config, m_pio[1], 9.8304_MHz_XTAL/4); + m_pio[1]->in_pa_callback().set(FUNC(chessmst_state::pio2_port_a_r)); + m_pio[1]->out_pb_callback().set(FUNC(chessmst_state::pio2_port_b_w)); config.set_default_layout(layout_chessmst); /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(chessmst_state::chessmsta) + SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50); +} +void chessmst_state::chessmsta(machine_config &config) +{ /* basic machine hardware */ - Z80(config, m_maincpu, 8_MHz_XTAL/4); // U880 Z80 clone + Z80(config, m_maincpu, 8_MHz_XTAL/2); // UA880 Z80 clone m_maincpu->set_addrmap(AS_PROGRAM, &chessmst_state::chessmst_mem); m_maincpu->set_addrmap(AS_IO, &chessmst_state::chessmst_io); m_maincpu->set_daisy_config(chessmst_daisy_chain); - z80pio_device& pio1(Z80PIO(config, "z80pio1", 8_MHz_XTAL/4)); - pio1.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); - pio1.out_pa_callback().set(FUNC(chessmst_state::pio1_port_a_w)); - pio1.out_pb_callback().set(FUNC(chessmst_state::pio1_port_b_w)); + Z80PIO(config, m_pio[0], 8_MHz_XTAL/2); + m_pio[0]->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + m_pio[0]->out_pa_callback().set(FUNC(chessmst_state::pio1_port_a_w)); + m_pio[0]->out_pb_callback().set(FUNC(chessmst_state::pio1_port_b_w)); - Z80PIO(config, m_pia2, 8_MHz_XTAL/4); - m_pia2->in_pa_callback().set(FUNC(chessmst_state::pio2_port_a_r)); - m_pia2->out_pb_callback().set(FUNC(chessmst_state::pio2_port_b_w)); + Z80PIO(config, m_pio[1], 8_MHz_XTAL/2); + m_pio[1]->in_pa_callback().set(FUNC(chessmst_state::pio2_port_a_r)); + m_pio[1]->out_pb_callback().set(FUNC(chessmst_state::pio2_port_b_w)); config.set_default_layout(layout_chessmst); /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(chessmst_state::chessmstdm) + SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50); +} +void chessmst_state::chessmstdm(machine_config &config) +{ /* basic machine hardware */ - Z80(config, m_maincpu, 8_MHz_XTAL/2); // U880 Z80 clone + Z80(config, m_maincpu, 8_MHz_XTAL/2); // UA880 Z80 clone m_maincpu->set_addrmap(AS_PROGRAM, &chessmst_state::chessmstdm_mem); m_maincpu->set_addrmap(AS_IO, &chessmst_state::chessmstdm_io); m_maincpu->set_daisy_config(chessmstdm_daisy_chain); - z80pio_device& pio1(Z80PIO(config, "z80pio1", 8_MHz_XTAL/4)); - pio1.out_pa_callback().set(FUNC(chessmst_state::pio1_port_a_w)); - pio1.out_pb_callback().set(FUNC(chessmst_state::pio1_port_b_dm_w)); - pio1.in_pb_callback().set_ioport("EXTRA"); + Z80PIO(config, m_pio[0], 8_MHz_XTAL/2); + m_pio[0]->out_pa_callback().set(FUNC(chessmst_state::pio1_port_a_w)); + m_pio[0]->out_pb_callback().set(FUNC(chessmst_state::pio1_port_b_dm_w)); + m_pio[0]->in_pb_callback().set_ioport("EXTRA"); - Z80PIO(config, m_pia2, 8_MHz_XTAL/4); - m_pia2->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); - m_pia2->in_pa_callback().set(FUNC(chessmst_state::pio2_port_a_r)); - m_pia2->out_pb_callback().set(FUNC(chessmst_state::pio2_port_b_w)); + Z80PIO(config, m_pio[1], 8_MHz_XTAL/2); + m_pio[1]->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + m_pio[1]->in_pa_callback().set(FUNC(chessmst_state::pio2_port_a_r)); + m_pio[1]->out_pb_callback().set(FUNC(chessmst_state::pio2_port_b_w)); config.set_default_layout(layout_chessmstdm); - MCFG_DEVICE_ADD("555_timer", CLOCK, 500) // from 555 timer - MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, chessmst_state, timer_555_w)) + clock_device &_555_timer(CLOCK(config, "555_timer", 500)); // from 555 timer + _555_timer.signal_handler().set(FUNC(chessmst_state::timer_555_w)); /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("beeper", BEEP, 1000) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) + BEEP(config, m_beeper, 1000).add_route(ALL_OUTPUTS, "mono", 0.50); - MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "chessmstdm_cart") - MCFG_SOFTWARE_LIST_ADD("cart_list", "chessmstdm") -MACHINE_CONFIG_END + GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "chessmstdm_cart"); + SOFTWARE_LIST(config, "cart_list").set_original("chessmstdm"); +} /* ROM definition */ |