]> git.sur5r.net Git - cc65/blobdiff - libsrc/runtime/swap.s
few 6502 and some 65SC02 optimizations
[cc65] / libsrc / runtime / swap.s
index e2f882f7e7560673bf7d72dad60874896fb774fb..d4a74df5ff2f52b5bba790f309dc2bb0819a9dab 100644 (file)
@@ -1,25 +1,35 @@
 ;
 ; Ullrich von Bassewitz, 06.08.1998
+; Christian Krueger, 11-Mar-2017, added 65SC02 optimization
 ;
 ; CC65 runtime: swap ax with TOS
 ;
 
-       .export         swapstk
-       .importzp       sp, ptr4
+        .export         swapstk
+        .importzp       sp, ptr4
 
-swapstk:
-       sta     ptr4
-       stx     ptr4+1
-       ldy     #1              ; index
-       lda     (sp),y
-       tax
-       lda     ptr4+1
-       sta     (sp),y
-       dey
-       lda     (sp),y
-       pha
-       lda     ptr4
-       sta     (sp),y
-       pla
-       rts                     ; whew!
+        .macpack        cpu
 
+swapstk:
+        sta     ptr4
+        stx     ptr4+1
+        ldy     #1              ; index
+        lda     (sp),y
+        tax
+        lda     ptr4+1
+        sta     (sp),y
+.if (.cpu .bitand ::CPU_ISET_65SC02)
+        lda     (sp)
+        tay
+        lda     ptr4
+        sta     (sp)
+        tya    
+.else        
+        dey
+        lda     (sp),y
+        pha
+        lda     ptr4
+        sta     (sp),y
+        pla
+.endif        
+        rts                     ; whew!