|
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 - download
Length: 8192 (0x2000) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Test_Alu_16, seg_020f0d
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─ ⟦5a81ac88f⟧ »Space Info Vol 1« └─⟦this⟧
with Text_Io; with Mot; with Alu_16_Bit; with Desassembleur; with Registres; with Octet; with Binaire; with Z80_Defs; package body Test_Alu_16 is package Mot_Io is new Text_Io.Integer_Io (Num => Mot.T_Mot); package Bin_8 is new Binaire (Nb_De_Bit => 8); subtype T_Bit_Octet is Bin_8.Val_Binaire; use Bin_8; function Get_Mot return Mot.T_Mot is Result : Mot.T_Mot; begin Mot_Io.Get (Result); return Result; end Get_Mot; procedure Put_Mot (Le_Mot : Mot.T_Mot) is begin Mot_Io.Put (Le_Mot); end Put_Mot; --------------------------------------------- procedure Read_1_Op (Op : in out Mot.T_Mot) is begin Text_Io.Put ("op_1>"); Op := Get_Mot; Text_Io.Put_Line (""); Alu_16_Bit.Fournir_Operande_1 (Op); end Read_1_Op; procedure Read_2_Op (Op_1, Op_2 : in out Mot.T_Mot) is begin Text_Io.Put ("op_1>"); Op_1 := Get_Mot; Text_Io.Put_Line (""); Alu_16_Bit.Fournir_Operande_1 (Op_1); Text_Io.Put ("op_2>"); Op_2 := Get_Mot; Text_Io.Put_Line (""); Alu_16_Bit.Fournir_Operande_2 (Op_2); end Read_2_Op; procedure Display (Res : Mot.T_Mot) is Flag : T_Bit_Octet; begin Text_Io.Put_Line (""); Text_Io.Put ("res>"); Put_Mot (Res); Text_Io.Put_Line (""); Text_Io.Put ("flag>"); Flag := Convert_Bit (Registres.Lire_Simple (Z80_Defs.F)); for I in reverse Flag'Range loop if Flag (I) then Text_Io.Put ("1"); else Text_Io.Put ("0"); end if; end loop; Text_Io.Put_Line (""); Text_Io.Put_Line ("=================================="); Text_Io.Put_Line (""); end Display; procedure Read_Flag is Flag : Octet.T_Octet := 0; Flag_Str : String (1 .. 8); begin Text_Io.Put ("flag>"); Text_Io.Get (Flag_Str); for I in reverse 1 .. 8 loop if Flag_Str (I) = '1' then Flag := Flag + 2 ** (8 - I); end if; end loop; Registres.Ecrire_Simple (Z80_Defs.F, Flag); end Read_Flag; ------------------------------------------------- procedure Exec_Inc is Op_1 : Mot.T_Mot; begin Read_Flag; Read_1_Op (Op_1); Display (Alu_16_Bit.Executer (Desassembleur.Inc)); end Exec_Inc; procedure Exec_Dec is Op_1 : Mot.T_Mot; begin Read_Flag; Read_1_Op (Op_1); Display (Alu_16_Bit.Executer (Desassembleur.Dec)); end Exec_Dec; procedure Exec_Add is Op_1, Op_2 : Mot.T_Mot; begin Read_Flag; Read_2_Op (Op_1, Op_2); Display (Alu_16_Bit.Executer (Desassembleur.Add)); end Exec_Add; procedure Exec_Adc is Op_1, Op_2 : Mot.T_Mot; begin Read_Flag; Read_2_Op (Op_1, Op_2); Display (Alu_16_Bit.Executer (Desassembleur.Adc)); end Exec_Adc; procedure Exec_Sbc is Op_1, Op_2 : Mot.T_Mot; begin Read_Flag; Read_2_Op (Op_1, Op_2); Display (Alu_16_Bit.Executer (Desassembleur.Sbc)); end Exec_Sbc; ---------------------------------------------------- function Menu return Character is Choix : Character; begin Text_Io.Put_Line ("1)INC 2)DEC 3)ADD 4)ADC 5)SBC "); Text_Io.Put ("choix>"); Text_Io.Get (Choix); Text_Io.Put_Line (""); return Choix; end Menu; ---------------------------------------------------- procedure Test is At_End : Boolean := False; Choix : Character; begin while not At_End loop Choix := Menu; case Choix is when '1' => Exec_Inc; when '2' => Exec_Dec; when '3' => Exec_Add; when '4' => Exec_Adc; when '5' => Exec_Sbc; when others => At_End := True; Text_Io.Put_Line ("FIN"); end case; end loop; end Test; end Test_Alu_16;
nblk1=7 nid=3 hdr6=c [0x00] rec0=2f rec1=00 rec2=01 rec3=006 [0x01] rec0=26 rec1=00 rec2=06 rec3=020 [0x02] rec0=15 rec1=00 rec2=07 rec3=032 [0x03] rec0=28 rec1=00 rec2=02 rec3=00a [0x04] rec0=22 rec1=00 rec2=05 rec3=03a [0x05] rec0=08 rec1=00 rec2=04 rec3=000 [0x06] rec0=01 rec1=00 rec2=03 rec3=001 tail 0x2151c860a838d4ca59ec6 0x42a00088462062803 Free Block Chain: 0x3: 0000 00 00 00 0f 80 09 74 5f 41 6c 75 5f 31 36 3b 09 ┆ t_Alu_16; ┆