{ DECK: DFT$ESM_DEFINITION_TABLE

  TYPE
    dft$esm_definition_table = array [1 .. *] OF dft$esm_definition_table_entry;

  TYPE
    dft$esm_definition_table_entry = record
      element_name: cmt$element_name,
      memory_size: dfc$min_esm_memory_size ..  dfc$max_esm_memory_size,
      half_ecs_switch: boolean,
      p_side_door_ports: array [1 .. cmc$max_side_door_port_number] OF ^dft$channel_definition,
      esm_base_addresses: dft$esm_base_addresses,
      maximum_data_bytes: dft$maximum_data_bytes,
      maintenance_buffer_loc: cmt$esm_maintenance_buffer_loc,
      number_of_pps_using_esm: 0 .. 8,
      p_element_reservation: ^array [1 .. 1] of cmt$element_reservation,
      p_next_table_entry: ^dft$esm_definition_table_entry,
    recend;

  TYPE
    dft$esm_specifications = record
      element_name: cmt$element_name,
      memory_size: dfc$min_esm_memory_size ..  dfc$max_esm_memory_size,
      half_ecs_switch: boolean,
      side_door_ports: dft$side_door_ports,
      esm_base_addresses: dft$esm_base_addresses,
      maximum_data_bytes: dft$maximum_data_bytes,
      maintenance_buffer_loc: cmt$esm_maintenance_buffer_loc,
    recend,

    dft$side_door_ports = record
      number: 0 .. cmc$max_side_door_port_number,
      ports: array [1 .. cmc$max_side_door_port_number] OF dft$channel_definition,
    recend;

  TYPE
    dft$channel_definition = record
      channel_name: cmt$element_name,
      iou_name: cmt$element_name,
      mainframe_id: pmt$mainframe_id,
    recend;

  TYPE
    dft$maximum_data_bytes = dfc$min_data_record_bytes .. dfc$max_data_record_bytes;


*copyc cmt$element_name
*copyc cmt$element_reservation
*copyc cmt$esm_definition
*copyc dfc$esm_allocation_constants
*copyc dfd$driver_queue_types
*copyc pmt$mainframe_id

