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>         DOS 'EDIT <name>'
 DSK3A <name>         DSK3A assemble <name>
 FLOAT                CPU display in Float
 REG40                CPU display in 40 bit hex
 SYMBOLS or SYM       View symbols
 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 display can be changed with
the following commands.  You cannot set a breakpoint
using the breakpoint toggle key 'F2' while in DASM0
or DASM2 mode
     ͻ
DASM0LABEL   ADDF  1.75,R0                        
     ͼ
     ͻ
DASM1809801 LABEL   ADDF  1.75,R0                 
     ͼ
     ͻ
DASM207600600 LABEL   ADDF  1.75,R0               
     ͼ
     ͻ
DASM3809803 07600600 LABEL   ADDF  1.75,R0        
     ͼ

HEX FILES
---------
 HEX files are ASCII formatted files containing EPROM
 boot images.  These files can be re-formatted for a
 particular EPROM format (Intel, Mot, TI) using the
 HEX2ROM utility or your own conversion program.

 DSK3D and other DSK applications can load or convert
 DSK and COFF files to and from the HEX file format.

 HEX files can be 'fast' loaded since the bootloader
 section relocation information can place each section
 into memory using the communications kernel.  Hex
 loading is faster since the file does not need to
 be searched and analyzed.  If the parant *.DSK file
 exists, DSK3D will load the symbols from that file.

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
-------------------
 Expressions may contain numbers, labels, math functions
 or logical operations.  The 'contents of a pointer'
 operator '*' is recognized only in the leftmost column
 of an 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
--------------
  Header JP4 (unpopulated) is provided on the DSK
  for XDS510 emulation.  However, be aware that the
  XDS510 will halt the DSP killing any communications
  link to 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.

