# DSK3D Debugger Help

    Enter

    DSK3D /?

    or

    DSK3D /HELP

    to display the command-line options for the debugger.

## KEYBOARD COMMANDS

    F1        Help screen
    F2        40 bit hex display
    F3        FLOAT display
    F4        Source/DASM debug toggle
    F5        Run
    F6        Display breakpoints
    F7        Clear all breakpoints
    F8        Single step
    F9        Toggle DASM window size
    F10       Step over function
    shift+F8  Force Single step
    shift+F10 Force Function step
    ALT+D     Select Disassembly Window
    ALT+M     Select Memory Window

## EDITING A COMMAND

     Page Up       Selects first command in buffer
     Page Down     Selects last command in buffer
     Up/Down       Move through the command buffer
     Left/Right    Move cursor
     Home          Move cursor to start
     End           Move cursor to end
     Shift+End     Erase remaining command
     Insert        Insert mode
     Delete        Delete char
     Tab           Re-executes last used command
     Enter         Executes command

## DEBUGGER COMMANDS

     ?     <exp>          What is the value of <exp>
     HELP                 Display HELP
     SS                   Single Step
     XN    n              Single step n times
     STEP  <n>            Single step <n> times
     FSTEP <n>            Step through functions <n> times
     XG    addr           Single Step until <addr>
     GO    addr           Run until <addr>
     RUN                  Execute with Breakpoints
     RUNF                 Execute without Breakpoints
     MEM    <addr>        View mem @<addr>, 32 bit hex
     MEMX   <addr>        ''              , 32 bit hex
     MEMI   <addr>        ''              , signed
     MEMD   <addr>        ''              , signed
     MEML   <addr>        ''              , signed
     MEMUI  <addr>        ''              , unsigned
     MEMUD  <addr>        ''              , unsigned
     MEMUL  <addr>        ''              , unsigned
     MEMU   <addr>        ''              , unsigned
     MEMF   <addr>        ''              , TMS float
     MEMQxx <addr>        ''  (xx is int) , Qxx format
     DASM  addr           Disassemble from <addr>
     MM    addr           Modify memory at <addr>
     MM    addr,leng,val  Fill memory with <value>
     SB    addr           Set breakpoint at <addr>
     CB    addr           Clear breakpoint at <addr>
     CB                   Clear all breakpoints
     DB                   Display breakpoints
     LF       <file>      Load file (defaults to last)
     LOAD     <file>      Load file
     RELOAD   <file>      Load file
     SLOAD    <file>      Load symbols
     BLOAD    <file>      Load binary only
     FILE2HEX <file>      .dsk|.out to HEX
     DSK2HEX  <file>      .dsk to HEX
     COFF2HEX <file>      .out to HEX
     DSK2COFF file        .dsk to COFF
     MEM2HEX  file,a,l    Mem at address,length to HEX
     MEM2COFF file,a,l    Mem at address,length to HEX
     MAXFLEN  length      Max out file length (no '=')
     FLF      <file>      Fast Load from HEX file
     SCLEAR or SC         Clear symbols
     RESET                DSK reset
     QUIT or EXIT         Quit debugger
     DOS                  DOS prompt
     DOS   <dos_exec>     Execute a DOS program
     EDIT  <name>         EDIT <name> (DOS editor)
     DSK3A <name>         DSK3A assemble <name>
     FLOAT                CPU display in Float format
     REG40                CPU display in 40 bit hex
     SYMBOLS or SYM       View Symbol table
     MOVE/MOV src,dst,n   Move src->dst n<256 times
     XON/XOFF             Enable PG6 extended opcodes
     CMDxx 'cmd string'   Copies 'cmd string' to buffer xx
     DASM0-DASM3          Set DASM Window display mode
     PAUSE                Pauses a TAKE file
     END                  End a take file

     TAKE         <filename>  Load commands from a file
     CREAD        <filename>  default is CMDFILE.SAV
     CLOAD        <filename>
     CSAVE        <filename> Save DSK3D context to a file
     CSAVEALL     <filename> 'ALL' saves all on-chip memory
     CSAVEALLHEX  <filename> to HEX (default) or COFF file
     CSAVEALLCOFF <filename> Default name is FULLSAVE.HEX

     SAVE name,addr,leng,t  Saves 'leng' memory at 'addr'

        <t>ypes
         L or LONG     - ASCII Long
         U or UNSIGNED - ASCII Unsigned Long
         F or FLOAT    - ASCII Float
         X or H or HEX - ASCII hexadecimal
         B or BIN      - Binary byte
         C or CHAR     - Binary byte
         I or INT      - Binary Integer
         W or WORD     - Binary Long Word
         D or DASM     - DASM listing

## DISASSEMBLER DISPLAY

     The disassembler output can be changed to see more in
    the display.  The commands, and what the display will
    look like are shown below.  Note that in the case of
    DASM0 and DASM1, you cannot set a breakpoint by using
    the breakpoint toggle key 'F2' while in the DASM
    window. DASM3 is the default mode.

DASM0

      LABEL   ADDF  1.75,R0

DASM1

      809801 LABEL   ADDF  1.75,R0

DASM2

      07600600 LABEL   ADDF  1.75,R0

DASM3

      809803 07600600 LABEL   ADDF  1.75,R0

## HEX FILES

     The HEX file conversion and HEX load functions use the
     the DSK listing to create boot loadable images.  A HEX
     file can be 'smart' loaded since the bootloaders
     section relocation information can be used to place
     data into memory using the communications kernel.  Hex
     loading is much faster since the file does not need to
     be searched and analyzed.  If the parant *.DSK file
     also exists, the symbols from that file are loaded.

     NOTES:
     - The HEX file output is essentialy an EPROM boot file
       that has not been formated for a particular EPROM
       format (Intel, Mot, TI).  If your programmer cannot
       read hex ascii directly you may need to write a
       conversion program.

## ASM/PATCH ASSEMBLER

     - The first character after the patch command begins
       the address definition field.
     - The next blank space (white space) signifies the end
       of the address field.
     - Address expressions cannot contain blanks.
     - The next field is the opcode or directive, followed
       by the operand expressions.
     - Expressions use numbers and symbols
     - Parallel expressions are written using one line
     - You will lose your patch data when you exit DSK3D
       unless you perform a CSAVEALL, MEM2HEX, MEM2COFF
       or binary SAVE command.

     command Address   Opcode/directive operands...

     ASM     0x809800  .word  0111b
     PATCH   MY_Data+1 .float 1,2,3,4
     PATCH   MY_CODE   B      BEGIN
     PATCH   $         ldi    *AR0,R0 || ldi *AR1,R1

## EXPRESSION ANALYZER

     The DSK3D and DSK3A expression analyzers are identical.
     Expressions may contain numbers, labels, math functions
     or logical operations.  The 'contents of a pointer'
     operator '*' is allowed but is restricted to the
     leftmost column of the assignment and expression field

     Assignment: <register> = <expression>
     Evaluation: ? <expression>

      Registers
       R0 - R7      Integer of extended precision registers
       F0 - F7      Float of extended precision registers
       AR0-AR7      Auxiliary registers
       DP,PC,IF...  All other CPU registers

     examples: PC  = 0x809800
               R0  = 1.34
               R0  = R0 >> 3
               F0  = R0 + 1.34
               F7  = 2.5+(R0/2.0)
               ST  = ST | 0x2000
               *AR0= *(AR0+3)

    Numbers :  15    Integer
               15.0  Floating point
               15h   TI Hex (start numeric, end 'h')
               0x15  C style hexadecimal
               111b  Binary (start numeric, end 'b')

    Operators: |     logical OR
               &     logical AND
               ^     logical XOR
               ~     negation
               <<    left-shift
               >>    right-shift
               (exp) Evaluate exp first
    Functions:
      abs(x)     |x| int
      acos(x)    Arc Cosine
      asin(x)    Arc Sine
      atan(x)    Arc Tangent
    + br(x,y)    Bit reverse X with range y
      ceil(x)    Returns int >= x
    + circ(x,y)  Circular mod x over range y
      cos(x)     Cosine
      cosh(x)    Hyperbolic Cosine
      exp(x)     e^x
      fabs(x)    |x| float
      floor(x)   Returns int <= x
      labs(x)    |x| long
      log(x)     Natural log
      log2(x)    Log base 2
      log10(x)   Log base 10
      pow(x,y)   x^y
      pow10(x)   10^x
      sin(x)     Sine
      sinh(x)    Hyperbolic Sine
      sqrt(x)    Square root
      tan(x)     Tangent
      tanh(x)    Hyperbolic Tangent
    ~ float(x)   TI   8:1:23 float
    ~ sfloat(x)  TI   4:1:11
    ~ float8(x)  TI   4:1: 3
    ~ float16(x) TI   8:1: 7
    ~ ieee(x)    IEEE 1:8:23
    $ rand()     Random number generator
    $ srand(x)   Seeded random number

    + Modulo arithmetic functions for lookup tables

    ~ Returns floating point value as a binary
      which can then be used in an expression

    $ Random numbers are 32 bit longs for integer
      expressions or -1.0<rand<+1.0 for floats

       shift + F1   Version info
       shift + F2   Display heap & other parameters

## XDS510 Support

      An unpopulated header location is provided on the
      DSK (JP4) for an XDS510 emulator.  However, be
      aware that if both the emulator and DSK software
      are used simultaneously, the XDS510 can kill the
      host communications link killing the application

## SINGLE STEP AND BREAKPOINT RULES

    - Single step lockouts created by loading IE without
      0x44 OR'ed into the IE can be forced with the
      sF8/sF10 forced step functions.  If this condition
      is detected, a warning message is given, telling
      the user that sF8/sF10 can be used to force the
      execution of this class of opcodes.

      If 0x4 and 0x40 (Host INT2 and sstep XINT1) are not
      OR'd with the IE register these interrupts can be
      lost when higher level interrupts are serviced.
      sF8/sF10 forces all INTs to sstep by swapping out
      the entire vector branch table with branches to the
      SSTEP routine.  Since the normal ISR routines are,
      bypassed this may cause unserviced peripherals to
      shut down and not generate new interrupts.  An
      example is the serial port, which can be overrun or
      underrun. You can force new interrupts using the
      IF=0xXXX command, but if the peripheral is corrupted
      a reset may be required.  Note that by stepping
      with sF8/sF10 any IF interrupt bits that were set
      can be lost.

    - Setting a breakpoint (or FSTEP-F10) at the end of
      a repeat block is a special case.  A BP 'trap' code
      at the repeat end (RE) location will reload the PC
      with the repeat start (RS) address, corrupting the
      normal BP location.  By analyzing RS, RE, RC and BP
      trap locations a recovery is possible except when
      a BP is set at BOTH the RE (end) and RS-1 (START-1)
      locations.  A warning is generated for this case.
      Either BP location can be used, but not both.

Maintained by John Loomis, last updated 13 Jan 1999