summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu
diff options
context:
space:
mode:
author Olivier Galibert <galibert@pobox.com>2020-02-23 15:29:39 +0100
committer Olivier Galibert <galibert@pobox.com>2020-02-23 15:29:56 +0100
commit0e2731b0fdce8678f32bcf34a9a8307c31eb1255 (patch)
treebedc6ea78eed61f920fe46feb1256c771b5a2eb0 /src/devices/cpu
parentbe7d48d2c9bfab1fa88f97a6ae759787402f05fa (diff)
xavix2: invert flag bits setters, and moves don't set nz (nw)
Diffstat (limited to 'src/devices/cpu')
-rw-r--r--src/devices/cpu/xavix2/xavix2.cpp66
-rw-r--r--src/devices/cpu/xavix2/xavix2d.cpp16
2 files changed, 41 insertions, 41 deletions
diff --git a/src/devices/cpu/xavix2/xavix2.cpp b/src/devices/cpu/xavix2/xavix2.cpp
index d15d74c5c22..4c1d150564a 100644
--- a/src/devices/cpu/xavix2/xavix2.cpp
+++ b/src/devices/cpu/xavix2/xavix2.cpp
@@ -124,7 +124,7 @@ void xavix2_device::device_start()
void xavix2_device::device_reset()
{
- m_hr[4] = F_I;
+ m_hr[4] = 0;
m_pc = 0x40000000;
}
@@ -145,13 +145,13 @@ uint32_t xavix2_device::execute_input_lines() const noexcept
u32 xavix2_device::check_interrupt(u32 cpc)
{
- if(m_int_line && (!(m_hr[4] & F_I) || m_wait)) {
+ if(m_int_line && ((m_hr[4] & F_I) || m_wait)) {
standard_irq_callback(0);
m_ilr1 = m_wait ? cpc + 1 : cpc;
m_wait = false;
m_ei_count = 0;
m_if1 = m_hr[4];
- m_hr[4] |= F_I;
+ m_hr[4] &= ~F_I;
return 0x40000010;
}
return cpc;
@@ -222,11 +222,11 @@ void xavix2_device::execute_run()
case 0x0c: case 0x0d: m_r[r1(opcode)] = snz(m_r[r2(opcode)] | val19u(opcode)); break;
case 0x0e: case 0x0f: m_r[r1(opcode)] = snz(m_r[r2(opcode)] ^ val19u(opcode)); break;
- case 0x10: case 0x11: m_r[r1(opcode)] = snz((s8)m_program->read_byte(m_r[r2(opcode)] + val19s(opcode))); break;
- case 0x12: case 0x13: m_r[r1(opcode)] = snz(m_program->read_byte(m_r[r2(opcode)] + val19s(opcode))); break;
- case 0x14: case 0x15: m_r[r1(opcode)] = snz((s16)m_program->read_word(m_r[r2(opcode)] + val19s(opcode))); break;
- case 0x16: case 0x17: m_r[r1(opcode)] = snz(m_program->read_word(m_r[r2(opcode)] + val19s(opcode))); break;
- case 0x18: case 0x19: m_r[r1(opcode)] = snz(m_program->read_dword(m_r[r2(opcode)] + val19s(opcode))); break;
+ case 0x10: case 0x11: m_r[r1(opcode)] = (s8)m_program->read_byte(m_r[r2(opcode)] + val19s(opcode)); break;
+ case 0x12: case 0x13: m_r[r1(opcode)] = m_program->read_byte(m_r[r2(opcode)] + val19s(opcode)); break;
+ case 0x14: case 0x15: m_r[r1(opcode)] = (s16)m_program->read_word(m_r[r2(opcode)] + val19s(opcode)); break;
+ case 0x16: case 0x17: m_r[r1(opcode)] = m_program->read_word(m_r[r2(opcode)] + val19s(opcode)); break;
+ case 0x18: case 0x19: m_r[r1(opcode)] = m_program->read_dword(m_r[r2(opcode)] + val19s(opcode)); break;
case 0x1a: case 0x1b: m_program->write_byte(m_r[r2(opcode)] + val19s(opcode), m_r[r1(opcode)]); break;
case 0x1c: case 0x1d: m_program->write_word(m_r[r2(opcode)] + val19s(opcode), m_r[r1(opcode)]); break;
case 0x1e: case 0x1f: m_program->write_dword(m_r[r2(opcode)] + val19s(opcode), m_r[r1(opcode)]); break;
@@ -241,29 +241,29 @@ void xavix2_device::execute_run()
case 0x2c: case 0x2d: m_r[r1(opcode)] = snz(m_r[r2(opcode)] | val11u(opcode)); break;
case 0x2e: case 0x2f: m_r[r1(opcode)] = snz(m_r[r2(opcode)] ^ val11u(opcode)); break;
- case 0x30: case 0x31: m_r[r1(opcode)] = snz((s8)m_program->read_byte(m_r[6] + val14s(opcode))); break;
- case 0x32: case 0x33: m_r[r1(opcode)] = snz(m_program->read_byte(m_r[6] + val14s(opcode))); break;
- case 0x34: case 0x35: m_r[r1(opcode)] = snz((s16)m_program->read_word(m_r[6] + val14s(opcode))); break;
- case 0x36: case 0x37: m_r[r1(opcode)] = snz(m_program->read_word(m_r[6] + val14s(opcode))); break;
- case 0x38: case 0x39: m_r[r1(opcode)] = snz(m_program->read_dword(m_r[6] + val14s(opcode))); break;
+ case 0x30: case 0x31: m_r[r1(opcode)] = (s8)m_program->read_byte(m_r[6] + val14s(opcode)); break;
+ case 0x32: case 0x33: m_r[r1(opcode)] = m_program->read_byte(m_r[6] + val14s(opcode)); break;
+ case 0x34: case 0x35: m_r[r1(opcode)] = (s16)m_program->read_word(m_r[6] + val14s(opcode)); break;
+ case 0x36: case 0x37: m_r[r1(opcode)] = m_program->read_word(m_r[6] + val14s(opcode)); break;
+ case 0x38: case 0x39: m_r[r1(opcode)] = m_program->read_dword(m_r[6] + val14s(opcode)); break;
case 0x3a: case 0x3b: m_program->write_byte(m_r[6] + val14s(opcode), m_r[r1(opcode)]); break;
case 0x3c: case 0x3d: m_program->write_word(m_r[6] + val14s(opcode), m_r[r1(opcode)]); break;
case 0x3e: case 0x3f: m_program->write_dword(m_r[6] + val14s(opcode), m_r[r1(opcode)]); break;
- case 0x40: case 0x41: m_r[r1(opcode)] = snz((s8)m_program->read_byte(m_r[r2(opcode)] + val11s(opcode))); break;
- case 0x42: case 0x43: m_r[r1(opcode)] = snz(m_program->read_byte(m_r[r2(opcode)] + val11s(opcode))); break;
- case 0x44: case 0x45: m_r[r1(opcode)] = snz((s16)m_program->read_word(m_r[r2(opcode)] + val11s(opcode))); break;
- case 0x46: case 0x47: m_r[r1(opcode)] = snz(m_program->read_word(m_r[r2(opcode)] + val11s(opcode))); break;
- case 0x48: case 0x49: m_r[r1(opcode)] = snz(m_program->read_dword(m_r[r2(opcode)] + val11s(opcode))); break;
+ case 0x40: case 0x41: m_r[r1(opcode)] = (s8)m_program->read_byte(m_r[r2(opcode)] + val11s(opcode)); break;
+ case 0x42: case 0x43: m_r[r1(opcode)] = m_program->read_byte(m_r[r2(opcode)] + val11s(opcode)); break;
+ case 0x44: case 0x45: m_r[r1(opcode)] = (s16)m_program->read_word(m_r[r2(opcode)] + val11s(opcode)); break;
+ case 0x46: case 0x47: m_r[r1(opcode)] = m_program->read_word(m_r[r2(opcode)] + val11s(opcode)); break;
+ case 0x48: case 0x49: m_r[r1(opcode)] = m_program->read_dword(m_r[r2(opcode)] + val11s(opcode)); break;
case 0x4a: case 0x4b: m_program->write_byte(m_r[r2(opcode)] + val11s(opcode), m_r[r1(opcode)]); break;
case 0x4c: case 0x4d: m_program->write_word(m_r[r2(opcode)] + val11s(opcode), m_r[r1(opcode)]); break;
case 0x4e: case 0x4f: m_program->write_dword(m_r[r2(opcode)] + val11s(opcode), m_r[r1(opcode)]); break;
- case 0x50: case 0x51: m_r[r1(opcode)] = snz((s8)m_program->read_byte(val14s(opcode))); break;
- case 0x52: case 0x53: m_r[r1(opcode)] = snz(m_program->read_byte(val14s(opcode))); break;
- case 0x54: case 0x55: m_r[r1(opcode)] = snz((s16)m_program->read_word(val14s(opcode))); break;
- case 0x56: case 0x57: m_r[r1(opcode)] = snz(m_program->read_word(val14s(opcode))); break;
- case 0x58: case 0x59: m_r[r1(opcode)] = snz(m_program->read_dword(val14s(opcode))); break;
+ case 0x50: case 0x51: m_r[r1(opcode)] = (s8)m_program->read_byte(val14s(opcode)); break;
+ case 0x52: case 0x53: m_r[r1(opcode)] = m_program->read_byte(val14s(opcode)); break;
+ case 0x54: case 0x55: m_r[r1(opcode)] = (s16)m_program->read_word(val14s(opcode)); break;
+ case 0x56: case 0x57: m_r[r1(opcode)] = m_program->read_word(val14s(opcode)); break;
+ case 0x58: case 0x59: m_r[r1(opcode)] = m_program->read_dword(val14s(opcode)); break;
case 0x5a: case 0x5b: m_program->write_byte(val14s(opcode), m_r[r1(opcode)]); break;
case 0x5c: case 0x5d: m_program->write_word(val14s(opcode), m_r[r1(opcode)]); break;
case 0x5e: case 0x5f: m_program->write_dword(val14s(opcode), m_r[r1(opcode)]); break;
@@ -382,16 +382,16 @@ void xavix2_device::execute_run()
case 0xe3: /* rti2 */ break;
// e4-ef
- case 0xf0: m_hr[4] |= F_C; break;
- case 0xf1: m_hr[4] &= ~F_C; break;
- case 0xf2: m_hr[4] |= F_Z; break;
- case 0xf3: m_hr[4] &= ~F_Z; break;
- case 0xf4: m_hr[4] |= F_N; break;
- case 0xf5: m_hr[4] &= ~F_N; break;
- case 0xf6: m_hr[4] |= F_V; break;
- case 0xf7: m_hr[4] &= ~F_V; break;
- case 0xf8: m_hr[4] |= F_I; break;
- case 0xf9: m_hr[4] &= ~F_I; m_ei_count = 2; break;
+ case 0xf0: m_hr[4] &= ~F_C; break;
+ case 0xf1: m_hr[4] |= F_C; break;
+ case 0xf2: m_hr[4] &= ~F_Z; break;
+ case 0xf3: m_hr[4] |= F_Z; break;
+ case 0xf4: m_hr[4] &= ~F_N; break;
+ case 0xf5: m_hr[4] |= F_N; break;
+ case 0xf6: m_hr[4] &= ~F_V; break;
+ case 0xf7: m_hr[4] |= F_V; break;
+ case 0xf8: m_hr[4] &= ~F_I; break;
+ case 0xf9: m_hr[4] |= F_I; m_ei_count = 2; break;
// fa-fb
case 0xfc: break;
// fd
diff --git a/src/devices/cpu/xavix2/xavix2d.cpp b/src/devices/cpu/xavix2/xavix2d.cpp
index e086dc90fff..85132ee6ef2 100644
--- a/src/devices/cpu/xavix2/xavix2d.cpp
+++ b/src/devices/cpu/xavix2/xavix2d.cpp
@@ -342,14 +342,14 @@ offs_t xavix2_disassembler::disassemble(std::ostream &stream, offs_t pc, const d
case 0xe3: util::stream_format(stream, "rti3"); flags = STEP_OUT; break;
// e4-ef
- case 0xf0: util::stream_format(stream, "clc"); break;
- case 0xf1: util::stream_format(stream, "stc"); break;
- case 0xf2: util::stream_format(stream, "clz"); break;
- case 0xf3: util::stream_format(stream, "stz"); break;
- case 0xf4: util::stream_format(stream, "cln"); break;
- case 0xf5: util::stream_format(stream, "stn"); break;
- case 0xf6: util::stream_format(stream, "clv"); break;
- case 0xf7: util::stream_format(stream, "stv"); break;
+ case 0xf0: util::stream_format(stream, "stc"); break;
+ case 0xf1: util::stream_format(stream, "clc"); break;
+ case 0xf2: util::stream_format(stream, "stz"); break;
+ case 0xf3: util::stream_format(stream, "clz"); break;
+ case 0xf4: util::stream_format(stream, "stn"); break;
+ case 0xf5: util::stream_format(stream, "cln"); break;
+ case 0xf6: util::stream_format(stream, "stv"); break;
+ case 0xf7: util::stream_format(stream, "clv"); break;
case 0xf8: util::stream_format(stream, "di"); break;
case 0xf9: util::stream_format(stream, "ei"); break;
// fa-fb