292 lines
8.4 KiB
Plaintext
292 lines
8.4 KiB
Plaintext
|
TERRA Technical Support Sheet
|
|||
|
-----------------------------
|
|||
|
Ref: TZ-BJ-18/05/90
|
|||
|
TZ-BJ-23/07/90
|
|||
|
|
|||
|
Subject:
|
|||
|
Bug
|
|||
|
Library module RealConversions.RealToString
|
|||
|
3.40
|
|||
|
|
|||
|
Procedure RealToString adds wrongly 1.00 to converted numbers
|
|||
|
|
|||
|
The bug is located in Module RealConversions.MOD in Procedure
|
|||
|
RealToString. Line 328
|
|||
|
r := r + 0.5 * exp10 (-ABS(digits)) + (1.0 + epsilon); (* round it now *)
|
|||
|
|
|||
|
should be changed to
|
|||
|
r := r + 0.5 * exp10 (-ABS(digits)) * (1.0 + epsilon); (* round it now *)
|
|||
|
^
|
|||
|
we have to multiply, not to add
|
|||
|
|
|||
|
Even if you do not need RealConversions now, we recommend to correct
|
|||
|
RealConversions.MOD at once.
|
|||
|
The new object file can be placed in the path specified by the environment
|
|||
|
variable M2OBJ. Due to the fact that .OBJ files have more priority in the
|
|||
|
linker search strategy the old version of RealConversion placed in the
|
|||
|
M2LIB.LIB will be omitted.
|
|||
|
|
|||
|
(*-----------------------------------------------------------------------*)
|
|||
|
|
|||
|
TERRA Technical Support Sheet
|
|||
|
-----------------------------
|
|||
|
|
|||
|
Ref: TZ-BJ-11/06/90
|
|||
|
|
|||
|
Subject:
|
|||
|
Problem
|
|||
|
RTD Option settings
|
|||
|
3.40
|
|||
|
|
|||
|
Run-Time Debugger rejects some option settings.
|
|||
|
|
|||
|
RTD options /J, /I and /K do not work if they are the last options
|
|||
|
in the list. RTD issues an option error message that is not
|
|||
|
appropriate and then terminates. Adding another option after the
|
|||
|
/J,/I or /K cures the problem.
|
|||
|
|
|||
|
Example:
|
|||
|
SET M2RTD=/H:40/J:1C,21,33
|
|||
|
results in the error message:
|
|||
|
Illegal option /J, interrupt vector needed, use ","
|
|||
|
|
|||
|
SET M2RTD=/J:1C,21,33/H:40
|
|||
|
performs correctly
|
|||
|
|
|||
|
(*-----------------------------------------------------------------------*)
|
|||
|
|
|||
|
TERRA Technical Support Sheet
|
|||
|
-----------------------------
|
|||
|
|
|||
|
Ref: TZ-BJ-11/06/90
|
|||
|
|
|||
|
Subject:
|
|||
|
Restriction
|
|||
|
RTD with packed .EXE files
|
|||
|
3.40
|
|||
|
|
|||
|
The Run-Time Debugger works not correctly with packed .EXE files
|
|||
|
|
|||
|
Program files linked with the pack option (/P) will cause the
|
|||
|
RTD to defective behavior.
|
|||
|
|
|||
|
Use the Linker pack option only for the final distribution release
|
|||
|
of your application.
|
|||
|
(*-----------------------------------------------------------------------*)
|
|||
|
|
|||
|
TERRA Technical Support Sheet
|
|||
|
-----------------------------
|
|||
|
|
|||
|
Ref: TZ-BJ-23/07/90
|
|||
|
|
|||
|
Subject:
|
|||
|
Restriction
|
|||
|
RTD .MAP files with line numbers
|
|||
|
3.40
|
|||
|
|
|||
|
The Run-Time Debugger works not correctly with .MAP files which
|
|||
|
contain source line numbers.
|
|||
|
|
|||
|
Program files linked with the line number switch (/LI) will cause the
|
|||
|
RTD to defective behavior.
|
|||
|
|
|||
|
This option is only used in order to produce symbolic information for
|
|||
|
debuggers like SYMDEB, CODEVIEW or PFIXPLUS.
|
|||
|
(*-----------------------------------------------------------------------*)
|
|||
|
|
|||
|
TERRA Technical Support Sheet
|
|||
|
-----------------------------
|
|||
|
Ref: TZ-BJ-11/06/90
|
|||
|
|
|||
|
Subject:
|
|||
|
Information
|
|||
|
M2C
|
|||
|
3.40
|
|||
|
|
|||
|
Switching overflow test for LONGINT's On or Off
|
|||
|
|
|||
|
The overflow test for LONGINT multiplications will not be switched
|
|||
|
as usual with compiler option R+/R-. To control this
|
|||
|
specific part of testcode you have to combine the options /R and /T.
|
|||
|
|
|||
|
The overflow test for LONGINT multiplications is correctly ON with options:
|
|||
|
/R+/T+
|
|||
|
and it is correctly OFF with options:
|
|||
|
/R-/T-
|
|||
|
|
|||
|
(*-----------------------------------------------------------------------*)
|
|||
|
|
|||
|
TERRA Technical Support Sheet
|
|||
|
-----------------------------
|
|||
|
Ref: TZ-BJ-11/06/90
|
|||
|
|
|||
|
Subject:
|
|||
|
BUG
|
|||
|
POINT-Editor
|
|||
|
2.01
|
|||
|
|
|||
|
Template files larger than 1024 Bytes.
|
|||
|
|
|||
|
The Point-Editor's template files (e.g. M2ASSIST.INI) are restricted
|
|||
|
to a maximum size of 1 KB. With larger template files the editor will
|
|||
|
show a very strange behavior and even crash.
|
|||
|
Unfortunately there is no appropriate error message.
|
|||
|
|
|||
|
(*-----------------------------------------------------------------------*)
|
|||
|
|
|||
|
TERRA Technical Support Sheet
|
|||
|
-----------------------------
|
|||
|
Ref: TZ-BJ-11/06/90
|
|||
|
|
|||
|
Subject:
|
|||
|
Information
|
|||
|
POINT-Editor
|
|||
|
2.01
|
|||
|
|
|||
|
Too many filebuffers reserved in the "PTEXPERT.INI" configuration file
|
|||
|
|
|||
|
Usually it is no problem to compile and link a program directly in the
|
|||
|
Point-Editor shell. If you receive a heap overflow while starting
|
|||
|
the compiler from the shell it is often due to the fact that too many
|
|||
|
file buffers are allocated for the Point-Editor.
|
|||
|
|
|||
|
Note: The term "buffers" means not the entry in the "CONFIG.SYS" file.
|
|||
|
There is entry in the "PT.INI" file, with the same name.
|
|||
|
|
|||
|
Since a lot of development system users copy their "PTEXPERT.INI"
|
|||
|
into the "PT.INI" file, they get some problems with insufficient
|
|||
|
memory in the PT-Shell.
|
|||
|
To avoid such problems you should decrease the number of buffers
|
|||
|
in the Point configuration file to 40.
|
|||
|
|
|||
|
Example:
|
|||
|
Original line in "PTEXPERT.INI":
|
|||
|
buffers=140 -- lots of file buffers
|
|||
|
|
|||
|
sould be chanched to:
|
|||
|
buffers=40 -- not too much, but enough for fast processing
|
|||
|
|
|||
|
(*----------------------------------------------------------------------*)
|
|||
|
|
|||
|
TERRA Technical Support Sheet
|
|||
|
-----------------------------
|
|||
|
Ref: TZ-BJ-11/06/90
|
|||
|
|
|||
|
Subject:
|
|||
|
Information
|
|||
|
M2C
|
|||
|
3.40 and 3.X
|
|||
|
|
|||
|
Two dimensional arrays are always allocated on even boundaries.
|
|||
|
|
|||
|
As an addition to the explanations in the user's manual you have to take
|
|||
|
into consideration that two (or more) dimensional arrays are allocated
|
|||
|
to even boundaries. The compiler swtich /A does not affect this in any case.
|
|||
|
|
|||
|
NOTE: This is only a clarification of the documentation. The implementation
|
|||
|
of the alignment has not been changed since release 3.00.
|
|||
|
|
|||
|
MODULE Alignment;
|
|||
|
|
|||
|
FROM SYSTEM IMPORT
|
|||
|
(*P*) TSIZE;
|
|||
|
|
|||
|
(*$A-*)
|
|||
|
TYPE
|
|||
|
X = ARRAY [ 0..4], [ 0..30 ] OF CHAR; (* 155 Bytes of Data. But *)
|
|||
|
(*$A=*) (* 5 times 32(!) Bytes will *)
|
|||
|
(* be allocated *)
|
|||
|
|
|||
|
BEGIN
|
|||
|
IF TSIZE(X) # 155 THEN
|
|||
|
HALT (* will be executed *)
|
|||
|
END; (* if *)
|
|||
|
END Alignment.
|
|||
|
|
|||
|
(*-----------------------------------------------------------------------*)
|
|||
|
|
|||
|
TERRA Technical Support Sheet
|
|||
|
-----------------------------
|
|||
|
Ref: TZ-BJ-16/08/90
|
|||
|
|
|||
|
Subject:
|
|||
|
Bug
|
|||
|
Run-Time Debugger shows wrong procedures
|
|||
|
3.40
|
|||
|
|
|||
|
In some cases the procedure displayed/indicated in the source window
|
|||
|
does not correspond to the executed procedure (after a go command).
|
|||
|
|
|||
|
This only happens under the following conditions:
|
|||
|
|
|||
|
- The source module contains two adjacient procedures where the name
|
|||
|
of the second one is shorter than the name of the first one, but
|
|||
|
otherwise identical to the beginning of the name of the first one.
|
|||
|
Example:
|
|||
|
|
|||
|
ReadByte
|
|||
|
Read -> name identical to the beginning of ReadByte
|
|||
|
|
|||
|
- These procedures are written one after another in the source file.
|
|||
|
|
|||
|
- The first one of these procedures is removed by the linker
|
|||
|
(optimize = ON).
|
|||
|
|
|||
|
If all of the three above mentioned conditions are fulfilled the RTD may
|
|||
|
show you after a go command the wrong procedure in the source window or
|
|||
|
behaves more or less defectively.
|
|||
|
To verify whether a procedure is removed or not you can use the
|
|||
|
.MAP file.
|
|||
|
|
|||
|
After that, the possible workarounds are easy to find out:
|
|||
|
|
|||
|
- Insert an empty dummy procedure between the two procedures.
|
|||
|
Note: An empty, unreferenced procedure will be removed by the linker,
|
|||
|
therefore no extra code will increase your .EXE-File size.
|
|||
|
- Rename the specific procedures so that the name begins with
|
|||
|
different characters.
|
|||
|
- Reorder the procedures in your source.
|
|||
|
Note: The Logitech Modula-2 Compiler passes 4 times through the code,
|
|||
|
so forward references are allowed.
|
|||
|
- Link your application with optimize switch off (for debug reasons only).
|
|||
|
|
|||
|
|
|||
|
(*-------------------------------------------------------------------------
|
|||
|
Example:
|
|||
|
|
|||
|
To clearly illustrate the condition for this specific bug we enclose a
|
|||
|
test module which should be linked with the /O (optimize) switch to enforce
|
|||
|
the error.
|
|||
|
--------------------------------------------------------------------------*)
|
|||
|
MODULE SameProcNameBugofDebuggers;
|
|||
|
|
|||
|
VAR
|
|||
|
x : CARDINAL;
|
|||
|
|
|||
|
PROCEDURE SameAgain;
|
|||
|
(* Not called, removed when linking with /o *)
|
|||
|
BEGIN
|
|||
|
x := 7;
|
|||
|
END SameAgain;
|
|||
|
|
|||
|
|
|||
|
PROCEDURE Same;
|
|||
|
BEGIN
|
|||
|
x := 3;
|
|||
|
END Same;
|
|||
|
|
|||
|
|
|||
|
PROCEDURE LastProc;
|
|||
|
BEGIN
|
|||
|
x := 2;
|
|||
|
Same;
|
|||
|
x := 4;
|
|||
|
END LastProc;
|
|||
|
|
|||
|
BEGIN
|
|||
|
x := 1;
|
|||
|
LastProc;
|
|||
|
x := 5;
|
|||
|
END SameProcNameBugofDebuggers.
|
|||
|
(*-----------------------------------------------------------------------*)
|