annotate Examples/6502/a.s65 @ 0:cfb7c6b24319

Initial revision
author kono
date Thu, 30 Aug 2007 14:57:44 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
1 ;;
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
2 ;; ackerman function
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
3
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
4 ;; procedure name ACK
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
5 ;; ACK(X,Y)
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
6 ;; == if X=0 then Y+1
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
7 ;; else if Y=0 then ACK(X-1,1)
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
8 ;; else ACK(X-1, ACK(X,Y-1))
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
9
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
10 ;; calling sequence
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
11 ;;
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
12 ;; X on x
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
13 ;; Y on y
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
14 ;; non compile 11.86 sec on Sun 140
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
15 ;; compile 7.54 sec on Sun 140
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
16
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
17 start cld
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
18 ldx #1
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
19 ldy #1
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
20 jsr ack
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
21 brk
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
22
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
23 ack cpx #0
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
24 bne xneqzero
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
25 xeqzero iny
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
26 tya
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
27 rts
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
28
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
29 xneqzero cpy #0
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
30 bne yneqzero
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
31 dex ;; x <- x-1
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
32 yeqzero ldy #1
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
33 jmp ack ;; tail recursion
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
34
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
35 yneqzero txa
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
36 pha
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
37 dey ;; y <- y-1
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
38 jsr ack ;; ack x,y-1
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
39 tay
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
40 pla
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
41 tax
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
42 dex ;; x <- x-1
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
43 jmp ack ;; tail recursion
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
44
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
45 end
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
46 ;;