diff options
Diffstat (limited to 'src/mame/drivers/hx20.cpp')
-rw-r--r-- | src/mame/drivers/hx20.cpp | 79 |
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); |