diff -Naur HairyDairyMaid_WRT54G_Debrick_Utility_v48.orig/wrt54g.c HairyDairyMaid_WRT54G_Debrick_Utility_v48/wrt54g.c
--- HairyDairyMaid_WRT54G_Debrick_Utility_v48.orig/wrt54g.c	2006-09-17 16:27:00.000000000 +0200
+++ HairyDairyMaid_WRT54G_Debrick_Utility_v48/wrt54g.c	2008-02-21 18:00:55.000000000 +0100
@@ -1266,7 +1266,7 @@
     else
     {
        // Wait Until Ready
-       while ( (ejtag_read_h(addr) & STATUS_READY) != (data & STATUS_READY) );
+       while (ejtag_read_h(addr) != data);
     }
 
 }
@@ -1415,7 +1415,7 @@
       ejtag_write_h(addr, data_lo);
 
       // Wait for Completion
-      sflash_poll(addr, (data & 0xffff));
+      sflash_poll(addr, data>>16);
 
       // Now Handle Other Half Of Word
       ejtag_write_h(FLASH_MEMORY_START+(0x555 << 1), 0x00AA00AA);
@@ -1424,7 +1424,7 @@
       ejtag_write_h(addr+2, data_hi);
 
       // Wait for Completion
-      sflash_poll(addr+2, ((data >> 16) & 0xffff));
+      sflash_poll(addr+2, data & 0xffff);
     }
 
     if (cmd_type == CMD_TYPE_SST)
@@ -1574,6 +1574,8 @@
     int run_option;
     int j;
 
+    setbuf(stdin, NULL);
+
     printf("\n");
     printf("====================================\n");
     printf("WRT54G/GS EJTAG Debrick Utility v4.8\n");

