diff --git a/src/mame/apple/rbv.cpp b/src/mame/apple/rbv.cpp index 7331e7d7687..a75dcf75dec 100644 --- a/src/mame/apple/rbv.cpp +++ b/src/mame/apple/rbv.cpp @@ -184,36 +184,6 @@ void rbv_device::asc_irq_w(int state) m_pseudovia->asc_irq_w(state); } -void rbv_device::pseudovia_recalc_irqs() -{ - // check slot interrupts and bubble them down to IFR - u8 slot_irqs = (~m_pseudovia_regs[2]) & 0x78; - slot_irqs &= (m_pseudovia_regs[0x12] & 0x78); - - if (slot_irqs) - { - m_pseudovia_regs[3] |= 2; // any slot - } - else // no slot irqs, clear the pending bit - { - m_pseudovia_regs[3] &= ~2; // any slot - } - - u8 ifr = (m_pseudovia_regs[3] & m_pseudovia_ier) & 0x1b; - - if (ifr != 0) - { - m_pseudovia_regs[3] = ifr | 0x80; - m_pseudovia_ifr = ifr | 0x80; - - write_irq(ASSERT_LINE); - } - else - { - write_irq(CLEAR_LINE); - } -} - u8 rbv_device::via2_video_config_r() { return m_montype; @@ -229,141 +199,6 @@ void rbv_device::via2_irq_w(int state) write_irq(state); } -u8 rbv_device::pseudovia_r(offs_t offset) -{ - int data = 0; - - if (offset < 0x100) - { - data = m_pseudovia_regs[offset]; - - if (offset == 0x10) - { - data &= ~0x38; - data |= m_montype; - } - - // bit 7 of these registers always reads as 0 on pseudo-VIAs - if ((offset == 0x12) || (offset == 0x13)) - { - data &= ~0x80; - } - } - else - { - offset >>= 9; - - switch (offset) - { - case 13: // IFR - data = m_pseudovia_ifr; - break; - - case 14: // IER - data = m_pseudovia_ier; - break; - - default: - logerror("pseudovia_r: Unknown pseudo-VIA register %d access\n", offset); - break; - } - } - return data; -} - -void rbv_device::pseudovia_w(offs_t offset, u8 data) -{ - if (offset < 0x100) - { - switch (offset) - { - case 0x02: - m_pseudovia_regs[offset] |= (data & 0x40); - pseudovia_recalc_irqs(); - break; - - case 0x03: // write here to ack - if (data & 0x80) // 1 bits write 1s - { - m_pseudovia_regs[offset] |= data & 0x7f; - m_pseudovia_ifr |= data & 0x7f; - } - else // 1 bits write 0s - { - m_pseudovia_regs[offset] &= ~(data & 0x7f); - m_pseudovia_ifr &= ~(data & 0x7f); - } - pseudovia_recalc_irqs(); - break; - - case 0x10: - m_pseudovia_regs[offset] = data; - break; - - case 0x12: - if (data & 0x80) // 1 bits write 1s - { - m_pseudovia_regs[offset] |= data & 0x7f; - } - else // 1 bits write 0s - { - m_pseudovia_regs[offset] &= ~(data & 0x7f); - } - pseudovia_recalc_irqs(); - break; - - case 0x13: - if (data & 0x80) // 1 bits write 1s - { - m_pseudovia_regs[offset] |= data & 0x7f; - - if (data == 0xff) - m_pseudovia_regs[offset] = 0x1f; // I don't know why this is special, but the IIci ROM's POST demands it - } - else // 1 bits write 0s - { - m_pseudovia_regs[offset] &= ~(data & 0x7f); - } - break; - - default: - m_pseudovia_regs[offset] = data; - break; - } - } - else - { - offset >>= 9; - - switch (offset) - { - case 13: // IFR - if (data & 0x80) - { - data = 0x7f; - } - pseudovia_recalc_irqs(); - break; - - case 14: // IER - if (data & 0x80) // 1 bits write 1s - { - m_pseudovia_ier |= data & 0x7f; - } - else // 1 bits write 0s - { - m_pseudovia_ier &= ~(data & 0x7f); - } - pseudovia_recalc_irqs(); - break; - - default: - logerror("pseudovia_w: Unknown extended pseudo-VIA register %d access\n", offset); - break; - } - } -} - u8 rbv_device::dac_r(offs_t offset) { switch (offset) diff --git a/src/mame/apple/rbv.h b/src/mame/apple/rbv.h index 9f8a97edc75..94f5c762ade 100644 --- a/src/mame/apple/rbv.h +++ b/src/mame/apple/rbv.h @@ -53,16 +53,11 @@ private: u8 m_montype; bool m_monochrome; - u8 m_pseudovia_regs[256], m_pseudovia_ier, m_pseudovia_ifr; u8 m_pal_address, m_pal_idx; u32 *m_ram_ptr; u32 m_ram_size; u8 m_video_config; - u8 pseudovia_r(offs_t offset); - void pseudovia_w(offs_t offset, u8 data); - void pseudovia_recalc_irqs(); - u8 via2_video_config_r(); void via2_video_config_w(u8 data); void via2_irq_w(int state);