fpc/compiler/z80/z80ins.dat
nickysn c5d04d1a54 + Z80: added the JRJP pseudo instruction
git-svn-id: trunk@45496 -
2020-05-25 15:53:51 +00:00

399 lines
8.8 KiB
Plaintext

; legend:
; r - 8-bit register: A/B/C/D/E/H/L
; r' - 8-bit register: A/B/C/D/E/H/L
; b - 3-bit immediate value (bit number: [0..7])
; n - 8-bit immediate value
; p - immediate value in [$00,$08,$10,$18,$20,$28,$30,$38]
; e - 8-bit relative jump offset
; nn - 16-bit immediate value
; 0 - the immediate value 0
; 1 - the immediate value 1
; 2 - the immediate value 2
; cc - condition: NZ/Z/NC/C/PO/PE/P/M
; C - condition C
; NC - condition NC
; Z - condition Z
; NZ - condition NZ
; dd - 16-bit register pair: BC/DE/HL/SP
; qq - 16-bit register pair: BC/DE/HL/AF
; pp - 16-bit register pair: BC/DE/IX/SP
; rr - 16-bit register pair: BC/DE/IY/SP
; A - register A
; I - register I
; R - register R
; IX - register IX
; IY - register IY
; SP - register SP
; DE - 16-bit register pair DE
; HL - 16-bit register pair HL
; AF - 16-bit register pair AF
; AF' - alternate register set, 16-bit register pair AF'
; (C) - implied parameter of the IN and OUT instructions
; (n) - 8-bit immediate port number for the IN and OUT instructions
; (nn) - memory contents at address (nn = 16-bit immediate address)
; (BC) - memory contents at address in register BC
; (DE) - memory contents at address in register DE
; (HL) - memory contents at address in register HL
; (SP) - memory contents at address in register SP
; (IX) - memory contents at address in register IX
; (IY) - memory contents at address in register IY
; (IX+d) - memory contents at address in register IX+d, d is in [-128..127]
; (IY+d) - memory contents at address in register IY+d, d is in [-128..127]
[None]
void void
[ADC]
A,r %10001rrr
A,n $CE,n
A,(HL) $8E
A,(IX+d) $DD,$8E,d
A,(IY+d) $FD,$8E,d
HL,dd $ED,%01dd1010
[ADD]
A,r %10000rrr
A,n $C6,n
A,(HL) $86
A,(IX+d) $DD,$86,d
A,(IY+d) $FD,$86,d
HL,dd %00dd1001
IX,pp $DD,%00pp1001
IY,rr $FD,%00rr1001
[AND]
A,r %10100rrr
A,n $E6,n
A,(HL) $A6
A,(IX+d) $DD,$A6,d
A,(IY+d) $FD,$A6,d
[BIT]
b,r $CB,%01bbbrrr
b,(HL) $CB,%01bbb110
b,(IX+d) $DD,$CB,d,%01bbb110
b,(IY+d) $FD,$CB,d,%01bbb110
[CALL]
nn $CD,nn
cc,nn %11ccc100,nn
[CCF]
void $3F
[CP]
A,r %10111rrr
A,n $FE,n
A,(HL) $BE
A,(IX+d) $DD,$BE,d
A,(IY+d) $FD,$BE,d
[CPD]
void $ED,$A9
[CPDR]
void $ED,$B9
[CPI]
void $ED,$A1
[CPIR]
void $ED,$B1
[CPL]
void $2F
[DAA]
void $27
[DEC]
r %00rrr101
(HL) $35
(IX+d) $DD,$35,d
(IY+d) $FD,$35,d
dd %00dd1011
IX $DD,$2B
IY $FD,$2B
[DI]
void $F3
[DJNZ]
e $10,e
[EI]
void $FB
[EX]
DE,HL $EB
AF,AF' $08
(SP),HL $E3
(SP),IX $DD,$E3
(SP),IY $FD,$E3
[EXX]
void $D9
[HALT]
void $76
[IM]
0 $ED,$46
1 $ED,$56
2 $ED,$5E
[IN]
A,(n) $DB,n
r,(C) $ED,%01rrr000
[INC]
r %00rrr100
(HL) $34
(IX+d) $DD,$34,d
(IY+d) $FD,$34,d
dd %00dd0011
IX $DD,$23
IY $FD,$23
[IND]
void $ED,$AA
[INDR]
void $ED,$BA
[INI]
void $ED,$A2
[INIR]
void $ED,$B2
[JP]
nn $C3,nn
cc,nn %11ccc010,nn
(HL) $E9
(IX) $DD,$E9
(IY) $FD,$E9
[JR]
e $18,e
C,e $38,e
NC,e $30,e
Z,e $28,e
NZ,e $20,e
; pseudo instruction - translated to JR if possible (i.e. the target is within
; -126..+129 bytes range and an appropriate form of the JR instruction exists),
; otherwise to JP
[JRJP]
; JR
e $18,e
C,e $38,e
NC,e $30,e
Z,e $28,e
NZ,e $20,e
; JP
nn $C3,nn
cc,nn %11ccc010,nn
(HL) $E9
(IX) $DD,$E9
(IY) $FD,$E9
[LD]
r,r' %01rrrr'r'r'
r,n %00rrr110,n
r,(HL) %01rrr110
r,(IX+d) $DD,%01rrr110,d
r,(IY+d) $FD,%01rrr110,d
(HL),r %01110rrr
(IX+d),r $DD,%01110rrr,d
(IY+d),r $FD,%01110rrr,d
(HL),n $36,n
(IX+d),n $DD,$36,d,n
(IY+d),n $FD,$36,d,n
A,(BC) $0A
A,(DE) $1A
A,(nn) $3A,nn
(BC),A $02
(DE),A $12
(nn),A $32,nn
A,I $ED,$57
A,R $ED,$5F
I,A $ED,$47
R,A $ED,$4F
dd,nn %00dd0001,nn
IX,nn $DD,$21,nn
IY,nn $FD,$21,nn
HL,(nn) $2A,nn
dd,(nn) $ED,%01dd1011,nn
IX,(nn) $DD,$2A,nn
IY,(nn) $FD,$2A,nn
(nn),HL $22,nn
(nn),dd $ED,%01dd0011,nn
(nn),IX $DD,$22,nn
(nn),IY $FD,$22,nn
SP,HL $F9
SP,IX $DD,$F9
SP,IY $FD,$F9
[LDD]
void $ED,$A8
[LDDR]
void $ED,$B8
[LDI]
void $ED,$A0
[LDIR]
void $ED,$B0
[NEG]
void $ED,$44
[NOP]
void $00
[OR]
A,r %10110rrr
A,n $F6,n
A,(HL) $B6
A,(IX+d) $DD,$B6,d
A,(IY+d) $FD,$B6,d
[OTDR]
void $ED,$BB
[OTIR]
void $ED,$B3
[OUT]
(n),A $D3,n
(C),r $ED,%01rrr001
[OUTD]
void $ED,$AB
[OUTI]
void $ED,$A3
[POP]
qq %11qq0001
IX $DD,$E1
IY $FD,$E1
[PUSH]
qq %11qq0101
IX $DD,$E5
IY $FD,$E5
[RES]
b,r $CB,%10bbbrrr
b,(HL) $CB,%10bbb110
b,(IX+d) $DD,$CB,d,%10bbb110
b,(IY+d) $FD,$CB,d,%10bbb110
[RET]
void $C9
cc %11ccc000
[RETI]
void $ED,$4D
[RETN]
void $ED,$45
[RL]
r $CB,%00010rrr
(HL) $CB,$16
(IX+d) $DD,$CB,d,$16
(IY+d) $FD,$CB,d,$16
[RLA]
void $17
[RLC]
r $CB,%00000rrr
(HL) $CB,$06
(IX+d) $DD,$CB,d,$06
(IY+d) $FD,$CB,d,$06
[RLCA]
void $07
[RLD]
void $ED,$6F
[RR]
r $CB,%00001rrr
(HL) $CB,$1E
(IX+d) $DD,$CB,d,$1E
(IY+d) $FD,$CB,d,$1E
[RRA]
void $1F
[RRC]
r $CB,%00001rrr
(HL) $CB,$0E
(IX+d) $DD,$CB,d,$0E
(IY+d) $FD,$CB,d,$0E
[RRCA]
void $0F
[RRD]
void $ED,$67
[RST]
p %11ppp111
[SBC]
A,r %10011rrr
A,n $DE,n
A,(HL) $9E
A,(IX+d) $DD,$9E,d
A,(IY+d) $FD,$9E,d
HL,dd $ED,%01dd0010
[SCF]
void $37
[SET]
b,r $CB,%11bbbrrr
b,(HL) $CB,%11bbb110
b,(IX+d) $DD,$CB,d,%11bbb110
b,(IY+d) $FD,$CB,d,%11bbb110
[SLA]
r $CB,%00100rrr
(HL) $CB,$26
(IX+d) $DD,$CB,d,$26
(IY+d) $FD,$CB,d,$26
[SRA]
r $CB,%00101rrr
(HL) $CB,$2E
(IX+d) $DD,$CB,d,$2E
(IY+d) $FD,$CB,d,$2E
[SRL]
r $CB,%00111rrr
(HL) $CB,$3E
(IX+d) $DD,$CB,d,$3E
(IY+d) $FD,$CB,d,$3E
[SUB]
A,r %10010rrr
A,n $D6,n
A,(HL) $96
A,(IX+d) $DD,$96,d
A,(IY+d) $FD,$96,d
[XOR]
A,r %10101rrr
A,n $EE,n
A,(HL) $AE
A,(IX+d) $DD,$AE,d
A,(IY+d) $FD,$AE,d