From df7969f1d7d7d7e6f5ff04b87f19c4531b0bab28 Mon Sep 17 00:00:00 2001 From: "Alex W. Jackson" Date: Mon, 7 Apr 2014 03:16:44 +0000 Subject: [PATCH] 8086 MOV sreg behavior confirmed on hardware, no longer a guess (nw) --- src/emu/cpu/i86/i86.c | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/src/emu/cpu/i86/i86.c b/src/emu/cpu/i86/i86.c index a093d4bbcbe..76c0f48795d 100644 --- a/src/emu/cpu/i86/i86.c +++ b/src/emu/cpu/i86/i86.c @@ -1354,8 +1354,7 @@ bool i8086_common_cpu_device::common_op(UINT8 op) case 0x8c: // i_mov_wsreg m_modrm = fetch(); - PutRMWord(m_sregs[(m_modrm & 0x18) >> 3]); // guess: ignore bit 5 - if(m_modrm & 0x20) logerror("%s: %06x: Mov Sreg - Invalid register\n", tag(), pc()); + PutRMWord(m_sregs[(m_modrm & 0x18) >> 3]); // confirmed on hw: modrm bit 5 ignored CLKM(MOV_RS,MOV_MS); break; @@ -1369,25 +1368,8 @@ bool i8086_common_cpu_device::common_op(UINT8 op) case 0x8e: // i_mov_sregw m_modrm = fetch(); m_src = GetRMWord(); + m_sregs[(m_modrm & 0x18) >> 3] = m_src; // confirmed on hw: modrm bit 5 ignored CLKM(MOV_SR,MOV_SM); - switch (m_modrm & 0x38) - { - case 0x00: /* mov es,ew */ - m_sregs[ES] = m_src; - break; - case 0x08: /* mov cs,ew */ - m_sregs[CS] = m_src; - break; - case 0x10: /* mov ss,ew */ - m_sregs[SS] = m_src; - m_no_interrupt = 1; - break; - case 0x18: /* mov ds,ew */ - m_sregs[DS] = m_src; - break; - default: - logerror("%s: %06x: Mov Sreg - Invalid register\n", tag(), pc()); - } break; case 0x8f: // i_popw