|
|
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: 7168 (0x1c00)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Com_Storage_Recep, seg_056adc
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦cfc2e13cd⟧ »Space Info Vol 2«
└─⟦this⟧
with Com_Fifo_Recep, Text_Manager, Com_Defs;
package body Com_Storage_Recep is
type Array_Unit is
record
Data : Com_Fifo_Recep.Queue;
In_Use : Boolean := False;
end record;
task body Manager_Storage is
Exit_Flag : Boolean := False;
Max_Appli : Integer := 10;
New_Counter : Com_Defs.Com_Number := 1;
New_Status : Boolean := False;
Storage_Array : array (0 .. Max_Appli) of Array_Unit;
begin
Text_Manager.Text.Put_Line ("Task Manager Array is Running");
loop
select
accept New_Appli (Appli_Number : out Com_Defs.Com_Number;
Status : out Boolean) do
New_Counter := 1;
Appli_Number := 0;
Status := False;
New_Status := False;
while New_Counter < Max_Appli and New_Status = False loop
if Storage_Array (New_Counter).In_Use = False then
New_Status := True;
Appli_Number := New_Counter;
Storage_Array (New_Counter).In_Use := True;
Status := True;
else
New_Counter := New_Counter + 1;
end if;
end loop;
end New_Appli;
or
accept Remove_Appli (Appli_Number : in Com_Defs.Com_Number) do
Com_Fifo_Recep.Make_Empty
(Storage_Array (Appli_Number).Data);
Storage_Array (Appli_Number).In_Use := False;
end Remove_Appli;
or
accept Read (Appli_Number : in Com_Defs.Com_Number;
Data : out Com_Defs.V_String;
Status : out Boolean) do
if Com_Fifo_Recep.Is_Empty
(Storage_Array (Appli_Number).Data) then
Status := False;
else
Data := Com_Fifo_Recep.First
(Storage_Array (Appli_Number).Data);
-- Text_Manager.Text.Put_Line
-- ("task manager storage is reading : ");
Com_Fifo_Recep.Delete
(Storage_Array (Appli_Number).Data);
Status := True;
end if;
end Read;
or
accept Write (Appli_Number : in Com_Defs.Com_Number;
Data : in Com_Defs.V_String) do
-- Text_Manager.Text.Put_Line
-- ("task manager storage is writing : " &
-- Com_Defs.Image (Data));
Com_Fifo_Recep.Add
(Storage_Array (Appli_Number).Data, Data);
end Write;
or
accept Finish do
Exit_Flag := True;
end Finish;
else
null;
end select;
exit when Exit_Flag = True;
end loop;
Text_Manager.Text.Put_Line ("Task Manager Array is halted");
end Manager_Storage;
end Com_Storage_Recep;
nblk1=6
nid=6
hdr6=a
[0x00] rec0=1b rec1=00 rec2=01 rec3=016
[0x01] rec0=00 rec1=00 rec2=04 rec3=012
[0x02] rec0=15 rec1=00 rec2=02 rec3=020
[0x03] rec0=16 rec1=00 rec2=05 rec3=04c
[0x04] rec0=0f rec1=00 rec2=03 rec3=000
[0x05] rec0=43 rec1=dc rec2=ac rec3=210
tail 0x21763141487c53e356e10 0x42a00088462060003
Free Block Chain:
0x6: 0000 00 00 00 23 80 20 69 66 20 53 74 6f 72 61 67 65 ┆ # if Storage┆