]> git.sur5r.net Git - cc65/blobdiff - libsrc/runtime/add.s
no TGI_ERR_NO_MEM or TGI_ERR_NO_IOCB anymore: replaced by TGI_ERR_NO_RES
[cc65] / libsrc / runtime / add.s
index 5d83ef9a290ce3c26f944e9a06df53512415fde5..a4a058ddf48ba95ea054fced47831ba0521b3ad9 100644 (file)
@@ -8,18 +8,25 @@
 ; called a lot!
 
                .export         tosadda0, tosaddax
-       .importzp       sp, tmp1
+       .importzp       sp
+
+        .macpack        cpu
 
 tosadda0:
        ldx     #0
 tosaddax:
-       ldy     #0
-       clc
-       adc     (sp),y          ; lo byte
-       sta     tmp1            ; save it
-       txa
-       iny
-       adc     (sp),y          ; hi byte
+       clc
+.if (.cpu .bitand CPU_ISET_65SC02)
+       adc     (sp)            ; 65SC02 version - saves 2 cycles
+       ldy     #1
+.else
+       ldy     #0
+       adc     (sp),y          ; lo byte
+       iny
+.endif
+               pha                     ; save it
+       txa
+       adc     (sp),y          ; hi byte
        tax
        clc
        lda     sp
@@ -27,21 +34,6 @@ tosaddax:
        sta     sp
        bcc     L1
        inc     sp+1
-L1:    txa                     ; Test high byte
-       bmi     L2
-       bne     L3
-       lda     tmp1            ; Get low byte
-       rts
-
-; Value is negative
-
-L2:    lda     tmp1            ; Get low byte
-       ldy     #$FF            ; Force negative
-       rts
-
-; Value is positive != 0
-
-L3:    lda     tmp1            ; Get low byte
-       ldy     #1
+L1:            pla                     ; Restore low byte
        rts