  PROCEDURE [INLINE] bap$release_tft_entry
    (    file_instance: ^bat$task_file_entry;
         task_file_table_index: bat$tft_limit);

?? PUSH (LISTEXT := ON) ??
    VAR
      zero: 0 .. 0;

{The following code is to get around run-time and compile-time checks, because
{the sequence number type in the task file table entry begins with 1.
?? PUSH (CHKALL := OFF) ??
    zero := 0;
    file_instance^.sequence_number := zero;
?? POP ??

    file_instance^.local_file_name := osc$null_name;

    IF file_instance^.private_read_information <> NIL THEN
      FREE file_instance^.private_read_information IN osv$task_private_heap^;
    IFEND;

    bav$tft_entry_assignment^ (task_file_table_index, 1) := fmc$entry_free;

    WHILE (bav$last_tft_entry > 0) AND (bav$tft_entry_assignment^
          (bav$last_tft_entry, 1) = fmc$entry_free) DO
      bav$last_tft_entry := bav$last_tft_entry - 1;
    WHILEND;

  PROCEND bap$release_tft_entry;

*copyc bav$last_tft_entry
*copyc bav$tft_entry_assignment
*copyc osv$task_private_heap
?? POP ??
