/*	BPlib_custom.c	*/
/*	Custom Library Initialization, Expunge	*/

#include <exec/types.h>
/*#include <exec/alerts.h>*/
#include <intuition/intuition.h>
#include <proto/intuition.h>
#include <clib/exec_protos.h>
#include <pragmas/exec_pragmas.h>
/*#include <dos.h>*/
#include "PointerCust.h"
#include "PointerLib.h"
#include "Pointer.h"

struct ExecBase* SysBase = NULL;
struct IntuitionBase *IntuitionBase = NULL;

USHORT __chip BusyData[] = 
{
	0x0000, 0x0000,
	0x0400, 0x07C0,
	0x0000, 0x07C0,
	0x0100, 0x0380,
	0x0000, 0x07E0,
	0x07C0, 0x1FF8,
	0x1FF0, 0x3FEC,
	0x3FF8, 0x7FDE,
	0x3FF8, 0x7FBE,
	0x7FFC, 0xFF7F,
	0x7EFC, 0xFFFF,
	0x7FFC, 0xFFFF,
	0x3FF8, 0x7FFE,
	0x3FF8, 0x7FFE,
	0x1FF0, 0x3FFC,
	0x07C0, 0x1FF8,
	0x0000, 0x07E0,

	0x0000, 0x0000
};

static struct Pointer DefaultBusyPointer = { BusyData,16,16,-6,-0,0 };
struct Pointer* BusyPointer = &DefaultBusyPointer;

BOOL __asm __saveds CustomLibInit( register __a6 struct Library *libbase )
{
	SysBase = (struct ExecBase*)(*((ULONG *)4) );

	IntuitionBase = (struct IntuitionBase *)
		OpenLibrary( "intuition.library", 33L );
	if( IntuitionBase == NULL )
	{
		/*DisplayAlert( RECOVERY_ALERT,
			"\x00\x10\x10 IntuitionBase failed to open \x00\x00", 30 );*/
		return( FALSE );
	}
	/*DisplayAlert( RECOVERY_ALERT,
		"\x00\x10\x10 CustomLibInit'ing \x00\x00", 30 );*/

	if( ( BusyPointer = LIBLoadPointer( "SYS:Prefs/presets/BusyPointer.ilbm" ) ) == NULL )
	{
		/*DisplayAlert( RECOVERY_ALERT,
			"\x00\x10\x10 LoadPointer() Failed. Using Default BusyPointer \x00\x00", 30 );*/
		BusyPointer = &DefaultBusyPointer;
	}

	return( TRUE );
}


void __asm __saveds CustomLibExpunge( register __a6 struct Library *libbase )
{
	if( IntuitionBase )
	{
		/*DisplayAlert( RECOVERY_ALERT,
			"\x00\x10\x10 CustomLibExpunge()'ing \x00\x00", 30 );*/
		CloseLibrary( (struct Library*)IntuitionBase );
		IntuitionBase = NULL;
	}

	if( BusyPointer != &DefaultBusyPointer )
	{
		LIBFreePointer( BusyPointer );
	}
}
