It seems like there is something funny going on with portc and trisc.
There is a difference between the way these two registers react after a build and after a reset.
After watching the values for both of the registers stepping line by line the I2C works when after the function below PORTC=C0 and TRISC=80
I2C does not work when this is not the case, which is no surprise since the MSSP interface in on PORTC, but why these registers are updating differently after a build rather than a reset I have no idea why?
I2CStart:
; Send START condition and wait for it to complete
BANKSEL SSPCON2 ; BANK 1
bsf SSPCON2,SEN ; Generate START Condition