summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Curt Coder <curtcoder@mail.com>2026-04-27 16:43:21 +0300
committer Curt Coder <curtcoder@mail.com>2026-04-27 16:43:21 +0300
commit9a20965ce119233c14d0664b10f5af6e99058402 (patch)
tree93e2fa6c9b93f1c00faee1a9f16d247befa8df35
parentebfb8a5eb7b4bfab786e445eb8d02fbb3833f4e4 (diff)
commodore/plus4: Added Diag264 v0.97 kernal ROMs. [Curt Coder]
mos7360: Fixed input clock handling. [Curt Coder] New working software list items ------------------------------- plus4_cart: Diag 264 (v0.97, PAL), Diag 264 (v0.97, NTSC) [Curt Coder]
-rw-r--r--hash/plus4_cart.xml8
-rw-r--r--src/devices/sound/mos7360.cpp15
-rw-r--r--src/devices/sound/mos7360.h1
-rw-r--r--src/mame/commodore/plus4.cpp8
4 files changed, 22 insertions, 10 deletions
diff --git a/hash/plus4_cart.xml b/hash/plus4_cart.xml
index 6f24ac3c96f..8bb12c75d45 100644
--- a/hash/plus4_cart.xml
+++ b/hash/plus4_cart.xml
@@ -149,27 +149,27 @@ license:CC0-1.0
</software>
<software name="diag264p">
- <description>Diag 264 (PAL)</description>
+ <description>Diag 264 (v0.97, PAL)</description>
<year>2012</year>
<publisher>crock</publisher>
<sharedfeat name="compatibility" value="PAL"/>
<part name="cart" interface="plus4_cart">
<dataarea name="c1l" size="0x4000">
- <rom name="diag264c_pal.bin" size="0x4000" crc="c314c674" sha1="4acadaf84ecc3eb252ad765fdab583c45e771fd0" offset="0" />
+ <rom name="diag264_097_pal_lowrom.bin" size="16384" crc="743eac8f" sha1="af4d1224199e7f68f3be7a845e4e3af97bbd6d06" offset="0" />
</dataarea>
</part>
</software>
<software name="diag264n" cloneof="diag264p">
- <description>Diag 264 (NTSC)</description>
+ <description>Diag 264 (v0.97, NTSC)</description>
<year>2012</year>
<publisher>crock</publisher>
<sharedfeat name="compatibility" value="NTSC"/>
<part name="cart" interface="plus4_cart">
<dataarea name="c1l" size="0x4000">
- <rom name="diag264c_ntsc.bin" size="0x4000" crc="9398ae1c" sha1="d75a28a1a9727914620d57157768c3a84b23544a" offset="0" />
+ <rom name="diag264_097_ntsc_lowrom.bin" size="16384" crc="b7f74cdf" sha1="efd6cecac83d5e7e44f7e56ec369b4d408c7c6a2" offset="0" />
</dataarea>
</part>
</software>
diff --git a/src/devices/sound/mos7360.cpp b/src/devices/sound/mos7360.cpp
index ae0054c451a..decc41af452 100644
--- a/src/devices/sound/mos7360.cpp
+++ b/src/devices/sound/mos7360.cpp
@@ -956,6 +956,7 @@ void mos7360_device::write(offs_t offset, uint8_t data, int &cs0, int &cs1)
m_y_end = m_y_begin + 192;
}
m_chargenaddr = CHARGENADDR;
+ set_clocks();
}
break;
case 0xff07:
@@ -975,6 +976,7 @@ void mos7360_device::write(offs_t offset, uint8_t data, int &cs0, int &cs1)
}
DBG_LOG(3, "port_w", ("%s %s\n", data & 0x40 ? "ntsc" : "pal", data & 0x20 ? "hori freeze" : ""));
m_chargenaddr = CHARGENADDR;
+ set_clocks();
}
break;
case 0xff08:
@@ -1036,10 +1038,6 @@ void mos7360_device::write(offs_t offset, uint8_t data, int &cs0, int &cs1)
m_reg[offset & 0x1f] = data;
m_chargenaddr = CHARGENADDR;
DBG_LOG(3, "port_w", ("chargen %.4x %s %d\n", CHARGENADDR, data & 2 ? "" : "doubleclock", data & 1));
- if (BIT(data, 1))
- m_cpu->set_clock(clock());
- else
- m_cpu->set_clock(clock() * 2);
}
break;
case 0xff14:
@@ -1187,3 +1185,12 @@ int mos7360_device::cs1_r(offs_t offset)
return 1;
}
+
+void mos7360_device::set_clocks()
+{
+ bool ntsc = BIT(m_reg[0x07], 6);
+ set_clock_scale(1.0 / ((5 - ntsc) * 4));
+
+ bool doubleclock = !BIT(m_reg[0x06], 4);
+ m_cpu->set_clock(clock() << doubleclock);
+}
diff --git a/src/devices/sound/mos7360.h b/src/devices/sound/mos7360.h
index d09e6eab4b3..ddce8e11a6d 100644
--- a/src/devices/sound/mos7360.h
+++ b/src/devices/sound/mos7360.h
@@ -128,6 +128,7 @@ protected:
TIMER_CALLBACK_MEMBER(raster_interrupt_gen);
int cs0_r(offs_t offset);
int cs1_r(offs_t offset);
+ void set_clocks();
const address_space_config m_videoram_space_config;
diff --git a/src/mame/commodore/plus4.cpp b/src/mame/commodore/plus4.cpp
index 1c69a43ebe5..ce9ec944467 100644
--- a/src/mame/commodore/plus4.cpp
+++ b/src/mame/commodore/plus4.cpp
@@ -940,7 +940,7 @@ void plus4_state::plus4p(machine_config &config)
{
plus4(config);
m_maincpu->set_clock(XTAL(17'734'470)/20);
- m_ted->set_clock(XTAL(17'734'470)/5/4);
+ m_ted->set_clock(XTAL(17'734'470));
// software list
SOFTWARE_LIST(config, "cart_list").set_original("plus4_cart");
@@ -961,7 +961,7 @@ void plus4_state::plus4n(machine_config &config)
{
plus4(config);
m_maincpu->set_clock(XTAL(14'318'181)/16);
- m_ted->set_clock(XTAL(14'318'181)/4/4);
+ m_ted->set_clock(XTAL(14'318'181));
// software list
SOFTWARE_LIST(config, "cart_list").set_original("plus4_cart");
@@ -1108,6 +1108,8 @@ ROM_START( plus4 )
ROMX_LOAD( "318005-05.u24", 0x4000, 0x4000, CRC(70295038) SHA1(a3d9e5be091b98de39a046ab167fb7632d053682), ROM_BIOS(1) )
ROM_SYSTEM_BIOS( 2, "jiffydos", "JiffyDOS v6.01" )
ROMX_LOAD( "jiffydos plus4.u24", 0x0000, 0x8000, CRC(818d3f45) SHA1(9bc1b1c3da9ca642deae717905f990d8e36e6c3b), ROM_BIOS(2) ) // first half contains R5 kernal
+ ROM_SYSTEM_BIOS( 3, "diag264", "Diag264 v0.97" )
+ ROMX_LOAD( "diag264_097_ntsc_kernal.u24", 0x4000, 0x4000, CRC(6423deaa) SHA1(6a3f63f6cb3cee2a0dd153fe3fb60968a834dd6c), ROM_BIOS(3) )
ROM_LOAD( "318006-01.u23", 0x0000, 0x4000, CRC(74eaae87) SHA1(161c96b4ad20f3a4f2321808e37a5ded26a135dd) )
@@ -1135,6 +1137,8 @@ ROM_START( plus4p )
ROMX_LOAD( "318004-04.u24", 0x4000, 0x4000, CRC(be54ed79) SHA1(514ad3c29d01a2c0a3b143d9c1d4143b1912b793), ROM_BIOS(1) )
ROM_SYSTEM_BIOS( 2, "r5", "Revision 5" )
ROMX_LOAD( "318004-05.u24", 0x4000, 0x4000, CRC(71c07bd4) SHA1(7c7e07f016391174a557e790c4ef1cbe33512cdb), ROM_BIOS(2) )
+ ROM_SYSTEM_BIOS( 3, "diag264", "Diag264 v0.97" )
+ ROMX_LOAD( "diag264_097_pal_kernal.u24", 0x4000, 0x4000, CRC(bf0b3657) SHA1(47c731739f6c1bd1c8446b2cacfe1eaddb5df966), ROM_BIOS(3) )
ROM_REGION( 0x8000, "function", 0 )
ROM_LOAD( "317053-01.u25", 0x0000, 0x4000, CRC(4fd1d8cb) SHA1(3b69f6e7cb4c18bb08e203fb18b7dabfa853390f) )