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

⟦d6b30b64f⟧ Ada Source

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

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;

        Max_Blocks : constant Integer := 20;  
        type Blocks is
            record  
                Label        : Character;
                Pos_X, Pos_Y : Integer;
            end record;  
        Environment : array (1 .. Max_Blocks) of Blocks;


        procedure Load_And_Display_Blocks is
        begin  
            Environment (1)  := (Label => 'Z', Pos_X => 2, Pos_Y => 1);
            Environment (2)  := (Label => 'R', Pos_X => 2, Pos_Y => 2);
            Environment (3)  := (Label => 'P', Pos_X => 2, Pos_Y => 3);
            Environment (4)  := (Label => 'G', Pos_X => 3, Pos_Y => 1);
            Environment (5)  := (Label => 'U', Pos_X => 3, Pos_Y => 2);
            Environment (6)  := (Label => 'L', Pos_X => 3, Pos_Y => 3);
            Environment (7)  := (Label => 'M', Pos_X => 7, Pos_Y => 1);
            Environment (8)  := (Label => 'L', Pos_X => 8, Pos_Y => 1);
            Environment (9)  := (Label => 'T', Pos_X => 5, Pos_Y => 1);
            Environment (10) := (Label => 'V', Pos_X => 5, Pos_Y => 2);
            Environment (11) := (Label => 'U', Pos_X => 6, Pos_Y => 1);
            Environment (12) := (Label => 'L', Pos_X => 4, Pos_Y => 1);
            Environment (13) := (Label => 'R', Pos_X => 9, Pos_Y => 1);
            Environment (14) := (Label => 'L', Pos_X => 10, Pos_Y => 1);
            Environment (15) := (Label => 'N', Pos_X => 11, Pos_Y => 1);
            Environment (19) := (Label => 'S', Pos_X => 6, Pos_Y => 2);  
            Environment (20) := (Label => 'W', Pos_X => 6, Pos_Y => 3);

            -- the model
            Environment (16) := (Label => 'T', Pos_X => 12, Pos_Y => 1);
            Environment (17) := (Label => 'U', Pos_X => 12, Pos_Y => 2);
            Environment (18) := (Label => 'Z', Pos_X => 12, Pos_Y => 3);

            for I in 1 .. Max_Blocks loop
                Visual_Blocks.Add
                   ((Label      => Value (Environment (I).Label),
                     Position_X => Min_X + Value (Environment (I).Pos_X - 1),
                     Position_Y => Min_Y + Value (Environment (I).Pos_Y - 1)));
                Fruit_Display_Environment_4.Print_One_Block
                   (Get (Min_X) + Environment (I).Pos_X - 1,
                    Get (Min_Y) + Environment (I).Pos_Y - 1,
                    (Environment (I).Label));
            end loop;
        end Load_And_Display_Blocks;


        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_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=b
    nid=6
    hdr6=10
        [0x00] rec0=27 rec1=00 rec2=01 rec3=018
        [0x01] rec0=0d rec1=00 rec2=09 rec3=07e
        [0x02] rec0=17 rec1=00 rec2=08 rec3=00a
        [0x03] rec0=03 rec1=00 rec2=0b rec3=06e
        [0x04] rec0=10 rec1=00 rec2=03 rec3=04a
        [0x05] rec0=18 rec1=00 rec2=05 rec3=06e
        [0x06] rec0=17 rec1=00 rec2=07 rec3=012
        [0x07] rec0=04 rec1=00 rec2=04 rec3=000
        [0x08] rec0=17 rec1=00 rec2=07 rec3=012
        [0x09] rec0=04 rec1=00 rec2=04 rec3=000
        [0x0a] rec0=13 rec1=00 rec2=04 rec3=000
    tail 0x21751bd30869263c8b5cd 0x42a00088462063c03
Free Block Chain:
  0x6: 0000  00 02 00 3a 00 37 20 20 20 20 20 20 20 20 20 20  ┆   : 7          ┆
  0x2: 0000  00 0a 00 09 80 06 6c 20 3d 3e 20 27 06 20 20 20  ┆      l => '    ┆
  0xa: 0000  00 00 00 06 80 03 6e 74 20 03 20 20 20 50 08 20  ┆      nt     P  ┆