Added FPREM1 instruction for Interstate '76.
This commit is contained in:
parent
99060248b2
commit
ea13ae015b
2 changed files with 19 additions and 2 deletions
|
|
@ -362,7 +362,7 @@ OpFn OP_TABLE(fpu_d9_a16)[256] =
|
||||||
opFSTP, opFSTP, opFSTP, opFSTP, opFSTP, opFSTP, opFSTP, opFSTP, /*Invalid*/
|
opFSTP, opFSTP, opFSTP, opFSTP, opFSTP, opFSTP, opFSTP, opFSTP, /*Invalid*/
|
||||||
opFCHS, opFABS, ILLEGAL, ILLEGAL, opFTST, opFXAM, ILLEGAL, ILLEGAL,
|
opFCHS, opFABS, ILLEGAL, ILLEGAL, opFTST, opFXAM, ILLEGAL, ILLEGAL,
|
||||||
opFLD1, opFLDL2T, opFLDL2E, opFLDPI, opFLDEG2, opFLDLN2, opFLDZ, ILLEGAL,
|
opFLD1, opFLDL2T, opFLDL2E, opFLDPI, opFLDEG2, opFLDLN2, opFLDZ, ILLEGAL,
|
||||||
opF2XM1, opFYL2X, opFPTAN, opFPATAN, ILLEGAL, ILLEGAL, opFDECSTP, opFINCSTP,
|
opF2XM1, opFYL2X, opFPTAN, opFPATAN, ILLEGAL, opFPREM1, opFDECSTP, opFINCSTP,
|
||||||
opFPREM, opFYL2XP1,opFSQRT, opFSINCOS, opFRNDINT, opFSCALE, opFSIN, opFCOS
|
opFPREM, opFYL2XP1,opFSQRT, opFSINCOS, opFRNDINT, opFSCALE, opFSIN, opFCOS
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -401,7 +401,7 @@ OpFn OP_TABLE(fpu_d9_a32)[256] =
|
||||||
opFSTP, opFSTP, opFSTP, opFSTP, opFSTP, opFSTP, opFSTP, opFSTP, /*Invalid*/
|
opFSTP, opFSTP, opFSTP, opFSTP, opFSTP, opFSTP, opFSTP, opFSTP, /*Invalid*/
|
||||||
opFCHS, opFABS, ILLEGAL, ILLEGAL, opFTST, opFXAM, ILLEGAL, ILLEGAL,
|
opFCHS, opFABS, ILLEGAL, ILLEGAL, opFTST, opFXAM, ILLEGAL, ILLEGAL,
|
||||||
opFLD1, opFLDL2T, opFLDL2E, opFLDPI, opFLDEG2, opFLDLN2, opFLDZ, ILLEGAL,
|
opFLD1, opFLDL2T, opFLDL2E, opFLDPI, opFLDEG2, opFLDLN2, opFLDZ, ILLEGAL,
|
||||||
opF2XM1, opFYL2X, opFPTAN, opFPATAN, ILLEGAL, ILLEGAL, opFDECSTP, opFINCSTP,
|
opF2XM1, opFYL2X, opFPTAN, opFPATAN, ILLEGAL, opFPREM1, opFDECSTP, opFINCSTP,
|
||||||
opFPREM, opFYL2XP1,opFSQRT, opFSINCOS, opFRNDINT, opFSCALE, opFSIN, opFCOS
|
opFPREM, opFYL2XP1,opFSQRT, opFSINCOS, opFRNDINT, opFSCALE, opFSIN, opFCOS
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -562,6 +562,23 @@ static int opFPREM(uint32_t fetchdat)
|
||||||
CLOCK_CYCLES(100);
|
CLOCK_CYCLES(100);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
static int opFPREM1(uint32_t fetchdat)
|
||||||
|
{
|
||||||
|
int64_t temp64;
|
||||||
|
FP_ENTER();
|
||||||
|
pc++;
|
||||||
|
if (fplog) pclog("FPREM1 %f %f ", ST(0), ST(1));
|
||||||
|
temp64 = (int64_t)(ST(0) / ST(1));
|
||||||
|
ST(0) = ST(0) - (ST(1) * (double)temp64);
|
||||||
|
tag[TOP] &= ~TAG_UINT64;
|
||||||
|
if (fplog) pclog("%f\n", ST(0));
|
||||||
|
npxs &= ~(C0|C1|C2|C3);
|
||||||
|
if (temp64 & 4) npxs|=C0;
|
||||||
|
if (temp64 & 2) npxs|=C3;
|
||||||
|
if (temp64 & 1) npxs|=C1;
|
||||||
|
CLOCK_CYCLES(100);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int opFSQRT(uint32_t fetchdat)
|
static int opFSQRT(uint32_t fetchdat)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue