mirror of
https://github.com/holub/mame
synced 2025-04-20 15:32:45 +03:00
apple/rbv.cpp: Remove leftover code since it's using the pseudo-VIA device now. [R. Belmont]
This commit is contained in:
parent
7bb6cd259c
commit
64efa5635d
@ -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)
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user