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

⟦2262fea7f⟧ Ada Source

    Length: 9216 (0x2400)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Cl35, seg_041b63

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 Date;
with My_Types;
with Machine_Io;
with Text_Io;
package body Cl35 is

    Cmd_Beep : constant := 16#2C#;
    Cmd_Rapport_Horloge : constant := 16#24#;
    Cmd_Ack : constant := 16#06#;
    Cmd_En_Veille : constant := 16#2A#;
    Cmd_Hors_Veille : constant := 16#2B#;
    Cmd_Code_Site : constant := 16#27#;
    Cmd_Mise_A_L_Heure : constant := 16#23#;
    Cmd_Rapport_Site : constant := 16#28#;

    procedure Set_Address (Le_Lecteur : out Object; Address : in Addr) is

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

    begin
        return Le_Lecteur.Addr_Lecteur;
    end Get_Address;
    procedure Mise_A_L_Heure (Le_Lecteur : Object;
                              Date_Lecteur : in Date.Object) is
        Send_Message : Cl35_Message.Object (3);
    begin
        Send_Message.Addr_Lecteur := Get_Address (Le_Lecteur);
        Send_Message.Cmd := Cmd_Mise_A_L_Heure;
        Send_Message.Data (1) := Date.Get_Hour (The_Date => Date_Lecteur);
        Send_Message.Data (2) := Date.Get_Minutes (The_Date => Date_Lecteur);
        Send_Message.Data (3) := Date.Get_Day (The_Date => Date_Lecteur);
        Cl35_Message.Write_Msg (Message => Send_Message);
        if not Ack (Le_Lecteur) then
            Text_Io.Put_Line ("Pas d'ack");
        end if;
    end Mise_A_L_Heure;
    procedure Rapport_Horloge (Le_Lecteur : Object;
                               Date_Lecteur : out Date.Object) is
        Send_Message : Cl35_Message.Object (0);
        Rec_Message : Cl35_Message.Object (3);
    begin
        Send_Message.Addr_Lecteur := Get_Address (Le_Lecteur);
        Send_Message.Cmd := Cmd_Rapport_Horloge;
        Cl35_Message.Write_Msg (Message => Send_Message);
        Cl35_Message.Read_Msg (Message => Rec_Message);
        if Rec_Message.Cmd /= Cmd_Rapport_Horloge then
            Text_Io.Put_Line ("Mauvaise cmd");
        end if;

        Date.Set_Day (The_Date => Date_Lecteur,
                      Day_To_Set => Rec_Message.Data (3));
        Date.Set_Hour (The_Date => Date_Lecteur,
                       Hour_To_Set => Rec_Message.Data (1));
        Date.Set_Minutes (The_Date => Date_Lecteur,
                          Minutes_To_Set => Rec_Message.Data (2));
    end Rapport_Horloge;
    procedure Rapport_Site (Le_Lecteur : Object) is
        Send_Message : Cl35_Message.Object (0);
        Rec_Message : Cl35_Message.Object (3);
    begin
        Send_Message.Addr_Lecteur := Get_Address (Le_Lecteur);
        Send_Message.Cmd := Cmd_Rapport_Site;
        Cl35_Message.Write_Msg (Message => Send_Message);
        Cl35_Message.Read_Msg (Message => Rec_Message);
        if Rec_Message.Cmd /= Cmd_Rapport_Site then
            Text_Io.Put_Line ("Mauvaise cmd");
        end if;  
    end Rapport_Site;

    procedure Code_Site (Le_Lecteur : Object; Code_Site : Natural) is
        Message : Cl35_Message.Object (3);
    begin
        Message.Data (1) := Code_Site / 10000;
        Message.Data (2) := (Code_Site - 10000) / 100;
        Message.Data (3) := Code_Site mod 100;
        Message.Addr_Lecteur := Get_Address (Le_Lecteur);
        Message.Cmd := Cmd_Code_Site;
        Cl35_Message.Write_Msg (Message => Message);
        if not Ack (Le_Lecteur) then
            Text_Io.Put_Line ("Pas d'ack");
        end if;

    end Code_Site;
    procedure Beep (Le_Lecteur : Object) is  
        Message : Cl35_Message.Object (0);
    begin
        Message.Addr_Lecteur := Get_Address (Le_Lecteur);
        Message.Cmd := Cmd_Beep;
        Cl35_Message.Write_Msg (Message => Message);
        if not Ack (Le_Lecteur) then
            Text_Io.Put_Line ("Pas d'ack");
        end if;

    end Beep;

    procedure Mise_Hors_Veille (Le_Lecteur : Object) is  
        Message : Cl35_Message.Object (0);
    begin
        Message.Addr_Lecteur := Get_Address (Le_Lecteur);
        Message.Cmd := Cmd_Hors_Veille;
        Cl35_Message.Write_Msg (Message => Message);
        if not Ack (Le_Lecteur) then
            Text_Io.Put_Line ("Pas d'ack");
        end if;

    end Mise_Hors_Veille;

    procedure Mise_En_Veille (Le_Lecteur : Object) is  
        Message : Cl35_Message.Object (0);
    begin
        Message.Addr_Lecteur := Get_Address (Le_Lecteur);
        Message.Cmd := Cmd_En_Veille;
        Cl35_Message.Write_Msg (Message => Message);
        if not Ack (Le_Lecteur) then
            Text_Io.Put_Line ("Pas d'ack");
        end if;

    end Mise_En_Veille;

    function Ack (Le_Lecteur : Object) return Boolean is
        Rec_Message : Cl35_Message.Object (0);

    begin

        Cl35_Message.Read_Msg (Message => Rec_Message);
        if Rec_Message.Addr_Lecteur /= Get_Address (Le_Lecteur) then
            return False;
        end if;

        if Rec_Message.Datalen /= 0 then
            return False;
        end if;

        if Rec_Message.Cmd /= Cmd_Ack then
            return False;
        end if;

        return True;
    end Ack;

    procedure Init is
    begin
        Machine_Io.Flush;
    end Init;

end Cl35;

E3 Meta Data

    nblk1=8
    nid=5
    hdr6=c
        [0x00] rec0=21 rec1=00 rec2=01 rec3=006
        [0x01] rec0=13 rec1=00 rec2=03 rec3=030
        [0x02] rec0=17 rec1=00 rec2=08 rec3=064
        [0x03] rec0=1d rec1=00 rec2=07 rec3=008
        [0x04] rec0=1f rec1=00 rec2=06 rec3=024
        [0x05] rec0=11 rec1=00 rec2=04 rec3=000
        [0x06] rec0=0d rec1=00 rec2=04 rec3=000
        [0x07] rec0=0a rec1=00 rec2=02 rec3=001
    tail 0x217426d5086267c619013 0x42a00088462060003
Free Block Chain:
  0x5: 0000  00 02 00 f5 80 06 6e 64 20 69 66 3b 06 00 00 00  ┆      nd if;    ┆
  0x2: 0000  00 00 01 2f 00 24 20 20 20 20 20 20 20 20 20 20  ┆   / $          ┆