www.pudn.com > pccp047.zip > ASCIIS.C


/*	Copyright (C) 1992 Peter Edward Cann, all rights reserved. 
 *	MicroSoft QuickC: >qcl term.c graphics.lib 
 */ 
 
#include 
#include 
#include 
#include 
#include 
#include"port.h" 
 
#define CAN 24 /* Control-X */ 
 
quit() 
	{ 
	cleanup(); 
	exit(99); 
	} 
 
sendchar(c) 
	unsigned char c; 
	{ 
	while(!((inp(basereg+STATREG)&TXMTMASK)&&(inp(basereg+MSTATREG)&CTSMASK))) 
		if(kbhit()) 
			getch(); 
	outp(basereg, c); 
	} 
 
main(argc, argv) 
	int argc; 
	char **argv; 
	{ 
	FILE *fd; 
	char c, str[256]; 
	int follow, i; 
	index=follow=0; 
	printf("Copyright (C) 1992 Peter Edward Cann, all rights reserved.\n"); 
	if(argc!=5) 
		{ 
		printf("USAGE: term    \n"); 
		exit(1); 
		} 
	printf("ASCII send of %s\n", argv[4]); 
	if((fd=fopen(argv[4], "r"))==NULL) 
		{ 
		printf("Couldn't open file %s.\n"); 
		exit(10); 
		} 
	comnum=atoi(argv[1])-1; 
	speed=atoi(argv[2]); 
	parity=argv[3][1]; 
	databits=argv[3][0]; 
	stopbits=argv[3][2]; 
	setport(); 
	signal(SIGINT, quit); 
	readset(); 
	setup(); 
	while(1) 
		{ 
		if(kbhit()) 
			getch(); 
		if(fgets(str, 255, fd)==NULL) 
			exit(0); 
		for(i=0;(str[i]!='\0')&&(i<256);++i) 
			if(str[i]!='\n') 
				sendchar(str[i]); 
			else 
				sendchar('\r'); 
		do 
			{ 
			while(follow==index); 
			if(buf[follow]!=CAN) 
				putch(buf[follow]); 
			else 
				exit(12); 
			} 
		while(buf[follow++]!='\r'); 
		} 
	}