DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦9f5c1f5a3⟧ Ada Source

    Length: 32768 (0x8000)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, function Get_Operational_Info, seg_021210, separate I386_Unix_Als_Xt

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« 
        └─⟦this⟧ 

E3 Source Code



with Help_Text;

separate (I386_Unix_Als_Xt)

function Get_Operational_Info return Op.Object is

    Compiler_Properties : constant Op.Compiler_Property_List :=
       (Op.Generics_Share_Code                               => False,
        Op.Require_Body_And_Generic_In_Same_Compilation      => False,
        Op.Requires_Subunits_And_Generic_In_Same_Compilation => False,
        Op.Implements_Pragma_Inline                          => True,
        Op.Separate_Subunits_Are_Inefficient                 => False);


    Assembly_Help          : constant String := Help_Text.Assembly;
    Checks_Help            : constant String := Help_Text.Checks;
    Data_Help              : constant String := Help_Text.Data;
    Expressions_Help       : constant String := Help_Text.Expressions;
    Family_Name_Help       : constant String := Help_Text.Family_Name;
    Get_Binder_List_Help   : constant String := Help_Text.Get_Binder_List;
    Get_Compiler_List_Help : constant String := Help_Text.Get_Comp_List;
    Get_Cui_File_Help      : constant String := Help_Text.Get_Cui_File;
    Get_Executable_Help    : constant String := Help_Text.Get_Executable;
    Get_Lnk_File_Help      : constant String := Help_Text.Get_Lnk_File;
    History_Help           : constant String := Help_Text.History;
    Improve_Calls_Help     : constant String := Help_Text.Improve_Calls;
    Increment_Help         : constant String := Help_Text.Increment;
    Keep_Debug_Help        : constant String := Help_Text.Keep_Debug;
    Main_Help              : constant String := Help_Text.Main;
    Memory_Help            : constant String := Help_Text.Memory;
    Reduction_Help         : constant String := Help_Text.Reduction;
    Show_Help              : constant String := Help_Text.Show;
    Size_Help              : constant String := Help_Text.Size;
    Stack_Help             : constant String := Help_Text.Stack;
    Task_Help              : constant String := Help_Text.Taskk;
    Text_Help              : constant String := Help_Text.Text;


---------------------------------------------------------------------------

    -- Note that all of the Alsys command words that we generate here are
    -- "verbose".  They could be abbreviated in the generated command strings
    -- if command-length is a serious problem.

    Option_List : constant Op.Option_List :=

       -- This is NOT a user configurable option, but rather a required Alsys
       -- option that is put into the command string immediately after the
       -- Compiler_Command or Linker_Command (see below) and before any other
       -- options.
       --
       (Op.Build (Option_Name      => "library=adalib",
                  Active_Phases    => (Op.Promote => True,  
                                       Op.Link    => True,
                                       others     => False),
                  Switch_Dependent => False,
                  Switch_Name      => "",
                  Default_Value    => "",
                  Option_Takes_Arg => False,
                  Is_Pre_Option    => True,
                  Help             => "",
                  For_Target       => T_Name),


-------------------------------------------------------------------------------
--                  C O M P I L E R   O P T I O N S
-------------------------------------------------------------------------------

        --                  SOURCE   See below
        --                  LIBRARY  See above           {adalib}

        -- Not implemented: ANNOTATE = character_string  {""}
        --                  ERRORS   = positive_integer  {50}
        --                  LEVEL    = PARSE | SEMANTIC | CODE | {UPDATE}

        Op.Build (Option_Name      => "checks=",
                  Active_Phases    => (Op.Promote => True, others => False),
                  Switch_Dependent => True,
                  Switch_Name      => "Run_Time_Checks",
                  Default_Value    => "",       -- {NONE} | ALL | STACK
                  Option_Takes_Arg => True,
                  Is_Pre_Option    => True,
                  Help             => Checks_Help,
                  For_Target       => T_Name),

        -- Not implemented: GENERICS = STUBS | {INLINE}
        --                  TASKING  = {YES} | NO

        Op.Build (Option_Name      => "memory=",
                  Active_Phases    => (Op.Promote => True, others => False),
                  Switch_Dependent => True,
                  Switch_Name      => "Shared_Memory_Size",
                  Default_Value    => "",       -- {500}
                  Option_Takes_Arg => True,
                  Is_Pre_Option    => True,
                  Help             => Memory_Help,
                  For_Target       => T_Name),

        -- Not implemented: OUTPUT   = SCREEN | NONE | {AUTOMATIC} | file_name
        --                  WARNING  = {YES} | NO

        Op.Build (Option_Name      => "text=",
                  Active_Phases    => (Op.Promote => True, others => False),
                  Switch_Dependent => True,
                  Switch_Name      => "Display_Text",
                  -- The Alsys default value is NO.
                  Default_Value    => "yes",       -- {YES} | NO
                  Option_Takes_Arg => True,
                  Is_Pre_Option    => True,
                  Help             => Text_Help,
                  For_Target       => T_Name),

        Op.Build (Option_Name      => "show=",
                  Active_Phases    => (Op.Promote => True, others => False),
                  Switch_Dependent => True,
                  Switch_Name      => "Display_Show",
                  -- The Alsys default value is BANNER.
                  Default_Value    => "all",  -- BANNER | RECAP | {ALL} | NONE
                  Option_Takes_Arg => True,
                  Is_Pre_Option    => True,
                  Help             => Show_Help,
                  For_Target       => T_Name),

        -- Not implemented: DETAIL   = {YES} | NO

        Op.Build (Option_Name      => "assembly=",
                  Active_Phases    => (Op.Promote => True, others => False),
                  Switch_Dependent => True,
                  Switch_Name      => "Display_Assembly",
                  Default_Value    => "",       -- {NONE} | CODE | MAP | ALL
                  Option_Takes_Arg => True,
                  Is_Pre_Option    => True,
                  Help             => Assembly_Help,
                  For_Target       => T_Name),

        Op.Build (Option_Name      => "stack=",
                  Active_Phases    => (Op.Promote => True, others => False),
                  Switch_Dependent => True,
                  Switch_Name      => "Stack_Object_Size",
                  Default_Value    => "",       -- {20480}
                  Option_Takes_Arg => True,
                  Is_Pre_Option    => True,
                  Help             => Stack_Help,
                  For_Target       => T_Name),

        Op.Build (Option_Name      => "calls=",
                  Active_Phases    => (Op.Promote => True, others => False),
                  Switch_Dependent => True,
                  Switch_Name      => "Improve_Calls",
                  Default_Value    => "",       -- {NORMAL} | INLINED
                  Option_Takes_Arg => True,
                  Is_Pre_Option    => True,
                  Help             => Improve_Calls_Help,
                  For_Target       => T_Name),

        Op.Build (Option_Name      => "reduction=",
                  Active_Phases    => (Op.Promote => True, others => False),
                  Switch_Dependent => True,
                  Switch_Name      => "Improve_Reduction",
                  Default_Value    => "",       -- {NONE} | PARTIAL | EXTENSIVE
                  Option_Takes_Arg => True,
                  Is_Pre_Option    => True,
                  Help             => Reduction_Help,
                  For_Target       => T_Name),

        Op.Build (Option_Name      => "expressions=",
                  Active_Phases    => (Op.Promote => True, others => False),
                  Switch_Dependent => True,
                  Switch_Name      => "Improve_Expressions",
                  Default_Value    => "",       -- {NONE} | PARTIAL | EXTENSIVE
                  Option_Takes_Arg => True,
                  Is_Pre_Option    => True,
                  Help             => Expressions_Help,
                  For_Target       => T_Name),

        -- Not implemented: COPY     = YES | {NO}

        -- Note that this option will also appear in Link commands.
        Op.Build (Option_Name      => "debug=",
                  Active_Phases    => (Op.Promote => True,  
                                       Op.Link    => True,
                                       others     => False),
                  Switch_Dependent => True,
                  Switch_Name      => "Keep_Debug",
                  Default_Value    => "",       -- YES | {NO}
                  Option_Takes_Arg => True,
                  Is_Pre_Option    => True,
                  Help             => Keep_Debug_Help,
                  For_Target       => T_Name),

        -- Not Implemented: TREE     = YES | {NO}

        --
        -- This is NOT a user-configurable option, but rather a required Alsys
        -- construct that is put at the end of the options in the compile
        -- command string to name the 'source_name' parameter.  It must be the
        -- last Built compiler Pre_Option.  The RCI will place the user-defined
        -- Compiler_Pre_Options string between this (partial) option and the
        -- 'source_name', which will form a syntactically invalid command if
        -- the Compiler_Pre_Options switch value is non-null.  Thus any such
        -- options must be included as Compiler_Post_Options, not as
        -- Compiler_Pre_Options.
        --
        Op.Build (Option_Name      => "source=",
                  Active_Phases    => (Op.Promote => True, others => False),
                  Switch_Dependent => False,
                  Switch_Name      => "",
                  Default_Value    => "",
                  Option_Takes_Arg => False,
                  Is_Pre_Option    => True,
                  Help             => "",
                  For_Target       => T_Name),


-------------------------------------------------------------------------------
--                    B I N D E R   O P T I O N S
-------------------------------------------------------------------------------

        --                  PROGRAM  See below
        --                  LIBRARY  See above

        -- Not implemented: LEVEL    = CHECK | BIND | {LINK}
        --                  MATHLIB  = I287 | {I387}
        --                  OBJECT   in the Executable_Option below
        --                  UNCALLED = {REMOVE} | KEEP
        --                  SLICE    = {NO} | positive_integer
        --                  BLOCKING = YES | NO | {AUTOMATIC}

        Op.Build (Option_Name      => "main=",
                  Active_Phases    => (Op.Link => True, others => False),
                  Switch_Dependent => True,
                  Switch_Name      => "Stack_Main_Size",
                  Default_Value    => "",       -- {96}
                  Option_Takes_Arg => True,
                  Is_Pre_Option    => True,
                  Help             => Main_Help,
                  For_Target       => T_Name),

        Op.Build (Option_Name      => "task=",
                  Active_Phases    => (Op.Link => True, others => False),
                  Switch_Dependent => True,
                  Switch_Name      => "Stack_Task_Size",
                  Default_Value    => "",       -- {8}
                  Option_Takes_Arg => True,
                  Is_Pre_Option    => True,
                  Help             => Task_Help,
                  For_Target       => T_Name),

        Op.Build (Option_Name      => "history=",
                  Active_Phases    => (Op.Link => True, others => False),
                  Switch_Dependent => True,
                  Switch_Name      => "Stack_Trace_History",
                  Default_Value    => "",       -- {YES} | NO
                  Option_Takes_Arg => True,
                  Is_Pre_Option    => True,
                  Help             => History_Help,
                  For_Target       => T_Name),

        Op.Build (Option_Name      => "size=",
                  Active_Phases    => (Op.Link => True, others => False),
                  Switch_Dependent => True,
                  Switch_Name      => "Heap_Initial_Size",
                  Default_Value    => "",       -- {64}
                  Option_Takes_Arg => True,
                  Is_Pre_Option    => True,
                  Help             => Size_Help,
                  For_Target       => T_Name),

        Op.Build (Option_Name      => "increment=",
                  Active_Phases    => (Op.Link => True, others => False),
                  Switch_Dependent => True,
                  Switch_Name      => "Heap_Increment_Size",
                  Default_Value    => "",       -- {64}
                  Option_Takes_Arg => True,
                  Is_Pre_Option    => True,
                  Help             => Increment_Help,
                  For_Target       => T_Name),

        -- Not implemented: DIRECTIVES = options_for_linker  {""}
        --                  MODULES    = file_names          {""}
        --                  SEARCH     = library_names       {""}
        --                  OUTPUT     = SCREEN | NONE | {AUTOMATIC} | file_name

        Op.Build (Option_Name      => "data=",
                  Active_Phases    => (Op.Link => True, others => False),
                  Switch_Dependent => True,
                  Switch_Name      => "Display_Map_Data",
                  Default_Value    => "",       -- {NONE} | BIND | LINK | ALL
                  Option_Takes_Arg => True,
                  Is_Pre_Option    => True,
                  Help             => Data_Help,
                  For_Target       => T_Name),

        -- Not implemented: WARNING    = {YES} | NO
        --                  TUNE       = YES | {NO}

        --                  DEBUG      See above  {NO}

        --
        -- This is NOT a user configurable option, but rather a required Alsys
        -- construct that is put at the end of the options in the link command
        -- string to name the 'unit_name' parameter.  It must be the last Built
        -- link Pre_Option.  The RCI will place the user-defined
        -- Linker_Pre_Options string between this (partial) option and the
        -- 'unit_name', which will form a syntactically invalid command if the
        -- Linker_Pre_Options switch value is non-null.  Thus any such options
        -- must be included as Linker_Post_Options, not as Linker_Pre_Options.
        --
        Op.Build (Option_Name      => "program=",
                  Active_Phases    => (Op.Link => True, others => False),
                  Switch_Dependent => False,
                  Switch_Name      => "",
                  Default_Value    => "",
                  Option_Takes_Arg => False,
                  Is_Pre_Option    => True,
                  Help             => "",
                  For_Target       => T_Name),


-------------------------------------------------------------------------------
--                  A S S O C I A T E D   F I L E S
-------------------------------------------------------------------------------

        Op.Build (Option_Name      => "",
                  Active_Phases    => (Op.Promote => True, others => False),
                  Switch_Dependent => True,
                  Switch_Name      => "Get_Compiler_Listing",
                  Default_Value    => "True",
                  Option_Takes_Arg => False,
                  Is_Pre_Option    => False,
                  Help             => Get_Compiler_List_Help,
                  For_Target       => T_Name),

        Op.Build (Option_Name      => "",
                  Active_Phases    => (Op.Link => True, others => False),
                  Switch_Dependent => True,
                  Switch_Name      => "Get_Binder_Listing",
                  Default_Value    => "True",
                  Option_Takes_Arg => False,
                  Is_Pre_Option    => False,
                  Help             => Get_Binder_List_Help,
                  For_Target       => T_Name),

        Op.Build (Option_Name      => "",
                  Active_Phases    => (Op.Link => True, others => False),
                  Switch_Dependent => True,
                  Switch_Name      => "Get_Cui_File",
                  Default_Value    => "False",
                  Option_Takes_Arg => False,
                  Is_Pre_Option    => False,
                  Help             => Get_Cui_File_Help,
                  For_Target       => T_Name),

        Op.Build (Option_Name      => "",
                  Active_Phases    => (Op.Link => True, others => False),
                  Switch_Dependent => True,
                  Switch_Name      => "Get_Lnk_File",
                  Default_Value    => "False",
                  Option_Takes_Arg => False,
                  Is_Pre_Option    => False,
                  Help             => Get_Lnk_File_Help,
                  For_Target       => T_Name),

        Op.Build (Option_Name      => "",
                  Active_Phases    => (Op.Link => True, others => False),
                  Switch_Dependent => True,
                  Switch_Name      => "Get_Executable_File",
                  Default_Value    => "False",
                  Option_Takes_Arg => False,
                  Is_Pre_Option    => False,
                  Help             => Get_Executable_Help,
                  For_Target       => T_Name),

        --
        -- The following defines a switch whose value can be set by the user,
        -- but it is not an option that will go into any command strings, and
        -- it is not associated with any files.
        --
        Op.Build (Option_Name      => "",
                  Active_Phases    => (others => False),
                  Switch_Dependent => True,
                  Switch_Name      => "User_Set_Family_Name",
                  Default_Value    => "",
                  Option_Takes_Arg => True,
                  Is_Pre_Option    => False,
                  Help             => Family_Name_Help,
                  For_Target       => T_Name)

        );


    Associated_File_List : constant Op.Associated_File_List :=
       -----------------------------------------------------------------------
       (Op.Build (The_File_Type                 => Op.Text,
                  The_Retrieve_Condition        => Op.Always,
                  Retrieve_Phase                => Op.Promote,
                  Option_Dependent              => True,
                  Associated_Option_Switch      => "Get_Compiler_Listing",
                  Host_Filename_Extension       => "lis",
                  Remote_Filename_Type          => Op.File_Name,
                  Argument_Overrides_Fixed_Name => False,
                  Fixed_Remote_Filename         => "",
                  Remote_Filename_Extension     => "lis",
                  For_Target                    => T_Name),

        -- The following directs the RCI to retrieve the .map file after a
        -- Link error, but the .map file will actually be uploaded only if the
        -- executable name is the same as the unit's Ada_Name (as it will be in
        -- the default case).  We could alternatively set this up to use the
        -- unit's remote File_Name (something like "foo_5_b") or a Fixed_Name
        -- (such as "fixed"), but that won't work any better.  If the
        -- executable name is different from the Ada name, the RCI will not
        -- find the .map file, so it won't fetch it.  The customization can
        -- handle arbitrary executable names, and it will also upload .map
        -- files, but in general this won't work because one really needs to
        -- see the .map file only to find out why a Link failed, and the RCI
        -- won't call the customization after a link error.
        --
        Op.Build (The_File_Type                 => Op.Text,
                  The_Retrieve_Condition        => Op.On_Error,
                  Retrieve_Phase                => Op.Link,
                  Option_Dependent              => True,
                  Associated_Option_Switch      => "Get_Binder_Listing",
                  Host_Filename_Extension       => "MAP",
                  Remote_Filename_Type          => Op.Ada_Name,
                  Argument_Overrides_Fixed_Name => False,
                  Fixed_Remote_Filename         => "",
                  Remote_Filename_Extension     => "map",
                  For_Target                    => T_Name)

        -- The following files should be retrieved automatically by the RCI
        -- after a Link, but in general they won't be, because the RCI can't
        -- retrieve the files when an executable file name like 'foo' is
        -- specified for the unit whose Ada name is 'bar'.  In that case Alsys
        -- generates the files foo.lnk, foo.cui, etc., but the RCI only handles
        -- files whose base name is the Ada_Name or the File_Name.  This
        -- customization will therefore retrieve the files itself in
        -- Link_Postprocess.  Unfortunately, Link_Postprocess won't be called
        -- if there is a link error, so in this case the customization won't be
        -- able to upload any files, even though the user needs to see the .map
        -- file, which will contain information about the failure.
        --
        -- Op.Build (The_File_Type                 => Op.Binary,
        --           The_Retrieve_Condition        => Op.On_Normal,
        --           Retrieve_Phase                => Op.Link,
        --           Option_Dependent              => True,
        --           Associated_Option_Switch      => "Get_Cui_File",
        --           Host_Filename_Extension       => "CUI",
        --           Remote_Filename_Type          => Op.Ada_Name,
        --           Argument_Overrides_Fixed_Name => False,
        --           Fixed_Remote_Filename         => "",
        --           Remote_Filename_Extension     => "cui",
        --           For_Target                    => T_Name),
        --
        -- Op.Build (The_File_Type                 => Op.Text,
        --           The_Retrieve_Condition        => Op.On_Normal,
        --           Retrieve_Phase                => Op.Link,
        --           Option_Dependent              => True,
        --           Associated_Option_Switch      => "Get_Lnk_File",
        --           Host_Filename_Extension       => "LNK",
        --           Remote_Filename_Type          => Op.Ada_Name,
        --           Argument_Overrides_Fixed_Name => False,
        --           Fixed_Remote_Filename         => "",
        --           Remote_Filename_Extension     => "lnk",
        --           For_Target                    => T_Name),
        --
        -- Op.Build (The_File_Type                 => Op.Binary,
        --           The_Retrieve_Condition        => Op.On_Normal,
        --           Retrieve_Phase                => Op.Link,
        --           Option_Dependent              => True,
        --           Associated_Option_Switch      => "Get_Executable_File",
        --           Host_Filename_Extension       => "EXE",
        --           Remote_Filename_Type          => Op.Ada_Name,
        --           Argument_Overrides_Fixed_Name => False,
        --           Fixed_Remote_Filename         => "",
        --           Remote_Filename_Extension     => "",
        --           For_Target                    => T_Name)

        );

    --------------------------------------------------

    Op_Characteristics : Op.Object :=
       Op.Build (Properties                      => Compiler_Properties,
                 Max_Filename_Length             => 255,
                 Full_Pathname_Length            => 1024,

                 Spec_Filename_Extension         => "ads",
                 Body_Filename_Extension         => "adb",

                 Extension_Separator             => ".",

                 Directory_Separator             => "/",
                 Directory_Prefix                => "",
                 Directory_Suffix                => "",
                 Directory_Unit_Separator        => "/",

                 Case_Sensitive                  => True,
                 Command_Line_Case               => Op.Lower,
                 Max_Command_Line_Length         => 255,

                 Compiler_Command                => "ada compile",
                 Compiler_Pre_Command            => "",
                 Compiler_Post_Command           => "",

                 Linker_Command                  => "ada bind",
                 Linker_Pre_Command              => "",
                 Linker_Post_Command             => "",

                 Executable_Option               => "object=",
                 Executable_Option_Is_Pre_Option => False,

                 Context_Command                 => "cd",

                 Library_Command                 => "",

                 Default_Program_Library_Name    => "adalib",

                 Parse_Standard_Output           => False,
                 Parse_Standard_Error            => False,
                 Error_Pattern                   => "",

                 Remote_Operating_System         => Op.Unknown,
                 -- This should be Op.Unix, but if it is, the RCI will put a
                 -- ".exe" extension on default executable file names, which is
                 -- invalid for Alsys.

                 The_Transfer_Type               => Get_Transfer_Type,

                 Option_Separator                => " ",
                 Option_Header                   => "",
                 Option_Argument_Separator       => "",
                 Options                         => Option_List,

                 Ada_Name_Subunit_Separator      => ".",
                 Ada_Name_Spec_Suffix            => "",
                 Ada_Name_Body_Suffix            => "",

                 Ada_Name_Is_Lowercase           => True,

                 Associated_Files                => Associated_File_List,

                 The_Operation_Mode              => The_Operation_Mode,
                 Generate_Batch_Compile_Commands => False,

                 Run_Script_Command              => "sh -ex",
                 Copy_Command                    => "cp",
                 Batch_Move_Script_File_Name     => "",

                 Create_Dir_Command              => "",
                 -- If this is set to the obvious value "mkdir", the RCI will
                 -- use it to create the Remote_Directory for us.  However,
                 -- since the R_D normally includes the family directory, our
                 -- remote family creation will then fail, because the remote
                 -- Alsys system will not allow a family to be created in an
                 -- existing directory, so we will short-circuit the RCI and do
                 -- the work within the customization.

                 Date_Command                    => "",
                 Date_File_Suffix                => "",

                 For_Target                      => T_Name);

begin
    return Op_Characteristics;

end Get_Operational_Info;

E3 Meta Data

    nblk1=1f
    nid=0
    hdr6=3e
        [0x00] rec0=16 rec1=00 rec2=01 rec3=052
        [0x01] rec0=01 rec1=00 rec2=1f rec3=01a
        [0x02] rec0=0e rec1=00 rec2=02 rec3=060
        [0x03] rec0=05 rec1=00 rec2=1d rec3=042
        [0x04] rec0=15 rec1=00 rec2=03 rec3=00a
        [0x05] rec0=15 rec1=00 rec2=13 rec3=024
        [0x06] rec0=16 rec1=00 rec2=04 rec3=01a
        [0x07] rec0=15 rec1=00 rec2=05 rec3=04e
        [0x08] rec0=14 rec1=00 rec2=06 rec3=05e
        [0x09] rec0=14 rec1=00 rec2=07 rec3=04a
        [0x0a] rec0=13 rec1=00 rec2=08 rec3=07a
        [0x0b] rec0=14 rec1=00 rec2=09 rec3=02a
        [0x0c] rec0=16 rec1=00 rec2=0a rec3=004
        [0x0d] rec0=14 rec1=00 rec2=0b rec3=04e
        [0x0e] rec0=16 rec1=00 rec2=0c rec3=028
        [0x0f] rec0=13 rec1=00 rec2=0d rec3=026
        [0x10] rec0=13 rec1=00 rec2=0e rec3=036
        [0x11] rec0=15 rec1=00 rec2=0f rec3=052
        [0x12] rec0=15 rec1=00 rec2=10 rec3=058
        [0x13] rec0=16 rec1=00 rec2=11 rec3=016
        [0x14] rec0=17 rec1=00 rec2=12 rec3=06e
        [0x15] rec0=10 rec1=00 rec2=1a rec3=072
        [0x16] rec0=10 rec1=00 rec2=14 rec3=00c
        [0x17] rec0=0e rec1=00 rec2=15 rec3=09e
        [0x18] rec0=04 rec1=00 rec2=16 rec3=068
        [0x19] rec0=11 rec1=00 rec2=17 rec3=00e
        [0x1a] rec0=10 rec1=00 rec2=18 rec3=042
        [0x1b] rec0=19 rec1=00 rec2=19 rec3=078
        [0x1c] rec0=17 rec1=00 rec2=1e rec3=070
        [0x1d] rec0=17 rec1=00 rec2=1b rec3=058
        [0x1e] rec0=14 rec1=00 rec2=1c rec3=000
    tail 0x2171d58fc838d6b7ec635 0x42a00088462065003