|
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, generic, procedure Exe_001, seg_00554f
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« └─⟦this⟧
with Test_Io; use Test_Io; with Xlbt_Arithmetic; use Xlbt_Arithmetic; procedure Exe_001 is procedure Put (A : S_Long; Op : String; B : S_Long; C : S_Long; Width : Natural) is begin Hex (A, Width => Width); Put (' '); Put (Op); Put (' '); Hex (B, Width => Width); Put (" => "); Hex (C, Width => Width); New_Line; end Put; procedure Put (Op : String; B : S_Long; C : S_Long; Width : Natural) is begin Put (Op); Put (' '); Hex (B, Width => Width); Put (" => "); Hex (C, Width => Width); New_Line; end Put; generic type Numeric is range <>; Bits : in Positive; Name : in String; with function Oper (A, B : Numeric) return Numeric; procedure Logical_Test; procedure Logical_Test is procedure One (A, B : Numeric) is begin Put (S_Long (A), Name, S_Long (B), S_Long (Oper (A, B)), 4 + Bits / 4); end One; begin One (Numeric'First, Numeric'Last); One (Numeric'Last, Numeric'First); One (Numeric'First, 1); One (1, Numeric'First); One (Numeric'Last, 1); One (1, Numeric'Last); One (16#F#, 16#1#); One (16#1#, 16#F#); One (16#F#, 16#0#); One (16#0#, 16#F#); One (16#D#, 16#1#); One (16#1#, 16#D#); One (16#D#, 16#0#); One (16#0#, 16#D#); for I in Integer range 0 .. Bits - 2 loop One (Numeric'Last, Numeric (2 ** I)); One (Numeric (2 ** I), Numeric'Last); One ((2 ** (Bits / 3) - 1) * 2 ** (Bits / 3), Numeric (2 ** I)); One (Numeric (2 ** I), (2 ** (Bits / 3) - 1) * 2 ** (Bits / 3)); end loop; end Logical_Test; generic type Numeric is range <>; Bits : in Positive; Name : in String; with function Oper (A : Numeric) return Numeric; procedure Unary_Test; procedure Unary_Test is procedure One (A : Numeric) is begin Put (Name, S_Long (A), S_Long (Oper (A)), 4 + Bits / 4); end One; begin One (Numeric'First); One (Numeric'Last); One (1); One (2); One (3); One (16#F#); One (16#0#); One (16#D#); One ((2 ** (Bits / 3) - 1) * 2 ** (Bits / 3)); for I in Integer range 0 .. Bits - 2 loop One (Numeric (2 ** I)); end loop; end Unary_Test; generic type Numeric is range <>; Bits : in Positive; Name : in String := "shift"; with function Shift (A : Numeric; B : Integer) return Numeric is <>; procedure Shift_Test; procedure Shift_Test is procedure One (A : Numeric; B : Integer) is begin Put (S_Long (A), Name, S_Long (B), S_Long (Shift (A, B)), 4 + Bits / 4); end One; begin for I in Integer range 0 .. Bits loop One (Numeric'First, I); One (Numeric'First, -I); One (Numeric'Last, I); One (Numeric'Last, -I); One (0, I); One (0, -I); One (1, I); One (1, -I); One (16#F#, I); One (16#F#, -I); end loop; end Shift_Test; procedure And_S_Long is new Logical_Test (S_Long, 32, "and", "nd"); procedure And_U_Short is new Logical_Test (U_Short, 16, "and", "and"); procedure And_U_Char is new Logical_Test (U_Char, 8, "and", "and"); procedure Or_S_Long is new Logical_Test (S_Long, 32, "or", "or"); procedure Or_U_Short is new Logical_Test (U_Short, 16, "or", "or"); procedure Or_U_Char is new Logical_Test (U_Char, 8, "or", "or"); procedure Xor_S_Long is new Logical_Test (S_Long, 32, "xor", "xor"); procedure Xor_U_Short is new Logical_Test (U_Short, 16, "xor", "xor"); procedure Xor_U_Char is new Logical_Test (U_Char, 8, "xor", "xor"); procedure Not_S_Long is new Unary_Test (S_Long, 32, "not", "not"); procedure Not_U_Short is new Unary_Test (U_Short, 16, "not", "not"); procedure Not_U_Char is new Unary_Test (U_Char, 8, "not", "not"); procedure Shift_S_Long is new Shift_Test (S_Long, 32); procedure Shift_U_Short is new Shift_Test (U_Short, 16); procedure Shift_U_Char is new Shift_Test (U_Char, 8); begin And_S_Long; And_U_Short; And_U_Char; Or_S_Long; Or_U_Short; Or_U_Char; Xor_S_Long; Xor_U_Short; Xor_U_Char; Not_S_Long; Not_U_Short; Not_U_Char; Shift_S_Long; Shift_U_Short; Shift_U_Char; end Exe_001;
nblk1=7 nid=0 hdr6=e [0x00] rec0=28 rec1=00 rec2=01 rec3=03a [0x01] rec0=1f rec1=00 rec2=02 rec3=05a [0x02] rec0=24 rec1=00 rec2=03 rec3=00a [0x03] rec0=22 rec1=00 rec2=04 rec3=086 [0x04] rec0=00 rec1=00 rec2=07 rec3=002 [0x05] rec0=12 rec1=00 rec2=05 rec3=03e [0x06] rec0=19 rec1=00 rec2=06 rec3=000 tail 0x217009a9881978ba3deef 0x42a00088462063203