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

⟦9ea8f88d7⟧ Ada Source

    Length: 31744 (0x7c00)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Apollo3_Sr10_2_Unix, package body Apollom_Sr10_2_Unix, package body Decus_Vms5_1_Multinet203, package body Decus_Vms5_1_Wollongong502, package body Hp46021a_Hpux7_0, package body Info, package body Ncd_R1000, package body News3_V2_0, package body News3_V2_0_Sparc, package body News4_V2_0, package body News4_V2_0_Sparc, package body R6us_Aix3_1, package body Release, package body Sun3_X11r3, package body Sun3_X11r3_Sparc, package body Sun4_X11r3, package body Sun4_X11r3_Sparc, seg_00429f

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 Directory_Tools;
with Rxi_Install;
use Rxi_Install;
with Rxi_String;
use Rxi_String;
with String_Utilities;
use String_Utilities;

with System_Utilities;

package body Release is

    Lf : constant Character := Ascii.Lf;

    Terminal_Type_Has_No_Workation_Files : exception;

    type File_Info_Array     is array (Positive range <>) of File_Info;
    type File_Info_Array_Ptr is access File_Info_Array;

------------------------------------------------------------------------------
-- Terminal recognition codes; keep them in order for easy visual reference
--  and don't every assign the same code to two names.
------------------------------------------------------------------------------

    Vt100_Id     : constant := 0;
    Xsun3_Id     : constant := 1;
    Xsun4_Id     : constant := 2;
    Xrtus_Id     : constant := 3;   -- Obsolete/unsupported now 03/20/90
    Xdecus_Id    : constant := 4;
    Xncd_Id      : constant := 5;
    Xnews3_Id    : constant := 6;
    Xnews4_Id    : constant := 7;
    Xhp46021a_Id : constant := 8;
    Xr6us_Id     : constant := 9;
    Xapollo3_Id  : constant := 10;
    Xultus_Id    : constant := 11;
    Xapollom_Id  : constant := 12;

--\x0c
    ------------------------------------------------------------------------------
-- "Real" Workstations - Keep these before the "Parasite" X Terminals
--
-- These are R1000 terminal types that correspond to "real" computers.
-- Ie. They declare and initialize package state that is shared with one or
-- more of the "parasite" terminal packages below; and, in order for proper
-- initialization to occur during package body elaboration they must textually
-- preceed the parasite packages below.
------------------------------------------------------------------------------

------------------------------------------------------------------------------
----SUN keyboard 3
------------------------------------------------------------------------------

    package Sun3_X11r3 is
        Keyboard    : Keyboard_Info;
        Recognition : File_Info;
        Install     : File_Info_Array_Ptr;
        Source      : File_Info_Array_Ptr;
    end Sun3_X11r3;

    package body Sun3_X11r3 is separate;

    package Sun3_X11r3_Sparc is
        Keyboard    : Keyboard_Info;
        Recognition : File_Info           := Sun3_X11r3.Recognition;
        Install     : File_Info_Array_Ptr := Sun3_X11r3.Install;
        Source      : File_Info_Array_Ptr := Sun3_X11r3.Source;
    end Sun3_X11r3_Sparc;

    package body Sun3_X11r3_Sparc is separate;

    package News3_V2_0 is
        Keyboard    : Keyboard_Info;
        Recognition : File_Info;
        Install     : File_Info_Array_Ptr;
        Source      : File_Info_Array_Ptr;
    end News3_V2_0;

    package body News3_V2_0 is separate;

    package News3_V2_0_Sparc is
        Keyboard    : Keyboard_Info;
        Recognition : File_Info           := News3_V2_0.Recognition;
        Install     : File_Info_Array_Ptr := News3_V2_0.Install;
        Source      : File_Info_Array_Ptr := News3_V2_0.Source;
    end News3_V2_0_Sparc;

    package body News3_V2_0_Sparc is separate;

------------------------------------------------------------------------------
----SUN keyboard 4
------------------------------------------------------------------------------

    package Sun4_X11r3 is
        Keyboard    : Keyboard_Info;
        Recognition : File_Info           := Sun3_X11r3.Recognition;
        Install     : File_Info_Array_Ptr := Sun3_X11r3.Install;
        Source      : File_Info_Array_Ptr := Sun3_X11r3.Source;
    end Sun4_X11r3;

    package body Sun4_X11r3 is separate;

    package Sun4_X11r3_Sparc is
        Keyboard    : Keyboard_Info;
        Recognition : File_Info           := Sun3_X11r3.Recognition;
        Install     : File_Info_Array_Ptr := Sun3_X11r3.Install;
        Source      : File_Info_Array_Ptr := Sun3_X11r3.Source;
    end Sun4_X11r3_Sparc;

    package body Sun4_X11r3_Sparc is separate;

    package News4_V2_0 is
        Keyboard    : Keyboard_Info;
        Recognition : File_Info           := News3_V2_0.Recognition;
        Install     : File_Info_Array_Ptr := News3_V2_0.Install;
        Source      : File_Info_Array_Ptr := News3_V2_0.Source;
    end News4_V2_0;

    package body News4_V2_0 is separate;

    package News4_V2_0_Sparc is
        Keyboard    : Keyboard_Info;
        Recognition : File_Info           := News3_V2_0.Recognition;
        Install     : File_Info_Array_Ptr := News3_V2_0.Install;
        Source      : File_Info_Array_Ptr := News3_V2_0.Source;
    end News4_V2_0_Sparc;

    package body News4_V2_0_Sparc is separate;

------------------------------------------------------------------------------
----IBM
------------------------------------------------------------------------------

    package R6us_Aix3_1 is
        Keyboard    : Keyboard_Info;
        Recognition : File_Info;
        Install     : File_Info_Array_Ptr;
        Source      : File_Info_Array_Ptr;
    end R6us_Aix3_1;

    package body R6us_Aix3_1 is separate;

------------------------------------------------------------------------------
----DEC
------------------------------------------------------------------------------

    package Decus_Vms5_1_Multinet203 is
        Keyboard    : Keyboard_Info;
        Recognition : File_Info;
        Install     : File_Info_Array_Ptr;
        Source      : File_Info_Array_Ptr;
    end Decus_Vms5_1_Multinet203;

    package body Decus_Vms5_1_Multinet203 is separate;


    package Decus_Vms5_1_Wollongong502 is
        Keyboard    : Keyboard_Info;
        Recognition : File_Info := Decus_Vms5_1_Multinet203.Recognition;
        Install     : File_Info_Array_Ptr := Decus_Vms5_1_Multinet203.Install;
        Source      : File_Info_Array_Ptr := Decus_Vms5_1_Multinet203.Source;
    end Decus_Vms5_1_Wollongong502;

    package body Decus_Vms5_1_Wollongong502 is
    begin

        Keyboard           := Decus_Vms5_1_Multinet203.Keyboard;
        Keyboard.R1000_Dir := Hs ("X_Vms5_1_Wollongong502");

    end Decus_Vms5_1_Wollongong502;

------------------------------------------------------------------------------
----HP
------------------------------------------------------------------------------

    package Hp46021a_Hpux7_0 is
        Keyboard    : Keyboard_Info;
        Recognition : File_Info;
        Install     : File_Info_Array_Ptr;
        Source      : File_Info_Array_Ptr;
    end Hp46021a_Hpux7_0;

    package body Hp46021a_Hpux7_0 is separate;

------------------------------------------------------------------------------
-- APOLLO
------------------------------------------------------------------------------

    package Apollo3_Sr10_2_Unix is
        Keyboard    : Keyboard_Info;
        Recognition : File_Info;
        Install     : File_Info_Array_Ptr;
        Source      : File_Info_Array_Ptr;
    end Apollo3_Sr10_2_Unix;

    package body Apollo3_Sr10_2_Unix is separate;

    package Apollom_Sr10_2_Unix is
        Keyboard    : Keyboard_Info;
        Recognition : File_Info;
        Install     : File_Info_Array_Ptr;
        Source      : File_Info_Array_Ptr;
    end Apollom_Sr10_2_Unix;

    package body Apollom_Sr10_2_Unix is separate;

--\x0c
    ------------------------------------------------------------------------------
-- "Parasite" Workstations - Keep these after the "Real" Workstations
--
-- These are R1000 terminal types that correspond to things that aren't "real"
-- computers.  Ie. They share package state with one or more of the above
-- packages and in order for proper initialization to occur during package
-- body elaboration they must textually follow the packages above.
------------------------------------------------------------------------------

------------------------------------------------------------------------------
----NCD
------------------------------------------------------------------------------

    package Ncd_R1000 is
        Keyboard_Sun_X11r3            : Keyboard_Info;
        Keyboard_Sun_X11r3_Sparc      : Keyboard_Info;
        Keyboard_Xnews_V2_0           : Keyboard_Info;
        Keyboard_Xnews_V2_0_Sparc     : Keyboard_Info;
        Keyboard_Aix3_1               : Keyboard_Info;
        Keyboard_Vms5_1_Multinet203   : Keyboard_Info;
        Keyboard_Vms5_1_Wollongong502 : Keyboard_Info;
        Keyboard_Hpux7_0              : Keyboard_Info;
        Keyboard_Sr10_2_Unix          : Keyboard_Info;
    end Ncd_R1000;

    package body Ncd_R1000 is separate;

--\x0c
    function My_Sun return String is
------------------------------------------------------------------------------
-- Return the string name of the appropriate Sun to use for FTP.
-- Note: Do *NOT* use "igor" here.   It ties up the network something fierce.
-- Always use the name of a non-file-server.
------------------------------------------------------------------------------
    begin
        if System_Utilities.User_Name = "GEB" then
            return "amber";         -- GEB uses amber
        else           return "rutabaga";      -- Other people use some other machine
        end if;
    end My_Sun;

--\x0c
    package body Info is separate;

--\x0c
    function Supported_Keyboards (Terminal : Terminal_Type)  
                                 return Keyboard_Info is
    begin
        case Terminal is

----SUN

            when Xsun3_X11r3 =>
                return Sun3_X11r3.Keyboard;

            when Xsun3_X11r3_Sparc =>
                return Sun3_X11r3_Sparc.Keyboard;

            when Xsun4_X11r3 =>
                return Sun4_X11r3.Keyboard;

            when Xsun4_X11r3_Sparc =>
                return Sun4_X11r3_Sparc.Keyboard;

            when Xnews3_V2_0 =>
                return News3_V2_0.Keyboard;

            when Xnews3_V2_0_Sparc =>
                return News3_V2_0_Sparc.Keyboard;

            when Xnews4_V2_0 =>
                return News4_V2_0.Keyboard;

            when Xnews4_V2_0_Sparc =>
                return News4_V2_0_Sparc.Keyboard;

----IBM

            when Xr6us_Aix3_1 =>
                return R6us_Aix3_1.Keyboard;

----DEC

            when Xdecus_Vms5_1_Multinet203 =>
                return Decus_Vms5_1_Multinet203.Keyboard;

            when Xdecus_Vms5_1_Wollongong502 =>
                return Decus_Vms5_1_Wollongong502.Keyboard;

----HP

            when Xhp46021a_Hpux7_0 =>
                return Hp46021a_Hpux7_0.Keyboard;

----APOLLO

            when Xapollo3_Sr10_2_Unix =>
                return Apollo3_Sr10_2_Unix.Keyboard;

            when Xapollom_Sr10_2_Unix =>
                return Apollom_Sr10_2_Unix.Keyboard;

----NCD

            when Xncd_Sun_X11r3 =>
                return Ncd_R1000.Keyboard_Sun_X11r3;

            when Xncd_Sun_X11r3_Sparc =>
                return Ncd_R1000.Keyboard_Sun_X11r3_Sparc;

            when Xncd_Xnews_V2_0 =>
                return Ncd_R1000.Keyboard_Xnews_V2_0;

            when Xncd_Xnews_V2_0_Sparc =>
                return Ncd_R1000.Keyboard_Xnews_V2_0_Sparc;

            when Xncd_Aix3_1 =>
                return Ncd_R1000.Keyboard_Aix3_1;

            when Xncd_Vms5_1_Multinet203 =>
                return Ncd_R1000.Keyboard_Vms5_1_Multinet203;

            when Xncd_Vms5_1_Wollongong502 =>
                return Ncd_R1000.Keyboard_Vms5_1_Wollongong502;

            when Xncd_Hpux7_0 =>
                return Ncd_R1000.Keyboard_Hpux7_0;

            when Xncd_Sr10_2_Unix =>
                return Ncd_R1000.Keyboard_Sr10_2_Unix;

        end case;

    end Supported_Keyboards;

--\x0c
    function Recognition_File (Terminal : Terminal_Type) return File_Info is
    begin
        case Terminal is

----SUN

            when Xsun3_X11r3 | Xncd_Sun_X11r3 =>  
                return Sun3_X11r3.Recognition;

            when Xsun3_X11r3_Sparc | Xncd_Sun_X11r3_Sparc =>  
                return Sun3_X11r3_Sparc.Recognition;

            when Xsun4_X11r3 =>
                return Sun4_X11r3.Recognition;

            when Xsun4_X11r3_Sparc =>
                return Sun4_X11r3_Sparc.Recognition;

            when Xnews3_V2_0 | Xncd_Xnews_V2_0 =>
                return News3_V2_0.Recognition;

            when Xnews3_V2_0_Sparc | Xncd_Xnews_V2_0_Sparc =>
                return News3_V2_0_Sparc.Recognition;

            when Xnews4_V2_0 =>
                return News4_V2_0.Recognition;

            when Xnews4_V2_0_Sparc =>
                return News4_V2_0_Sparc.Recognition;

----IBM

            when Xr6us_Aix3_1 | Xncd_Aix3_1 =>
                return R6us_Aix3_1.Recognition;

----DEC

            when Xdecus_Vms5_1_Multinet203 | Xncd_Vms5_1_Multinet203 =>
                return Decus_Vms5_1_Multinet203.Recognition;

            when Xdecus_Vms5_1_Wollongong502 | Xncd_Vms5_1_Wollongong502 =>
                return Decus_Vms5_1_Wollongong502.Recognition;

----HP

            when Xhp46021a_Hpux7_0 | Xncd_Hpux7_0 =>
                return Hp46021a_Hpux7_0.Recognition;

----APOLLO

            when Xapollo3_Sr10_2_Unix | Xncd_Sr10_2_Unix =>
                return Apollo3_Sr10_2_Unix.Recognition;
            when Xapollom_Sr10_2_Unix =>
                return Apollom_Sr10_2_Unix.Recognition;

----NCD -- see above.

        end case;

    end Recognition_File;

--\x0c
    function Source_Length (Terminal : Terminal_Type) return Natural is
    begin
        case Terminal is

----SUN

            when Xsun3_X11r3 | Xncd_Sun_X11r3 =>
                return Sun3_X11r3.Source'Length;

            when Xsun3_X11r3_Sparc | Xncd_Sun_X11r3_Sparc =>
                return Sun3_X11r3_Sparc.Source'Length;

            when Xsun4_X11r3 =>
                return Sun4_X11r3.Source'Length;

            when Xsun4_X11r3_Sparc =>
                return Sun4_X11r3_Sparc.Source'Length;

            when Xnews3_V2_0 | Xncd_Xnews_V2_0 =>
                return News3_V2_0.Source'Length;

            when Xnews3_V2_0_Sparc | Xncd_Xnews_V2_0_Sparc =>
                return News3_V2_0_Sparc.Source'Length;

            when Xnews4_V2_0 =>
                return News4_V2_0.Source'Length;

            when Xnews4_V2_0_Sparc =>
                return News4_V2_0_Sparc.Source'Length;

----IBM

            when Xr6us_Aix3_1 | Xncd_Aix3_1 =>
                return R6us_Aix3_1.Source'Length;

----DEC

            when Xdecus_Vms5_1_Multinet203 | Xncd_Vms5_1_Multinet203 =>
                return Decus_Vms5_1_Multinet203.Source'Length;

            when Xdecus_Vms5_1_Wollongong502 | Xncd_Vms5_1_Wollongong502 =>
                return Decus_Vms5_1_Wollongong502.Source'Length;

----HP

            when Xhp46021a_Hpux7_0 | Xncd_Hpux7_0 =>
                return Hp46021a_Hpux7_0.Source'Length;

----APOLLO

            when Xapollo3_Sr10_2_Unix | Xncd_Sr10_2_Unix =>
                return Apollo3_Sr10_2_Unix.Source'Length;

            when Xapollom_Sr10_2_Unix =>
                return Apollom_Sr10_2_Unix.Source'Length;

----NCD -- see above.

        end case;

    end Source_Length;

--\x0c
    function Install_Length (Terminal : Terminal_Type) return Natural is
    begin
        case Terminal is

----SUN

            when Xsun3_X11r3 | Xncd_Sun_X11r3 =>
                return Sun3_X11r3.Install'Length;

            when Xsun3_X11r3_Sparc | Xncd_Sun_X11r3_Sparc =>
                return Sun3_X11r3_Sparc.Install'Length;

            when Xsun4_X11r3 =>
                return Sun4_X11r3.Install'Length;

            when Xsun4_X11r3_Sparc =>
                return Sun4_X11r3_Sparc.Install'Length;

            when Xnews3_V2_0 | Xncd_Xnews_V2_0 =>
                return News3_V2_0.Install'Length;

            when Xnews3_V2_0_Sparc | Xncd_Xnews_V2_0_Sparc =>
                return News3_V2_0_Sparc.Install'Length;

            when Xnews4_V2_0 =>
                return News4_V2_0.Install'Length;

            when Xnews4_V2_0_Sparc =>
                return News4_V2_0_Sparc.Install'Length;

----IBM

            when Xr6us_Aix3_1 | Xncd_Aix3_1 =>
                return R6us_Aix3_1.Install'Length;

----DEC

            when Xdecus_Vms5_1_Multinet203 | Xncd_Vms5_1_Multinet203 =>
                return Decus_Vms5_1_Multinet203.Install'Length;

            when Xdecus_Vms5_1_Wollongong502 | Xncd_Vms5_1_Wollongong502 =>
                return Decus_Vms5_1_Wollongong502.Install'Length;

----HP

            when Xhp46021a_Hpux7_0 | Xncd_Hpux7_0 =>
                return Hp46021a_Hpux7_0.Install'Length;

----APOLLO

            when Xapollo3_Sr10_2_Unix | Xncd_Sr10_2_Unix =>
                return Apollo3_Sr10_2_Unix.Install'Length;

            when Xapollom_Sr10_2_Unix =>
                return Apollom_Sr10_2_Unix.Install'Length;

----NCD -- see above.

        end case;

    end Install_Length;

--\x0c
    function Source (Terminal : Terminal_Type;  
                     File_No  : Positive) return File_Info is
    begin
        case Terminal is

----SUN

            when Xsun3_X11r3 | Xncd_Sun_X11r3 =>
                return Sun3_X11r3.Source (File_No);

            when Xsun3_X11r3_Sparc | Xncd_Sun_X11r3_Sparc =>
                return Sun3_X11r3_Sparc.Source (File_No);

            when Xsun4_X11r3 =>
                return Sun4_X11r3.Source (File_No);

            when Xsun4_X11r3_Sparc =>
                return Sun4_X11r3_Sparc.Source (File_No);

            when Xnews3_V2_0 | Xncd_Xnews_V2_0 =>
                return News3_V2_0.Source (File_No);

            when Xnews3_V2_0_Sparc | Xncd_Xnews_V2_0_Sparc =>
                return News3_V2_0_Sparc.Source (File_No);

            when Xnews4_V2_0 =>
                return News4_V2_0.Source (File_No);

            when Xnews4_V2_0_Sparc =>
                return News4_V2_0_Sparc.Source (File_No);

----IBM

            when Xr6us_Aix3_1 | Xncd_Aix3_1 =>
                return R6us_Aix3_1.Source (File_No);

----DEC

            when Xdecus_Vms5_1_Multinet203 | Xncd_Vms5_1_Multinet203 =>
                return Decus_Vms5_1_Multinet203.Source (File_No);

            when Xdecus_Vms5_1_Wollongong502 | Xncd_Vms5_1_Wollongong502 =>
                return Decus_Vms5_1_Wollongong502.Source (File_No);

----HP

            when Xhp46021a_Hpux7_0 | Xncd_Hpux7_0 =>
                return Hp46021a_Hpux7_0.Source (File_No);

----APOLLO

            when Xapollo3_Sr10_2_Unix | Xncd_Sr10_2_Unix =>
                return Apollo3_Sr10_2_Unix.Source (File_No);

            when Xapollom_Sr10_2_Unix =>
                return Apollom_Sr10_2_Unix.Source (File_No);

----NCD -- see above.

        end case;

    end Source;

--\x0c
    function Install (Terminal : Terminal_Type;  
                      File_No  : Positive) return File_Info is
    begin
        case Terminal is

----SUN

            when Xsun3_X11r3 | Xncd_Sun_X11r3 =>
                return Sun3_X11r3.Install (File_No);

            when Xsun3_X11r3_Sparc | Xncd_Sun_X11r3_Sparc =>
                return Sun3_X11r3_Sparc.Install (File_No);

            when Xsun4_X11r3 =>
                return Sun4_X11r3.Install (File_No);

            when Xsun4_X11r3_Sparc =>
                return Sun4_X11r3_Sparc.Install (File_No);

            when Xnews3_V2_0 | Xncd_Xnews_V2_0 =>
                return News3_V2_0.Install (File_No);

            when Xnews3_V2_0_Sparc | Xncd_Xnews_V2_0_Sparc =>
                return News3_V2_0_Sparc.Install (File_No);

            when Xnews4_V2_0 =>
                return News4_V2_0.Install (File_No);

            when Xnews4_V2_0_Sparc =>
                return News4_V2_0_Sparc.Install (File_No);
---IBM

            when Xr6us_Aix3_1 | Xncd_Aix3_1 =>
                return R6us_Aix3_1.Install (File_No);

----DEC

            when Xdecus_Vms5_1_Multinet203 | Xncd_Vms5_1_Multinet203 =>
                return Decus_Vms5_1_Multinet203.Install (File_No);

            when Xdecus_Vms5_1_Wollongong502 | Xncd_Vms5_1_Wollongong502 =>
                return Decus_Vms5_1_Wollongong502.Install (File_No);

----HP

            when Xhp46021a_Hpux7_0 | Xncd_Hpux7_0 =>
                return Hp46021a_Hpux7_0.Install (File_No);

----APOLLO

            when Xapollo3_Sr10_2_Unix | Xncd_Sr10_2_Unix =>
                return Apollo3_Sr10_2_Unix.Install (File_No);

            when Xapollom_Sr10_2_Unix =>
                return Apollom_Sr10_2_Unix.Install (File_No);

----NCD -- see above.

        end case;

    end Install;

--\x0c
end Release;

E3 Meta Data

    nblk1=1e
    nid=0
    hdr6=3c
        [0x00] rec0=20 rec1=00 rec2=01 rec3=014
        [0x01] rec0=01 rec1=00 rec2=1e rec3=00a
        [0x02] rec0=16 rec1=00 rec2=02 rec3=014
        [0x03] rec0=00 rec1=00 rec2=1d rec3=018
        [0x04] rec0=1e rec1=00 rec2=03 rec3=012
        [0x05] rec0=01 rec1=00 rec2=1c rec3=00a
        [0x06] rec0=19 rec1=00 rec2=04 rec3=04a
        [0x07] rec0=03 rec1=00 rec2=1b rec3=00c
        [0x08] rec0=19 rec1=00 rec2=05 rec3=034
        [0x09] rec0=03 rec1=00 rec2=1a rec3=016
        [0x0a] rec0=1b rec1=00 rec2=06 rec3=00e
        [0x0b] rec0=00 rec1=00 rec2=19 rec3=044
        [0x0c] rec0=1e rec1=00 rec2=07 rec3=03a
        [0x0d] rec0=01 rec1=00 rec2=18 rec3=020
        [0x0e] rec0=17 rec1=00 rec2=08 rec3=02e
        [0x0f] rec0=00 rec1=00 rec2=17 rec3=02e
        [0x10] rec0=16 rec1=00 rec2=09 rec3=01e
        [0x11] rec0=02 rec1=00 rec2=16 rec3=002
        [0x12] rec0=25 rec1=00 rec2=0a rec3=01e
        [0x13] rec0=27 rec1=00 rec2=0b rec3=006
        [0x14] rec0=21 rec1=00 rec2=0c rec3=046
        [0x15] rec0=1f rec1=00 rec2=0d rec3=06c
        [0x16] rec0=27 rec1=00 rec2=0e rec3=00c
        [0x17] rec0=20 rec1=00 rec2=0f rec3=054
        [0x18] rec0=23 rec1=00 rec2=10 rec3=02e
        [0x19] rec0=20 rec1=00 rec2=11 rec3=06a
        [0x1a] rec0=23 rec1=00 rec2=12 rec3=066
        [0x1b] rec0=26 rec1=00 rec2=13 rec3=02c
        [0x1c] rec0=1f rec1=00 rec2=14 rec3=002
        [0x1d] rec0=22 rec1=00 rec2=15 rec3=000
    tail 0x2150025e0815772d9646b 0x42a00088462063203