From 6c3422c57986dff20434913e7b15bc64fb5649eb Mon Sep 17 00:00:00 2001 From: smf- Date: Wed, 31 May 2023 09:56:54 +0100 Subject: commodore/clcd.cpp added newer, May 1985 bios, from Jeff Porter's prototype & fixed the April 1985 bios labels. [Jeff Porter, Mike Naberezny, smf] --- src/mame/commodore/clcd.cpp | 70 ++++++++++++++++++++++++++------------------- 1 file changed, 41 insertions(+), 29 deletions(-) diff --git a/src/mame/commodore/clcd.cpp b/src/mame/commodore/clcd.cpp index 0eb6f13abbb..644d089f262 100644 --- a/src/mame/commodore/clcd.cpp +++ b/src/mame/commodore/clcd.cpp @@ -204,10 +204,10 @@ public: switch (m_mmu_mode) { case MMU_MODE_KERN: - m_bankdev[0]->set_bank(0x04 + 0x00); + m_bankdev[0]->set_bank(0x1000 / 0x400); update_mmu_offset5(); - m_bankdev[2]->set_bank(0x20 + 0xc0); - m_bankdev[3]->set_bank(0x30 + 0xc0); + m_bankdev[2]->set_bank(0x38000 / 0x400); + m_bankdev[3]->set_bank(0x3c000 / 0x400); break; case MMU_MODE_APPL: @@ -218,17 +218,17 @@ public: break; case MMU_MODE_RAM: - m_bankdev[0]->set_bank(0x04); - m_bankdev[1]->set_bank(0x10); - m_bankdev[2]->set_bank(0x20); - m_bankdev[3]->set_bank(0x30); + m_bankdev[0]->set_bank(0x1000 / 0x400); + m_bankdev[1]->set_bank(0x4000 / 0x400); + m_bankdev[2]->set_bank(0x8000 / 0x400); + m_bankdev[3]->set_bank(0xc000 / 0x400); break; case MMU_MODE_TEST: - m_bankdev[0]->set_bank(0x04 + 0x200); - m_bankdev[1]->set_bank(0x10 + 0x200); - m_bankdev[2]->set_bank(0x20 + 0x200); - m_bankdev[3]->set_bank(0x30 + 0x200); + m_bankdev[0]->set_bank(0x81000 / 0x400); + m_bankdev[1]->set_bank(0x84000 / 0x400); + m_bankdev[2]->set_bank(0x88000 / 0x400); + m_bankdev[3]->set_bank(0x8c000 / 0x400); break; } } @@ -238,7 +238,7 @@ public: { if (m_mmu_mode == MMU_MODE_APPL) { - m_bankdev[0]->set_bank(0x04 + m_mmu_offset1); + m_bankdev[0]->set_bank(((0x1000 / 0x400) + m_mmu_offset1) & 0xff); } } @@ -246,7 +246,7 @@ public: { if (m_mmu_mode == MMU_MODE_APPL) { - m_bankdev[1]->set_bank((0x10 + m_mmu_offset2) & 0xff); + m_bankdev[1]->set_bank(((0x4000 / 0x400) + m_mmu_offset2) & 0xff); } } @@ -254,7 +254,7 @@ public: { if (m_mmu_mode == MMU_MODE_APPL) { - m_bankdev[2]->set_bank((0x20 + m_mmu_offset3) & 0xff); + m_bankdev[2]->set_bank(((0x8000 / 0x400) + m_mmu_offset3) & 0xff); } } @@ -262,7 +262,7 @@ public: { if (m_mmu_mode == MMU_MODE_APPL) { - m_bankdev[3]->set_bank((0x30 + m_mmu_offset4) & 0xff); + m_bankdev[3]->set_bank(((0xc000 / 0x400) + m_mmu_offset4) & 0xff); } } @@ -270,7 +270,7 @@ public: { if (m_mmu_mode == MMU_MODE_KERN) { - m_bankdev[1]->set_bank((0x10 + m_mmu_offset5) & 0xff); + m_bankdev[1]->set_bank(((0x4000 / 0x400) + m_mmu_offset5) & 0xff); } } @@ -519,7 +519,7 @@ public: void power_on_reset() { if (!m_power && m_power_on) - m_maincpu->reset(); + machine().schedule_soft_reset(); } ram_device *ram() @@ -613,10 +613,10 @@ void clcd_state::clcd_mem(address_map &map) map(0xfe00, 0xfe00).mirror(0x7f).w(FUNC(clcd_state::mmu_offset3_w)); map(0xfe80, 0xfe80).mirror(0x7f).w(FUNC(clcd_state::mmu_offset4_w)); map(0xff00, 0xff00).mirror(0x7f).w(FUNC(clcd_state::mmu_offset5_w)); - map(0xff80, 0xff80).mirror(0x7c).w(FUNC(clcd_state::lcd_scrollx_w)); - map(0xff81, 0xff81).mirror(0x7c).w(FUNC(clcd_state::lcd_scrolly_w)); - map(0xff82, 0xff82).mirror(0x7c).w(FUNC(clcd_state::lcd_mode_w)); - map(0xff83, 0xff83).mirror(0x7c).w(FUNC(clcd_state::lcd_size_w)); + map(0xff80, 0xff80).mirror(0x0c).w(FUNC(clcd_state::lcd_scrollx_w)); + map(0xff81, 0xff81).mirror(0x0c).w(FUNC(clcd_state::lcd_scrolly_w)); + map(0xff82, 0xff82).mirror(0x0c).w(FUNC(clcd_state::lcd_mode_w)); + map(0xff83, 0xff83).mirror(0x0c).w(FUNC(clcd_state::lcd_size_w)); } /* Input ports */ @@ -794,17 +794,29 @@ void clcd_state::clcd(machine_config &config) ROM_START( clcd ) ROM_REGION( 0x20000, "maincpu", 0 ) - ROM_LOAD( "ss-calc-13apr.u105", 0x00000, 0x8000, CRC(88a587a7) SHA1(b08f3169b7cd696bb6a9b6e6e87a077345377ac4)) - ROM_LOAD( "sept-m-13apr.u104", 0x08000, 0x8000, CRC(41028c3c) SHA1(fcab6f0bbeef178eb8e5ecf82d9c348d8f318a8f)) - ROM_LOAD( "sizapr.u103", 0x10000, 0x8000, CRC(0aa91d9f) SHA1(f0842f370607f95d0a0ec6afafb81bc063c32745)) - ROM_LOAD( "kizapr.u102", 0x18000, 0x8000, CRC(59103d52) SHA1(e49c20b237a78b54c2cb26b133d5903bb60bd8ef)) + ROM_SYSTEM_BIOS( 0, "apr85", "Bil Herd Prototype" ) + ROMX_LOAD( "ss,calc 13apr.u105", 0x000000, 0x0008000, CRC(88a587a7) SHA1(b08f3169b7cd696bb6a9b6e6e87a077345377ac4), ROM_BIOS(0)) + ROMX_LOAD( "wp,t,m 13apr.u104", 0x008000, 0x0008000, CRC(41028c3c) SHA1(fcab6f0bbeef178eb8e5ecf82d9c348d8f318a8f), ROM_BIOS(0)) + ROMX_LOAD( "s12apr.u103", 0x010000, 0x0008000, CRC(0aa91d9f) SHA1(f0842f370607f95d0a0ec6afafb81bc063c32745), ROM_BIOS(0)) + ROMX_LOAD( "k12apr.u102", 0x018000, 0x0008000, CRC(59103d52) SHA1(e49c20b237a78b54c2cb26b133d5903bb60bd8ef), ROM_BIOS(0)) // Patch RTC register table by swapping day & month values - ROM_FILL(0x1c216, 1, 0x09) - ROM_FILL(0x1c217, 1, 0x07) + ROMX_FILL(0x1c216, 1, 0x09, ROM_BIOS(0)) + ROMX_FILL(0x1c217, 1, 0x07, ROM_BIOS(0)) + + ROM_SYSTEM_BIOS( 1, "may85", "Jeff Porter prototype" ) + ROMX_LOAD( "s 3-24-85.u108", 0x000000, 0x008000, CRC(52db0ee9) SHA1(bea1e04fb88d205ebac7a1dbe2f5e98f84e7a3a7), ROM_BIOS(1) ) + ROMX_LOAD( "calc.u107", 0x008000, 0x008000, CRC(c1a09460) SHA1(5fe08cd7a075e33164edef60e18f090163bbf35c), ROM_BIOS(1) ) + ROMX_LOAD( "term,wp 5-30.u106", 0x010000, 0x008000, CRC(8dfabe3c) SHA1(da7f65edb0613ae10f702ed479b68ce17cf4ef97), ROM_BIOS(1) ) + ROMX_LOAD( "k5-28 newi_o.u105", 0x018000, 0x008000, CRC(5a8728ad) SHA1(64fd82ab51fe51758d6df9abe826a10dafdc63a5), ROM_BIOS(1) ) ROM_REGION( 0x800, "lcd_char_rom", 0 ) - ROM_LOAD( "lcd-char-rom.u16", 0x00000, 0x800, CRC(7b6d3867) SHA1(cb594801438849f933ddc3e64b03b56f42f59f09)) - ROM_IGNORE(0x800) + ROMX_LOAD( "lcd-char-rom.u16", 0x000000, 0x000800, CRC(7b6d3867) SHA1(cb594801438849f933ddc3e64b03b56f42f59f09), ROM_BIOS(0) ) + ROM_IGNORE( 0x000800 ) + + ROMX_LOAD( "char rom.u16", 0x000000, 0x000800, CRC(e010c384) SHA1(0b74a1fe7083614860d3f325d920e3c0281e23d6), ROM_BIOS(1) ) + ROM_IGNORE( 0x001800 ) + + ROM_DEFAULT_BIOS("may85") ROM_END } // anonymous namespace -- cgit v1.2.3