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

⟦37fc94a01⟧ Ada Source

    Length: 8192 (0x2000)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Tiny_End, seg_036460

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 Bounded_String;
with Easy_Y;

package body Tiny_End is
    procedure Rectangle (X, Y : Object.Index; Title : Object.Tiny_String) is
        use Object;
    begin
        Easy_Y.Line (X, Y, X + 110, Y);
        Easy_Y.Line (X + 110, Y, X + 110, Y + 40);
        Easy_Y.Line (X + 110, Y + 40, X, Y + 40);
        Easy_Y.Line (X, Y + 40, X, Y);

        Easy_Y.Line (X + 5, Y + 5, X + 105, Y + 5);
        Easy_Y.Line (X + 105, Y + 5, X + 105, Y + 35);
        Easy_Y.Line (X + 105, Y + 35, X + 5, Y + 35);
        Easy_Y.Line (X + 5, Y + 35, X + 5, Y + 5);

        Easy_Y.Print (X1 => X + Object.Index
                                   (55 - 4 * Bounded_String.Length (Title)),
                      Y1 => Y + 25,
                      The_String => Title);
    end Rectangle;


    procedure Push (X, Y : Object.Index; Title : Object.Tiny_String) is
        use Object;
    begin
        Easy_Y.Line (X, Y + 1, X + 110, Y + 1);
        Easy_Y.Line (X + 109, Y, X + 109, Y + 40);
        Easy_Y.Line (X + 110, Y + 39, X, Y + 39);
        Easy_Y.Line (X + 1, Y + 40, X + 1, Y);

        Easy_Y.Line (X + 5, Y + 5, X, Y);
        Easy_Y.Line (X + 105, Y + 5, X + 110, Y);
        Easy_Y.Line (X + 105, Y + 35, X + 110, Y + 40);
        Easy_Y.Line (X + 5, Y + 35, X, Y + 40);

        Easy_Y.Print (X1 => X + Object.Index
                                   (56 - 4 * Bounded_String.Length (Title)),
                      Y1 => Y + 26,
                      The_String => Title);
        delay (1.0);
    end Push;


    function In_Area (X, Y : Object.Index) return Boolean is
        use Object;
    begin
        if X <= Easy_Y.Get_X_Mouse and then
           Easy_Y.Get_X_Mouse <= X + 110 and then
           Y <= Easy_Y.Get_Y_Mouse and then
           Easy_Y.Get_Y_Mouse <= Y + 40 then
            return True;
        else
            return False;
        end if;
    end In_Area;


    function Choice (X, Y : Object.Index; Screen : String) return E_Choice is
        Essai : Easy_Y.Window_Type;
        Str : Object.Tiny_String;
    begin
        Bounded_String.Copy (Str, "Fin du programme Tiny_Talk");
        Easy_Y.Put_Title (Window => Essai, Title => Str);
        Easy_Y.Put_Left (Window => Essai, Left => X);
        Easy_Y.Put_Right (Window => Essai, Right => Y);
        Easy_Y.Put_Width (Window => Essai, Width => 500);
        Easy_Y.Put_Height (Window => Essai, Height => 100);
        Easy_Y.Open (Display => Screen, Window => Essai);
        Easy_Y.Put_Font (To => Easy_Y.Medium_Font);

        loop
            case Easy_Y.Next_Event is
                when Easy_Y.Update =>
                    Bounded_String.Copy (Str, "Fin");
                    Rectangle (X => 30, Y => 35, Title => Str);

                    Bounded_String.Copy (Str, "Unparse");
                    Rectangle (X => 195, Y => 35, Title => Str);

                    Bounded_String.Copy (Str, "Recommencer");
                    Rectangle (X => 360, Y => 35, Title => Str);

                when Easy_Y.Button_Down =>
                    if In_Area (50, 35) then
                        Bounded_String.Copy (Str, "Fin");
                        Push (X => 30, Y => 35, Title => Str);
                        return E_Choice (Fin);
                    elsif In_Area (200, 35) then
                        Bounded_String.Copy (Str, "Unparse");
                        Push (X => 195, Y => 35, Title => Str);
                        return E_Choice (Unparse);
                    elsif In_Area (350, 35) then
                        Bounded_String.Copy (Str, "Recommencer");
                        Push (X => 360, Y => 35, Title => Str);
                        return E_Choice (Recommencer);
                    end if;

                when Easy_Y.Button_Up =>
                    null;
                when others =>
                    null;
            end case;
        end loop;
    end Choice;
end Tiny_End;


E3 Meta Data

    nblk1=7
    nid=4
    hdr6=a
        [0x00] rec0=1e rec1=00 rec2=01 rec3=030
        [0x01] rec0=1f rec1=00 rec2=05 rec3=02a
        [0x02] rec0=16 rec1=00 rec2=02 rec3=054
        [0x03] rec0=16 rec1=00 rec2=06 rec3=024
        [0x04] rec0=05 rec1=00 rec2=03 rec3=000
        [0x05] rec0=04 rec1=00 rec2=04 rec3=000
        [0x06] rec0=62 rec1=64 rec2=00 rec3=01f
    tail 0x217333ff484de657dccef 0x42a00088462060003
Free Block Chain:
  0x4: 0000  00 07 00 37 80 0c 20 20 20 65 6e 64 20 6c 6f 6f  ┆   7     end loo┆
  0x7: 0000  00 00 00 04 80 01 74 01 02 03 00 00 00 00 00 00  ┆      t         ┆