cc65/libsrc/runtime/staxspi.s

40 lines
1.0 KiB
ArmAsm

;
; Ullrich von Bassewitz, 26.10.2000
; Christian Krueger, 12-Mar-2017, added 65SC02 optimization
;
; CC65 runtime: Store a/x indirect into address at top of stack with index
;
.export staxspidx
.import incsp2
.importzp sp, tmp1, ptr1
.macpack cpu
.proc staxspidx
sty tmp1 ; Save Y
pha ; Save A
ldy #1
lda (sp),y
sta ptr1+1
.if (.cpu .bitand ::CPU_ISET_65SC02)
lda (sp)
.else
dey
lda (sp),y
.endif
sta ptr1 ; Address now in ptr1
ldy tmp1 ; Restore Y
iny ; Address high byte
txa ; Get high byte
sta (ptr1),y ; Store high byte
dey ; Address low byte
pla ; Restore low byte into A
sta (ptr1),y ; Store low byte
jmp incsp2 ; Drop address
.endproc