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

⟦4f60e7065⟧ Ada Source

    Length: 44032 (0xac00)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, generic, package Xlbt_Proc_Var, seg_004f46

Derivation

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

E3 Source Code



with Xlbt_Arithmetic;  
use Xlbt_Arithmetic;  
with Xlbt_String;  
use Xlbt_String;

package Xlbt_Proc_Var is
------------------------------------------------------------------------------
-- X Library Machine Types
--
-- Xlbt_Proc_Var - Machine/Compiler dependent procedure-variable interface
------------------------------------------------------------------------------
-- Copyright 1989 - 1991 by Rational, Santa Clara, California.
--
--                  All Rights Reserved.
--
-- Permission to use, copy, modify, and distribute this software and its
-- documentation for any purpose and without fee is hereby granted,
-- provided that the above copyright notice(s) appear in all copies and that
-- both that copyright notice(s) and this permission notice appear in
-- supporting documentation, and that the name of Rational not be used in
-- advertising or publicity pertaining to distribution of the software
-- without specific, written prior permission.
--
-- Rational disclaims all warranties with regard to this software, including
-- all implied warranties of merchantability and fitness, in no event shall
-- Rational be liable for any special, indirect or consequential damages or
-- any damages whatsoever resulting from loss of use, data or profits, whether
-- in an action of contract, negligence or other tortious action, arising out
-- of or in connection with the use or performance of this software.
------------------------------------------------------------------------------

--\x0c
    ------------------------------------------------------------------------------
-- X_Procedure_Signature - Unique numeric ID's
------------------------------------------------------------------------------

    type X_Procedure_Signature is private;

    None_X_Procedure_Signature : constant X_Procedure_Signature;

------------------------------------------------------------------------------
-- X_Procedure_Variable
--
-- Note: On some systems, procedure variable values are implemented by
-- allocating heap storage.  Be sure to use the appropriate Free routine
-- on all procedure variable values when they are no longer needed.  This
-- will prevent storage loss.
--
-- The GET functions may raise implementation specific exceptions in some
-- cases.  E.g. An implementation does not allow a nested procedure to be
-- referenced in this fashion.
--
-- The CALL routine/function will raise X_Invalid_Procedure_Variable if:
--  a) Pv = None_X_Procedure_Variable, or,
--  b) the procedure variable value does not correspond to a value with the
--     proper parameter profile (the signature is different), or,
--  c) Pv is a freed procedure variable value (this may or may not be
--     detectable for all implementations and some other implementation
--     specific exception may be raised instead).
--
-- The FREE routine will raise X_Invalid_Procedure_Variable if:
--  a) Pv = None_X_Procedure_Variable, or,
--  b) the procedure variable value does not correspond to a value with the
--     proper parameter profile (the signature is different), or,
--  c) Pv is a freed procedure variable value (this may or may not be
--     detectable for all implementations and some other implementation
--     specific exception may be raised instead).
------------------------------------------------------------------------------

    type X_Procedure_Variable_Rec is private;  
    type X_Procedure_Variable     is access X_Procedure_Variable_Rec;

    None_X_Procedure_Variable : constant X_Procedure_Variable := null;

--\x0c
    function X_Procedure_Variable_Signature (Pvv : X_Procedure_Variable)  
                                            return X_Procedure_Signature;
------------------------------------------------------------------------------
--  Pvv - Specifies the procedure variable to use
--
-- Called to obtain the X_Procedure_Signature value for the specified procedure
-- variable value.
--
-- Raises X_Invalid_Procedure_Variable if
--  a) Ptr = None_X_Procedure_Variable, or,
--  b) Ptr is a freed procedure variable value (this may or may not be
--     detectable for all implementations and some other implementation
--     specific exception may be raised instead).
------------------------------------------------------------------------------

    function X_Equal_Signature (Pval1 : X_Procedure_Variable;  
                                Pval2 : X_Procedure_Variable) return Boolean;  
    function X_Equal_Signature (Pval : X_Procedure_Variable;  
                                Sig  : X_Procedure_Signature) return Boolean;  
    function X_Equal_Signature (Sig1 : X_Procedure_Signature;  
                                Sig2 : X_Procedure_Signature) return Boolean;
--------------------------------------------------------------------------
-- Returns TRUE if a) either value is None or b) the signature value of the
-- first parameter is the same as the signature value for the second parameter.
------------------------------------------------------------------------------

--\x0c
    ------------------------------------------------------------------------------
-- Procedure Variable - Procedure with 1 In Out parameter.
------------------------------------------------------------------------------

    generic  
        type Parm1 is private;  
    package Proc_Inout is

        type Pv is private;

        None : constant Pv;

        procedure Call (Pvv  :        Pv;  
                        Data : in out Parm1);
        ----Call the procedure variable value with this argument.

        generic  
            with procedure Called (Data : in out Parm1);  
        function Value return Pv;
        ----Obtain a procedure variable value for this procedure.

        procedure Free (Pvv : in out Pv);
        ----Called to deallocate the Pv value.

        function To_Pv   (Pvv : X_Procedure_Variable) return Pv;  
        function From_Pv (Pvv : Pv) return X_Procedure_Variable;

    private  
        type Pv is new X_Procedure_Variable;  
        None : constant Pv := Pv (None_X_Procedure_Variable);  
    end Proc_Inout;

--\x0c
    ------------------------------------------------------------------------------
-- Procedure Variable - Procedure with 1 In parameter.
------------------------------------------------------------------------------

    generic  
        type Parm1 is private;  
    package Proc_In is

        type Pv is private;

        None : constant Pv;

        procedure Call (Pvv  :    Pv;  
                        Data : in Parm1);
        ----Call the procedure variable value with this argument.

        generic  
            with procedure Called (Data : in Parm1);  
        function Value return Pv;
        ----Obtain a procedure variable value for this procedure.

        procedure Free (Pvv : in out Pv);
        ----Called to deallocate the Pv value.

        function To_Pv   (Pvv : X_Procedure_Variable) return Pv;  
        function From_Pv (Pvv : Pv) return X_Procedure_Variable;

    private  
        type Pv is new X_Procedure_Variable;  
        None : constant Pv := Pv (None_X_Procedure_Variable);  
    end Proc_In;

--\x0c
    ------------------------------------------------------------------------------
-- Procedure Variable - Procedure with 2 In parameters.
------------------------------------------------------------------------------

    generic  
        type Parm1 is private;  
        type Parm2 is private;  
    package Proc_In_In is

        type Pv is private;

        None : constant Pv;

        procedure Call (Pvv   :    Pv;  
                        Data1 : in Parm1;  
                        Data2 : in Parm2);
        ----Call the procedure variable value with these arguments.

        generic  
            with procedure Called (Data1 : in Parm1;  
                                   Data2 : in Parm2);  
        function Value return Pv;
        ----Obtain a procedure variable value for this procedure.

        procedure Free (Pvv : in out Pv);
        ----Called to deallocate the Pv value.

        function To_Pv   (Pvv : X_Procedure_Variable) return Pv;  
        function From_Pv (Pvv : Pv) return X_Procedure_Variable;

    private  
        type Pv is new X_Procedure_Variable;  
        None : constant Pv := Pv (None_X_Procedure_Variable);  
    end Proc_In_In;

--\x0c
    ------------------------------------------------------------------------------
-- Procedure Variable - Procedure with 3 In parameters.
------------------------------------------------------------------------------

    generic  
        type Parm1 is private;  
        type Parm2 is private;  
        type Parm3 is private;  
    package Proc_In_In_In is

        type Pv is private;

        None : constant Pv;
        procedure Call (Pvv   :    Pv;  
                        Data1 : in Parm1;  
                        Data2 : in Parm2;  
                        Data3 : in Parm3);
        ----Call the procedure variable value with these arguments.

        generic  
            with procedure Called (Data1 : in Parm1;  
                                   Data2 : in Parm2;  
                                   Data3 : in Parm3);  
        function Value return Pv;
        ----Obtain a procedure variable value for this procedure.

        procedure Free (Pvv : in out Pv);
        ----Called to deallocate the Pv value.

        function To_Pv   (Pvv : X_Procedure_Variable) return Pv;  
        function From_Pv (Pvv : Pv) return X_Procedure_Variable;

    private  
        type Pv is new X_Procedure_Variable;  
        None : constant Pv := Pv (None_X_Procedure_Variable);  
    end Proc_In_In_In;

--\x0c
    ------------------------------------------------------------------------------
-- Procedure Variable - Procedure with 4 In parameters.
------------------------------------------------------------------------------

    generic  
        type Parm1 is private;  
        type Parm2 is private;  
        type Parm3 is private;  
        type Parm4 is private;  
    package Proc_In_In_In_In is

        type Pv is private;

        None : constant Pv;

        procedure Call (Pvv   :    Pv;  
                        Data1 : in Parm1;  
                        Data2 : in Parm2;  
                        Data3 : in Parm3;  
                        Data4 : in Parm4);
        ----Call the procedure variable value with these arguments.

        generic  
            with procedure Called (Data1 : in Parm1;  
                                   Data2 : in Parm2;  
                                   Data3 : in Parm3;  
                                   Data4 : in Parm4);  
        function Value return Pv;
        ----Obtain a procedure variable value for this procedure.

        procedure Free (Pvv : in out Pv);
        ----Called to deallocate the Pv value.

        function To_Pv   (Pvv : X_Procedure_Variable) return Pv;  
        function From_Pv (Pvv : Pv) return X_Procedure_Variable;

    private  
        type Pv is new X_Procedure_Variable;  
        None : constant Pv := Pv (None_X_Procedure_Variable);  
    end Proc_In_In_In_In;

--\x0c
    ------------------------------------------------------------------------------
-- Procedure Variable - Procedure with 10 In parameters.
------------------------------------------------------------------------------

    generic  
        type Parm1  is private;  
        type Parm2  is private;  
        type Parm3  is private;  
        type Parm4  is private;  
        type Parm5  is private;  
        type Parm6  is private;  
        type Parm7  is private;  
        type Parm8  is private;  
        type Parm9  is private;  
        type Parm10 is private;  
    package Proc_In10 is

        type Pv is private;

        None : constant Pv;

        procedure Call (Pvv    :    Pv;  
                        Data1  : in Parm1;  
                        Data2  : in Parm2;  
                        Data3  : in Parm3;  
                        Data4  : in Parm4;  
                        Data5  : in Parm5;  
                        Data6  : in Parm6;  
                        Data7  : in Parm7;  
                        Data8  : in Parm8;  
                        Data9  : in Parm9;  
                        Data10 : in Parm10);
        ----Call the procedure variable value with these arguments.

        generic  
            with procedure Called (Data1  : in Parm1;  
                                   Data2  : in Parm2;  
                                   Data3  : in Parm3;  
                                   Data4  : in Parm4;  
                                   Data5  : in Parm5;  
                                   Data6  : in Parm6;  
                                   Data7  : in Parm7;  
                                   Data8  : in Parm8;  
                                   Data9  : in Parm9;  
                                   Data10 : in Parm10);  
        function Value return Pv;
        ----Obtain a procedure variable value for this procedure.

        procedure Free (Pvv : in out Pv);
        ----Called to deallocate the Pv value.

        function To_Pv   (Pvv : X_Procedure_Variable) return Pv;  
        function From_Pv (Pvv : Pv) return X_Procedure_Variable;

    private  
        type Pv is new X_Procedure_Variable;  
        None : constant Pv := Pv (None_X_Procedure_Variable);  
    end Proc_In10;

--\x0c
    ------------------------------------------------------------------------------
-- Procedure Variable - Procedure with 3 In parameters and 2 out parameters.
------------------------------------------------------------------------------

    generic  
        type Parm1 is private;  
        type Parm2 is private;  
        type Parm3 is private;  
        type Parm4 is private;  
        type Parm5 is private;  
    package Proc_In_In_In_Out_Out is

        type Pv is private;

        None : constant Pv;

        procedure Call (Pvv   :     Pv;  
                        Data1 : in  Parm1;  
                        Data2 : in  Parm2;  
                        Data3 : in  Parm3;  
                        Data4 : out Parm4;  
                        Data5 : out Parm5);
        ----Call the procedure variable value with these arguments.

        generic  
            with procedure Called (Data1 : in  Parm1;  
                                   Data2 : in  Parm2;  
                                   Data3 : in  Parm3;  
                                   Data4 : out Parm4;  
                                   Data5 : out Parm5);  
        function Value return Pv;
        ----Obtain a procedure variable value for this procedure.

        procedure Free (Pvv : in out Pv);
        ----Called to deallocate the Pv value.

        function To_Pv   (Pvv : X_Procedure_Variable) return Pv;  
        function From_Pv (Pvv : Pv) return X_Procedure_Variable;

    private  
        type Pv is new X_Procedure_Variable;  
        None : constant Pv := Pv (None_X_Procedure_Variable);  
    end Proc_In_In_In_Out_Out;

--\x0c
    ------------------------------------------------------------------------------
-- Procedure Variable - Procedure with 2 In parameters and 2 out parameters.
------------------------------------------------------------------------------

    generic  
        type Parm1 is private;  
        type Parm2 is private;  
        type Parm3 is private;  
        type Parm4 is private;  
    package Proc_In_In_Out_Out is

        type Pv is private;

        None : constant Pv;

        procedure Call (Pvv   :     Pv;  
                        Data1 : in  Parm1;  
                        Data2 : in  Parm2;  
                        Data3 : out Parm3;  
                        Data4 : out Parm4);
        ----Call the procedure variable value with these arguments.

        generic  
            with procedure Called (Data1 : in  Parm1;  
                                   Data2 : in  Parm2;  
                                   Data3 : out Parm3;  
                                   Data4 : out Parm4);  
        function Value return Pv;
        ----Obtain a procedure variable value for this procedure.

        procedure Free (Pvv : in out Pv);
        ----Called to deallocate the Pv value.

        function To_Pv   (Pvv : X_Procedure_Variable) return Pv;  
        function From_Pv (Pvv : Pv) return X_Procedure_Variable;

    private  
        type Pv is new X_Procedure_Variable;  
        None : constant Pv := Pv (None_X_Procedure_Variable);  
    end Proc_In_In_Out_Out;

--\x0c
    ------------------------------------------------------------------------------
-- Function Variable - Function with 1 In parameter.
------------------------------------------------------------------------------

    generic  
        type Parm1 is private;  
        type Ret   is private;  
    package Func_In is

        type Pv is private;

        None : constant Pv;

        function Call (Pvv  :    Pv;  
                       Data : in Parm1) return Ret;
        ----Call the function variable value with this argument.

        generic  
            with function Called (Data : in Parm1) return Ret;  
        function Value return Pv;
        ----Obtain a function variable value for this function.

        procedure Free (Pvv : in out Pv);
        ----Called to deallocate the Pv value.

        function To_Pv   (Pvv : X_Procedure_Variable) return Pv;  
        function From_Pv (Pvv : Pv) return X_Procedure_Variable;

    private  
        type Pv is new X_Procedure_Variable;  
        None : constant Pv := Pv (None_X_Procedure_Variable);  
    end Func_In;

--\x0c
    ------------------------------------------------------------------------------
-- Function Variable - Function with 1 In parameters returns X_String.
------------------------------------------------------------------------------

    generic  
        type Parm1 is private;  
    package Func_In_X_String is

        type Pv is private;

        None : constant Pv;

        function Call (Pvv   :    Pv;  
                       Data1 : in Parm1) return X_String;
        ----Call the function variable value with these arguments.

        generic  
            with function Called (Data1 : in Parm1) return X_String;  
        function Value return Pv;
        ----Obtain a function variable value for this function.

        procedure Free (Pvv : in out Pv);
        ----Called to deallocate the Pv value.

        function To_Pv   (Pvv : X_Procedure_Variable) return Pv;  
        function From_Pv (Pvv : Pv) return X_Procedure_Variable;

    private  
        type Pv is new X_Procedure_Variable;  
        None : constant Pv := Pv (None_X_Procedure_Variable);  
    end Func_In_X_String;

--\x0c
    ------------------------------------------------------------------------------
-- Function Variable - Function with 3 In parameters returns String.
------------------------------------------------------------------------------

    generic  
        type Parm1 is private;  
        type Parm2 is private;  
        type Parm3 is private;  
    package Func_In_In_In_X_String is

        type Pv is private;

        None : constant Pv;

        function Call (Pvv   :    Pv;  
                       Data1 : in Parm1;  
                       Data2 : in Parm2;  
                       Data3 : in Parm3) return X_String;
        ----Call the function variable value with these arguments.

        generic  
            with function Called (Data1 : in Parm1;  
                                  Data2 : in Parm2;  
                                  Data3 : in Parm3) return X_String;  
        function Value return Pv;
        ----Obtain a function variable value for this function.

        procedure Free (Pvv : in out Pv);
        ----Called to deallocate the Pv value.

        function To_Pv   (Pvv : X_Procedure_Variable) return Pv;  
        function From_Pv (Pvv : Pv) return X_Procedure_Variable;

    private  
        type Pv is new X_Procedure_Variable;  
        None : constant Pv := Pv (None_X_Procedure_Variable);  
    end Func_In_In_In_X_String;

--\x0c
    ------------------------------------------------------------------------------
-- Function Variable - Function with 3 In parameters.
------------------------------------------------------------------------------

    generic  
        type Parm1 is private;  
        type Parm2 is private;  
        type Parm3 is private;  
        type Ret   is private;  
    package Func_In_In_In is

        type Pv is private;

        None : constant Pv;

        function Call (Pvv   :    Pv;  
                       Data1 : in Parm1;  
                       Data2 : in Parm2;  
                       Data3 : in Parm3) return Ret;
        ----Call the function variable value with this argument.

        generic  
            with function Called (Data1 : in Parm1;  
                                  Data2 : in Parm2;  
                                  Data3 : in Parm3) return Ret;  
        function Value return Pv;
        ----Obtain a function variable value for this function.

        procedure Free (Pvv : in out Pv);
        ----Called to deallocate the Pv value.

        function To_Pv   (Pvv : X_Procedure_Variable) return Pv;  
        function From_Pv (Pvv : Pv) return X_Procedure_Variable;
   private  
        type Pv is new X_Procedure_Variable;  
        None : constant Pv := Pv (None_X_Procedure_Variable);  
    end Func_In_In_In;

--\x0c
    ------------------------------------------------------------------------------
-- Function Variable - Function with 5 In parameters.
------------------------------------------------------------------------------

    generic  
        type Parm1 is private;  
        type Parm2 is private;  
        type Parm3 is private;  
        type Parm4 is private;  
        type Parm5 is private;  
        type Ret   is private;  
    package Func_In5 is

        type Pv is private;

        None : constant Pv;

        function Call (Pvv   :    Pv;  
                       Data1 : in Parm1;  
                       Data2 : in Parm2;  
                       Data3 : in Parm3;  
                       Data4 : in Parm4;  
                       Data5 : in Parm5) return Ret;
        ----Call the function variable value with this argument.

        generic  
            with function Called (Data1 : in Parm1;  
                                  Data2 : in Parm2;  
                                  Data3 : in Parm3;  
                                  Data4 : in Parm4;  
                                  Data5 : in Parm5) return Ret;  
        function Value return Pv;
        ----Obtain a function variable value for this function.

        procedure Free (Pvv : in out Pv);
        ----Called to deallocate the Pv value.

        function To_Pv   (Pvv : X_Procedure_Variable) return Pv;  
        function From_Pv (Pvv : Pv) return X_Procedure_Variable;

    private  
        type Pv is new X_Procedure_Variable;  
        None : constant Pv := Pv (None_X_Procedure_Variable);  
    end Func_In5;

--\x0c
    ------------------------------------------------------------------------------
-- Function Variable - Function with 10 In parameters.
------------------------------------------------------------------------------

    generic  
        type Parm1  is private;  
        type Parm2  is private;  
        type Parm3  is private;  
        type Parm4  is private;  
        type Parm5  is private;  
        type Parm6  is private;  
        type Parm7  is private;  
        type Parm8  is private;  
        type Parm9  is private;  
        type Parm10 is private;  
        type Ret    is private;  
    package Func_In10 is

        type Pv is private;

        None : constant Pv;

        function Call (Pvv    :    Pv;  
                       Data1  : in Parm1;  
                       Data2  : in Parm2;  
                       Data3  : in Parm3;  
                       Data4  : in Parm4;  
                       Data5  : in Parm5;  
                       Data6  : in Parm6;  
                       Data7  : in Parm7;  
                       Data8  : in Parm8;  
                       Data9  : in Parm9;  
                       Data10 : in Parm10) return Ret;
        ----Call the function variable value with this argument.

        generic  
            with function Called (Data1  : in Parm1;  
                                  Data2  : in Parm2;  
                                  Data3  : in Parm3;  
                                  Data4  : in Parm4;  
                                  Data5  : in Parm5;  
                                  Data6  : in Parm6;  
                                  Data7  : in Parm7;  
                                  Data8  : in Parm8;  
                                  Data9  : in Parm9;  
                                  Data10 : in Parm10) return Ret;  
        function Value return Pv;
        ----Obtain a function variable value for this function.

        procedure Free (Pvv : in out Pv);
        ----Called to deallocate the Pv value.

        function To_Pv   (Pvv : X_Procedure_Variable) return Pv;  
        function From_Pv (Pvv : Pv) return X_Procedure_Variable;

    private  
        type Pv is new X_Procedure_Variable;  
        None : constant Pv := Pv (None_X_Procedure_Variable);  
    end Func_In10;

--\x0c
private

    type X_Procedure_Signature is  
        record  
            First  : S_Long;  
            Second : S_Long;  
        end record;

    None_X_Procedure_Signature : constant X_Procedure_Signature :=  
       (First  => S_Long'First,  
        Second => S_Long'First);

    type X_Procedure_Data_Rec;  
    type X_Procedure_Data is access X_Procedure_Data_Rec;

    type X_Procedure_Variable_Rec is  
        record  
            Key  : S_Long;  
            Data : X_Procedure_Data;  
        end record;

end Xlbt_Proc_Var;  

E3 Meta Data

    nblk1=2a
    nid=0
    hdr6=54
        [0x00] rec0=19 rec1=00 rec2=01 rec3=004
        [0x01] rec0=14 rec1=00 rec2=02 rec3=01c
        [0x02] rec0=12 rec1=00 rec2=03 rec3=054
        [0x03] rec0=14 rec1=00 rec2=04 rec3=012
        [0x04] rec0=00 rec1=00 rec2=2a rec3=008
        [0x05] rec0=11 rec1=00 rec2=05 rec3=046
        [0x06] rec0=1c rec1=00 rec2=06 rec3=06a
        [0x07] rec0=00 rec1=00 rec2=29 rec3=004
        [0x08] rec0=1f rec1=00 rec2=07 rec3=01e
        [0x09] rec0=1e rec1=00 rec2=08 rec3=05a
        [0x0a] rec0=00 rec1=00 rec2=28 rec3=004
        [0x0b] rec0=1e rec1=00 rec2=09 rec3=000
        [0x0c] rec0=1a rec1=00 rec2=0a rec3=082
        [0x0d] rec0=00 rec1=00 rec2=27 rec3=004
        [0x0e] rec0=1c rec1=00 rec2=0b rec3=01c
        [0x0f] rec0=1b rec1=00 rec2=0c rec3=032
        [0x10] rec0=00 rec1=00 rec2=26 rec3=010
        [0x11] rec0=1a rec1=00 rec2=0d rec3=05c
        [0x12] rec0=17 rec1=00 rec2=0e rec3=05c
        [0x13] rec0=00 rec1=00 rec2=25 rec3=004
        [0x14] rec0=1c rec1=00 rec2=0f rec3=028
        [0x15] rec0=1e rec1=00 rec2=10 rec3=01a
        [0x16] rec0=00 rec1=00 rec2=24 rec3=004
        [0x17] rec0=18 rec1=00 rec2=11 rec3=004
        [0x18] rec0=00 rec1=00 rec2=23 rec3=004
        [0x19] rec0=1d rec1=00 rec2=12 rec3=070
        [0x1a] rec0=00 rec1=00 rec2=22 rec3=008
        [0x1b] rec0=1e rec1=00 rec2=13 rec3=048
        [0x1c] rec0=1d rec1=00 rec2=14 rec3=040
        [0x1d] rec0=00 rec1=00 rec2=21 rec3=004
        [0x1e] rec0=1a rec1=00 rec2=15 rec3=026
        [0x1f] rec0=00 rec1=00 rec2=20 rec3=004
        [0x20] rec0=1d rec1=00 rec2=16 rec3=002
        [0x21] rec0=00 rec1=00 rec2=1f rec3=008
        [0x22] rec0=1d rec1=00 rec2=17 rec3=044
        [0x23] rec0=00 rec1=00 rec2=1e rec3=004
        [0x24] rec0=19 rec1=00 rec2=18 rec3=03a
        [0x25] rec0=00 rec1=00 rec2=1d rec3=004
        [0x26] rec0=1d rec1=00 rec2=19 rec3=056
        [0x27] rec0=01 rec1=00 rec2=1c rec3=016
        [0x28] rec0=15 rec1=00 rec2=1a rec3=038
        [0x29] rec0=1e rec1=00 rec2=1b rec3=000
    tail 0x2150095c48197819c6b4d 0x42a00088462063203