-------------------------------------------------------------------------------
*  RELEASE 6.00 BUGLIST                                                       *
*  Update - 1/7/91                                                            *
*  This file contains a list of bugs in the release 6.00 of the 320C1x/2x     *
*  code generation tools.                                                     *
*  All bugs will be fixed in the next production release unless otherwise     *
*  indicated.  There will sometimes be references to internal versions in     *
*  this list.  For that reason you must always refer to the release status    *
*  information (published every two weeks) to verify the availability of a    *
*  specific revision.                                                         *
-------------------------------------------------------------------------------
SIMULATOR
-------------------------------------------------------------------------------
3420   V2.10   will fix
The instructions BBNZ and BBZ are not reverse assembled

COMPILER
-------------------------------------------------------------------------------
3702   V6.10   will fix
The "floor" function returns only even values and may not have correct rounding
properties.

Work around:
1) Extract the source from the source library: "dspar -x rts.src modf.c"
2) Make four changes:

  * Line 18
    Old : if (exp < 1) . . .
    New : if (exp < 0) . . .

  * Line 25
    Old : m1 = (m1 & 0xFF) | 0x80;
    New : delete

  * Line 32 (Line 31 after deletion)
    Old : m1 &= 0xFF;
    New : m1 &= 0x7F;

  * Line 51 (Line 50 after deletion)
    Old : . . . | ((0x7F + exp) << 7) | ((value < 0) << 15);
    New : . . . | ((0x7F + exp) << 7);

4) Replace the source in the source library: "dspar -r rts.src modf.c"
5) Recompile the function: "dspcl modf.c"
6) Replace the object in the object library: "dspar -r rts.lib modf.obj"

Note that the following functions call "modf":
  floor
  ceil
  fmod
  pow
  sin
  cos
  ta

3709   V6.10   will fix
When the compiler generates multiple branches to the same label, the first
path(s) of which do not set the sign extension mode, the later path(s)
which do, the compiler erroneously tracks the sign extension mode at that
label to be that which was set in the later path(s).  The only way to
exercise the bug is with a conditional expression containing the && operator
(or the equivalent if statements).

  if (unsigned_var && signed_var) . . .

  /* Compiler is now wrong in thinking sign extension is set as opposed to */
  /* unknown.  The next statement may execute incorrectly                  */

  if (signed_var) . . .

Workaround: re-arrange the conditional expression to test a signed case
first.

  if (signed_var && unsigned_var) . .

3710   V6.10   will fix
The following runtime library routine "F_FTOU" exits abnormally when it is
passed a negative value.

  e.g.     float x; unsigned int i;

            x = -237.6789;
            i = (unsigned int)(x);  /* This statement generates a call to the
                                       F_FTOU routine which fails to exit
                                       normally. */


The "F$$FTOU" floating point routine corrupts the stack when passed a
negative argument.

Workaround:
  1) Extract the code from the source library: "dspar -x flib.src f_ftou.asm"
  2) Make the following change

     Line 231
     Old : B    ZERO
     New : B    ZERO,*-

  3) Re-assemble: "dspa f_ftou.asm"

  4) Replace source in source library: "dspar -r flib.src f_ftou.asm"

  5) Replace the object in the object library: "dspar -r flib.lib f_ftou.obj


ASSEMBLER
-------------------------------------------------------------------------------

3660   V6.00   will fix
The ".mlib " macro library directive does not work properly in the assembler.

     Workaround : Put macros onto single file and use
                  ".include" directiv

3676   V6.00   will fix
The assembler incorrectly processes structures declared with the ".struct"
directive when the variable is defined in a file other than the file where
it is accessed.

        e.g.      testRec: .struct
                  var1:    .word
                  var2:    .word
                  testLen: .endstruct

                           .bss    test1, testLen
                  test1    .tag    testRec

                           .ref    test2
                  test2    .tag    testRec

                           .text
     0000 1001-            LACC  test1.var2 ; Offset 1, OK
     0001 1000!            LACC  test2.var2 ; Offset 0!!!
     0002 1001!            LACC  test2+testRec.var2 ;1,OK

      !!!! The offsets for tes1.var2 and test2.var2 should be the same


TUTOR
-------------------------------------------------------------------------------

3675   V6.00   will fix
The file TUTOR.DOC contains 2 copies of the same text


LINKER
-------------------------------------------------------------------------------

3691   V6.00   will fix
The "dsplnk" command does not return the correct error exit code when
there is a syntax error or when undefined symbols occur in the link.

  $SEVERITY == "1"              should equal

-------------------------------------------------------------------------------

