?? RIGHT := 110 ??

  PROCEDURE [INLINE] dmp$get_fau_entry
    (    p_dfd: ^dmt$disk_file_descriptor;
         byte_address: amt$file_byte_address;
     VAR p_fau_entry: ^dmt$file_allocation_unit);

?? PUSH (LISTEXT := ON) ??

    VAR
      level_1_index: dmt$level_1_index,
      level_2_index: dmt$level_2_index,
      p_level1: ^dmt$level_1_table,
      p_level2: ^dmt$level_2_table;

    p_fau_entry := NIL;

    {Note:
    {If p_fau_entry is returned NIL then table space is not allocated

    IF p_dfd^.file_allocation_table <> NIL THEN
      level_1_index := byte_address DIV p_dfd^.bytes_per_level_2;
      IF level_1_index <= p_dfd^.fat_upper_bound THEN
        p_level1 := #ADDRESS (1, #SEGMENT (p_dfd), #OFFSET (p_dfd^.file_allocation_table));
        p_level2 := dmf$level_2_ptr (^p_level1^ [level_1_index]);
        IF p_level2 <> NIL THEN
          level_2_index := (byte_address MOD p_dfd^.bytes_per_level_2) DIV p_dfd^.bytes_per_allocation;
          p_fau_entry := ^p_level2^ [level_2_index];
        IFEND;
      IFEND;
    IFEND;

  PROCEND dmp$get_fau_entry;

*copyc dmt$disk_file_descriptor
*copyc dmt$sparse_allocation
*copyc dmf$level_2_ptr
?? POP ??
