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:
parent
6f9016c8eb
commit
3ea9d2e62a
2 changed files with 28 additions and 7 deletions
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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
|
Loading…
Add table
Reference in a new issue