release.txt 9/96  Mwave Developers Toolkit    Release 1.31
==========================================================

This is the first release of the Mwave Developers Toolkit since IBM
took over the maintenance of the tools source code from Intermetrics.
The following is a list of enhancements made to the tools.




Enhancements to the assembler (MWASM)
=====================================

1) Implementation of the MSP 1.1 Archtecture I/O instruction.
   The syntax of this instruction is as follows:


   I/O write instruction syntax
   ----------------------------

   displacement = <I/O> Rx

   or

   displacement(R4) = <I/O> Rx


   I/O read instruction syntax
   ---------------------------

   Rx = <I/O> displacement

   or

   Rx = <I/O> displacement(R4)


   Rx            : must be a general purpose register (R0 .. R7)
   displacement  : must be an even value between 0 and 126

   The <I/O> token must contain uppercase I and O characters.


2) Addition of SYS32LO and SYS32HI special purpose registers.
   These new mnemonics can now be used to load and store to these
   special purpose registers.

   For example: to load a value into SYS32LO use the assignment operator

          SYS32LO = some_value

   Note: these new mnemonics can either be all uppercase or all
         lowercase.


3) A new command line option has been added to control the lines
   per page on an output listing.  The syntax of this option is:

   -lpp xx  where xx is a value between 10 and 99 inclusive.


Enhancements to the linker (MWLINK)
===================================

1) Currently, whenever the linker can not resolve a reference at link
   time it issues a warning message.  Normally, these references are
   resolved at load time by the Mwave manager.  Some programs have
   a lot of these references, so a new command line option has been
   added to suppress only these particular warnings.  The syntax of
   this options is:

   -sup fixup


Enhancements to the one line assembler (MWDBGOLA.DLL) (Windows Only)
====================================================================

1) The one line assembler has been updated to handle all of the new
   MSP 1.1 Architecture instructions.


Bug fixes made to the assembler (MWASM)
=======================================

1) When a DSP source file contained a comment on the last line and
   that line was terminated with the end_of_file marker instead of a
   a line terminator, the assembler would go into an infinite loop.
   This problem has been fixed.

2) Assembler listings which referenced to special purpose registers
   would print the wrong special purpose register mnemonic.
   This problem has been fixed.

3) If a macro expansion was performed before its associated macro
   definition was defined the subsequent label definitions would contain
   erroneous data.  This problem has been fixed by issuing an error
   message when the situation occurs.  Here is a brief example of
   why this problem was occuring and why it can not be fixed directly.


   Testcode section code  ;  Instruction counter    Instruction counter
                          ;     Pass1                    Pass2

            M1            ;       0                        0
   Label1   r1=r2         ;       0                        1
            b Label1      ;       1                        2

            ....
   M1       macro
            r2=r3
            endm



   The assembler parses the DSP source twice.  In the first pass, among
   other things, the assembler gathers label information.  This is done
   to support the use of labels before they have been defined.  In the
   second pass the assembler knows the location of all the labels and
   can generate code.

   In the example above in pass1, the assembler would skip over the
   macro expansion for M1, since it is not defined until later on.
   This results in the assembler assigning 0 to Label1 in the first
   pass.  In the second pass the assembler knows about the macro M1
   and expands it.  This expansion adds one more instruction to the
   code stream.  Since Label1 still contains a value for location 0,
   the branch will be made to the new macro expanded instruction
   instead of to the intended "r1=r2" instruction.

   If you encounter this problem, simply move the macro definition
   before it's expansion.


[END OF FILE]
