diff options
Diffstat (limited to 'src/mame/drivers/mephisto_mondial68k.cpp')
-rw-r--r-- | src/mame/drivers/mephisto_mondial68k.cpp | 44 |
1 files changed, 23 insertions, 21 deletions
diff --git a/src/mame/drivers/mephisto_mondial68k.cpp b/src/mame/drivers/mephisto_mondial68k.cpp index 68f05d5cd82..2f8cf8637b2 100644 --- a/src/mame/drivers/mephisto_mondial68k.cpp +++ b/src/mame/drivers/mephisto_mondial68k.cpp @@ -6,7 +6,7 @@ Mephisto Mondial 68000XL The chess engine is actually the one from Mephisto Dallas. -Hardware: +Hardware notes: - TS68000CP12 @ 12MHz - 64KB ROM - 16KB RAM @@ -38,7 +38,8 @@ public: : driver_device(mconfig, type, tag) , m_maincpu(*this, "maincpu") , m_board(*this, "board") - , m_display(*this, "display") + , m_lcd_latch(*this, "lcd_latch") + , m_led_pwm(*this, "led_pwm") , m_lcd(*this, "lcd") , m_inputs(*this, "IN.%u", 0) , m_digits(*this, "digit%u", 0U) @@ -51,15 +52,16 @@ protected: void mondial68k_mem(address_map &map); - void lcd_s_w(u32 data); + void update_leds(); + void lcd_output_w(u32 data); void input_mux_w(u8 data); void board_mux_w(u8 data); u8 inputs_r(); - void update_display(); required_device<cpu_device> m_maincpu; required_device<sensorboard_device> m_board; - required_device<pwm_display_device> m_display; + required_device<hc259_device> m_lcd_latch; + required_device<pwm_display_device> m_led_pwm; required_device<pcf2112_device> m_lcd; required_ioport_array<4> m_inputs; output_finder<4> m_digits; @@ -83,12 +85,12 @@ void mondial68k_state::machine_start() I/O ******************************************************************************/ -void mondial68k_state::update_display() +void mondial68k_state::update_leds() { - m_display->matrix(m_input_mux >> 6, ~m_board_mux); + m_led_pwm->matrix(m_input_mux >> 6, ~m_board_mux); } -void mondial68k_state::lcd_s_w(u32 data) +void mondial68k_state::lcd_output_w(u32 data) { // output LCD digits (note: last digit DP segment is unused) for (int i = 0; i < 4; i++) @@ -99,7 +101,7 @@ void mondial68k_state::board_mux_w(u8 data) { // d0-d7: chessboard mux, led data m_board_mux = data; - update_display(); + update_leds(); } void mondial68k_state::input_mux_w(u8 data) @@ -107,7 +109,7 @@ void mondial68k_state::input_mux_w(u8 data) // d0-d3: button mux // d6,d7: led select m_input_mux = data; - update_display(); + update_leds(); } u8 mondial68k_state::inputs_r() @@ -137,7 +139,7 @@ void mondial68k_state::mondial68k_mem(address_map &map) { map(0x000000, 0x00ffff).rom(); map(0x800000, 0x800000).r(FUNC(mondial68k_state::inputs_r)); - map(0x820000, 0x82000f).nopr().w("outlatch", FUNC(hc259_device::write_d0)).umask16(0xff00); + map(0x820000, 0x82000f).nopr().w(m_lcd_latch, FUNC(hc259_device::write_d0)).umask16(0xff00); map(0x840000, 0x840000).w(FUNC(mondial68k_state::input_mux_w)); map(0x860000, 0x860000).w(FUNC(mondial68k_state::board_mux_w)); map(0xc00000, 0xc03fff).ram(); @@ -188,12 +190,12 @@ void mondial68k_state::mondial68k(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &mondial68k_state::mondial68k_mem); m_maincpu->set_periodic_int(FUNC(mondial68k_state::irq5_line_hold), attotime::from_hz(128)); - hc259_device &outlatch(HC259(config, "outlatch")); - outlatch.q_out_cb<0>().set(m_lcd, FUNC(pcf2112_device::clb_w)); - outlatch.q_out_cb<1>().set(m_lcd, FUNC(pcf2112_device::data_w)); - outlatch.q_out_cb<2>().set(m_lcd, FUNC(pcf2112_device::dlen_w)); - outlatch.q_out_cb<6>().set_nop(); // another DAC input? - outlatch.q_out_cb<7>().set("dac", FUNC(dac_1bit_device::write)); + HC259(config, m_lcd_latch); + m_lcd_latch->q_out_cb<0>().set(m_lcd, FUNC(pcf2112_device::clb_w)); + m_lcd_latch->q_out_cb<1>().set(m_lcd, FUNC(pcf2112_device::data_w)); + m_lcd_latch->q_out_cb<2>().set(m_lcd, FUNC(pcf2112_device::dlen_w)); + m_lcd_latch->q_out_cb<6>().set_nop(); // another DAC input? + m_lcd_latch->q_out_cb<7>().set("dac", FUNC(dac_1bit_device::write)); SENSORBOARD(config, m_board).set_type(sensorboard_device::BUTTONS); m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess)); @@ -201,9 +203,9 @@ void mondial68k_state::mondial68k(machine_config &config) /* video hardware */ PCF2112(config, m_lcd, 50); // frequency guessed - m_lcd->write_segs().set(FUNC(mondial68k_state::lcd_s_w)); + m_lcd->write_segs().set(FUNC(mondial68k_state::lcd_output_w)); - PWM_DISPLAY(config, m_display).set_size(2, 8); + PWM_DISPLAY(config, m_led_pwm).set_size(2, 8); config.set_default_layout(layout_mephisto_mondial68k); /* sound hardware */ @@ -231,5 +233,5 @@ ROM_END Game Drivers ***************************************************************************/ -/* YEAR, NAME, PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -CONS( 1988, mondl68k, 0, 0, mondial68k, mondial68k, mondial68k_state, empty_init, "Hegener + Glaser", "Mephisto Mondial 68000XL", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +CONS( 1988, mondl68k, 0, 0, mondial68k, mondial68k, mondial68k_state, empty_init, "Hegener + Glaser", "Mephisto Mondial 68000XL", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) |