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

⟦3dbbeec6c⟧ Ada Source

    Length: 8192 (0x2000)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, function Endpoint_Union, seg_0046f7, separate Graphic_Lines

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦5a81ac88f⟧ »Space Info Vol 1« 
        └─⟦this⟧ 

E3 Source Code



separate (Graphic_Lines)
function Endpoint_Union (Output_Window : Window_Id;
                         Include_Left  : Boolean;
                         Include_Right : Boolean;
                         Include_Up    : Boolean;
                         Include_Down  : Boolean) return Character is
    Char_To_Check : Character;
    From_Left     : Boolean := Include_Left;
    From_Right    : Boolean := Include_Right;
    From_Up       : Boolean := Include_Up;
    From_Down     : Boolean := Include_Down;

begin
    -- check below
    Window_Io.Move_Cursor (File          => Output_Window,  
                           Delta_Lines   => 1,
                           Delta_Columns => 0,
                           Offset        => 0);  
    Char_To_Check := Window_Io.Char_At (Output_Window);
    Window_Io.Move_Cursor (File          => Output_Window,          -- move back
                           Delta_Lines   => -1,
                           Delta_Columns => 0,
                           Offset        => 0);  
    case Char_To_Check is
        when Gc.L_L_Corner | Gc.L_R_Corner | Gc.T_Up |
             Gc.T_Left | Gc.T_Right | Gc.V_Line =>
            From_Down := True;
        when others =>
            null;
    end case;

    -- check right
    Window_Io.Move_Cursor (File          => Output_Window,
                           Delta_Lines   => 0,
                           Delta_Columns => 1,
                           Offset        => 0);
    Char_To_Check := Window_Io.Char_At (Output_Window);
    Window_Io.Move_Cursor (File          => Output_Window,          -- move back
                           Delta_Lines   => 0,
                           Delta_Columns => -1,
                           Offset        => 0);  
    case Char_To_Check is
        when Gc.U_R_Corner | Gc.L_R_Corner | Gc.T_Left |
             Gc.T_Up | Gc.T_Down | Gc.H_Line =>
            From_Right := True;
        when others =>
            null;
    end case;

    -- check above
    begin
        Window_Io.Move_Cursor (File          => Output_Window,
                               Delta_Lines   => -1,
                               Delta_Columns => 0,
                               Offset        => 0);
        Char_To_Check := Window_Io.Char_At (Output_Window);
        Window_Io.Move_Cursor (File => Output_Window,        -- move back
                               Delta_Lines => 1,
                               Delta_Columns => 0,
                               Offset => 0);  
        case Char_To_Check is
            when Gc.U_L_Corner | Gc.U_R_Corner | Gc.T_Down |
                 Gc.T_Left | Gc.T_Right | Gc.V_Line =>
                From_Up := True;
            when others =>
                null;
        end case;
    exception
        when Io_Exceptions.Layout_Error =>
            null;
    end;


    -- check left
    begin
        Window_Io.Move_Cursor (File          => Output_Window,
                               Delta_Lines   => 0,
                               Delta_Columns => -1,
                               Offset        => 0);
        Char_To_Check := Window_Io.Char_At (Output_Window);
        Window_Io.Move_Cursor (File => Output_Window,        -- move back
                               Delta_Lines => 0,
                               Delta_Columns => 1,
                               Offset => 0);  
        case Char_To_Check is
            when Gc.L_L_Corner | Gc.U_L_Corner | Gc.T_Right |
                 Gc.T_Up | Gc.T_Down | Gc.H_Line =>
                From_Left := True;
            when others =>
                null;
        end case;
    exception
        when Io_Exceptions.Layout_Error =>
            null;
    end;


    if From_Left then
        if From_Right then
            if From_Up then
                if From_Down then
                    return Gc.Intersect;
                else
                    return Gc.T_Up;
                end if;
            elsif From_Down then
                return Gc.T_Down;
            else
                return Gc.H_Line;
            end if;
        elsif From_Up then
            if From_Down then
                return Gc.T_Left;
            else
                return Gc.L_R_Corner;
            end if;
        elsif From_Down then
            return Gc.U_R_Corner;
        else
            return Gc.Dot;
        end if;

    elsif From_Right then
        if From_Up then
            if From_Down then
                return Gc.T_Right;
            else
                return Gc.L_L_Corner;
            end if;
        elsif From_Down then
            return Gc.U_L_Corner;
        else
            return Gc.Dot;
        end if;

    elsif From_Up then
        if From_Down then
            return Gc.V_Line;
        else
            return Gc.Dot;
        end if;
    elsif From_Down then
        return Gc.Dot;
    else
        return ' ';
    end if;
end Endpoint_Union;

E3 Meta Data

    nblk1=7
    nid=0
    hdr6=e
        [0x00] rec0=17 rec1=00 rec2=01 rec3=05c
        [0x01] rec0=01 rec1=00 rec2=07 rec3=022
        [0x02] rec0=19 rec1=00 rec2=02 rec3=012
        [0x03] rec0=1d rec1=00 rec2=03 rec3=004
        [0x04] rec0=1b rec1=00 rec2=04 rec3=030
        [0x05] rec0=27 rec1=00 rec2=05 rec3=012
        [0x06] rec0=05 rec1=00 rec2=06 rec3=000
    tail 0x215004e50815c676ae003 0x42a00088462061e03