home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The C Users' Group Library 1994 August
/
wc-cdrom-cusersgrouplibrary-1994-08.iso
/
vol_100
/
131_01
/
acrl.h
< prev
next >
Wrap
Text File
|
1985-03-10
|
4KB
|
153 lines
/*
************************************************************
ACRL Globals
************************************************************
W. Lemiszki 9 Jan 1982
Filename: acrl.h BDS C v1.50
*/
#include <bdscio.h> /* standard stuff */
#define EOS '\0' /* end of string */
#define byte char /* pseudonym for clarity */
#define addr unsigned /* ditto */
byte verbose; /* TRUE to list every byte */
byte printflg; /* TRUE to generate listing */
int objflg; /* TRUE to generate object file */
byte xrel; /* current expression reloc attr */
byte infunc; /* TRUE within function */
byte endflag; /* TRUE after 'end' stmt */
byte prepost; /* prelude/normal/postlude switch */
#define PRE 1 /* prelude */
#define POST 2 /* postlude */
int pass; /* pass counter */
addr lc; /* location counter (in crl file) */
addr floc; /* function location counter */
addr outloc; /* output file location */
int numfunc; /* # of functions declared */
int linecnt; /* line # counter */
char *lptr; /* input line pointer */
byte class; /* token class */
byte type; /* type (within class) */
int value; /* token value */
byte reloc; /* TRUE if relocatable */
char errchar; /* error character */
int errcnt; /* total no. of errors */
byte specflag; /* TRUE for special list address field */
addr specval; /* the value to print */
int codelen; /* length of code buffer */
int rellen; /* length of relocation list */
byte incflag; /* TRUE when in include file */
int linesav; /* linecnt save during include */
struct entry /* symbol table entry */
{
char *nam;
byte clas;
byte typ;
addr val;
struct entry *next;
};
struct entry *id; /* points to most recently found ident */
struct entry *labid; /* label entry pointer */
char *lnam; /* label name pointer */
byte ltyp; /* label type */
#define ROOTSIZ 322 /* 256 reserved, 64 functions, +2 */
struct entry *roots[ROOTSIZ]; /* symbol table lists */
#define RESVD 0 /* base of reserved words */
#define GLOBAL 256 /* global symbols */
#define FUNCS 257 /* function list */
#define LOCAL 258 /* local symbols */
int faddr[64]; /* function address (lc) table */
int flen[64]; /* function length table */
char infile[BUFSIZ]; /* input file buffer */
char iname[20]; /* input filename */
char outfile[BUFSIZ]; /* output file buffer */
char oname[20]; /* output filename */
char incfile[BUFSIZ]; /* include file buffer */
char line[MAXLINE]; /* input line buffer */
char tokbuf[MAXLINE]; /* scanner token buffer */
char cctab[128]; /* character class table */
byte codebuf[200]; /* the code buffer */
addr relbuf[500]; /* relocation list buffer */
/* (relbuf must follow codebuf. During
directory output, a 512 byte code
buffer is needed. */
/* TOKEN CLASSES */
#define EOL 0 /* end of line */
#define MACHINE 1 /* machine instruction */
#define PSEUDO 2 /* pseudo op */
#define OPERATOR 3 /* expression operator */
#define OPERAND 4 /* operand (or unary) */
#define IDENT 5 /* identifier (symbol) */
#define STRING 6 /* quoted string */
#define MISC 7 /* misc tokens */
/* PSEUDO-OP Types */
#define psEND 1
#define psDB 2
#define psDW 3
#define psEQU 4
#define psSET 5
#define psDS 6
#define psFUNC 7
#define psFEND 8
#define psINCL 9
/* OPERATOR Types */
#define opOR 1
#define opAND 2
#define opXOR 3
#define opMOD 4
#define opSHL 5
#define opSHR 6
/* OPERAND Types */
#define opNOT 1
#define opHIGH 2
#define opLOW 3
#define NUMBER 4
/* IDENTIFIER Types */
#define idLAB 1 /* statement label */
#define idEQU 2 /* equate */
#define idSET 3 /* redefinable symbol */
#define idMUL 4 /* multiply defined symbol */
#define idUND 5 /* undefined symbol */
#define idFUNC 6 /* function name */
#define RELBIT 0x80 /* If this bit is set (in type byte) */
/* the identifier is relocatable */