  CONST

    {Increase this constant to decrease size of level 2 tables

    dmc$level_1_table_size = 4096,

    {Assume 2gb is maximum file size

    dmc$bytes_per_level_2 = 2147483648 DIV dmc$level_1_table_size;

  TYPE
    dmt$level_1_index = 0 .. dmc$level_1_table_size - 1,

    {Specified using minimum allocation size -
    {1 table entry per AU

    dmt$level_2_index = 0 .. dmc$bytes_per_level_2 DIV 16384,

    {A level 1 table consists of an array of offsets.  An offset
    {refers to either mainframe wired or job fixed, depending on
    {file residence.  A level 1 table is (kind of) adaptable, in that
    {the table will expand, not by using CYBIL adaptable pointers but
    {by using a pointer to fixed type (maximum size) and a current size
    {value both kept in the fde.

    dmt$level_1_table = array [dmt$level_1_index] of amt$file_byte_address,
    dmt$level_1_adapt = array [ * ] of amt$file_byte_address,

    {A level 2 table is also (kind of) adaptable, in that it appears
    {to be an array of a fixed size, but is in fact allocated
    {adaptably, based on the allocation size.  Each level 2 table
    {represents the same number of bytes, but it takes fewer table
    {entries for larger allocation sizes.
    {No bound information is required as each level 2 table is
    {initially allocated to it's maximum required size based on allocation size.

    dmt$level_2_table = array [dmt$level_2_index] of dmt$file_allocation_unit,
    dmt$level_2_adapt = array [ * ] of dmt$file_allocation_unit;
?? PUSH (LISTEXT := ON) ??
*copyc dmt$file_allocation_descriptor
*copyc amt$file_byte_address
?? POP ??
