1
0
Fork 0

Added more constants to be loaded through FLDxx

Added 32-bit FILD and FISTP


Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@1047
This commit is contained in:
Sjoerd van der Berg 2003-06-10 08:52:16 +00:00
parent 6f9016c8eb
commit 3ea9d2e62a
2 changed files with 28 additions and 7 deletions

View file

@ -298,15 +298,20 @@ void FPU_ESC1_Normal(Bitu rm) {
FPU_PUSH(1.0);
break;
case 0x01: /* FLDL2T */
FPU_PUSH(L2T);
break;
case 0x02: /* FLDL2E */
LOG(LOG_FPU,LOG_WARN)("ESC 1:Unhandled group %X subfunction %X",group,sub);
FPU_PUSH(L2E);
break;
case 0x03: /* FLDPI */
FPU_PUSH(PI);
break;
case 0x04: /* FLDLG2 */
FPU_PUSH(LG2);
break;
case 0x05: /* FLDLN2 */
LOG(LOG_FPU,LOG_WARN)("ESC 1:Unhandled group %X subfunction %X",group,sub);
FPU_PUSH(LN2);
break;
case 0x06: /* FLDZ*/
FPU_PUSH_ZERO();
break;
@ -611,27 +616,39 @@ void FPU_ESC7_EA(Bitu rm,PhysPt addr) {
Bitu group=(rm >> 3) & 7;
Bitu sub=(rm & 7);
switch(group){
case 0x00: /* FLD */
case 0x00: /* FILD Bit16s */
{
Bit16s blah = mem_readw(addr);
FPU_PUSH( static_cast<double>(blah));
}
break;
case 0x01: /* FISTTP */
case 0x01: /* FISTTP Bit16s */
LOG(LOG_FPU,LOG_WARN)("ESC 7 EA:Unhandled group %d subfunction %d",group,sub);
break;
case 0x02: /* FIST */
case 0x02: /* FIST Bit16s */
{ Bitu top = FPU_GET_TOP();
mem_writew(addr,static_cast<Bit16s>(FROUND(fpu.regs[top].d)));
}
break;
case 0x03: /*FISTP */
case 0x03: /* FISTP Bit16s */
{ Bitu top = FPU_GET_TOP();
mem_writew(addr,static_cast<Bit16s>(FROUND(fpu.regs[top].d)));
FPU_FPOP();
}
break;
case 0x05: /* FILD Bit32s */
{
Bit32s blah = mem_readd(addr);
FPU_PUSH( static_cast<double>(blah));
}
break;
case 0x07: /* FISTP Bit32s */
{ Bitu top = FPU_GET_TOP();
mem_writed(addr,static_cast<Bit32s>(FROUND(fpu.regs[top].d)));
FPU_FPOP();
}
break;
default:
LOG(LOG_FPU,LOG_WARN)("ESC 7 EA:Unhandled group %d subfunction %d",group,sub);
}

View file

@ -38,4 +38,8 @@ enum FPU_Round {
ROUND_Chop = 3
};
//get pi from a real library
#define PI 3.14159265358979323846
#define PI 3.14159265358979323846
#define L2E 1.4426950408889634
#define L2T 3.3219280948873623
#define LN2 0.69314718055994531
#define LG2 0.3010299956639812