]> git.sur5r.net Git - cc65/blobdiff - libsrc/runtime/lsub.s
no TGI_ERR_NO_MEM or TGI_ERR_NO_IOCB anymore: replaced by TGI_ERR_NO_RES
[cc65] / libsrc / runtime / lsub.s
index 8854e9e504d12305a1fb04d3a54e8e24232317bf..30ae49da173eda0753ff20be0face7860233cd5c 100644 (file)
@@ -7,21 +7,32 @@
 ;
 ; EAX = TOS - EAX
 ;
-       .export         tossubeax
-       .import         addysp1
-       .importzp       sp, sreg, tmp1, tmp2
+       .export         tossub0ax, tossubeax
+       .import         addysp1
+       .importzp       sp, sreg
+
+        .macpack        cpu
+
+tossub0ax:
+        ldy     #$00
+        sty     sreg
+        sty     sreg+1
 
 tossubeax:
+       sec
+       eor     #$FF
+.if (.cpu .bitand CPU_ISET_65SC02)
+       adc     (sp)            ; 65SC02 version - saves 2 cycles
+       ldy     #1
+.else
        ldy     #0
-               sec
-       sta     tmp1
-       lda     (sp),y
-       sbc     tmp1            ; byte 0
-       sta     tmp2            ; use as temp storage
-       iny
-       stx     tmp1
-       lda     (sp),y
-       sbc     tmp1            ; byte 1
+       adc     (sp),y          ; lo byte
+       iny
+.endif
+               pha                     ; Save low byte
+       txa
+       eor     #$FF
+       adc     (sp),y          ; byte 1
        tax
        iny
        lda     (sp),y
@@ -31,6 +42,6 @@ tossubeax:
        lda     (sp),y
        sbc     sreg+1          ; byte 3
        sta     sreg+1
-       lda     tmp2            ; load byte 0
-               jmp     addysp1         ; drop TOS
+       pla                     ; Restore byte 0
+               jmp     addysp1         ; Drop TOS