Enter DSK3D /? or DSK3D /HELP to display the command-line options for the debugger.
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
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
? <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
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.
LABEL ADDF 1.75,R0
809801 LABEL ADDF 1.75,R0
07600600 LABEL ADDF 1.75,R0
809803 07600600 LABEL ADDF 1.75,R0
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.
- 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
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
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 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