diff options
author | 2013-12-31 08:46:37 +0000 | |
---|---|---|
committer | 2013-12-31 08:46:37 +0000 | |
commit | 72f6a2d0fb750655b853bcd3380f54c01db495f4 (patch) | |
tree | 33dd0dbeb355a33946f12fc74a0f1e7be7aab6a5 | |
parent | 67ebce528a75f93b95a3c1bbca4918c04c7ee685 (diff) |
Convert VIA6522 to use DEVCB2 [smf]
79 files changed, 1203 insertions, 1936 deletions
diff --git a/src/emu/bus/a2bus/a2mockingboard.c b/src/emu/bus/a2bus/a2mockingboard.c index 9c324ec678b..a2bdcb61d56 100644 --- a/src/emu/bus/a2bus/a2mockingboard.c +++ b/src/emu/bus/a2bus/a2mockingboard.c @@ -38,31 +38,20 @@ static const ay8910_interface mockingboard_ay8910_interface = DEVCB_NULL }; -const via6522_interface mockingboard_via1_intf = -{ - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, a2bus_ayboard_device, via1_in_a), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, a2bus_ayboard_device, via1_in_b), - DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_NULL, - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, a2bus_ayboard_device, via1_out_a), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, a2bus_ayboard_device, via1_out_b), - DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, a2bus_ayboard_device, via1_irq_w) -}; - -const via6522_interface mockingboard_via2_intf = -{ - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, a2bus_ayboard_device, via2_in_a), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, a2bus_ayboard_device, via2_in_b), - DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_NULL, - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, a2bus_ayboard_device, via2_out_a), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, a2bus_ayboard_device, via2_out_b), - DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, a2bus_ayboard_device, via2_irq_w) -}; - MACHINE_CONFIG_FRAGMENT( mockingboard ) - MCFG_VIA6522_ADD(VIA1_TAG, 1022727, mockingboard_via1_intf) - MCFG_VIA6522_ADD(VIA2_TAG, 1022727, mockingboard_via2_intf) + MCFG_DEVICE_ADD(VIA1_TAG, VIA6522, 1022727) + MCFG_VIA6522_READPA_HANDLER(READ8(a2bus_ayboard_device, via1_in_a)) + MCFG_VIA6522_READPB_HANDLER(READ8(a2bus_ayboard_device, via1_in_b)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(a2bus_ayboard_device, via1_out_a)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(a2bus_ayboard_device, via1_out_b)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(a2bus_ayboard_device, via1_irq_w)) + + MCFG_DEVICE_ADD(VIA2_TAG, VIA6522, 1022727) + MCFG_VIA6522_READPA_HANDLER(READ8(a2bus_ayboard_device, via2_in_a)) + MCFG_VIA6522_READPB_HANDLER(READ8(a2bus_ayboard_device, via2_in_b)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(a2bus_ayboard_device, via2_out_a)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(a2bus_ayboard_device, via2_out_b)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(a2bus_ayboard_device, via2_irq_w)) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SOUND_ADD(AY1_TAG, AY8913, 1022727) @@ -74,8 +63,19 @@ MACHINE_CONFIG_FRAGMENT( mockingboard ) MACHINE_CONFIG_END MACHINE_CONFIG_FRAGMENT( phasor ) - MCFG_VIA6522_ADD(VIA1_TAG, 1022727, mockingboard_via1_intf) - MCFG_VIA6522_ADD(VIA2_TAG, 1022727, mockingboard_via2_intf) + MCFG_DEVICE_ADD(VIA1_TAG, VIA6522, 1022727) + MCFG_VIA6522_READPA_HANDLER(READ8(a2bus_ayboard_device, via1_in_a)) + MCFG_VIA6522_READPB_HANDLER(READ8(a2bus_ayboard_device, via1_in_b)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(a2bus_ayboard_device, via1_out_a)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(a2bus_ayboard_device, via1_out_b)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(a2bus_ayboard_device, via1_irq_w)) + + MCFG_DEVICE_ADD(VIA2_TAG, VIA6522, 1022727) + MCFG_VIA6522_READPA_HANDLER(READ8(a2bus_ayboard_device, via2_in_a)) + MCFG_VIA6522_READPB_HANDLER(READ8(a2bus_ayboard_device, via2_in_b)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(a2bus_ayboard_device, via2_out_a)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(a2bus_ayboard_device, via2_out_b)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(a2bus_ayboard_device, via2_irq_w)) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SPEAKER_STANDARD_STEREO("lspeaker2", "rspeaker2") @@ -94,8 +94,19 @@ MACHINE_CONFIG_FRAGMENT( phasor ) MACHINE_CONFIG_END MACHINE_CONFIG_FRAGMENT( echoplus ) - MCFG_VIA6522_ADD(VIA1_TAG, 1022727, mockingboard_via1_intf) - MCFG_VIA6522_ADD(VIA2_TAG, 1022727, mockingboard_via2_intf) + MCFG_DEVICE_ADD(VIA1_TAG, VIA6522, 1022727) + MCFG_VIA6522_READPA_HANDLER(READ8(a2bus_ayboard_device, via1_in_a)) + MCFG_VIA6522_READPB_HANDLER(READ8(a2bus_ayboard_device, via1_in_b)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(a2bus_ayboard_device, via1_out_a)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(a2bus_ayboard_device, via1_out_b)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(a2bus_ayboard_device, via1_irq_w)) + + MCFG_DEVICE_ADD(VIA2_TAG, VIA6522, 1022727) + MCFG_VIA6522_READPA_HANDLER(READ8(a2bus_ayboard_device, via2_in_a)) + MCFG_VIA6522_READPB_HANDLER(READ8(a2bus_ayboard_device, via2_in_b)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(a2bus_ayboard_device, via2_out_a)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(a2bus_ayboard_device, via2_out_b)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(a2bus_ayboard_device, via2_irq_w)) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SOUND_ADD(AY1_TAG, AY8913, 1022727) diff --git a/src/emu/bus/cbmiec/c1541.c b/src/emu/bus/cbmiec/c1541.c index b949c6ea177..d4ddac712f4 100644 --- a/src/emu/bus/cbmiec/c1541.c +++ b/src/emu/bus/cbmiec/c1541.c @@ -506,10 +506,6 @@ static ADDRESS_MAP_START( c1541pdc_mem, AS_PROGRAM, 8, c1541_prologic_dos_classi ADDRESS_MAP_END -//------------------------------------------------- -// via6522_interface via0_intf -//------------------------------------------------- - WRITE_LINE_MEMBER( base_c1541_device::via0_irq_w ) { m_via0_irq = state; @@ -605,30 +601,6 @@ WRITE_LINE_MEMBER( base_c1541_device::via0_ca2_w ) } } -static const via6522_interface c1541_via0_intf = -{ - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, base_c1541_device, via0_pa_r), - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, base_c1541_device, via0_pb_r), - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, base_c1541_device, atn_in_r), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, base_c1541_device, via0_pa_w), - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, base_c1541_device, via0_pb_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, base_c1541_device, via0_ca2_w), - DEVCB_NULL, - - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, base_c1541_device, via0_irq_w) -}; - - -//------------------------------------------------- -// via6522_interface c1541c_via0_intf -//------------------------------------------------- - READ8_MEMBER( c1541c_device::via0_pa_r ) { /* @@ -649,29 +621,6 @@ READ8_MEMBER( c1541c_device::via0_pa_r ) return !floppy_tk00_r(m_image); } -static const via6522_interface c1541c_via0_intf = -{ - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c1541c_device, via0_pa_r), - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, base_c1541_device, via0_pb_r), - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, base_c1541_device, atn_in_r), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_NULL, - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, base_c1541_device, via0_pb_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, base_c1541_device, via0_irq_w) -}; - - -//------------------------------------------------- -// via6522_interface via1_intf -//------------------------------------------------- WRITE_LINE_MEMBER( base_c1541_device::via1_irq_w ) { @@ -738,25 +687,6 @@ WRITE8_MEMBER( base_c1541_device::via1_pb_w ) m_ga->ds_w((data >> 5) & 0x03); } -static const via6522_interface c1541_via1_intf = -{ - DEVCB_DEVICE_MEMBER(C64H156_TAG, c64h156_device, yb_r), - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, base_c1541_device, via1_pb_r), - DEVCB_DEVICE_LINE_MEMBER(C64H156_TAG, c64h156_device, byte_r), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_DEVICE_MEMBER(C64H156_TAG, c64h156_device, yb_w), - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, base_c1541_device, via1_pb_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(C64H156_TAG, c64h156_device, soe_w), - DEVCB_DEVICE_LINE_MEMBER(C64H156_TAG, c64h156_device, oe_w), - - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, base_c1541_device, via1_irq_w) -}; - //------------------------------------------------- // C64H156_INTERFACE( ga_intf ) @@ -881,8 +811,24 @@ static MACHINE_CONFIG_FRAGMENT( c1541 ) MCFG_CPU_PROGRAM_MAP(c1541_mem) MCFG_QUANTUM_PERFECT_CPU(M6502_TAG) - MCFG_VIA6522_ADD(M6522_0_TAG, XTAL_16MHz/16, c1541_via0_intf) - MCFG_VIA6522_ADD(M6522_1_TAG, XTAL_16MHz/16, c1541_via1_intf) + MCFG_DEVICE_ADD(M6522_0_TAG, VIA6522, XTAL_16MHz/16) + MCFG_VIA6522_READPA_HANDLER(READ8(base_c1541_device, via0_pa_r)) + MCFG_VIA6522_READPB_HANDLER(READ8(base_c1541_device, via0_pb_r)) + MCFG_VIA6522_READCA1_HANDLER(READLINE(base_c1541_device, atn_in_r)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(base_c1541_device, via0_pa_w)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(base_c1541_device, via0_pb_w)) + MCFG_VIA6522_CB2_HANDLER(WRITELINE(base_c1541_device, via0_ca2_w)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(base_c1541_device, via0_irq_w)) + + MCFG_DEVICE_ADD(M6522_1_TAG, VIA6522, XTAL_16MHz/16) + MCFG_VIA6522_READPA_HANDLER(DEVREAD8(C64H156_TAG, c64h156_device, yb_r)) + MCFG_VIA6522_READPB_HANDLER(READ8(base_c1541_device, via1_pb_r)) + MCFG_VIA6522_READCA1_HANDLER(DEVREADLINE(C64H156_TAG, c64h156_device, byte_r)) + MCFG_VIA6522_WRITEPA_HANDLER(DEVWRITE8(C64H156_TAG, c64h156_device, yb_w)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(base_c1541_device, via1_pb_w)) + MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE(C64H156_TAG, c64h156_device, soe_w)) + MCFG_VIA6522_CB2_HANDLER(DEVWRITELINE(C64H156_TAG, c64h156_device, oe_w)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(base_c1541_device, via1_irq_w)) MCFG_LEGACY_FLOPPY_DRIVE_ADD(FLOPPY_0, c1541_floppy_interface) MCFG_64H156_ADD(C64H156_TAG, XTAL_16MHz, ga_intf) @@ -906,9 +852,6 @@ machine_config_constructor base_c1541_device::device_mconfig_additions() const static MACHINE_CONFIG_FRAGMENT( c1541c ) MCFG_FRAGMENT_ADD(c1541) - - MCFG_DEVICE_MODIFY(M6522_0_TAG) - MCFG_DEVICE_CONFIG(c1541c_via0_intf) MACHINE_CONFIG_END diff --git a/src/emu/bus/cbmiec/c1541.h b/src/emu/bus/cbmiec/c1541.h index 85538aa2712..77f694ec162 100644 --- a/src/emu/bus/cbmiec/c1541.h +++ b/src/emu/bus/cbmiec/c1541.h @@ -51,7 +51,7 @@ public: base_c1541_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source); DECLARE_WRITE_LINE_MEMBER( via0_irq_w ); - DECLARE_READ8_MEMBER( via0_pa_r ); + virtual DECLARE_READ8_MEMBER( via0_pa_r ); DECLARE_WRITE8_MEMBER( via0_pa_w ); DECLARE_READ8_MEMBER( via0_pb_r ); DECLARE_WRITE8_MEMBER( via0_pb_w ); @@ -143,7 +143,7 @@ public: virtual machine_config_constructor device_mconfig_additions() const; // not really public - DECLARE_READ8_MEMBER( via0_pa_r ); + virtual DECLARE_READ8_MEMBER( via0_pa_r ); }; diff --git a/src/emu/bus/cbmiec/c1571.c b/src/emu/bus/cbmiec/c1571.c index fca2830f75b..27fd40cf30b 100644 --- a/src/emu/bus/cbmiec/c1571.c +++ b/src/emu/bus/cbmiec/c1571.c @@ -174,10 +174,6 @@ static ADDRESS_MAP_START( mini_chief_mem, AS_PROGRAM, 8, mini_chief_device ) ADDRESS_MAP_END -//------------------------------------------------- -// via6522_interface via0_intf -//------------------------------------------------- - WRITE_LINE_MEMBER( c1571_device::via0_irq_w ) { m_via0_irq = state; @@ -397,48 +393,6 @@ READ_LINE_MEMBER( c1571_device::wprt_r ) return !floppy_wpt_r(m_image); } -static const via6522_interface via0_intf = -{ - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c1571_device, via0_pa_r), - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c1571_device, via0_pb_r), - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c1571_device, atn_in_r), - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c1571_device, wprt_r), - DEVCB_NULL, - - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c1571_device, via0_pa_w), - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c1571_device, via0_pb_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c1571_device, via0_irq_w) -}; - -static const via6522_interface c1571cr_via0_intf = -{ - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c1571_device, via0_pa_r), - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c1571_device, via0_pb_r), - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c1571_device, atn_in_r), - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c1571_device, wprt_r), - DEVCB_NULL, - - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c1571cr_device, via0_pa_w), - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c1571cr_device, via0_pb_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c1571_device, via0_irq_w) -}; - - -//------------------------------------------------- -// via6522_interface via1_intf -//------------------------------------------------- READ8_MEMBER( c1571_device::via1_r ) { @@ -523,25 +477,6 @@ WRITE8_MEMBER( c1571_device::via1_pb_w ) m_ga->ds_w((data >> 5) & 0x03); } -static const via6522_interface via1_intf = -{ - DEVCB_DEVICE_MEMBER(C64H156_TAG, c64h156_device, yb_r), - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c1571_device, via1_pb_r), - DEVCB_DEVICE_LINE_MEMBER(C64H156_TAG, c64h156_device, byte_r), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_DEVICE_MEMBER(C64H156_TAG, c64h156_device, yb_w), - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c1571_device, via1_pb_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(C64H156_TAG, c64h156_device, soe_w), - DEVCB_DEVICE_LINE_MEMBER(C64H156_TAG, c64h156_device, oe_w), - - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c1571_device, via1_irq_w) -}; - //------------------------------------------------- // MOS6526_INTERFACE( cia_intf ) @@ -755,8 +690,25 @@ static MACHINE_CONFIG_FRAGMENT( c1570 ) MCFG_CPU_PROGRAM_MAP(c1571_mem) MCFG_QUANTUM_PERFECT_CPU(M6502_TAG) - MCFG_VIA6522_ADD(M6522_0_TAG, XTAL_16MHz/16, via0_intf) - MCFG_VIA6522_ADD(M6522_1_TAG, XTAL_16MHz/16, via1_intf) + MCFG_DEVICE_ADD(M6522_0_TAG, VIA6522, XTAL_16MHz/16) + MCFG_VIA6522_READPA_HANDLER(READ8(c1571_device, via0_pa_r)) + MCFG_VIA6522_READPB_HANDLER(READ8(c1571_device, via0_pb_r)) + MCFG_VIA6522_READCA1_HANDLER(READLINE(c1571_device, atn_in_r)) + MCFG_VIA6522_READCA2_HANDLER(READLINE(c1571_device, wprt_r)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(c1571_device, via0_pa_w)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c1571_device, via0_pb_w)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(c1571_device, via0_irq_w)) + + MCFG_DEVICE_ADD(M6522_1_TAG, VIA6522, XTAL_16MHz/16) + MCFG_VIA6522_READPA_HANDLER(DEVREAD8(C64H156_TAG, c64h156_device, yb_r)) + MCFG_VIA6522_READPB_HANDLER(READ8(c1571_device, via1_pb_r)) + MCFG_VIA6522_READCA1_HANDLER(DEVREADLINE(C64H156_TAG, c64h156_device, byte_r)) + MCFG_VIA6522_WRITEPA_HANDLER(DEVWRITE8(C64H156_TAG, c64h156_device, yb_w)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c1571_device, via1_pb_w)) + MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE(C64H156_TAG, c64h156_device, soe_w)) + MCFG_VIA6522_CB2_HANDLER(DEVWRITELINE(C64H156_TAG, c64h156_device, oe_w)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(c1571_device, via1_irq_w)) + MCFG_MOS6526_ADD(M6526_TAG, XTAL_16MHz/16, 0, WRITELINE(c1571_device, cia_irq_w)) MCFG_MOS6526_SERIAL_CALLBACKS(WRITELINE(c1571_device, cia_cnt_w), WRITELINE(c1571_device, cia_sp_w)) MCFG_MOS6526_PORT_B_CALLBACKS(READ8(c1571_device, cia_pb_r), WRITE8(c1571_device, cia_pb_w), WRITELINE(c1571_device, cia_pc_w)) @@ -788,8 +740,25 @@ static MACHINE_CONFIG_FRAGMENT( c1571 ) MCFG_CPU_PROGRAM_MAP(c1571_mem) MCFG_QUANTUM_PERFECT_CPU(M6502_TAG) - MCFG_VIA6522_ADD(M6522_0_TAG, XTAL_16MHz/16, via0_intf) - MCFG_VIA6522_ADD(M6522_1_TAG, XTAL_16MHz/16, via1_intf) + MCFG_DEVICE_ADD(M6522_0_TAG, VIA6522, XTAL_16MHz/16) + MCFG_VIA6522_READPA_HANDLER(READ8(c1571_device, via0_pa_r)) + MCFG_VIA6522_READPB_HANDLER(READ8(c1571_device, via0_pb_r)) + MCFG_VIA6522_READCA1_HANDLER(READLINE(c1571_device, atn_in_r)) + MCFG_VIA6522_READCA2_HANDLER(READLINE(c1571_device, wprt_r)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(c1571_device, via0_pa_w)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c1571_device, via0_pb_w)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(c1571_device, via0_irq_w)) + + MCFG_DEVICE_ADD(M6522_1_TAG, VIA6522, XTAL_16MHz/16) + MCFG_VIA6522_READPA_HANDLER(DEVREAD8(C64H156_TAG, c64h156_device, yb_r)) + MCFG_VIA6522_READPB_HANDLER(READ8(c1571_device, via1_pb_r)) + MCFG_VIA6522_READCA1_HANDLER(DEVREADLINE(C64H156_TAG, c64h156_device, byte_r)) + MCFG_VIA6522_WRITEPA_HANDLER(DEVWRITE8(C64H156_TAG, c64h156_device, yb_w)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c1571_device, via1_pb_w)) + MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE(C64H156_TAG, c64h156_device, soe_w)) + MCFG_VIA6522_CB2_HANDLER(DEVWRITELINE(C64H156_TAG, c64h156_device, oe_w)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(c1571_device, via1_irq_w)) + MCFG_MOS6526_ADD(M6526_TAG, XTAL_16MHz/16, 0, WRITELINE(c1571_device, cia_irq_w)) MCFG_MOS6526_SERIAL_CALLBACKS(WRITELINE(c1571_device, cia_cnt_w), WRITELINE(c1571_device, cia_sp_w)) MCFG_MOS6526_PORT_B_CALLBACKS(READ8(c1571_device, cia_pb_r), WRITE8(c1571_device, cia_pb_w), WRITELINE(c1571_device, cia_pc_w)) @@ -821,8 +790,24 @@ static MACHINE_CONFIG_FRAGMENT( c1571cr ) MCFG_CPU_PROGRAM_MAP(c1571_mem) MCFG_QUANTUM_PERFECT_CPU(M6502_TAG) - MCFG_VIA6522_ADD(M6522_0_TAG, XTAL_16MHz/16, c1571cr_via0_intf) - MCFG_VIA6522_ADD(M6522_1_TAG, XTAL_16MHz/16, via1_intf) + MCFG_DEVICE_ADD(M6522_0_TAG, VIA6522, XTAL_16MHz/16) + MCFG_VIA6522_READPA_HANDLER(READ8(c1571_device, via0_pa_r)) + MCFG_VIA6522_READPB_HANDLER(READ8(c1571_device, via0_pb_r)) + MCFG_VIA6522_READCA1_HANDLER(READLINE(c1571_device, atn_in_r)) + MCFG_VIA6522_READCA2_HANDLER(READLINE(c1571_device, wprt_r)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(c1571cr_device, via0_pa_w)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c1571cr_device, via0_pb_w)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(c1571_device, via0_irq_w)) + + MCFG_DEVICE_ADD(M6522_1_TAG, VIA6522, XTAL_16MHz/16) + MCFG_VIA6522_READPA_HANDLER(DEVREAD8(C64H156_TAG, c64h156_device, yb_r)) + MCFG_VIA6522_READPB_HANDLER(READ8(c1571_device, via1_pb_r)) + MCFG_VIA6522_READCA1_HANDLER(DEVREADLINE(C64H156_TAG, c64h156_device, byte_r)) + MCFG_VIA6522_WRITEPA_HANDLER(DEVWRITE8(C64H156_TAG, c64h156_device, yb_w)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c1571_device, via1_pb_w)) + MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE(C64H156_TAG, c64h156_device, soe_w)) + MCFG_VIA6522_CB2_HANDLER(DEVWRITELINE(C64H156_TAG, c64h156_device, oe_w)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(c1571_device, via1_irq_w)) //MCFG_MOS5710_ADD(M5710_TAG, XTAL_16MHz/16, 0) @@ -854,8 +839,25 @@ static MACHINE_CONFIG_FRAGMENT( mini_chief ) MCFG_CPU_PROGRAM_MAP(mini_chief_mem) MCFG_QUANTUM_PERFECT_CPU(M6502_TAG) - MCFG_VIA6522_ADD(M6522_0_TAG, XTAL_16MHz/16, via0_intf) - MCFG_VIA6522_ADD(M6522_1_TAG, XTAL_16MHz/16, via1_intf) + MCFG_DEVICE_ADD(M6522_0_TAG, VIA6522, XTAL_16MHz/16) + MCFG_VIA6522_READPA_HANDLER(READ8(c1571_device, via0_pa_r)) + MCFG_VIA6522_READPB_HANDLER(READ8(c1571_device, via0_pb_r)) + MCFG_VIA6522_READCA1_HANDLER(READLINE(c1571_device, atn_in_r)) + MCFG_VIA6522_READCA2_HANDLER(READLINE(c1571_device, wprt_r)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(c1571_device, via0_pa_w)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c1571_device, via0_pb_w)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(c1571_device, via0_irq_w)) + + MCFG_DEVICE_ADD(M6522_1_TAG, VIA6522, XTAL_16MHz/16) + MCFG_VIA6522_READPA_HANDLER(DEVREAD8(C64H156_TAG, c64h156_device, yb_r)) + MCFG_VIA6522_READPB_HANDLER(READ8(c1571_device, via1_pb_r)) + MCFG_VIA6522_READCA1_HANDLER(DEVREADLINE(C64H156_TAG, c64h156_device, byte_r)) + MCFG_VIA6522_WRITEPA_HANDLER(DEVWRITE8(C64H156_TAG, c64h156_device, yb_w)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c1571_device, via1_pb_w)) + MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE(C64H156_TAG, c64h156_device, soe_w)) + MCFG_VIA6522_CB2_HANDLER(DEVWRITELINE(C64H156_TAG, c64h156_device, oe_w)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(c1571_device, via1_irq_w)) + MCFG_MOS6526_ADD(M6526_TAG, XTAL_16MHz/16, 0, WRITELINE(c1571_device, cia_irq_w)) MCFG_MOS6526_SERIAL_CALLBACKS(WRITELINE(c1571_device, cia_cnt_w), WRITELINE(c1571_device, cia_sp_w)) MCFG_MOS6526_PORT_B_CALLBACKS(READ8(c1571_device, cia_pb_r), WRITE8(c1571_device, cia_pb_w), WRITELINE(c1571_device, cia_pc_w)) diff --git a/src/emu/bus/cbmiec/cmdhd.c b/src/emu/bus/cbmiec/cmdhd.c index 12e7e680f3d..97af2133eb2 100644 --- a/src/emu/bus/cbmiec/cmdhd.c +++ b/src/emu/bus/cbmiec/cmdhd.c @@ -74,54 +74,6 @@ ADDRESS_MAP_END //------------------------------------------------- -// via6522_interface via1_intf -//------------------------------------------------- - -static const via6522_interface via1_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_NULL -}; - - -//------------------------------------------------- -// via6522_interface via2_intf -//------------------------------------------------- - -static const via6522_interface via2_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_NULL -}; - - -//------------------------------------------------- // I8255A_INTERFACE( ppi_intf ) //------------------------------------------------- @@ -144,8 +96,8 @@ static MACHINE_CONFIG_FRAGMENT( cmd_hd ) MCFG_CPU_ADD(M6502_TAG, M6502, 2000000) MCFG_CPU_PROGRAM_MAP(cmd_hd_mem) - MCFG_VIA6522_ADD(M6522_1_TAG, 2000000, via1_intf) - MCFG_VIA6522_ADD(M6522_2_TAG, 2000000, via2_intf) + MCFG_DEVICE_ADD(M6522_1_TAG, VIA6522, 2000000) + MCFG_DEVICE_ADD(M6522_2_TAG, VIA6522, 2000000) MCFG_I8255A_ADD(I8255A_TAG, ppi_intf) //MCFG_RTC72421A_ADD(RTC72421A_TAG) diff --git a/src/emu/bus/cbmiec/fd2000.c b/src/emu/bus/cbmiec/fd2000.c index 31155599e08..fc277d1f4d0 100644 --- a/src/emu/bus/cbmiec/fd2000.c +++ b/src/emu/bus/cbmiec/fd2000.c @@ -116,10 +116,6 @@ static ADDRESS_MAP_START( fd4000_mem, AS_PROGRAM, 8, fd4000_device ) ADDRESS_MAP_END -//------------------------------------------------- -// via6522_interface via_intf -//------------------------------------------------- - READ8_MEMBER( fd2000_device::via_pa_r ) { /* @@ -201,25 +197,6 @@ WRITE8_MEMBER( fd2000_device::via_pb_w ) */ } -static const via6522_interface via_intf = -{ - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, fd2000_device, via_pa_r), - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, fd2000_device, via_pb_r), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, fd2000_device, via_pa_w), - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, fd2000_device, via_pb_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_NULL -}; - static SLOT_INTERFACE_START( fd2000_floppies ) SLOT_INTERFACE( "35hd", FLOPPY_35_HD ) // TEAC FD-235HF SLOT_INTERFACE_END @@ -242,7 +219,12 @@ static MACHINE_CONFIG_FRAGMENT( fd2000 ) MCFG_CPU_ADD(G65SC02PI2_TAG, M65C02, XTAL_24MHz/12) MCFG_CPU_PROGRAM_MAP(fd2000_mem) - MCFG_VIA6522_ADD(G65SC22P2_TAG, XTAL_24MHz/12, via_intf) + MCFG_DEVICE_ADD(G65SC22P2_TAG, VIA6522, XTAL_24MHz/12) + MCFG_VIA6522_READPA_HANDLER(READ8(fd2000_device, via_pa_r)) + MCFG_VIA6522_READPB_HANDLER(READ8(fd2000_device, via_pb_r)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(fd2000_device, via_pa_w)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(fd2000_device, via_pb_w)) + MCFG_DP8473_ADD(DP8473V_TAG) MCFG_FLOPPY_DRIVE_ADD(DP8473V_TAG":0", fd2000_floppies, "35hd", floppy_image_device::default_floppy_formats)//fd2000_device::floppy_formats) @@ -257,7 +239,12 @@ static MACHINE_CONFIG_FRAGMENT( fd4000 ) MCFG_CPU_ADD(R65C02P4_TAG, M65C02, XTAL_24MHz/6) MCFG_CPU_PROGRAM_MAP(fd4000_mem) - MCFG_VIA6522_ADD(G65SC22P2_TAG, XTAL_24MHz/12, via_intf) + MCFG_DEVICE_ADD(G65SC22P2_TAG, VIA6522, XTAL_24MHz/12) + MCFG_VIA6522_READPA_HANDLER(READ8(fd2000_device, via_pa_r)) + MCFG_VIA6522_READPB_HANDLER(READ8(fd2000_device, via_pb_r)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(fd2000_device, via_pa_w)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(fd2000_device, via_pb_w)) + MCFG_PC8477A_ADD(PC8477AV1_TAG) MCFG_FLOPPY_DRIVE_ADD(PC8477AV1_TAG":0", fd4000_floppies, "35ed", floppy_image_device::default_floppy_formats)//fd2000_device::floppy_formats) diff --git a/src/emu/bus/cbmiec/interpod.c b/src/emu/bus/cbmiec/interpod.c index 6876edadeb4..21cc334939c 100644 --- a/src/emu/bus/cbmiec/interpod.c +++ b/src/emu/bus/cbmiec/interpod.c @@ -122,30 +122,6 @@ ADDRESS_MAP_END //------------------------------------------------- -// via6522_interface via_intf -//------------------------------------------------- - -static const via6522_interface via_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_NULL -}; - - -//------------------------------------------------- // riot6532_interface riot_intf //------------------------------------------------- @@ -181,7 +157,7 @@ static MACHINE_CONFIG_FRAGMENT( interpod ) MCFG_CPU_ADD(R6502_TAG, M6502, 1000000) MCFG_CPU_PROGRAM_MAP(interpod_mem) - MCFG_VIA6522_ADD(R6522_TAG, 1000000, via_intf) + MCFG_DEVICE_ADD(R6522_TAG, VIA6522, 1000000) MCFG_RIOT6532_ADD(R6532_TAG, 1000000, riot_intf) MCFG_ACIA6850_ADD(MC6850_TAG, acia_intf) diff --git a/src/emu/bus/econet/e01.c b/src/emu/bus/econet/e01.c index b1d5b5cbdd7..1326e3189ba 100644 --- a/src/emu/bus/econet/e01.c +++ b/src/emu/bus/econet/e01.c @@ -169,10 +169,6 @@ static const mc6854_interface adlc_intf = }; -//------------------------------------------------- -// via6522_interface via_intf -//------------------------------------------------- - WRITE_LINE_MEMBER( e01_device::via_irq_w ) { m_via_irq = state; @@ -185,25 +181,6 @@ WRITE_LINE_MEMBER( e01_device::clk_en_w ) m_clk_en = state; } -static const via6522_interface via_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_DEVICE_MEMBER(CENTRONICS_TAG, centronics_device, write), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, e01_device, via_irq_w) -}; - //------------------------------------------------- // wd17xx_interface fdc_intf @@ -294,7 +271,10 @@ static MACHINE_CONFIG_FRAGMENT( e01 ) MCFG_MC146818_IRQ_HANDLER(WRITELINE(e01_device, rtc_irq_w)) // devices - MCFG_VIA6522_ADD(R6522_TAG, XTAL_8MHz/4, via_intf) + MCFG_DEVICE_ADD(R6522_TAG, VIA6522, XTAL_8MHz/4) + MCFG_VIA6522_WRITEPA_HANDLER(DEVWRITE8(CENTRONICS_TAG, centronics_device, write)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(e01_device, via_irq_w)) + MCFG_MC6854_ADD(MC6854_TAG, adlc_intf) MCFG_WD2793x_ADD(WD2793_TAG, XTAL_8MHz/4) MCFG_FLOPPY_DRIVE_ADD(WD2793_TAG":0", e01_floppies, "35dd", floppy_image_device::default_floppy_formats) diff --git a/src/emu/bus/ieee488/c2031.c b/src/emu/bus/ieee488/c2031.c index bff9fa43fb9..82963e0ad40 100644 --- a/src/emu/bus/ieee488/c2031.c +++ b/src/emu/bus/ieee488/c2031.c @@ -71,10 +71,6 @@ static ADDRESS_MAP_START( c2031_mem, AS_PROGRAM, 8, c2031_device ) ADDRESS_MAP_END -//------------------------------------------------- -// via6522_interface via0_intf -//------------------------------------------------- - WRITE_LINE_MEMBER( c2031_device::via0_irq_w ) { m_via0_irq = state; @@ -216,29 +212,6 @@ READ_LINE_MEMBER( c2031_device::via0_ca2_r ) return get_device_number(); } -static const via6522_interface via0_intf = -{ - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c2031_device, via0_pa_r), - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c2031_device, via0_pb_r), - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c2031_device, via0_ca1_r), - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c2031_device, via0_ca2_r), - DEVCB_NULL, - - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c2031_device, via0_pa_w), - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c2031_device, via0_pb_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, // PLL SYN - - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c2031_device, via0_irq_w) -}; - - -//------------------------------------------------- -// via6522_interface via1_intf -//------------------------------------------------- WRITE_LINE_MEMBER( c2031_device::via1_irq_w ) { @@ -305,25 +278,6 @@ WRITE8_MEMBER( c2031_device::via1_pb_w ) m_ga->ds_w((data >> 5) & 0x03); } -static const via6522_interface via1_intf = -{ - DEVCB_DEVICE_MEMBER(C64H156_TAG, c64h156_device, yb_r), - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c2031_device, via1_pb_r), - DEVCB_DEVICE_LINE_MEMBER(C64H156_TAG, c64h156_device, byte_r), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_DEVICE_MEMBER(C64H156_TAG, c64h156_device, yb_w), - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c2031_device, via1_pb_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(C64H156_TAG, c64h156_device, soe_w), - DEVCB_DEVICE_LINE_MEMBER(C64H156_TAG, c64h156_device, oe_w), - - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c2031_device, via1_irq_w) -}; - //------------------------------------------------- // C64H156_INTERFACE( ga_intf ) @@ -381,8 +335,24 @@ static MACHINE_CONFIG_FRAGMENT( c2031 ) MCFG_CPU_PROGRAM_MAP(c2031_mem) MCFG_QUANTUM_PERFECT_CPU(M6502_TAG) - MCFG_VIA6522_ADD(M6522_0_TAG, XTAL_16MHz/16, via0_intf) - MCFG_VIA6522_ADD(M6522_1_TAG, XTAL_16MHz/16, via1_intf) + MCFG_DEVICE_ADD(M6522_0_TAG, VIA6522, XTAL_16MHz/16) + MCFG_VIA6522_READPA_HANDLER(READ8(c2031_device, via0_pa_r)) + MCFG_VIA6522_READPB_HANDLER(READ8(c2031_device, via0_pb_r)) + MCFG_VIA6522_READCA1_HANDLER(READLINE(c2031_device, via0_ca1_r)) + MCFG_VIA6522_READCA2_HANDLER(READLINE(c2031_device, via0_ca2_r)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(c2031_device, via0_pa_w)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c2031_device, via0_pb_w)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(c2031_device, via0_irq_w)) + + MCFG_DEVICE_ADD(M6522_1_TAG, VIA6522, XTAL_16MHz/16) + MCFG_VIA6522_READPA_HANDLER(DEVREAD8(C64H156_TAG, c64h156_device, yb_r)) + MCFG_VIA6522_READPB_HANDLER(READ8(c2031_device, via1_pb_r)) + MCFG_VIA6522_READCA1_HANDLER(DEVREADLINE(C64H156_TAG, c64h156_device, byte_r)) + MCFG_VIA6522_WRITEPA_HANDLER(DEVWRITE8(C64H156_TAG, c64h156_device, yb_w)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c2031_device, via1_pb_w)) + MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE(C64H156_TAG, c64h156_device, soe_w)) + MCFG_VIA6522_CB2_HANDLER(DEVWRITELINE(C64H156_TAG, c64h156_device, oe_w)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(c2031_device, via1_irq_w)) MCFG_LEGACY_FLOPPY_DRIVE_ADD(FLOPPY_0, c2031_floppy_interface) MCFG_64H156_ADD(C64H156_TAG, XTAL_16MHz, ga_intf) diff --git a/src/emu/bus/ieee488/c2040.c b/src/emu/bus/ieee488/c2040.c index dd6a25de726..7dbf3d9ff11 100644 --- a/src/emu/bus/ieee488/c2040.c +++ b/src/emu/bus/ieee488/c2040.c @@ -566,10 +566,6 @@ static const riot6532_interface riot1_intf = }; -//------------------------------------------------- -// via6522_interface via_intf um3 -//------------------------------------------------- - READ8_MEMBER( c2040_device::via_pa_r ) { /* @@ -654,29 +650,6 @@ WRITE_LINE_MEMBER( c2040_device::rw_sel_w ) m_via->write_cb1(ERROR); } -static const via6522_interface via_intf = -{ - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c2040_device, via_pa_r), - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c2040_device, ready_r), - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c2040_device, err_r), - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_NULL, - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c2040_device, via_pb_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c2040_device, mode_sel_w), - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c2040_device, rw_sel_w), - - DEVCB_NULL -}; - - -//------------------------------------------------- -// via6522_interface c8050_via_intf um3 -//------------------------------------------------- READ8_MEMBER( c8050_device::via_pb_r ) { @@ -739,25 +712,6 @@ WRITE8_MEMBER( c8050_device::via_pb_w ) m_bit_timer->enable(!mtr1 || !mtr0); } -static const via6522_interface c8050_via_intf = -{ - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c2040_device, via_pa_r), - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c8050_device, via_pb_r), - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c2040_device, ready_r), - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c2040_device, err_r), - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_NULL, - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c8050_device, via_pb_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c2040_device, mode_sel_w), - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c2040_device, rw_sel_w), - - DEVCB_NULL -}; - //------------------------------------------------- // mos6530_interface miot_intf uk3 @@ -1097,7 +1051,14 @@ static MACHINE_CONFIG_FRAGMENT( c2040 ) MCFG_CPU_ADD(M6504_TAG, M6504, XTAL_16MHz/16) MCFG_CPU_PROGRAM_MAP(c2040_fdc_mem) - MCFG_VIA6522_ADD(M6522_TAG, XTAL_16MHz/16, via_intf) + MCFG_DEVICE_ADD(M6522_TAG, VIA6522, XTAL_16MHz/16) + MCFG_VIA6522_READPA_HANDLER(READ8(c2040_device, via_pa_r)) + MCFG_VIA6522_READCA1_HANDLER(READLINE(c2040_device, ready_r)) + MCFG_VIA6522_READCB1_HANDLER(READLINE(c2040_device, err_r)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c2040_device, via_pb_w)) + MCFG_VIA6522_CA2_HANDLER(WRITELINE(c2040_device, mode_sel_w)) + MCFG_VIA6522_CB2_HANDLER(WRITELINE(c2040_device, rw_sel_w)) + MCFG_MOS6530_ADD(M6530_TAG, XTAL_16MHz/16, miot_intf) MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(c2040_floppy_interface) @@ -1131,7 +1092,14 @@ static MACHINE_CONFIG_FRAGMENT( c4040 ) MCFG_CPU_ADD(M6504_TAG, M6504, XTAL_16MHz/16) MCFG_CPU_PROGRAM_MAP(c2040_fdc_mem) - MCFG_VIA6522_ADD(M6522_TAG, XTAL_16MHz/16, via_intf) + MCFG_DEVICE_ADD(M6522_TAG, VIA6522, XTAL_16MHz/16) + MCFG_VIA6522_READPA_HANDLER(READ8(c2040_device, via_pa_r)) + MCFG_VIA6522_READCA1_HANDLER(READLINE(c2040_device, ready_r)) + MCFG_VIA6522_READCB1_HANDLER(READLINE(c2040_device, err_r)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c2040_device, via_pb_w)) + MCFG_VIA6522_CA2_HANDLER(WRITELINE(c2040_device, mode_sel_w)) + MCFG_VIA6522_CB2_HANDLER(WRITELINE(c2040_device, rw_sel_w)) + MCFG_MOS6530_ADD(M6530_TAG, XTAL_16MHz/16, miot_intf) MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(c4040_floppy_interface) @@ -1165,7 +1133,15 @@ static MACHINE_CONFIG_FRAGMENT( c8050 ) MCFG_CPU_ADD(M6504_TAG, M6504, XTAL_12MHz/12) MCFG_CPU_PROGRAM_MAP(c8050_fdc_mem) - MCFG_VIA6522_ADD(M6522_TAG, XTAL_12MHz/12, c8050_via_intf) + MCFG_DEVICE_ADD(M6522_TAG, VIA6522, XTAL_12MHz/12) + MCFG_VIA6522_READPA_HANDLER(READ8(c2040_device, via_pa_r)) + MCFG_VIA6522_READPB_HANDLER(READ8(c8050_device, via_pb_r)) + MCFG_VIA6522_READCA1_HANDLER(READLINE(c2040_device, ready_r)) + MCFG_VIA6522_READCB1_HANDLER(READLINE(c2040_device, err_r)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c8050_device, via_pb_w)) + MCFG_VIA6522_CA2_HANDLER(WRITELINE(c2040_device, mode_sel_w)) + MCFG_VIA6522_CB2_HANDLER(WRITELINE(c2040_device, rw_sel_w)) + MCFG_MOS6530_ADD(M6530_TAG, XTAL_12MHz/12, c8050_miot_intf) MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(c8050_floppy_interface) @@ -1199,7 +1175,15 @@ static MACHINE_CONFIG_FRAGMENT( c8250 ) MCFG_CPU_ADD(M6504_TAG, M6504, XTAL_12MHz/12) MCFG_CPU_PROGRAM_MAP(c8050_fdc_mem) - MCFG_VIA6522_ADD(M6522_TAG, XTAL_12MHz/12, c8050_via_intf) + MCFG_DEVICE_ADD(M6522_TAG, VIA6522, XTAL_12MHz/12) + MCFG_VIA6522_READPA_HANDLER(READ8(c2040_device, via_pa_r)) + MCFG_VIA6522_READPB_HANDLER(READ8(c8050_device, via_pb_r)) + MCFG_VIA6522_READCA1_HANDLER(READLINE(c2040_device, ready_r)) + MCFG_VIA6522_READCB1_HANDLER(READLINE(c2040_device, err_r)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c8050_device, via_pb_w)) + MCFG_VIA6522_CA2_HANDLER(WRITELINE(c2040_device, mode_sel_w)) + MCFG_VIA6522_CB2_HANDLER(WRITELINE(c2040_device, rw_sel_w)) + MCFG_MOS6530_ADD(M6530_TAG, XTAL_12MHz/12, c8050_miot_intf) MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(c8250_floppy_interface) @@ -1233,7 +1217,15 @@ static MACHINE_CONFIG_FRAGMENT( c8250lp ) MCFG_CPU_ADD(M6504_TAG, M6504, XTAL_12MHz/12) MCFG_CPU_PROGRAM_MAP(c8250lp_fdc_mem) - MCFG_VIA6522_ADD(M6522_TAG, XTAL_12MHz/12, c8050_via_intf) + MCFG_DEVICE_ADD(M6522_TAG, VIA6522, XTAL_12MHz/12) + MCFG_VIA6522_READPA_HANDLER(READ8(c2040_device, via_pa_r)) + MCFG_VIA6522_READPB_HANDLER(READ8(c8050_device, via_pb_r)) + MCFG_VIA6522_READCA1_HANDLER(READLINE(c2040_device, ready_r)) + MCFG_VIA6522_READCB1_HANDLER(READLINE(c2040_device, err_r)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c8050_device, via_pb_w)) + MCFG_VIA6522_CA2_HANDLER(WRITELINE(c2040_device, mode_sel_w)) + MCFG_VIA6522_CB2_HANDLER(WRITELINE(c2040_device, rw_sel_w)) + MCFG_MOS6530_ADD(M6530_TAG, XTAL_12MHz/12, c8050_miot_intf) MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(c8250_floppy_interface) @@ -1267,7 +1259,15 @@ static MACHINE_CONFIG_FRAGMENT( sfd1001 ) MCFG_CPU_ADD(M6504_TAG, M6504, XTAL_12MHz/12) MCFG_CPU_PROGRAM_MAP(sfd1001_fdc_mem) - MCFG_VIA6522_ADD(M6522_TAG, XTAL_12MHz/12, c8050_via_intf) + MCFG_DEVICE_ADD(M6522_TAG, VIA6522, XTAL_12MHz/12) + MCFG_VIA6522_READPA_HANDLER(READ8(c2040_device, via_pa_r)) + MCFG_VIA6522_READPB_HANDLER(READ8(c8050_device, via_pb_r)) + MCFG_VIA6522_READCA1_HANDLER(READLINE(c2040_device, ready_r)) + MCFG_VIA6522_READCB1_HANDLER(READLINE(c2040_device, err_r)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c8050_device, via_pb_w)) + MCFG_VIA6522_CA2_HANDLER(WRITELINE(c2040_device, mode_sel_w)) + MCFG_VIA6522_CB2_HANDLER(WRITELINE(c2040_device, rw_sel_w)) + MCFG_MOS6530_ADD(M6530_TAG, XTAL_12MHz/12, c8050_miot_intf) MCFG_LEGACY_FLOPPY_DRIVE_ADD(FLOPPY_0, c8250_floppy_interface) diff --git a/src/emu/bus/ieee488/d9060.c b/src/emu/bus/ieee488/d9060.c index 7d33147ee17..bdf85035138 100644 --- a/src/emu/bus/ieee488/d9060.c +++ b/src/emu/bus/ieee488/d9060.c @@ -336,10 +336,6 @@ static const riot6532_interface riot1_intf = }; -//------------------------------------------------- -// via6522_interface via_intf -//------------------------------------------------- - READ8_MEMBER( base_d9060_device::via_pb_r ) { /* @@ -425,25 +421,6 @@ WRITE_LINE_MEMBER( base_d9060_device::req_w ) m_via->write_ca1(state); } -static const via6522_interface via_intf = -{ - DEVCB_DEVICE_MEMBER(SASIBUS_TAG ":host", scsicb_device, scsi_data_r), - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, base_d9060_device, via_pb_r), - DEVCB_DEVICE_LINE_MEMBER(SASIBUS_TAG ":host", scsicb_device, scsi_req_r), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, base_d9060_device, scsi_data_w), - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, base_d9060_device, via_pb_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, base_d9060_device, ack_w), - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, base_d9060_device, enable_w), - - DEVCB_CPU_INPUT_LINE(M6502_HDC_TAG, INPUT_LINE_IRQ0) -}; - //------------------------------------------------- // MACHINE_CONFIG_FRAGMENT( d9060 ) @@ -461,7 +438,15 @@ static MACHINE_CONFIG_FRAGMENT( d9060 ) MCFG_CPU_ADD(M6502_HDC_TAG, M6502, XTAL_4MHz/4) MCFG_CPU_PROGRAM_MAP(d9060_hdc_mem) - MCFG_VIA6522_ADD(M6522_TAG, XTAL_4MHz/4, via_intf) + MCFG_DEVICE_ADD(M6522_TAG, VIA6522, XTAL_4MHz/4) + MCFG_VIA6522_READPA_HANDLER(DEVREAD8(SASIBUS_TAG ":host", scsicb_device, scsi_data_r)) + MCFG_VIA6522_READPB_HANDLER(READ8(base_d9060_device, via_pb_r)) + MCFG_VIA6522_READCA1_HANDLER(DEVREADLINE(SASIBUS_TAG ":host", scsicb_device, scsi_req_r)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(base_d9060_device, scsi_data_w)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(base_d9060_device, via_pb_w)) + MCFG_VIA6522_CA2_HANDLER(WRITELINE(base_d9060_device, ack_w)) + MCFG_VIA6522_CB2_HANDLER(WRITELINE(base_d9060_device, enable_w)) + MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE(M6502_HDC_TAG, m6502_device, irq_line)) MCFG_SCSIBUS_ADD(SASIBUS_TAG) MCFG_SCSIDEV_ADD(SASIBUS_TAG ":harddisk0", D9060HD, SCSI_ID_0) diff --git a/src/emu/bus/vic20/vic1112.c b/src/emu/bus/vic20/vic1112.c index b75d561f2fd..8a899cac8fe 100644 --- a/src/emu/bus/vic20/vic1112.c +++ b/src/emu/bus/vic20/vic1112.c @@ -29,10 +29,6 @@ const device_type VIC1112 = &device_creator<vic1112_device>; -//------------------------------------------------- -// via6522_interface via0_intf -//------------------------------------------------- - WRITE_LINE_MEMBER( vic1112_device::via0_irq_w ) { m_via0_irq = state; @@ -90,29 +86,6 @@ WRITE8_MEMBER( vic1112_device::via0_pb_w ) m_bus->ndac_w(BIT(data, 2)); } -static const via6522_interface via0_intf = -{ - DEVCB_NULL, - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, vic1112_device, via0_pb_r), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_NULL, - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, vic1112_device, via0_pb_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, vic1112_device, via0_irq_w) -}; - - -//------------------------------------------------- -// via6522_interface via1_intf -//------------------------------------------------- WRITE_LINE_MEMBER( vic1112_device::via1_irq_w ) { @@ -121,33 +94,24 @@ WRITE_LINE_MEMBER( vic1112_device::via1_irq_w ) m_slot->irq_w(m_via0_irq | m_via1_irq); } -static const via6522_interface via1_intf = -{ - DEVCB_NULL, - DEVCB_DEVICE_MEMBER(IEEE488_TAG, ieee488_device, dio_r), - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(IEEE488_TAG, ieee488_device, srq_r), - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_DEVICE_MEMBER(IEEE488_TAG, ieee488_device, dio_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(IEEE488_TAG, ieee488_device, atn_w), - DEVCB_DEVICE_LINE_MEMBER(IEEE488_TAG, ieee488_device, eoi_w), - - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, vic1112_device, via1_irq_w) -}; - //------------------------------------------------- // MACHINE_DRIVER( vic1112 ) //------------------------------------------------- static MACHINE_CONFIG_FRAGMENT( vic1112 ) - MCFG_VIA6522_ADD(M6522_0_TAG, 0, via0_intf) - MCFG_VIA6522_ADD(M6522_1_TAG, 0, via1_intf) + MCFG_DEVICE_ADD(M6522_0_TAG, VIA6522, 0) + MCFG_VIA6522_READPB_HANDLER(READ8(vic1112_device, via0_pb_r)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(vic1112_device, via0_pb_w)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(vic1112_device, via0_irq_w)) + + MCFG_DEVICE_ADD(M6522_1_TAG, VIA6522, 0) + MCFG_VIA6522_READPB_HANDLER(DEVREAD8(IEEE488_TAG, ieee488_device, dio_r)) + MCFG_VIA6522_READCB1_HANDLER(DEVREADLINE(IEEE488_TAG, ieee488_device, srq_r)) + MCFG_VIA6522_WRITEPA_HANDLER(DEVWRITE8(IEEE488_TAG, ieee488_device, dio_w)) + MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE(IEEE488_TAG, ieee488_device, atn_w)) + MCFG_VIA6522_CB2_HANDLER(DEVWRITELINE(IEEE488_TAG, ieee488_device, eoi_w)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(vic1112_device, via1_irq_w)) MCFG_CBM_IEEE488_ADD(NULL) MCFG_IEEE488_SRQ_CALLBACK(DEVWRITELINE(M6522_1_TAG, via6522_device, write_cb1)) diff --git a/src/emu/cpu/m6502/m6502.c b/src/emu/cpu/m6502/m6502.c index a6652aecb4a..06e98d3b559 100644 --- a/src/emu/cpu/m6502/m6502.c +++ b/src/emu/cpu/m6502/m6502.c @@ -733,4 +733,9 @@ WRITE_LINE_MEMBER( m6502_device::irq_line ) set_input_line( M6502_IRQ_LINE, state ); } +WRITE_LINE_MEMBER( m6502_device::nmi_line ) +{ + set_input_line( M6502_NMI_LINE, state ); +} + #include "cpu/m6502/m6502.inc" diff --git a/src/emu/cpu/m6502/m6502.h b/src/emu/cpu/m6502/m6502.h index 57298bcfb55..df3f365cdbd 100644 --- a/src/emu/cpu/m6502/m6502.h +++ b/src/emu/cpu/m6502/m6502.h @@ -56,6 +56,7 @@ public: m6502_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source); DECLARE_WRITE_LINE_MEMBER( irq_line ); + DECLARE_WRITE_LINE_MEMBER( nmi_line ); UINT64 get_cycle(); bool get_sync() const { return sync; } diff --git a/src/emu/cpu/m68000/m68000.h b/src/emu/cpu/m68000/m68000.h index 544ce0196e7..d6764df6ab6 100644 --- a/src/emu/cpu/m68000/m68000.h +++ b/src/emu/cpu/m68000/m68000.h @@ -146,6 +146,14 @@ public: m68000_base_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + DECLARE_WRITE_LINE_MEMBER( write_irq1 ); + DECLARE_WRITE_LINE_MEMBER( write_irq2 ); + DECLARE_WRITE_LINE_MEMBER( write_irq3 ); + DECLARE_WRITE_LINE_MEMBER( write_irq4 ); + DECLARE_WRITE_LINE_MEMBER( write_irq5 ); + DECLARE_WRITE_LINE_MEMBER( write_irq6 ); + DECLARE_WRITE_LINE_MEMBER( write_irq7 ); + void clear_all(void); virtual UINT32 disasm_min_opcode_bytes() const { return 2; }; diff --git a/src/emu/cpu/m68000/m68kcpu.c b/src/emu/cpu/m68000/m68kcpu.c index 42acf54ec3c..3226bca351b 100644 --- a/src/emu/cpu/m68000/m68kcpu.c +++ b/src/emu/cpu/m68000/m68kcpu.c @@ -707,6 +707,41 @@ static void m68k_cause_bus_error(m68000_base_device *m68k) m68ki_jump_vector(m68k, EXCEPTION_BUS_ERROR); } +WRITE_LINE_MEMBER( m68000_base_device::write_irq1 ) +{ + set_input_line( M68K_IRQ_1, state ); +} + +WRITE_LINE_MEMBER( m68000_base_device::write_irq2 ) +{ + set_input_line( M68K_IRQ_2, state ); +} + +WRITE_LINE_MEMBER( m68000_base_device::write_irq3 ) +{ + set_input_line( M68K_IRQ_3, state ); +} + +WRITE_LINE_MEMBER( m68000_base_device::write_irq4 ) +{ + set_input_line( M68K_IRQ_4, state ); +} + +WRITE_LINE_MEMBER( m68000_base_device::write_irq5 ) +{ + set_input_line( M68K_IRQ_5, state ); +} + +WRITE_LINE_MEMBER( m68000_base_device::write_irq6 ) +{ + set_input_line( M68K_IRQ_6, state ); +} + +WRITE_LINE_MEMBER( m68000_base_device::write_irq7 ) +{ + set_input_line( M68K_IRQ_7, state ); +} + bool m68000_base_device::memory_translate(address_spacenum space, int intention, offs_t &address) { /* only applies to the program address space and only does something if the MMU's enabled */ diff --git a/src/emu/machine/6522via.c b/src/emu/machine/6522via.c index f20224acce5..b8c5eab1ce1 100644 --- a/src/emu/machine/6522via.c +++ b/src/emu/machine/6522via.c @@ -112,7 +112,7 @@ inline void via6522_device::set_irq_line(int state) { if (m_irq != state) { - m_irq_func(state); + m_irq_handler(state); m_irq = state; } } @@ -148,61 +148,43 @@ const device_type VIA6522 = &device_creator<via6522_device>; via6522_device::via6522_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : device_t(mconfig, VIA6522, "6522 VIA", tag, owner, clock, "via6522", __FILE__), + m_in_a_handler(*this), + m_in_b_handler(*this), + m_in_ca1_handler(*this), + m_in_cb1_handler(*this), + m_in_ca2_handler(*this), + m_in_cb2_handler(*this), + m_out_a_handler(*this), + m_out_b_handler(*this), + m_ca1_handler(*this), + m_cb1_handler(*this), + m_ca2_handler(*this), + m_cb2_handler(*this), + m_irq_handler(*this), m_irq(CLEAR_LINE) { } //------------------------------------------------- -// device_config_complete - perform any -// operations now that the configuration is -// complete -//------------------------------------------------- - -void via6522_device::device_config_complete() -{ - // inherit a copy of the static data - const via6522_interface *intf = reinterpret_cast<const via6522_interface *>(static_config()); - if (intf != NULL) - *static_cast<via6522_interface *>(this) = *intf; - - // or initialize to defaults if none provided - else - { - memset(&m_in_a_cb, 0, sizeof(m_in_a_cb)); - memset(&m_in_b_cb, 0, sizeof(m_in_b_cb)); - memset(&m_in_ca1_cb, 0, sizeof(m_in_ca1_cb)); - memset(&m_in_cb1_cb, 0, sizeof(m_in_cb1_cb)); - memset(&m_in_ca2_cb, 0, sizeof(m_in_ca2_cb)); - memset(&m_in_cb2_cb, 0, sizeof(m_in_cb2_cb)); - memset(&m_out_a_cb, 0, sizeof(m_out_a_cb)); - memset(&m_out_b_cb, 0, sizeof(m_out_b_cb)); - memset(&m_out_ca2_cb, 0, sizeof(m_out_ca2_cb)); - memset(&m_out_cb2_cb, 0, sizeof(m_out_cb2_cb)); - memset(&m_irq_cb, 0, sizeof(m_irq_cb)); - } -} - - -//------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- void via6522_device::device_start() { - m_in_a_func.resolve(m_in_a_cb, *this); - m_in_b_func.resolve(m_in_b_cb, *this); - m_in_ca1_func.resolve(m_in_ca1_cb, *this); - m_in_cb1_func.resolve(m_in_cb1_cb, *this); - m_in_ca2_func.resolve(m_in_ca2_cb, *this); - m_in_cb2_func.resolve(m_in_cb2_cb, *this); - m_out_a_func.resolve(m_out_a_cb, *this); - m_out_b_func.resolve(m_out_b_cb, *this); - m_out_ca1_func.resolve(m_out_ca1_cb, *this); - m_out_cb1_func.resolve(m_out_cb1_cb, *this); - m_out_ca2_func.resolve(m_out_ca2_cb, *this); - m_out_cb2_func.resolve(m_out_cb2_cb, *this); - m_irq_func.resolve(m_irq_cb, *this); + m_in_a_handler.resolve(); + m_in_b_handler.resolve(); + m_in_ca1_handler.resolve(); + m_in_cb1_handler.resolve(); + m_in_ca2_handler.resolve(); + m_in_cb2_handler.resolve(); + m_out_a_handler.resolve_safe(); + m_out_b_handler.resolve_safe(); + m_ca1_handler.resolve(); + m_cb1_handler.resolve_safe(); + m_ca2_handler.resolve_safe(); + m_cb2_handler.resolve_safe(); + m_irq_handler.resolve_safe(); m_t1ll = 0xf3; /* via at 0x9110 in vic20 show these values */ m_t1lh = 0xb5; /* ports are not written by kernel! */ @@ -346,13 +328,13 @@ void via6522_device::shift() m_out_cb2 = (m_sr >> 7) & 1; m_sr = (m_sr << 1) | m_out_cb2; - m_out_cb2_func(m_out_cb2); + m_cb2_handler(m_out_cb2); m_in_cb1=1; /* this should be one cycle wide */ - m_out_cb1_func(0); - m_out_cb1_func(1); + m_cb1_handler(0); + m_cb1_handler(1); m_shift_counter = (m_shift_counter + 1) % 8; @@ -378,7 +360,7 @@ void via6522_device::shift() m_out_cb2 = (m_sr >> 7) & 1; m_sr = (m_sr << 1) | m_out_cb2; - m_out_cb2_func(m_out_cb2); + m_cb2_handler(m_out_cb2); m_shift_counter = (m_shift_counter + 1) % 8; @@ -394,12 +376,12 @@ void via6522_device::shift() if (SI_O2_CONTROL(m_acr) || SI_T2_CONTROL(m_acr)) { /* this should be one cycle wide */ - m_out_cb1_func(0); - m_out_cb1_func(1); + m_cb1_handler(0); + m_cb1_handler(1); - if (!m_in_cb2_func.isnull()) + if (!m_in_cb2_handler.isnull()) { - m_in_cb2 = m_in_cb2_func(); + m_in_cb2 = m_in_cb2_handler(); } m_sr = (m_sr << 1) | (m_in_cb2 & 1); @@ -425,9 +407,9 @@ void via6522_device::shift() if (SI_EXT_CONTROL(m_acr)) { - if (!m_in_cb2_func.isnull()) + if (!m_in_cb2_handler.isnull()) { - m_in_cb2 = m_in_cb2_func(); + m_in_cb2 = m_in_cb2_handler(); } m_sr = (m_sr << 1) | (m_in_cb2 & 1); @@ -476,7 +458,7 @@ void via6522_device::device_timer(emu_timer &timer, device_timer_id id, int para if (m_ddr_b) { UINT8 write_data = (m_out_b & m_ddr_b) | (m_ddr_b ^ 0xff); - m_out_b_func(0, write_data); + m_out_b_handler(write_data); } if (!(m_ifr & INT_T1)) @@ -497,7 +479,7 @@ void via6522_device::device_timer(emu_timer &timer, device_timer_id id, int para break; case TIMER_CA2: - m_out_ca2_func(1); + m_ca2_handler(1); m_out_ca2 = 1; break; } @@ -521,9 +503,9 @@ READ8_MEMBER( via6522_device::read ) { if (m_ddr_b != 0xff) { - if (!m_in_b_func.isnull()) + if (!m_in_b_handler.isnull()) { - m_in_b = m_in_b_func(0); + m_in_b = m_in_b_handler(0); } else { @@ -551,9 +533,9 @@ READ8_MEMBER( via6522_device::read ) { if (m_ddr_a != 0xff) { - if (!m_in_a_func.isnull()) + if (!m_in_a_handler.isnull()) { - m_in_a = m_in_a_func(0); + m_in_a = m_in_a_handler(0); } else { @@ -576,7 +558,7 @@ READ8_MEMBER( via6522_device::read ) if (CA2_PULSE_OUTPUT(m_pcr)) { /* call the CA2 output function */ - m_out_ca2_func(0); + m_ca2_handler(0); m_out_ca2 = 0; m_ca2_timer->adjust(clocks_to_attotime(1)); @@ -591,7 +573,7 @@ READ8_MEMBER( via6522_device::read ) m_out_ca2 = 0; /* call the CA2 output function */ - m_out_ca2_func(0); + m_ca2_handler(0); } } @@ -601,9 +583,9 @@ READ8_MEMBER( via6522_device::read ) /* update the input */ if (PA_LATCH_ENABLE(m_acr) == 0) { - if (!m_in_a_func.isnull()) + if (!m_in_a_handler.isnull()) { - m_in_a = m_in_a_func(0); + m_in_a = m_in_a_handler(0); } else { @@ -730,7 +712,7 @@ WRITE8_MEMBER( via6522_device::write ) if (m_ddr_b) { UINT8 write_data = (m_out_b & m_ddr_b) | (m_ddr_b ^ 0xff); - m_out_b_func(0, write_data); + m_out_b_handler(write_data); } CLR_PB_INT(); @@ -745,7 +727,7 @@ WRITE8_MEMBER( via6522_device::write ) m_out_cb2 = 0; /* call the CB2 output function */ - m_out_cb2_func(0); + m_cb2_handler(0); } } break; @@ -756,7 +738,7 @@ WRITE8_MEMBER( via6522_device::write ) if (m_ddr_a) { UINT8 write_data = (m_out_a & m_ddr_a) | (m_ddr_a ^ 0xff); - m_out_a_func(0, write_data); + m_out_a_handler(write_data); } CLR_PA_INT(); @@ -766,7 +748,7 @@ WRITE8_MEMBER( via6522_device::write ) if (CA2_PULSE_OUTPUT(m_pcr)) { /* call the CA2 output function */ - m_out_ca2_func(0); + m_ca2_handler(0); m_out_ca2 = 0; m_ca2_timer->adjust(clocks_to_attotime(1)); @@ -779,7 +761,7 @@ WRITE8_MEMBER( via6522_device::write ) m_out_ca2 = 0; /* call the CA2 output function */ - m_out_ca2_func(0); + m_ca2_handler(0); } } @@ -791,7 +773,7 @@ WRITE8_MEMBER( via6522_device::write ) if (m_ddr_a) { UINT8 write_data = (m_out_a & m_ddr_a) | (m_ddr_a ^ 0xff); - m_out_a_func(0, write_data); + m_out_a_handler(write_data); } break; @@ -805,7 +787,7 @@ WRITE8_MEMBER( via6522_device::write ) //if (m_ddr_b) { UINT8 write_data = (m_out_b & m_ddr_b) | (m_ddr_b ^ 0xff); - m_out_b_func(0, write_data); + m_out_b_handler(write_data); } } break; @@ -819,7 +801,7 @@ WRITE8_MEMBER( via6522_device::write ) //if (m_ddr_a) { UINT8 write_data = (m_out_a & m_ddr_a) | (m_ddr_a ^ 0xff); - m_out_a_func(0, write_data); + m_out_a_handler(write_data); } } break; @@ -847,7 +829,7 @@ WRITE8_MEMBER( via6522_device::write ) //if (m_ddr_b) { UINT8 write_data = (m_out_b & m_ddr_b) | (m_ddr_b ^ 0xff); - m_out_b_func(0, write_data); + m_out_b_handler(write_data); } } m_t1->adjust(clocks_to_attotime(TIMER1_VALUE + IFR_DELAY)); @@ -902,13 +884,13 @@ WRITE8_MEMBER( via6522_device::write ) if (CA2_FIX_OUTPUT(data) && CA2_OUTPUT_LEVEL(data) ^ m_out_ca2) { m_out_ca2 = CA2_OUTPUT_LEVEL(data); - m_out_ca2_func(m_out_ca2); + m_ca2_handler(m_out_ca2); } if (CB2_FIX_OUTPUT(data) && CB2_OUTPUT_LEVEL(data) ^ m_out_cb2) { m_out_cb2 = CB2_OUTPUT_LEVEL(data); - m_out_cb2_func(m_out_cb2); + m_cb2_handler(m_out_cb2); } break; @@ -930,7 +912,7 @@ WRITE8_MEMBER( via6522_device::write ) //if (m_ddr_b) { UINT8 write_data = (m_out_b & m_ddr_b) | (m_ddr_b ^ 0xff); - m_out_b_func(0, write_data); + m_out_b_handler(write_data); } } if (T1_CONTINUOUS(data)) @@ -996,9 +978,9 @@ WRITE_LINE_MEMBER( via6522_device::write_ca1 ) { if (PA_LATCH_ENABLE(m_acr)) { - if (!m_in_a_func.isnull()) + if (!m_in_a_handler.isnull()) { - m_in_a = m_in_a_func(0); + m_in_a = m_in_a_handler(0); } else { @@ -1018,7 +1000,7 @@ WRITE_LINE_MEMBER( via6522_device::write_ca1 ) m_out_ca2 = 1; /* call the CA2 output function */ - m_out_ca2_func(1); + m_ca2_handler(1); } } } @@ -1066,9 +1048,9 @@ WRITE_LINE_MEMBER( via6522_device::write_cb1 ) { if (PB_LATCH_ENABLE(m_acr)) { - if (!m_in_b_func.isnull()) + if (!m_in_b_handler.isnull()) { - m_in_b = m_in_b_func(0); + m_in_b = m_in_b_handler(0); } else { @@ -1092,7 +1074,7 @@ WRITE_LINE_MEMBER( via6522_device::write_cb1 ) m_out_cb2 = 1; /* call the CB2 output function */ - m_out_cb2_func(1); + m_cb2_handler(1); } } } diff --git a/src/emu/machine/6522via.h b/src/emu/machine/6522via.h index 53d8258263b..08f365f06f2 100644 --- a/src/emu/machine/6522via.h +++ b/src/emu/machine/6522via.h @@ -24,63 +24,59 @@ // INTERFACE CONFIGURATION MACROS //************************************************************************** -#define MCFG_VIA6522_ADD(_tag, _clock, _intrf) \ - MCFG_DEVICE_ADD(_tag, VIA6522, _clock) \ - MCFG_DEVICE_CONFIG(_intrf) +// TODO: REMOVE THESE +#define MCFG_VIA6522_READPA_HANDLER(_devcb) \ + devcb = &via6522_device::set_readpa_handler(*device, DEVCB2_##_devcb); +#define MCFG_VIA6522_READPB_HANDLER(_devcb) \ + devcb = &via6522_device::set_readpb_handler(*device, DEVCB2_##_devcb); +// NOT USED +#define MCFG_VIA6522_READCA1_HANDLER(_devcb) \ + devcb = &via6522_device::set_readca1_handler(*device, DEVCB2_##_devcb); -/*************************************************************************** - MACROS / CONSTANTS -***************************************************************************/ +// NOT USED +#define MCFG_VIA6522_READCB1_HANDLER(_devcb) \ + devcb = &via6522_device::set_readcb1_handler(*device, DEVCB2_##_devcb); -#define VIA_PB 0 -#define VIA_PA 1 -#define VIA_DDRB 2 -#define VIA_DDRA 3 -#define VIA_T1CL 4 -#define VIA_T1CH 5 -#define VIA_T1LL 6 -#define VIA_T1LH 7 -#define VIA_T2CL 8 -#define VIA_T2CH 9 -#define VIA_SR 10 -#define VIA_ACR 11 -#define VIA_PCR 12 -#define VIA_IFR 13 -#define VIA_IER 14 -#define VIA_PANH 15 +// NOT USED +#define MCFG_VIA6522_READCA2_HANDLER(_devcb) \ + devcb = &via6522_device::set_readca2_handler(*device, DEVCB2_##_devcb); +#define MCFG_VIA6522_READCB2_HANDLER(_devcb) \ + devcb = &via6522_device::set_readcb2_handler(*device, DEVCB2_##_devcb); -/*************************************************************************** - TYPE DEFINITIONS -***************************************************************************/ +// TODO: CONVERT THESE TO WRITE LINE +#define MCFG_VIA6522_WRITEPA_HANDLER(_devcb) \ + devcb = &via6522_device::set_writepa_handler(*device, DEVCB2_##_devcb); +#define MCFG_VIA6522_WRITEPB_HANDLER(_devcb) \ + devcb = &via6522_device::set_writepb_handler(*device, DEVCB2_##_devcb); -// ======================> via6522_interface +#define MCFG_VIA6522_CA1_HANDLER(_devcb) \ + devcb = &via6522_device::set_ca1_handler(*device, DEVCB2_##_devcb); -struct via6522_interface -{ - devcb_read8 m_in_a_cb; - devcb_read8 m_in_b_cb; - devcb_read_line m_in_ca1_cb; - devcb_read_line m_in_cb1_cb; - devcb_read_line m_in_ca2_cb; - devcb_read_line m_in_cb2_cb; - devcb_write8 m_out_a_cb; - devcb_write8 m_out_b_cb; - devcb_write_line m_out_ca1_cb; - devcb_write_line m_out_cb1_cb; - devcb_write_line m_out_ca2_cb; - devcb_write_line m_out_cb2_cb; - devcb_write_line m_irq_cb; -}; +#define MCFG_VIA6522_CB1_HANDLER(_devcb) \ + devcb = &via6522_device::set_cb1_handler(*device, DEVCB2_##_devcb); + +#define MCFG_VIA6522_CA2_HANDLER(_devcb) \ + devcb = &via6522_device::set_ca2_handler(*device, DEVCB2_##_devcb); + +#define MCFG_VIA6522_CB2_HANDLER(_devcb) \ + devcb = &via6522_device::set_cb2_handler(*device, DEVCB2_##_devcb); + +#define MCFG_VIA6522_IRQ_HANDLER(_devcb) \ + devcb = &via6522_device::set_irq_handler(*device, DEVCB2_##_devcb); + + +/*************************************************************************** + TYPE DEFINITIONS +***************************************************************************/ // ======================> via6522_device -class via6522_device : public device_t, - public via6522_interface +class via6522_device : public device_t { friend class dart_channel; @@ -88,29 +84,64 @@ public: // construction/destruction via6522_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + // TODO: REMOVE THESE + template<class _Object> static devcb2_base &set_readpa_handler(device_t &device, _Object object) { return downcast<via6522_device &>(device).m_in_a_handler.set_callback(object); } + template<class _Object> static devcb2_base &set_readpb_handler(device_t &device, _Object object) { return downcast<via6522_device &>(device).m_in_b_handler.set_callback(object); } + template<class _Object> static devcb2_base &set_readca1_handler(device_t &device, _Object object) { return downcast<via6522_device &>(device).m_in_ca1_handler.set_callback(object); } + template<class _Object> static devcb2_base &set_readcb1_handler(device_t &device, _Object object) { return downcast<via6522_device &>(device).m_in_cb1_handler.set_callback(object); } + template<class _Object> static devcb2_base &set_readca2_handler(device_t &device, _Object object) { return downcast<via6522_device &>(device).m_in_ca2_handler.set_callback(object); } + template<class _Object> static devcb2_base &set_readcb2_handler(device_t &device, _Object object) { return downcast<via6522_device &>(device).m_in_cb2_handler.set_callback(object); } + + // TODO: CONVERT THESE TO WRITE LINE + template<class _Object> static devcb2_base &set_writepa_handler(device_t &device, _Object object) { return downcast<via6522_device &>(device).m_out_a_handler.set_callback(object); } + template<class _Object> static devcb2_base &set_writepb_handler(device_t &device, _Object object) { return downcast<via6522_device &>(device).m_out_b_handler.set_callback(object); } + + template<class _Object> static devcb2_base &set_ca1_handler(device_t &device, _Object object) { return downcast<via6522_device &>(device).m_ca1_handler.set_callback(object); } + template<class _Object> static devcb2_base &set_cb1_handler(device_t &device, _Object object) { return downcast<via6522_device &>(device).m_cb1_handler.set_callback(object); } + template<class _Object> static devcb2_base &set_ca2_handler(device_t &device, _Object object) { return downcast<via6522_device &>(device).m_ca2_handler.set_callback(object); } + template<class _Object> static devcb2_base &set_cb2_handler(device_t &device, _Object object) { return downcast<via6522_device &>(device).m_cb2_handler.set_callback(object); } + template<class _Object> static devcb2_base &set_irq_handler(device_t &device, _Object object) { return downcast<via6522_device &>(device).m_irq_handler.set_callback(object); } + DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); - DECLARE_WRITE8_MEMBER( write_porta ) { m_in_a = data; } + // TODO: REMOVE THESE + DECLARE_READ_LINE_MEMBER( read_ca1 ) { return m_in_ca1; } + DECLARE_READ_LINE_MEMBER( read_ca2 ) { return m_in_ca2; } + DECLARE_READ_LINE_MEMBER( read_cb1 ) { return m_in_cb1; } + DECLARE_READ_LINE_MEMBER( read_cb2 ) { return m_in_cb2; } - DECLARE_READ8_MEMBER( read_portb ) { return m_in_b; } + // TODO: CONVERT THESE TO WRITE LINE + DECLARE_WRITE8_MEMBER( write_porta ) { m_in_a = data; } DECLARE_WRITE8_MEMBER( write_portb ) { m_in_b = data; } - DECLARE_READ_LINE_MEMBER( read_ca1 ) { return m_in_ca1; } DECLARE_WRITE_LINE_MEMBER( write_ca1 ); - - DECLARE_READ_LINE_MEMBER( read_ca2 ) { return m_in_ca2; } DECLARE_WRITE_LINE_MEMBER( write_ca2 ); - - DECLARE_READ_LINE_MEMBER( read_cb1 ) { return m_in_cb1; } DECLARE_WRITE_LINE_MEMBER( write_cb1 ); - - DECLARE_READ_LINE_MEMBER( read_cb2 ) { return m_in_cb2; } DECLARE_WRITE_LINE_MEMBER( write_cb2 ); + enum + { + VIA_PB = 0, + VIA_PA = 1, + VIA_DDRB = 2, + VIA_DDRA = 3, + VIA_T1CL = 4, + VIA_T1CH = 5, + VIA_T1LL = 6, + VIA_T1LH = 7, + VIA_T2CL = 8, + VIA_T2CH = 9, + VIA_SR = 10, + VIA_ACR = 11, + VIA_PCR = 12, + VIA_IFR = 13, + VIA_IER = 14, + VIA_PANH = 15 + }; + 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); @@ -128,19 +159,23 @@ private: void clear_int(int data); void shift(); - devcb_resolved_read8 m_in_a_func; - devcb_resolved_read8 m_in_b_func; - devcb_resolved_read_line m_in_ca1_func; - devcb_resolved_read_line m_in_cb1_func; - devcb_resolved_read_line m_in_ca2_func; - devcb_resolved_read_line m_in_cb2_func; - devcb_resolved_write8 m_out_a_func; - devcb_resolved_write8 m_out_b_func; - devcb_resolved_write_line m_out_ca1_func; - devcb_resolved_write_line m_out_cb1_func; - devcb_resolved_write_line m_out_ca2_func; - devcb_resolved_write_line m_out_cb2_func; - devcb_resolved_write_line m_irq_func; + // TODO: REMOVE THESE + devcb2_read8 m_in_a_handler; + devcb2_read8 m_in_b_handler; + devcb2_read_line m_in_ca1_handler; + devcb2_read_line m_in_cb1_handler; + devcb2_read_line m_in_ca2_handler; + devcb2_read_line m_in_cb2_handler; + + // TODO: CONVERT THESE TO WRITE LINE + devcb2_write8 m_out_a_handler; + devcb2_write8 m_out_b_handler; + + devcb2_write_line m_ca1_handler; + devcb2_write_line m_cb1_handler; + devcb2_write_line m_ca2_handler; + devcb2_write_line m_cb2_handler; + devcb2_write_line m_irq_handler; UINT8 m_in_a; UINT8 m_in_ca1; diff --git a/src/mame/drivers/aristmk4.c b/src/mame/drivers/aristmk4.c index 9ef105ebf9c..8b25692a0ca 100644 --- a/src/mame/drivers/aristmk4.c +++ b/src/mame/drivers/aristmk4.c @@ -324,14 +324,13 @@ public: DECLARE_READ8_MEMBER(via_b_r); DECLARE_WRITE8_MEMBER(via_a_w); DECLARE_WRITE8_MEMBER(via_b_w); - DECLARE_READ8_MEMBER(via_ca2_r); - DECLARE_READ8_MEMBER(via_cb2_r); - DECLARE_WRITE8_MEMBER(via_ca2_w); - DECLARE_WRITE8_MEMBER(via_cb2_w); + DECLARE_READ_LINE_MEMBER(via_ca2_r); + DECLARE_READ_LINE_MEMBER(via_cb2_r); + DECLARE_WRITE_LINE_MEMBER(via_ca2_w); + DECLARE_WRITE_LINE_MEMBER(via_cb2_w); DECLARE_WRITE8_MEMBER(pblp_out); DECLARE_WRITE8_MEMBER(pbltlp_out); DECLARE_WRITE8_MEMBER(zn434_w); - DECLARE_WRITE8_MEMBER(firq); DECLARE_READ8_MEMBER(pa1_r); DECLARE_READ8_MEMBER(pb1_r); DECLARE_READ8_MEMBER(pc1_r); @@ -834,7 +833,7 @@ WRITE8_MEMBER(aristmk4_state::via_b_w) } } -READ8_MEMBER(aristmk4_state::via_ca2_r) +READ_LINE_MEMBER(aristmk4_state::via_ca2_r) { //logerror("Via Port CA2 read %02X\n",0) ; // CA2 is connected to CDSOL1 on schematics ? @@ -842,7 +841,7 @@ READ8_MEMBER(aristmk4_state::via_ca2_r) return 0 ; } -READ8_MEMBER(aristmk4_state::via_cb2_r) +READ_LINE_MEMBER(aristmk4_state::via_cb2_r) { //logerror("Via Port CB2 read %02X\n",0) ; // CB2 is connected to HOPMO1 on schematics ? @@ -850,21 +849,21 @@ READ8_MEMBER(aristmk4_state::via_cb2_r) return 0 ; } -WRITE8_MEMBER(aristmk4_state::via_ca2_w) +WRITE_LINE_MEMBER(aristmk4_state::via_ca2_w) { //logerror("Via Port CA2 write %02X\n",data) ; } -WRITE8_MEMBER(aristmk4_state::via_cb2_w) +WRITE_LINE_MEMBER(aristmk4_state::via_cb2_w) { // CB2 = hopper motor (HOPMO1). When it is 0x01, it is not running (active low) // when it goes to 0, we're expecting to coins to be paid out, handled in via_b_r // as soon as it is 1, HOPCO1 to remain 'ON' - if (data==0x01) - m_hopper_motor=data; + if (state==0x01) + m_hopper_motor=state; else if (m_hopper_motor<0x02) - m_hopper_motor=data; + m_hopper_motor=state; output_set_value("hopper_motor", m_hopper_motor); // stop motor } @@ -1567,22 +1566,6 @@ static const ay8910_interface ay8910_config2 = DEVCB_DRIVER_MEMBER(aristmk4_state,pbltlp_out) // Port B write - goes to lamps on the buttons x4 and light tower x4 }; -WRITE8_MEMBER(aristmk4_state::firq) -{ - m_maincpu->set_input_line(M6809_FIRQ_LINE, data ? ASSERT_LINE : CLEAR_LINE); -} - -static const via6522_interface via_interface = -{ - /*inputs : A/B */ DEVCB_DRIVER_MEMBER(aristmk4_state,via_a_r),DEVCB_DRIVER_MEMBER(aristmk4_state,via_b_r), - /*inputs : CA/B1,CA/B2 */ DEVCB_NULL,DEVCB_NULL,DEVCB_DRIVER_MEMBER(aristmk4_state,via_ca2_r),DEVCB_DRIVER_MEMBER(aristmk4_state,via_cb2_r), - /*outputs: A/B */ DEVCB_DRIVER_MEMBER(aristmk4_state,via_a_w), DEVCB_DRIVER_MEMBER(aristmk4_state,via_b_w), - /*outputs: CA/B1,CA/B2 */ DEVCB_NULL,DEVCB_NULL,DEVCB_DRIVER_MEMBER(aristmk4_state,via_ca2_w),DEVCB_DRIVER_MEMBER(aristmk4_state,via_cb2_w), - /*irq */ DEVCB_DRIVER_MEMBER(aristmk4_state,firq) - - // CA1 is connected to +5V, CB1 is not connected. -}; - static const pia6821_interface aristmk4_pia1_intf = { DEVCB_DRIVER_MEMBER(aristmk4_state, mkiv_pia_ina), // port A in @@ -1743,7 +1726,18 @@ static MACHINE_CONFIG_START( aristmk4, aristmk4_state ) MCFG_SCREEN_UPDATE_DRIVER(aristmk4_state, screen_update_aristmk4) MCFG_I8255A_ADD( "ppi8255_0", ppi8255_intf ) - MCFG_VIA6522_ADD("via6522_0", 0, via_interface) /* 1 MHz.(only 1 or 2 MHz.are valid) */ + MCFG_DEVICE_ADD("via6522_0", VIA6522, 0) /* 1 MHz.(only 1 or 2 MHz.are valid) */ + MCFG_VIA6522_READPA_HANDLER(READ8(aristmk4_state, via_a_r)) + MCFG_VIA6522_READPB_HANDLER(READ8(aristmk4_state, via_b_r)) + MCFG_VIA6522_READCA2_HANDLER(READLINE(aristmk4_state, via_ca2_r)) + MCFG_VIA6522_READCB2_HANDLER(READLINE(aristmk4_state, via_cb2_r)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(aristmk4_state, via_a_w)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(aristmk4_state, via_b_w)) + MCFG_VIA6522_CA2_HANDLER(WRITELINE(aristmk4_state, via_ca2_w)) + MCFG_VIA6522_CB2_HANDLER(WRITELINE(aristmk4_state, via_cb2_w)) + MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE("maincpu", m6809_device, firq_line)) + // CA1 is connected to +5V, CB1 is not connected. + MCFG_PIA6821_ADD("pia6821_0", aristmk4_pia1_intf) MCFG_MC6845_ADD("crtc", C6545_1, "screen", MAIN_CLOCK/8, mc6845_intf) // TODO: type is unknown MCFG_MC146818_ADD( "rtc", XTAL_4_194304Mhz ) diff --git a/src/mame/drivers/atarisy1.c b/src/mame/drivers/atarisy1.c index 81cadd38f02..63558fc7e93 100644 --- a/src/mame/drivers/atarisy1.c +++ b/src/mame/drivers/atarisy1.c @@ -411,16 +411,6 @@ READ8_MEMBER(atarisy1_state::via_pb_r) } -static const via6522_interface via_interface = -{ - /*inputs : A/B */ DEVCB_DRIVER_MEMBER(atarisy1_state,via_pa_r), DEVCB_DRIVER_MEMBER(atarisy1_state,via_pb_r), - /*inputs : CA/B1,CA/B2 */ DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - /*outputs: A/B */ DEVCB_DRIVER_MEMBER(atarisy1_state,via_pa_w), DEVCB_DRIVER_MEMBER(atarisy1_state,via_pb_w), - /*outputs: CA/B1,CA/B2 */ DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - /*irq */ DEVCB_NULL -}; - - /************************************* * @@ -777,7 +767,11 @@ static MACHINE_CONFIG_START( atarisy1, atarisy1_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) /* via */ - MCFG_VIA6522_ADD("via6522_0", 0, via_interface) + MCFG_DEVICE_ADD("via6522_0", VIA6522, 0) + MCFG_VIA6522_READPA_HANDLER(READ8(atarisy1_state, via_pa_r)) + MCFG_VIA6522_READPB_HANDLER(READ8(atarisy1_state, via_pb_r)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(atarisy1_state, via_pa_w)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(atarisy1_state, via_pb_w)) MACHINE_CONFIG_END diff --git a/src/mame/drivers/beezer.c b/src/mame/drivers/beezer.c index f50369d8b65..04e461d420a 100644 --- a/src/mame/drivers/beezer.c +++ b/src/mame/drivers/beezer.c @@ -111,8 +111,26 @@ static MACHINE_CONFIG_START( beezer, beezer_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) /* via */ - MCFG_VIA6522_ADD("via6522_0", 0, b_via_0_interface) - MCFG_VIA6522_ADD("via6522_1", 0, b_via_1_interface) + MCFG_DEVICE_ADD("via6522_0", VIA6522, 0) + MCFG_VIA6522_READPA_HANDLER(READ8(beezer_state, b_via_0_pa_r)) + MCFG_VIA6522_READPB_HANDLER(READ8(beezer_state, b_via_0_pb_r)) + MCFG_VIA6522_READCB1_HANDLER(DEVREADLINE("via6522_1", via6522_device, read_ca2)) + MCFG_VIA6522_READCA2_HANDLER(READLINE(beezer_state, b_via_0_ca2_r)) + MCFG_VIA6522_READCB2_HANDLER(DEVREADLINE("via6522_1", via6522_device, read_ca1)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(beezer_state, b_via_0_pa_w)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(beezer_state, b_via_0_pb_w)) + MCFG_VIA6522_CB2_HANDLER(DEVWRITELINE("via6522_1", via6522_device, write_ca1)) + MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE("maincpu", m6809_device, irq_line)) + + MCFG_DEVICE_ADD("via6522_1", VIA6522, 0) + MCFG_VIA6522_READPA_HANDLER(READ8(beezer_state, b_via_1_pa_r)) + MCFG_VIA6522_READPB_HANDLER(READ8(beezer_state, b_via_1_pb_r)) + MCFG_VIA6522_READCA1_HANDLER(DEVREADLINE("via6522_0", via6522_device, read_cb2)) + MCFG_VIA6522_READCA2_HANDLER(DEVREADLINE("via6522_0", via6522_device, read_cb1)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(beezer_state, b_via_1_pa_w)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(beezer_state, b_via_1_pb_w)) + MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE("via6522_0", via6522_device, write_cb1)) + MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE("maincpu", m6809_device, irq_line)) MACHINE_CONFIG_END /*************************************************************************** diff --git a/src/mame/drivers/bmcbowl.c b/src/mame/drivers/bmcbowl.c index 371fe22a7c8..8c5c38268c6 100644 --- a/src/mame/drivers/bmcbowl.c +++ b/src/mame/drivers/bmcbowl.c @@ -134,8 +134,7 @@ public: DECLARE_READ8_MEMBER(via_b_in); DECLARE_WRITE8_MEMBER(via_a_out); DECLARE_WRITE8_MEMBER(via_b_out); - DECLARE_WRITE8_MEMBER(via_ca2_out); - DECLARE_WRITE8_MEMBER(via_irq); + DECLARE_WRITE_LINE_MEMBER(via_ca2_out); DECLARE_READ8_MEMBER(dips1_r); DECLARE_WRITE8_MEMBER(input_mux_w); DECLARE_DRIVER_INIT(bmcbowl); @@ -257,18 +256,12 @@ WRITE8_MEMBER(bmcbowl_state::via_b_out) //used } -WRITE8_MEMBER(bmcbowl_state::via_ca2_out) +WRITE_LINE_MEMBER(bmcbowl_state::via_ca2_out) { //used } -WRITE8_MEMBER(bmcbowl_state::via_irq) -{ - m_maincpu->set_input_line(4, data ? ASSERT_LINE : CLEAR_LINE); -} - - // 'working' NVRAM #ifdef NVRAM_HACK @@ -475,15 +468,6 @@ static const ay8910_interface ay8910_config = }; -static const via6522_interface via_interface = -{ - /*inputs : A/B */ DEVCB_NULL, DEVCB_DRIVER_MEMBER(bmcbowl_state,via_b_in), - /*inputs : CA/B1,CA/B2 */ DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - /*outputs: A/B */ DEVCB_DRIVER_MEMBER(bmcbowl_state,via_a_out), DEVCB_DRIVER_MEMBER(bmcbowl_state,via_b_out), - /*outputs: CA/B1,CA/B2 */ DEVCB_NULL, DEVCB_NULL, DEVCB_DRIVER_MEMBER(bmcbowl_state,via_ca2_out), DEVCB_NULL, - /*irq */ DEVCB_DRIVER_MEMBER(bmcbowl_state,via_irq) -}; - static MACHINE_CONFIG_START( bmcbowl, bmcbowl_state ) MCFG_CPU_ADD("maincpu", M68000, 21477270/2 ) MCFG_CPU_PROGRAM_MAP(bmcbowl_mem) @@ -512,7 +496,12 @@ static MACHINE_CONFIG_START( bmcbowl, bmcbowl_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50) /* via */ - MCFG_VIA6522_ADD("via6522_0", 1000000, via_interface) + MCFG_DEVICE_ADD("via6522_0", VIA6522, 1000000) + MCFG_VIA6522_READPB_HANDLER(READ8(bmcbowl_state,via_b_in)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(bmcbowl_state, via_a_out)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(bmcbowl_state, via_b_out)) + MCFG_VIA6522_CA2_HANDLER(WRITELINE(bmcbowl_state, via_ca2_out)) + MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE("maincpu", m68000_device, write_irq4)) MACHINE_CONFIG_END ROM_START( bmcbowl ) diff --git a/src/mame/drivers/cops.c b/src/mame/drivers/cops.c index 89f265decce..a746a149c4d 100644 --- a/src/mame/drivers/cops.c +++ b/src/mame/drivers/cops.c @@ -47,8 +47,8 @@ public: DECLARE_READ8_MEMBER(io1_r); DECLARE_WRITE8_MEMBER(io2_w); DECLARE_READ8_MEMBER(io2_r); - DECLARE_WRITE8_MEMBER(via1_irq); - DECLARE_WRITE8_MEMBER(via2_irq); + DECLARE_WRITE_LINE_MEMBER(via1_irq); + DECLARE_WRITE_LINE_MEMBER(via2_irq); void dacia_receive(UINT8 data); DECLARE_WRITE8_MEMBER(dacia_w); DECLARE_READ8_MEMBER(dacia_r); @@ -481,9 +481,9 @@ WRITE8_MEMBER(cops_state::io2_w) * *************************************/ -WRITE8_MEMBER(cops_state::via1_irq) +WRITE_LINE_MEMBER(cops_state::via1_irq) { - if ( data == ASSERT_LINE ) + if ( state == ASSERT_LINE ) { m_irq |= 1; } @@ -494,15 +494,6 @@ WRITE8_MEMBER(cops_state::via1_irq) m_maincpu->set_input_line(M6502_IRQ_LINE, m_irq ? ASSERT_LINE : CLEAR_LINE); } -static const via6522_interface via_1_interface = -{ - DEVCB_NULL, DEVCB_NULL, /*inputs : A/B */ - DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, /*inputs : CA/B1,CA/B2 */ - DEVCB_NULL, DEVCB_NULL, /*outputs: A/B */ - DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, /*outputs: CA/B1,CA/B2 */ - DEVCB_DRIVER_MEMBER(cops_state,via1_irq) /*irq */ -}; - /************************************* * * VIA 2 (U27) @@ -512,9 +503,9 @@ static const via6522_interface via_1_interface = * *************************************/ -WRITE8_MEMBER(cops_state::via2_irq) +WRITE_LINE_MEMBER(cops_state::via2_irq) { - if ( data == ASSERT_LINE ) + if ( state == ASSERT_LINE ) { m_irq |= 2; } @@ -526,32 +517,6 @@ WRITE8_MEMBER(cops_state::via2_irq) } -static const via6522_interface via_2_interface = -{ - DEVCB_NULL, DEVCB_NULL, /*inputs : A/B */ - DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, /*inputs : CA/B1,CA/B2 */ - DEVCB_NULL, DEVCB_NULL, /*outputs: A/B */ - DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, /*outputs: CA/B1,CA/B2 */ - DEVCB_DRIVER_MEMBER(cops_state,via2_irq) /*irq */ -}; - -/************************************* - * - * VIA 3 - * PA0-7 CDROM - * PB0-8 CDROM - * - *************************************/ - -static const via6522_interface via_3_interface = -{ - DEVCB_DRIVER_MEMBER(cops_state, cdrom_data_r), DEVCB_NULL, /*inputs : A/B */ - DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, /*inputs : CA/B1,CA/B2 */ - DEVCB_DRIVER_MEMBER(cops_state, cdrom_data_w), DEVCB_DRIVER_MEMBER(cops_state, cdrom_ctrl_w), /*outputs: A/B */ - DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, /*outputs: CA/B1,CA/B2 */ - DEVCB_NULL /*irq */ -}; - /************************************* * * Main CPU memory handlers @@ -640,9 +605,16 @@ static MACHINE_CONFIG_START( cops, cops_state ) MCFG_PALETTE_LENGTH(8) /* via */ - MCFG_VIA6522_ADD("via6522_1", 0, via_1_interface) - MCFG_VIA6522_ADD("via6522_2", 0, via_2_interface) - MCFG_VIA6522_ADD("via6522_3", 0, via_3_interface) + MCFG_DEVICE_ADD("via6522_1", VIA6522, 0) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(cops_state, via1_irq)) + + MCFG_DEVICE_ADD("via6522_2", VIA6522, 0) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(cops_state, via2_irq)) + + MCFG_DEVICE_ADD("via6522_3", VIA6522, 0) + MCFG_VIA6522_READPA_HANDLER(READ8(cops_state, cdrom_data_r)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(cops_state, cdrom_data_w)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(cops_state, cdrom_ctrl_w)) /* acia */ // MCFG_MOS6551_ADD("acia6551_1", XTAL_1_8432MHz, NULL) diff --git a/src/mame/drivers/gameplan.c b/src/mame/drivers/gameplan.c index 4fc42f70cee..7248a320616 100644 --- a/src/mame/drivers/gameplan.c +++ b/src/mame/drivers/gameplan.c @@ -111,22 +111,12 @@ READ8_MEMBER(gameplan_state::io_port_r) } -WRITE8_MEMBER(gameplan_state::coin_w) +WRITE_LINE_MEMBER(gameplan_state::coin_w) { - coin_counter_w(machine(), 0, ~data & 1); + coin_counter_w(machine(), 0, ~state & 1); } -static const via6522_interface via_1_interface = -{ - DEVCB_DRIVER_MEMBER(gameplan_state,io_port_r), DEVCB_NULL, /*inputs : A/B */ - DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, /*inputs : CA/B1,CA/B2 */ - DEVCB_NULL, DEVCB_DRIVER_MEMBER(gameplan_state,io_select_w), /*outputs: A/B */ - DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_DRIVER_MEMBER(gameplan_state,coin_w), /*outputs: CA/B1,CA/B2 */ - DEVCB_NULL /*irq */ -}; - - /************************************* * @@ -134,11 +124,11 @@ static const via6522_interface via_1_interface = * *************************************/ -WRITE8_MEMBER(gameplan_state::audio_reset_w) +WRITE_LINE_MEMBER(gameplan_state::audio_reset_w) { - m_audiocpu->set_input_line(INPUT_LINE_RESET, data ? CLEAR_LINE : ASSERT_LINE); + m_audiocpu->set_input_line(INPUT_LINE_RESET, state ? CLEAR_LINE : ASSERT_LINE); - if (data == 0) + if (state == 0) { m_riot->reset(); machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(10)); @@ -152,22 +142,12 @@ WRITE8_MEMBER(gameplan_state::audio_cmd_w) } -WRITE8_MEMBER(gameplan_state::audio_trigger_w) +WRITE_LINE_MEMBER(gameplan_state::audio_trigger_w) { - m_riot->porta_in_set(data << 7, 0x80); + m_riot->porta_in_set(state << 7, 0x80); } -static const via6522_interface via_2_interface = -{ - DEVCB_NULL, DEVCB_DRIVER_MEMBER(driver_device, soundlatch_byte_r), /*inputs : A/B */ - DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, /*inputs : CA/B1,CA/B2 */ - DEVCB_DRIVER_MEMBER(gameplan_state,audio_cmd_w), DEVCB_NULL, /*outputs: A/B */ - DEVCB_NULL, DEVCB_NULL, DEVCB_DRIVER_MEMBER(gameplan_state,audio_trigger_w), DEVCB_DRIVER_MEMBER(gameplan_state,audio_reset_w), /*outputs: CA/B1,CA/B2 */ - DEVCB_NULL /*irq */ -}; - - /************************************* * @@ -1016,9 +996,23 @@ static MACHINE_CONFIG_START( gameplan, gameplan_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.33) /* via */ - MCFG_VIA6522_ADD("via6522_0", 0, gameplan_via_0_interface) - MCFG_VIA6522_ADD("via6522_1", 0, via_1_interface) - MCFG_VIA6522_ADD("via6522_2", 0, via_2_interface) + MCFG_DEVICE_ADD("via6522_0", VIA6522, 0) + MCFG_VIA6522_READPB_HANDLER(READ8(gameplan_state, vblank_r)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(gameplan_state, video_data_w)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(gameplan_state, gameplan_video_command_w)) + MCFG_VIA6522_CA2_HANDLER(WRITELINE(gameplan_state, video_command_trigger_w)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(gameplan_state, via_irq)) + + MCFG_DEVICE_ADD("via6522_1", VIA6522, 0) + MCFG_VIA6522_READPA_HANDLER(READ8(gameplan_state, io_port_r)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(gameplan_state, io_select_w)) + MCFG_VIA6522_CB2_HANDLER(WRITELINE(gameplan_state, coin_w)) + + MCFG_DEVICE_ADD("via6522_2", VIA6522, 0) + MCFG_VIA6522_READPB_HANDLER(READ8(driver_device, soundlatch_byte_r)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(gameplan_state, audio_cmd_w)) + MCFG_VIA6522_CA2_HANDLER(WRITELINE(gameplan_state, audio_trigger_w)) + MCFG_VIA6522_CB2_HANDLER(WRITELINE(gameplan_state, audio_reset_w)) MACHINE_CONFIG_END @@ -1034,8 +1028,8 @@ static MACHINE_CONFIG_DERIVED( leprechn, gameplan ) MCFG_FRAGMENT_ADD(leprechn_video) /* via */ - MCFG_DEVICE_REMOVE("via6522_0") - MCFG_VIA6522_ADD("via6522_0", 0, leprechn_via_0_interface) + MCFG_DEVICE_MODIFY("via6522_0") + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(gameplan_state, leprechn_video_command_w)) MACHINE_CONFIG_END diff --git a/src/mame/drivers/itech32.c b/src/mame/drivers/itech32.c index 6a6e11a9ceb..71f1d3fc7cf 100644 --- a/src/mame/drivers/itech32.c +++ b/src/mame/drivers/itech32.c @@ -720,9 +720,9 @@ WRITE8_MEMBER(itech32_state::drivedge_portb_out) } -WRITE8_MEMBER(itech32_state::drivedge_turbo_light) +WRITE_LINE_MEMBER(itech32_state::drivedge_turbo_light) { - set_led_status(machine(), 0, data); + set_led_status(machine(), 0, state); } @@ -741,33 +741,6 @@ WRITE8_MEMBER(itech32_state::pia_portb_out) /************************************* * - * Sound 6522 VIA handling - * - *************************************/ - -static const via6522_interface via_interface = -{ - /*inputs : A/B */ DEVCB_NULL, DEVCB_NULL, - /*inputs : CA/B1,CA/B2 */ DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - /*outputs: A/B */ DEVCB_NULL, DEVCB_DRIVER_MEMBER(itech32_state,pia_portb_out), - /*outputs: CA/B1,CA/B2 */ DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - /*irq */ DEVCB_CPU_INPUT_LINE("soundcpu", M6809_FIRQ_LINE) -}; - - -static const via6522_interface drivedge_via_interface = -{ - /*inputs : A/B */ DEVCB_NULL, DEVCB_NULL, - /*inputs : CA/B1,CA/B2 */ DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - /*outputs: A/B */ DEVCB_NULL, DEVCB_DRIVER_MEMBER(itech32_state,drivedge_portb_out), - /*outputs: CA/B1,CA/B2 */ DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_DRIVER_MEMBER(itech32_state,drivedge_turbo_light), - /*irq */ DEVCB_CPU_INPUT_LINE("soundcpu", M6809_FIRQ_LINE) -}; - - - -/************************************* - * * Additional sound code * *************************************/ @@ -1721,7 +1694,9 @@ static MACHINE_CONFIG_START( timekill, itech32_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.1) /* via */ - MCFG_VIA6522_ADD("via6522_0", SOUND_CLOCK/8, via_interface) + MCFG_DEVICE_ADD("via6522_0", VIA6522, SOUND_CLOCK/8) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(itech32_state,pia_portb_out)) + MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE("soundcpu", m6809_device, firq_line)) MACHINE_CONFIG_END @@ -1750,6 +1725,10 @@ static MACHINE_CONFIG_DERIVED( drivedge, bloodstm ) MCFG_CPU_ADD("dsp2", TMS32031, TMS_CLOCK) MCFG_CPU_PROGRAM_MAP(drivedge_tms2_map) + MCFG_DEVICE_MODIFY("via6522_0") + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(itech32_state,drivedge_portb_out)) + MCFG_VIA6522_CB2_HANDLER(WRITELINE(itech32_state,drivedge_turbo_light)) + // MCFG_CPU_ADD("comm", M6803, 8000000/4) -- network CPU MCFG_MACHINE_RESET_OVERRIDE(itech32_state,drivedge) diff --git a/src/mame/drivers/itech8.c b/src/mame/drivers/itech8.c index 71760b9fbf2..8d58a130c34 100644 --- a/src/mame/drivers/itech8.c +++ b/src/mame/drivers/itech8.c @@ -549,23 +549,6 @@ static const pia6821_interface pia_interface = /************************************* * - * 6522 VIA interface - * - *************************************/ - -static const via6522_interface via_interface = -{ - /*inputs : A/B */ DEVCB_NULL, DEVCB_NULL, - /*inputs : CA/B1,CA/B2 */ DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - /*outputs: A/B */ DEVCB_NULL, DEVCB_DRIVER_MEMBER(itech8_state, pia_portb_out), - /*outputs: CA/B1,CA/B2 */ DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - /*irq */ DEVCB_CPU_INPUT_LINE("soundcpu", M6809_FIRQ_LINE) -}; - - - -/************************************* - * * Interrupt handling * *************************************/ @@ -1704,7 +1687,9 @@ static MACHINE_CONFIG_START( itech8_core_lo, itech8_state ) MCFG_SPEAKER_STANDARD_MONO("mono") /* via */ - MCFG_VIA6522_ADD("via6522_0", CLOCK_8MHz/4, via_interface) + MCFG_DEVICE_ADD("via6522_0", VIA6522, CLOCK_8MHz/4) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(itech8_state, pia_portb_out)) + MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE("soundcpu", m6809_device, firq_line)) MACHINE_CONFIG_END diff --git a/src/mame/drivers/trvquest.c b/src/mame/drivers/trvquest.c index 0ef25c78ce4..70576e7b118 100644 --- a/src/mame/drivers/trvquest.c +++ b/src/mame/drivers/trvquest.c @@ -46,12 +46,12 @@ READ8_MEMBER(gameplan_state::trvquest_question_r) return memregion("questions")->base()[*m_trvquest_question * 0x2000 + offset]; } -WRITE8_MEMBER(gameplan_state::trvquest_coin_w) +WRITE_LINE_MEMBER(gameplan_state::trvquest_coin_w) { - coin_counter_w(machine(), 0, ~data & 1); + coin_counter_w(machine(), 0, ~state & 1); } -WRITE8_MEMBER(gameplan_state::trvquest_misc_w) +WRITE_LINE_MEMBER(gameplan_state::trvquest_misc_w) { // data & 1 -> led on/off ? } @@ -145,24 +145,6 @@ static INPUT_PORTS_START( trvquest ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END -static const via6522_interface via_1_interface = -{ - /*inputs : A/B */ DEVCB_INPUT_PORT("IN0"), DEVCB_INPUT_PORT("IN1"), - /*inputs : CA/B1,CA/B2 */ DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - /*outputs: A/B */ DEVCB_NULL, DEVCB_NULL, - /*outputs: CA/B1,CA/B2 */ DEVCB_NULL, DEVCB_NULL, DEVCB_DRIVER_MEMBER(gameplan_state,trvquest_coin_w), DEVCB_NULL, - /*irq */ DEVCB_NULL -}; - -static const via6522_interface via_2_interface = -{ - /*inputs : A/B */ DEVCB_INPUT_PORT("UNK"), DEVCB_INPUT_PORT("DSW"), - /*inputs : CA/B1,CA/B2 */ DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - /*outputs: A/B */ DEVCB_NULL, DEVCB_NULL, - /*outputs: CA/B1,CA/B2 */ DEVCB_NULL, DEVCB_NULL, DEVCB_DRIVER_MEMBER(gameplan_state,trvquest_misc_w), DEVCB_NULL, - /*irq */ DEVCB_DRIVER_LINE_MEMBER(gameplan_state,via_irq) -}; - MACHINE_START_MEMBER(gameplan_state,trvquest) { @@ -210,9 +192,22 @@ static MACHINE_CONFIG_START( trvquest, gameplan_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) /* via */ - MCFG_VIA6522_ADD("via6522_0", 0, trvquest_via_0_interface) - MCFG_VIA6522_ADD("via6522_1", 0, via_1_interface) - MCFG_VIA6522_ADD("via6522_2", 0, via_2_interface) + MCFG_DEVICE_ADD("via6522_0", VIA6522, 0) + MCFG_VIA6522_READPB_HANDLER(READ8(gameplan_state,vblank_r)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(gameplan_state, video_data_w)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(gameplan_state, gameplan_video_command_w)) + MCFG_VIA6522_CA2_HANDLER(WRITELINE(gameplan_state, video_command_trigger_w)) + + MCFG_DEVICE_ADD("via6522_1", VIA6522, 0) + MCFG_VIA6522_READPA_HANDLER(IOPORT("IN0")) + MCFG_VIA6522_READPB_HANDLER(IOPORT("IN1")) + MCFG_VIA6522_CA2_HANDLER(WRITELINE(gameplan_state, trvquest_coin_w)) + + MCFG_DEVICE_ADD("via6522_2", VIA6522, 0) + MCFG_VIA6522_READPA_HANDLER(IOPORT("UNK")) + MCFG_VIA6522_READPB_HANDLER(IOPORT("DSW")) + MCFG_VIA6522_CA2_HANDLER(WRITELINE(gameplan_state, trvquest_misc_w)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(gameplan_state, via_irq)) MACHINE_CONFIG_END ROM_START( trvquest ) diff --git a/src/mame/drivers/vectrex.c b/src/mame/drivers/vectrex.c index c0060b3635e..374de868901 100644 --- a/src/mame/drivers/vectrex.c +++ b/src/mame/drivers/vectrex.c @@ -119,7 +119,14 @@ static MACHINE_CONFIG_START( vectrex, vectrex_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) /* via */ - MCFG_VIA6522_ADD("via6522_0", 0, vectrex_via6522_interface) + MCFG_DEVICE_ADD("via6522_0", VIA6522, 0) + MCFG_VIA6522_READPA_HANDLER(READ8(vectrex_state, vectrex_via_pa_r)) + MCFG_VIA6522_READPB_HANDLER(READ8(vectrex_state, vectrex_via_pb_r)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(vectrex_state, v_via_pa_w)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(vectrex_state, v_via_pb_w)) + MCFG_VIA6522_CA2_HANDLER(WRITELINE(vectrex_state, v_via_ca2_w)) + MCFG_VIA6522_CB2_HANDLER(WRITELINE(vectrex_state, v_via_cb2_w)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(vectrex_state, vectrex_via_irq)) /* cartridge */ MCFG_CARTSLOT_ADD("cart") @@ -209,8 +216,8 @@ static MACHINE_CONFIG_DERIVED( raaspec, vectrex ) MCFG_VIDEO_START_OVERRIDE(vectrex_state,raaspec) /* via */ - MCFG_DEVICE_REMOVE("via6522_0") - MCFG_VIA6522_ADD("via6522_0", 0, spectrum1_via6522_interface) + MCFG_DEVICE_MODIFY("via6522_0") + MCFG_VIA6522_READPB_HANDLER(READ8(vectrex_state, vectrex_s1_via_pb_r)) MCFG_DEVICE_REMOVE("cart") MACHINE_CONFIG_END diff --git a/src/mame/includes/beezer.h b/src/mame/includes/beezer.h index 9741f414ce1..ab6ccaa823e 100644 --- a/src/mame/includes/beezer.h +++ b/src/mame/includes/beezer.h @@ -113,9 +113,3 @@ private: }; extern const device_type BEEZER; - - -/*----------- defined in machine/beezer.c -----------*/ - -extern const via6522_interface b_via_0_interface; -extern const via6522_interface b_via_1_interface; diff --git a/src/mame/includes/gameplan.h b/src/mame/includes/gameplan.h index 2ba08373f69..603781c911c 100644 --- a/src/mame/includes/gameplan.h +++ b/src/mame/includes/gameplan.h @@ -64,10 +64,10 @@ public: required_device<via6522_device> m_via_2; DECLARE_WRITE8_MEMBER(io_select_w); DECLARE_READ8_MEMBER(io_port_r); - DECLARE_WRITE8_MEMBER(coin_w); - DECLARE_WRITE8_MEMBER(audio_reset_w); + DECLARE_WRITE_LINE_MEMBER(coin_w); + DECLARE_WRITE_LINE_MEMBER(audio_reset_w); DECLARE_WRITE8_MEMBER(audio_cmd_w); - DECLARE_WRITE8_MEMBER(audio_trigger_w); + DECLARE_WRITE_LINE_MEMBER(audio_trigger_w); DECLARE_WRITE_LINE_MEMBER(r6532_irq); DECLARE_WRITE8_MEMBER(r6532_soundlatch_w); DECLARE_MACHINE_START(gameplan); @@ -94,8 +94,8 @@ public: void leprechn_get_pens( pen_t *pens ); DECLARE_WRITE_LINE_MEMBER(via_irq); DECLARE_READ8_MEMBER(trvquest_question_r); - DECLARE_WRITE8_MEMBER(trvquest_coin_w); - DECLARE_WRITE8_MEMBER(trvquest_misc_w); + DECLARE_WRITE_LINE_MEMBER(trvquest_coin_w); + DECLARE_WRITE_LINE_MEMBER(trvquest_misc_w); protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); @@ -103,10 +103,6 @@ protected: /*----------- defined in video/gameplan.c -----------*/ -extern const via6522_interface gameplan_via_0_interface; -extern const via6522_interface leprechn_via_0_interface; -extern const via6522_interface trvquest_via_0_interface; - MACHINE_CONFIG_EXTERN( gameplan_video ); MACHINE_CONFIG_EXTERN( leprechn_video ); MACHINE_CONFIG_EXTERN( trvquest_video ); diff --git a/src/mame/includes/itech32.h b/src/mame/includes/itech32.h index 54a20d82633..1a67adfe78f 100644 --- a/src/mame/includes/itech32.h +++ b/src/mame/includes/itech32.h @@ -142,7 +142,7 @@ public: DECLARE_READ32_MEMBER(itech020_video_r); DECLARE_CUSTOM_INPUT_MEMBER(special_port_r); DECLARE_WRITE8_MEMBER(drivedge_portb_out); - DECLARE_WRITE8_MEMBER(drivedge_turbo_light); + DECLARE_WRITE_LINE_MEMBER(drivedge_turbo_light); DECLARE_WRITE8_MEMBER(pia_portb_out); DECLARE_DRIVER_INIT(gtclasscp); DECLARE_DRIVER_INIT(shufshot); diff --git a/src/mame/includes/vectrex.h b/src/mame/includes/vectrex.h index 1416b2d420b..a5950ef6371 100644 --- a/src/mame/includes/vectrex.h +++ b/src/mame/includes/vectrex.h @@ -112,8 +112,8 @@ public: DECLARE_READ8_MEMBER(vectrex_s1_via_pb_r); DECLARE_WRITE8_MEMBER(v_via_pb_w); DECLARE_WRITE8_MEMBER(v_via_pa_w); - DECLARE_WRITE8_MEMBER(v_via_ca2_w); - DECLARE_WRITE8_MEMBER(v_via_cb2_w); + DECLARE_WRITE_LINE_MEMBER(v_via_ca2_w); + DECLARE_WRITE_LINE_MEMBER(v_via_cb2_w); DECLARE_DEVICE_IMAGE_LOAD_MEMBER( vectrex_cart ); DECLARE_WRITE_LINE_MEMBER(vectrex_via_irq); @@ -143,9 +143,4 @@ protected: int vectrex_verify_cart(char *data); }; -/*---------- defined in video/vectrex.c -----------*/ - -extern const via6522_interface vectrex_via6522_interface; -extern const via6522_interface spectrum1_via6522_interface; - #endif /* VECTREX_H_ */ diff --git a/src/mame/machine/beezer.c b/src/mame/machine/beezer.c index d3034cbc4a1..144f6adb047 100644 --- a/src/mame/machine/beezer.c +++ b/src/mame/machine/beezer.c @@ -28,14 +28,6 @@ TODO: find a better way to attach ca2 read to beezer_line_r */ -const via6522_interface b_via_0_interface = -{ - /*inputs : A/B */ DEVCB_DRIVER_MEMBER(beezer_state,b_via_0_pa_r), DEVCB_DRIVER_MEMBER(beezer_state,b_via_0_pb_r), - /*inputs : CA/B1,CA/B2 */ DEVCB_NULL, DEVCB_DEVICE_LINE_MEMBER("via6522_1", via6522_device, read_ca2), DEVCB_DRIVER_LINE_MEMBER(beezer_state, b_via_0_ca2_r), DEVCB_DEVICE_LINE_MEMBER("via6522_1", via6522_device, read_ca1), - /*outputs: A/B */ DEVCB_DRIVER_MEMBER(beezer_state,b_via_0_pa_w), DEVCB_DRIVER_MEMBER(beezer_state,b_via_0_pb_w), - /*outputs: CA/B1,CA/B2 */ DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_DEVICE_LINE_MEMBER("via6522_1", via6522_device, write_ca1), - /*irq */ DEVCB_CPU_INPUT_LINE("maincpu", M6809_IRQ_LINE) -}; /* VIA 1 (U18 @3C on schematics) port A: @@ -60,14 +52,6 @@ const via6522_interface b_via_0_interface = TODO: the entirety of port B, much needs tracing TODO: ports CB1 and CB2, need tracing; ports CA1 and CA2 could use verify as well */ -const via6522_interface b_via_1_interface = -{ - /*inputs : A/B */ DEVCB_DRIVER_MEMBER(beezer_state,b_via_1_pa_r), DEVCB_DRIVER_MEMBER(beezer_state,b_via_1_pb_r), - /*inputs : CA/B1,CA/B2 */ DEVCB_DEVICE_LINE_MEMBER("via6522_0", via6522_device, read_cb2), DEVCB_NULL, DEVCB_DEVICE_LINE_MEMBER("via6522_0", via6522_device, read_cb1), DEVCB_NULL, - /*outputs: A/B */ DEVCB_DRIVER_MEMBER(beezer_state,b_via_1_pa_w), DEVCB_DRIVER_MEMBER(beezer_state,b_via_1_pb_w), - /*outputs: CA/B1,CA/B2 */ DEVCB_NULL, DEVCB_NULL, DEVCB_DEVICE_LINE_MEMBER("via6522_0", via6522_device, write_cb1), DEVCB_NULL, - /*irq */ DEVCB_CPU_INPUT_LINE("audiocpu", M6809_IRQ_LINE) -}; READ_LINE_MEMBER(beezer_state::b_via_0_ca2_r) { diff --git a/src/mame/machine/vectrex.c b/src/mame/machine/vectrex.c index 98da01b2082..fe275471cce 100644 --- a/src/mame/machine/vectrex.c +++ b/src/mame/machine/vectrex.c @@ -1,5 +1,4 @@ #include "emu.h" -#include "machine/6522via.h" #include "cpu/m6809/m6809.h" #include "sound/ay8910.h" diff --git a/src/mame/video/gameplan.c b/src/mame/video/gameplan.c index ce690011018..e8b3ee1df0c 100644 --- a/src/mame/video/gameplan.c +++ b/src/mame/video/gameplan.c @@ -7,7 +7,6 @@ driver by Chris Moore ****************************************************************************/ #include "emu.h" -#include "machine/6522via.h" #include "includes/gameplan.h" @@ -247,36 +246,6 @@ READ8_MEMBER(gameplan_state::vblank_r) } -const via6522_interface gameplan_via_0_interface = -{ - DEVCB_NULL, DEVCB_DRIVER_MEMBER(gameplan_state,vblank_r), /*inputs : A/B */ - DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, /*inputs : CA/B1,CA/B2 */ - DEVCB_DRIVER_MEMBER(gameplan_state,video_data_w), DEVCB_DRIVER_MEMBER(gameplan_state,gameplan_video_command_w), /*outputs: A/B */ - DEVCB_NULL, DEVCB_NULL, DEVCB_DRIVER_LINE_MEMBER(gameplan_state,video_command_trigger_w), DEVCB_NULL, /*outputs: CA/B1,CA/B2 */ - DEVCB_DRIVER_LINE_MEMBER(gameplan_state,via_irq) /*irq */ -}; - - -const via6522_interface leprechn_via_0_interface = -{ - DEVCB_NULL, DEVCB_DRIVER_MEMBER(gameplan_state,vblank_r), /*inputs : A/B */ - DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, /*inputs : CA/B1,CA/B2 */ - DEVCB_DRIVER_MEMBER(gameplan_state,video_data_w), DEVCB_DRIVER_MEMBER(gameplan_state,leprechn_video_command_w), /*outputs: A/B */ - DEVCB_NULL, DEVCB_NULL, DEVCB_DRIVER_LINE_MEMBER(gameplan_state,video_command_trigger_w), DEVCB_NULL, /*outputs: CA/B1,CA/B2 */ - DEVCB_DRIVER_LINE_MEMBER(gameplan_state,via_irq) /*irq */ -}; - - -const via6522_interface trvquest_via_0_interface = -{ - DEVCB_NULL, DEVCB_DRIVER_MEMBER(gameplan_state,vblank_r), /*inputs : A/B */ - DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, /*inputs : CA/B1,CA/B2 */ - DEVCB_DRIVER_MEMBER(gameplan_state,video_data_w), DEVCB_DRIVER_MEMBER(gameplan_state,gameplan_video_command_w), /*outputs: A/B */ - DEVCB_NULL, DEVCB_NULL, DEVCB_DRIVER_LINE_MEMBER(gameplan_state,video_command_trigger_w), DEVCB_NULL, /*outputs: CA/B1,CA/B2 */ - DEVCB_NULL /*irq */ -}; - - TIMER_CALLBACK_MEMBER(gameplan_state::via_0_ca1_timer_callback) { /* !VBLANK is connected to CA1 */ diff --git a/src/mame/video/vectrex.c b/src/mame/video/vectrex.c index ca04a5f1605..5b7415212bc 100644 --- a/src/mame/video/vectrex.c +++ b/src/mame/video/vectrex.c @@ -33,23 +33,6 @@ enum { /********************************************************************* - Local variables - -*********************************************************************/ - -const via6522_interface vectrex_via6522_interface = -{ - DEVCB_DRIVER_MEMBER(vectrex_state,vectrex_via_pa_r), DEVCB_DRIVER_MEMBER(vectrex_state,vectrex_via_pb_r), /* read PA/B */ - DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, /* read ca1, cb1, ca2, cb2 */ - DEVCB_DRIVER_MEMBER(vectrex_state,v_via_pa_w), DEVCB_DRIVER_MEMBER(vectrex_state,v_via_pb_w), /* write PA/B */ - DEVCB_NULL, DEVCB_NULL, DEVCB_DRIVER_MEMBER(vectrex_state,v_via_ca2_w), DEVCB_DRIVER_MEMBER(vectrex_state,v_via_cb2_w), /* write ca1, cb1, ca2, cb2 */ - DEVCB_DRIVER_LINE_MEMBER(vectrex_state,vectrex_via_irq), /* IRQ */ -}; - - - -/********************************************************************* - Lightpen *********************************************************************/ @@ -381,18 +364,18 @@ WRITE8_MEMBER(vectrex_state::v_via_pa_w) } -WRITE8_MEMBER(vectrex_state::v_via_ca2_w) +WRITE_LINE_MEMBER(vectrex_state::v_via_ca2_w) { - if (data == 0) + if (state == 0) timer_set(attotime::from_nsec(ANALOG_DELAY), TIMER_VECTREX_ZERO_INTEGRATORS); } -WRITE8_MEMBER(vectrex_state::v_via_cb2_w) +WRITE_LINE_MEMBER(vectrex_state::v_via_cb2_w) { int dx, dy; - if (m_cb2 != data) + if (m_cb2 != state) { /* Check lightpen */ if (m_lightpen_port != 0) @@ -406,13 +389,13 @@ WRITE8_MEMBER(vectrex_state::v_via_cb2_w) dx = abs(m_pen_x - m_x_int); dy = abs(m_pen_y - m_y_int); - if (dx < 500000 && dy < 500000 && data > 0) + if (dx < 500000 && dy < 500000 && state > 0) timer_set(attotime::zero, TIMER_LIGHTPEN_TRIGGER); } } - timer_set(attotime::zero, TIMER_UPDATE_SIGNAL, data, &m_blank); - m_cb2 = data; + timer_set(attotime::zero, TIMER_UPDATE_SIGNAL, state, &m_blank); + m_cb2 = state; } } @@ -423,14 +406,6 @@ WRITE8_MEMBER(vectrex_state::v_via_cb2_w) *****************************************************************/ -const via6522_interface spectrum1_via6522_interface = -{ - /*inputs : A/B,CA/B1,CA/B2 */ DEVCB_DRIVER_MEMBER(vectrex_state,vectrex_via_pa_r), DEVCB_DRIVER_MEMBER(vectrex_state,vectrex_s1_via_pb_r), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - /*outputs: A/B,CA/B1,CA/B2 */ DEVCB_DRIVER_MEMBER(vectrex_state,v_via_pa_w), DEVCB_DRIVER_MEMBER(vectrex_state,v_via_pb_w), DEVCB_NULL, DEVCB_NULL, DEVCB_DRIVER_MEMBER(vectrex_state,v_via_ca2_w), DEVCB_DRIVER_MEMBER(vectrex_state,v_via_cb2_w), - /*irq */ DEVCB_DRIVER_LINE_MEMBER(vectrex_state,vectrex_via_irq), -}; - - WRITE8_MEMBER(vectrex_state::raaspec_led_w) { logerror("Spectrum I+ LED: %i%i%i%i%i%i%i%i\n", diff --git a/src/mess/drivers/a6809.c b/src/mess/drivers/a6809.c index 0607775a80c..fc13a00825b 100644 --- a/src/mess/drivers/a6809.c +++ b/src/mess/drivers/a6809.c @@ -198,23 +198,6 @@ WRITE_LINE_MEMBER( a6809_state::cass_w ) m_cass_state = state; } -static const via6522_interface via_intf = -{ - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(a6809_state, pb_r), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(a6809_state, cass_w), // out CB2 - DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0) -}; - TIMER_DEVICE_CALLBACK_MEMBER(a6809_state::a6809_c) { m_cass_data[3]++; @@ -275,7 +258,11 @@ static MACHINE_CONFIG_START( a6809, a6809_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) /* Devices */ - MCFG_VIA6522_ADD("via", XTAL_4MHz / 4, via_intf) + MCFG_DEVICE_ADD("via", VIA6522, XTAL_4MHz / 4) + MCFG_VIA6522_READPB_HANDLER(READ8(a6809_state, pb_r)) + MCFG_VIA6522_CB2_HANDLER(WRITELINE(a6809_state, cass_w)) + MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE("maincpu", m6809e_device, irq_line)) + MCFG_MC6845_ADD("mc6845", MC6845, "screen", XTAL_4MHz / 2, a6809_crtc6845_interface) MCFG_SAA5050_ADD("saa5050", 6000000, a6809_saa5050_intf) MCFG_ASCII_KEYBOARD_ADD("keyboard", kb_intf) diff --git a/src/mess/drivers/aim65.c b/src/mess/drivers/aim65.c index 57285bb8fd2..fca96249028 100644 --- a/src/mess/drivers/aim65.c +++ b/src/mess/drivers/aim65.c @@ -155,42 +155,6 @@ static const riot6532_interface aim65_riot_interface = DEVCB_CPU_INPUT_LINE("maincpu", M6502_IRQ_LINE) }; -/* system via interface Z32 */ -static const via6522_interface aim65_system_via = -{ - DEVCB_NULL, // in port A - DEVCB_DRIVER_MEMBER(aim65_state, aim65_pb_r), // in port B - DEVCB_NULL, // in CA1 printer ready? - DEVCB_NULL, // in CB1 - DEVCB_NULL, // in CA2 - DEVCB_NULL, // in CB2 - DEVCB_NULL, // out Port A - DEVCB_DRIVER_MEMBER(aim65_state, aim65_pb_w), // out port B - DEVCB_NULL, // out CA1 - DEVCB_NULL, // out CB1 printer start - DEVCB_NULL, // out CA2 cass control (H=in) - DEVCB_NULL, // out CB2 turn printer on - DEVCB_CPU_INPUT_LINE("maincpu", M6502_IRQ_LINE) //IRQ -}; - -/* user via interface Z1 */ -static const via6522_interface aim65_user_via = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_CPU_INPUT_LINE("maincpu", M6502_IRQ_LINE) -}; - /* R6520 interface U1 */ static const pia6821_interface aim65_pia_config = { @@ -360,8 +324,19 @@ static MACHINE_CONFIG_START( aim65, aim65_state ) /* other devices */ MCFG_RIOT6532_ADD("riot", AIM65_CLOCK, aim65_riot_interface) - MCFG_VIA6522_ADD("via6522_0", 0, aim65_system_via) - MCFG_VIA6522_ADD("via6522_1", 0, aim65_user_via) + + MCFG_DEVICE_ADD("via6522_0", VIA6522, 0) + MCFG_VIA6522_READPB_HANDLER(READ8(aim65_state, aim65_pb_r)) + // in CA1 printer ready? + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(aim65_state, aim65_pb_w)) + // out CB1 printer start + // out CA2 cass control (H=in) + // out CB2 turn printer on + MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE("maincpu", m6502_device, irq_line)) + + MCFG_DEVICE_ADD("via6522_1", VIA6522, 0) + MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE("maincpu", m6502_device, irq_line)) + MCFG_PIA6821_ADD("pia6821", aim65_pia_config) MCFG_CASSETTE_ADD( "cassette", aim65_1_cassette_interface ) diff --git a/src/mess/drivers/aim65_40.c b/src/mess/drivers/aim65_40.c index 60f88124f26..13428ede4a7 100644 --- a/src/mess/drivers/aim65_40.c +++ b/src/mess/drivers/aim65_40.c @@ -102,61 +102,6 @@ static INPUT_PORTS_START( aim65_40 ) INPUT_PORTS_END /*************************************************************************** - DEVICE INTERFACES -***************************************************************************/ - -static const via6522_interface user_via_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - -static const via6522_interface system_via_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - -static const via6522_interface kb_via_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - -/*************************************************************************** MACHINE DRIVERS ***************************************************************************/ @@ -171,9 +116,9 @@ static MACHINE_CONFIG_START( aim65_40, aim65_40_state ) /* sound hardware */ /* devices */ - MCFG_VIA6522_ADD(M6522_0_TAG, 0, user_via_intf) - MCFG_VIA6522_ADD(M6522_1_TAG, 0, system_via_intf) - MCFG_VIA6522_ADD(M6522_2_TAG, 0, kb_via_intf) + MCFG_DEVICE_ADD(M6522_0_TAG, VIA6522, 0) + MCFG_DEVICE_ADD(M6522_1_TAG, VIA6522, 0) + MCFG_DEVICE_ADD(M6522_2_TAG, VIA6522, 0) MCFG_DEVICE_ADD(M6551_TAG, MOS6551, XTAL_1_8432MHz) MACHINE_CONFIG_END diff --git a/src/mess/drivers/apple3.c b/src/mess/drivers/apple3.c index 196fc9a2d79..044e2996ad0 100644 --- a/src/mess/drivers/apple3.c +++ b/src/mess/drivers/apple3.c @@ -101,8 +101,16 @@ static MACHINE_CONFIG_START( apple3, apple3_state ) MCFG_DEVICE_ADD("acia", MOS6551, XTAL_1_8432MHz) /* via */ - MCFG_VIA6522_ADD("via6522_0", 1000000, apple3_via_0_intf) - MCFG_VIA6522_ADD("via6522_1", 2000000, apple3_via_1_intf) + MCFG_DEVICE_ADD("via6522_0", VIA6522, 1000000) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(apple3_state, apple3_via_0_out_a)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(apple3_state, apple3_via_0_out_b)) + + MCFG_DEVICE_ADD("via6522_1", VIA6522, 2000000) + MCFG_VIA6522_READPA_HANDLER(READ8(apple3_state, apple3_via_1_in_a)) + MCFG_VIA6522_READPB_HANDLER(READ8(apple3_state, apple3_via_1_in_b)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(apple3_state, apple3_via_1_out_a)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(apple3_state, apple3_via_1_out_b)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(apple3_state, apple2_via_1_irq_func)) /* internal ram */ MCFG_RAM_ADD(RAM_TAG) diff --git a/src/mess/drivers/applix.c b/src/mess/drivers/applix.c index 285fe9bc2d1..86d23c54f67 100644 --- a/src/mess/drivers/applix.c +++ b/src/mess/drivers/applix.c @@ -826,23 +826,6 @@ WRITE_LINE_MEMBER( applix_state::vsync_w ) m_via->write_ca2(state); } -static const via6522_interface applix_via = -{ - DEVCB_DRIVER_MEMBER(applix_state, applix_pa_r), // in port A - DEVCB_DRIVER_MEMBER(applix_state, applix_pb_r), // in port B - DEVCB_NULL, // in CA1 cent ack - DEVCB_NULL, // in CB1 kbd clk - DEVCB_NULL, // in CA2 vsync - DEVCB_NULL, // in CB2 kdb data - DEVCB_DRIVER_MEMBER(applix_state, applix_pa_w),// out Port A - DEVCB_DRIVER_MEMBER(applix_state, applix_pb_w), // out port B - DEVCB_NULL, // out CA1 - DEVCB_NULL, // out CB1 - DEVCB_NULL, // out CA2 - DEVCB_NULL, // out CB2 - DEVCB_CPU_INPUT_LINE("maincpu", M68K_IRQ_2) //IRQ -}; - TIMER_DEVICE_CALLBACK_MEMBER(applix_state::cass_timer) { /* cassette - turn 2500/5000Hz to a bit */ @@ -907,7 +890,17 @@ static MACHINE_CONFIG_START( applix, applix_state ) /* Devices */ MCFG_MC6845_ADD("crtc", MC6845, "screen", 1875000, applix_crtc) // 6545 - MCFG_VIA6522_ADD("via6522", 0, applix_via) + MCFG_DEVICE_ADD("via6522", VIA6522, 0) + MCFG_VIA6522_READPA_HANDLER(READ8(applix_state, applix_pa_r)) + MCFG_VIA6522_READPB_HANDLER(READ8(applix_state, applix_pb_r)) + // in CA1 cent ack + // in CB1 kbd clk + // in CA2 vsync + // in CB2 kdb data + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(applix_state, applix_pa_w)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(applix_state, applix_pb_w)) + MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE("maincpu", m68000_device, write_irq2)) + MCFG_CENTRONICS_PRINTER_ADD("centronics", applix_centronics_config) MCFG_CASSETTE_ADD("cassette", applix_cassette_interface) MCFG_WD1772x_ADD("fdc", XTAL_16MHz / 2) //connected to Z80H clock pin diff --git a/src/mess/drivers/atom.c b/src/mess/drivers/atom.c index 7c406671e9c..670052a9b4e 100644 --- a/src/mess/drivers/atom.c +++ b/src/mess/drivers/atom.c @@ -563,10 +563,6 @@ static I8255_INTERFACE( ppi_intf ) DEVCB_DRIVER_MEMBER(atom_state, ppi_pc_w) }; -/*------------------------------------------------- - via6522_interface via_intf --------------------------------------------------*/ - READ8_MEMBER( atom_state::printer_busy ) { return m_centronics->busy_r() << 7; @@ -577,23 +573,6 @@ WRITE8_MEMBER( atom_state::printer_data ) m_centronics->write(space, 0, data & 0x7f); } -static const via6522_interface via_intf = -{ - DEVCB_DRIVER_MEMBER(atom_state, printer_busy), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(atom_state, printer_data), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(CENTRONICS_TAG, centronics_device, strobe_w), - DEVCB_NULL, - DEVCB_CPU_INPUT_LINE(SY6502_TAG, INPUT_LINE_IRQ0) -}; - /*------------------------------------------------- i8271_interface fdc_intf -------------------------------------------------*/ @@ -871,7 +850,13 @@ static MACHINE_CONFIG_START( atom, atom_state ) /* devices */ MCFG_TIMER_DRIVER_ADD_PERIODIC("hz2400", atom_state, cassette_output_tick, attotime::from_hz(4806)) - MCFG_VIA6522_ADD(R6522_TAG, X2/4, via_intf) + + MCFG_DEVICE_ADD(R6522_TAG, VIA6522, X2/4) + MCFG_VIA6522_READPA_HANDLER(READ8(atom_state, printer_busy)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(atom_state, printer_data)) + MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE(CENTRONICS_TAG, centronics_device, strobe_w)) + MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE(SY6502_TAG, m6502_device, irq_line)) + MCFG_I8255_ADD(INS8255_TAG, ppi_intf) MCFG_I8271_ADD(I8271_TAG, fdc_intf) MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(atom_floppy_interface) @@ -942,7 +927,13 @@ static MACHINE_CONFIG_START( atombb, atom_state ) /* devices */ MCFG_TIMER_DRIVER_ADD_PERIODIC("hz2400", atom_state, cassette_output_tick, attotime::from_hz(4806)) - MCFG_VIA6522_ADD(R6522_TAG, X2/4, via_intf) + + MCFG_DEVICE_ADD(R6522_TAG, VIA6522, X2/4) + MCFG_VIA6522_READPA_HANDLER(READ8(atom_state, printer_busy)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(atom_state, printer_data)) + MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE(CENTRONICS_TAG, centronics_device, strobe_w)) + MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE(SY6502_TAG, m6502_device, irq_line)) + MCFG_I8255_ADD(INS8255_TAG, ppi_intf) MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, atom_centronics_config) MCFG_CASSETTE_ADD("cassette", atom_cassette_interface) diff --git a/src/mess/drivers/bbc.c b/src/mess/drivers/bbc.c index 0a85a03760f..a8f1b3753c8 100644 --- a/src/mess/drivers/bbc.c +++ b/src/mess/drivers/bbc.c @@ -698,7 +698,16 @@ static MACHINE_CONFIG_START( bbca, bbc_state ) MCFG_RS232_OUT_CTS_HANDLER(WRITELINE(bbc_state, write_cts_serial)) /* devices */ - MCFG_VIA6522_ADD("via6522_0", 1000000, bbcb_system_via) + MCFG_DEVICE_ADD("via6522_0", VIA6522, 1000000) + MCFG_VIA6522_READPA_HANDLER(READ8(bbc_state, bbcb_via_system_read_porta)) + MCFG_VIA6522_READPB_HANDLER(READ8(bbc_state, bbcb_via_system_read_portb)) + MCFG_VIA6522_READCA1_HANDLER(READLINE(bbc_state, bbcb_via_system_read_ca1)) + MCFG_VIA6522_READCB1_HANDLER(READLINE(bbc_state, bbcb_via_system_read_cb1)) + MCFG_VIA6522_READCA2_HANDLER(READLINE(bbc_state, bbcb_via_system_read_ca2)) + MCFG_VIA6522_READCB2_HANDLER(READLINE(bbc_state, bbcb_via_system_read_cb2)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(bbc_state, bbcb_via_system_write_porta)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(bbc_state, bbcb_via_system_write_portb)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(bbc_state, bbcb_via_system_irq_w)) MACHINE_CONFIG_END @@ -721,7 +730,13 @@ static MACHINE_CONFIG_DERIVED( bbcb, bbca ) // MCFG_TMS52XX_SPEECHROM("vsm") /* devices */ - MCFG_VIA6522_ADD("via6522_1", 1000000, bbcb_user_via) + MCFG_DEVICE_ADD("via6522_1", VIA6522, 1000000) + MCFG_VIA6522_READPB_HANDLER(READ8(bbc_state, bbcb_via_user_read_portb)) + MCFG_VIA6522_WRITEPA_HANDLER(DEVWRITE8("centronics", centronics_device, write)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(bbc_state, bbcb_via_user_write_portb)) + MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE("centronics", centronics_device, strobe_w)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(bbc_state, bbcb_via_user_irq_w)) + MCFG_UPD7002_ADD("upd7002", bbc_uPD7002) /* printer */ @@ -765,7 +780,13 @@ static MACHINE_CONFIG_DERIVED( bbcb_us, bbca ) MCFG_SCREEN_REFRESH_RATE(60) /* devices */ - MCFG_VIA6522_ADD("via6522_1", 1000000, bbcb_user_via) + MCFG_DEVICE_ADD("via6522_1", VIA6522, 1000000) + MCFG_VIA6522_READPB_HANDLER(READ8(bbc_state, bbcb_via_user_read_portb)) + MCFG_VIA6522_WRITEPA_HANDLER(DEVWRITE8("centronics", centronics_device, write)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(bbc_state, bbcb_via_user_write_portb)) + MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE("centronics", centronics_device, strobe_w)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(bbc_state, bbcb_via_user_irq_w)) + MCFG_UPD7002_ADD("upd7002", bbc_uPD7002) /* printer */ @@ -889,8 +910,23 @@ static MACHINE_CONFIG_START( bbcm, bbc_state ) /* devices */ MCFG_UPD7002_ADD("upd7002", bbc_uPD7002) - MCFG_VIA6522_ADD("via6522_0", 1000000, bbcb_system_via) - MCFG_VIA6522_ADD("via6522_1", 1000000, bbcb_user_via) + MCFG_DEVICE_ADD("via6522_0", VIA6522, 1000000) + MCFG_VIA6522_READPA_HANDLER(READ8(bbc_state, bbcb_via_system_read_porta)) + MCFG_VIA6522_READPB_HANDLER(READ8(bbc_state, bbcb_via_system_read_portb)) + MCFG_VIA6522_READCA1_HANDLER(READLINE(bbc_state, bbcb_via_system_read_ca1)) + MCFG_VIA6522_READCB1_HANDLER(READLINE(bbc_state, bbcb_via_system_read_cb1)) + MCFG_VIA6522_READCA2_HANDLER(READLINE(bbc_state, bbcb_via_system_read_ca2)) + MCFG_VIA6522_READCB2_HANDLER(READLINE(bbc_state, bbcb_via_system_read_cb2)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(bbc_state, bbcb_via_system_write_porta)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(bbc_state, bbcb_via_system_write_portb)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(bbc_state, bbcb_via_system_irq_w)) + + MCFG_DEVICE_ADD("via6522_1", VIA6522, 1000000) + MCFG_VIA6522_READPB_HANDLER(READ8(bbc_state, bbcb_via_user_read_portb)) + MCFG_VIA6522_WRITEPA_HANDLER(DEVWRITE8("centronics", centronics_device, write)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(bbc_state, bbcb_via_user_write_portb)) + MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE("centronics", centronics_device, strobe_w)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(bbc_state, bbcb_via_user_irq_w)) /* fdc */ MCFG_WD1770_ADD("wd177x", bbc_wd17xx_interface ) diff --git a/src/mess/drivers/cat.c b/src/mess/drivers/cat.c index b56742619a4..e701381d79a 100644 --- a/src/mess/drivers/cat.c +++ b/src/mess/drivers/cat.c @@ -1311,40 +1311,6 @@ static const acia6850_interface swyft_acia_config = DEVCB_NULL }; -static const via6522_interface swyft_via0_config = -{ - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, cat_state, via0_pa_r), // PA in - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, cat_state, via0_pb_r), // PB in - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, cat_state, via0_ca1_r), // CA1 in callback - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, cat_state, via0_cb1_r), // CB1 in callback - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, cat_state, via0_ca2_r), // CA2 in callback - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, cat_state, via0_cb2_r), // CB2 in callback - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, cat_state, via0_pa_w), // PA out - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, cat_state, via0_pb_w), // PB out - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, cat_state, via0_ca1_w), // CA1 out callback - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, cat_state, via0_cb1_w), // CA2 out callback - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, cat_state, via0_ca2_w), // CB1 out callback - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, cat_state, via0_cb2_w), // CB2 out callback - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, cat_state, via0_int_w), // interrupt callback -}; - -static const via6522_interface swyft_via1_config = -{ - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, cat_state, via1_pa_r), // PA in - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, cat_state, via1_pb_r), // PB in - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, cat_state, via1_ca1_r), // CA1 in callback - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, cat_state, via1_cb1_r), // CB1 in callback - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, cat_state, via1_ca2_r), // CA2 in callback - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, cat_state, via1_cb2_r), // CB2 in callback - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, cat_state, via1_pa_w), // PA out - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, cat_state, via1_pb_w), // PB out - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, cat_state, via1_ca1_w), // CA1 out callback - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, cat_state, via1_cb1_w), // CA2 out callback - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, cat_state, via1_ca2_w), // CB1 out callback - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, cat_state, via1_cb2_w), // CB2 out callback - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, cat_state, via1_int_w), // interrupt callback -}; - READ8_MEMBER( cat_state::swyft_d0000 ) { // wtf is this supposed to be? @@ -1567,8 +1533,35 @@ static MACHINE_CONFIG_START( swyft, cat_state ) MCFG_VIDEO_START_OVERRIDE(cat_state,swyft) MCFG_ACIA6850_ADD("acia6850", swyft_acia_config) // unknown clock - MCFG_VIA6522_ADD("via6522_0", XTAL_15_8976MHz/16, swyft_via0_config) // unknown clock, GUESSED - MCFG_VIA6522_ADD("via6522_1", XTAL_15_8976MHz/16, swyft_via1_config) // unknown clock, GUESSED + MCFG_DEVICE_ADD("via6522_0", VIA6522, XTAL_15_8976MHz/16) // unknown clock, GUESSED + MCFG_VIA6522_READPA_HANDLER(READ8(cat_state, via0_pa_r)) + MCFG_VIA6522_READPB_HANDLER(READ8(cat_state, via0_pb_r)) + MCFG_VIA6522_READCA1_HANDLER(READLINE(cat_state, via0_ca1_r)) + MCFG_VIA6522_READCB1_HANDLER(READLINE(cat_state, via0_cb1_r)) + MCFG_VIA6522_READCA2_HANDLER(READLINE(cat_state, via0_ca2_r)) + MCFG_VIA6522_READCB2_HANDLER(READLINE(cat_state, via0_cb2_r)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(cat_state, via0_pa_w)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(cat_state, via0_pb_w)) + MCFG_VIA6522_CA1_HANDLER(WRITELINE(cat_state, via0_ca1_w)) + MCFG_VIA6522_CB1_HANDLER(WRITELINE(cat_state, via0_cb1_w)) + MCFG_VIA6522_CA2_HANDLER(WRITELINE(cat_state, via0_ca2_w)) + MCFG_VIA6522_CB2_HANDLER(WRITELINE(cat_state, via0_cb2_w)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(cat_state, via0_int_w)) + + MCFG_DEVICE_ADD("via6522_1", VIA6522, XTAL_15_8976MHz/16) // unknown clock, GUESSED + MCFG_VIA6522_READPA_HANDLER(READ8(cat_state, via1_pa_r)) + MCFG_VIA6522_READPB_HANDLER(READ8(cat_state, via1_pb_r)) + MCFG_VIA6522_READCA1_HANDLER(READLINE(cat_state, via1_ca1_r)) + MCFG_VIA6522_READCB1_HANDLER(READLINE(cat_state, via1_cb1_r)) + MCFG_VIA6522_READCA2_HANDLER(READLINE(cat_state, via1_ca2_r)) + MCFG_VIA6522_READCB2_HANDLER(READLINE(cat_state, via1_cb2_r)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(cat_state, via1_pa_w)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(cat_state, via1_pb_w)) + MCFG_VIA6522_CA1_HANDLER(WRITELINE(cat_state, via1_ca1_w)) + MCFG_VIA6522_CB1_HANDLER(WRITELINE(cat_state, via1_cb1_w)) + MCFG_VIA6522_CA2_HANDLER(WRITELINE(cat_state, via1_ca2_w)) + MCFG_VIA6522_CB2_HANDLER(WRITELINE(cat_state, via1_cb2_w)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(cat_state, via1_int_w)) MACHINE_CONFIG_END /* ROM definition */ diff --git a/src/mess/drivers/clcd.c b/src/mess/drivers/clcd.c index 37c0d208ff8..5e970993c50 100644 --- a/src/mess/drivers/clcd.c +++ b/src/mess/drivers/clcd.c @@ -376,43 +376,6 @@ void clcd_state::palette_init() palette_set_color(machine(), 3, MAKE_RGB(32,240,32)); } -static const via6522_interface via0_intf = -{ - DEVCB_NULL,//DEVCB_DRIVER_MEMBER(clcd_state, via0_pa_r), - DEVCB_DRIVER_MEMBER(clcd_state, via0_pb_r), - DEVCB_NULL, // RESTORE - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(clcd_state, via0_cb2_r), - DEVCB_DRIVER_MEMBER(clcd_state, via0_pa_w), - DEVCB_DRIVER_MEMBER(clcd_state, via0_pb_w), - DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(clcd_state, via0_cb1_w), - DEVCB_NULL,//DEVCB_DRIVER_LINE_MEMBER(clcd_state, via0_ca2_w), // CASS MOTOR - DEVCB_NULL, - - DEVCB_CPU_INPUT_LINE("maincpu", M65C02_IRQ_LINE) -}; - -static const via6522_interface via1_intf = -{ - DEVCB_NULL,//DEVCB_DRIVER_MEMBER(clcd_state, via1_pa_r), - DEVCB_NULL,//DEVCB_DRIVER_MEMBER(clcd_state, via1_pb_r), - DEVCB_NULL, // CASS READ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_NULL, - DEVCB_NULL,//DEVCB_DRIVER_MEMBER(clcd_state, via1_pb_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL,//DEVCB_DRIVER_LINE_MEMBER(clcd_state, via1_ca2_w), - DEVCB_NULL,//DEVCB_DRIVER_LINE_MEMBER(clcd_state, via1_cb2_w), - - DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_NMI) -}; - static const gfx_layout charset_8x8 = { 6,8, @@ -433,8 +396,17 @@ static MACHINE_CONFIG_START( clcd, clcd_state ) MCFG_CPU_ADD("maincpu",M65C02, 2000000) MCFG_CPU_PROGRAM_MAP(clcd_mem) - MCFG_VIA6522_ADD("via0", 0, via0_intf) - MCFG_VIA6522_ADD("via1", 0, via1_intf) + 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)) + MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE("maincpu", m65c02_device, irq_line)) + + MCFG_DEVICE_ADD("via1", VIA6522, 0) + MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE("maincpu", m65c02_device, nmi_line)) + MCFG_DEVICE_ADD("acia", MOS6551, XTAL_1_8432MHz) /* video hardware */ diff --git a/src/mess/drivers/concept.c b/src/mess/drivers/concept.c index daf474b624d..576b1a0a03f 100644 --- a/src/mess/drivers/concept.c +++ b/src/mess/drivers/concept.c @@ -230,7 +230,13 @@ static MACHINE_CONFIG_START( concept, concept_state ) MCFG_MM58274C_ADD("mm58274c", concept_mm58274c_interface) /* via */ - MCFG_VIA6522_ADD("via6522_0", 1022750, concept_via6522_intf) + MCFG_DEVICE_ADD("via6522_0", VIA6522, 1022750) + MCFG_VIA6522_READPA_HANDLER(READ8(concept_state, via_in_a)) + MCFG_VIA6522_READPB_HANDLER(READ8(concept_state, via_in_b)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(concept_state, via_out_a)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(concept_state, via_out_b)) + MCFG_VIA6522_CB2_HANDLER(WRITELINE(concept_state, via_out_cb2)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(concept_state, via_irq_func)) /* ACIAs */ MCFG_DEVICE_ADD(ACIA_0_TAG, MOS6551, XTAL_1_8432MHz) diff --git a/src/mess/drivers/ec65.c b/src/mess/drivers/ec65.c index 94fc4a62847..655c32b8467 100644 --- a/src/mess/drivers/ec65.c +++ b/src/mess/drivers/ec65.c @@ -33,7 +33,7 @@ public: m_maincpu(*this, "maincpu") { } DECLARE_READ8_MEMBER(ec65_via_read_a); - DECLARE_READ8_MEMBER(ec65_read_ca1 ); + DECLARE_READ_LINE_MEMBER(ec65_read_ca1); DECLARE_READ8_MEMBER(ec65_via_read_b); DECLARE_WRITE8_MEMBER(ec65_via_write_a); DECLARE_WRITE8_MEMBER(ec65_via_write_b); @@ -100,7 +100,7 @@ READ8_MEMBER( ec65_state::ec65_via_read_a) return m_keyboard_input; } -READ8_MEMBER( ec65_state::ec65_read_ca1 ) +READ_LINE_MEMBER( ec65_state::ec65_read_ca1 ) { return 0; } @@ -118,40 +118,6 @@ WRITE8_MEMBER( ec65_state::ec65_via_write_b ) { } -static const via6522_interface ec65_via_1_intf= -{ - DEVCB_NULL, /* in_a_func */ - DEVCB_DRIVER_MEMBER(ec65_state, ec65_via_read_b), /* in_b_func */ - DEVCB_NULL, /* in_ca1_func */ - DEVCB_NULL, /* in_cb1_func */ - DEVCB_NULL, /* in_ca2_func */ - DEVCB_NULL, /* in_cb2_func */ - DEVCB_DRIVER_MEMBER(ec65_state, ec65_via_write_a), /* out_a_func */ - DEVCB_DRIVER_MEMBER(ec65_state, ec65_via_write_b), /* out_b_func */ - DEVCB_NULL, /* out_ca1_func */ - DEVCB_NULL, /* out_cb1_func */ - DEVCB_NULL, /* out_ca2_func */ - DEVCB_NULL, /* out_cb2_func */ - DEVCB_NULL, /* irq_func */ -}; - -static const via6522_interface ec65_via_0_intf= -{ - DEVCB_DRIVER_MEMBER(ec65_state, ec65_via_read_a), /* in_a_func */ - DEVCB_NULL, /* in_b_func */ - DEVCB_DRIVER_MEMBER(ec65_state, ec65_read_ca1), /* in_ca1_func */ - DEVCB_NULL, /* in_cb1_func */ - DEVCB_NULL, /* in_ca2_func */ - DEVCB_NULL, /* in_cb2_func */ - DEVCB_NULL, /* out_a_func */ - DEVCB_NULL, /* out_b_func */ - DEVCB_NULL, /* out_ca1_func */ - DEVCB_NULL, /* out_cb1_func */ - DEVCB_NULL, /* out_ca2_func */ - DEVCB_NULL, /* out_cb2_func */ - DEVCB_NULL, /* irq_func */ -}; - /* Input ports */ static INPUT_PORTS_START( ec65 ) INPUT_PORTS_END @@ -269,8 +235,16 @@ static MACHINE_CONFIG_START( ec65, ec65_state ) /* devices */ MCFG_PIA6821_ADD( PIA6821_TAG, ec65_pia_interface ) MCFG_ACIA6850_ADD(ACIA6850_TAG, ec65_acia_intf) - MCFG_VIA6522_ADD(VIA6522_0_TAG, XTAL_4MHz / 4, ec65_via_0_intf) - MCFG_VIA6522_ADD(VIA6522_1_TAG, XTAL_4MHz / 4, ec65_via_1_intf) + + MCFG_DEVICE_ADD(VIA6522_0_TAG, VIA6522, XTAL_4MHz / 4) + MCFG_VIA6522_READPA_HANDLER(READ8(ec65_state, ec65_via_read_a)) + MCFG_VIA6522_READCA1_HANDLER(READLINE(ec65_state, ec65_read_ca1)) + + MCFG_DEVICE_ADD(VIA6522_1_TAG, VIA6522, XTAL_4MHz / 4) + MCFG_VIA6522_READPB_HANDLER(READ8(ec65_state, ec65_via_read_b)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(ec65_state, ec65_via_write_a)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(ec65_state, ec65_via_write_b)) + MCFG_DEVICE_ADD(ACIA6551_TAG, MOS6551, XTAL_1_8432MHz) MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf) MACHINE_CONFIG_END diff --git a/src/mess/drivers/jr100.c b/src/mess/drivers/jr100.c index 3f62a4b73f3..18d70313199 100644 --- a/src/mess/drivers/jr100.c +++ b/src/mess/drivers/jr100.c @@ -293,22 +293,6 @@ WRITE_LINE_MEMBER(jr100_state::jr100_via_write_cb2) { m_cassette->output(state ? -1.0 : +1.0); } -static const via6522_interface jr100_via_intf = -{ - DEVCB_NULL, /* in_a_func */ - DEVCB_DRIVER_MEMBER(jr100_state,jr100_via_read_b), /* in_b_func */ - DEVCB_NULL, /* in_ca1_func */ - DEVCB_NULL, /* in_cb1_func */ - DEVCB_NULL, /* in_ca2_func */ - DEVCB_NULL, /* in_cb2_func */ - DEVCB_DRIVER_MEMBER(jr100_state,jr100_via_write_a), /* out_a_func */ - DEVCB_DRIVER_MEMBER(jr100_state,jr100_via_write_b), /* out_b_func */ - DEVCB_NULL, /* out_ca1_func */ - DEVCB_NULL, /* out_cb1_func */ - DEVCB_NULL, /* out_ca2_func */ - DEVCB_DRIVER_LINE_MEMBER(jr100_state, jr100_via_write_cb2), /* out_cb2_func */ - DEVCB_NULL /* irq_func */ -}; static const cassette_interface jr100_cassette_interface = { cassette_default_formats, @@ -404,8 +388,11 @@ static MACHINE_CONFIG_START( jr100, jr100_state ) MCFG_PALETTE_LENGTH(2) MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white) - - MCFG_VIA6522_ADD("via", XTAL_14_31818MHz / 16, jr100_via_intf) + MCFG_DEVICE_ADD("via", VIA6522, XTAL_14_31818MHz / 16) + MCFG_VIA6522_READPB_HANDLER(READ8(jr100_state,jr100_via_read_b)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(jr100_state,jr100_via_write_a)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(jr100_state,jr100_via_write_b)) + MCFG_VIA6522_CB2_HANDLER(WRITELINE(jr100_state, jr100_via_write_cb2)) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette") diff --git a/src/mess/drivers/lisa.c b/src/mess/drivers/lisa.c index 94f79bb8fbb..a081b329d31 100644 --- a/src/mess/drivers/lisa.c +++ b/src/mess/drivers/lisa.c @@ -172,8 +172,16 @@ static MACHINE_CONFIG_START( lisa, lisa_state ) MCFG_SOFTWARE_LIST_ADD("disk_list","lisa") /* via */ - MCFG_VIA6522_ADD("via6522_0", 500000, lisa_via6522_0_intf) - MCFG_VIA6522_ADD("via6522_1", 500000, lisa_via6522_1_intf) + MCFG_DEVICE_ADD("via6522_0", VIA6522, 500000) + MCFG_VIA6522_READPB_HANDLER(READ8(lisa_state, COPS_via_in_b)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(lisa_state, COPS_via_out_a)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(lisa_state, COPS_via_out_b)) + MCFG_VIA6522_CA1_HANDLER(WRITELINE(lisa_state, COPS_via_out_ca2)) + MCFG_VIA6522_CB1_HANDLER(WRITELINE(lisa_state, COPS_via_out_cb2)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(lisa_state, COPS_via_irq_func)) + + MCFG_DEVICE_ADD("via6522_1", VIA6522, 500000) + MCFG_VIA6522_READPB_HANDLER(READ8(lisa_state, parallel_via_in_b)) MCFG_SCC8530_ADD("scc", 7833600, line_cb_t(FUNC(lisa_state::set_scc_interrupt), static_cast<lisa_state *>(owner))) MACHINE_CONFIG_END @@ -187,10 +195,10 @@ static MACHINE_CONFIG_DERIVED( lisa210, lisa ) MCFG_IWM_MODIFY("fdc", lisa210_fdc_interface) /* via */ - MCFG_DEVICE_REMOVE("via6522_0") - MCFG_DEVICE_REMOVE("via6522_1") - MCFG_VIA6522_ADD("via6522_0", 1250000, lisa_via6522_0_intf) - MCFG_VIA6522_ADD("via6522_1", 1250000, lisa_via6522_1_intf) + MCFG_DEVICE_MODIFY("via6522_0") + MCFG_DEVICE_CLOCK(1250000) + MCFG_DEVICE_MODIFY("via6522_1") + MCFG_DEVICE_CLOCK(1250000) MACHINE_CONFIG_END diff --git a/src/mess/drivers/mac.c b/src/mess/drivers/mac.c index ce143deba83..9d9ac04ea47 100644 --- a/src/mess/drivers/mac.c +++ b/src/mess/drivers/mac.c @@ -962,7 +962,17 @@ static MACHINE_CONFIG_START( mac512ke, mac_state ) MCFG_LEGACY_FLOPPY_SONY_2_DRIVES_ADD(mac_floppy_interface) MCFG_SCC8530_ADD("scc", C7M, line_cb_t(FUNC(mac_state::set_scc_interrupt), static_cast<mac_state *>(owner))) - MCFG_VIA6522_ADD("via6522_0", 1000000, mac_via6522_intf) + + MCFG_DEVICE_ADD("via6522_0", VIA6522, 1000000) + MCFG_VIA6522_READPA_HANDLER(READ8(mac_state,mac_via_in_a)) + MCFG_VIA6522_READPB_HANDLER(READ8(mac_state,mac_via_in_b)) +#ifdef MAC_USE_EMULATED_KBD + MCFG_VIA6522_READCB2_HANDLER(READLINE(mac_state,mac_via_in_cb2)) +#endif + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(mac_state,mac_via_out_a)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via_out_b)) + MCFG_VIA6522_CB2_HANDLER(WRITELINE(mac_state,mac_via_out_cb2)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(mac_state,mac_via_irq)) MCFG_MACKBD_ADD() MCFG_MACKBD_CLKOUT_HANDLER(WRITELINE(mac_state, mac_kbd_clk_in)) @@ -1006,7 +1016,14 @@ static MACHINE_CONFIG_DERIVED( macse, macplus ) MCFG_CPU_PROGRAM_MAP(macse_map) MCFG_DEVICE_REMOVE("via6522_0") - MCFG_VIA6522_ADD("via6522_0", 1000000, mac_via6522_adb_intf) + MCFG_DEVICE_ADD("via6522_0", VIA6522, 1000000) + MCFG_VIA6522_READPA_HANDLER(READ8(mac_state,mac_via_in_a)) + MCFG_VIA6522_READPB_HANDLER(READ8(mac_state,mac_via_in_b)) + MCFG_VIA6522_READCB2_HANDLER(READLINE(mac_state,mac_adb_via_in_cb2)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(mac_state,mac_via_out_a)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via_out_b)) + MCFG_VIA6522_CB2_HANDLER(WRITELINE(mac_state,mac_adb_via_out_cb2)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(mac_state,mac_via_irq)) /* internal ram */ MCFG_RAM_MODIFY(RAM_TAG) @@ -1024,7 +1041,14 @@ static MACHINE_CONFIG_DERIVED( macclasc, macplus ) MCFG_CPU_PROGRAM_MAP(macse_map) MCFG_DEVICE_REMOVE("via6522_0") - MCFG_VIA6522_ADD("via6522_0", 1000000, mac_via6522_adb_intf) + MCFG_DEVICE_ADD("via6522_0", VIA6522, 1000000) + MCFG_VIA6522_READPA_HANDLER(READ8(mac_state,mac_via_in_a)) + MCFG_VIA6522_READPB_HANDLER(READ8(mac_state,mac_via_in_b)) + MCFG_VIA6522_READCB2_HANDLER(READLINE(mac_state,mac_adb_via_in_cb2)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(mac_state,mac_via_out_a)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via_out_b)) + MCFG_VIA6522_CB2_HANDLER(WRITELINE(mac_state,mac_adb_via_out_cb2)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(mac_state,mac_via_irq)) /* internal ram */ MCFG_RAM_MODIFY(RAM_TAG) @@ -1072,7 +1096,16 @@ static MACHINE_CONFIG_START( macprtb, mac_state ) MCFG_LEGACY_FLOPPY_SONY_2_DRIVES_ADD(mac_floppy_interface) MCFG_SCC8530_ADD("scc", C7M, line_cb_t(FUNC(mac_state::set_scc_interrupt), static_cast<mac_state *>(owner))) - MCFG_VIA6522_ADD("via6522_0", 783360, mac_via6522_intf) + MCFG_DEVICE_ADD("via6522_0", VIA6522, 783360) + MCFG_VIA6522_READPA_HANDLER(READ8(mac_state,mac_via_in_a)) + MCFG_VIA6522_READPB_HANDLER(READ8(mac_state,mac_via_in_b)) +#ifdef MAC_USE_EMULATED_KBD + MCFG_VIA6522_READCB2_HANDLER(READLINE(mac_state,mac_via_in_cb2)) +#endif + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(mac_state,mac_via_out_a)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via_out_b)) + MCFG_VIA6522_CB2_HANDLER(WRITELINE(mac_state,mac_via_out_cb2)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(mac_state,mac_via_irq)) /* internal ram */ MCFG_RAM_ADD(RAM_TAG) @@ -1118,8 +1151,21 @@ static MACHINE_CONFIG_START( macii, mac_state ) MCFG_SCC8530_ADD("scc", C7M, line_cb_t(FUNC(mac_state::set_scc_interrupt), static_cast<mac_state *>(owner))) - MCFG_VIA6522_ADD("via6522_0", C7M/10, mac_via6522_adb_intf) - MCFG_VIA6522_ADD("via6522_1", C7M/10, mac_via6522_2_intf) + MCFG_DEVICE_ADD("via6522_0", VIA6522, C7M/10) + MCFG_VIA6522_READPA_HANDLER(READ8(mac_state,mac_via_in_a)) + MCFG_VIA6522_READPB_HANDLER(READ8(mac_state,mac_via_in_b)) + MCFG_VIA6522_READCB2_HANDLER(READLINE(mac_state,mac_adb_via_in_cb2)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(mac_state,mac_via_out_a)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via_out_b)) + MCFG_VIA6522_CB2_HANDLER(WRITELINE(mac_state,mac_adb_via_out_cb2)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(mac_state,mac_via_irq)) + + MCFG_DEVICE_ADD("via6522_1", VIA6522, C7M/10) + MCFG_VIA6522_READPA_HANDLER(READ8(mac_state, mac_via2_in_a)) + MCFG_VIA6522_READPB_HANDLER(READ8(mac_state, mac_via2_in_b)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(mac_state,mac_via2_out_a)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via2_out_b)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(mac_state,mac_via2_irq)) /* internal ram */ MCFG_RAM_ADD(RAM_TAG) @@ -1168,7 +1214,14 @@ static MACHINE_CONFIG_START( maciifx, mac_state ) MCFG_SCC8530_ADD("scc", C7M, line_cb_t(FUNC(mac_state::set_scc_interrupt), static_cast<mac_state *>(owner))) - MCFG_VIA6522_ADD("via6522_0", C7M/10, mac_via6522_adb_intf) + MCFG_DEVICE_ADD("via6522_0", VIA6522, C7M/10) + MCFG_VIA6522_READPA_HANDLER(READ8(mac_state,mac_via_in_a)) + MCFG_VIA6522_READPB_HANDLER(READ8(mac_state,mac_via_in_b)) + MCFG_VIA6522_READCB2_HANDLER(READLINE(mac_state,mac_adb_via_in_cb2)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(mac_state,mac_via_out_a)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via_out_b)) + MCFG_VIA6522_CB2_HANDLER(WRITELINE(mac_state,mac_adb_via_out_cb2)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(mac_state,mac_via_irq)) /* internal ram */ MCFG_RAM_ADD(RAM_TAG) @@ -1371,8 +1424,21 @@ static MACHINE_CONFIG_START( macse30, mac_state ) MCFG_SCC8530_ADD("scc", C7M, line_cb_t(FUNC(mac_state::set_scc_interrupt), static_cast<mac_state *>(owner))) - MCFG_VIA6522_ADD("via6522_0", 783360, mac_via6522_adb_intf) - MCFG_VIA6522_ADD("via6522_1", 783360, mac_via6522_2_intf) + MCFG_DEVICE_ADD("via6522_0", VIA6522, 783360) + MCFG_VIA6522_READPA_HANDLER(READ8(mac_state,mac_via_in_a)) + MCFG_VIA6522_READPB_HANDLER(READ8(mac_state,mac_via_in_b)) + MCFG_VIA6522_READCB2_HANDLER(READLINE(mac_state,mac_adb_via_in_cb2)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(mac_state,mac_via_out_a)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via_out_b)) + MCFG_VIA6522_CB2_HANDLER(WRITELINE(mac_state,mac_adb_via_out_cb2)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(mac_state,mac_via_irq)) + + MCFG_DEVICE_ADD("via6522_1", VIA6522, 783360) + MCFG_VIA6522_READPA_HANDLER(READ8(mac_state, mac_via2_in_a)) + MCFG_VIA6522_READPB_HANDLER(READ8(mac_state, mac_via2_in_b)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(mac_state,mac_via2_out_a)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via2_out_b)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(mac_state,mac_via2_irq)) /* internal ram */ MCFG_RAM_ADD(RAM_TAG) @@ -1419,8 +1485,21 @@ static MACHINE_CONFIG_START( macpb140, mac_state ) MCFG_SCC8530_ADD("scc", C7M, line_cb_t(FUNC(mac_state::set_scc_interrupt), static_cast<mac_state *>(owner))) - MCFG_VIA6522_ADD("via6522_0", 783360, mac_via6522_adb_intf) - MCFG_VIA6522_ADD("via6522_1", 783360, mac_via6522_2_intf) + MCFG_DEVICE_ADD("via6522_0", VIA6522, 783360) + MCFG_VIA6522_READPA_HANDLER(READ8(mac_state,mac_via_in_a)) + MCFG_VIA6522_READPB_HANDLER(READ8(mac_state,mac_via_in_b)) + MCFG_VIA6522_READCB2_HANDLER(READLINE(mac_state,mac_adb_via_in_cb2)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(mac_state,mac_via_out_a)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via_out_b)) + MCFG_VIA6522_CB2_HANDLER(WRITELINE(mac_state,mac_adb_via_out_cb2)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(mac_state,mac_via_irq)) + + MCFG_DEVICE_ADD("via6522_1", VIA6522, 783360) + MCFG_VIA6522_READPA_HANDLER(READ8(mac_state, mac_via2_in_a)) + MCFG_VIA6522_READPB_HANDLER(READ8(mac_state, mac_via2_in_b)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(mac_state,mac_via2_out_a)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via2_out_b)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(mac_state,mac_via2_irq)) /* internal ram */ MCFG_RAM_ADD(RAM_TAG) @@ -1487,8 +1566,21 @@ static MACHINE_CONFIG_START( macpb160, mac_state ) MCFG_SCC8530_ADD("scc", C7M, line_cb_t(FUNC(mac_state::set_scc_interrupt), static_cast<mac_state *>(owner))) - MCFG_VIA6522_ADD("via6522_0", 783360, mac_via6522_adb_intf) - MCFG_VIA6522_ADD("via6522_1", 783360, mac_via6522_2_intf) + MCFG_DEVICE_ADD("via6522_0", VIA6522, 783360) + MCFG_VIA6522_READPA_HANDLER(READ8(mac_state,mac_via_in_a)) + MCFG_VIA6522_READPB_HANDLER(READ8(mac_state,mac_via_in_b)) + MCFG_VIA6522_READCB2_HANDLER(READLINE(mac_state,mac_adb_via_in_cb2)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(mac_state,mac_via_out_a)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via_out_b)) + MCFG_VIA6522_CB2_HANDLER(WRITELINE(mac_state,mac_adb_via_out_cb2)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(mac_state,mac_via_irq)) + + MCFG_DEVICE_ADD("via6522_1", VIA6522, 783360) + MCFG_VIA6522_READPA_HANDLER(READ8(mac_state, mac_via2_in_a)) + MCFG_VIA6522_READPB_HANDLER(READ8(mac_state, mac_via2_in_b)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(mac_state,mac_via2_out_a)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via2_out_b)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(mac_state,mac_via2_irq)) /* internal ram */ MCFG_RAM_ADD(RAM_TAG) @@ -1656,8 +1748,21 @@ static MACHINE_CONFIG_START( pwrmac, mac_state ) MCFG_SCC8530_ADD("scc", C7M, line_cb_t(FUNC(mac_state::set_scc_interrupt), static_cast<mac_state *>(owner))) - MCFG_VIA6522_ADD("via6522_0", 783360, mac_via6522_adb_intf) - MCFG_VIA6522_ADD("via6522_1", 783360, mac_via6522_2_intf) + MCFG_DEVICE_ADD("via6522_0", VIA6522, 783360) + MCFG_VIA6522_READPA_HANDLER(READ8(mac_state,mac_via_in_a)) + MCFG_VIA6522_READPB_HANDLER(READ8(mac_state,mac_via_in_b)) + MCFG_VIA6522_READCB2_HANDLER(READLINE(mac_state,mac_adb_via_in_cb2)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(mac_state,mac_via_out_a)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via_out_b)) + MCFG_VIA6522_CB2_HANDLER(WRITELINE(mac_state,mac_adb_via_out_cb2)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(mac_state,mac_via_irq)) + + MCFG_DEVICE_ADD("via6522_1", VIA6522, 783360) + MCFG_VIA6522_READPA_HANDLER(READ8(mac_state, mac_via2_in_a)) + MCFG_VIA6522_READPB_HANDLER(READ8(mac_state, mac_via2_in_b)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(mac_state,mac_via2_out_a)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via2_out_b)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(mac_state,mac_via2_irq)) /* internal ram */ MCFG_RAM_ADD(RAM_TAG) @@ -1701,8 +1806,21 @@ static MACHINE_CONFIG_START( macqd700, mac_state ) MCFG_SCC8530_ADD("scc", C7M, line_cb_t(FUNC(mac_state::set_scc_interrupt), static_cast<mac_state *>(owner))) - MCFG_VIA6522_ADD("via6522_0", C7M/10, mac_via6522_adb_intf) - MCFG_VIA6522_ADD("via6522_1", C7M/10, mac_via6522_2_intf) + MCFG_DEVICE_ADD("via6522_0", VIA6522, C7M/10) + MCFG_VIA6522_READPA_HANDLER(READ8(mac_state,mac_via_in_a)) + MCFG_VIA6522_READPB_HANDLER(READ8(mac_state,mac_via_in_b)) + MCFG_VIA6522_READCB2_HANDLER(READLINE(mac_state,mac_adb_via_in_cb2)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(mac_state,mac_via_out_a)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via_out_b)) + MCFG_VIA6522_CB2_HANDLER(WRITELINE(mac_state,mac_adb_via_out_cb2)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(mac_state,mac_via_irq)) + + MCFG_DEVICE_ADD("via6522_1", VIA6522, C7M/10) + MCFG_VIA6522_READPA_HANDLER(READ8(mac_state, mac_via2_in_a)) + MCFG_VIA6522_READPB_HANDLER(READ8(mac_state, mac_via2_in_b)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(mac_state,mac_via2_out_a)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via2_out_b)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(mac_state,mac_via2_irq)) MCFG_SCSIBUS_ADD("scsi") MCFG_SCSIDEV_ADD("scsi:harddisk1", SCSIHD, SCSI_ID_6) diff --git a/src/mess/drivers/macpci.c b/src/mess/drivers/macpci.c index b2aed8b9d35..9bf0da59e0b 100644 --- a/src/mess/drivers/macpci.c +++ b/src/mess/drivers/macpci.c @@ -126,7 +126,15 @@ static MACHINE_CONFIG_START( pippin, macpci_state ) MCFG_RAM_ADD(RAM_TAG) MCFG_RAM_DEFAULT_SIZE("32M") - MCFG_VIA6522_ADD("via6522_0", C7M/10, pcimac_via6522_intf) + MCFG_DEVICE_ADD("via6522_0", VIA6522, C7M/10) + MCFG_VIA6522_READPA_HANDLER(READ8(macpci_state, mac_via_in_a)) + MCFG_VIA6522_READPB_HANDLER(READ8(macpci_state, mac_via_in_b)) + MCFG_VIA6522_READCB2_HANDLER(READLINE(macpci_state,mac_adb_via_in_cb2)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(macpci_state,mac_via_out_a)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(macpci_state,mac_via_out_b)) + MCFG_VIA6522_CB2_HANDLER(WRITELINE(macpci_state, mac_adb_via_out_cb2)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(macpci_state,mac_via_irq)) + // MCFG_SCC8530_ADD("scc", C7M, line_cb_t(FUNC(macpci_state::set_scc_interrupt), static_cast<macpci_state *>(owner))) MCFG_CUDA_ADD(CUDA_341S0060, mac_cuda_interface) MCFG_QUANTUM_PERFECT_CPU("maincpu") diff --git a/src/mess/drivers/microtan.c b/src/mess/drivers/microtan.c index a3a6878ee9d..626091056db 100644 --- a/src/mess/drivers/microtan.c +++ b/src/mess/drivers/microtan.c @@ -258,8 +258,31 @@ static MACHINE_CONFIG_START( microtan, microtan_state ) MCFG_DEVICE_ADD("acia", MOS6551, XTAL_1_8432MHz) /* via */ - MCFG_VIA6522_ADD("via6522_0", 0, microtan_via6522_0) - MCFG_VIA6522_ADD("via6522_1", 0, microtan_via6522_1) + MCFG_DEVICE_ADD("via6522_0", VIA6522, 0) + MCFG_VIA6522_READPA_HANDLER(READ8(microtan_state, via_0_in_a)) + MCFG_VIA6522_READPB_HANDLER(READ8(microtan_state, via_0_in_b)) + MCFG_VIA6522_READCA1_HANDLER(READLINE(microtan_state, via_0_in_ca1)) + MCFG_VIA6522_READCB1_HANDLER(READLINE(microtan_state, via_0_in_cb1)) + MCFG_VIA6522_READCA2_HANDLER(READLINE(microtan_state, via_0_in_ca2)) + MCFG_VIA6522_READCB2_HANDLER(READLINE(microtan_state, via_0_in_cb2)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(microtan_state, via_0_out_a)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(microtan_state, via_0_out_b)) + MCFG_VIA6522_CA2_HANDLER(WRITELINE(microtan_state, via_0_out_ca2)) + MCFG_VIA6522_CB2_HANDLER(WRITELINE(microtan_state, via_0_out_cb2)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(microtan_state, via_0_irq)) + + MCFG_DEVICE_ADD("via6522_1", VIA6522, 0) + MCFG_VIA6522_READPA_HANDLER(READ8(microtan_state, via_1_in_a)) + MCFG_VIA6522_READPB_HANDLER(READ8(microtan_state, via_1_in_b)) + MCFG_VIA6522_READCA1_HANDLER(READLINE(microtan_state, via_1_in_ca1)) + MCFG_VIA6522_READCB1_HANDLER(READLINE(microtan_state, via_1_in_cb1)) + MCFG_VIA6522_READCA2_HANDLER(READLINE(microtan_state, via_1_in_ca2)) + MCFG_VIA6522_READCB2_HANDLER(READLINE(microtan_state, via_1_in_cb2)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(microtan_state, via_1_out_a)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(microtan_state, via_1_out_b)) + MCFG_VIA6522_CA2_HANDLER(WRITELINE(microtan_state, via_1_out_ca2)) + MCFG_VIA6522_CB2_HANDLER(WRITELINE(microtan_state, via_1_out_cb2)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(microtan_state, via_1_irq)) MACHINE_CONFIG_END ROM_START( microtan ) diff --git a/src/mess/drivers/mirage.c b/src/mess/drivers/mirage.c index 25f395860fb..0687cbdbcd0 100644 --- a/src/mess/drivers/mirage.c +++ b/src/mess/drivers/mirage.c @@ -78,10 +78,10 @@ public: DECLARE_WRITE8_MEMBER(mirage_via_write_portb); DECLARE_READ8_MEMBER(mirage_via_read_porta); DECLARE_READ8_MEMBER(mirage_via_read_portb); - DECLARE_READ8_MEMBER(mirage_via_read_ca1); - DECLARE_READ8_MEMBER(mirage_via_read_cb1); - DECLARE_READ8_MEMBER(mirage_via_read_ca2); - DECLARE_READ8_MEMBER(mirage_via_read_cb2); + DECLARE_READ_LINE_MEMBER(mirage_via_read_ca1); + DECLARE_READ_LINE_MEMBER(mirage_via_read_cb1); + DECLARE_READ_LINE_MEMBER(mirage_via_read_ca2); + DECLARE_READ_LINE_MEMBER(mirage_via_read_cb2); DECLARE_WRITE_LINE_MEMBER(acia_irq_w); @@ -239,47 +239,30 @@ READ8_MEMBER(mirage_state::mirage_via_read_portb) } // external sync pulse -READ8_MEMBER(mirage_state::mirage_via_read_ca1) +READ_LINE_MEMBER(mirage_state::mirage_via_read_ca1) { return 0; } // keyscan -READ8_MEMBER(mirage_state::mirage_via_read_cb1) +READ_LINE_MEMBER(mirage_state::mirage_via_read_cb1) { return 0; } // keyscan -READ8_MEMBER(mirage_state::mirage_via_read_ca2) +READ_LINE_MEMBER(mirage_state::mirage_via_read_ca2) { return 0; } // keyscan -READ8_MEMBER(mirage_state::mirage_via_read_cb2) +READ_LINE_MEMBER(mirage_state::mirage_via_read_cb2) { return 0; } -const via6522_interface mirage_via = -{ - DEVCB_DRIVER_MEMBER(mirage_state, mirage_via_read_porta), - DEVCB_DRIVER_MEMBER(mirage_state, mirage_via_read_portb), - DEVCB_DRIVER_MEMBER(mirage_state, mirage_via_read_ca1), - DEVCB_DRIVER_MEMBER(mirage_state, mirage_via_read_cb1), - DEVCB_DRIVER_MEMBER(mirage_state, mirage_via_read_ca2), - DEVCB_DRIVER_MEMBER(mirage_state, mirage_via_read_cb2), - DEVCB_DRIVER_MEMBER(mirage_state, mirage_via_write_porta), - DEVCB_DRIVER_MEMBER(mirage_state, mirage_via_write_portb), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_CPU_INPUT_LINE("maincpu", M6809_IRQ_LINE) -}; - static ACIA6850_INTERFACE( mirage_acia6850_interface ) { 0, // tx clock @@ -300,7 +283,16 @@ static MACHINE_CONFIG_START( mirage, mirage_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) - MCFG_VIA6522_ADD("via6522", 1000000, mirage_via) + MCFG_DEVICE_ADD("via6522", VIA6522, 1000000) + MCFG_VIA6522_READPA_HANDLER(READ8(mirage_state, mirage_via_read_porta)) + MCFG_VIA6522_READPB_HANDLER(READ8(mirage_state, mirage_via_read_portb)) + MCFG_VIA6522_READCA1_HANDLER(READLINE(mirage_state, mirage_via_read_ca1)) + MCFG_VIA6522_READCB1_HANDLER(READLINE(mirage_state, mirage_via_read_cb1)) + MCFG_VIA6522_READCA2_HANDLER(READLINE(mirage_state, mirage_via_read_ca2)) + MCFG_VIA6522_READCB2_HANDLER(READLINE(mirage_state, mirage_via_read_cb2)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(mirage_state, mirage_via_write_porta)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mirage_state, mirage_via_write_portb)) + MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE("maincpu", m6809_device, irq_line)) MCFG_ACIA6850_ADD("acia6850", mirage_acia6850_interface) diff --git a/src/mess/drivers/oric.c b/src/mess/drivers/oric.c index d008cc29594..db3423891d8 100644 --- a/src/mess/drivers/oric.c +++ b/src/mess/drivers/oric.c @@ -406,7 +406,16 @@ static MACHINE_CONFIG_START( oric, oric_state ) MCFG_CASSETTE_ADD( "cassette", oric_cassette_interface ) /* via */ - MCFG_VIA6522_ADD( "via6522_0", 1000000, oric_6522_interface ) + MCFG_DEVICE_ADD( "via6522_0", VIA6522, 1000000 ) + MCFG_VIA6522_READPA_HANDLER(READ8(oric_state, oric_via_in_a_func)) + MCFG_VIA6522_READPB_HANDLER(READ8(oric_state, oric_via_in_b_func)) + MCFG_VIA6522_READCA2_HANDLER(READLINE(oric_state, oric_via_in_ca2_func)) + MCFG_VIA6522_READCB2_HANDLER(READLINE(oric_state, oric_via_in_cb2_func)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(oric_state, oric_via_out_a_func)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(oric_state, oric_via_out_b_func)) + MCFG_VIA6522_CA2_HANDLER(WRITELINE(oric_state, oric_via_out_ca2_func)) + MCFG_VIA6522_CB2_HANDLER(WRITELINE(oric_state, oric_via_out_cb2_func)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(oric_state, oric_via_irq_func)) MCFG_WD1770_ADD("wd179x", oric_wd17xx_interface ) @@ -428,7 +437,12 @@ static MACHINE_CONFIG_DERIVED( telstrat, oric ) MCFG_DEVICE_ADD("acia", MOS6551, XTAL_1_8432MHz) /* via */ - MCFG_VIA6522_ADD( "via6522_1", 1000000, telestrat_via2_interface ) + MCFG_DEVICE_ADD( "via6522_1", VIA6522, 1000000 ) + MCFG_VIA6522_READPA_HANDLER(READ8(oric_state, telestrat_via2_in_a_func)) + MCFG_VIA6522_READPB_HANDLER(READ8(oric_state, telestrat_via2_in_b_func)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(oric_state, telestrat_via2_out_a_func)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(oric_state, telestrat_via2_out_b_func)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(oric_state, telestrat_via2_irq_func)) MACHINE_CONFIG_END diff --git a/src/mess/drivers/pet.c b/src/mess/drivers/pet.c index 6c85d31fcaa..113ff5c3e2f 100644 --- a/src/mess/drivers/pet.c +++ b/src/mess/drivers/pet.c @@ -786,10 +786,6 @@ INPUT_PORTS_END // DEVICE CONFIGURATION //************************************************************************** -//------------------------------------------------- -// via6522_interface via_intf -//------------------------------------------------- - WRITE_LINE_MEMBER( pet_state::via_irq_w ) { m_via_irq = state; @@ -874,23 +870,6 @@ WRITE_LINE_MEMBER( pet_state::via_cb2_w ) m_user->cb2_w(state); } -const via6522_interface via_intf = -{ - DEVCB_DEVICE_MEMBER(PET_USER_PORT_TAG, pet_user_port_device, pa_r), - DEVCB_DRIVER_MEMBER(pet_state, via_pb_r), - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(PET_DATASSETTE_PORT2_TAG, pet_datassette_port_device, read), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(pet_state, via_pa_w), - DEVCB_DRIVER_MEMBER(pet_state, via_pb_w), - DEVCB_DEVICE_LINE_MEMBER(PET_USER_PORT_TAG, pet_user_port_device, ca1_w), - DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(pet_state, via_ca2_w), - DEVCB_DRIVER_LINE_MEMBER(pet_state, via_cb2_w), - DEVCB_DRIVER_LINE_MEMBER(pet_state, via_irq_w) -}; - //------------------------------------------------- // pia6821_interface pia1_intf @@ -1467,7 +1446,17 @@ static MACHINE_CONFIG_START( pet, pet_state ) MCFG_TIMER_DRIVER_ADD_PERIODIC("sync_timer", pet_state, sync_tick, attotime::from_hz(120)) // devices - MCFG_VIA6522_ADD(M6522_TAG, XTAL_8MHz/8, via_intf) + MCFG_DEVICE_ADD(M6522_TAG, VIA6522, XTAL_8MHz/8) + MCFG_VIA6522_READPA_HANDLER(DEVREAD8(PET_USER_PORT_TAG, pet_user_port_device, pa_r)) + MCFG_VIA6522_READPB_HANDLER(READ8(pet_state, via_pb_r)) + MCFG_VIA6522_READCB1_HANDLER(DEVREADLINE(PET_DATASSETTE_PORT2_TAG, pet_datassette_port_device, read)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(pet_state, via_pa_w)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(pet_state, via_pb_w)) + MCFG_VIA6522_CA1_HANDLER(DEVWRITELINE(PET_USER_PORT_TAG, pet_user_port_device, ca1_w)) + MCFG_VIA6522_CA2_HANDLER(WRITELINE(pet_state, via_ca2_w)) + MCFG_VIA6522_CB2_HANDLER(WRITELINE(pet_state, via_cb2_w)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(pet_state, via_irq_w)) + MCFG_PIA6821_ADD(M6520_1_TAG, pia1_intf) MCFG_PIA6821_ADD(M6520_2_TAG, pia2_intf) MCFG_CBM_IEEE488_ADD("c4040") @@ -1747,7 +1736,17 @@ static MACHINE_CONFIG_START( pet80, pet80_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) // devices - MCFG_VIA6522_ADD(M6522_TAG, XTAL_16MHz/16, via_intf) + MCFG_DEVICE_ADD(M6522_TAG, VIA6522, XTAL_16MHz/16) + MCFG_VIA6522_READPA_HANDLER(DEVREAD8(PET_USER_PORT_TAG, pet_user_port_device, pa_r)) + MCFG_VIA6522_READPB_HANDLER(READ8(pet_state, via_pb_r)) + MCFG_VIA6522_READCB1_HANDLER(DEVREADLINE(PET_DATASSETTE_PORT2_TAG, pet_datassette_port_device, read)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(pet_state, via_pa_w)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(pet_state, via_pb_w)) + MCFG_VIA6522_CA1_HANDLER(DEVWRITELINE(PET_USER_PORT_TAG, pet_user_port_device, ca1_w)) + MCFG_VIA6522_CA2_HANDLER(WRITELINE(pet_state, via_ca2_w)) + MCFG_VIA6522_CB2_HANDLER(WRITELINE(pet_state, via_cb2_w)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(pet_state, via_irq_w)) + MCFG_PIA6821_ADD(M6520_1_TAG, pia1_intf) MCFG_PIA6821_ADD(M6520_2_TAG, pia2_intf) MCFG_CBM_IEEE488_ADD("c8050") diff --git a/src/mess/drivers/rmnimbus.c b/src/mess/drivers/rmnimbus.c index 53631c1674d..6e14b28026c 100644 --- a/src/mess/drivers/rmnimbus.c +++ b/src/mess/drivers/rmnimbus.c @@ -331,7 +331,13 @@ static MACHINE_CONFIG_START( nimbus, rmnimbus_state ) MCFG_ER59256_ADD(ER59256_TAG) - MCFG_VIA6522_ADD(VIA_TAG, 1000000, nimbus_via) + MCFG_DEVICE_ADD(VIA_TAG, VIA6522, 1000000) + MCFG_VIA6522_READPB_HANDLER(READ8(rmnimbus_state,nimbus_via_read_portb)) + MCFG_VIA6522_WRITEPA_HANDLER(DEVWRITE8(CENTRONICS_TAG, centronics_device, write)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(rmnimbus_state,nimbus_via_write_portb)) + MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE(CENTRONICS_TAG, centronics_device, strobe_w)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(rmnimbus_state,nimbus_via_irq_w)) + MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, nimbus_centronics_config) /* sound hardware */ diff --git a/src/mess/drivers/ssystem3.c b/src/mess/drivers/ssystem3.c index 86c6ce6cd0d..d9e38149d7d 100644 --- a/src/mess/drivers/ssystem3.c +++ b/src/mess/drivers/ssystem3.c @@ -207,21 +207,6 @@ WRITE8_MEMBER(ssystem3_state::ssystem3_via_write_b) via_0->write_portb(space,0, d ); } -static const via6522_interface ssystem3_via_config= -{ - DEVCB_DRIVER_MEMBER(ssystem3_state,ssystem3_via_read_a),//read8_machine_func in_a_func; - DEVCB_DRIVER_MEMBER(ssystem3_state,ssystem3_via_read_b),//read8_machine_func in_b_func; - DEVCB_NULL,//read8_machine_func in_ca1_func; - DEVCB_NULL,//read8_machine_func in_cb1_func; - DEVCB_NULL,//read8_machine_func in_ca2_func; - DEVCB_NULL,//read8_machine_func in_cb2_func; - DEVCB_DRIVER_MEMBER(ssystem3_state,ssystem3_via_write_a),//write8_machine_func out_a_func; - DEVCB_DRIVER_MEMBER(ssystem3_state,ssystem3_via_write_b),//write8_machine_func out_b_func; - DEVCB_NULL,//write8_machine_func out_ca2_func; - DEVCB_NULL,//write8_machine_func out_cb2_func; - DEVCB_NULL,//void (*irq_func)(int state); -}; - DRIVER_INIT_MEMBER(ssystem3_state,ssystem3) { ssystem3_playfield_reset(); @@ -318,7 +303,11 @@ static MACHINE_CONFIG_START( ssystem3, ssystem3_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) /* via */ - MCFG_VIA6522_ADD("via6522_0", 0, ssystem3_via_config) + MCFG_DEVICE_ADD("via6522_0", VIA6522, 0) + MCFG_VIA6522_READPA_HANDLER(READ8(ssystem3_state,ssystem3_via_read_a)) + MCFG_VIA6522_READPB_HANDLER(READ8(ssystem3_state,ssystem3_via_read_b)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(ssystem3_state,ssystem3_via_write_a)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(ssystem3_state,ssystem3_via_write_b)) MACHINE_CONFIG_END diff --git a/src/mess/drivers/sym1.c b/src/mess/drivers/sym1.c index a4b270739ff..0d73847e484 100644 --- a/src/mess/drivers/sym1.c +++ b/src/mess/drivers/sym1.c @@ -301,57 +301,6 @@ void sym1_state::machine_reset() m_maincpu->reset(); } -const via6522_interface sym1_via0 = -{ - DEVCB_NULL, - DEVCB_UNMAPPED, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_UNMAPPED, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_CPU_INPUT_LINE("maincpu", M6502_IRQ_LINE) -}; - -const via6522_interface sym1_via1 = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_CPU_INPUT_LINE("maincpu", M6502_IRQ_LINE) -}; - -const via6522_interface sym1_via2 = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(sym1_state, sym1_via2_a_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_CPU_INPUT_LINE("maincpu", M6502_IRQ_LINE) -}; - //************************************************************************** // ADDRESS MAPS @@ -391,9 +340,16 @@ static MACHINE_CONFIG_START( sym1, sym1_state ) // devices MCFG_RIOT6532_ADD("riot", SYM1_CLOCK, sym1_r6532_interface) MCFG_TTL74145_ADD("ttl74145", sym1_ttl74145_intf) - MCFG_VIA6522_ADD("via6522_0", 0, sym1_via0) - MCFG_VIA6522_ADD("via6522_1", 0, sym1_via1) - MCFG_VIA6522_ADD("via6522_2", 0, sym1_via2) + + MCFG_DEVICE_ADD("via6522_0", VIA6522, 0) + MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE("maincpu", m6502_device, irq_line)) + + MCFG_DEVICE_ADD("via6522_1", VIA6522, 0) + MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE("maincpu", m6502_device, irq_line)) + + MCFG_DEVICE_ADD("via6522_2", VIA6522, 0) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(sym1_state, sym1_via2_a_w)) + MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE("maincpu", m6502_device, irq_line)) // internal ram MCFG_RAM_ADD(RAM_TAG) diff --git a/src/mess/drivers/vic20.c b/src/mess/drivers/vic20.c index a0c63cdeeef..47831bb7c9b 100644 --- a/src/mess/drivers/vic20.c +++ b/src/mess/drivers/vic20.c @@ -385,10 +385,6 @@ INPUT_PORTS_END // DEVICE CONFIGURATION //************************************************************************** -//------------------------------------------------- -// via6522_interface via1_intf -//------------------------------------------------- - READ8_MEMBER( vic20_state::via1_pa_r ) { /* @@ -452,27 +448,6 @@ WRITE8_MEMBER( vic20_state::via1_pa_w ) m_iec->atn_w(!BIT(data, 7)); } -static const via6522_interface via1_intf = -{ - DEVCB_DRIVER_MEMBER(vic20_state, via1_pa_r), - DEVCB_DEVICE_MEMBER(VIC20_USER_PORT_TAG, vic20_user_port_device, pb_r), - DEVCB_INPUT_PORT("RESTORE"), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(vic20_state, via1_pa_w), - DEVCB_DEVICE_MEMBER(VIC20_USER_PORT_TAG, vic20_user_port_device, pb_w), - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(VIC20_USER_PORT_TAG, vic20_user_port_device, cb1_w), - DEVCB_DEVICE_LINE_MEMBER(PET_DATASSETTE_PORT_TAG, pet_datassette_port_device, motor_w), - DEVCB_DEVICE_LINE_MEMBER(VIC20_USER_PORT_TAG, vic20_user_port_device, cb2_w), - DEVCB_CPU_INPUT_LINE(M6502_TAG, M6502_NMI_LINE) -}; - - -//------------------------------------------------- -// via6522_interface via2_intf -//------------------------------------------------- READ8_MEMBER( vic20_state::via2_pa_r ) { @@ -568,25 +543,6 @@ WRITE_LINE_MEMBER( vic20_state::via2_cb2_w ) m_iec->data_w(!state); } -static const via6522_interface via2_intf = -{ - DEVCB_DRIVER_MEMBER(vic20_state, via2_pa_r), - DEVCB_DRIVER_MEMBER(vic20_state, via2_pb_r), - DEVCB_DEVICE_LINE_MEMBER(PET_DATASSETTE_PORT_TAG, pet_datassette_port_device, read), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(vic20_state, via2_pb_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(vic20_state, via2_ca2_w), - DEVCB_DRIVER_LINE_MEMBER(vic20_state, via2_cb2_w), - - DEVCB_CPU_INPUT_LINE(M6502_TAG, M6502_IRQ_LINE) -}; - //------------------------------------------------- // VIC20_EXPANSION_INTERFACE( expansion_intf ) @@ -664,8 +620,26 @@ void vic20_state::machine_reset() static MACHINE_CONFIG_START( vic20, vic20_state ) // devices - MCFG_VIA6522_ADD(M6522_1_TAG, 0, via1_intf) - MCFG_VIA6522_ADD(M6522_2_TAG, 0, via2_intf) + MCFG_DEVICE_ADD(M6522_1_TAG, VIA6522, 0) + MCFG_VIA6522_READPA_HANDLER(READ8(vic20_state, via1_pa_r)) + MCFG_VIA6522_READPB_HANDLER(DEVREAD8(VIC20_USER_PORT_TAG, vic20_user_port_device, pb_r)) + MCFG_VIA6522_READCA1_HANDLER(IOPORT("RESTORE")) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(vic20_state, via1_pa_w)) + MCFG_VIA6522_WRITEPB_HANDLER(DEVWRITE8(VIC20_USER_PORT_TAG, vic20_user_port_device, pb_w)) + MCFG_VIA6522_CB1_HANDLER(DEVWRITELINE(VIC20_USER_PORT_TAG, vic20_user_port_device, cb1_w)) + MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE(PET_DATASSETTE_PORT_TAG, pet_datassette_port_device, motor_w)) + MCFG_VIA6522_CB2_HANDLER(DEVWRITELINE(VIC20_USER_PORT_TAG, vic20_user_port_device, cb2_w)) + MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE(M6502_TAG, m6502_device, nmi_line)) + + MCFG_DEVICE_ADD(M6522_2_TAG, VIA6522, 0) + MCFG_VIA6522_READPA_HANDLER(READ8(vic20_state, via2_pa_r)) + MCFG_VIA6522_READPB_HANDLER(READ8(vic20_state, via2_pb_r)) + MCFG_VIA6522_READCA1_HANDLER(DEVREADLINE(PET_DATASSETTE_PORT_TAG, pet_datassette_port_device, read)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(vic20_state, via2_pb_w)) + MCFG_VIA6522_CA2_HANDLER(WRITELINE(vic20_state, via2_ca2_w)) + MCFG_VIA6522_CB2_HANDLER(WRITELINE(vic20_state, via2_cb2_w)) + MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE(M6502_TAG, m6502_device, irq_line)) + MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, cbm_datassette_devices, "c1530", DEVWRITELINE(M6522_2_TAG, via6522_device, write_ca1)) MCFG_CBM_IEC_ADD("c1541") MCFG_CBM_IEC_BUS_SRQ_CALLBACK(DEVWRITELINE(M6522_2_TAG, via6522_device, write_cb1)) diff --git a/src/mess/drivers/victor9k.c b/src/mess/drivers/victor9k.c index 125b5054e7d..fb70a408993 100644 --- a/src/mess/drivers/victor9k.c +++ b/src/mess/drivers/victor9k.c @@ -422,10 +422,6 @@ static MC6852_INTERFACE( ssda_intf ) }; -//------------------------------------------------- -// via6522_interface via1_intf -//------------------------------------------------- - WRITE8_MEMBER( victor9k_state::via1_pa_w ) { /* @@ -517,29 +513,6 @@ WRITE_LINE_MEMBER( victor9k_state::via1_irq_w ) m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_via4_irq || m_via5_irq || m_via6_irq); } -static const via6522_interface via1_intf = -{ - DEVCB_DEVICE_MEMBER(IEEE488_TAG, ieee488_device, dio_r), - DEVCB_DRIVER_MEMBER(victor9k_state, via1_pb_r), - DEVCB_DEVICE_LINE_MEMBER(IEEE488_TAG, ieee488_device, nrfd_r), - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(IEEE488_TAG, ieee488_device, ndac_r), - DEVCB_NULL, - - DEVCB_DRIVER_MEMBER(victor9k_state, via1_pa_w), - DEVCB_DRIVER_MEMBER(victor9k_state, via1_pb_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(victor9k_state, codec_vol_w), - - DEVCB_DRIVER_LINE_MEMBER(victor9k_state, via1_irq_w) -}; - - -//------------------------------------------------- -// via6522_interface via2_intf -//------------------------------------------------- READ8_MEMBER( victor9k_state::via2_pa_r ) { @@ -627,29 +600,6 @@ WRITE_LINE_MEMBER( victor9k_state::via2_irq_w ) m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_via4_irq || m_via5_irq || m_via6_irq); } -static const via6522_interface via2_intf = -{ - DEVCB_DRIVER_MEMBER(victor9k_state, via2_pa_r), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(VICTOR9K_KEYBOARD_TAG, victor9k_keyboard_device, kbrdy_r), - DEVCB_NULL, // SRQ/BUSY - DEVCB_DEVICE_LINE_MEMBER(VICTOR9K_KEYBOARD_TAG, victor9k_keyboard_device, kbdata_r), - - DEVCB_DRIVER_MEMBER(victor9k_state, via2_pa_w), - DEVCB_DRIVER_MEMBER(victor9k_state, via2_pb_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_DRIVER_LINE_MEMBER(victor9k_state, via2_irq_w) -}; - - -//------------------------------------------------- -// via6522_interface via3_intf -//------------------------------------------------- READ8_MEMBER( victor9k_state::via3_pa_r ) { @@ -738,29 +688,6 @@ WRITE_LINE_MEMBER( victor9k_state::via3_irq_w ) m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_via4_irq || m_via5_irq || m_via6_irq); } -static const via6522_interface via3_intf = -{ - DEVCB_DRIVER_MEMBER(victor9k_state, via3_pa_r), - DEVCB_DRIVER_MEMBER(victor9k_state, via3_pb_r), - DEVCB_NULL, // J5-12 - DEVCB_NULL, // J5-48 - DEVCB_NULL, // J5-14 - DEVCB_NULL, // J5-50 - - DEVCB_DRIVER_MEMBER(victor9k_state, via3_pa_w), - DEVCB_DRIVER_MEMBER(victor9k_state, via3_pb_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_DRIVER_LINE_MEMBER(victor9k_state, via3_irq_w) -}; - - -//------------------------------------------------- -// via6522_interface via4_intf -//------------------------------------------------- WRITE8_MEMBER( victor9k_state::via4_pa_w ) { @@ -825,29 +752,6 @@ WRITE_LINE_MEMBER( victor9k_state::via4_irq_w ) m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_via4_irq || m_via5_irq || m_via6_irq); } -static const via6522_interface via4_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(victor9k_state, ds0_r), - DEVCB_DRIVER_LINE_MEMBER(victor9k_state, ds1_r), - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_DRIVER_MEMBER(victor9k_state, via4_pa_w), - DEVCB_DRIVER_MEMBER(victor9k_state, via4_pb_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(victor9k_state, mode_w), - DEVCB_NULL, - - DEVCB_DRIVER_LINE_MEMBER(victor9k_state, via4_irq_w) -}; - - -//------------------------------------------------- -// via6522_interface via5_intf -//------------------------------------------------- READ8_MEMBER( victor9k_state::via5_pa_r ) { @@ -909,29 +813,6 @@ WRITE_LINE_MEMBER( victor9k_state::via5_irq_w ) m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_via4_irq || m_via5_irq || m_via6_irq); } -static const via6522_interface via5_intf = -{ - DEVCB_DRIVER_MEMBER(victor9k_state, via5_pa_r), - DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(victor9k_state, brdy_r), - DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(victor9k_state, rdy0_r), - DEVCB_DRIVER_LINE_MEMBER(victor9k_state, rdy1_r), - - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(victor9k_state, via5_pb_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_DRIVER_LINE_MEMBER(victor9k_state, via5_irq_w) -}; - - -//------------------------------------------------- -// via6522_interface via1_intf -//------------------------------------------------- READ8_MEMBER( victor9k_state::via6_pa_r ) { @@ -1082,25 +963,6 @@ WRITE_LINE_MEMBER( victor9k_state::via6_irq_w ) m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_via4_irq || m_via5_irq || m_via6_irq); } -static const via6522_interface via6_intf = -{ - DEVCB_DRIVER_MEMBER(victor9k_state, via6_pa_r), - DEVCB_DRIVER_MEMBER(victor9k_state, via6_pb_r), - DEVCB_DRIVER_LINE_MEMBER(victor9k_state, gcrerr_r), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - - DEVCB_DRIVER_MEMBER(victor9k_state, via6_pa_w), - DEVCB_DRIVER_MEMBER(victor9k_state, via6_pb_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(victor9k_state, drw_w), - DEVCB_DRIVER_LINE_MEMBER(victor9k_state, erase_w), - - DEVCB_DRIVER_LINE_MEMBER(victor9k_state, via6_irq_w) -}; - //------------------------------------------------- // VICTOR9K_KEYBOARD_INTERFACE( kb_intf ) @@ -1239,12 +1101,62 @@ static MACHINE_CONFIG_START( victor9k, victor9k_state ) MCFG_PIT8253_ADD(I8253_TAG, pit_intf) MCFG_UPD7201_ADD(UPD7201_TAG, XTAL_30MHz/30, mpsc_intf) MCFG_MC6852_ADD(MC6852_TAG, XTAL_30MHz/30, ssda_intf) - MCFG_VIA6522_ADD(M6522_1_TAG, XTAL_30MHz/30, via1_intf) - MCFG_VIA6522_ADD(M6522_2_TAG, XTAL_30MHz/30, via2_intf) - MCFG_VIA6522_ADD(M6522_3_TAG, XTAL_30MHz/30, via3_intf) - MCFG_VIA6522_ADD(M6522_4_TAG, XTAL_30MHz/30, via4_intf) - MCFG_VIA6522_ADD(M6522_5_TAG, XTAL_30MHz/30, via5_intf) - MCFG_VIA6522_ADD(M6522_6_TAG, XTAL_30MHz/30, via6_intf) + + MCFG_DEVICE_ADD(M6522_1_TAG, VIA6522, XTAL_30MHz/30) + MCFG_VIA6522_READPA_HANDLER(DEVREAD8(IEEE488_TAG, ieee488_device, dio_r)) + MCFG_VIA6522_READPB_HANDLER(READ8(victor9k_state, via1_pb_r)) + MCFG_VIA6522_READCA1_HANDLER(DEVREADLINE(IEEE488_TAG, ieee488_device, nrfd_r)) + MCFG_VIA6522_READCA2_HANDLER(DEVREADLINE(IEEE488_TAG, ieee488_device, ndac_r)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(victor9k_state, via1_pa_w)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(victor9k_state, via1_pb_w)) + MCFG_VIA6522_CB2_HANDLER(WRITELINE(victor9k_state, codec_vol_w)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(victor9k_state, via1_irq_w)) + + MCFG_DEVICE_ADD(M6522_2_TAG, VIA6522, XTAL_30MHz/30) + MCFG_VIA6522_READPA_HANDLER(READ8(victor9k_state, via2_pa_r)) + MCFG_VIA6522_READCB1_HANDLER(DEVREADLINE(VICTOR9K_KEYBOARD_TAG, victor9k_keyboard_device, kbrdy_r)) + MCFG_VIA6522_READCB2_HANDLER(DEVREADLINE(VICTOR9K_KEYBOARD_TAG, victor9k_keyboard_device, kbdata_r)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(victor9k_state, via2_pa_w)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(victor9k_state, via2_pb_w)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(victor9k_state, via2_irq_w)) + + MCFG_DEVICE_ADD(M6522_3_TAG, VIA6522, XTAL_30MHz/30) + MCFG_VIA6522_READPA_HANDLER(READ8(victor9k_state, via3_pa_r)) + MCFG_VIA6522_READPB_HANDLER(READ8(victor9k_state, via3_pb_r)) + // CA1 J5-12 + // CB1 J5-48 + // CA2 J5-14 + // CB2 J5-50 + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(victor9k_state, via3_pa_w)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(victor9k_state, via3_pb_w)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(victor9k_state, via3_irq_w)) + + MCFG_DEVICE_ADD(M6522_4_TAG, VIA6522, XTAL_30MHz/30) + MCFG_VIA6522_READCA1_HANDLER(READLINE(victor9k_state, ds0_r)) + MCFG_VIA6522_READCB1_HANDLER(READLINE(victor9k_state, ds1_r)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(victor9k_state, via4_pa_w)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(victor9k_state, via4_pb_w)) + MCFG_VIA6522_CA2_HANDLER(WRITELINE(victor9k_state, mode_w)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(victor9k_state, via4_irq_w)) + + MCFG_DEVICE_ADD(M6522_5_TAG, VIA6522, XTAL_30MHz/30) + MCFG_VIA6522_READPA_HANDLER(READ8(victor9k_state, via5_pa_r)) + MCFG_VIA6522_READCA1_HANDLER(READLINE(victor9k_state, brdy_r)) + MCFG_VIA6522_READCA2_HANDLER(READLINE(victor9k_state, rdy0_r)) + MCFG_VIA6522_READCB2_HANDLER(READLINE(victor9k_state, rdy1_r)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(victor9k_state, via5_pb_w)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(victor9k_state, via5_irq_w)) + + MCFG_DEVICE_ADD(M6522_6_TAG, VIA6522, XTAL_30MHz/30) + MCFG_VIA6522_READPA_HANDLER(READ8(victor9k_state, via6_pa_r)) + MCFG_VIA6522_READPB_HANDLER(READ8(victor9k_state, via6_pb_r)) + MCFG_VIA6522_READCA1_HANDLER(READLINE(victor9k_state, gcrerr_r)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(victor9k_state, via6_pa_w)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(victor9k_state, via6_pb_w)) + MCFG_VIA6522_CA2_HANDLER(WRITELINE(victor9k_state, drw_w)) + MCFG_VIA6522_CB2_HANDLER(WRITELINE(victor9k_state, erase_w)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(victor9k_state, via6_irq_w)) + MCFG_FLOPPY_DRIVE_ADD(I8048_TAG":0", victor9k_floppies, "525qd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(I8048_TAG":1", victor9k_floppies, "525qd", floppy_image_device::default_floppy_formats) diff --git a/src/mess/drivers/wicat.c b/src/mess/drivers/wicat.c index ca4f05453c1..05f02bdfe87 100644 --- a/src/mess/drivers/wicat.c +++ b/src/mess/drivers/wicat.c @@ -767,23 +767,6 @@ struct im6402_interface wicat_video_uart_intf = DEVCB_NULL, //m_out_tre_cb; }; -static via6522_interface wicat_via_intf = -{ - DEVCB_DRIVER_MEMBER(wicat_state,via_a_r), // Port A in - DEVCB_DRIVER_MEMBER(wicat_state,via_b_r), // Port B in - DEVCB_NULL, // CA1 in - DEVCB_NULL, // CB1 in - DEVCB_NULL, // CA2 in - DEVCB_NULL, // CB2 in - DEVCB_DRIVER_MEMBER(wicat_state,via_a_w), // Port A out - DEVCB_DRIVER_MEMBER(wicat_state,via_b_w), // Port B out - DEVCB_NULL, // CA1 out - DEVCB_NULL, // CB1 out - DEVCB_NULL, // CA2 out - DEVCB_NULL, // CB2 out - DEVCB_CPU_INPUT_LINE("maincpu", M68K_IRQ_1) // IRQ -}; - static mm58274c_interface wicat_rtc_intf = { 0, // 12 hour @@ -808,7 +791,12 @@ static MACHINE_CONFIG_START( wicat, wicat_state ) MCFG_CPU_ADD("maincpu", M68000, XTAL_8MHz) MCFG_CPU_PROGRAM_MAP(wicat_mem) - MCFG_VIA6522_ADD("via",XTAL_4MHz,wicat_via_intf) + MCFG_DEVICE_ADD("via", VIA6522, XTAL_4MHz) + MCFG_VIA6522_READPA_HANDLER(READ8(wicat_state, via_a_r)) + MCFG_VIA6522_READPB_HANDLER(READ8(wicat_state, via_b_r)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(wicat_state, via_a_w)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(wicat_state, via_b_w)) + MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE("maincpu", m68000_device, write_irq1)) MCFG_MM58274C_ADD("rtc",wicat_rtc_intf) // actually an MM58174AN, but should be compatible diff --git a/src/mess/includes/apple3.h b/src/mess/includes/apple3.h index 1ee5ce924cf..f283f0c1f99 100644 --- a/src/mess/includes/apple3.h +++ b/src/mess/includes/apple3.h @@ -90,7 +90,5 @@ public: /*----------- defined in machine/apple3.c -----------*/ extern const applefdc_interface apple3_fdc_interface; -extern const via6522_interface apple3_via_0_intf; -extern const via6522_interface apple3_via_1_intf; #endif /* APPLE3_H_ */ diff --git a/src/mess/includes/bbc.h b/src/mess/includes/bbc.h index 1031d71ed3e..0e81221c5b4 100644 --- a/src/mess/includes/bbc.h +++ b/src/mess/includes/bbc.h @@ -332,10 +332,10 @@ public: DECLARE_WRITE8_MEMBER(bbcb_via_system_write_portb); DECLARE_READ8_MEMBER(bbcb_via_system_read_porta); DECLARE_READ8_MEMBER(bbcb_via_system_read_portb); - DECLARE_READ8_MEMBER(bbcb_via_system_read_ca1); - DECLARE_READ8_MEMBER(bbcb_via_system_read_cb1); - DECLARE_READ8_MEMBER(bbcb_via_system_read_ca2); - DECLARE_READ8_MEMBER(bbcb_via_system_read_cb2); + DECLARE_READ_LINE_MEMBER(bbcb_via_system_read_ca1); + DECLARE_READ_LINE_MEMBER(bbcb_via_system_read_cb1); + DECLARE_READ_LINE_MEMBER(bbcb_via_system_read_ca2); + DECLARE_READ_LINE_MEMBER(bbcb_via_system_read_cb2); DECLARE_WRITE_LINE_MEMBER(bbcb_via_system_irq_w); DECLARE_READ8_MEMBER(bbcb_via_user_read_portb); DECLARE_WRITE8_MEMBER(bbcb_via_user_write_portb); @@ -399,9 +399,6 @@ public: extern const mc6845_interface bbc_mc6845_intf; -extern const via6522_interface bbcb_system_via; -extern const via6522_interface bbcb_user_via; - extern const i8271_interface bbc_i8271_interface; extern const wd17xx_interface bbc_wd17xx_interface; diff --git a/src/mess/includes/concept.h b/src/mess/includes/concept.h index 7f79c18887f..b2366cd5629 100644 --- a/src/mess/includes/concept.h +++ b/src/mess/includes/concept.h @@ -65,15 +65,11 @@ public: DECLARE_WRITE8_MEMBER(via_out_a); DECLARE_READ8_MEMBER(via_in_b); DECLARE_WRITE8_MEMBER(via_out_b); - DECLARE_WRITE8_MEMBER(via_out_cb2); + DECLARE_WRITE_LINE_MEMBER(via_out_cb2); + DECLARE_WRITE_LINE_MEMBER(via_irq_func); void concept_set_interrupt(int level, int state); inline void post_in_KeyQueue(int keycode); void poll_keyboard(); }; - -/*----------- defined in machine/concept.c -----------*/ - -extern const via6522_interface concept_via6522_intf; - #endif /* CONCEPT_H_ */ diff --git a/src/mess/includes/lisa.h b/src/mess/includes/lisa.h index b31f1af6326..7afbccdb4dc 100644 --- a/src/mess/includes/lisa.h +++ b/src/mess/includes/lisa.h @@ -206,10 +206,10 @@ public: TIMER_CALLBACK_MEMBER(read_COPS_command); TIMER_CALLBACK_MEMBER(set_COPS_ready); DECLARE_WRITE8_MEMBER(COPS_via_out_a); - DECLARE_WRITE8_MEMBER(COPS_via_out_ca2); + DECLARE_WRITE_LINE_MEMBER(COPS_via_out_ca2); DECLARE_READ8_MEMBER(COPS_via_in_b); DECLARE_WRITE8_MEMBER(COPS_via_out_b); - DECLARE_WRITE8_MEMBER(COPS_via_out_cb2); + DECLARE_WRITE_LINE_MEMBER(COPS_via_out_cb2); DECLARE_READ8_MEMBER(parallel_via_in_b); void field_interrupts(); @@ -231,9 +231,6 @@ public: /*----------- defined in machine/lisa.c -----------*/ -extern const via6522_interface lisa_via6522_0_intf; -extern const via6522_interface lisa_via6522_1_intf; - extern NVRAM_HANDLER(lisa); diff --git a/src/mess/includes/mac.h b/src/mess/includes/mac.h index b223a661ebc..92f0cd4261b 100644 --- a/src/mess/includes/mac.h +++ b/src/mess/includes/mac.h @@ -142,10 +142,6 @@ enum model_t /*----------- defined in machine/mac.c -----------*/ -extern const via6522_interface mac_via6522_intf; -extern const via6522_interface mac_via6522_2_intf; -extern const via6522_interface mac_via6522_adb_intf; - void mac_fdc_set_enable_lines(device_t *device, int enable_mask); /*----------- defined in audio/mac.c -----------*/ @@ -512,10 +508,10 @@ public: TIMER_CALLBACK_MEMBER(mac_scanline_tick); TIMER_CALLBACK_MEMBER(dafb_vbl_tick); TIMER_CALLBACK_MEMBER(dafb_cursor_tick); - DECLARE_READ8_MEMBER(mac_via_in_cb2); - DECLARE_WRITE8_MEMBER(mac_via_out_cb2); - DECLARE_READ8_MEMBER(mac_adb_via_in_cb2); - DECLARE_WRITE8_MEMBER(mac_adb_via_out_cb2); + DECLARE_READ_LINE_MEMBER(mac_via_in_cb2); + DECLARE_WRITE_LINE_MEMBER(mac_via_out_cb2); + DECLARE_READ_LINE_MEMBER(mac_adb_via_in_cb2); + DECLARE_WRITE_LINE_MEMBER(mac_adb_via_out_cb2); DECLARE_READ8_MEMBER(mac_via_in_a); DECLARE_READ8_MEMBER(mac_via_in_b); DECLARE_WRITE8_MEMBER(mac_via_out_a); diff --git a/src/mess/includes/macpci.h b/src/mess/includes/macpci.h index 8fbb1f7e6f4..95d1d92ee12 100644 --- a/src/mess/includes/macpci.h +++ b/src/mess/includes/macpci.h @@ -68,10 +68,6 @@ enum model_t }; -/*----------- defined in machine/pcimac.c -----------*/ - -extern const via6522_interface pcimac_via6522_intf; - /* Mac driver data */ @@ -162,8 +158,8 @@ public: DECLARE_READ8_MEMBER(mac_via_in_b); DECLARE_WRITE8_MEMBER(mac_via_out_a); DECLARE_WRITE8_MEMBER(mac_via_out_b); - DECLARE_READ8_MEMBER(mac_adb_via_in_cb2); - DECLARE_WRITE8_MEMBER(mac_adb_via_out_cb2); + DECLARE_READ_LINE_MEMBER(mac_adb_via_in_cb2); + DECLARE_WRITE_LINE_MEMBER(mac_adb_via_out_cb2); DECLARE_WRITE_LINE_MEMBER(mac_via_irq); void mac_driver_init(model_t model); }; diff --git a/src/mess/includes/microtan.h b/src/mess/includes/microtan.h index f19d4f1c4f7..b68bffd5591 100644 --- a/src/mess/includes/microtan.h +++ b/src/mess/includes/microtan.h @@ -65,24 +65,24 @@ public: TIMER_CALLBACK_MEMBER(microtan_pulse_nmi); DECLARE_READ8_MEMBER(via_0_in_a); DECLARE_READ8_MEMBER(via_0_in_b); - DECLARE_READ8_MEMBER(via_0_in_ca1); - DECLARE_READ8_MEMBER(via_0_in_cb1); - DECLARE_READ8_MEMBER(via_0_in_ca2); - DECLARE_READ8_MEMBER(via_0_in_cb2); + DECLARE_READ_LINE_MEMBER(via_0_in_ca1); + DECLARE_READ_LINE_MEMBER(via_0_in_cb1); + DECLARE_READ_LINE_MEMBER(via_0_in_ca2); + DECLARE_READ_LINE_MEMBER(via_0_in_cb2); DECLARE_WRITE8_MEMBER(via_0_out_a); DECLARE_WRITE8_MEMBER(via_0_out_b); - DECLARE_WRITE8_MEMBER(via_0_out_ca2); - DECLARE_WRITE8_MEMBER(via_0_out_cb2); + DECLARE_WRITE_LINE_MEMBER(via_0_out_ca2); + DECLARE_WRITE_LINE_MEMBER(via_0_out_cb2); DECLARE_READ8_MEMBER(via_1_in_a); DECLARE_READ8_MEMBER(via_1_in_b); - DECLARE_READ8_MEMBER(via_1_in_ca1); - DECLARE_READ8_MEMBER(via_1_in_cb1); - DECLARE_READ8_MEMBER(via_1_in_ca2); - DECLARE_READ8_MEMBER(via_1_in_cb2); + DECLARE_READ_LINE_MEMBER(via_1_in_ca1); + DECLARE_READ_LINE_MEMBER(via_1_in_cb1); + DECLARE_READ_LINE_MEMBER(via_1_in_ca2); + DECLARE_READ_LINE_MEMBER(via_1_in_cb2); DECLARE_WRITE8_MEMBER(via_1_out_a); DECLARE_WRITE8_MEMBER(via_1_out_b); - DECLARE_WRITE8_MEMBER(via_1_out_ca2); - DECLARE_WRITE8_MEMBER(via_1_out_cb2); + DECLARE_WRITE_LINE_MEMBER(via_1_out_ca2); + DECLARE_WRITE_LINE_MEMBER(via_1_out_cb2); DECLARE_WRITE_LINE_MEMBER(via_0_irq); DECLARE_WRITE_LINE_MEMBER(via_1_irq); required_device<cpu_device> m_maincpu; @@ -102,9 +102,4 @@ protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); }; - -/*----------- defined in machine/microtan.c -----------*/ - -extern const via6522_interface microtan_via6522_0; -extern const via6522_interface microtan_via6522_1; #endif /* MICROTAN_H_ */ diff --git a/src/mess/includes/oric.h b/src/mess/includes/oric.h index 2f5991691ab..972c7b54b3b 100644 --- a/src/mess/includes/oric.h +++ b/src/mess/includes/oric.h @@ -136,10 +136,10 @@ public: DECLARE_READ8_MEMBER(oric_via_in_b_func); DECLARE_WRITE8_MEMBER(oric_via_out_a_func); DECLARE_WRITE8_MEMBER(oric_via_out_b_func); - DECLARE_READ8_MEMBER(oric_via_in_ca2_func); - DECLARE_READ8_MEMBER(oric_via_in_cb2_func); - DECLARE_WRITE8_MEMBER(oric_via_out_ca2_func); - DECLARE_WRITE8_MEMBER(oric_via_out_cb2_func); + DECLARE_READ_LINE_MEMBER(oric_via_in_ca2_func); + DECLARE_READ_LINE_MEMBER(oric_via_in_cb2_func); + DECLARE_WRITE_LINE_MEMBER(oric_via_out_ca2_func); + DECLARE_WRITE_LINE_MEMBER(oric_via_out_cb2_func); DECLARE_WRITE_LINE_MEMBER(oric_jasmin_wd179x_drq_w); DECLARE_WRITE_LINE_MEMBER(oric_microdisc_wd179x_intrq_w); DECLARE_WRITE_LINE_MEMBER(oric_microdisc_wd179x_drq_w); @@ -198,8 +198,6 @@ protected: }; /*----------- defined in machine/oric.c -----------*/ -extern const via6522_interface oric_6522_interface; -extern const via6522_interface telestrat_via2_interface; extern const wd17xx_interface oric_wd17xx_interface; #endif /* ORIC_H_ */ diff --git a/src/mess/includes/rmnimbus.h b/src/mess/includes/rmnimbus.h index 6b6e6892d19..eeda186bb34 100644 --- a/src/mess/includes/rmnimbus.h +++ b/src/mess/includes/rmnimbus.h @@ -369,8 +369,6 @@ enum #define VIA_INT 0x03 -extern const via6522_interface nimbus_via; - /*----------- defined in video/rmnimbus.c -----------*/ diff --git a/src/mess/machine/apple3.c b/src/mess/machine/apple3.c index 35925a3a649..397bf5fc3e5 100644 --- a/src/mess/machine/apple3.c +++ b/src/mess/machine/apple3.c @@ -498,40 +498,6 @@ WRITE_LINE_MEMBER(apple3_state::apple2_via_1_irq_func) m_via_1_irq = state; } -const via6522_interface apple3_via_0_intf = -{ - DEVCB_NULL, /* in_a_func */ - DEVCB_NULL, /* in_b_func */ - DEVCB_NULL, /* in_ca1_func */ - DEVCB_NULL, /* in_cb1_func */ - DEVCB_NULL, /* in_ca2_func */ - DEVCB_NULL, /* in_cb2_func */ - DEVCB_DRIVER_MEMBER(apple3_state,apple3_via_0_out_a), /* out_a_func */ - DEVCB_DRIVER_MEMBER(apple3_state,apple3_via_0_out_b), /* out_b_func */ - DEVCB_NULL, /* out_ca1_func */ - DEVCB_NULL, /* out_cb1_func */ - DEVCB_NULL, /* out_ca2_func */ - DEVCB_NULL, /* out_cb2_func */ - DEVCB_NULL /* irq_func */ -}; - -const via6522_interface apple3_via_1_intf = -{ - DEVCB_DRIVER_MEMBER(apple3_state,apple3_via_1_in_a), /* in_a_func */ - DEVCB_DRIVER_MEMBER(apple3_state,apple3_via_1_in_b), /* in_b_func */ - DEVCB_NULL, /* in_ca1_func */ - DEVCB_NULL, /* in_cb1_func */ - DEVCB_NULL, /* in_ca2_func */ - DEVCB_NULL, /* in_cb2_func */ - DEVCB_DRIVER_MEMBER(apple3_state,apple3_via_1_out_a), /* out_a_func */ - DEVCB_DRIVER_MEMBER(apple3_state,apple3_via_1_out_b), /* out_b_func */ - DEVCB_NULL, /* out_ca1_func */ - DEVCB_NULL, /* out_cb1_func */ - DEVCB_NULL, /* out_ca2_func */ - DEVCB_NULL, /* out_cb2_func */ - DEVCB_DRIVER_LINE_MEMBER(apple3_state,apple2_via_1_irq_func) /* irq_func */ -}; - MACHINE_RESET_MEMBER(apple3_state,apple3) diff --git a/src/mess/machine/bbc.c b/src/mess/machine/bbc.c index d78be75bced..32e6d885e78 100644 --- a/src/mess/machine/bbc.c +++ b/src/mess/machine/bbc.c @@ -1158,28 +1158,28 @@ READ8_MEMBER(bbc_state::bbcb_via_system_read_portb) /* vertical sync pulse from video circuit */ -READ8_MEMBER(bbc_state::bbcb_via_system_read_ca1) +READ_LINE_MEMBER(bbc_state::bbcb_via_system_read_ca1) { return 0x01; } /* joystick EOC */ -READ8_MEMBER(bbc_state::bbcb_via_system_read_cb1) +READ_LINE_MEMBER(bbc_state::bbcb_via_system_read_cb1) { - return uPD7002_EOC_r(machine().device("upd7002"), space, 0); + return uPD7002_EOC_r(machine().device("upd7002"), generic_space(), 0); } /* keyboard pressed detect */ -READ8_MEMBER(bbc_state::bbcb_via_system_read_ca2) +READ_LINE_MEMBER(bbc_state::bbcb_via_system_read_ca2) { return 0x01; } /* light pen strobe detect (not emulated) */ -READ8_MEMBER(bbc_state::bbcb_via_system_read_cb2) +READ_LINE_MEMBER(bbc_state::bbcb_via_system_read_cb2) { return 0x01; } @@ -1192,24 +1192,6 @@ WRITE_LINE_MEMBER(bbc_state::bbcb_via_system_irq_w) check_interrupts(); } -const via6522_interface bbcb_system_via = -{ - DEVCB_DRIVER_MEMBER(bbc_state,bbcb_via_system_read_porta), - DEVCB_DRIVER_MEMBER(bbc_state,bbcb_via_system_read_portb), - DEVCB_DRIVER_MEMBER(bbc_state,bbcb_via_system_read_ca1), - DEVCB_DRIVER_MEMBER(bbc_state,bbcb_via_system_read_cb1), - DEVCB_DRIVER_MEMBER(bbc_state,bbcb_via_system_read_ca2), - DEVCB_DRIVER_MEMBER(bbc_state,bbcb_via_system_read_cb2), - DEVCB_DRIVER_MEMBER(bbc_state,bbcb_via_system_write_porta), - DEVCB_DRIVER_MEMBER(bbc_state,bbcb_via_system_write_portb), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(bbc_state,bbcb_via_system_irq_w) -}; - - /********************************************************************** USER VIA Port A output is buffered before being connected to the printer connector. @@ -1237,23 +1219,6 @@ WRITE_LINE_MEMBER(bbc_state::bbcb_via_user_irq_w) check_interrupts(); } -const via6522_interface bbcb_user_via = -{ - DEVCB_NULL, //via_user_read_porta, - DEVCB_DRIVER_MEMBER(bbc_state,bbcb_via_user_read_portb), - DEVCB_NULL, //via_user_read_ca1, - DEVCB_NULL, //via_user_read_cb1, - DEVCB_NULL, //via_user_read_ca2, - DEVCB_NULL, //via_user_read_cb2, - DEVCB_DEVICE_MEMBER("centronics", centronics_device, write), - DEVCB_DRIVER_MEMBER(bbc_state,bbcb_via_user_write_portb), - DEVCB_NULL, //via_user_write_ca1 - DEVCB_NULL, //via_user_write_cb1 - DEVCB_DEVICE_LINE_MEMBER("centronics", centronics_device, strobe_w), - DEVCB_NULL, //via_user_write_cb2, - DEVCB_DRIVER_LINE_MEMBER(bbc_state,bbcb_via_user_irq_w) -}; - /************************************** BBC Joystick Support diff --git a/src/mess/machine/concept.c b/src/mess/machine/concept.c index d8656b53faa..78f4ddc2f71 100644 --- a/src/mess/machine/concept.c +++ b/src/mess/machine/concept.c @@ -33,19 +33,7 @@ enum /*static int ready;*/ /* ready line from monochip, role unknown */ /* Via */ -static void via_irq_func(device_t *device, int state); - - -const via6522_interface concept_via6522_intf = -{ /* main via */ - DEVCB_DRIVER_MEMBER(concept_state,via_in_a), DEVCB_DRIVER_MEMBER(concept_state,via_in_b), - DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_NULL, - DEVCB_DRIVER_MEMBER(concept_state,via_out_a), DEVCB_DRIVER_MEMBER(concept_state,via_out_b), - DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_DRIVER_MEMBER(concept_state,via_out_cb2), - DEVCB_LINE(via_irq_func) -}; + void concept_state::machine_start() { @@ -223,18 +211,17 @@ WRITE8_MEMBER(concept_state::via_out_b) /* VIA CB2: used as sound output */ -WRITE8_MEMBER(concept_state::via_out_cb2) +WRITE_LINE_MEMBER(concept_state::via_out_cb2) { - LOG(("via_out_cb2: Sound control written: data=0x%2.2x\n", data)); + LOG(("via_out_cb2: Sound control written: data=0x%2.2x\n", state)); } /* VIA irq -> 68k level 5 */ -static void via_irq_func(device_t *device, int state) +WRITE_LINE_MEMBER(concept_state::via_irq_func) { - concept_state *drvstate = device->machine().driver_data<concept_state>(); - drvstate->concept_set_interrupt(TIMINT_level, state); + concept_set_interrupt(TIMINT_level, state); } READ16_MEMBER(concept_state::concept_io_r) diff --git a/src/mess/machine/lisa.c b/src/mess/machine/lisa.c index e836ff5ce8c..d3647029f07 100644 --- a/src/mess/machine/lisa.c +++ b/src/mess/machine/lisa.c @@ -85,29 +85,6 @@ the drive type (TWIGGY or 3.5'')) */ a hard disk */ -const via6522_interface lisa_via6522_0_intf = -{ - /* COPS via */ - DEVCB_NULL, DEVCB_DRIVER_MEMBER(lisa_state,COPS_via_in_b), - DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_NULL, - DEVCB_DRIVER_MEMBER(lisa_state,COPS_via_out_a), DEVCB_DRIVER_MEMBER(lisa_state,COPS_via_out_b), - DEVCB_DRIVER_MEMBER(lisa_state,COPS_via_out_ca2), DEVCB_DRIVER_MEMBER(lisa_state,COPS_via_out_cb2), - DEVCB_NULL, DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(lisa_state,COPS_via_irq_func) -}; - -const via6522_interface lisa_via6522_1_intf = -{ - /* parallel interface via - incomplete */ - DEVCB_NULL, DEVCB_DRIVER_MEMBER(lisa_state,parallel_via_in_b), - DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_NULL -}; - /* floppy disk interface */ @@ -408,7 +385,7 @@ TIMER_CALLBACK_MEMBER(lisa_state::read_COPS_command) COPS_send_data_if_possible(); /* some pull-ups allow the COPS to read 1s when the VIA port is not set as output */ - command = (m_COPS_command | (~ m_via0->read(space, VIA_DDRA))) & 0xff; + command = (m_COPS_command | (~ m_via0->read(space, via6522_device::VIA_DDRA))) & 0xff; // printf("Dropping Ready, command = %02x\n", command); @@ -655,9 +632,9 @@ WRITE8_MEMBER(lisa_state::COPS_via_out_a) m_COPS_command = data; } -WRITE8_MEMBER(lisa_state::COPS_via_out_ca2) +WRITE_LINE_MEMBER(lisa_state::COPS_via_out_ca2) { - m_hold_COPS_data = data; + m_hold_COPS_data = state; /*logerror("COPS CA2 line state : %d\n", val);*/ @@ -695,7 +672,7 @@ READ8_MEMBER(lisa_state::COPS_via_in_b) WRITE8_MEMBER(lisa_state::COPS_via_out_b) { /* pull-up */ - data |= (~ m_via0->read(space,VIA_DDRA)) & 0x01; + data |= (~ m_via0->read(space, via6522_device::VIA_DDRA)) & 0x01; if (data & 0x01) { @@ -716,9 +693,9 @@ WRITE8_MEMBER(lisa_state::COPS_via_out_b) } } -WRITE8_MEMBER(lisa_state::COPS_via_out_cb2) +WRITE_LINE_MEMBER(lisa_state::COPS_via_out_cb2) { - m_speaker->level_w(data); + m_speaker->level_w(state); } void lisa_state::COPS_via_irq_func(int val) @@ -1030,7 +1007,7 @@ void lisa_state::machine_reset() init_COPS(); { - COPS_via_out_ca2(generic_space(), 0, 0); /* VIA core forgets to do so */ + COPS_via_out_ca2(0); /* VIA core forgets to do so */ } /* initialize floppy */ diff --git a/src/mess/machine/mac.c b/src/mess/machine/mac.c index e9456f2aee5..e10c7617b15 100644 --- a/src/mess/machine/mac.c +++ b/src/mess/machine/mac.c @@ -121,44 +121,6 @@ extern TIMER_CALLBACK(mac_pmu_tick); // macadb.c static offs_t mac_dasm_override(device_t &device, char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, int options); -const via6522_interface mac_via6522_intf = -{ - DEVCB_DRIVER_MEMBER(mac_state,mac_via_in_a), DEVCB_DRIVER_MEMBER(mac_state,mac_via_in_b), - DEVCB_NULL, DEVCB_NULL, - -#ifdef MAC_USE_EMULATED_KBD - DEVCB_NULL, DEVCB_DRIVER_MEMBER(mac_state,mac_via_in_cb2), -#else - DEVCB_NULL, DEVCB_NULL, -#endif - DEVCB_DRIVER_MEMBER(mac_state,mac_via_out_a), DEVCB_DRIVER_MEMBER(mac_state,mac_via_out_b), - DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_DRIVER_MEMBER(mac_state,mac_via_out_cb2), - DEVCB_DRIVER_LINE_MEMBER(mac_state,mac_via_irq) -}; - -const via6522_interface mac_via6522_adb_intf = -{ - DEVCB_DRIVER_MEMBER(mac_state,mac_via_in_a), DEVCB_DRIVER_MEMBER(mac_state,mac_via_in_b), - DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_DRIVER_MEMBER(mac_state,mac_adb_via_in_cb2), - DEVCB_DRIVER_MEMBER(mac_state,mac_via_out_a), DEVCB_DRIVER_MEMBER(mac_state,mac_via_out_b), - DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_DRIVER_MEMBER(mac_state,mac_adb_via_out_cb2), - DEVCB_DRIVER_LINE_MEMBER(mac_state,mac_via_irq) -}; - -const via6522_interface mac_via6522_2_intf = -{ - DEVCB_DRIVER_MEMBER(mac_state,mac_via2_in_a), DEVCB_DRIVER_MEMBER(mac_state,mac_via2_in_b), - DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_NULL, - DEVCB_DRIVER_MEMBER(mac_state,mac_via2_out_a), DEVCB_DRIVER_MEMBER(mac_state,mac_via2_out_b), - DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(mac_state,mac_via2_irq) -}; - // returns non-zero if this Mac has ADB int mac_state::has_adb() { @@ -678,13 +640,13 @@ WRITE_LINE_MEMBER(mac_state::mac_kbd_clk_in) } #ifdef MAC_USE_EMULATED_KBD -READ8_MEMBER(mac_state::mac_via_in_cb2) +READ_LINE_MEMBER(mac_state::mac_via_in_cb2) { printf("Read %d from keyboard (PC=%x)\n", (m_mackbd->data_r() == ASSERT_LINE) ? 1 : 0, m_maincpu->pc()); return (m_mackbd->data_r() == ASSERT_LINE) ? 1 : 0; } -WRITE8_MEMBER(mac_state::mac_via_out_cb2) +WRITE_LINE_MEMBER(mac_state::mac_via_out_cb2) { printf("Sending %d to kbd (PC=%x)\n", data, m_maincpu->pc()); m_mackbd->data_w((data & 1) ? ASSERT_LINE : CLEAR_LINE); @@ -730,9 +692,9 @@ void mac_state::kbd_shift_out(int data) } } -WRITE8_MEMBER(mac_state::mac_via_out_cb2) +WRITE_LINE_MEMBER(mac_state::mac_via_out_cb2) { - if (m_kbd_comm == FALSE && data == 0) + if (m_kbd_comm == FALSE && state == 0) { /* Mac pulls CB2 down to initiate communication */ m_kbd_comm = TRUE; @@ -742,7 +704,7 @@ WRITE8_MEMBER(mac_state::mac_via_out_cb2) if (m_kbd_comm == TRUE && m_kbd_receive == TRUE) { /* Shift in what mac is sending */ - m_kbd_shift_reg = (m_kbd_shift_reg & ~1) | data; + m_kbd_shift_reg = (m_kbd_shift_reg & ~1) | state; } } @@ -1166,7 +1128,7 @@ WRITE16_MEMBER ( mac_state::mac_iwm_w ) fdc->write((offset >> 8), data>>8); } -READ8_MEMBER(mac_state::mac_adb_via_in_cb2) +READ_LINE_MEMBER(mac_state::mac_adb_via_in_cb2) { UINT8 ret; if (ADB_IS_EGRET) @@ -1194,21 +1156,21 @@ READ8_MEMBER(mac_state::mac_adb_via_in_cb2) return ret; } -WRITE8_MEMBER(mac_state::mac_adb_via_out_cb2) +WRITE_LINE_MEMBER(mac_state::mac_adb_via_out_cb2) { -// printf("VIA OUT CB2 = %x\n", data); +// printf("VIA OUT CB2 = %x\n", state); if (ADB_IS_EGRET) { - m_egret->set_via_data(data & 1); + m_egret->set_via_data(state & 1); } else if (ADB_IS_CUDA) { - m_cuda->set_via_data(data & 1); + m_cuda->set_via_data(state & 1); } else { m_adb_command <<= 1; - m_adb_command |= data & 1; + m_adb_command |= state & 1; } } diff --git a/src/mess/machine/macpci.c b/src/mess/machine/macpci.c index 86f92024bac..bc5d738ad5b 100644 --- a/src/mess/machine/macpci.c +++ b/src/mess/machine/macpci.c @@ -9,7 +9,6 @@ ****************************************************************************/ #include "emu.h" -#include "machine/6522via.h" #include "machine/8530scc.h" #include "cpu/m68000/m68000.h" #include "machine/applefdc.h" @@ -26,17 +25,6 @@ /* VIA1 Handlers */ -const via6522_interface pcimac_via6522_intf = -{ - DEVCB_DRIVER_MEMBER(macpci_state,mac_via_in_a), DEVCB_DRIVER_MEMBER(macpci_state,mac_via_in_b), - DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_DRIVER_MEMBER(macpci_state,mac_adb_via_in_cb2), - DEVCB_DRIVER_MEMBER(macpci_state,mac_via_out_a), DEVCB_DRIVER_MEMBER(macpci_state,mac_via_out_b), - DEVCB_NULL, DEVCB_NULL, - DEVCB_NULL, DEVCB_DRIVER_MEMBER(macpci_state,mac_adb_via_out_cb2), - DEVCB_DRIVER_LINE_MEMBER(macpci_state,mac_via_irq) -}; - WRITE_LINE_MEMBER(macpci_state::mac_via_irq) { } @@ -106,7 +94,7 @@ WRITE16_MEMBER ( macpci_state::mac_via_w ) m_maincpu->adjust_icount(m_via_cycles); } -READ8_MEMBER(macpci_state::mac_adb_via_in_cb2) +READ_LINE_MEMBER(macpci_state::mac_adb_via_in_cb2) { UINT8 ret; ret = m_cuda->get_via_data(); @@ -117,9 +105,9 @@ READ8_MEMBER(macpci_state::mac_adb_via_in_cb2) return ret; } -WRITE8_MEMBER(macpci_state::mac_adb_via_out_cb2) +WRITE_LINE_MEMBER(macpci_state::mac_adb_via_out_cb2) { - m_cuda->set_via_data(data & 1); + m_cuda->set_via_data(state); } void macpci_state::machine_start() diff --git a/src/mess/machine/microtan.c b/src/mess/machine/microtan.c index 3a66a981cfb..3c0df7fa10e 100644 --- a/src/mess/machine/microtan.c +++ b/src/mess/machine/microtan.c @@ -169,28 +169,28 @@ READ8_MEMBER(microtan_state::via_0_in_b) return data; } -READ8_MEMBER(microtan_state::via_0_in_ca1) +READ_LINE_MEMBER(microtan_state::via_0_in_ca1) { int data = 1; LOG(("microtan_via_0_in_ca1 %d\n", data)); return data; } -READ8_MEMBER(microtan_state::via_0_in_cb1) +READ_LINE_MEMBER(microtan_state::via_0_in_cb1) { int data = 1; LOG(("microtan_via_0_in_cb1 %d\n", data)); return data; } -READ8_MEMBER(microtan_state::via_0_in_ca2) +READ_LINE_MEMBER(microtan_state::via_0_in_ca2) { int data = 1; LOG(("microtan_via_0_in_ca2 %d\n", data)); return data; } -READ8_MEMBER(microtan_state::via_0_in_cb2) +READ_LINE_MEMBER(microtan_state::via_0_in_cb2) { int data = 1; LOG(("microtan_via_0_in_cb2 %d\n", data)); @@ -209,14 +209,14 @@ WRITE8_MEMBER(microtan_state::via_0_out_b) m_cassette->output(data & 0x80 ? +1.0 : -1.0); } -WRITE8_MEMBER(microtan_state::via_0_out_ca2) +WRITE_LINE_MEMBER(microtan_state::via_0_out_ca2) { - LOG(("microtan_via_0_out_ca2 %d\n", data)); + LOG(("microtan_via_0_out_ca2 %d\n", state)); } -WRITE8_MEMBER(microtan_state::via_0_out_cb2) +WRITE_LINE_MEMBER(microtan_state::via_0_out_cb2) { - LOG(("microtan_via_0_out_cb2 %d\n", data)); + LOG(("microtan_via_0_out_cb2 %d\n", state)); } WRITE_LINE_MEMBER(microtan_state::via_0_irq) @@ -243,28 +243,28 @@ READ8_MEMBER(microtan_state::via_1_in_b) return data; } -READ8_MEMBER(microtan_state::via_1_in_ca1) +READ_LINE_MEMBER(microtan_state::via_1_in_ca1) { int data = 1; LOG(("microtan_via_1_in_ca1 %d\n", data)); return data; } -READ8_MEMBER(microtan_state::via_1_in_cb1) +READ_LINE_MEMBER(microtan_state::via_1_in_cb1) { int data = 1; LOG(("microtan_via_1_in_cb1 %d\n", data)); return data; } -READ8_MEMBER(microtan_state::via_1_in_ca2) +READ_LINE_MEMBER(microtan_state::via_1_in_ca2) { int data = 1; LOG(("microtan_via_1_in_ca2 %d\n", data)); return data; } -READ8_MEMBER(microtan_state::via_1_in_cb2) +READ_LINE_MEMBER(microtan_state::via_1_in_cb2) { int data = 1; LOG(("microtan_via_1_in_cb2 %d\n", data)); @@ -281,14 +281,14 @@ WRITE8_MEMBER(microtan_state::via_1_out_b) LOG(("microtan_via_1_out_b %02X\n", data)); } -WRITE8_MEMBER(microtan_state::via_1_out_ca2) +WRITE_LINE_MEMBER(microtan_state::via_1_out_ca2) { - LOG(("microtan_via_1_out_ca2 %d\n", data)); + LOG(("microtan_via_1_out_ca2 %d\n", state)); } -WRITE8_MEMBER(microtan_state::via_1_out_cb2) +WRITE_LINE_MEMBER(microtan_state::via_1_out_cb2) { - LOG(("microtan_via_1_out_cb2 %d\n", data)); + LOG(("microtan_via_1_out_cb2 %d\n", state)); } WRITE_LINE_MEMBER(microtan_state::via_1_irq) @@ -314,33 +314,6 @@ void microtan_state::device_timer(emu_timer &timer, device_timer_id id, int para } -/************************************************************** - * VIA interface structure - **************************************************************/ -const via6522_interface microtan_via6522_0 = -{ - /* VIA#1 at bfc0-bfcf*/ - DEVCB_DRIVER_MEMBER(microtan_state,via_0_in_a), DEVCB_DRIVER_MEMBER(microtan_state,via_0_in_b), - DEVCB_DRIVER_MEMBER(microtan_state,via_0_in_ca1), DEVCB_DRIVER_MEMBER(microtan_state,via_0_in_cb1), - DEVCB_DRIVER_MEMBER(microtan_state,via_0_in_ca2), DEVCB_DRIVER_MEMBER(microtan_state,via_0_in_cb2), - DEVCB_DRIVER_MEMBER(microtan_state,via_0_out_a), DEVCB_DRIVER_MEMBER(microtan_state,via_0_out_b), - DEVCB_NULL, DEVCB_NULL, - DEVCB_DRIVER_MEMBER(microtan_state,via_0_out_ca2),DEVCB_DRIVER_MEMBER(microtan_state,via_0_out_cb2), - DEVCB_DRIVER_LINE_MEMBER(microtan_state,via_0_irq) -}; - -const via6522_interface microtan_via6522_1 = -{ - /* VIA#1 at bfe0-bfef*/ - DEVCB_DRIVER_MEMBER(microtan_state,via_1_in_a), DEVCB_DRIVER_MEMBER(microtan_state,via_1_in_b), - DEVCB_DRIVER_MEMBER(microtan_state,via_1_in_ca1), DEVCB_DRIVER_MEMBER(microtan_state,via_1_in_cb1), - DEVCB_DRIVER_MEMBER(microtan_state,via_1_in_ca2), DEVCB_DRIVER_MEMBER(microtan_state,via_1_in_cb2), - DEVCB_DRIVER_MEMBER(microtan_state,via_1_out_a), DEVCB_DRIVER_MEMBER(microtan_state,via_1_out_b), - DEVCB_NULL, DEVCB_NULL, - DEVCB_DRIVER_MEMBER(microtan_state,via_1_out_ca2),DEVCB_DRIVER_MEMBER(microtan_state,via_1_out_cb2), - DEVCB_DRIVER_LINE_MEMBER(microtan_state,via_1_irq) -}; - TIMER_CALLBACK_MEMBER(microtan_state::microtan_read_cassette) { double level = m_cassette->input(); diff --git a/src/mess/machine/oric.c b/src/mess/machine/oric.c index cb72660003a..13d7c6ddd96 100644 --- a/src/mess/machine/oric.c +++ b/src/mess/machine/oric.c @@ -302,34 +302,34 @@ WRITE8_MEMBER(oric_state::oric_via_out_b_func) } -READ8_MEMBER(oric_state::oric_via_in_ca2_func) +READ_LINE_MEMBER(oric_state::oric_via_in_ca2_func) { return m_psg_control & 1; } -READ8_MEMBER(oric_state::oric_via_in_cb2_func) +READ_LINE_MEMBER(oric_state::oric_via_in_cb2_func) { return (m_psg_control>>1) & 1; } -WRITE8_MEMBER(oric_state::oric_via_out_ca2_func) +WRITE_LINE_MEMBER(oric_state::oric_via_out_ca2_func) { m_psg_control &=~1; - if (data) + if (state) m_psg_control |=1; - oric_psg_connection_refresh(space); + oric_psg_connection_refresh(generic_space()); } -WRITE8_MEMBER(oric_state::oric_via_out_cb2_func) +WRITE_LINE_MEMBER(oric_state::oric_via_out_cb2_func) { m_psg_control &=~2; - if (data) + if (state) m_psg_control |=2; - oric_psg_connection_refresh(space); + oric_psg_connection_refresh(generic_space()); } @@ -385,23 +385,6 @@ CB2 */ -const via6522_interface oric_6522_interface= -{ - DEVCB_DRIVER_MEMBER(oric_state,oric_via_in_a_func), - DEVCB_DRIVER_MEMBER(oric_state,oric_via_in_b_func), - DEVCB_NULL, /* printer acknowledge - handled by callback*/ - DEVCB_NULL, /* tape input - handled by timer */ - DEVCB_DRIVER_MEMBER(oric_state,oric_via_in_ca2_func), - DEVCB_DRIVER_MEMBER(oric_state,oric_via_in_cb2_func), - DEVCB_DRIVER_MEMBER(oric_state,oric_via_out_a_func), - DEVCB_DRIVER_MEMBER(oric_state,oric_via_out_b_func), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(oric_state,oric_via_out_ca2_func), - DEVCB_DRIVER_MEMBER(oric_state,oric_via_out_cb2_func), - DEVCB_DRIVER_LINE_MEMBER(oric_state,oric_via_irq_func), -}; - @@ -1323,23 +1306,6 @@ WRITE_LINE_MEMBER(oric_state::telestrat_via2_irq_func) oric_refresh_ints(); } -const via6522_interface telestrat_via2_interface= -{ - DEVCB_DRIVER_MEMBER(oric_state,telestrat_via2_in_a_func), - DEVCB_DRIVER_MEMBER(oric_state,telestrat_via2_in_b_func), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(oric_state,telestrat_via2_out_a_func), - DEVCB_DRIVER_MEMBER(oric_state,telestrat_via2_out_b_func), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(oric_state,telestrat_via2_irq_func), -}; - #if 0 /* interrupt state from acia6551 */ void oric_state::telestrat_acia_callback(int irq_state) diff --git a/src/mess/machine/rmnimbus.c b/src/mess/machine/rmnimbus.c index 20b6e974d59..9da35fe45b4 100644 --- a/src/mess/machine/rmnimbus.c +++ b/src/mess/machine/rmnimbus.c @@ -2985,23 +2985,6 @@ WRITE_LINE_MEMBER(rmnimbus_state::nimbus_via_irq_w) external_int(VIA_INT,0x00); } -const via6522_interface nimbus_via = -{ - DEVCB_NULL, //via_user_read_porta, - DEVCB_DRIVER_MEMBER(rmnimbus_state,nimbus_via_read_portb), - DEVCB_NULL, //via_user_read_ca1, - DEVCB_NULL, //via_user_read_cb1, - DEVCB_NULL, //via_user_read_ca2, - DEVCB_NULL, //via_user_read_cb2, - DEVCB_DEVICE_MEMBER(CENTRONICS_TAG, centronics_device, write), - DEVCB_DRIVER_MEMBER(rmnimbus_state,nimbus_via_write_portb), - DEVCB_NULL, //via_user_write_ca1 - DEVCB_NULL, //via_user_write_cb1 - DEVCB_DEVICE_LINE_MEMBER(CENTRONICS_TAG, centronics_device, strobe_w), - DEVCB_NULL, //via_user_write_cb2, - DEVCB_DRIVER_LINE_MEMBER(rmnimbus_state,nimbus_via_irq_w) -}; - WRITE_LINE_MEMBER(rmnimbus_state::nimbus_ack_w) { via6522_device *via_1 = machine().device<via6522_device>(VIA_TAG); |