Close-ish...

IF INTCON.2=1
is not needed in the interrupt routine, that is what send the code there in the first place.

The rest might work.
Does it??