NumLin = 256

j:	move.w	#$0020,$dff096
	clr.l	$dff144

	move.l	#lazarea,d0
	move.w	d0,lal
	swap	d0
	move.w	d0,lah

	move.l	4,a6
	jsr	-132(a6)
	move.l	4,a6
	lea	gfxlib,a1
	moveq	#0,d0
	jsr	-408(a6)
	move.l	d0,gfxbas
	move.l	d0,a0
	add.l	#$32,a0	
	move.l	(a0),a1
	move.l	a1,savecop

	lea	cop,a1
	move.l	a1,(a0)

	move.l	$6c,oldjmp+2
	move.l	#newirq,$6c

wmaus:	btst	#6,$bfe001
	bne	wmaus
	move.l	gfxbas,d0
	move.l	d0,a0
	add.l	#$32,a0
	move.l	savecop,(a0)
	move.l	4,a6
	jsr	-138(a6)
	move.l	oldjmp+2,$6c
	move.w	#$8020,$dff096
	clr.l	d0
	rts

blitwait:btst #14,$dff002
	bne.s	blitwait
	rts

newirq:	movem.l	d0-d7/a0-a6,-(a7)
Loppe:	move.b	$dff006,d0
	cmp.b	#$80,d0
	bne	Loppe
	move.w	#$ffff,$dff180
	bsr	Lins
	move.w	#$0000,$dff180
Leavirq:movem.l	(a7)+,d0-d7/a0-a6
oldjmp:	jmp	$0

Lins:	lea	SavLins,a0
	clr.l	d0
	move.w	Next,d0
	mulu	#8,d0
	add.l	d0,a0
	move.l	a0,SavDrit
	clr.l	d0
	clr.l	d1
	clr.l	d2
	clr.l	d3
	cmp.l	#$00000000,(a0)
	bne	Neigh
	cmp.l	#$00000000,4(a0)
	beq	NoNeigh
Neigh:	move.w	(a0)+,d0
	move.w	(a0)+,d1
	move.w	(a0)+,d2
	move.w	(a0)+,d3
	bsr	kwiker
NoNeigh:move.w	PrevX1,d0
	move.w	PrevY1,d1
	move.w	PrevX2,d2
	move.w	PrevY2,d3
	add.w	AddX1,d0
	add.w	AddY1,d1
	add.w	AddX2,d2
	add.w	AddY2,d3
	move.l	SavDrit,a0
	move.w	d0,(a0)+
	move.w	d1,(a0)+
	move.w	d2,(a0)+
	move.w	d3,(a0)+
	move.w	d0,PrevX1
	move.w	d1,PrevY1
	move.w	d2,PrevX2
	move.w	d3,PrevY2
	bsr	kwiker
	add.w	#$01,Next
	cmp.w	#numlin+1,Next
	bne	Norez
	clr.w	Next
NoRez:	cmp.w	#0,PrevX1
	beq	NotX1
	cmp.w	#335,PrevX1
	beq	NotX1
	bra	Y1
NotX1:	eor.w	#$fffe,AddX1
Y1:	cmp.w	#0,PrevY1
	beq	NotY1
	cmp.w	#218,PrevY1
	beq	NotY1
	bra	X2
NotY1:	eor.w	#$fffe,AddY1
X2:	cmp.w	#0,PrevX2
	beq	NotX2
	cmp.w	#335,PrevX2
	beq	NotX2
	bra	Y2
NotX2:	eor.w	#$fffe,AddX2
Y2:	cmp.w	#0,PrevY2
	beq	NotY2
	cmp.w	#218,PrevY2
	beq	NotY2
	bra	X3
NotY2:	eor.w	#$fffe,AddY2
X3:	rts

SavDrit:dc.l	0
Next:	dc.w	0
PrevX1:	dc.w	$0010
PrevY1:	dc.w	$0080
PrevX2:	dc.w	$0110
PrevY2:	dc.w	$0070
AddX1:	dc.w	$0001
AddY1:	dc.w	$ffff
AddX2:	dc.w	$ffff
AddY2:	dc.w	$0001

; Preload:  d0=X1  d1=Y1  d2=X2  d3=Y2  d5=Screenwidth  a0=address  a6=$dff000 
; $dff060=Screenwidth (word)  $dff072=-$8000 (longword)  $dff044=-1 (longword)

kwiker:	bsr	blitwait
	move.l	#$ffff8000,$dff072
	move.l	#-1,$dff044
	lea	$dff000,a6
	lea	lazarea,a0
	move.w	#42,d5
	move.w	d5,$dff060

draw:	cmp.w	d1,d3
	bgt.s	line1
	exg	d0,d2
	exg	d1,d3
	beq.s	out
line1:	move.w	d1,d4
	muls	d5,d4
	move.w	d0,d5
	add.l	a0,d4
	asr.w	#3,d5
	add.w	d5,d4
	moveq	#0,d5
	sub.w	d1,d3
	sub.w	d0,d2
	bpl.s	line2
	moveq	#1,d5
	neg.w	d2
line2:	move.w	d3,d1
	add.w	d1,d1
	cmp.w	d2,d1
	dbhi	d3,line3
line3:	move.w	d3,d1
	sub.w	d2,d1
	bpl.s	line4
	exg	d2,d3
line4:	addx.w	d5,d5
	add.w	d2,d2
	move.w	d2,d1
	sub.w	d3,d2
	addx.w	d5,d5
	and.w	#15,d0
	ror.w	#4,d0
	or.w	#$a4a,d0
waitblt:btst	#6,2(a6)
	bne.s	waitblt
	move.w	d2,$52(a6)
	sub.w	d3,d2
	lsl.w	#6,d3
	addq.w	#2,d3
	move.w	d0,$40(a6)
	move.b	oct(PC,d5.w),d0
	bclr	#1,d0
	move.b	d0,$43(a6)
	move.l	d4,$48(a6)
	move.l	d4,$54(a6)
	movem.w	d1/d2,$62(a6)
	move.w	d3,$58(a6)
out:	rts

oct:	dc.l	$3431353,$b4b1757   

gfxlib:	dc.b	"graphics.library",0
even
gfxbas:	dc.l	0

cop:	dc.w	$0180,$0000,$0100,$0200
	dc.w	$008e,$1c21,$0090,$41ff
	dc.w	$0092,$0030,$0094,$00d0
	dc.w	$0108,$0000,$010a,$0000,$0102,$0000

Pal:	dc.w	$180,$000,$182,$f80,$184,$e70,$186,$d60,$188,$b60
	dc.w	$18a,$a50,$18c,$950,$18e,$840,$190,$80f,$192,$70e
	dc.w	$194,$70d,$196,$60c,$198,$50b,$19a,$50a,$19c,$409
	dc.w	$19e,$408
	dc.w	$1a0,$000,$1a2,$f80,$1a4,$e70,$1a6,$d60,$1a8,$b60
	dc.w	$1aa,$a50,$1ac,$950,$1ae,$840,$1b0,$740,$1b2,$850
	dc.w	$1b4,$950,$1b6,$a60,$1b8,$b60,$1ba,$c70,$1bc,$d70
	dc.w	$1be,$e80

	dc.w	$e0
lah:	dc.w	0,$e2
lal:	dc.w	0

	dc.l	$2409fffe,$01001200
	dc.l	$ff09fffe,$01000200

CopEnd:	dc.w	$ffff,$fffe

Savecop:dc.l	0
SavLins:blk.w	4*NumLin
Buffer:	blk.b	100,0
lazarea:blk.b	42*219,0
