; Since we need some place to store the intermediate results, allocate a
; stack frame. To make this somewhat more efficient, create the stackframe
; as needed for the final call to the memcpy function.
-
+
+ pha ; decsp will destroy A (but not X)
jsr decsp4 ; Target/source
; Store the pointer into the source slot
- ldy #0
- sta (sp),y
- iny
- pha
+ ldy #1
txa
sta (sp),y
- pla
+ pla
+.ifpc02
+ sta (sp)
+.else
+ dey
+ sta (sp),y
+.endif
; Get length of S (which is still in a/x)
sty sreg
sty sreg+1
pusheax:
+ pha ; decsp will destroy A (but not X)
jsr decsp4
- pha
- ldy #0
- sta (sp),y
- iny
- txa
+ ldy #3
+ lda sreg+1
sta (sp),y
- iny
+ dey
lda sreg
sta (sp),y
- iny
- lda sreg+1
+ dey
+ txa
sta (sp),y
+ dey
pla
+ sta (sp),y
rts