{ ------------------------------------------------------------------------	}
{ Функции для работы с FIFO буфером ввода и вывода на плате USB-3000,		}
{ 								на которой может быть установлен только ADSP-2185	}
{ ------------------------------------------------------------------------	}

{ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!	}
{ ************************************************************************	}
{ Функция конфигурирования FIFO буфера ввода 										}
{  	значение адреса FIFO может быть равно только 0x0 в памяти данных		}
{		значение длины FIFO в диапазоне от 1024(0x400) до 12288 (0x3000) Слов}
{ ************************************************************************	}
CheckInputFifoLimits:
	PutValPm(AR, 0x0, InputFifoBaseAddressAddr);	{ базовый адрес FIFO ввода	}

	GetPm(AR, InputFifoLengthAddr);
	AY0 = 0x400;						 { минимально возможная длина FIFO ввода	}
	NONE = AR - AY0;
	IF GE JUMP CheckMaxInputFifoLength;
	PutPm(AY0, CurInputFifoLengthAddr);
	RTS;

CheckMaxInputFifoLength:
	AY0 = 0x3000;		 	  			{ максимально возможная длина FIFO ввода	}
	NONE = AR - AY0;
	IF GT AR = PASS AY0;
	PutPm(AR, CurInputFifoLengthAddr);

{ спокойно выходим из функции																}
	RTS;

{ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!	}
{ ************************************************************************	}
{ Функция конфигурирования FIFO буфера вывода 										}
{  	значение адреса FIFO может быть равно только 0x3000 в памяти данных	}
{		значение длины FIFO в диапазоне от 128(0x80) до 3968 (0xF80) Слов 	}
{ ************************************************************************	}
CheckOutputFifoLimits:
	PutValPm(AR, 0x3000, OutputFifoBaseAddressAddr);{ базовый адрес FIFO вывода}

	GetPm(AR, OutputFifoLengthAddr);	{ нужная длина FIFO вывода					}
	AY0 = 0x80;							{ минимально возможная длина FIFO вывода	}
	NONE = AR - AY0;
	IF GE JUMP CheckMaxOutputFifoLength;
	AR = PASS AY0;
	PutPm(AR, CurOutputFifoLengthAddr);
	RTS;

CheckMaxOutputFifoLength:
	AY0 = 0xF80;						{ максимально возможная длина FIFO вывода	}
	NONE = AR - AY0;
	IF GT AR = PASS AY0;
	PutPm(AR, CurOutputFifoLengthAddr);	{ установленная длина FIFO вывода	}

{ спокойно выходим из функции																}
	RTS;
