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

⟦afafa5909⟧ Ada Source

    Length: 31744 (0x7c00)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Icon, seg_00535d

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 Text_Io;

with Main;  
use Main;

with Xlbt_Arithmetic;  
use Xlbt_Arithmetic;  
with Xlbt_Basic;  
use Xlbt_Basic;  
with Xlbt_Event;  
use Xlbt_Event;  
with Xlbt_Gc;  
use Xlbt_Gc;  
with Xlbt_Geometry;  
use Xlbt_Geometry;  
with Xlbt_Hint;  
use Xlbt_Hint;  
with Xlbt_Image;  
use Xlbt_Image;  
with Xlbt_Image3;  
with Xlbt_String;  
use Xlbt_String;  
with Xlbt_Window;  
use Xlbt_Window;  
with Xlbt_Visual;  
use Xlbt_Visual;

with Xlbp_Bitmap;  
use Xlbp_Bitmap;  
with Xlbp_Display;  
use Xlbp_Display;  
with Xlbp_Event;  
use Xlbp_Event;  
with Xlbp_Gc;  
use Xlbp_Gc;  
with Xlbp_Geometry;  
use Xlbp_Geometry;  
with Xlbp_Graphics;  
use Xlbp_Graphics;  
with Xlbp_Hint;  
use Xlbp_Hint;  
with Xlbp_Image;  
use Xlbp_Image;  
with Xlbp_Window;  
use Xlbp_Window;  
with Xlbp_Window_Information;  
use Xlbp_Window_Information;

package body Icon is
------------------------------------------------------------------------------
-- Dragon - a version of Mah-Jongg for X Windows
--
-- Author: Gary E. Barnes        March 1989
--
-- icon.c - Deals with our icon.  Setup and execution.
------------------------------------------------------------------------------
-- 05/30/90 GEB  - Translate to Ada
------------------------------------------------------------------------------

    Dragon_Icon32_Width  : constant := 32;  
    Dragon_Icon32_Height : constant := 32;  
    Dragon_Icon32_X_Hot  : constant := -1;  
    Dragon_Icon32_Y_Hot  : constant := -1;

    Dragon_Icon32_Bits : constant U_Char_Array :=  
       (16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#,  
        16#00#, 16#00#, 16#00#, 16#00#, 16#F0#, 16#FF#, 16#FF#, 16#0F#,  
        16#50#, 16#B7#, 16#6D#, 16#0B#, 16#F0#, 16#FF#, 16#FF#, 16#0F#,  
        16#00#, 16#FC#, 16#3D#, 16#00#, 16#00#, 16#AC#, 16#2F#, 16#00#,  
        16#00#, 16#FC#, 16#3F#, 16#00#, 16#80#, 16#DF#, 16#F7#, 16#01#,  
        16#80#, 16#75#, 16#7D#, 16#01#, 16#80#, 16#FF#, 16#EF#, 16#01#,  
        16#F0#, 16#77#, 16#FF#, 16#3F#, 16#D0#, 16#DE#, 16#6B#, 16#2B#,  
        16#F0#, 16#FF#, 16#FE#, 16#3F#, 16#80#, 16#BF#, 16#EF#, 16#01#,  
        16#80#, 16#F6#, 16#7D#, 16#01#, 16#80#, 16#BF#, 16#FF#, 16#01#,  
        16#00#, 16#FC#, 16#3B#, 16#00#, 16#00#, 16#AC#, 16#2F#, 16#00#,  
        16#00#, 16#FC#, 16#3D#, 16#00#, 16#F0#, 16#BF#, 16#FF#, 16#0F#,  
        16#D0#, 16#F6#, 16#6D#, 16#0B#, 16#F0#, 16#FF#, 16#FF#, 16#0F#,  
        16#00#, 16#00#, 16#00#, 16#00#, 16#9C#, 16#63#, 16#8C#, 16#49#,  
        16#A4#, 16#94#, 16#42#, 16#5A#, 16#A4#, 16#F3#, 16#52#, 16#6A#,  
        16#9C#, 16#94#, 16#8C#, 16#49#, 16#00#, 16#00#, 16#00#, 16#00#,  
        16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#);

    Dragon_Icon64_Width  : constant := 64;  
    Dragon_Icon64_Height : constant := 64;  
    Dragon_Icon64_X_Hot  : constant := -1;  
    Dragon_Icon64_Y_Hot  : constant := -1;

    Dragon_Icon64_Bits : constant U_Char_Array :=  
       (16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#,  
        16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#,  
        16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#,  
        16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#,  
        16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#,  
        16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#,  
        16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#,  
        16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#,  
        16#C0#, 16#F7#, 16#7D#, 16#DF#, 16#F7#, 16#7D#, 16#1F#, 16#00#,  
        16#C0#, 16#54#, 16#65#, 16#55#, 16#36#, 16#5D#, 16#1D#, 16#00#,  
        16#40#, 16#95#, 16#4D#, 16#53#, 16#95#, 16#6D#, 16#1B#, 16#00#,  
        16#C0#, 16#F7#, 16#7D#, 16#DF#, 16#F7#, 16#7D#, 16#1F#, 16#00#,  
        16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#,  
        16#00#, 16#00#, 16#7C#, 16#DF#, 16#F7#, 16#01#, 16#00#, 16#00#,  
        16#00#, 16#00#, 16#7C#, 16#D1#, 16#94#, 16#01#, 16#00#, 16#00#,  
        16#00#, 16#00#, 16#44#, 16#DF#, 16#95#, 16#01#, 16#00#, 16#00#,  
        16#00#, 16#00#, 16#7C#, 16#DF#, 16#F7#, 16#01#, 16#00#, 16#00#,  
        16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#,  
        16#00#, 16#F0#, 16#7D#, 16#DF#, 16#F7#, 16#7D#, 16#00#, 16#00#,  
        16#00#, 16#70#, 16#75#, 16#53#, 16#15#, 16#55#, 16#00#, 16#00#,  
        16#00#, 16#D0#, 16#55#, 16#53#, 16#15#, 16#45#, 16#00#, 16#00#,  
        16#00#, 16#F0#, 16#7D#, 16#DF#, 16#F7#, 16#7D#, 16#00#, 16#00#,  
        16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#,  
        16#C0#, 16#F7#, 16#7D#, 16#DF#, 16#F7#, 16#7D#, 16#1F#, 16#00#,  
        16#40#, 16#57#, 16#65#, 16#D9#, 16#B6#, 16#55#, 16#17#, 16#00#,  
        16#5E#, 16#54#, 16#65#, 16#F5#, 16#54#, 16#65#, 16#D1#, 16#7B#,  
        16#DE#, 16#F7#, 16#7D#, 16#FF#, 16#F7#, 16#7D#, 16#DF#, 16#6B#,  
        16#12#, 16#00#, 16#00#, 16#90#, 16#00#, 16#00#, 16#40#, 16#4A#,  
        16#D6#, 16#F7#, 16#7D#, 16#FF#, 16#F7#, 16#7D#, 16#DF#, 16#7B#,  
        16#DE#, 16#54#, 16#55#, 16#F5#, 16#96#, 16#7D#, 16#D5#, 16#7B#,  
        16#40#, 16#36#, 16#45#, 16#57#, 16#57#, 16#45#, 16#15#, 16#00#,  
        16#C0#, 16#F7#, 16#7D#, 16#DF#, 16#F7#, 16#7D#, 16#1F#, 16#00#,  
        16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#,  
        16#00#, 16#F0#, 16#7D#, 16#DF#, 16#F7#, 16#7D#, 16#00#, 16#00#,  
        16#00#, 16#D0#, 16#5D#, 16#51#, 16#35#, 16#45#, 16#00#, 16#00#,  
        16#00#, 16#50#, 16#55#, 16#51#, 16#17#, 16#7D#, 16#00#, 16#00#,  
        16#00#, 16#F0#, 16#7D#, 16#DF#, 16#F7#, 16#7D#, 16#00#, 16#00#,  
        16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#,  
        16#00#, 16#00#, 16#7C#, 16#DF#, 16#F7#, 16#01#, 16#00#, 16#00#,  
        16#00#, 16#00#, 16#4C#, 16#5D#, 16#57#, 16#01#, 16#00#, 16#00#,  
        16#00#, 16#00#, 16#5C#, 16#59#, 16#55#, 16#01#, 16#00#, 16#00#,  
        16#00#, 16#00#, 16#7C#, 16#DF#, 16#F7#, 16#01#, 16#00#, 16#00#,  
        16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#,  
        16#C0#, 16#F7#, 16#7D#, 16#DF#, 16#F7#, 16#7D#, 16#1F#, 16#00#,  
        16#40#, 16#56#, 16#45#, 16#57#, 16#36#, 16#75#, 16#15#, 16#00#,  
        16#40#, 16#15#, 16#55#, 16#51#, 16#56#, 16#45#, 16#15#, 16#00#,  
        16#C0#, 16#F7#, 16#7D#, 16#DF#, 16#F7#, 16#7D#, 16#1F#, 16#00#,  
        16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#,  
        16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#,  
        16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#,  
        16#00#, 16#1C#, 16#1E#, 16#04#, 16#87#, 16#23#, 16#02#, 16#00#,  
        16#00#, 16#24#, 16#22#, 16#8E#, 16#48#, 16#64#, 16#02#, 16#00#,  
        16#00#, 16#44#, 16#22#, 16#91#, 16#48#, 16#64#, 16#02#, 16#00#,  
        16#00#, 16#44#, 16#22#, 16#91#, 16#40#, 16#A4#, 16#02#, 16#00#,  
        16#00#, 16#44#, 16#1E#, 16#9F#, 16#4C#, 16#24#, 16#03#, 16#00#,  
        16#00#, 16#24#, 16#12#, 16#91#, 16#48#, 16#24#, 16#03#, 16#00#,  
        16#00#, 16#1C#, 16#22#, 16#11#, 16#87#, 16#23#, 16#02#, 16#00#,  
        16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#,  
        16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#,  
        16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#,  
        16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#,  
        16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#,  
        16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#,  
        16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#, 16#00#);


    Icon_Gc : X_Gc := None_X_Gc;          -- GC used for Icon window.

--\x0c
    procedure Icon_Expose (Window : X_Window; Event : X_Event) is-----------------------------------------------------------------------------
--  Window  - Specifies the window that got the event
--  Event   - Specifies the event that was received
--
-- Called when our Icon window receives an Expose event.  This is only called
-- when we are using an Icon window.  If we managed to use an Icon pixmap then
-- this routine is not called at all.
------------------------------------------------------------------------------
        Ximage  : X_Image;  
        Gcv     : X_Gc_Values;  
        Wid     : U_Short := 64;  
        Hei     : U_Short := 64;  
        Bw      : U_Short := 0;  
        Depth   : U_Char;  
        X, Y    : S_Short;  
        Root    : X_Window;  
        Size    : U_Short;  
        Success : X_Status;  
    begin

----Figure out how big our window is.

        X_Get_Geometry (Dpy, Window.Drawable, Root, X, Y,  
                        Wid, Hei, Bw, Depth, Success);  
        if Success = Failed then  
            Text_Io.Put_Line ("Cannot get geometry of the icon window?");  
            return;  
        end if;  
        if Wid < 64 or else Hei < 64 then  
            Size := 32;  
        else  
            Size := 64;  
        end if;

----Get a GC and create an image of an appropriate size using one of our
--  reexisting Icon images.

        if Icon_Gc = None_X_Gc then  
            Gcv.Foreground := Dragon_Resources.Foreground;  
            Gcv.Background := Dragon_Resources.Background;  
            Icon_Gc        :=  
               X_Create_Gc  
                  (Dpy, Window.Drawable,  
                   X_Gc_Components'(Gc_Foreground | Gc_Background => True,  
                                    others                        => False),  
                   Gcv);  
        end if;  
        if Size = 64 then  
            Ximage := X_Create_Image  
                         (Display              => Dpy,  
                          Visual               => None_X_Visual,  
                          Depth                => 1,  
                          Format               => X_Y_Bitmap,  
                          Offset               => 0,  
                          Data                 => Dragon_Icon64_Bits,  
                          Width                => Dragon_Icon64_Width,  
                          Height               => Dragon_Icon64_Height,  
                          Bitmap_Pad           => 8,  
                          Image_Bytes_Per_Line =>  
                             (Dragon_Icon64_Width + 7) / 8);  
        else  
            Ximage := X_Create_Image  
                         (Display              => Dpy,  
                          Visual               => None_X_Visual,  
                          Depth                => 1,  
                          Format               => X_Y_Bitmap,  
                          Offset               => 0,  
                          Data                 => Dragon_Icon32_Bits,  
                          Width                => Dragon_Icon32_Width,  
                          Height               => Dragon_Icon32_Height,  
                          Bitmap_Pad           => 8,  
                          Image_Bytes_Per_Line =>  
                             (Dragon_Icon32_Width + 7) / 8);  
        end if;  
        Ximage.Byte_Order       := Xlbt_Image3.Lsb_First;  
        Ximage.Bitmap_Bit_Order := Xlbt_Image3.Lsb_First;

----Draw the bitmap on the window.

        X_Clear_Window (Dpy, Window);  
        X_Put_Image (Dpy, Window.Drawable, Icon_Gc, Ximage,  
                     0, 0, S_Short (Wid - Size) / 2,  
                     S_Short (Hei - Size) / 2, Size, Size);
        -- Debug_Return ("Icon_Expose");

    end Icon_Expose;

--\x0c
    procedure Icon_Setup (Wm_Hints : in out X_Wm_Hints) is
------------------------------------------------------------------------------
--  Wm_Hints    - Specifies an X_Wm_Hints structure to modify, it receives
--                  either an Icon_Pixmap or an Icon_Window as appropriate.
--
-- Called to handle all of the Icon setup for our main shell.
------------------------------------------------------------------------------
        Ic          : X_Icon_Size_List;  
        Success     : X_Status;  
        I           : S_Long;  
        Size        : S_Long;  
        Accepted    : S_Long;  
        Icon_Pixmap : X_Pixmap := None_X_Pixmap;  
        W, H        : U_Short  := 0;  
        X, Y        : S_Short  := 0;  
        Flags       : X_Parse_Geometry_Flags;  
    begin

----If we've been asked to set up the Icon geometry then do that.

        -- Debug_Call ("Icon_Setup");
        X_Parse_Geometry (Dragon_Resources.Icon_Geometry.all,  
                          X, Y, W, H, Flags);  
        if Flags (X_Value) then  
            Wm_Hints.Icon_X                     := S_Long (X);  
            Wm_Hints.Flags (Icon_Position_Hint) := True;  
        end if;  
        if Flags (Y_Value) then  
            Wm_Hints.Icon_Y                     := S_Long (Y);  
            Wm_Hints.Flags (Icon_Position_Hint) := True;  
        end if;

----Set up the Icon pixmap or window.  We try to use a pixmap instead of a
--  window because it is simply less overhead. If there are supported Icon
--  pixmap sizes then maybe we can use an icon pixmap.

        X_Get_Icon_Sizes (Dpy,  
                          X_Default_Root_Window (Dpy),  
                          Ic,  
                          Success);  
        if Success /= Failed then

----Run over all of the sizes.  We try to get a 64x64 pixmap but we are willing
--  to settle for a 32x32.  We grab the first size that allows us to create
--  a pixmap of exactly one of these sizes.  If we cannot find an exact match
--  then "accepted" is set to point to an acceptable size.

            Size := 0;  
            for I in Ic'Range loop  
                if Ic (I).Width_Inc = 0 or else  
                   Ic (I).Height_Inc = 0 then  
                    if Ic (I).Min_Width = 64 and then  
                       Ic (I).Min_Height = 64 then  
                        Size := 64;  
                        exit;  
                    elsif Ic (I).Min_Width >= 64 and then  
                          Ic (I).Min_Height >= 64 then  
                        Size := 64;  
                    elsif Ic (I).Min_Width = 32 and then  
                          Ic (I).Min_Height = 32 then  
                        Size := 32;  
                        exit;  
                    elsif Ic (I).Min_Width >= 32 and then  
                          Ic (I).Min_Height >= 32 then  
                        Size := 32;  
                    else  
                        Size := 32;  
                    end if;  
                elsif 64 in Ic (I).Min_Width .. Ic (I).Max_Width and then  
                      64 in Ic (I).Min_Height .. Ic (I).Max_Height and then  
                      (64 - Ic (I).Min_Width) rem Ic (I).Width_Inc = 0 and then  
                      (64 - Ic (I).Min_Height) rem Ic (I).Height_Inc = 0 then  
                    Size := 64;  
                    exit;  
                elsif Size = 0 and then  
                      32 in Ic (I).Min_Width .. Ic (I).Max_Width and then  
                      32 in Ic (I).Min_Height .. Ic (I).Max_Height and then  
                      (32 - Ic (I).Min_Width) rem Ic (I).Width_Inc = 0 and then  
                      (32 - Ic (I).Min_Height) rem Ic (I).Height_Inc = 0 then  
                    Size := 32;  
                    exit;  
                elsif Size = 0 and then  
                      Ic (I).Max_Width >= 32 and then  
                      Ic (I).Max_Height >= 32 then  
                    Size := 32;  
                end if;  
            end loop;  
            if Size = 64 then  
                Icon_Pixmap :=              -- Size is perfect
                   X_Create_Pixmap_From_Bitmap_Data  
                      (Dpy, X_Default_Root_Window (Dpy).Drawable,  
                       Dragon_Icon64_Bits, Dragon_Icon64_Width,  
                       Dragon_Icon64_Height, Dragon_Resources.Foreground,  
                       Dragon_Resources.Background,  
                       X_Default_Depth_Of_Screen  
                          (X_Default_Screen_Of_Display (Dpy)));  
            else  
                Icon_Pixmap :=              -- Size is perfect
                   X_Create_Pixmap_From_Bitmap_Data  
                      (Dpy, X_Default_Root_Window (Dpy).Drawable,  
                       Dragon_Icon32_Bits, Dragon_Icon32_Width,  
                       Dragon_Icon32_Height, Dragon_Resources.Foreground,  
                       Dragon_Resources.Background,  
                       X_Default_Depth_Of_Screen  
                          (X_Default_Screen_Of_Display (Dpy)));  
            end if;  
        end if;

----If we managed to create a pixmap then use that.  Otherwise we need a window
--  for our icon.

        if Icon_Pixmap /= None_X_Pixmap then
            -- Debug_Other ("Icon_Setup", "Icon X_Pixmap");
            Wm_Hints.Icon_Pixmap              := Icon_Pixmap;  
            Wm_Hints.Flags (Icon_Pixmap_Hint) := True;  
        else

----No Pixmap found (or possibly none supported).  Try an Icon
--  window instead.

            declare  
                Icon_Window : X_Window;  
                Size_Hints  : X_Size_Hints;  
                Mask        : X_New_Window_Attributes;  
                Attr        : X_Set_Window_Attributes;  
                Success     : X_Status;  
            begin

----Create a shell to contain the Icon window.

                -- Debug_Other ("Icon_Setup", "Icon X_Window");

                Size_Hints.Min_Width    := 32;  
                Size_Hints.Min_Height   := 32;  
                Size_Hints.Base_Width   := 32;  
                Size_Hints.Base_Height  := 32;  
                Size_Hints.Width_Inc    := 32;  
                Size_Hints.Height_Inc   := 32;  
                Size_Hints.Min_Aspect.X := 100;  
                Size_Hints.Min_Aspect.Y := 100;  
                Size_Hints.Max_Aspect.X := 100;  
                Size_Hints.Max_Aspect.Y := 100;  
                Size_Hints.Flags        :=  
                   X_Size_Hints_Flags'  
                      (P_Min_Size | P_Aspect | P_Resize_Inc | P_Base_Size =>  
                          True,  
                       others => False);  
                Set_Size_Hints (Size_Hints, Dragon_Resources.Icon_Geometry.all);

                Attr.Background_Pixel := Dragon_Resources.Background;  
                Attr.Border_Pixel := Dragon_Resources.Foreground;  
                Mask := X_New_Window_Attributes'  
                           (Cw_Back_Pixel | Cw_Border_Pixel => True,  
                            others                          => False);

                Icon_Window :=  
                   X_Create_Window  
                      (Dpy, X_Default_Root_Window (Dpy),  
                       S_Short (Size_Hints.X), S_Short (Size_Hints.Y),  
                       U_Short (Size_Hints.Width), U_Short (Size_Hints.Height),  
                       1, X_Default_Depth_Of_Screen  
                             (X_Default_Screen_Of_Display (Dpy)),  
                       Input_Output, X_Default_Visual_Of_Screen  
                                        (X_Default_Screen_Of_Display (Dpy)),  
                       Mask, Attr);  
                X_Set_Wm_Properties (Dpy, Icon_Window,  
                                     "Dragon-Icon", "Dragon-Icon",  
                                     (1 .. 0 => None_X_String_Pointer),  
                                     Size_Hints, Wm_Hints,  
                                     None_X_Class_Hint, Success);  
                X_Select_Input (Dpy, Icon_Window,  
                                X_Event_Mask'(Exposure_Mask => True,  
                                              others        => False));

----Use the Icon window.

                Wm_Hints.Icon_Window              := Icon_Window;  
                Wm_Hints.Flags (Icon_Window_Hint) := True;  
            end;  
        end if;
        -- Debug_Return ("Icon_Setup");

    end Icon_Setup;

--\x0c
end Icon;  

E3 Meta Data

    nblk1=1e
    nid=0
    hdr6=3c
        [0x00] rec0=33 rec1=00 rec2=01 rec3=05c
        [0x01] rec0=14 rec1=00 rec2=02 rec3=088
        [0x02] rec0=00 rec1=00 rec2=1e rec3=006
        [0x03] rec0=10 rec1=00 rec2=03 rec3=042
        [0x04] rec0=00 rec1=00 rec2=1d rec3=006
        [0x05] rec0=0f rec1=00 rec2=04 rec3=04e
        [0x06] rec0=0d rec1=00 rec2=05 rec3=088
        [0x07] rec0=0e rec1=00 rec2=06 rec3=02a
        [0x08] rec0=0d rec1=00 rec2=07 rec3=064
        [0x09] rec0=12 rec1=00 rec2=08 rec3=002
        [0x0a] rec0=18 rec1=00 rec2=09 rec3=03a
        [0x0b] rec0=01 rec1=00 rec2=1c rec3=02a
        [0x0c] rec0=19 rec1=00 rec2=0a rec3=06a
        [0x0d] rec0=00 rec1=00 rec2=1b rec3=00e
        [0x0e] rec0=11 rec1=00 rec2=0b rec3=07a
        [0x0f] rec0=17 rec1=00 rec2=0c rec3=05e
        [0x10] rec0=00 rec1=00 rec2=1a rec3=00c
        [0x11] rec0=17 rec1=00 rec2=0d rec3=06a
        [0x12] rec0=03 rec1=00 rec2=19 rec3=016
        [0x13] rec0=16 rec1=00 rec2=0e rec3=048
        [0x14] rec0=01 rec1=00 rec2=18 rec3=00c
        [0x15] rec0=13 rec1=00 rec2=0f rec3=07c
        [0x16] rec0=14 rec1=00 rec2=10 rec3=016
        [0x17] rec0=12 rec1=00 rec2=11 rec3=06e
        [0x18] rec0=1b rec1=00 rec2=12 rec3=060
        [0x19] rec0=01 rec1=00 rec2=17 rec3=054
        [0x1a] rec0=14 rec1=00 rec2=13 rec3=03c
        [0x1b] rec0=00 rec1=00 rec2=16 rec3=00c
        [0x1c] rec0=10 rec1=00 rec2=14 rec3=020
        [0x1d] rec0=0e rec1=00 rec2=15 rec3=000
    tail 0x215009b7e81978784deac 0x42a00088462063203