Google
 

Trailing-Edge - PDP-10 Archives - SRI_NIC_PERM_FS_1_19910112 - kccdist/include/macsym.h
There are 7 other files named macsym.h in the archive. Click here to see a list.
/*
 * MACSYM.H -- TOPS-20 system hacking macros.
 *
 * Unlike MONSYM, the symbols in MACSYM tend to be the same across all
 * systems, and the bulk of the definitions are assembler macros rather than
 * constants.  So there's no point in automatically generating this file
 * or in referencing MACSYM.UNV; instead we define constants explicitly,
 * and provide some similar macros useful in C.
 */

/* MACRO assembler pseudo equivalents */
#define XWD(lh,rh) (((lh)<<18)|((rh)&0777777))	/* Same as XWD(lh,rh) */
#define BIT(n)  (1<<(35-(n)))			/* BIT(n) same as 1Bn */

/* DEC standard program version word fields */
#define VI_WHO 0700000000000	/* Customer edit code (0-1 DEC, 2-7 customer)*/
#define VI_MAJ  077700000000	/* Major version number */
#define VI_MIN     077000000	/* Minor version/update (1=A, 2=B, ...) */
#define VI_DEC       0400000	/* Flag: output in decimal, not octal */
#define VI_EDN       0377777	/* Program Edit number */
/* Someday PGVER_(maj,min,edn,who) may exist. */

/* Miscellaneous constants. */
#define _INFIN 0377777777777	/* Plus infinity */
#define _MINFI 0400000000000	/* Minus infinity */
#define _FWORD 0777777777777	/* Full word mask */
#define _LHALF 0777777000000	/* Left half mask */
#define _RHALF 0777777		/* Right half mask */

/* PDP-10 PC flags */
#define PC_OVF BIT(0)		/* Overflow */
#define PC_CY0 BIT(1)		/* Carry 0 */
#define PC_CY1 BIT(2)		/* Carry 1 */
#define PC_FOV BIT(3)		/* Floating Overflow */
#define PC_BIS BIT(4)		/* Byte Increment Suppress (First Part Done) */
#define PC_USR BIT(5)		/* User mode */
#define PC_UIO BIT(6)		/* User In-Out mode */
#define PC_LIP BIT(7)		/* Last Instruction Public (KL+KI; not KA+KS)*/
#define PC_AFI BIT(8)		/* Address Failure Inhibit (KL+KI+KS; not KA)*/
#define PC_ATN (BIT(9)|BIT(10))	/* APR Trap Num (Trap 2,1) (KL+KI+KS; not KA)*/
#define PC_FUF BIT(11)		/* Floating Underflow */
#define PC_NDV BIT(12)		/* No Divide */

/* FLD(val,mask) - Make field value from right-justified value */
/* (same as MACSYM's FLD(v,m) macro) */
#define FLD(val,mask) (((unsigned)(val)*((mask)&(-(mask))))&(mask))

/* FLDGET(wd,mask)     - Get right-justified value from field in word */
#define FLDGET(wd,mask) (((unsigned)(wd)&(mask))/((mask)&(-(mask))))

/* FLDPUT(wd,mask,val) - Put right-justified value into field in word */
#define FLDPUT(wd,mask,val) (((wd)&(~(mask)))|FLD(val,mask))