; a2 - variable address
; a1 - list
; d0 - count
; a0 - quote address

	xdef	_ForAll

_ForAll	move.w	d0,d2		; count
	moveq	#-1,d0		; truth value ->d1
	beq.s	.1
	subq.l	#1,d2
	move.l	d0,d1
.l	move.l	(a1)+,(a2)
	movem.l	d1-d2/a0-a2,-(a7)
	jsr	(a0)
	movem.l	(a7)+,d1-d2/a0-a2
	tst.l	d0
	beq.s	.2
	dbra	d2,.l
	bra.s	.3
.2	moveq	#0,d1
	dbra	d2,.l
.3	move.l	d1,d0
.1	rts
