diff --git a/libsrc/runtime/pushax.s b/libsrc/runtime/pushax.s index 24029fe6b..22b71e059 100644 --- a/libsrc/runtime/pushax.s +++ b/libsrc/runtime/pushax.s @@ -15,33 +15,21 @@ pusha0: ldx #0 ; Beware^2: The optimizer knows about the value of Y after the function ; returns! -pushax: ldy sp - beq @L1 - dey - beq @L2 - dey -@L0: sty sp -.ifpc02 - sta (sp) ; 65C02 version - saves 2 cycles and one byte - ldy #1 ; get hi index -.else - ldy #0 ; get index - sta (sp),y ; store lo byte - iny ; bump idx -.endif - pha ; save it - txa ; get hi byte - sta (sp),y ; store hi byte - pla ; get A back - rts ; done - -@L1: dey -@L2: dey - dec sp+1 -.ifpc02 - bra @L0 -.else - jmp @L0 -.endif +.proc pushax + pha + lda sp + sec + sbc #2 + sta sp ; (13) + bcs @L1 + dec sp+1 +@L1: ldy #1 + txa ; (20) + sta (sp),y + pla + dey + sta (sp),y ; (38) + rts +.endproc