.nr N 2		\"  No header on page 1, but normal header thereafter
.so /usr/lib/tmac/tmac.m
.de TP
.sp 3
..
.SA 1
.po .5i
.ll 6.5i
.nr Hc 0
.nr Pt 2
.nr Hy 0
.nr pt 1
.nr pi 5
.nr Hb 5
.nr Cl 4
.nr Cp 1
.nr Lt 1
.ds HF 3 2 1 1 1
.fi

.ce
.S 14 16
\fB78000 SIMULATOR USERS INTERFACE\fP
.S 10 12

.ce
\*(DT

.ce
For Motorola M78000 Software Release 0.5

.H 1 "Overview"
This document is intended to help the user to execute and debug
78000 assembly language code with the 78000 Simulator.
All user interface commands and command options will be explained
as to use and effect.
The user interface to the simulator is modeled after Motorola's
VME131 ROM based debugger, 130Bug\s-2\*(Tm\s+2.

.H 1 "Symbols, Data, and Other Entry Rules"
.H 2 "Symbols and Metasymbols"
The following symbols will be used to explain the user interface commands.
.BL
.LI
<> The angular brackets enclose a command symbol, such as, an address, address range,
or a file name.
.LI
[] The square brackets enclose an option symbol.
.LI
| This symbol denote that a choice must be made from the symbols that are
separated by this symbol.
.LI
; The semicolon is used to denote an option that is different than a default.
.LE

.H 2 "Syntactic Variables"
The following syntactic variables will be used in the explaination of the
user interface commands.
.BL
.LI
<DEL> - Delimiter; must be a space or a tab.
.LI
<EXP> - Expression; an arithmetic entry (explained in following sections)
.LI
<ADDR> - Address; an expression entry (explained in following sections) 
.LI
<COUNT> - Count; an expression entry
.LI
<RANGE> - A range of addresses; may be entered as <ADDR><DEL><ADDR> or
<ADDR>:<COUNT>.

.H 2 "Expression Entry Formats <EXP>"
An expression can be one or more numeric values separated by the arithmetic
operator plus (+), minus (-), multiply (*), and divide (/).
Numeric data can be entered in any of the following forms:
.cu
binary, octal, decimal, hexadecimal.
The default data format type accepted by the user interface is hexadecimal.
To enter data in a different format use one of the following symbols preceeding 
the entry:
.TS
center box tab(~);
ccc.
Base~Symbol~Example
_
Hexadecimal~$~$FFFFABCD
Decimal~&~&1987, &10-&4
Octal~@~@1234567
Binary~%~%1010111
.TE
.bp
Also the word value of any 78000 general, ip, or vbr register or the value for 
symbol from the symbol table (COFF only) 
can be used in an expression.
To use a register value, enter the register name, the same for symbols.
Examples of valid expressions:
.TS
center box tab(~);
cc.
Expression~Result (in hexadecimal)
_
FF0011~FF0011
45+99~DE
&45+&99~90
@35+@67+@10~5C
%1001+%0110~F
r23+44
ip+10
r23+start+4
.TE
Data input is not case sensitive.
If the result excedes $FFFFFFFF it will be truncated.

.H 3 "Program Symbols"
If the program that is being debugged was loaded with a symbol table, a symbol
name may be subsituted for a numeric value.

.H 2 "Address Entry <ADDR>"
Currently address entry follows the same rules as expression entry.

.H 2 "Range Entry <RANGE>"
A range of address may be required by some user inerface commands.
The format for a range entry is one of the following:
.BL
.LI
<ADDR><DEL><ADDR>
.LI
<ADDR>:<COUNT>
.LE

When using the first format only that range of addresses are used.
In the second example, addresses starting form the base "<ADDR>" through
the base address plus the count are used.
The count will be scaled by the data type used.
If the data type being displayed is a half word, the count will be scaled by 2.

Example:
.in +1in.
sim>> md 100:10;h

00000100 0000 0000 0000 0000 0000 0000 0000 0000        ................
.br
00000110 0000 0000 0000 0000 0000 0000 0000 0000        ................
.br
sim>> 

or,

sim>> md 100:10;w
 
00000100 00010234 05060432 32050565 06466343    ...4...22..e.FcC
.br
00000110 02410453 05545406 06065232 41123443    .A.S.TT...R2A.4C
.br
00000120 32055445 54560754 45650143 54250653    2.TETV.TEe.CT%.S
.br
00000130 63073776 07474804 84084876 09050445    c.7v.GH...Hv...E
.br
sim>>
.in -1in.
.bp
.H 2 "Floating Point Support"
Floating point data can be entered and displayed with the simulator.
This is only permitted in special cases and no arithmetic operations
are permitted.
Floating point data is entered and displayed as follows:
.TS
center box tab(~);
cc.
Format~Example
_
Single Precision~4.1234567e+21
Double Precision~1.4026396342283994e-309
.TE

.H 2 "Data Entry by Type"
Certain commands allow for different data types, such as, byte, halfword
etc...
If a number is larger than can be stored into the selected type, the data
will be truncated to fit the type.

Example:

.in +.5in
Data entered = $234567
.br
Type is halfword (2 bytes)
.br
Result = $4567
.in -.5in

.H 1 "Invocation and Commands"
The following pages will explain the user interface commands and their syntaxes.
.bp
.sp 3
.S 14 16
\fB
.TS
expand tab(~);
lr.
M78KSIM~M78KSIM
.TE
.S 10 12
NAME
.in +.5in.
m78ksim - Motorola's 78000 processor simulator
.in -.5in.

SYNOPSIS
.in +.5in.
m78ksim [-vucb] [file]
.br
m78ksim [-vucb] -r file [arg1...arg18]
.br
m78ksim -d
.in -.5in.

DESCRIPTION
\fP
.in +.5in.
The 78000 simulator is an instruction and trap model simulation package for
the Motorola 78000 RISC processor.
.in -.5in.

\fBOPTIONS\fP
.in +.5in.
.BL
.LI
.cu
file
- The file name is optional (except with the -r option).
If no file name is provided the simulator will turn on 16k of 78000 memory
starting at address 0.
.LI
v - This option will enable full vector table and exception modeling.
If a trap instruction or a run time exception is encountered, the simulator
will attempt to execute the exception through the vector table pointed to
by the Vector Base Register (VBR).  If a vector table has not been set up
the simulator will stop and return to the simulator command line.
.LI
u - This option will disable all sysV and BSD Unix trap calls and send through
the normal trap handler.
.LI
c - This option will enable 78200 (CMMU) modeling and functionality.
.LI
b - This option will enable BSD trap vectors and old sysV system call
trap vectors.
.LI
z - This option assumes all character strings are not aligned on
word boundaries.
.LI
Z - This option assumes all character strings are aligned on
word boundaries.
.LI
r - This option is the run silent mode.
If this option is requested, the simulator will load the program and execute to 
completion or error.
There WILL not be messages displayed unless an error is encountered.
Stdin and stdout can be redirected, however stderr error should not.
If an execution error is encountered, the state of the simulator will be
dumped to a file called
.cu
core78.
This file will contain all the information needed to debug the error.
.LI
d - This option will read a core78 file and restore the simulator to the error
point.
.LE
.in -.5in.

\fBTRAP VECTORS\fP

.in +.5in.
The following are reserved or predefined trap vectors.
.BL
.LI
0-127 ($0-$7F) - Processor hardware exception vectors, MUST BE provided and set up
by the user or users program.
.LI
128 ($80) - Old Unix sysV kernel trap interface to be used with sysV libc.
.LI
260-316 ($104-$13C) - Unix BSD libc trap interface. Also new sysV libc
trap interface. To use the BSD libc traps instead of the new sysV libc
trap interface you must use the -b option described above.
.LI
508 ($1FC) - Primitive string print function.
Can never be disabled or overridden.
Pass a pointer to a NULL terminated string in register 2.
The string will be printed on standard out.
.LI
509 ($1FD) - Primitive putchar function.
Can never be disabled or overridden.
Pass the char in register 2.
The char will be printed on standard out.
.LI
510 ($1FE) - Primitive getchar function.
Can never be disabled or overridden.
This function uses buffered line input from standard in.
The char will be returned in register 2.
.LI
511 ($1FF) - Exit program simulation.
Can never be disabled or overridden.
.LE
.in -.5in.
.bp
.sp 3
.S 14 16
\fB
.TS
expand tab(~);
lr.
BD~BD
.TE
.S 10 12
NAME
.in +.5in.
bd - Display the CMMU Block Address Translation Cache (BATC).
.in -.5in.

SYNOPSIS
.in +.5in.
bd [i|d]
.in -.5in.

DESCRIPTION
\fP
.in +.5in.
The
.cu
bd
command will display the block address translation cache in the Data or Instruction CMMU.

.in -.5in.
\fBOPTIONS\fP
.in +.5in.
.BL
.LI
i - This option will retreive the Instruction CMMU BATC.
.LI
d - This option will retreive the Data CMMU BATC. (default)
.LE
.in -.5in.

\fBDISPLAYS\fP
.in +.5in.

.DS
sim>> bd i     

             ICMMU     BATC   
-----------------------------------------------------------
| entry |      LBA     |      PBA     | T | G | C | W | V |
-----------------------------------------------------------
   0          0000           0000       0   0   0   0   0 
   1          0000           0000       0   0   0   0   0 
   2          0000           0000       0   0   0   0   0 
   3          0000           0000       0   0   0   0   0 
   4          0000           0000       0   0   0   0   0 
   5          0000           0000       0   0   0   0   0 
   6          0000           0000       0   0   0   0   0 
   7          0000           0000       0   0   0   0   0 
   8          3FFE          1FFE      1   0   1   0   1 
   9          3FFF          1FFF      1   0   1   0   1 

sim>> 

.DE
.in -.5in.
\fBBUGS\fP
.in +.5in.
Currently none
.in -.5in.
.bp
.sp 3
.S 14 16
\fB
.TS
expand tab(~);
lr.
BR~BR
NOBR~NOBR
.TE
.S 10 12
NAME
.in +.5in.
br - set or display breakpoints
.br
nobr - delete breakpoints
.in -.5in.

SYNOPSIS
.in +.5in.
br [<ADDR>[:<COUNT>][;w|r|wr]] ... [<ADDR>[:<COUNT>][;w|r|wr]]
.br
nobr [<ADDR>] ... [<ADDR>]
.in -.5in.

DESCRIPTION
\fP
.in +.5in.
The
.cu
br
command allows the user to set or display breakpoints for use in debugging a program.
To display current breakpoints, type the
.cu
br
command by itself.
To create a breakpoint at an address type
.cu
br 
followed by the address and options.

The
.cu
nobr
command is used to remove breakpoints.
When
.cu
nobr
is typed by itself all breakpoints are removed.
When followed by an address or addresses only
these breakpoints will be removed.

Any valid <ADDR> or symbol can be used.
.in -.5in.

\fBOPTIONS\fP
.in +.5in.
.TS
tab(~);
lw(1in)lw(4in).
<COUNT>~T{
Break after the number of encounters equals count.
T}
w~T{
Break on write to this memory location.
T}
r~T{
Break on read to this memory location.
T}
wr~T{
Break on read or write to this memory location.
T}
~T{
Default is to break on any access to the memory location.
T}
.TE
.in -.5in.

\fBDISPLAYS\fP
.in +.5in.
.TS
tab(~);
lw(3in)|lw(3in).
T{
Displaying breakpoints:

sim>> br
.br
BREAKPOINTS
.br
00000200
.br
sim>> 
T}~T{
Setting a breakpoint at address $220 for read/write:

sim>> br 220;wr
.br
BREAKPOINTS
.br
00000220;wr     
.br
sim>> 
T}
_
T{
Setting a breakpoint at address $230 for write, with a count of 4:

sim>> br 230:4;w
.br
BREAKPOINTS
.br
00000230:4;w    
.br
sim>> 
T}~T{
Deleting breakpoint at address $230:

sim>> nobr 230
.br
BREAKPOINTS

sim>> 
T}
.TE
.in -.5in.
\fBBUGS\fP
.in +.5in.
Currently none
.in -.5in.
.bp
.sp 3
.S 14 16
\fB
.TS
expand tab(~);
lr.
BF~BF
BM~BM
BS~BS
.TE
.S 10 12
NAME
.in +.5in.
bf - Block fill memory
.br
bm - Block move memory
.br
bs - Block search memory
.in -.5in.

SYNOPSIS
.in +.5in.
bf <RANGE><DEL><DATA>[;b|h|w]
.br
bm <RANGE><DEL><ADDR>[;b|h|w]
.br
bs <RANGE><DEL><DATA>[;b|h|w]
.in -.5in.

DESCRIPTION
\fP
.in +.5in.
The
.cu
bf
command allows the user to fill the 78000 memory with the given data 
pattern <DATA>.

The
.cu
bm
command allows the user to copy a block of 78000 memory to an other
location in the memory map.

The
.cu
bs
command allows the user to search for the given data pattern in 78000
memory.

All data types will be aligned.
That is, words will be aligned to word boundries, etc....
.in -.5in.

\fBOPTIONS\fP
.in +.5in.
.TS
tab(~);
lw(1in)lw(4in).
b~T{
Data type of bytes
T}
h~T{
Data type of half words (2 bytes)
T}
w~T{
Data type of words (4 bytes)
T}
~T{
Default is words (4bytes)
T}
.TE
.in -.5in.

\fBDISPLAYS\fP
.in +.5in.
None
.in -.5in.

\fBBUGS\fP
.in +.5in.
Currently none
.in -.5in.
.bp
.sp 3
.S 14 16
\fB
.TS
expand tab(~);
lr.
CD~CD
.TE
.S 10 12
NAME
.in +.5in.
cd - Display the CMMU memory cache.
.in -.5in.

SYNOPSIS
.in +.5in.
cd i|d setnum
.in -.5in.

DESCRIPTION
\fP
.in +.5in.
The
.cu
cd
command will display the memory cache contained in the CMMU.
By use of the
.cu
i
or
.cu
d, cd
will display the instruction or data memory caches.
The
.cu
setnum
will identify which set of 4, cache lines to be displayed.
.in -.5in.
\fBOPTIONS\fP
.in +.5in.
NONE
.in -.5in.

\fBDISPLAYS\fP
.in +.5in.

sim>> cd i 0

 I CACHE (SET # 0) :

 vv  kill   ADDRESS TAG  DATA0         DATA1         DATA2         DATA3      ORDER 

  3     0      0x00000000     0x00000000   0x00000000   0x00000000   0x00000000     0 
  3     0      0x00000000     0x00000000   0x00000000   0x00000000   0x00000000     1 
  3     0      0x00000000     0x00000000   0x00000000   0x00000000   0x00000000     2 
  3     0      0x00000000     0x00000000   0x00000000   0x00000000   0x00000000     3 

sim>> 

.in -.5in.
\fBBUGS\fP
.in +.5in.
Currently none
.in -.5in.
.bp
.sp 3
.S 14 16
\fB
.TS
expand tab(~);
lr.
CR~CR
.TE
.S 10 12
NAME
.in +.5in.
cr - Display the CMMU control registers.
.in -.5in.

SYNOPSIS
.in +.5in.
cr [i|d]
.in -.5in.

DESCRIPTION
\fP
.in +.5in.
The
.cu
cr
command will display the CMMU control registers.
.in -.5in.
\fBOPTIONS\fP
.in +.5in.
.BL
.LI
i - This option will retreive the Instruction CMMU BATC.
.LI
d - This option will retreive the Data CMMU BATC. (default)
.LE
.in -.5in.

\fBDISPLAYS\fP
.in +.5in.
.DS

sim>> cr i

       ICMMU CONTROL REGISTERS 

         0x00000000         ID register 
         0x00000000         control register 
         0x00000080         status register 
         0x00000000         address register 
         0x00000040         Supervisor area pointer register 
         0x00000040         User area pointer register 
         0x00000000         block write port 0 
         0x00000000         block write port 1 
         0x00000000         block write port 2 
         0x00000000         block write port 3 
         0x00000000         block write port 4 
         0x00000000         block write port 5 
         0x00000000         block write port 6 
         0x00000000         block write port 7 
         0x00000000         LRU, KILL, VALID register 

sim>>  

.DE
.in -.5in.
\fBBUGS\fP
.in +.5in.
Currently none
.in -.5in.
.bp
.sp 3
.S 14 16
\fB
.TS
expand tab(~);
lr.
CS~CS
.TE
.S 10 12
NAME
.in +.5in.
cs - Display CMMU statistics.
.in -.5in.

SYNOPSIS
.in +.5in.
cs
.in -.5in.

DESCRIPTION
\fP
.in +.5in.
The
.cu
cs
command will display the CMMU statistics gathered while running.
.in -.5in.
\fBOPTIONS\fP
.in +.5in.
NONE
.in -.5in.

\fBDISPLAYS\fP
.in +.5in.
.DS
.bp
.S 14 16
\fB
.TS
expand tab(~);
lr.
CS~CS
.TE
.S 10 12
.in -.5in.
\fBDISPLAYS (cont.)\fP

sim>>  

cmmu function statistics: 

                           icmmu   dcmmu

tablewalks                   0       0

tablewalks w/U,M bit set 0       0

write once                   0       0 

cache writes w/ copyback 0       0

cache reads w/ copyback  0       0

probes                       0       0


 CONTINUE  -  PRESS  <return> 


                      no. of       no. of     hit      miss 
                      checks       hits       ratio    ratio

batc - icmmu         0           0         0.00     0.00

patc - icmmu         0           0         0.00     0.00

batc - dcmmu         0           0         0.00     0.00

patc - dcmmu         0           0         0.00     0.00


                   no. of       no. of     hit      miss 
                   accesses     hits       ratio    ratio

instr. fetches      0            0         0.00     0.00

data loads          0            0         0.00     0.00

data stores         0            0         0.00     0.00

sim>> 

.DE
.in -.5in.
\fBBUGS\fP
.in +.5in.
Currently none
.in -.5in.
.bp
.sp 3
.S 14 16
\fB
.TS
expand tab(~);
lr.
DC~DC
.TE
.S 10 12
NAME
.in +.5in.
dc - Data conversion
.in -.5in.

SYNOPSIS
.in +.5in.
dc <EXP>|<ADDR>
.in -.5in.

DESCRIPTION
\fP
.in +.5in.
The
.cu
dc
command allows the user to convert between numerical bases and to do
addition, subtraction, multiplication, and division.
The results are displayed in both hexadecimal and decimal formats.
If the answer could be a signed result, both the signed and unsigned
answers are displayed.
.in -.5in.

\fBOPTIONS\fP
.in +.5in.
None
.in -.5in.

\fBDISPLAYS\fP
.in +.5in.
.TS
tab(~);
lw(3in)|lw(3in).
T{
Addition:

sim>> dc 14+3
.br
00000017 = 17 = &23

sim>> 
T}~T{
Signed Addition:

sim>> dc -&24+-&24
.br
SIGNED   : FFFFFFD0 = -$30 = -&48
.br
UNSIGENED: FFFFFFD0 = FFFFFFD0 = &4294967248

sim>> 
T}
_
T{
Subtraction:

sim>> dc @40-&10
.br
00000016 = 16 = &22

sim>> 
T}~T{
Multiplication:

sim>> dc &10*&35
.br
0000015E = 15E = &350

sim>> 
T}
_
T{
Division:

sim>> dc 1a8/2
.br
000000D4 = D4 = &212

sim>> 
T}~T{
Complex:

sim>> dc 13*&12+@12*%1000
.br
00000134 = 134 = &308

sim>> 
T}
.TE
.in -.5in.
\fBBUGS\fP
.in +.5in.
No parenthesis support for grouping.
.in -.5in.
.bp
.sp 3
.S 14 16
\fB
.TS
expand tab(~);
lr.
DM~DM
MAP~MAP
.TE
.S 10 12

NAME
.in +.5in.
dm - Display 78000 memory map.
.br
map - Request more memory for the 78000 memory map
.in -.5in.

SYNOPSIS
.in +.5in.
dm
.br
map [<RANGE>[;r|u|t|d|b|a]]
.in -.5in.

DESCRIPTION
\fP
.in +.5in.
The
.cu
dm
command will display the current memory map known to the simulator.

The
.cu
map
command will allow the user to include more memory to the current memory
map.
.in -.5in.

\fBOPTIONS\fP
.in +.5in.
.TS
tab(~);
lw(1in)lw(4in).
r~T{
Map this section to be all section types and to be retained through loads.
T}
u~T{
Unmap this section (use section number not addresses).
T}
t~T{
Map this section as text.
T}
d~T{
Map this section as data.
T}
b~T{
Map this section as bss.
T}
a~T{
Map this section to be all section types.
T}
.TE
.in -.5in.

\fBDISPLAYS\fP
.in +.5in.
.TS
tab(~);
lw(3in)|lw(3in).
T{
Display memory with a program loaded:

sim>> dm
.br
Segment 0: text 000020A8-000021DC
.br
Segment 1: data 000025DC-000025FC
.br
Segment 2: bss  000025FC-000025FC
.br
Segment 3: data FFFF0000-FFFFFFFF

sim>> 
T}~T{
Display memory with a program loaded (Split I&Ds):

sim>> dm
.br
Segment 0: text Virtual 000000A8-0000B48C, Physical 000000A8-0000B48C
.br
Segment 1: data Virtual 00000000-00002B4C, Physical 00040000-00042B4C
.br
Segment 2: bss  Virtual 00002B4C-00002B4C, Physical 00042B4C-00042B4C
.br
Segment 3: data Virtual EFFF8000-EFFFFFFF, Physical EFFF8000-EFFFFFFF

sim>> 
T}
_
T{
Requesting more memory:

sim>> map 100000;t
.br
Segment 0: text 000020A8-000021DC
.br
Segment 1: data 000025DC-000025FC
.br
Segment 2: bss  000025FC-000025FC
.br
Segment 3: data FFFF0000-FFFFFFFF
.br
Segment 4: text 00100000-00100100

sim>> 
T}
.TE
.in -.5in.
.bp
.sp 3
.S 14 16
\fB
.TS
expand tab(~);
lr.
DM~DM
MAP~MAP
.TE
.S 10 12
\fP

\fBBUGS\fP
.in +.5in.
If two sections are mapped to the same address but different sections,
the first section found is the only section that the memory commands (mm, md, etc..)
can access.
.in -.5in.
.bp
.sp 3
.S 14 16
\fB
.TS
expand tab(~);
lr.
EX~EX
Q~Q
.TE
.S 10 12
NAME
.in +.5in.
ex, q - Exit to operating system.
.in -.5in.

SYNOPSIS
.in +.5in.
ex
.br
q
.in -.5in.

DESCRIPTION
\fP
.in +.5in.
The
.cu
ex
or
.cu
q
commands will return the user to the operating system.
.in -.5in.

\fBOPTIONS\fP
.in +.5in.
None
.in -.5in.

\fBDISPLAYS\fP
.in +.5in.
None
.in -.5in.

\fBBUGS\fP
.in +.5in.
Currently none
.in -.5in.
.bp
.sp 3
.S 14 16
\fB
.TS
expand tab(~);
lr.
G~G
GO~GO
GD~GD
GN~GN
GT~GT
.TE
.S 10 12
NAME
.in +.5in.
g - Execute the user program.
.br
go - Execute the user program.
.br
gd - Execute the user program ignoring breakpoints.
.br
gn - Execute the user program setting a breakpoint at next instruction.
.br
gt - Execute the user program setting a temporary breakpoint.
.in -.5in.

SYNOPSIS
.in +.5in.
g [<ADDR>]
.br
go [<ADDR>]
.br
gd [<ADDR>]
.br
gn
.br
gt <ADDR>
.in -.5in.

DESCRIPTION
\fP
.in +.5in.
The
.cu
g
or
.cu
go
commands are used to initate target code execution.
All previously breakpoints are enabled.
If the optional address <ADDR> is specified, it is
placed in the IP register of the 78000.
Execution starts at the 78000 IP address. 

The
.cu
gd
command is the same as
.cu
"go"
except that breakpoints are not inserted.

The
.cu
gn
command is the same as
.cu
"go"
with the addition of a breakpoint at the next instruction address.
All previously breakpoints are enabled.
Execution will always start where the 78000 IP register is pointing.

The
.cu
gt
command is the same as
.cu
"go"
with the addition of a breakpoint at the specified address.
All previously breakpoints are enabled.
Execution will always start where the 78000 IP register is pointing.

To abort execution if breakpoints are never encountered use "CTL-C".
.in -.5in.

\fBOPTIONS\fP
.in +.5in.
None
.in -.5in.

\fBDISPLAYS\fP
.in +.5in.
sim>> go 100000
.br
Effective address: 00100000
.in -.5in.

\fBBUGS\fP
.in +.5in.
Currently none
.in -.5in.
.bp
.sp 3
.S 14 16
\fB
.TS
expand tab(~);
lr.
HE~HE
.TE
.S 10 12
NAME
.in +.5in.
he - Display known commands.
.in -.5in.

SYNOPSIS
.in +.5in.
he
.in -.5in.

DESCRIPTION
\fP
.in +.5in.
The
.cu
he
command is useful as a reminder of commands available
to the user.
.in -.5in.

\fBOPTIONS\fP
.in +.5in.
None
.in -.5in.

\fBDISPLAYS\fP
.in +.5in.
Give it a try.
.in -.5in.

\fBBUGS\fP
.in +.5in.
Currently none
.in -.5in.
.bp
.sp 3
.S 14 16
\fB
.TS
expand tab(~);
lr.
LO~LO
.TE
.S 10 12
NAME
.in +.5in.
lo - Load a users program.
.in -.5in.

SYNOPSIS
.in +.5in.
lo <filename>
.in -.5in.

DESCRIPTION
\fP
.in +.5in.
The
.cu
lo
command will first release all current memory map segments and
then request the memory required for the users program.
Next, the users program is loaded into memory.
If a symbol table exists, it is loaded last.
A stack frame is set up at address $FFFF0000-$FFFFFFFF.

If the execution address specified in the file is valid memory,
the 78000 IP register is set to this address.
If invalid the 78000 IP register is set to the base of memory and
a warning message is displayed.

Split Instruction and Data (I&D) section programs are automatically supported
by the loader.
If the loader detects any section overlap the simulator will change the user
interface to the Split I&D mode.
Access to the different section for the user interface will be through the
physical addresses as returned by using the
.cu
map or dm
commands.
Split I&Ds are only supported for COFF programs.

Symbol table support for COFF only.
.in -.5in.

\fBOPTIONS\fP
.in +.5in.
None
.in -.5in.

\fBDISPLAYS\fP
.in +.5in.
Loading a COFF program.

sim>> lo tests/t2
.br
COFF loader: Loading a file for processor type MC78k
.br
Loading section ".text" at address $000020A8, bytes to load $00000134
.br
Loading section ".data" at address $000025DC, bytes to load $00000020
.br
Loading section ".bss" at address $000025FC, bytes to load $00000000
.br
Setting stack space at $FFFF0000 to $FFFFFFFF
.br
Execution address = $000020A8

sim>> 
.in -.5in.
.bp
.sp 3
.S 14 16
\fB
.TS
expand tab(~);
lr.
LO~LO
.TE
.S 10 12
.in -.5in.

\fBDISPLAYS (cont.)\fP
.in +.5in.
Loading a Split I&D COFF program.

sim>> lo junk/bug1
.br
COFF loader: Loading a file for processor type MC78k
.br
Loading section ".text" at
.br
physical address $000000A8, bytes to load $0000B3E4, Virtual address $000000A8
.br
Loading section ".data" at
.br
physical address $00040000, bytes to load $00002B4C, Virtual address $00000000
.br
Loading section ".bss" at
.br
physical address $00042B4C, bytes to load $00000000, Virtual address $00002B4C
.br
Setting stack space at EFFF8000 to EFFFFFFF
.br
Execution address = $00002000

sim>> 

Loading an a.out program.

sim>> lo aspen/getexp.o
.br
a.out loader: Loading a file for processor type MC78k
.br
Loading program at address $00000000, bytes to load $00000008
.br
Setting stack space at $FFFF0000 to $FFFFFFFF
.br
Execution address = $00000000
 
sim>> 
.in -.5in.

\fBBUGS\fP
.in +.5in.
Currently none
.in -.5in.
.bp
.sp 3
.S 14 16
\fB
.TS
expand tab(~);
lr.
MD~MD
MDS~MDS
.TE
.S 10 12
NAME
.in +.5in.
md - Memory display
.br
mds - Memory display scaled
.in -.5in.

SYNOPSIS
.in +.5in.
md <ADDR>|<RANGE>[;b|h|w|s|d|di]
.br
mds <ADDR>|<RANGE>[;b|h|w|s|d|di]
.in -.5in.

DESCRIPTION
\fP
.in +.5in.
The
.cu
md
command will display multiple 78000 memory locations.
The display starts with the first address presented
through and including the last.
If only one address is specified
.cu
md
will only display sixteen (16) bytes.
The data will be formated into a block display consisting
of sixteen (16) bytes of data and sixteen (16) ASCII
characters.
The data will be group as to type.
If data type is halfwords, eight (8) halfword will be displayed
(8 halfwords equals 16 bytes).
See the display section for this command for examples.

The
.cu
mds
command is the same as
.cu
md
except, if only one address is presented, only 128 elements
of the requested data type will be displayed.

Both commands will continue to display the block of data if a
newline (carriage return) is depressed as the next command to
the simulator.

Floating point and disassembly displays will be done with only
one element per line.
If disassembly is requested, the addresses will be displayed
as symbols.
.in -.5in.

\fBOPTIONS\fP
.in +.5in.
.TS
tab(~);
lw(1in)lw(4in).
b~T{
Data type of bytes
T}
h~T{
Data type of half words (2 bytes)
T}
w~T{
Data type of words (4 bytes)
T}
s~T{
Data type of single precision floating point (4 bytes)
T}
d~T{
Data type of double precision floating point (8 bytes)
T}
di~T{
78000 disassembly of memory (4 bytes)
T}
~T{
Default is words (4bytes)
T}
.TE
.in -.5in.

.bp
.sp 3
.S 14 16
\fB
.TS
expand tab(~);
lr.
MD~MD
MDS~MDS
.TE
.S 10 12
DISPLAYS\fP
.in +.5in.
Displaying memory with
.cu
md.

sim>> md 20a8
 
000020A8 C8000002 F000D000 77FF0020 243F000C    ........w.. $?..
.br
sim>> 
 
Continuing with a newline

sim>>  <carriage return>
 
000020B8 F780581D F79F2400 4D428000 156025F0    ..X...$.MB...`%.
.br
sim>> 

Using the
.cu
mds
command to display memory.

sim>> mds 20b0;b
 
000020B0 77 FF 00 20 24 3F 00 0C F7 80 58 1D F7 9F 24 00        w.. $?....X...$.
.br
000020C0 4D 42 80 00 15 60 25 F0 F5 8A 50 0B 24 5C 00 00        MB...`%...P.$\..
.br
000020D0 24 7C 00 04 5D A0 54 54 59 AD 54 54 25 A0 25 DC        $|..].TTY.TT%.%.
.br
000020E0 E8 4C 00 26 E8 4A 00 14 73 BF 00 10 F4 80 58 00        .L.&.J..s.....X.
.br
000020F0 5C 60 00 02 14 40 25 F8 C8 00 00 36 17 9F 00 00        \`...@%....6....
.br
00002100 75 40 00 01 F5 62 7D 0A F1 8B 98 22 E8 4C 00 07        u@...b}....".L..
.br
00002110 73 BF 00 10 14 5C 00 04 C8 00 00 30 17 9F 00 00        s....\.....0....
.br
00002120 74 40 00 01 C0 00 00 28 5D 40 80 00 25 40 25 F0        t@.....(]@..%@%.
.br
sim>> 
.in -.5in.

\fBBUGS\fP
.in +.5in.
Currently none
.in -.5in.
.bp
.sp 3
.S 14 16
\fB
.TS
expand tab(~);
lr.
MM~MM
M~M
.TE
.S 10 12
NAME
.in +.5in.
mm,m - Memory display and modify
.in -.5in.

SYNOPSIS
.in +.5in.
mm <ADDR>[;b|h|w|s|d|di]
.br
m <ADDR>[;b|h|w|s|d|di]
.in -.5in.

DESCRIPTION
\fP
.in +.5in.
The
.cu
mm
or
.cu
m
commands will display a single 78000 memory location
and allow the user to modify if desirable.
The display starts at the address presented.

These commands are interactive with the user and have
different modes to permit movement in the 78000 memory.
If user does not change memory entering a newline (carriage return)
will display the next location depending on the mode.

To change the contents of a memory location, just enter
the new value.
This value will be stored and the next memory location
will be displayed.

These modes are:
.TS
tab(~);
lw(1in)lw(4in).
v, V~T{
The next successive memory location is to be displayed.
This is the default mode when these commands are invoked.
T}
^~T{
The previous memory locations will be displayed on newline.
T}
T{
=
T}~T{
Remain at this memory location.
T}
\.~T{
Exit back to the simultor.
T}
.TE

.in -.5in.

\fBOPTIONS\fP
.in +.5in.
.TS
tab(~);
lw(1in)lw(4in).
b~T{
Data type of bytes
T}
h~T{
Data type of half words (2 bytes)
T}
w~T{
Data type of words (4 bytes)
T}
s~T{
Data type of single precision floating point (4 bytes)
T}
d~T{
Data type of double precision floating point (8 bytes)
T}
di~T{
78000 one line assembler/disassembler.
To assemble, just enter the desired mnemonic and operands.
The addresses will be displayed as symbols.
T}
~T{
Default is words (4bytes)
T}
.TE
.in -.5in.
.bp
.sp 3
.S 14 16
\fB
.TS
expand tab(~);
lr.
MM~MM
M~M
.TE
.S 10 12
DISPLAYS\fP
.in +.5in.
Example using
.cu
mm.

sim>> mm 0
.br
00000000 00000000 12345
.br
00000004 00000000 ^
.br
00000000 00012345 v
.br
00000004 00000000 
.br
00000008 00000000 
.br
0000000C 00000000 
.br
00000010 00000000 =
.br
00000010 00000000 22222
.br
00000010 00022222 222221
.br
00000010 00222221 55555
.br
00000010 00055555 .
 
sim>> 

Using
.cu
mm
to assemble code

sim>> mm 0;di
.br
start      00000000 xmem.bu     r0,r0,$0000 ($00000000)   addu r4,r4,r5
.br
start+$4   F4846105 addu        r4,r4,r5                  
.br
start+$8   00000000 xmem.bu     r0,r0,$0000 ($00000000)   set r4,r6,5<5>
.br
start+$C   F08688A5 set         r4,r6,5<5>                
.br
start+$10  00000000 xmem.bu     r0,r0,$0000 ($00000000)   br $0   
.br
start+$14  C3FFFFFE br          $00000000                 
.br
start+$18  00000000 xmem.bu     r0,r0,$0000 ($00000000)   .

sim>> 
.in -.5in.

\fBBUGS\fP
.in +.5in.
Currently none
.in -.5in.
.bp
.sp 3
.S 14 16
\fB
.TS
expand tab(~);
lr.
PD~PD
.TE
.S 10 12
NAME
.in +.5in.
pd - Display the CMMU Page Address Translation Cache (PATC).
.in -.5in.

SYNOPSIS
.in +.5in.
pd [i|d]
.in -.5in.

DESCRIPTION
\fP
.in +.5in.
The
.cu
pd
command will display the physical address translation cache in the Data or Instruction CMMU.

.in -.5in.
\fBOPTIONS\fP
.in +.5in.
.BL
.LI
i - This option will retreive the Instruction CMMU PATC.
.LI
d - This option will retreive the Data CMMU PATC. (default)
.LE
.in -.5in.

\fBDISPLAYS\fP
.in +.5in.
.DS
.bp
.S 14 16
\fB
.TS
expand tab(~);
lr.
PD~PD
.TE
.S 10 12
.in -.5in.

\fBDISPLAYS (cont.)\fP
sim>> pd

             DCMMU     PATC   
--------------------------------------------------------------------
| entry |      LPA     |      PFA     | S | T | G | C | M | W | V |
--------------------------------------------------------------------
   0         000000          00000     0   0   0   0   0   0   0 
                       .
                       .
  16         000000          00000     0   0   0   0   0   0   0 

 CONTINUE  -  PRESS  <return> 

 
             DCMMU     PATC   
--------------------------------------------------------------------
| entry |      LPA     |      PFA     | S | T | G | C | M | W | V |
--------------------------------------------------------------------
  17         000000          00000     0   0   0   0   0   0   0 
                       .
                       .
  33         000000          00000     0   0   0   0   0   0   0 

 CONTINUE  -  PRESS  <return> 

 
             DCMMU     PATC   
--------------------------------------------------------------------
| entry |      LPA     |      PFA     | S | T | G | C | M | W | V |
--------------------------------------------------------------------
  34         000000          00000     0   0   0   0   0   0   0 
                       .
                       .
  50         000000          00000     0   0   0   0   0   0   0 

 CONTINUE  -  PRESS  <return> 


             DCMMU     PATC   
--------------------------------------------------------------------
| entry |      LPA     |      PFA     | S | T | G | C | M | W | V |
--------------------------------------------------------------------
  51         000000          00000     0   0   0   0   0   0   0 
                       .
                       .
  55         000000          00000     0   0   0   0   0   0   0 

sim>> 

.DE
.in -.5in.
\fBBUGS\fP
.in +.5in.
Currently none
.in -.5in.
.bp
.sp 3
.S 14 16
\fB
.TS
expand tab(~);
lr.
RD~RD
RM~RM
.TE
.S 10 12
NAME
.in +.5in.
rd - Display 78000 register set contents.
.br
rm - Display/modify 78000 register set contents.
.in -.5in.

SYNOPSIS
.in +.5in.
rd[;l|s|d]
.br
rd [0|1]
.br
rm <register>[;l|s|d]
.in -.5in.

DESCRIPTION
\fP
.in +.5in.
The
.cu
rd
command will allow the user to examine the 78000 register sets.
Using the
.cu
rd 
command with the optional 0 or 1 will display the control register set 
for that Special Function Unit (SFU).
Without the optional register set designator the general register will be displayed.

The
.cu
rm
command will allow the user to examine and change the 78000 register sets.
This command is much like the
.cu
mm
command.
It has the same operating modes.
This command is interactive with the user and has
different modes to permit movement in the 78000 integer register set.
If the user does not change the register, entering a newline (carriage return)
will display the next register depending on the mode.

To change the contents of a register, just enter
the new value.
This value will be stored and the next register
will be displayed.

These modes are:
.TS
tab(~);
lw(1in)lw(4in).
v, V~T{
The next successive register is to be displayed.
This is the default mode when these commands are invoked.
T}
^~T{
The previous register will be displayed on newline.
T}
T{
=
T}~T{
Remain at this register.
T}
\.~T{
Exit back to the simultor.
T}
.TE

.cu
Rm
knows about the following registers:
.BL
.LI
r00-r31 - The integer register set.
.LI
ip - The instruction pointer.
.LI
vbr - The vector base register.
.LI
psr - The processor status register.
.LI
fpsr - The floating point unit status register
.LI
fpcr - The floating point unit control register.
.LI
0crxx - SFU0 control registers where  0 <= xx <= 63.
.LI
1crxx - SFU1 control registers where  0 <= xx <= 63.
.LE
.in -.5in.

\fBOPTIONS\fP
.in +.5in.
.TS
tab(~);
lw(1in)lw(4in).
s~T{
Data type of single precision floating point (4 bytes)
T}
d~T{
Data type of double precision floating point (8 bytes)
T}
~T{
Default is a 32bit register display.
T}
.TE
.in -.5in.
.bp
.sp 3
.S 14 16
\fB
.TS
expand tab(~);
lr.
RD~RD
RM~RM
.TE
.S 10 12
DISPLAYS\fP
.in +.5in.
Examples using
.cu
rd.

sim>> rd
.br
   r00:  00000000   r01:  00000000   r02:  00000000   r03:  00000000
.br
   r04:  00000000   r05:  00000000   r06:  00000000   r07:  00000000
.br
   r08:  00000000   r09:  00000000   r10:  00000000   r11:  00000000
.br
   r12:  00000000   r13:  00000000   r14:  00000000   r15:  00000000
.br
   r16:  00000000   r17:  00000000   r18:  00000000   r19:  00000000
.br
   r20:  00000000   r21:  00000000   r22:  00000000   r23:  00000000
.br
   r24:  00000000   r25:  00000000   r26:  00000000   r27:  00000000
.br
   r28:  00000000   r29:  00000000   r30:  00000000   r31:  00000000
.br
   ip:   0x00000000   vbr:  0x00000000   psr:  0x00000000
.br
   fpsr: 0x00000000   fpcr: 0x00000000 
.br
   00000000 F4846105  addu        r4,r4,r5                  

sim>> rd;s
.br
   r00:  0.0000000e+00   r01:  0.0000000e+00   r02:  0.0000000e+00
.br
   r03:  0.0000000e+00   r04:  0.0000000e+00   r05:  0.0000000e+00
.br
   r06:  0.0000000e+00   r07:  0.0000000e+00   r08:  0.0000000e+00
.br
   r09:  0.0000000e+00   r10:  0.0000000e+00   r11:  0.0000000e+00
.br
   r12:  0.0000000e+00   r13:  0.0000000e+00   r14:  0.0000000e+00
.br
   r15:  0.0000000e+00   r16:  0.0000000e+00   r17:  0.0000000e+00
.br
   r18:  0.0000000e+00   r19:  0.0000000e+00   r20:  0.0000000e+00
.br
   r21:  0.0000000e+00   r22:  0.0000000e+00   r23:  0.0000000e+00
.br
   r24:  0.0000000e+00   r25:  0.0000000e+00   r26:  0.0000000e+00
.br
   r27:  0.0000000e+00   r28:  0.0000000e+00   r29:  0.0000000e+00
.br
   r30:  0.0000000e+00   r31:  0.0000000e+00
.br
   ip:   0x00000000   vbr:  0x00000000   psr:  0x00000000
.br
   fpsr: 0x00000000   fpcr: 0x00000000 
.br
   00000000 F4846105  addu        r4,r4,r5                  

sim>> 

Examples using
.cu
rm:

sim>> rm r1
.br
r01: 00000000 33
.br
r02: 00000000 ^
.br
r01: 00000033 
.br
r00: 00000000 
.br
fpcr: 00000000 
.br
fpsr: 00000000 
.br
psr : 00000000 
.br
ip  : 00000000 20a8
.br
vbr : 00000000 .
 
sim>> 
.in -.5in.

\fBBUGS\fP
.in +.5in.
.cu
Rm
when using the
.cu
"d"
option, going backward does not work correctly.
.in -.5in.
.bp
.sp 3
.S 14 16
\fB
.TS
expand tab(~);
lr.
RST~RST
.TE
.S 10 12
NAME
.in +.5in.
rst - reset processor and CMMU
.in -.5in.

SYNOPSIS
.in +.5in.
rst
.in -.5in.

DESCRIPTION
\fP
.in +.5in.
The
.cu
rst
command will reset the processor and the CMMUs to a hardware reset state.
.in -.5in.

\fBOPTIONS\fP
.in +.5in.
None
.in -.5in.

\fBDISPLAYS\fP
.in +.5in.
None
.in -.5in.

\fBBUGS\fP
.in +.5in.
Currently none
.in -.5in.
.bp
.sp 3
.S 14 16
\fB
.TS
expand tab(~);
lr.
RUN~RUN
.TE
.S 10 12
NAME
.in +.5in.
run - Execute a users program passing args.
.in -.5in.

SYNOPSIS
.in +.5in.
run arg1 arg2 arg3 arg4 ... arg19
.in -.5in.

DESCRIPTION
\fP
.in +.5in.
The
.cu
run
command allow the user to start a program for debugging as the operating
system would.
The argument list will be passed on the stack in an arc-arv-envp
format.
Register r31 (pseudo stack pointer) will be pointing to argc which is the
base of the format.
Argc will inform the program as to the number of argv pointers.
The argv pointers point to the argument string also on the stack.
The last argv pointer (argc + 1) will be NULL.
The last argv pointer is also the envp pointer.
(Currently the users enviroment is not passed).

Example stack frame:

sim>> run hi how are you
.br
Effective address: 000020A8
 
^C
.br
Interrupt caught

sim>> md ffffffa4:60;b
 
FFFFFFA4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 20 AC        .............. .
.br
FFFFFFB4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00        ................
.br
FFFFFFC4 00 00 00 05 FF FF FF E0 FF FF FF EC FF FF FF F0        ................
.br
FFFFFFD4 FF FF FF F4 FF FF FF F8 00 00 00 00 74 65 73 74        ............test
.br
FFFFFFE4 73 2F 74 32 00 00 00 00 68 69 00 00 68 6F 77 00        s/t2....hi..how.
.br
FFFFFFF4 61 72 65 00 79 6F 75 00 00 00 00 00 00 00 00 00        are.you.........

sim>> 

Execution of the user program is as described in
.cu
go
and all break points should be set before command is invoked.

.cu
Run
will always reset the ip register and r31 to the loaded values.
.in -.5in.

\fBOPTIONS\fP
.in +.5in.
None
.in -.5in.

\fBDISPLAYS\fP
.in +.5in.
sim>> run
.br
Effective address: 000020A8
 
.in -.5in.
\fBBUGS\fP
.in +.5in.
.cu
Run
cannot be invoked if a program has not been loaded.
.in -.5in.
.bp
.sp 3
.S 14 16
\fB
.TS
expand tab(~);
lr.
SAVE~SAVE
.TE
.S 10 12
NAME
.in +.5in.
save - Save current state of the simulator to disk
.in -.5in.

SYNOPSIS
.in +.5in.
save
.in -.5in.

DESCRIPTION
\fP
.in +.5in.
The
.cu
save
command will save the entire simulator state to a disk file
in the current directory called
.cu
"core78".
This file can be reloaded using the
.cu
lo
command by typing
.cu
lo core78.
.in -.5in.

\fBOPTIONS\fP
.in +.5in.
None
.in -.5in.

\fBDISPLAYS\fP
.in +.5in.
None
.in -.5in.

\fBBUGS\fP
.in +.5in.
Currently none
.in -.5in.
.bp
.sp 3
.S 14 16
\fB
.TS
expand tab(~);
lr.
SH~SH
!~!
.TE
.S 10 12
NAME
.in +.5in.
sh - Suspend and escape to the operating system.
.br
! - Suspend and execute the requested operating system command.
.in -.5in.

SYNOPSIS
.in +.5in.
sh
.br
! arg1 arg2 arg3 arg4 ... arg19
.in -.5in.

DESCRIPTION
\fP
.in +.5in.
The
.cu
sh
command would allow the user to suspend the simulator and return to
the operating system.
This is useful because the simulator's state (memory, registers, and breakpoints)
are maintained.
If the user were to exit
.cu
(ex or q)
the simulator and then re-invoke it, all previous work is lost.
To return back to the simulator after a
.cu
sh
command, terminate the operating systems shell or command line processor
as you would to exit the system.

The
.cu
!
command allows the user to execute any system command with out exiting
the simulator.
The reasoning follows as in
.cu
sh.
Control is returned to the simulator after completion of the requested command.
.in -.5in.

\fBOPTIONS\fP
.in +.5in.
None
.in -.5in.

\fBDISPLAYS\fP
.in +.5in.
None
.in -.5in.

\fBBUGS\fP
.in +.5in.
Currently none
.in -.5in.
.bp
.sp 3
.S 14 16
\fB
.TS
expand tab(~);
lr.
SD~SD
SR~SR
.TE
.S 10 12
NAME
.in +.5in.
sd - Display simulation statistics.
.br
sr - Reset the simulation statistics.
.in -.5in.

SYNOPSIS
.in +.5in.
sd
.br
sr
.in -.5in.

DESCRIPTION
\fP
.in +.5in.
The
.cu
sd
command permits the user to display statistics that have been gathered
during simulation.

The
.cu
sr
command will reset all stats gathered during simulation.
.in -.5in.

\fBOPTIONS\fP
.in +.5in.
None
.in -.5in.

\fBDISPLAYS\fP
.in +.5in.
sim>> sd
.br
clocks: 22
.br
18 total instructions executed
.br
in 22 clocks
.br
16.36 mips at 20 Mhz

arithmetic                2    11.11 percent
.br
logical                   6    33.33 percent
.br
load address              0    0.00 percent
.br
load                      2    11.11 percent
.br
store                     6    33.33 percent
.br
control register          0    0.00 percent
.br
bit field                 0    0.00 percent
.br
jumps not taken           0    0.00 percent
.br
jumps taken               2    11.11 percent
.br
traps                     0    0.00 percent
.br
floating point            0    0.00 percent
.br
error count               0    0.00 percent

sim>> 
.in -.5in.

\fBBUGS\fP
.in +.5in.
Currently none
.in -.5in.
.bp
.sp 3
.S 14 16
\fB
.TS
expand tab(~);
lr.
SYM~SYM
.TE
.S 10 12
NAME
.in +.5in.
sym - Display the symbol table.
.in -.5in.

SYNOPSIS
.in +.5in.
sym [<EXP> ... <EXP>]
.in -.5in.

DESCRIPTION
\fP
.in +.5in.
The
.cu
sym
command will display the symbol table in numerical order.
.in -.5in.

\fBOPTIONS\fP
.in +.5in.
None
.in -.5in.

\fBDISPLAYS\fP
.in +.5in.
sim>> sym
.br
text 000020A8 - __start
.br
text 000020B0 - _main
.br
text 000021D0 - _ioctl
.br
text 000021D4 - _abcd
.br
text 000021D8 - _perror
.br
text 000021DC - etext
.br
data 000025DC - _trans
.br
data 000025F8 - _vbeddev
.br
data 000025FC - edata
.br
data 000025FC - end

sim>> 
.in -.5in.

\fBBUGS\fP
.in +.5in.
Currently none
.in -.5in.
.bp
.sp 3
.S 14 16
\fB
.TS
expand tab(~);
lr.
T~T
TT~TT
TV~TV
TX~TX
.TE
.S 10 12
NAME
.in +.5in.
t - Trace instruction execution.
.br
tt - Trace instruction exection and set a breakpoint.
.br
tv - Trace instruction exection and be verbose.
.br
tx - Trace instruction exection and and display transfer commands only
.in -.5in.

SYNOPSIS
.in +.5in.
t [<COUNT>]
.br
tt <ADDR>
.br
tv [<COUNT>]
.br
tx
.in -.5in.

DESCRIPTION
\fP
.in +.5in.
The
.cu
t
and
.cu
tv
commands will execute <COUNT> instructions.
The
.cu
t
command will display the instruction just executed and the registers
modified (or ALU, SRC1 and SRC2 busses).
The
.cu
tv
command will display the next instruction to be executed and the
entire register set.
If <COUNT> is not specified only one instruction is executed.
Execution begins at the 78000 ip register.
All breakpoints are inserted.
Both commands will continue to trace if a
newline (carriage return) is depressed as the next command to
the simulator.

The
.cu
tt
command will insert a temporary breakpoint at <ADDR> and begin execution
displaying the register set after each instruction.
Execution begins at the 78000 ip register.
All breakpoints are inserted.

The
.cu
tx
command display only program transfer control instructions (JSR, BRS, BR, TB0, etc..).
Using the display format as in
.cu
t.
The
.cu
tx
command will not termiate until a break point is encountered, program exits through a
trap, execution error or keyboard interrupt.
Execution begins at the 78000 ip register.
All breakpoints are inserted.
.in -.5in.

\fBOPTIONS\fP
.in +.5in.
None
.in -.5in.
.bp
.sp 3
.S 14 16
\fB
.TS
expand tab(~);
lr.
T~T
TT~TT
TV~TV
TX~TX
.TE
.S 10 12
\fBDISPLAYS\fP
.in +.5in.
sim>> tv
.br
   r00:  00000000   r01:  000020AC   r02:  FFFF0000   r03:  00000000
.br
   r04:  00000033   r05:  00000000   r06:  00000000   r07:  00000000
.br
   r08:  00000000   r09:  00000000   r10:  80000000   r11:  00000000
.br
   r12:  80000000   r13:  00000000   r14:  00000000   r15:  00000000
.br
   r16:  00000000   r17:  00000000   r18:  00000000   r19:  00000000
.br
   r20:  00000000   r21:  00000000   r22:  00000000   r23:  00000000
.br
   r24:  00000000   r25:  00000000   r26:  00000000   r27:  00000000
.br
   r28:  00000000   r29:  00000000   r30:  00000000   r31:  FFFFFFA4
.br
   ip:   0x000020B0   vbr:  0x00000000   psr:  0x00000000
.br
   fpsr: 0x00000000   fpcr: 0x00000000 
.br
   000020B0 77FF0020  sub         r31,r31,$0020             

sim>> 
.br
   r00:  00000000   r01:  000020AC   r02:  FFFF0000   r03:  00000000
.br
   r04:  00000033   r05:  00000000   r06:  00000000   r07:  00000000
.br
   r08:  00000000   r09:  00000000   r10:  80000000   r11:  00000000
.br
   r12:  80000000   r13:  00000000   r14:  00000000   r15:  00000000
.br
   r16:  00000000   r17:  00000000   r18:  00000000   r19:  00000000
.br
   r20:  00000000   r21:  00000000   r22:  00000000   r23:  00000000
.br
   r24:  00000000   r25:  00000000   r26:  00000000   r27:  00000000
.br
   r28:  00000000   r29:  00000000   r30:  00000000   r31:  FFFFFF84
.br
   ip:   0x000020B4   vbr:  0x00000000   psr:  0x00000000
.br
   fpsr: 0x00000000   fpcr: 0x00000000 
.br
   000020B4 243F000C  st          r1,r31,$000C (end+$FFFFD9)

sim>> 
.in -.5in.

\fBBUGS\fP
.in +.5in.
Currently none
.in -.5in.

