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

⟦a0dbc431d⟧ Ada Source

    Length: 5120 (0x1400)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Square, seg_02fa94

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



with Text_Io;
package body Square is
    procedure Deposit (Carre : in out Matrix;
                       Coordonnees : in out Case_Courrante;
                       I : in Integer;
                       Nombre : in Integer) is
    begin
        if (Carre (Coordonnees.X, Coordonnees.Y) = 0) then
            Carre (Coordonnees.X, Coordonnees.Y) := I;
        else
            Move (North, Coordonnees, Nombre);
            Move (West, Coordonnees, Nombre);
            Deposit (Carre, Coordonnees, I, Nombre);
        end if;
    end Deposit;

    procedure Move (D : in Direction;
                    Coordonnees : in out Case_Courrante;
                    Nombre : in Integer) is  
    begin  
        case D is
            when North =>
                Coordonnees.Y := Coordonnees.Y + 1;  
                if (Coordonnees.Y > Nombre) then
                    Coordonnees.Y := 1;  
                end if;
            when South =>
                Coordonnees.Y := Coordonnees.Y - 1;
                if (Coordonnees.Y < 1) then
                    Coordonnees.Y := Nombre;
                end if;
            when East =>
                Coordonnees.X := Coordonnees.X + 1;
                if (Coordonnees.X > Nombre) then
                    Coordonnees.X := 1;
                end if;
            when West =>
                Coordonnees.X := Coordonnees.X - 1;
                if (Coordonnees.X < 1) then
                    Coordonnees.X := Nombre;
                end if;

        end case;
    end Move;

    procedure Go_To_Center (Coordonnees : in out Case_Courrante;
                            Nombre : in Integer) is
    begin
        Coordonnees.X := (Nombre / 2) + 1;
        Coordonnees.Y := (Nombre / 2) + 1;
    end Go_To_Center;

    function Impaire (Nombre : in Integer) return Boolean is
    begin  
        return ((Nombre mod 2) = 1);
    end Impaire;

    procedure Display (Carre : in Matrix; Nombre : in Integer) is
        I, J : Integer;
    begin
        for I in reverse 1 .. Nombre loop
            for J in 1 .. Nombre loop
                Text_Io.Put (Integer'Image (Carre (J, I)));
            end loop;
            Text_Io.New_Line;
        end loop;
        Text_Io.New_Line;
    end Display;

    procedure Init_Square (Carre : in out Matrix; Nombre : in Integer) is
        I, J : Integer;
    begin
        for I in 1 .. Nombre loop
            for J in 1 .. Nombre loop
                Carre (I, J) := 0;
            end loop;
        end loop;
    end Init_Square;

    procedure Saisie (Nombre : in out Integer) is
    begin  
        Nombre := 3;  
    end Saisie;
end Square;



E3 Meta Data

    nblk1=4
    nid=2
    hdr6=6
        [0x00] rec0=1d rec1=00 rec2=01 rec3=02c
        [0x01] rec0=1e rec1=00 rec2=03 rec3=048
        [0x02] rec0=1d rec1=00 rec2=04 rec3=000
        [0x03] rec0=18 rec1=00 rec2=04 rec3=000
    tail 0x21528dcd284925c5c2e9b 0x42a00088462060003
Free Block Chain:
  0x2: 0000  00 00 02 43 80 15 6d 61 67 65 20 28 43 61 72 72  ┆   C  mage (Carr┆