#include 
#include 
#include 

#define PORT1 0x3F8

//COM1 0x3F8
//COM2 0x2F8
//COM3 0x3E8
//COM4 0x2E8

void main()
{
	int c;
	int lock=0;
	char ch;
	outportb(PORT1+1,0);//turn off interrupts for port1
	outportb(PORT1+3,0x80);//dlab on
	outportb(PORT1+0,0x0C);//9600bps
	outportb(PORT1+1,0x00);//for baud rate upper byte
	outportb(PORT1+3,0x03);//8 bits, no parity, 1 stop bit
	outportb(PORT1+2,0xC7);//fifo
	outportb(PORT1+4,0x0B);//DTR,RTS,and OUT2 

	printf("\n\tRS-232 Interface with robot for obstacle detection and avoidance\n");
	printf("\t------------------------------------------------------------------\n"); 
	printf("Usage\n");
	printf("W->move front\n");
	printf("A->rotate left\n");
	printf("D->rotate right\n");
	printf("H->Halt\n");
	printf("L->Override syncronization\n");
	printf("Esc->Quit\n");
	printf("________________________________________________________________________________\n");
	printf("#");
	do 
	{
		c=inportb(PORT1+5);//check for input
	      if(c&1)
		{
			ch=inportb(PORT1);//store in ch
	            if(ch=='Z')
			{
				printf("Ack recieved.");
				lock=0;
				printf("\n#");
			}
		}

	      if(kbhit())
		{
			ch=getch();

			if(ch=='W')
				printf("Send->Move front");
			else if(ch=='A')
				printf("Send->Rotate Left");
			//else if(ch=='S')
			//	printf("Send->Move Backward");
			else if(ch=='D')
				printf("Send->Rotate Right");
			else if(ch=='H')
				printf("Send->Halt");
			else if(ch=='L') {
				lock=0;
				printf("Syncronization overridden");
				}
			else
				printf("Invalid input");

		    if((ch=='W' || ch=='A' /*|| ch=='S'*/ || ch=='D' || ch=='H' ||ch=='Z') && lock==0)
			{
				outportb(PORT1,ch);//send ch
				lock=1;
			}
			else if(lock==1)
				printf("...Waiting for acknowledgement");
			printf("\n#");
		} 

     }while(ch!=27);
}

    Source: geocities.com/ecma_ver1/files

               ( geocities.com/ecma_ver1)