Just thoughts...
Can you do one I2CREAD in place of six or at least narrow it down to three?
Code:
I2CREAD DPIN,CPIN,SAD_W,ZOUT_H,[Z.BYTE1]
I2CREAD DPIN,CPIN,SAD_W,ZOUT_L,[Z.BYTE0]
becomes
Code:
I2CREAD DPIN,CPIN,SAD_W,ZOUT_H,[Z.BYTE1,Z.BYTE0]
For the time thing you may want to look at this:
http://www.picbasic.co.uk/forum/showthread.php?t=190
and
http://www.picbasic.co.uk/forum/showthread.php?t=3251

Yep, they are interrupt based but...