]> git.sur5r.net Git - cc65/commitdiff
Improved some multiplication code. 129/head
authorGreg King <gregdk@users.sf.net>
Thu, 17 Jul 2014 11:11:14 +0000 (07:11 -0400)
committerGreg King <gregdk@users.sf.net>
Thu, 17 Jul 2014 11:11:14 +0000 (07:11 -0400)
libsrc/cbm/syschdir.s

index 9361d56f0754ad9f731b80a242dfa6ff05632327..a4a83cd21537a5de41b54c5d8e339da570426c05 100644 (file)
@@ -1,5 +1,6 @@
 ;
-; Oliver Schmidt, 2012-10-16
+; 2012-10-16, Oliver Schmidt
+; 2014-07-16, Greg King
 ;
 ; unsigned char __fastcall__ _syschdir (const char* name);
 ;
 
 ; Multiply first digit by 10
 
-        ldx     #8
-@L0:    asl
-        asl     tmp1
-        bcc     @L1
-        clc
-        adc     #10
-@L1:    dex
-        bne     @L0
+        txa
+        asl     a               ; * 2
+        asl     a               ; * 4, carry cleared
+        adc     tmp1            ; * 5
+        asl     a               ; * 10, carry cleared
 
 ; Add second digit to product
 
-        clc
         adc     tmp2
         tax
 
@@ -80,7 +77,8 @@ done:   rts
 .endproc
 
 ;--------------------------------------------------------------------------
-; getdigit
+; getdigit -- Converts PetSCII to binary.
+; Sets carry if the character is outside of '0'-'9'.
 
 .proc   getdigit