/*
 *	Il suffit de definir le symbole DEBUG pour voir toutes les actions du
 *	handler dans une fenetre.
 *
 *	Le truc marche en mettant toutes les instructions de debug en commentaire
 *	si il n'est pas defini.
 *
 *	Le compilateur doit supporter les commentaires du C++.
 */

#ifdef DEBUG
#define DB
#else
#define DB / ## /
#endif

#define NUM_HC		7
#define NUM_FILES	(NUM_HC+5)

#define ROOT		0
#define HC1			1
#define HC2			2
#define HC3			3
#define HC4			4
#define HC5			5
#define HC6         6
#define LOOP		(NUM_HC + 0)
#define MODEM		(NUM_HC + 1)
#define FROM		(NUM_HC + 2)
#define TO			(NUM_HC + 3)
#define BAUD		(NUM_HC + 4)


DB void Say (char *);

extern ULONG ReadFlag;
extern struct Process *Process;
extern struct List ReadList;


void main (void);

void ReturnPacket (struct DosPacket *, struct Process *);
struct DosPacket *WaitPacket(struct Process *);
void InitRead (void);

void ReadSer (void);
void WriteSer (UBYTE *Buffer, UWORD Size);
void FlushWriteSer (void);
BOOL OpenSer (void);
void CloseSer (void);
void StopIO (struct IOExtSer *);
void SetBaud (UWORD);
UWORD GetBaud (void);
void SyncSer (void);

UWORD DataSize (UWORD File);
UWORD PutData (UWORD File, UBYTE *Buffer, UWORD Size);
UWORD GetData (UWORD File, UBYTE *Buffer, UWORD Size);
void ClassData (UBYTE *Buffer, UWORD Size);
UWORD OpenData (void);
void CloseData (void);

UBYTE *GetName (UWORD File);
UBYTE *ShowName (UWORD File);
UBYTE *GetComment (UWORD File);
UWORD WhichFile (UBYTE *);


#ifdef DEBUG

struct DebugInfo
{
	ULONG HCSig;
	struct Process *HCProc;
	ULONG OutSig;
	struct Process *OutProc;
	char Msg[256];
};

extern struct DebugInfo dbi;

void Outer (struct DebugInfo *);
#include "source:launch/launch.h"

#endif
