; 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
- ldy #0 ; get index
- sta (sp),y ; store lo byte
- pha ; save it
- txa ; get hi byte
- iny ; bump idx
- sta (sp),y ; store hi byte
- pla ; get A back
- rts ; done
+.proc pushax
-@L1: dey
-@L2: dey
- dec sp+1
- jmp @L0
+ 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