Difference between revisions of "Z80 wait instructions"

From MSX Game Library

Line 8: Line 8:
 
|-
 
|-
 
| <tt>NOP<br/>NOP</tt>            || 10 || 2 || None
 
| <tt>NOP<br/>NOP</tt>            || 10 || 2 || None
|- style="background-color:lightgray;"
+
|-
| <tt>LD R,A</tt>                 || 11 || 2 || C is preserved, H and N are reset, and alters Z and S. P/V is set if interrupts are enabled, reset otherwise.
+
| <tt>SCF<br/>RET NC</tt>         || 11 || 2 || Carry flag set, H and N cleared, rest are preserved.
 
|-
 
|-
 
| <tt>JR $+2</tt>                || 13 || 2 || None
 
| <tt>JR $+2</tt>                || 13 || 2 || None
Line 18: Line 18:
 
|-
 
|-
 
| <tt>CP (HL)<BR/>CP (HL)</tt>    || 16 || 2 || C, S, and Z flags modified by definition. P/V detects overflow.
 
| <tt>CP (HL)<BR/>CP (HL)</tt>    || 16 || 2 || C, S, and Z flags modified by definition. P/V detects overflow.
 +
|-
 +
| <tt>SCF<br/>RET NC<br/>RET NC</tt> || 17 || 3 || Carry flag set, H and N cleared, rest are preserved.
 
|-
 
|-
 
| <tt>NOP<br/>NOP<br/>CP (HL)</tt>|| 18 || 3 || C, S, and Z flags modified by definition. P/V detects overflow.
 
| <tt>NOP<br/>NOP<br/>CP (HL)</tt>|| 18 || 3 || C, S, and Z flags modified by definition. P/V detects overflow.

Revision as of 12:43, 3 March 2024

Z80 instruction set that don't change registers value (except for F and R registers):

Inst. T-S Bytes Flag modification
NOP 5 1 None
CP (HL) 8 1 C, S, and Z flags modified by definition. P/V detects overflow.
NOP
NOP
10 2 None
SCF
RET NC
11 2 Carry flag set, H and N cleared, rest are preserved.
JR $+2 13 2 None
INC HL
DEC HL
14 2 None
NOP
NOP
NOP
15 3 None
CP (HL)
CP (HL)
16 2 C, S, and Z flags modified by definition. P/V detects overflow.
SCF
RET NC
RET NC
17 3 Carry flag set, H and N cleared, rest are preserved.
NOP
NOP
CP (HL)
18 3 C, S, and Z flags modified by definition. P/V detects overflow.
NOP
BIT 0,(HL)
19 3 Opposite of the bit #0 is written into the Z flag. C is preserved, N is reset, H is set, and S and P/V are undefined.
NOP
NOP
NOP
NOP
20 4 None
CP (IY+0) 21 3 C, S, and Z flags modified by definition. P/V detects overflow.
CP (HL)
BIT 0,(HL)
22 3 C, S, and Z flags modified by definition. P/V detects overflow.
Opposite of the bit #0 is written into the Z flag. C is preserved, N is reset, H is set, and S and P/V are undefined.
PUSH AF
POP AF
23 2 None
CP (HL)
CP (HL)
CP (HL)
24 3 C, S, and Z flags modified by definition. P/V detects overflow.
INC (HL)
DEC (HL)
24 2 Preserves C flag, N flag is reset, P/V detects overflow and rest are modified by definition.
C flag preserved, P/V detects overflow and rest modified by definition.
⚠️ Not interrupt safe
NOP
NOP
NOP
NOP
NOP
25 5 None
NOP
CP (IY+0)
26 4 C, S, and Z flags modified by definition. P/V detects overflow.
NOP
CP (HL)
BIT 0,(HL)
27 4 C, S, and Z flags modified by definition. P/V detects overflow.
Opposite of the bit #0 is written into the Z flag. C is preserved, N is reset, H is set, and S and P/V are undefined.
NOP
PUSH AF
POP AF
28 3 None
CP (IY+0)
CP (HL)
29 4 C, S, and Z flags modified by definition. P/V detects overflow.
NOP
INC (HL)
DEC (HL)
29 3 Preserves C flag, N flag is reset, P/V detects overflow and rest are modified by definition.
C flag preserved, P/V detects overflow and rest modified by definition.
⚠️ Not interrupt safe
BIT 0,(HL)
CP (HL)
CP (HL)
30 4 Opposite of the bit #0 is written into the Z flag. C is preserved, N is reset, H is set, and S and P/V are undefined.
C, S, and Z flags modified by definition. P/V detects overflow.