From 7a60bfeba7d1b63237918a5e6f7dad9f2a777820 Mon Sep 17 00:00:00 2001 From: hap Date: Sun, 8 Sep 2024 14:14:38 +0200 Subject: chess*: small cleanups --- src/mame/fidelity/chesster.cpp | 7 +------ src/mame/fidelity/eldorado.cpp | 29 ++++++---------------------- src/mame/fidelity/elite.cpp | 6 ++++++ src/mame/fidelity/msc.cpp | 44 ++++++++++++++---------------------------- src/mame/fidelity/sc6.cpp | 5 +++-- src/mame/fidelity/sc8.cpp | 8 +++++--- src/mame/fidelity/sc9.cpp | 16 +++++---------- src/mame/novag/const.cpp | 6 ++++++ src/mame/novag/micro.cpp | 2 +- src/mame/novag/micro2.cpp | 23 +++++++++------------- src/mame/saitek/blitz.cpp | 6 ++++++ src/mame/saitek/corona.cpp | 10 +++++----- src/mame/saitek/gk2000.cpp | 6 ++++++ src/mame/saitek/mark5.cpp | 6 ++++++ src/mame/saitek/stratos.cpp | 30 ++++++++++++++-------------- src/mame/saitek/stratos.h | 4 ++-- src/mame/ussr/debut.cpp | 2 +- 17 files changed, 98 insertions(+), 112 deletions(-) diff --git a/src/mame/fidelity/chesster.cpp b/src/mame/fidelity/chesster.cpp index bafe57d1bd3..ae6f9b6f671 100644 --- a/src/mame/fidelity/chesster.cpp +++ b/src/mame/fidelity/chesster.cpp @@ -62,7 +62,7 @@ public: protected: virtual void machine_start() override; - virtual void machine_reset() override; + virtual void machine_reset() override { m_dac->write(0x80); } private: // devices/pointers @@ -95,11 +95,6 @@ void chesster_state::machine_start() save_item(NAME(m_select)); } -void chesster_state::machine_reset() -{ - m_dac->write(0x80); -} - /******************************************************************************* diff --git a/src/mame/fidelity/eldorado.cpp b/src/mame/fidelity/eldorado.cpp index 12edf1f7b92..9588b70e023 100644 --- a/src/mame/fidelity/eldorado.cpp +++ b/src/mame/fidelity/eldorado.cpp @@ -42,7 +42,6 @@ public: m_inputs(*this, "IN.0") { } - // machine configs void eldorado(machine_config &config); protected: @@ -57,15 +56,12 @@ private: required_ioport m_inputs; bool m_kp_select = false; - u16 m_inp_mux = 0; - u8 m_led_select = 0; + u8 m_inp_mux = 0; // I/O handlers - void update_display(); void mux_w(u8 data); u8 mux_r(); void control_w(u8 data); - int t0_r(); u8 input_r(); }; @@ -74,7 +70,6 @@ void eldorado_state::machine_start() // register for savestates save_item(NAME(m_kp_select)); save_item(NAME(m_inp_mux)); - save_item(NAME(m_led_select)); } @@ -83,16 +78,11 @@ void eldorado_state::machine_start() I/O *******************************************************************************/ -void eldorado_state::update_display() -{ - m_display->matrix(m_led_select, m_inp_mux); -} - void eldorado_state::mux_w(u8 data) { // D0-D7: input mux, led data m_inp_mux = ~data; - update_display(); + m_display->write_mx(m_inp_mux); } u8 eldorado_state::mux_r() @@ -106,24 +96,17 @@ void eldorado_state::control_w(u8 data) m_dac->write(BIT(~data, 4)); // P25,P26: led select - m_led_select = ~data >> 5 & 3; - update_display(); + m_display->write_my(~data >> 5 & 3); - // P27: keypad select + // P27: input mux highest bit (also goes to T0) m_kp_select = !bool(data & 0x80); } -int eldorado_state::t0_r() -{ - // T0: P27 - return m_kp_select ? 0 : 1; -} - u8 eldorado_state::input_r() { + // P10-P17: multiplexed inputs u8 data = 0; - // P10-P17: multiplexed inputs // read chessboard buttons for (int i = 0; i < 8; i++) if (BIT(m_inp_mux, i)) @@ -168,7 +151,7 @@ void eldorado_state::eldorado(machine_config &config) m_maincpu->p2_out_cb().set(FUNC(eldorado_state::control_w)); m_maincpu->bus_in_cb().set(FUNC(eldorado_state::mux_r)); m_maincpu->bus_out_cb().set(FUNC(eldorado_state::mux_w)); - m_maincpu->t0_in_cb().set(FUNC(eldorado_state::t0_r)); + m_maincpu->t0_in_cb().set(m_maincpu, FUNC(mcs48_cpu_device::p2_r)).bit(7); SENSORBOARD(config, m_board).set_type(sensorboard_device::BUTTONS); m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess)); diff --git a/src/mame/fidelity/elite.cpp b/src/mame/fidelity/elite.cpp index 457e66dd89f..56d7bbd6bcd 100644 --- a/src/mame/fidelity/elite.cpp +++ b/src/mame/fidelity/elite.cpp @@ -167,6 +167,12 @@ protected: void ppi_portc_w(u8 data); }; + + +/******************************************************************************* + Initialization +*******************************************************************************/ + void elite_state::machine_start() { fidel_clockdiv_state::machine_start(); diff --git a/src/mame/fidelity/msc.cpp b/src/mame/fidelity/msc.cpp index 25d19ad45d6..1aba1a76e75 100644 --- a/src/mame/fidelity/msc.cpp +++ b/src/mame/fidelity/msc.cpp @@ -27,12 +27,12 @@ and one for MCS48. A12 is forced high or low to select the bank. #include "emu.h" +#include "bus/generic/slot.h" +#include "bus/generic/carts.h" #include "cpu/z8/z8.h" #include "machine/sensorboard.h" #include "sound/dac.h" #include "video/pwm.h" -#include "bus/generic/slot.h" -#include "bus/generic/carts.h" #include "softlist_dev.h" #include "speaker.h" @@ -55,7 +55,6 @@ public: m_inputs(*this, "IN.0") { } - // machine configs void msc(machine_config &config); protected: @@ -72,18 +71,13 @@ private: u8 m_led_select = 0; u16 m_inp_mux = 0; - // address maps void main_map(address_map &map); // I/O handlers void update_display(); void mux_w(u8 data); void control_w(u8 data); - u8 rom_r(offs_t offset); - - u8 read_inputs(); - u8 input_hi_r(); - u8 input_lo_r(); + u8 input_r(); }; void msc_state::machine_start() @@ -113,18 +107,20 @@ void msc_state::mux_w(u8 data) void msc_state::control_w(u8 data) { - // P37: input mux highest bit + // P34: speaker out + m_dac->write(BIT(~data, 4)); + // P35,P36: led select - m_inp_mux = (m_inp_mux & 0xff) | (data << 1 & 0x100); m_led_select = ~data >> 5 & 3; - update_display(); - // P34: speaker out - m_dac->write(BIT(~data, 4)); + // P37: input mux highest bit, led data + m_inp_mux = (m_inp_mux & 0xff) | (data << 1 & 0x100); + update_display(); } -u8 msc_state::read_inputs() +u8 msc_state::input_r() { + // P30-P33,P04-P07: multiplexed inputs u8 data = 0; // read chessboard sensors @@ -139,18 +135,6 @@ u8 msc_state::read_inputs() return bitswap<8>(~data,0,1,2,3,4,5,6,7); } -u8 msc_state::input_hi_r() -{ - // P04-P07: multiplexed inputs high - return read_inputs() | 0x0f; -} - -u8 msc_state::input_lo_r() -{ - // P30-P33: multiplexed inputs low - return read_inputs() | 0xf0; -} - /******************************************************************************* @@ -191,9 +175,11 @@ void msc_state::msc(machine_config &config) // basic machine hardware Z8601(config, m_maincpu, 8_MHz_XTAL); m_maincpu->set_addrmap(AS_PROGRAM, &msc_state::main_map); - m_maincpu->p0_in_cb().set(FUNC(msc_state::input_hi_r)); + m_maincpu->p0_in_cb().set(FUNC(msc_state::input_r)).mask(0xf0); + m_maincpu->p0_in_cb().append_constant(0x0f).mask(0x0f); m_maincpu->p2_out_cb().set(FUNC(msc_state::mux_w)); - m_maincpu->p3_in_cb().set(FUNC(msc_state::input_lo_r)); + m_maincpu->p3_in_cb().set(FUNC(msc_state::input_r)).mask(0x0f); + m_maincpu->p3_in_cb().append_constant(0xf0).mask(0xf0); m_maincpu->p3_out_cb().set(FUNC(msc_state::control_w)); SENSORBOARD(config, m_board).set_type(sensorboard_device::BUTTONS); diff --git a/src/mame/fidelity/sc6.cpp b/src/mame/fidelity/sc6.cpp index 2c0d0b22ca0..e03b74d544f 100644 --- a/src/mame/fidelity/sc6.cpp +++ b/src/mame/fidelity/sc6.cpp @@ -197,11 +197,12 @@ void sc6_state::mux_w(u8 data) // P24-P27: 7442 A-D (or 74145) // 7442 0-8: input mux, led data m_inp_mux = data >> 4 & 0xf; - m_display->write_mx(1 << m_inp_mux); + u16 sel = 1 << m_inp_mux; + m_display->write_mx(sel); // 7442 9: speaker out if (m_dac != nullptr) - m_dac->write(BIT(1 << m_inp_mux, 9)); + m_dac->write(BIT(sel, 9)); } void sc6_state::select_w(u8 data) diff --git a/src/mame/fidelity/sc8.cpp b/src/mame/fidelity/sc8.cpp index 50dfdc5b64b..017da0632ba 100644 --- a/src/mame/fidelity/sc8.cpp +++ b/src/mame/fidelity/sc8.cpp @@ -94,19 +94,21 @@ void scc_state::control_w(offs_t offset, u8 data) u8 mask = 1 << (offset & 7); m_led_data = (m_led_data & ~mask) | ((data & 0x80) ? mask : 0); - // d0-d3: led select, input mux (row 9 is speaker out) + // d0-d3: 7442 to led select, input mux // d4: corner led(direct) m_inp_mux = data & 0xf; u16 sel = 1 << m_inp_mux; - m_dac->write(BIT(sel, 9)); m_display->matrix((sel & 0xff) | (data << 4 & 0x100), m_led_data); + + // 7442 9: speaker out + m_dac->write(BIT(sel, 9)); } u8 scc_state::input_r() { + // d0-d7: multiplexed inputs (active low) u8 data = 0; - // d0-d7: multiplexed inputs (active low) // read chessboard sensors if (m_inp_mux < 8) data = m_board->read_file(m_inp_mux); diff --git a/src/mame/fidelity/sc9.cpp b/src/mame/fidelity/sc9.cpp index 4542bd4ad24..f1ec5b9644e 100644 --- a/src/mame/fidelity/sc9.cpp +++ b/src/mame/fidelity/sc9.cpp @@ -102,7 +102,6 @@ protected: void sc9d_map(address_map &map); // I/O handlers - void update_display(); void control_w(u8 data); void led_w(offs_t offset, u8 data); u8 input_r(); @@ -129,21 +128,16 @@ INPUT_CHANGED_MEMBER(sc9_state::sc9c_change_cpu_freq) I/O *******************************************************************************/ -void sc9_state::update_display() -{ - // 8*8 chessboard leds + 1 corner led - m_display->matrix(1 << m_inp_mux, m_led_data); -} - void sc9_state::control_w(u8 data) { // d0-d3: 74245 P0-P3 // 74245 Q0-Q8: input mux, led select m_inp_mux = data & 0xf; - update_display(); + u16 sel = 1 << m_inp_mux; + m_display->write_my(sel); // 74245 Q9: speaker out - m_dac->write(BIT(1 << m_inp_mux, 9)); + m_dac->write(BIT(sel, 9)); // d4,d5: ? // d6,d7: N/C @@ -153,14 +147,14 @@ void sc9_state::led_w(offs_t offset, u8 data) { // a0-a2,d0: led data via NE591N m_led_data = (m_led_data & ~(1 << offset)) | ((data & 1) << offset); - update_display(); + m_display->write_mx(m_led_data); } u8 sc9_state::input_r() { + // d0-d7: multiplexed inputs (active low) u8 data = 0; - // d0-d7: multiplexed inputs (active low) // read chessboard sensors if (m_inp_mux < 8) data = m_board->read_file(m_inp_mux); diff --git a/src/mame/novag/const.cpp b/src/mame/novag/const.cpp index 04c89420f69..ab1cd9f9ec2 100644 --- a/src/mame/novag/const.cpp +++ b/src/mame/novag/const.cpp @@ -142,6 +142,12 @@ private: u8 input2_r(); }; + + +/******************************************************************************* + Initialization +*******************************************************************************/ + void const_state::machine_start() { // register for savestates diff --git a/src/mame/novag/micro.cpp b/src/mame/novag/micro.cpp index f3ecd10342a..d6acc4dbb1c 100644 --- a/src/mame/novag/micro.cpp +++ b/src/mame/novag/micro.cpp @@ -105,9 +105,9 @@ void micro_state::input_w(u8 data) u8 micro_state::input_r() { + // P10-P17: multiplexed inputs u8 data = 0; - // P10-P17: multiplexed inputs // read chessboard u8 cb_mux = (m_inp_mux << 2) | (m_control >> 5 & 3); cb_mux = bitswap<8>(cb_mux,4,5,6,7,1,0,3,2); diff --git a/src/mame/novag/micro2.cpp b/src/mame/novag/micro2.cpp index c7ceca736e0..e41ac1c33c3 100644 --- a/src/mame/novag/micro2.cpp +++ b/src/mame/novag/micro2.cpp @@ -90,10 +90,8 @@ private: bool m_kp_select = false; u8 m_inp_mux = 0; - u8 m_led_select = 0; // I/O handlers - void update_display(); void mux_w(u8 data); void control_w(u8 data); u8 input_r(); @@ -101,12 +99,17 @@ private: void set_cpu_freq(); }; + + +/******************************************************************************* + Initialization +*******************************************************************************/ + void micro2_state::machine_start() { // register for savestates save_item(NAME(m_kp_select)); save_item(NAME(m_inp_mux)); - save_item(NAME(m_led_select)); } void micro2_state::set_cpu_freq() @@ -124,18 +127,11 @@ void micro2_state::set_cpu_freq() I/O *******************************************************************************/ -// MCU ports/generic - -void micro2_state::update_display() -{ - m_display->matrix(m_led_select, m_inp_mux); -} - void micro2_state::mux_w(u8 data) { // D0-D7: input mux, led data m_inp_mux = ~data; - update_display(); + m_display->write_mx(m_inp_mux); } void micro2_state::control_w(u8 data) @@ -147,15 +143,14 @@ void micro2_state::control_w(u8 data) m_dac->write(BIT(data, 2) & BIT(~data, 3)); // P24-P26: led select - m_led_select = ~data >> 4 & 7; - update_display(); + m_display->write_my(~data >> 4 & 7); } u8 micro2_state::input_r() { + // P10-P17: multiplexed inputs u8 data = 0; - // P10-P17: multiplexed inputs // read chessboard buttons for (int i = 0; i < 8; i++) if (BIT(m_inp_mux, i)) diff --git a/src/mame/saitek/blitz.cpp b/src/mame/saitek/blitz.cpp index 50364cd199f..26a6136e0b9 100644 --- a/src/mame/saitek/blitz.cpp +++ b/src/mame/saitek/blitz.cpp @@ -116,6 +116,12 @@ private: void p6_w(u8 data); }; + + +/******************************************************************************* + Initialization +*******************************************************************************/ + void blitz_state::machine_start() { m_out_lcd.resolve(); diff --git a/src/mame/saitek/corona.cpp b/src/mame/saitek/corona.cpp index 3ddb1d33fd9..bc170d0607e 100644 --- a/src/mame/saitek/corona.cpp +++ b/src/mame/saitek/corona.cpp @@ -29,13 +29,13 @@ different compared to Stratos/Turbo King. namespace { -// note: sub-class of saitek_stratos_state (see stratos.h, stratos.cpp) +// note: sub-class of stratos_base_state (see stratos.h, stratos.cpp) -class corona_state : public saitek_stratos_state +class corona_state : public stratos_base_state { public: corona_state(const machine_config &mconfig, device_type type, const char *tag) : - saitek_stratos_state(mconfig, type, tag), + stratos_base_state(mconfig, type, tag), m_rombank(*this, "rombank"), m_board(*this, "board"), m_dac(*this, "dac"), @@ -81,7 +81,7 @@ private: void corona_state::machine_start() { - saitek_stratos_state::machine_start(); + stratos_base_state::machine_start(); // register for savestates save_item(NAME(m_control1)); @@ -94,7 +94,7 @@ void corona_state::machine_start() void corona_state::machine_reset() { - saitek_stratos_state::machine_reset(); + stratos_base_state::machine_reset(); m_control2 = 0; m_rombank.select(0); diff --git a/src/mame/saitek/gk2000.cpp b/src/mame/saitek/gk2000.cpp index 1de39e86d12..e707b6bce4a 100644 --- a/src/mame/saitek/gk2000.cpp +++ b/src/mame/saitek/gk2000.cpp @@ -166,6 +166,12 @@ private: void p5_w(u8 data); }; + + +/******************************************************************************* + Initialization +*******************************************************************************/ + void gk2000_state::machine_start() { m_out_lcd.resolve(); diff --git a/src/mame/saitek/mark5.cpp b/src/mame/saitek/mark5.cpp index be57b41150a..41bd6ea8e33 100644 --- a/src/mame/saitek/mark5.cpp +++ b/src/mame/saitek/mark5.cpp @@ -133,6 +133,12 @@ private: void write_lcd(int state); }; + + +/******************************************************************************* + Initialization +*******************************************************************************/ + void mark5_state::machine_start() { m_out_x.resolve(); diff --git a/src/mame/saitek/stratos.cpp b/src/mame/saitek/stratos.cpp index 6dd97d210fb..fad1c3800de 100644 --- a/src/mame/saitek/stratos.cpp +++ b/src/mame/saitek/stratos.cpp @@ -69,11 +69,11 @@ is engine version C. #include "saitek_tking.lh" -class stratos_state : public saitek_stratos_state +class stratos_state : public stratos_base_state { public: stratos_state(const machine_config &mconfig, device_type type, const char *tag) : - saitek_stratos_state(mconfig, type, tag), + stratos_base_state(mconfig, type, tag), m_banked_nvram(*this, "nvram.u7", 0x2000, ENDIANNESS_LITTLE), m_nvrambank(*this, "nvrambank"), m_rombank(*this, "rombank"), @@ -123,9 +123,9 @@ private: }; -// saitek_stratos_state +// stratos_base_state -void saitek_stratos_state::machine_start() +void stratos_base_state::machine_start() { // resolve handlers m_out_digit.resolve(); @@ -139,7 +139,7 @@ void saitek_stratos_state::machine_start() save_item(NAME(m_lcd_data)); } -void saitek_stratos_state::machine_reset() +void stratos_base_state::machine_reset() { m_power = true; m_lcd_ready = false; @@ -147,7 +147,7 @@ void saitek_stratos_state::machine_reset() clear_lcd(); } -INPUT_CHANGED_MEMBER(saitek_stratos_state::change_cpu_freq) +INPUT_CHANGED_MEMBER(stratos_base_state::change_cpu_freq) { // known officially* released CPU speeds: 5MHz, 5.626MHz, 5.67MHz // *not including reseller overclocks, user mods, or the "Turbo Kit" @@ -160,7 +160,7 @@ INPUT_CHANGED_MEMBER(saitek_stratos_state::change_cpu_freq) void stratos_state::machine_start() { - saitek_stratos_state::machine_start(); + stratos_base_state::machine_start(); // init banks m_rombank->configure_entries(0, 2, memregion("maincpu")->base(), 0x8000); @@ -174,7 +174,7 @@ void stratos_state::machine_start() void stratos_state::machine_reset() { - saitek_stratos_state::machine_reset(); + stratos_base_state::machine_reset(); m_control = 0; m_rombank->set_entry(0); @@ -189,7 +189,7 @@ void stratos_state::machine_reset() // soft power on/off -INPUT_CHANGED_MEMBER(saitek_stratos_state::go_button) +INPUT_CHANGED_MEMBER(stratos_base_state::go_button) { if (newval && !m_power) { @@ -198,7 +198,7 @@ INPUT_CHANGED_MEMBER(saitek_stratos_state::go_button) } } -void saitek_stratos_state::power_off() +void stratos_base_state::power_off() { m_power = false; m_maincpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE); @@ -212,7 +212,7 @@ void saitek_stratos_state::power_off() // LCD HLE -void saitek_stratos_state::update_lcd() +void stratos_base_state::update_lcd() { // output individual segments for (int i = 0; i < 0x40; i++) @@ -230,7 +230,7 @@ void saitek_stratos_state::update_lcd() m_out_digit[i + 5] = (m_lcd_data[0x11 + i * 2] << 4 | m_lcd_data[0x11 + i * 2 + 1]) & 0x7f; } -void saitek_stratos_state::lcd_data_w(u8 data) +void stratos_base_state::lcd_data_w(u8 data) { // d0-d3: lcd data // d4-d7: unused? @@ -418,10 +418,10 @@ INPUT_PORTS_START( saitek_stratos ) PORT_CONFSETTING( 0x01, DEF_STR( Normal ) ) PORT_START("RESET") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_CHANGED_MEMBER(DEVICE_SELF, saitek_stratos_state, go_button, 0) PORT_NAME("Go") + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_CHANGED_MEMBER(DEVICE_SELF, stratos_base_state, go_button, 0) PORT_NAME("Go") PORT_START("CPU") - PORT_CONFNAME( 0x03, 0x00, "CPU Frequency" ) PORT_CHANGED_MEMBER(DEVICE_SELF, saitek_stratos_state, change_cpu_freq, 0) // factory set + PORT_CONFNAME( 0x03, 0x00, "CPU Frequency" ) PORT_CHANGED_MEMBER(DEVICE_SELF, stratos_base_state, change_cpu_freq, 0) // factory set PORT_CONFSETTING( 0x00, "5MHz" ) PORT_CONFSETTING( 0x01, "5.626MHz" ) PORT_CONFSETTING( 0x02, "5.67MHz" ) @@ -468,7 +468,7 @@ static INPUT_PORTS_START( tking ) // same buttons, but different locations PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_NAME("Normal") PORT_MODIFY("RESET") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Y) PORT_CHANGED_MEMBER(DEVICE_SELF, saitek_stratos_state, go_button, 0) PORT_NAME("Go") + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Y) PORT_CHANGED_MEMBER(DEVICE_SELF, stratos_base_state, go_button, 0) PORT_NAME("Go") INPUT_PORTS_END static INPUT_PORTS_START( tking2 ) diff --git a/src/mame/saitek/stratos.h b/src/mame/saitek/stratos.h index 25ab5c7732d..ac760875cce 100644 --- a/src/mame/saitek/stratos.h +++ b/src/mame/saitek/stratos.h @@ -17,10 +17,10 @@ #include -class saitek_stratos_state : public driver_device +class stratos_base_state : public driver_device { public: - saitek_stratos_state(const machine_config &mconfig, device_type type, const char *tag) : + stratos_base_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), m_display(*this, "display"), diff --git a/src/mame/ussr/debut.cpp b/src/mame/ussr/debut.cpp index f15409f83ba..1a42c38362a 100644 --- a/src/mame/ussr/debut.cpp +++ b/src/mame/ussr/debut.cpp @@ -13,7 +13,7 @@ TODO: - where does the interrupt come from? - Debut-M is an updated version? Or is it the same program as Debut with a redesigned case? -******************************************************************************** +================================================================================ Hardware notes: - КР1810ВМ86 (i8086 clone), 16200K XTAL -- cgit v1.2.3