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

⟦f953437f8⟧ Ada Source

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

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;
with Message;
with Requester;
with Text_Io;

package body Class_New_Printer is
    procedure Open (X, Y : Object.Index; Screen : String) is
        use Object;
    begin
        The_Left := X;
        The_Right := Y;
        The_Screen := Bounded_String.Value (Screen, 80);

        Easy_Y.Put_Title (Window => Unparse_Window,
                          Title => Bounded_String.Value ("Unparse", 80));
        Easy_Y.Put_Left (Window => Unparse_Window, Left => The_Left);
        Easy_Y.Put_Right (Window => Unparse_Window, Right => The_Right);
        Easy_Y.Put_Width (Window => Unparse_Window, Width => The_Width);
        Easy_Y.Put_Height (Window => Unparse_Window, Height => The_Height);
        Easy_Y.Open (Display => Bounded_String.Image (The_Screen),
                     Window => Unparse_Window);
        Easy_Y.Put_Font (To => Easy_Y.Small_Font);
        Easy_Y.Put_Size (Window => Unparse_Window, Size => 1);

        Line_Max := The_Height / 16;
    end Open;

    procedure Close is
    begin
        Easy_Y.Close (Window => Unparse_Window);
    end Close;

    procedure Go_Ahead (Number : in Integer) is
    begin
        if Number > 0 then
            Position := Position + Number;
        end if;
    end Go_Ahead;

    procedure Go_Back (Number : in Integer) is
    begin
        if Number > 0 then
            Position := Position - Number;
        end if;
        if Position < 0 then
            Position := 0;
        end if;
    end Go_Back;

    procedure Put (Str : String) is
        use Object;
    begin
        Bounded_String.Append (The_String, Str);
        Easy_Y.Print ((Position * 8), Line_Number * 16, The_String);
    end Put;

    procedure Put_Blanck is
        use Object;
        Blanck : String (1 .. Positive (Position)) :=
           (1 .. Positive (Position) => ' ');
    begin
        Bounded_String.Append (Table (Table_Index), Blanck);
    end Put_Blanck;

    procedure New_Line_2 (Number : Integer := 1) is
        use Object;
        Blanck : String (1 .. Positive (The_Width / 8)) :=
           (1 .. Positive (The_Width / 8) => ' ');
    begin
        Line_Number := Line_Number + 1;
        Bounded_String.Append (Table (Table_Index), Blanck);
        Table_Index := Table_Index + 1;
        if Line_Number >= Line_Max then  
            Line_Number := Line_Number - 1;
            for Index in 1 .. Line_Max loop
                Easy_Y.Print (1, Index * 16,
                              Table (Table_Index - Line_Max + Index));
            end loop;
        end if;
    end New_Line_2;

    procedure New_Line (Number : Integer := 1) is
        use Object;
    begin
        Colum := 0;
        Line_Number := Line_Number + 1;
        if Line_Number >= Line_Max then
            declare
                Blanck : String (1 .. Positive (The_Width / 8)) :=
                   (1 .. Positive (The_Width / 8) => ' ');
                Button : Message.Unary;
                Result : Object.Index;
                Title : Object.Tiny_String;
            begin
                Message.Put (This_Name => Bounded_String.Value ("Suite", 80),
                             Into => Button);
                Result := Requester.Choice
                             (The_Left, The_Right + The_Height + 50,
                              Bounded_String.Image (The_Screen), Button,
                              Bounded_String.Value
                                 ("Cliquer pour avoir la suite", 80));
                Message.Free (This => Button);

                Line_Number := 1;

                Easy_Y.Set_Display (Window => Unparse_Window);
                Easy_Y.Close (Window => Unparse_Window);
                Easy_Y.Open (Display => Bounded_String.Image (The_Screen),
                             Window => Unparse_Window);
            end;
        end if;
    end New_Line;

end Class_New_Printer;

E3 Meta Data

    nblk1=7
    nid=4
    hdr6=a
        [0x00] rec0=1b rec1=00 rec2=01 rec3=008
        [0x01] rec0=25 rec1=00 rec2=05 rec3=05a
        [0x02] rec0=1c rec1=00 rec2=02 rec3=026
        [0x03] rec0=15 rec1=00 rec2=06 rec3=018
        [0x04] rec0=05 rec1=00 rec2=03 rec3=000
        [0x05] rec0=02 rec1=00 rec2=04 rec3=001
        [0x06] rec0=bf rec1=3c rec2=00 rec3=01f
    tail 0x21733ef0c84e090560acf 0x42a00088462060003
Free Block Chain:
  0x4: 0000  00 07 00 06 00 00 00 00 00 00 20 20 20 20 20 20  ┆                ┆
  0x7: 0000  00 00 00 04 80 01 70 01 02 03 04 05 06 07 08 09  ┆      p         ┆