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

⟦3e19402bd⟧ Ada Source

    Length: 3072 (0xc00)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, generic, package Cl35_Message, seg_04cc79, seg_04cd63

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦5a81ac88f⟧ »Space Info Vol 1« 
        └─⟦this⟧ 
└─⟦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;
with My_Types;

generic

    Type_Of_Msg : My_Types.Msg_Type;

package Cl35_Message is

    package Mt renames My_Types;
    subtype Split_Sz is Natural range 0 .. 239;
    Bad_Ack : exception;
    Bad_Header : exception;
    Bad_Trailer : exception;
    Bad_Size : exception;
    type Object (Of_Type : Mt.Msg_Type := Type_Of_Msg) is private;
    procedure Write_Msg (Message : in Object);
    procedure Read_Msg (Message : in out Object);

    procedure Flush;
    procedure Make (Message : out Object;
                    Addr_Lecteur : in Cl35.Addr;
                    Cmd : Mt.Byte;
                    Data : in Mt.Bs_Access := Mt.Null_String);
    procedure Address (Message : out Object; Addr_Lecteur : in Cl35.Addr);
    function Address (Message : in Object) return Cl35.Addr;  
    procedure Free (Message : in out Object);
    procedure Msg_Cmd (Message : out Object; Cmd : in Mt.Byte);
    function Msg_Cmd (Message : in Object) return Mt.Byte;
    procedure Msg_Data (Message : out Object; Data : in Mt.Bs_Access);
    function Msg_Data (Message : in Object) return Mt.Bs_Access;
    procedure Split_Size (Message : in out Object; Size : in Split_Sz);
    function Split_Size (Message : in Object) return Split_Sz;
private
    type Object (Of_Type : Mt.Msg_Type := Type_Of_Msg) is
        record
            Addr_Lecteur : Cl35.Addr;
            Cmd : Mt.Byte;
            Data : Mt.Bs_Access := Mt.Null_String;
            case Of_Type is
                when Mt.With_Ack =>
                    Need_Ack : Boolean := True;
                when Mt.With_Response =>
                    null;
                when Mt.Response =>
                    Split_Size : Split_Sz := 0;
            end case;  
        end record;
end Cl35_Message;

E3 Meta Data

    nblk1=2
    nid=0
    hdr6=4
        [0x00] rec0=1e rec1=00 rec2=01 rec3=05e
        [0x01] rec0=15 rec1=00 rec2=02 rec3=000
    tail 0x215496b64874f6e266230 0x42a00088462060003