mirror of
https://github.com/holub/mame
synced 2025-06-06 12:53:46 +03:00
parent
f3ccd1f7f2
commit
06700b3c52
@ -1265,12 +1265,12 @@ void clipper_device::execute_instruction()
|
||||
// saved0..saved7: push registers fN:f7
|
||||
|
||||
// store fi at sp - 8 * (8 - i)
|
||||
for (int i = R2; i < 8 && !m_exception; i++)
|
||||
for (int i = m_info.subopcode & 0x7; i < 8 && !m_exception; i++)
|
||||
get_dcammu().store<float64>(m_ssw, m_r[15] - 8 * (8 - i), get_fp64(i));
|
||||
|
||||
// decrement sp after push to allow restart on exceptions
|
||||
if (!m_exception)
|
||||
m_r[15] -= 8 * (8 - R2);
|
||||
m_r[15] -= 8 * (8 - m_info.subopcode & 0x7);
|
||||
// TRAPS: A,P,W
|
||||
break;
|
||||
case 0x28: case 0x29: case 0x2a: case 0x2b:
|
||||
@ -1278,12 +1278,12 @@ void clipper_device::execute_instruction()
|
||||
// restd0..restd7: pop registers fN:f7
|
||||
|
||||
// load fi from sp + 8 * (i - N)
|
||||
for (int i = R2; i < 8 && !m_exception; i++)
|
||||
get_dcammu().load<float64>(m_ssw, m_r[15] + 8 * (i - R2), [this, i](float64 v) { set_fp(i, v, F_NONE); });
|
||||
for (int i = m_info.subopcode & 0x7; i < 8 && !m_exception; i++)
|
||||
get_dcammu().load<float64>(m_ssw, m_r[15] + 8 * (i - m_info.subopcode & 0x7), [this, i](float64 v) { set_fp(i, v, F_NONE); });
|
||||
|
||||
// increment sp after pop to allow restart on exceptions
|
||||
if (!m_exception)
|
||||
m_r[15] += 8 * (8 - R2);
|
||||
m_r[15] += 8 * (8 - m_info.subopcode & 0x7);
|
||||
// TRAPS: C,U,A,P,R
|
||||
break;
|
||||
case 0x30:
|
||||
|
@ -273,12 +273,12 @@ offs_t clipper_disassembler::disassemble(std::ostream &stream, offs_t pc, const
|
||||
|
||||
case 0x20: case 0x21: case 0x22: case 0x23:
|
||||
case 0x24: case 0x25: case 0x26: case 0x27:
|
||||
util::stream_format(stream, "saved%d", R2);
|
||||
util::stream_format(stream, "saved%d", opcodes.r16(pc) & 0x7);
|
||||
break;
|
||||
|
||||
case 0x28: case 0x29: case 0x2a: case 0x2b:
|
||||
case 0x2c: case 0x2d: case 0x2e: case 0x2f:
|
||||
util::stream_format(stream, "restd%d", R2);
|
||||
util::stream_format(stream, "restd%d", opcodes.r16(pc) & 0x7);
|
||||
break;
|
||||
|
||||
case 0x30: util::stream_format(stream, "cnvsw f%d,r%d", (opcodes.r16(pc+2) & 0xf0) >> 4, opcodes.r16(pc+2) & 0xf); break;
|
||||
|
Loading…
Reference in New Issue
Block a user