
	*= 0x100

@flecha: byte " -> "
@hanoi:
	@n= -6
	@a= -8
	@b= -10
	@c= -12
	psh bp
	lbp sp

	lda [bp+@n]
	tst
	jeq @1
		; hanoi(n-1,a,b,c)
		lda [bp+@b]
		psh a
		lda [bp+@c]
		psh a
		lda [bp+@a]
		psh a
		lda [bp+@n]
		psh a
		lda #1
		sub
		psh a
		jsr @hanoi
		pop 8	;  4 parametros de 2 bytes

		lda [bp+@n] 	;  print  n  a->b
		irq pr_int
		lda #' '
		irq pr_chr
		lda [bp+@a]
		irq pr_chr
		lea @flecha
		irq pr_str
		lda [bp+@b]
		irq pr_chr
		lda #'\n'
		irq pr_chr

		; hanoi(n-1,c,b,a)
		lda [bp+@a]
		psh a
		lda [bp+@b]
		psh a
		lda [bp+@c]
		psh a
		lda [bp+@n]
		psh a
		lda #1
		sub
		psh a
		jsr @hanoi
		pop 8	;  4 parametros de 2 bytes

@1:
		lsp bp
		pop bp
		rtn

@main:
	psh bp
	lbp sp

	lda # 'c'
	psh a
		
	lda # 'b'
	psh a

	lda # 'a'
	psh a

	lda # 3
	psh a

	jsr @hanoi
	pop 8

	lsp bp
	pop bp
	rtn

@pila:
	end @main, @pila
