	CSECT text,0,,1,2
;
;  This routine is a fast machine-language block move, that moves
;  exactly one block of data.  Do not change TRACKSIZE and expect
;  this still to work!
;

	XDEF fcpy
	XDEF fcmp

fcpy:
; source is in A0, dest in A1

	movem.l	a0-a6/d0-d7,-(a7)
	move.l	#43,d0
lsdf:
	movem.l	(a0)+,a2-a6/d1-d7
	movem.l	a2-a6/d1-d7,(a1)
	add.w	#48,a1
	movem.l	(a0)+,a2-a6/d1-d7
	movem.l	a2-a6/d1-d7,(a1)
	add.w	#48,a1
	movem.l	(a0)+,a2-a6/d1-d7
	movem.l	a2-a6/d1-d7,(a1)
	add.w	#48,a1
	movem.l	(a0)+,a2-a6/d1-d7
	movem.l	a2-a6/d1-d7,(a1)
	add.w	#48,a1
	movem.l	(a0)+,a2-a6/d1-d7
	movem.l	a2-a6/d1-d7,(a1)
	add.w	#48,a1
	movem.l	(a0)+,a2-a5
	movem.l	a2-a5,(a1)
	add.w	#16,a1
	dbra	d0,lsdf
	movem.l	(a7)+,a0-a6/d0-d7
	rts

;
;  Another fast assembly language routine for verifying a buffer.  This
;  routine returns 0 if the two buffers are the same, and something else
;  otherwise.
;

fcmp:
; source is in A0, dest in A1;
	movem.l	a0/a1,-(a7)
	move.l	#2815,d0
alsdf:
	cmp.l	(a0)+,(a1)+
	dbne	d0,alsdf
	addq.w #1,d0
	ext.l d0
	movem.l	(a7)+,a0/a1
	rts
