/*
 * File: global2.h
 *
 * Global variable definitions for IMP80 compiler (pass 2 only)
 *
 * Bob Eager   August 2002
 *
 */

#ifndef	EXTERN
#define	EXTERN	extern
#endif

#define	CBSIZE		256		/* Code output buffer size */

/* Type values in 'ptype' */

#define	TY_GENERAL	0
#define	TY_INTEGER	1
#define	TY_REAL		2
#define	TY_RECORD	3
#define	TY_RECORDFORMAT	4
#define	TY_STRING	5
#define	TY_LABEL	6
#define	TY_UNSET	7

EXTERN	INT		arr;
EXTERN	INT		ca;			/* Current code address */
EXTERN	INT		cabuf;			/* Code address of code buffer */
EXTERN	UCHAR		code[CBSIZE+15];	/* Code output buffer */
EXTERN	INT		desads[MAXLEVELS+1];
EXTERN	INT		diaginf[MAXLEVELS+1];	/* Stack offset of diagnostic info for level */
EXTERN	INT		flag[MAXLEVELS+1];	/* 'ptype' for level */
EXTERN	INT		grinf1[MAXREGS];	/* Register use info 1 */
EXTERN	INT		grinf2[MAXREGS];	/* Register use info 2 */
EXTERN	INT		gruse[MAXREGS];		/* Nonzero if register in use */
EXTERN	INT		grat[MAXREGS];		/* Last use of register */
EXTERN	INT		kform;
EXTERN	INT		l[MAXLEVELS+1];		/* Line numbers for starts of levels */
EXTERN	INT		label[MAXLEVELS+1];
EXTERN	INT		lastinst;
EXTERN	INT		litl;
EXTERN	INT		m[MAXLEVELS+1];		/* Dictionary offset for level name */
EXTERN	INT		n;			/* Current local free poINTer */
EXTERN	INT		nam;
EXTERN	INT		olink[MAXREGS];
EXTERN	INT		p;
EXTERN	INT		plabs[MAXLEVELS+1];
EXTERN	INT		plink[MAXLEVELS+1];
EXTERN	INT		ppcurr;			/* Code buffer poINTer */
EXTERN	INT		prec;
EXTERN	INT		ptype;
EXTERN	INT		registers[MAXREGS];
EXTERN	INT		rout;
EXTERN	INT		sstl;			/* Current SST length */
EXTERN	INT		stca;			/* Current ST address */
EXTERN	INT		type;
EXTERN	INT		xregister[MAXREGS];	/* Register claim status */

/* Special name tables (declared in sntabs.h) */

extern	const USHORT	tsname[];
extern	const UINT	sninfo[];

/*
 * End of file: global2.h
 *
 */
