*************************************************************************
*									*
*	dline:	graphics primitives.					*
*									*
*************************************************************************
*

x1	equ	38
y1	equ	40
x2	equ	42
y2	equ	44
wmode	equ	36
lnmask	equ	34
lstlin	equ	32
colbit0	equ	24
colbit1	equ	26
colbit2	equ	28
colbit3	equ	30
ptsin	equ	12
contrl	equ	4
patptr	equ	46
patmsk	equ	50
mfill	equ	52
clip	equ	54

	.data
_dbase:	dc.l	0

	.text
*
* _dinit() - set up the universe
*
.globl	_dinit
_dinit:	movem.l	a1-a2/d2, -(sp)
	dc.w	$A000
	movem.l	(sp)+, a1-a2/d2
	move.l	a0, _dbase
	move.w	#-1,	lstlin(a0)
	move.w	#-1,	lnmask(a0)
	move.w	#1,	colbit0(a0)
	move.w	#1,	colbit1(a0)
	move.w	#1,	colbit2(a0)
	move.w	#1,	colbit3(a0)
	rts

*
* _dline() - draws a (tah-dah!) line
*
.globl	_dline
_dline:
	move.l	_dbase, d0
	bne	dlm
	jsr	_dinit
dlm:	move.l	d0, a0
	move.w	 4(sp),	x1(a0)
	move.w	 6(sp),	y1(a0)
	move.w	 8(sp),	x2(a0)
	move.w	10(sp),	y2(a0)
	move.w	12(sp), d0
	move.w	d0, colbit0(a0)
	move.w	d0, wmode(a0)
	
	movem.l	a1-a2/d2, -(sp)
	dc.w	$A003
	movem.l	(sp)+, a1-a2/d2
	rts

*
* _blit() - glue for the aline/hardware blitter
*
.globl	__blit
__blit:	move.l	4(sp), d0
	movem.l a0-a2/a6/d1-d2, -(sp)
	move.l	d0, a6
	dc.w	$A007
	movem.l (sp)+, a0-a2/a6/d1-d2
	rts
	
*
* _jtexture() - pattern fills a rectangle
*
.globl	_jtexture
_jtexture:
	move.l	_dbase, d0
	bne	tex
	jsr	_dinit
tex:	move.l	d0, a0
	move.w	 4(sp),	x1(a0)
	move.w	 6(sp),	y1(a0)
	move.w	 8(sp),	x2(a0)
	move.w	10(sp),	y2(a0)
	move.l	12(sp), patptr(a0)
	move.w	16(sp), patmsk(a0)
	move.w	18(sp), d0
	move.w	d0, colbit0(a0)
*	lsr.w	d0
*	lsl.w	d0
	and.w	#$fffe,d0
	move.w	d0, wmode(a0)
	move.w	#0, clip(a0)
	move.w	#0, mfill(a0)
	
	movem.l	a1-a2/d2, -(sp)
	dc.w	$A005
	movem.l	(sp)+, a1-a2/d2
	rts

	.end
