|
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: 19456 (0x4c00) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Display_Environment, package body Visual_System_3, seg_04bc16
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─⟦cfc2e13cd⟧ »Space Info Vol 2« └─⟦this⟧
package body Visual_System_3 is Max_X : Integer := 12; Min_X : Integer := 1; Max_Y : Integer := 6; Min_Y : Integer := 1; The_Model_Marker, The_Selected_Block_Marker, The_Top_Block_Marker, The_Top_Copied_Model_Marker, The_On_Table_Marker : Marker := Marker'(Position => Positions'(X => Min_X, Y => Min_Y)); The_Markers : array (Marker_Ids) of Marker := (Model_Marker_Id => The_Model_Marker, Selected_Block_Marker_Id => The_Selected_Block_Marker, Top_Block_Marker_Id => The_Top_Block_Marker, Top_Copied_Model_Marker_Id => The_Top_Copied_Model_Marker, On_Table_Marker_Id => The_On_Table_Marker); type States is (Protected, Free); type The_Environment_Labels is array (Min_X .. Max_X, Min_Y .. Max_Y) of Labels; type The_Environment_States is array (Min_X .. Max_X, Min_Y .. Max_Y) of States; type Environmens is record The_Label : The_Environment_Labels; The_State : The_Environment_States; end record; Environment : Environments; procedure Protect_Column (Marker_Id_In_Column : in Marker_Ids) is begin for J in Min_Y .. Max_Y loop Environment.The_State ((The_Markers (Marker_Id_In_Column).Position.X), J) := Protected; end loop; end Protect_Column; procedure Unprotect_Column (Marker_Id_In_Column : in Marker_Ids) is begin for J in Min_Y .. Max_Y loop Environment.The_State ((The_Markers (Marker_Id_In_Column).Position.X), J) := Free; end loop; end Unprotect_Column; function Get_Label_In_Position (I, J : Integer) return Labels is begin return (Environment.The_Label (I, J)); end Get_Label_In_Position; -------------------------------------------------------------------------------- package Display_Environment is procedure Initialize; procedure Print_All; procedure Print_One_Block (X, Y : Integer; What_Label : Labels); end Display_Environment; package body Display_Environment is separate; -------------------------------------------------------------------------------- procedure Put_Label_In_Position (What_Label : Labels; X : Integer; Y : Integer) is begin Environment.The_Label (X, Y) := What_Label; Display_Environment.Print_One_Block (X, Y, What_Label); end Put_Label_In_Position; function Move (What_Id : in Marker_Ids; In_Direction : in Directions) return Boolean is begin case In_Direction is when Right => if The_Markers (What_Id).Position.X = Max_X then return (False); else The_Markers (What_Id).Position.X := The_Markers (What_Id).Position.X + 1; end if; when Left => if The_Markers (What_Id).Position.X = Min_X then return (False); else The_Markers (What_Id).Position.X := The_Markers (What_Id).Position.X - 1; end if; when Up => if The_Markers (What_Id).Position.Y = Max_Y then return (False); else The_Markers (What_Id).Position.Y := The_Markers (What_Id).Position.Y + 1; end if; when Down => if The_Markers (What_Id).Position.Y = Min_Y then return (False); else The_Markers (What_Id).Position.Y := The_Markers (What_Id).Position.Y - 1; end if; end case; return (True); end Move; function Get_Label (The_Marker_Id : in Marker_Ids) return Labels is begin return (Get_Label_In_Position (The_Markers (The_Marker_Id).Position.X, The_Markers (The_Marker_Id).Position.Y)); end Get_Label; function Is_Same (One_Marker_Id : in Marker_Ids; Other_Marker_Id : in Marker_Ids) return Boolean is begin return ((The_Markers (One_Marker_Id).Position.X = The_Markers (Other_Marker_Id).Position.X) and (The_Markers (One_Marker_Id).Position.Y = The_Markers (Other_Marker_Id).Position.Y)); end Is_Same; function Find (What_Label : in Labels; The_Marker_Id : in Marker_Ids) return Boolean is begin for I in Min_X .. Max_X loop for J in Min_Y .. Max_Y loop if Environment.The_State (I, J) /= Protected then if (Get_Label_In_Position (I, J) = What_Label) then The_Markers (The_Marker_Id).Position.X := I; The_Markers (The_Marker_Id).Position.Y := J; return True; end if; end if; end loop; end loop; return False; end Find; procedure Make_Coincided (What_Id : in Marker_Ids; With_What_Id : in Marker_Ids) is begin The_Markers (What_Id).Position.X := The_Markers (With_What_Id).Position.X; The_Markers (What_Id).Position.Y := The_Markers (With_What_Id).Position.Y; end Make_Coincided; procedure Put_Block (Block_Marked_With_Id : in Marker_Ids; On_Marked_Place_With_Id : in Marker_Ids) is The_Label : Labels; begin The_Label := Get_Label_In_Position (The_Markers (Block_Marked_With_Id).Position.X, The_Markers (Block_Marked_With_Id).Position.Y); Put_Label_In_Position (Null_Label, The_Markers (Block_Marked_With_Id).Position.X, The_Markers (Block_Marked_With_Id).Position.Y); Put_Label_In_Position (The_Label, The_Markers (On_Marked_Place_With_Id).Position.X, The_Markers (On_Marked_Place_With_Id).Position.Y); The_Markers (Block_Marked_With_Id).Position.X := The_Markers (On_Marked_Place_With_Id).Position.X; The_Markers (Block_Marked_With_Id).Position.Y := The_Markers (On_Marked_Place_With_Id).Position.Y; end Put_Block; procedure Load_Initial is begin for I in Min_X .. Max_X loop for J in Min_Y .. Max_Y loop Environment.The_Label (I, J) := Null_Label; Environment.The_State (I, J) := Free; end loop; end loop; --The Model to Copy Environment.The_Label (Max_X, Min_Y) := 'U'; Environment.The_Label (Max_X, Min_Y + 1) := 'O'; Environment.The_Label (Max_X, Min_Y + 2) := 'C'; Environment.The_Label (Max_X, Min_Y + 3) := 'U'; Environment.The_Label (Max_X, Min_Y + 4) := 'O'; Environment.The_Label (Max_X, Min_Y + 5) := 'C'; -- les cubes disponibles Environment.The_Label (Min_X, Min_Y) := 'Z'; Environment.The_Label (Min_X, Min_Y + 1) := 'P'; Environment.The_Label (Min_X, Min_Y + 2) := 'O'; Environment.The_Label (Min_X + 1, Min_Y) := 'T'; Environment.The_Label (Min_X + 1, Min_Y + 1) := 'A'; Environment.The_Label (Min_X + 1, Min_Y + 2) := 'L'; Environment.The_Label (Min_X + 2, Min_Y) := 'O'; Environment.The_Label (Min_X + 2, Min_Y + 1) := 'P'; Environment.The_Label (Min_X + 2, Min_Y + 2) := 'A'; Environment.The_Label (Min_X + 2, Min_Y + 3) := 'R'; Environment.The_Label (Min_X + 2, Min_Y + 4) := 'E'; Environment.The_Label (Min_X + 3, Min_Y) := 'T'; Environment.The_Label (Min_X + 3, Min_Y + 1) := 'B'; Environment.The_Label (Min_X + 3, Min_Y + 2) := 'C'; Environment.The_Label (Min_X + 3, Min_Y + 3) := 'O'; Environment.The_Label (Min_X + 4, Min_Y) := 'E'; Environment.The_Label (Min_X + 4, Min_Y + 1) := 'U'; Environment.The_Label (Min_X + 4, Min_Y + 2) := 'G'; Environment.The_Label (Min_X + 4, Min_Y + 3) := 'C'; Environment.The_Label (Min_X + 4, Min_Y + 4) := 'N'; Environment.The_Label (Min_X + 4, Min_Y + 5) := 'M'; Environment.The_Label (Min_X + 5, Min_Y) := 'C'; Environment.The_Label (Min_X + 5, Min_Y + 1) := 'G'; Environment.The_Label (Min_X + 6, Min_Y) := 'T'; Environment.The_Label (Min_X + 6, Min_Y + 1) := 'N'; Environment.The_Label (Min_X + 7, Min_Y) := 'V'; Environment.The_Label (Min_X + 7, Min_Y + 1) := 'C'; Environment.The_Label (Min_X + 7, Min_Y + 2) := 'I'; Environment.The_Label (Min_X + 8, Min_Y) := 'S'; Environment.The_Label (Min_X + 9, Min_Y) := 'R'; Environment.The_Label (Min_X + 9, Min_Y + 1) := 'H'; Environment.The_Label (Min_X + 10, Min_Y + 1) := 'W'; Environment.The_Label (Min_X + 10, Min_Y) := 'U'; end Load_Initial; begin Display_Environment.Initialize; Load_Initial; Display_Environment.Print_All; end Visual_System_3;
nblk1=12 nid=7 hdr6=18 [0x00] rec0=1d rec1=00 rec2=01 rec3=026 [0x01] rec0=00 rec1=00 rec2=03 rec3=002 [0x02] rec0=28 rec1=00 rec2=0f rec3=058 [0x03] rec0=1d rec1=00 rec2=0b rec3=02c [0x04] rec0=01 rec1=00 rec2=12 rec3=06e [0x05] rec0=1c rec1=00 rec2=02 rec3=018 [0x06] rec0=17 rec1=00 rec2=08 rec3=072 [0x07] rec0=1d rec1=00 rec2=09 rec3=088 [0x08] rec0=1a rec1=00 rec2=0e rec3=00a [0x09] rec0=14 rec1=00 rec2=05 rec3=002 [0x0a] rec0=0f rec1=00 rec2=04 rec3=074 [0x0b] rec0=12 rec1=00 rec2=0a rec3=000 [0x0c] rec0=14 rec1=00 rec2=04 rec3=010 [0x0d] rec0=22 rec1=00 rec2=0e rec3=010 [0x0e] rec0=17 rec1=00 rec2=03 rec3=010 [0x0f] rec0=09 rec1=00 rec2=0a rec3=000 [0x10] rec0=06 rec1=00 rec2=03 rec3=000 [0x11] rec0=00 rec1=00 rec2=00 rec3=000 tail 0x21750f16a86895b667875 0x42a00088462063c03 Free Block Chain: 0x7: 0000 00 10 02 a6 80 18 6b 65 72 5f 49 64 73 29 20 6f ┆ ker_Ids) o┆ 0x10: 0000 00 0c 03 fc 80 15 20 20 39 20 20 20 20 31 30 20 ┆ 9 10 ┆ 0xc: 0000 00 0d 03 fc 80 1f 20 20 20 66 6f 72 20 49 20 69 ┆ for I i┆ 0xd: 0000 00 11 00 09 80 06 20 20 20 20 20 20 06 22 2c 20 ┆ ", ┆ 0x11: 0000 00 06 00 43 80 06 6e 2e 58 20 3a 3d 06 00 37 20 ┆ C n.X := 7 ┆ 0x6: 0000 00 00 00 8d 80 41 6f 76 65 5f 42 6c 6f 63 6b 20 ┆ Aove_Block ┆