x68k: check for dma bus error first

This commit is contained in:
cracyc 2023-02-23 12:21:09 -06:00
parent 6ab0eda653
commit 7200cca83a

View File

@ -706,6 +706,12 @@ TIMER_CALLBACK_MEMBER(x68k_state::bus_error)
void x68k_state::set_bus_error(uint32_t address, bool rw, uint16_t mem_mask)
{
LOGMASKED(LOG_SYS, "%s: Bus error: Unused RAM access [%08x]\n", machine().describe_context(), address);
if(!m_maincpu->executing())
{
m_hd63450->bec_w(0, hd63450_device::ERR_BUS);
return;
}
if(m_maincpu->type() == M68000) {
downcast<m68000_device *>(m_maincpu.target())->trigger_bus_error();
return;
@ -713,11 +719,6 @@ void x68k_state::set_bus_error(uint32_t address, bool rw, uint16_t mem_mask)
if(m_bus_error)
return;
else if(!m_maincpu->executing())
{
m_hd63450->bec_w(0, hd63450_device::ERR_BUS);
return;
}
if(!ACCESSING_BITS_8_15)
address++;
m_bus_error = true;
@ -727,7 +728,6 @@ void x68k_state::set_bus_error(uint32_t address, bool rw, uint16_t mem_mask)
cpuptr->set_input_line(M68K_LINE_BUSERROR, ASSERT_LINE);
cpuptr->set_input_line(M68K_LINE_BUSERROR, CLEAR_LINE);
m_bus_error_timer->adjust(cpuptr->cycles_to_attotime(16)); // let rmw cycles complete
LOGMASKED(LOG_SYS, "%s: Bus error: Unused RAM access [%08x]\n", machine().describe_context(), address);
}
uint16_t x68k_state::rom0_r(offs_t offset, uint16_t mem_mask)