|
|
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: 12288 (0x3000)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Instructions, seg_04969b
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦5a81ac88f⟧ »Space Info Vol 1«
└─⟦this⟧
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;
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 0x21546c3ec865e5b8fc9d7 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┆