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

⟦4db28f006⟧ Ada Source

    Length: 7168 (0x1c00)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Com_Storage_Recep, seg_0557b5

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 Com_Fifo_Recep, Text_Manager, Bounded_String;

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 : ");
                    Text_Manager.Text.Put_Line
                       (Bounded_String.Image
                           (Bounded_String.Variable_String (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;

E3 Meta Data

    nblk1=6
    nid=6
    hdr6=a
        [0x00] rec0=1b rec1=00 rec2=01 rec3=00a
        [0x01] rec0=00 rec1=00 rec2=04 rec3=01e
        [0x02] rec0=15 rec1=00 rec2=02 rec3=020
        [0x03] rec0=17 rec1=00 rec2=05 rec3=00e
        [0x04] rec0=10 rec1=00 rec2=03 rec3=000
        [0x05] rec0=43 rec1=dc rec2=ac rec3=210
    tail 0x2175feafe87bd73406917 0x42a00088462060003
Free Block Chain:
  0x6: 0000  00 00 00 23 80 20 69 66 20 53 74 6f 72 61 67 65  ┆   #  if Storage┆