home *** CD-ROM | disk | FTP | other *** search
- This is a completely *un*official list of bugs in TP 6.0. There have
- been (at least) two releases both numbered 6.00: the original one in
- October 1990, and another in June 1991. You can identify the later
- release by the date or by the file size: TURBO.EXE is 325982 bytes in
- the later release. Several bugs were fixed in the second release; those
- are marked below. I've also heard of a 6.01 release dated July 1991,
- but haven't tested any of these bugs against it.
-
- The list is very abbreviated; if any of the items are too obscure, ask
- and I'll expand on them.
-
- Juergen Schlegelmilch sent me a very detailed list of bugs & fixes in TP
- 6.0 & Turbovision; the file version (TP6BUGS4.ZIP) of this list contains
- all of his comments. It will be available on Fidonet on the PDN Pascal
- file echo area, and on Internet from garbo.uwasa.fi. It is *not*
- available on Compuserve, as it's just too long to post. Borland will
- not merge bug lists into the Borland forum download libraries there.
-
- I'd appreciate it if anyone sent me their own bug list; I'll publicize
- it on Usenet, Fidonet and Compuserve. I'd also appreciate hearing about
- patches.
-
- Duncan Murdoch
-
- dmurdoch@math.carleton.ca (Internet temporary address)
- dmurdoch@watstat.waterloo.edu (Internet address)
- 71631,122 (Compuserve)
- DJ Murdoch at 1:163/140.3 (Fidonet) (until Dec 31)
- 1:221/177.40 (after that).
-
- December 3, 1991:
-
- TP doesn't handle the denormal exception properly on an 8087 or 80287,
- so underflow sometimes creates non-zero results. Not fixed.
-
- Compile time evaluation of the ROUND() function is different than
- run-time evaluation in $N+ mode on numbers ending in .5. Not fixed.
-
- Arithmetic on the REAL type is sometimes inaccurate in the last few bits
- of the result. Not fixed.
-
- The coprocessor emulator doesn't properly emulate the FINCSTP and
- FDECSTP instructions in BASM. (These aren't used by compiled Pascal
- code.) Not fixed.
-
- The coprocessor emulator doesn't respect the precision control bits. Not
- fixed.
-
- The SEG operator in BASM doesn't work on variables declared in the stack
- segment. Not fixed.
-
- Referencing fields of records in BASM in a WITH block doesn't add the
- base address. Not fixed.
-
- BASM doesn't generate correct code for instructions like MOV AX,[WORD
- PTR BX]. (This is TASM Ideal mode syntax; MASM syntax MOV AX,WORD PTR
- [BX] is fine.) Not fixed.
-
- The Graph.TextWidth function returns incorrect results when fonts are
- scaled.
-
- A long list of bugs (with fixes!) in the Editors and Helpfile unit and
- TV demo programs is given in the accompanying file TVBUGS, by Juergen
- Schlegelmilch. (This list is not being posted here; it's available in
- TP6BUGS4.ZIP.)
-
- October 31, 1991:
-
- The instruction "IMUL AX, 16" (valid on an 80186+) is rejected by BASM.
- The equivalent "IMUL AX, AX, 16" does work (in $G+ mode). Not fixed.
-
- October 26, 1991:
-
- If a byte variable X = 0, then (X-1) DIV 8 produces a zero divide error.
- Fixed June 91.
-
- October 23, 1991:
-
- Hitting tab on a help topic with no crossrefs will crash the help
- system. A patch to HELPFILE.PAS is available.
-
- October 17, 1991:
-
- The coprocessor emulator does not respect the rounding bits internally
- or when storing results to Single or Double variables.
-
- October 11, 1991:
-
- Segments in external .OBJ files with no class names (e.g. ABSOLUTE
- segments) will crash TURBO, TPC or TPCX. Not fixed.
-
- September 16, 1991:
-
- The IDE will give incorrect matches when doing word searches on words at
- the start of lines (e.g. "Const" matches "onst"). Fixed June 91.
-
- The compiler won't allow the optional identifier in a variant record to
- be an already defined scalar type identifer. Not fixed.
-
- The compiler gives spurious errors if you nest loops very deeply (e.g.
- 256 deep).
-
-
- August 16, 1991
-
- Dangerous bugs:
-
- You can use typed constants and variables in constant expressions,
- giving garbage values. Fixed June 91.
-
- The coprocessor emulator doesn't check properly for internal stack
- overflow; it just wraps around and trashes the top of the stack segment.
- Not fixed.
-
- Succ(Seg(v)) = Seg(v) and Pred(Seg(v)) = Seg(v) ! Fixed June 91.
-
- TBufStream writes garbage to the stream sometimes. (A patch for this is
- available from Borland QA). Not fixed.
-
- IN doesn't properly handle out of range values. (What it does is to
- demote out of range scalars to byte, ignoring any high bits.) Not fixed.
-
- Referencing fields of records in inline machine code sometimes makes the
- compiler go quietly insane. Not fixed.
-
- Other bugs:
-
- Coprocessor errors are often reported at the wrong address, especially
- if the error occurs on the first pass through. Not fixed.
-
- GetDir returns a root directory for non-existent drives. (This is
- almost as documented.)
-
- Horizontal text justification to the right side doesn't work if the
- writing direction is vertical.
-
- Intr and MsDos don't always work properly in V86 mode under Windows 3,
- because they don't use the INT instruction.
-
- The TVEdit unit can't input some digits. (A patch for this is
- available.) Fixed in June 91.
-
- ^T in TVEdit sometimes deletes more than the next word. (This is by
- design, but inconsistent with the design of the IDE.)
-
- ^QF followed by ^L followed by Space deletes words in TVEdit. (This is
- also by design.)
-
- TProgram doesn't clean up memory properly on exit.
-
- TFileViewer's FileName field is never disposed.
-
- The IDE forgets your snow check setting if you jump to DOS and exit
- back.
-
- Writeln wipes out the status word in the coprocessor. Not fixed.
-
- You can allocate an array bigger than 65528 bytes on the heap; it may
- wrap around and trash whatever precedes it. Not fixed.
-
- The coprocessor emulator doesn't propagate NaNs the same way as a real
- coprocessor does. Not fixed.
-
- The string conversion routines sometimes print NaNs as INF.
-
- Complicated expressions involving Reals compiled $N+ will unnecessarily
- overflow the coprocessor stack (and trigger the dangerous error above).
- Not fixed.
-
- The $G+ option makes the inline assembler use inline floating point
- code, rather than the CD forms that allow emulation. Not fixed.
-
- Graph3.Plot leaves a word on the stack; if you call it repeatedly, you
- may get a stack overflow; if you call it from a routine that doesn't
- have any locals, you're dead. Fixed in June 91.
-
- Some weird problems with F7 Trace; sometimes it just refuses to do it.
-
- There are certain illegal Extended encodings that crash the debugger in
- TURBO. Not fixed.
-
- Range checking shouldn't apply to the limits in a for loop.
-
- Method arguments shouldn't be at the same scoping level as method names.
-
- The compiler exports private identifiers in .TPU files (though you can't
- use them).