



          ******************************************************
          *                                                    *
          *       TMS320C30 HIGH LEVEL LANGUAGE DEBUGGER       *
          *                                                    *
          *                 RELEASE 4.50                       *
          *                                                    *
          ******************************************************







     -PC/AT SYSTEMS-

      DIGITAL SIGNAL PROCESSOR PRODUCTS

      TEXAS INSTRUMENTS
      INCORPORATED





































----------------------------------------
TMS320C30 HLL DEBUGGER PACKAGE
Version 4.50
MS-DOS, PC-DOS, MS-WINDOWS Systems
----------------------------------------

   This package contains release 4.50 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.41
   include the following:

       - Windows support for the XDS500 and C30 EVM has been added.  These
         executibles are named 'db30w' and 'evm30w'.  Use the DOS setup and
         installation.

       - Profiling and patch assembler capability have been added to the
         XDS500 and C30 EVM products running under Windows 3.0.

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

       - 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>

       - You can now have up to 4 memory windows.

       - Improved video screen operation.

       - The boot loader source and output files for the C31 have been
         updated.

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













********************************************************************
*                                                                  *
*   RESTRICTIONS                                                   *
*                                                                  *
********************************************************************

GIE Bit Operation

       When the debugger does an assembly single step it will turn off global
       interrupts, perform the step and restore the GIE bit accordingly.
       Single stepping an assembly instruction that saves or restores the GIE
       bit can leave the GIE bit in the wrong state under some circumstances.
       Setting a breakpoint and running past instructions that save and
       restore the GIE bit will solve this problem.  Or you can use the
       RUN <count> command with a count of 1 to single step.  The RUN command
       does not disable interrupts thus you may step into an interrupt
       routine.

Host Memory Limitations

       The Windows version of the debugger can take advantage of host memory
       above 640K.  This allows you to debug larger programs with a greater
       number of symbols. The approximate number of symbols that can be
       loaded for the three most popular PC environments are listed below:

       DOS 3.3         approx. 1500
       DOS 5.0         approx. 1800 (using HIMEM feature)
       Windows 3.0     >5K

       Several things to keep in mind:

       Not all symbols are created equal.  Functions require more memory than
       local or global varible symbols.

       The symbol table size in the debugger is limited by the amount of
       memory in your system.  The string table in the debugger is limited to
       64K.  Thus all the symbol name strings cannot exceed 64K bytes.  Thus
       short names are better than long names.

       When the debugger reaches the host memory limit it will exit and print
       a message that it has run out of memory.


********************************************************************
*                                                                  *
*   UNDOCUMENTED DEBUGGER FEATURES                                 *
*                                                                  *
********************************************************************

   NEW SCREEN MODE OPERATION

   By default the debugger looks for the file "init.clr" for video screen
   information.  This file format has been changed to include video screen
   size, eliminating the need for -b and -bb command line switches, although
   they can still be used.  Three other files, init.25, init.43 and init.50
   have been provided for basic 80x25, 80x43 and 80x50 screen sizes.  You
   can also change the screen size and configuration inside of the debugger
   by loading the desired file using the "sconfig" command.  The file
   "init.clr" brings the debugger up in 80x25 mode.  To bring the debugger
   up in another mode copy one of the other "init.xx" files to "init.clr".


   WARNING: The older versions of INIT.CLR are not compatible with debugger
            version 4.50.  You should delete the old version of INIT.CLR
            or rename it. The screen modes -bbb, -bbbb, and -bbbbb are no
            longer supported.

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






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

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.








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

NEW COMMAND
   
    mem# expression [,display format]

DESCRIPTION

    The MEM command identifies a new starting address for the block of memory
    displayed in a MEMORY window.  The optional extension number (#) opens an
    additional MEMORY window, allowing you to view a separate block of memory.
    The debugger displays the contents of memory at expression in the first
    data position in the MEMORY window.  The end of the range is defined by
    the size of the window.  The expression can be an absolute address, a
    symbolic address, or any C expression.


********************************************************************
*                                                                  *
*   UNDOCUMENTED HP SPECIFIC DEBUGGER FEATURES                     *
*                                                                  *
********************************************************************

Undocumented features for release 4.50 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







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>







<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 HP 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.








