1
0
Fork 0

Added WAIT and 16-bit BSF,BSR

Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@1044
This commit is contained in:
Sjoerd van der Berg 2003-06-09 23:28:24 +00:00
parent 4eaaac62b5
commit 400da21a32
4 changed files with 31 additions and 5 deletions

View file

@ -371,6 +371,7 @@ l_M_Ed:
case D_STD:
SETFLAGBIT(DF,true);
goto nextopcode;
case D_WAIT:
case D_NOP:
goto nextopcode;
case D_ENTERw:

View file

@ -483,6 +483,32 @@ switch (inst.code.op) {
inst.op1.d=new_sel;
}
break;
case O_BSFw:
{
FILLFLAGS;
if (!inst.op1.w) SETFLAGBIT(ZF,true);
Bitu count=0;
while (count<16) {
if ((inst.op1.w>>count) & 1) break;
count++;
}
inst.op1.d=count;
SETFLAGBIT(ZF,false);
}
break;
case O_BSRw:
{
FILLFLAGS;
if (!inst.op1.w) SETFLAGBIT(ZF,true);
Bits count=15;
while (count>0) {
if ((inst.op1.w>>count) & 1) break;
count--;
}
inst.op1.d=count;
SETFLAGBIT(ZF,false);
}
break;
case O_BTw:
case O_BTSw:
case O_BTCw:

View file

@ -109,7 +109,7 @@ static OpCode OpCodeTable[1024]={
{L_REGw ,O_XCHG_AX ,S_REGw ,REGI_SI},{L_REGw ,O_XCHG_AX ,S_REGw ,REGI_DI},
/* 0x98 - 0x9f */
{D_CBW ,0 ,0 ,0 },{D_CWD ,0 ,0 ,0 },
{L_Ifw ,O_CALLFw ,0 ,0 },{L_ERROR ,0 ,0 ,0 },
{L_Ifw ,O_CALLFw ,0 ,0 },{D_WAIT ,0 ,0 ,0 },
{L_FLG ,0 ,S_PUSHw,0 },{L_POPw ,0 ,S_FLGw ,0 },
{L_REGb ,0 ,S_FLGb ,REGI_AH},{L_FLG ,0 ,S_REGb ,REGI_AH},
@ -311,7 +311,7 @@ static OpCode OpCodeTable[1024]={
/* 0x1b8 - 0x1bf */
{0 ,0 ,0 ,0 },{0 ,0 ,0 ,0 },
{L_MODRM ,0xe ,0 ,M_GRP },{L_MODRM ,O_BTCw ,0 ,0 },
{0 ,0 ,0 ,0 },{0 ,0 ,0 ,0 },
{L_MODRM ,O_BSFw ,S_Gw ,M_Ew },{L_MODRM ,O_BSRw ,S_Gw ,M_Ew },
{L_MODRM ,0 ,S_Gw ,M_Ebx },{L_MODRM ,0 ,S_Gw ,M_Ewx },
/* 0x1c0 - 0x1cc */
@ -466,8 +466,7 @@ static OpCode OpCodeTable[1024]={
{L_REGd ,O_XCHG_EAX ,S_REGd ,REGI_SI},{L_REGd ,O_XCHG_EAX ,S_REGd ,REGI_DI},
/* 0x298 - 0x29f */
{D_CWDE ,0 ,0 ,0 },{D_CDQ ,0 ,0 ,0 },
//TODO Wait shoudn't be nop
{L_Ifd ,O_CALLFd ,0 ,0 },{D_NOP ,0 ,0 ,0 },
{L_Ifd ,O_CALLFd ,0 ,0 },{D_WAIT ,0 ,0 ,0 },
{L_FLG ,0 ,S_PUSHd,0 },{L_POPd ,0 ,S_FLGd ,0 },
{L_REGb ,0 ,S_FLGb ,REGI_AH},{L_FLG ,0 ,S_REGb ,REGI_AH},

View file

@ -36,7 +36,7 @@ enum {
D_SETALC,
D_XLATw,D_XLATd,
D_CLI,D_STI,D_STC,D_CLC,D_CMC,D_CLD,D_STD,
D_NOP,
D_NOP,D_WAIT,
D_ENTERw,D_ENTERd,
D_LEAVEw,D_LEAVEd,
L_ERROR,