BlackBox 1.7.2-a1 Changes

Features

#187 adding a run-time debugger to BlackBox
#189 improving the treatment of the sign bit in Math/SMath

Documentation

#190 add comment about stack and heap memory configuration

Bugs

#184 HYPERLINK ignored in RTF import
#186 aligning code procedure syntax with docu
#188 compiler trap with SYSTEM.VAL
#191 fixing a compiler trap after syntax error
#192 Kernel.Call does not work with ANYREC-parameters
#193 typing error in Documents.SetPageOp.Do
#194 Meta.PutParam and Kernel.Call for open arrays are mismatched

Details

#184 (Bug, 2018-03-21): HYPERLINK ignored in RTF import
Some RTF exporters add leading white space to the HYPERLINK field instruction.
This leading white space needs to be skipped in order to handle the HYPERLINK correctly.

In addition, the closing double quote of the link target needs to be removed.
This applies to all HYPERLINKs.

Reported by Helmut Zinn, 2018-03-12.

#186 (Bug, 2018-06-02): aligning code procedure syntax with docu
Dev/Docu/P-S-I.odc specifies that code procedures are a comma-separated sequence of constant expressions.
Leading, trailing, or multiple adjacent commas are not allowed.
In addition, the docu allows arbitrary constant expressions, not only integer and string literals.
The parser in DevCPP.GetCode therefore needs to be aligned with the docu.

Reported by Zorko, 2018-04-18.

#187 (Feature, 2018-06-07): adding a run-time debugger to BlackBox
It is proposed to add a run-time debugger for BlackBox.
A prototype of such a debugger is available from Oberon microsystems
and has been adapted to BlackBox 1.7 by oberoncore.
It is based on the Windows debugging API and is able to set code
and data breakpoints, do single step execution and more.
However, the user interface needs improvements and various changes
made in the post-mortem debugger since BlackBox 1.6 need to be applied
also to the run-time debugger.

Proposed by J. Templ, 2018-05-15.

#188 (Bug, 2018-06-16): compiler trap with SYSTEM.VAL
The following example leads to a compiler trap:

<pre>
PROCEDURE Test;
 VAR li: LONGINT; s: SET;
BEGIN
 li := SYSTEM.VAL(LONGINT, s * s) + 1
END Test;
</pre>

Reported by Oleg N. Cher, 2018-06-12.

#189 (Feature, 2018-07-05): improving the treatment of the sign bit in Math/SMath
It is proposed to add the functions CopySign and SignBit according to IEEE 754-2008 to Math/SMath. In addition, the implementation of Sign, Sinh, Tanh, ArcSinh, ArcTanh, Mantissa, and Real should return negative zero (-0.0) if the argument is negative zero.

Reported by Robert, 2018-06-19.

#190 (Documentation, 2018-11-30): add comment about stack and heap memory configuration
When increasing the stack size in DevLinker for creating an exe file with a larger stack the
heap size must be reduced. Otherwise there may be strange effects for example when opening
a file dialog box because Windows functions are running out of memory.
This fact should be added as a comment in Kernel and DevLinker.

#191 (Bug, 2018-11-30): fixing a compiler trap after syntax error
The compiler produces a NIL dereference (read) trap instead of an error message
for the following example:

@MODULE TestCompilerError;
VAR string: POINTER TO ARRAY OF CHAR;
BEGIN NEW(string, LEN 5 1); ...
@
Reported by Rainer Neubauer

#192 (Bug, 2018-12-07): Kernel.Call does not work with ANYREC-parameters
Kernel.Call does not work with ANYREC-parameters because the type tag is not passed.

Reported by Eugene Temirgaleev.

#193 (Bug, 2018-12-10): typing error in Documents.SetPageOp.Do
In the procedure Documents.SetPageOp.Do a typing error should be fixed.
wrong is:
 op.ph := d.ph;
correct is:
 op.pw := pw;

Reported by Ivan Denisov

#194 (Bug, 2018-12-20): Meta.PutParam and Kernel.Call for open arrays are mismatched
Meta.PutParam and Kernel.Call for open arrays are mismatched.
Thereby the order of parameters representing the length-vector
of a multi-dimensional dynamic array gets inverted.

Reported by Eugene Temirgaleev, 2018-12-02.