]> git.sur5r.net Git - cc65/commitdiff
Added C callable entry point for the 16x16=32 multiplication.
authoruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Tue, 3 Nov 2009 17:43:57 +0000 (17:43 +0000)
committeruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Tue, 3 Nov 2009 17:43:57 +0000 (17:43 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@4435 b7a2c559-68d2-44c3-8de9-860c34a00d81

include/cc65.h
libsrc/runtime/mul16x16r32.s

index 8a555080399338bcc974db537ae01334732d1b2b..47d21cea9579909932e6fe900cc96b7ca9be3f86 100644 (file)
 
 
 
-extern int __fastcall__ cc65_sin (unsigned x);
+unsigned long __fastcall__ cc65_umul16x16r32 (unsigned rhs, unsigned lhs);
+/* Multiplicate two unsigned 16 bit to yield an unsigned 32 bit result */
+
+int __fastcall__ cc65_sin (unsigned x);
 /* Return the sine of the argument, which must be in range 0..360. The result
  * is in 8.8 fixed point format, which means that 1.0 = $100 and -1.0 = $FF00.
  */
 
-extern int __fastcall__ cc65_cos (unsigned x);
+int __fastcall__ cc65_cos (unsigned x);
 /* Return the cosine of the argument, which must be in range 0..360. The result
  * is in 8.8 fixed point format, which means that 1.0 = $100 and -1.0 = $FF00.
  */
index 968903de5ae6584a742497983dc95780fa8c7d9a..72d9fe35fa7e69bce4ab2e3a5e95032f0d9369af 100644 (file)
@@ -4,8 +4,9 @@
 ; CC65 runtime: 16x16 => 32 multiplication
 ;
 
-        .export         umul16x16r32
+        .export         umul16x16r32, _cc65_umul16x16r32
                .export         mul16x16r32 := umul16x16r32
+        .import         popax
        .importzp       ptr1, ptr2, ptr3, ptr4, sreg
 
 
 ;
 ;   lhs         rhs           result          result also in
 ; -------------------------------------------------------------
-;   ptr1        ptr3           ax:sreg          ptr1:sreg
+;   ptr1        ax            ax:sreg          ptr1:sreg
 ;
 
+_cc65_umul16x16r32:
+        sta     ptr1
+        stx     ptr1+1
+        jsr     popax
+
 umul16x16r32:
+        sta     ptr3
+        stx     ptr3+1
                lda     #0
-               ldx     ptr3+1          ; Get high byte into register for speed
                sta     sreg+1
                ldy     #16             ; Number of bits