summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/machine/ms7004.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/machine/ms7004.cpp')
-rw-r--r--src/mame/machine/ms7004.cpp23
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));
}
}