mephisto_brikett: mephisto3 clock is supposed to blink (nw)

This commit is contained in:
hap 2019-08-08 22:38:39 +02:00
parent 534f3eaeb7
commit b25248b5b7

View File

@ -51,10 +51,6 @@ ESB 6000 chessboard:
ESB 3000 hardware is probably same as ESB 6000. ESB 3000 hardware is probably same as ESB 6000.
There are no other known external port peripherals. There are no other known external port peripherals.
TODO:
- beeper is noisy on mephisto/mephisto2, is it normal? caused by interrupts triggering mid-beep
(mephisto3 disables interrupts during beep)
******************************************************************************/ ******************************************************************************/
#include "emu.h" #include "emu.h"
@ -133,7 +129,6 @@ private:
u8 m_lcd_mask; u8 m_lcd_mask;
u8 m_digit_idx; u8 m_digit_idx;
u8 m_digit_data[4];
bool m_reset; bool m_reset;
u8 m_esb_led; u8 m_esb_led;
@ -146,8 +141,6 @@ void brikett_state::machine_start()
// zerofill // zerofill
m_lcd_mask = 0; m_lcd_mask = 0;
m_digit_idx = 0; m_digit_idx = 0;
memset(m_digit_data, 0, sizeof(m_digit_data));
m_esb_led = 0; m_esb_led = 0;
m_esb_row = 0; m_esb_row = 0;
m_esb_select = 0; m_esb_select = 0;
@ -155,8 +148,6 @@ void brikett_state::machine_start()
// register for savestates // register for savestates
save_item(NAME(m_lcd_mask)); save_item(NAME(m_lcd_mask));
save_item(NAME(m_digit_idx)); save_item(NAME(m_digit_idx));
save_item(NAME(m_digit_data));
save_item(NAME(m_esb_led)); save_item(NAME(m_esb_led));
save_item(NAME(m_esb_row)); save_item(NAME(m_esb_row));
save_item(NAME(m_esb_select)); save_item(NAME(m_esb_select));
@ -202,16 +193,14 @@ READ_LINE_MEMBER(brikett_state::clear_r)
WRITE_LINE_MEMBER(brikett_state::q_w) WRITE_LINE_MEMBER(brikett_state::q_w)
{ {
// Q: LCD digit data mask // Q: LCD digit data mask
m_lcd_mask = state ? 0xff : 0; m_lcd_mask = state ? 0 : 0xff;
} }
WRITE8_MEMBER(brikett_state::lcd_w) WRITE8_MEMBER(brikett_state::lcd_w)
{ {
// write/shift LCD digit (4*CD4015) // write/shift LCD digit (4*CD4015)
// note: last digit "dp" is the colon in the middle // note: last digit "dp" is the colon in the middle
m_digit_data[m_digit_idx] = (m_digit_data[m_digit_idx] & ~data) | (m_lcd_mask & data); m_display->write_row(m_digit_idx, data ^ m_lcd_mask);
m_display->write_row(m_digit_idx, m_digit_data[m_digit_idx]);
m_display->update(); m_display->update();
m_digit_idx = (m_digit_idx + 1) & 3; m_digit_idx = (m_digit_idx + 1) & 3;