Summary Files Commits Branches @commit @diff @stats
diff options
context:
space:
mode:
Commit7c67aa188d67281f70916aa3d048add56313d81c (patch)
Author
 Syndamia <kamen@syndamia.com>
2025-08-03 08:45:39 +0300
Committer
 Syndamia <kamen@syndamia.com>
2025-08-03 10:42:53 +0300
Filesef19074d28d3eac0500590853a4a101bd8299532
c64-programs-7c67aa188d67281f70916aa3d048add56313d81c.tar
c64-programs-7c67aa188d67281f70916aa3d048add56313d81c.tar.gz
c64-programs-7c67aa188d67281f70916aa3d048add56313d81c.zip
Parentb54b80ec4c071b5464e631daadcbd240f4723a7f (diff)
feat(catalan): Implement multiplication
1 files changed, 22 insertions, 0 deletions
-rw-r--r--catalan/catalan.a6522
diff --git a/catalan/catalan.a65 b/catalan/catalan.a65
index 5b544a2..16dd5c0 100644
--- a/catalan/catalan.a65
+++ b/catalan/catalan.a65
@@ -3,7 +3,29 @@
hello .byt "HELLO, WORLD!",0
+#define multiply(a, b) .( :\
+ lda a ; if (a == 0) :\
+ beq return ; return 0 :\
+ sta buffer ; buffer = a :\
+ \
+ lda b ; if (b == 0) :\
+ beq return ; return 0 :\
+ tax ; x = b :\
+ \
+ lda #0 ; a = 0 :\
+loop clc ; do carry = 0 :\
+ adc buffer ; a += buffer + carry :\
+ dex ; --x :\
+ cpx #0 ; while (x > 0) :\
+ bne loop :\
+return :\
+.)
+
main print(hello)
+ multiply(#5, #7)
+ putchar()
rts
+buffer .byt 0
+
// vim: noet ts=8 sw=0 lcs=tab\:\ \