	*= 0x100

@fac:
	@n= -6		; 	parametro n
	psh bp
	lbp sp		;  marco de referencia de fac()
	
	lda [bp + @n]
	psh a
	lda #0
	cmp
	jne @1		;	n==0?
	
		lda #1		;	si, fac <- 1
		lsp bp
		pop bp
		rtn
; else
@1:		lda [bp+@n] ;	no, fac <- n * fac(n-1)	
		psh a		; 	n	primer factor
		lda [bp+@n]
		psh a
		lda #1
		sub			;  n-1
		psh a		;  primer parametro
		jsr @fac	;  f(n-1)	(segundo factor)
		pop 2		;  sacamos al parametro 
		mul			;  teniamos penente la multiplicacion
		lsp bp
		pop bp
		rtn

@main:
	psh bp		;  marco de referencia de main()
	lbp sp

	lda #5
	psh a
	jsr @fac	;  fac(5)
	pop 2
	irq pr_int	;  imprimimos el resultado

	lsp bp
	pop bp
	rtn
@pila:
	end @main, @pila
		
