Hi Steve

Sorry I forgot to mention It is in an 18F4520, actually it's on a fairly well modified LABX1 board, Ill migrate to a suitable MCu after I have finished.
and I had a scout about the forum for info about the VB code to do all sorts of wonderfull things to the post

Code:
define OSC 16

INCLUDE "DT_INTS-18.bas"       ; Base Interrupt System
INCLUDE "ReEnterPBP-18.bas"    ; Include if using PBP interrupts
ASM
INT_LIST  macro    ; IntSource,        Label,  Type, ResetFlag?
        INT_Handler   CMP_INT,  _StartTag,       PBP,  yes            
        INT_Handler   TMR0_INT,  _AllDone,        PBP,  yes
    endm
    INT_CREATE                
ENDASM

TRISA =  %00001111   
TRISB =  %11011111  
TRISC =  %00111111
TRISD =  %00000000
PORTD = 0 

Z var byte

T0CON   = %10000011    'set up timer 0 and turn it ON  @16mhz 0011 = 262ms 
CMCON   = %00100011    ' set up comparator inputs


@ INT_ENABLE  TMR0_INT          ;all done
T0CON.7 = 0                     ' turn off timer until needed


start:
portd.5 = 0
'=============================================================
'=============================================================
Get_Raw_Data:'          GET RAW DATA
'-------------------------------------------------- Z = 0-----------------

@ INT_ENABLE  CMP_INT            ;wait here until an  interrupt event 
Z = 0                                     'on the comparators
Waiting:
            if z = 0 then waiting
@ INT_DISABLE CMP_INT 
'----------------------------------------- Z = 1--------------------
portd.5 = 1                           'all done marker
TMR0H = %00111100                     ' preload timer to 15400
TMR0L = %00100000
T0CON.7 = 1                    ' turn back on timer 0 , used by all done

getData:                          ']loop here until timer1 overflows 
if z = 1 then getdata             '] 
'--------------------------------------------Z = 4-----------------
getout:
PORTD.5 = 0                      'all done marker
T0CON.7 = 0                       'turn timer0 off until used again  

finished:
goto start

;;;;;;;;;;;;;;;;;;;;;      interrupt handlers        ;;;;;;;;;;;;;;;;;;;;;;

StartTag:
z = 1              ' moves towards middle of routine
@ INT_RETURN

AllDone:
z = 4             ' moves towards end of routine
@ INT_RETURN
end
simple

Loading the timer: I have read somewhere (datasheet maybe?) that it is good practice to have the timer running before you initially start an interrupt which I do in the setup. I then enable interrupt and turn the timer off so that I can preload and then turn it back on when I am ready to start the stopwatch.
I have tried it another way which is to setup prescale and leave timer off /then preload and when I am ready to use it I start timer with the enable interrupt on the next line, regrettably the same thing happens.
I cannot help feeling I am missing something really fundamental. This problem has been around for me for a couple of weeks now, I am ready to stich the module back into the main compilation... feeling pretty dispondent and mentally tired.... i really appeciate your input.