diff -ru linux_orig/main.c linux/main.c
--- linux_orig/main.c	Fri Feb 13 16:53:48 2004
+++ linux/main.c	Mon Jul 10 16:54:45 2006
@@ -205,7 +205,7 @@
 	}
 	else
 	{
-		sprintf( s, "FPR%04X", firstaddr );
+		sprintf( s, "PRO%04X", firstaddr );
 		com_puts( s );
 		for( addr = firstaddr;; addr++ )
 		{
@@ -215,9 +215,13 @@
 			write(fd,&d1,1);
 			
 			//if( d1 == 0xA5 ) com_putc( 0xA5 );			// send A5 two times
-			if( d1 == 0xA5 ) write(fd,&d1,1);			// send A5 two times
+			if( d1 == 0xA5 )
+			{
+				d1 = 0;
+				write(fd,&d1,1);
+			}	// send 0 after 0xA5
 			
-			if( (addr & 0xF) == 0xF )
+			if( (addr & 0x1FF) == 0x1FF )
 			{
 				tcdrain(fd);
 				printf( "\033[AProgramming: %04X - %04X\n", firstaddr, addr + 1);				
@@ -231,7 +235,7 @@
 			if( addr == lastaddr )
 			{
 				com_putc( 0xA5);
-				com_putc( 0x00);
+				com_putc( 0xFF);
 				tcdrain(fd);
 				
 				printf( "\033[AProgramming: %04X - %04X\n", firstaddr, addr);	
@@ -239,6 +243,7 @@
 				if( com_getc (TIMEOUT) == COMMAND_DONE )
 				{
 					printf( "Programming successful" );
+                                        com_puts( "RES" );
 				}
 				else
 				{
@@ -260,7 +265,7 @@
 	while (1)
 	{
 		printf("\033[A%s at %ld Baud: %c\n", device, baud_value[baudrate],WAITSTRING[++i&3] );
-		com_puts( "\370\360\340\200\374" );
+		com_puts( "\370\360\340\300\374" );
 		
 		if( com_getc( 0 ) == COMMAND_DONE )
 		{
