home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The C Users' Group Library 1994 August
/
wc-cdrom-cusersgrouplibrary-1994-08.iso
/
vol_300
/
335_04
/
frasmdat.h
< prev
next >
Wrap
C/C++ Source or Header
|
1990-12-04
|
3KB
|
194 lines
/*
HEADER: ;
TITLE: Frankenstein Cross Assemblers;
VERSION: 2.0;
DESCRIPTION: " Reconfigurable Cross-assembler producing Intel (TM)
Hex format object records. ";
FILENAME: frasmdat.h;
SEE-ALSO: ;
AUTHORS: Mark Zenier;
*/
/*
description structures and data used in parser and output phases
history September 15, 1987
August 3, 1988 Global
September 14, 1990 6 char portable var
*/
#include <ctype.h>
#define PRINTCTRL(char) ((char)+'@')
#ifndef Global
#define Global extern
#endif
#ifdef USEINDEX
#define strchr index
#endif
#ifdef NOSTRING
extern char * strncpy();
extern char * strchr();
extern int strcmp();
extern int strlen();
#else
#include <string.h>
#endif
#define local
#define TRUE 1
#define FALSE 0
#define hexch(cv) (hexcva[(cv)&0xf])
extern char hexcva[];
/* symbol table element */
struct symel
{
char *symstr;
int tok;
int seg;
long value;
struct symel *nextsym;
int symnum;
};
#define SSG_UNUSED 0
#define SSG_UNDEF -1
#define SSG_ABS 8
#define SSG_RESV -2
#define SSG_EQU 2
#define SSG_SET 3
#define SYMNULL (struct symel *) NULL
struct symel * symbentry();
/* opcode symbol table element */
struct opsym
{
char *opstr;
int token;
int numsyn;
int subsyn;
};
struct opsynt
{
int syntaxgrp;
int elcnt;
int gentabsub;
};
struct igel
{
int selmask;
int criteria;
char * genstr;
};
#define PPEXPRLEN 256
struct evalrel
{
int seg;
long value;
char exprstr[PPEXPRLEN];
};
#define INBUFFSZ 258
extern char finbuff[INBUFFSZ];
extern int nextsymnum;
Global struct symel **symbindex;
#define EXPRLSIZE (INBUFFSZ/2)
extern int nextexprs;
Global int exprlist[EXPRLSIZE];
#define STRLSIZE (INBUFFSZ/2)
extern int nextstrs;
Global char * stringlist[STRLSIZE];
extern struct opsym optab[];
extern int gnumopcode;
extern struct opsynt ostab[];
extern struct igel igtab[];
extern int ophashlnk[];
#define NUMPEXP 6
Global struct evalrel evalr[NUMPEXP];
#define PESTKDEPTH 32
struct evstkel
{
long v;
int s;
};
Global struct evstkel estk[PESTKDEPTH], *estkm1p;
Global int currseg;
Global long locctr;
extern FILE *yyin;
extern FILE *intermedf;
extern int listflag;
extern int hexvalid, hexflag;
Global FILE *hexoutf, *loutf;
extern int errorcnt, warncnt;
extern int linenumber;
#define IFSTKDEPTH 32
extern int ifstkpt;
Global enum { If_Active, If_Skip, If_Err }
elseifstk[IFSTKDEPTH], endifstk[IFSTKDEPTH];
#define FILESTKDPTH 20
Global int currfstk;
#define nextfstk (currfstk+1)
Global struct fstkel
{
char *fnm;
FILE *fpt;
} infilestk[FILESTKDPTH];
Global int lnumstk[FILESTKDPTH];
Global char currentfnm[100];
extern struct symel * endsymbol;
enum readacts
{
Nra_normal,
Nra_new,
Nra_end
} ;
extern enum readacts nextreadact;
char * savestring(), *findgen();
long strtol();
void reservedsym();
char *calloc(), *malloc();
extern struct symel * endsymbol;
extern char ignosyn[] ;
extern char ignosel[] ;
#define NUM_CHTA 6
extern int chtnxalph, *chtcpoint, *chtnpoint ;
Global int *(chtatab[NUM_CHTA]);
int chtcreate(), chtcfind(), chtran();
#define CF_END -2
#define CF_INVALID -1
#define CF_UNDEF 0
#define CF_CHAR 1
#define CF_NUMBER 2