No I'm sorry, but you said the last one was your "Final Question".

Ok, 1 more.

If you're waiting for a zero-cross, then you probably don't need to time the event with TMR0.
Code:
Wait4ZeroCross                    ; Wait for zero-cross, up or down
    btfss   PORTB,0
    goto    WaitForHigh
WaitForLow
    btfsc   PORTB,0
    goto    WaitForLow
    goto    ZeroCrossDone
WaitForHigh
    btfss   PORTB,0
    goto    WaitForHigh
ZeroCrossDone