blob: b548db433ca1cbc15ee0a5c33e198065c00812b0 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
#include "basic_starter.a65"
#include "print.a65"
#include "math.a65"
main .(
ldy #0 ; y = 0
loop jsr catalan ; do catalan()
print_num(cat_Cn) ; print cat_Cn
putc(#" ") ; print ' '
iny ; ++y
sty cat_n ; cat_n = y
cpy #7 ; while (y < 7)
bcc loop
return rts
.)
catalan .(
lda #1 ; a = 1
sta Cn ; Cn = a
lda n ; a = n
cmp #1 ; if (a < 1)
bcc return ; return
ldy #0 ; y = 0
loop iny ; do ++y
tya ; a = y
applya(multa, multa_arg, #4)
; a *= 4
sec ; a -= 2
sbc #2
applya(multa, multa_arg, Cn)
; a *= Cn
iny ; ++y
sty divisor ; divisor = y
dey ; --y
applya(diva, diva_arg, divisor)
; a /= divisor
sta Cn ; Cn = a
cpy n ; while (y < n)
bcc loop
return rts
+cat_Cn
Cn .byt 1
+cat_n
n .byt 0
divisor .byt 0
.)
// vim: noet ts=8 sw=0 lcs=tab\:\ \
|