check returned checksum
use more for sending bulk from memory to RAM

This clears up some underrun/desync issues
fix stray bits from bulk transfer sticking around

This was a pernicious bug as it seems to depend on the exact data. Fixed
by making sure the last thing to be written (which is never ACK'd) is a 0,
so the GS doesn't think it is getting another address/length pair before we
are ready to send it along.