1: /* 2: * Descriptor flags, note that these must match the values in h/rt.h. 3: */ 4: #ifdef VAX 5: #define F_NQUAL 0x80000000 /* set if NOT string qualifier */ 6: #define F_VAR 0x40000000 /* set if variable */ 7: #define F_TVAR 0x20000000 /* set if trapped variable */ 8: #define F_PTR 0x10000000 /* set if value field is pointer */ 9: #define OFFSETMASK 0x1fffffff /* offset mask for variables */ 10: #endif VAX 11: 12: #ifdef PORT 13: #define F_NQUAL x /* set if NOT string qualifier */ 14: #define F_VAR x /* set if variable */ 15: #define F_TVAR x /* set if trapped variable */ 16: #define F_PTR x /* set if value field is pointer */ 17: #define OFFSETMASK x /* offset mask for variables */ 18: #endif PORT 19: 20: #ifdef PDP11 21: #define F_NQUAL 0100000 /* set if NOT string qualifier */ 22: #define F_VAR 0040000 /* set if variable */ 23: #define F_TVAR 0020000 /* set if trapped variable */ 24: #define F_PTR 0010000 /* set if value field is pointer */ 25: #define OFFSETMASK 0017777 /* offset mask for variables */ 26: #endif PDP11 27: 28: /* 29: * Type codes (descriptors and blocks). 30: */ 31: 32: #define T_INTEGER 1 /* short integer (not put in heap) */ 33: /* 34: * For 32 bit machines, e.g. the Vax, LONGINT's and INTEGER's are 35: * the same. It would be better to have a generic integer type, and 36: * also have LONGINT's and SHORTINT's, but at the current time, 37: * LONGINT is used both to refer to integers not representable by 38: * a short, and as a generic integer type. 39: */ 40: #ifdef LONGS 41: #define T_LONGINT 2 /* long integer type */ 42: #else LONGS 43: #define T_LONGINT 1 /* long integer type */ 44: #endif LONGS 45: #define T_REAL 3 /* real number */ 46: #define T_CSET 4 /* cset */ 47: #define T_FILE 5 /* file block */ 48: #define T_PROC 6 /* procedure block */ 49: #define T_LIST 7 /* list header block */ 50: #define T_TABLE 8 /* table header block */ 51: #define T_RECORD 9 /* record block */ 52: #define T_TELEM 10 /* table element block */ 53: #define T_LELEM 11 /* list element block */ 54: #define T_TVSUBS 12 /* substring trapped variable */ 55: #define JUNK_13 13 /* (no longer used) */ 56: #define T_TVTBL 14 /* table element trapped variable */ 57: #define T_TVPOS 15 /* &pos trapped variable */ 58: #define T_TVRAND 16 /* &random trapped variable */ 59: #define T_TVTRACE 17 /* &trace trapped variable */ 60: #define T_ESTACK 18 /* expression stack block */ 61: #define T_EBLOCK 19 /* expression heap block */ 62: #ifdef SETS 63: #define T_SET 20 /* set header block */ 64: #define T_SELEM 21 /* set element block */ 65: 66: #define MAXTYPE 21 /* maximum type number */ 67: #else SETS 68: 69: #define MAXTYPE 19 /* maximum type number */ 70: #endif SETS 71: 72: /* 73: * Descriptor types and flags. 74: */ 75: 76: #define D_VAR (F_VAR | F_NQUAL) 77: #define D_TVAR (F_VAR | F_TVAR | F_NQUAL) 78: 79: #define D_NULL 0 80: #define D_INTEGER (T_INTEGER | F_NQUAL) 81: #define D_LONGINT (T_LONGINT | F_PTR | F_NQUAL) 82: #define D_REAL (T_REAL | F_PTR | F_NQUAL) 83: #define D_CSET (T_CSET | F_PTR | F_NQUAL) 84: #define D_FILE (T_FILE | F_PTR | F_NQUAL) 85: #define D_PROC (T_PROC | F_PTR | F_NQUAL) 86: #define D_LIST (T_LIST | F_PTR | F_NQUAL) 87: #define D_TABLE (T_TABLE | F_PTR | F_NQUAL) 88: #define D_RECORD (T_RECORD | F_PTR | F_NQUAL) 89: #define D_TELEM (T_TELEM | F_PTR | F_NQUAL) 90: #define D_LELEM (T_LELEM | F_PTR | F_NQUAL) 91: #define D_TVSUBS (T_TVSUBS | D_TVAR) 92: #define D_TVTBL (T_TVTBL | D_TVAR) 93: #define D_TVPOS (T_TVPOS | D_TVAR) 94: #define D_TVRAND (T_TVRAND | D_TVAR) 95: #define D_TVTRACE (T_TVTRACE | D_TVAR) 96: #define D_ESTACK (T_ESTACK | F_PTR | F_NQUAL) 97: #define D_EBLOCK (T_EBLOCK | F_PTR | F_NQUAL) 98: #define D_SET (T_SET | F_PTR | F_NQUAL) 99: #define D_SELEM (T_SELEM | F_PTR | F_NQUAL)