summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/cdi.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/cdi.cpp')
-rw-r--r--src/mame/drivers/cdi.cpp32
1 files changed, 21 insertions, 11 deletions
diff --git a/src/mame/drivers/cdi.cpp b/src/mame/drivers/cdi.cpp
index 94baae55947..aa4483b9d65 100644
--- a/src/mame/drivers/cdi.cpp
+++ b/src/mame/drivers/cdi.cpp
@@ -44,8 +44,16 @@ TODO:
#include "cdi.lh"
-#define CLOCK_A XTAL(30'000'000)
-#define CLOCK_B XTAL(19'660'800)
+// TODO: NTSC system clock is 30.2098 MHz; additional 4.9152 MHz XTAL provided for UART
+#define CLOCK_A 30_MHz_XTAL
+
+/*----------- debug defines -----------*/
+
+#define VERBOSE_LEVEL (1)
+
+#define ENABLE_VERBOSE_LOG (0)
+
+#define ENABLE_UART_PRINTING (0)
#if ENABLE_VERBOSE_LOG
static inline void ATTR_PRINTF(3,4) verboselog(device_t& device, int n_level, const char *s_fmt, ...)
@@ -827,7 +835,7 @@ void cdi_state::cdimono1_base(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &cdi_state::cdimono1_mem);
m_maincpu->set_addrmap(m68000_base_device::AS_CPU_SPACE, &cdi_state::cdi070_cpuspace);
- MCD212(config, m_mcd212, 0);
+ MCD212(config, m_mcd212, CLOCK_A);
m_mcd212->set_screen("screen");
m_mcd212->int1_callback().set(m_scc, FUNC(cdi68070_device::int1_w));
m_mcd212->int2_callback().set(m_scc, FUNC(cdi68070_device::int2_w));
@@ -854,7 +862,9 @@ void cdi_state::cdimono1_base(machine_config &config)
CDI_68070(config, m_scc, 0, "maincpu");
m_scc->iack4_callback().set_constant(0x80);
- CDI_CDIC(config, m_cdic, 0);
+ // IMS66490 CDIC input clocks are 22.5792 MHz and 19.3536 MHz (latter is generated by PLL circuit incorporating 19.3575 MHz XTAL)
+ // DSP input clock is 7.5264 MHz
+ CDI_CDIC(config, m_cdic, 45.1584_MHz_XTAL / 2);
m_cdic->int_callback().set(m_scc, FUNC(cdi68070_device::in4_w));
CDI_SLAVE(config, m_slave_hle, 0);
@@ -874,7 +884,7 @@ void cdi_state::cdimono1_base(machine_config &config)
m_cdda->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
m_cdda->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
- MK48T08(config, "mk48t08", 0);
+ MK48T08(config, "mk48t08");
}
// CD-i model 220 (Mono-II, NTSC)
@@ -884,7 +894,7 @@ void cdi_state::cdimono2(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &cdi_state::cdimono2_mem);
m_maincpu->set_addrmap(m68000_base_device::AS_CPU_SPACE, &cdi_state::cdi070_cpuspace);
- MCD212(config, m_mcd212, 0);
+ MCD212(config, m_mcd212, CLOCK_A);
m_mcd212->set_screen("screen");
m_mcd212->int1_callback().set(m_scc, FUNC(cdi68070_device::int1_w));
m_mcd212->int2_callback().set(m_scc, FUNC(cdi68070_device::int2_w));
@@ -911,9 +921,9 @@ void cdi_state::cdimono2(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE( cdi_state, cdimono2 )
CDI_68070(config, m_scc, 0, "maincpu");
- M68HC05EG(config, m_servo, XTAL(4'000'000));
+ M68HC05EG(config, m_servo, 4_MHz_XTAL); // FIXME: actually MC68HC05C8
m_servo->set_addrmap(AS_PROGRAM, &cdi_state::cdimono2_servo_mem);
- M68HC05EG(config, m_slave, XTAL(4'000'000));
+ M68HC05EG(config, m_slave, 4_MHz_XTAL); // FIXME: actually MC68HC05C8
m_slave->set_addrmap(AS_PROGRAM, &cdi_state::cdimono2_slave_mem);
CDROM(config, "cdrom").set_interface("cdi_cdrom");
@@ -942,7 +952,7 @@ void cdi_state::cdi910(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &cdi_state::cdi910_mem);
m_maincpu->set_addrmap(m68000_base_device::AS_CPU_SPACE, &cdi_state::cdi070_cpuspace);
- MCD212(config, m_mcd212, 0);
+ MCD212(config, m_mcd212, CLOCK_A);
m_mcd212->set_screen("screen");
m_mcd212->int1_callback().set(m_scc, FUNC(cdi68070_device::int1_w));
m_mcd212->int2_callback().set(m_scc, FUNC(cdi68070_device::int2_w));
@@ -969,9 +979,9 @@ void cdi_state::cdi910(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE( cdi_state, cdimono2 )
CDI_68070(config, m_scc, 0, "maincpu");
- M68HC05EG(config, m_servo, XTAL(4'000'000));
+ M68HC05EG(config, m_servo, 4_MHz_XTAL); // FIXME: actually MC68HSC05C8
m_servo->set_addrmap(AS_PROGRAM, &cdi_state::cdimono2_servo_mem);
- M68HC05EG(config, m_slave, XTAL(4'000'000));
+ M68HC05EG(config, m_slave, 4_MHz_XTAL); // FIXME: actually MC68HSC05C8
m_slave->set_addrmap(AS_PROGRAM, &cdi_state::cdimono2_slave_mem);
CDROM(config, "cdrom").set_interface("cdi_cdrom");