replace restart {
	ld	a,%1(%2)
	bit	%3,a
	jp	%4,%5
} by {
	bit	%3,%1(%2)
	jp	%4,%5
}
replace {
	ld	%1,%2
	ld	a,%2
} by {
	ld	%1,%2
	ld	a,%1
}
replace {
	ld	%1,a
	xor	a,a
	or	a,%1
	jp	z,%2
} by {
	ld	%1,a
	or	a,a
	jp	z,%2
}
replace {
	rlca
	ld	a,#0x00
	rla
} by {
	rlca
	and	a,#0x01
}
replace {
	ld	%3,a
	ld	l,%1
	ld	h,%2
	ld	l,(hl)
	ld	a,%3
} by {
	ld	%3,a
	ld	l,%1
	ld	h,%2
	ld	l,(hl)
} if notVolatile %3

;
;--------------------------
;
replace restart {
	pop	%1
	push	%1
	ld	%1,%2
} by {
	;	z80 removed redundant pop/push
	ld	%1,%2
}

replace restart {
	ld	l,a
	ld	c,%1
	ld	a,l
} by {
	ld	l,a
	ld	c,%1
}

replace restart {
	ld	c,l
	ld	a,c
	and	a,#%1
	ld	c,a
	or	a,a
} by {
	;	z80 stream lining 'and' logic
	ld	a,#%1
	and	a,l
	ld	c,a
}

replace restart {
	ld	a,c
	and	a,#%1
	ld	c,a
	or	a,a
} by {
	;	z80 stream lining 'and' logic
	ld	a,#%1
	and	a,c
	ld	c,a
}

replace restart {
	ld	a,c
	or	a,#%1
	ld	c,a
} by {
	;	z80 stream lining 'or' logic
	ld	a,#%1
	or	a,c
	ld	c,a
}


replace {
%1:
	in0     a,(%2)
	and	a,#%3
	jp	z,%4
%5:
	jp	%6
%4:
	call	%7
	jp	%1
%6:
	ret
} by {
%1:
	in0     a,(%2)
	and	a,#%3
	jp	nz,%5
%4:
	call	%7
	jp	%1
%5:
%6:
	ret
}


