Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>eZ80</strong> <strong>CPU</strong><br />
User Manual<br />
12<br />
Mixed-ADL Applications<br />
Applications that include legacy routines/functions/tasks/modules that run in<br />
non-ADL mode and new routines/functions/tasks/modules that run in ADL<br />
mode, must follow certain rules to ensure proper operation:<br />
• Include a STMIX instruction in device initialization to ensure that interrupt<br />
service routines begin in a consistent mode (ADL mode).<br />
• End all interrupt service routines with a prefixed RET or RETI instruction,<br />
which pops the interrupted code's ADL state from the SPL stack.<br />
• CALL or JP to each routine/function/task/module in the mode in which it<br />
was assembled or compiled.<br />
• Any routine that may be called from either mode must be called with a prefix<br />
to save the caller's ADL mode on the SPL stack.<br />
• Any routine that may be called from either mode must return with a prefixed<br />
RET instruction to restore the caller's ADL state from the SPL stack.<br />
• If a calling code operating in one mode must pass stack-based operands/<br />
arguments to a routine compiled or assembled for a different mode, it must<br />
use prefixed instructions to set up the operands/arguments. For PUSH, .S<br />
and .L prefixes control whether SPS or SPL is used and whether the<br />
operands/ arguments are stored as 2- or 3-byte values.<br />
Note: In mixed-ADL applications, some of the rules above may represent exceptions to the <strong>eZ80</strong>'s design<br />
goal that legacy code not have to be modified to be run on the <strong>eZ80</strong>. Assuming that legacy routines<br />
are not selectively converted to ADL mode and that legacy routines don't call newly written routines,<br />
the only rule that would lead to such modification would be the fifth rule above. If each legacy routine<br />
ends with a single RET at its end, this conversion is easy. Internal and conditional RETs require more<br />
careful review -- a program to highlight RETs may be helpful.<br />
Prefix Bytes: Exceptions to ADL Mode<br />
In the ZiLOG ZMASM / ZDS assembler, code is assembled for a given state of<br />
the ADL mode bit by preceding it with a pseudo-op:<br />
.assume adl=1 ; or adl=0<br />
You are, of course, responsible for ensuring that this source file setting matches<br />
the state of the hardware ADL mode bit when the code is executed.<br />
The ADL mode and assumed setting govern several different aspects of<br />
instruction and <strong>eZ80</strong> operation, as described in preceding sections. Two<br />
different kinds of exceptions to normal operation can be selected for a particular<br />
instruction by adding a suffix to the instruction’s Op Code.<br />
UM007701-1100