#define LEN	15
#define NPOS	(16*16*2 + 1)

#define O_BIT	0x100
#define ACROSS	0
#define DOWN	O_BIT

#define XPOSED(p)	((p) & O_BIT)
#define ORIENTATION(p)	((p) & O_BIT)

#define R_BITS	0xF0
#define ROW(p)		(((p) & R_BITS) >> 4)

#define C_BITS 0x0F
#define COLUMN(p)	((p) & C_BITS)

#define ONBOARD(p)	(ROW(p) && COLUMN(p))

#define POSITION(o,r,c)	((o) | ((r) << 4) | (c))
#define TRANSPOSE(p)	POSITION (ORIENTATION (~p), COLUMN (p), ROW (p))

#define	CENTER	POSITION (ACROSS, 8, 8)

extern char board[];
#define EMPTY		((char) 0)

extern long check_set[];
#define EMPTY_SET	(0L)
#define FULL_SET	(0x07FFFFFEL)
#define ADD_SET(s,e)	((s) |= (1L << (e)))
#define FLIP_SET(s,e)	((s) ^= (1L << (e)))
#define MEMBER(s,e)	((s) & (1L << (e)))

extern char check_sum[];
extern char wordmult[], lettermult[];
