mirror of
https://github.com/holub/mame
synced 2025-06-09 06:13:04 +03:00
Gross fix (nw)
This commit is contained in:
parent
6d0325f17d
commit
bad31ea61c
@ -670,7 +670,7 @@ void m68000_base_device::postload()
|
|||||||
void m68000_base_device::m68k_cause_bus_error()
|
void m68000_base_device::m68k_cause_bus_error()
|
||||||
{
|
{
|
||||||
// Halt the cpu on berr when writing the stack frame.
|
// Halt the cpu on berr when writing the stack frame.
|
||||||
if (m_run_mode == RUN_MODE_BERR_AERR_RESET)
|
if (m_run_mode == RUN_MODE_BERR_AERR_RESET_WSF)
|
||||||
{
|
{
|
||||||
m_stopped = STOP_LEVEL_HALT;
|
m_stopped = STOP_LEVEL_HALT;
|
||||||
return;
|
return;
|
||||||
@ -678,7 +678,7 @@ void m68000_base_device::m68k_cause_bus_error()
|
|||||||
|
|
||||||
uint32_t sr = m68ki_init_exception();
|
uint32_t sr = m68ki_init_exception();
|
||||||
|
|
||||||
m_run_mode = RUN_MODE_BERR_AERR_RESET;
|
m_run_mode = RUN_MODE_BERR_AERR_RESET_WSF;
|
||||||
|
|
||||||
if (!CPU_TYPE_IS_010_PLUS())
|
if (!CPU_TYPE_IS_010_PLUS())
|
||||||
{
|
{
|
||||||
@ -700,6 +700,7 @@ void m68000_base_device::m68k_cause_bus_error()
|
|||||||
}
|
}
|
||||||
|
|
||||||
m68ki_jump_vector(EXCEPTION_BUS_ERROR);
|
m68ki_jump_vector(EXCEPTION_BUS_ERROR);
|
||||||
|
m_run_mode = RUN_MODE_BERR_AERR_RESET;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool m68000_base_device::memory_translate(int space, int intention, offs_t &address)
|
bool m68000_base_device::memory_translate(int space, int intention, offs_t &address)
|
||||||
|
@ -89,7 +89,8 @@ static constexpr int MODE_READ = 0x10;
|
|||||||
static constexpr int MODE_WRITE = 0;
|
static constexpr int MODE_WRITE = 0;
|
||||||
|
|
||||||
static constexpr int RUN_MODE_NORMAL = 0;
|
static constexpr int RUN_MODE_NORMAL = 0;
|
||||||
static constexpr int RUN_MODE_BERR_AERR_RESET = 1;
|
static constexpr int RUN_MODE_BERR_AERR_RESET_WSF = 1; // writing the stack frame
|
||||||
|
static constexpr int RUN_MODE_BERR_AERR_RESET = 2; // stack frame done
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -1516,13 +1517,14 @@ inline void m68ki_exception_address_error()
|
|||||||
* this is a catastrophic failure.
|
* this is a catastrophic failure.
|
||||||
* Halt the CPU
|
* Halt the CPU
|
||||||
*/
|
*/
|
||||||
if(m_run_mode == RUN_MODE_BERR_AERR_RESET)
|
if(m_run_mode == RUN_MODE_BERR_AERR_RESET_WSF)
|
||||||
{
|
{
|
||||||
m_read8(0x00ffff01);
|
m_read8(0x00ffff01);
|
||||||
m_stopped = STOP_LEVEL_HALT;
|
m_stopped = STOP_LEVEL_HALT;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
m_run_mode = RUN_MODE_BERR_AERR_RESET;
|
|
||||||
|
m_run_mode = RUN_MODE_BERR_AERR_RESET_WSF;
|
||||||
|
|
||||||
if (!CPU_TYPE_IS_010_PLUS())
|
if (!CPU_TYPE_IS_010_PLUS())
|
||||||
{
|
{
|
||||||
@ -1545,6 +1547,8 @@ inline void m68ki_exception_address_error()
|
|||||||
|
|
||||||
m68ki_jump_vector(EXCEPTION_ADDRESS_ERROR);
|
m68ki_jump_vector(EXCEPTION_ADDRESS_ERROR);
|
||||||
|
|
||||||
|
m_run_mode = RUN_MODE_BERR_AERR_RESET;
|
||||||
|
|
||||||
/* Use up some clock cycles and undo the instruction's cycles */
|
/* Use up some clock cycles and undo the instruction's cycles */
|
||||||
m_remaining_cycles -= m_cyc_exception[EXCEPTION_ADDRESS_ERROR] - m_cyc_instruction[m_ir];
|
m_remaining_cycles -= m_cyc_exception[EXCEPTION_ADDRESS_ERROR] - m_cyc_instruction[m_ir];
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user