; a0 - dst str
; a1 - format str
; a2 - list

	xdef	_EStringF
	xdef	_VEStringF

_VEStringF
_EStringF	movem.l	a2-a3/a6,-(a7)
	movea.l	a0,a3
	movea.l	a1,a0
	movea.l	a2,a1
	lea	(copychar,pc),a2
	movea.l	4.w,a6
	jsr	(-522,a6)
	move.l	a3,d0
	movem.l	(a7)+,a2-a3/a6
	rts

copychar	movem.l	d1-d2,-(a7)
	move.w	(-4,a3),d1
	move.w	(-2,a3),d2
	cmp.w	d2,d1
	bgt.s	.addchar
	move.w	d2,d0
	subq.w	#1,d0
	clr.b	(a3,d0.w)		; zero byte
	bra.s	.finish
.addchar	move.w	d2,d1
	move.b	d0,(a3,d1.w)
	addq.w	#1,d1
	move.w	d1,(-2,a3)
.finish	movem.l	(a7)+,d1-d2
	rts
