;D3libs.i
;
;D3line		a0 address of line_structure 
;line_stuctucture	
;	dc.w	xbegin
;	dc.w	ybegin
;	dc.w	zbegin
;	dc.w	xend
;	dc.w	yend
;	dc.w	zend
;	dc.w	color



D3Line		macro
		lea	\1(pc),a0
		ifd	STACKVARIABLES
		move.l	_D3Base(a4),a6
		endc
		jsr	-84(a6)		;D3Line
		endm

D3Cubic		macro
		lea	\1(pc),a0
		ifd	STACKVARIABLES
		move.l	_D3Base(a4),a6
		endc
		jsr	-96(a6)		;D3Cub
		endm

D3Circle	macro
		lea	\1(pc),a0
		ifd	STACKVARIABLES
		move.l	_D3Base(a4),a6
		endc
		jsr	-42(a6)		;Circle
		endm

D3Arcus		macro
		lea	\1(pc),a0
		ifd	STACKVARIABLES
		move.l	_D3Base(a4),a6
		endc
		jsr	-102(a6)	;Arcus
		endm

D3Plot		macro	
		ifnd	STACKVARIABLES
		move.w	\1,d0
		move.w	\2,d1
		move.w	\3,d2
		endc
		ifd	STACKVARIABLES
		ifd	\1sw
		move.l	\1(a4),d0
		endc
		ifnd	\1sw
		move.l	#\1,d0
		endc
		ifd	\2sw
		move.l	\2(a4),d1
		endc
		ifnd	\2sw
		move.l	#\2,d1
		endc
		ifd	\3sw
		move.l	\3(a4),d2
		endc
		ifnd	\3sw
		move.l	#\3,d2
		endc
		endc
		ifd	STACKVARIABLES
		move.l	_D3Base(a4),a6
		endc
		ifnd	STACKVARIABLES
		move.l	_D3Base(pc),a6
		endc
		jsr	-90(a6)		D3Plot
		endm
		
Square		macro
		ifnd	STACKVARIABLES
		move.l	\1,d0
		endc
		ifd	STACKVARIABLES
		ifd	\1sw
		move.l	\1(a4),d0
		endc
		ifnd	\1sw
		move.l	#\1,d0
		endc
		endc	
		ifd	STACKVARIABLES
		move.l	_D3Base(a4),a6
		endc
		ifnd	STACKVARIABLES
		move.l	_D3Base(pc),a6
		endc
		jsr	-144(a6)		;square
		endm
		
mulsini		macro
		ifnd	STACKVARIABLES
		move.w	\2,d0
		endc
		ifd	STACKVARIABLES
		ifd	\2sw
		move.l	\2(a4),d0
		endc
		ifnd	\2sw
		move.l	#\2,d0
		endc
		endc
		ifd	STACKVARIABLES
		move.l	_D3Base(a4),a6
		endc
		ifnd	STACKVARIABLES
		move.l	_D3Base(pc),a6
		endc
		jsr	-36(a6)		;Sini
		ifnd	STACKVARIABLES
		muls.w	\1,d0
		endc
		ifd	STACKVARIABLES
		ifd	\1sw
		move.l	\1(a4),d1
		endc
		ifnd	\1sw
		move.l	#\1,d1
		endc
		muls.w	d1,d0
		endc
		asl.l	#1,d0
		swap	d0
		ext.l	d0
		endm

mulcosi		macro
		ifnd	STACKVARIABLES
		move.w	\2,d0
		move.l	_D3Base(pc),a6
		jsr	-30(a6)		;Cosi
		muls.w	\1,d0
		endc
		ifd	STACKVARIABLES
		ifd	\2sw
		move.l	\2(a4),d0
		endc
		ifnd	\2sw
		move.l	#\2,d0
		endc
		move.l	_D3Base(a4),a6
		jsr	-30(a6)		;Cosi
		ifd	\1sw
		move.l	\1(a4),d1
		endc
		ifnd	\1sw
		move.l	#\1,d1
		endc
		muls.w	d1,d0
		endc
		asl.l	#1,d0
		swap	d0
		ext.l	d0
		endm

sqx2y2		macro
		move.l	a6,-(sp)
		ifd	STACKVARIABLES
		ifd	\1sw
		move.l	\1(a4),d0
		endc
		ifnd	\1sw
		move.l	#\1,d0
		endc
		ifd	\2sw
		move.l	\2(a4),d1
		endc
		ifnd	\2sw
		move.l	#\2,d1
		endc
		endc
		ifnd	STACKVARIABLES
		move.w	\1,d1
		move.w	\2,d0
		endc
		muls.w	d1,d1
		muls.w	d0,d0
		add.l	d1,d0
		ifd	STACKVARIABLES
		move.l	_D3Base(a4),a6
		endc
		ifnd	STACKVARIABLES
		move.l	_D3Base(pc),a6
		endc
		jsr	-144(a6)	;square
		move.l	(sp)+,a6
		endm

D3Print		macro
		ifnd	\1sw
		lea	\1(pc),a0
		endc
		ifnd	\2sw
		lea	\2(pc),a1
		endc
		ifd	\1sw
		move.l	\1(a4),a0
		endc
		ifd	\2sw
		move.l	\2(a4),a1
		endc
		Lib	D3,D3Print
		endm

Lib		macro
		ifd	STACKVARIABLES
		move.l	_\1Base(a4),a6
		endc
		ifnd	STACKVARIABLES
		move.l	_\1Base(pc),a6
		endc
		jsr	_LVO\2(a6)
		endm

OpenD3		macro
		move.l	4,a6
		lea	_D3Lib(pc),a1
	  	moveq	#0,d0
		jsr	-552(a6)	;openlibrary
		ifd	STACKVARIABLES
		move.l	d0,_D3Base(a4)
		endc
		ifnd	STACKVARIABLES
		lea	_D3Base(pc),a0
		move.l	d0,(a0)
		beq	\1
		endc
		bra	overd3name		
_D3Lib		dc.b	"d3.library",0,0,0,0
		ds.w	0
overd3name
		endm


D3name		macro
_D3Lib		dc.b	"d3.library",0
		ds.l	0
		endm

CloseD3		macro
clsd3		set	1
		move.l	4,a6
		ifd	STACKVARIABLES
		move.l	_D3Base(a4),a1
		endc
		ifnd	STACKVARIABLES
		move.l	_D3Base(pc),a1
		endc
		move.l	a1,d0
		beq	123$
		jsr	-414(a6)		;closelibrary
123$		ifd	STACKVARIABLES
		clr.l	_D3Base(a4)
		endc
		ifnd	STACKVARIABLES
		lea	_D3Base(pc),a0
		clr.l	(a0)		
		endc
		endm

D3Rot		macro
		movem.l	d2-d4/a6,-(sp)
		ifc	'\4',''
		moveq.l	#1,d3
		endc
		ifnc	'\4',''
		move.w	\4,d3
		endc
		ifd	STACKVARIABLES
		ifd	\1sw
		move.l	\1(a4),d0
		endc
		ifnd	\1sw
		move.l	#\1,d0
		endc
		ifd	\2sw
		move.l	\2(a4),d1
		endc
		ifnd	\2sw
		move.l	#\2,d1
		endc
		ifd	\3sw
		move.l	\3(a4),d2
		endc
		ifnd	\3sw
		move.l	#\3,d2
		endc
		endc
		ifnd	STACKVARIABLES
		move.w	\1,d0
		move.w	\2,d1
		move.w	\3,d2
		endc
		ifd	STACKVARIABLES
		move.l	_D3Base(a4),a6
		endc
		ifnd	STACKVARIABLES
		move.l	_D3Base(pc),a6
		endc
		jsr	-48(a6)		;D3Rot
		movem.l	(sp)+,d2-d4/a6
		endm

LightArcus	macro
		movem.l	d2/a6,-(sp)
		ifc	'\3',''
		moveq.l	#1,d2
		endc
		ifnc	'\3',''
		move.w	\3,d2
		endc
		ifd	STACKVARIABLES
		ifd	\1sw
		move.l	\1(a4),d0
		endc
		ifnd	\1sw
		move.l	#\1,d0
		endc
		ifd	\2sw
		move.l	\2(a4),d1
		endc
		ifnd	\2sw
		move.l	#\2,d1
		endc
		endc
		ifnd	STACKVARIABLES
		move.w	\1,d0
		move.w	\2,d1
		endc
		ifd	STACKVARIABLES
		move.l	_D3Base(a4),a6
		endc
		ifnd	STACKVARIABLES
		move.l	_D3Base(pc),a6
		endc
		jsr	-156(a6)		;LIghtArcus
		movem.l	(sp)+,d2/a6
		endm

ColorSet	macro
		move.l	a6,-(sp)
		ifd	STACKVARIABLES
		ifd	\1sw
		move.l	\1(a4),d0
		endc
		ifnd	\1sw
		move.l	#\1,d0
		endc
		ifd	\2sw
		move.l	\2(a4),d1
		endc
		ifnd	\2sw
		move.l	#\2,d1
		endc
		endc
		ifnd	STACKVARIABLES
		move.w	\1,d0
		move.w	\2,d1
		endc
		ifd	STACKVARIABLES
		move.l	_D3Base(a4),a6
		endc
		ifnd	STACKVARIABLES
		move.l	_D3Base(pc),a6
		endc
		jsr	-162(a6)		;ColorSet
		move.l	(sp)+,a6
		endm

D3Dist		macro
		move.l	a6,-(sp)
		ifc	'\2',''
		moveq.l	#1,d1
		endc
		ifnc	'\2',''
		move.w	\2,d1
		endc
		ifd	STACKVARIABLES
		ifd	\1sw
		move.l	\1(a4),d0
		endc
		ifnd	\1sw
		move.l	#\1,d0
		endc
		endc
		ifnd	STACKVARIABLES
		move.w	\1,d0
		endc
		ifd	STACKVARIABLES
		move.l	_D3Base(a4),a6
		endc
		ifnd	STACKVARIABLES
		move.l	_D3Base(pc),a6
		endc
		jsr	-60(a6)		;D3Dist
		move.l	(sp)+,a6
		endm

D3ColorPlot	macro
		movem.l	d2/a6,-(sp)
		ifd	STACKVARIABLES
		move.l	\1(a4),d0
	 	move.l	\2(a4),d1
		move.l	\3(a4),d2
		endc
		ifnd	STACKVARIABLES
		move.w	\1,d0
		move.w	\2,d1
		move.w	\3,d2
		endc
		ifd	STACKVARIABLES
		move.l	_D3Base(a4),a6
		endc
		ifnd	STACKVARIABLES
		move.l	_D3Base(pc),a6
		endc
		jsr	-138(a6)		;ColorPlot
		movem.l	(sp)+,d2/a6
		endm
		
OpenD3Window	macro
		movem.l	d2-d4/a6,-(sp)
		ifd	STACKVARIABLES
		ifnd	\1sw
		move.l	#\1,d0
		endc
		ifd	\1sw
		move.l	\1(a4),d0
		endc
		ifnd	\2sw
		move.l	#\2,d1
		endc
		ifd	\2sw
		move.l	\2(a4),d1
		endc
		ifnd	\3sw
		move.l	#\3,d2
		endc
		ifd	\3sw
		move.l	\3(a4),d2
		endc
		ifnd	\4sw
		move.l	#\4,d3
		endc
		ifd	\4sw
		move.l	\4(a4),d3
		endc
		ifnd	\5sw
		move.l	#\5,d4
		endc
		ifd	\5sw
		move.l	\5(a4),d4
		endc
		endc
		ifnd	STACKVARIABLES
		move.w	\1,d0
		move.w	\2,d1
		move.w	\3,d2
		move.w	\4,d3
		move.w	\5,d4
		endc
		ifd	STACKVARIABLES
		move.l	_D3Base(a4),a6
		endc
		ifnd	STACKVARIABLES
		move.l	_D3Base(pc),a6
		endc
		jsr	-174(a6)	;OpenD3Window
		movem.l	(sp)+,d2-d4/a6
		endm
		
CloseD3Window	macro
		ifd	STACKVARIABLES
		ifd	\1sw
		move.l	\1(a4),d0
		endc
		ifnd	\1sw
		move.l	#\1,d0
		endc
		endc
		ifnd	STACKVARIABLES
		move.w	\1,d0
		endc
		ifd	STACKVARIABLES
		move.l	_D3Base(a4),a6
		endc
		ifnd	STACKVARIABLES
		move.l	_D3Base(pc),a6
		endc
		jsr	-192(a6)		;CloseD3Window
		endm

ActiveD3Window	macro
		ifd	STACKVARIABLES
		ifd	\1sw
		move.l	\1(a4),d0
		endc
		ifnd	\1sw
		move.l	#\1,d0
		endc
		endc
		ifnd	STACKVARIABLES
		move.w	\1,d0
		endc
		ifd	STACKVARIABLES
		move.l	_D3Base(a4),a6
		endc
		ifnd	STACKVARIABLES
		move.l	_D3Base(pc),a6
		endc
		jsr	-186(a6)	;ActiveD3Window
		endm
		
AllocD3Buf	macro
		ifd	STACKVARIABLES
		ifd	\1sw
		move.l	\1(a4),d0
		endc
		ifnd	\1sw
		move.l	#\1,d0
		endc
		endc
		ifnd	STACKVARIABLES
		move.w	\1,d0
		endc
		ifd	STACKVARIABLES
		move.l	_D3Base(a4),a6
		endc
		ifnd	STACKVARIABLES
		move.l	_D3Base(pc),a6
		endc
		jsr	-120(a6)	;AllocD3Buf
		endm
		
FreeD3Buf	macro
		ifd	STACKVARIABLES
		ifd	\1sw
		move.l	\1(a4),d0
		endc
		ifnd	\1sw
		move.l	#\1,d0
		endc
		endc
		ifnd	STACKVARIABLES
		move.w	\1,d0
		endc
		ifd	STACKVARIABLES
		move.l	_D3Base(a4),a6
		endc
		ifnd	STACKVARIABLES
		move.l	_D3Base(pc),a6
		endc
		jsr	-126(a6)		;FreeD3Buf
		endm
		
ColorWindow	macro
		ifd	STACKVARIABLES
		ifd	\1sw
		move.l	\1(a4),d0
		endc
		ifnd	\1sw
		move.l	#\1,d0
		endc
		endc
		ifnd	STACKVARIABLES
		move.w	\1,d0
		endc
		ifd	STACKVARIABLES
		move.l	_D3Base(a4),a6
		endc
		ifnd	STACKVARIABLES
		move.l	_D3Base(pc),a6
		endc
		jsr	-150(a6)		;ColorWindow
		endm

ClickD3Window	macro
		ifd	STACKVARIABLES
		ifd	\1sw
		move.l	\1(a4),d0
		endc
		ifnd	\1sw
		move.l	#\1,d0
		endc
		endc
		ifnd	STACKVARIABLES
		move.w	\1,d0
		endc
		ifd	STACKVARIABLES
		move.l	_D3Base(a4),a6
		endc
		ifnd	STACKVARIABLES
		move.l	_D3Base(pc),a6
		endc
		jsr	_LVOClickD3Window(a6)
		endm

TestZero	macro
		tst.l	\1
		beq	\2
		endm	
		
TestVanillaKey	macro
		ifd	STACKVARIABLES
		move.l	_D3Base(a4),a6
		endc
		ifnd	STACKVARIABLES
		move.l	_D3Base(pc),a6
		endc
		jsr	_LVOVanillaKey(a6)
		tst.w	d0
		ifnc	'\1',''
		bne	\1
		endc
		endm
		
OpenD3Screen	macro
		ifd	STACKVARIABLES
		move.l	_D3Base(a4),a6
		endc
		ifnd	STACKVARIABLES
		move.l	_D3Base(pc),a6
		endc
		jsr	-72(a6)		;OpenD3SCreen
		endm
		
CloseD3Screen	macro
		ifd	STACKVARIABLES
		move.l	_D3Base(a4),a6
		endc
		ifnd	STACKVARIABLES
		move.l	_D3Base(pc),a6
		endc
		jsr	-192(a6)	;CloseD3Screen
		endm

