From c377374c8c8d9fd3a20256a3f9cf3af38dd0b70b Mon Sep 17 00:00:00 2001 From: Felipe Correa da Silva Sanches Date: Wed, 29 Oct 2025 06:04:02 -0300 Subject: [PATCH] [Access Virus] Hookup LCD to port 1 bits --- src/mame/access/acvirus.cpp | 27 ++++++++++++++++++++++----- src/mame/layout/virusb.lay | 2 +- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/mame/access/acvirus.cpp b/src/mame/access/acvirus.cpp index 654036212a3f0..b11c7553b40d0 100644 --- a/src/mame/access/acvirus.cpp +++ b/src/mame/access/acvirus.cpp @@ -105,6 +105,8 @@ class acvirus_state : public driver_device void prog_map(address_map &map) ATTR_COLD; void data_map(address_map &map) ATTR_COLD; + u8 p1_r(); + void p1_w(u8 data); void p5_w(u8 data); u8 p402_r(); @@ -123,6 +125,20 @@ void acvirus_state::machine_reset() { } +u8 acvirus_state::p1_r() +{ + return 0; // m_lcdc ready? +} + +void acvirus_state::p1_w(u8 data) +{ + m_lcdc->db_w(((data << 3) & 0xf0) | 0x08); + m_lcdc->e_w(BIT(data, 5)); + m_lcdc->rw_w(BIT(data, 6)); + m_lcdc->rs_w(BIT(data, 7)); +} + + void acvirus_state::p5_w(u8 data) { m_rombank->set_entry((data >> 4) & 15); @@ -155,13 +171,10 @@ void acvirus_state::virusa(machine_config &config) SAB80C535(config, m_maincpu, XTAL(12'000'000)); m_maincpu->set_addrmap(AS_PROGRAM, &acvirus_state::prog_map); m_maincpu->set_addrmap(AS_DATA, &acvirus_state::data_map); + m_maincpu->port_in_cb<1>().set(FUNC(acvirus_state::p1_r)); + m_maincpu->port_out_cb<1>().set(FUNC(acvirus_state::p1_w)); m_maincpu->port_out_cb<5>().set(FUNC(acvirus_state::p5_w)); -/* - This may be hooked either to memorymap or to some of the ports: - map(0x?, 0x?).rw("lcdc", FUNC(hd44780_device::data_r), FUNC(hd44780_device::data_w)).umask16(0x00ff); - map(0x?, 0x?).rw("lcdc", FUNC(hd44780_device::control_r), FUNC(hd44780_device::control_w)).umask16(0x00ff); -*/ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD)); screen.set_refresh_hz(60); screen.set_screen_update("lcdc", FUNC(hd44780_device::screen_update)); @@ -186,6 +199,8 @@ void acvirus_state::virusb(machine_config &config) SAB80C535(config, m_maincpu, XTAL(12'000'000)); m_maincpu->set_addrmap(AS_PROGRAM, &acvirus_state::prog_map); m_maincpu->set_addrmap(AS_DATA, &acvirus_state::data_map); + m_maincpu->port_in_cb<1>().set(FUNC(acvirus_state::p1_r)); + m_maincpu->port_out_cb<1>().set(FUNC(acvirus_state::p1_w)); m_maincpu->port_out_cb<5>().set(FUNC(acvirus_state::p5_w)); screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD)); @@ -214,6 +229,8 @@ void acvirus_state::virusc(machine_config &config) SAB80C535(config, m_maincpu, XTAL(24'000'000)); // 515 really m_maincpu->set_addrmap(AS_PROGRAM, &acvirus_state::prog_map); m_maincpu->set_addrmap(AS_DATA, &acvirus_state::data_map); + m_maincpu->port_in_cb<1>().set(FUNC(acvirus_state::p1_r)); + m_maincpu->port_out_cb<1>().set(FUNC(acvirus_state::p1_w)); m_maincpu->port_out_cb<5>().set(FUNC(acvirus_state::p5_w)); screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD)); diff --git a/src/mame/layout/virusb.lay b/src/mame/layout/virusb.lay index a8cc56c4551a8..91b7662d45a94 100644 --- a/src/mame/layout/virusb.lay +++ b/src/mame/layout/virusb.lay @@ -735,7 +735,7 @@ license:CC0-1.0 - +