; Z80 opcodes, numerical order, from Zilog manual, Zilog mnems.
; Prefixed follow 0ffh = rst 7

; NOTE 1
; Some assemblers accept "a," for these opcodes, notably SLR's Z80ASM.

; definitions for sll macro
b	equ	0
c	equ	1
d	equ	2
e	equ	3
h	equ	4
l	equ	5
m	equ	6
a	equ	7

; useless, but valid opcode. Most assemblers do not generate
sll	macro	reg
	db	0cbh,030h+reg
	endm
;
ind	equ	5
n	equ	20h
;
	nop
	ld	bc,nn
	ld	(bc),a
	inc	bc
	inc	b
	dec	b
	ld	b,n
	rlca
	ex	af,af'
	add	hl,bc
	ld	a,(bc)
	dec	bc
	inc	c
	dec	c
	ld	c,n
	rrca
	djnz	dis
	ld	de,nn
	ld	(de),a
	inc	de
	inc	d
	dec	d
	ld	d,n
	rla
	jr	dis
	add	hl,de
	ld	a,(de)
	dec	de
	inc	e
	dec	e
	ld	e,n
	rra
	jr	nz,dis
	ld	hl,nn
	ld	(nn),hl
	inc	hl
	inc	h
dis:	dec	h
	ld	h,n
	daa
	jr	z,dis
	add	hl,hl
	ld	hl,(nn)
	dec	hl
	inc	l
	dec	l
	ld	l,n
	cpl
	jr	nc,dis
	ld	sp,nn
	ld	(nn),a
	inc	sp
	inc	(hl)
	dec	(hl)
	ld	(hl),n
	scf
	jr	c,dis
	add	hl,sp
	ld	a,(nn)
	dec	sp
	inc	a
	dec	a
	ld	a,n
	ccf
	ld	b,b
	ld	b,c
	ld	b,d
	ld	b,e
	ld	b,h
	ld	b,l
	ld	b,(hl)
	ld	b,a

	ld	c,b
	ld	c,c
	ld	c,d
	ld	c,e
	ld	c,h
	ld	c,l
	ld	c,(hl)
	ld	c,a

	ld	d,b
	ld	d,c
	ld	d,d
	ld	d,e
	ld	d,h
	ld	d,l
	ld	d,(hl)
	ld	d,a

	ld	e,b
	ld	e,c
	ld	e,d
	ld	e,e
	ld	e,h
	ld	e,l
	ld	e,(hl)
	ld	e,a

	ld	h,b
	ld	h,c
	ld	h,d
	ld	h,e
	ld	h,h
	ld	h,l
	ld	h,(hl)
	ld	h,a

	ld	l,b
	ld	l,c
	ld	l,d
	ld	l,e
	ld	l,h
	ld	l,l
	ld	l,(hl)
	ld	l,a

	ld	(hl),b
	ld	(hl),c
	ld	(hl),d
	ld	(hl),e
	ld	(hl),h
	ld	(hl),l
	halt
	ld	(hl),a

	ld	a,b
	ld	a,c
	ld	a,d
	ld	a,e
	ld	a,h
	ld	a,l
	ld	a,(hl)
	ld	a,a

	add	a,b
	add	a,c
	add	a,d
	add	a,e
	add	a,h
	add	a,l
	add	a,(hl)
	add	a,a

	adc	a,b
	adc	a,c
	adc	a,d
	adc	a,e
	adc	a,h
	adc	a,l
	adc	a,(hl)
	adc	a,a

	sub	b;		note 1
	sub	c
	sub	d
	sub	e
	sub	h
	sub	l
	sub	(hl)
	sub	a

	sbc	a,b
	sbc	a,c
	sbc	a,d
	sbc	a,e
	sbc	a,h
	sbc	a,l
	sbc	a,(hl)
	sbc	a,a

	and	b;		note 1
	and	c
	and	d
	and	e
	and	h
	and	l
	and	(hl)
	and	a

	xor	b;		note 1
	xor	c
	xor	d
	xor	e
	xor	h
	xor	l
	xor	(hl)
	xor	a

	or	b;		note 1
	or	c
	or	d
	or	e
	or	h
	or	l
	or	(hl)
	or	a

	cp	b;		note 1
	cp	c
	cp	d
	cp	e
	cp	h
	cp	l
	cp	(hl)
	cp	a

	ret	nz
	pop	bc
	jp	nz,nn
	jp	nn
	call	nz,nn
	push	bc
	add	a,n
	rst	0

	ret	z
	ret
	jp	z,nn
	call	z,nn
	call	nn
	adc	a,n
	rst	8

	ret	nc
	pop	de
	jp	nc,nn
	out	(n),a
	call	nc,nn
	push	de
	sub	n
	rst	10h

	ret	c
	exx
	jp	c,nn
	in	a,(n)
	call	c,nn
	sbc	a,n
	rst	18h

	ret	po
	pop	hl
	jp	po,nn
	ex	(sp),hl
	call	po,nn
	push	hl
	and	n
	rst	20h

	ret	pe
	jp	(hl)
	jp	pe,nn
	ex	de,hl
	call	pe,nn
	xor	n
	rst	28h

	ret	p
	pop	af
	jp	p,nn
	di
	call	p,nn
	push	af
	or	n
	rst	30h

	ret	m
	ld	sp,hl
	jp	m,nn
	ei
	call	m,nn
	cp	n
	rst	38h

	rlc	b
	rlc	c
	rlc	d
	rlc	e
	rlc	h
	rlc	l
	rlc	(hl)
	rlc	a

	rrc	b
	rrc	c
	rrc	d
	rrc	e
	rrc	h
	rrc	l
	rrc	(hl)
	rrc	a

	rl	b
	rl	c
	rl	d
	rl	e
	rl	h
	rl	l
	rl	(hl)
	rl	a

	rr	b
	rr	c
	rr	d
	rr	e
	rr	h
	rr	l
	rr	(hl)
	rr	a

	sla	b
	sla	c
	sla	d
	sla	e
	sla	h
	sla	l
	sla	(hl)
	sla	a

	sra	b
	sra	c
	sra	d
	sra	e
	sra	h
	sra	l
	sra	(hl)
	sra	a

	sll	b;	omitted from most assemblers
	sll	c;	valid, but redundant
	sll	d
	sll	e
	sll	h
	sll	l
	sll	m
	sll	a

	srl	b
	srl	c
	srl	d
	srl	e
	srl	h
	srl	l
	srl	(hl)
	srl	a

	bit	0,b
	bit	0,c
	bit	0,d
	bit	0,e
	bit	0,h
	bit	0,l
	bit	0,(hl)
	bit	0,a

	bit	1,b
	bit	1,c
	bit	1,d
	bit	1,e
	bit	1,h
	bit	1,l
	bit	1,(hl)
	bit	1,a

	bit	2,b
	bit	2,c
	bit	2,d
	bit	2,e
	bit	2,h
	bit	2,l
	bit	2,(hl)
	bit	2,a

	bit	3,b
	bit	3,c
	bit	3,d
	bit	3,e
	bit	3,h
	bit	3,l
	bit	3,(hl)
	bit	3,a

	bit	4,b
	bit	4,c
	bit	4,d
	bit	4,e
	bit	4,h
	bit	4,l
	bit	4,(hl)
	bit	4,a

	bit	5,b
	bit	5,c
	bit	5,d
	bit	5,e
	bit	5,h
	bit	5,l
	bit	5,(hl)
	bit	5,a

	bit	6,b
	bit	6,c
	bit	6,d
	bit	6,e
	bit	6,h
	bit	6,l
	bit	6,(hl)
	bit	6,a

	bit	7,b
	bit	7,c
	bit	7,d
	bit	7,e
	bit	7,h
	bit	7,l
	bit	7,(hl)
	bit	7,a

	res	0,b
	res	0,c
	res	0,d
	res	0,e
	res	0,h
	res	0,l
	res	0,(hl)
	res	0,a

	res	1,b
	res	1,c
	res	1,d
	res	1,e
	res	1,h
	res	1,l
	res	1,(hl)
	res	1,a

	res	2,b
	res	2,c
	res	2,d
	res	2,e
	res	2,h
	res	2,l
	res	2,(hl)
	res	2,a

	res	3,b
	res	3,c
	res	3,d
	res	3,e
	res	3,h
	res	3,l
	res	3,(hl)
	res	3,a

	res	4,b
	res	4,c
	res	4,d
	res	4,e
	res	4,h
	res	4,l
	res	4,(hl)
	res	4,a

	res	5,b
	res	5,c
	res	5,d
	res	5,e
	res	5,h
	res	5,l
	res	5,(hl)
	res	5,a

	res	6,b
	res	6,c
	res	6,d
	res	6,e
	res	6,h
	res	6,l
	res	6,(hl)
	res	6,a

	res	7,b
	res	7,c
	res	7,d
	res	7,e
	res	7,h
	res	7,l
	res	7,(hl)
	res	7,a

	set	0,b
	set	0,c
	set	0,d
	set	0,e
	set	0,h
	set	0,l
	set	0,(hl)
	set	0,a

	set	1,b
	set	1,c
	set	1,d
	set	1,e
	set	1,h
	set	1,l
	set	1,(hl)
	set	1,a

	set	2,b
	set	2,c
	set	2,d
	set	2,e
	set	2,h
	set	2,l
	set	2,(hl)
	set	2,a

	set	3,b
	set	3,c
	set	3,d
	set	3,e
	set	3,h
	set	3,l
	set	3,(hl)
	set	3,a

	set	4,b
	set	4,c
	set	4,d
	set	4,e
	set	4,h
	set	4,l
	set	4,(hl)
	set	4,a

	set	5,b
	set	5,c
	set	5,d
	set	5,e
	set	5,h
	set	5,l
	set	5,(hl)
	set	5,a

	set	6,b
	set	6,c
	set	6,d
	set	6,e
	set	6,h
	set	6,l
	set	6,(hl)
	set	6,a

	set	7,b
	set	7,c
	set	7,d
	set	7,e
	set	7,h
	set	7,l
	set	7,(hl)
	set	7,a

	add	ix,bc
	add	ix,de
	ld	ix,nn
	ld	(nn),ix
	inc	ix
	add	ix,ix
	ld	ix,(nn)
	dec	ix

	inc	[ix+ind]
	dec	[ix+ind]
	ld	[ix+ind],n
	add	ix,sp

	ld	b,[ix+ind]
	ld	c,[ix+ind]
	ld	d,[ix+ind]
	ld	e,[ix+ind]
	ld	h,[ix+ind]
	ld	l,[ix+ind]

	ld	[ix+ind],b
	ld	[ix+ind],c
	ld	[ix+ind],d
	ld	[ix+ind],e
	ld	[ix+ind],h
	ld	[ix+ind],l
	ld	[ix+ind],a

	ld	a,[ix+ind]

	add	a,[ix+ind]
	adc	a,[ix+ind]
	sub	[ix+ind];		Note 1
	sbc	a,[ix+ind]
	and	[ix+ind]
	xor	[ix+ind]
	or	[ix+ind]
	cp	[ix+ind]

	pop	ix
	ex	(sp),ix
	push	ix
	jp	(ix)
	ld	sp,ix

	rlc	[ix+ind]
	rrc	[ix+ind]
	rl	[ix+ind]
	rr	[ix+ind]
	sla	[ix+ind]
	sra	[ix+ind]
;	sll	[ix+ind]
	srl	[ix+ind]

	bit	0,[ix+ind]
	bit	1,[ix+ind]
	bit	2,[ix+ind]
	bit	3,[ix+ind]
	bit	4,[ix+ind]
	bit	5,[ix+ind]
	bit	6,[ix+ind]
	bit	7,[ix+ind]

	res	0,[ix+ind]
	res	1,[ix+ind]
	res	2,[ix+ind]
	res	3,[ix+ind]
	res	4,[ix+ind]
	res	5,[ix+ind]
	res	6,[ix+ind]
	res	7,[ix+ind]

	set	0,[ix+ind]
	set	1,[ix+ind]
	set	2,[ix+ind]
	set	3,[ix+ind]
	set	4,[ix+ind]
	set	5,[ix+ind]
	set	6,[ix+ind]
	set	7,[ix+ind]

	in	b,(c)
	out	(c),b
	sbc	hl,bc
	ld	(nn),bc
	neg
	retn
	im	0
	ld	i,a
	in	c,(c)
	out	(c),c
	adc	hl,bc
	ld	bc,(nn)
	reti
	ld	r,a
	in	d,(c)
	out	(c),d
	sbc	hl,de
	ld	(nn),de
	im	1
	ld	a,i
	in	e,(c)
	out	(c),e
	adc	hl,de
	ld	de,(nn)
	im	2
	ld	a,r
	in	h,(c)
	out	(c),h
	sbc	hl,hl
	defw	063Edh,nn;	LD (NN),HL (useless)
	rrd
	in	l,(c)
	out	(c),l
	adc	hl,hl
	defw	06bedh,nn;	LD HL,(NN) (useless)
	rld
	in	(hl),(c)
	out	(c),(hl)
	sbc	hl,sp
	ld	(nn),sp
	in	a,(c)
	out	(c),a
	adc	hl,sp
	ld	sp,(nn)
	ldi
	cpi
	ini
	outi
	ldd
	cpd
	ind
	outd
	ldir
	cpir
	inir
	otir
	lddr
	cpdr
	indr
	otdr

	add	iy,bc
	add	iy,de
	ld	iy,nn
	ld	(nn),iy
	inc	iy
	add	iy,iy
	ld	iy,(nn)
	dec	iy

	inc	[iy+ind]
	dec	[iy+ind]
	ld	[iy+ind],n
	add	iy,sp

	ld	b,[iy+ind]
	ld	c,[iy+ind]
	ld	d,[iy+ind]
	ld	e,[iy+ind]
	ld	h,[iy+ind]
	ld	l,[iy+ind]

	ld	[iy+ind],b
	ld	[iy+ind],c
	ld	[iy+ind],d
	ld	[iy+ind],e
	ld	[iy+ind],h
	ld	[iy+ind],l
	ld	[iy+ind],a

	ld	a,[iy+ind]

	add	a,[iy+ind]
	adc	a,[iy+ind]
	sub	[iy+ind];		note 1
	sbc	a,[iy+ind]
	and	[iy+ind]
	xor	[iy+ind]
	or	[iy+ind]
	cp	[iy+ind]

	pop	iy
	ex	(sp),iy
	push	iy
	jp	(iy)
	ld	sp,iy

	rlc	[iy+ind]
	rrc	[iy+ind]
	rl	[iy+ind]
	rr	[iy+ind]
	sla	[iy+ind]
	sra	[iy+ind]
;	sll	[iy+ind]
	srl	[iy+ind]

	bit	0,[iy+ind]
	bit	1,[iy+ind]
	bit	2,[iy+ind]
	bit	3,[iy+ind]
	bit	4,[iy+ind]
	bit	5,[iy+ind]
	bit	6,[iy+ind]
	bit	7,[iy+ind]

	res	0,[iy+ind]
	res	1,[iy+ind]
	res	2,[iy+ind]
	res	3,[iy+ind]
	res	4,[iy+ind]
	res	5,[iy+ind]
	res	6,[iy+ind]
	res	7,[iy+ind]

	set	0,[iy+ind]
	set	1,[iy+ind]
	set	2,[iy+ind]
	set	3,[iy+ind]
	set	4,[iy+ind]
	set	5,[iy+ind]
	set	6,[iy+ind]
	set	7,[iy+ind]

nn:	defs	2
	end
PS