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

⟦feedcc053⟧ Ada Source

    Length: 38912 (0x9800)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, generic, package Cvt_Test_Utilities, seg_005510

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 Swap_Raw_Data;  
with Swap_U_Char;

with Xlbmt_Network_Types;  
with Xlbt_Arithmetic;  
with Xlbt_String;

pragma Elaborate (Swap_Raw_Data);  
pragma Elaborate (Swap_U_Char);

package Cvt_Test_Utilities is
------------------------------------------------------------------------------
-- Cvt_Test_Utilities - test generics and support routines useful for
-- testing data conversions.
------------------------------------------------------------------------------

    package Raw_Data_Tests is

        --------------------------------------------------------------------
        -- The test generics in this section will perform a series of
        -- standard tests with a given pair of converter subprograms.  The
        -- test generics below require both To_Raw and From_Raw converters.
        -- If a particular conversion is not used by the protocol, the
        -- standard converter packages will not supply a converter
        -- subprogram.  Instantiate an appropriate Dummy_Converter
        -- to handle these cases.  The test generics below all accept and
        -- handle the Dummy_Converters.Unimplemented exception.
        --
        -- Logging information is produced via Test_Io calls.
        --------------------------------------------------------------------

        generic  
            type Original is private;  
            Original_Name : String;  
            with procedure To_Raw  
                              (Raw  : out Xlbmt_Network_Types.X_Raw_Data_Array;  
                               Orig :     Original);  
            with procedure From_Raw  
                              (Orig : out Original;  
                               Raw  :     Xlbmt_Network_Types.X_Raw_Data_Array);  
        procedure Tester (Image : String;  
                          Orig  : Original;  
                          Raw   : Xlbmt_Network_Types.X_Raw_Data_Array);
        --
        -- Image        - Specifies a text representation for Orig.
        -- Orig         - Specifies the original value to be converted.
        -- Raw          - Specifies the equivalent converted value.
        --
        -- Called to exercise various conversions of private values.

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

        generic  
            type Original       is private;  
            type Index          is (<>);  
            type Original_Array is array (Index range <>) of Original;  
            Original_Name : String;  
            with procedure To_Raw (Raw  : out  
                                       Xlbmt_Network_Types.X_Raw_Data_Array;  
                                   Orig : Original_Array);  
            with procedure From_Raw  
                              (Orig : out Original_Array;  
                               Raw  :     Xlbmt_Network_Types.X_Raw_Data_Array);  
        procedure Tester_1d (Image : String;  
                             Orig  : Original_Array;  
                             Raw   : Xlbmt_Network_Types.X_Raw_Data_Array);
        --
        -- Image        - Specifies a text representation for Orig.
        -- Orig         - Specifies the original value to be converted.
        -- Raw          - Specifies the equivalent converted value.
        --
        -- Called to exercise various conversions of array values.

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

        generic  
            type Original       is private;  
            type Index1         is (<>);  
            type Index2         is (<>);  
            type Original_Array is array (Index1 range <>,  
                                          Index2 range <>) of Original;  
            Original_Name : String;  
            with procedure To_Raw (Raw  : out  
                                       Xlbmt_Network_Types.X_Raw_Data_Array;  
                                   Orig : Original_Array);  
            with procedure From_Raw  
                              (Orig : out Original_Array;  
                               Raw  :     Xlbmt_Network_Types.X_Raw_Data_Array);  
        procedure Tester_2d (Image : String;  
                             Orig  : Original_Array;  
                             Raw   : Xlbmt_Network_Types.X_Raw_Data_Array);
        --
        -- Image        - Specifies a text representation for Orig.
        -- Orig         - Specifies the original value to be converted.
        -- Raw          - Specifies the equivalent converted value.
        --
        -- Called to exercise various conversions of 2d array values.

    end Raw_Data_Tests;

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

    package U_Char_Tests is

        --------------------------------------------------------------------
        -- The test generics in this section will perform a series of
        -- standard tests with a given pair of converter subprograms.  The
        -- test generics below require both To_Uca and From_Uca converters.
        -- If a particular conversion is not used by the protocol, the
        -- standard converter packages will not supply a converter
        -- subprogram.  Instantiate an appropriate Dummy_Converter
        -- to handle these cases.  The test generics below all accept and
        -- handle the Dummy_Converters.Unimplemented exception.
        --
        -- Logging information is produced via Test_Io calls.
        --------------------------------------------------------------------

        generic  
            type Original is private;  
            Original_Name : String;  
            with procedure To_Uca   (Uca  : out Xlbt_Arithmetic.U_Char_Array;  
                                     Orig :     Original);  
            with procedure From_Uca (Orig : out Original;  
                                     Uca  :     Xlbt_Arithmetic.U_Char_Array);  
        procedure Tester (Image : String;  
                          Orig  : Original;  
                          Uca   : Xlbt_Arithmetic.U_Char_Array);
        --
        -- Image        - Specifies a text representation for Orig.
        -- Orig         - Specifies the original value to be converted.
        -- Uca          - Specifies the equivalent converted value.
        --
        -- Called to exercise various conversions of private values.

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

        generic  
            type Original       is private;  
            type Index          is (<>);  
            type Original_Array is array (Index range <>) of Original;  
            Original_Name : String;  
            with procedure To_Uca   (Uca  : out Xlbt_Arithmetic.U_Char_Array;  
                                     Orig :     Original_Array);  
            with procedure From_Uca (Orig : out Original_Array;  
                                     Uca  :     Xlbt_Arithmetic.U_Char_Array);  
        procedure Tester_1d (Image : String;  
                             Orig  : Original_Array;  
                             Uca   : Xlbt_Arithmetic.U_Char_Array);
        --
        -- Image        - Specifies a text representation for Orig.
        -- Orig         - Specifies the original value to be converted.
        -- Uca          - Specifies the equivalent converted value.
        --
        -- Called to exercise various conversions of array values.

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

        generic  
            type Original       is private;  
            type Index1         is (<>);  
            type Index2         is (<>);  
            type Original_Array is array (Index1 range <>,  
                                          Index2 range <>) of Original;  
            Original_Name : String;  
            with procedure To_Uca   (Uca  : out Xlbt_Arithmetic.U_Char_Array;  
                                     Orig :     Original_Array);  
            with procedure From_Uca (Orig : out Original_Array;  
                                     Uca  :     Xlbt_Arithmetic.U_Char_Array);  
        procedure Tester_2d (Image : String;  
                             Orig  : Original_Array;  
                             Uca   : Xlbt_Arithmetic.U_Char_Array);
        --
        -- Image        - Specifies a text representation for Orig.
        -- Orig         - Specifies the original value to be converted.
        -- Uca          - Specifies the equivalent converted value.
        --
        -- Called to exercise various conversions of 2d array values.

    end U_Char_Tests;

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

    package X_String_Tests is

        --------------------------------------------------------------------
        -- The test generics in this section will perform a series of
        -- standard tests with a given pair of converter subprograms.  The
        -- test generics below require both To_Str8 and From_Str8 converters.
        -- If a particular conversion is not used by the protocol, the
        -- standard converter packages will not supply a converter
        -- subprogram.  Instantiate an appropriate Dummy_Converter
        -- to handle these cases.  The test generics below all accept and
        -- handle the Dummy_Converters.Unimplemented exception.
        --
        -- Logging information is produced via Test_Io calls.
        --------------------------------------------------------------------

        generic  
            type Original is private;  
            Original_Name : String;  
            with procedure To_Str8   (Str8 : out Xlbt_String.X_String;  
                                      Orig :     Original);  
            with procedure From_Str8 (Orig : out Original;  
                                      Str8 :     Xlbt_String.X_String);  
        procedure Tester (Image : String;  
                          Orig  : Original;  
                          Str8  : Xlbt_String.X_String);
        --
        -- Image        - Specifies a text representation for Orig.
        -- Orig         - Specifies the original value to be converted.
        -- Str8         - Specifies the equivalent converted value.
        --
        -- Called to exercise various conversions of private values.

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

        generic  
            type Original       is private;  
            type Index          is (<>);  
            type Original_Array is array (Index range <>) of Original;  
            Original_Name : String;  
            with procedure To_Str8   (Str8 : out Xlbt_String.X_String;  
                                      Orig :     Original_Array);  
            with procedure From_Str8 (Orig : out Original_Array;  
                                      Str8 :     Xlbt_String.X_String);  
        procedure Tester_1d (Image : String;  
                             Orig  : Original_Array;  
                             Str8  : Xlbt_String.X_String);
        --
        -- Image        - Specifies a text representation for Orig.
        -- Orig         - Specifies the original value to be converted.
        -- Str8         - Specifies the equivalent converted value.
        --
        -- Called to exercise various conversions of array values.

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

        generic  
            type Original       is private;  
            type Index1         is (<>);  
            type Index2         is (<>);  
            type Original_Array is array (Index1 range <>,  
                                          Index2 range <>) of Original;  
            Original_Name : String;  
            with procedure To_Str8   (Str8 : out Xlbt_String.X_String;  
                                      Orig :     Original_Array);  
            with procedure From_Str8 (Orig : out Original_Array;  
                                      Str8 :     Xlbt_String.X_String);  
        procedure Tester_2d (Image : String;  
                             Orig  : Original_Array;  
                             Str8  : Xlbt_String.X_String);
        --
        -- Image        - Specifies a text representation for Orig.
        -- Orig         - Specifies the original value to be converted.
        -- Str8         - Specifies the equivalent converted value.
        --
        -- Called to exercise various conversions of 2d array values.

    end X_String_Tests;

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

    package Raw_Data_Constants is

        ------------------------------------------------------------------
        -- This package contains common constants used to construct
        -- X_Raw_Data_Arrays corresponding to various converted values.
        ------------------------------------------------------------------

        subtype Bytes is Xlbmt_Network_Types.X_Raw_Data_Array;  
        function "&"  (L, R : Bytes) return Bytes  
            renames Xlbmt_Network_Types."&";  
        function Swab (Data : Bytes) return Bytes renames Swap_Raw_Data;

        -- Generic constants
        Minus_1 : constant := -1;

        -- Single byte constants
--/ if Raw_Is_Unsigned then
        Raw_80 : constant Xlbmt_Network_Types.X_Raw_Data := 128;  
        Raw_Ab : constant Xlbmt_Network_Types.X_Raw_Data := 171;  
        Raw_Ff : constant Xlbmt_Network_Types.X_Raw_Data := 255;
--/ else
--//    Raw_80 : constant X_Raw_Data := -128;
--//    Raw_Ab : constant X_Raw_Data := -85;
--//    Raw_Ff : constant X_Raw_Data := -1;
--/ end if;

        -- Two byte constants
        Swab_00_00 : constant Bytes := Swab ((0, 0));  
        Swab_00_01 : constant Bytes := Swab ((0, 1));  
        Swab_00_02 : contant Bytes := Swab ((0, 2));  
        Swab_00_03 : constant Bytes := Swab ((0, 3));  
        Swab_00_04 : constant Bytes := Swab ((0, 4));  
        Swab_00_05 : constant Bytes := Swab ((0, 5));  
        Swab_00_06 : constant Bytes := Swab ((0, 6));  
        Swab_00_07 : constant Bytes := Swab ((0, 7));  
        Swab_00_08 : constant Bytes := Swab ((0, 8));  
        Swab_00_09 : constant Bytes := Swab ((0, 9));  
        Swab_00_0a : constant Bytes := Swab ((0, 10));  
        Swab_00_0b : constant Bytes := Swab ((0, 11));  
        Swab_00_0c : constant Bytes := Swab ((0, 12));  
        Swab_00_0d : constant Bytes := Swab ((0, 13));  
        Swab_00_0e : constant Bytes := Swab ((0, 14));  
        Swab_00_0f : constant Bytes := Swab ((0, 15));  
        Swab_00_10 : constant Bytes := Swab ((0, 16));  
        Swab_00_12 : constant Bytes := Swab ((0, 18));  
        Swab_01_00 : constant Bytes := Swab ((1, 0));  
        Swab_01_02 : constant Bytes := Swab ((1, 2));  
        Swab_01_23 : constant Bytes := Swab ((16#01#, 16#23#));  
        Swab_03_04 : constant Bytes := Swab ((3, 4));  
        Swab_05_06 : constant Bytes := Swab ((5, 6));  
        Swab_45_67 : constant Bytes := Swab ((16#45#, 16#67#));  
        Swab_7f_Ff : constant Bytes := Swab ((16#7F#, Raw_Ff));  
        Swab_80_00 : constant Bytes := Swab ((Raw_80, 0));  
        Swab_89_Ab : constant Bytes := Swab ((16#89#, Raw_Ab));  
        Swab_Ff_Ff : constant Bytes := Swab ((Raw_Ff, Raw_Ff));

        -- Four byte constants
        Swab_00_00_00_00 : constant Bytes := Swab ((0, 0, 0, 0));  
        Swab_00_00_00_01 : constant Bytes := Swab ((0, 0, 0, 1));  
        Swab_00_00_00_02 : constant Bytes := Swab ((0, 0, 0, 2));  
        Swab_00_00_00_03 : constant Bytes := Swab ((0, 0, 0, 3));  
        Swab_00_00_00_04 : constant Bytes := Swab ((0, 0, 0, 4));  
        Swab_00_00_00_05 : constant Bytes := Swab ((0, 0, 0, 5));  
        Swab_00_00_00_06 : constant Bytes := Swab ((0, 0, 0, 6));  
        Swab_00_00_00_07 : constant Bytes := Swab ((0, 0, 0, 7));  
        Swab_00_00_00_08 : constant Bytes := Swab ((0, 0, 0, 8));  
        Swab_00_00_00_09 : constant Bytes := Swab ((0, 0, 0, 9));  
        Swab_00_00_00_0a : constant Bytes := Swab ((0, 0, 0, 10));  
        Swab_00_00_00_0b : constant Bytes := Swab ((0, 0, 0, 11));  
        Swab_00_00_00_0c : constant Bytes := Swab ((0, 0, 0, 12));  
        Swab_00_00_00_0d : constant Bytes := Swab ((0, 0, 0, 13));  
        Swab_00_00_00_0e : constant Bytes := Swab ((0, 0, 0, 14));  
        Swab_00_00_00_0f : constant Bytes := Swab ((0, 0, 0, 15));  
        Swab_00_00_00_10 : constant Bytes := Swab ((0, 0, 0, 16));  
        Swab_00_00_00_11 : constant Bytes := Swab ((0, 0, 0, 17));  
        Swab_01_23_45_67 : constant Bytes :=  
           Swab ((16#01#, 16#23#, 16#45#, 16#67#));  
        Swab_7f_Ff_Ff_Ff : constant Bytes :=  
           Swab ((16#7F#, Raw_Ff, Raw_Ff, Raw_Ff));  
        Swab_80_00_00_00 : constant Bytes := Swab ((Raw_80, 0, 0, 0));  
        Swab_Ff_Ff_Ff_Ff : constant Bytes :=  
           Swab ((Raw_Ff, Raw_Ff, Raw_Ff, Raw_Ff));

    end Raw_Data_Constants;

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

    package U_Char_Constants is

        ------------------------------------------------------------------
        -- This package contains common constants used to construct
        -- U_Char_Arrays corresponding to various converted values.
        ------------------------------------------------------------------

        subtype Bytes is Xlbt_Arithmetic.U_Char_Array;  
        function "&"  (L, R : Bytes) return Bytes renames Xlbt_Arithmetic."&";  
        function Swab (Data : Bytes) return Bytes renames Swap_U_Char;

        -- Generic constants
        Minus_1 : constant := -1;

        -- Single byte constants
        Uca_80 : constant Xlbt_Arithmetic.U_Char := 128;  
        Uca_Ab : constant Xlbt_Arithmetic.U_Char := 171;  
        Uca_Ff : constant Xlbt_Arithmetic.U_Char := 255;

        -- Two byte constants
        Swab_00_00 : constant Bytes := Swab ((0, 0));  
        Swab_00_01 : constant Bytes := Swab ((0, 1));  
        Swab_00_02 : constant Bytes := Swab ((0, 2));  
        Swab_00_03 : constant Bytes := Swab ((0, 3));  
        Swab_00_04 : constant Bytes := Swab ((0, 4));  
        Swab_00_05 : constant Bytes := Swab ((0, 5));  
        Swab_00_06 : constant Bytes := Swab ((0, 6));  
        Swab_00_07 : constant Bytes := Swab ((0, 7));  
        Swab_00_08 : constant Bytes := Swab ((0, 8));  
        Swab_00_09 : constant Bytes := Swab ((0, 9));  
        Swab_00_0a : constant Bytes := Swab ((0, 10));  
        Swab_00_0b : constant Bytes := Swab ((0, 11));  
        Swab_00_0c : constant Bytes := Swab ((0, 12));  
        Swab_00_0d : constant Bytes := Swab ((0, 13));  
        Swab_00_0e : constant Bytes := Swab ((0, 14));  
        Swab_00_0f : constant Bytes := Swab ((0, 15));  
        Swab_00_10 : constant Bytes := Swab ((0, 16));  
        Swab_00_12 : constant Bytes := Swab ((0, 18));  
        Swab_01_00 : constant Bytes := Swab ((1, 0));  
        Swab_01_02 : constant Bytes := Swab ((1, 2));  
        Swab_01_23 : constant Bytes := Swab ((16#01#, 16#23#));  
        Swab_03_04 : constant Bytes := Swab ((3, 4));  
        Swab_05_06 : constant Bytes := Swab ((5, 6));  
        Swab_45_67 : constant Bytes := Swab ((16#45#, 16#67#));  
        Swab_7f_Ff : constant Bytes := Swab ((16#7F#, Uca_Ff));  
        Swab_80_00 : constant Bytes := Swab ((Uca_80, 0));  
        Swab_89_Ab : constant Bytes := Swab ((16#89#, Uca_Ab));  
        Swab_Ff_Ff : constant Bytes := Swab ((Uca_Ff, Uca_Ff));

        -- Four byte constants
        Swab_00_00_00_00 : constant Bytes := Swab ((0, 0, 0, 0));  
        Swab_00_00_00_01 : constant Bytes := Swab ((0, 0, 0, 1));  
        Swab_00_00_00_02 : constant Bytes := Swab ((0, 0, 0, 2));  
        Swab_00_00_00_03 : constant Bytes := Swab ((0, 0, 0, 3));  
        Swab_00_00_00_04 : constant Bytes := Swab ((0, 0, 0, 4));  
        Swab_00_00_00_05 : constant Bytes := Swab ((0, 0, 0, 5));  
        Swab_00_00_00_06 : constant Bytes := Swab ((0, 0, 0, 6));  
        Swab_00_00_00_07 : constant Bytes := Swab ((0, 0, 0, 7));  
        Swab_00_00_00_08 : constant Bytes := Swab ((0, 0, 0, 8));  
        Swab_00_00_00_09 : constant Bytes := Swab ((0, 0, 0, 9));  
        Swab_00_00_00_0a : constant Bytes := Swab ((0, 0, 0, 10));  
        Swab_00_00_00_0b : constant Bytes := Swab ((0, 0, 0, 11));  
        Swab_00_00_00_0c : constant Bytes := Swab ((0, 0, 0, 12));  
        Swab_00_00_00_0d : constant Bytes := Swab ((0, 0, 0, 13));  
        Swab_00_00_00_0e : constant Bytes := Swab ((0, 0, 0, 14));  
        Swab_00_00_00_0f : constant Bytes := Swab ((0, 0, 0, 15));  
        Swab_00_00_00_10 : constant Bytes := Swab ((0, 0, 0, 16));  
        Swab_00_00_00_11 : constant Bytes := Swab ((0, 0, 0, 17));  
        Swab_01_23_45_67 : constant Bytes :=  
           Swab ((16#01#, 16#23#, 16#45#, 16#67#));  
        Swab_7f_Ff_Ff_Ff : constant Bytes :=  
           Swab ((16#7F#, Uca_Ff, Uca_Ff, Uca_Ff));  
        Swab_80_00_00_00 : constant Bytes := Swab ((Uca_80, 0, 0, 0));  
        Swab_Ff_Ff_Ff_Ff : constant Bytes :=  
           Swab ((Uca_Ff, Uca_Ff, Uca_Ff, Uca_Ff));

    end U_Char_Constants;

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

    package Dummy_Converters is

        ------------------------------------------------------------------
        -- This package is a dummy version of Xlbmp_Generic_Converters
        -- and Xlbp_U_Char_Generics.  It is used by tests that want to
        -- use converters which aren't normally required by the
        -- protocol, and thus aren't provided by any of the standard
        -- converter packages.  The conversion generics here perform no
        -- actual work - they just raise Unimplemented so that the test
        -- generics will know to ignore this test.
        ------------------------------------------------------------------

        Unimplemented : exception;
        --
        -- Raised by these conversion routines to signify inapplicable
        -- tests.

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

        generic  
            type Original  is (<>);  
            type Converted is private;  
        procedure Convert_From_Discrete (Conv : out Converted;  
                                         Orig :     Original);  
        generic  
            type Original  is private;  
            type Converted is private;  
        procedure Convert_From_Private (Conv : out Converted;  
                                        Orig :     Original);  
        generic  
            type Original       is private;  
            type Index          is (<>);  
            type Original_Array is array (Index range <>) of Original;  
            type Converted      is private;  
        procedure Convert_From_Array (Conv : out Converted;  
                                      Orig :     Original_Array);  
        generic  
            type Original       is private;  
            type Index1         is (<>);  
            type Index2         is (<>);  
            type Original_Array is array (Index1 range <>,  
                                          Index2 range <>) of Original;  
            type Converted      is private;  
        procedure Convert_From_2d_Array (Conv : out Converted;  
                                         Orig :     Original_Array);

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

        generic  
            type Original  is (<>);  
            type Converted is private;  
        procedure Convert_To_Discrete (Orig : out Original;  
                                       Conv :     Converted);  
        generic  
            type Original  is private;  
            type Converted is private;  
        procedure Convert_To_Private (Orig : out Original;  
                                      Conv :     Converted);  
        generic  
            type Original       is private;  
            type Index          is (<>);  
            type Original_Array is array (Index range <>) of Original;  
            type Converted      is private;  
        procedure Convert_To_Array (Orig : out Original_Array;  
                                    Conv :     Converted);  
        generic  
            type Original       is private;  
            type Index1         is (<>);  
            type Index2         is (<>);  
            type Original_Array is array (Index1 range <>,  
                                          Index2 range <>) of Original;  
            type Converted      is private;  
        procedure Convert_To_2d_Array (Orig : out Original_Array;  
                                       Conv :     Converted);

    end Dummy_Converters;

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

end Cvt_Test_Utilities;  

E3 Meta Data

    nblk1=25
    nid=0
    hdr6=4a
        [0x00] rec0=1a rec1=00 rec2=01 rec3=03c
        [0x01] rec0=14 rec1=00 rec2=02 rec3=042
        [0x02] rec0=14 rec1=00 rec2=03 rec3=016
        [0x03] rec0=00 rec1=00 rec2=25 rec3=01e
        [0x04] rec0=14 rec1=00 rec2=04 rec3=060
        [0x05] rec0=01 rec1=00 rec2=24 rec3=00e
        [0x06] rec0=15 rec1=00 rec2=05 rec3=05a
        [0x07] rec0=12 rec1=00 rec2=06 rec3=006
        [0x08] rec0=00 rec1=00 rec2=23 rec3=008
        [0x09] rec0=14 rec1=00 rec2=07 rec3=02c
        [0x0a] rec0=00 rec1=00 rec2=22 rec3=026
        [0x0b] rec0=14 rec1=00 rec2=08 rec3=08c
        [0x0c] rec0=01 rec1=00 rec2=21 rec3=01c
        [0x0d] rec0=15 rec1=00 rec2=09 rec3=036
        [0x0e] rec0=11 rec1=00 rec2=0a rec3=08e
        [0x0f] rec0=00 rec1=00 rec2=20 rec3=004
        [0x10] rec0=15 rec1=00 rec2=0b rec3=038
        [0x11] rec0=00 rec1=00 rec2=1f rec3=026
        [0x12] rec0=15 rec1=00 rec2=0c rec3=020
        [0x13] rec0=00 rec1=00 rec2=1e rec3=034
        [0x14] rec0=15 rec1=00 rec2=0d rec3=084
        [0x15] rec0=19 rec1=00 rec2=0e rec3=030
        [0x16] rec0=00 rec1=00 rec2=1d rec3=002
        [0x17] rec0=11 rec1=00 rec2=0f rec3=060
        [0x18] rec0=11 rec1=00 rec2=10 rec3=044
        [0x19] rec0=0f rec1=00 rec2=11 rec3=062
        [0x1a] rec0=18 rec1=00 rec2=12 rec3=074
        [0x1b] rec0=13 rec1=00 rec2=13 rec3=05c
        [0x1c] rec0=12 rec1=00 rec2=14 rec3=024
        [0x1d] rec0=0e rec1=00 rec2=15 rec3=062
        [0x1e] rec0=15 rec1=00 rec2=16 rec3=032
        [0x1f] rec0=17 rec1=00 rec2=17 rec3=050
        [0x20] rec0=00 rec1=00 rec2=1c rec3=00a
        [0x21] rec0=15 rec1=00 rec2=18 rec3=05c
        [0x22] rec0=01 rec1=00 rec2=1b rec3=030
        [0x23] rec0=14 rec1=00 rec2=19 rec3=03c
        [0x24] rec0=08 rec1=00 rec2=1a rec3=000
    tail 0x21700969681978b429be9 0x42a00088462063203