]> git.sur5r.net Git - cc65/blobdiff - libsrc/runtime/sub.s
added sleep() implementation
[cc65] / libsrc / runtime / sub.s
index cb7ae6de716d066f1960a744485af765afa0adbc..1240737adcbcca44587d7b221e2605f932f7d19b 100644 (file)
@@ -6,7 +6,7 @@
 
                .export         tossuba0, tossubax
        .import         addysp1
-       .importzp       sp, ptr1
+       .importzp       sp
 
 ;
 ; AX = TOS - AX
 tossuba0:
        ldx     #0
 tossubax:
-       sta     ptr1
-       stx     ptr1+1
+       sec
+       eor     #$FF
 .ifpc02
-               lda     (sp)            ; Get lo byte
-       ldy     #1              ; Hi index
+        adc    (sp)
+       ldy     #1
 .else
        ldy     #0
-       lda     (sp),y          ; Lo byte
-       iny                     ; Hi index
+       adc     (sp),y          ; Subtract low byte
+       iny
 .endif
-       sec
-       sbc     ptr1
-       sta     ptr1            ; save lo byte
-       lda     (sp),y
-       sbc     ptr1+1
-       tax
-       lda     ptr1
-       jmp     addysp1         ; drop TOS, set condition codes
+       pha                     ; Save high byte
+        txa
+       eor     #$FF
+       adc     (sp),y          ; Subtract high byte
+       tax                     ; High byte into X
+       pla                     ; Restore low byte
+       jmp     addysp1         ; drop TOS