From e6155387a08ff8be08ec873c03c71a6f04ac2208 Mon Sep 17 00:00:00 2001 From: hap Date: Tue, 20 Dec 2016 18:33:45 +0100 Subject: [PATCH] cop400: correct internal RAM memorymap for COP410 [Sean Riddle] --- src/devices/cpu/cop400/cop400.cpp | 11 ++++--- src/mame/drivers/hh_cop400.cpp | 12 +++---- src/mame/layout/funrlgl.lay | 54 ++++++++++++++++++++++--------- 3 files changed, 51 insertions(+), 26 deletions(-) diff --git a/src/devices/cpu/cop400/cop400.cpp b/src/devices/cpu/cop400/cop400.cpp index fd0164f83a1..dc9ca865e3f 100644 --- a/src/devices/cpu/cop400/cop400.cpp +++ b/src/devices/cpu/cop400/cop400.cpp @@ -150,7 +150,10 @@ static ADDRESS_MAP_START( program_2kb, AS_PROGRAM, 8, cop400_cpu_device ) ADDRESS_MAP_END static ADDRESS_MAP_START( data_32b, AS_DATA, 8, cop400_cpu_device ) - AM_RANGE(0x00, 0x1f) AM_RAM + AM_RANGE(0x00, 0x07) AM_MIRROR(0x08) AM_RAM + AM_RANGE(0x10, 0x17) AM_MIRROR(0x08) AM_RAM + AM_RANGE(0x20, 0x27) AM_MIRROR(0x08) AM_RAM + AM_RANGE(0x30, 0x37) AM_MIRROR(0x08) AM_RAM ADDRESS_MAP_END static ADDRESS_MAP_START( data_64b, AS_DATA, 8, cop400_cpu_device ) @@ -231,17 +234,17 @@ cop400_cpu_device::cop400_cpu_device(const machine_config &mconfig, device_type } cop401_cpu_device::cop401_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : cop400_cpu_device(mconfig, COP401, "COP401", tag, owner, clock, "cop401", __FILE__, 9, 5, COP410_FEATURE, 0xf, 0xf, 0, false, false, nullptr, ADDRESS_MAP_NAME(data_32b)) + : cop400_cpu_device(mconfig, COP401, "COP401", tag, owner, clock, "cop401", __FILE__, 9, 6, COP410_FEATURE, 0xf, 0xf, 0, false, false, nullptr, ADDRESS_MAP_NAME(data_32b)) { } cop410_cpu_device::cop410_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : cop400_cpu_device(mconfig, COP410, "COP410", tag, owner, clock, "cop410", __FILE__, 9, 5, COP410_FEATURE, 0xf, 0xf, 0, false, false, ADDRESS_MAP_NAME(program_512b), ADDRESS_MAP_NAME(data_32b)) + : cop400_cpu_device(mconfig, COP410, "COP410", tag, owner, clock, "cop410", __FILE__, 9, 6, COP410_FEATURE, 0xf, 0xf, 0, false, false, ADDRESS_MAP_NAME(program_512b), ADDRESS_MAP_NAME(data_32b)) { } cop411_cpu_device::cop411_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : cop400_cpu_device(mconfig, COP411, "COP411", tag, owner, clock, "cop411", __FILE__, 9, 5, COP410_FEATURE, 0x7, 0x3, 0, false, false, ADDRESS_MAP_NAME(program_512b), ADDRESS_MAP_NAME(data_32b)) + : cop400_cpu_device(mconfig, COP411, "COP411", tag, owner, clock, "cop411", __FILE__, 9, 6, COP410_FEATURE, 0x7, 0x3, 0, false, false, ADDRESS_MAP_NAME(program_512b), ADDRESS_MAP_NAME(data_32b)) { } diff --git a/src/mame/drivers/hh_cop400.cpp b/src/mame/drivers/hh_cop400.cpp index 1e9fd1c1620..d56a149e5d2 100644 --- a/src/mame/drivers/hh_cop400.cpp +++ b/src/mame/drivers/hh_cop400.cpp @@ -612,7 +612,7 @@ WRITE8_MEMBER(funjacks_state::write_d) { // D: led grid + input mux m_inp_mux = data; - m_d = data ^ 0xf; + m_d = ~data & 0xf; display_matrix(2, 4, m_l, m_d); } @@ -671,8 +671,8 @@ INPUT_PORTS_END static MACHINE_CONFIG_START( funjacks, funjacks_state ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", COP410, 2000000) // approximation - RC osc. R=47K, C=56pf - MCFG_COP400_CONFIG(COP400_CKI_DIVISOR_16, COP400_CKO_OSCILLATOR_OUTPUT, false) // guessed + MCFG_CPU_ADD("maincpu", COP410, 1000000) // approximation - RC osc. R=47K, C=56pf + MCFG_COP400_CONFIG(COP400_CKI_DIVISOR_8, COP400_CKO_OSCILLATOR_OUTPUT, false) // guessed MCFG_COP400_WRITE_D_CB(WRITE8(funjacks_state, write_d)) MCFG_COP400_WRITE_L_CB(WRITE8(funjacks_state, write_l)) MCFG_COP400_WRITE_G_CB(WRITE8(funjacks_state, write_g)) @@ -727,7 +727,7 @@ public: WRITE8_MEMBER(funrlgl_state::write_d) { // D: led grid - m_d = data ^ 0xf; + m_d = ~data & 0xf; display_matrix(4, 4, m_l, m_d); } @@ -771,8 +771,8 @@ INPUT_CHANGED_MEMBER(funrlgl_state::reset_button) static MACHINE_CONFIG_START( funrlgl, funrlgl_state ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", COP410, 2000000) // approximation - RC osc. R=51K, C=91pf - MCFG_COP400_CONFIG(COP400_CKI_DIVISOR_16, COP400_CKO_OSCILLATOR_OUTPUT, false) // guessed + MCFG_CPU_ADD("maincpu", COP410, 1000000) // approximation - RC osc. R=51K, C=91pf + MCFG_COP400_CONFIG(COP400_CKI_DIVISOR_8, COP400_CKO_OSCILLATOR_OUTPUT, true) // guessed MCFG_COP400_WRITE_D_CB(WRITE8(funrlgl_state, write_d)) MCFG_COP400_WRITE_L_CB(WRITE8(funrlgl_state, write_l)) MCFG_COP400_WRITE_G_CB(WRITE8(funrlgl_state, write_g)) diff --git a/src/mame/layout/funrlgl.lay b/src/mame/layout/funrlgl.lay index 7af9fb61ce8..408152ab748 100644 --- a/src/mame/layout/funrlgl.lay +++ b/src/mame/layout/funrlgl.lay @@ -18,27 +18,49 @@ - + - + - - - - - - + + + + + + - - + + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + +