summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--src/emu/cpu/m6809/konami.ops6
-rw-r--r--src/emu/cpu/m6809/m6809.c49
-rw-r--r--src/emu/cpu/m6809/m6809inl.h49
3 files changed, 52 insertions, 52 deletions
diff --git a/src/emu/cpu/m6809/konami.ops b/src/emu/cpu/m6809/konami.ops
index 8152fd17c75..56cc14029a4 100644
--- a/src/emu/cpu/m6809/konami.ops
+++ b/src/emu/cpu/m6809/konami.ops
@@ -429,12 +429,12 @@ INDEXED:
EXG:
{
- // konami's TFR instruction differs enough from 6809 to fork the code
+ // konami's EXG instruction differs enough from 6809 to fork the code
UINT8 param = read_opcode_arg();
exgtfr_register reg1 = read_exgtfr_register(param >> 0);
exgtfr_register reg2 = read_exgtfr_register(param >> 4);
- write_exgtfr_register(param >> 4, reg2);
- write_exgtfr_register(param >> 0, reg1);
+ write_exgtfr_register(param >> 0, reg2);
+ write_exgtfr_register(param >> 4, reg1);
}
eat(hd6309_native_mode() ? 3 : 6);
return;
diff --git a/src/emu/cpu/m6809/m6809.c b/src/emu/cpu/m6809/m6809.c
index aaf1b779f5d..a65cd4afbc5 100644
--- a/src/emu/cpu/m6809/m6809.c
+++ b/src/emu/cpu/m6809/m6809.c
@@ -471,6 +471,55 @@ const char *m6809_base_device::inputnum_string(int inputnum)
//-------------------------------------------------
+// read_exgtfr_register
+//-------------------------------------------------
+
+ATTR_FORCE_INLINE m6809_base_device::exgtfr_register m6809_base_device::read_exgtfr_register(UINT8 reg)
+{
+ exgtfr_register result;
+ result.byte_value = 0xFF;
+ result.word_value = 0x00FF;
+
+ switch(reg & 0x0F)
+ {
+ case 0: result.word_value = m_d.w; break; // D
+ case 1: result.word_value = m_x.w; break; // X
+ case 2: result.word_value = m_y.w; break; // Y
+ case 3: result.word_value = m_u.w; break; // U
+ case 4: result.word_value = m_s.w; break; // S
+ case 5: result.word_value = m_pc.w; break; // PC
+ case 8: result.byte_value = m_d.b.h; break; // A
+ case 9: result.byte_value = m_d.b.l; break; // B
+ case 10: result.byte_value = m_cc; break; // CC
+ case 11: result.byte_value = m_dp; break; // DP
+ }
+ return result;
+}
+
+
+//-------------------------------------------------
+// write_exgtfr_register
+//-------------------------------------------------
+
+ATTR_FORCE_INLINE void m6809_base_device::write_exgtfr_register(UINT8 reg, m6809_base_device::exgtfr_register value)
+{
+ switch(reg & 0x0F)
+ {
+ case 0: m_d.w = value.word_value; break; // D
+ case 1: m_x.w = value.word_value; break; // X
+ case 2: m_y.w = value.word_value; break; // Y
+ case 3: m_u.w = value.word_value; break; // U
+ case 4: m_s.w = value.word_value; break; // S
+ case 5: m_pc.w = value.word_value; break; // PC
+ case 8: m_d.b.h = value.byte_value; break; // A
+ case 9: m_d.b.l = value.byte_value; break; // B
+ case 10: m_cc = value.byte_value; break; // CC
+ case 11: m_dp = value.byte_value; break; // DP
+ }
+}
+
+
+//-------------------------------------------------
// log_illegal - used to log hits to illegal
// instructions (except for HD6309 which traps)
//-------------------------------------------------
diff --git a/src/emu/cpu/m6809/m6809inl.h b/src/emu/cpu/m6809/m6809inl.h
index 127a30a2453..5a66d98006b 100644
--- a/src/emu/cpu/m6809/m6809inl.h
+++ b/src/emu/cpu/m6809/m6809inl.h
@@ -146,55 +146,6 @@ inline ATTR_FORCE_INLINE void m6809_base_device::burn_any_delay_loops()
//-------------------------------------------------
-// read_exgtfr_register
-//-------------------------------------------------
-
-inline ATTR_FORCE_INLINE m6809_base_device::exgtfr_register m6809_base_device::read_exgtfr_register(UINT8 reg)
-{
- exgtfr_register result;
- result.byte_value = 0xFF;
- result.word_value = 0x00FF;
-
- switch(reg & 0x0F)
- {
- case 0: result.word_value = m_d.w; break; // D
- case 1: result.word_value = m_x.w; break; // X
- case 2: result.word_value = m_y.w; break; // Y
- case 3: result.word_value = m_u.w; break; // U
- case 4: result.word_value = m_s.w; break; // S
- case 5: result.word_value = m_pc.w; break; // PC
- case 8: result.byte_value = m_d.b.h; break; // A
- case 9: result.byte_value = m_d.b.l; break; // B
- case 10: result.byte_value = m_cc; break; // CC
- case 11: result.byte_value = m_dp; break; // DP
- }
- return result;
-}
-
-
-//-------------------------------------------------
-// write_exgtfr_register
-//-------------------------------------------------
-
-inline ATTR_FORCE_INLINE void m6809_base_device::write_exgtfr_register(UINT8 reg, m6809_base_device::exgtfr_register value)
-{
- switch(reg & 0x0F)
- {
- case 0: m_d.w = value.word_value; break; // D
- case 1: m_x.w = value.word_value; break; // X
- case 2: m_y.w = value.word_value; break; // Y
- case 3: m_u.w = value.word_value; break; // U
- case 4: m_s.w = value.word_value; break; // S
- case 5: m_pc.w = value.word_value; break; // PC
- case 8: m_d.b.h = value.byte_value; break; // A
- case 9: m_d.b.l = value.byte_value; break; // B
- case 10: m_cc = value.byte_value; break; // CC
- case 11: m_dp = value.byte_value; break; // DP
- }
-}
-
-
-//-------------------------------------------------
// daa - decimal arithmetic adjustment instruction
//-------------------------------------------------