summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/hx20.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/hx20.cpp')
-rw-r--r--src/mame/drivers/hx20.cpp79
1 files changed, 21 insertions, 58 deletions
diff --git a/src/mame/drivers/hx20.cpp b/src/mame/drivers/hx20.cpp
index 684b34d9301..d54e917b70d 100644
--- a/src/mame/drivers/hx20.cpp
+++ b/src/mame/drivers/hx20.cpp
@@ -75,15 +75,9 @@ WRITE8_MEMBER( hx20_state::ksc_w )
READ8_MEMBER( hx20_state::krtn07_r )
{
uint8_t data = 0xff;
-
- if (!BIT(m_ksc, 0)) data &= m_ksc0->read();
- if (!BIT(m_ksc, 1)) data &= m_ksc1->read();
- if (!BIT(m_ksc, 2)) data &= m_ksc2->read();
- if (!BIT(m_ksc, 3)) data &= m_ksc3->read();
- if (!BIT(m_ksc, 4)) data &= m_ksc4->read();
- if (!BIT(m_ksc, 5)) data &= m_ksc5->read();
- if (!BIT(m_ksc, 6)) data &= m_ksc6->read();
- if (!BIT(m_ksc, 7)) data &= m_ksc7->read();
+ for (int b = 0; 8 > b; ++b)
+ if (!BIT(m_ksc, b))
+ data &= m_ksc_io[b]->read();
return data;
}
@@ -111,15 +105,9 @@ READ8_MEMBER( hx20_state::krtn89_r )
*/
uint8_t data = 0xff;
-
- if (!BIT(m_ksc, 0)) data &= m_ksc0->read() >> 8;
- if (!BIT(m_ksc, 1)) data &= m_ksc1->read() >> 8;
- if (!BIT(m_ksc, 2)) data &= m_ksc2->read() >> 8;
- if (!BIT(m_ksc, 3)) data &= m_ksc3->read() >> 8;
- if (!BIT(m_ksc, 4)) data &= m_ksc4->read() >> 8;
- if (!BIT(m_ksc, 5)) data &= m_ksc5->read() >> 8;
- if (!BIT(m_ksc, 6)) data &= m_ksc6->read() >> 8;
- if (!BIT(m_ksc, 7)) data &= m_ksc7->read() >> 8;
+ for (int b = 0; 8 > b; ++b)
+ if (!BIT(m_ksc, b))
+ data &= m_ksc_io[b]->read() >> 8;
return data;
}
@@ -149,31 +137,15 @@ WRITE8_MEMBER( hx20_state::lcd_cs_w )
logerror("LCD CS %02x\n", data);
// LCD
- m_lcdc0->cs_w(1);
- m_lcdc1->cs_w(1);
- m_lcdc2->cs_w(1);
- m_lcdc3->cs_w(1);
- m_lcdc4->cs_w(1);
- m_lcdc5->cs_w(1);
-
- switch (data & 0x07)
- {
- case 1: m_lcdc0->cs_w(0); break;
- case 2: m_lcdc1->cs_w(0); break;
- case 3: m_lcdc2->cs_w(0); break;
- case 4: m_lcdc3->cs_w(0); break;
- case 5: m_lcdc4->cs_w(0); break;
- case 6: m_lcdc5->cs_w(0); break;
- }
+ for (auto &lcdc : m_lcdc)
+ lcdc->cs_w(1);
- int cd = BIT(data, 3);
+ if (data & 0x07)
+ m_lcdc[(data & 0x07) - 1]->cs_w(0);
- m_lcdc0->cd_w(cd);
- m_lcdc1->cd_w(cd);
- m_lcdc2->cd_w(cd);
- m_lcdc3->cd_w(cd);
- m_lcdc4->cd_w(cd);
- m_lcdc5->cd_w(cd);
+ int const cd = BIT(data, 3);
+ for (auto &lcdc : m_lcdc)
+ lcdc->cd_w(cd);
// serial
m_sio->pout_w(BIT(data, 5));
@@ -786,7 +758,7 @@ WRITE_LINE_MEMBER( hx20_state::rtc_irq_w )
// VIDEO
//**************************************************************************
-PALETTE_INIT_MEMBER(hx20_state, hx20)
+void hx20_state::hx20_palette(palette_device &palette) const
{
palette.set_pen_color(0, 0xa5, 0xad, 0xa5);
palette.set_pen_color(1, 0x31, 0x39, 0x10);
@@ -799,12 +771,8 @@ PALETTE_INIT_MEMBER(hx20_state, hx20)
uint32_t hx20_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- m_lcdc0->screen_update(screen, bitmap, cliprect);
- m_lcdc1->screen_update(screen, bitmap, cliprect);
- m_lcdc2->screen_update(screen, bitmap, cliprect);
- m_lcdc3->screen_update(screen, bitmap, cliprect);
- m_lcdc4->screen_update(screen, bitmap, cliprect);
- m_lcdc5->screen_update(screen, bitmap, cliprect);
+ for (auto &lcdc : m_lcdc)
+ lcdc->screen_update(screen, bitmap, cliprect);
return 0;
}
@@ -899,20 +867,15 @@ MACHINE_CONFIG_START(hx20_state::hx20)
MCFG_SCREEN_UPDATE_DRIVER(hx20_state, screen_update)
MCFG_SCREEN_PALETTE("palette")
- MCFG_PALETTE_ADD("palette", 2)
- MCFG_PALETTE_INIT_OWNER(hx20_state, hx20)
+ PALETTE(config, "palette", FUNC(hx20_state::hx20_palette), 2);
- MCFG_UPD7227_ADD(UPD7227_0_TAG, 0, 0)
- MCFG_UPD7227_ADD(UPD7227_1_TAG, 40, 0)
- MCFG_UPD7227_ADD(UPD7227_2_TAG, 80, 0)
- MCFG_UPD7227_ADD(UPD7227_3_TAG, 0, 16)
- MCFG_UPD7227_ADD(UPD7227_4_TAG, 40, 16)
- MCFG_UPD7227_ADD(UPD7227_5_TAG, 80, 16)
+ for (int y = 0, i = 0; 2 > y; ++y)
+ for (int x = 0; 3 > x; ++x)
+ UPD7227(config, m_lcdc[i++], x * 40, y * 16);
// sound hardware
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD(SPEAKER_TAG, SPEAKER_SOUND)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+ SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
// devices
MC146818(config, m_rtc, 4.194304_MHz_XTAL);