DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - downloadIndex: ┃ B T ┃
Length: 10515 (0x2913) Types: TextFile Names: »B«
└─⟦149519bd4⟧ Bits:30000546 8mm tape, Rational 1000, !projects 93-07-13 └─ ⟦124ff5788⟧ »DATA« └─⟦this⟧ └─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11 └─ ⟦129cab021⟧ »DATA« └─⟦this⟧ └─⟦f64eaa120⟧ Bits:30000752 8mm tape, Rational 1000, !projects 93 02 16 └─ ⟦6f12a12be⟧ »DATA« └─⟦this⟧ └─⟦2f6cfab89⟧ Bits:30000547 8mm tape, Rational 1000, !projects 94-01-04 └─ ⟦d65440be7⟧ »DATA« └─⟦this⟧
with Octet; with Text_Io; use Octet; package body Test_Octet is -- TYPES -------------------------------------------------------------- type T_Bit_Octet is array (Num_Bit) of Boolean; -- VARIABLES ---------------------------------------------------------- Fin : Boolean := False; Octet_1, Octet_2, Flag, Num_Bit, Choix : T_Octet := 0; -- PROCEDURES --------------------------------------------------------- function Lire_Choix return T_Octet; procedure Lire_1_Octet_Bit; procedure Lire_1_Octet_Flag; procedure Lire_1_Octet; procedure Lire_2_Octets_Flag; procedure Lire_2_Octets; procedure Afficher_Resultat; function Convert_Bit (Octet_1 : T_Octet) return T_Bit_Octet; ----------------------------------------------------------------------- procedure Je_Teste_Octet is begin while not Fin loop Choix := Lire_Choix; case Choix is when 1 | 2 | 3 => Lire_1_Octet_Bit; case Choix is when 1 => if (Octet.Test_Bit (Octet_1, Num_Bit)) then Octet_1 := 1; else Octet_1 := 0; end if; when 2 => Octet.Set (Octet_1, Num_Bit); when 3 => Octet.Res (Octet_1, Num_Bit); when others => null; end case; when 4 | 5 | 6 | 8 | 9 => Lire_2_Octets; case Choix is when 4 => Octet_1 := Octet."and" (Octet_1, Octet_2); when 5 => Octet_1 := Octet."or" (Octet_1, Octet_2); when 6 => Octet_1 := Octet."xor" (Octet_1, Octet_2); when 8 => Octet_1 := Octet.Add (Octet_1, Octet_2); when 9 => Octet_1 := Octet.Sub (Octet_1, Octet_2); when others => null; end case; when 7 | 10 => Lire_1_Octet; case Choix is when 7 => Octet_1 := Octet."not" (Octet_1); when 10 => Octet_1 := Octet.Neg (Octet_1); when others => null; end case; when 11 | 12 | 16 | 22 | 23 | 24 | 25 | 26 | 27 | 28 => Lire_1_Octet_Flag; case Choix is when 11 => Octet.Inc_F (Octet_1, Flag); when 12 => Octet.Dec_F (Octet_1, Flag); when 16 => Octet.Neg_F (Octet_1, Flag); when 22 => Octet.Rl_F (Octet_1, Flag); when 23 => Octet.Rlc_F (Octet_1, Flag); when 24 => Octet.Rr_F (Octet_1, Flag); when 25 => Octet.Rrc_F (Octet_1, Flag); when 26 => Octet.Sla_F (Octet_1, Flag); when 27 => Octet.Sra_F (Octet_1, Flag); when 28 => Octet.Srl_F (Octet_1, Flag); when others => null; end case; when 13 | 14 | 15 | 17 | 18 | 19 | 20 | 21 => Lire_2_Octets_Flag; case Choix is when 13 => Octet.And_F (Octet_1, Octet_2, Flag); when 14 => Octet.Or_F (Octet_1, Octet_2, Flag); when 15 => Octet.Xor_F (Octet_1, Octet_2, Flag); when 17 => Octet.Adc_F (Octet_1, Octet_2, Flag); when 18 => Octet.Add_F (Octet_1, Octet_2, Flag); when 19 => Octet.Sbc_F (Octet_1, Octet_2, Flag); when 20 => Octet.Sub_F (Octet_1, Octet_2, Flag); when 21 => Octet.Cp_F (Octet_1, Octet_2, Flag); when others => null; end case; when others => Text_Io.Put_Line ("tu t'es plante minable !!!"); end case; Afficher_Resultat; end loop; end Je_Teste_Octet; ---------------------------------------------------------------------- function Lire_Octet_Hexa return T_Octet is Resultat : T_Octet := 0; Chaine_Lue : String (1 .. 2); begin Text_Io.Get (Chaine_Lue); case Chaine_Lue (1) is when '0' .. '9' => Resultat := Character'Pos (Chaine_Lue (1)) - Character'Pos ('0'); when 'a' .. 'f' => Resultat := Character'Pos (Chaine_Lue (1)) - Character'Pos ('a') + 10; when 'A' .. 'F' => Resultat := Character'Pos (Chaine_Lue (1)) - Character'Pos ('A') + 10; when others => Fin := True; end case; Resultat := Resultat * 16; case Chaine_Lue (2) is when '0' .. '9' => Resultat := Resultat + Character'Pos (Chaine_Lue (2)) - Character'Pos ('0'); when 'a' .. 'f' => Resultat := Resultat + Character'Pos (Chaine_Lue (2)) - Character'Pos ('a') + 10; when 'A' .. 'F' => Resultat := Resultat + Character'Pos (Chaine_Lue (2)) - Character'Pos ('A') + 10; when others => Fin := True; end case; Text_Io.Put_Line (""); return Resultat; end Lire_Octet_Hexa; ---------------------------------------------------------------------- function Lire_Octet_Binaire return T_Octet is Resultat : T_Octet := 0; Chaine_Lue : String (1 .. 8); begin Text_Io.Get (Chaine_Lue); for I in reverse 1 .. 8 loop if (Chaine_Lue (I) = '1') then Resultat := Resultat + 2 ** (8 - I); end if; end loop; return Resultat; end Lire_Octet_Binaire; ---------------------------------------------------------------------- procedure Lire_2_Octets is begin Text_Io.Put ("octet_1> "); Octet_1 := Lire_Octet_Hexa; Text_Io.Put ("octet_2> "); Octet_2 := Lire_Octet_Hexa; end Lire_2_Octets; ---------------------------------------------------------------------- procedure Lire_2_Octets_Flag is begin Lire_2_Octets; Text_Io.Put ("flag > "); Flag := Lire_Octet_Binaire; end Lire_2_Octets_Flag; ---------------------------------------------------------------------- procedure Lire_1_Octet is begin Text_Io.Put ("octet_1> "); Octet_1 := Lire_Octet_Hexa; end Lire_1_Octet; ---------------------------------------------------------------------- procedure Lire_1_Octet_Flag is begin Text_Io.Put ("octet_1> "); Octet_1 := Lire_Octet_Hexa; Text_Io.Put ("flag > "); Flag := Lire_Octet_Binaire; end Lire_1_Octet_Flag; ---------------------------------------------------------------------- procedure Lire_1_Octet_Bit is begin Text_Io.Put ("octet_1> "); Octet_1 := Lire_Octet_Hexa; Text_Io.Put ("num bit> "); Num_Bit := Lire_Octet_Hexa; end Lire_1_Octet_Bit; ---------------------------------------------------------------------- function Lire_Choix return T_Octet is begin Text_Io.Put_Line (""); Text_Io.Put_Line ("------------------------------------------"); Text_Io.Put_Line (""); Text_Io.Put ("choix > "); return Lire_Octet_Hexa; end Lire_Choix; ---------------------------------------------------------------------- procedure Afficher_Octet_Hexa (Un_Octet : T_Octet) is Tab_Hexa : constant array (Integer range 0 .. 15) of Character := ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'); begin Text_Io.Put (Tab_Hexa (Un_Octet / 16)); Text_Io.Put (Tab_Hexa (Un_Octet mod 16)); end Afficher_Octet_Hexa; ---------------------------------------------------------------------- procedure Afficher_Octet_Binaire (Un_Octet : T_Octet) is Bit_Octet : T_Bit_Octet; begin Bit_Octet := Convert_Bit (Un_Octet); for I in reverse Octet.Num_Bit loop if Bit_Octet (I) then Text_Io.Put (" 1"); else Text_Io.Put (" 0"); end if; end loop; end Afficher_Octet_Binaire; ---------------------------------------------------------------------- procedure Afficher_Resultat is begin Text_Io.Put_Line (""); Text_Io.Put ("resultat = "); Afficher_Octet_Hexa (Octet_1); Text_Io.Put_Line (""); Text_Io.Put ("flag = "); Afficher_Octet_Binaire (Flag); Text_Io.Put_Line (""); end Afficher_Resultat; -------------------------------------------------- function Convert_Bit (Octet_1 : T_Octet) return T_Bit_Octet is Bit_Oct : T_Bit_Octet; Octet : T_Octet := Octet_1; begin for I in 0 .. 7 loop Bit_Oct (I) := ((Octet mod 2) /= 0); Octet := Octet / 2; end loop; return Bit_Oct; end Convert_Bit; end Test_Octet;