{
{ dmt$device_log_entries
{

  TYPE
    dmt$dl_entry_kind = (dmc$invalid_dl_entry, dmc$dl_allocate,
      dmc$dl_first_sft_delete, dmc$dl_second_sft_delete,
      dmc$dl_third_sft_delete, dmc$dl_create, dmc$dl_return_dau,
      dmc$dl_disk_tables_updated, dmc$dl_attach_file, dmc$dl_detach_file,
      dmc$dl_initialize, dmc$dl_last_update_entry, dmc$dl_purge_file,
      dmc$dl_second_purge_file, dmc$dl_release_dau, dmc$dl_release_dfl,
      dmc$dl_return_dfl, dmc$dl_software_flawed, dmc$dl_start_update,
      dmc$dl_update_disk_tables, dmc$dl_update_file_length,
      dmc$dl_update_fmd_length, dmc$dl_file_damaged, dmc$dl_reallocate,
      dmc$dl_trim_file, dmc$dl_deallocate_file_fragment, dmc$dl_continue_purge,
      dmc$dl_sa_on_dl_entry,
      dmc$dl_sa_after_process_dl, dmc$dl_sa_bef_next_dfl_change,
      dmc$dl_sa_aft_next_dfl_change, dmc$dl_sa_bef_next_dat_change,
      dmc$dl_sa_aft_next_dat_change, dmc$dl_sa_bef_logging_dtu,
      dmc$dl_sa_bef_mf_table_update, dmc$dl_sa_aft_mf_table_update,
      dmc$dl_ra_on_dl_entry, dmc$dl_ra_after_process_dl,
      dmc$dl_ra_bef_next_dfl_change, dmc$dl_ra_aft_next_dfl_change,
      dmc$dl_ra_bef_next_dat_change, dmc$dl_ra_aft_next_dat_change,
      dmc$dl_ra_bef_logging_dtu, dmc$dl_recycle_dau),

    dmt$dl_entry_kind_set = set of dmt$dl_entry_kind;

  TYPE
    dmt$abort_log_types = (dmc$system_abort, dmc$recovery_abort,
      dmc$logout_abort),

    dmt$abort_log_positions = (dmc$sa_processing_log,
      dmc$sa_updating_disk_tables, dmc$sa_updating_mat, dmc$sa_updating_mfl,
      dmc$ra_processing_log, dmc$ra_updating_disk_tables, dmc$ra_updating_mat,
      dmc$ra_updating_mfl),

    dmt$system_abort_log_positions = dmc$sa_processing_log ..
      dmc$sa_updating_mfl,

    dmt$recovry_abort_log_positions = dmc$ra_processing_log ..
      dmc$ra_updating_mfl,

    dmt$system_log_aborts = set of dmt$system_abort_log_entries,

    dmt$recovery_log_aborts = set of dmt$recovery_abort_log_entries,

    dmt$system_abort_log_entries = dmc$dl_sa_on_dl_entry ..
      dmc$dl_sa_aft_mf_table_update,

    dmt$recovery_abort_log_entries = dmc$dl_ra_on_dl_entry ..
      dmc$dl_ra_bef_logging_dtu,

    dmt$recovery_test_aborts = array [dmt$recovry_abort_log_positions] of
      dmt$recovery_abort_log_entries,

    dmt$system_test_aborts = array [dmt$system_abort_log_positions] of
      dmt$system_abort_log_entries,

    dmt$log_abort = record
      case abort: dmt$abort_log_types of
      = dmc$system_abort =
        system_abort_position: dmt$system_abort_log_positions,
      = dmc$recovery_abort =
        recovery_abort_position: dmt$recovry_abort_log_positions,
      casend,
    recend;

  TYPE
    dmt$dl_allocate_block = record
      global_file_name: dmt$global_file_name,
      dfl_index: dmt$device_file_list_index,
      allocate_flags: dmt$dl_allocate_flags,
      dau_address: dmt$dau_address,
      previous_dau_address: dmt$dau_address,
      daus_per_allocation: dmt$daus_per_allocation,
    recend,

    dmt$dl_trim_file_block = record
      global_file_name: dmt$global_file_name,
      dfl_index: dmt$device_file_list_index,
      dau_address: dmt$dau_address,
      dau_of_fragment: dmt$dau_address,
    recend,

    dmt$dl_deallocate_fragment_blk = record
      global_file_name: dmt$global_file_name,
      dfl_index: dmt$device_file_list_index,
      dau_address: dmt$dau_address,
    recend,

    dmt$dl_reallocate_block = record
      global_file_name: dmt$global_file_name,
      dfl_index: dmt$device_file_list_index,
      mainframe_assigned: dmt$mainframe_assigned,
      dau_address,
      old_dau_address,
      next_dau_address,
      previous_dau_address: dmt$dau_address,
      daus_per_allocation: dmt$daus_per_allocation,
      allocation_chain_position: dmt$allocation_chain_position,
    recend,

    dmt$dl_allocate_flags = (dmc$dl_first_allocation,
      dmc$dl_continued_allocation),

    dmt$dl_sft_delete_block = record
      global_file_name: dmt$global_file_name,
      dfl_index: dmt$device_file_list_index,
      sfid: gft$system_file_identifier,
      fmd_index: dmt$fmd_index,
    recend,

    dmt$dl_create_block = record
      global_file_name: dmt$global_file_name,
      dfl_index: dmt$device_file_list_index,
      daus_per_allocation: dmt$daus_per_allocation,
      file_kind: gft$file_kind,
      mainframe_assigned: dmt$mainframe_assigned,
      fmd_byte_address: amt$file_byte_address,
    recend,

    dmt$dl_return_dau_block = record
      mainframe_assigned: dmt$mainframe_assigned,
      dau_address: dmt$dau_address,
      daus_per_allocation: dmt$daus_per_allocation,
    recend,

    dmt$dl_attach_file_block = record
      global_file_name: dmt$global_file_name,
      dfl_index: dmt$device_file_list_index,
      mainframe_assigned: dmt$mainframe_assigned,
    recend,

    dmt$dl_initialize_block = record
      global_file_name: dmt$global_file_name,
      dfl_index: dmt$device_file_list_index,
      dau_address: dmt$dau_address,
    recend,

    dmt$dl_purge_file_block = record
      global_file_name: dmt$global_file_name,
      dfl_index: dmt$device_file_list_index,
      file_byte_address: amt$file_byte_address,
    recend,

    dmt$dl_release_dau_block = record
      global_file_name: dmt$global_file_name,
      dfl_index: dmt$device_file_list_index,
      dau_address: dmt$dau_address,
      daus_per_allocation: dmt$daus_per_allocation,
      mainframe_assigned: dmt$mainframe_assigned,
    recend,

    dmt$dl_release_dfl_block = record
      global_file_name: dmt$global_file_name,
      dfl_index: dmt$device_file_list_index,
      mainframe_assigned: dmt$mainframe_assigned,
    recend,

    dmt$dl_return_dfl_block = record
      dfl_index: dmt$device_file_list_index,
      mainframe_assigned: dmt$mainframe_assigned,
    recend,

    dmt$dl_software_flaw_block = record
      dau_address: dmt$dau_address,
      flaw_option: dmt$flaw_option,
    recend,

    dmt$flaw_option = (dmc$remove_flaw, dmc$add_flaw),

    dmt$dl_file_length_block = record
      global_file_name: dmt$global_file_name,
      dfl_index: dmt$device_file_list_index,

      eof_specified: boolean,
      eof: amt$file_byte_address,

      eoi_specified: boolean,
      eoi: amt$file_byte_address,
    recend,

    dmt$dl_fmd_length_block = record
      global_file_name: dmt$global_file_name,
      dfl_index: dmt$device_file_list_index,

      fmd_length_specified: boolean,
      fmd_length: amt$file_byte_address,

      logical_length_specified: boolean,
      logical_length: amt$file_byte_address,
    recend,

    dmt$dl_file_damaged_block = record
      global_file_name: dmt$global_file_name,
      dfl_index: dmt$device_file_list_index,
      add_damage: dmt$file_damage,
      remove_damage: dmt$file_damage,
    recend,

    dmt$log_in_sequence = integer,

    dmt$log_in_index = integer;

  TYPE
    dmt$dl_entry = record
      case kind: dmt$dl_entry_kind of

      = dmc$dl_allocate =
        allocate_block: dmt$dl_allocate_block,

      = dmc$dl_deallocate_file_fragment =
        deallocate_file_fragment_block: dmt$dl_deallocate_fragment_blk,

      = dmc$dl_trim_file =
        trim_file_block: dmt$dl_trim_file_block,

      = dmc$dl_reallocate =
        reallocate_block: dmt$dl_reallocate_block,

      = dmc$dl_first_sft_delete, dmc$dl_second_sft_delete,
        dmc$dl_third_sft_delete =
        sft_delete_block: dmt$dl_sft_delete_block,

      = dmc$dl_create =
        create_block: dmt$dl_create_block,

      = dmc$dl_return_dau, dmc$dl_recycle_dau =
        return_dau_block: dmt$dl_return_dau_block,

      = dmc$dl_attach_file, dmc$dl_detach_file =
        attach_file_block: dmt$dl_attach_file_block,

      = dmc$dl_initialize =
        initialize_block: dmt$dl_initialize_block,

      = dmc$dl_purge_file, dmc$dl_second_purge_file =
        purge_file_block: dmt$dl_purge_file_block,

      = dmc$dl_release_dau, dmc$dl_continue_purge =
        release_dau_block: dmt$dl_release_dau_block,

      = dmc$dl_release_dfl =
        release_dfl_block: dmt$dl_release_dfl_block,

      = dmc$dl_return_dfl =
        return_dfl_block: dmt$dl_return_dfl_block,

      = dmc$dl_software_flawed =
        software_flaw_block: dmt$dl_software_flaw_block,

      = dmc$dl_update_file_length =
        file_length_block: dmt$dl_file_length_block,

      = dmc$dl_update_fmd_length =
        fmd_length_block: dmt$dl_fmd_length_block,

      = dmc$dl_file_damaged =
        file_damaged_block: dmt$dl_file_damaged_block,

      casend,
    recend;

  TYPE
    dmt$device_log = ^SEQ ( * );

  TYPE
    dmt$dl_recovery_testing_aborts = (dmc$dl_no_abort,
      dmc$dl_halt_before_logging_dtu, dmc$dl_halt_before_mf_table_upd,
      dmc$dl_halt_after_mf_table_upd);

?? PUSH (LISTEXT := ON) ??
*copyc amt$file_byte_address
*copyc dmt$allocation_chain_position
*copyc dmt$device_allocation_unit
*copyc dmt$device_file_list_index
*copyc dmt$fmd_index
*copyc dmt$file_damage
*copyc dmt$global_file_name
*copyc dmt$mainframe_assigned
*copyc gft$file_kind
*copyc gft$system_file_identifier
?? POP ??
