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

⟦01fd1581f⟧ Ada Source

    Length: 9216 (0x2400)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Fruit_Display_Working_Memory_4, seg_04beb0

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 Slot;
with Output_Stream;
with Fruit_Display_Environment_4;

use Slot;


package body Fruit_Display_Working_Memory_4 is
    use Kbs;
    use Fruit_Frames_4;


    procedure Default_Put is  
        use Output_Stream;
        use Fact_Base;
    begin
        Working_Memory.Default_Put (Standard_Output);
    end Default_Put;


    procedure Load_Initial is  
        use Slot.Operators;

        procedure Load_And_Display_Blocks is
        begin  
            Visual_Blocks.Add ((Label      => Value ('Z'),
                                Position_X => Min_X + Value (1),
                                Position_Y => Min_Y));
            Visual_Blocks.Add ((Label      => Value ('U'),
                                Position_X => Min_X + Value (3),
                                Position_Y => Min_Y));
            Visual_Blocks.Add ((Label      => Value ('T'),
                                Position_X => Min_X + Value (2),
                                Position_Y => Min_Y));
            Visual_Blocks.Add ((Label      => Value ('A'),
                                Position_X => Min_X + Value (2),
                                Position_Y => Min_Y + Value (1)));
            Visual_Blocks.Add ((Label      => Value ('P'),
                                Position_X => Min_X + Value (2),
                                Position_Y => Min_Y + Value (2)));
            Visual_Blocks.Add ((Label      => Value ('O'),
                                Position_X => Min_X + Value (6),
                                Position_Y => Min_Y));
            Fruit_Display_Environment_4.Print_One_Block
               (Get (Min_X) + 1, Get (Min_Y), 'Z');
            Fruit_Display_Environment_4.Print_One_Block
               (Get (Min_X) + 2, Get (Min_Y), 'T');
            Fruit_Display_Environment_4.Print_One_Block
               (Get (Min_X) + 3, Get (Min_Y), 'U');
            Fruit_Display_Environment_4.Print_One_Block
               (Get (Min_X) + 2, Get (Min_Y) + 1, 'A');
            Fruit_Display_Environment_4.Print_One_Block
               (Get (Min_X) + 2, Get (Min_Y) + 2, 'P');
            Fruit_Display_Environment_4.Print_One_Block
               (Get (Min_X) + 6, Get (Min_Y), 'O');
        end Load_And_Display_Blocks;

        procedure Load_And_Display_Model is
        begin  
            Visual_Blocks.Add ((Label      => Value ('Z'),
                                Position_X => Max_X,
                                Position_Y => Min_Y + Value (2)));
            Visual_Blocks.Add ((Label      => Value ('U'),
                                Position_X => Max_X,
                                Position_Y => Min_Y + Value (1)));
            Visual_Blocks.Add ((Label      => Value ('T'),
                                Position_X => Max_X,
                                Position_Y => Min_Y));
            Fruit_Display_Environment_4.Print_One_Block
               (Get (Max_X), Get (Min_Y) + 2, 'Z');
            Fruit_Display_Environment_4.Print_One_Block
               (Get (Max_X), Get (Min_Y) + 1, 'U');
            Fruit_Display_Environment_4.Print_One_Block
               (Get (Max_X), Get (Min_Y), 'T');
        end Load_And_Display_Model;

        procedure Load_Visual_Markers is
        begin
            Visual_Markers.Add ((Marker_Name => Model_Marker_Name,
                                 Position_X  => Min_X,
                                 Position_Y  => Max_Y));
            Visual_Markers.Add ((Marker_Name =>
                                    New_Top_Copied_Model_Marker_Name,
                                 Position_X  => Min_X,
                                 Position_Y  => Max_Y));
            Visual_Markers.Add ((Marker_Name => On_Table_Marker_Name,
                                 Position_X  => Min_X,
                                 Position_Y  => Max_Y));
            Visual_Markers.Add ((Marker_Name => Selected_Block_Marker_Name,
                                 Position_X  => Min_X,
                                 Position_Y  => Max_Y));
            Visual_Markers.Add ((Marker_Name => Top_Block_Marker_Name,
                                 Position_X  => Min_X,
                                 Position_Y  => Max_Y));
            Visual_Markers.Add ((Marker_Name => Top_Copied_Model_Marker_Name,
                                 Position_X  => Min_X,
                                 Position_Y  => Max_Y));
            Visual_Markers.Add ((Marker_Name => Search_Top_Block_Marker_Name,
                                 Position_X  => Min_X,
                                 Position_Y  => Max_Y));
        end Load_Visual_Markers;

        procedure Load_Columns is  
            use Slot;
        begin  
            for I in Integer'(Get (Min_X)) .. Integer'(Get (Max_X)) loop
                Visual_Columns.Add ((Position_X => Value (I)));
            end loop;
        end Load_Columns;

        procedure Put_Model_Marker_On_Bottom_Right is
        begin  
            Requests.Add ((Request_Name => Move_Request_Name,
                           Marker_Name  => Model_Marker_Name,
                           Argument1    => Down_Direction,
                           Argument2    => Max_Y));
            Requests.Add ((Request_Name => Move_Request_Name,
                           Marker_Name  => Model_Marker_Name,
                           Argument1    => Right_Direction,
                           Argument2    => Max_X));  
            Markers.Add ((Marker_Name => Model_Marker_Name));
        end Put_Model_Marker_On_Bottom_Right;

        procedure Put_New_Copied_Model_Marker_On_Bottom_Right is
        begin  
            Requests.Add ((Request_Name => Move_Request_Name,
                           Marker_Name  => New_Top_Copied_Model_Marker_Name,
                           Argument1    => Down_Direction,
                           Argument2    => Max_Y));
            Requests.Add ((Request_Name => Move_Request_Name,
                           Marker_Name  => New_Top_Copied_Model_Marker_Name,
                           Argument1    => Left_Direction,
                           Argument2    => Max_X));
            Markers.Add ((Marker_Name => New_Top_Copied_Model_Marker_Name));
        end Put_New_Copied_Model_Marker_On_Bottom_Right;

    begin  
        Load_Columns;
        Load_And_Display_Blocks;
        Load_And_Display_Model;  
        Load_Visual_Markers;
        Put_Model_Marker_On_Bottom_Right;
        Put_New_Copied_Model_Marker_On_Bottom_Right;
    end Load_Initial;


end Fruit_Display_Working_Memory_4;

E3 Meta Data

    nblk1=8
    nid=6
    hdr6=e
        [0x00] rec0=23 rec1=00 rec2=01 rec3=018
        [0x01] rec0=10 rec1=00 rec2=02 rec3=06e
        [0x02] rec0=14 rec1=00 rec2=08 rec3=030
        [0x03] rec0=13 rec1=00 rec2=03 rec3=070
        [0x04] rec0=14 rec1=00 rec2=05 rec3=01e
        [0x05] rec0=14 rec1=00 rec2=07 rec3=044
        [0x06] rec0=13 rec1=00 rec2=04 rec3=000
        [0x07] rec0=0f rec1=00 rec2=06 rec3=001
    tail 0x217517c0e86914bdd9b81 0x42a00088462063c03
Free Block Chain:
  0x6: 0000  00 00 00 05 80 02 64 5f 02 20 20 20 20 20 20 20  ┆      d_        ┆