
  TYPE
    dst$cc_cti_hardware_block = RECORD
      CASE integer OF
      = dsc$id_display_console_info =
        console: dst$cc_display_console_info,
      = dsc$id_mainframe_info =
        mainframe: dst$cc_mainframe_info,
      = dsc$id_processor_info =
        processor: dst$cc_processor_info,
      = dsc$id_central_memory_info =
        memory: dst$cc_central_memory_info,
      = dsc$id_iou_info =
        iou: dst$cc_iou_info,
      CASEND,
    RECEND;

  CONST
    dsc$id_global_processor_data = 6,
    dsc$id_wall_clock_chip_values = 10(8),
    dsc$id_display_console_info = 5,
    dsc$id_mainframe_info = 3,
    dsc$id_processor_info = 2,
    dsc$id_central_memory_info = 1,
    dsc$id_iou_info = 0;

  TYPE
    dst$cc_mainframe_options = PACKED RECORD
      no_cm_extension: boolean,
      fill1: 0 .. 3777(8),
      fill2: 0 .. 3777(8),
      no_cem_pem: boolean,
      fill3: 0 .. 1777(8),
      cpu1_off: boolean,
      cpu0_off: boolean,
    RECEND;

  TYPE
    dst$cc_mainframe_info = PACKED RECORD
      size: 0 .. 77(8),
      id: 0 .. 77(8),
      options: dst$cc_mainframe_options,
      rfu0: 0 .. 7777(8),
    RECEND;

  TYPE
    dst$cc_element_id = PACKED RECORD
      pad: 0 .. 17(8),
      element_number: 0 .. 0ff(16),
      model_number: 0 .. 0ff(16),
      serial_number: 0 .. 0ffff(16),
    RECEND;

  TYPE
    dst$cc_generic_element = PACKED RECORD
      size: 0 .. 77(8),
      id: 0 .. 77(8),
      element_id: dst$cc_element_id,
      port_code: 0 .. 0fff(16),
    RECEND;

  TYPE
    dst$degradation_flags = PACKED RECORD
      page_map_0: boolean,
      page_map_1: boolean,
      page_map_2: boolean,
      page_map_3: boolean,
      segment_map_0: boolean,
      segment_map_1: boolean,
      fill0: 0 .. 3,
      cache_set_0: boolean,
      cache_set_1: boolean,
      cache_set_2: boolean,
      cache_set_3: boolean,
    RECEND;

  TYPE
    dst$processor_status = PACKED RECORD
      processor_on: boolean,
      deadstart_processor: boolean,
      fill: 0 .. 77(8),
      pmf_not_present: boolean,
      c180_not_supported: boolean,
      c170_not_supported: boolean,
      processor_down: boolean,
    RECEND;

  TYPE
    dst$cc_processor_info = PACKED RECORD
      size: 0 .. 77(8),
      id: 0 .. 77(8),
      element_id: dst$cc_element_id,
      port_code: 0 .. 0fff(16),
      degr: dst$degradation_flags,
      port: 0 .. 7777(8),
      status: dst$processor_status,
      rfu: 0 .. 77777777(8),
    RECEND;

  TYPE
    dst$cc_cm_address = 0 .. 77777777(8);

  TYPE
    dst$cc_central_memory_info = PACKED RECORD
      size: 0 .. 77(8),
      id: 0 .. 77(8),
      element_id: dst$cc_element_id,
      port_code: 0 .. 0fff(16),
      physical_central_memory_size: dst$cc_cm_address,
      logical_central_memory_size: dst$cc_cm_address,
      rfu1: 0 .. 7777(8),
      scd_reference_address: dst$cc_cm_address,
      scd_offset: 0 .. 7777(8),
    RECEND;

  TYPE
    dst$cc_barrel_vector = PACKED ARRAY [0 .. 11] OF boolean,
    dst$cc_pp_vector = PACKED RECORD
      barrel_0: dst$cc_barrel_vector,
      barrel_1: dst$cc_barrel_vector,
    RECEND;

  TYPE
    dst$cc_iou_info = PACKED RECORD
      size: 0 .. 77(8),
      id: 0 .. 77(8),
      element_id: dst$cc_element_id,
      port_code: 0 .. 0fff(16),
      pps_physically_missing: dst$cc_pp_vector,
      pps_logically_missing: dst$cc_pp_vector,
      pp_speed: 0 .. 7777(8),
      channels_missing: dst$cc_pp_vector,
      cpps_physically_missing: dst$cc_barrel_vector,
    RECEND;

  TYPE
    dst$cc_display_console_info = PACKED RECORD
      size: 0 .. 77(8),
      id: 0 .. 77(8),
      display_type: 0 .. 7777(8),
      port_flags: 0 .. 7777(8),
      mdd_pp: 0 .. 77(8),
      scd_pp: 0 .. 77(8),
      rfu: 0 .. 7777(8),
    RECEND;

  TYPE
    dst$cc_wall_clock_chip_values = PACKED RECORD
      size: 0 .. 1777(8),
      id: 0 .. 77(8),
      units_of_years: 0 .. 0f(16),
      tens_of_years: 0 .. 0f(16),
      units_of_months: 0 .. 0f(16),
      tens_of_months: 0 .. 0f(16),
      units_of_days: 0 .. 0f(16),
      tens_of_days: 0 .. 0f(16),
      units_of_hours: 0 .. 0f(16),
      tens_of_hours: 0 .. 0f(16),
      units_of_minutes: 0 .. 0f(16),
      tens_of_minutes: 0 .. 0f(16),
      units_of_seconds: 0 .. 0f(16),
      tens_of_seconds: 0 .. 0f(16),
      frc_0_15: 0 .. 0ffff(16),
      frc_16_31: 0 .. 0ffff(16),
      frc_32_47: 0 .. 0ffff(16),
      frc_48_63: 0 .. 0ffff(16),
    RECEND;
