PAM Programming Manual
Link-Level Programming Examples
PAM Programming Manual—142482
B-29
Finding a Free Buffer
 IF ( ( hex_digit_ndx MOD 2 ) = 0 ) THEN
 foreign_addr[ ( hex_digit_ndx DIV 2 ) + 1 ] :=
 Chr ( ( hex_value * 16 ) OR
 Ord ( foreign_addr[ ( hex_digit_ndx DIV 2 ) + 1 ] ) )
 ELSE
 foreign_addr[ ( hex_digit_ndx DIV 2 ) + 1 ] :=
 Chr ( hex_value OR
 Ord ( foreign_addr[ ( hex_digit_ndx DIV 2 ) + 1 ] ) );
 hex_digit_ndx := ( hex_digit_ndx + 1 );
 END;
{-------------------------- Initialize Buffers -------------------}
 FOR buffer_lst_ndx := 0 TO ( Max_NoWait_Depth - 1 ) DO
 buffer_lst[ buffer_lst_ndx ].in_use_flag := False;
 END;
Finding a Free Buffer
The application must provide a function that allows it to find a free buffer to contain the 
aggregate SDU.
?PAGE ’FUNCTION: Find Free Buffer’
{------------------------------------------------------------------
 FUNCTION: Find Free Buffer
------------------------------------------------------------------}
FUNCTION Find_Free_Buffer
 ( VAR buffer_lst_ndx : LONGINT ) : BOOLEAN;
 BEGIN
 buffer_lst_ndx := 0;
 WHILE ( buffer_lst_ndx < ( NoWait_depth ) ) DO
 BEGIN
 IF NOT buffer_lst [ buffer_lst_ndx ].in_use_flag THEN
 BEGIN
 Find_Free_Buffer := True;
 RETURN;
 END;
 buffer_lst_ndx := ( buffer_lst_ndx + 1 );
 END;
 Find_Free_Buffer := False;
 END;










