/* emulator => Comm-progi */

#define EMULATOR_CURRENT_VERSION "ECV_2.4"
#define CURRENT_VERSION_ACCEPTED "CurrVersAcc"


struct confuncs {
	VOID	__saveds (*writecon)(APTR, UBYTE *, ULONG);
	ULONG	__saveds (*hostmon)(APTR, UBYTE *, ULONG);
	ULONG	__saveds (*usermon)(APTR, struct IntuiMessage *, UBYTE *, ULONG);
	BOOL	__saveds (*signal)(APTR, ULONG);

	BOOL	__saveds (*alloc_resources)(APTR);
	VOID	__saveds (*free_resources)(APTR);
	BOOL	__saveds (*open_console)(APTR);
	VOID	__saveds (*close_console)(APTR);

	BOOL	__saveds (*clear_term)(APTR);
	BOOL	__saveds (*reset_term)(APTR);
	BOOL	__saveds (*reset_style)(APTR);
	BOOL	__saveds (*reset_charset)(APTR);
	BOOL	__saveds (*parameters)(APTR);
};

struct hostfuncs {
	BOOL	__saveds	(*xem_swrite)(UBYTE *, ULONG);
	LONG	__saveds	(*xem_sread)(UBYTE *, ULONG size, LONG timeout);
	BOOL	__saveds	(*xem_sbreak)(VOID);
	VOID	__saveds	(*xem_sstart)(VOID);
	BOOL	__saveds	(*xem_sstop)(VOID);
	BOOL	__saveds	(*xem_tgets)(UBYTE *, UBYTE *, ULONG);
	VOID	__saveds (*xem_tbeep)(ULONG, ULONG);

	ULONG	__saveds __regargs	(*xpr_options)(LONG, struct xpr_option **);
	LONG	__saveds					(*xpr_sflush)(VOID);
};


struct EmuMsg {
	struct Message em_msg;
	APTR em_arg;		/* NULL, when error */
};


/* Comm-progi => emulator */

struct sharedvars {
	struct	hostfuncs  *hf;
	struct	Screen	**scr;
	struct	Window	**win;
	struct	RastPort **rp;

	ULONG		*extsig;
	UWORD		*depth;	/* screen depth */

	struct	ExecBase			*SysBase;
	struct	DosLibrary		*DOSBase;
	struct	GfxBase			*GfxBase;
	struct	IntuitionBase	*IntuitionBase;
	struct	DiskFontBase	*DiskFontBase;
	struct	Library			*ConsoleDevice;
	struct	Library			*KeymapBase;
	struct	RxsLib			*RexxSysBase;
};
