; 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