



          ******************************************************
          *                                                    *
          *       TMS320C30 HIGH LEVEL LANGUAGE DEBUGGER       *
          *                                                    *
          *                  RELEASE 4.40                      *
          *                     TMDS                           *
          ******************************************************







     -PC/AT SYSTEMS-

      DIGITAL SIGNAL PROCESSOR PRODUCTS

      TEXAS INSTRUMENTS
      INCORPORATED




































                                                       2547274-9301C

----------------------------------------
TMS320C30 HLL DEBUGGER PACKAGE
Version 4.40 TMDS
MS-DOS, PC-DOS Systems
----------------------------------------

   This package contains release 4.40 of the Texas Instruments TMS320C30
   High-Level Language and Assembly Language Debugging Tools.  The software
   supports the XDS500/XDS100, TMS320C30 EVM and Hewlett-Packard 64776
   analysis subsystem. This bulletin provides important information about
   the latest release of the tools.  The major changes from version 4.15
   include the following:

       - Profiling and patch assembler capability have been added to the
         XDS500 product (DB30).

       - The sample program has been modified to execute entirely from C3x
         internal memory.

       - A debugger (DB30LT) without the profiler or patch assembler has
         been included for the XDS500 product.  This will allow the user to
         debug larger programs but give up the profiler and patch assembler
         features.

       - Data formatting capability has been added to all products. Values can
         now be viewed as hex, decimal, char, etc..

       - A log file capability has been added that allows logging  command
         window output to a file.

       - The following commands have been added to provide debugger flow
         control and messaging in command files:

               - if, else, endif.
               - loop, endloop.
               - echo <message>

       - Support for the TMS320C30 revision 1.0 silicon (TMX product) has
         been discontinued.


















                                                       Page 2

********************************************************************
*                                                                  *
*   UNDOCUMENTED DEBUGGER FEATURES                                 *
*                                                                  *
********************************************************************


NEW COMMAND  

    dlog  <filename>
    dlog  <filename>,a
    dlog  <filename>,w
    dlog  close

DESCRIPTION

    This command opens a log file to log the output of the command window.
    Output that is not a command will be preceded by a ';'.  Each new 
    instance of the dlog command closes the previous log file and opens the
    new one.  The command "dlog close" simply closes the current log file.

    If the second argument is 'a' then the file will be opened to append.
    If the second argument is 'w' or not present then the file will be
    opened to write.

**************************************************************************

NEW COMMAND
   
    if <expression>
    else
    endif

DESCRIPTION

    These commands provide basic flow control for debugger commands.  If
    Blocks can only appear in take files and there is NO nesting of if 
    blocks within the same take file.  

    This is most useful for use in take files to conditionaly execute 
    debugger commands.  The following symbols are predefined debugger
    constants that will evaluate to 1 or 0.

    $$EMU$$   - emulator 
    $$EVM$$   - evm
    $$HP$$    - hp

    For example:

    if  $$EVM$$
    ma  ...
       .
       .
    endif






                                                       Page 3

**************************************************************************

NEW COMMAND
   
    loop <cond>
    endloop

DESCRIPTION

    These commands provide looping capability in take files.  These commands
    can only appear in take files and there is no nesting of loop blocks
    within the same take file.  The condition works like the debugger run
    conditionally command.  If the condition is not logical then the
    expression is evaluated as a loop count.  If the condition is logical
    then the debugger will loop in the takefile until the condition is false.
    For example:

    loop !0
    take demo
    endloop


**************************************************************************

NEW COMMAND
   
    echo <string>

DESCRIPTION

   Echo the string to the command window.  This is useful for printing
   messages about the results of some if block.  This command only works
   in a take file.


**************************************************************************

SEARCH METHOD FOR INITILIZATION COMMAND FILE

    The initilization command file now follows this search method:

       1. if the -t command line option is used, take the specified file.

       2. If the debugger engine type specific file can be found use it.
	  (i.e. dbinit.cmd or evminit.cmd)

       3. Look for the file init.cmd.






                                                       Page 4

********************************************************************
*                                                                  *
*   UNDOCUMENTED HP SPECIFIC DEBUGGER FEATURES                     *
*                                                                  *
********************************************************************

Undocumented features for release 4.40 of TMS320C30 HP debugger with
HP analysis subsystem support.

NEW INSPF FORMATS
-----------------
There are two additional format fields for the trace analysis window.  
These format fields are used with the INSPF command.

dataf - Display captured data bus information in floating point format.
datai - Display captured data bus information as a base 10 integer.


MORE POWERFUL TRACE COMMAND
--------------------------

One trace command can now be used to set the trigger, trigger position, 
and store.  The trace command has been expanded as follows:

TRACE ON
      OFF
      [<type>] [<qexpr>]

<type> ->  ONLY    /* trigger = store = <qexpr> DEFAULT */
           AFTER   /* trigger position = start, trigger = <qexpr> */
	   ABOUT   /* trigger position = center, trigger = <qexpr> */
	   BEFORE  /* trigger position = end, trigger = <qexpr> */

This now gives you the power to set up the analyzer and start it running
in one command, For example

    trace only avg    
    trace avg

Suppose there is a variable in your program called "avg" that you are
interested in.  The above commands are the same ("only" is the default).
The one trace command is equivalent to the following three commands.

    trigger addr(avg)
    store   addr(avg)
    trace   on

Note that the qualifier expressions "avg" and "addr(avg)" are the same.
See the following section on simplified qualifier expressions.

You can also you use the trace command to set and position the trigger.
For example:

    trace about random






                                                       Page 5

Here you are going to trace "about" the address of the symbol random.
Suppose random is a function in you program, then the analyzer will
trigger at this address and center the trigger in the trace buffer.
This command is equal to the following three commands.

    trigger addr(random)
    cnfg tp=c
    trace on


EASIER TO USE QUALIFIER EXPRESSIONS
-----------------------------------

The qualifier expressions have been made easier to use.  They still support
all the features of previous releases, but now allow some simple shortcuts.

Address, data, and signal terms can be set without using full blown C
expressions enclosed in parentheses. For example

     trigger addr(random) & data(100)
     store addr((long)&results+100) & write

can now be expressed as

     trigger addr=random & data=100
     store addr=results+100 & w

The symbol "random" is a factor of the expression.  a factor is a global
symbol name, a constant, or a symbol +/- a constant.  A factor in a qualifier
expression defaults to be an address term.  So the above expression can
be simplified even further to

    trigger random & d=100
    store results+100 & w

This also works for the range value, so the command

    range funcname
    trigger addr(range)

can now be expressed like

    range funcname
    trigger range


The following simple BNF describes the new qualifier expressions.

<qexpr>    ->  <pattern>
	       <pattern> <orop> <qexpr>

<pattern>  ->  <term>
	       <term> <andop> <pattern>






                                                       Page 6

<term>     ->  <assign>                 /* new  */
	       <texpr>
	       <factor>                 /* new  */
	       <qual>
	       <signal>

<signal>   ->  <notop> id

<qual>     ->  $TRG
	       $STR
	       $PSTR
	       $CNT

<assign>   ->  addr <asgop> <factor>
               data <asgop> <factor>
	       sigs <asgop> <factor>

<texpr>    ->  <notop> addr (<Cexpr>)
               <notop> data (<Cexpr>)
               <notop> sigs (<Cexpr>)

<orop>     ->  |
	       ||

<andop>    ->  &
	       &&

<notop>    ->  !
	       {empty set}

<asgop>    ->  !=
	       =

<factor>   ->  <expr>                 /* new  */
	       RANGE                  /* new  */

<expr>     ->  id                     /* new  */
               id + num               /* new  */
	       id - num               /* new  */
	       num                    /* new  */

<Cexpr>    ->  C mask expression
               RANGE

NOTE that the example program is linked to run exclusively in expansion
memory.  If your target system does not have expansion memory then you must
modify the example.cmd linker command file and relink the program.  

NOTE that the DBINIT.CMD file shipped on this disk maps expansion 
memory necessary for running the example program while using the tutorial
in the user's guide.  If your system does not have any expansion memory then,
in order to run the tutorial, you should modify this file.






                                                       Page 7
