#include <stdio.h>
#include <ctype.h>
#include <process.h>
#include <time.h>

char fox_patt[] = "\02\07THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG "
	"*****U1234567890 TELECOM CANADA TESTS!\03\07";
char *outpatt = fox_patt;			/* pattern output pointer */

time_t elapsed_time;
time_t start_time;
time_t end_time;
unsigned rate;					/* current baud rate */
unsigned cd_bit = 128;				/* RS-232 DCD mask bit */
int iodev = 0;					/* channel number */
long millisec;					/* G.P. mS timer */

unsigned _stack = 3000;

main(argc,argv)
int argc;
char **argv;
{
int i;
unsigned n;
size_t x;
long out;
char buff[80];
char brkflg;

	rate= 19200;				/* default baud rate */
	while (--argc) {			/* pick the comm. port */
		++argv;
		strip_switch(buff,*argv);
		switch (*buff) {		/* (note misuse) */
			case '1': iodev= 0; break;
			case '2': iodev= 1; break;
			case '3': iodev= 2; break;
			case '4': iodev= 3; break;
			case 'B': rate= atoi(*argv); break;
		}
	}
	brkflg= _break(0,0);			/* get break, */
	_break(1,0);				/* turn it off */
	init_async(iodev);			/* init any hardware, */
	baud(rate);				/* set baud rate */
	uninit_async();				/* remove serial int */

	printf("QBF: %d baud  Control-C to abort\r\n",rate);
	out= 0L;
	start_time= time(NULL);
	while (1) {
		for (i= 500; i--;) out += fox();
		if (iskey() == 3) break;
	}
	time(&end_time);				/* get current time */
	sec2dos(end_time - timezone);			/* (cvt to int) */
	elapsed_time= end_time - start_time;		/* elapsed time */

	printf("Bytes: %,lu\r\n",out);
	printf("Elapsed: %,lu:%02lu\r\n",elapsed_time / 60L,elapsed_time % 60L);
	printf("Bytes/sec: %,lu\r\n",out / elapsed_time);

	_break(1,brkflg);		/* restore break */
}

