]> git.sur5r.net Git - cc65/commitdiff
Added a C callable entry point for the division routine.
authoruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Wed, 4 Nov 2009 18:25:29 +0000 (18:25 +0000)
committeruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Wed, 4 Nov 2009 18:25:29 +0000 (18:25 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@4442 b7a2c559-68d2-44c3-8de9-860c34a00d81

libsrc/common/Makefile
libsrc/common/cc65_udiv32by16r16.s [new file with mode: 0644]

index 7b0864280527637ec1f12f32f789ffe7e4bb3beb..700401dd94acdccd6a7a6ae648725acdf66159c1 100644 (file)
@@ -101,6 +101,7 @@ S_OBJS =    _cwd.o                  \
                calloc.o                \
                 cc65_imul16x16r32.o     \
                 cc65_sincos.o           \
+                cc65_udiv32by16r16.o    \
                 cc65_umul16x16r32.o     \
                 chdir.o                 \
                copydata.o              \
diff --git a/libsrc/common/cc65_udiv32by16r16.s b/libsrc/common/cc65_udiv32by16r16.s
new file mode 100644 (file)
index 0000000..351eff8
--- /dev/null
@@ -0,0 +1,38 @@
+;
+; Ullrich von Bassewitz, 2009-11-04
+;
+; CC65 library: 32by16 => 16 unsigned division
+;
+
+               .export         _cc65_udiv32by16r16
+        .import         udiv32by16r16m, incsp4
+               .importzp       ptr1, ptr2, ptr3, sp
+
+
+;---------------------------------------------------------------------------
+; 32by16 division.
+
+.proc   _cc65_udiv32by16r16
+
+        sta     ptr3
+        stx     ptr3+1                  ; Store rhs
+
+; Copy from stack to zeropage. This assumes ptr1 and ptr2 are adjacent.
+
+        ldy     #3
+@L1:    lda     (sp),y
+        sta     ptr1,y
+        dey
+        bpl     @L1
+
+        lda     #4
+        clc
+        adc     sp
+        sta     sp
+        bcc     @L2
+        inc     sp+1
+
+@L2:    jmp     udiv32by16r16m
+
+.endproc
+