; a0 - estr
; a1 - str
; d0 - length=-1

	xdef	_EStrAdd

_EStrAdd	movem.l	d2-d3/a2,-(a7)
	moveq	#0,d3
	move.w	(-2,a0),d3
	move.l	a0,a2
	moveq	#0,d1
	move.w	(-4,a0),d1
	sub.l	d3,d1
	add.l	d3,a0
	cmp.l	d0,d1
	bpl.s	.skip
	move.l	d1,d0
.skip	move.w	d0,d2
	beq.s	.dontfit
	subq.l	#1,d0
.loop	move.b	(a1)+,(a0)+
	beq.s	.done
	dbra.s	d0,.loop
	clr.b	(a0)+
.done	addq.w	#1,d0
	sub.w	d0,d2
	add.w	d3,d2
	move.w	d2,(-2,a2)
.dontfit	move.l	a2,d0
	movem.l	(a7)+,d2-d3/a2
	rts
