diff options
Diffstat (limited to 'src/mame/machine/ms7004.cpp')
-rw-r--r-- | src/mame/machine/ms7004.cpp | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/src/mame/machine/ms7004.cpp b/src/mame/machine/ms7004.cpp index 5eb66f2c64f..52183ba835b 100644 --- a/src/mame/machine/ms7004.cpp +++ b/src/mame/machine/ms7004.cpp @@ -66,8 +66,10 @@ MACHINE_CONFIG_START(ms7004_device::device_add_mconfig) MCFG_MCS48_PORT_PROG_OUT_CB(WRITELINE(m_i8243, i8243_device, prog_w)) I8243(config, m_i8243); - m_i8243->read_handler().set_constant(0); - m_i8243->write_handler().set(FUNC(ms7004_device::i8243_port_w)); + m_i8243->p4_out_cb().set(FUNC(ms7004_device::i8243_port_w<0>)); + m_i8243->p5_out_cb().set(FUNC(ms7004_device::i8243_port_w<1>)); + m_i8243->p6_out_cb().set(FUNC(ms7004_device::i8243_port_w<2>)); + m_i8243->p7_out_cb().set(FUNC(ms7004_device::i8243_port_w<3>)); SPEAKER(config, "mono").front_center(); MCFG_DEVICE_ADD(MS7004_SPK_TAG, BEEP, 3250) @@ -432,7 +434,7 @@ WRITE8_MEMBER( ms7004_device::p2_w ) DBG_LOG(2,0,( "p2_w %02x = col %d\n", data, data&15)); m_p2 = data; - m_i8243->p2_w(space, offset, data); + m_i8243->p2_w(data); } @@ -440,23 +442,24 @@ WRITE8_MEMBER( ms7004_device::p2_w ) // prog_w - //------------------------------------------------- -WRITE8_MEMBER( ms7004_device::i8243_port_w ) +template<int P> +void ms7004_device::i8243_port_w(uint8_t data) { int sense = 0; - DBG_LOG(2,0,( "8243 port %d data %02xH\n", offset + 4, data)); + DBG_LOG(2,0,( "8243 port %d data %02xH\n", P + 4, data)); if (data) { switch(data) { - case 0x01: sense = m_kbd[(offset << 2) + 0]->read(); break; - case 0x02: sense = m_kbd[(offset << 2) + 1]->read(); break; - case 0x04: sense = m_kbd[(offset << 2) + 2]->read(); break; - case 0x08: sense = m_kbd[(offset << 2) + 3]->read(); break; + case 0x01: sense = m_kbd[(P << 2) + 0]->read(); break; + case 0x02: sense = m_kbd[(P << 2) + 1]->read(); break; + case 0x04: sense = m_kbd[(P << 2) + 2]->read(); break; + case 0x08: sense = m_kbd[(P << 2) + 3]->read(); break; } m_keylatch = BIT(sense, (m_p1 & 7)); if (m_keylatch) DBG_LOG(1,0,( "row %d col %02x t1 %d\n", - (m_p1 & 7), (offset << 4 | data), m_keylatch)); + (m_p1 & 7), (P << 4 | data), m_keylatch)); } } |