From c24799514395edc7ccf9f4c16f4dd99ca7a4d61d Mon Sep 17 00:00:00 2001 From: hap Date: Mon, 25 Feb 2019 03:38:11 +0100 Subject: [PATCH] sc1/sc2: small cleanup (nw) --- src/mame/drivers/chessmst.cpp | 86 +++++------ src/mame/drivers/fidel_cc10.cpp | 6 +- src/mame/drivers/fidel_cc7.cpp | 12 +- src/mame/drivers/fidel_vcc.cpp | 6 +- src/mame/drivers/intellect02.cpp | 8 +- src/mame/drivers/sc1.cpp | 120 ++++++++------- src/mame/drivers/sc2.cpp | 252 +++++++++++++++---------------- src/mame/layout/sc1.lay | 4 +- src/mame/layout/sc2.lay | 4 +- 9 files changed, 246 insertions(+), 252 deletions(-) diff --git a/src/mame/drivers/chessmst.cpp b/src/mame/drivers/chessmst.cpp index 817435988af..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 m_maincpu; - required_device m_pia2; + required_device_array m_pio; optional_device m_speaker; optional_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,32 +368,32 @@ 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 } }; 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); @@ -405,19 +405,19 @@ void chessmst_state::chessmst(machine_config &config) 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); @@ -429,20 +429,20 @@ void chessmst_state::chessmsta(machine_config &config) 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); diff --git a/src/mame/drivers/fidel_cc10.cpp b/src/mame/drivers/fidel_cc10.cpp index 2438b145029..850d8f9a29d 100644 --- a/src/mame/drivers/fidel_cc10.cpp +++ b/src/mame/drivers/fidel_cc10.cpp @@ -195,13 +195,13 @@ static INPUT_PORTS_START( ccx ) PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("F6") PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_CODE(KEYCODE_F) PORT_START("IN.2") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL) - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PB") PORT_CODE(KEYCODE_P) + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PB") PORT_CODE(KEYCODE_O) PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("C3") PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_CODE(KEYCODE_C) PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("G7") PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_CODE(KEYCODE_G) PORT_START("IN.3") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("EN") PORT_CODE(KEYCODE_ENTER) + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("EN") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PV") PORT_CODE(KEYCODE_V) PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("D4") PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_CODE(KEYCODE_D) PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("H8") PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_CODE(KEYCODE_H) diff --git a/src/mame/drivers/fidel_cc7.cpp b/src/mame/drivers/fidel_cc7.cpp index 6eb5bf10c15..b99642da9cc 100644 --- a/src/mame/drivers/fidel_cc7.cpp +++ b/src/mame/drivers/fidel_cc7.cpp @@ -136,14 +136,14 @@ void bcc_state::main_io(address_map &map) static INPUT_PORTS_START( bcc ) PORT_START("IN.0") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("EN") PORT_CODE(KEYCODE_ENTER) + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("EN") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PV") PORT_CODE(KEYCODE_V) PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("D4") PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_CODE(KEYCODE_D) PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("H8") PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_CODE(KEYCODE_H) PORT_START("IN.1") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL) - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PB") PORT_CODE(KEYCODE_P) + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PB") PORT_CODE(KEYCODE_O) PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("C3") PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_CODE(KEYCODE_C) PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("G7") PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_CODE(KEYCODE_G) @@ -162,13 +162,13 @@ INPUT_PORTS_END static INPUT_PORTS_START( bkc ) PORT_START("IN.0") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("EN") PORT_CODE(KEYCODE_ENTER) + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("EN") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("9") PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("6") PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("3") PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_START("IN.1") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL) + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("8") PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("5") PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("2") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) @@ -181,7 +181,7 @@ static INPUT_PORTS_START( bkc ) PORT_START("IN.3") PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RE") PORT_CODE(KEYCODE_R) - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PB") PORT_CODE(KEYCODE_P) + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PB") PORT_CODE(KEYCODE_O) PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PV") PORT_CODE(KEYCODE_V) PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("0") PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) INPUT_PORTS_END diff --git a/src/mame/drivers/fidel_vcc.cpp b/src/mame/drivers/fidel_vcc.cpp index d3370d5cb4a..c7f43621a9e 100644 --- a/src/mame/drivers/fidel_vcc.cpp +++ b/src/mame/drivers/fidel_vcc.cpp @@ -267,13 +267,13 @@ static INPUT_PORTS_START( vcc ) PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("F6") PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_CODE(KEYCODE_F) PORT_START("IN.2") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL) - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PB") PORT_CODE(KEYCODE_P) + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PB") PORT_CODE(KEYCODE_O) PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("C3") PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_CODE(KEYCODE_C) PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("G7") PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_CODE(KEYCODE_G) PORT_START("IN.3") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("EN") PORT_CODE(KEYCODE_ENTER) + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("EN") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PV") PORT_CODE(KEYCODE_V) PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("D4") PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_CODE(KEYCODE_D) PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("H8") PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_CODE(KEYCODE_H) diff --git a/src/mame/drivers/intellect02.cpp b/src/mame/drivers/intellect02.cpp index 6fc4699c6dd..e76770b5ced 100644 --- a/src/mame/drivers/intellect02.cpp +++ b/src/mame/drivers/intellect02.cpp @@ -65,7 +65,7 @@ public: m_maincpu(*this, "maincpu"), m_ppi8255(*this, "ppi8255"), m_led_delay(*this, "led_delay_%u", 0), - m_buttons(*this, "IN.%u", 0), + m_keypad(*this, "IN.%u", 0), m_dac(*this, "dac"), m_cart(*this, "cartslot"), m_digit(*this, "digit%u", 0U), @@ -86,7 +86,7 @@ private: required_device m_maincpu; required_device m_ppi8255; required_device_array m_led_delay; - required_ioport_array<2> m_buttons; + required_ioport_array<2> m_keypad; required_device m_dac; required_device m_cart; output_finder<4> m_digit; @@ -178,7 +178,7 @@ READ8_MEMBER(intel02_state::input_r) { // d0-d3: buttons through a priority encoder // d4-d7: buttons (direct) - return (count_leading_zeros(m_buttons[0]->read()) - 17) | (~m_buttons[1]->read() << 4 & 0xf0); + return (count_leading_zeros(m_keypad[0]->read()) - 17) | (~m_keypad[1]->read() << 4 & 0xf0); } WRITE8_MEMBER(intel02_state::_7seg_w) @@ -252,7 +252,7 @@ static INPUT_PORTS_START( intel02 ) PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN) PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Input") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Game Select") PORT_CODE(KEYCODE_S) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Erase") PORT_CODE(KEYCODE_DEL) + PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Erase") PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_START("RESET") PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Reset") PORT_CODE(KEYCODE_R) PORT_CHANGED_MEMBER(DEVICE_SELF, intel02_state, reset_button, nullptr) diff --git a/src/mame/drivers/sc1.cpp b/src/mame/drivers/sc1.cpp index d6da7214f88..68579ca10c1 100644 --- a/src/mame/drivers/sc1.cpp +++ b/src/mame/drivers/sc1.cpp @@ -2,16 +2,13 @@ // copyright-holders:Sandro Ronco /*************************************************************************** -Schachcomputer SC1 - -2009-05-12 Skeleton driver. +Schachcomputer SC 1 ToDo: - speaker - LEDs - 7seg sometimes flashes - ****************************************************************************/ #include "emu.h" @@ -23,33 +20,49 @@ ToDo: #include "sc1.lh" +namespace { + class sc1_state : public driver_device { public: - sc1_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) - , m_maincpu(*this, "maincpu") - , m_speaker(*this, "speaker") - , m_digits(*this, "digit%u", 0U) + sc1_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_pio(*this, "z80pio"), + m_speaker(*this, "speaker"), + m_keypad(*this, "LINE%u", 1), + m_digits(*this, "digit%u", 0U) { } void sc1(machine_config &config); +protected: + virtual void machine_start() override; + private: - DECLARE_WRITE8_MEMBER( matrix_w ); - DECLARE_WRITE8_MEMBER( pio_port_a_w ); - DECLARE_READ8_MEMBER( pio_port_b_r ); + required_device m_maincpu; + required_device m_pio; + required_device m_speaker; + required_ioport_array<8> m_keypad; + output_finder<4> m_digits; void sc1_io(address_map &map); void sc1_mem(address_map &map); uint8_t m_matrix; - virtual void machine_start() override { m_digits.resolve(); } - required_device m_maincpu; - required_device m_speaker; - output_finder<4> m_digits; + + DECLARE_WRITE8_MEMBER( matrix_w ); + DECLARE_WRITE8_MEMBER( pio_port_a_w ); + DECLARE_READ8_MEMBER( pio_port_b_r ); }; +void sc1_state::machine_start() +{ + m_digits.resolve(); + + save_item(NAME(m_matrix)); +} + /*************************************************************************** Display @@ -58,7 +71,7 @@ private: WRITE8_MEMBER( sc1_state::pio_port_a_w ) { - uint8_t digit = bitswap<8>( data,3,4,6,0,1,2,7,5 ) & 0x7f; + uint8_t digit = bitswap<8>(data,3,4,6,0,1,2,7,5) & 0x7f; if (m_matrix & 0x04) m_digits[3] = digit; @@ -86,22 +99,10 @@ READ8_MEMBER( sc1_state::pio_port_b_r ) { uint8_t data = 0; - if (m_matrix & 0x01) - data |= ioport("LINE1")->read(); - if (m_matrix & 0x02) - data |= ioport("LINE2")->read(); - if (m_matrix & 0x04) - data |= ioport("LINE3")->read(); - if (m_matrix & 0x08) - data |= ioport("LINE4")->read(); - if (m_matrix & 0x10) - data |= ioport("LINE5")->read(); - if (m_matrix & 0x20) - data |= ioport("LINE6")->read(); - if (m_matrix & 0x40) - data |= ioport("LINE7")->read(); - if (m_matrix & 0x80) - data |= ioport("LINE8")->read(); + // read keypad matrix + for (int i = 0; i < 8; i++) + if (BIT(m_matrix, i)) + data |= m_keypad[i]->read(); return data; } @@ -118,46 +119,50 @@ void sc1_state::sc1_io(address_map &map) { map.unmap_value_high(); map.global_mask(0xff); - map(0x80, 0x83).rw("z80pio", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); + map(0x80, 0x83).rw(m_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); map(0xfc, 0xfc).w(FUNC(sc1_state::matrix_w)); } + /* Input ports */ + static INPUT_PORTS_START( sc1 ) PORT_START("LINE1") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_UNUSED) - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("D4") PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_D) + PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("D4") PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_CODE(KEYCODE_D) PORT_START("LINE2") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("B2") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_B) - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("F6") PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_F) + PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("B2") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_CODE(KEYCODE_B) + PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("F6") PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_CODE(KEYCODE_F) PORT_START("LINE3") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("C3") PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_C) - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("G7") PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_G) + PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("C3") PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_CODE(KEYCODE_C) + PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("G7") PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_CODE(KEYCODE_G) PORT_START("LINE4") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("A1") PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_A) - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("E5") PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_E) + PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("A1") PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_CODE(KEYCODE_A) + PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("E5") PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_CODE(KEYCODE_E) PORT_START("LINE5") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("H8") PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_H) - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CE") PORT_CODE(KEYCODE_DEL) + PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("H8") PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_CODE(KEYCODE_H) + PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CE") PORT_CODE(KEYCODE_R) PORT_START("LINE6") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("K") PORT_CODE(KEYCODE_K) - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("ENT") PORT_CODE(KEYCODE_ENTER) + PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("K") PORT_CODE(KEYCODE_K) + PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("ENT") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_START("LINE7") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("P") PORT_CODE(KEYCODE_O) - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("W/S") PORT_CODE(KEYCODE_W) + PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("P") PORT_CODE(KEYCODE_O) + PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("W/S") PORT_CODE(KEYCODE_W) PORT_START("LINE8") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("T") PORT_CODE(KEYCODE_T) - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("C") PORT_CODE(KEYCODE_M) + PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("T") PORT_CODE(KEYCODE_T) + PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("C") PORT_CODE(KEYCODE_C) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) INPUT_PORTS_END +/* Machine config */ + void sc1_state::sc1(machine_config &config) { /* basic machine hardware */ @@ -169,22 +174,27 @@ void sc1_state::sc1(machine_config &config) config.set_default_layout(layout_sc1); /* devices */ - z80pio_device& pio(Z80PIO(config, "z80pio", XTAL(4'000'000))); - pio.out_pa_callback().set(FUNC(sc1_state::pio_port_a_w)); - pio.in_pb_callback().set(FUNC(sc1_state::pio_port_b_r)); + Z80PIO(config, m_pio, 9.8304_MHz_XTAL/4); + m_pio->out_pa_callback().set(FUNC(sc1_state::pio_port_a_w)); + m_pio->in_pb_callback().set(FUNC(sc1_state::pio_port_b_r)); /* sound hardware */ SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50); } + /* ROM definition */ + ROM_START( sc1 ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) ROM_LOAD( "sc1.rom", 0x0000, 0x1000, CRC(26965b23) SHA1(01568911446eda9f05ec136df53da147b7c6f2bf)) ROM_END +} // anonymous namespace + + /* Driver */ -// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 1989, sc1, 0, 0, sc1, sc1, sc1_state, empty_init, "VEB Mikroelektronik Erfurt", "Schachcomputer SC1", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1981, sc1, 0, 0, sc1, sc1, sc1_state, empty_init, "VEB Mikroelektronik Erfurt", "Schachcomputer SC 1", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/sc2.cpp b/src/mame/drivers/sc2.cpp index 32c1131b695..4d265c0a336 100644 --- a/src/mame/drivers/sc2.cpp +++ b/src/mame/drivers/sc2.cpp @@ -2,67 +2,89 @@ // copyright-holders:Sandro Ronco /*************************************************************************** - Schachcomputer SC2 - - Note: - The HW is very similar to Fidelity Chess Challenger series - - 12/05/2009 Skeleton driver. + Schachcomputer SC 2 ****************************************************************************/ #include "emu.h" #include "cpu/z80/z80.h" -#include "sound/beep.h" #include "machine/z80pio.h" +#include "sound/dac.h" +#include "sound/volt_reg.h" #include "speaker.h" #include "sc2.lh" + +namespace { + class sc2_state : public driver_device { public: - sc2_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - m_beep(*this, "beeper"), + sc2_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), + m_pio(*this, "z80pio"), + m_dac(*this, "dac"), + m_keypad(*this, "LINE%u", 1), m_digits(*this, "digit%u", 0U), m_leds(*this, "led%u", 0U) { } void sc2(machine_config &config); +protected: + virtual void machine_start() override; + virtual void machine_reset() override; + private: + required_device m_maincpu; + required_device m_pio; + required_device m_dac; + required_ioport_array<4> m_keypad; + + output_finder<4> m_digits; + output_finder<2> m_leds; + + void sc2_io(address_map &map); + void sc2_mem(address_map &map); + + uint8_t m_kp_matrix; + uint8_t m_led_selected; + uint8_t m_digit_data; + + void sc2_update_display(); DECLARE_READ8_MEMBER(pio_port_a_r); DECLARE_READ8_MEMBER(pio_port_b_r); DECLARE_WRITE8_MEMBER(pio_port_a_w); DECLARE_WRITE8_MEMBER(pio_port_b_w); - DECLARE_READ8_MEMBER(sc2_beep); - uint8_t m_kp_matrix; - uint8_t m_led_7seg_data[4]; - uint8_t m_led_selected; - uint8_t m_digit_data; - uint8_t m_beep_state; - void sc2_update_display(); - virtual void machine_start() override; - virtual void machine_reset() override; - void sc2_io(address_map &map); - void sc2_mem(address_map &map); - - required_device m_beep; - required_device m_maincpu; - output_finder<4> m_digits; - output_finder<2> m_leds; + DECLARE_READ8_MEMBER(speaker_w); + template DECLARE_READ8_MEMBER(speaker_w); }; -READ8_MEMBER( sc2_state::sc2_beep ) +void sc2_state::machine_start() { - //if (!machine().side_effects_disabled()) - { - m_beep_state = ~m_beep_state; + m_digits.resolve(); + m_leds.resolve(); - m_beep->set_state(m_beep_state); - } + save_item(NAME(m_kp_matrix)); + save_item(NAME(m_led_selected)); + save_item(NAME(m_digit_data)); +} + +void sc2_state::machine_reset() +{ + m_kp_matrix = 0; + m_led_selected = 0; + m_digit_data = 0; +} + + +template +READ8_MEMBER( sc2_state::speaker_w ) +{ + if (!machine().side_effects_disabled()) + m_dac->write(State); return 0xff; } @@ -73,94 +95,33 @@ void sc2_state::sc2_mem(address_map &map) map(0x0000, 0x0fff).rom(); map(0x1000, 0x13ff).ram(); map(0x2000, 0x33ff).rom(); - map(0x3c00, 0x3c00).r(FUNC(sc2_state::sc2_beep)); + map(0x3400, 0x3400).r(FUNC(sc2_state::speaker_w<1>)); + map(0x3c00, 0x3c00).r(FUNC(sc2_state::speaker_w<0>)); } void sc2_state::sc2_io(address_map &map) { map.unmap_value_high(); map.global_mask(0xff); - map(0x00, 0x03).mirror(0xfc).rw("z80pio", FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0x00, 0x03).mirror(0xfc).rw(m_pio, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); } -/* Input ports */ -static INPUT_PORTS_START( sc2 ) - PORT_START("LINE1") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_UNUSED) - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("T") PORT_CODE(KEYCODE_T) - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("L") PORT_CODE(KEYCODE_L) - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) - - PORT_START("LINE2") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("A1") PORT_CODE(KEYCODE_1) - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("B2") PORT_CODE(KEYCODE_2) - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("C3") PORT_CODE(KEYCODE_3) - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("D4") PORT_CODE(KEYCODE_4) - - PORT_START("LINE3") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("E5") PORT_CODE(KEYCODE_5) - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("F6") PORT_CODE(KEYCODE_6) - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("G7") PORT_CODE(KEYCODE_7) - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("H8") PORT_CODE(KEYCODE_8) - - PORT_START("LINE4") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("K") PORT_CODE(KEYCODE_K) - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("W") PORT_CODE(KEYCODE_W) - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("R") PORT_CODE(KEYCODE_R) - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("P") PORT_CODE(KEYCODE_O) -INPUT_PORTS_END - -void sc2_state::machine_start() -{ - m_digits.resolve(); - m_leds.resolve(); - - save_item(NAME(m_led_7seg_data)); - save_item(NAME(m_kp_matrix)); - save_item(NAME(m_led_selected)); - save_item(NAME(m_digit_data)); - save_item(NAME(m_beep_state)); -} - -void sc2_state::machine_reset() -{ - m_kp_matrix = 0; - m_led_selected = 0; - m_digit_data = 0; - m_beep_state = 0; - memset(m_led_7seg_data, 0, ARRAY_LENGTH(m_led_7seg_data)); -} void sc2_state::sc2_update_display() { - uint8_t digit_data = bitswap<8>( m_digit_data,7,0,1,2,3,4,5,6 ) & 0x7f; + uint8_t digit_data = bitswap<8>(m_digit_data,7,0,1,2,3,4,5,6) & 0x7f; - if (!BIT(m_led_selected, 0)) + // latch display data + for (int i = 0; i < 4; i++) { - m_digits[0] = digit_data; - m_led_7seg_data[0] = digit_data; + if (!BIT(m_led_selected, i)) + { + m_digits[i] = digit_data; - m_leds[0] = BIT(m_digit_data, 7); - } - - if (!BIT(m_led_selected, 1)) - { - m_digits[1] = digit_data; - m_led_7seg_data[1] = digit_data; - - m_leds[1] = BIT(m_digit_data, 7); - } - - if (!BIT(m_led_selected, 2)) - { - m_digits[2] = digit_data; - m_led_7seg_data[2] = digit_data; - } - - if (!BIT(m_led_selected, 3)) - { - m_digits[3] = digit_data; - m_led_7seg_data[3] = digit_data; + // schach/matt leds + if (i < 2) + m_leds[i] = BIT(m_digit_data, 7); + } } } @@ -173,25 +134,10 @@ READ8_MEMBER( sc2_state::pio_port_b_r ) { uint8_t data = m_led_selected & 0x0f; - if (BIT(m_kp_matrix, 0)) - { - data |= ioport("LINE1")->read(); - } - - if (BIT(m_kp_matrix, 1)) - { - data |= ioport("LINE2")->read(); - } - - if (BIT(m_kp_matrix, 2)) - { - data |= ioport("LINE3")->read(); - } - - if (BIT(m_kp_matrix, 3)) - { - data |= ioport("LINE4")->read(); - } + // read keypad matrix + for (int i = 0; i < 4; i++) + if (BIT(m_kp_matrix, i)) + data |= m_keypad[i]->read(); return data; } @@ -212,6 +158,38 @@ WRITE8_MEMBER( sc2_state::pio_port_b_w ) m_kp_matrix = data; } + +/* Input ports */ + +static INPUT_PORTS_START( sc2 ) + PORT_START("LINE1") + PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("T") PORT_CODE(KEYCODE_T) + PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("L") PORT_CODE(KEYCODE_L) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) + PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) + + PORT_START("LINE2") + PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("A1") PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_CODE(KEYCODE_A) + PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("B2") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_CODE(KEYCODE_B) + PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("C3") PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_CODE(KEYCODE_C) + PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("D4") PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_CODE(KEYCODE_D) + + PORT_START("LINE3") + PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("E5") PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_CODE(KEYCODE_E) + PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("F6") PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_CODE(KEYCODE_F) + PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("G7") PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_CODE(KEYCODE_G) + PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("H8") PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_CODE(KEYCODE_H) + + PORT_START("LINE4") + PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("K") PORT_CODE(KEYCODE_K) + PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("W") PORT_CODE(KEYCODE_W) + PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("R") PORT_CODE(KEYCODE_R) + PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("P") PORT_CODE(KEYCODE_O) +INPUT_PORTS_END + + +/* Machine config */ + void sc2_state::sc2(machine_config &config) { /* basic machine hardware */ @@ -223,18 +201,21 @@ void sc2_state::sc2(machine_config &config) config.set_default_layout(layout_sc2); /* devices */ - z80pio_device& pio(Z80PIO(config, "z80pio", 9.8304_MHz_XTAL/4)); - pio.in_pa_callback().set(FUNC(sc2_state::pio_port_a_r)); - pio.out_pa_callback().set(FUNC(sc2_state::pio_port_a_w)); - pio.in_pb_callback().set(FUNC(sc2_state::pio_port_b_r)); - pio.out_pb_callback().set(FUNC(sc2_state::pio_port_b_w)); + Z80PIO(config, m_pio, 9.8304_MHz_XTAL/4); + m_pio->in_pa_callback().set(FUNC(sc2_state::pio_port_a_r)); + m_pio->out_pa_callback().set(FUNC(sc2_state::pio_port_a_w)); + m_pio->in_pb_callback().set(FUNC(sc2_state::pio_port_b_r)); + m_pio->out_pb_callback().set(FUNC(sc2_state::pio_port_b_w)); /* sound hardware */ - SPEAKER(config, "mono").front_center(); - BEEP(config, m_beep, 3250).add_route(ALL_OUTPUTS, "mono", 0.50); + SPEAKER(config, "speaker").front_center(); + DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25); + VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); } + /* ROM definition */ + ROM_START( sc2 ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) ROM_LOAD( "bm008.bin", 0x0000, 0x0400, CRC(3023ea82) SHA1(07020d153d802c672c39e1af3c716dbe35e23f08)) @@ -248,7 +229,10 @@ ROM_START( sc2 ) ROM_LOAD( "bm016.bin", 0x3000, 0x0400, CRC(4fe0853a) SHA1(c2253e320778b0ea468fb54f26ae83d07f9700e6)) ROM_END +} // anonymous namespace + + /* Driver */ -// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 1981, sc2, 0, 0, sc2, sc2, sc2_state, empty_init, "VEB Mikroelektronik Erfurt", "Schachcomputer SC2", MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1981, sc2, 0, 0, sc2, sc2, sc2_state, empty_init, "VEB Mikroelektronik Erfurt", "Schachcomputer SC 2", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/layout/sc1.lay b/src/mame/layout/sc1.lay index c6ed82b9123..e7878d89293 100644 --- a/src/mame/layout/sc1.lay +++ b/src/mame/layout/sc1.lay @@ -7,10 +7,10 @@ - + - + diff --git a/src/mame/layout/sc2.lay b/src/mame/layout/sc2.lay index c68cee7e136..ffb27d79e96 100644 --- a/src/mame/layout/sc2.lay +++ b/src/mame/layout/sc2.lay @@ -7,10 +7,10 @@ - + - +