home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #30 / NN_1992_30.iso / spool / comp / lang / pascal / 7444 < prev    next >
Encoding:
Internet Message Format  |  1992-12-14  |  6.4 KB

  1. Path: sparky!uunet!mcsun!sunic!dkuug!diku!terra
  2. From: terra@diku.dk (Morten Welinder)
  3. Newsgroups: comp.lang.pascal
  4. Subject: BP7: seven bugs, two features, one wish
  5. Message-ID: <1992Dec14.070918.27781@odin.diku.dk>
  6. Date: 14 Dec 92 07:09:18 GMT
  7. Sender: terra@embla.diku.dk
  8. Organization: None whatsoever.
  9. Lines: 147
  10.  
  11. Bug report: BP7, IDE, syntax highlighting, Asm, (Update).
  12. Bug report: BP7, Tasm 3.20, CmpXchg.
  13. Bug report: BP7, Td386, Ac-flag.
  14. Bug report: BP7, IDE, star, minus, and plus keys.
  15. Bug report: BP7, IDE, Ctrl-PgDn.
  16. Bug report: BP7, Td386, Dos High.
  17. Bug report: BP7, debugging, i386
  18. Bug report: BP7, Graph, FloodFill (very minor)
  19. Feature report: BP7, Tasm 3.20, differences on Frstor and Fldenv.
  20. Feature report: BP7, variable typecasts, empty record.
  21. Wish report: BP7, IDE, "words".
  22.  
  23.  
  24. The following bug & feature report has been sent to bugs@borland.com,
  25. dmurdoch@mast.QueensU.CA, and to comp.lang.pascal on Internet.
  26.  
  27. 1: Syntax Highlighting (Update).
  28. -------------------------------
  29. The syntax highlighting of BP7/TP7 fails after identifiers starting
  30. with "Asm_" or ending in a digit plus "Asm". The following text up to
  31. the first "End" is considered assembly language. I have a hunch that
  32. this can be fixed by patching some of the character sets in the .exe
  33. files; finding out where is the problem.
  34.  
  35.  
  36. 2: Tasm fails on CmpXchg.
  37. ------------------------
  38. Tasm version 3.20: The instruction "CmpXchg" (486 only) is not
  39. assembled correctly. Tasm generates "0F B0 ...", "0F B1 ...", or
  40. "66 0F B1 ..." in the byte, word, and dword versions respectively.
  41. The correct sequences are (as Td knows) "0F A6 ...", "0F A7 ...",
  42. and "66 0F A7 ..."
  43.  
  44. Fix: At offset $A20D in Tasm.Exe change "B0" to "A6".
  45.  
  46. (I simply used test data for my disassembler to find this bug. The
  47. same test data found the "Imul Ebx,Ecx" bug in earlier versions of
  48. Tasm. One would expect Borland to have similar test data, right?)
  49.  
  50.  
  51. 3: Undocumented changes in the code generation of Tasm.
  52. ------------------------------------------------------
  53. In 486-mode (at least) "Frstor" and "Fldenv" now generate "Wait"
  54. prefixes. The mnemonics "Fnrstor" and "Fnldenv" do not. The latter
  55. ones are undocumented in the manuals (including appendix B).
  56.  
  57.  
  58. 4: Undocumented changes in variable typecasts.
  59. ---------------------------------------------
  60. The compilers no longer allow you to variable typecast the empty
  61. record (Type EmptyRec = Record End;) to any type. This used to be
  62. really handy somtimes. Rewriting with untyped "@" and "^" is
  63. possible, but it makes your programs look like lisp code.
  64.  
  65.  
  66. 5: Td386 crashes the system when Dos (5.0) is loaded high.
  67. ---------------------------------------------------------
  68. The manual is not clear on whether Td386 sould be able to work with
  69. Dos 5.0 loaded high. Appearantly it isn't. At the very least it
  70. should check for Dos being loaded high and exit -- not simply crash.
  71.  
  72.  
  73. 6: Td386 does not allow a program to set the alignment check flag.
  74. -----------------------------------------------------------------
  75. On an i486 the Ac-flag should be set-able, if for no other reason
  76. then for detecting the processor type. Programs like Infoplus
  77. says my i486 is a i386 (with co-processor) when run under Td386.
  78.  
  79. On the other hand a program is allowed to set the single step flag.
  80. The causes a trap and the debugger tells me I'm tracing some code.
  81.  
  82.  
  83. 7: The grey keys "*", "-", and "+" do not update the screen correctly.
  84. ---------------------------------------------------------------------
  85. Open a new file and enter some text on line 1. Now on line 2 hold down
  86. the grey "-". You'll notice that the screen does not scroll right.
  87. This is probably a problem that can be solved with Temc.
  88.  
  89.  
  90. 8: Ctrl-PgDn does not always work on large files.
  91. ------------------------------------------------
  92. Consider the following program:
  93.  
  94.        Program Test;
  95.        Var Out : Text;
  96.            I,J : Integer;
  97.        Begin
  98.          Assign(Out,'Test.Out');
  99.          Rewrite(Out);
  100.          For I:=1 To 100 Do Begin
  101.            For J:=1 To 100 Do
  102.              Writeln(Out,'Line #',J,' in section ',I);
  103.          End;
  104.          Close(Out);
  105.        End.
  106.  
  107. which generates a large output file. Load this and press Crtl-PgDn.
  108. I get a screen starting with "Line #1 in section 36" and no cursor.
  109. Any movement of the cursor (including an extra Crtl-PgDn) redraws
  110. the screen correctly. The bug was present in 6.0 too and I simply
  111. cannot figure out precise rules for it to show. One might be able
  112. to work around this bug using Temc.
  113.  
  114.  
  115. 9: The IDE's idea of words is narrow.
  116. ------------------------------------
  117. As a user in a country that has more letters that English a find the
  118. current version of WordLeft and WordRight annoying. IMHO it should be
  119. possible to define which charaters should be considered letters.
  120. Alternatively one could define characters from #128 (,C) to #165 (~N)
  121. to be letters. Things used to be this way in version 5. (All this is
  122. or the editor only -- I'm not changing the language!)
  123.  
  124.  
  125. 10: The IDE crashes when single stepping 386 code.
  126. -------------------------------------------------
  127. The RTL makefile states that you can make a version of Turbo.Tpl with
  128. debug information in it. You can then single step (say) a longint
  129. multiplication. The IDE crashes when using an i386. I assume this goes
  130. for any instruction changing the upper parts of the registers.
  131.  
  132. BTW: As the file names of the assembler files in the generated Turbo.Tpl
  133. include "SYS\" you must switch to \Bp\Rtl while debugging
  134.  
  135.  
  136. 11: FloodFill may crash the system in case of NMI occuring.
  137. ----------------------------------------------------------
  138. FloodFill (I *think* it's FloodFill -- it's something in Graph.Tpu for
  139. sure) uses the following code to switch stack:
  140.  
  141.        4A68    Cli                     ; 1
  142.        4A69    Xchg    Di,Sp           ; 2
  143.        4A6B    Mov     Bp,Ss           ; 3
  144.        4A6D    Mov     Ss,Dx           ; 4
  145.                                        ; 5
  146.        4A6F    Sti                     ; 6
  147.  
  148. To protect against NMI the instruction marked "2" should be moved to "5".
  149. Lines "1" and "6" can then be removed. This will guarantee (excepting
  150. early and buggy 8088s) that not even NMI will occur before "3" or "4".
  151. The chances of this happening are extremely small but non-AT machines
  152. do use NMI for co-processor interrupts.
  153. -- 
  154. ------------------------------------------------------------------------
  155. Visit the lyrics archive at ftp.cs.uwp (mirrored to nic.funet.fi, a site
  156. in Finland). All kinds of lyrics available -- upload "yours" and join.
  157. ------------------------------------------------------------------------
  158.