123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- /*
- Defines and externs of general interest
- */
- /* $Id$ */
- /********* PRIVATE/static *********/
- #define PRIVATE static /* or not */
- /********* The internal data types ********/
- #define UNSIGNED /* the normal case */
- #ifdef UNSIGNED
- /* The EM pointer is an abstract type and requires explicit conversion*/
- typedef unsigned long ptr; /* pointer to EM address */
- #define p2i(p) (p) /* convert pointer to index */
- #define i2p(p) (ptr)(p) /* convert index to pointer */
- #else /* UNSIGNED */
- typedef char *ptr; /* pointer to EM address */
- #define p2i(p) (long)(p) /* convert pointer to index */
- #define i2p(p) (ptr)(p) /* convert index to pointer */
- #endif /* UNSIGNED */
- /* The EM size is an integer type; a cast suffices */
- typedef long size;
- /********* Mathematical constants ********/
- #define I_MAXU1 255L
- #define I_MAXS1 127L
- #define I_MINS1 (-127L-1L)
- #define I_MAXU2 65535L
- #define I_MAXS2 32767L
- #define I_MINS2 (-32767L-1L)
- #define I_MAXU4 4294967295L
- #define I_MAXS4 2147483647L
- #define I_MINS4 (-2147483647L-1L)
- #define FL_MAXU1 255.0
- #define FL_MAXS1 127.0
- #define FL_MINS1 -128.0
- #define FL_MAXU2 65535.0
- #define FL_MAXS2 32767.0
- #define FL_MINS2 -32768.0
- #define FL_MAXU4 4294967295.0
- #define FL_MAXS4 2147483647.0
- #define FL_MINS4 -2147483648.0
- #define BIT(n) (1L<<(n))
- #define SIGNBIT1 BIT(7) /* Signbit of one byte signed int */
- #define SIGNBIT2 BIT(15) /* Signbit of two byte signed int */
- #define SIGNBIT4 BIT(31) /* Signbit of four byte signed int */
- #define MASK1 0xFF /* To mask one byte */
- #define MASK2 0xFFFF /* To mask two bytes */
- /******** Machine constants ********/
- #define MAX_OFF2 I_MAXS2
- #define MAX_OFF4 I_MAXS4
- /******** EM machine data sizes ********/
- #define FRALIMIT 8L /* Default limit */
- #define LINSIZE 4L /* Fixed size of LIN number */
- /******** EM Machine capacity parameters ********/
- extern size wsize; /* wordsize */
- extern size dwsize; /* double wordsize */
- extern size psize; /* pointersize */
- extern long i_minsw; /* Min. value for signed integer of wsize */
- extern long i_maxsw; /* Max. value for signed integer of wsize */
- extern unsigned long i_maxuw; /* Max. value for unsigned integer of wsize */
- extern long min_off; /* Minimum offset */
- extern long max_off; /* Maximum offset */
- extern ptr max_addr; /* Maximum address */
- extern size wsizem1; /* wordsize - 1 */
- /******** EM program parameters ********/
- extern ptr ML; /* Memory Limit */
- extern ptr HB; /* Heap Base */
- extern ptr DB; /* Procedure Descriptor Base, end of text */
- extern long NProc; /* Number of Procedure Descriptors */
- extern long PreIgnMask; /* Preset Ignore Mask, from command line */
- /******** EM machine registers ********/
- #define UNDEFINED (0)
- #define DEFINED (1)
- extern long PI; /* Procedure Identifier of running proc */
- extern ptr PC; /* Program Counter */
- extern ptr HP; /* Heap Pointer */
- extern ptr SP; /* Stack Pointer */
- extern ptr LB; /* Local Base */
- extern ptr AB; /* Actual Base */
- extern long ES; /* program Exit Status */
- extern int ES_def; /* set iff Exit Status legal */
- #define TR_ABORT (1)
- #define TR_HALT (2)
- #define TR_TRAP (3)
- extern int OnTrap; /* what to do upon trap */
- extern long IgnMask; /* Ignore Mask for traps */
- extern long TrapPI; /* Procedure Identifier of trap routine */
- extern char *FRA; /* Function Return Area */
- extern size FRALimit; /* Function Return Area maximum Size */
- extern size FRASize; /* Function Return Area actual Size */
- extern int FRA_def; /* set iff Function Return Area legal */
- /******** The EM Machine Memory ********/
- extern char *text; /* program text & procedure descriptors */
- extern char *data; /* global data & heap space */
- extern ptr HL; /* Heap Limit */
- extern char *stack; /* stack space and local data */
- extern char *stackML; /* stack + ML, to speed up stack accesses */
- extern ptr SL; /* Stack Limit */
- /********* Global inline functions ********/
- #define btol(c) (long)((c) & MASK1)
- #define btou(c) (unsigned int)((c) & MASK1)
- #define btos(c) (c)
- #define max(i,j) (((i) > (j)) ? (i) : (j))
- #define min(i,j) (((i) < (j)) ? (i) : (j))
|