diff --git a/src/emu/machine/6522via.h b/src/emu/machine/6522via.h index 401c49413e0..729f94eb309 100644 --- a/src/emu/machine/6522via.h +++ b/src/emu/machine/6522via.h @@ -79,8 +79,6 @@ class via6522_device : public device_t { - friend class dart_channel; - public: // construction/destruction via6522_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); @@ -106,12 +104,6 @@ public: DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); - // 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_WRITE_LINE_MEMBER( write_pa0 ) { write_pa(0, state); } DECLARE_WRITE_LINE_MEMBER( write_pa1 ) { write_pa(1, state); } DECLARE_WRITE_LINE_MEMBER( write_pa2 ) { write_pa(2, state); } diff --git a/src/mame/drivers/beezer.c b/src/mame/drivers/beezer.c index 04e461d420a..d49ff486c8e 100644 --- a/src/mame/drivers/beezer.c +++ b/src/mame/drivers/beezer.c @@ -114,9 +114,7 @@ static MACHINE_CONFIG_START( beezer, beezer_state ) 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)) @@ -125,12 +123,10 @@ static MACHINE_CONFIG_START( beezer, beezer_state ) 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)) + MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE("audiocpu", m6809_device, irq_line)) MACHINE_CONFIG_END /*************************************************************************** diff --git a/src/mess/includes/mac.h b/src/mess/includes/mac.h index 92f0cd4261b..76fdc384439 100644 --- a/src/mess/includes/mac.h +++ b/src/mess/includes/mac.h @@ -216,8 +216,10 @@ public: m_key6(*this, "KEY6"), m_montype(*this, "MONTYPE"), m_vram(*this,"vram"), - m_vram16(*this,"vram16") - { } + m_vram16(*this,"vram16"), + m_via2_ca1_hack(0) + { + } required_device m_maincpu; required_device m_via1; @@ -443,6 +445,8 @@ private: // HMC for x100 PowerMacs UINT64 m_hmc_reg, m_hmc_shiftout; + int m_via2_ca1_hack; + public: emu_timer *m_scanline_timer; emu_timer *m_adb_timer; diff --git a/src/mess/machine/mac.c b/src/mess/machine/mac.c index e10c7617b15..f4e54fb1287 100644 --- a/src/mess/machine/mac.c +++ b/src/mess/machine/mac.c @@ -1844,6 +1844,7 @@ void mac_state::machine_reset() } else if (MAC_HAS_VIA2) // prime CB1 for ASC and slot interrupts { + m_via2_ca1_hack = 1; m_via2->write_ca1(1); m_via2->write_cb1(1); } @@ -2115,14 +2116,16 @@ void mac_state::nubus_slot_interrupt(UINT8 slot, UINT32 state) if ((m_nubus_irq_state & mask) != mask) { // HACK: sometimes we miss an ack (possible misbehavior in the VIA?) - if (m_via2->read_ca1() == 0) + if (m_via2_ca1_hack == 0) { m_via2->write_ca1(1); } + m_via2_ca1_hack = 0; m_via2->write_ca1(0); } else { + m_via2_ca1_hack = 1; m_via2->write_ca1(1); } }