|
|
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: 13312 (0x3400)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Driver_Serie, seg_05a2d9
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦cfc2e13cd⟧ »Space Info Vol 2«
└─⟦this⟧
with Simple_Io;
package body Driver_Serie is
task body Tache_Driver_Serie is
Trame_A_Ok : Buffer_Port_A.Etat_Trame := Buffer_Port_A.Autre;
Trame_B_Ok : Buffer_Port_B.Etat_Trame := Buffer_Port_B.Autre;
Trame_Envoi : Buffer_Port_A.Chaine_Trame;
Taille_Trame_Envoi : Integer;
Increment_Envoi : Integer := 1;
Ecriture_Trame_Ok : Boolean := True;
Trame_En_Cours : Boolean := False;
begin
Interface_Serie.Emission_Reception (Interface_Serie.R_Seule);
Interface_Serie.Validation_It (Interface_Serie.R_Ab);
loop
select
--*****************************************************************************
-- Lancement lecture prioritaire
--*****************************************************************************
accept Lecture_Circuit
(Car : in G_Defs.Byte; Port : G_Defs.Port) do
if (G_Defs."=" (Port, G_Defs.Port_A)) then
Trame_A_Ok :=
Buffer_Port_A.Construire_Trame_Reception (Car);
if (Buffer_Port_A."=" (Trame_A_Ok,
Buffer_Port_A.Debut)) then
Trame_En_Cours := True;
elsif (Buffer_Port_A."="
(Trame_A_Ok, Buffer_Port_A.Fin)) then
Trame_En_Cours := False;
end if;
else
Trame_B_Ok :=
Buffer_Port_B.Construire_Trame_Reception (Car);
if (Buffer_Port_B."=" (Trame_B_Ok,
Buffer_Port_B.Debut)) then
Trame_En_Cours := True;
elsif (Buffer_Port_B."="
(Trame_B_Ok, Buffer_Port_B.Fin)) then
Trame_En_Cours := False;
end if;
end if;
end Lecture_Circuit;
else
--***************************************************************************
-- Lancement lecture / ecriture
--*****************************************************************************
select
--===============
-- Lecture
--===============
accept Lecture_Circuit
(Car : in G_Defs.Byte; Port : G_Defs.Port) do
if (G_Defs."=" (Port, G_Defs.Port_A)) then
Trame_A_Ok := Buffer_Port_A.
Construire_Trame_Reception (Car);
if (Buffer_Port_A."=" (Trame_A_Ok,
Buffer_Port_A.Debut)) then
Trame_En_Cours := True;
elsif (Buffer_Port_A."="
(Trame_A_Ok, Buffer_Port_A.Fin)) then
Trame_En_Cours := False;
end if;
else
Trame_B_Ok := Buffer_Port_B.
Construire_Trame_Reception (Car);
if (Buffer_Port_B."=" (Trame_B_Ok,
Buffer_Port_B.Debut)) then
Trame_En_Cours := True;
elsif (Buffer_Port_B."="
(Trame_B_Ok, Buffer_Port_B.Fin)) then
Trame_En_Cours := False;
end if;
end if;
end Lecture_Circuit;
or
when (Buffer_Port_A."=" (Trame_A_Ok, Buffer_Port_A.Fin)) =>
accept Lecture_Trame (Trame : out G_Defs.Byte_String;
Taille : out Integer;
Port : out G_Defs.Port) do
Buffer_Port_A.Extraire_Trame_Reception
(Trame, Taille);
Trame_A_Ok := Buffer_Port_A.Autre;
end Lecture_Trame;
or
when (Buffer_Port_B."=" (Trame_B_Ok, Buffer_Port_B.Fin)) =>
accept Lecture_Trame (Trame : out G_Defs.Byte_String;
Taille : out Integer;
Port : out G_Defs.Port) do
Buffer_Port_B.Extraire_Trame_Reception
(Trame, Taille);
Trame_B_Ok := Buffer_Port_B.Autre;
end Lecture_Trame;
or
--==================
-- Ecriture
--==================
accept Ecriture_Trame (Trame : in G_Defs.Byte_String;
Port : G_Defs.Port) do
Buffer_Port_A.Construire_Trame_Emission
(Trame, Trame_Envoi, Taille_Trame_Envoi);
Interface_Serie.Envoi_Donnee_Par_It (Type_Port => Port);
Increment_Envoi := 1;
while (Increment_Envoi <= Taille_Trame_Envoi) loop
accept Ecriture_Circuit (Car : out G_Defs.Byte;
N_Port : G_Defs.Port) do
Interface_Serie.Validation_It
(Sorte => Interface_Serie.R_Ab);
Car := Trame_Envoi (Increment_Envoi);
Increment_Envoi := Increment_Envoi + 1;
if (Increment_Envoi <= Taille_Trame_Envoi) then
Interface_Serie.Envoi_Donnee_Par_It
(Type_Port => N_Port);
end if;
end Ecriture_Circuit;
end loop;
end Ecriture_Trame;
or
-- when trame_en_cours = true
delay 100.0;
end select;
end select;
end loop;
end Tache_Driver_Serie;
end Driver_Serie;
nblk1=c
nid=9
hdr6=e
[0x00] rec0=1a rec1=00 rec2=01 rec3=028
[0x01] rec0=11 rec1=00 rec2=05 rec3=080
[0x02] rec0=14 rec1=00 rec2=0a rec3=086
[0x03] rec0=15 rec1=00 rec2=03 rec3=010
[0x04] rec0=10 rec1=00 rec2=07 rec3=046
[0x05] rec0=12 rec1=00 rec2=0b rec3=01e
[0x06] rec0=14 rec1=00 rec2=02 rec3=000
[0x07] rec0=11 rec1=00 rec2=02 rec3=03a
[0x08] rec0=13 rec1=00 rec2=09 rec3=000
[0x09] rec0=0c rec1=00 rec2=08 rec3=000
[0x0a] rec0=08 rec1=00 rec2=0a rec3=000
[0x0b] rec0=e3 rec1=80 rec2=00 rec3=000
tail 0x21769c02489249170bc30 0x42a00088462060003
Free Block Chain:
0x9: 0000 00 04 02 53 80 11 54 72 61 6d 65 5f 45 6e 76 6f ┆ S Trame_Envo┆
0x4: 0000 00 08 00 09 80 06 5f 53 65 72 69 65 06 20 20 20 ┆ _Serie ┆
0x8: 0000 00 0c 00 06 80 03 74 20 47 03 20 47 06 07 08 09 ┆ t G G ┆
0xc: 0000 00 06 00 05 80 02 2a 2a 02 00 34 f4 aa cd 83 42 ┆ ** 4 B┆
0x6: 0000 00 00 03 fc 80 08 2a 2a 2a 2a 2a 2a 2a 2a 08 00 ┆ ******** ┆