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

⟦a7fc66bce⟧ Ada Source

    Length: 10240 (0x2800)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Carte_Es, seg_05abe5

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« 
        └─⟦this⟧ 

E3 Source Code



--with Bit_Utilitaires;
with Defined_Type;
with System;
with Vme;
with Vsip;
package body Carte_Es is
    package Vsip1 is new Vsip (Base_Address => 16#8000#,
                               Vme_Position => Vme.Slot1,
                               Scim_0 => Defined_Type.Mod101,
                               Scim_1 => Defined_Type.No_Module,
                               Scim_2 => Defined_Type.No_Module,
                               Scim_3 => Defined_Type.No_Module);
    package Module is new Vsip1.Mod101 (Base_Address_Module => 16#600#);

    subtype Numero_Bit is Natural range 0 .. 7;
    type Sortie_Reelle is
        record
            Groupe : Module.Group;
            Bit : Numero_Bit;
            Broche : Module.Pin_No;
        end record;
    type Tableau_Sorties is array (Numero_Sortie) of Sortie_Reelle;

    --Donnee_Valide : Boolean := True;
    --Groupe_Courant : Module.Group;
    Correspondance : Tableau_Sorties;
    Les_Sorties : Image_Des_Sorties;
    --Donnee : Bit_Utilitaires.Octet;

    procedure Init_Sortie (Sortie : in Numero_Sortie;
                           Groupe : in Module.Group;
                           Bit : in Numero_Bit;
                           Broche : in Module.Pin_No) is
    begin
        Correspondance (Sortie) :=
           (Groupe => Groupe, Bit => Bit, Broche => Broche);
    end Init_Sortie;


    procedure Initialiser is
        I : Numero_Sortie;
    begin
        Vsip1.Setup;
        Module.Setup;

        Init_Sortie
           (Sortie => 1, Groupe => Module.Group0, Bit => 0, Broche => 3);
        Init_Sortie
           (Sortie => 2, Groupe => Module.Group0, Bit => 1, Broche => 4);
        Init_Sortie
           (Sortie => 3, Groupe => Module.Group0, Bit => 2, Broche => 5);
        Init_Sortie
           (Sortie => 4, Groupe => Module.Group0, Bit => 3, Broche => 6);
        Init_Sortie
           (Sortie => 5, Groupe => Module.Group0, Bit => 4, Broche => 7);
        Init_Sortie
           (Sortie => 6, Groupe => Module.Group0, Bit => 5, Broche => 8);
        Init_Sortie
           (Sortie => 7, Groupe => Module.Group1, Bit => 0, Broche => 13);
        Init_Sortie
           (Sortie => 8, Groupe => Module.Group1, Bit => 1, Broche => 14);
        Init_Sortie
           (Sortie => 9, Groupe => Module.Group1, Bit => 2, Broche => 15);
        Init_Sortie
           (Sortie => 10, Groupe => Module.Group1, Bit => 3, Broche => 16);
        Init_Sortie
           (Sortie => 11, Groupe => Module.Group1, Bit => 4, Broche => 17);
        Init_Sortie
           (Sortie => 12, Groupe => Module.Group1, Bit => 5, Broche => 18);
        Init_Sortie
           (Sortie => 13, Groupe => Module.Group2, Bit => 0, Broche => 23);
        Init_Sortie
           (Sortie => 14, Groupe => Module.Group3, Bit => 0, Broche => 33);
        Init_Sortie
           (Sortie => 15, Groupe => Module.Group2, Bit => 4, Broche => 27);
        Init_Sortie
           (Sortie => 16, Groupe => Module.Group2, Bit => 5, Broche => 28);
        Init_Sortie
           (Sortie => 17, Groupe => Module.Group2, Bit => 6, Broche => 29);
        Init_Sortie
           (Sortie => 18, Groupe => Module.Group3, Bit => 1, Broche => 34);
        Init_Sortie
           (Sortie => 19, Groupe => Module.Group3, Bit => 2, Broche => 35);
        Init_Sortie
           (Sortie => 20, Groupe => Module.Group3, Bit => 3, Broche => 36);
        Init_Sortie
           (Sortie => 21, Groupe => Module.Group3, Bit => 4, Broche => 37);
        Init_Sortie
           (Sortie => 22, Groupe => Module.Group3, Bit => 5, Broche => 38);
        Init_Sortie
           (Sortie => 23, Groupe => Module.Group3, Bit => 6, Broche => 39);
        Init_Sortie
           (Sortie => 24, Groupe => Module.Group3, Bit => 7, Broche => 40);
        Init_Sortie
           (Sortie => 25, Groupe => Module.Group4, Bit => 0, Broche => 12);
        Init_Sortie
           (Sortie => 26, Groupe => Module.Group4, Bit => 1, Broche => 22);
        Init_Sortie
           (Sortie => 27, Groupe => Module.Group4, Bit => 2, Broche => 32);
        Init_Sortie
           (Sortie => 28, Groupe => Module.Group4, Bit => 3, Broche => 42);
        Init_Sortie
           (Sortie => 29, Groupe => Module.Group4, Bit => 4, Broche => 43);
        Init_Sortie
           (Sortie => 30, Groupe => Module.Group2, Bit => 1, Broche => 24);
        for I in Numero_Sortie loop
            Module.Set_Output_Pin (Pin => Correspondance (I).Broche);
        end loop;
        for I in Numero_Sortie loop
            Module.Write_Pin (Pin => Correspondance (I).Broche,
                              Status => False);
            Les_Sorties (I) := Module.Read_Pin
                                  (Pin => Correspondance (I).Broche);
            delay 0.2;
        end loop;
    end Initialiser;


    procedure Terminer is
    begin
        null;
    end Terminer;


    procedure Activer (Sortie_Numero : in Numero_Sortie) is
        --Le_Bit : Numero_Bit;
        --Valeur : Defined_Type.Octet;
    begin
        Module.Write_Pin
           (Pin => Correspondance (Sortie_Numero).Broche, Status => True);
        Les_Sorties (Sortie_Numero) :=
           Module.Read_Pin (Pin => Correspondance (Sortie_Numero).Broche);

        --if Donnee_Valide then
        --    Donnee_Valide := False;
        --    Groupe_Courant := correspondance (Sortie_Numero).Groupe;
        --    Valeur := Module.Read_Group (Groupe_Courant);
        --    Donnee := Bit_Utilitaires.Nombre_Vers_Tableau (Valeur);
        --end if;
        --Le_Bit := correspondance (Sortie_Numero).Bit;
        --Bit_Utilitaires.Bit_A_1 (Un_Octet => Donnee, Bit => Le_Bit);
    end Activer;


    procedure Desactiver (Sortie_Numero : in Numero_Sortie) is
        --Le_Bit : Numero_Bit;
        --Valeur : Defined_Type.Octet;
    begin
        Module.Write_Pin (Pin => Correspondance (Sortie_Numero).Broche,
                          Status => False);
        Les_Sorties (Sortie_Numero) :=
           Module.Read_Pin (Pin => Correspondance (Sortie_Numero).Broche);

        --if Donnee_Valide then
        --    Donnee_Valide := False;
        --    Groupe_Courant := correspondance (Sortie_Numero).Groupe;
        --    Valeur := Module.Read_Group (Groupe_Courant);
        --    Donnee := Bit_Utilitaires.Nombre_Vers_Tableau (Valeur);
        --end if;
        --Le_Bit := correspondance (Sortie_Numero).Bit;
        --Bit_Utilitaires.Bit_A_0 (Un_Octet => Donnee, Bit => Le_Bit);
    end Desactiver;


    --procedure Valider is
    --    Valeur : Defined_Type.Octet;
    --begin
    --    Donnee_Valide := True;
    --    Valeur := Bit_Utilitaires.Tableau_Vers_Nombre (Donnee);
    --    Module.Write_Group (Groupe_Courant, Valeur);
    --end Valider;


    function Lire (Sortie_Numero : in Numero_Sortie) return Boolean is
    begin
        return Module.Read_Pin (Correspondance (Sortie_Numero).Broche);
    end Lire;


    function Lire_Les_Sorties return Image_Des_Sorties is
    begin
        return Les_Sorties;
    end Lire_Les_Sorties;
end Carte_Es;

E3 Meta Data

    nblk1=9
    nid=4
    hdr6=10
        [0x00] rec0=1c rec1=00 rec2=01 rec3=028
        [0x01] rec0=1c rec1=00 rec2=05 rec3=074
        [0x02] rec0=15 rec1=00 rec2=02 rec3=008
        [0x03] rec0=14 rec1=00 rec2=06 rec3=026
        [0x04] rec0=1a rec1=00 rec2=07 rec3=008
        [0x05] rec0=0a rec1=00 rec2=09 rec3=004
        [0x06] rec0=18 rec1=00 rec2=08 rec3=020
        [0x07] rec0=1d rec1=00 rec2=03 rec3=000
        [0x08] rec0=13 rec1=00 rec2=04 rec3=000
    tail 0x2176a40ac893979a18406 0x42a00088462060003
Free Block Chain:
  0x4: 0000  00 00 00 04 80 01 20 01 02 02 20 20 02 02 02 02  ┆                ┆