/**********************************************************************\
 *                   SerLib.h   © 1991 G. Glendown                    *
 *                                                                    *
 * This is the Include-File for using SerLib from C.                  *
 * Pragma-Definition only for SAS/C                                   *
\**********************************************************************/

#ifndef NOPRAGMAS
#pragma libcall SerLibBase OpenSerial 1E 43210806
#pragma libcall SerLibBase CloseSerial 24 801
#pragma libcall SerLibBase ChangeData 2A 3210805
#pragma libcall SerLibBase WriteSer 30 09803
#pragma libcall SerLibBase ReadSer 36 09803
#pragma libcall SerLibBase GetStatus 3C 9802
#pragma libcall SerLibBase SerBuffer 42 801
#pragma libcall SerLibBase WaitSer 48 0802
#pragma libcall SerLibBase CheckCD 4E 801
#pragma libcall SerLibBase SendSer 54 09803
#pragma libcall SerLibBase RecvSer 5A 09803
#pragma libcall SerLibBase AbortIOSer 60 0802
#pragma libcall SerLibBase CheckIOSer 66 801
#pragma libcall SerLibBase ClearSer 6C 801
#endif
#ifndef NOPROTOS
struct SerLibdata *OpenSerial(char *, long, long, UBYTE, UBYTE, ULONG);
void CloseSerial(struct SerLibData *);
void ChangeData(struct SerLibData *, long, UBYTE, UBYTE, ULONG);
void WriteSer(struct SerLibData *,char *,long);
long ReadSer(struct SerLibData *,char *, long);
void GetStatus(struct SerLibData *, struct SerStatus *);
long SerBuffer(struct SerLibData *);
ULONG WaitSer(struct SerLibData *,ULONG);
BOOL CheckCD(struct SerLibData *);
void SendSer(struct SerLibData *, char *,long);
void RecvSer(struct SerLibData *,char *, long);
void AbortIOSer(struct SerLibData *,ULONG which);
BOOL CheckIOSer(struct SerLibData *);
void ClearSer(struct SerLibData *);
#endif

#define	ABORT_SEND	1
#define	ABORT_RECV	2


struct SerLibData {
	struct Port 	*SerPort;	/* You shouldn't fool 'round with these	*/
	struct Port 	*SerWPort;	
	struct IOExtSer	*SerReq;	/* babies, they're internal use only!	*/
	struct IOExtSer	*SerWReq;
};

struct SerStatus {
	ULONG	ss_unread;		/* Number of bytes in the serial buffer	*/
	UWORD	ss_status;		/* see io_Status in struct IOExtSer		*/
};
