The 16F688 runs at 8Mhz by default. That implies an instruction every 0.5 microseconds. Running an I2C bus at 100kHz sends a bit every 10 us. Thus, the '688 has 20 instructions to handle each bit. The design in this directory relies on interrupts, but the handler has an overhead of approximately 15 instructions. The 688 could be run faster, but it just makes more sense to busy-wait when I2C communications are received. This directory is deprecated. See i2c-sync instead.