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

⟦31afe83ea⟧ Ada Source

    Length: 9216 (0x2400)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, generic, package Bloc, seg_03924a, seg_03932a, seg_039343

Derivation

└─⟦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⟧ 

E3 Source Code



generic
    type Symbole is private;  
    with function Equal (Left, Right : Symbole) return Boolean is <>;
package Bloc is           -- beau paquetage generique fabrique artisanalement !

    type Liste (Type_Cont : Boolean) is private;
    type Pliste is private;


    function Nouveau_Pere return Boolean;
    function Nouveau_Bloc_Frere_Cadet return Boolean;
    function Nouveau_Bloc_Frere_Aine return Boolean;
    function Nouveau_Bloc_Fils return Boolean;
    function Va_Bloc_Fils return Boolean;
    function Va_Bloc_Pere return Boolean;
    function Va_Bloc_Frere_Aine return Boolean;
    function Va_Bloc_Frere_Cadet return Boolean;
    function Dernier_Bloc return Boolean;


    procedure Insere_Offset (Un_Temps : Integer);
    function Donne_Offset return Integer;
    function Donne_Profondeur return Integer;
    function Scene_Existe (Un_Nom : Symbole) return Boolean;
    function Insere_Scene (Un_Nom : Symbole) return Boolean;
    function Va_Scene (Un_Nom : Symbole) return Boolean;
    procedure Insere_Type_Bloc (Un_Nom : Symbole);
    function Donne_Type_Bloc return Symbole;
    function Donne_Nouvelle_Liste (Type_Liste : Boolean) return Pliste;
    function Liste_Vide return Pliste;


    procedure Memorise_Bloc_Courant (I : Integer);
    procedure Retourne_Bloc_Memorise (I : Integer);


    procedure Insere_Liste_Symbole (Un_Element : Symbole; Une_Valeur : Integer);
    procedure Insere_Liste_Symbole (Un_Element : Symbole; Une_Liste : Liste);
    procedure Insere_Liste_Action (Une_Action : Symbole;
                                   Un_Acteur : Symbole;
                                   De : Integer;
                                   Vers : Integer;
                                   En : Integer);
    function Qui_Es_Tu (Un_Element : Symbole) return Liste;
    procedure Liste_Action_Donne (Une_Action : out Symbole;
                                  Un_Acteur : out Symbole;
                                  De : out Integer;
                                  Vers : out Integer;
                                  En : out Integer);
    function Liste_Action_Suivante return Boolean;
    function Liste_Action_Init return Boolean;

    procedure Prend_Liste (Une_Liste : in Liste);
    function Donne_Liste (Un_Pointeur : Pliste) return Liste;
    function Donne_Type_Liste return Boolean;
    function Donne_Taille_Liste return Integer;
    function Suivant return Boolean;
    function Donne_Element return Symbole;
    function Donne_Element return Integer;
    procedure Concate (Un_Element : Symbole; Une_Liste : in out Pliste);
    procedure Concate (Une_Valeur : Integer; Une_Liste : in out Pliste);

    procedure Construit_Liste_Offset;
    function Suivant_Liste_Offset_Est_Bloc_Courant return Boolean;
    function Init_Liste_Offset (Un_Nom : Symbole) return Boolean;

private

    type Pliste is access Liste;  
    type Liste (Type_Cont : Boolean) is
        record
            Suivant : Pliste := null;
            Precedent : Pliste := null;
            case Type_Cont is
                when True =>
                    Contenu : Symbole;
                when False =>
                    Valeur : Integer;
            end case;
        end record;

    type Grande_Liste (Action : Boolean);
    type Pgrande_Liste is access Grande_Liste;
    type Grande_Liste (Action : Boolean) is
        record
            Suivant : Pgrande_Liste := null;
            Precedent : Pgrande_Liste := null;
            case Action is
                when False =>
                    Index : Pliste := null;
                    Contenu : Symbole;  
                when True =>
                    Une_Action : Symbole;
                    Un_Acteur : Symbole;
                    De, Vers, En : Integer := -10;
            end case;
        end record;


    type Le_Bloc;
    type Pbloc is access Le_Bloc;

    --les types suivant sont dans cette partie car on les instancie, de maniere indirecte, par symbole.

    type Le_Bloc is
        record
            Liste_Symbole : Pgrande_Liste := null;
            Liste_Action : Pgrande_Liste := null;
            Offset : Integer := 0;
            Rep : Integer := -1;  
            Type_Bloc : Symbole;
            Dernier_Bloc : Boolean;
            Le_Pere : Pbloc := null;
            Le_Fils : Pbloc := null;
            Le_Frere_Aine : Pbloc := null;
            Le_Frere_Cadet : Pbloc := null;
            Un_Compteur : Integer range 1 .. 32 := 1;
            Profondeur : Integer := 0;
        end record;
end Bloc;

E3 Meta Data

    nblk1=8
    nid=2
    hdr6=e
        [0x00] rec0=1b rec1=00 rec2=01 rec3=01c
        [0x01] rec0=02 rec1=00 rec2=08 rec3=04a
        [0x02] rec0=15 rec1=00 rec2=07 rec3=054
        [0x03] rec0=19 rec1=00 rec2=06 rec3=03a
        [0x04] rec0=05 rec1=00 rec2=03 rec3=004
        [0x05] rec0=1e rec1=00 rec2=05 rec3=042
        [0x06] rec0=0c rec1=00 rec2=04 rec3=001
        [0x07] rec0=28 rec1=4d rec2=d4 rec3=5ee
    tail 0x21736e88484eb6fe94957 0x42a00088462060003
Free Block Chain:
  0x2: 0000  00 00 00 55 80 13 63 63 65 73 73 20 47 72 61 6e  ┆   U  ccess Gran┆