diff --git a/src/mame/drivers/cdi.cpp b/src/mame/drivers/cdi.cpp index 3c405ef3c15..524e28e2749 100644 --- a/src/mame/drivers/cdi.cpp +++ b/src/mame/drivers/cdi.cpp @@ -163,14 +163,14 @@ INPUT_CHANGED_MEMBER(cdi_state::mcu_input) static INPUT_PORTS_START( cdi ) PORT_START("MOUSEX") - PORT_BIT(0x3ff, 0x000, IPT_MOUSE_X) PORT_SENSITIVITY(100) PORT_MINMAX(0x000, 0x3ff) PORT_KEYDELTA(2) PORT_CHANGED_MEMBER("slave", cdislave_device, mouse_update, 0) + PORT_BIT(0x3ff, 0x000, IPT_MOUSE_X) PORT_SENSITIVITY(100) PORT_MINMAX(0x000, 0x3ff) PORT_KEYDELTA(2) PORT_CHANGED_MEMBER("slave_hle", cdislave_device, mouse_update, 0) PORT_START("MOUSEY") - PORT_BIT(0x3ff, 0x000, IPT_MOUSE_Y) PORT_SENSITIVITY(100) PORT_MINMAX(0x000, 0x3ff) PORT_KEYDELTA(2) PORT_CHANGED_MEMBER("slave", cdislave_device, mouse_update, 0) + PORT_BIT(0x3ff, 0x000, IPT_MOUSE_Y) PORT_SENSITIVITY(100) PORT_MINMAX(0x000, 0x3ff) PORT_KEYDELTA(2) PORT_CHANGED_MEMBER("slave_hle", cdislave_device, mouse_update, 0) PORT_START("MOUSEBTN") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_CODE(MOUSECODE_BUTTON1) PORT_NAME("Mouse Button 1") PORT_CHANGED_MEMBER("slave", cdislave_device, mouse_update, 0) - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_CODE(MOUSECODE_BUTTON2) PORT_NAME("Mouse Button 2") PORT_CHANGED_MEMBER("slave", cdislave_device, mouse_update, 0) + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_CODE(MOUSECODE_BUTTON1) PORT_NAME("Mouse Button 1") PORT_CHANGED_MEMBER("slave_hle", cdislave_device, mouse_update, 0) + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_CODE(MOUSECODE_BUTTON2) PORT_NAME("Mouse Button 2") PORT_CHANGED_MEMBER("slave_hle", cdislave_device, mouse_update, 0) PORT_BIT(0xfc, IP_ACTIVE_HIGH, IPT_UNUSED) PORT_START("DEBUG") @@ -204,14 +204,14 @@ INPUT_PORTS_END static INPUT_PORTS_START( cdimono2 ) PORT_START("MOUSEX") - PORT_BIT(0x3ff, 0x000, IPT_MOUSE_X) PORT_SENSITIVITY(100) PORT_MINMAX(0x000, 0x3ff) PORT_KEYDELTA(2) //PORT_CHANGED_MEMBER("slave", cdislave_device, mouse_update, 0) + PORT_BIT(0x3ff, 0x000, IPT_MOUSE_X) PORT_SENSITIVITY(100) PORT_MINMAX(0x000, 0x3ff) PORT_KEYDELTA(2) //PORT_CHANGED_MEMBER("slave_hle", cdislave_device, mouse_update, 0) PORT_START("MOUSEY") - PORT_BIT(0x3ff, 0x000, IPT_MOUSE_Y) PORT_SENSITIVITY(100) PORT_MINMAX(0x000, 0x3ff) PORT_KEYDELTA(2) //PORT_CHANGED_MEMBER("slave", cdislave_device, mouse_update, 0) + PORT_BIT(0x3ff, 0x000, IPT_MOUSE_Y) PORT_SENSITIVITY(100) PORT_MINMAX(0x000, 0x3ff) PORT_KEYDELTA(2) //PORT_CHANGED_MEMBER("slave_hle", cdislave_device, mouse_update, 0) PORT_START("MOUSEBTN") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_CODE(MOUSECODE_BUTTON1) PORT_NAME("Mouse Button 1") //PORT_CHANGED_MEMBER("slave", cdislave_device, mouse_update, 0) - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_CODE(MOUSECODE_BUTTON2) PORT_NAME("Mouse Button 2") //PORT_CHANGED_MEMBER("slave", cdislave_device, mouse_update, 0) + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_CODE(MOUSECODE_BUTTON1) PORT_NAME("Mouse Button 1") //PORT_CHANGED_MEMBER("slave_hle", cdislave_device, mouse_update, 0) + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_CODE(MOUSECODE_BUTTON2) PORT_NAME("Mouse Button 2") //PORT_CHANGED_MEMBER("slave_hle", cdislave_device, mouse_update, 0) PORT_BIT(0xfc, IP_ACTIVE_HIGH, IPT_UNUSED) PORT_START("DEBUG") @@ -276,6 +276,7 @@ MACHINE_RESET_MEMBER( cdi_state, cdimono1 ) UINT16 *dst = m_planea; memcpy(dst, src, 0x8); memset(m_servo_io_regs, 0, 0x20); + memset(m_slave_io_regs, 0, 0x20); m_maincpu->reset(); @@ -408,10 +409,11 @@ READ8_MEMBER( cdi_state::servo_io_r ) verboselog(*this, 1, "SERVO Port A Data read (%02x)\n", ret); break; case m68hc05eg_io_reg_t::PORT_B_DATA: + ret = 0x08; verboselog(*this, 1, "SERVO Port B Data read (%02x)\n", ret); - ret |= 0x08; break; case m68hc05eg_io_reg_t::PORT_C_DATA: + ret |= INV_CADDYSWITCH_IN; verboselog(*this, 1, "SERVO Port C Data read (%02x)\n", ret); break; case m68hc05eg_io_reg_t::PORT_D_INPUT: @@ -511,13 +513,13 @@ WRITE8_MEMBER( cdi_state::servo_io_w ) { case m68hc05eg_io_reg_t::PORT_A_DATA: verboselog(*this, 1, "SERVO Port A Data write (%02x)\n", data); - break; + return; case m68hc05eg_io_reg_t::PORT_B_DATA: verboselog(*this, 1, "SERVO Port B Data write (%02x)\n", data); - break; + return; case m68hc05eg_io_reg_t::PORT_C_DATA: verboselog(*this, 1, "SERVO Port C Data write (%02x)\n", data); - break; + return; case m68hc05eg_io_reg_t::PORT_D_INPUT: verboselog(*this, 1, "SERVO Port D Input write (%02x)\n", data); return; @@ -708,13 +710,13 @@ WRITE8_MEMBER( cdi_state::slave_io_w ) { case m68hc05eg_io_reg_t::PORT_A_DATA: verboselog(*this, 1, "SLAVE Port A Data write (%02x)\n", data); - break; + return; case m68hc05eg_io_reg_t::PORT_B_DATA: verboselog(*this, 1, "SLAVE Port B Data write (%02x)\n", data); - break; + return; case m68hc05eg_io_reg_t::PORT_C_DATA: verboselog(*this, 1, "SLAVE Port C Data write (%02x)\n", data); - break; + return; case m68hc05eg_io_reg_t::PORT_D_INPUT: verboselog(*this, 1, "SLAVE Port D Input write (%02x)\n", data); return; @@ -868,8 +870,6 @@ static MACHINE_CONFIG_START( cdimono2, cdi_state ) MCFG_MACHINE_RESET_OVERRIDE( cdi_state, cdimono2 ) MCFG_CDI68070_ADD("scc68070") - //MCFG_CDICDIC_ADD("cdic") - //MCFG_CDISLAVE_ADD("slave") MCFG_CPU_ADD("servo", M68HC05EG, 2000000) /* Unknown clock speed, docs say 2MHz internal clock */ MCFG_CPU_PROGRAM_MAP(cdimono2_servo_mem) MCFG_CPU_ADD("slave", M68HC05EG, 2000000) /* Unknown clock speed, docs say 2MHz internal clock */ diff --git a/src/mame/includes/cdi.h b/src/mame/includes/cdi.h index 79cccbe1e90..2e7b13ada04 100644 --- a/src/mame/includes/cdi.h +++ b/src/mame/includes/cdi.h @@ -64,6 +64,13 @@ public: ACOUNT_LO = 0x1b }; + enum servo_portc_bit_t + { + INV_JUC_OUT = (1 << 2), + INV_DIV4_IN = (1 << 5), + INV_CADDYSWITCH_IN = (1 << 7) + }; + required_device m_maincpu; required_shared_ptr m_planea; required_shared_ptr m_planeb;