t_shiftneg.mod 423 B

12345678910111213
  1. MODULE TShiftNeg;
  2. // SHIFT by a negative or oversized amount drops out-of-span bits and
  3. // must not fault (a wild word address was loaded before). Exit 42.
  4. TYPE BS = SET OF [0..15];
  5. VAR b, e : BS;
  6. ExitCode : INTEGER;
  7. BEGIN
  8. b := SHIFT(BS{1, 2, 3}, -1); (* {0,1,2} *)
  9. e := SHIFT(BS{1, 2, 3}, 100); (* {} *)
  10. IF (b = BS{0, 1, 2}) AND (e = BS{}) THEN
  11. ExitCode := 42
  12. ELSE ExitCode := 1 END
  13. END TShiftNeg.