// TinC - Tiny, in C
// tinct13.h


/*--------------------------------------------------------------*/
/* Register control and data type bits */

// MAXREGS must be at least 3
#define MAXREGS 5
// REG_STACKSTART must be at least 2, and less than MAXREG
#define REG_STACKSTART  4
#define REG_NORMAL	'n'
#define REG_STACK	's'


/*--------------------------------------------------------------*/
/* Definition of Token Types, etc */

// be careful with these, ambiguity can cause misunderstanding
// i.e. '*' as OP_PTR means ';' MUST be used to terminate assignments

#define OP_PTR		'*'
#define OP_ADDR		'&'

#define MAINNAME	"Main"


/*--------------------------------------------------------------*/
/* Data Type Sizes (in base units) */

// is the stack character (byte) or word (2 byte) based? ...

#define CHARSTACK	TRUE

#ifdef CHARSTACK
#define SIZEOFCHAR	1
#define SIZEOFINT	2
#define DT_DEFAULT	DT_CHAR
#else
#define SIZEOFCHAR	1
#define SIZEOFINT	1
#define DT_DEFAULT	DT_INT
#endif


/*--------------------------------------------------------------*/
/* Optimization pcodes */

#define PC_BRANCH_EQ	PC_OPTSTART
#define PC_BRANCH_NE	PC_OPTSTART + 1
#define PC_BRANCH_LT	PC_OPTSTART + 2
#define PC_BRANCH_GT	PC_OPTSTART + 3
#define PC_BRANCH_GE	PC_OPTSTART + 4
#define PC_BRANCH_LE	PC_OPTSTART + 5