According to the simulator, your resistors/zeners should give 4.4v, so that's ok. (but you shouldn't need the zeners)

mister-e was using INT ON CHANGE, so it triggered on both edges.
To get INT to do the same thing you have to toggle INTEDG on each interrupt.

This modification of the handler works in the SIM.
Code:
INTEDG  VAR OPTION_REG.6
; ...

ACDetect: 
    if INTEDG then
        if triacdelay > 0 then
            if triacdelay=8000 then
                triac=1 ' Activate TRIAC
            else
                maxdelay=8000-triacdelay
                pauseus maxdelay
                triac=1
            endif
        else
            triac=0
        endif
    else
        if triacdelay != 8000 then triac=0
    endif

    INTEDG = !INTEDG
@ INT_RETURN
In the scope image, the blue line shows the triac ON time.
It's only on during the positive half of the cycle.
Doesn't seem right, but that's the way mister-e had it.

Name:  dimmer.JPG
Views: 3706
Size:  137.5 KB

HTH,