]> git.sur5r.net Git - cc65/commitdiff
A few minor 65C02 optimizations.
authoruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sun, 22 Feb 2009 15:39:19 +0000 (15:39 +0000)
committeruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sun, 22 Feb 2009 15:39:19 +0000 (15:39 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@3944 b7a2c559-68d2-44c3-8de9-860c34a00d81

libsrc/runtime/ladd.s
libsrc/runtime/lsub.s
libsrc/runtime/popsreg.s
libsrc/runtime/stkchk.s

index fabedc9a15164fcba9dc64bf8cb844b7b8803860..a68583e765b264b177addacadcba7d6f30b531df 100644 (file)
@@ -8,14 +8,21 @@
        .import         addysp1
        .importzp       sp, sreg, tmp1
 
+        .macpack        cpu
+
 ; EAX = TOS + EAX
 
 tosaddeax:
-       ldy     #0
-       clc
-       adc     (sp),y          ; byte 0
+       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
        sta     tmp1            ; use as temp storage
-       iny
        txa
        adc     (sp),y          ; byte 1
        tax
index 0ba716a9d91f33ee6b7bfe97cafd8fc2a6d1dfd2..2ade75e2e9475604a60c505ee4f3539143db5d81 100644 (file)
        .import         addysp1
        .importzp       sp, sreg
 
+        .macpack        cpu
+
 tossubeax:
-       ldy     #0
-               sec
+       sec
        eor     #$FF
-               adc     (sp),y          ; byte 0
+.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 low byte
-       iny
        txa
        eor     #$FF
        adc     (sp),y          ; byte 1
index a79f9dc412d8693788d8d8eebecd2335ad3a6aa2..80e484339d4d4b4b3650a94ef35f7142b5960f67 100644 (file)
@@ -1,5 +1,5 @@
 ;
-; Ullrich von Bassewitz, 21.08.1998
+; Ullrich von Bassewitz, 1998-08-21, 2009-02-22
 ;
 ; CC65 runtime: Pop TOS into sreg
 ;
@@ -8,15 +8,20 @@
        .import         incsp2
                .importzp       sp, sreg
 
+        .macpack        cpu
+
 popsreg:
        pha                     ; save A
-       ldy     #0
+       ldy     #1
+       lda     (sp),y          ; get hi byte
+       sta     sreg+1          ; store it
+.if (.cpu .bitand ::CPU_ISET_65SC02)
+       lda     (sp)            ; get lo byte
+.else
+       dey
        lda     (sp),y          ; get lo byte
+.endif
        sta     sreg            ; store it
-       iny
-       lda     (sp),y          ; get hi byte
-       sta     sreg+1          ; store it
        pla                     ; get A back
        jmp     incsp2          ; bump stack and return
 
-
index 40ccde3dc12ce2cd49ad98ed326a1b4be1ea6ad0..ee0b7144c80fc7316fc5d611f970bb562394454d 100644 (file)
@@ -21,6 +21,7 @@
 
        ; Use macros for better readability
        .macpack        generic
+        .macpack        cpu
 
 
 ; ----------------------------------------------------------------------------
        lda     sp+1
        sta     initialsp+1
        sbc     #>__STACKSIZE__
-       add     #1                      ; Add 256 bytes safety area
+.if (.cpu .bitand ::CPU_ISET_65SC02)
+               ina                     ; Add 256 bytes safety area
+.else
+               add     #1              ; Add 256 bytes safety area
+.endif
        sta     lowwater+1
        rts