diff --git a/src/mess/includes/c128.h b/src/mess/includes/c128.h index 6d12f52d038..2c9351f462b 100644 --- a/src/mess/includes/c128.h +++ b/src/mess/includes/c128.h @@ -179,35 +179,9 @@ public: /*----------- defined in machine/c128.c -----------*/ -WRITE8_HANDLER(c128_mmu8722_port_w); -READ8_HANDLER(c128_mmu8722_port_r); -WRITE8_HANDLER(c128_mmu8722_ff00_w); -READ8_HANDLER(c128_mmu8722_ff00_r); -WRITE8_HANDLER(c128_write_0000); -WRITE8_HANDLER(c128_write_1000); -WRITE8_HANDLER(c128_write_4000); -WRITE8_HANDLER(c128_write_8000); -WRITE8_HANDLER(c128_write_a000); -WRITE8_HANDLER(c128_write_c000); -WRITE8_HANDLER(c128_write_d000); -WRITE8_HANDLER(c128_write_e000); -WRITE8_HANDLER(c128_write_ff00); -WRITE8_HANDLER(c128_write_ff05); - - -extern MACHINE_START( c128 ); -extern MACHINE_RESET( c128 ); extern INTERRUPT_GEN( c128_frame_interrupt ); -void c128_bankswitch_64(running_machine &machine, int reset); - -extern READ8_DEVICE_HANDLER(c128_m6510_port_read); -extern WRITE8_DEVICE_HANDLER(c128_m6510_port_write); - extern const mos6526_interface c128_ntsc_cia0, c128_pal_cia0; extern const mos6526_interface c128_ntsc_cia1, c128_pal_cia1; -WRITE_LINE_DEVICE_HANDLER( c128_iec_srq_w ); -WRITE_LINE_DEVICE_HANDLER( c128_iec_data_w ); - #endif /* __C128_H__ */ diff --git a/src/mess/machine/c128.c b/src/mess/machine/c128.c index dcc8fd7328f..0bb4eee5e75 100644 --- a/src/mess/machine/c128.c +++ b/src/mess/machine/c128.c @@ -251,19 +251,12 @@ const mos6526_interface c128_pal_cia0 = WRITE_LINE_MEMBER( c128_state::iec_srq_w ) { - if (!MMU_FSDIR) - { - mos6526_flag_w(m_cia1, state); - mos6526_cnt_w(m_cia1, state); - } + mos6526_cnt_w(m_cia1, MMU_FSDIR || state); } WRITE_LINE_MEMBER( c128_state::iec_data_w ) { - if (!MMU_FSDIR) - { - mos6526_sp_w(m_cia1, state); - } + mos6526_sp_w(m_cia1, MMU_FSDIR || state); } /* @@ -830,6 +823,8 @@ WRITE8_MEMBER( c128_state::mmu8722_port_w ) bankswitch(0); iec_srq_out_w(); iec_data_out_w(); + mos6526_cnt_w(m_cia1, MMU_FSDIR || m_iec->srq_r()); + mos6526_sp_w(m_cia1, MMU_FSDIR || m_iec->data_r()); break; case 0: case 6: diff --git a/src/mess/machine/c1571.c b/src/mess/machine/c1571.c index 6773991fe8c..bf2b1addd55 100644 --- a/src/mess/machine/c1571.c +++ b/src/mess/machine/c1571.c @@ -252,11 +252,8 @@ WRITE8_MEMBER( base_c1571_device::via0_pa_w ) set_iec_data(); set_iec_srq(); - if (!m_ser_dir) - { - //m_cia->cnt_w(m_bus->srq_r()); - //m_cia->sp_w(m_bus->data_r()); - } + m_cia->cnt_w(m_ser_dir || m_bus->srq_r()); + m_cia->sp_w(m_ser_dir || m_bus->data_r()); } // side select @@ -802,10 +799,7 @@ void base_c1571_device::device_reset() void base_c1571_device::cbm_iec_srq(int state) { - if (!m_ser_dir) - { - m_cia->cnt_w(state); - } + m_cia->cnt_w(m_ser_dir || state); } @@ -828,10 +822,7 @@ void base_c1571_device::cbm_iec_atn(int state) void base_c1571_device::cbm_iec_data(int state) { - if (!m_ser_dir) - { - m_cia->sp_w(state); - } + m_cia->sp_w(m_ser_dir || state); } diff --git a/src/mess/machine/c1581.c b/src/mess/machine/c1581.c index f1c649538db..6f633a1f0b4 100644 --- a/src/mess/machine/c1581.c +++ b/src/mess/machine/c1581.c @@ -260,10 +260,18 @@ WRITE8_MEMBER( base_c1581_device::cia_pb_w ) m_atn_ack = BIT(data, 4); // fast serial direction - m_fast_ser_dir = BIT(data, 5); + int fast_ser_dir = BIT(data, 5); - set_iec_data(); - set_iec_srq(); + if (m_fast_ser_dir != fast_ser_dir) + { + m_fast_ser_dir = fast_ser_dir; + + set_iec_data(); + set_iec_srq(); + + m_cia->cnt_w(m_fast_ser_dir || m_bus->srq_r()); + m_cia->sp_w(m_fast_ser_dir || m_bus->data_r()); + } } static MOS8520_INTERFACE( cia_intf ) @@ -458,10 +466,7 @@ void base_c1581_device::device_reset() void base_c1581_device::cbm_iec_srq(int state) { - if (!m_fast_ser_dir) - { - m_cia->cnt_w(state); - } + m_cia->cnt_w(m_fast_ser_dir || state); } @@ -483,10 +488,7 @@ void base_c1581_device::cbm_iec_atn(int state) void base_c1581_device::cbm_iec_data(int state) { - if (!m_fast_ser_dir) - { - m_cia->sp_w(state); - } + m_cia->sp_w(m_fast_ser_dir || state); }