/**************************************************************** 
 *
 *  fc.h
 *
 *  Header zu fcc.c und fci.c
 *
 *  Peter Gober, 09-May-88
 *
 ****************************************************************/

/*
 *  Codes für die Speicherung von Rechenzeichen auf dem fcc-internen Stack (1)
 *  und als Regeln, die fcc ausgibt (2)
 *
 *  Highbyte: Gruppe (größere Zahl = höhere Priorität, nur bei (1) wichtig)
 *  Lowbyte: Code
 */

#define READ_CODE    0x1000  /* nur (2): lies nächste Konstante auf den Stack */
#define GETX_CODE    0x1001  /* nur (2): hole x auf den Stack */

#define NEG_CODE     0x0F00  /* Negiere oberstes Stackelement, tritt z. B. bei
                                -(... auf */
#define SIN_CODE     0x0F01  /* wende Sinus auf oberstes Stackelement an */
#define COS_CODE     0x0F02
#define TAN_CODE     0x0F03
#define COTAN_CODE   0x0F04
#define ASIN_CODE    0x0F05
#define ACOS_CODE    0x0F06
#define ATAN_CODE    0x0F07
#define FLOOR_CODE   0x0F08
#define CEIL_CODE    0x0F09
#define FABS_CODE    0x0F0A
#define LOG_CODE     0x0F0B
#define LOG10_CODE   0x0F0C
#define EXP_CODE     0x0F0D
#define SQRT_CODE    0x0F0E
#define SINH_CODE    0x0F0F
#define COSH_CODE    0x0F10
#define TANH_CODE    0x0F11

#define POW_CODE     0x0C00

#define MULT_CODE    0x0800  /* bedeutet als (2): hole 2 Zahlen vom Stack, mul-
                                tipliziere sie, tue Ergebnis wieder auf Stack */
#define DIV_CODE     0x0801

#define PLUS_CODE    0x0400
#define MINUS_CODE   0x0401

#define END_CODE     0x0100  /* (1): intern verwendet, landet nie auf Stack
                                (2): letztes Element des Regel-Feldes */

#define BRAC_CODE    0x0000  /* wird nur von (1) intern verwendet */

#define PRI_MASK     0xFF00  /* maskiert nur Priorität, nur von (1) verwendet */
