|
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: 9216 (0x2400) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Cl35, seg_041b63
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─⟦cfc2e13cd⟧ »Space Info Vol 2« └─⟦this⟧
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;
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 ┆ / $ ┆