I have designed my Pic16f877a I2C to send many instructions. Also, to receive many bytes. I would like to know if I failed confirming receiving any of ACK, should I start the whole operation from the beginning, I mean should I start sending the instructions from the beginning.
I don´t know what compiler you are using, and even if I2C handshake are you performing by compiler API or manual handling.
If this case, I could sugest you to pack data into a frame, with a CRC, in order to detect if where detected some errors.