summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/machine/interpro_ioga.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/machine/interpro_ioga.cpp')
-rw-r--r--src/mame/machine/interpro_ioga.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/mame/machine/interpro_ioga.cpp b/src/mame/machine/interpro_ioga.cpp
index 36f58f107c5..16b89a54e39 100644
--- a/src/mame/machine/interpro_ioga.cpp
+++ b/src/mame/machine/interpro_ioga.cpp
@@ -462,7 +462,7 @@ void interpro_ioga_device::irq(int state, u8 irq_vector)
if (m_irq_state != state)
{
LOGIRQ(m_active_interrupt_number, "irq: %s interrupt type %d number %d\n",
- state ? "asserting" : "clearing",m_active_interrupt_type, m_active_interrupt_number);
+ state ? "asserting" : "clearing", m_active_interrupt_type, m_active_interrupt_number);
m_irq_state = state;
m_out_irq_func(state);
@@ -709,13 +709,14 @@ TIMER_CALLBACK_MEMBER(interpro_ioga_device::dma)
if (dma_channel.control & DMA_CTRL_VIRTUAL)
{
const u32 ptde = m_memory->read_dword(dma_channel.virtual_address);
- dma_channel.virtual_address += 4;
// FIXME: ignore the page fault flag?
dma_channel.real_address = ptde & ~0xfff;
LOGDMA(dma_channel.channel, "dma: translated virtual 0x%08x real 0x%08x\n",
dma_channel.virtual_address, dma_channel.real_address);
+
+ dma_channel.virtual_address += 4;
}
}
}
@@ -886,13 +887,14 @@ void interpro_ioga_device::dma_w(address_space &space, offs_t offset, u32 data,
if (data & DMA_CTRL_VIRTUAL)
{
const u32 ptde = m_memory->read_dword(dma_channel.virtual_address);
- dma_channel.virtual_address += 4;
// FIXME: ignore the page fault flag?
dma_channel.real_address = (ptde & ~0xfff) | (dma_channel.real_address & 0xfff);
LOGDMA(dma_channel.channel, "dma: translated virtual 0x%08x real 0x%08x\n",
dma_channel.virtual_address, dma_channel.real_address);
+
+ dma_channel.virtual_address += 4;
}
// (7.0272) if bus error flag is written, clear existing bus error (otherwise retain existing state)
@@ -1068,6 +1070,12 @@ TIMER_CALLBACK_MEMBER(interpro_ioga_device::timer_60hz)
set_int_line(IRQ_60HZ, CLEAR_LINE);
}
+TIMER_CALLBACK_MEMBER(sapphire_ioga_device::timer_60hz)
+{
+ set_int_line(IRQ_TIMER0, ASSERT_LINE);
+ set_int_line(IRQ_TIMER0, CLEAR_LINE);
+}
+
READ32_MEMBER(interpro_ioga_device::timer1_r)
{
u32 result = m_timer1_count & TIMER1_COUNT;