diff --git a/82802ab.c b/82802ab.c
index 1f3a668..3fec376 100644
--- a/82802ab.c
+++ b/82802ab.c
@@ -139,7 +139,6 @@
 		msg_cerr("ERASE FAILED!\n");
 		return -1;
 	}
-	msg_cinfo("DONE BLOCK 0x%x\n", page);
 
 	return 0;
 }
@@ -162,18 +161,10 @@
 	int i;
 	chipaddr bios = flash->virtual_memory;
 
-	msg_cinfo("Programming at: ");
 	for (i = 0; i < flash->total_size; i++) {
-		if ((i & 0x3) == 0)
-			msg_cinfo("address: 0x%08lx", (unsigned long)i * 1024);
-
                 write_page_82802ab(bios, buf + i * 1024, bios + i * 1024, 1024);
-
-		if ((i & 0x3) == 0)
-			msg_cinfo("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
 	}
 
-	msg_cinfo("DONE!\n");
 	return 0;
 }
 
diff --git a/jedec.c b/jedec.c
index b4bd3f1..fea17b6 100644
--- a/jedec.c
+++ b/jedec.c
@@ -402,15 +402,11 @@
 
 	mask = getaddrmask(flash);
 
-	msg_cinfo("Programming page: ");
 	for (i = 0; i < total_size / page_size; i++) {
-		msg_cinfo("%04d at address: 0x%08x", i, i * page_size);
 		if (write_page_write_jedec_common(flash, buf + i * page_size,
 					   i * page_size, page_size, mask))
 			failed = 1;
-		msg_cinfo("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
 	}
-	msg_cinfo("DONE!\n");
 
 	return failed;
 }
@@ -424,18 +420,10 @@
 
 	mask = getaddrmask(flash);
 
-	msg_cinfo("Programming page: ");
 	for (i = 0; i < flash->total_size; i++) {
-		if ((i & 0x3) == 0)
-			msg_cinfo("address: 0x%08lx", (unsigned long)i * 1024);
-
                 write_sector_jedec_common(flash, buf + i * 1024, dst + i * 1024, 1024, mask);
-
-		if ((i & 0x3) == 0)
-			msg_cinfo("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
 	}
 
-	msg_cinfo("DONE!\n");
 	return 0;
 }
 
diff --git a/m29f400bt.c b/m29f400bt.c
index b6a3249..3c00306 100644
--- a/m29f400bt.c
+++ b/m29f400bt.c
@@ -39,8 +39,6 @@
 
 		/* transfer data from source to destination */
 		chip_writeb(*src, dst);
-		//chip_writeb(0xF0, bios);
-		//programmer_delay(5);
 		toggle_ready_jedec(dst);
 		msg_cerr("Value in the flash at address 0x%lx = %#x, want %#x\n",
 		     (dst - bios), chip_readb(dst), *src);
@@ -113,7 +111,6 @@
 
 	chip_writeb(0xAA, bios + 0xAAA);
 	chip_writeb(0x55, bios + 0x555);
-	//chip_writeb(0x10, bios + 0xAAA);
 	chip_writeb(0x30, dst);
 
 	programmer_delay(10);
@@ -143,43 +140,18 @@
 	int page_size = flash->page_size;
 	chipaddr bios = flash->virtual_memory;
 
-	msg_cinfo("Programming page:\n ");
-	/*********************************
-	*Pages for M29F400BT:
-	* 16	0x7c000		0x7ffff		TOP
-	*  8 	0x7a000		0x7bfff
-	*  8 	0x78000		0x79fff
-	* 32	0x70000		0x77fff
-	* 64	0x60000		0x6ffff
-	* 64	0x50000		0x5ffff
-	* 64	0x40000		0x4ffff
-	*---------------------------------
-	* 64	0x30000		0x3ffff
-	* 64	0x20000		0x2ffff
-	* 64	0x10000		0x1ffff
-	* 64	0x00000		0x0ffff		BOTTOM
-	*********************************/
-	msg_cinfo("total_size/page_size = %d\n", total_size / page_size);
 	for (i = 0; i < (total_size / page_size) - 1; i++) {
-		msg_cinfo("%04d at address: 0x%08x\n", i, i * page_size);
 		write_page_m29f400bt(bios, buf + i * page_size,
 				     bios + i * page_size, page_size);
-		msg_cinfo("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
 	}
 
-	msg_cinfo("%04d at address: 0x%08x\n", 7, 0x70000);
 	write_page_m29f400bt(bios, buf + 0x70000, bios + 0x70000, 32 * 1024);
 
-	msg_cinfo("%04d at address: 0x%08x\n", 8, 0x78000);
 	write_page_m29f400bt(bios, buf + 0x78000, bios + 0x78000, 8 * 1024);
 
-	msg_cinfo("%04d at address: 0x%08x\n", 9, 0x7a000);
 	write_page_m29f400bt(bios, buf + 0x7a000, bios + 0x7a000, 8 * 1024);
 
-	msg_cinfo("%04d at address: 0x%08x\n", 10, 0x7c000);
 	write_page_m29f400bt(bios, buf + 0x7c000, bios + 0x7c000, 16 * 1024);
 
-	msg_cinfo("\n");
-
 	return 0;
 }
diff --git a/sharplhf00l04.c b/sharplhf00l04.c
index ab1652d..d291573 100644
--- a/sharplhf00l04.c
+++ b/sharplhf00l04.c
@@ -33,7 +33,6 @@
 
 	// clear status register
 	chip_writeb(0x50, bios);
-	msg_cdbg("Erase at 0x%lx\n", bios);
 	status = wait_82802ab(flash->virtual_memory);
 	print_status_82802ab(status);
 	// clear write protect
@@ -49,7 +48,6 @@
 	// now let's see what the register is
 	status = wait_82802ab(flash->virtual_memory);
 	print_status_82802ab(status);
-	msg_cinfo("DONE BLOCK 0x%x\n", blockaddr);
 
 	if (check_erased_range(flash, blockaddr, blocklen)) {
 		msg_cerr("ERASE FAILED!\n");
@@ -65,14 +63,10 @@
 	int page_size = flash->page_size;
 	chipaddr bios = flash->virtual_memory;
 
-	msg_cinfo("Programming page: ");
 	for (i = 0; i < total_size / page_size; i++) {
-		msg_cinfo("%04d at address: 0x%08x", i, i * page_size);
 		write_page_82802ab(bios, buf + i * page_size,
 				    bios + i * page_size, page_size);
-		msg_cinfo("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
 	}
-	msg_cinfo("\n");
 
 	return 0;
 }
diff --git a/sst28sf040.c b/sst28sf040.c
index 9ba0541..d81f831 100644
--- a/sst28sf040.c
+++ b/sst28sf040.c
@@ -120,15 +120,11 @@
 
 	unprotect_28sf040(bios);
 
-	msg_cinfo("Programming page: ");
 	for (i = 0; i < total_size / page_size; i++) {
 		/* write to the sector */
-		msg_cinfo("%04d at address: 0x%08x", i, i * page_size);
 		write_sector_28sf040(bios, buf + i * page_size,
 				     bios + i * page_size, page_size);
-		msg_cinfo("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
 	}
-	msg_cinfo("\n");
 
 	protect_28sf040(bios);
 
diff --git a/sst49lfxxxc.c b/sst49lfxxxc.c
index f31e22c..a6571ef 100644
--- a/sst49lfxxxc.c
+++ b/sst49lfxxxc.c
@@ -84,16 +84,11 @@
 	chipaddr bios = flash->virtual_memory;
 
 	write_lockbits_49lfxxxc(flash, 0);
-	msg_cinfo("Programming page: ");
 	for (i = 0; i < total_size / page_size; i++) {
-
 		/* write to the sector */
-		msg_cinfo("%04d at address: 0x%08x", i, i * page_size);
 		write_page_82802ab(bios, buf + i * page_size,
 				      bios + i * page_size, page_size);
-		msg_cinfo("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
 	}
-	msg_cinfo("\n");
 
 	chip_writeb(0xFF, bios);
 
diff --git a/stm50flw0x0x.c b/stm50flw0x0x.c
index dd6cbe7..bc3a5e8 100644
--- a/stm50flw0x0x.c
+++ b/stm50flw0x0x.c
@@ -100,7 +100,6 @@
 
 	// clear status register
 	chip_writeb(0x50, bios);
-	msg_cdbg("Erase at 0x%lx\n", bios);
 	// now start it
 	chip_writeb(0x32, bios);
 	chip_writeb(0xd0, bios);
@@ -112,7 +111,6 @@
 		msg_cerr("ERASE FAILED!\n");
 		return -1;
 	}
-	msg_cinfo("DONE BLOCK 0x%x\n", sector);
 
 	return 0;
 }
@@ -130,10 +128,7 @@
 		return -1;
 	}
 
-	msg_cinfo("Erasing page:\n");
 	for (i = 0; i < total_size / page_size; i++) {
-		msg_cinfo("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
-		msg_cinfo("%04d at address: 0x%08x ", i, i * page_size);
 		//if (unlock_block_stm50flw0x0x(flash, i * page_size)) {
 		//	msg_cerr("UNLOCK FAILED!\n");
 		//	return -1;
@@ -143,7 +138,6 @@
 			return -1;
 		}
 	}
-	msg_cinfo("\n");
 
 	return 0;
 }
