; a0 - variable address
; a1 - src list
; a2 - dest list
; d1 - count
; a3 - quote address

	xdef	_MapList

_MapList
	move.l	(4,a7),a0		; code
	move.l	(8,a7),a3		; destlist
	move.l	(12,a7),a1	; srclist
	move.l	(16,a7),a2	; var
	move.l	a3,-(a7)		; dl
	move.w	-4(a3),d0		; temp
	cmp.w	-2(a1),d0		; temp
	bmi.s	.1
	move.w	-2(a1),-2(a3)	; sl,dl
	move.w	-2(a1),d2		; count
	beq.s	.1
	subq.l	#1,d2		; count
.xl	move.l	(a1)+,(a2)	; var
	movem.l	d1-a3,-(a7)
	jsr	(a0)		; code
	movem.l	(a7)+,d1-a3
	move.l	d0,(a3)+		; res
	dbra	d2,.xl		; count
.1	move.l	(a7)+,d0
	rts
