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

⟦ab437bece⟧ Ada Source

    Length: 3072 (0xc00)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Board_Management, seg_05814b

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 Text_Io;
use Text_Io;
package body Board_Management is

    procedure Set_Queen (Row, Col : in Integer) is
    begin
        Safe_Row (Row) := False;
        Safe_Up_Diag (Row + Col) := False;
        Safe_Down_Diag (Row - Col) := False;
        Configuration (Col) := Row;
    end Set_Queen;

    procedure Remove_Queen (Row, Col : in Integer) is
        Vacant : constant Integer := 0;
    begin
        Safe_Row (Row) := True;
        Safe_Up_Diag (Row + Col) := True;
        Safe_Down_Diag (Row - Col) := True;
        Configuration (Col) := Vacant;
    end Remove_Queen;

    function Is_Safe (Row, Col : in Integer) return Boolean is
    begin
        return Safe_Row (Row) and then Safe_Up_Diag (Row + Col) and then
                  Safe_Down_Diag (Row - Col);
    end Is_Safe;

    procedure Display_Board is
        subtype Disp_Range is Integer range 1 .. 4 * Board_Size + 1;
        use Text_Io;
        Line : String (Disp_Range);
        Pos : Disp_Range;
    begin
        for Row in Row_Range loop
            Put_Line ((Disp_Range => '-'));
            Pos := 1;
            for Col in Col_Range loop
                if Configuration (Col) = Row then
                    Line (Pos .. Pos + 3) := "| Q ";
                else
                    Line (Pos .. Pos + 3) := "|   ";
                end if;
                Pos := Pos + 4;
            end loop;
            Line (Pos) := '|';
            Put_Line (Line);
        end loop;
        Put_Line ((Disp_Range => '-'));
    end Display_Board;

begin
    -- Clear the board
    Safe_Row := (Row_Range => True);
    Safe_Up_Diag := (Up_Diag_Range => True);
    Safe_Down_Diag := (Down_Diag_Range => True);
end Board_Management;

E3 Meta Data

    nblk1=2
    nid=0
    hdr6=4
        [0x00] rec0=21 rec1=00 rec2=01 rec3=004
        [0x01] rec0=1a rec1=00 rec2=02 rec3=001
    tail 0x2176572f087e05333b9d7 0x42a00088462060003