r_rcmp.LST 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. Listing:
  2. 1 MODULE RCmp;
  3. 2 (* Real comparison regression test: < > <= >= must emit D5
  4. 3 (0D5H); they once emitted bare stack juggling, leaving operand
  5. 4 bits as the boolean (negative-vs-zero failures). ExitCode = 31:
  6. 5 bits 0-4 for the five true comparisons, none of the 64..4096
  7. 6 false-positive bits. *)
  8. 7 VAR ExitCode : INTEGER;
  9. 8 a, b, c, d, e, f, g, h, i, j, k, l : REAL;
  10. 9 BEGIN
  11. 10 a := -1.0; b := 0.0;
  12. 11 c := 0.0; d := -1.0;
  13. 12 e := -1.0; f := -1.0;
  14. 13 g := 0.0; h := 0.0;
  15. 14 i := -1.0; j := 0.0;
  16. 15 k := i * j;
  17. 16 l := 0.0;
  18. 17 ExitCode := 0;
  19. 18 IF a < b THEN ExitCode := ExitCode + 1 END;
  20. 19 IF c > d THEN ExitCode := ExitCode + 2 END;
  21. 20 IF e = f THEN ExitCode := ExitCode + 4 END;
  22. 21 IF g = h THEN ExitCode := ExitCode + 8 END;
  23. 22 IF k = l THEN ExitCode := ExitCode + 16 END;
  24. 23 IF a > b THEN ExitCode := ExitCode + 32 END;
  25. 24 IF a = b THEN ExitCode := ExitCode + 64 END;
  26. 25 IF c < d THEN ExitCode := ExitCode + 128 END;
  27. 26 IF c = d THEN ExitCode := ExitCode + 256 END;
  28. 27 IF e < f THEN ExitCode := ExitCode + 512 END;
  29. 28 IF e > f THEN ExitCode := ExitCode + 1024 END;
  30. 29 IF k < l THEN ExitCode := ExitCode + 2048 END;
  31. 30 IF k > l THEN ExitCode := ExitCode + 4096 END
  32. 31 END RCmp.
  33. 0 errors