]> git.sur5r.net Git - cc65/blobdiff - libsrc/runtime/lmul.s
few 6502 and some 65SC02 optimizations
[cc65] / libsrc / runtime / lmul.s
index 7ad2b2aa4266f39eb2df17241656f2c457685b16..860d58cba4b2161d92c2b24828a684676ddf01f1 100644 (file)
@@ -1,5 +1,6 @@
 ;
 ; Ullrich von Bassewitz, 13.08.1998
+; Christian Krueger, 11-Mar-2017, added 65SC02 optimization
 ;
 ; CC65 runtime: multiplication for long (unsigned) ints
 ;
@@ -8,20 +9,32 @@
         .import         addysp1
         .importzp       sp, sreg, tmp1, tmp2, tmp3, tmp4, ptr1, ptr3, ptr4
 
+        .macpack        cpu
+
 tosmul0ax:
 tosumul0ax:
+.if (.cpu .bitand ::CPU_ISET_65SC02)
+        stz     sreg
+        stz     sreg+1
+.else
         ldy     #$00    
         sty     sreg
         sty     sreg+1
+.endif        
 
 tosmuleax:
 tosumuleax:
 mul32:  sta     ptr1
         stx     ptr1+1          ; op2 now in ptr1/sreg
+.if (.cpu .bitand ::CPU_ISET_65SC02)
+        lda     (sp)
+        ldy     #1
+.else        
         ldy     #0
         lda     (sp),y
-        sta     ptr3
         iny
+.endif
+        sta     ptr3
         lda     (sp),y
         sta     ptr3+1
         iny