From: terra@diku.dk (Morten Welinder)
Newsgroups: comp.lang.pascal
Subject: BP7: seven bugs, two features, one wish
Date: 14 Dec 92 07:09:18 GMT
Organization: None whatsoever.

Bug report: BP7, IDE, syntax highlighting, Asm, (Update).
Bug report: BP7, Tasm 3.20, CmpXchg.
Bug report: BP7, Td386, Ac-flag.
Bug report: BP7, IDE, star, minus, and plus keys.
Bug report: BP7, IDE, Ctrl-PgDn.
Bug report: BP7, Td386, Dos High.
Bug report: BP7, debugging, i386
Bug report: BP7, Graph, FloodFill (very minor)
Feature report: BP7, Tasm 3.20, differences on Frstor and Fldenv.
Feature report: BP7, variable typecasts, empty record.
Wish report: BP7, IDE, "words".


The following bug & feature report has been sent to bugs@borland.com,
dmurdoch@mast.QueensU.CA, and to comp.lang.pascal on Internet.

1: Syntax Highlighting (Update).
-------------------------------
The syntax highlighting of BP7/TP7 fails after identifiers starting
with "Asm_" or ending in a digit plus "Asm". The following text up to
the first "End" is considered assembly language. I have a hunch that
this can be fixed by patching some of the character sets in the .exe
files; finding out where is the problem.


2: Tasm fails on CmpXchg.
------------------------
Tasm version 3.20: The instruction "CmpXchg" (486 only) is not
assembled correctly. Tasm generates "0F B0 ...", "0F B1 ...", or
"66 0F B1 ..." in the byte, word, and dword versions respectively.
The correct sequences are (as Td knows) "0F A6 ...", "0F A7 ...",
and "66 0F A7 ..."

Fix: At offset $A20D in Tasm.Exe change "B0" to "A6".

(I simply used test data for my disassembler to find this bug. The
same test data found the "Imul Ebx,Ecx" bug in earlier versions of
Tasm. One would expect Borland to have similar test data, right?)


3: Undocumented changes in the code generation of Tasm.
------------------------------------------------------
In 486-mode (at least) "Frstor" and "Fldenv" now generate "Wait"
prefixes. The mnemonics "Fnrstor" and "Fnldenv" do not. The latter
ones are undocumented in the manuals (including appendix B).


4: Undocumented changes in variable typecasts.
---------------------------------------------
The compilers no longer allow you to variable typecast the empty
record (Type EmptyRec = Record End;) to any type. This used to be
really handy somtimes. Rewriting with untyped "@" and "^" is
possible, but it makes your programs look like lisp code.


5: Td386 crashes the system when Dos (5.0) is loaded high.
---------------------------------------------------------
The manual is not clear on whether Td386 sould be able to work with
Dos 5.0 loaded high. Appearantly it isn't. At the very least it
should check for Dos being loaded high and exit -- not simply crash.


6: Td386 does not allow a program to set the alignment check flag.
-----------------------------------------------------------------
On an i486 the Ac-flag should be set-able, if for no other reason
then for detecting the processor type. Programs like Infoplus
says my i486 is a i386 (with co-processor) when run under Td386.

On the other hand a program is allowed to set the single step flag.
The causes a trap and the debugger tells me I'm tracing some code.


7: The grey keys "*", "-", and "+" do not update the screen correctly.
---------------------------------------------------------------------
Open a new file and enter some text on line 1. Now on line 2 hold down
the grey "-". You'll notice that the screen does not scroll right.
This is probably a problem that can be solved with Temc.


8: Ctrl-PgDn does not always work on large files.
------------------------------------------------
Consider the following program:

       Program Test;
       Var Out : Text;
           I,J : Integer;
       Begin
         Assign(Out,'Test.Out');
         Rewrite(Out);
         For I:=1 To 100 Do Begin
           For J:=1 To 100 Do
             Writeln(Out,'Line #',J,' in section ',I);
         End;
         Close(Out);
       End.

which generates a large output file. Load this and press Crtl-PgDn.
I get a screen starting with "Line #1 in section 36" and no cursor.
Any movement of the cursor (including an extra Crtl-PgDn) redraws
the screen correctly. The bug was present in 6.0 too and I simply
cannot figure out precise rules for it to show. One might be able
to work around this bug using Temc.


9: The IDE's idea of words is narrow.
------------------------------------
As a user in a country that has more letters that English a find the
current version of WordLeft and WordRight annoying. IMHO it should be
possible to define which charaters should be considered letters.
Alternatively one could define characters from #128 (,C) to #165 (~N)
to be letters. Things used to be this way in version 5. (All this is
or the editor only -- I'm not changing the language!)


10: The IDE crashes when single stepping 386 code.
-------------------------------------------------
The RTL makefile states that you can make a version of Turbo.Tpl with
debug information in it. You can then single step (say) a longint
multiplication. The IDE crashes when using an i386. I assume this goes
for any instruction changing the upper parts of the registers.

BTW: As the file names of the assembler files in the generated Turbo.Tpl
include "SYS\" you must switch to \Bp\Rtl while debugging


11: FloodFill may crash the system in case of NMI occuring.
----------------------------------------------------------
FloodFill (I *think* it's FloodFill -- it's something in Graph.Tpu for
sure) uses the following code to switch stack:

       4A68    Cli                     ; 1
       4A69    Xchg    Di,Sp           ; 2
       4A6B    Mov     Bp,Ss           ; 3
       4A6D    Mov     Ss,Dx           ; 4
                                       ; 5
       4A6F    Sti                     ; 6

To protect against NMI the instruction marked "2" should be moved to "5".
Lines "1" and "6" can then be removed. This will guarantee (excepting
early and buggy 8088s) that not even NMI will occur before "3" or "4".
The chances of this happening are extremely small but non-AT machines
do use NMI for co-processor interrupts.
-- 
------------------------------------------------------------------------
Visit the lyrics archive at ftp.cs.uwp (mirrored to nic.funet.fi, a site
in Finland). All kinds of lyrics available -- upload "yours" and join.
------------------------------------------------------------------------
Newsgroups: comp.lang.pascal