if(!DSP_Lock())
{
	ability = DSP_RequestUniqueAbility();
	handle = DSP_LoadSubroutine( subptr, length, ability );
	if(!handle)
	{
		DSP_FlushSubroutines();
		handle = DSP_LoadSubroutine( subptr, length, ability );
		if(!handle)
			error("Unable to load DSP subroutine");
	}

	if(handle)
	{
			if(!Dsp_RunSubroutine( handle ))
				DSP_DoBlock( data_in, size_in, data_out, size_out);
			else
				error("Unable to run DSP subroutine!");
	}
}

