/* fpal96.h * Copyright (c) 1990 Intel Corporation, ALL RIGHTS RESERVED. * * fpal96.h - 8096 floating-point arithmetic library functions */ #ifndef _fpal96h #define _fpal96h #pragma fixedparams(fpinit, fpldcw, fpstcw, fpstsw, fpcleb, fpsave) #pragma fixedparams(fprstor, fpseteh) #pragma fixedparams(fpldz, fpld1, fpld, fpldint, fplddec) #pragma fixedparams(fpst, fpstint, fpstdec) #pragma fixedparams(fpneg, fpabs, fpsqrt, fprndint) #pragma fixedparams(fpadd, fpsub, fpmul, fpdiv, fprem, fpcomps, fpcompq) typedef struct savearea { unsigned int Status_Word; void (*Err_Handl_Addr)(); unsigned int Control_Word; unsigned char Local_Data[60]; } SaveArea; typedef struct info { unsigned int Status_Word; void *Param_p; unsigned char Prem_Result[5]; unsigned char OPERATION; float FPACC; } Info; typedef unsigned char Result[5]; typedef struct decimal_type { long mantissa; signed char exponent; } DecimalType; /* OPERATION Codes */ #define ABS_OP 8 #define ADD_OP 11 #define COMPQ_OP 17 #define COMPS_OP 16 #define DIV_OP 14 #define LDDEC_OP 3 #define LDINT_OP 2 #define LD_OP 1 #define MUL_OP 13 #define NEG_OP 7 #define REM_OP 15 #define RNDINT_OP 10 #define SQRT_OP 9 #define STDEC_OP 6 #define STINT_OP 5 #define ST_OP 4 #define SUB_OP 12 /* administrative functions */ void fpinit(void); void fpldcw(unsigned int ); unsigned int fpstcw(void); unsigned int fpstsw(void); void fpcleb(unsigned char ); void fpsave(SaveArea *); void fprstor(SaveArea *); void fpseteh(void (*ErrorHandler)(Info *, Result *)); /* load operations */ void fpldz(void); void fpld1(void); void fpld(float ); void fpldint(long ); void fplddec(short , DecimalType *); /* store operations */ float fpst(void); long fpstint(void); void fpstdec(short , DecimalType *); /* unary operations */ void fpneg(void); void fpabs(void); void fpsqrt(void); void fprndint(void); /* binary operations */ void fpadd(float); void fpsub(float); void fpmul(float); void fpdiv(float); void fprem(float); void fpcomps(float); void fpcompq(float); #endif /* _fpal96h */