Here's a quick untested stab at an ASM handler.

Change the Handler type to ASM
Code:
Samples      VAR BYTE[15] BANK0 SYSTEM
SamplePTR    VAR BYTE     BANK0 SYSTEM
SamplesAddr  CON EXT
@SamplesAddr = Samples
BitCount     VAR BYTE     BANK0 SYSTEM
ByteCount    VAR BYTE     BANK0 SYSTEM
FlagSample   VAR BIT
TMR2ON       VAR T2CON.2

;----[Start getting the 120 samples]------------------------------------------
GetSamples:
    FlagSample = 0
    SamplePTR = SamplesAddr
    ByteCount = 15
    BitCount  = 8
    PR2 = 125 : TMR2 = 0 : TMR2ON = 1
return
    
;----[TMR2 Handler]-----------------------------------------------------------
ASM
Sample
    MOVE?BB  SamplePTR, FSR      ; Load FSR with pointer to array
    MOVE?TT  CMCON,7, STATUS,C   ; Put sample in carry flag
    rrf      INDF, F             ; Shift in the sample bit
    decfsz   BitCount, F         ; Are all 8 bits in ?
    goto     Int_Done            ;   NO, done for now
    MOVE?CB  8, BitCount         ;   Yes, reset bitcount
    incf     SamplePTR, F        ;     Point to next byte
    decfsz   ByteCount, F        ; Are all 15 bytes done ?
    goto     Int_Done            ;   NO, done for now
    MOVE?CT  1, _FlagSample      ;   Yes, Indicate - Samples Complete
    MOVE?CT  0, _TMR2ON          ; stop the timer
Int_Done
    INT_RETURN
ENDASM