.segment "LIBCODE"
;  
; Ullrich von Bassewitz, 06.08.1998
;
; CC65 runtime: function epilogue
;

; exit a function.  pop stack and rts. The function comes in different
; flavours that provide default values for the return val, or drop a local
; stack frame with size in y.

 	.export		leave00, leave0, leavey00, leavey0, leavey
	.export		leave
	.import	       	addysp
	.importzp	sp

leave00:
	lda	#0
leave0:	ldx	#0
     	beq	leave

leavey00:
     	lda	#0     	     	; "return 0"
leavey0:
     	ldx	#0     	     	; return < 256
leavey:
     	jsr	addysp 	     	; drop stack frame
leave:	pha	       	     	; save A a sec
 	ldy	#0
 	lda	(sp),y 	     	; that's the pushed arg size
	sec			; Count the byte, the count's stored in
	adc	sp
	sta	sp
	bcc	L1
	inc	sp+1
L1:	pla	  		; Get return value back
       	rts

