summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/cxg_dominator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/cxg_dominator.cpp')
-rw-r--r--src/mame/drivers/cxg_dominator.cpp21
1 files changed, 11 insertions, 10 deletions
diff --git a/src/mame/drivers/cxg_dominator.cpp b/src/mame/drivers/cxg_dominator.cpp
index bab30b0cc2d..4ba5f50be8c 100644
--- a/src/mame/drivers/cxg_dominator.cpp
+++ b/src/mame/drivers/cxg_dominator.cpp
@@ -46,8 +46,8 @@ public:
m_board(*this, "board"),
m_dac(*this, "dac"),
m_inputs(*this, "IN.%u", 0),
- m_digits(*this, "digit%u", 0U),
- m_dp(*this, "dp%u", 0U)
+ m_out_digit(*this, "digit%u", 0U),
+ m_out_lcd(*this, "lcd%u.%u", 0U, 0U)
{ }
// machine drivers
@@ -64,8 +64,8 @@ private:
required_device<sensorboard_device> m_board;
required_device<dac_bit_interface> m_dac;
required_ioport_array<2> m_inputs;
- output_finder<8> m_digits;
- output_finder<2> m_dp;
+ output_finder<8> m_out_digit;
+ output_finder<2, 53> m_out_lcd;
// address maps
void main_map(address_map &map);
@@ -79,8 +79,8 @@ private:
void dominator_state::machine_start()
{
- m_digits.resolve();
- m_dp.resolve();
+ m_out_digit.resolve();
+ m_out_lcd.resolve();
}
@@ -96,7 +96,7 @@ WRITE64_MEMBER(dominator_state::lcd_s_w)
u8 d[4];
// 1st digit: S1-S9, unused middle vertical segments
- // 2nd digit: S10-S18, unused bottom-right diagonal segment
+ // 2nd digit: S10-S18, unused bottom-right diagonal segment, colon at S17
// 3rd digit: S21-S27
// 4th digit: S28-S34
d[0] = bitswap<9>(data >> 0 & 0x1ff, 2,7,5,4,3,1,0,8,6) & 0x7f;
@@ -105,10 +105,11 @@ WRITE64_MEMBER(dominator_state::lcd_s_w)
d[3] = bitswap<7>(data >> 27 & 0x7f, 4,2,0,6,5,3,1);
for (int i = 0; i < 4; i++)
- m_digits[offset * 4 + i] = d[i];
+ m_out_digit[offset * 4 + i] = d[i];
- // colon: S17 (part of 2nd digit)
- m_dp[offset] = BIT(data, 16);
+ // output individual segments
+ for (int i = 0; i < 53; i++)
+ m_out_lcd[offset][i] = BIT(data, i);
}