]> git.sur5r.net Git - cc65/blobdiff - libsrc/runtime/toslong.s
Call __seterrno instead of assigning to _errno and save a few bytes.
[cc65] / libsrc / runtime / toslong.s
index d14915fa5b9ddd2bcf055435309f377aded3aa26..9bf66a321c8d733fae859cff3a725083bb7c0b6e 100644 (file)
@@ -8,45 +8,53 @@
        .import         decsp2
        .importzp       sp
 
+        .macpack        cpu
+
 ; Convert TOS from int to long
 
 tosulong:
                pha
        jsr     decsp2          ; Make room
-       ldy     #2
-       lda     (sp),y
-       ldy     #0
+       ldy     #2
+       lda     (sp),y
+.if (.cpu .bitand CPU_ISET_65SC02)
+       sta     (sp)            ; 65C02 version
+       iny                     ; Y = 3
+.else
+       ldy     #0
                sta     (sp),y
-       ldy     #3
-       lda     (sp),y
-       ldy     #1
-       sta     (sp),y
-       lda     #0              ; Zero extend
+       ldy     #3
+.endif
+       lda     (sp),y
+toslong1:
+       ldy     #1
+       sta     (sp),y
+       lda     #0              ; Zero extend
 toslong2:
-       iny
-       sta     (sp),y
-       iny
-       sta     (sp),y
-       pla
-       rts
+       iny
+       sta     (sp),y
+       iny
+       sta     (sp),y
+       pla
+       rts
 
 toslong:
                pha
-       jsr     decsp2          ; Make room
-       ldy     #2
-       lda     (sp),y
-       ldy     #0                 
+       jsr     decsp2          ; Make room
+       ldy     #2
+       lda     (sp),y
+.if (.cpu .bitand CPU_ISET_65SC02)
+       sta     (sp)            ; 65C02 version
+       iny                     ; Y = 3
+.else
+       ldy     #0
                sta     (sp),y
-       ldy     #3
-       lda     (sp),y
-       bmi     toslong1
-       ldy     #1
-       sta     (sp),y
-       lda     #$00            ; Positive, high word is zero
-       bne     toslong2
-toslong1:
-       ldy     #1
-       sta     (sp),y
-       lda     #$FF
-       bne     toslong2
+       ldy     #3
+.endif
+       lda     (sp),y
+       bpl     toslong1        ; Jump if positive, high word is zero
+       ldy     #1
+       sta     (sp),y
+       lda     #$FF
+       bne     toslong2        ; Branch always