
{ These type declarations describe formats for a block of data that is used by both the OS and DFT.  If these
{ type declarations are changed then the appropriate changes must be made in both the OS and in DFT.  If any
{ of these type declarations are changed then a new code should be created for the new request and the old
{ code should be marked reserved so it is not used again.  Creating a new request will allow DFT to continue
{ supporting the old request while beginning to support the new request.  This is necessary for back level
{ support for DFT.

  CONST

    { DFT request status codes.

    dsc$dft_rs_no_response = 0,
    dsc$dft_rs_request_complete = 1,
    dsc$dft_rs_request_failed = 2,
    dsc$dft_rs_invalid_cda_read = 3,
    dsc$dft_rs_retry_request = 4,
    dsc$dft_rs_reserved = 5,
    dsc$dft_rs_2ap_error = 6,
    dsc$dft_rs_incorrect_version = 7,
    dsc$dft_rs_hw_element_not_found = 8,
    dsc$dft_rs_hw_element_reserved = 9,
    dsc$dft_rs_hw_ele_not_power_up = 0a(16),
    dsc$dft_rs_insuff_req_length = 0b(16),
    dsc$dft_rs_state_already_exists = 0c(16),
    dsc$dft_rs_state_not_changed = 0d(16),
    dsc$dft_rs_state_part_changed = 0e(16),
    dsc$dft_rs_undefined_mrt_state = 0f(16),
    dsc$dft_rs_undefined_req_state = 10(16),
    dsc$dft_rs_sp_error = 11(16),
    dsc$dft_rs_reissue_request = 12(16),
    dsc$dft_rs_no_flaw_free_mem = 13(16),       { used by SCI only.

    { 2AP error status codes.

    dsc$dft_2ap_program_not_found = 1,
    dsc$dft_2ap_disk_status_error = 2,
    dsc$dft_2ap_cda_not_found = 3,

    { Access secure mode codes.

    dsc$dft_deactivate_secure_mode = 0,
    dsc$dft_activate_secure_mode = 1,
    dsc$dft_return_secure_mode = 2,

    dsc$dft_secure_mode_disabled = 0,
    dsc$dft_secure_mode_enabled = 1,

    { Element state codes.

    dsc$dft_state_on = 0,
    dsc$dft_state_off = 1,
    dsc$dft_state_down_by_system = 2,
    dsc$dft_state_down_by_operator = 4,
    dsc$dft_state_powered_off = 8,
    dsc$dft_state_pow_off_and_off = 9,
    dsc$dft_state_pow_off_and_down = 0c(16),
    dsc$dft_state_not_installed = 0ff(16),

    { Sub element codes.

    dsc$dft_sub_none = 0,
    dsc$dft_sub_channel = 100(16),
    dsc$dft_sub_flaw_table = 100(16),
    dsc$dft_sub_pp = 200(16);

  TYPE
    dst$dft_2ap_status = RECORD
      function_number: 0 .. 0ffff(16),
      error_status: 0 .. 0ffff(16),
      rfu: 0 .. 0ffffffff(16),
    RECEND,

    dst$dft_access_cda_sector = RECORD
      header: dst$dft_request_header,
      name: dst$dft_cda_name,
      cda_information: PACKED RECORD
        rfu1: 0 .. 01f(16),
        valid_data: boolean,
        sixteen_bits: boolean,
        partial_read: boolean,
        rfu2: boolean,
        write_data: boolean,
        cel_sector: boolean,
        rfu3: 0 .. 01f(16),
      RECEND,
      cda_sector_data_rp: dst$r_pointer,
      status_from_2ap: dst$dft_2ap_status,
    RECEND,

    dst$dft_access_deadstart_sector = RECORD
      header: dst$dft_request_header,
      iou_number: dst$iou_number,
      channel_number: dst$physical_resource_number,
      unit_number: cmt$physical_unit_number,
      device_type: 0 .. 0ff(16),
      write_sector: boolean,
      rfu: 0 .. 0ff(16),
      deadstart_sector_data_rp: dst$r_pointer,
      status_from_2ap: dst$dft_2ap_status,
    RECEND,

    dst$dft_access_mrt = RECORD
      header: dst$dft_request_header,
      read_mrt: 0 .. 0ffff(16),
      number: 0 .. 0ffff(16),
      entry_id: 0 .. 0ffff(16),
      mrt_entry_rp: dst$r_pointer,
      status_from_2ap: dst$dft_2ap_status,
    RECEND,

    dst$dft_access_secured_mode = RECORD
      header: dst$dft_request_header,
      access_function: 0 .. 0ffff(16),
      rfu1: 0 .. 0ffffffff(16),
      rfu2: 0 .. 0ffffffffffff(16),
      mode: 0 .. 0ffff(16),
    RECEND,

    dst$dft_cda_name = PACKED RECORD
      character_1: 0 .. 1777(8),
      character_2: 0 .. 77(8),
      character_3: 0 .. 1777(8),
      character_4: 0 .. 77(8),
    RECEND,

    dst$dft_change_date_time_flags = PACKED RECORD
      rfu: 0 .. 7ff(16),
      update_bst: boolean,
      update_time_zone: boolean,
      update_default_date_format: boolean,
      update_default_time_format: boolean,
      update_daylight_status: boolean,
    RECEND,

    dst$dft_change_date_time_info = RECORD
      header: dst$dft_request_header,
      rfu1: 0 .. 0ffffffff(16),
      flags: dst$dft_change_date_time_flags,
      bst_wcc: dst$dft_wall_clock_value,
      default_date: dst$dft_date_formats,
      default_time: dst$dft_time_formats,
      bst_frc: integer,
      time_zone_flags: dst$dft_time_zone_flags,
      time_zone_hours: 0 .. 0ff(16),
      time_zone_minutes: 0 .. 0ff(16),
      rfu2: 0 .. 0ffffffffff(16),
      internal_status: dst$dft_2ap_status,
    RECEND,

    dst$dft_change_element_state = RECORD
      header: dst$dft_request_header,
      element: 0 .. 0ffff(16),
      sub_element: 0 .. 0ffff(16),
      state: 0 .. 0ff(16),
      rfu_1: 0 .. 0ff(16),
      before_state: 0 .. 0ff(16),
      after_state: 0 .. 0ff(16),
      rfu_2: 0 .. 0ffff(16),
      sp_status: 0 .. 0ffffffff(16),
    RECEND,

    dst$dft_change_monitor_xp = RECORD
      header: dst$dft_request_header,
      number: 0 .. 0ffff(16),
      mps: ost$real_memory_address,
    RECEND,

    dst$dft_date_formats = (dsc$dft_df_default, dsc$dft_df_month, dsc$dft_df_mdy, dsc$dft_df_isod,
          dsc$dft_df_ordinal, dsc$dft_df_dmy),

    dst$dft_element_id = RECORD
      element_number: 0 .. 0ff(16),
      model_number: 0 .. 0ff(16),
      serial_number: 0 .. 0ffff(16),
    RECEND,

    dst$dft_get_channel_element = RECORD
      lower_channels: ARRAY [0 .. 13(8)] OF dst$dft_get_channel_entry,
      upper_channels: ARRAY [20(8) .. 33(8)] OF dst$dft_get_channel_entry,
    RECEND,

    dst$dft_get_channel_entry = RECORD
      state: 0 .. 0ff(16),
      channel_type: 0 .. 0ff(16),
    RECEND,

    dst$dft_get_cpu_element = RECORD
      element_id: dst$dft_element_id,
      state: 0 .. 0ff(16),
      port: 0 .. 0ff(16),
      vector_degrade: 0 .. 0ff(16),
      rfu: 0 .. 0ff(16),
    RECEND,

    dst$dft_get_element_header = RECORD
      header: dst$dft_request_header,
      element: 0 .. 0ffff(16),
      sub_element: 0 .. 0ffff(16),
      length: 0 .. 0ffff(16),
    RECEND,

    dst$dft_get_iou_element = RECORD
      element_id: dst$dft_element_id,
      state: 0 .. 0ff(16),
      rfu: 0 .. 0ffffff(16),
    RECEND,

    dst$dft_get_iou_status_register = RECORD
      header: dst$dft_request_header,
      iou_number: dst$iou_number,
      rfu: 0 .. 0ffffffffff(16),
      iou_status_register: integer,
    RECEND,

    dst$dft_get_memory_element = RECORD
      element_id: dst$dft_element_id,
      state: 0 .. 0ff(16),
      rfu_1: 0 .. 0ffffff(16),
      rfu_2: 0 .. 0ffff(16),
      physical_memory: 0 .. 0ffffffffffff(16),
      rfu_3: 0 .. 0ffff(16),
      available_memory: 0 .. 0ffffffffffff(16),
      page_size: 0 .. 0ffff(16),
      page_table_length: 0 .. 0ffff(16),
      rfu_4: 0 .. 0ffffffff(16),
      rfu_5: 0 .. 0ffffffff(16),
      rfu_6: 0 .. 0ffffff(16),
      flaw_table_length: 0 .. 0ff(16),
    RECEND,

    dst$dft_get_pp_element = RECORD
      lower_pps: ARRAY [0 .. 13(8)] OF dst$dft_get_pp_entry,
      upper_pps: ARRAY [20(8) .. 33(8)] OF dst$dft_get_pp_entry,
    RECEND,

    dst$dft_get_pp_entry = RECORD
      state: 0 .. 0ff(16),
      rfu: 0 .. 0ff(16),
    RECEND,

    dst$dft_load_additional_dft = RECORD
      header: dst$dft_request_header,
      pp: dst$iou_resource,
      rfu: 0 .. 0ffffff(16),
    RECEND,

    dst$dft_manage_virtual_cpu = RECORD
      header: dst$dft_request_header,
      number: 0 .. 0ff(16),
      action: 0 .. 0ff(16),
      rfu: 0 .. 0ffffffff(16),
    RECEND,

    dst$dft_one_pp_word = 0 .. 0ffff(16),

    dst$dft_partial_r_pointer = RECORD
      offset: 0 .. 0ffff(16),
      rupper: 0 .. 0ffff(16),
      rlower: 0 .. 0ffff(16),
    RECEND,

    dst$dft_process_pp_function = RECORD
      header: dst$dft_request_header,
      pp: dst$iou_resource,
      subfunction: dst$dft_puf_subfunctions,
      resume_address: dst$dft_resume_address,
      pp_image_rp: dst$r_pointer,
    RECEND,

    dst$dft_read_cda_program = RECORD
      header: dst$dft_request_header,
      program_rp: dst$dft_partial_r_pointer,
      name: dst$dft_cda_name,
      rfu: 0 .. 0ffffffff(16),
      last_word_rp: dst$dft_partial_r_pointer,
      length: 0 .. 0ffff(16),
    RECEND,

    dst$dft_read_date_time_info = RECORD
      header: dst$dft_request_header,
      rfu1: 0 .. 0ffffffffffff(16),
      bst_wcc: dst$dft_wall_clock_value,
      default_date: dst$dft_date_formats,
      default_time: dst$dft_time_formats,
      bst_frc: integer,
      time_zone_flags: dst$dft_time_zone_flags,
      time_zone_hours: 0 .. 0ff(16),
      time_zone_minutes: 0 .. 0ff(16),
      rfu2: 0 .. 0ffffffffff(16),
      internal_status: dst$dft_2ap_status,
    RECEND,

    dst$dft_reload_sci = RECORD
      header: dst$dft_request_header,
      pp: dst$iou_resource,
      rfu: 0 .. 0ffffff(16),
    RECEND,

    dst$dft_request_header = RECORD
      request_status: dst$dft_request_status,
      request_code: dst$dft_request_codes,
    RECEND,

    dst$dft_request_status = 0 .. 255,

    dst$dft_retrieve_cda_size = RECORD
      header: dst$dft_request_header,
      name: dst$dft_cda_name,
      cda_data_size: dst$dft_one_pp_word,
      status_from_2ap: dst$dft_2ap_status,
    RECEND,

    dst$dft_start_additional_cpu = RECORD
      header: dst$dft_request_header,
      number: 0 .. 0ffff(16),
      mps: ost$real_memory_address,
      registers_rp: dst$r_pointer,
    RECEND,

    dst$dft_system_alert_flags = PACKED RECORD
      rfu: 0 .. 7fff(16),
      hpa_ve_alert: boolean,
    RECEND,

    dst$dft_system_state_alert = RECORD
      header: dst$dft_request_header,
      rfu1: 0 .. 0ffffffff(16),
      flags: dst$dft_system_alert_flags,
      rfu2: 0 .. 0ffffffffffff(16),
      supportive_information_length: 0 .. 0ffff(16),
    RECEND,

    dst$dft_time_formats = (dsc$dft_tf_default, dsc$dft_tf_ampm, dsc$dft_tf_hms, dsc$dft_tf_millisecond,
          dsc$dft_tf_isot),

    dst$dft_time_zone_flags = PACKED RECORD
      rfu: 0 .. 1f(16),
      negative_time_zone_hours: boolean,
      negative_time_zone_minutes: boolean,
      daylight_saving_time: boolean,
    RECEND,

    dst$dft_update_free_run_clock = RECORD
      header: dst$dft_request_header,
      value: dst$dft_free_run_clock_value,
    RECEND,

    dst$dft_update_hardware_clock = RECORD
      header: dst$dft_request_header,
      year: 0 .. 0ff(16),
      month: 0 .. 0ff(16),
      day: 0 .. 0ff(16),
      hour: 0 .. 0ff(16),
      minute: 0 .. 0ff(16),
      rfu: 0 .. 0ff(16),
      free_running_clock_1: 0 .. 0ffff(16),
      free_running_clock_2: 0 .. 0ffff(16),
      free_running_clock_3: 0 .. 0ffff(16),
      free_running_clock_4: 0 .. 0ffff(16),
    RECEND,

    dst$dft_wall_clock_entry = PACKED RECORD
      tens: 0 .. 0f(16),
      units: 0 .. 0f(16),
    RECEND,

    dst$dft_wall_clock_value = PACKED RECORD
      years: dst$dft_wall_clock_entry,
      months: dst$dft_wall_clock_entry,
      days: dst$dft_wall_clock_entry,
      hours: dst$dft_wall_clock_entry,
      minutes: dst$dft_wall_clock_entry,
      seconds: dst$dft_wall_clock_entry,
    RECEND;

*copyc cmt$physical_unit_number
*copyc dst$dft_free_run_clock_value
*copyc dst$dft_puf_subfunctions
*copyc dst$dft_request_codes
*copyc dst$dft_resume_address
*copyc dst$iou_number
*copyc dst$iou_resource
*copyc dst$physical_resource_number
*copyc dst$r_pointer
*copyc osc$multiprocessor_constants
*copyc ost$hardware_subranges
