home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!mcsun!sunic!dkuug!diku!terra
- From: terra@diku.dk (Morten Welinder)
- Newsgroups: comp.lang.pascal
- Subject: BP7: seven bugs, two features, one wish
- Message-ID: <1992Dec14.070918.27781@odin.diku.dk>
- Date: 14 Dec 92 07:09:18 GMT
- Sender: terra@embla.diku.dk
- Organization: None whatsoever.
- Lines: 147
-
- 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.
- ------------------------------------------------------------------------
-