diff --git a/82802ab.c b/82802ab.c
index d7194c1..b274d56 100644
--- a/82802ab.c
+++ b/82802ab.c
@@ -33,13 +33,13 @@
 // I need that Berkeley bit-map printer
 void print_82802ab_status(uint8_t status)
 {
-	printf("%s", status & 0x80 ? "Ready:" : "Busy:");
-	printf("%s", status & 0x40 ? "BE SUSPEND:" : "BE RUN/FINISH:");
-	printf("%s", status & 0x20 ? "BE ERROR:" : "BE OK:");
-	printf("%s", status & 0x10 ? "PROG ERR:" : "PROG OK:");
-	printf("%s", status & 0x8 ? "VP ERR:" : "VPP OK:");
-	printf("%s", status & 0x4 ? "PROG SUSPEND:" : "PROG RUN/FINISH:");
-	printf("%s", status & 0x2 ? "WP|TBL#|WP#,ABORT:" : "UNLOCK:");
+	printf_debug("%s", status & 0x80 ? "Ready:" : "Busy:");
+	printf_debug("%s", status & 0x40 ? "BE SUSPEND:" : "BE RUN/FINISH:");
+	printf_debug("%s", status & 0x20 ? "BE ERROR:" : "BE OK:");
+	printf_debug("%s", status & 0x10 ? "PROG ERR:" : "PROG OK:");
+	printf_debug("%s", status & 0x8 ? "VP ERR:" : "VPP OK:");
+	printf_debug("%s", status & 0x4 ? "PROG SUSPEND:" : "PROG RUN/FINISH:");
+	printf_debug("%s", status & 0x2 ? "WP|TBL#|WP#,ABORT:" : "UNLOCK:");
 }
 
 int probe_82802ab(struct flashchip *flash)
@@ -98,20 +98,19 @@
 
 	// clear status register
 	chip_writeb(0x50, bios);
-	//printf("Erase at %p\n", bios);
+
 	// clear write protect
-	//printf("write protect is at %p\n", (wrprotect));
-	//printf("write protect is 0x%x\n", *(wrprotect));
 	chip_writeb(0, wrprotect);
-	//printf("write protect is 0x%x\n", *(wrprotect));
 
 	// now start it
 	chip_writeb(0x20, bios);
 	chip_writeb(0xd0, bios);
 	programmer_delay(10);
+
 	// now let's see what the register is
 	status = wait_82802ab(flash->virtual_memory);
-	//print_82802ab_status(status);
+	print_82802ab_status(status);
+
 	if (check_erased_range(flash, offset, flash->page_size)) {
 		fprintf(stderr, "ERASE FAILED!\n");
 		return -1;
diff --git a/ft2232_spi.c b/ft2232_spi.c
index ee8d67d..7f5da23 100644
--- a/ft2232_spi.c
+++ b/ft2232_spi.c
@@ -70,7 +70,6 @@
 	int f;
 	struct ftdi_context *ftdic = &ftdic_context;
 	unsigned char buf[512];
-	unsigned char port_val = 0;
 	char *portpos = NULL;
 	int ft2232_type = FTDI_FT4232H;
 	enum ftdi_interface ft2232_interface = INTERFACE_B;
@@ -175,9 +174,8 @@
 	 *    dir: 0x0b  CS=output, DI=input, DO=output, SK=output
 	 */
 #define CS_BIT 0x08
-
 	buf[0] = SET_BITS_LOW;
-	buf[1] = (port_val = CS_BIT);
+	buf[1] = CS_BIT;
 	buf[2] = 0x0b;
 	if (send_buf(ftdic, buf, 3))
 		return -1;
@@ -195,7 +193,6 @@
 {
 	struct ftdi_context *ftdic = &ftdic_context;
 	static unsigned char *buf = NULL;
-	unsigned char port_val = 0;
 	int i, ret = 0;
 
 	if (writecnt > 65536 || readcnt > 65536)
@@ -213,10 +210,11 @@
 	 * as possible together.  if we're not expecting to
 	 * read, we can assert CS, write, and deassert CS all
 	 * in one shot.  if reading, we do three separate
-	 * operations. */
+	 * operations.
+	 */
 	printf_debug("Assert CS#\n");
 	buf[i++] = SET_BITS_LOW;
-	buf[i++] = (port_val &= ~CS_BIT);
+	buf[i++] = 0 & ~CS_BIT; /* assertive */
 	buf[i++] = 0x0b;
 
 	if (writecnt) {
@@ -236,20 +234,19 @@
 		buf[i++] = ((readcnt - 1) >> 8) & 0xff;
 		ret = send_buf(ftdic, buf, i);
 		i = 0;
-		if (ret) goto deassert_cs;
-
-		/* FIXME: This is unreliable. There's no guarantee that we read
-		 * the response directly after sending the read command.
-		 * We may be scheduled out etc.
-		 */
-		ret = get_buf(ftdic, readarr, readcnt);
+		if (ret == 0) {
+			/* FIXME: This is unreliable. There's no guarantee that we read
+			 * the response directly after sending the read command.
+			 * We may be scheduled out etc.
+			 */
+			ret = get_buf(ftdic, readarr, readcnt);
+		}
 
 	}
 
-deassert_cs:
 	printf_debug("De-assert CS#\n");
 	buf[i++] = SET_BITS_LOW;
-	buf[i++] = (port_val |= CS_BIT);
+	buf[i++] = CS_BIT;
 	buf[i++] = 0x0b;
 	if (send_buf(ftdic, buf, i))
 		return -1;
diff --git a/sb600spi.c b/sb600spi.c
index 0738a86..5965b3b 100644
--- a/sb600spi.c
+++ b/sb600spi.c
@@ -64,6 +64,11 @@
 	printf("Programming flash");
 	for (i = 0; i < total_size; i++, buf++) {
 		result = spi_byte_program(i, *buf);
+		if (result) {
+			// spi_byte_program reported the error for us already
+			printf_debug("... continuing anyway.\n");
+		}
+
 		/* wait program complete. */
 		if (i % 0x8000 == 0)
 			printf(".");
