]> git.sur5r.net Git - cc65/blobdiff - libsrc/runtime/lxor.s
Added SER_ prefix. Whitespace cleanup
[cc65] / libsrc / runtime / lxor.s
index f772ebb899a13f09150813e9d1adf6fe64749f38..4ec9a41297db8343fe45fefbc120742d895f3570 100644 (file)
@@ -1,32 +1,50 @@
 ;
 ; Ullrich von Bassewitz, 06.08.1998
+; Christian Krueger, 11-Mar-2017, added 65SC02 optimization
 ;
 ; CC65 runtime: xor on longs
 ;
 
-       .export         tosxoreax
-       .import         addysp1
-       .importzp       sp, sreg, tmp1
+        .export         tosxor0ax, tosxoreax
+        .import         addysp1
+        .importzp       sp, sreg, tmp1
+
+        .macpack        cpu
+
+tosxor0ax:
+.if (.cpu .bitand ::CPU_ISET_65SC02)
+        stz     sreg
+        stz     sreg+1
+.else
+        ldy     #$00
+        sty     sreg
+        sty     sreg+1
+.endif
 
 tosxoreax:
-               ldy     #0
-               eor     (sp),y          ; byte 0
-       sta     tmp1
-       iny
-       txa
-       eor     (sp),y          ; byte 1
-       tax
-       iny
-       lda     sreg
-       eor     (sp),y          ; byte 2
-       sta     sreg
-       iny
-       lda     sreg+1
-       eor     (sp),y          ; byte 3
-       sta     sreg+1
-
-       lda     tmp1
-               jmp     addysp1
+.if (.cpu .bitand ::CPU_ISET_65SC02)
+        eor     (sp)            ; byte 0
+        ldy     #1
+.else                         
+        ldy     #0
+        eor     (sp),y          ; byte 0
+        iny
+.endif
+        sta     tmp1
+        txa
+        eor     (sp),y          ; byte 1
+        tax
+        iny
+        lda     sreg
+        eor     (sp),y          ; byte 2
+        sta     sreg
+        iny
+        lda     sreg+1
+        eor     (sp),y          ; byte 3
+        sta     sreg+1
+
+        lda     tmp1
+        jmp     addysp1