]> git.sur5r.net Git - cc65/commitdiff
Runtime function improvements by Piotr Fusik
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Tue, 28 Oct 2003 08:47:47 +0000 (08:47 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Tue, 28 Oct 2003 08:47:47 +0000 (08:47 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@2577 b7a2c559-68d2-44c3-8de9-860c34a00d81

libsrc/runtime/asrax3.s
libsrc/runtime/asrax4.s
libsrc/runtime/mulax10.s
libsrc/runtime/mulax6.s
libsrc/runtime/mulax7.s
libsrc/runtime/mulax9.s
libsrc/runtime/subysp.s

index e3286d431aeb7644d391975e759489b71e6cc5ed..ee3e9f0911bac6a233de8950979f9cec96f7667f 100644 (file)
@@ -1,5 +1,6 @@
 ;
-; Ullrich von Bassewitz, 06.08.1998
+; Piotr Fusik, 24.10.2003
+; originally by Ullrich von Bassewitz
 ;
 ; CC65 runtime: Scale the primary register by 8
 ;
@@ -8,17 +9,15 @@
        .importzp       tmp1
 
 asrax3:        stx     tmp1
-       cpx     #$80            ; Put bit 7 into carry
-       ror     tmp1
-       ror     a
+       cpx     #$80            ; Put bit 7 into carry
+       ror     tmp1
+       ror     a
+       cpx     #$80
+       ror     tmp1
+       ror     a
+       cpx     #$80
+       ror     tmp1
+       ror     a
        ldx     tmp1
-       cpx     #$80
-       ror     tmp1
-       ror     a
-       ldx     tmp1
-       cpx     #$80
-       ror     tmp1
-       ror     a
-       ldx     tmp1
-       rts
+       rts
 
index 6365f3b3985d20b1f9816c385fb68e5219a204cd..61b6645b633c5341fe38f4969baf316c93e67c89 100644 (file)
@@ -1,28 +1,26 @@
 ;
-; Ullrich von Bassewitz, 25.07.2001
+; Piotr Fusik, 24.10.2003
+; originally by Ullrich von Bassewitz
 ;
 ; CC65 runtime: Scale the primary register by 16
 ;
 
-       .export         asrax4
-       .importzp       tmp1
+       .export         asrax4
+       .importzp       tmp1
 
 asrax4:        stx     tmp1
-       cpx     #$80            ; Put bit 7 into carry
-       ror     tmp1
-       ror     a
+       cpx     #$80            ; Put bit 7 into carry
+       ror     tmp1
+       ror     a
+       cpx     #$80
+       ror     tmp1
+       ror     a
+       cpx     #$80
+       ror     tmp1
+       ror     a
+       cpx     #$80
+       ror     tmp1
+       ror     a
        ldx     tmp1
-       cpx     #$80
-       ror     tmp1
-       ror     a
-       ldx     tmp1
-       cpx     #$80
-       ror     tmp1
-       ror     a
-       ldx     tmp1
-       cpx     #$80
-       ror     tmp1
-       ror     a
-       ldx     tmp1
-       rts
+       rts
 
index 18a17a450fd46aefd63ab3d7d73cc1e65a321108..3fe250c4a59bc307ba0bf3d9b83476fc506eb8d1 100644 (file)
@@ -1,15 +1,16 @@
 ;
-; Ullrich von Bassewitz, 04.10.2001
+; Piotr Fusik, 24.10.2003
+; originally by Ullrich von Bassewitz
 ;
-; CC65 runtime: Multiply the primary register
+; CC65 runtime: Multiply the primary register by 10
 ;
 
-       .export         mulax10
+       .export         mulax10
        .importzp       ptr1
 
 .proc  mulax10
 
-       sta     ptr1
+       sta     ptr1
        stx     ptr1+1
        asl     a
        rol     ptr1+1
        rol     ptr1+1
        clc
        adc     ptr1
-       pha
+       sta     ptr1
        txa
        adc     ptr1+1
-       sta     ptr1+1
-       pla
-       asl     a
-       rol     ptr1+1
-       ldx     ptr1+1
+       asl     ptr1
+       rol     a
+       tax
+       lda     ptr1
        rts
 
 .endproc
index e5e350385b951b2041fd1c40bdbe05dfb42d130e..78aa85bda817f9f0ea15378a016d98426dd9d82c 100644 (file)
@@ -1,28 +1,28 @@
 ;
-; Ullrich von Bassewitz, 16.03.2002
+; Piotr Fusik, 24.10.2003
+; originally by Ullrich von Bassewitz
 ;
-; CC65 runtime: Multiply the primary register
+; CC65 runtime: Multiply the primary register by 6
 ;
 
-       .export         mulax6
-       .importzp       ptr1
+       .export         mulax6
+       .importzp       ptr1
 
 .proc  mulax6
 
-       sta     ptr1
+       sta     ptr1
        stx     ptr1+1
        asl     a
        rol     ptr1+1
        clc
        adc     ptr1
-       pha
+       sta     ptr1
        txa
        adc     ptr1+1
-       sta     ptr1+1
-       pla
-       asl     a
-       rol     ptr1+1
-       ldx     ptr1+1
+       asl     ptr1
+       rol     a
+       tax
+       lda     ptr1
        rts
 
 .endproc
index b7ce28cffacf678658d70719f0ae619c149c41f8..c9f7e47150a9c43c554a15bccb4b9176461f8d28 100644 (file)
@@ -1,28 +1,29 @@
 ;
-; Ullrich von Bassewitz, 16.03.2002
+; Piotr Fusik, 24.10.2003
+; originally by Ullrich von Bassewitz
 ;
-; CC65 runtime: Multiply the primary register
+; CC65 runtime: Multiply the primary register by 7
 ;
 
-       .export         mulax7
-       .importzp       ptr1, tmp1
+       .export         mulax7
+       .importzp       ptr1
 
 .proc  mulax7
 
        sta     ptr1
        stx     ptr1+1
-       stx     tmp1
-       asl     a
-       rol     tmp1                    ; * 2
        asl     a
-       rol     tmp1                    ; * 4
+       rol     ptr1+1                  ; * 2
        asl     a
-       rol     tmp1                    ; * 8
+       rol     ptr1+1                  ; * 4
+       asl     a
+       rol     ptr1+1                  ; * 8
        sec
        sbc     ptr1
        pha
-       lda     tmp1
-       sbc     ptr1+1                  ; * (8 - 1)
+       txa
+       eor     #$ff
+       adc     ptr1+1                  ; * (8 - 1)
        tax
        pla
        rts
index 037f5e76e3c9ad6b32c1fecb4845d56fe581bd13..67a07b4d63bfb055493dfd3c86bb7b828887bbfb 100644 (file)
@@ -1,27 +1,27 @@
 ;
-; Ullrich von Bassewitz, 16.03.2002
+; Piotr Fusik, 24.10.2003
+; originally by Ullrich von Bassewitz
 ;
-; CC65 runtime: Multiply the primary register
+; CC65 runtime: Multiply the primary register by 9
 ;
 
-       .export         mulax9
-       .importzp       ptr1, tmp1
+       .export         mulax9
+       .importzp       ptr1
 
 .proc  mulax9
 
-       sta     ptr1
-       stx     ptr1+1
-       stx     tmp1
-       asl     a
-       rol     tmp1                    ; * 2
-       asl     a
-       rol     tmp1                    ; * 4
-       asl     a
-       rol     tmp1                    ; * 8
+       sta     ptr1
+       stx     ptr1+1
+       asl     a
+       rol     ptr1+1                  ; * 2
+       asl     a
+       rol     ptr1+1                  ; * 4
+       asl     a
+       rol     ptr1+1                  ; * 8
        clc
-       adc     ptr1                    ; * (8+1)
+       adc     ptr1                    ; * (8+1)
        pha
-       lda     tmp1
+       txa
        adc     ptr1+1
        tax
        pla
index e2bbd5fc6d73ee9a2a515eca476816e713c721fb..9d1a2c69160b7bba975b973dd06e9f58de170a51 100644 (file)
@@ -1,26 +1,24 @@
 ;
-; Ullrich von Bassewitz, 25.10.2000
+; Piotr Fusik, 24.10.2003
+; originally by Ullrich von Bassewitz
 ;
 ; CC65 runtime: Decrement the stackpointer by value in y
 ;
 
-               .export         subysp
-       .importzp       sp, tmp1
+       .export         subysp
+       .importzp       sp
 
 .proc  subysp
 
-               sty     tmp1            ; Save the value
-       lda     sp              ; Get lo byte
+       tya
+       eor     #$ff
        sec
-       sbc     tmp1            ; Subtract y value
-       sta     sp              ; Put result back
+       adc     sp
+       sta     sp
        bcs     @L1
        dec     sp+1
-@L1:           rts                     ; Done
+@L1:   rts
 
 .endproc
 
 
-
-
-