added MUL test
This commit is contained in:
parent
6b3b41a0c8
commit
837c691fdc
1 changed files with 282 additions and 0 deletions
282
pdptests.py
282
pdptests.py
|
@ -710,6 +710,288 @@ class TestMethods(unittest.TestCase):
|
|||
self.assertEqual(p.r[1], expected_R1)
|
||||
expected_R1 = (expected_R1 - 1) & 0o177777
|
||||
|
||||
def test_mul(self):
|
||||
# huge table of data generated via SIMH
|
||||
# each entry is X (16 bits), Y (16), X*Y (2 x 16 bits)
|
||||
simhdata = [
|
||||
0o177777, 0o177777, 0, 1, 0o177776, 0o177777, 0,
|
||||
2, 0o177000, 0o177777, 0, 0o001000, 0o176543, 0o177777, 0,
|
||||
0o001235, 0o105432, 0o177777, 0, 0o072346, 0o100420, 0o177777, 0,
|
||||
0o077360, 0o100002, 0o177777, 0, 0o077776, 0o100001, 0o177777, 0,
|
||||
0o077777, 0o100000, 0o177777, 0, 0o100000, 0o077777, 0o177777,
|
||||
0o177777, 0o100001, 0o077776, 0o177777, 0o177777, 0o100002,
|
||||
0o077775, 0o177777, 0o177777, 0o100003, 0o054321, 0o177777,
|
||||
0o177777, 0o123457, 0o043210, 0o177777, 0o177777, 0o134570,
|
||||
0o032412, 0o177777, 0o177777, 0o145366, 7, 0o177777, 0o177777,
|
||||
0o177771, 6, 0o177777, 0o177777, 0o177772, 5, 0o177777, 0o177777,
|
||||
0o177773, 4, 0o177777, 0o177777, 0o177774, 3, 0o177777, 0o177777,
|
||||
0o177775, 2, 0o177777, 0o177777, 0o177776, 1, 0o177777, 0o177777,
|
||||
0o177777, 0o177777, 0o177776, 0, 2, 0o177776, 0o177776, 0, 4,
|
||||
0o177000, 0o177776, 0, 0o002000, 0o176543, 0o177776, 0, 0o002472,
|
||||
0o105432, 0o177776, 0, 0o164714, 0o100420, 0o177776, 0, 0o176740,
|
||||
0o100002, 0o177776, 0, 0o177774, 0o100001, 0o177776, 0, 0o177776,
|
||||
0o100000, 0o177776, 1, 0, 0o077777, 0o177776, 0o177777, 2,
|
||||
0o077776, 0o177776, 0o177777, 4, 0o077775, 0o177776, 0o177777, 6,
|
||||
0o054321, 0o177776, 0o177777, 0o047136, 0o043210, 0o177776,
|
||||
0o177777, 0o071360, 0o032412, 0o177776, 0o177777, 0o112754, 7,
|
||||
0o177776, 0o177777, 0o177762, 6, 0o177776, 0o177777, 0o177764, 5,
|
||||
0o177776, 0o177777, 0o177766, 4, 0o177776, 0o177777, 0o177770, 3,
|
||||
0o177776, 0o177777, 0o177772, 2, 0o177776, 0o177777, 0o177774, 1,
|
||||
0o177776, 0o177777, 0o177776, 0o177777, 0o177000, 0, 0o001000,
|
||||
0o177776, 0o177000, 0, 0o002000, 0o177000, 0o177000, 4, 0,
|
||||
0o176543, 0o177000, 5, 0o035000, 0o105432, 0o177000, 0o000351,
|
||||
0o146000, 0o100420, 0o177000, 0o000375, 0o160000, 0o100002,
|
||||
0o177000, 0o000377, 0o176000, 0o100001, 0o177000, 0o000377,
|
||||
0o177000, 0o100000, 0o177000, 0o000400, 0, 0o077777, 0o177000,
|
||||
0o177400, 0o001000, 0o077776, 0o177000, 0o177400, 0o002000,
|
||||
0o077775, 0o177000, 0o177400, 0o003000, 0o054321, 0o177000,
|
||||
0o177516, 0o057000, 0o043210, 0o177000, 0o177562, 0o170000,
|
||||
0o032412, 0o177000, 0o177625, 0o166000, 7, 0o177000, 0o177777,
|
||||
0o171000, 6, 0o177000, 0o177777, 0o172000, 5, 0o177000, 0o177777,
|
||||
0o173000, 4, 0o177000, 0o177777, 0o174000, 3, 0o177000, 0o177777,
|
||||
0o175000, 2, 0o177000, 0o177777, 0o176000, 1, 0o177000, 0o177777,
|
||||
0o177000, 0o177777, 0o176543, 0, 0o001235, 0o177776, 0o176543, 0,
|
||||
0o002472, 0o177000, 0o176543, 5, 0o035000, 0o176543, 0o176543, 6,
|
||||
0o152111, 0o105432, 0o176543, 0o000461, 0o076416, 0o100420,
|
||||
0o176543, 0o000513, 0o134460, 0o100002, 0o176543, 0o000516,
|
||||
0o075306, 0o100001, 0o176543, 0o000516, 0o076543, 0o100000,
|
||||
0o176543, 0o000516, 0o100000, 0o077777, 0o176543, 0o177261,
|
||||
0o101235, 0o077776, 0o176543, 0o177261, 0o102472, 0o077775,
|
||||
0o176543, 0o177261, 0o103727, 0o054321, 0o176543, 0o177427,
|
||||
0o162723, 0o043210, 0o176543, 0o177507, 0o127230, 0o032412,
|
||||
0o176543, 0o177565, 0o062336, 7, 0o176543, 0o177777, 0o166665, 6,
|
||||
0o176543, 0o177777, 0o170122, 5, 0o176543, 0o177777, 0o171357, 4,
|
||||
0o176543, 0o177777, 0o172614, 3, 0o176543, 0o177777, 0o174051, 2,
|
||||
0o176543, 0o177777, 0o175306, 1, 0o176543, 0o177777, 0o176543,
|
||||
0o177777, 0o105432, 0, 0o072346, 0o177776, 0o105432, 0, 0o164714,
|
||||
0o177000, 0o105432, 0o000351, 0o146000, 0o176543, 0o105432,
|
||||
0o000461, 0o076416, 0o105432, 0o105432, 0o032541, 0o037244,
|
||||
0o100420, 0o105432, 0o034766, 0o145640, 0o100002, 0o105432,
|
||||
0o035162, 0o013064, 0o100001, 0o105432, 0o035162, 0o105432,
|
||||
0o100000, 0o105432, 0o035163, 0, 0o077777, 0o105432, 0o142615,
|
||||
0o072346, 0o077776, 0o105432, 0o142615, 0o164714, 0o077775,
|
||||
0o105432, 0o142616, 0o057262, 0o054321, 0o105432, 0o153561,
|
||||
0o100072, 0o043210, 0o105432, 0o157713, 0o000720, 0o032412,
|
||||
0o105432, 0o163707, 0o150404, 7, 0o105432, 0o177774, 0o146666, 6,
|
||||
0o105432, 0o177775, 0o041234, 5, 0o105432, 0o177775, 0o133602, 4,
|
||||
0o105432, 0o177776, 0o026150, 3, 0o105432, 0o177776, 0o120516, 2,
|
||||
0o105432, 0o177777, 0o013064, 1, 0o105432, 0o177777, 0o105432,
|
||||
0o177777, 0o100420, 0, 0o077360, 0o177776, 0o100420, 0, 0o176740,
|
||||
0o177000, 0o100420, 0o000375, 0o160000, 0o176543, 0o100420,
|
||||
0o000513, 0o134460, 0o105432, 0o100420, 0o034766, 0o145640,
|
||||
0o100420, 0o100420, 0o037361, 0o020400, 0o100002, 0o100420,
|
||||
0o037567, 0o001040, 0o100001, 0o100420, 0o037567, 0o100420,
|
||||
0o100000, 0o100420, 0o037570, 0, 0o077777, 0o100420, 0o140210,
|
||||
0o077360, 0o077776, 0o100420, 0o140210, 0o176740, 0o077775,
|
||||
0o100420, 0o140211, 0o076320, 0o054321, 0o100420, 0o151765,
|
||||
0o157020, 0o043210, 0o100420, 0o156406, 0o170200, 0o032412,
|
||||
0o100420, 0o162663, 0o055240, 7, 0o100420, 0o177774, 0o103560, 6,
|
||||
0o100420, 0o177775, 0o003140, 5, 0o100420, 0o177775, 0o102520, 4,
|
||||
0o100420, 0o177776, 0o002100, 3, 0o100420, 0o177776, 0o101460, 2,
|
||||
0o100420, 0o177777, 0o001040, 1, 0o100420, 0o177777, 0o100420,
|
||||
0o177777, 0o100002, 0, 0o077776, 0o177776, 0o100002, 0, 0o177774,
|
||||
0o177000, 0o100002, 0o000377, 0o176000, 0o176543, 0o100002,
|
||||
0o000516, 0o075306, 0o105432, 0o100002, 0o035162, 0o013064,
|
||||
0o100420, 0o100002, 0o037567, 0o001040, 0o100002, 0o100002,
|
||||
0o037776, 4, 0o100001, 0o100002, 0o037776, 0o100002, 0o100000,
|
||||
0o100002, 0o037777, 0, 0o077777, 0o100002, 0o140001, 0o077776,
|
||||
0o077776, 0o100002, 0o140001, 0o177774, 0o077775, 0o100002,
|
||||
0o140002, 0o077772, 0o054321, 0o100002, 0o151630, 0o030642,
|
||||
0o043210, 0o100002, 0o156274, 0o106420, 0o032412, 0o100002,
|
||||
0o162573, 0o065024, 7, 0o100002, 0o177774, 0o100016, 6, 0o100002,
|
||||
0o177775, 0o000014, 5, 0o100002, 0o177775, 0o100012, 4, 0o100002,
|
||||
0o177776, 0o000010, 3, 0o100002, 0o177776, 0o100006, 2, 0o100002,
|
||||
0o177777, 4, 1, 0o100002, 0o177777, 0o100002, 0o177777, 0o100001,
|
||||
0, 0o077777, 0o177776, 0o100001, 0, 0o177776, 0o177000, 0o100001,
|
||||
0o000377, 0o177000, 0o176543, 0o100001, 0o000516, 0o076543,
|
||||
0o105432, 0o100001, 0o035162, 0o105432, 0o100420, 0o100001,
|
||||
0o037567, 0o100420, 0o100002, 0o100001, 0o037776, 0o100002,
|
||||
0o100001, 0o100001, 0o037777, 1, 0o100000, 0o100001, 0o037777,
|
||||
0o100000, 0o077777, 0o100001, 0o140000, 0o177777, 0o077776,
|
||||
0o100001, 0o140001, 0o077776, 0o077775, 0o100001, 0o140001,
|
||||
0o177775, 0o054321, 0o100001, 0o151627, 0o154321, 0o043210,
|
||||
0o100001, 0o156274, 0o043210, 0o032412, 0o100001, 0o162573,
|
||||
0o032412, 7, 0o100001, 0o177774, 0o100007, 6, 0o100001, 0o177775,
|
||||
6, 5, 0o100001, 0o177775, 0o100005, 4, 0o100001, 0o177776, 4, 3,
|
||||
0o100001, 0o177776, 0o100003, 2, 0o100001, 0o177777, 2, 1,
|
||||
0o100001, 0o177777, 0o100001, 0o177777, 0o100000, 0, 0o100000,
|
||||
0o177776, 0o100000, 1, 0, 0o177000, 0o100000, 0o000400, 0,
|
||||
0o176543, 0o100000, 0o000516, 0o100000, 0o105432, 0o100000,
|
||||
0o035163, 0, 0o100420, 0o100000, 0o037570, 0, 0o100002, 0o100000,
|
||||
0o037777, 0, 0o100001, 0o100000, 0o037777, 0o100000, 0o100000,
|
||||
0o100000, 0o040000, 0, 0o077777, 0o100000, 0o140000, 0o100000,
|
||||
0o077776, 0o100000, 0o140001, 0, 0o077775, 0o100000, 0o140001,
|
||||
0o100000, 0o054321, 0o100000, 0o151627, 0o100000, 0o043210,
|
||||
0o100000, 0o156274, 0, 0o032412, 0o100000, 0o162573, 0, 7,
|
||||
0o100000, 0o177774, 0o100000, 6, 0o100000, 0o177775, 0, 5,
|
||||
0o100000, 0o177775, 0o100000, 4, 0o100000, 0o177776, 0, 3,
|
||||
0o100000, 0o177776, 0o100000, 2, 0o100000, 0o177777, 0, 1,
|
||||
0o100000, 0o177777, 0o100000, 0o177777, 0o077777, 0o177777,
|
||||
0o100001, 0o177776, 0o077777, 0o177777, 2, 0o177000, 0o077777,
|
||||
0o177400, 0o001000, 0o176543, 0o077777, 0o177261, 0o101235,
|
||||
0o105432, 0o077777, 0o142615, 0o072346, 0o100420, 0o077777,
|
||||
0o140210, 0o077360, 0o100002, 0o077777, 0o140001, 0o077776,
|
||||
0o100001, 0o077777, 0o140000, 0o177777, 0o100000, 0o077777,
|
||||
0o140000, 0o100000, 0o077777, 0o077777, 0o037777, 1, 0o077776,
|
||||
0o077777, 0o037776, 0o100002, 0o077775, 0o077777, 0o037776, 3,
|
||||
0o054321, 0o077777, 0o026150, 0o023457, 0o043210, 0o077777,
|
||||
0o021503, 0o134570, 0o032412, 0o077777, 0o015204, 0o145366, 7,
|
||||
0o077777, 3, 0o077771, 6, 0o077777, 2, 0o177772, 5, 0o077777, 2,
|
||||
0o077773, 4, 0o077777, 1, 0o177774, 3, 0o077777, 1, 0o077775, 2,
|
||||
0o077777, 0, 0o177776, 1, 0o077777, 0, 0o077777, 0o177777,
|
||||
0o077776, 0o177777, 0o100002, 0o177776, 0o077776, 0o177777, 4,
|
||||
0o177000, 0o077776, 0o177400, 0o002000, 0o176543, 0o077776,
|
||||
0o177261, 0o102472, 0o105432, 0o077776, 0o142615, 0o164714,
|
||||
0o100420, 0o077776, 0o140210, 0o176740, 0o100002, 0o077776,
|
||||
0o140001, 0o177774, 0o100001, 0o077776, 0o140001, 0o077776,
|
||||
0o100000, 0o077776, 0o140001, 0, 0o077777, 0o077776, 0o037776,
|
||||
0o100002, 0o077776, 0o077776, 0o037776, 4, 0o077775, 0o077776,
|
||||
0o037775, 0o100006, 0o054321, 0o077776, 0o026147, 0o147136,
|
||||
0o043210, 0o077776, 0o021503, 0o071360, 0o032412, 0o077776,
|
||||
0o015204, 0o112754, 7, 0o077776, 3, 0o077762, 6, 0o077776, 2,
|
||||
0o177764, 5, 0o077776, 2, 0o077766, 4, 0o077776, 1, 0o177770, 3,
|
||||
0o077776, 1, 0o077772, 2, 0o077776, 0, 0o177774, 1, 0o077776, 0,
|
||||
0o077776, 0o177777, 0o077775, 0o177777, 0o100003, 0o177776,
|
||||
0o077775, 0o177777, 6, 0o177000, 0o077775, 0o177400, 0o003000,
|
||||
0o176543, 0o077775, 0o177261, 0o103727, 0o105432, 0o077775,
|
||||
0o142616, 0o057262, 0o100420, 0o077775, 0o140211, 0o076320,
|
||||
0o100002, 0o077775, 0o140002, 0o077772, 0o100001, 0o077775,
|
||||
0o140001, 0o177775, 0o100000, 0o077775, 0o140001, 0o100000,
|
||||
0o077777, 0o077775, 0o037776, 3, 0o077776, 0o077775, 0o037775,
|
||||
0o100006, 0o077775, 0o077775, 0o037775, 0o000011, 0o054321,
|
||||
0o077775, 0o026147, 0o072615, 0o043210, 0o077775, 0o021503,
|
||||
0o026150, 0o032412, 0o077775, 0o015204, 0o060342, 7, 0o077775, 3,
|
||||
0o077753, 6, 0o077775, 2, 0o177756, 5, 0o077775, 2, 0o077761, 4,
|
||||
0o077775, 1, 0o177764, 3, 0o077775, 1, 0o077767, 2, 0o077775, 0,
|
||||
0o177772, 1, 0o077775, 0, 0o077775, 0o177777, 0o054321, 0o177777,
|
||||
0o123457, 0o177776, 0o054321, 0o177777, 0o047136, 0o177000,
|
||||
0o054321, 0o177516, 0o057000, 0o176543, 0o054321, 0o177427,
|
||||
0o162723, 0o105432, 0o054321, 0o153561, 0o100072, 0o100420,
|
||||
0o054321, 0o151765, 0o157020, 0o100002, 0o054321, 0o151630,
|
||||
0o030642, 0o100001, 0o054321, 0o151627, 0o154321, 0o100000,
|
||||
0o054321, 0o151627, 0o100000, 0o077777, 0o054321, 0o026150,
|
||||
0o023457, 0o077776, 0o054321, 0o026147, 0o147136, 0o077775,
|
||||
0o054321, 0o026147, 0o072615, 0o054321, 0o054321, 0o017320,
|
||||
0o055241, 0o043210, 0o054321, 0o014170, 0o052410, 0o032412,
|
||||
0o054321, 0o011146, 0o136452, 7, 0o054321, 2, 0o066667, 6,
|
||||
0o054321, 2, 0o012346, 5, 0o054321, 1, 0o136025, 4, 0o054321, 1,
|
||||
0o061504, 3, 0o054321, 1, 0o005163, 2, 0o054321, 0, 0o130642, 1,
|
||||
0o054321, 0, 0o054321, 0o177777, 0o043210, 0o177777, 0o134570,
|
||||
0o177776, 0o043210, 0o177777, 0o071360, 0o177000, 0o043210,
|
||||
0o177562, 0o170000, 0o176543, 0o043210, 0o177507, 0o127230,
|
||||
0o105432, 0o043210, 0o157713, 0o000720, 0o100420, 0o043210,
|
||||
0o156406, 0o170200, 0o100002, 0o043210, 0o156274, 0o106420,
|
||||
0o100001, 0o043210, 0o156274, 0o043210, 0o100000, 0o043210,
|
||||
0o156274, 0, 0o077777, 0o043210, 0o021503, 0o134570, 0o077776,
|
||||
0o043210, 0o021503, 0o071360, 0o077775, 0o043210, 0o021503,
|
||||
0o026150, 0o054321, 0o043210, 0o014170, 0o052410, 0o043210,
|
||||
0o043210, 0o011556, 0o124100, 0o032412, 0o043210, 0o007234,
|
||||
0o164520, 7, 0o043210, 1, 0o166670, 6, 0o043210, 1, 0o123460, 5,
|
||||
0o043210, 1, 0o060250, 4, 0o043210, 1, 0o015040, 3, 0o043210, 0,
|
||||
0o151630, 2, 0o043210, 0, 0o106420, 1, 0o043210, 0, 0o043210,
|
||||
0o177777, 0o032412, 0o177777, 0o145366, 0o177776, 0o032412,
|
||||
0o177777, 0o112754, 0o177000, 0o032412, 0o177625, 0o166000,
|
||||
0o176543, 0o032412, 0o177565, 0o062336, 0o105432, 0o032412,
|
||||
0o163707, 0o150404, 0o100420, 0o032412, 0o162663, 0o055240,
|
||||
0o100002, 0o032412, 0o162573, 0o065024, 0o100001, 0o032412,
|
||||
0o162573, 0o032412, 0o100000, 0o032412, 0o162573, 0, 0o077777,
|
||||
0o032412, 0o015204, 0o145366, 0o077776, 0o032412, 0o015204,
|
||||
0o112754, 0o077775, 0o032412, 0o015204, 0o060342, 0o054321,
|
||||
0o032412, 0o011146, 0o136452, 0o043210, 0o032412, 0o007234,
|
||||
0o164520, 0o032412, 0o032412, 0o005375, 0o022144, 7, 0o032412, 1,
|
||||
0o071506, 6, 0o032412, 1, 0o037074, 5, 0o032412, 1, 0o004462, 4,
|
||||
0o032412, 0, 0o152050, 3, 0o032412, 0, 0o117436, 2, 0o032412, 0,
|
||||
0o065024, 1, 0o032412, 0, 0o032412, 0o177777, 7, 0o177777,
|
||||
0o177771, 0o177776, 7, 0o177777, 0o177762, 0o177000, 7, 0o177777,
|
||||
0o171000, 0o176543, 7, 0o177777, 0o166665, 0o105432, 7, 0o177774,
|
||||
0o146666, 0o100420, 7, 0o177774, 0o103560, 0o100002, 7, 0o177774,
|
||||
0o100016, 0o100001, 7, 0o177774, 0o100007, 0o100000, 7, 0o177774,
|
||||
0o100000, 0o077777, 7, 3, 0o077771, 0o077776, 7, 3, 0o077762,
|
||||
0o077775, 7, 3, 0o077753, 0o054321, 7, 2, 0o066667, 0o043210, 7,
|
||||
1, 0o166670, 0o032412, 7, 1, 0o071506, 7, 7, 0, 0o000061, 6, 7, 0,
|
||||
0o000052, 5, 7, 0, 0o000043, 4, 7, 0, 0o000034, 3, 7, 0, 0o000025,
|
||||
2, 7, 0, 0o000016, 1, 7, 0, 7, 0o177777, 6, 0o177777, 0o177772,
|
||||
0o177776, 6, 0o177777, 0o177764, 0o177000, 6, 0o177777, 0o172000,
|
||||
0o176543, 6, 0o177777, 0o170122, 0o105432, 6, 0o177775, 0o041234,
|
||||
0o100420, 6, 0o177775, 0o003140, 0o100002, 6, 0o177775, 0o000014,
|
||||
0o100001, 6, 0o177775, 6, 0o100000, 6, 0o177775, 0, 0o077777, 6,
|
||||
2, 0o177772, 0o077776, 6, 2, 0o177764, 0o077775, 6, 2, 0o177756,
|
||||
0o054321, 6, 2, 0o012346, 0o043210, 6, 1, 0o123460, 0o032412, 6,
|
||||
1, 0o037074, 7, 6, 0, 0o000052, 6, 6, 0, 0o000044, 5, 6, 0,
|
||||
0o000036, 4, 6, 0, 0o000030, 3, 6, 0, 0o000022, 2, 6, 0, 0o000014,
|
||||
1, 6, 0, 6, 0o177777, 5, 0o177777, 0o177773, 0o177776, 5,
|
||||
0o177777, 0o177766, 0o177000, 5, 0o177777, 0o173000, 0o176543, 5,
|
||||
0o177777, 0o171357, 0o105432, 5, 0o177775, 0o133602, 0o100420, 5,
|
||||
0o177775, 0o102520, 0o100002, 5, 0o177775, 0o100012, 0o100001, 5,
|
||||
0o177775, 0o100005, 0o100000, 5, 0o177775, 0o100000, 0o077777, 5,
|
||||
2, 0o077773, 0o077776, 5, 2, 0o077766, 0o077775, 5, 2, 0o077761,
|
||||
0o054321, 5, 1, 0o136025, 0o043210, 5, 1, 0o060250, 0o032412, 5,
|
||||
1, 0o004462, 7, 5, 0, 0o000043, 6, 5, 0, 0o000036, 5, 5, 0,
|
||||
0o000031, 4, 5, 0, 0o000024, 3, 5, 0, 0o000017, 2, 5, 0, 0o000012,
|
||||
1, 5, 0, 5, 0o177777, 4, 0o177777, 0o177774, 0o177776, 4,
|
||||
0o177777, 0o177770, 0o177000, 4, 0o177777, 0o174000, 0o176543, 4,
|
||||
0o177777, 0o172614, 0o105432, 4, 0o177776, 0o026150, 0o100420, 4,
|
||||
0o177776, 0o002100, 0o100002, 4, 0o177776, 0o000010, 0o100001, 4,
|
||||
0o177776, 4, 0o100000, 4, 0o177776, 0, 0o077777, 4, 1, 0o177774,
|
||||
0o077776, 4, 1, 0o177770, 0o077775, 4, 1, 0o177764, 0o054321, 4,
|
||||
1, 0o061504, 0o043210, 4, 1, 0o015040, 0o032412, 4, 0, 0o152050,
|
||||
7, 4, 0, 0o000034, 6, 4, 0, 0o000030, 5, 4, 0, 0o000024, 4, 4, 0,
|
||||
0o000020, 3, 4, 0, 0o000014, 2, 4, 0, 0o000010, 1, 4, 0, 4,
|
||||
0o177777, 3, 0o177777, 0o177775, 0o177776, 3, 0o177777, 0o177772,
|
||||
0o177000, 3, 0o177777, 0o175000, 0o176543, 3, 0o177777, 0o174051,
|
||||
0o105432, 3, 0o177776, 0o120516, 0o100420, 3, 0o177776, 0o101460,
|
||||
0o100002, 3, 0o177776, 0o100006, 0o100001, 3, 0o177776, 0o100003,
|
||||
0o100000, 3, 0o177776, 0o100000, 0o077777, 3, 1, 0o077775,
|
||||
0o077776, 3, 1, 0o077772, 0o077775, 3, 1, 0o077767, 0o054321, 3,
|
||||
1, 0o005163, 0o043210, 3, 0, 0o151630, 0o032412, 3, 0, 0o117436,
|
||||
7, 3, 0, 0o000025, 6, 3, 0, 0o000022, 5, 3, 0, 0o000017, 4, 3, 0,
|
||||
0o000014, 3, 3, 0, 0o000011, 2, 3, 0, 6, 1, 3, 0, 3, 0o177777, 2,
|
||||
0o177777, 0o177776, 0o177776, 2, 0o177777, 0o177774, 0o177000, 2,
|
||||
0o177777, 0o176000, 0o176543, 2, 0o177777, 0o175306, 0o105432, 2,
|
||||
0o177777, 0o013064, 0o100420, 2, 0o177777, 0o001040, 0o100002, 2,
|
||||
0o177777, 4, 0o100001, 2, 0o177777, 2, 0o100000, 2, 0o177777, 0,
|
||||
0o077777, 2, 0, 0o177776, 0o077776, 2, 0, 0o177774, 0o077775, 2,
|
||||
0, 0o177772, 0o054321, 2, 0, 0o130642, 0o043210, 2, 0, 0o106420,
|
||||
0o032412, 2, 0, 0o065024, 7, 2, 0, 0o000016, 6, 2, 0, 0o000014, 5,
|
||||
2, 0, 0o000012, 4, 2, 0, 0o000010, 3, 2, 0, 6, 2, 2, 0, 4, 1, 2,
|
||||
0, 2, 0o177777, 1, 0o177777, 0o177777, 0o177776, 1, 0o177777,
|
||||
0o177776, 0o177000, 1, 0o177777, 0o177000, 0o176543, 1, 0o177777,
|
||||
0o176543, 0o105432, 1, 0o177777, 0o105432, 0o100420, 1, 0o177777,
|
||||
0o100420, 0o100002, 1, 0o177777, 0o100002, 0o100001, 1, 0o177777,
|
||||
0o100001, 0o100000, 1, 0o177777, 0o100000, 0o077777, 1, 0,
|
||||
0o077777, 0o077776, 1, 0, 0o077776, 0o077775, 1, 0, 0o077775,
|
||||
0o054321, 1, 0, 0o054321, 0o043210, 1, 0, 0o043210, 0o032412, 1,
|
||||
0, 0o032412, 7, 1, 0, 7, 6, 1, 0, 6, 5, 1, 0, 5, 4, 1, 0, 4, 3, 1,
|
||||
0, 3, 2, 1, 0, 2, 1, 1, 0, 1, 0
|
||||
]
|
||||
|
||||
a = InstructionBlock()
|
||||
# get data from simhdata and runs R0:R1 = X*Y; compares results
|
||||
a.mov(0o40000, 'sp') # just make sure there's a stack, not used
|
||||
a.mov(0o20000, 'r3') # simhdata at 020000
|
||||
a.label('loop')
|
||||
a.mov('(r3)+', 'r0') # load X
|
||||
a.beq('done') # zero is the end sentinel
|
||||
# a.mul('(r3)+', 'r0') # R0:R1 = X*Y
|
||||
a.literal(0o070023)
|
||||
a.cmp('(r3)+', 'r0') # check high order
|
||||
a.bne('fail')
|
||||
a.cmp('(r3)+', 'r1') # check low order
|
||||
a.bne('fail')
|
||||
a.br('loop')
|
||||
a.label('done')
|
||||
a.clr('r3') # r3 being zero indicates success
|
||||
a.halt()
|
||||
a.label('fail')
|
||||
a.halt() # r3 points after miscompare
|
||||
|
||||
p = self.make_pdp()
|
||||
instloc = 0o10000
|
||||
self.loadphysmem(p, a, instloc)
|
||||
self.loadphysmem(p, simhdata, 0o20000)
|
||||
p.run(pc=instloc)
|
||||
self.assertEqual(p.r[3], 0)
|
||||
|
||||
def test_div(self):
|
||||
# test the div instruction
|
||||
# The 32-bit int in R and R|1 is divided by the src operand
|
||||
|
|
Loading…
Add table
Reference in a new issue