Ice x186
Ice x186
TRACE32 Directory
TRACE32 Index
Warning ................................................................................................................................. 6
Troubleshooting ................................................................................................................... 11
Hang-Up 11
Dual-Port Errors 12
FAQ ........................................................................................................................................ 13
Configuration ........................................................................................................................ 14
DIP-Switch Setting of 8086/8088/V20/V30 14
DIP-Switch Setting of 80186(EA)/80188(EA)/80C186(XL)/80C188(XL) 15
DIP-Switch Setting of 80186EB/80188EB/80186EC/80188EC, V40/V50 16
DIP-Switch Setting of 186EM/ES/ER/ED/188EM/ES/ER 17
DIP-Switch Setting of 186CC/CH/CU 18
Basics .................................................................................................................................... 19
Emulation Modes 19
Dual-Port Access 21
SYStem.Clock Clock generation 21
FPU ........................................................................................................................................ 51
I/O Connector for Coprocessor (8086/8087) 52
Segmentation ........................................................................................................................ 55
Compilers .............................................................................................................................. 76
Adapter .................................................................................................................................. 93
Version 06-Nov-2019
E::w.d.l
addr/line code label mnemonic comment
{
576 prime = i + i + 3;
P:0040:07A0 8BC6 mov ax,si
P:0040:07A2 D1E0 shl ax,1
P:0040:07A4 050300 add ax,3
P:0040:07A7 8946FE mov [bp-2],ax
577 k = i + prime;
P:0040:07AA 8BFE mov di,si
P:0040:07AC EB05 jmp 7B3
while ( k <= SIZE )
{
580 flags[ k ] = FALSE;
P:0040:07AE C685D80400 mov byte ptr [di+4D8],0
Cy _ AX 5 BX 12 SP >0040 E::w.v.l %m %r %t
P _ CX 5 DX 0BC -06 000B sieve()
Ac _ DS 2F3 SI 2 -04 0002 (auto int) prime = 5
Zr _ ES 2F3 DI 15 -02 0005 (auto int) count = 2
S _ SS 2F3 SP 4562 FP >457E (register int) i = 2
T _ BP 456A +02 076F (register int) k = 21
For general informations about the In-Circuit Debugger refer to the “ICE User’s Guide” (ice_user.pdf). All
general commands are described in “PowerView Command Reference” (ide_ref.pdf) and “General
Commands and Functions”.
NOTE: Do not connect or remove probe from target while target power is ON.
Before debugging can be started, the emulator must be configured by hardware and software:
Ready to run setup files for most standard compilers can be found on the software CD in the directory
…/Demo/I86/Compiler. All setup files are designed to run the emulator stand alone without target
hardware.
The following description should make the initial setup (to run the emulator together with the target
hardware) easier. It describes a typical setup with frequently used settings. It is recommended to use the
programming language PRACTICE to create a batch file, which includes all necessary setup commands.
PRACTICE files (*.cmm) can be created with the PRACTICE editor pedit (Command: PEDIT <file name>)
or with any other text editor.
9. Start application
The system window controls the CPU specific setup. Please check this window very carefully and set
the appropriate options. Use the ? button in the main tool bar and click to the option check box
(Command: HELP.PICK) to get online help in a pop up window.
Dualport allows access to emulation RAM, while emulation is running. This is necessary to display
variables, set breakpoints or display the flag listings while the emulation is running. System.access
selects how dualport access is done.
The mapper controls the memory access of the CPU. This means the use of internal or external
memory, the number of wait states, the bus width etc. Address ranges must be defined by using
memory classes.
The CPU can be clocked by internal (emulator) or external (target). If the internal clock is used, the
clock is provides by the VCO of the emulator. The setting of the internal clock is done by the VCO
command.
The current CPU frequency can be displayed in the counter window (Command: Count).
When the emulator is activated a monitor program is loaded into hidden emulator memory. After the
load and the falling edge of RESET the monitor program is started. This program allows access to
user memory (data.dump, data.list) and register and gives control to start and stop the emulation.
Application can be loaded by various file formats. OMF86 file is often used to load code and symbol
information. For information about the load command for your compiler see Compiler.
For correct data.list and data.dump after RESET it necessary to initialize chipselect units.
Stackpointer should be initialized by hand if debugging is started at RESET until it is initialized by the
program. Stack is used for the emulator break system.
There are several ways to set breakpoints (Command: Break.Set). Breakpoints can be displayed
using the Break.List command. Information regarding HLL lines (for HLL breakpoints) is loaded
automatically when a HLL file is loaded.
8. Start application
Application can be started with giving a break address. For example “go main” starts the application
and stops at symbol main.
go ; run application
Application can be breaked manually by using the Break command. If application executed a halt
instruction the command Break.HALT should be used to terminate the application.
It is recommended to check the following chapters for all questions regarding the correct setup:
• Configuration
• Troubleshooting
Hang-Up
If you are not able to stop the emulation, there could be some typically reasons:
Halt The program runs to HALT state. No cycles are generated by the
CPU and the trigger system can not work. Use Break.Halt to
generate a NMI interrupt and stop then the emulation.
No READY Signal If TIMOUT is not specified, the CPU cycle will not be completed,
when the READY signal is missing. You can verify this state by
checking the CYCLE signal with the counter function. If low, the
CPU is stopped in the middle of the cycle. On dual-port access an
error occurs and the emulator system changes to reset state.
Clock Error The clock lines between the target and the oscillator replacement
are very short. Therefore normally no problems should occur when
using an external crystal. Be sure that the capacitors on the target
have a value of 20 pF minimum and are connected with short routes
to the CPU socket. If the clock input signal is only used by the CPU,
the clock may be generated by the emulator system using the
EmulInt mode.
NMI Break system will not work if NMI input is active at the same time a
breakpoint or a trigger point is reached. Be sure that on emulation
NMI is not used by the target system. Otherwise switch off the NMI
line by eXeption.Enable NMI Off.
RESET and HOLD Reset and Hold signals from the target system stop emulation
immediately. If these signals are constantly active, memory dump
will be possible, but no emulation.
Analyzer Malfunction If you switch off the analyzer and the CPU has stopped operation
within a cycle, an invalid display will occur. Make a SYStem.Up
command to see the correct trace information.
1. The length of the CPU cycle is extended by wait cycles, so that the request timeout signal is
generated.
To solve problems with dualport error first increase the SYStem.TimeReq value. Be sure of that the
SYStem.TimeOut value is larger than the access time limit. If it is not possible to solve the problem by
changing the values, you must switch to DENIED mode. In this mode no access to memory is possible while
running realtime emulation. The internal dual-port access can increase the reaction time for external DMA
requests. The performance reduction by the dual-port access is typically 1% with some data windows (dual-
ported) on the screen and may be at max. 5% when using dynamic emulation memory.
Most emulators use some bytes of user stack for the break system. Therefore it
is necessary to have valid stack, if single step or breakpoints are used.
The configuration of different target CPU's is done by changing the probe or the CPU. The port analyzer is
an optional unit, which is plugged on the ICE186 board. The software is configured automatically.
The CPU type on the probes must be jumpered. Otherwise the message Configuration Error may appear.
Module 8086
++++++++++++++++++++++++
++++++++++++++++++++++++
++++++++++++++++++++++++
CPU type 1 2 3 4
8086 OFF ON - -
1234 8088 ON ON - -
V30 OFF OFF - -
V20 ON OFF - -
To select another CPU type, it is necessary to exchange the CPU on the module!
++++++++++++++++++++++++
++++++++++++++++++++++++
++++++++++++++++++++++++
CPU type 1 2 3 4
Adapter 80186
CPU type 1 2 3
To select another CPU type, it is necessary to exchange the CPU on the module!
++++++++++++++++++++++++
++++++++++++++++++++++++
++++++++++++++++++++++++
CPU type 1
80C186EB/EC,V50 OFF
1 80C188EB/EC,V40 ON
To select another CPU type, it is necessary to exchange the CPU on the module!
2
CPU type 1 2
Adapter 186EM/ES/ER/ED
Switch 1 2 3 4 7 8
To select another CPU type, it is necessary to exchange the CPU on the module and to set SYStem.CPU
correctly.
NOTE: When using 186ER/188ER, one 0R jumper must be closed on bottom side of
top pcb to guarantee 3.3V operation also in standalone mode.
SYStem.Option V33 must be set to on.
186EM(LV) open
186ES(LV) open
186ER 0R (closed)
186ED(LV)
open
188EM(LV) open
188ES(LV) open
Top PCB, bottom view (new pcb)
188ER 0R (closed)
DEN-/DS-function 1 0 x x x x x x
PIO30 function 0 1 x x x x x x
DT/R- function x x 1 0 x x x x
PIO29 function x x 0 1 x x x x
WR- function x x x x 1 0 x x
PIO15 function x x x x 0 1 x x
1 8 BHE- function x x x x x x 1 0
PIO34 function x x x x x x 0 1
SW1
1 8 Switch SW2 1 2 3 4 5 6 7 8
SW2
ALE function 1 0 x x x x x x
PIO33 function 0 1 x x x x x x
Emulation Modes
E::w.sys
system Mode Clock TimeReq Option
Down RESet VCO 1.000ms MAX
Up Analyzer Low TimeOut REFresh
Monitor Mid 50.000us RamWait
RESet ResetDown High BreakWin
ResetUp Line ONCE
cpu-type NoProbe Access HOLD Enhanced
I80C186 AloneInt Nodelay TestClock
AloneExt REFresh
EmulInt Request
BankMode EmulExt Denied
OFF
INTern BankFile
EXTern
The emulation head can stay in 6 modes. The modes are selected by the SYStem.Up or the SYStem.Mode
command.
<mode>: ResetDown
ResetUp
AloneInt
AloneExt
EmulInt
EmulExt
Reset Up Target has power, drivers are logically in inactive state, but not tristate.
Alone Internal Probe is running with internal clock, driver inactive. This mode is used for
'standalone' operation.
Emulation Probe is running with internal clock, strobes to target are generated.
Internal
Emulation Probe is running with external clock, strobes to target are activated.
External
In active mode, the power of the target is sensed and by switching down the target the emulator changes to
RESET mode. The probe is not supplied by the target. When running without target, the target voltage is
simulated by an internal pull-up resistor.
The probe uses an active buffered emulation technology. Emulation is possible in a target system with
hardware errors in the address or data bus. The basic module supports Intel, Siemens, AMD and NEC
CPUs.
<option>: Nodelay
REFresh
Request
Denied
Nodelay This method is used at lower speed up to 12 MHz. The gap between the CPU
cycles is used for memory access.
REFresh Only usable on 188/186 CPU in Enhanced Mode when generating refresh
cycles. Uses the refresh cycles for making the dual-port access.
Request To realize the dual-port access (emulation memory) at high frequencies the
HOLD-line (186) of the CPU is used. Dual-port accesses are only allowed while
no external request to the bus occurs and the CPU cycle is completed. If the
emulation CPU is in RESET state of the CPU the system controller will always
access the emulation memory. Not usable in 8086/8088/V20/V30 Max Mode.
Dualport allows access to emulation RAM, while emulation is running. This is necessary to display variables,
set breakpoints or display flag listings while the emulation is running. Dualport access is only possible for
emulator internal RAM.
<option>: VCO
High
Mid
Low
General Restrictions
Memory Setup All 186 type in-circuit emulators need memory in the stack area (SS:SP)
to break correctly. If you get an invalid IP and CS value after stopping the
program, the stack area may be outside the memory area. The break
system needs additionally 12 bytes on the top of the stack. To set
breakpoints on I/O cycles, there must be free memory for this area.
Therefore reserve 64 K of memory for the I/O/ area if possible.
Register Setup The TF (Trap Flag) register trace flag must not be set to 1.
Internal I/O The internal I/O should not be set to be memory mapped from location
Relocation 0..7fff.
Interrupt The NMI signal is used for stopping emulation. The “INT 3” instruction
Restrictions and the TrapFlag are used for single stepping and program breaks.
Therefore the interrupt vectors 1, 2 and 3 may not be used by the target
program when breakpoints are set or single stepping is done. However
the vector entries should be defined, as the first locations of the code,
addressed by these vectors, are fetched but not executed. If the vectors
are not defined, this fetch can cause unpredictable results by reading
memory or trigger by accessing wrong data areas.
Pending Interrupts When internal interrupts are pending and the emulation is started at a
program breakpoint, the interrupt routine will be executed once and the
program will stop at the same breakpoint again. A solution to this problem
can be to execute one step to skip over the breakpoint location. An other
solution is to disable or reset the timer while the emulation is stopped.
This can be done by an emulation monitor extension (SYStem.MonFile).
Pending Interrupts When executing an assembler step and internal interrupts are pending,
during Single Step the emulator will step into the interrupt program. This can be changed
either by preventing the interrupt, e.g. stop the timer while the emulation
is stopped (see “Pending Interrupts”) or by disabling the interrupt bit in
the CPU (command SETUP.IMASKASM). For HLL steps the problem can
be solved in the same ways (command SETUP.IMASKHLL) or by
temporarily removing the HLL breakpoint of the current line during the
step (SETUP.StepInt).
Accessing location A read access to location 0:4 in single step mode, or while a hardware
0:4 breakpoint is pending will cause an undefined behavior of the program.
All program breakpoints are hardware based. The operation is done by replacing the opcode with an INT3
instruction. For not breaking on every INT3 code in the target program break sequencing is only possible
during some cycles after the breakpoint cycle. In some cases it may be an advantage to switch off this
feature (for example when using INT3 as software breakpoints in relocating programs).
NOTE: If the Break Window is OFF, accesses to vector table stop the emulation.
This option selects the ONCE mode. The CPU soldered on the target system is switched off on target reset.
Emulator must be in SYS.M ResetDown when target reset line is going inactive. To use this option a special
clip-over adapter is needed.
One wait state for all memory cycles. Additional wait states will be generated if MAP.Wait is defined.
Normally refresh cycles are not used for trigger and trace functions. On default it is switched off.
If running in Enhanced Mode, the refresh function must be stopped when emulation breaks. Set REL option
must be set to the same value the user program write to the REL register.
The adjusted I/O base address can be read back with the functions IOBASE() and IOBASE.ADDRESS().
They return the offset or the complete address (offset and access mode) for the I/O area.
When MAP.SPLIT command is used to split program and data memory, SYStem.Option SPLIT ON forces
the emulator to use dualport on data.dump p: windows (also data.list). This means dumps to program
memory is only possible via dualport to emulator internal memory.
Missing clock signals force emulator system to generate a Target Clock Fail error and to set emulation
system to RESET. To use the Power-Down modes of the CPU the clock test logic must be blocked.
The emulator has logic to detect a power fail. This logic has to be adjusted for 3.3Volt CPUs (AM18xER,
186CC/CU/CH for example).
The following Special Settings and Restrictions are subdivided by CPU type.
To allow a correct emulator fpu support, 8087 must always be plugged on the pod. If 8087 coprocessor is
used (on 8086 pod) in stand alone mode, this option must be switched to ON. If 8087 coprocessor is used
(on 8086 pod) in external mode (together with a target), this option should be switched to OFF and some
additional lines connected. SYStem.Option MAX must be switched to ON.
8087 is connected internally (on the pod) with 8086. This means if standalone mode is used and
SYStem.Option FPU is ON, all necessary connections between 8086 and 8087 are routed on the emulator
pod. To give user more flexibility the following 8087 signals are located on a 10-pole connector on the
emulator pod:
9 7 5 3 1
10 8 6 4 2
1 CLK 2 GND
3 RQ/GT0- 4 GND
5 RQ/GT1- 6 GND
7 INT 8 GND
9 BUSY 10 GND
In standalone mode CLK is connected to emulator CPU clock. In external clock mode 8087 clock must
always be supplied on pin 1 of the connector! RQ/GT1- line of 8087 is always connected to the connector.
This means if pod is connected to a target, sys.o fpu must be switched off and the above listed signals
connected via the 10-pole connector to the target.
10-pole connector
8086/8088/V20/V30 CPUs may run in two modes. The modes differ in the pin function of some pins. Pin
MN/MX- (S/LG-) select minimum or maximum mode. This MIN/MAX selection should be done before
leaving the emulator reset state.
If 80187 coprocessor is used (on the target) this option must be switched to ON.
80186/80188 controls via the RD- line two different modes (MIN: standard, MAX: queue status). This
MIN/MAX selection should be done before leaving the emulator reset state.
Restrictions 80C186(XL)/80C188(XL)/80C186EA/80C188EA
RCU The refresh control unit of the 80C186 is disabled, when the emulation is
stopped. Refresh of external dynamic memory can be made by the
REFresh.StandBy command. The RCU control register should not be modified
when the emulation is stopped. The value displayed in memory windows will be
wrong.
If running in target systems the CPU is automatically started in Enhanced mode if the target system uses
this mode. In standalone mode this feature must be stimulated by the emulator system.
If 80187 coprocessor is used (on the target) this option must be switched to ON.
If 80187 coprocessor is used (on the target) this option must be switched to ON.
Peripheral Register CLKOUTA line must not be disabled by PDCON (offset: 0f0h), because
Setup CLKOUTA emulator needs this signal.
Peripheral Register LMCS (offset: 0a2h) controls waitstates and use of SRDY/ARDY pin for
Setup Chip Select LCS- output. For frequencies above 28 MHz. monitor program needs at
Unit least one wait state for correct working. LMCS must be programmed to
use either more than zero wait or external ARDY/SRDY.
Select used CPU type. Use 186EM for 188EM(LV)/186EM(LV). CPU type must be set before any other
system setting.
18xEM have shared A17-A19/PIO7-PIO9 pins. If pins should be used as address lines, the configuration
must be set by the SYStem.LINE ADDR command. Each set bit indicates that the address line should be
used.
18xEM have a shared SRDY/PIO6 pin. It is necessary to switch SYStem.Line SRDY to on, if function SRDY
is used. If PIO6 is used, SYStem.Line SRDY must be switched off.
Peripheral Register The watchdog timer at the 18xES/186ED is disabled from monitor
Setup Watchdog program via WDTCON (offset: 0e6h).
Peripheral Register CLKOUTA line must not be disabled by PDCON (offset: 0f0h), because
Setup CLKOUTA emulator needs this signal.
Peripheral Register LMCS (offset: 0a2h) controls waitstates and use of SRDY/ARDY pin for
Setup Chip Select LCS- output. For frequencies above 28 MHz. monitor program needs at
Unit least one wait state for correct working. LMCS must be programmed to
use either more than zero wait or external ARDY/SRDY.
Peripheral Register The bus width of LMCS (offset: 0a2h) must be set to 16bit. This is done in
Setup Chip Select AUXCON register (offset: 0f2h). The reason for this restriction is the
Unit and AUXCON internal running monitor program of the emulator, which must run under
bus width Control 16bit bus width.
Select used CPU type. Use 186ES for 188ES(LV)/186ES(LV) or 186ED for 186ED(LV). CPU type must be
set before any other system setting.
18xES/186ED have shared A17-A19/PIO7-PIO9 pins. If pins should be used as address lines, the
configuration must be set by the SYStem.LINE ADDR command. Each set bit indicates that the address
line should be used.
18xES/186ED have a shared SRDY/PIO6 pin. It is necessary to switch SYStem.Line SRDY to on, if function
SRDY is used. If PIO6 is used, SYStem.Line SRDY must be switched off.
Mapping
18x/186ED have a chip select dependent bus width control. This control is implemented in AUXCON
register (Offset: F2h). If any of the chip select units is used in 8bit mode, MAP.BUS8 must be set for the
corresponding range. 16bit bus width is the default selection
NOTE: The bus width of LMCS (offset: 0a2h) must be set to 16bit. This is done in
AUXCON register (offset: 0f2h). The reason for this restriction is the internal
running monitor program of the emulator, which must run under 16bit bus width.
Restrictions 186ER/188ER
Peripheral Register CLKOUTA line must not be disabled by PDCON (offset: 0f0h), because
Setup CLKOUTA emulator needs this signal.
Peripheral Register LMCS (offset: 0a2h) controls waitstates and use of SRDY/ARDY pin for
Setup Chip Select LCS- output. For frequencies above 28 MHz. monitor program needs at
Unit least one wait state for correct working. LMCS must be programmed to
use either more than zero wait or external ARDY/SRDY.
Internal RAM The 18xER internal RAM must not be used at base address 0 (lowest
(Onchip) 32 KByte). All other addresses are allowed. See also
SYStem.Option IMDIS and SYStem.Option SREN.
Select used CPU type. Use 186ER for 188ER or 186ER. CPU type must be set before any other system
setting.
18xER has shared A17-A19/PIO7-PIO9 pins. If pins should be used as address lines, the configuration must
be set by the SYStem.LINE ADDR command. Each set bit indicates that the address line should be used.
18xER has a shared SRDY/PIO6 pin. It is necessary to switch SYStem.Line SRDY to on, if function SRDY is
used. If PIO6 is used, SYStem.Line SRDY must be switched off.
Use this option to select clocking mode. CPU input clock is multiplied by four (default), multiplied by one or
divided by two. If divide by two mode is selected, the PLL is disabled.
Use this option to disable the 18xER onchip RAM (32 kByte). When this option is switched to ON, onchip
memory is always hidden, also if IMCS register bit 9 (internal RAM enable) is set. If option is switched to
OFF, onchip memory is available if IMCS register bit 9 is set. Onchip memory can be used, but not at base
address 0 (lowest 32 kByte). For analyzer trace to onchip memory see under SYStem.Option SREN.
Use this option to show read data on the 18xER onchip RAM accesses. Note that if a byte read is being
shown, the unused byte will also be driven on the AD15-AD0 bus.
When this option is switched to ON, read data on onchip memory accesses are always visible, also if IMCS
register bit 10 (show read) is reset. If option is switched to OFF, read data on onchip memory accesses are
available, if IMCS register bit 10 is set. Onchip memory can be used, but not at base address 0 (lowest 32
kByte).
Restrictions 186CC/CU/CH
Peripheral Register BHE-/PIO34 must be programmed as BHE- signal. ADEN- is held low
Setup BHE- on power-on reset by the emulator. Therefore the AD bus drives both
/PIO34/ADEN- addresses and data, regardless of how software configures the DA bit
setting.
Peripheral Register The watchdog timer is disabled from monitor program via WDTCON
Setup Watchdog (offset: 3e0h).
Peripheral Register CLKOUTA line must not be disabled by SYSCON (offset: 3f0h),
Setup CLKOUTA because emulator needs this signal.
Peripheral Register LMCS (offset: 3a2h) controls waitstates and use of SRDY/ARDY pin
Setup Chip Select for LCS- output. For frequencies above 28 MHz. monitor program
Unit needs at least one wait state for correct working. LMCS must be
programmed to use either more than zero wait or external ARDY/SRDY.
If DRAM is used for LCS (LDEN=1) ARDY/SRDY pin is ignored.
Therefore one internal wait should be programmed in the LMCS
register.
Peripheral Register The bus width of LMCS (offset: 3a2h) must be set to 16bit. The reason
Setup Chip Select for this restriction is the internal running monitor program of the
Unit and AUXCON emulator, which must run under 16bit bus width.
Bus width Control
186CC/CU/CH has a shared SRDY/PIO35 pin. It is necessary to switch SYStem.Line SRDY to ON, if
function SRDY is used. If PIO35 is used, SYStem.Line SRDY must be switched OFF. In this mode a
10kOhm pull-down resistor is active. A 100kOhm pull-down resistor is always active.
186CC/CU/CH has a shared ARDY/PIO8 pin. It is necessary to switch SYStem.Line ARDY to ON, if function
ARDY is used. If PIO8 is used, SYStem.Line ARDY must be switched OFF. In this mode a 10kOhm pull-
down resistor is active. A 100kOhm pull-down resistor is always active.
Use this option to select clocking mode. CPU Input clock is multiplied by two (default), by four or by one or
used without PLL (bypass). The data sheet should be checked for the allowed frequency ranges.
Restrictions V40/V50
Waitstates For memory accesses, not more than 7 waitstates should be used. Using more
waitstates inhibits emulator to break correctly.
E::w.x
exception Activate Enable Trigger Puls Puls
OFF OFF OFF OFF OFF Single
ON RESIN ON ON RESIN Width
RESet HOLD RESIN RESIN INT0 1.000us
HOLD RESET HOLD PERiod
NMI HOLD NMI 0.000
INT0 HLDA EINT0+
INT1 PULS EINT0- Vector
INT2 VINT0+ 00 (000.)
INT3 VINT0-
TMRIN0
TMRIN1
DRQ0
DRQ1
The exception control system depends on the processor used. The window shown here is for the
80(C)186/XL/EA. The exception control system can only control external interrupt sources (see also
General Restrictions)
Format: eXception.Enable ON
22k
RES- >
X.Enable- >=1 X.Activate- & > RES- (CPU)
Run- X.Puls-
Sys.Reset
22k
RESET >
X.Enable & X.Activate >=1 > RESET (CPU)
Run X.Puls
SYS.RESO
NMI
+1 > Trace
GND
22k
NMI >
X.Enable & X.Activate >=1 > NMI (CPU)
Run X.Puls
Break
22k
HOLD >
X.Enable & X.Activate >=1 > HOLD (CPU)
Run X.Puls
Dualport
DMA Modes
External DMA circuits request the bus by the HOLD signal. If realtime emulation is stopped external and
internal DMA circuits will not get access to the bus. They are requesting the bus, but no HLDA signal is
generated. If external DMA should be enabled at every time, the HOLD line will always have to be enabled.
Internal DMA functions are simultaneously stopped when emulation stop (Break by NMI).
While emulation is stopped, the DMA function will be interrupted for about 10 cycles if the CPU executes
internal monitor functions. This may force malfunction, if the DMA needs very fast memory access response
times.
This option allows DMA access without running realtime emulation. If external DMA should be enabled at
every time, the HOLD line must always be enabled (SYStem.Line HOLD ON). External DMA circuits are not
stopped on breakpoints.
As interrupt signals or timer signals are bidirectional, the control is done by analog switches.
+1 > Trace
22k 22k
Interrupt stimulation is only possible in Stand-Alone mode or if no external interrupt controller is used. The
simulation circuit supports level and edge triggered interrupts with and without external vector support.
+1 > Trace
GND
22k
INTx >
X.Enable INTx & >=1 > INTx (CPU)
X.Puls
<option>: INT0
EINT0+
EINT0-
VINT0+
VINT0-
The possible interrupt line depend on the CPU used. The following description is for the 80186/XL/EA
processors. The functionality is the same for other processors.
This is the simulation for vectored interrupts in cascaded mode. The simulation circuit sets INT0 to high until
2 interrupt acknowledge cycles are executed. The vector is supplied on the second IACK cycle. The pulse
width should be at minimum 2 CPU cycles.
E::w.x
Exception setup Trigger Puls Puls
OFF OFF Single
ON RESIN Width
RESIN INT0 10.000us
RESET HOLD PERiod
HOLD NMI 0.000
HLDA EINT0+
PULS EINT0- Vector
VINT0+ 33 (051.)
VINT0-
EINT0- The pulse generator is directly connected to the interrupt pin. A high to low
pulse is generated. No interrupt vector is supplied by the simulation logic (Fully
nested mode).
VINT0+ The pulse generator is directly connected to the interrupt pin. A low to high
pulse is generated. All IACK cycles are supplied with the interrupt vector
defined by the eXception.Vector field.
VINT0- The pulse generator is directly connected to the interrupt pin. A high to low
pulse is generated. All IACK cycles are supplied with the interrupt vector
defined by the eXception.Vector field.
<vector>: 0. … 255.
Every trap can be used as a separate trigger point. Trap trigger is detected by accessing the vector table!
The probe supports refresh operation in realtime emulation, but the refresh function is stopped when
emulation stops and starts again on realtime emulation. The CDRAM register value must be 40H (80H
C188) at minimum! When emulation is stopped, the REFresh system of the emulator has to generate valid
refresh cycles for the target system. Refresh doesn't work together with the Request access mode. Use
Denied or Nodelay access mode in this case.
FPU
Format: FPU.ON
Format: FPU.OFF
Format: FPU.RESet
Format: FPU.view
view Display window. The display is only updated, if the FPU is in idle state
FPU commands
E::w.fpu
IM I IE _ C0 _ CW 037F ST(0) 1.2 3FFF.999999999999
DM D DE _ C1 _ SW 3000 ST(1) 3.4 4000.D99999999999
ZM Z ZE _ C2 _ TW 0FFF ST(2) NAN FFFF.C00000000000
OM O OE _ C3 _ TOP 6 ST(3) NAN FFFF.C00000000000
UM U UE _ B _ ST(4) NAN FFFF.C00000000000
PM P PE _ OPC 0106 ST(5) NAN FFFF.C00000000000
PC S SF _ IP 00000B00 ST(6) NAN FFFF.C00000000000
RC C ES _ OP 00010280 ST(7) NAN FFFF.C00000000000
9 7 5 3 1
10 8 6 4 2
1 CLK 2 GND
3 RQ/GT0- 4 GND
5 RQ/GT1- 6 GND
7 INT 8 GND
9 BUSY 10 GND
Signals connected through 8087 on the 8086 emulator pod. For a description look under SYStem.Option
FPU.
D Data
P Program
IO IO
ED Dualport Data
EP Dualport Program
A Absolute
AD Absolute Data
AP Absolute Program
AC Absolute CPU
EA Absolute Dualport
IO:, AIO:, EIO:, The I/O addressing is always absolute. The IO-Range is 64K. Upper
EAIO: address bits are cut.
d.s IO:0x100 0x33 0x44 ; write 33H to port 100H and 44H to 101H
A:, EA: Absolute addressing. The address parameter specifies the physically
address.
The MMU setup is normally done by loading a program. The section-table of the object-file (segments,
groups) is used to define the valid physical areas for the translation of physical addresses to logical
addresses. For more detailed information see command MMU.
Segment Description
Segment and offset are separated by a colon. If no segment is defined, the emulator will use the CS:
segment for program related commands and the DS: segment for data related commands. The D: access
class will force the usage of the DS: segment and the P: access class will force usage of the CS: segment.
Banking as described in this chapter refers to address extension of 80x86 processors, not the internal
segmentation of the 80x86 family. In banked systems the upper address lines are supplied by the external
bank probe. Four additional lines offer 16 different memory banks. Accessing the different pages is done by
adding an extra bank component to all logical addresses and extending all physical memory addresses to
24 bit. The physical address bits A20 to A23 select the memory bank. Every command which makes a
memory access first calls a special bank driver subroutine to select the temporary memory bank. On
realtime emulation the bank number is traced on the upper four bits of the address bus. On a breakpoint the
upper four bit of the address bus are stored to the bank number of the PP register (Program Pointer).
This command loads the bank driver. The bank driver is a special subroutine to select the actual bank.
Loading a special bank driver gives a maximum of flexibility to the user. A bank address delivered by the
emulator may be used to set microcontroller ports or external MMUs in the target system. The bank file
consists of a code number defining the bank operation mode and a code area which consists of a subroutine
to set the correct bank state. The internal bank number is placed in register AL when calling the subroutine.
The reason for the call is placed in AH. It can be initialization (0), read (1), write (2), or start execution (3).
Writes to internal CPU ports may be executed directly, while ports in target systems must be accessed by a
special system call (see end of this chapter). The internal bank address is placed in accu A when calling the
subroutine. The PP (Program Pointer) register hold the logical 24-bit PC address. The translation between
logical bank and physical bank (also for the common areas and I/O space) is done by the MMU command.
<option>: OFF
EXTernal
On the 80x86 banking can only be done in external mode. External banked systems use a register or output
pins of the CPU to generate the upper memory addresses. These lines must be feedback to the emulator
with the bank probe (lines 0 to 3). Unused inputs of the bank probe must be grounded (or jumpered to
ground pin).
This example selects the bank by writing the left shifted bank to io:204:
shl al,1
mov dx,204H ; set DX to io register
call 0d30H ; subroutine to write byte to i/o
; DX is address, AL is data
ret ; return
The following routines are available in the emulation control monitor to access external memory or i/o:
A monitor extension is a piece of code that’s extending the emulation control monitor. The emulation monitor
is responsible for starting and stopping the target program and accessing memory and registers when the
target program is stopped. This monitor is running in a hidden memory inside the ECU unit. Extensions must
be made available in a binary program. This program must be loaded before activating the emulation by the
following command:
Start Target This part is executed before the target program is started. It can enable timers
in the target or reset watchdogs.
Stop Target This part is executed after the emulation in the target has stopped. It can
disable timers or external watchdogs.
Read Memory User specific memory read. Allows access to special memories, e.g. serial
connected EEPROMs. The access is made by the USR: memory class.
Write Memory User specific memory write. Allows write access to special memories, e.g.
programming EEPROM or FLASH memories. The access is made by the USR:
memory access class.
For more details about the definition of the monitor extension and parameter passing see the example file
'./demo/i86/etc/monext.asm'.
When the bus size of the processor is changed, an existing analyzer recording, sampled with a different bus
size, will be displayed wrong.
For not CPU-specific keywords, see non-declarable input variables in “ICE/FIRE Analyzer Trigger Unit
Programming Guide” (analyzer_prog.pdf).
General Keywords
8086/8088/V20/V30MAX Keywords
8086/8088/V20/V30MIN Keywords
80(C)186(XL)/80(C)188(XL)/EA/EB/EC/EM/ES/ER/ED/CC Keywords
V40/V50MIN Keywords
Dequeueing
The disassembled lines in the analyzer are displayed prior to the resulting data cycles. This dequeueing fails
for commands which have not a constant number of data cycles. Long data sequences during REP SCAS
or REP MOVS can cause missing mnemonics in the disassembly.
18xEM/ER 18xES/ED
0 TMRIN1/PIO0 TMRIN1/PIO0
1 TMROUT1/PIO1 TMROUT1/PIO1
2 PCS6/A2/PIO2 PCS6/A2/PIO2
3 PCS5/A1/PIO3 PCS5/A1/PIO3
4 DTR/PIO4 DTR/PIO4
5 DEN/PIO5 DEN/DS/PIO5
6 SRDY/PIO6 SRDY/PIO6
7 A17/PIO7 A17/PIO7
8 A18/PIO8 A18/PIO8
9 A19/PIO9 A19/PIO9
10 TMROUT0/PIO10 TMROUT0/PIO10
11 TMRIN0/PIO11 TMRIN0/PIO11
12 DRQ0/PIO12 DRQ0/INT5/PIO12
13 DRQ1/PIO13 DRQ1/INT6/PIO13
14 MCS0/PIO14 MCS0/PIO14
15 MCS1/PIO15 MCS1/PIO15
16 PCS0/PIO16 PCS0/PIO16
24 MCS2/PIO24 MCS2/PIO24
25 MCS3/RFSH/PIO25 MCS3/RFSH/PIO25
26 UZI/PLLBYPS/PIO26 UZI/PLLBYPS/PIO26
27 TXD/PIO27 TXD1/PIO27
28 RXD/PIO28 RXD1/PIO28
29 S6/CLKDIV2/PIO29 S6/LOCK/CLKDIV2/PIO29
30 INT4/PIO30 INT4/PIO30
31 INT2/INTA0/PIO31 INT2/INTA0/PWD/PIO31
25 23 21 19 17 15 13 11 9 7 5 3 1
26 24 22 20 18 16 14 12 10 8 6 4 2
1 A0 17 C0
2 A1 18 C1
3 A2 19 C2
4 A3 20 C3
5 A4 21 C4
6 A5 22 C5
7 A6 23 C6
8 A7 24 C7
9 B0 25 GND
10 B1 26 GND
11 B2
12 B3
13 B4
14 B5
15 B6
16 B7
15 13 11 9 7 5 3 1
16 14 12 10 8 6 4 2
1 A0 9 B0
2 A1 10 B1
3 A2 11 B2
4 A3 12 B3
5 A4 13 GND
6 A5 14 GND
7 A6 15 GND
8 A7 16 GND
9 7 5 3 1
10 8 6 4 2
1 A0 9 GND
2 A1 10 GND
3 A2
4 A3
5 A4
6 A5
7 A6
8 A7
The emulation probe is designed for running with CPU's up to 40 MHz. However the max. speed is limited by
the CPU chip used in the emulator. TRACE32 modules are delivered with the fastest CPU available. The
following values of emulation frequencies refer to the 'standalone' mode (memory is mapped internal).
Module Overview
This list contains information on probes available for other voltage ranges. Probes not noted here supply an
operation voltage range of 4.5 … 5.5 V.
Dimension
LA-7077 M-80186CC/CU/CH
LA-6671 M-80C186XL
LA-7070 M-80C188XL
LA-7071 M-80C186EA
LA-7072 M-80C188EA
cable (350)
66
80186/80188/XL/EA
37
13
9
24
92
105
SIDE VIEW
PLCC 68
74
1
22
14
LA-6672 M-80C186EB
LA-6697 M-80C186EB-3.3V
LA-7075 M-80C188EB
LA-6698 M-80C188EB-3.3V
cable (350)
74
80186EB/80188EB
37
13
9
24
99
112
SIDE VIEW
PLCC 84
74
1
19
16
LA-6678 M-80C186EC
LA-7076 M-80C188EC
cable (350)
79
80186EC/80188EC
37
13
105
117
SIDE VIEW
Female Connectors
for
77
ET-adapter
12
10
LA-6696 M-80186EM
LA-7090 M-80188EM
LA-7091 M-80186ES
LA-7092 M-80188ES
LA-7093 M-80186ER
LA-7094 M-80188ER
LA-7099 M-80186ED
cable (400)
78
37
13
104
117
SIDE VIEW
A
1
B
A B A B
78
1
B
14 A
8
19
22
LA-6673 M-V40
LA-7095 M-V50
cable (350)
74
V40/V50
37
13
100
112
SIDE VIEW
PLCC 68
74
1
22
14
LA-6677 M-8086
LA-7096 M-8088
LA-7097 M-V20
LA-7098 M-V30
cable (350)
74
8086/88/V20/V30
37
13
10 8087
99
113
SIDE VIEW
target 8087
74
12
14
LA-6695 M-196EN
cable (400)
86
37
13
111
125
SIDE VIEW
78
13
13
TOP VIEW (all dimensions in mm)
LA-6674 M-196KB
LA-7080 M-196KD
LA-7081 M-196KC
LA-7082 M-194
LA-7083 M-198
cable (350)
65
37
13
9
26
92
105
SIDE VIEW
PLCC 68
74
1
36
PLCC 52
8
13
No adapters necessary !