/* pe7inc.h */
/* Necessary includes for second part */
/*
 * This file makes the external variables of the main program, pe7mai.c,
 * visible to the other parts of the program pe7pta.c and pe7ptb.c
 *
 *	Modification History:
 *  December 4, 1986      Created pe7inc.h
 *
 */
#define UTEXT	0		/* Set for 8 bit text strings */

#include <std.h>		/* Standard UNIX definitions */
#include <sys.h>		/* Idris system subroutines */
/*#include "sgtty.h"		/* Special tty defs */
#include "pe7tty.h"		/* Special tty defs */

/* Symbol Definitions */

#define BUFSIZE 80		/* A buffer size for I/O */
#define MAXTRY	8		/* Times to retry a packet */
#define SOH		1		/* Start of header */
#define CR		13		/* ASCII Carriage Return */
#define XON		17		/* ASCII xon character */
#define SP		32		/* ASCII space */
#define DEL		127		/* Delete (rubout) */

#define MAXPACKSIZ	94	/* Maximum packet size */
#define MAXFNAME 50 /* My maximum for filename length */
#define DEFPACKSIZ	80	/* The default packet size */
#define SPOVER	14		/* The closest I may come to the end of the output
							buffer */
#define MYTIME	10		/* Seconds after which I should be timed out */
#define MYPAD	0		/* Number of padding characters I will need */
#define MYPCHAR 0		/* Padding character I need (NULL) */
#define MYEOL	'\r'	/* End-Of-Line character I need */
#define MYQUOTE '#'		/* Quote character I will use */
#define DEFQBIN 'Y'		/* I will do binary quoting */
#define MYQBIN	'&'		/* Binary quoting character */
#define DEFCHKT	'1'		/* Default Check sum type */
#define MYCHKT	'1'		/* Check sum type */
#define DEFREPT '~'		/* Repeat character I will use */
#define MYREPT	'~'		/* Repeat character that I need */
#define TRUE	-1		/* Boolean constants */
#define FALSE	0


/* Macro Definitions */

/*
 * tochar: convert a control character to a printable one by adding a space.
 *
 * unchar: undoes tochar.
 *
 * ctl:		converts between control characters and printable characters by
 *			toggling the control bit (ie. ^A becomes A and A becomes ^A).
 */

#define tochar(ch)	((ch) + ' ')
#define unchar(ch)	((ch) - ' ')
#define ctl(ch)		((ch) ^ 64)

/* Global Variables */

/* This is the format for the return packet from the other user */
extern int
	spsiz ,	/* Maximum send packet size */
	timint ,	/* Timeout for foreign host on sends */
	pad ;			/* How much padding to send */
extern TEXT
	padchar ,		/* Padding character to send */
	eol ,		/* End-Of-Line character to send */
	quote ,	/* Quote character in incoming data */
	qbin ,			/* binary conversion character */
	chkt ,		/* Checksum type '1','2', or '3' */
	rept ;			/* Repeat character if repeat supported */

extern int
	size[2] ,		/* Size of present data in packets */
	empty[2] ,		/* Packets ok to fill if zero */
	pknum ,			/* Current packet buffer index */
	n ,				/* Packet number */
	nxo ,			/* Output packet counter for display */
	nxi ,			/* Nak packet counter for display */
	nxs ,			/* Saved nak counter */
	repeat_count ,	/* Repeat counter for repeated characters */
	numtry ,			/* Times this packet retried */
	oldtry ,			/* Times previous packet retried */
	iflg ,			/* Indicates to turn on the image mode */
	image ,			/* -1 means 8-bit mode (driven by iflg) */
	speed ,			/* baud rate of the link */
	fflg ,			/* Indicates to send finish command */
	rflg ,			/* Indicates receive mode */
	sflg ,			/* Indicates send mode */
	xflg ,			/* Indicates server mode */
	gflg ,			/* Indicates get file mode */
	vflg ,			/* Verbose messages in server mode */
	tflg ,			/* Turn around flag */
	pflg ,			/* What kind of parity are we using? */
	spflg ,			/* This is our start-up parity flag */
	debug ,			/* indicates level of debugging output (0=none) */
	filnamcnv ,		/* -1 means do file name case conversions */
	filecount ;		/* Number of files left to send */

extern TEXT
	state ,			/* Present state of the automaton */
	rqbin ,			/* 8 bit quote character saved in rpar */
	sqbin ,			/* 8 bit quote character used in spar */
	rrept ,			/* Repeat character used in spar */
	**filelist ,		/* List of files to be sent */
	*filnam ,		/* Current file name */
	*files[10] ,		/* Pointers for the server file names */
	filename_buffer[MAXPACKSIZ] ; /* Buffer for the server file name */
extern TEXT
	recpkt[MAXPACKSIZ] , /* Receive packet buffer */
	*packet[2] ,		/* Packet pointers */
	packet0[MAXPACKSIZ] , /* Send packet zero buffer */
	packet1[MAXPACKSIZ] ; /* Send packet one buffer */

extern FILE	ttyfd ;		/* File descriptor of tty for I/O, 0 if remote */

extern FIO *fd ;			/* pfio pointer */
extern FIO	pfio ;			/* Buffer structure for the files */

extern struct tty
		ttymode ,	/* tty raw mode */
		savemode ;	/* tty cooked mode */

extern struct {
	int files;			/* Number of files */
	int fc;				/* Number of characters in files */
	int pli;			/* Number of packets received */
	int plo;			/* Number of packets sent */
	int cli;			/* Number of characters received */
	int clo;			/* Number of characters sent */
	ULONG time;			/* Total time for transaction */
  } total , file ;

/* pe7inc.h End-of-file */
