Hmm... the only ACK from a write on the buffer is got when executing the buffer ("the whole buffer was executed") as a reply to execute buffer, this is in purpose not to have PC's doing "ping-pong" with the AVR during writing of the buffer - the host can do non-blocking I/O to check for a NAK after streaming the write commands. (Or send an NOPACK and read until you get an ACK - then there were no NAK's when writing). Of course it would also be possible to have them all return ACK and then do write lots + count all the ACK's on the host side, but i dont see that as necessary.
Ok scratch that :P, i changed those commands to return ACK too, because that allows me to get by with less job on the flow control, eg. i can wait for all the ACK's to "come home" - then the serial buffer is empty. Simpler, and it allows to use a generic ping-style command function on any command (in case this streaming performance is not needed).
I'm still pondering on the n-byte write ---
Anyways, i attach (just for getting an idea on the protocol, dunno) the main AVR parser source and the newest version of the protocol specification. The AVR source isnt stand alone as in the project has many other .c files which arent needed to understand the protocol, but i dont mean you to compile it, just to be looked at (it does compile though (with all the support files)). It also lacks license header. (It'll be GPLv2+ when tested as working - eg. when i get the flashrom part done).
Now to sleep...