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

⟦9efc8f1e0⟧ Ada Source

    Length: 12288 (0x3000)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Instructions, seg_049909

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦5a81ac88f⟧ »Space Info Vol 1« 
        └─⟦this⟧ 

E3 Source Code



with Variables, Our_List, Our_String, Text_Io;

package body Instructions is

    List_Of_Instructions : Our_Inst.List;
    Iter1 : Our_Inst.Iter;
    Iter2 : Our_Inst.Iter;
    Iter3 : Our_Inst.Iter;
    Iter4 : Our_Inst.Iter;
    Iter5 : Our_Inst.Iter;
    Current_Iter : Our_Inst.Iter;
    Seen_Aff_Comp : Boolean := False;
    First_Cell : Boolean := True;
    Current_Object : Our_Inst.Object;

    Name_Left : Our_String.Variable_String;
    Ext1_Left : Our_String.Variable_String;
    Ext2_Left : Our_String.Variable_String;
    Comp_Or_Affect : Our_String.Variable_String;
    Value : Our_String.Variable_String;
    Name_Right : Our_String.Variable_String;
    Ext1_Right : Our_String.Variable_String;
    Ext2_Right : Our_String.Variable_String;
    Operation : Our_String.Variable_String;
    The_Integer : Our_String.Variable_String;



    Level : Natural := 0;

    procedure Set_Name (The_Name : String) is

    begin
        if not (Seen_Aff_Comp) then
            Our_String.Copy (Name_Left, The_Name);
            First_Cell := False;
        else

            Our_String.Copy (Name_Right, The_Name);
        end if;
    end Set_Name;

    procedure Set_Ext1 (The_Ext1 : String) is

    begin
        if not (Seen_Aff_Comp) then
            Our_String.Copy (Ext1_Left, The_Ext1);
        else
            Our_String.Copy (Ext1_Right, The_Ext1);
        end if;
    end Set_Ext1;

    procedure Set_Ext2 (The_Ext2 : String) is

    begin
        if not (Seen_Aff_Comp) then
            Our_String.Copy (Ext2_Left, The_Ext2);
        else
            Our_String.Copy (Ext2_Right, The_Ext2);
        end if;

    end Set_Ext2;

    procedure Set_Value (The_Value : String) is

    begin
        Our_String.Copy (Value, The_Value);
    end Set_Value;

    procedure Set_Comp_Or_Affect (The_Comp_Or_Affect : String) is

    begin
        Our_String.Copy (Comp_Or_Affect, The_Comp_Or_Affect);
        Seen_Aff_Comp := True;
    end Set_Comp_Or_Affect;

    procedure Set_Operation (The_Operation : String) is

    begin
        Our_String.Copy (Operation, The_Operation);
    end Set_Operation;

    procedure Set_Integer (The_The_Integer : String) is

    begin
        Our_String.Copy (The_Integer, The_The_Integer);
    end Set_Integer;

    function Get_Seen_Aff_Comp return Boolean is

    begin
        return Seen_Aff_Comp;
    end Get_Seen_Aff_Comp;

    procedure Seen_Aff_Comp_True is

    begin
        Seen_Aff_Comp := True;
    end Seen_Aff_Comp_True;

    procedure Affect_All is

    begin
        Current_Object := Our_Inst.Affect (Our_String.Image (Name_Left),
                                           Our_String.Image (Ext1_Left),
                                           Our_String.Image (Ext2_Left),
                                           Our_String.Image (Comp_Or_Affect),
                                           Our_String.Image (Value),
                                           Our_String.Image (Name_Right),
                                           Our_String.Image (Ext1_Right),
                                           Our_String.Image (Ext2_Right),
                                           Our_String.Image (Operation),
                                           Our_String.Image (The_Integer));

    end Affect_All;

    procedure Attach_Current_List is
        Tmp_List : Our_Inst.List;
    begin
        if Level = 0 then
            --Text_Io.Put_Line ("j'attache dans la liste principale,avant");
            Our_Inst.Attach (List_Of_Instructions, Current_Object);
            --Text_Io.Put_Line ("j'attache dans la liste principale,apres");

            Tmp_List := Our_Inst.Go_To_End (List_Of_Instructions);
            Iter1 := Our_Inst.Makelistiter (Tmp_List);
        elsif Level = 1 then
            --Text_Io.Put_Line ("j'attache dans la liste 1,avant");
            Our_Inst.Attach (Iter1.Info.Pointer, Current_Object);
            --Text_Io.Put_Line ("j'attache dans la liste 1,apres");

            Tmp_List := Our_Inst.Go_To_End (Iter1.Info.Pointer);
            Iter2 := Our_Inst.Makelistiter (Tmp_List);
        elsif Level = 2 then
            --Text_Io.Put_Line ("j'attache dans la liste 2,avant");
            Our_Inst.Attach (Iter2.Info.Pointer, Current_Object);
            --Text_Io.Put_Line ("j'attache dans la liste 2,apres");

            Tmp_List := Our_Inst.Go_To_End (Iter2.Info.Pointer);
            Iter3 := Our_Inst.Makelistiter (Tmp_List);

        elsif Level = 3 then
            --Text_Io.Put_Line ("j'attache dans la liste 3,avant");
            Our_Inst.Attach (Iter3.Info.Pointer, Current_Object);
            --Text_Io.Put_Line ("j'attache dans la liste 3,apres");

            Tmp_List := Our_Inst.Go_To_End (Iter3.Info.Pointer);
            Iter4 := Our_Inst.Makelistiter (Tmp_List);
        elsif Level = 4 then
            --Text_Io.Put_Line ("j'attache dans la liste 4,avant");
            Our_Inst.Attach (Iter4.Info.Pointer, Current_Object);
            --Text_Io.Put_Line ("j'attache dans la liste 4,apres");

            Tmp_List := Our_Inst.Go_To_End (Iter4.Info.Pointer);
            Iter5 := Our_Inst.Makelistiter (Tmp_List);
        elsif Level = 5 then
            --Text_Io.Put_Line ("j'attache dans la liste 5,avant");
            Our_Inst.Attach (Iter5.Info.Pointer, Current_Object);
            --Text_Io.Put_Line ("j'attache dans la liste 5,apres");
        end if;

    end Attach_Current_List;

    procedure Add_Level is

    begin
        Level := Level + 1;
    end Add_Level;

    procedure Sub_Level is

    begin
        Level := Level - 1;
    end Sub_Level;

    function Get_Level return Natural is

    begin
        return Level;
    end Get_Level;

    procedure Iter_On_Left_Variable is

    begin
        Variables.Init_Current_Variable
           (Our_String.Image (Current_Iter.Info.Name_Left));
        if Our_String.Image (Current_Iter.Info.Ext1_Left) /= "" then
            Variables.Set_Current_Variable1
               (Our_String.Image (Current_Iter.Info.Ext1_Left));
            if Our_String.Image (Current_Iter.Info.Ext2_Left) /= "" then
                Variables.Set_Current_Variable2
                   (Our_String.Image (Current_Iter.Info.Ext2_Left));
            end if;
        end if;
    end Iter_On_Left_Variable;

    procedure Iter_On_Right_Variable is

    begin
        Variables.Init_Current_Variable (Our_String.Image
                                            (Current_Iter.Info.Name_Right));
        if Our_String.Image (Current_Iter.Info.Ext1_Right) /= "" then
            Variables.Set_Current_Variable1 (Our_String.Image
                                                (Current_Iter.Info.Ext1_Right));
            if Our_String.Image (Current_Iter.Info.Ext2_Right) /= "" then
                Variables.Set_Current_Variable2
                   (Our_String.Image (Current_Iter.Info.Ext2_Right));
            end if;
        end if;
    end Iter_On_Right_Variable;

    procedure Reset_Global_Var is

    begin
        Seen_Aff_Comp := False;
        Our_String.Free (Name_Left);
        Our_String.Free (Ext1_Left);
        Our_String.Free (Ext2_Left);
        Our_String.Free (Comp_Or_Affect);
        Our_String.Free (Value);
        Our_String.Free (Name_Right);
        Our_String.Free (Ext1_Right);
        Our_String.Free (Ext2_Right);
        Our_String.Free (Operation);
        Our_String.Free (The_Integer);

    end Reset_Global_Var;

    procedure Set_First_Cell_True is

    begin
        First_Cell := True;
    end Set_First_Cell_True;

    function Get_First_Cell return Boolean is

    begin
        return First_Cell;
    end Get_First_Cell;

    procedure Printall is

    begin
        Our_Inst.Printall (Our_Inst.Makelistiter (List_Of_Instructions));
    end Printall;

    function Get_List_Of_Instructions return Our_Inst.List is

    begin
        return List_Of_Instructions;
    end Get_List_Of_Instructions;
end Instructions;

E3 Meta Data

    nblk1=b
    nid=a
    hdr6=14
        [0x00] rec0=23 rec1=00 rec2=01 rec3=01e
        [0x01] rec0=01 rec1=00 rec2=09 rec3=032
        [0x02] rec0=27 rec1=00 rec2=02 rec3=038
        [0x03] rec0=22 rec1=00 rec2=08 rec3=088
        [0x04] rec0=15 rec1=00 rec2=06 rec3=046
        [0x05] rec0=15 rec1=00 rec2=05 rec3=02a
        [0x06] rec0=18 rec1=00 rec2=0b rec3=00e
        [0x07] rec0=1d rec1=00 rec2=07 rec3=012
        [0x08] rec0=1e rec1=00 rec2=03 rec3=00a
        [0x09] rec0=14 rec1=00 rec2=04 rec3=000
        [0x0a] rec0=e7 rec1=33 rec2=80 rec3=000
    tail 0x21546f072865e6bcbf2a7 0x42a00088462060003
Free Block Chain:
  0xa: 0000  00 00 01 94 80 1c 63 68 65 20 64 61 6e 73 20 6c  ┆      che dans l┆