




void draw_spans8flat(register int y __asm__("a4"), register int ey __asm__("d5"));

	__asm ("

	.equ	y,a4
	.equ	dest,a3
	.equ	mults,a2
	.equ	scan,a1
	.equ	buf,a0		| parameter ...
	
	.equ	ey,d5
	.equ	textcolor,d2
	.equ	len,d1
	.equ	sx,d0

.text
	.globl	_draw_spans8flat
| void draw_spans8flat(register int y __asm__ (a4), register int ey __asm__ (d5))
_draw_spans8flat:
	subl	y,ey			| y < ey
	subql	#1,ey			| (y - 1) <= ey
	blt	.bigEnd8flat

	moveml	d2/a2-a3,sp@-
	movel	_localDim+26,dest	| localDim.frameBuffer
	moveb	_textureColor,textcolor

	lea	@(_scan, y:l:8), scan	| scan[y][]
	movel	_multRows,mults
	lea	mults@(y:l:4),mults
.bigLoop8flat:
	movel	mults@+,buf		| multRows[y]
	movel	scan@+,sx		| FIX_INT(scan[y][0])
	movel	scan@+,len		| FIX_INT(scan[y][1])
	subl	sx,len			| scan[y][1] - sx
	bles	.noSpan8flat		| len > 0
	addl	dest,buf		| localDim.frameBuffer + multRows[y]
	addl	sx,buf
	subql	#1,len
.fillflat:
	moveb	textcolor,buf@+
	dbra	len,.fillflat
.noSpan8flat:
	dbra	ey,.bigLoop8flat
	moveml	sp@+,d2/a2-a3
.bigEnd8flat:
	rts
	.even
	");
