#define Min(a,b) ((a) < (b) ? (a) : (b))
#define Max(a,b) ((a) > (b) ? (a) : (b))
#define Square(n) ((n)*(n))

#define Maxbuff 2048

#define CGApos(X,Y) (((Y>>1)<<6)+((Y>>1)<<4)+((Y&1)<<13)+(X>>GF1))
#define CGApel(X) (1<<((GF2 - (X - ((X>>GF1)<<GF1)))<<GF3))
#define HERCpos(X,Y) (0x2000*(Y%4)) + (90*(Y>>2)) + (X>>3)
#define HERCpel(X) (1<<(7 - (X%8)))

#define M_inname  (char)0
#define M_in2name (char)01
#define M_outname (char)02
#define M_tmpname (char)03

#define O_readb   (char)00
#define O_writeb  (char)01
#define O_appendb (char)02
#define O_readt   (char)03
#define O_writet  (char)04
#define O_appendt (char)05

#define R_Data  (char)0
#define TR_Data (char)1
#define X_Data  (char)2
#define TX_Data (char)3

#define CGA_HiResImage (char)20 
#define CGA_LoResImage (char)21
#define HERC_MonoImage (char)22
#define EGA_Image      (char)23
#define PGA_Image      (char)24
#define EPSN_Image     (char)30
#define HPLJ_Image     (char)31

#define MONO_scrn (char)0
#define CGA_scrn  (char)1
#define DUAL_scrn (char)2
#define HERC_scrn (char)3
#define EGA_scrn  (char)4
#define PGA_scrn  (char)5

#define NO_pntr    (char)0
#define EPSN_pntr  (char)1
#define HPLJ_pntr  (char)2

#define TRUE -1
#define FALSE 0
#define BOOL int
/*
** Define Structures
*/
struct RData {double y;
              short  f;};

struct TRData {double t;
               double y;};

struct XData {struct complex z;
              short f;}  XData;

struct TXData {double t;
               struct complex z;};

struct FILEHDR {char type;
                double m;
                double b;};

struct DEVICES {char scrn;
                char pntr;
                char pltr;};