|
|
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 - metrics - download
Length: 37888 (0x9400)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Bloc, seg_0392a7, seg_03932b, seg_039344
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦5a81ac88f⟧ »Space Info Vol 1«
└─⟦this⟧
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦cfc2e13cd⟧ »Space Info Vol 2«
└─⟦this⟧
with List_Generic;
with Text_Io;
package body Bloc is
Maxi : constant := 255;
type Vue_Scene is
record
Nom : Symbole;
Vue : Pbloc := null;
end record;
type Vue_Bloc_Trie is
record
Offset_Global : Integer := -1;
Vue : Pbloc := null;
end record;
package Liste_Offset_Globaux is new List_Generic (Vue_Bloc_Trie);
package Liste_Offset_Trie is new List_Generic (Vue_Bloc_Trie);
La_Liste_Offset_Globaux : Liste_Offset_Globaux.List;
La_Liste_Offset_Trie : Liste_Offset_Trie.List;
Un_Iter_Prive : Liste_Offset_Globaux.Iterator;
Pere_Existe : Boolean := False;
Liste_Nombre : Boolean;
La_Liste_De_Nombre : Liste (False);
La_Liste_De_Symbole : Liste (True);
Compteur_Element : Integer;
Vue_Liste_Action : Pgrande_Liste := null;
Vue_Bloc_Pere : Pbloc := null;
Vue_Courante : Pbloc := null;
Memo_Bloc_Courant : array (1 .. Maxi) of Pbloc;
Table_Vue_Scene : array (1 .. Maxi) of Vue_Scene;
Index_Scene : Integer range 1 .. Maxi := 1;
Filtre : Symbole;
procedure Ajouter is
begin
La_Liste_Offset_Globaux :=
Liste_Offset_Globaux.Make
(Vue_Bloc_Trie'(Vue => Vue_Courante, Offset_Global => 0),
La_Liste_Offset_Globaux);
end Ajouter;
function Va_Bloc_Pere return Boolean is
begin
if Vue_Courante.Le_Pere /= null then
Vue_Courante := Vue_Courante.Le_Pere;
return True;
else
return False;
end if;
end Va_Bloc_Pere;
function Va_Bloc_Frere_Cadet return Boolean is
begin
if Vue_Courante.Le_Frere_Cadet /= null then
Vue_Courante := Vue_Courante.Le_Frere_Cadet;
return True;
else
return False;
end if;
end Va_Bloc_Frere_Cadet;
function Va_Bloc_Frere_Aine return Boolean is
begin
if Vue_Courante.Le_Frere_Aine /= null then
Vue_Courante := Vue_Courante.Le_Frere_Aine;
return True;
else
return False;
end if;
end Va_Bloc_Frere_Aine;
function Nouveau_Pere return Boolean is
begin
if Vue_Bloc_Pere = null then
Vue_Bloc_Pere := new Le_Bloc;
Vue_Bloc_Pere.Dernier_Bloc := False;
Vue_Courante := Vue_Bloc_Pere;
Liste_Offset_Globaux.Free (La_Liste_Offset_Globaux);
La_Liste_Offset_Globaux :=
Liste_Offset_Globaux.Make
(Vue_Bloc_Trie'(Vue => Vue_Courante, Offset_Global => 0),
La_Liste_Offset_Globaux);
return True;
else
return False;
end if;
end Nouveau_Pere;
function Nouveau_Bloc_Frere_Aine return Boolean is --ajout d'un aine
Ok : Boolean := False;
begin
if Vue_Courante.Le_Frere_Aine = null then
Vue_Courante.Dernier_Bloc := False;
Vue_Courante.Le_Frere_Aine := new Le_Bloc;
Vue_Courante.Le_Frere_Aine.Le_Pere := Vue_Courante.Le_Pere;
Vue_Courante.Le_Frere_Aine.Profondeur := Vue_Courante.Profondeur;
Vue_Courante.Le_Frere_Aine.Le_Frere_Cadet := Vue_Courante;
Ok := Va_Bloc_Frere_Aine;
Ajouter;
Ok := Va_Bloc_Frere_Cadet;
return True;
else
return False;
end if;
end Nouveau_Bloc_Frere_Aine;
function Nouveau_Bloc_Frere_Cadet return Boolean is --ajout d'un cadet
Ok : Boolean := False;
begin
if Vue_Courante.Le_Frere_Cadet = null then
Vue_Courante.Dernier_Bloc := False;
Vue_Courante.Le_Frere_Cadet := new Le_Bloc;
Vue_Courante.Le_Frere_Cadet.Le_Pere := Vue_Courante.Le_Pere;
Vue_Courante.Le_Frere_Cadet.Profondeur := Vue_Courante.Profondeur;
Vue_Courante.Le_Frere_Cadet.Le_Frere_Aine := Vue_Courante;
Ok := Va_Bloc_Frere_Cadet;
Ajouter;
Ok := Va_Bloc_Frere_Aine;
return True;
else
return False;
end if;
end Nouveau_Bloc_Frere_Cadet;
function Nouveau_Bloc_Fils
return Boolean is --attention un seul fils par bloc
Ok : Boolean := False;
begin
if Vue_Courante.Profondeur = 0 and then Vue_Courante.Le_Fils = null then
Vue_Courante.Le_Fils := new Le_Bloc;
Vue_Courante.Le_Fils.Le_Pere := Vue_Bloc_Pere;
Vue_Courante.Le_Fils.Profondeur := 1;
Ok := Va_Bloc_Fils;
Ajouter;
Ok := Va_Bloc_Pere;
return True;
elsif Vue_Courante.Le_Fils = null then
Vue_Courante.Dernier_Bloc := False;
Vue_Courante.Le_Fils := new Le_Bloc;
Vue_Courante.Le_Fils.Profondeur := Vue_Courante.Profondeur + 1;
Vue_Courante.Le_Fils.Le_Pere := Vue_Courante;
Ok := Va_Bloc_Fils;
Ajouter;
Ok := Va_Bloc_Pere;
return True;
else
return False;
end if;
end Nouveau_Bloc_Fils;
function Dernier_Bloc return Boolean is
begin
return Vue_Courante.Dernier_Bloc;
end Dernier_Bloc;
function Va_Bloc_Fils return Boolean is
begin
if Vue_Courante.Le_Fils /= null then
Vue_Courante := Vue_Courante.Le_Fils;
return True;
else
return False;
end if;
end Va_Bloc_Fils;
procedure Cherche_Case_Vide (P : in out Pgrande_Liste) is
begin
while P.Suivant /= null loop
P := P.Suivant;
end loop;
end Cherche_Case_Vide;
procedure Insere_Offset (Un_Temps : Integer) is
begin
Vue_Courante.Offset := Un_Temps;
end Insere_Offset;
function Donne_Offset return Integer is
begin
return Vue_Courante.Offset;
end Donne_Offset;
function Donne_Profondeur return Integer is
begin
return Vue_Courante.Profondeur;
end Donne_Profondeur;
function Scene_Existe (Un_Nom : Symbole) return Boolean is
begin
for I in Table_Vue_Scene'First .. Index_Scene loop
if Equal (Un_Nom, Table_Vue_Scene (I).Nom) then
return True;
end if;
end loop;
return False;
end Scene_Existe;
function Insere_Scene (Un_Nom : Symbole) return Boolean is
begin
if Index_Scene <= Table_Vue_Scene'Last then
Table_Vue_Scene (Index_Scene).Nom := Un_Nom;
Table_Vue_Scene (Index_Scene).Vue := Vue_Courante;
Index_Scene := Index_Scene + 1;
return True;
else
return False;
end if;
end Insere_Scene;
function Va_Scene (Un_Nom : Symbole) return Boolean is
Index : Integer;
Ok : Boolean := False;
begin
Index := 1;
while Index <= Maxi loop
if Equal (Table_Vue_Scene (Index).Nom, Un_Nom) then
Ok := True;
Vue_Courante := Table_Vue_Scene (Index).Vue;
exit;
end if;
Index := Index + 1;
end loop;
return Ok;
end Va_Scene;
procedure Insere_Type_Bloc (Un_Nom : Symbole) is
begin
Vue_Courante.Type_Bloc := Un_Nom;
end Insere_Type_Bloc;
function Donne_Type_Bloc return Symbole is
begin
return Vue_Courante.Type_Bloc;
end Donne_Type_Bloc;
function Donne_Nouvelle_Liste (Type_Liste : Boolean) return Pliste is
begin
return new Liste (Type_Liste);
end Donne_Nouvelle_Liste;
function Liste_Vide return Pliste is
begin
return null;
end Liste_Vide;
procedure Memorise_Bloc_Courant (I : Integer) is
begin
if I <= Maxi and I > 0 then
Memo_Bloc_Courant (I) := Vue_Courante;
end if;
end Memorise_Bloc_Courant;
procedure Retourne_Bloc_Memorise (I : Integer) is
begin
if I <= Maxi and I > 0 then
if Memo_Bloc_Courant (I) /= null then
Vue_Courante := Memo_Bloc_Courant (I);
end if;
end if;
end Retourne_Bloc_Memorise;
procedure Insere_Liste_Symbole
(Un_Element : Symbole; Une_Valeur : Integer) is
P : Pgrande_Liste := null;
begin
P := Vue_Courante.Liste_Symbole;
if P /= null then
Cherche_Case_Vide (P);
P.Suivant := new Grande_Liste (False);
if P.Precedent = null then
P.Suivant.Precedent := P;
P := P.Suivant;
else
P.Suivant.Precedent := P.Precedent.Suivant;
P := P.Suivant;
end if;
else
P := new Grande_Liste (False);
Vue_Courante.Liste_Symbole := P;
end if;
P.Index := new Liste'(False, null, null, Une_Valeur);
P.Contenu := Un_Element;
end Insere_Liste_Symbole;
procedure Insere_Liste (P : in out Pgrande_Liste;
Un_Element : Symbole;
Une_Liste : Liste) is
begin
P := Vue_Courante.Liste_Symbole;
if P /= null then
Cherche_Case_Vide (P);
P.Suivant := new Grande_Liste (False);
P.Suivant.Precedent := P;
P := P.Suivant;
else
P := new Grande_Liste (False);
Vue_Courante.Liste_Symbole := P;
end if;
P.Index := new Liste'(Une_Liste);
P.Contenu := Un_Element;
end Insere_Liste;
procedure Insere_Liste_Symbole (Un_Element : Symbole; Une_Liste : Liste) is
P : Pgrande_Liste := null;
begin
P := Vue_Courante.Liste_Symbole;
Insere_Liste (P, Un_Element, Une_Liste);
end Insere_Liste_Symbole;
procedure Insere_Liste_Action (Un_Element : Symbole; Une_Liste : Liste) is
P : Pgrande_Liste := null;
begin
P := Vue_Courante.Liste_Action;
Insere_Liste (P, Un_Element, Une_Liste);
end Insere_Liste_Action;
procedure Insere_Liste_Action (Une_Action : Symbole;
Un_Acteur : Symbole;
De : Integer;
Vers : Integer;
En : Integer) is
P : Pgrande_Liste := null;
begin
P := Vue_Courante.Liste_Action;
if P /= null then
Cherche_Case_Vide (P);
P.Suivant := new Grande_Liste (True);
P.Suivant.Precedent := P;
P := P.Suivant;
else
Vue_Courante.Liste_Action := new Grande_Liste (True);
P := Vue_Courante.Liste_Action;
end if;
P.Une_Action := Une_Action;
P.Un_Acteur := Un_Acteur;
P.De := De;
P.En := En;
P.Vers := Vers;
end Insere_Liste_Action;
function Qui_Es_Tu (Un_Element : Symbole) return Liste is
P : Pgrande_Liste := null;
P_Memo : Pbloc;
Ok : Boolean := False;
begin
P_Memo := Vue_Courante;
P := Vue_Courante.Liste_Symbole;
loop
if P /= null then
while P.Suivant /= null loop
P := P.Suivant;
end loop;
while (not Ok) and then (P.Precedent /= null) loop
if Equal (Un_Element, P.Contenu) then
Ok := True;
exit;
else
P := P.Precedent;
end if;
end loop;
if Equal (Un_Element, P.Contenu) then
Ok := True;
end if;
if Ok then
exit;
elsif Va_Bloc_Pere then
P := Vue_Courante.Liste_Symbole;
else
exit;
end if;
else
if Va_Bloc_Pere then
P := Vue_Courante.Liste_Symbole;
else
exit;
end if;
end if;
end loop;
Vue_Courante := P_Memo;
if Ok then
return P.Index.all;
else
return Liste'(Suivant => null,
Precedent => null,
Type_Cont => False,
Valeur => 0);
end if;
end Qui_Es_Tu;
procedure Liste_Action_Donne (Une_Action : out Symbole;
Un_Acteur : out Symbole;
De : out Integer;
Vers : out Integer;
En : out Integer) is
begin
Une_Action := Vue_Liste_Action.Une_Action;
Un_Acteur := Vue_Liste_Action.Un_Acteur;
De := Vue_Liste_Action.De;
Vers := Vue_Liste_Action.Vers;
En := Vue_Liste_Action.En;
end Liste_Action_Donne;
function Liste_Action_Suivante return Boolean is
begin
if Vue_Liste_Action.Suivant /= null then
Vue_Liste_Action := Vue_Liste_Action.Suivant;
return True;
else
return False;
end if;
end Liste_Action_Suivante;
function Liste_Action_Init return Boolean is
begin
if Vue_Courante.Liste_Action /= null then
Vue_Liste_Action := Vue_Courante.Liste_Action;
return True;
else
return False;
end if;
end Liste_Action_Init;
procedure Prend_Liste (Une_Liste : in Liste) is
begin --mise au debut de la liste
Compteur_Element := 0;
if Une_Liste.Type_Cont then
La_Liste_De_Symbole := Une_Liste;
while La_Liste_De_Symbole.Suivant /= null loop
La_Liste_De_Symbole := La_Liste_De_Symbole.Suivant.all;
end loop;
while La_Liste_De_Symbole.Precedent /= null loop
Compteur_Element := Compteur_Element + 1;
La_Liste_De_Symbole := La_Liste_De_Symbole.Precedent.all;
end loop;
Compteur_Element := Compteur_Element + 1;
Liste_Nombre := False;
else
La_Liste_De_Nombre := Une_Liste;
while La_Liste_De_Nombre.Suivant /= null loop
La_Liste_De_Nombre := La_Liste_De_Nombre.Suivant.all;
end loop;
while La_Liste_De_Nombre.Precedent /= null loop
Compteur_Element := Compteur_Element + 1;
La_Liste_De_Nombre := La_Liste_De_Nombre.Precedent.all;
end loop;
Compteur_Element := Compteur_Element + 1;
Liste_Nombre := True;
end if;
end Prend_Liste;
function Donne_Liste (Un_Pointeur : Pliste) return Liste is
begin
return Un_Pointeur.all;
end Donne_Liste;
function Donne_Type_Liste return Boolean is
begin
return not Liste_Nombre;
end Donne_Type_Liste;
function Suivant return Boolean is
begin
if Liste_Nombre then
return (La_Liste_De_Nombre.Suivant /= null);
else
return (La_Liste_De_Symbole.Suivant /= null);
end if;
end Suivant;
function Donne_Taille_Liste return Integer is
begin
return Compteur_Element;
end Donne_Taille_Liste;
function Donne_Element return Symbole is
begin
La_Liste_De_Symbole := La_Liste_De_Symbole.Suivant.all;
return La_Liste_De_Symbole.Contenu;
end Donne_Element;
function Donne_Element return Integer is
begin
return La_Liste_De_Nombre.Valeur;
end Donne_Element;
procedure Concate (Un_Element : Symbole; Une_Liste : in out Pliste) is
Memo : Pliste;
begin
Memo := Une_Liste;
if Memo /= null then
while Memo.Suivant /= null loop
Memo := Memo.Suivant;
end loop;
Memo.Suivant := new Liste'(True, null, null, Un_Element);
Memo.Suivant.Precedent := Memo;
else
Memo := new Liste'(True, null, null, Un_Element);
end if;
Une_Liste := Memo;
end Concate;
procedure Concate (Une_Valeur : Integer; Une_Liste : in out Pliste) is
Memo : Pliste;
begin
Memo := Une_Liste;
if Memo /= null then
while Memo.Suivant /= null loop
Memo := Une_Liste.Suivant;
end loop;
Memo.Suivant := new Liste'(False, null, null, Une_Valeur);
Memo.Suivant.Precedent := Memo;
else
Memo := new Liste'(False, null, null, Une_Valeur);
end if;
Une_Liste := Memo;
end Concate;
function Somme_Offset_Bloc (P : Vue_Bloc_Trie) return Integer is
Tmp : Integer;
begin
Vue_Courante := P.Vue;
Tmp := Vue_Courante.Offset;
while Va_Bloc_Pere loop
Tmp := Tmp + Vue_Courante.Offset;
end loop;
return Tmp;
end Somme_Offset_Bloc;
procedure Max (Ancien, Nouveau : Vue_Bloc_Trie;
Le_Max : out Vue_Bloc_Trie;
Ok : out Boolean) is
begin
if Ancien.Offset_Global <= Nouveau.Offset_Global then
Le_Max := Nouveau;
Ok := True;
else
Le_Max := Ancien;
Ok := False;
end if;
end Max;
procedure Trie_Liste_Offset is
type Maille;
type P_Maille is access Maille;
type Maille is
record
Element : Vue_Bloc_Trie;
Suivant : P_Maille;
end record;
Tete : P_Maille;
Est_Vide : Boolean := False;
Le_Max : Vue_Bloc_Trie;
procedure Extrait_Max (Une_Chaine : in out P_Maille;
Le_Max : out Vue_Bloc_Trie;
Est_Vide : in out Boolean) is
P_Local, P_Max : P_Maille := Une_Chaine;
Off_Max : Integer := 0;
Premier : Boolean := True;
begin
Est_Vide := True;
if P_Local /= null then
Off_Max := P_Local.Element.Offset_Global;
while P_Local.Suivant /= null loop
if P_Local.Suivant.Element.Offset_Global >= Off_Max then
Off_Max := P_Local.Suivant.Element.Offset_Global;
P_Max := P_Local;
Premier := False;
end if;
P_Local := P_Local.Suivant;
end loop;
if P_Max.Suivant /= null then
Est_Vide := False;
if Premier then
Le_Max := P_Max.Element;
Une_Chaine := Une_Chaine.Suivant;
else
Le_Max := P_Max.Suivant.Element;
P_Max.Suivant := P_Max.Suivant.Suivant;
end if;
else
Le_Max := P_Max.Element;
Une_Chaine := null;
end if;
end if;
end Extrait_Max;
procedure Copie (Une_Liste : Liste_Offset_Trie.List;
Une_Chaine : out P_Maille) is
Iter : Liste_Offset_Trie.Iterator;
Elem_Tempo : Vue_Bloc_Trie;
Tete : P_Maille := null;
begin
Liste_Offset_Trie.Init (Iter, Une_Liste);
while not Liste_Offset_Trie.Done (Iter) loop
Elem_Tempo := Liste_Offset_Trie.Value (Iter);
Tete := new Maille'(Element => Elem_Tempo, Suivant => Tete);
Liste_Offset_Trie.Next (Iter);
end loop;
Une_Chaine := Tete;
end Copie;
begin
Copie (La_Liste_Offset_Trie, Tete);
if Tete /= null then
while not Est_Vide loop
Extrait_Max (Tete, Le_Max, Est_Vide);
La_Liste_Offset_Globaux := Liste_Offset_Globaux.Make
(Le_Max, La_Liste_Offset_Globaux);
end loop;
end if;
end Trie_Liste_Offset;
procedure Construit_Liste_Offset is
Iter : Liste_Offset_Globaux.Iterator;
P : Vue_Bloc_Trie;
Offset_Global : Integer;
begin
Liste_Offset_Globaux.Init (Iter, La_Liste_Offset_Globaux);
while not Liste_Offset_Globaux.Done (Iter) loop
P := Liste_Offset_Globaux.Value (Iter);
Offset_Global := Somme_Offset_Bloc (P);
La_Liste_Offset_Trie :=
Liste_Offset_Trie.Make
(Vue_Bloc_Trie'(Vue => P.Vue, Offset_Global => Offset_Global),
La_Liste_Offset_Trie);
Liste_Offset_Globaux.Next (Iter);
end loop;
Liste_Offset_Globaux.Free (La_Liste_Offset_Globaux);
Trie_Liste_Offset;
end Construit_Liste_Offset;
function Init_Liste_Offset (Un_Nom : Symbole) return Boolean is
begin
if Scene_Existe (Un_Nom) then
Filtre := Un_Nom;
Liste_Offset_Globaux.Init (Un_Iter_Prive, La_Liste_Offset_Globaux);
return True;
else
return False;
end if;
end Init_Liste_Offset;
function Suivant_Liste_Offset_Est_Bloc_Courant return Boolean is
P : Vue_Bloc_Trie;
P_Memo : Pbloc;
Ok : Boolean := False;
begin
if not Liste_Offset_Globaux.Done (Un_Iter_Prive) then
while not Ok loop
P := Liste_Offset_Globaux.Value (Un_Iter_Prive);
Vue_Courante := P.Vue;
while (Vue_Courante.Profondeur > 1) and then (Va_Bloc_Pere) loop
null;
end loop;
P_Memo := Vue_Courante;
if Va_Scene (Filtre) then
if P_Memo = Vue_Courante then
Vue_Courante := P.Vue;
Vue_Courante.Offset := P.Offset_Global;
Ok := True;
end if;
end if;
Liste_Offset_Globaux.Next (Un_Iter_Prive);
if Liste_Offset_Globaux.Done (Un_Iter_Prive) then
return Ok;
end if;
end loop;
return True;
else
return False;
end if;
end Suivant_Liste_Offset_Est_Bloc_Courant;
end Bloc;
nblk1=24
nid=1a
hdr6=32
[0x00] rec0=24 rec1=00 rec2=01 rec3=020
[0x01] rec0=23 rec1=00 rec2=02 rec3=034
[0x02] rec0=20 rec1=00 rec2=0a rec3=088
[0x03] rec0=19 rec1=00 rec2=24 rec3=06a
[0x04] rec0=1a rec1=00 rec2=12 rec3=040
[0x05] rec0=23 rec1=00 rec2=16 rec3=016
[0x06] rec0=23 rec1=00 rec2=22 rec3=012
[0x07] rec0=26 rec1=00 rec2=07 rec3=012
[0x08] rec0=23 rec1=00 rec2=14 rec3=018
[0x09] rec0=1c rec1=00 rec2=0b rec3=050
[0x0a] rec0=1e rec1=00 rec2=04 rec3=038
[0x0b] rec0=1e rec1=00 rec2=0c rec3=07a
[0x0c] rec0=20 rec1=00 rec2=15 rec3=016
[0x0d] rec0=1d rec1=00 rec2=17 rec3=02e
[0x0e] rec0=1b rec1=00 rec2=06 rec3=044
[0x0f] rec0=20 rec1=00 rec2=1f rec3=016
[0x10] rec0=02 rec1=00 rec2=11 rec3=008
[0x11] rec0=22 rec1=00 rec2=20 rec3=032
[0x12] rec0=22 rec1=00 rec2=1d rec3=038
[0x13] rec0=23 rec1=00 rec2=21 rec3=004
[0x14] rec0=15 rec1=00 rec2=23 rec3=04c
[0x15] rec0=1d rec1=00 rec2=03 rec3=04e
[0x16] rec0=1b rec1=00 rec2=1c rec3=016
[0x17] rec0=1b rec1=00 rec2=18 rec3=01a
[0x18] rec0=11 rec1=00 rec2=05 rec3=000
[0x19] rec0=11 rec1=00 rec2=11 rec3=000
[0x1a] rec0=1d rec1=00 rec2=02 rec3=026
[0x1b] rec0=16 rec1=00 rec2=11 rec3=000
[0x1c] rec0=1d rec1=00 rec2=02 rec3=026
[0x1d] rec0=16 rec1=00 rec2=11 rec3=000
[0x1e] rec0=03 rec1=00 rec2=0b rec3=096
[0x1f] rec0=1a rec1=00 rec2=1e rec3=048
[0x20] rec0=03 rec1=00 rec2=15 rec3=000
[0x21] rec0=02 rec1=00 rec2=0e rec3=096
[0x22] rec0=1a rec1=00 rec2=1e rec3=048
[0x23] rec0=03 rec1=00 rec2=15 rec3=001
tail 0x21736f0f284eb7bdee0e9 0x42a00088462060003
Free Block Chain:
0x1a: 0000 00 13 03 fc 80 1c 20 20 20 20 20 20 20 20 20 20 ┆ ┆
0x13: 0000 00 08 01 18 80 19 20 20 20 20 20 20 55 6e 65 5f ┆ Une_┆
0x8: 0000 00 1e 03 fc 80 04 72 69 65 3b 04 00 21 20 20 20 ┆ rie; ! ┆
0x1e: 0000 00 10 03 fc 80 20 6e 74 20 3a 20 61 72 72 61 79 ┆ nt : array┆
0x10: 0000 00 0d 00 49 80 0b 6e 75 6c 6c 20 74 68 65 6e 20 ┆ I null then ┆
0xd: 0000 00 1b 03 fc 80 05 20 74 68 65 6e 05 00 2d 20 20 ┆ then - ┆
0x1b: 0000 00 19 01 25 80 46 20 20 20 20 20 20 20 20 20 20 ┆ % F ┆
0x19: 0000 00 0e 03 fc 80 30 20 20 20 77 68 69 6c 65 20 6e ┆ 0 while n┆
0xe: 0000 00 0f 03 fc 80 18 20 20 20 20 20 2d 2d 20 20 20 ┆ -- ┆
0xf: 0000 00 09 00 8c 80 2f 20 2d 2d 20 4c 69 73 74 65 5f ┆ / -- Liste_┆
0x9: 0000 00 00 03 fc 80 2f 43 6f 70 69 65 20 65 6e 20 63 ┆ /Copie en c┆