im still experiencing this overflow stack error message..
ive tried to change all goto to call instruction
put return for every subroutine..but still it doesnot work
can anyone help me

i pasted my full program below

Code:
;nur azrin hilmi
;gdp 17-telemetr 


    LIST   		P=RF675K       ; list directive to define processor
 	#include    <RF675K.INC>  ; processor specific variable definitions


;**************define variables*********************************

	#define	sensor	GPIO, 1
	#define txd     GPIO, 2             ; (Output) Transmit Data
	#define pb3     GPIO, 3             ; (Input Only) Push button switch GP3
	#define pb4     GPIO, 4             ; (Input) Push button switch GP4
	#define rfena   GPIO, 5             ; (Output) RF Enable

 	; GPIO Pins =    xx543210
;	#define gptris b'00011011'

	#define TGUARD  d'5'
	#define exor 	b'00000000'	
	#define	total d'8'
;	#define	rtime d'5'
;***************************************************************

	org  0x00
	goto initialize
	
	org  0x004
	
	movwf	w_temp
	swapf	STATUS,W
	bcf		STATUS, 5		;select bank 0
	movwf	status_temp		;save status register
;***************************************************************

;	interrupt service routine (ISR)
;   interrupt on change on pin of gpio

	movfw	GPIO
	bcf		INTCON,0
	
;**************************************************************

	swapf	status_temp,w	;set bank into original state
	movwf	STATUS
	swapf	w_temp,F
	swapf	w_temp,W
	
	retfie


;***************************************************************

WaitxTE
        movwf   Count2      ; [1]

waitxlp            
        movlw   D'30'       ; [1]
        movwf   Count       ; [1]

wait400lp
      nop                 ; [1]

      nop                 ; [1]
    decfsz  Count,F     ; [1]
    goto    wait400lp  ; [2]
;                          --------
;                         79 x 5 = 395us

     decfsz  Count2,F    ; [1]
    goto    waitxlp    ; [2]

     retlw   0           ; [2]

;                       total 2 (call) + W x (395 + 5) + 2 (return)
;                       w = 1 -> 406us @4MHz
;                       w = 2 -> 806us @4MHz
;*************************************************************
;initialize pic
;*************************************************************

initialize

;clearing all ports
	CLRF	nobit
	CLRF	nobit2
	clrf	input
	clrf	store
	clrf	rotateright
	clrf	Count
	clrf	Count2
	clrf	ltime
	clrf	rtime
;disable global interrupts during initialization

	bcf     INTCON,7

;calibrating the internal oscillator

;	bsf     STATUS,5		;select bank 1
	call	0x3FF
	movwf	OSCCAL		
;	bcf		STATUS,5
	
;turn off the comparator
	bsf		STATUS,5

	clrf 	ANSEL			; clear ansel register
	bcf		STATUS,5
	
	clrf 	GPIO			; initialize General Purpose Input Output to 0
		
;setting gpio register to the cosrresponding io pin
	bsf 	STATUS,5
	
	bsf		TRISIO,0
	bsf		TRISIO,1
	bsf		TRISIO,4
	bcf		TRISIO,2
	bCf		TRISIO,5

	bcf     STATUS,5		;select bank 0

;set bit 0:2 at register cmcon	;setting gp2 as digital output |offkan comparator
	bsf		STATUS,5
	bsf		CMCON,0
	bsf		CMCON,1
	bsf		CMCON,2
	BCF		STATUS,5
; VRCON	register ; CVref circuit powered down,no Idd drain

	bsf		STATUS,5
	bcf		VRCON, 7
	bcf		STATUS,5


;****************************************************************
;****timer1 module gate control**********************************
; disabling timer1
	bsf		STATUS, 5		; select Bank 1
	movlw   b'01000100'		; disable TIMER1
	movwf	T1CON		;
	bcf		STATUS, 5		; select Bank 0

;****************************************************************
;weak pull-up register (wpu)
;each pull-up is automatically turned off when the pin is configured as an output
	bsf     STATUS,5
	movlw	b'00010000'
	movwf	WPU
	bcf     STATUS,5

;***************set pin for config_address regsiter

;OPTION Register 

;   OPTION_REG contains control bits to configure:
;   Weak pull-ups on GPIO (see also WPU Register above)
;   External GP2/INT interrupt
;   TMR0
;   TMR0/WDT prescaler

        bsf     STATUS,5	         	; ---- Select Bank 1 -----

        bcf     OPTION_REG, NOT_GPPU  	; GPIO pull-ups: enabled

        bsf     OPTION_REG, INTEDG  	; Interrupt Edge: on rising edge of GP2/INT pin

        bcf     OPTION_REG, T0CS    	; TMR0 Clock Source: internal instruction cycle (CLKOUT)
        bcf     OPTION_REG, T0SE    	; TMR0 Source Edge: increment low-to-high transition on GP2/T0CKI pin

        bcf     OPTION_REG, 3     		; Prescaler Assignment: assigned to TIMER0

        ; TMR0 Prescaler Rate: 1:2
        bcf     OPTION_REG, 2     		; Prescaler Rate Select bit 2
        bcf     OPTION_REG, 1     		; Prescaler Rate Select bit 1
        bcf     OPTION_REG, 0     		; Prescaler Rate Select bit 0

        bcf    STATUS, 5         		; ---- Select Bank 0 -----




;***************************************************************
;interrupt on-change register
	bsf     STATUS,5
	
	movlw  	b'00011011'		;enable global interrupts in order for the individual pin to be configured(kalo switch
	movwf	IOC

	movlw	b'00000000'		;peripheral interrupt register; disable
	movwf 	PIE1			

	bcf    STATUS,5

	movlw	b'00001000'		;enable interrupt control register 
	movwf	INTCON
	

;******************************************************************
;MAIN PROGRAM
;*****************************************************************8
MAIN

              
        bsf     INTCON,7  ; enable global interrupts
	;	bsf		rfena     ; enable	transmitter
		call    BITCHECK
		
;*****************************************************************
;CHECK INPUT
;*****************************************************************

	
BITCHECK
	btfsc	nobit2,3 
	goto	TRANSMIT
	
	movfw	GPIO
	movwf	input	
	incf	nobit2,f
	movfw	nobit2
	movwf	nobit

	
	btfsc	nobit2,2
	goto	checkleft	;for bit number 4,5,6,7
	goto	checkright	;for bit number 1,2,3,8


checkleft

	btfsc	nobit2,1
	goto	rleft
	btfsc	nobit2,0
	goto	bit5
	goto	rright1
	return;
checkright
	btfsc	nobit2,3
	goto	rleft
	return;
rright1
	movlw	d'5'
	movwf	rtime
	return;
rright
	
	decf	rtime,f
	decfsz	nobit
	goto	rright
;	movwf	rtime
rotater
	rrf		input,f
	decfsz	rtime
	goto	rotater
	movfw	input	
	xorwf	store,w
	movwf	store
	goto    BITCHECK
	return;
bit5
	movfw	input
	xorwf	store,w
	movwf	store
	goto	BITCHECK
	return;
rleft

	movfw	nobit
	movwf	ltime
	decf	ltime
	decf	ltime
	decf	ltime
	decf	ltime	
	decf	ltime
	return
rotatel
	rlf		input,f

	decfsz	ltime
	goto	rotatel	
	movfw	input	
	xorwf	store,w
	movwf	store
	goto    BITCHECK	
    return;                                   
TRANSMIT
		bsf		GPIO,5
; send preamble (50% duty cycle)
Preamble					;send 16 bit
      movlw   d'16'
      movwf   BitCount          ; init number of preamble bits

PreL
        bsf     txd             ; ON
        movlw	1
		call    WaitxTE           ; delay
        bcf     txd             ; OFF
       	movlw	1
		call    WaitxTE             ; delay
        decfsz  BitCount,F      ; loop
        goto    PreL
            
; sync pause

TXloop      
                
       movlw d'10'
	   call    WaitxTE         ; Theader = 10 x Te
            
; send 72 bit pattern

        movlw   store            ; lsb first 
        movwf   FSR
            
TXNextByte
      movlw   D'8'
      movwf   BitCount

TXNextBit
		
        rrf     INDF,W           ; 8 bit rotate | rotate right f through carry
        rrf     INDF,F           ; Carry contain lsb
        BC      ONE				 ; branch on carry | goto ONE if bit is set
ZERO    					;wave pattern if the bit is zero        
        movlw   2               ; 
	    movwf   TimeHi          ;   +---+---+   +--
        movlw   1               ;   |       |   |
   		movwf   TimeLo          ;---+       +---+
        goto    Trasm_BIT       ;   |  2Te   Te |

ONE							;wave pattern if the bit is one
        movlw   1              	;              
        movwf   TimeHi          ;   +---+       +--
        movlw   2               ;   |   |       |
        movwf   TimeLo          ;---+   +---+---+
                                ;   | Te   2Te  |
	
Trasm_BIT

        bsf     txd             ; ON
        movf    TimeHi,W          
        call    WaitxTE
		
        bcf     txd             ; OFF
        movf    TimeLo,W          
        call    WaitxTE

       	decfsz  BitCount,F
        goto    TXNextBit       ; loop on bits

   
; guard time
        movlw   TGUARD
        call    WaitxTE

       org     0x3ff
       retlw    0x80

	
;----------------------------------------------------------------------
        end                         ; end of program directive
;----------------------------------------------------------------------