diff options
author | 2014-04-29 15:27:41 +0000 | |
---|---|---|
committer | 2014-04-29 15:27:41 +0000 | |
commit | cbe9e22672151eb7a6300c3065b5d12a07ffeb61 (patch) | |
tree | 1e9ee1b1ea2ac66a5917496813bd9fe9769a1853 /src | |
parent | 624d84ded6424606192862620df9854fc9232348 (diff) |
mos6530: updated to use devcb2. nw.
Diffstat (limited to 'src')
-rw-r--r-- | src/emu/bus/ieee488/c2040.c | 21 | ||||
-rw-r--r-- | src/emu/bus/ieee488/c8050.c | 35 | ||||
-rw-r--r-- | src/emu/machine/mos6530.c | 120 | ||||
-rw-r--r-- | src/emu/machine/mos6530.h | 52 | ||||
-rw-r--r-- | src/mess/drivers/kim1.c | 29 | ||||
-rw-r--r-- | src/mess/drivers/mk2.c | 15 |
6 files changed, 118 insertions, 154 deletions
diff --git a/src/emu/bus/ieee488/c2040.c b/src/emu/bus/ieee488/c2040.c index b49b0a8a9ac..42e42612399 100644 --- a/src/emu/bus/ieee488/c2040.c +++ b/src/emu/bus/ieee488/c2040.c @@ -376,7 +376,7 @@ WRITE8_MEMBER( c2040_device::via_pb_w ) //------------------------------------------------- -// mos6530_interface miot_intf uk3 +// mos6530 uk3 //------------------------------------------------- READ8_MEMBER( c2040_device::miot_pb_r ) @@ -438,15 +438,6 @@ WRITE8_MEMBER( c2040_device::miot_pb_w ) } } -static MOS6530_INTERFACE( miot_intf ) -{ - DEVCB_NULL, - DEVCB_DEVICE_MEMBER(FDC_TAG, c2040_fdc_t, write), - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c2040_device, miot_pb_r), - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c2040_device, miot_pb_w) -}; - - //------------------------------------------------- // SLOT_INTERFACE( c2040_floppies ) //------------------------------------------------- @@ -489,7 +480,10 @@ static MACHINE_CONFIG_FRAGMENT( c2040 ) MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE(FDC_TAG, c2040_fdc_t, mode_sel_w)) MCFG_VIA6522_CB2_HANDLER(DEVWRITELINE(FDC_TAG, c2040_fdc_t, rw_sel_w)) - MCFG_MOS6530_ADD(M6530_TAG, XTAL_16MHz/16, miot_intf) + MCFG_DEVICE_ADD(M6530_TAG, MOS6530, XTAL_16MHz/16) + MCFG_MOS6530_OUT_PA_CB(DEVWRITE8(FDC_TAG, c2040_fdc_t, write)) + MCFG_MOS6530_IN_PB_CB(READ8(c2040_device, miot_pb_r)) + MCFG_MOS6530_OUT_PB_CB(WRITE8(c2040_device, miot_pb_w)) MCFG_DEVICE_ADD(FDC_TAG, C2040_FDC, XTAL_16MHz) MCFG_C2040_READY_CALLBACK(DEVWRITELINE(M6522_TAG, via6522_device, write_ca1)) @@ -532,7 +526,10 @@ static MACHINE_CONFIG_FRAGMENT( c4040 ) MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE(FDC_TAG, c2040_fdc_t, mode_sel_w)) MCFG_VIA6522_CB2_HANDLER(DEVWRITELINE(FDC_TAG, c2040_fdc_t, rw_sel_w)) - MCFG_MOS6530_ADD(M6530_TAG, XTAL_16MHz/16, miot_intf) + MCFG_DEVICE_ADD(M6530_TAG, MOS6530, XTAL_16MHz/16) + MCFG_MOS6530_OUT_PA_CB(DEVWRITE8(FDC_TAG, c2040_fdc_t, write)) + MCFG_MOS6530_IN_PB_CB(READ8(c2040_device, miot_pb_r)) + MCFG_MOS6530_OUT_PB_CB(WRITE8(c2040_device, miot_pb_w)) MCFG_DEVICE_ADD(FDC_TAG, C2040_FDC, XTAL_16MHz) MCFG_C2040_READY_CALLBACK(DEVWRITELINE(M6522_TAG, via6522_device, write_ca1)) diff --git a/src/emu/bus/ieee488/c8050.c b/src/emu/bus/ieee488/c8050.c index 7e5df5522e8..1ad6cfa76b1 100644 --- a/src/emu/bus/ieee488/c8050.c +++ b/src/emu/bus/ieee488/c8050.c @@ -555,7 +555,7 @@ WRITE8_MEMBER( c8050_device::via_pb_w ) //------------------------------------------------- -// mos6530_interface miot_intf uk3 +// mos6530 uk3 //------------------------------------------------- READ8_MEMBER( c8050_device::pi_r ) @@ -678,15 +678,6 @@ WRITE8_MEMBER( c8050_device::miot_pb_w ) } } -static MOS6530_INTERFACE( c8050_miot_intf ) -{ - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c8050_device, pi_r), - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c8050_device, pi_w), - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c8050_device, miot_pb_r), - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c8050_device, miot_pb_w) -}; - - //------------------------------------------------- // LEGACY_FLOPPY_OPTIONS( c8050 ) //------------------------------------------------- @@ -765,7 +756,11 @@ static MACHINE_CONFIG_FRAGMENT( c8050 ) MCFG_VIA6522_CA2_HANDLER(WRITELINE(c8050_device, mode_sel_w)) MCFG_VIA6522_CB2_HANDLER(WRITELINE(c8050_device, rw_sel_w)) - MCFG_MOS6530_ADD(M6530_TAG, XTAL_12MHz/12, c8050_miot_intf) + MCFG_DEVICE_ADD(M6530_TAG, MOS6530, XTAL_12MHz/12) + MCFG_MOS6530_IN_PA_CB(READ8(c8050_device, pi_r)) + MCFG_MOS6530_OUT_PA_CB(WRITE8(c8050_device, pi_w)) + MCFG_MOS6530_IN_PB_CB(READ8(c8050_device, miot_pb_r)) + MCFG_MOS6530_OUT_PB_CB(WRITE8(c8050_device, miot_pb_w)) MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(c8050_floppy_interface) MACHINE_CONFIG_END @@ -805,7 +800,11 @@ static MACHINE_CONFIG_FRAGMENT( c8250 ) MCFG_VIA6522_CA2_HANDLER(WRITELINE(c8050_device, mode_sel_w)) MCFG_VIA6522_CB2_HANDLER(WRITELINE(c8050_device, rw_sel_w)) - MCFG_MOS6530_ADD(M6530_TAG, XTAL_12MHz/12, c8050_miot_intf) + MCFG_DEVICE_ADD(M6530_TAG, MOS6530, XTAL_12MHz/12) + MCFG_MOS6530_IN_PA_CB(READ8(c8050_device, pi_r)) + MCFG_MOS6530_OUT_PA_CB(WRITE8(c8050_device, pi_w)) + MCFG_MOS6530_IN_PB_CB(READ8(c8050_device, miot_pb_r)) + MCFG_MOS6530_OUT_PB_CB(WRITE8(c8050_device, miot_pb_w)) MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(c8250_floppy_interface) MACHINE_CONFIG_END @@ -845,7 +844,11 @@ static MACHINE_CONFIG_FRAGMENT( c8250lp ) MCFG_VIA6522_CA2_HANDLER(WRITELINE(c8050_device, mode_sel_w)) MCFG_VIA6522_CB2_HANDLER(WRITELINE(c8050_device, rw_sel_w)) - MCFG_MOS6530_ADD(M6530_TAG, XTAL_12MHz/12, c8050_miot_intf) + MCFG_DEVICE_ADD(M6530_TAG, MOS6530, XTAL_12MHz/12) + MCFG_MOS6530_IN_PA_CB(READ8(c8050_device, pi_r)) + MCFG_MOS6530_OUT_PA_CB(WRITE8(c8050_device, pi_w)) + MCFG_MOS6530_IN_PB_CB(READ8(c8050_device, miot_pb_r)) + MCFG_MOS6530_OUT_PB_CB(WRITE8(c8050_device, miot_pb_w)) MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(c8250_floppy_interface) MACHINE_CONFIG_END @@ -885,7 +888,11 @@ static MACHINE_CONFIG_FRAGMENT( sfd1001 ) MCFG_VIA6522_CA2_HANDLER(WRITELINE(c8050_device, mode_sel_w)) MCFG_VIA6522_CB2_HANDLER(WRITELINE(c8050_device, rw_sel_w)) - MCFG_MOS6530_ADD(M6530_TAG, XTAL_12MHz/12, c8050_miot_intf) + MCFG_DEVICE_ADD(M6530_TAG, MOS6530, XTAL_12MHz/12) + MCFG_MOS6530_IN_PA_CB(READ8(c8050_device, pi_r)) + MCFG_MOS6530_OUT_PA_CB(WRITE8(c8050_device, pi_w)) + MCFG_MOS6530_IN_PB_CB(READ8(c8050_device, miot_pb_r)) + MCFG_MOS6530_OUT_PB_CB(WRITE8(c8050_device, miot_pb_w)) MCFG_LEGACY_FLOPPY_DRIVE_ADD(FLOPPY_0, c8250_floppy_interface) MACHINE_CONFIG_END diff --git a/src/emu/machine/mos6530.c b/src/emu/machine/mos6530.c index d3c8b5504a8..b4a1abd1497 100644 --- a/src/emu/machine/mos6530.c +++ b/src/emu/machine/mos6530.c @@ -39,34 +39,15 @@ enum const device_type MOS6530 = &device_creator<mos6530_device>; mos6530_device::mos6530_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) - : device_t(mconfig, MOS6530, "MOS6530", tag, owner, clock, "mos6530", __FILE__) + : device_t(mconfig, MOS6530, "MOS6530", tag, owner, clock, "mos6530", __FILE__), + m_in_pa_cb(*this), + m_out_pa_cb(*this), + m_in_pb_cb(*this), + m_out_pb_cb(*this) { } //------------------------------------------------- -// device_config_complete - perform any -// operations now that the configuration is -// complete -//------------------------------------------------- - -void mos6530_device::device_config_complete() -{ - // inherit a copy of the static data - const mos6530_interface *intf = reinterpret_cast<const mos6530_interface *>(static_config()); - if (intf != NULL) - *static_cast<mos6530_interface *>(this) = *intf; - - // or initialize to defaults if none provided - else - { - memset(&m_in_pa_cb, 0, sizeof(m_in_pa_cb)); - memset(&m_out_pa_cb, 0, sizeof(m_out_pa_cb)); - memset(&m_in_pb_cb, 0, sizeof(m_in_pb_cb)); - memset(&m_out_pb_cb, 0, sizeof(m_out_pb_cb)); - } -} - -//------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- @@ -76,21 +57,21 @@ void mos6530_device::device_start() m_clock = clock(); /* resolve callbacks */ - m_port[0].in_port_func.resolve(m_in_pa_cb, *this); - m_port[1].in_port_func.resolve(m_in_pb_cb, *this); - m_port[0].out_port_func.resolve(m_out_pa_cb, *this); - m_port[1].out_port_func.resolve(m_out_pb_cb, *this); + m_in_pa_cb.resolve_safe(0); + m_out_pa_cb.resolve_safe(); + m_in_pb_cb.resolve_safe(0); + m_out_pb_cb.resolve_safe(); /* allocate timers */ m_timer = timer_alloc(TIMER_END_CALLBACK); /* register for save states */ - save_item(NAME(m_port[0].in)); - save_item(NAME(m_port[0].out)); - save_item(NAME(m_port[0].ddr)); - save_item(NAME(m_port[1].in)); - save_item(NAME(m_port[1].out)); - save_item(NAME(m_port[1].ddr)); + save_item(NAME(m_port[0].m_in)); + save_item(NAME(m_port[0].m_out)); + save_item(NAME(m_port[0].m_ddr)); + save_item(NAME(m_port[1].m_in)); + save_item(NAME(m_port[1].m_out)); + save_item(NAME(m_port[1].m_ddr)); save_item(NAME(m_irqstate)); save_item(NAME(m_irqenable)); @@ -106,10 +87,10 @@ void mos6530_device::device_start() void mos6530_device::device_reset() { /* reset I/O states */ - m_port[0].out = 0; - m_port[0].ddr = 0; - m_port[1].out = 0; - m_port[1].ddr = 0; + m_port[0].m_out = 0; + m_port[0].m_ddr = 0; + m_port[1].m_out = 0; + m_port[1].m_ddr = 0; /* reset IRQ states */ m_irqenable = 0; @@ -135,15 +116,12 @@ void mos6530_device::device_reset() void mos6530_device::update_irqstate() { - UINT8 out = m_port[1].out; + UINT8 out = m_port[1].m_out; - if ( m_irqenable ) - out = ( ( m_irqstate & TIMER_FLAG ) ? 0x00 : 0x80 ) | ( out & 0x7F ); + if (m_irqenable) + out = ((m_irqstate & TIMER_FLAG) ? 0x00 : 0x80) | (out & 0x7F); - if (!m_port[1].out_port_func.isnull()) - m_port[1].out_port_func(0, out); - else - logerror("6530MIOT chip %s: Port B is being written to but has no handler.\n", tag()); + m_out_pb_cb((offs_t)0, out); } @@ -246,28 +224,28 @@ WRITE8_MEMBER( mos6530_device::write ) else { /* A1 selects the port */ - mos6530_port *port = &m_port[(offset >> 1) & 1]; + mos6530_port *port = &m_port[BIT(offset, 1)]; /* if A0 == 1, we are writing to the port's DDR */ if (offset & 1) - port->ddr = data; + port->m_ddr = data; /* if A0 == 0, we are writing to the port's output */ else { - UINT8 olddata = port->out; - port->out = data; + UINT8 olddata = port->m_out; + port->m_out = data; - if ( ( offset & 2 ) && m_irqenable ) + if ((offset & 2) && m_irqenable) { - olddata = ( ( m_irqstate & TIMER_FLAG ) ? 0x00 : 0x80 ) | ( olddata & 0x7F ); - data = ( ( m_irqstate & TIMER_FLAG ) ? 0x00 : 0x80 ) | ( data & 0x7F ); + olddata = ((m_irqstate & TIMER_FLAG) ? 0x00 : 0x80) | (olddata & 0x7F); + data = ((m_irqstate & TIMER_FLAG) ? 0x00 : 0x80) | (data & 0x7F); } - if (!port->out_port_func.isnull()) - port->out_port_func(0, data); + if (!BIT(offset, 1)) + m_out_pa_cb((offs_t)0, data); else - logerror("%s 6530MIOT chip %s: Port %c is being written to but has no handler. %02X\n", machine().describe_context(), tag(), 'A' + (offset & 1), data); + m_out_pb_cb((offs_t)0, data); } } } @@ -308,30 +286,28 @@ READ8_MEMBER( mos6530_device::read ) else { /* A1 selects the port */ - mos6530_port *port = &m_port[(offset >> 1) & 1]; + mos6530_port *port = &m_port[BIT(offset, 1)]; /* if A0 == 1, we are reading the port's DDR */ if (offset & 1) - val = port->ddr; + val = port->m_ddr; /* if A0 == 0, we are reading the port as an input */ else { - UINT8 out = port->out; + UINT8 out = port->m_out; - if ( ( offset & 2 ) && m_irqenable ) - out = ( ( m_irqstate & TIMER_FLAG ) ? 0x00 : 0x80 ) | ( out & 0x7F ); + if ((offset & 2) && m_irqenable) + out = ((m_irqstate & TIMER_FLAG) ? 0x00 : 0x80) | (out & 0x7F); /* call the input callback if it exists */ - if (!port->in_port_func.isnull()) - { - port->in = port->in_port_func(0); - } + if (!BIT(offset, 1)) + port->m_in = m_in_pa_cb(0); else - logerror("%s 6530MIOT chip %s: Port %c is being read but has no handler.\n", machine().describe_context(), tag(), 'A' + (offset & 1)); + port->m_in = m_in_pb_cb(0); /* apply the DDR to the result */ - val = (out & port->ddr) | (port->in & ~port->ddr); + val = (out & port->m_ddr) | (port->m_in & ~port->m_ddr); } } return val; @@ -345,7 +321,7 @@ READ8_MEMBER( mos6530_device::read ) void mos6530_device::porta_in_set(UINT8 data, UINT8 mask) { - m_port[0].in = (m_port[0].in & ~mask) | (data & mask); + m_port[0].m_in = (m_port[0].m_in & ~mask) | (data & mask); } @@ -356,7 +332,7 @@ void mos6530_device::porta_in_set(UINT8 data, UINT8 mask) void mos6530_device::portb_in_set(UINT8 data, UINT8 mask) { - m_port[1].in = (m_port[1].in & ~mask) | (data & mask); + m_port[1].m_in = (m_port[1].m_in & ~mask) | (data & mask); } @@ -367,7 +343,7 @@ void mos6530_device::portb_in_set(UINT8 data, UINT8 mask) UINT8 mos6530_device::porta_in_get() { - return m_port[0].in; + return m_port[0].m_in; } @@ -378,7 +354,7 @@ UINT8 mos6530_device::porta_in_get() UINT8 mos6530_device::portb_in_get() { - return m_port[1].in; + return m_port[1].m_in; } @@ -389,7 +365,7 @@ UINT8 mos6530_device::portb_in_get() UINT8 mos6530_device::porta_out_get() { - return m_port[0].out; + return m_port[0].m_out; } @@ -400,5 +376,5 @@ UINT8 mos6530_device::porta_out_get() UINT8 mos6530_device::portb_out_get() { - return m_port[1].out; + return m_port[1].m_out; } diff --git a/src/emu/machine/mos6530.h b/src/emu/machine/mos6530.h index 24477172bc2..7bd2dec488c 100644 --- a/src/emu/machine/mos6530.h +++ b/src/emu/machine/mos6530.h @@ -38,36 +38,28 @@ TYPE DEFINITIONS ***************************************************************************/ -struct mos6530_interface -{ - devcb_read8 m_in_pa_cb; - devcb_write8 m_out_pa_cb; - - devcb_read8 m_in_pb_cb; - devcb_write8 m_out_pb_cb; -}; - struct mos6530_port { - devcb_resolved_read8 in_port_func; - devcb_resolved_write8 out_port_func; - - UINT8 in; - UINT8 out; - UINT8 ddr; + UINT8 m_in; + UINT8 m_out; + UINT8 m_ddr; }; /*************************************************************************** MACROS / CONSTANTS ***************************************************************************/ -class mos6530_device : public device_t, - mos6530_interface +class mos6530_device : public device_t { public: mos6530_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); ~mos6530_device() {} + template<class _Object> static devcb2_base &set_in_pa_callback(device_t &device, _Object object) { return downcast<mos6530_device &>(device).m_in_pa_cb.set_callback(object); } + template<class _Object> static devcb2_base &set_out_pa_callback(device_t &device, _Object object) { return downcast<mos6530_device &>(device).m_out_pa_cb.set_callback(object); } + template<class _Object> static devcb2_base &set_in_pb_callback(device_t &device, _Object object) { return downcast<mos6530_device &>(device).m_in_pb_cb.set_callback(object); } + template<class _Object> static devcb2_base &set_out_pb_callback(device_t &device, _Object object) { return downcast<mos6530_device &>(device).m_out_pb_cb.set_callback(object); } + DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); @@ -79,16 +71,18 @@ public: protected: // device-level overrides - virtual void device_config_complete(); virtual void device_start(); virtual void device_reset(); virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); private: // internal state - - //devcb_resolved_write_line out_irq_func; - + devcb2_read8 m_in_pa_cb; + devcb2_write8 m_out_pa_cb; + + devcb2_read8 m_in_pb_cb; + devcb2_write8 m_out_pb_cb; + mos6530_port m_port[2]; UINT8 m_irqstate; @@ -115,11 +109,17 @@ private: extern const device_type MOS6530; -#define MCFG_MOS6530_ADD(_tag, _clock, _config) \ - MCFG_DEVICE_ADD((_tag), MOS6530, _clock) \ - MCFG_DEVICE_CONFIG(_config) +#define MCFG_MOS6530_IN_PA_CB(_devcb) \ + devcb = &mos6530_device::set_in_pa_callback(*device, DEVCB2_##_devcb); + +#define MCFG_MOS6530_OUT_PA_CB(_devcb) \ + devcb = &mos6530_device::set_out_pa_callback(*device, DEVCB2_##_devcb); + +#define MCFG_MOS6530_IN_PB_CB(_devcb) \ + devcb = &mos6530_device::set_in_pb_callback(*device, DEVCB2_##_devcb); + +#define MCFG_MOS6530_OUT_PB_CB(_devcb) \ + devcb = &mos6530_device::set_out_pb_callback(*device, DEVCB2_##_devcb); -#define MOS6530_INTERFACE(name) \ - const mos6530_interface (name) = #endif diff --git a/src/mess/drivers/kim1.c b/src/mess/drivers/kim1.c index dc7059ef0dd..c9c4f38417b 100644 --- a/src/mess/drivers/kim1.c +++ b/src/mess/drivers/kim1.c @@ -261,23 +261,6 @@ WRITE8_MEMBER( kim1_state::kim1_u2_write_b ) } -static MOS6530_INTERFACE( kim1_u2_mos6530_interface ) -{ - DEVCB_DRIVER_MEMBER(kim1_state, kim1_u2_read_a), - DEVCB_DRIVER_MEMBER(kim1_state, kim1_u2_write_a), - DEVCB_DRIVER_MEMBER(kim1_state, kim1_u2_read_b), - DEVCB_DRIVER_MEMBER(kim1_state, kim1_u2_write_b) -}; - -static MOS6530_INTERFACE( kim1_u3_mos6530_interface ) -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - TIMER_DEVICE_CALLBACK_MEMBER(kim1_state::kim1_cassette_input) { double tap_val = m_cass->input(); @@ -355,9 +338,15 @@ static MACHINE_CONFIG_START( kim1, kim1_state ) MCFG_SOUND_ADD("dac", DAC, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) - /* Devices */ - MCFG_MOS6530_ADD( "miot_u2", 1000000, kim1_u2_mos6530_interface ) - MCFG_MOS6530_ADD( "miot_u3", 1000000, kim1_u3_mos6530_interface ) + /* devices */ + MCFG_DEVICE_ADD("miot_u2", MOS6530, 1000000) + MCFG_MOS6530_IN_PA_CB(READ8(kim1_state, kim1_u2_read_a)) + MCFG_MOS6530_OUT_PA_CB(WRITE8(kim1_state, kim1_u2_write_a)) + MCFG_MOS6530_IN_PB_CB(READ8(kim1_state, kim1_u2_read_b)) + MCFG_MOS6530_OUT_PB_CB(WRITE8(kim1_state, kim1_u2_write_b)) + + MCFG_DEVICE_ADD("miot_u3", MOS6530, 1000000) + MCFG_CASSETTE_ADD( "cassette", kim1_cassette_interface ) MCFG_TIMER_DRIVER_ADD_PERIODIC("led_timer", kim1_state, kim1_update_leds, attotime::from_hz(60)) MCFG_TIMER_DRIVER_ADD_PERIODIC("cassette_timer", kim1_state, kim1_cassette_input, attotime::from_hz(44100)) diff --git a/src/mess/drivers/mk2.c b/src/mess/drivers/mk2.c index 4c2fe58afdb..21c2e5ca257 100644 --- a/src/mess/drivers/mk2.c +++ b/src/mess/drivers/mk2.c @@ -181,14 +181,6 @@ WRITE8_MEMBER( mk2_state::mk2_write_b ) m_maincpu->set_input_line(M6502_IRQ_LINE, (data & 0x80) ? CLEAR_LINE : ASSERT_LINE ); } -static MOS6530_INTERFACE( mk2_mos6530_interface ) -{ - DEVCB_DRIVER_MEMBER(mk2_state, mk2_read_a), - DEVCB_DRIVER_MEMBER(mk2_state, mk2_write_a), - DEVCB_DRIVER_MEMBER(mk2_state, mk2_read_b), - DEVCB_DRIVER_MEMBER(mk2_state, mk2_write_b) -}; - static MACHINE_CONFIG_START( mk2, mk2_state ) /* basic machine hardware */ @@ -196,11 +188,14 @@ static MACHINE_CONFIG_START( mk2, mk2_state ) MCFG_CPU_PROGRAM_MAP(mk2_mem) MCFG_QUANTUM_TIME(attotime::from_hz(60)) - /* video hardware */ MCFG_DEFAULT_LAYOUT(layout_mk2) - MCFG_MOS6530_ADD( "miot", 1000000, mk2_mos6530_interface ) + MCFG_DEVICE_ADD("miot", MOS6530, 1000000) + MCFG_MOS6530_IN_PA_CB(READ8(mk2_state, mk2_read_a)) + MCFG_MOS6530_OUT_PA_CB(WRITE8(mk2_state, mk2_write_a)) + MCFG_MOS6530_IN_PB_CB(READ8(mk2_state, mk2_read_b)) + MCFG_MOS6530_OUT_PB_CB(WRITE8(mk2_state, mk2_write_b)) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") |