1
0
Fork 0

Add INSB,INSW,CMPSD

Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@879
This commit is contained in:
Sjoerd van der Berg 2003-04-06 12:09:43 +00:00
parent ee247fc7d2
commit adb8268359

View file

@ -39,6 +39,20 @@
si_index=(si_index+add_index) & add_mask;
}
break;
case R_INSB:
for (;count>0;count--) {
reg_dx,SaveMb(di_base+di_index,IO_Read(reg_dx));
di_index=(di_index+add_index) & add_mask;
}
break;
case R_INSW:
add_index<<=1;
for (;count>0;count--) {
SaveMb(di_base+di_index,IO_Read(reg_dx));
SaveMb(di_base+di_index+1,IO_Read(reg_dx+1));
di_index=(di_index+add_index) & add_mask;
}
break;
case R_STOSB:
for (;count>0;count--) {
SaveMb(di_base+di_index,reg_al);
@ -154,6 +168,20 @@
CMPW(val1,val2,LoadD,0);
}
break;
case R_CMPSD:
{
add_index<<=2;Bit32u val1,val2;
for (;count>0;) {
count--;
val1=LoadMd(si_base+si_index);
val2=LoadMd(di_base+di_index);
si_index=(si_index+add_index) & add_mask;
di_index=(di_index+add_index) & add_mask;
if ((val1==val2)!=inst.repz) break;
}
CMPD(val1,val2,LoadD,0);
}
break;
default:
LOG(LOG_CPU|LOG_ERROR,"Unhandled string %d entry %X",inst.code.op,inst.entry);
}