************************************************************************
*	NewBindings.ASM
*
* This assembly file contains binding routines for the new gadget functions
* provided in V1.2 of AmigaDOS.  You can use these binding routines
* if you have an old version of C compiler, for instance Manx V3.20A
* ( Though with a couple minor changes it can be used with the old
*   MetaComco Assember and Lattice C V3.03 )
************************************************************************

LIB_VERSION		equ	$14

_LVOActivateGadget	equ	-$1CE
_LVOActivateWindow	equ	-$1C2
_LVOAddGList		equ	-$1B6
_LVORefreshGList	equ	-$1B0
_LVORemoveGList		equ	-$1BC
_LVOGetScreenData	equ	-$1AA
_LVOAreaEllipse		equ	-$BA

	public	_ActivateGadget
	public	_ActivateWindow
	public	_AddGList
	public	_RefreshGList
	public	_RemoveGList
	public	_GetScreenData
	public	_AreaEllipse
	public	_IntuitionBase
	public	_GfxBase

*************************************************************************
*	ActivateGadget(&gadget, p_window, p_requester);
*		BOOLEAN return true on sucess
*************************************************************************
_ActivateGadget:
	movem.l	A2/A6,-(sp)		* A6 isn't mandatory w/Manx
	movem.l	12(sp),A0-A2		* ( but if you toss, adjust to 8! )
	move.l	_IntuitionBase,A6
	cmp	#32,LIB_VERSION(A6)	* SPECIAL TEST FOR LEGIT V1.2
	ble	nicht1
	jsr	_LVOActivateGadget(A6)
nicht1:	movem.l	(sp)+,A2/A6
	rts

************************************************************************
*	ActivateWindow(p_wind);
*
************************************************************************
_ActivateWindow:
	move.l	4(sp),A0
	move.l	A6,-(sp)		* Not necessary w/Manx
	move.l	_IntuitionBase,A6
	cmp	#32,LIB_VERSION(A6)	* SPECIAL TEST FOR LEGIT V1.2
	ble	nicht2
	jsr	_LVOActivateWindow(A6)
nicht2:	move.l	(sp)+,A6
	rts

*************************************************************************
*	AddGList( &gad, p_wind, position, number)
*		Return value is actual position inserted
*************************************************************************
_AddGList:
	movem.l	4(sp),A0/A1
	movem.l	12(sp),D0/D1
	move.l	A6,-(sp)			* Nicht Manx
	move.l	_IntuitionBase,A6
	jsr	_LVOAddGList(A6)
	move.l	(sp)+,A6
	rts

*************************************************************************
*	RefreshGList( &gad, p_wind, p_requester, number )
*
*************************************************************************
_RefreshGList:
	movem.l	A2/A6,-(sp)
	movem.l	12(sp),A0-A2
	move.l	$18(sp),D0
	move.l	_IntuitionBase,A6
	jsr	_LVORefreshGList(A6)
	movem.l	(sp)+,A2/A6
	rts

*************************************************************************
*	RemoveGList( &gad, p_wind, number);
*************************************************************************
_RemoveGList:
	movem.l	4(sp),A0-A1
	move.l	12(sp),D0
	move.l	A6,-(sp)			* Toss w/Manx
	move.l	_IntuitionBase,A6
	jsr	_LVORemoveGList(A6)
	move.l	(sp)+,A6
	rts

*************************************************************************
* AreaEllipse( p_rast, xcenter, ycenter, xdel, ydel);
*	(?) Returns 0 if no error a_la_AreaDraw()
*************************************************************************
_AreaEllipse:
	movem.l	D2/D3/A6,-(sp)
	move.l	16(sp),A1
	movem.l	20(sp),D0-D3
	move.l	_GfxBase,A6
	jsr	_LVOAreaEllipse(A6)
	movem.l	(sp)+,D2/D3/A6
	rts
	
*************************************************************************
*	GetScreenData( p_buffer, buffsize, type, p_somescreen);
*
*	Where p_buffer is a data area, sizeof(buffsize) which is
*	sizeof (struct Screen). type is WBENCHSCREEN or CUSTOMSCREEN
*	if type = CUSTOM, p_somescreen is the customscreen
*	Returns buffer containing a cloned_data for the screen requested
*************************************************************************
_GetScreenData
	move.l	4(sp),A0
	movem.l	8(sp),D0/D1/A1
	move.l	A6,-(sp)		* Gonzo Manx_a_mania
	move.l	_IntuitionBase,A6
	jsr	_LVOGetScreenData(A6)
	move.l	(sp)+,A6
	rts

