diff --git a/src/emu/machine/6522via.c b/src/emu/machine/6522via.c index 5afa265e9cb..d21e65e0804 100644 --- a/src/emu/machine/6522via.c +++ b/src/emu/machine/6522via.c @@ -1103,11 +1103,11 @@ WRITE_LINE_MEMBER( via6522_device::write_cb1 ) WRITE_LINE_MEMBER( via6522_device::write_cb2 ) { - /* CB2 is in input mode */ - if (CB2_INPUT(m_pcr)) + /* the new state has caused a transition */ + if (m_in_cb2 != state) { - /* the new state has caused a transition */ - if (m_in_cb2 != state) + /* CB2 is in input mode */ + if (CB2_INPUT(m_pcr)) { /* handle the active transition */ if ((state && CB2_LOW_TO_HIGH(m_pcr)) || (!state && CB2_HIGH_TO_LOW(m_pcr))) @@ -1115,8 +1115,9 @@ WRITE_LINE_MEMBER( via6522_device::write_cb2 ) /* mark the IRQ */ set_int(INT_CB2); } - /* set the new value for CB2 */ - m_in_cb2 = state; } + + /* set the new value for CB2 */ + m_in_cb2 = state; } } diff --git a/src/mess/drivers/clcd.c b/src/mess/drivers/clcd.c index 5e970993c50..70463a2ad61 100644 --- a/src/mess/drivers/clcd.c +++ b/src/mess/drivers/clcd.c @@ -45,9 +45,10 @@ public: m_col5(*this,"COL5"), m_col6(*this,"COL6"), m_col7(*this,"COL7"), - m_special(*this,"SPECIAL") - , - m_maincpu(*this, "maincpu") { + m_special(*this,"SPECIAL"), + m_maincpu(*this, "maincpu"), + m_via0(*this, "via0") + { } TILE_GET_INFO_MEMBER(get_clcd_tilemap_tile_info) @@ -202,20 +203,12 @@ public: } keyShift = 0x10000; + + m_via0->write_cb2( ( keyData & keyShift ) != 0 ); } } } - READ8_MEMBER( via0_pb_r ) - { - return 0; - } - - READ_LINE_MEMBER( via0_cb2_r ) - { - return ( keyData & keyShift ) != 0; - } - WRITE_LINE_MEMBER( via0_cb1_w ) { int newKeyClockState = state & 1; @@ -226,6 +219,8 @@ public: if( keyClockState ) { keyShift >>= 1; + + m_via0->write_cb2( ( keyData & keyShift ) != 0 ); } } } @@ -249,6 +244,7 @@ private: required_ioport m_col7; required_ioport m_special; required_device m_maincpu; + required_device m_via0; }; static ADDRESS_MAP_START( clcd_mem, AS_PROGRAM, 8, clcd_state ) @@ -397,8 +393,6 @@ static MACHINE_CONFIG_START( clcd, clcd_state ) MCFG_CPU_PROGRAM_MAP(clcd_mem) MCFG_DEVICE_ADD("via0", VIA6522, 0) - MCFG_VIA6522_READPB_HANDLER(READ8(clcd_state, via0_pb_r)) - MCFG_VIA6522_READCB2_HANDLER(READLINE(clcd_state, via0_cb2_r)) MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(clcd_state, via0_pa_w)) MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(clcd_state, via0_pb_w)) MCFG_VIA6522_CB1_HANDLER(WRITELINE(clcd_state, via0_cb1_w))