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