?? NEWTITLE := 'NOS/VE Device Management' ??
MODULE dmm$get_device_attributes;
?? RIGHT := 110 ??

{ PURPOSE:
{  The purpose of this module is to maintain all physical and logical attributes
{  relating to mass storage devices.  This module executes in Ring 1.
{
{ DESIGN:
{  Device attributes are determined by the product and model number fields of the
{  product identification.  New device types may be added with new conditionals.

?? PUSH (LISTEXT := ON) ??
?? NEWTITLE := 'Global Declarations Referenced By This Module', EJECT ??
*copyc oss$mainframe_paged_literal
*copyc dmc$default_transfer_sizes
*copyc cmt$product_identification
*copyc cmt$unit_type
*copyc dmt$error_condition_codes
*copyc dmt$logical_device_attributes
*copyc dmt$ms_flaw_list
*copyc dmt$ms_physical_characteristics
*copyc dmt$ms_volume_directory
*copyc dmt$physical_device_attributes
*copyc ost$status
?? POP ??
*copyc cmp$get_unit_type
*copyc osp$set_status_abnormal
?? OLDTITLE ??
?? NEWTITLE := 'Global Declarations Declared By This Module' ??
?? NEWTITLE := 'Physical Device Attributes', EJECT ??

  TYPE
    t$physical_device_attrib_values = record
      bytes_per_mau: dmt$bytes_per_mau,
      cylinders_per_device: dmt$device_position,
      flaw_locations: array [1 .. dmc$max_flaw_locations] of dmt$flaw_map_address,
      maus_per_cylinder: dmt$maus_per_position,
      maus_per_dau: dmt$maus_per_dau,
      sectors_per_mau: iot$sectors_per_mau,
      sectors_per_track: iot$sectors_per_track,
      max_label_size: dmt$max_volume_label_size,
    recend;

{NOTE:
{  The flaw locations are calculated the following way:
{    MAU_ADDRESS = (maus_per_cylinder * cylinder address) + (sectors_per_track DIV sectors_per_mau) * track
{    MAU_BYTE_OFFSET = (CM words * bytes_per_CM_word) * sector

  VAR
    v$pda_844_4: [READ, oss$mainframe_paged_literal] t$physical_device_attrib_values := [
{ BYTES_PER_MAU            } 2048,
{ CYLINDERS_PER_DEVICE     } 823,
{ FLAW_LOCATIONS           } [[TRUE,
{   MAU_ADDRESS             } (88 * 822) + (24 DIV 5) * 0,
{   MAU_BYTE_OFFSET         } (60 * 8) * 2]],
{ MAUS_PER_CYLINDER        } 88,
{ MAUS_PER_DAU             } 2,
{ SECTORS_PER_MAU          } 5,
{ SECTORS_PER_TRACK        } 24,
{ MAX_LABEL_SIZE           } 1300];

  VAR
    v$pda_885_1: [READ, oss$mainframe_paged_literal] t$physical_device_attrib_values := [
{ BYTES_PER_MAU            } 2048,
{ CYLINDERS_PER_DEVICE     } 843,
{ FLAW_LOCATIONS           } [[TRUE,
{   MAU_ADDRESS             } (320 * 841) + (32 DIV 4) * 1,
{   MAU_BYTE_OFFSET         } (60 * 8) * 1]],
{ MAUS_PER_CYLINDER        } 320,
{ MAUS_PER_DAU             } 2,
{ SECTORS_PER_MAU          } 4,
{ SECTORS_PER_TRACK        } 32,
{ MAX_LABEL_SIZE           } 1300];

  VAR
    v$pda_885_4: [READ, oss$mainframe_paged_literal] t$physical_device_attrib_values := [
{ BYTES_PER_MAU            } 2048,
{ CYLINDERS_PER_DEVICE     } 843,
{ FLAW_LOCATIONS           } [[TRUE,
{   MAU_ADDRESS             } (320 * 841) + (32 DIV 1) * 1,
{   MAU_BYTE_OFFSET         } (60 * 8) * 1]],
{ MAUS_PER_CYLINDER        } 320,
{ MAUS_PER_DAU             } 2,
{ SECTORS_PER_MAU          } 1,
{ SECTORS_PER_TRACK        } 32,
{ MAX_LABEL_SIZE           } 1300];

  VAR { ISD-I
    v$pda_834: [READ, oss$mainframe_paged_literal] t$physical_device_attrib_values := [
{ BYTES_PER_MAU            } 2048,
{ CYLINDERS_PER_DEVICE     } 817,
{ FLAW_LOCATIONS           } [[FALSE, 0, 0]],
{ MAUS_PER_CYLINDER        } 80,
{ MAUS_PER_DAU             } 8,
{ SECTORS_PER_MAU          } 4,
{ SECTORS_PER_TRACK        } 32,
{ MAX_LABEL_SIZE           } 1300];

  VAR { ISD-II
    v$pda_836: [READ, oss$mainframe_paged_literal] t$physical_device_attrib_values := [
{ BYTES_PER_MAU            } 2048,
{ CYLINDERS_PER_DEVICE     } 701,
{ FLAW_LOCATIONS           } [[FALSE, 0, 0]],
{ MAUS_PER_CYLINDER        } 280,
{ MAUS_PER_DAU             } 8,
{ SECTORS_PER_MAU          } 4,
{ SECTORS_PER_TRACK        } 47,
{ MAX_LABEL_SIZE           } 1300];

  VAR { CM3/ISD-II Note: Special casing for model 930a&932a removed.
    v$pda_9836: [READ, oss$mainframe_paged_literal] t$physical_device_attrib_values := [
{ BYTES_PER_MAU            } 2048,
{ CYLINDERS_PER_DEVICE     } 703,
{ FLAW_LOCATIONS           } [[FALSE, 0, 0]],
{ MAUS_PER_CYLINDER        } 288,
{ MAUS_PER_DAU             } 8,
{ SECTORS_PER_MAU          } 1,
{ SECTORS_PER_TRACK        } 12,
{ MAX_LABEL_SIZE           } 1300];

  VAR { $FA7B5_A/9853_X
    v$pda_9853: [READ, oss$mainframe_paged_literal] t$physical_device_attrib_values := [
{ BYTES_PER_MAU            } 2048,
{ CYLINDERS_PER_DEVICE     } 1412,
{ FLAW_LOCATIONS           } [[FALSE, 0, 0]],
{ MAUS_PER_CYLINDER        } 392,
{ MAUS_PER_DAU             } 8,
{ SECTORS_PER_MAU          } 1,
{ SECTORS_PER_TRACK        } 21,
{ MAX_LABEL_SIZE           } 1300];

  VAR {(33800) Note:-- A FLAW MAP EXISTS ON THE 895, BUT VE IS NOT USING IT.
    v$pda_895: [READ, oss$mainframe_paged_literal] t$physical_device_attrib_values := [
{ BYTES_PER_MAU            } 4096,
{ CYLINDERS_PER_DEVICE     } 886,
{ FLAW_LOCATIONS           } [[FALSE, 0, 0]],
{ MAUS_PER_CYLINDER        } 148,
{ MAUS_PER_DAU             } 4,
{ SECTORS_PER_MAU          } 1,
{ SECTORS_PER_TRACK        } 10,
{ MAX_LABEL_SIZE           } 1300];

  VAR { HYDRA
    v$pda_887: [READ, oss$mainframe_paged_literal] t$physical_device_attrib_values := [
{ BYTES_PER_MAU            } 4096,
{ CYLINDERS_PER_DEVICE     } 884,
{ FLAW_LOCATIONS           } [[FALSE, 0, 0]],
{ MAUS_PER_CYLINDER        } 152,
{ MAUS_PER_DAU             } 4,
{ SECTORS_PER_MAU          } 1,
{ SECTORS_PER_TRACK        } 38,
{ MAX_LABEL_SIZE           } 1300];

  VAR { SSD Serial
    v$pda_5832_1: [READ, oss$mainframe_paged_literal] t$physical_device_attrib_values := [
{ BYTES_PER_MAU            } 4096,
{ CYLINDERS_PER_DEVICE     } 844,
{ FLAW_LOCATIONS           } [[FALSE, 0, 0]],
{ MAUS_PER_CYLINDER        } 48,
{ MAUS_PER_DAU             } 4,
{ SECTORS_PER_MAU          } 1,
{ SECTORS_PER_TRACK        } 12,
{ MAX_LABEL_SIZE           } 1300];

  VAR { SSD Parallel
    v$pda_5832_2: [READ, oss$mainframe_paged_literal] t$physical_device_attrib_values := [
{ BYTES_PER_MAU            } 4096,
{ CYLINDERS_PER_DEVICE     } 835,
{ FLAW_LOCATIONS           } [[FALSE, 0, 0]],
{ MAUS_PER_CYLINDER        } 96,
{ MAUS_PER_DAU             } 4,
{ SECTORS_PER_MAU          } 1,
{ SECTORS_PER_TRACK        } 24,
{ MAX_LABEL_SIZE           } 1300];

  VAR { 1X SABRE 2HP / 1XP SABRE 2HP
    v$pda_5833_1: [READ, oss$mainframe_paged_literal] t$physical_device_attrib_values := [
{ BYTES_PER_MAU            } 4096,
{ CYLINDERS_PER_DEVICE     } 1629,
{ FLAW_LOCATIONS           } [[FALSE, 0, 0]],
{ MAUS_PER_CYLINDER        } 152,
{ MAUS_PER_DAU             } 4,
{ SECTORS_PER_MAU          } 1,
{ SECTORS_PER_TRACK        } 22,
{ MAX_LABEL_SIZE           } 1300];

  VAR { 2X SABRE 2HP
    v$pda_5833_2: [READ, oss$mainframe_paged_literal] t$physical_device_attrib_values := [
{ BYTES_PER_MAU            } 4096,
{ CYLINDERS_PER_DEVICE     } 1629,
{ FLAW_LOCATIONS           } [[FALSE, 0, 0]],
{ MAUS_PER_CYLINDER        } 292,
{ MAUS_PER_DAU             } 4,
{ SECTORS_PER_MAU          } 1,
{ SECTORS_PER_TRACK        } 42,
{ MAX_LABEL_SIZE           } 1300];

  VAR { 3XP SABRE 2HP
    v$pda_5833_3p: [READ, oss$mainframe_paged_literal] t$physical_device_attrib_values := [
{ BYTES_PER_MAU            } 8192,
{ CYLINDERS_PER_DEVICE     } 1629,
{ FLAW_LOCATIONS           } [[FALSE, 0, 0]],
{ MAUS_PER_CYLINDER        } 228,
{ MAUS_PER_DAU             } 2,
{ SECTORS_PER_MAU          } 1,
{ SECTORS_PER_TRACK        } 33,
{ MAX_LABEL_SIZE           } 1300];

  VAR { 4X SABRE 2HP
    v$pda_5833_4: [READ, oss$mainframe_paged_literal] t$physical_device_attrib_values := [
{ BYTES_PER_MAU            } 8192,
{ CYLINDERS_PER_DEVICE     } 1629,
{ FLAW_LOCATIONS           } [[FALSE, 0, 0]],
{ MAUS_PER_CYLINDER        } 292,
{ MAUS_PER_DAU             } 2,
{ SECTORS_PER_MAU          } 1,
{ SECTORS_PER_TRACK        } 42,
{ MAX_LABEL_SIZE           } 1300];

  VAR { 1X ELITE 2 / 1XP ELITE 2
    v$pda_5838_1: [READ, oss$mainframe_paged_literal] t$physical_device_attrib_values := [
{ BYTES_PER_MAU            } 4096,
{ CYLINDERS_PER_DEVICE     } 2620,
{ FLAW_LOCATIONS           } [[FALSE, 0, 0]],
{ MAUS_PER_CYLINDER        } 156,
{ MAUS_PER_DAU             } 4,
{ SECTORS_PER_MAU          } 1,
{ SECTORS_PER_TRACK        } 18,
{ MAX_LABEL_SIZE           } 1700];

  VAR { 2X ELITE 2
    v$pda_5838_2: [READ, oss$mainframe_paged_literal] t$physical_device_attrib_values := [
{ BYTES_PER_MAU            } 4096,
{ CYLINDERS_PER_DEVICE     } 2620,
{ FLAW_LOCATIONS           } [[FALSE, 0, 0]],
{ MAUS_PER_CYLINDER        } 308,
{ MAUS_PER_DAU             } 4,
{ SECTORS_PER_MAU          } 1,
{ SECTORS_PER_TRACK        } 35,
{ MAX_LABEL_SIZE           } 1700];

  VAR { 3XP ELITE 2
    v$pda_5838_3p: [READ, oss$mainframe_paged_literal] t$physical_device_attrib_values := [
{ BYTES_PER_MAU            } 8192,
{ CYLINDERS_PER_DEVICE     } 2620,
{ FLAW_LOCATIONS           } [[FALSE, 0, 0]],
{ MAUS_PER_CYLINDER        } 238,
{ MAUS_PER_DAU             } 2,
{ SECTORS_PER_MAU          } 1,
{ SECTORS_PER_TRACK        } 27,
{ MAX_LABEL_SIZE           } 1700];

  VAR { 4X ELITE 2
    v$pda_5838_4: [READ, oss$mainframe_paged_literal] t$physical_device_attrib_values := [
{ BYTES_PER_MAU            } 8192,
{ CYLINDERS_PER_DEVICE     } 2620,
{ FLAW_LOCATIONS           } [[FALSE, 0, 0]],
{ MAUS_PER_CYLINDER        } 310,
{ MAUS_PER_DAU             } 2,
{ SECTORS_PER_MAU          } 1,
{ SECTORS_PER_TRACK        } 35,
{ MAX_LABEL_SIZE           } 1700];

  VAR { 1X IBM 3.5 / 1XP IBM 3.5
    v$pda_47444_1: [READ, oss$mainframe_paged_literal] t$physical_device_attrib_values := [
{ BYTES_PER_MAU            } 4096,
{ CYLINDERS_PER_DEVICE     } 2290,
{ FLAW_LOCATIONS           } [[FALSE, 0, 0]],
{ MAUS_PER_CYLINDER        } 188,
{ MAUS_PER_DAU             } 4,
{ SECTORS_PER_MAU          } 1,
{ SECTORS_PER_TRACK        } 13,
{ MAX_LABEL_SIZE           } 2000];

  VAR { 2X IBM 3.5
    v$pda_47444_2: [READ, oss$mainframe_paged_literal] t$physical_device_attrib_values := [
{ BYTES_PER_MAU            } 4096,
{ CYLINDERS_PER_DEVICE     } 2290,
{ FLAW_LOCATIONS           } [[FALSE, 0, 0]],
{ MAUS_PER_CYLINDER        } 368,
{ MAUS_PER_DAU             } 4,
{ SECTORS_PER_MAU          } 1,
{ SECTORS_PER_TRACK        } 25,
{ MAX_LABEL_SIZE           } 2000];

  VAR { 3XP IBM 3.5
    v$pda_47444_3p: [READ, oss$mainframe_paged_literal] t$physical_device_attrib_values := [
{ BYTES_PER_MAU            } 8192,
{ CYLINDERS_PER_DEVICE     } 2290,
{ FLAW_LOCATIONS           } [[FALSE, 0, 0]],
{ MAUS_PER_CYLINDER        } 278,
{ MAUS_PER_DAU             } 2,
{ SECTORS_PER_MAU          } 1,
{ SECTORS_PER_TRACK        } 19,
{ MAX_LABEL_SIZE           } 2000];

  VAR { 4X IBM 3.5
    v$pda_47444_4: [READ, oss$mainframe_paged_literal] t$physical_device_attrib_values := [
{ BYTES_PER_MAU            } 8192,
{ CYLINDERS_PER_DEVICE     } 2290,
{ FLAW_LOCATIONS           } [[FALSE, 0, 0]],
{ MAUS_PER_CYLINDER        } 368,
{ MAUS_PER_DAU             } 2,
{ SECTORS_PER_MAU          } 1,
{ SECTORS_PER_TRACK        } 25,
{ MAX_LABEL_SIZE           } 2000];

  VAR { 1X ELITE 1.2 / 1XP ELITE 1.2
    v$pda_5837_1: [READ, oss$mainframe_paged_literal] t$physical_device_attrib_values := [
{ BYTES_PER_MAU            } 4096,
{ CYLINDERS_PER_DEVICE     } 2095,
{ FLAW_LOCATIONS           } [[FALSE, 0, 0]],
{ MAUS_PER_CYLINDER        } 116,
{ MAUS_PER_DAU             } 4,
{ SECTORS_PER_MAU          } 1,
{ SECTORS_PER_TRACK        } 7,
{ MAX_LABEL_SIZE           } 1700];

  VAR { 2X ELITE 1.2
    v$pda_5837_2: [READ, oss$mainframe_paged_literal] t$physical_device_attrib_values := [
{ BYTES_PER_MAU            } 4096,
{ CYLINDERS_PER_DEVICE     } 2095,
{ FLAW_LOCATIONS           } [[FALSE, 0, 0]],
{ MAUS_PER_CYLINDER        } 252,
{ MAUS_PER_DAU             } 4,
{ SECTORS_PER_MAU          } 1,
{ SECTORS_PER_TRACK        } 15,
{ MAX_LABEL_SIZE           } 1700];

  VAR { 3XP ELITE 1.2
    v$pda_5837_3p: [READ, oss$mainframe_paged_literal] t$physical_device_attrib_values := [
{ BYTES_PER_MAU            } 8192,
{ CYLINDERS_PER_DEVICE     } 2095,
{ FLAW_LOCATIONS           } [[FALSE, 0, 0]],
{ MAUS_PER_CYLINDER        } 184,
{ MAUS_PER_DAU             } 2,
{ SECTORS_PER_MAU          } 1,
{ SECTORS_PER_TRACK        } 11,
{ MAX_LABEL_SIZE           } 1700];

  VAR { 4X ELITE 1.2
    v$pda_5837_4: [READ, oss$mainframe_paged_literal] t$physical_device_attrib_values := [
{ BYTES_PER_MAU            } 8192,
{ CYLINDERS_PER_DEVICE     } 2095,
{ FLAW_LOCATIONS           } [[FALSE, 0, 0]],
{ MAUS_PER_CYLINDER        } 252,
{ MAUS_PER_DAU             } 2,
{ SECTORS_PER_MAU          } 1,
{ SECTORS_PER_TRACK        } 15,
{ MAX_LABEL_SIZE           } 1700];

  VAR
    v$pda_ntdd_1: [READ, oss$mainframe_paged_literal] t$physical_device_attrib_values := [
{ BYTES_PER_MAU            } 4096,
{ CYLINDERS_PER_DEVICE     } 1629,
{ FLAW_LOCATIONS           } [[FALSE, 0, 0]],
{ MAUS_PER_CYLINDER        } 176,
{ MAUS_PER_DAU             } 4,
{ SECTORS_PER_MAU          } 1,
{ SECTORS_PER_TRACK        } 22,
{ MAX_LABEL_SIZE           } 1300];

  VAR
    v$pda_ntdd_2: [READ, oss$mainframe_paged_literal] t$physical_device_attrib_values := [
{ BYTES_PER_MAU            } 8192,
{ CYLINDERS_PER_DEVICE     } 6512,
{ FLAW_LOCATIONS           } [[FALSE, 0, 0]],
{ MAUS_PER_CYLINDER        } 336,
{ MAUS_PER_DAU             } 2,
{ SECTORS_PER_MAU          } 1,
{ SECTORS_PER_TRACK        } 42,
{ MAX_LABEL_SIZE           } 3400];

  VAR
    v$pda_ntdd_3: [READ, oss$mainframe_paged_literal] t$physical_device_attrib_values := [
{ BYTES_PER_MAU            } 4096,
{ CYLINDERS_PER_DEVICE     } 3224,
{ FLAW_LOCATIONS           } [[FALSE, 0, 0]],
{ MAUS_PER_CYLINDER        } 336,
{ MAUS_PER_DAU             } 4,
{ SECTORS_PER_MAU          } 1,
{ SECTORS_PER_TRACK        } 42,
{ MAX_LABEL_SIZE           } 2000];

  VAR
    v$pda_ntdd_4: [READ, oss$mainframe_paged_literal] t$physical_device_attrib_values := [
{ BYTES_PER_MAU            } 8192,
{ CYLINDERS_PER_DEVICE     } 6512,
{ FLAW_LOCATIONS           } [[FALSE, 0, 0]],
{ MAUS_PER_CYLINDER        } 336,
{ MAUS_PER_DAU             } 2,
{ SECTORS_PER_MAU          } 1,
{ SECTORS_PER_TRACK        } 42,
{ MAX_LABEL_SIZE           } 8192];

  VAR
    v$pda_ntdd_5: [READ, oss$mainframe_paged_literal] t$physical_device_attrib_values := [
{ BYTES_PER_MAU            } 8192,
{ CYLINDERS_PER_DEVICE     } 6828,
{ FLAW_LOCATIONS           } [[FALSE, 0, 0]],
{ MAUS_PER_CYLINDER        } 1408,
{ MAUS_PER_DAU             } 2,
{ SECTORS_PER_MAU          } 1,
{ SECTORS_PER_TRACK        } 64,
{ MAX_LABEL_SIZE           } 16384];

  VAR
    v$pda_ntdd_6: [READ, oss$mainframe_paged_literal] t$physical_device_attrib_values := [
{ BYTES_PER_MAU            } 8192,
{ CYLINDERS_PER_DEVICE     } 6828,
{ FLAW_LOCATIONS           } [[FALSE, 0, 0]],
{ MAUS_PER_CYLINDER        } 2400,
{ MAUS_PER_DAU             } 2,
{ SECTORS_PER_MAU          } 1,
{ SECTORS_PER_TRACK        } 60,
{ MAX_LABEL_SIZE           } 16384];

?? OLDTITLE ??
?? NEWTITLE := 'Logical Device Attributes', EJECT ??

  TYPE
    t$logical_device_attrib_values = record
      bytes_per_cylinder: 0 .. dmc$max_bytes_per_allocation,
      logical_flaws: record
        number_of_flaw_entries: dmt$dau_address,
        flaw_locations: array [1 .. dmc$max_logical_flaws] of dmt$flaw_list_entry,
      recend,
      volume_default_allocation_size: dmt$allocation_size,
      volume_default_transfer_size: dmt$transfer_size,
      number_dfl_entries: dmt$device_file_list_index,
      number_directory_entries: dmt$directory_index,
    recend;

  VAR
    v$lda_844_4: [READ, oss$mainframe_paged_literal] t$logical_device_attrib_values := [
{ BYTES_PER_CYLINDER             } 180224,
{ LOGICAL_FLAWS                  } [3, [
{   1. FLAW_LOCATIONS              } [36080, 44],
{   2. FLAW_LOCATIONS              } [36124, 44],
{   3. FLAW_LOCATIONS              } [36168, 44]]],
{ VOLUME_DEFAULT_ALLOCATION_SIZE } 180224,
{ VOLUME_DEFAULT_TRANSFER_SIZE   } dmc$default_transfer_size_844,
{ NUMBER_DFL_ENTRIES             } 9258,
{ NUMBER_DIRECTORY_ENTRIES       } dmc$default_vol_dir_entries];

  VAR
    v$lda_885: [READ, oss$mainframe_paged_literal] t$logical_device_attrib_values := [
{ BYTES_PER_CYLINDER             } 655360,
{ LOGICAL_FLAWS                  } [2, [
{   1. FLAW_LOCATIONS              } [134560, 160],
{   2. FLAW_LOCATIONS              } [134720, 160],
{   3. FLAW_LOCATIONS              } [0, 0]]],
{ VOLUME_DEFAULT_ALLOCATION_SIZE } 655360,
{ VOLUME_DEFAULT_TRANSFER_SIZE   } dmc$default_transfer_size_885,
{ NUMBER_DFL_ENTRIES             } 33720,
{ NUMBER_DIRECTORY_ENTRIES       } dmc$default_vol_dir_entries];

  VAR
    v$lda_834: [READ, oss$mainframe_paged_literal] t$logical_device_attrib_values := [
{ BYTES_PER_CYLINDER             } 163840,
{ LOGICAL_FLAWS                  } [2, [
{   1. FLAW_LOCATIONS              } [8150, 10],
{   2. FLAW_LOCATIONS              } [8160, 10],
{   3. FLAW_LOCATIONS              } [0, 0]]],
{ VOLUME_DEFAULT_ALLOCATION_SIZE } 163840,
{ VOLUME_DEFAULT_TRANSFER_SIZE   } dmc$default_transfer_size_834,
{ NUMBER_DFL_ENTRIES             } 8170,
{ NUMBER_DIRECTORY_ENTRIES       } dmc$default_vol_dir_entries];

  VAR
    v$lda_836: [READ, oss$mainframe_paged_literal] t$logical_device_attrib_values := [
{ BYTES_PER_CYLINDER             } 573440,
{ LOGICAL_FLAWS                  } [2, [
{   1. FLAW_LOCATIONS              } [24465, 35],
{   2. FLAW_LOCATIONS              } [24500, 35],
{   3. FLAW_LOCATIONS              } [0, 0]]],
{ VOLUME_DEFAULT_ALLOCATION_SIZE } 573440,
{ VOLUME_DEFAULT_TRANSFER_SIZE   } dmc$default_transfer_size_836,
{ NUMBER_DFL_ENTRIES             } 24535,
{ NUMBER_DIRECTORY_ENTRIES       } dmc$default_vol_dir_entries];

  VAR
    v$lda_9836: [READ, oss$mainframe_paged_literal] t$logical_device_attrib_values := [
{ BYTES_PER_CYLINDER             } 589824,
{ LOGICAL_FLAWS                  } [3, [
{   1. FLAW_LOCATIONS              } [25200, 36],
{   2. FLAW_LOCATIONS              } [25236, 36],
{   3. FLAW_LOCATIONS              } [25272, 36]]],
{ VOLUME_DEFAULT_ALLOCATION_SIZE } 589824,
{ VOLUME_DEFAULT_TRANSFER_SIZE   } dmc$default_transfer_size_9836,
{ NUMBER_DFL_ENTRIES             } 25308,
{ NUMBER_DIRECTORY_ENTRIES       } dmc$default_vol_dir_entries];

  VAR
    v$lda_9853: [READ, oss$mainframe_paged_literal] t$logical_device_attrib_values := [
{ BYTES_PER_CYLINDER             } 802816,
{ LOGICAL_FLAWS                  } [3, [
{   1. FLAW_LOCATIONS              } [69041, 49],
{   2. FLAW_LOCATIONS              } [69090, 49],
{   3. FLAW_LOCATIONS              } [69139, 49]]],
{ VOLUME_DEFAULT_ALLOCATION_SIZE } 802816,
{ VOLUME_DEFAULT_TRANSFER_SIZE   } dmc$default_transfer_size_9853,
{ NUMBER_DFL_ENTRIES             } 65535,
{ NUMBER_DIRECTORY_ENTRIES       } dmc$default_vol_dir_entries];

  VAR
    v$lda_895: [READ, oss$mainframe_paged_literal] t$logical_device_attrib_values := [
{ BYTES_PER_CYLINDER             } 606208,
{ LOGICAL_FLAWS                  } [3, [
{   1. FLAW_LOCATIONS              } [32671, 37],
{   2. FLAW_LOCATIONS              } [32708, 37],
{   3. FLAW_LOCATIONS              } [32745, 37]]],
{ VOLUME_DEFAULT_ALLOCATION_SIZE } 606208,
{ VOLUME_DEFAULT_TRANSFER_SIZE   } dmc$default_transfer_size_895,
{ NUMBER_DFL_ENTRIES             } 32782,
{ NUMBER_DIRECTORY_ENTRIES       } dmc$default_vol_dir_entries];

  VAR
    v$lda_887: [READ, oss$mainframe_paged_literal] t$logical_device_attrib_values := [
{ BYTES_PER_CYLINDER             } 622592,
{ LOGICAL_FLAWS                  } [3, [
{   1. FLAW_LOCATIONS              } [33516, 38], {why not defined in the right order???
{   2. FLAW_LOCATIONS              } [33478, 38],
{   3. FLAW_LOCATIONS              } [33554, 38]]],
{ VOLUME_DEFAULT_ALLOCATION_SIZE } 622592,
{ VOLUME_DEFAULT_TRANSFER_SIZE   } dmc$default_transfer_size_887,
{ NUMBER_DFL_ENTRIES             } 33592,
{ NUMBER_DIRECTORY_ENTRIES       } dmc$default_vol_dir_entries];

  VAR
    v$lda_5832_1: [READ, oss$mainframe_paged_literal] t$logical_device_attrib_values := [
{ BYTES_PER_CYLINDER             } 196608,
{ LOGICAL_FLAWS                  } [1, [
{   1. FLAW_LOCATIONS              } [10127, 1],
{   2. FLAW_LOCATIONS              } [0, 0],
{   3. FLAW_LOCATIONS              } [0, 0]]],
{ VOLUME_DEFAULT_ALLOCATION_SIZE } 196608,
{ VOLUME_DEFAULT_TRANSFER_SIZE   } dmc$default_transfer_sz_5832_1,
{ NUMBER_DFL_ENTRIES             } 10128,
{ NUMBER_DIRECTORY_ENTRIES       } dmc$default_vol_dir_entries];

  VAR
    v$lda_5832_2: [READ, oss$mainframe_paged_literal] t$logical_device_attrib_values := [
{ BYTES_PER_CYLINDER             } 393216,
{ LOGICAL_FLAWS                  } [1, [
{   1. FLAW_LOCATIONS              } [20039, 1],
{   2. FLAW_LOCATIONS              } [0, 0],
{   3. FLAW_LOCATIONS              } [0, 0]]],
{ VOLUME_DEFAULT_ALLOCATION_SIZE } 393216,
{ VOLUME_DEFAULT_TRANSFER_SIZE   } dmc$default_transfer_sz_5832_2,
{ NUMBER_DFL_ENTRIES             } 20040,
{ NUMBER_DIRECTORY_ENTRIES       } dmc$default_vol_dir_entries];

  VAR
    v$lda_5833_1: [READ, oss$mainframe_paged_literal] t$logical_device_attrib_values := [
{ BYTES_PER_CYLINDER             } 622592,
{ LOGICAL_FLAWS                  } [2, [
{   1. FLAW_LOCATIONS              } [61826, 38],
{   2. FLAW_LOCATIONS              } [61864, 38],
{   3. FLAW_LOCATIONS              } [0, 0]]],
{ VOLUME_DEFAULT_ALLOCATION_SIZE } 622592,
{ VOLUME_DEFAULT_TRANSFER_SIZE   } dmc$default_transfer_sz_5833_1,
{ NUMBER_DFL_ENTRIES             } 61902,
{ NUMBER_DIRECTORY_ENTRIES       } dmc$default_vol_dir_entries];

  VAR
    v$lda_5833_2: [READ, oss$mainframe_paged_literal] t$logical_device_attrib_values := [
{ BYTES_PER_CYLINDER             } 1196032,
{ LOGICAL_FLAWS                  } [1, [
{   1. FLAW_LOCATIONS              } [118844, 73],
{   2. FLAW_LOCATIONS              } [0, 0],
{   3. FLAW_LOCATIONS              } [0, 0]]],
{ VOLUME_DEFAULT_ALLOCATION_SIZE } 1196032,
{ VOLUME_DEFAULT_TRANSFER_SIZE   } dmc$default_transfer_sz_5833_2,
{ NUMBER_DFL_ENTRIES             } 118917,
{ NUMBER_DIRECTORY_ENTRIES       } dmc$default_vol_dir_entries];

  VAR
    v$lda_5833_3p: [READ, oss$mainframe_paged_literal] t$logical_device_attrib_values := [
{ BYTES_PER_CYLINDER             } 1867776,
{ LOGICAL_FLAWS                  } [1, [
{   1. FLAW_LOCATIONS              } [185592, 114],
{   2. FLAW_LOCATIONS              } [0, 0],
{   3. FLAW_LOCATIONS              } [0, 0]]],
{ VOLUME_DEFAULT_ALLOCATION_SIZE } 1867776,
{ VOLUME_DEFAULT_TRANSFER_SIZE   } dmc$default_transfer_sz_5833_3p,
{ NUMBER_DFL_ENTRIES             } 185706,
{ NUMBER_DIRECTORY_ENTRIES       } dmc$default_vol_dir_entries];

  VAR
    v$lda_5833_4: [READ, oss$mainframe_paged_literal] t$logical_device_attrib_values := [
{ BYTES_PER_CYLINDER             } 2392064,
{ LOGICAL_FLAWS                  } [1, [
{   1. FLAW_LOCATIONS              } [237688, 146],
{   2. FLAW_LOCATIONS              } [0, 0],
{   3. FLAW_LOCATIONS              } [0, 0]]],
{ VOLUME_DEFAULT_ALLOCATION_SIZE } 2392064,
{ VOLUME_DEFAULT_TRANSFER_SIZE   } dmc$default_transfer_sz_5833_4,
{ NUMBER_DFL_ENTRIES             } 237834,
{ NUMBER_DIRECTORY_ENTRIES       } dmc$default_vol_dir_entries];

  VAR
    v$lda_5838_1: [READ, oss$mainframe_paged_literal] t$logical_device_attrib_values := [
{ BYTES_PER_CYLINDER             } 647168,
{ LOGICAL_FLAWS                  } [1, [
{   1. FLAW_LOCATIONS              } [102141, 39],
{   2. FLAW_LOCATIONS              } [0, 0],
{   3. FLAW_LOCATIONS              } [0, 0]]],
{ VOLUME_DEFAULT_ALLOCATION_SIZE } 647168,
{ VOLUME_DEFAULT_TRANSFER_SIZE   } dmc$default_transfer_sz_5838_1,
{ NUMBER_DFL_ENTRIES             } 102180,
{ NUMBER_DIRECTORY_ENTRIES       } dmc$default_vol_dir_entries];

  VAR
    v$lda_5838_2: [READ, oss$mainframe_paged_literal] t$logical_device_attrib_values := [
{ BYTES_PER_CYLINDER             } 1273856,
{ LOGICAL_FLAWS                  } [1, [
{   1. FLAW_LOCATIONS              } [201663, 77],
{   2. FLAW_LOCATIONS              } [0, 0],
{   3. FLAW_LOCATIONS              } [0, 0]]],
{ VOLUME_DEFAULT_ALLOCATION_SIZE } 1273856,
{ VOLUME_DEFAULT_TRANSFER_SIZE   } dmc$default_transfer_sz_5838_2,
{ NUMBER_DFL_ENTRIES             } 201740,
{ NUMBER_DIRECTORY_ENTRIES       } dmc$default_vol_dir_entries];

  VAR
    v$lda_5838_3p: [READ, oss$mainframe_paged_literal] t$logical_device_attrib_values := [
{ BYTES_PER_CYLINDER             } 1957888,
{ LOGICAL_FLAWS                  } [1, [
{   1. FLAW_LOCATIONS              } [311661, 119],
{   2. FLAW_LOCATIONS              } [0, 0],
{   3. FLAW_LOCATIONS              } [0, 0]]],
{ VOLUME_DEFAULT_ALLOCATION_SIZE } 1957888,
{ VOLUME_DEFAULT_TRANSFER_SIZE   } dmc$default_transfer_sz_5838_3p,
{ NUMBER_DFL_ENTRIES             } 311780,
{ NUMBER_DIRECTORY_ENTRIES       } dmc$default_vol_dir_entries];

  VAR
    v$lda_5838_4: [READ, oss$mainframe_paged_literal] t$logical_device_attrib_values := [
{ BYTES_PER_CYLINDER             } 2547712,
{ LOGICAL_FLAWS                  } [1, [
{   1. FLAW_LOCATIONS              } [405945, 155],
{   2. FLAW_LOCATIONS              } [0, 0],
{   3. FLAW_LOCATIONS              } [0, 0]]],
{ VOLUME_DEFAULT_ALLOCATION_SIZE } 2547712,
{ VOLUME_DEFAULT_TRANSFER_SIZE   } dmc$default_transfer_sz_5838_4,
{ NUMBER_DFL_ENTRIES             } 406100,
{ NUMBER_DIRECTORY_ENTRIES       } dmc$default_vol_dir_entries];

  VAR
    v$lda_47444_1: [READ, oss$mainframe_paged_literal] t$logical_device_attrib_values := [
{ BYTES_PER_CYLINDER             } 770048,
{ LOGICAL_FLAWS                  } [1, [
{   1. FLAW_LOCATIONS              } [107583, 47],
{   2. FLAW_LOCATIONS              } [0, 0],
{   3. FLAW_LOCATIONS              } [0, 0]]],
{ VOLUME_DEFAULT_ALLOCATION_SIZE } 770048,
{ VOLUME_DEFAULT_TRANSFER_SIZE   } dmc$default_transfr_sz_47444_1,
{ NUMBER_DFL_ENTRIES             } 107630,
{ NUMBER_DIRECTORY_ENTRIES       } dmc$default_vol_dir_entries];

  VAR
    v$lda_47444_2: [READ, oss$mainframe_paged_literal] t$logical_device_attrib_values := [
{ BYTES_PER_CYLINDER             } 1507328,
{ LOGICAL_FLAWS                  } [1, [
{   1. FLAW_LOCATIONS              } [210588, 92],
{   2. FLAW_LOCATIONS              } [0, 0],
{   3. FLAW_LOCATIONS              } [0, 0]]],
{ VOLUME_DEFAULT_ALLOCATION_SIZE } 1507328,
{ VOLUME_DEFAULT_TRANSFER_SIZE   } dmc$default_transfr_sz_47444_2,
{ NUMBER_DFL_ENTRIES             } 210680,
{ NUMBER_DIRECTORY_ENTRIES       } dmc$default_vol_dir_entries];

  VAR
    v$lda_47444_3p: [READ, oss$mainframe_paged_literal] t$logical_device_attrib_values := [
{ BYTES_PER_CYLINDER             } 2277376,
{ LOGICAL_FLAWS                  } [1, [
{   1. FLAW_LOCATIONS              } [318171, 139],
{   2. FLAW_LOCATIONS              } [0, 0],
{   3. FLAW_LOCATIONS              } [0, 0]]],
{ VOLUME_DEFAULT_ALLOCATION_SIZE } 2277376,
{ VOLUME_DEFAULT_TRANSFER_SIZE   } dmc$default_transfr_sz_47444_3p,
{ NUMBER_DFL_ENTRIES             } 318310,
{ NUMBER_DIRECTORY_ENTRIES       } dmc$default_vol_dir_entries];

  VAR
    v$lda_47444_4: [READ, oss$mainframe_paged_literal] t$logical_device_attrib_values := [
{ BYTES_PER_CYLINDER             } 3014656,
{ LOGICAL_FLAWS                  } [1, [
{   1. FLAW_LOCATIONS              } [421176, 184],
{   2. FLAW_LOCATIONS              } [0, 0],
{   3. FLAW_LOCATIONS              } [0, 0]]],
{ VOLUME_DEFAULT_ALLOCATION_SIZE } 3014656,
{ VOLUME_DEFAULT_TRANSFER_SIZE   } dmc$default_transfr_sz_47444_4,
{ NUMBER_DFL_ENTRIES             } 421360,
{ NUMBER_DIRECTORY_ENTRIES       } dmc$default_vol_dir_entries];

  VAR
    v$lda_5837_1: [READ, oss$mainframe_paged_literal] t$logical_device_attrib_values := [
{ BYTES_PER_CYLINDER             } 475136,
{ LOGICAL_FLAWS                  } [1, [
{   1. FLAW_LOCATIONS              } [60726, 29],
{   2. FLAW_LOCATIONS              } [0, 0],
{   3. FLAW_LOCATIONS              } [0, 0]]],
{ VOLUME_DEFAULT_ALLOCATION_SIZE } 475136,
{ VOLUME_DEFAULT_TRANSFER_SIZE   } dmc$default_transfer_sz_5837_1,
{ NUMBER_DFL_ENTRIES             } 60755,
{ NUMBER_DIRECTORY_ENTRIES       } dmc$default_vol_dir_entries];

  VAR
    v$lda_5837_2: [READ, oss$mainframe_paged_literal] t$logical_device_attrib_values := [
{ BYTES_PER_CYLINDER             } 1032192,
{ LOGICAL_FLAWS                  } [1, [
{   1. FLAW_LOCATIONS              } [131922, 63],
{   2. FLAW_LOCATIONS              } [0, 0],
{   3. FLAW_LOCATIONS              } [0, 0]]],
{ VOLUME_DEFAULT_ALLOCATION_SIZE } 1032192,
{ VOLUME_DEFAULT_TRANSFER_SIZE   } dmc$default_transfer_sz_5837_2,
{ NUMBER_DFL_ENTRIES             } 131985,
{ NUMBER_DIRECTORY_ENTRIES       } dmc$default_vol_dir_entries];

  VAR
    v$lda_5837_3p: [READ, oss$mainframe_paged_literal] t$logical_device_attrib_values := [
{ BYTES_PER_CYLINDER             } 1507328,
{ LOGICAL_FLAWS                  } [1, [
{   1. FLAW_LOCATIONS              } [192648, 92],
{   2. FLAW_LOCATIONS              } [0, 0],
{   3. FLAW_LOCATIONS              } [0, 0]]],
{ VOLUME_DEFAULT_ALLOCATION_SIZE } 1507328,
{ VOLUME_DEFAULT_TRANSFER_SIZE   } dmc$default_transfer_sz_5837_3p,
{ NUMBER_DFL_ENTRIES             } 192740,
{ NUMBER_DIRECTORY_ENTRIES       } dmc$default_vol_dir_entries];

  VAR
    v$lda_5837_4: [READ, oss$mainframe_paged_literal] t$logical_device_attrib_values := [
{ BYTES_PER_CYLINDER             } 2064384,
{ LOGICAL_FLAWS                  } [1, [
{   1. FLAW_LOCATIONS              } [263844, 126],
{   2. FLAW_LOCATIONS              } [0, 0],
{   3. FLAW_LOCATIONS              } [0, 0]]],
{ VOLUME_DEFAULT_ALLOCATION_SIZE } 2064384,
{ VOLUME_DEFAULT_TRANSFER_SIZE   } dmc$default_transfer_sz_5837_4,
{ NUMBER_DFL_ENTRIES             } 263970,
{ NUMBER_DIRECTORY_ENTRIES       } dmc$default_vol_dir_entries];

  VAR
    v$lda_ntdd_1: [READ, oss$mainframe_paged_literal] t$logical_device_attrib_values := [
{ BYTES_PER_CYLINDER             } 720896,
{ LOGICAL_FLAWS                  } [1, [
{   1. FLAW_LOCATIONS              } [286528, 176],
{   2. FLAW_LOCATIONS              } [0, 0],
{   3. FLAW_LOCATIONS              } [0, 0]]],
{ VOLUME_DEFAULT_ALLOCATION_SIZE } 720896,
{ VOLUME_DEFAULT_TRANSFER_SIZE   } dmc$default_transfer_sz_ntdd_1,
{ NUMBER_DFL_ENTRIES             } 286704,
{ NUMBER_DIRECTORY_ENTRIES       } dmc$default_vol_dir_entries];

  VAR
    v$lda_ntdd_2: [READ, oss$mainframe_paged_literal] t$logical_device_attrib_values := [
{ BYTES_PER_CYLINDER             } 2752512,
{ LOGICAL_FLAWS                  } [1, [
{   1. FLAW_LOCATIONS              } [2187696, 336],
{   2. FLAW_LOCATIONS              } [0, 0],
{   3. FLAW_LOCATIONS              } [0, 0]]],
{ VOLUME_DEFAULT_ALLOCATION_SIZE } 2752512,
{ VOLUME_DEFAULT_TRANSFER_SIZE   } dmc$default_transfer_sz_ntdd_4, { dmc$default_transfer_sz_ntdd_2,
{ NUMBER_DFL_ENTRIES             } 364672,
{ NUMBER_DIRECTORY_ENTRIES       } dmc$default_vol_dir_entries];

  VAR
    v$lda_ntdd_3: [READ, oss$mainframe_paged_literal] t$logical_device_attrib_values := [
{ BYTES_PER_CYLINDER             } 1376256,
{ LOGICAL_FLAWS                  } [1, [
{   1. FLAW_LOCATIONS              } [1082928, 336],
{   2. FLAW_LOCATIONS              } [0, 0],
{   3. FLAW_LOCATIONS              } [0, 0]]],
{ VOLUME_DEFAULT_ALLOCATION_SIZE } 1376256,
{ VOLUME_DEFAULT_TRANSFER_SIZE   } dmc$default_transfer_sz_ntdd_3,
{ NUMBER_DFL_ENTRIES             } 1083264,
{ NUMBER_DIRECTORY_ENTRIES       } dmc$default_vol_dir_entries];

  VAR
    v$lda_ntdd_4: [READ, oss$mainframe_paged_literal] t$logical_device_attrib_values := [
{ BYTES_PER_CYLINDER             } 2752512,
{ LOGICAL_FLAWS                  } [1, [
{   1. FLAW_LOCATIONS              } [2187696, 336],
{   2. FLAW_LOCATIONS              } [0, 0],
{   3. FLAW_LOCATIONS              } [0, 0]]],
{ VOLUME_DEFAULT_ALLOCATION_SIZE } 688128,
{ VOLUME_DEFAULT_TRANSFER_SIZE   } dmc$default_transfer_sz_ntdd_4,
{ NUMBER_DFL_ENTRIES             } 2188032, {2 (of 8) tracks
{ NUMBER_DIRECTORY_ENTRIES       } dmc$default_vol_dir_entries];

  VAR
    v$lda_ntdd_5: [READ, oss$mainframe_paged_literal] t$logical_device_attrib_values := [
{ BYTES_PER_CYLINDER             } 1048576, {2 (of 22) tracks
{ LOGICAL_FLAWS                  } [1, [
{   1. FLAW_LOCATIONS              } [9612416, 1408],
{   2. FLAW_LOCATIONS              } [0, 0],
{   3. FLAW_LOCATIONS              } [0, 0]]],
{ VOLUME_DEFAULT_ALLOCATION_SIZE } 1048576, {2 (of 22) tracks
{ VOLUME_DEFAULT_TRANSFER_SIZE   } dmc$default_transfer_sz_ntdd_5,
{ NUMBER_DFL_ENTRIES             } 364672,{ 9613824,
{ NUMBER_DIRECTORY_ENTRIES       } dmc$default_vol_dir_entries];

  VAR
    v$lda_ntdd_6: [READ, oss$mainframe_paged_literal] t$logical_device_attrib_values := [
{ BYTES_PER_CYLINDER             } 983040, {2 (of 40) tracks
{ LOGICAL_FLAWS                  } [1, [
{   1. FLAW_LOCATIONS              } [16387200, 2400],
{   2. FLAW_LOCATIONS              } [0, 0],
{   3. FLAW_LOCATIONS              } [0, 0]]],
{ VOLUME_DEFAULT_ALLOCATION_SIZE } 983040, {2 (of 40) tracks
{ VOLUME_DEFAULT_TRANSFER_SIZE   } dmc$default_transfer_sz_ntdd_6,
{ NUMBER_DFL_ENTRIES             } dmc$max_device_file_list_index,
{ NUMBER_DIRECTORY_ENTRIES       } dmc$default_vol_dir_entries];

?? OLDTITLE ??
?? NEWTITLE := 'Device Attributes', EJECT ??

  TYPE
    t$device_attributes = record
      physical_attributes_p: ^t$physical_device_attrib_values,
      logical_attributes_p: ^t$logical_device_attrib_values,
    recend;

  VAR
    v$device_attributes: [READ, oss$mainframe_paged_literal] array [cmc$ms844_4x .. cmc$ms_ntdd_6] of
          t$device_attributes := [
{ cmc$ms844_4x  } [^v$pda_844_4, ^v$lda_844_4],
{ cmc$ms885_1x  } [^v$pda_885_1, ^v$lda_885],
{ cmc$ms885_4x  } [^v$pda_885_4, ^v$lda_885],
{ cmc$msfsd2_s0 } [^v$pda_9836, ^v$lda_9836],
{ cmc$ms834_2   } [^v$pda_834, ^v$lda_834],
{ cmc$msfsd_2   } [^v$pda_836, ^v$lda_836],
{ cmc$mshydra   } [^v$pda_887, ^v$lda_887],
{ cmc$ms895_2   } [^v$pda_895, ^v$lda_895],
{ cmc$msxmd_3   } [^v$pda_9853, ^v$lda_9853],
{ cmc$ms5832_1  } [^v$pda_5832_1, ^v$lda_5832_1],
{ cmc$ms5832_2  } [^v$pda_5832_2, ^v$lda_5832_2],
{ cmc$ms5833_1  } [^v$pda_5833_1, ^v$lda_5833_1],
{ cmc$ms5833_1p } [^v$pda_5833_1, ^v$lda_5833_1],
{ cmc$ms5833_2  } [^v$pda_5833_2, ^v$lda_5833_2],
{ cmc$ms5833_3p } [^v$pda_5833_3p, ^v$lda_5833_3p],
{ cmc$ms5833_4  } [^v$pda_5833_4, ^v$lda_5833_4],
{ cmc$ms5838_1  } [^v$pda_5838_1, ^v$lda_5838_1],
{ cmc$ms5838_1p } [^v$pda_5838_1, ^v$lda_5838_1],
{ cmc$ms5838_2  } [^v$pda_5838_2, ^v$lda_5838_2],
{ cmc$ms5838_3p } [^v$pda_5838_3p, ^v$lda_5838_3p],
{ cmc$ms5838_4  } [^v$pda_5838_4, ^v$lda_5838_4],
{ cmc$ms47444_1 } [^v$pda_47444_1, ^v$lda_47444_1],
{ cmc$ms47444_1p} [^v$pda_47444_1, ^v$lda_47444_1],
{ cmc$ms47444_2 } [^v$pda_47444_2, ^v$lda_47444_2],
{ cmc$ms47444_3p} [^v$pda_47444_3p, ^v$lda_47444_3p],
{ cmc$ms47444_4 } [^v$pda_47444_4, ^v$lda_47444_4],
{ cmc$ms5837_1  } [^v$pda_5837_1, ^v$lda_5837_1],
{ cmc$ms5837_1p } [^v$pda_5837_1, ^v$lda_5837_1],
{ cmc$ms5837_2  } [^v$pda_5837_2, ^v$lda_5837_2],
{ cmc$ms5837_3p } [^v$pda_5837_3p, ^v$lda_5837_3p],
{ cmc$ms5837_4  } [^v$pda_5837_4, ^v$lda_5837_4],
{ cmc$ms_ntdd_1 } [^v$pda_ntdd_1, ^v$lda_ntdd_1],
{ cmc$ms_ntdd_2 } [^v$pda_ntdd_2, ^v$lda_ntdd_2],
{ cmc$ms_ntdd_3 } [^v$pda_ntdd_3, ^v$lda_ntdd_3],
{ cmc$ms_ntdd_4 } [^v$pda_ntdd_4, ^v$lda_ntdd_4],
{ cmc$ms_ntdd_5 } [^v$pda_ntdd_5, ^v$lda_ntdd_5],
{ cmc$ms_ntdd_6 } [^v$pda_ntdd_6, ^v$lda_ntdd_6]];

?? OLDTITLE ??
?? OLDTITLE ??
?? NEWTITLE := '[xdcl, #gate] DMP$GET_PHYSICAL_ATTRIBUTES', EJECT ??

  PROCEDURE [XDCL, #GATE] dmp$get_physical_attributes
    (    product_identification: cmt$product_identification;
         p_physical_attributes: ^dmt$physical_device_attributes;
     VAR status: ost$status);

    VAR
      attributes_p: ^t$physical_device_attrib_values,
      cm_unit_type: cmt$unit_type,
      error_msg: string (60),
      found: boolean,
      index: integer,
      io_unit_type: iot$unit_type,
      length: integer,
      unit_class: cmt$unit_class;

    status.normal := TRUE;
    IF p_physical_attributes = NIL THEN
      RETURN; {----->
    IFEND;

    cmp$get_unit_type (product_identification, cm_unit_type, io_unit_type, unit_class, found);
    IF found AND (cm_unit_type >= cmc$ms844_4x) AND (cm_unit_type <= cmc$ms_ntdd_6) THEN
      attributes_p := v$device_attributes [cm_unit_type].physical_attributes_p;
      FOR index := 1 TO UPPERBOUND (p_physical_attributes^) DO
        CASE p_physical_attributes^ [index].keyword OF

        = dmc$bytes_per_mau =
          p_physical_attributes^ [index].bytes_per_mau := attributes_p^.bytes_per_mau;

        = dmc$cylinders_per_device =
          p_physical_attributes^ [index].cylinders_per_device := attributes_p^.cylinders_per_device;

        = dmc$flaw_map_locations =
          p_physical_attributes^ [index].flaw_locations := attributes_p^.flaw_locations;

        = dmc$maus_per_cylinder =
          p_physical_attributes^ [index].maus_per_cylinder := attributes_p^.maus_per_cylinder;

        = dmc$maus_per_dau =
          p_physical_attributes^ [index].maus_per_dau := attributes_p^.maus_per_dau;

        = dmc$sectors_per_mau =
          p_physical_attributes^ [index].sectors_per_mau := attributes_p^.sectors_per_mau;

        = dmc$sectors_per_track =
          p_physical_attributes^ [index].sectors_per_track := attributes_p^.sectors_per_track;

        = dmc$pda_max_label_size =
          p_physical_attributes^ [index].max_label_size := attributes_p^.max_label_size;

        CASEND;
      FOREND;

    ELSE
      STRINGREP (error_msg, length, product_identification.product_number, product_identification.underscore,
            product_identification.model_number, '-unsupported product number (physical)');
      osp$set_status_abnormal (dmc$device_manager_ident, dme$unsupported_product_number, error_msg, status);
    IFEND;

  PROCEND dmp$get_physical_attributes;
?? OLDTITLE ??
?? NEWTITLE := '[xdcl, #gate] DMP$GET_LOGICAL_ATTRIBUTES', EJECT ??

  PROCEDURE [XDCL, #GATE] dmp$get_logical_attributes
    (    product_identification: cmt$product_identification;
         p_logical_attributes: ^dmt$logical_device_attributes;
     VAR status: ost$status);


{NOTE:
{  For the NTDD Drives, tracks/sectors/cylinders are artificial values, just there to calculate the
{  position on the volume file. And Cylinder Allocation does not correspond with a physical cylinder.
{  We end up with too high values with the current definitions, so we do not take a complete cylinder
{  and adjust the values to reasonable sizes (ex. some tracks).

    VAR
      attributes_p: ^t$logical_device_attrib_values,
      cm_unit_type: cmt$unit_type,
      error_msg: string (60),
      found: boolean,
      index: integer,
      io_unit_type: iot$unit_type,
      length: integer,
      unit_class: cmt$unit_class;

    status.normal := TRUE;
    IF p_logical_attributes = NIL THEN
      RETURN; {----->
    IFEND;

    cmp$get_unit_type (product_identification, cm_unit_type, io_unit_type, unit_class, found);
    IF found AND (cm_unit_type >= cmc$ms844_4x) AND (cm_unit_type <= cmc$ms_ntdd_6) THEN
      attributes_p := v$device_attributes [cm_unit_type].logical_attributes_p;
      FOR index := 1 TO UPPERBOUND (p_logical_attributes^) DO
        CASE p_logical_attributes^ [index].keyword OF

        = dmc$cylinder_allocation_size =
          p_logical_attributes^ [index].bytes_per_cylinder := attributes_p^.bytes_per_cylinder;

        = dmc$logical_flaws =
          p_logical_attributes^ [index].number_of_flaw_entries :=
                attributes_p^.logical_flaws.number_of_flaw_entries;
          p_logical_attributes^ [index].flaw_locations := attributes_p^.logical_flaws.flaw_locations;

        = dmc$volume_default_alloc_sz =
          p_logical_attributes^ [index].volume_default_allocation_size :=
                attributes_p^.volume_default_allocation_size;

        = dmc$volume_default_transfer_sz =
          p_logical_attributes^ [index].volume_default_transfer_size :=
                attributes_p^.volume_default_transfer_size;

        = dmc$volume_dfl_entries =
          p_logical_attributes^ [index].number_dfl_entries := attributes_p^.number_dfl_entries;

        = dmc$volume_directory_entries =
          p_logical_attributes^ [index].number_directory_entries := attributes_p^.number_directory_entries;

        CASEND;
      FOREND;

    ELSE
      STRINGREP (error_msg, length, product_identification.product_number, product_identification.underscore,
            product_identification.model_number, '-unsupported product number (logical)');
      osp$set_status_abnormal (dmc$device_manager_ident, dme$unsupported_product_number, error_msg, status);
    IFEND;

  PROCEND dmp$get_logical_attributes;

?? OLDTITLE ??
MODEND dmm$get_device_attributes;

