|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 6144 (0x1800)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Square, seg_03e004
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦5a81ac88f⟧ »Space Info Vol 1«
└─⟦this⟧
with Square;
with Io;
package body Square is
procedure Move (D : Direction) is
begin
-- Io.Put (Item => "coordonnees L C avant move ");
-- Io.Put (Item => Tocken'Image (Lc.Ligne));
-- Io.Put_Line (Item => Tocken'Image (Lc.Colom));
case D is
when North =>
Lc.Ligne := Lc.Ligne - 1;
when South =>
Lc.Ligne := Lc.Ligne + 1;
when East =>
Lc.Colom := Lc.Colom + 1;
when West =>
Lc.Colom := Lc.Colom - 1;
when North_East =>
Lc.Ligne := Lc.Ligne - 1;
Lc.Colom := Lc.Colom + 1;
when North_West =>
Lc.Ligne := Lc.Ligne - 1;
Lc.Colom := Lc.Colom - 1;
end case;
if (Lc.Ligne = 0) then
Lc.Ligne := Tab_Size;
end if;
if (Lc.Ligne > Tab_Size) then
Lc.Ligne := Lc.Ligne - Tab_Size;
end if;
if (Lc.Colom = 0) then
Lc.Colom := Tab_Size;
end if;
if (Lc.Colom > Tab_Size) then
Lc.Colom := Lc.Colom - Tab_Size;
end if;
-- Io.Put (Item => "coordonnees L C apres move");
-- Io.Put (Item => Tocken'Image (Lc.Ligne));
-- Io.Put_Line (Item => Tocken'Image (Lc.Colom));
end Move;
procedure Goto_Center is
begin
Lc := (Colom => (Tab_Size + 1) / 2, Ligne => (Tab_Size + 1) / 2);
-- Io.Put (Item => "coordonnees L C ");
-- Io.Put (Item => Tocken'Image (Lc.Ligne));
-- Io.Put_Line (Item => Tocken'Image (Lc.Colom));
end Goto_Center;
procedure Deposit (T : Tocken) is
begin
My_Square (Lc.Ligne, Lc.Colom) := T;
end Deposit;
procedure Init_Square is
begin
for L in 1 .. Tab_Size loop
for C in 1 .. Tab_Size loop
My_Square (L, C) := 0;
end loop;
end loop;
end Init_Square;
procedure Display_Square is
begin
Io.Put (Item => "je suis le carre magique de ");
Io.Put (Item => Tab_Size);
Io.Put_Line (Item => "");
Io.Put (Item => "La somme de chaque ligne ou colonne est egale a : ");
Io.Put (Item => (Tab_Size * ((Tab_Size * Tab_Size) + 1) / 2));
Io.Put_Line (Item => "");
Io.Put_Line (Item => "");
for L in 1 .. Tab_Size loop
for C in 1 .. Tab_Size loop
Io.Put (Item => (My_Square (L, C)), Width => 4);
end loop;
Io.Put_Line (Item => "");
Io.Put_Line (Item => "");
end loop;
Io.Put_Line (Item => "");
end Display_Square;
function Current_Tocken return Tocken is
begin
return My_Square (Lc.Ligne, Lc.Colom);
end Current_Tocken;
end Square;
nblk1=5
nid=4
hdr6=6
[0x00] rec0=25 rec1=00 rec2=01 rec3=02c
[0x01] rec0=24 rec1=00 rec2=02 rec3=02c
[0x02] rec0=22 rec1=00 rec2=03 rec3=000
[0x03] rec0=22 rec1=00 rec2=03 rec3=000
[0x04] rec0=05 rec1=00 rec2=05 rec3=000
tail 0x21536689e85fc714fb011 0x42a00088462060003
Free Block Chain:
0x4: 0000 00 05 00 06 80 03 65 20 3a 03 04 05 06 07 08 09 ┆ e : ┆
0x5: 0000 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 00 ┆ ┆