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

⟦c551c3014⟧ Ada Source

    Length: 16384 (0x4000)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Cl35, seg_04cc78, seg_04cd64

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 Cl35_Message;
with Rapport_Cartes_Valides;
with Rapport_Cartes_Invalides;

package body Cl35 is

    package Cartes_Ok renames Rapport_Cartes_Valides;
    package Cartes_Nok renames Rapport_Cartes_Invalides;
    package Complx_Msg is new Cl35_Message (Type_Of_Msg => Mt.With_Response);
    package Receive_Msg is new Cl35_Message (Type_Of_Msg => Mt.Response);
    package Simple_Msg is new Cl35_Message (Type_Of_Msg => Mt.With_Ack);

    Cmd_Beep : constant := 16#2C#;
    Cmd_Rapport_Horloge : constant := 16#24#;
    Cmd_Mise_A_L_Heure : constant := 16#23#;
    Cmd_En_Veille : constant := 16#2A#;
    Cmd_Hors_Veille : constant := 16#2B#;
    Cmd_Code_Site : constant := 16#27#;
    Cmd_Rapport_Site : constant := 16#28#;  
    Cmd_Rapport_Cartes_Invalides : constant := 16#29#;
    Cmd_Rapport_Cartes_Valides : constant := 16#1F#;
    Cmd_Valide_Carte : constant := 16#10#;
    Cmd_Valide_Groupe_Cartes : constant := 16#11#;
    Cmd_Invalide_Carte : constant := 16#12#;
    Cmd_Invalide_Groupe_Cartes : constant := 16#13#;
    Cmd_Reglage_Parametres : constant := 16#22#;
    Cmd_Rapport_Parametres : constant := 16#1E#;  
    Cmd_Rapport_Evenements : constant := 16#1D#;
    Cmd_Transmission_Plage : constant := 16#25#;
    Cmd_Rapport_Plage : constant := 16#26#;

    procedure Check_Cmd (Msg_Send : in Complx_Msg.Object;
                         Msg_Received : in Receive_Msg.Object) is
    begin

        if Complx_Msg.Msg_Cmd (Msg_Send) /=
           Receive_Msg.Msg_Cmd (Msg_Received) then
            raise Bad_Cmd;
        end if;

    end Check_Cmd;

    function Image (Le_Lecteur : in Object) return String is
    begin
        return ("Lecteur Cl35 d'adresse" &
                Addr'Image (Le_Lecteur.Addr_Lecteur) & " ");
    end Image;

    function Address (Address : in Addr) return Object is
    begin
        return Object'(Addr_Lecteur => Address);
    end Address;

    function Address (Le_Lecteur : in Object) return Addr is
    begin
        return Le_Lecteur.Addr_Lecteur;
    end Address;

    procedure Valide_Carte (Le_Lecteur : Object;
                            La_Carte : in Carte.Object;
                            Pour_La_Plage : in Natural) is

        Send_Message : Simple_Msg.Object;

    begin
        Simple_Msg.Make (Message => Send_Message,
                         Addr_Lecteur => Address (Le_Lecteur => Le_Lecteur),
                         Cmd => Cmd_Valide_Carte,
                         Data => Carte.Image (La_Carte => La_Carte,
                                              La_Plage => Pour_La_Plage));
        Simple_Msg.Write_Msg (Message => Send_Message);
    end Valide_Carte;

    procedure Valide_Carte (Le_Lecteur : Object;
                            De_La_Carte : in Carte.Object;
                            A_La_Carte : in Carte.Object;
                            Pour_La_Plage : in Natural) is

        Send_Message : Simple_Msg.Object;

    begin
        Simple_Msg.Make (Message => Send_Message,
                         Addr_Lecteur => Address (Le_Lecteur => Le_Lecteur),
                         Cmd => Cmd_Valide_Groupe_Cartes,
                         Data => Carte.Image (De_La_Carte => De_La_Carte,
                                              A_La_Carte => A_La_Carte,
                                              La_Plage => Pour_La_Plage));
        Simple_Msg.Write_Msg (Message => Send_Message);
    end Valide_Carte;

    procedure Invalide_Carte (Le_Lecteur : Object;
                              La_Carte : in Carte.Object) is

        Send_Message : Simple_Msg.Object;

    begin
        Simple_Msg.Make (Message => Send_Message,
                         Addr_Lecteur => Address (Le_Lecteur => Le_Lecteur),
                         Cmd => Cmd_Invalide_Carte,
                         Data => Carte.Image (La_Carte => La_Carte));
        Simple_Msg.Write_Msg (Message => Send_Message);
    end Invalide_Carte;

    procedure Invalide_Carte (Le_Lecteur : Object;
                              De_La_Carte : in Carte.Object;
                              A_La_Carte : in Carte.Object) is

        Send_Message : Simple_Msg.Object;

    begin
        Simple_Msg.Make (Message => Send_Message,
                         Addr_Lecteur => Address (Le_Lecteur => Le_Lecteur),
                         Cmd => Cmd_Invalide_Groupe_Cartes,
                         Data => Carte.Image (De_La_Carte => De_La_Carte,
                                              A_La_Carte => A_La_Carte));

        Simple_Msg.Write_Msg (Message => Send_Message);

    end Invalide_Carte;

    procedure Cartes_Valides (Le_Lecteur : Object;
                              De_La_Carte : Carte.Object;
                              A_La_Carte : Carte.Object;
                              Le_Rapport : in out Liste_Ok.List) is

        Send_Message : Complx_Msg.Object;
        Rec_Message : Receive_Msg.Object;

    begin
        Complx_Msg.Make (Message => Send_Message,
                         Addr_Lecteur => Address (Le_Lecteur => Le_Lecteur),
                         Cmd => Cmd_Rapport_Cartes_Valides,
                         Data => Carte.Image (De_La_Carte => De_La_Carte,
                                              A_La_Carte => A_La_Carte));
        Complx_Msg.Write_Msg (Message => Send_Message);
        Receive_Msg.Split_Size (Message => Rec_Message, Size => 238);
        Receive_Msg.Read_Msg (Message => Rec_Message);
        Check_Cmd (Msg_Send => Send_Message, Msg_Received => Rec_Message);
        Le_Rapport := Cartes_Ok.Value
                         (The_Byte_String => Receive_Msg.Msg_Data
                                                (Message => Rec_Message));

        Complx_Msg.Free (Send_Message);
        Receive_Msg.Free (Rec_Message);
    end Cartes_Valides;

    procedure Cartes_Invalides (Le_Lecteur : Object;
                                De_La_Carte : Carte.Object;
                                A_La_Carte : Carte.Object;
                                Le_Rapport : in out Liste_Nok.List) is

        Send_Message : Complx_Msg.Object;
        Rec_Message : Receive_Msg.Object;

    begin
        Complx_Msg.Make (Message => Send_Message,
                         Addr_Lecteur => Address (Le_Lecteur => Le_Lecteur),
                         Cmd => Cmd_Rapport_Cartes_Invalides,
                         Data => Carte.Image (De_La_Carte => De_La_Carte,
                                              A_La_Carte => A_La_Carte));
        Complx_Msg.Write_Msg (Message => Send_Message);
        Receive_Msg.Split_Size (Message => Rec_Message, Size => 238);
        Receive_Msg.Read_Msg (Message => Rec_Message);
        Check_Cmd (Msg_Send => Send_Message, Msg_Received => Rec_Message);
        Le_Rapport := Cartes_Nok.Value
                         (The_Byte_String => Receive_Msg.Msg_Data
                                                (Message => Rec_Message));
        Complx_Msg.Free (Send_Message);
        Receive_Msg.Free (Rec_Message);
    end Cartes_Invalides;

    procedure Rapport_Evenements (Le_Lecteur : Object;
                                  Le_Rapport : in out File_Evt.Queue) is

        Send_Message : Complx_Msg.Object;
        Rec_Message : Receive_Msg.Object;

    begin
        Complx_Msg.Make (Message => Send_Message,
                         Addr_Lecteur => Address (Le_Lecteur => Le_Lecteur),
                         Cmd => Cmd_Rapport_Evenements,
                         Data => Mt.Null_String);
        Complx_Msg.Write_Msg (Message => Send_Message);
        Receive_Msg.Split_Size (Message => Rec_Message, Size => 238);
        Receive_Msg.Read_Msg (Message => Rec_Message);
        Check_Cmd (Msg_Send => Send_Message, Msg_Received => Rec_Message);
        Le_Rapport := Evenements.Value
                         (The_Byte_String => Receive_Msg.Msg_Data
                                                (Message => Rec_Message));
        Complx_Msg.Free (Send_Message);
        Receive_Msg.Free (Rec_Message);
    end Rapport_Evenements;

    procedure Reglage_Parametres (Le_Lecteur : Object;
                                  Params_Lecteur : in Parametres.Object) is

        Send_Message : Simple_Msg.Object;

    begin
        Simple_Msg.Make (Message => Send_Message,
                         Addr_Lecteur => Address (Le_Lecteur => Le_Lecteur),
                         Cmd => Cmd_Reglage_Parametres,
                         Data => Parametres.Image (Params_Lecteur));
        Simple_Msg.Write_Msg (Message => Send_Message);
    end Reglage_Parametres;

    procedure Rapport_Parametres (Le_Lecteur : Object;
                                  Params_Lecteur : out Parametres.Object) is

        Send_Message : Complx_Msg.Object;
        Rec_Message : Receive_Msg.Object;

    begin       Complx_Msg.Make (Message => Send_Message,
                         Addr_Lecteur => Address (Le_Lecteur => Le_Lecteur),
                         Cmd => Cmd_Rapport_Parametres);
        Complx_Msg.Write_Msg (Message => Send_Message);
        Receive_Msg.Read_Msg (Message => Rec_Message);
        Check_Cmd (Msg_Send => Send_Message, Msg_Received => Rec_Message);
        Params_Lecteur :=
           Parametres.Value
              (The_Byte_String =>
                  Receive_Msg.Msg_Data (Message => Rec_Message).all);
        Complx_Msg.Free (Send_Message);
        Receive_Msg.Free (Rec_Message);
    end Rapport_Parametres;

    procedure Mise_A_L_Heure (Le_Lecteur : Object;
                              Date_Lecteur : in Date.Object) is

        Send_Message : Simple_Msg.Object;

    begin
        Simple_Msg.Make (Message => Send_Message,
                         Addr_Lecteur => Address (Le_Lecteur => Le_Lecteur),
                         Cmd => Cmd_Mise_A_L_Heure,
                         Data => Date.Image (Date_Lecteur));
        Simple_Msg.Write_Msg (Message => Send_Message);

    end Mise_A_L_Heure;

    procedure Rapport_Horloge (Le_Lecteur : Object;
                               Date_Lecteur : out Date.Object) is

        Send_Message : Complx_Msg.Object;
        Rec_Message : Receive_Msg.Object;

    begin
        Complx_Msg.Make (Message => Send_Message,
                         Addr_Lecteur => Address (Le_Lecteur => Le_Lecteur),
                         Cmd => Cmd_Rapport_Horloge);
        Complx_Msg.Write_Msg (Message => Send_Message);
        Receive_Msg.Read_Msg (Message => Rec_Message);
        Check_Cmd (Msg_Send => Send_Message, Msg_Received => Rec_Message);
        Date_Lecteur :=
           Date.Value (The_Byte_String =>
                          Receive_Msg.Msg_Data (Message => Rec_Message).all);
        Complx_Msg.Free (Send_Message);
        Receive_Msg.Free (Rec_Message);
    end Rapport_Horloge;

    procedure Transmission_Plage (Le_Lecteur : in Object;
                                  La_Plage : in Plage.Object) is

        Send_Message : Simple_Msg.Object;

    begin
        Simple_Msg.Make (Message => Send_Message,
                         Addr_Lecteur => Address (Le_Lecteur => Le_Lecteur),
                         Cmd => Cmd_Transmission_Plage,
                         Data => Plage.Image (La_Plage));
        Simple_Msg.Write_Msg (Message => Send_Message);
    end Transmission_Plage;

    procedure Rapport_Plage (Le_Lecteur : in Object;
                             Numero_De_Plage : in Plage.Num_Plage;
                             La_Plage : out Plage.Object) is

        Send_Message : Complx_Msg.Object;
        Rec_Message : Receive_Msg.Object;

    begin
        Complx_Msg.Make (Message => Send_Message,
                         Addr_Lecteur => Address (Le_Lecteur => Le_Lecteur),
                         Cmd => Cmd_Rapport_Plage,
                         Data => Plage.Image (Numero_De_Plage));
        Complx_Msg.Write_Msg (Message => Send_Message);
        Receive_Msg.Read_Msg (Message => Rec_Message);
        Check_Cmd (Msg_Send => Send_Message, Msg_Received => Rec_Message);
        La_Plage := Plage.Value
                       (Receive_Msg.Msg_Data (Message => Rec_Message).all);
        Complx_Msg.Free (Send_Message);
        Receive_Msg.Free (Rec_Message);

    end Rapport_Plage;

    procedure Get_Site (Le_Lecteur : Object; Le_Code : out Site.Object) is

        Send_Message : Complx_Msg.Object;
        Rec_Message : Receive_Msg.Object;

    begin
        Complx_Msg.Make (Message => Send_Message,
                         Addr_Lecteur => Address (Le_Lecteur => Le_Lecteur),
                         Cmd => Cmd_Rapport_Site);
        Complx_Msg.Write_Msg (Message => Send_Message);
        Receive_Msg.Read_Msg (Message => Rec_Message);
        Check_Cmd (Msg_Send => Send_Message, Msg_Received => Rec_Message);
        Le_Code := Site.Value
                      (The_Byte_String => Receive_Msg.Msg_Data
                                             (Message => Rec_Message).all);
        Complx_Msg.Free (Send_Message);
        Receive_Msg.Free (Rec_Message);

    end Get_Site;

    procedure Set_Site (Le_Lecteur : Object; Le_Code : in Site.Object) is

        Send_Message : Simple_Msg.Object;

    begin
        Simple_Msg.Make (Message => Send_Message,
                         Addr_Lecteur => Address (Le_Lecteur => Le_Lecteur),
                         Cmd => Cmd_Code_Site,
                         Data => Site.Image (Le_Code));
        Simple_Msg.Write_Msg (Message => Send_Message);

    end Set_Site;

    procedure Beep (Le_Lecteur : Object) is

        Send_Message : Simple_Msg.Object;

    begin
        Simple_Msg.Make (Message => Send_Message,
                         Addr_Lecteur => Address (Le_Lecteur => Le_Lecteur),
                         Cmd => Cmd_Beep);
        Simple_Msg.Write_Msg (Message => Send_Message);

    end Beep;

    procedure Mise_Hors_Veille (Le_Lecteur : Object) is

        Send_Message : Simple_Msg.Object;

    begin
        Simple_Msg.Make (Message => Send_Message,
                         Addr_Lecteur => Address (Le_Lecteur => Le_Lecteur),
                         Cmd => Cmd_Hors_Veille);
        Simple_Msg.Write_Msg (Message => Send_Message);

    end Mise_Hors_Veille;

    procedure Mise_En_Veille (Le_Lecteur : Object) is

        Send_Message : Simple_Msg.Object;

    begin
        Simple_Msg.Make (Message => Send_Message,
                         Addr_Lecteur => Address (Le_Lecteur => Le_Lecteur),
                         Cmd => Cmd_En_Veille);
        Simple_Msg.Write_Msg (Message => Send_Message);

    end Mise_En_Veille;

    procedure Init is
    begin
        Simple_Msg.Flush;
    end Init;

end Cl35;

E3 Meta Data

    nblk1=f
    nid=0
    hdr6=1e
        [0x00] rec0=19 rec1=00 rec2=01 rec3=044
        [0x01] rec0=1e rec1=00 rec2=02 rec3=03c
        [0x02] rec0=19 rec1=00 rec2=03 rec3=032
        [0x03] rec0=16 rec1=00 rec2=04 rec3=05a
        [0x04] rec0=1a rec1=00 rec2=05 rec3=00a
        [0x05] rec0=14 rec1=00 rec2=06 rec3=068
        [0x06] rec0=13 rec1=00 rec2=07 rec3=07e
        [0x07] rec0=16 rec1=00 rec2=08 rec3=048
        [0x08] rec0=1a rec1=00 rec2=09 rec3=002
        [0x09] rec0=16 rec1=00 rec2=0a rec3=052
        [0x0a] rec0=18 rec1=00 rec2=0b rec3=014
        [0x0b] rec0=19 rec1=00 rec2=0c rec3=058
        [0x0c] rec0=17 rec1=00 rec2=0d rec3=050
        [0x0d] rec0=1c rec1=00 rec2=0e rec3=096
        [0x0e] rec0=24 rec1=00 rec2=0f rec3=000
    tail 0x217540c7e874f6e24d634 0x42a00088462060003