	*= 0x100

@fac:
	@n= -6		; 	parametro n
	psh bp
	lbp sp		;  marco de referencia de fac()
	
	lda [bp + @n]
	tst
	jne @1		;	n==0?
	
	lda #1		;	si, fac <- 1
	jmp @2		
@1:	lda [bp+@n] ;	no, fac <- n * fac(n-1)	
	psh a
	lda [bp+@n]
	psh a
	lda #1
	sub
	psh a
	jsr @fac
	pop 2
	mul
@2:
	lsp bp
	pop bp
	rtn

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

	lda #5
	psh a
	jsr @fac
	pop 2
	irq pr_int

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