home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
High Voltage Shareware
/
high1.zip
/
high1
/
DIR2
/
68000ASM.ZIP
/
SIM.DOC
< prev
next >
Wrap
Text File
|
1989-04-10
|
19KB
|
478 lines
68000 Simulator
by Marwan Shaban
User's Manual
Table of Contents
I. Introduction ................................................ 2
II. The Simulator Environment ................................... 3
1. Data Registers and Address Registers .................... 3
2. Program Counter, Status Register, and Cycle Counter ..... 3
3. Trace and Single Step ................................... 3
4. The Port Display ........................................ 3
5. The Memory Space ........................................ 4
6. Startup Condition ....................................... 4
III. Using the Simulator ......................................... 5
1. Loading a Program ....................................... 5
2. Displaying and Changing Registers and Memory ............ 5
3. Setting Simulator Options ............................... 5
4. Using Breakpoints ....................................... 5
IV. Simulator Commands .......................................... 6
1. ld (load) ............................................... 6
2. ch (change registers or memory) ......................... 6
3. clear (clear registers, memory, or cycles) .............. 6
4. bit_on and bit_off (change status register bits) ........ 6
5. md (memory display) ..................................... 7
6. bp (break point setting) ................................ 7
7. dec and hex (number conversion commands) ................ 7
8. sstep and ssoff (single stepping commands) .............. 8
9. trace and troff (trace control commands) ................ 8
10. refresh (rewrite screen) ................................ 8
11. go (execute a program) .................................. 8
12. help (online help) ...................................... 8
13. exit (exit simulator) ................................... 8
V. Exception Processing ........................................ 9
1. Disabling and Enabling Exception Processing ............. 9
2. Description of Exception Conditions ..................... 9
3. What Happens During Exception Processing ................ 10
2
I. Introduction
This manual describes the Motorola 68000 microprocessor
simulator program. The program loads 68000 object files in S-record
format, and simulates the 68000's execution of the code. The full set
of 68000 operations is implemented.
The simulator was written in VAX-11 C and Microsoft C 5.0 and
should be portable with little modification to any C language
implementation. Versions of the simulator are presently available for
the VAX and IBM PC computers.
3
II. The Simulator Environment
When you start the simulator, you will see the main screen, which
looks like this:
<D0> = 00000000 <D4> = 00000000 <A0> = 00000000 <A4> = 00000000
<D1> = 00000000 <D5> = 00000000 <A1> = 00000000 <A5> = 00000000
<D2> = 00000000 <D6> = 00000000 <A2> = 00000000 <A6> = 00000000
<D3> = 00000000 <D7> = 00000000 <A3> = 00000000 <A7> = 00000000
trace: off sstep: off cycles: 0 <A7'>= 00000f00
cn tr st rc T S INT XNZVC <PC> = 00000000
port1 00 00 82 00 SR = 0010000000000000
-------------------------------------------------------------------------------
>
II.1 Data Registers and Address Registers:
At the top you can see the eight general-purpose data registers and
the eight address registers as well as the system stack pointer (A7').
Recall that the user stack pointer is called A7 while the system stack
pointer is referred to as A7'. In the simulator's user interface, the
user stack pointer will be called A7 and the system stack pointer will
be referred to as A8. So, if you want to change the value in the system
stack pointer, you must use the command "ch a8".
II.2 Program Counter, Status Register, and Cycle Counter:
Under the system stack pointer is the program counter. To the left
of the program counter is the status register, which is displayed in
binary form so that the individual bits can be examined at a glimpse.
Above the status register is the cycle counter which contains the number
of machine cycles that elapse while the microprocessor runs your program.
II.3 Trace and Single Step:
The Trace and Single Stepping indicators show the status of trace
and single stepping modes. If single stepping mode is turned on, the
program will run only one 68000 instruction after you type "go" at the
">" prompt. If the trace mode is turned on, the program will update the
screen after the execution of every instruction while a program is being
run. Trace mode should not be confused with the 68000 trace mode which
is turned on by turning on the "t" bit in the status register.
II.4 The Port Display:
The display for "port1" is to show the status of a simulated 6850
asynchronous communications interface adapter (ACIA) chip. This
simulated chip is not implemented at this time.
4
II.5 The Memory Space:
The simulator has a "virtual" memory space from location 0 to
location FFF (Hex). Programs may be loaded into any part of this
virtual memory space. However, you must pay attention to the fact that
the locations under 0C0 (Hex) are used as exception vectors. More
detailed information on exception processing is contained in Section V
(Exception Processing).
II.6 Startup Condition:
On startup, the status register is clear except for the supervisor
bit which is on. The system stack pointer is set to locatin F00 (Hex).
Note that the system stack grows downward, so that if any exception
condition occurs, the processor will have room to grow downward. Be
careful about setting the system stack pointer to very low values or to
a value of zero since that would create an out-of-memory-space error
if the stack was used, which would cause an irrecoverable condition.
5
III. Using The Simulator:
III.1 Loading a Program:
A program may be loaded by typing "ld <program name>" at the ">"
prompt. <program name> may contain a path if the file to be loaded
is not in the current directory.
NOTE: The ".h68" extension is required in the <program name> if the
object module to be loaded does indeed have the extension ".h68".
III.2 Displaying and Changing Registers and Memory:
Registers are displayed on the main screen. If the display gets
garbled up for any reason, you may instruct the program to re-draw it
by using the "refresh" command.
To change register values, use the command "ch <Rx> <val>", where
<Rx> is a value such as D0 to D7, or A0 to A8, and <val> is a hexadecimal
number not greater than FFFFFFFF. Similarly, the program counter may
be altered by "ch pc <val>".
To change bits in the status register, type <bit>_on or <bit>_off,
where <bit> is one of these letters: "t", "s", "v", "x", "z", "c" or "n".
To change the value of the interrupt bits, type "ch int <val>", where
<val> is a number from 0 to 7.
To display values in memory, type "md <start loc> <stop loc>", where
<start loc> is the hexadecimal first location to be displayed and <stop loc>
is the last location to be displayed.
To change values in memory, type "ch mem <loc>" where <loc> is the
memory location you wish to alter the contents of. Then, type in the
new value of that location at the prompt. You may enter byte, word, or
longword-sized values to be stored in memory.
III.3 Setting Simulator Options:
If you wish to have the program update the values of registers on the
screen after the execution of every instruction in your program, use the
command "trace". To turn this feature off, use "troff".
If you wish the program to execute one instruction at a time, use the
command "sstep". To turn this feature off, use "ssoff".
WARNING: If you run your program without using the single step command,
and you do not set any break points, then the program may run in an infinite
loop, run beyond your program, or have other unpredictable results.
Concievable situations are for the program to run into data that it
interprets as illegal instructions or run until it goes beyond the virtual
memory space. Both of these situations will cause exception conditions
(see Section V).
III.4 Using Breakpoints:
Use the "bp" command to set, clear, and display break points. Before
running your program, you should set at least one breakpoint at the point
you wish your program to "return" if you have not set the single stepping
mode. This will keep your program from running out of control.
6
IV. Simulator Commands:
IV.1 The Load Command: (load 68000 program)
Loads ASCII hex file (".h68" file produced by the 68000
assembler) into memory.
EXAMPLE : "ld file1.h68"
IV.2 The Change Command: (change registers or memory)
Ch allows you to change the values of the simulated 68000
registers or main memory.
D<num> <val> places <val> in register D<num>. <num> is in the
range 0 - 7.
A<num> <val> places <val> in A register # num. <num> is in the
range 0 - 8.
NOTE: the supervisor stack pointer (A7') is referenced as "A8".
PC <val> places <val> in the program counter.
int <val> places <val> in the interrupt mask bits of the
status register. <val> is in the range 0 - 7.
mem <loc> <val> places <val> in location <loc>.
io allows you to modify the port registers.
IV.3 The Clear Command: (clear registers, memory, or cycles)
CLEAR allows you to clear different elements within the processor
and the simulator.
mem fills the memory space with zero's.
reg fills all the registers with zero's.
port clears port.
int clears any pending interrupts.
cy clears the cycle counter.
all clears all of the above items.
IV.4 The Bit_on and Bit_off Commands: (change status register bits)
bit_on allows you to turn on a specific bit in the statu
regist
s_on turns on the supervisor bit
t_on turns on the trace bit
x_on turns on the extend bit
n_on turns on the negative bit
z_on turns on the zero bit
v_on turns on the overflow bit
c_on turns on the carry bit
7
bit_off allows you to turn off a specific bit in the status register
s_off turns off the supervisor bit
t_off turns off the trace bit
x_off turns off the extend bit
n_off turns off the negative bit
z_off turns off the zero bit
v_off turns off the overflow bit
c_off turns off the carry bit
IV.5 The Memory Display Command: (display main memory)
Memory Display allows you to view the contents of a set of
memory location:
md <start> <stop> displays locations between start and stop
inclusive. If only a start value is specifed
then only that location will be displayed.
IV.6 The Break Point Command: (break point setting)
Break Points allows you to set clear and show break points.
bp sp <loc> sets a break point at loc.
bp cp <loc> clears the break point at loc.
bp dp displays a list of the break points.
IV.7 The dec and hex Commands: (number conversion commands)
Dec allows you to convert a hexadecimal number into decimal format.
dec <number> shows the number in decimal format. <number> must
be input in hexadecimal format.
Hex allows you to convert a decimal number into hexadecimal format.
hex <number> shows the number in hexadecimal format. <number>
must be input in decimal format.
8
IV.8 The Sstep and Ssoff Commands: (control the single step option)
sstep turns on single stepping mode. This makes the 'go'
command run only one instruction at a time.
ssoff turns off single stepping mode. This makes the 'go'
command run instructions until
1. the processor encounters a breakpoint, or
2. an exception condition occurs.
IV.9 The Trace and Troff Commands: (control the trace option)
trace turn on trace mode. This activates trace mode while
running a program.
troff turns off trace mode. This deactivates trace mode
while running a program.
IV.10 The Refresh Command: (rewrite screen)
REFRESH updates the register set and other on-screen information
(such as port registers, SR, and cycles.)
IV.11 The Go Command: (execute a program)
GO starts executing a hector program at the location specified.
EXAMPLE : "go 4B0" start executing at 4B0 (HEX).
IV.12 The Help Command: (online help)
The HELP command allows the user to enter a help mode and view
information about simulator commands.
IV.13 The Exit Command: (exit simulator)
EXIT exits the simulator and returns you to the command language.
9
V. Exception Processing:
V.1 Disabling and Enabling Exception Processing:
If you are not concerned with modeling the exact behavior of the
68000 chip, you may wish to disable exception processing using
the "ex_off" command. In this mode, when an exception condition
is encountered the simulator stops running the 68000 program and
prints a message telling what sort of exception occurred.
To re-enable exception processing, use the "ex_on" command.
The simulator's default mode is "ex_off", with exception
processing disabled.
V.2 Description of Exception Conditions:
Exception processing can begin in several different ways.
Generally, there are three classes of exception conditions:
Group 0: Reset, Address error, Bus error.
Group 1: Trace, Interrupt, Illegal, Privilege violation.
Group 2: TRAP, TRAPV, CHK, and Divide by zero.
The following is some information on each of these exceptions as
they relate to the simulator:
-- Reset cannot occur in this simulator.
-- Address error occurs when an word or long word is written or read
from an odd word boundary. i.e. an odd memory address.
-- Bus error can occur in this simulator by attempting to read or
write outside of the virtual memory space. The virtual
memory for this simulator is from location 0 to location
0FFF (hex).
-- Trace is entered if on the completion of an instruction, the
trace bit of the status register is on.
-- Interrupt occurs when an external device interrupts the
processor's operation. Presently, this cannot occur on this
simulator.
-- Illegal exception occurs when an illegal instruction opcode is
executed. It also occurs when the ILLEGAL instruction is
executed.
-- Privilege violation occurs when a privileged instruction is
attempted and the supervisor bit in the status register is
not set.
10
-- TRAP exception occurs when a TRAP instruction is executed.
-- TRAPV exception occurs when a TRAPV instruction is executed.
-- CHK exception occurs when a CHK instruction is executed.
-- Divide by zero exception occurs when a DIVU or DIVS instruction
attempts a division by zero.
V.3 What Happens During Exception Processing:
Exception processing begins by creating the appropriate exception
stack frame for the particular exception group on the supervisor
stack. Then, the supervisor mode is turned on and trace mode is
turned off. After that, instruction execution resumes at the location
referenced by the appropriate exception vector. The exception vector
locations that can be used in this simulator are listed below:
Location (Hex) Assignment
008 Bus error
00C Address error
010 Illegal instruction
014 Divide by zero
018 CHK instruction
01C TRAPV instruction
020 Privilege violation
024 Trace
028 Line 1010 emulator
02C Line 1111 emulator
080 to 0BC TRAP instruction vectors
When the simulator starts up the supervisor bit is set on and the
supervisor stack pointer is set to the value F00 (hex). Note that the
stack grows downward, so the stack frame for any exceptions will grow
from F00 downward.
For complete information on exception processing, refer to the
68000 Programmer's Reference Manual, Section 4.