summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/kas89.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/kas89.cpp')
-rw-r--r--src/mame/drivers/kas89.cpp134
1 files changed, 70 insertions, 64 deletions
diff --git a/src/mame/drivers/kas89.cpp b/src/mame/drivers/kas89.cpp
index 675df3ddd29..b78e750ebee 100644
--- a/src/mame/drivers/kas89.cpp
+++ b/src/mame/drivers/kas89.cpp
@@ -208,8 +208,8 @@
class kas89_state : public driver_device
{
public:
- kas89_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
+ kas89_state(const machine_config &mconfig, device_type type, const char *tag) :
+ driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_v9938(*this, "v9938"),
@@ -222,9 +222,31 @@ public:
m_pl6(*this, "PL6"),
m_svc(*this, "SVC"),
m_dsw(*this, "DSW"),
- m_unk(*this, "UNK")
+ m_unk(*this, "UNK"),
+ m_lamp(*this, "lamp%u", 0U)
{ }
+ DECLARE_WRITE8_MEMBER(mux_w);
+ DECLARE_READ8_MEMBER(mux_r);
+ DECLARE_WRITE8_MEMBER(control_w);
+ DECLARE_WRITE8_MEMBER(sound_comm_w);
+ DECLARE_WRITE8_MEMBER(int_ack_w);
+ DECLARE_WRITE8_MEMBER(led_mux_data_w);
+ DECLARE_WRITE8_MEMBER(led_mux_select_w);
+ void init_kas89();
+ TIMER_DEVICE_CALLBACK_MEMBER(kas89_nmi_cb);
+ TIMER_DEVICE_CALLBACK_MEMBER(kas89_sound_nmi_cb);
+ void kas89(machine_config &config);
+ void audio_io(address_map &map);
+ void audio_map(address_map &map);
+ void kas89_io(address_map &map);
+ void kas89_map(address_map &map);
+
+
+protected:
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+
uint8_t m_mux_data;
uint8_t m_main_nmi_enable;
@@ -245,24 +267,7 @@ public:
required_ioport m_svc;
required_ioport m_dsw;
required_ioport m_unk;
-
- DECLARE_WRITE8_MEMBER(mux_w);
- DECLARE_READ8_MEMBER(mux_r);
- DECLARE_WRITE8_MEMBER(control_w);
- DECLARE_WRITE8_MEMBER(sound_comm_w);
- DECLARE_WRITE8_MEMBER(int_ack_w);
- DECLARE_WRITE8_MEMBER(led_mux_data_w);
- DECLARE_WRITE8_MEMBER(led_mux_select_w);
- void init_kas89();
- virtual void machine_start() override;
- virtual void machine_reset() override;
- TIMER_DEVICE_CALLBACK_MEMBER(kas89_nmi_cb);
- TIMER_DEVICE_CALLBACK_MEMBER(kas89_sound_nmi_cb);
- void kas89(machine_config &config);
- void audio_io(address_map &map);
- void audio_map(address_map &map);
- void kas89_io(address_map &map);
- void kas89_map(address_map &map);
+ output_finder<37> m_lamp;
};
@@ -272,7 +277,8 @@ public:
void kas89_state::machine_start()
{
- output().set_lamp_value(37, 0); /* turning off the operator led */
+ m_lamp.resolve();
+ m_lamp[37] = 0; /* turning off the operator led */
}
void kas89_state::machine_reset()
@@ -309,7 +315,7 @@ READ8_MEMBER(kas89_state::mux_r)
case 0x20: return m_pl6->read();
case 0x40:
{
- output().set_lamp_value(37, 1 - ((m_svc->read() >> 5) & 1)); /* Operator Key LAMP */
+ m_lamp[37] = BIT(~m_svc->read(), 5); /* Operator Key LAMP */
return m_svc->read();
}
case 0x80: return m_dsw->read(); /* Polled at $162a through NMI routine */
@@ -375,7 +381,7 @@ WRITE8_MEMBER(kas89_state::sound_comm_w)
uint8_t i;
for ( i = 0; i < 37; i++ )
{
- output().set_lamp_value(i, 0); /* All roulette LEDs OFF */
+ m_lamp[i] = 0; /* All roulette LEDs OFF */
}
}
@@ -421,7 +427,7 @@ WRITE8_MEMBER(kas89_state::led_mux_select_w)
uint8_t i;
for ( i = 0; i < 37; i++ )
{
- output().set_lamp_value(i, 0); /* All LEDs OFF */
+ m_lamp[i] = 0; /* All LEDs OFF */
}
switch(data)
@@ -430,69 +436,69 @@ WRITE8_MEMBER(kas89_state::led_mux_select_w)
{
for ( i = 0; i < 37; i++ )
{
- output().set_lamp_value(i, 0); /* All LEDs OFF */
+ m_lamp[i] = 0; /* All LEDs OFF */
}
}
case 0x01:
{
- output().set_lamp_value(11, (m_leds_mux_data >> 0) & 1); /* Number 11 LED */
- output().set_lamp_value(36, (m_leds_mux_data >> 1) & 1); /* Number 36 LED */
- output().set_lamp_value(13, (m_leds_mux_data >> 2) & 1); /* Number 13 LED */
- output().set_lamp_value(27, (m_leds_mux_data >> 3) & 1); /* Number 27 LED */
- output().set_lamp_value(06, (m_leds_mux_data >> 4) & 1); /* Number 6 LED */
- output().set_lamp_value(34, (m_leds_mux_data >> 5) & 1); /* Number 34 LED */
- output().set_lamp_value(17, (m_leds_mux_data >> 6) & 1); /* Number 17 LED */
- output().set_lamp_value(25, (m_leds_mux_data >> 7) & 1); /* Number 25 LED */
+ m_lamp[11] = BIT(m_leds_mux_data, 0); /* Number 11 LED */
+ m_lamp[36] = BIT(m_leds_mux_data, 1); /* Number 36 LED */
+ m_lamp[13] = BIT(m_leds_mux_data, 2); /* Number 13 LED */
+ m_lamp[27] = BIT(m_leds_mux_data, 3); /* Number 27 LED */
+ m_lamp[06] = BIT(m_leds_mux_data, 4); /* Number 6 LED */
+ m_lamp[34] = BIT(m_leds_mux_data, 5); /* Number 34 LED */
+ m_lamp[17] = BIT(m_leds_mux_data, 6); /* Number 17 LED */
+ m_lamp[25] = BIT(m_leds_mux_data, 7); /* Number 25 LED */
break;
}
case 0x02:
{
- output().set_lamp_value( 2, (m_leds_mux_data >> 0) & 1); /* Number 2 LED */
- output().set_lamp_value(21, (m_leds_mux_data >> 1) & 1); /* Number 21 LED */
- output().set_lamp_value( 4, (m_leds_mux_data >> 2) & 1); /* Number 4 LED */
- output().set_lamp_value(19, (m_leds_mux_data >> 3) & 1); /* Number 19 LED */
- output().set_lamp_value(15, (m_leds_mux_data >> 4) & 1); /* Number 15 LED */
- output().set_lamp_value(32, (m_leds_mux_data >> 5) & 1); /* Number 32 LED */
- output().set_lamp_value( 0, (m_leds_mux_data >> 6) & 1); /* Number 0 LED */
- output().set_lamp_value(26, (m_leds_mux_data >> 7) & 1); /* Number 26 LED */
+ m_lamp[ 2] = BIT(m_leds_mux_data, 0); /* Number 2 LED */
+ m_lamp[21] = BIT(m_leds_mux_data, 1); /* Number 21 LED */
+ m_lamp[ 4] = BIT(m_leds_mux_data, 2); /* Number 4 LED */
+ m_lamp[19] = BIT(m_leds_mux_data, 3); /* Number 19 LED */
+ m_lamp[15] = BIT(m_leds_mux_data, 4); /* Number 15 LED */
+ m_lamp[32] = BIT(m_leds_mux_data, 5); /* Number 32 LED */
+ m_lamp[ 0] = BIT(m_leds_mux_data, 6); /* Number 0 LED */
+ m_lamp[26] = BIT(m_leds_mux_data, 7); /* Number 26 LED */
break;
}
case 0x04:
{
- output().set_lamp_value( 3, (m_leds_mux_data >> 0) & 1); /* Number 3 LED */
- output().set_lamp_value(35, (m_leds_mux_data >> 1) & 1); /* Number 35 LED */
- output().set_lamp_value(12, (m_leds_mux_data >> 2) & 1); /* Number 12 LED */
- output().set_lamp_value(28, (m_leds_mux_data >> 3) & 1); /* Number 28 LED */
- output().set_lamp_value( 7, (m_leds_mux_data >> 4) & 1); /* Number 7 LED */
- output().set_lamp_value(29, (m_leds_mux_data >> 5) & 1); /* Number 29 LED */
- output().set_lamp_value(18, (m_leds_mux_data >> 6) & 1); /* Number 18 LED */
+ m_lamp[ 3] = BIT(m_leds_mux_data, 0); /* Number 3 LED */
+ m_lamp[35] = BIT(m_leds_mux_data, 1); /* Number 35 LED */
+ m_lamp[12] = BIT(m_leds_mux_data, 2); /* Number 12 LED */
+ m_lamp[28] = BIT(m_leds_mux_data, 3); /* Number 28 LED */
+ m_lamp[ 7] = BIT(m_leds_mux_data, 4); /* Number 7 LED */
+ m_lamp[29] = BIT(m_leds_mux_data, 5); /* Number 29 LED */
+ m_lamp[18] = BIT(m_leds_mux_data, 6); /* Number 18 LED */
break;
}
case 0x08:
{
- output().set_lamp_value(22, (m_leds_mux_data >> 0) & 1); /* Number 22 LED */
- output().set_lamp_value( 9, (m_leds_mux_data >> 1) & 1); /* Number 9 LED */
- output().set_lamp_value(31, (m_leds_mux_data >> 2) & 1); /* Number 31 LED */
- output().set_lamp_value(14, (m_leds_mux_data >> 3) & 1); /* Number 14 LED */
- output().set_lamp_value(20, (m_leds_mux_data >> 4) & 1); /* Number 20 LED */
- output().set_lamp_value( 1, (m_leds_mux_data >> 5) & 1); /* Number 1 LED */
- output().set_lamp_value(33, (m_leds_mux_data >> 6) & 1); /* Number 33 LED */
+ m_lamp[22] = BIT(m_leds_mux_data, 0); /* Number 22 LED */
+ m_lamp[ 9] = BIT(m_leds_mux_data, 1); /* Number 9 LED */
+ m_lamp[31] = BIT(m_leds_mux_data, 2); /* Number 31 LED */
+ m_lamp[14] = BIT(m_leds_mux_data, 3); /* Number 14 LED */
+ m_lamp[20] = BIT(m_leds_mux_data, 4); /* Number 20 LED */
+ m_lamp[ 1] = BIT(m_leds_mux_data, 5); /* Number 1 LED */
+ m_lamp[33] = BIT(m_leds_mux_data, 6); /* Number 33 LED */
break;
}
case 0x10:
{
- output().set_lamp_value(16, (m_leds_mux_data >> 0) & 1); /* Number 16 LED */
- output().set_lamp_value(24, (m_leds_mux_data >> 1) & 1); /* Number 24 LED */
- output().set_lamp_value( 5, (m_leds_mux_data >> 2) & 1); /* Number 5 LED */
- output().set_lamp_value(10, (m_leds_mux_data >> 3) & 1); /* Number 10 LED */
- output().set_lamp_value(23, (m_leds_mux_data >> 4) & 1); /* Number 23 LED */
- output().set_lamp_value( 8, (m_leds_mux_data >> 5) & 1); /* Number 8 LED */
- output().set_lamp_value(30, (m_leds_mux_data >> 6) & 1); /* Number 30 LED */
+ m_lamp[16] = BIT(m_leds_mux_data, 0); /* Number 16 LED */
+ m_lamp[24] = BIT(m_leds_mux_data, 1); /* Number 24 LED */
+ m_lamp[ 5] = BIT(m_leds_mux_data, 2); /* Number 5 LED */
+ m_lamp[10] = BIT(m_leds_mux_data, 3); /* Number 10 LED */
+ m_lamp[23] = BIT(m_leds_mux_data, 4); /* Number 23 LED */
+ m_lamp[ 8] = BIT(m_leds_mux_data, 5); /* Number 8 LED */
+ m_lamp[30] = BIT(m_leds_mux_data, 6); /* Number 30 LED */
break;
}
@@ -500,7 +506,7 @@ WRITE8_MEMBER(kas89_state::led_mux_select_w)
{
for ( i = 0; i < 37; i++ )
{
- output().set_lamp_value(i, 1); /* All LEDs ON */
+ m_lamp[i] = 1; /* All LEDs ON */
}
}
}