179
18.5 16-bit Load and Store 20-bit Address
Instruction
clk
A
I S Z V C
Operation
LDP (HL),HL
12
- - - -
(HL) = L; (HL+1) = H.
(Adr[19:16] = A[3:0])
LDP (IX),HL
12
- - - -
(IX) = L; (IX+1) = H.
(Adr[19:16] = A[3:0])
LDP (IY),HL
12
- - - -
(IY) = L; (IY+1) = H.
(Adr[19:16] = A[3:0])
LDP HL,(HL)
10
- - - -
L = (HL); H = (HL+1).
(Adr[19:16] = A[3:0])
LDP HL,(IX)
10
- - - -
L = (IX); H = (IX+1).
(Adr[19:16] = A[3:0])
LDP HL,(IY)
10
- - - -
L = (IY); H = (IY+1).
(Adr[19:16] = A[3:0])
LDP (mn),HL
15
- - - -
(mn) = L; (mn+1) = H.
(Adr[19:16] = A[3:0])
LDP (mn),IX
15
- - - -
(mn) = IXL; (mn+1) = IXH.
(Adr[19:16] = A[3:0])
LDP (mn),IY
15
- - - -
(mn) = IYL; (mn+1) = IYH.
(Adr[19:16] = A[3:0])
LDP HL,(mn)
13
- - - -
L = (mn); H = (mn+1).
(Adr[19:16] = A[3:0])
LDP IX,(mn)
13
- - - -
IXL = (mn); IXH = (mn+1).
(Adr[19:16] = A[3:0])
LDP IY,(mn)
13
- - - -
IYL = (mn); IYH = (mn+1).
(Adr[19:16] = A[3:0])
Note that the LDP instructions wrap around on a 64K page boundary. Since the LDP instruc-
tion operates on two-byte values, the second byte will wrap around and be written at the
start of the page if you try to read or write across a page boundary. Thus, if you fetch or
store at address 0xn,0xFFFF, you will get the bytes located at 0xn,0xFFFF and
0xn,0x0000 instead of 0xn,0xFFFFand 0x(n+1),0x0000 as you might expect. Therefore,
do not use LDP at any physical address ending in 0xFFFF.
18.6 Register to Register Moves
Instruction
clk
A
I S Z V C
Operation
LD r,g
2
r
- - - -
r = g; r,g any of B,
C, D, E, H, L, A
LD A,EIR
4
fr
* * - -
A = EIR
LD A,IIR
4
fr
* * - -
A = IIR
LD A,XPC
4
r
- - - -
A = MMU
LD EIR,A
4
- - - -
EIR = A
LD IIR,A
4
- - - -
IIR = A
LD XPC,A
4
- - - -
XPC = A
LD HL,IX
4
r
- - - -
HL = IX
LD HL,IY
4
r
- - - -
HL = IY
LD IX,HL
4
- - - -
IX = HL
LD IY,HL
4
- - - -
IY = HL
LD SP,HL
2
- - - -
SP = HL
LD SP,IX
4
- - - -
SP = IX
LD SP,IY
4
- - - -
SP = IY
LD dd',BC
4
- - - -
dd' = BC (dd': 00-BC',
01-DE', 10-HL')
LD dd',DE
4
- - - -
dd' = DE (dd': 00-BC',
01-DE', 10-HL')