www.pudn.com > rtu.rar > FPAL96.H


/* 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 */