#ifndef _XBRA_H
#define _XBRA_H

typedef struct __xbra	*xptr;

typedef struct __xbra
{
  int	xbra_magic;
  int	prog_magic;
  xptr	next;
  short	jump;
  void	(*this)();
}	xbra_struct;

#define _XBRA_MAGIC	0x58425241L /* "XBRA" */
#define _JMP_OPCODE	0x4EF9
#define _JSR_OPCODE	0x4EB9

#define _XBRA_VEC(x)	((void (*)()) &(x.jump))

#define _XBRA_INIT(fn)	{		   \
			   _XBRA_MAGIC,    \
			   _GNUC_MAGIC,    \
			   (xptr) 0,       \
			   _JMP_OPCODE,    \
			   (void (*)()) fn \
			}

#define _TRAP_VEC(n,x)	((void (*)()) (((long) n << 24) | (long) &(x.jump)))

#define _TRAP_INIT(fn)	{		   \
			   _XBRA_MAGIC,    \
			   _GNUC_MAGIC,    \
			   (xptr) 0,       \
			   _JSR_OPCODE,    \
			   (void (*)()) fn \
			}
#endif /* _XBRA_H */
