|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 26624 (0x6800) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Config_Cl35, seg_051609
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─ ⟦5a81ac88f⟧ »Space Info Vol 1« └─⟦this⟧
with Horaire_68; with Ss_Zone_68; with Semaine_68; with Conversion; package body Config_Cl35 is package Par_68 renames Parametre_68; package Conv renames Conversion; Entete_Parametre : constant G_D.Byte := 16#22#; Entete_Site : constant G_D.Byte := 16#27#; Entete_Heure : constant G_D.Byte := 16#23#; Entete_Validation : constant G_D.Byte := 16#10#; Entete_Invalidation : constant G_D.Byte := 16#12#; Entete_Validation_Groupe : constant G_D.Byte := 16#11#; Entete_Invalidation_Groupe : constant G_D.Byte := 16#13#; Entete_Plage : constant G_D.Byte := 16#25#; Entete_Beep : constant G_D.Byte := 16#2C#; Entete_Demande_Evenement : constant G_D.Byte := 16#1D#; Entete_Ack : constant G_D.Byte := 16#06#; Entete_Nak : constant G_D.Byte := 16#15#; Entete_Demande_Parametre : constant G_D.Byte := 16#1E#; Entete_Demande_Carte_Valide : constant G_D.Byte := 16#1F#; Entete_Demande_Carte_Invalide : constant G_D.Byte := 16#29#; Entete_Demande_Horloge : constant G_D.Byte := 16#24#; Entete_Demande_Site : constant G_D.Byte := 16#28#; Entete_Mise_En_Veille : constant G_D.Byte := 16#2A#; Entete_Mise_En_Service : constant G_D.Byte := 16#2B#; Entete_Pilotage_1 : constant G_D.Byte := 16#2C#; Activation_Apb : constant G_D.Byte := 16#16#; Desactivation_Apb : constant G_D.Byte := 16#17#; Lecteur_En_Veille : constant G_D.Byte := 16#18#; Lecteur_En_Service : constant G_D.Byte := 16#19#; Bp_Sur_Entree_Tor : constant G_D.Byte := 16#1A#; Boucle_Sur_Entree_Tor : constant G_D.Byte := 16#1B#; Contact_Porte_Sur_Entree_Tor : constant G_D.Byte := 16#1C#; Tous_Evenement : constant G_D.Byte := 16#20#; Anomalie_Seulement : constant G_D.Byte := 16#21#; Status_Coupure_Secteur : constant G_D.Byte := 16#00#; Status_Carte_Acceptee : constant G_D.Byte := 16#30#; Status_Carte_Refusee_Veille : constant G_D.Byte := 16#31#; Status_Carte_Refusee_Site : constant G_D.Byte := 16#32#; Status_Carte_Refusee_Prog : constant G_D.Byte := 16#33#; Status_Carte_Refusee_Apb : constant G_D.Byte := 16#34#; Status_Carte_Refusee_Plage : constant G_D.Byte := 16#35#; function Cl35_Parametre (Lecteur : Lecteur_68.Object) return G_D.Byte_String is Data : G_D.Byte_String (1 .. 9); Parametre : Par_68.Object; begin Data (1) := Conv.Nat_To_Byte (Lecteur_68.Get_Numero (Lecteur)); Data (2) := Conv.Nat_To_Byte (0); Data (3) := Conv.Nat_To_Byte (6); Data (4) := Entete_Parametre; Parametre := Lecteur_68.Get_Parametre (Lecteur); Data (5) := G_D.Byte'Val (Par_68.T_Tempo'Pos (Par_68.Get_Tempo (Parametre))); if Par_68.T_Apb'Pos (Par_68.Get_Apb (Parametre)) = Par_68.T_Apb'Pos (Par_68.Actif) then Data (6) := Activation_Apb; else Data (6) := Desactivation_Apb; end if; if Par_68.T_Veille'Pos (Par_68.Get_Veille (Parametre)) = Par_68.T_Veille'Pos (Par_68.En_Service) then Data (7) := Lecteur_En_Service; else Data (7) := Lecteur_En_Veille; end if; case Par_68.T_Entree_Tor'Pos (Par_68.Get_Entree_Tor (Parametre)) is when Par_68.T_Entree_Tor'Pos (Par_68.Contact) => Data (8) := Contact_Porte_Sur_Entree_Tor; when Par_68.T_Entree_Tor'Pos (Par_68.Boucle) => Data (8) := Boucle_Sur_Entree_Tor; when Par_68.T_Entree_Tor'Pos (Par_68.Bp) => Data (8) := Bp_Sur_Entree_Tor; when others => null; end case; if Par_68.T_Evenement'Pos (Par_68.Get_Evenement (Parametre)) = Par_68.T_Evenement'Pos (Par_68.Tous) then Data (9) := Tous_Evenement; else Data (9) := Anomalie_Seulement; end if; return Data; end Cl35_Parametre; function Cl35_Site (Lecteur : Lecteur_68.Object) return G_D.Byte_String is Site : Site_68.Object; S : G_D.Byte_String (1 .. 7); Numero : Natural; begin Site := Lecteur_68.Get_Site (Lecteur); S (1) := Conversion.Nat_To_Byte (Lecteur_68.Get_Numero (Lecteur)); S (2) := Conversion.Nat_To_Byte (0); S (3) := Conversion.Nat_To_Byte (4); S (4) := Entete_Site; Numero := Site_68.Get_Numero (Site); S (7) := Conversion.Nat_To_Byte (Numero mod 100); Numero := Numero / 100; S (6) := Conversion.Nat_To_Byte (Numero mod 100); S (5) := Conversion.Nat_To_Byte (Numero / 100); return S; end Cl35_Site; function Cl35_Jjhhmm (Lecteur : Lecteur_68.Object; Jjhhmm : Jj_Hh_Mm_68.Object) return G_D.Byte_String is S : G_D.Byte_String (1 .. 7); Horaire : Horaire_68.Object; begin S (1) := Conversion.Nat_To_Byte (Lecteur_68.Get_Numero (Lecteur)); S (2) := Conversion.Nat_To_Byte (0); S (3) := Conversion.Nat_To_Byte (4); S (4) := Entete_Heure; Horaire := Jj_Hh_Mm_68.Get_Horaire (Jjhhmm); S (5) := Conversion.Nat_To_Byte (Horaire_68.Get_Heure (Horaire)); S (6) := Conversion.Nat_To_Byte (Horaire_68.Get_Minute (Horaire)); S (7) := Conversion.Nat_To_Byte (Jj_Hh_Mm_68.T_Jour'Pos (Jj_Hh_Mm_68.Get_Jour (Jjhhmm)) - Jj_Hh_Mm_68.T_Jour'Pos (Jj_Hh_Mm_68.T_Jour'First) + 1); return S; end Cl35_Jjhhmm; function Num_Carte (Carte : Carte_68.Object) return G_D.Byte_String is S : G_D.Byte_String (1 .. 2); begin S (1) := Conversion.Nat_To_Byte (Carte_68.Get_Numero (Carte) / 100); S (2) := Conversion.Nat_To_Byte (Carte_68.Get_Numero (Carte) mod 100); return S; end Num_Carte; function Num_Plage (Plage : Plage_68.Object) return G_D.Byte_String is S : G_D.Byte_String (1 .. 1); begin S (1) := Conversion.Nat_To_Byte (Plage_68.Get_Numero (Plage)); return S; end Num_Plage; function Cl35_Valide_Carte (Carte : Carte_68.Object; Plage : Plage_68.Object; Lecteur : Lecteur_68.Object) return G_D.Byte_String is S : G_D.Byte_String (1 .. 4); begin S (1) := Conversion.Nat_To_Byte (Lecteur_68.Get_Numero (Lecteur)); S (2) := Conversion.Nat_To_Byte (0); S (3) := Conversion.Nat_To_Byte (4); S (4) := Entete_Validation; declare S2 : constant G_D.Byte_String := Conversion.Concat (S, Num_Carte (Carte)); begin return Conversion.Concat (S2, Num_Plage (Plage)); end; end Cl35_Valide_Carte; function Cl35_Invalide_Carte (Carte : Carte_68.Object; Plage : Plage_68.Object; Lecteur : Lecteur_68.Object) return G_D.Byte_String is S : G_D.Byte_String (1 .. 4); begin S (1) := Conversion.Nat_To_Byte (Lecteur_68.Get_Numero (Lecteur)); S (2) := Conversion.Nat_To_Byte (0); S (3) := Conversion.Nat_To_Byte (3); S (4) := Entete_Invalidation; return Conversion.Concat (S, Num_Carte (Carte)); end Cl35_Invalide_Carte; function Cl35_Semaine (Semaine : Semaine_68.Object) return G_D.Byte is N : Natural := 0; begin for I in Semaine_68.T_Jour_Semaine'First .. Semaine_68.T_Jour_Semaine'Last loop N := N * 2; if Semaine_68.Jour_Is_In (Semaine, I) then N := N + 1; end if; end loop; return Conversion.Nat_To_Byte (N); end Cl35_Semaine; function Cl35_Sous_Zone (Ss_Zone : Ss_Zone_68.Object) return G_D.Byte_String is S : G_D.Byte_String (1 .. 9); begin S (1) := Conversion.Nat_To_Byte (Horaire_68.Get_Heure (Ss_Zone_68.Get_Deb_1 (Ss_Zone))); S (2) := Conversion.Nat_To_Byte (Horaire_68.Get_Minute (Ss_Zone_68.Get_Deb_1 (Ss_Zone))); S (3) := Conversion.Nat_To_Byte (Horaire_68.Get_Heure (Ss_Zone_68.Get_Fin_1 (Ss_Zone))); S (4) := Conversion.Nat_To_Byte (Horaire_68.Get_Minute (Ss_Zone_68.Get_Fin_1 (Ss_Zone))); S (5) := Conversion.Nat_To_Byte (Horaire_68.Get_Heure (Ss_Zone_68.Get_Deb_2 (Ss_Zone))); S (6) := Conversion.Nat_To_Byte (Horaire_68.Get_Minute (Ss_Zone_68.Get_Deb_2 (Ss_Zone))); S (7) := Conversion.Nat_To_Byte (Horaire_68.Get_Heure (Ss_Zone_68.Get_Fin_2 (Ss_Zone))); S (8) := Conversion.Nat_To_Byte (Horaire_68.Get_Minute (Ss_Zone_68.Get_Fin_2 (Ss_Zone))); S (9) := Cl35_Semaine (Ss_Zone_68.Get_Jour_Sem (Ss_Zone)); return S; end Cl35_Sous_Zone; function Cl35_Plage (Lecteur : Lecteur_68.Object; Plage : Plage_68.Object) return G_D.Byte_String is S : G_D.Byte_String (1 .. 32); begin S (1) := Conversion.Nat_To_Byte (Lecteur_68.Get_Numero (Lecteur)); S (2) := Conversion.Nat_To_Byte (0); S (3) := Conversion.Nat_To_Byte (17); S (4) := Entete_Plage; S (5) := Conversion.Nat_To_Byte (Plage_68.Get_Numero (Plage)); S (6 .. 14) := Cl35_Sous_Zone (Plage_68.Get_Periode_1 (Plage)); S (15 .. 23) := Cl35_Sous_Zone (Plage_68.Get_Periode_2 (Plage)); S (24 .. 32) := Cl35_Sous_Zone (Plage_68.Get_Periode_3 (Plage)); return S; end Cl35_Plage; function Cl35_Commande (Lecteur : Lecteur_68.Object; Entete : G_D.Byte) return G_D.Byte_String is S : G_D.Byte_String (1 .. 4); begin S (1) := Conversion.Nat_To_Byte (Lecteur_68.Get_Numero (Lecteur)); S (2) := Conversion.Nat_To_Byte (0); S (3) := Conversion.Nat_To_Byte (1); S (4) := Entete; return S; end Cl35_Commande; function Cl35_Demande_Evenement (Lecteur : Lecteur_68.Object) return G_D.Byte_String is begin return Cl35_Commande (Lecteur, Entete_Demande_Evenement); end Cl35_Demande_Evenement; function Cl35_Beep (Lecteur : Lecteur_68.Object) return G_D.Byte_String is begin return Cl35_Commande (Lecteur, Entete_Beep); end Cl35_Beep; function Cl35_Demande_Parametre (Lecteur : Lecteur_68.Object) return G_D.Byte_String is begin return Cl35_Commande (Lecteur, Entete_Demande_Parametre); end Cl35_Demande_Parametre; function Cl35_Demande_Carte_Valide (Lecteur : Lecteur_68.Object) return G_D.Byte_String is begin return Cl35_Commande (Lecteur, Entete_Demande_Carte_Valide); end Cl35_Demande_Carte_Valide; function Cl35_Demande_Carte_Invalide (Lecteur : Lecteur_68.Object) return G_D.Byte_String is begin return Cl35_Commande (Lecteur, Entete_Demande_Carte_Invalide); end Cl35_Demande_Carte_Invalide; function Cl35_Demande_Horloge (Lecteur : Lecteur_68.Object) return G_D.Byte_String is begin return Cl35_Commande (Lecteur, Entete_Demande_Horloge); end Cl35_Demande_Horloge; function Cl35_Demande_Site (Lecteur : Lecteur_68.Object) return G_D.Byte_String is begin return Cl35_Commande (Lecteur, Entete_Demande_Site); end Cl35_Demande_Site; function Cl35_En_Veille (Lecteur : Lecteur_68.Object) return G_D.Byte_String is begin return Cl35_Commande (Lecteur, Entete_Mise_En_Veille); end Cl35_En_Veille; function Cl35_En_Service (Lecteur : Lecteur_68.Object) return G_D.Byte_String is begin return Cl35_Commande (Lecteur, Entete_Mise_En_Service); end Cl35_En_Service; function Cl35_Ack (Lecteur : Lecteur_68.Object) return G_D.Byte_String is begin return Cl35_Commande (Lecteur, Entete_Ack); end Cl35_Ack; function Cl35_Nak (Lecteur : Lecteur_68.Object) return G_D.Byte_String is begin return Cl35_Commande (Lecteur, Entete_Nak); end Cl35_Nak; function Cl35_Pilotage_1 (Lecteur : Lecteur_68.Object) return G_D.Byte_String is begin return Cl35_Commande (Lecteur, Entete_Pilotage_1); end Cl35_Pilotage_1; function Cl35_Valide_Groupe_Carte (De_La_Carte, A_La_Carte : Carte_68.Object; Plage : Plage_68.Object; Lecteur : Lecteur_68.Object) return G_D.Byte_String is S : G_D.Byte_String (1 .. 4); begin S (1) := Conversion.Nat_To_Byte (Lecteur_68.Get_Numero (Lecteur)); S (2) := Conversion.Nat_To_Byte (0); S (3) := Conversion.Nat_To_Byte (6); S (4) := Entete_Validation_Groupe; return Conversion.Concat (S, Conversion.Concat (Num_Carte (De_La_Carte), Conversion.Concat (Num_Carte (A_La_Carte), Num_Plage (Plage)))); end Cl35_Valide_Groupe_Carte; function Cl35_Invalide_Groupe_Carte (De_La_Carte, A_La_Carte : Carte_68.Object; Plage : Plage_68.Object; Lecteur : Lecteur_68.Object) return G_D.Byte_String is S : G_D.Byte_String (1 .. 4); begin S (1) := Conversion.Nat_To_Byte (Lecteur_68.Get_Numero (Lecteur)); S (2) := Conversion.Nat_To_Byte (0); S (3) := Conversion.Nat_To_Byte (5); S (4) := Entete_Invalidation_Groupe; return Conversion.Concat (S, Conversion.Concat (Num_Carte (De_La_Carte), Num_Carte (A_La_Carte))); end Cl35_Invalide_Groupe_Carte; function Get_Type_Rapport (Bs : G_D.Byte_String) return G_D.Byte is begin return Bs (Bs'First + 3); end Get_Type_Rapport; function Get_Lecteur_Rapport (Bs : G_D.Byte_String) return Lecteur_68.T_Lecteur is begin return Conversion.Byte_To_Nat (Bs (Bs'First)); end Get_Lecteur_Rapport; function Get_Size_Rapport (Bs : G_D.Byte_String) return Natural is begin return Conversion.Byte_To_Nat (Bs (Bs'First + 1)) * 100 + Conversion.Byte_To_Nat (Bs (Bs'First + 2)); end Get_Size_Rapport; function Get_Data_Rapport (Bs : G_D.Byte_String) return G_D.Byte_String is S : G_D.Byte_String (1 .. 0); begin if Bs'Length < 4 then return S; else return Bs (Bs'First + 4 .. Bs'Last); end if; end Get_Data_Rapport; function Get_Parametre (Data : G_D.Byte_String) return Parametre_68.Object is O : Parametre_68.Object; begin Parametre_68.Set_Tempo (O, Conversion.Byte_To_Nat (Data (Data'First))); case Data (Data'First + 1) is when Activation_Apb => Parametre_68.Set_Apb (O, Parametre_68.Actif); when Desactivation_Apb => Parametre_68.Set_Apb (O, Parametre_68.Inactif); when others => raise Rapport_Error; end case; case Data (Data'First + 2) is when Lecteur_En_Veille => Parametre_68.Set_Veille (O, Parametre_68.En_Veille); when Lecteur_En_Service => Parametre_68.Set_Veille (O, Parametre_68.En_Service); when others => raise Rapport_Error; end case; case Data (Data'First + 3) is when Bp_Sur_Entree_Tor => Parametre_68.Set_Entree_Tor (O, Parametre_68.Bp); when Boucle_Sur_Entree_Tor => Parametre_68.Set_Entree_Tor (O, Parametre_68.Boucle); when Contact_Porte_Sur_Entree_Tor => Parametre_68.Set_Entree_Tor (O, Parametre_68.Contact); when others => raise Rapport_Error; end case; case Data (Data'First + 4) is when Tous_Evenement => Parametre_68.Set_Evenement (O, Parametre_68.Tous); when Anomalie_Seulement => Parametre_68.Set_Evenement (O, Parametre_68.Anomalies); when others => raise Rapport_Error; end case; return O; end Get_Parametre; function Get_Site (Data : G_D.Byte_String) return Site_68.Object is O : Site_68.Object; begin Site_68.Set_Numero (O, Conversion.Byte_To_Nat (Data (Data'First)) * 10_000 + Conversion.Byte_To_Nat (Data (Data'First + 1)) * 100 + Conversion.Byte_To_Nat (Data (Data'First + 2))); return O; end Get_Site; function Get_Jjhhmm (Data : G_D.Byte_String) return Jj_Hh_Mm_68.Object is O : Jj_Hh_Mm_68.Object; J : Jj_Hh_Mm_68.T_Jour; begin J := Jj_Hh_Mm_68.T_Jour'First; for I in 2 .. Conversion.Byte_To_Nat (Data (Data'First + 2)) loop J := Jj_Hh_Mm_68.T_Jour'Succ (J); end loop; Jj_Hh_Mm_68.Create (O => O, Jour => J, Heure => Conversion.Byte_To_Nat (Data (Data'First)), Minute => Conversion.Byte_To_Nat (Data (Data'First + 1))); return O; end Get_Jjhhmm; function Get_Periode (Data : G_D.Byte_String) return Horaire_68.Object is O : Horaire_68.Object; begin Horaire_68.Create (O => O, Heure => Conversion.Byte_To_Nat (Data (Data'First)), Minute => Conversion.Byte_To_Nat (Data (Data'First + 1))); return O; end Get_Periode; function Get_Semaine (Data : G_D.Byte) return Semaine_68.Object is O : Semaine_68.Object; N : Natural; begin Semaine_68.Create_Semaine_Vide (O); N := Conversion.Byte_To_Nat (Data); for I in reverse Semaine_68.T_Jour_Semaine'First .. Semaine_68.T_Jour_Semaine'Last loop if (N mod 2) = 1 then Semaine_68.Ajout_Jour (O, I); end if; N := N / 2; end loop; return O; end Get_Semaine; function Get_Ss_Zone (Data : G_D.Byte_String) return Ss_Zone_68.Object is O : Ss_Zone_68.Object; begin Ss_Zone_68.Create (O => O, Deb_1 => Get_Periode (Data (Data'First .. Data'First + 1)), Fin_1 => Get_Periode (Data (Data'First + 2 .. Data'First + 3)), Deb_2 => Get_Periode (Data (Data'First + 4 .. Data'First + 5)), Fin_2 => Get_Periode (Data (Data'First + 6 .. Data'First + 7)), Jour_Sem => Get_Semaine (Data (Data'First + 8))); return O; end Get_Ss_Zone; function Get_Plage (Data : G_D.Byte_String) return Plage_68.Object is O : Plage_68.Object; begin Plage_68.Create (O => O, Numero => Conversion.Byte_To_Nat (Data (Data'First)), Zone => 1, Per_1 => Get_Ss_Zone (Data (Data'First + 1 .. Data'First + 9)), Per_2 => Get_Ss_Zone (Data (Data'First + 10 .. Data'First + 18)), Per_3 => Get_Ss_Zone (Data (Data'First + 19 .. Data'First + 27))); return O; end Get_Plage; procedure Get_Carte (Data : G_D.Byte_String; De_La_Carte, A_La_Carte : in out Carte_68.Object; Indice_Fin : in out Natural) is begin Carte_68.Create (O => De_La_Carte, Numero => Conversion.Byte_To_Nat (Data (Data'First)) * 100 + Conversion.Byte_To_Nat (Data (Data'First + 1))); Carte_68.Create (O => A_La_Carte, Numero => Conversion.Byte_To_Nat (Data (Data'First + 2)) * 100 + Conversion.Byte_To_Nat (Data (Data'First + 3))); Indice_Fin := Data'First + 3; end Get_Carte; procedure Get_Evenement (Data : G_D.Byte_String; Lecteur : Lecteur_68.T_Lecteur; Evenement : in out Evenement_68.Object; Indice_Fin : in out Natural) is O : Jj_Hh_Mm_68.Object; Jour : Jj_Hh_Mm_68.T_Jour; Statut : Evenement_68.T_Statut; Tete : Evenement_68.T_Tete; begin Jour := Jj_Hh_Mm_68.T_Jour'Val (Jj_Hh_Mm_68.T_Jour'Pos (Jj_Hh_Mm_68.T_Jour'First) + Conversion.Byte_To_Nat (Data (Data'First + 2)) - 1); Jj_Hh_Mm_68.Create (O => O, Jour => Jour, Heure => Conversion.Byte_To_Nat (Data (Data'First)), Minute => Conversion.Byte_To_Nat (Data (Data'First + 1))); case Conversion.Byte_To_Nat (Data (Data'First + 5)) is when 0 => Tete := Evenement_68.Tete_Principale; when 1 => Tete := Evenement_68.Tete_Auxiliaire; when others => raise Rapport_Error; end case; case Data (Data'First + 6) is when Status_Coupure_Secteur => Statut := Evenement_68.Coupure_Secteur; when Status_Carte_Acceptee => Statut := Evenement_68.Carte_Acceptee; when Status_Carte_Refusee_Veille => Statut := Evenement_68.Carte_Refusee_Veille; when Status_Carte_Refusee_Site => Statut := Evenement_68.Carte_Refusee_Site; when Status_Carte_Refusee_Prog => Statut := Evenement_68.Carte_Refusee_Prog; when Status_Carte_Refusee_Apb => Statut := Evenement_68.Carte_Refusee_Apb; when Status_Carte_Refusee_Plage => Statut := Evenement_68.Carte_Refusee_Plage; when others => raise Rapport_Error; end case; Evenement_68.Create (O => Evenement, Lecteur => Lecteur, Carte => Conversion.Byte_To_Nat (Data (Data'First + 3)) * 100 + Conversion.Byte_To_Nat (Data (Data'First + 4)), Statut => Statut, Jjhhmm => O, Tete => Tete); Indice_Fin := Data'First + 6; end Get_Evenement; end Config_Cl35;
nblk1=19 nid=0 hdr6=32 [0x00] rec0=1a rec1=00 rec2=01 rec3=04c [0x01] rec0=14 rec1=00 rec2=12 rec3=002 [0x02] rec0=19 rec1=00 rec2=17 rec3=048 [0x03] rec0=1a rec1=00 rec2=11 rec3=00e [0x04] rec0=1f rec1=00 rec2=0d rec3=07e [0x05] rec0=16 rec1=00 rec2=0e rec3=048 [0x06] rec0=1e rec1=00 rec2=08 rec3=00c [0x07] rec0=1d rec1=00 rec2=07 rec3=03c [0x08] rec0=12 rec1=00 rec2=06 rec3=01e [0x09] rec0=14 rec1=00 rec2=05 rec3=08e [0x0a] rec0=1c rec1=00 rec2=15 rec3=010 [0x0b] rec0=1b rec1=00 rec2=0f rec3=044 [0x0c] rec0=1c rec1=00 rec2=02 rec3=02e [0x0d] rec0=18 rec1=00 rec2=04 rec3=04c [0x0e] rec0=19 rec1=00 rec2=03 rec3=018 [0x0f] rec0=1c rec1=00 rec2=09 rec3=01a [0x10] rec0=03 rec1=00 rec2=19 rec3=020 [0x11] rec0=1a rec1=00 rec2=0a rec3=036 [0x12] rec0=1d rec1=00 rec2=0b rec3=010 [0x13] rec0=1c rec1=00 rec2=0c rec3=02e [0x14] rec0=1c rec1=00 rec2=10 rec3=028 [0x15] rec0=15 rec1=00 rec2=16 rec3=002 [0x16] rec0=19 rec1=00 rec2=14 rec3=020 [0x17] rec0=17 rec1=00 rec2=13 rec3=002 [0x18] rec0=0f rec1=00 rec2=18 rec3=000 tail 0x2154b4476879a5b83573a 0x42a00088462060003