X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=libsrc%2Fruntime%2Fsub.s;h=1240737adcbcca44587d7b221e2605f932f7d19b;hb=bc6dadb3dbddcb1923c628102aa6342cd356cec0;hp=9108b271059d1d5f8b8756b24ea04f0b7d76fd2f;hpb=53dd513176425872128ef26031d00952ef7a0628;p=cc65 diff --git a/libsrc/runtime/sub.s b/libsrc/runtime/sub.s index 9108b2710..1240737ad 100644 --- a/libsrc/runtime/sub.s +++ b/libsrc/runtime/sub.s @@ -5,8 +5,8 @@ ; .export tossuba0, tossubax - .import addysp1 - .importzp sp, ptr1 + .import addysp1 + .importzp sp ; ; AX = TOS - AX @@ -15,17 +15,21 @@ tossuba0: ldx #0 tossubax: - ldy #0 - sta ptr1 - stx ptr1+1 - lda (sp),y ; lo byte - sec - sbc ptr1 - sta ptr1 ; save lo byte + sec + eor #$FF +.ifpc02 + adc (sp) + ldy #1 +.else + ldy #0 + adc (sp),y ; Subtract low byte iny - lda (sp),y - sbc ptr1+1 - tax - lda ptr1 - jmp addysp1 ; drop TOS, set condition codes +.endif + 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