
  CONST
    dsc$ssr_offset = 1000(16),
    dsc$ssr_segment_number = 4,

    dsc$ssr_sds_cause_indeterminate = 0,
    dsc$ssr_sds_cause_mainframe = 1,
    dsc$ssr_sds_cause_disk = 2,
    dsc$ssr_sds_cause_software = 3,
    dsc$ssr_sds_cause_operator = 4,

    dsc$ssr_sds_nos_id_count = 2,
    dsc$ssr_sds_number_of_disk_errs = 6,
    dsc$ssr_sds_number_of_mf_errors = 7,
    dsc$ssr_sds_number_of_nos_id = 6,

    dsc$ssr_sds_sdas_first_attempt = 0,
    dsc$ssr_sds_sdas_installation = 1,
    dsc$ssr_sds_sdas_continuation = 2,
    dsc$ssr_sds_sdas_with_image = 3,
    dsc$ssr_sds_sdas_without_image = 4,
    dsc$ssr_sds_sdas_ignore_image = 5,

    dsc$ssr_sds_source_tape = 1,
    dsc$ssr_sds_source_disk = 2,

    dsc$ssr_sds_version_1 = 1;

  TYPE
    dst$ssr_170_transfer_entry = RECORD
      offset: 0 .. 0ffffffff(16),
      length: 0 .. 0ffffffff(16),
    RECEND,

    dst$ssr_bmb_r_register = RECORD
      r_upper: 0 .. 07777(8),
      r_lower: 0 .. 07777(8),
    RECEND,

    dst$ssr_boot_memory_bounds = RECORD
      start_address: dst$ssr_bmb_r_register,
      length: dst$ssr_bmb_r_register,
    RECEND,

    dst$ssr_deadstart_panel = ARRAY [1 .. 20(8)] OF 0 .. 0ffff(16),

    dst$ssr_dfts_buffer = RECORD
      start_of_table: integer,
      control_word: dst$dftb_control_word,
    RECEND,

    dst$ssr_entry = RECORD
      name: dst$ssr_entry_name,
      CASE 0 .. 2 OF
      = 0 =
        left_slot: 0 .. 0ffff(16),
        right_slot: 0 .. 0ffff(16),
      = 1 =
        whole_slot: 0 .. 0ffffffff(16),
      = 2 = {format of SYSL entry.
        ssln_released_level_number: 0 .. 0ffff(16),
        ssln_bcu_level_number: 0 .. 0ffff(16),
      CASEND,
    RECEND,

    dst$ssr_entry_name = string (4),

    dst$ssr_entry_types = (dsc$ssr_whole_slot, dsc$ssr_left_slot, dsc$ssr_right_slot),

    dst$ssr_system_deadstart_status = RECORD
      initialized: boolean,
      version: 0 .. 0ff(16),
      top_line_message: string (dpc$console_row_size - 4),
      dft_message: string (24),
      general_info: dst$ssr_sds_general_info,
      disk_errors: dst$ssr_sds_disk_errors,
      mainframe_errors: dst$ssr_sds_mainframe_errors,
      nos_nbe_words: dst$ssr_sds_nos_nbe_words,
    RECEND,

    dst$ssr_sds_disk_error_actions = (dsc$ssr_sds_disk_request_good, dsc$ssr_sds_disk_request_bad),

    dst$ssr_sds_disk_errors = RECORD
      next_available_entry: 1 .. dsc$ssr_sds_number_of_disk_errs,
      number_of_valid_entries: 0 .. dsc$ssr_sds_number_of_disk_errs,
      entry: ARRAY [1 .. dsc$ssr_sds_number_of_disk_errs] OF dst$ssr_sds_disk_error_entry,
    RECEND,

    dst$ssr_sds_disk_error_entry = RECORD
      timestamp: dst$ssr_sds_timestamp,
      element_name: cmt$element_name,
      last_request_good: boolean,
    RECEND,

    dst$ssr_sds_ds_performed_code = PACKED RECORD
      current_deadstart: 0 .. 0f(16),
      previous_deadstart: 0 .. 0f(16),
      auto_restart: 0 .. 0f(16),
      rfu: 0 .. 0f(16),
    RECEND,

    dst$ssr_sds_general_info = RECORD
      deadstarts_performed_code: dst$ssr_sds_ds_performed_code,
      probable_cause_of_crash: 0 .. 0ffff(16),
      deadstart_file_source: 0 .. 0ff(16),
      number_of_recoveries_attempted: 0 .. 0ffffff(16),
      os_release_identifier: string (22),
      rfu: 0 .. 0ffff(16),
      timestamp_of_crash: dst$ssr_sds_timestamp,
    RECEND,

    dst$ssr_sds_mainframe_errors = RECORD
      number_of_valid_entries: 0 .. dsc$ssr_sds_number_of_mf_errors,
      data: ARRAY [1 .. dsc$ssr_sds_number_of_mf_errors] OF dst$ssr_sds_mf_error_data,
    RECEND,

    dst$ssr_sds_mf_error_data = RECORD
      valid: boolean,
      entry: dst$ssr_sds_mf_error_entry,
    RECEND,

    dst$ssr_sds_mf_error_entry = RECORD
      timestamp: dst$dftb_date_and_time,
      element_id: dst$dftb_mrt_element_index,
      rfu: 0 .. 0ffffff(16),
      fault_symptom_code: dst$dftb_fault_symptom_code,
    RECEND,

    dst$ssr_sds_nos_nbe_words = RECORD
      os_type: 0 .. 0ff(16),
      nos_nbe_status: 0 .. 0ff(16),
      rfu: 0 .. 0ffffffffffff(16),
      identifier: ARRAY [1 .. dsc$ssr_sds_number_of_nos_id] OF integer,
    RECEND,

    dst$ssr_sds_timestamp = RECORD
      CASE 0 .. 2 OF
      = 0 =
        dft: dst$dftb_date_and_time_field,
      = 1 =
        os: ost$date_time,
      = 2 =
        word: integer,
      CASEND,
    RECEND;

*copyc cmt$element_name
*copyc dpc$console_row_size
*copyc dsc$ssr_entry_constants
*copyc dst$180_dft_block
*copyc ost$170_os_termination_status
*copyc ost$170_os_type
*copyc ost$date_time
