mirror of
https://github.com/holub/mame
synced 2025-05-07 14:54:35 +03:00
ns32000: undefined operation assumptions
This commit is contained in:
parent
9ac23897b9
commit
a538585b98
@ -1001,7 +1001,7 @@ template <int Width> void ns32000_device<Width>::execute_run()
|
|||||||
{
|
{
|
||||||
u32 const src = gen_read(mode[0]);
|
u32 const src = gen_read(mode[0]);
|
||||||
|
|
||||||
if (size == 0)
|
if (size == SIZE_B)
|
||||||
m_psr = (m_psr & 0xff00) | u8(src);
|
m_psr = (m_psr & 0xff00) | u8(src);
|
||||||
else
|
else
|
||||||
m_psr = src;
|
m_psr = src;
|
||||||
@ -1057,16 +1057,20 @@ template <int Width> void ns32000_device<Width>::execute_run()
|
|||||||
mode[0].read_i(size);
|
mode[0].read_i(size);
|
||||||
decode(mode, bytes);
|
decode(mode, bytes);
|
||||||
|
|
||||||
if (size == 0 || !(m_psr & PSR_U))
|
if (size < SIZE_D)
|
||||||
{
|
{
|
||||||
// FIXME: read.D?
|
if (size == SIZE_B || !(m_psr & PSR_U))
|
||||||
u16 const src = gen_read(mode[0]);
|
{
|
||||||
|
u16 const src = gen_read(mode[0]);
|
||||||
|
|
||||||
m_psr &= ~src;
|
m_psr &= ~src;
|
||||||
m_pc += bytes;
|
m_pc += bytes;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
interrupt(ILL, m_pc);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
interrupt(ILL, m_pc);
|
interrupt(UND, m_pc);
|
||||||
break;
|
break;
|
||||||
case 0x4:
|
case 0x4:
|
||||||
// JUMP dst
|
// JUMP dst
|
||||||
@ -1085,17 +1089,20 @@ template <int Width> void ns32000_device<Width>::execute_run()
|
|||||||
mode[0].read_i(size);
|
mode[0].read_i(size);
|
||||||
decode(mode, bytes);
|
decode(mode, bytes);
|
||||||
|
|
||||||
if (size == 0 || !(m_psr & PSR_U))
|
if (size < SIZE_D)
|
||||||
{
|
{
|
||||||
// FIXME: read.D?
|
if (size == SIZE_B || !(m_psr & PSR_U))
|
||||||
|
{
|
||||||
|
u16 const src = gen_read(mode[0]);
|
||||||
|
|
||||||
u16 const src = gen_read(mode[0]);
|
m_psr |= src;
|
||||||
|
m_pc += bytes;
|
||||||
m_psr |= src;
|
}
|
||||||
m_pc += bytes;
|
else
|
||||||
|
interrupt(ILL, m_pc);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
interrupt(ILL, m_pc);
|
interrupt(UND, m_pc);
|
||||||
break;
|
break;
|
||||||
case 0xa:
|
case 0xa:
|
||||||
// ADJSPi src
|
// ADJSPi src
|
||||||
@ -2558,7 +2565,9 @@ template <int Width> void ns32000_device<Width>::execute_run()
|
|||||||
break;
|
break;
|
||||||
case 0x3:
|
case 0x3:
|
||||||
// Trap(SLAVE)
|
// Trap(SLAVE)
|
||||||
// FIXME: operand access classes?
|
// operands from ns32532 datasheet
|
||||||
|
mode[0].read_f(size_f);
|
||||||
|
mode[1].read_f(size_f);
|
||||||
decode(mode, bytes);
|
decode(mode, bytes);
|
||||||
|
|
||||||
if (!slave(mode[0], mode[1]))
|
if (!slave(mode[0], mode[1]))
|
||||||
@ -2607,7 +2616,9 @@ template <int Width> void ns32000_device<Width>::execute_run()
|
|||||||
break;
|
break;
|
||||||
case 0x9:
|
case 0x9:
|
||||||
// Trap(SLAVE)
|
// Trap(SLAVE)
|
||||||
// FIXME: operand access classes?
|
// operands from ns32532 datasheet
|
||||||
|
mode[0].read_f(size_f);
|
||||||
|
mode[1].write_f(size_f);
|
||||||
decode(mode, bytes);
|
decode(mode, bytes);
|
||||||
|
|
||||||
if (!slave(mode[0], mode[1]))
|
if (!slave(mode[0], mode[1]))
|
||||||
|
Loading…
Reference in New Issue
Block a user