Previous 199869 Revisions Next

r29399 Monday 7th April, 2014 at 03:16:44 UTC by Alex Jackson
8086 MOV sreg behavior confirmed on hardware, no longer a guess (nw)
[src/emu/cpu/i86]i86.c

trunk/src/emu/cpu/i86/i86.c
r29398r29399
13541354
13551355      case 0x8c: // i_mov_wsreg
13561356         m_modrm = fetch();
1357         PutRMWord(m_sregs[(m_modrm & 0x18) >> 3]); // guess: ignore bit 5
1358         if(m_modrm & 0x20) logerror("%s: %06x: Mov Sreg - Invalid register\n", tag(), pc());
1357         PutRMWord(m_sregs[(m_modrm & 0x18) >> 3]); // confirmed on hw: modrm bit 5 ignored
13591358         CLKM(MOV_RS,MOV_MS);
13601359         break;
13611360
r29398r29399
13691368      case 0x8e: // i_mov_sregw
13701369         m_modrm = fetch();
13711370         m_src = GetRMWord();
1371         m_sregs[(m_modrm & 0x18) >> 3] = m_src; // confirmed on hw: modrm bit 5 ignored
13721372         CLKM(MOV_SR,MOV_SM);
1373         switch (m_modrm & 0x38)
1374         {
1375         case 0x00:  /* mov es,ew */
1376            m_sregs[ES] = m_src;
1377            break;
1378         case 0x08:  /* mov cs,ew */
1379            m_sregs[CS] = m_src;
1380            break;
1381         case 0x10:  /* mov ss,ew */
1382            m_sregs[SS] = m_src;
1383            m_no_interrupt = 1;
1384            break;
1385         case 0x18:  /* mov ds,ew */
1386            m_sregs[DS] = m_src;
1387            break;
1388         default:
1389            logerror("%s: %06x: Mov Sreg - Invalid register\n", tag(), pc());
1390         }
13911373         break;
13921374
13931375      case 0x8f: // i_popw

Previous 199869 Revisions Next


© 1997-2024 The MAME Team