|
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: 34816 (0x8800) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Alu_8_Bit, seg_021d2a
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─ ⟦5a81ac88f⟧ »Space Info Vol 1« └─⟦this⟧
with Octet; with Registres; with Z80_Defs; package body Alu_8_Bit is -- CONSTANTES ------------------------------------------------------------ Un : constant Octet.T_Bit_Octet := (True, False, False, False, False, False, False, False); Zero : constant Octet.T_Bit_Octet := (False, False, False, False, False, False, False, False); Moins_Un : constant Octet.T_Bit_Octet := (True, True, True, True, True, True, True, True); -- VARIABLES ------------------------------------------------------------- Operande_1, Operande_2, Flag : Octet.T_Octet := 0; Bit_Octet_1, Bit_Octet_2, Bit_Flag : Octet.T_Bit_Octet := (False, False, False, False, False, False, False, False); -- PROCEDURES ------------------------------------------------------------ procedure Inc_F (Octet_1, Flag : in out Octet.T_Octet); procedure Dec_F (Octet_1, Flag : in out Octet.T_Octet); procedure And_F (Octet_1 : in out Octet.T_Octet; Octet_2 : Octet.T_Octet; Flag : in out Octet.T_Octet); procedure Or_F (Octet_1 : in out Octet.T_Octet; Octet_2 : Octet.T_Octet; Flag : in out Octet.T_Octet); procedure Xor_F (Octet_1 : in out Octet.T_Octet; Octet_2 : Octet.T_Octet; Flag : in out Octet.T_Octet); procedure Neg_F (Octet_1, Flag : in out Octet.T_Octet); procedure Adc_F (Octet_1 : in out Octet.T_Octet; Octet_2 : Octet.T_Octet; Flag : in out Octet.T_Octet); procedure Add_F (Octet_1 : in out Octet.T_Octet; Octet_2 : Octet.T_Octet; Flag : in out Octet.T_Octet); procedure Sbc_F (Octet_1 : in out Octet.T_Octet; Octet_2 : Octet.T_Octet; Flag : in out Octet.T_Octet); procedure Sub_F (Octet_1 : in out Octet.T_Octet; Octet_2 : Octet.T_Octet; Flag : in out Octet.T_Octet); procedure Cp_F (Octet_1 : Octet.T_Octet; Octet_2 : Octet.T_Octet; Flag : in out Octet.T_Octet); procedure Rl_F (Octet_1 : in out Octet.T_Octet; Flag : in out Octet.T_Octet; Flag_P_Z_S_A_Modifier : Boolean); procedure Rlc_F (Octet_1 : in out Octet.T_Octet; Flag : in out Octet.T_Octet; Flag_P_Z_S_A_Modifier : Boolean); procedure Rr_F (Octet_1 : in out Octet.T_Octet; Flag : in out Octet.T_Octet; Flag_P_Z_S_A_Modifier : Boolean); procedure Rrc_F (Octet_1 : in out Octet.T_Octet; Flag : in out Octet.T_Octet; Flag_P_Z_S_A_Modifier : Boolean); procedure Sla_F (Octet_1 : in out Octet.T_Octet; Flag : in out Octet.T_Octet); procedure Sra_F (Octet_1 : in out Octet.T_Octet; Flag : in out Octet.T_Octet); procedure Srl_F (Octet_1 : in out Octet.T_Octet; Flag : in out Octet.T_Octet); procedure Modif_Flag_Z_S (Bit_Octet : Octet.T_Bit_Octet; Flag : in out Octet.T_Bit_Octet); procedure Modif_Flag_P_Z_S (Bit_Octet : Octet.T_Bit_Octet; Flag : in out Octet.T_Bit_Octet); procedure Add_8_Bit_C_V_H (Bit_Octet_1 : in out Octet.T_Bit_Octet; Bit_Octet_2 : Octet.T_Bit_Octet; Carry : in out Boolean; Over_Flow : in out Boolean; Half_Carry : in out Boolean); -------------------------------------------------------------------------- -- PUBLIC -------------------------------------------------------------------------- procedure Fournir_Operande_1 (Op_1 : Octet.T_Octet) is begin Operande_1 := Op_1; end Fournir_Operande_1; -------------------------------------------------------------------------- procedure Fournir_Operande_2 (Op_2 : Octet.T_Octet) is begin Operande_2 := Op_2; end Fournir_Operande_2; -------------------------------------------------------------------------- function Executer (Operation : T_Operation) return Octet.T_Octet is begin Flag := Registres.Lire_Simple (Z80_Defs.F); case Operation is when Desassembleur.Inc => Inc_F (Operande_1, Flag); when Desassembleur.Dec => Dec_F (Operande_1, Flag); when Desassembleur.Z80_And => And_F (Operande_1, Operande_2, Flag); when Desassembleur.Z80_Or => Or_F (Operande_1, Operande_2, Flag); when Desassembleur.Z80_Xor => Xor_F (Operande_1, Operande_2, Flag); when Desassembleur.Neg => Neg_F (Operande_1, Flag); when Desassembleur.Adc => Adc_F (Operande_1, Operande_2, Flag); when Desassembleur.Add => Add_F (Operande_1, Operande_2, Flag); when Desassembleur.Sbc => Sbc_F (Operande_1, Operande_2, Flag); when Desassembleur.Sub => Sub_F (Operande_1, Operande_2, Flag); when Desassembleur.Cp => Cp_F (Operande_1, Operande_2, Flag); when Desassembleur.Rl => Rl_F (Operande_1, Flag, True); when Desassembleur.Rla => Rl_F (Operande_1, Flag, False); when Desassembleur.Rlc => Rlc_F (Operande_1, Flag, True); when Desassembleur.Rlca => Rlc_F (Operande_1, Flag, False); when Desassembleur.Rr => Rr_F (Operande_1, Flag, True); when Desassembleur.Rra => Rr_F (Operande_1, Flag, False); when Desassembleur.Rrc => Rrc_F (Operande_1, Flag, True); when Desassembleur.Rrca => Rrc_F (Operande_1, Flag, False); when Desassembleur.Sla => Sla_F (Operande_1, Flag); when Desassembleur.Sra => Sra_F (Operande_1, Flag); when Desassembleur.Srl => Srl_F (Operande_1, Flag); when others => null; end case; -- sauvegarde flags + retour resultat de l'operation Registres.Ecrire_Simple (Z80_Defs.F, Flag); return Operande_1; end Executer; -------------------------------------------------------------------------- -- PRIVE -------------------------------------------------------------------------- procedure Inc_F (Octet_1, Flag : in out Octet.T_Octet) is Carry : Boolean := False; begin Bit_Flag := Octet.Convert_Bit (Flag); Bit_Octet_1 := Octet.Convert_Bit (Octet_1); Add_8_Bit_C_V_H (Bit_Octet_1, Un, Carry, Bit_Flag (2), Bit_Flag (4)); Octet_1 := Octet.Convert_Octet (Bit_Octet_1); -- flag (rq: half_carry et over_flow modifiee par add_8_bit_c_v_h) Bit_Flag (1) := False; Modif_Flag_Z_S (Bit_Octet_1, Bit_Flag); Flag := Octet.Convert_Octet (Bit_Flag); end Inc_F; -------------------------------------------------- procedure Dec_F (Octet_1, Flag : in out Octet.T_Octet) is Carry : Boolean := False; begin Bit_Flag := Octet.Convert_Bit (Flag); Bit_Octet_1 := Octet.Convert_Bit (Octet_1); Add_8_Bit_C_V_H (Bit_Octet_1, Moins_Un, Carry, Bit_Flag (2), Bit_Flag (4)); Octet_1 := Octet.Convert_Octet (Bit_Octet_1); -- flag (rq: half_carry over_flow modifiee par add_8_bit_c_v_h) Bit_Flag (1) := True; Bit_Flag (4) := not Bit_Flag (4); Modif_Flag_Z_S (Bit_Octet_1, Bit_Flag); Flag := Octet.Convert_Octet (Bit_Flag); end Dec_F; -------------------------------------------------- procedure And_F (Octet_1 : in out Octet.T_Octet; Octet_2 : Octet.T_Octet; Flag : in out Octet.T_Octet) is begin Octet_1 := Octet."and" (Octet_1, Octet_2); Bit_Flag := Octet.Convert_Bit (Flag); Bit_Octet_1 := Octet.Convert_Bit (Octet_1); -- flag Bit_Flag (0) := False; Bit_Flag (1) := False; Bit_Flag (4) := True; Modif_Flag_P_Z_S (Bit_Octet_1, Bit_Flag); Flag := Octet.Convert_Octet (Bit_Flag); end And_F; -------------------------------------------------- procedure Or_F (Octet_1 : in out Octet.T_Octet; Octet_2 : Octet.T_Octet; Flag : in out Octet.T_Octet) is begin Octet_1 := Octet."or" (Octet_1, Octet_2); Bit_Flag := Octet.Convert_Bit (Flag); Bit_Octet_1 := Octet.Convert_Bit (Octet_1); -- flag Bit_Flag (0) := False; Bit_Flag (1) := False; Bit_Flag (4) := False; Modif_Flag_P_Z_S (Bit_Octet_1, Bit_Flag); Flag := Octet.Convert_Octet (Bit_Flag); end Or_F; -------------------------------------------------- procedure Xor_F (Octet_1 : in out Octet.T_Octet; Octet_2 : Octet.T_Octet; Flag : in out Octet.T_Octet) is begin Octet_1 := Octet."xor" (Octet_1, Octet_2); Bit_Flag := Octet.Convert_Bit (Flag); Bit_Octet_1 := Octet.Convert_Bit (Octet_1); -- flag Bit_Flag (0) := False; Bit_Flag (1) := False; Bit_Flag (4) := False; Modif_Flag_P_Z_S (Bit_Octet_1, Bit_Flag); Flag := Octet.Convert_Octet (Bit_Flag); end Xor_F; -------------------------------------------------- procedure Neg_F (Octet_1, Flag : in out Octet.T_Octet) is Carry : Boolean := False; begin Octet_1 := Octet."not" (Octet_1); Bit_Octet_1 := Octet.Convert_Bit (Octet_1); Bit_Flag := Octet.Convert_Bit (Flag); Add_8_Bit_C_V_H (Bit_Octet_1, Un, Carry, Bit_Flag (2), Bit_Flag (4)); Octet_1 := Octet.Convert_Octet (Bit_Octet_1); -- flag rq: carry, half_cary et over_flow modifiees ds add_8_bit_c_v_h Bit_Flag (0) := not Carry; Bit_Flag (1) := True; Bit_Flag (4) := not Bit_Flag (4); Modif_Flag_Z_S (Bit_Octet_1, Bit_Flag); Flag := Octet.Convert_Octet (Bit_Flag); end Neg_F; -------------------------------------------------- procedure Adc_F (Octet_1 : in out Octet.T_Octet; Octet_2 : Octet.T_Octet; Flag : in out Octet.T_Octet) is begin Bit_Octet_1 := Octet.Convert_Bit (Octet_1); Bit_Octet_2 := Octet.Convert_Bit (Octet_2); Bit_Flag := Octet.Convert_Bit (Flag); Add_8_Bit_C_V_H (Bit_Octet_1, Bit_Octet_2, Bit_Flag (0), Bit_Flag (2), Bit_Flag (4)); Octet_1 := Octet.Convert_Octet (Bit_Octet_1); -- flag rq: carry , half_cary et over_flow modifiees ds add_8_bit_c_v_h Bit_Flag (1) := False; Modif_Flag_Z_S (Bit_Octet_1, Bit_Flag); Flag := Octet.Convert_Octet (Bit_Flag); end Adc_F; -------------------------------------------------- procedure Add_F (Octet_1 : in out Octet.T_Octet; Octet_2 : Octet.T_Octet; Flag : in out Octet.T_Octet) is Carry : Boolean := False; begin Bit_Octet_1 := Octet.Convert_Bit (Octet_1); Bit_Octet_2 := Octet.Convert_Bit (Octet_2); Bit_Flag := Octet.Convert_Bit (Flag); Add_8_Bit_C_V_H (Bit_Octet_1, Bit_Octet_2, Carry, Bit_Flag (2), Bit_Flag (4)); Octet_1 := Octet.Convert_Octet (Bit_Octet_1); -- flag rq: carry et half_cary modifiees ds add_8_bit_c_v_h Bit_Flag (0) := Carry; Bit_Flag (1) := False; Modif_Flag_Z_S (Bit_Octet_1, Bit_Flag); Flag := Octet.Convert_Octet (Bit_Flag); end Add_F; -------------------------------------------------- procedure Sub_F (Octet_1 : in out Octet.T_Octet; Octet_2 : Octet.T_Octet; Flag : in out Octet.T_Octet) is Carry : Boolean := False; begin Bit_Octet_1 := Octet.Convert_Bit (Octet_1); Bit_Octet_2 := Octet.Convert_Bit (Octet_2); Bit_Flag := Octet.Convert_Bit (Flag); Bit_Octet_2 := Octet."not" (Bit_Octet_2); Add_8_Bit_C_V_H (Bit_Octet_2, Un, Carry, Bit_Flag (2), Bit_Flag (4)); Carry := False; Add_8_Bit_C_V_H (Bit_Octet_1, Bit_Octet_2, Carry, Bit_Flag (2), Bit_Flag (4)); Octet_1 := Octet.Convert_Octet (Bit_Octet_1); -- flag rq: carry, half_cary et over_flow modifiees ds add_8_bit_c_v_h Bit_Flag (0) := not Carry; Bit_Flag (1) := True; Bit_Flag (4) := not Bit_Flag (4); Modif_Flag_Z_S (Bit_Octet_1, Bit_Flag); Flag := Octet.Convert_Octet (Bit_Flag); end Sub_F; ------------------------------------------------ procedure Sbc_F (Octet_1 : in out Octet.T_Octet; Octet_2 : Octet.T_Octet; Flag : in out Octet.T_Octet) is Carry : Boolean := False; begin Bit_Octet_1 := Octet.Convert_Bit (Octet_1); Bit_Octet_2 := Octet.Convert_Bit (Octet_2); Bit_Flag := Octet.Convert_Bit (Flag); if Bit_Flag (0) then Add_8_Bit_C_V_H (Bit_Octet_2, Zero, Bit_Flag (0), Bit_Flag (2), Bit_Flag (4)); end if; Bit_Octet_2 := Octet."not" (Bit_Octet_2); Add_8_Bit_C_V_H (Bit_Octet_2, Un, Carry, Bit_Flag (2), Bit_Flag (4)); Bit_Flag (0) := False; Add_8_Bit_C_V_H (Bit_Octet_1, Bit_Octet_2, Bit_Flag (0), Bit_Flag (2), Bit_Flag (4)); Octet_1 := Octet.Convert_Octet (Bit_Octet_1); -- flag rq: carry, half_cary et over_flow modifiees ds add_8_bit_c_v_h Bit_Flag (0) := not Bit_Flag (0); Bit_Flag (1) := True; Bit_Flag (4) := not Bit_Flag (4); Modif_Flag_Z_S (Bit_Octet_1, Bit_Flag); Flag := Octet.Convert_Octet (Bit_Flag); end Sbc_F; ------------------------------------------------ procedure Cp_F (Octet_1 : Octet.T_Octet; Octet_2 : Octet.T_Octet; Flag : in out Octet.T_Octet) is Carry : Boolean := False; begin Bit_Octet_1 := Octet.Convert_Bit (Octet_1); Bit_Octet_2 := Octet.Convert_Bit (Octet_2); Bit_Flag := Octet.Convert_Bit (Flag); Bit_Octet_2 := Octet."not" (Bit_Octet_2); Add_8_Bit_C_V_H (Bit_Octet_2, Un, Carry, Bit_Flag (2), Bit_Flag (4)); Carry := False; Add_8_Bit_C_V_H (Bit_Octet_1, Bit_Octet_2, Carry, Bit_Flag (2), Bit_Flag (4)); -- flag rq: carry, half_cary et over_flow modifiees ds add_8_bit_c_v_h Bit_Flag (0) := Octet_1 < Octet_2; Bit_Flag (1) := True; Bit_Flag (4) := not Bit_Flag (4); Modif_Flag_Z_S (Bit_Octet_1, Bit_Flag); Flag := Octet.Convert_Octet (Bit_Flag); end Cp_F; -------------------------------------------------- -- DECALAGES -------------------------------------------------- function Modif_Flag_Decalage (Bit_Octet_1 : Octet.T_Bit_Octet; Bit_Flag : Octet.T_Bit_Octet; Flag_P_Z_S_A_Modifier : Boolean) return Octet.T_Octet is Le_Bit_Flag : Octet.T_Bit_Octet := Bit_Flag; begin Le_Bit_Flag (1) := False; Le_Bit_Flag (4) := False; if Flag_P_Z_S_A_Modifier then Modif_Flag_P_Z_S (Bit_Octet_1, Le_Bit_Flag); end if; return Octet.Convert_Octet (Le_Bit_Flag); end Modif_Flag_Decalage; -------------------------------------------------- procedure Rl_F (Octet_1 : in out Octet.T_Octet; Flag : in out Octet.T_Octet; Flag_P_Z_S_A_Modifier : Boolean) is Sauv_Carry : Boolean; begin Bit_Octet_1 := Octet.Convert_Bit (Octet_1); Bit_Flag := Octet.Convert_Bit (Flag); Sauv_Carry := Bit_Flag (0); Bit_Flag (0) := Bit_Octet_1 (7); for I in reverse 1 .. 7 loop Bit_Octet_1 (I) := Bit_Octet_1 (I - 1); end loop; Bit_Octet_1 (0) := Sauv_Carry; Octet_1 := Octet.Convert_Octet (Bit_Octet_1); -- flag (rq carry modifiee ds la boucle) Flag := Modif_Flag_Decalage (Bit_Octet_1, Bit_Flag, Flag_P_Z_S_A_Modifier); end Rl_F; -------------------------------------------------- procedure Rlc_F (Octet_1 : in out Octet.T_Octet; Flag : in out Octet.T_Octet; Flag_P_Z_S_A_Modifier : Boolean) is begin Bit_Octet_1 := Octet.Convert_Bit (Octet_1); Bit_Flag := Octet.Convert_Bit (Flag); Bit_Flag (0) := Bit_Octet_1 (7); for I in reverse 1 .. 7 loop Bit_Octet_1 (I) := Bit_Octet_1 (I - 1); end loop; Bit_Octet_1 (0) := Bit_Flag (0); Octet_1 := Octet.Convert_Octet (Bit_Octet_1); -- flag (rq carry modifiee ds la boucle) Flag := Modif_Flag_Decalage (Bit_Octet_1, Bit_Flag, Flag_P_Z_S_A_Modifier); end Rlc_F; -------------------------------------------------- procedure Rr_F (Octet_1 : in out Octet.T_Octet; Flag : in out Octet.T_Octet; Flag_P_Z_S_A_Modifier : Boolean) is Sauv_Carry : Boolean; begin Bit_Octet_1 := Octet.Convert_Bit (Octet_1); Bit_Flag := Octet.Convert_Bit (Flag); Sauv_Carry := Bit_Flag (0); Bit_Flag (0) := Bit_Octet_1 (0); for I in 0 .. 6 loop Bit_Octet_1 (I) := Bit_Octet_1 (I + 1); end loop; Bit_Octet_1 (7) := Sauv_Carry; Octet_1 := Octet.Convert_Octet (Bit_Octet_1); -- flag (rq carry modifiee ds la boucle) Flag := Modif_Flag_Decalage (Bit_Octet_1, Bit_Flag, Flag_P_Z_S_A_Modifier); end Rr_F; -------------------------------------------------- procedure Rrc_F (Octet_1 : in out Octet.T_Octet; Flag : in out Octet.T_Octet; Flag_P_Z_S_A_Modifier : Boolean) is begin Bit_Octet_1 := Octet.Convert_Bit (Octet_1); Bit_Flag := Octet.Convert_Bit (Flag); Bit_Flag (0) := Bit_Octet_1 (0); for I in 0 .. 6 loop Bit_Octet_1 (I) := Bit_Octet_1 (I + 1); end loop; Bit_Octet_1 (7) := Bit_Flag (0); Octet_1 := Octet.Convert_Octet (Bit_Octet_1); -- flag (rq carry modifiee ds la boucle) Flag := Modif_Flag_Decalage (Bit_Octet_1, Bit_Flag, Flag_P_Z_S_A_Modifier); end Rrc_F; -------------------------------------------------- procedure Sla_F (Octet_1 : in out Octet.T_Octet; Flag : in out Octet.T_Octet) is begin Bit_Octet_1 := Octet.Convert_Bit (Octet_1); Bit_Flag := Octet.Convert_Bit (Flag); Bit_Flag (0) := Bit_Octet_1 (7); for I in reverse 1 .. 7 loop Bit_Octet_1 (I) := Bit_Octet_1 (I - 1); end loop; Bit_Octet_1 (0) := False; Octet_1 := Octet.Convert_Octet (Bit_Octet_1); -- flag (rq carry modifiee ds la boucle) Flag := Modif_Flag_Decalage (Bit_Octet_1, Bit_Flag, True); end Sla_F; -------------------------------------------------- procedure Sra_F (Octet_1 : in out Octet.T_Octet; Flag : in out Octet.T_Octet) is begin Bit_Octet_1 := Octet.Convert_Bit (Octet_1); Bit_Flag := Octet.Convert_Bit (Flag); Bit_Flag (0) := Bit_Octet_1 (0); for I in 0 .. 6 loop Bit_Octet_1 (I) := Bit_Octet_1 (I + 1); end loop; Octet_1 := Octet.Convert_Octet (Bit_Octet_1); -- flag (rq carry modifiee ds la boucle) Flag := Modif_Flag_Decalage (Bit_Octet_1, Bit_Flag, True); end Sra_F; -------------------------------------------------- procedure Srl_F (Octet_1 : in out Octet.T_Octet; Flag : in out Octet.T_Octet) is begin Bit_Octet_1 := Octet.Convert_Bit (Octet_1); Bit_Flag := Octet.Convert_Bit (Flag); Bit_Flag (0) := Bit_Octet_1 (0); for I in 0 .. 6 loop Bit_Octet_1 (I) := Bit_Octet_1 (I + 1); end loop; Bit_Octet_1 (7) := False; Octet_1 := Octet.Convert_Octet (Bit_Octet_1); -- flag (rq carry modifiee ds la boucle) Flag := Modif_Flag_Decalage (Bit_Octet_1, Bit_Flag, True); end Srl_F; -------------------------------------------------- -- PROCEDURES INTERNES (privees) -------------------------------------------------- procedure Add_8_Bit_C_V_H (Bit_Octet_1 : in out Octet.T_Bit_Octet; Bit_Octet_2 : Octet.T_Bit_Octet; Carry : in out Boolean; Over_Flow : in out Boolean; Half_Carry : in out Boolean) is -- ajoute 2 octets entre eux en tenant compte de la carry passee -- en parametre et en modifiant la carry, la half_carry et l'over_flow -- qui on ete passe en parametre begin for I in Octet.Num_Bit loop Octet.Add_Bit_C (Bit_Octet_1 (I), Bit_Octet_2 (I), Carry); if I = 3 then Half_Carry := Carry; end if; if I = 6 then Over_Flow := Carry; end if; end loop; Over_Flow := Over_Flow xor Carry; end Add_8_Bit_C_V_H; -------------------------------------------------- procedure Modif_Flag_Z_S (Bit_Octet : Octet.T_Bit_Octet; Flag : in out Octet.T_Bit_Octet) is begin -- flag Z Flag (6) := True; for I in Octet.Num_Bit loop if Bit_Octet (I) then Flag (6) := False; exit; end if; end loop; -- flag S Bit_Flag (7) := Bit_Octet (7); end Modif_Flag_Z_S; -------------------------------------------------- procedure Modif_Flag_P_Z_S (Bit_Octet : Octet.T_Bit_Octet; Flag : in out Octet.T_Bit_Octet) is Nb_Bit_A_Un : Octet.T_Octet := 0; begin -- flag P for I in Octet.Num_Bit loop if Bit_Octet (I) then Nb_Bit_A_Un := Nb_Bit_A_Un + 1; end if; end loop; if (Nb_Bit_A_Un mod 2) = 1 then Flag (2) := False; else Flag (2) := True; end if; -- flag Z Flag (6) := (Nb_Bit_A_Un = 0); -- flag S Bit_Flag (7) := Bit_Octet (7); end Modif_Flag_P_Z_S; -------------------------------------------------- end Alu_8_Bit;
nblk1=21 nid=21 hdr6=3e [0x00] rec0=1f rec1=00 rec2=01 rec3=034 [0x01] rec0=00 rec1=00 rec2=14 rec3=012 [0x02] rec0=14 rec1=00 rec2=03 rec3=004 [0x03] rec0=14 rec1=00 rec2=06 rec3=016 [0x04] rec0=06 rec1=00 rec2=1e rec3=022 [0x05] rec0=17 rec1=00 rec2=17 rec3=054 [0x06] rec0=0b rec1=00 rec2=08 rec3=034 [0x07] rec0=20 rec1=00 rec2=0a rec3=064 [0x08] rec0=21 rec1=00 rec2=0b rec3=050 [0x09] rec0=24 rec1=00 rec2=04 rec3=010 [0x0a] rec0=00 rec1=00 rec2=1b rec3=020 [0x0b] rec0=1f rec1=00 rec2=05 rec3=02c [0x0c] rec0=1e rec1=00 rec2=07 rec3=020 [0x0d] rec0=1f rec1=00 rec2=12 rec3=016 [0x0e] rec0=1b rec1=00 rec2=0c rec3=064 [0x0f] rec0=00 rec1=00 rec2=0d rec3=006 [0x10] rec0=21 rec1=00 rec2=0e rec3=028 [0x11] rec0=1e rec1=00 rec2=0f rec3=02c [0x12] rec0=1f rec1=00 rec2=1a rec3=07a [0x13] rec0=22 rec1=00 rec2=09 rec3=004 [0x14] rec0=22 rec1=00 rec2=1c rec3=046 [0x15] rec0=22 rec1=00 rec2=13 rec3=006 [0x16] rec0=1f rec1=00 rec2=20 rec3=056 [0x17] rec0=23 rec1=00 rec2=11 rec3=032 [0x18] rec0=23 rec1=00 rec2=10 rec3=002 [0x19] rec0=21 rec1=00 rec2=15 rec3=050 [0x1a] rec0=19 rec1=00 rec2=16 rec3=040 [0x1b] rec0=1a rec1=00 rec2=18 rec3=076 [0x1c] rec0=01 rec1=00 rec2=1d rec3=002 [0x1d] rec0=29 rec1=00 rec2=02 rec3=020 [0x1e] rec0=0c rec1=00 rec2=19 rec3=000 [0x1f] rec0=0c rec1=00 rec2=19 rec3=000 [0x20] rec0=0c rec1=00 rec2=19 rec3=000 tail 0x2151d19c8838f75846255 0x42a00088462060003 Free Block Chain: 0x21: 0000 00 1f 00 75 80 01 3b 01 00 00 00 00 25 20 20 20 ┆ u ; % ┆ 0x1f: 0000 00 00 00 5f 00 36 20 20 20 20 2d 2d 2d 2d 2d 2d ┆ _ 6 ------┆