DEVICE ZXSPECTRUMNEXT
ORG $8000
; multi-argument instructions
push af,hl,de ; 3x push instruction
ld a,1,b,2,hl,$1234,de,$5678 ; 4x ld instruction
; all fake instructions
nn EQU $56
mm EQU $78
rl bc ; rl c : rl b
rl de ; rl e : rl d
rl hl ; rl l : rl h
rr bc ; rr b : rr c
rr de ; rr d : rr e
rr hl ; rr h : rr l
sla bc ; sla c : rl b
sla de ; sla e : rl d
sla hl ; add hl,hl
sll bc ; sli c : rl b
sll de ; sli e : rl d
sll hl ; sli l : rl h
sli bc ; sli c : rl b
sli de ; sli e : rl d
sli hl ; sli l : rl h
sra bc ; sra b : rr c
sra de ; sra d : rr e
sra hl ; sra h : rr l
srl bc ; srl b : rr c
srl de ; srl d : rr e
srl hl ; srl h : rr l
ld bc,bc ; ld b,b : ld c,c
ld bc,de ; ld b,d : ld c,e
ld bc,hl ; ld b,h : ld c,l
ld bc,ix ; ld b,xh : ld c,xl
ld bc,iy ; ld b,yh : ld c,yl
ld bc,(hl) ; ld c,(hl) : inc hl : ld b,(hl) : dec hl
ld bc,(ix+nn) ; ld c,(ix+nn) : ld b,(ix+nn+1)
ld bc,(iy+nn) ; ld c,(iy+nn) : ld b,(iy+nn+1)
ld de,bc ; ld d,b : ld e,c
ld de,de ; ld d,d : ld e,e
ld de,hl ; ld d,h : ld e,l
ld de,ix ; ld d,xh : ld e,xl
ld de,iy ; ld d,yh : ld e,yl
ld de,(hl) ; ld e,(hl) : inc hl : ld d,(hl) : dec hl
ld de,(ix+nn) ; ld e,(ix+nn) : ld d,(ix+nn+1)
ld de,(iy+nn) ; ld e,(iy+nn) : ld d,(iy+nn+1)
ld hl,bc ; ld h,b : ld l,c
ld hl,de ; ld h,d : ld l,e
ld hl,hl ; ld h,h : ld l,l
ld hl,ix ; push ix : pop hl
ld hl,iy ; push iy : pop hl
ld hl,(ix+nn) ; ld l,(ix+nn) : ld h,(ix+nn+1)
ld hl,(iy+nn) ; ld l,(iy+nn) : ld h,(iy+nn+1)
ld ix,bc ; ld xh,b : ld xl,c
ld ix,de ; ld xh,d : ld xl,e
ld ix,hl ; push hl : pop ix
ld ix,ix ; ld xh,xh : ld xl,xl
ld ix,iy ; push iy : pop ix
ld iy,bc ; ld yh,b : ld yl,c
ld iy,de ; ld yh,d : ld yl,e
ld iy,hl ; push hl : pop iy
ld iy,ix ; push ix : pop iy
ld iy,iy ; ld yh,yh : ld yl,yl
ld (hl),bc ; ld (hl),c : inc hl : ld (hl),b : dec hl
ld (hl),de ; ld (hl),e : inc hl : ld (hl),d : dec hl
ld (ix+nn),bc ; ld (ix+nn),c : ld (ix+nn+1),b
ld (ix+nn),de ; ld (ix+nn),e : ld (ix+nn+1),d
ld (ix+nn),hl ; ld (ix+nn),l : ld (ix+nn+1),h
ld (iy+nn),bc ; ld (iy+nn),c : ld (iy+nn+1),b
ld (iy+nn),de ; ld (iy+nn),e : ld (iy+nn+1),d
ld (iy+nn),hl ; ld (iy+nn),l : ld (iy+nn+1),h
ldi bc,(hl) ; ld c,(hl) : inc hl : ld b,(hl) : inc hl
ldi bc,(ix+nn) ; ld c,(ix+nn) : inc ix : ld b,(ix+nn) : inc ix
ldi bc,(iy+nn) ; ld c,(iy+nn) : inc iy : ld b,(iy+nn) : inc iy
ldi de,(hl) ; ld e,(hl) : inc hl : ld d,(hl) : inc hl
ldi de,(ix+nn) ; ld e,(ix+nn) : inc ix : ld d,(ix+nn) : inc ix
ldi de,(iy+nn) ; ld e,(iy+nn) : inc iy : ld d,(iy+nn) : inc iy
ldi hl,(ix+nn) ; ld l,(ix+nn) : inc ix : ld h,(ix+nn) : inc ix
ldi hl,(iy+nn) ; ld l,(iy+nn) : inc iy : ld h,(iy+nn) : inc iy
ldi (hl),bc ; ld (hl),c : inc hl : ld (hl),b : inc hl
ldi (hl),de ; ld (hl),e : inc hl : ld (hl),d : inc hl
ldi (ix+nn),bc ; ld (ix+nn),c : inc ix : ld (ix+nn),b : inc ix
ldi (ix+nn),de ; ld (ix+nn),e : inc ix : ld (ix+nn),d : inc ix
ldi (ix+nn),hl ; ld (ix+nn),l : inc ix : ld (ix+nn),h : inc ix
ldi (iy+nn),bc ; ld (iy+nn),c : inc iy : ld (iy+nn),b : inc iy
ldi (iy+nn),de ; ld (iy+nn),e : inc iy : ld (iy+nn),d : inc iy
ldi (iy+nn),hl ; ld (iy+nn),l : inc iy : ld (iy+nn),h : inc iy
ldi a,(bc) ; ld a,(bc) : inc bc
ldi a,(de) ; ld a,(de) : inc de
ldi a,(hl) ; ld a,(hl) : inc hl
ldi b,(hl) ; ld b,(hl) : inc hl
ldi c,(hl) ; ld c,(hl) : inc hl
ldi d,(hl) ; ld d,(hl) : inc hl
ldi e,(hl) ; ld e,(hl) : inc hl
ldi h,(hl) ; ld h,(hl) : inc hl
ldi l,(hl) ; ld l,(hl) : inc hl
ldi a,(ix+nn) ; ld a,(ix+nn) : inc ix
ldi b,(ix+nn) ; ld b,(ix+nn) : inc ix
ldi c,(ix+nn) ; ld c,(ix+nn) : inc ix
ldi d,(ix+nn) ; ld d,(ix+nn) : inc ix
ldi e,(ix+nn) ; ld e,(ix+nn) : inc ix
ldi h,(ix+nn) ; ld h,(ix+nn) : inc ix
ldi l,(ix+nn) ; ld l,(ix+nn) : inc ix
ldi a,(iy+nn) ; ld a,(iy+nn) : inc iy
ldi b,(iy+nn) ; ld b,(iy+nn) : inc iy
ldi c,(iy+nn) ; ld c,(iy+nn) : inc iy
ldi d,(iy+nn) ; ld d,(iy+nn) : inc iy
ldi e,(iy+nn) ; ld e,(iy+nn) : inc iy
ldi h,(iy+nn) ; ld h,(iy+nn) : inc iy
ldi l,(iy+nn) ; ld l,(iy+nn) : inc iy
ldd a,(bc) ; ld a,(bc) : dec bc
ldd a,(de) ; ld a,(de) : dec de
ldd a,(hl) ; ld a,(hl) : dec hl
ldd b,(hl) ; ld b,(hl) : dec hl
ldd c,(hl) ; ld c,(hl) : dec hl
ldd d,(hl) ; ld d,(hl) : dec hl
ldd e,(hl) ; ld e,(hl) : dec hl
ldd h,(hl) ; ld h,(hl) : dec hl
ldd l,(hl) ; ld l,(hl) : dec hl
ldd a,(ix+nn) ; ld a,(ix+nn) : dec ix
ldd b,(ix+nn) ; ld b,(ix+nn) : dec ix
ldd c,(ix+nn) ; ld c,(ix+nn) : dec ix
ldd d,(ix+nn) ; ld d,(ix+nn) : dec ix
ldd e,(ix+nn) ; ld e,(ix+nn) : dec ix
ldd h,(ix+nn) ; ld h,(ix+nn) : dec ix
ldd l,(ix+nn) ; ld l,(ix+nn) : dec ix
ldd a,(iy+nn) ; ld a,(iy+nn) : dec iy
ldd b,(iy+nn) ; ld b,(iy+nn) : dec iy
ldd c,(iy+nn) ; ld c,(iy+nn) : dec iy
ldd d,(iy+nn) ; ld d,(iy+nn) : dec iy
ldd e,(iy+nn) ; ld e,(iy+nn) : dec iy
ldd h,(iy+nn) ; ld h,(iy+nn) : dec iy
ldd l,(iy+nn) ; ld l,(iy+nn) : dec iy
ldi (bc),a ; ld (bc),a : inc bc
ldi (de),a ; ld (de),a : inc de
ldi (hl),a ; ld (hl),a : inc hl
ldi (hl),b ; ld (hl),b : inc hl
ldi (hl),c ; ld (hl),c : inc hl
ldi (hl),d ; ld (hl),d : inc hl
ldi (hl),e ; ld (hl),e : inc hl
ldi (hl),h ; ld (hl),h : inc hl
ldi (hl),l ; ld (hl),l : inc hl
ldi (ix+nn),a ; ld (ix+nn),a : inc ix
ldi (ix+nn),b ; ld (ix+nn),b : inc ix
ldi (ix+nn),c ; ld (ix+nn),c : inc ix
ldi (ix+nn),d ; ld (ix+nn),d : inc ix
ldi (ix+nn),e ; ld (ix+nn),e : inc ix
ldi (ix+nn),h ; ld (ix+nn),h : inc ix
ldi (ix+nn),l ; ld (ix+nn),l : inc ix
ldi (iy+nn),a ; ld (iy+nn),a : inc iy
ldi (iy+nn),b ; ld (iy+nn),b : inc iy
ldi (iy+nn),c ; ld (iy+nn),c : inc iy
ldi (iy+nn),d ; ld (iy+nn),d : inc iy
ldi (iy+nn),e ; ld (iy+nn),e : inc iy
ldi (iy+nn),h ; ld (iy+nn),h : inc iy
ldi (iy+nn),l ; ld (iy+nn),l : inc iy
ldd (bc),a ; ld (bc),a : dec bc
ldd (de),a ; ld (de),a : dec de
ldd (hl),a ; ld (hl),a : dec hl
ldd (hl),b ; ld (hl),b : dec hl
ldd (hl),c ; ld (hl),c : dec hl
ldd (hl),d ; ld (hl),d : dec hl
ldd (hl),e ; ld (hl),e : dec hl
ldd (hl),h ; ld (hl),h : dec hl
ldd (hl),l ; ld (hl),l : dec hl
ldd (ix+nn),a ; ld (ix+nn),a : dec ix
ldd (ix+nn),b ; ld (ix+nn),b : dec ix
ldd (ix+nn),c ; ld (ix+nn),c : dec ix
ldd (ix+nn),d ; ld (ix+nn),d : dec ix
ldd (ix+nn),e ; ld (ix+nn),e : dec ix
ldd (ix+nn),h ; ld (ix+nn),h : dec ix
ldd (ix+nn),l ; ld (ix+nn),l : dec ix
ldd (iy+nn),a ; ld (iy+nn),a : dec iy
ldd (iy+nn),b ; ld (iy+nn),b : dec iy
ldd (iy+nn),c ; ld (iy+nn),c : dec iy
ldd (iy+nn),d ; ld (iy+nn),d : dec iy
ldd (iy+nn),e ; ld (iy+nn),e : dec iy
ldd (iy+nn),h ; ld (iy+nn),h : dec iy
ldd (iy+nn),l ; ld (iy+nn),l : dec iy
ldi (hl),mm ; ld (hl),mm : inc hl
ldi (ix+nn),mm ; ld (ix+nn),mm : inc ix
ldi (iy+nn),mm ; ld (iy+nn),mm : inc iy
ldd (hl),mm ; ld (hl),mm : dec hl
ldd (ix+nn),mm ; ld (ix+nn),mm : dec ix
ldd (iy+nn),mm ; ld (iy+nn),mm : dec iy
sub hl,bc ; or a : sbc hl,bc
sub hl,de ; or a : sbc hl,de
sub hl,hl ; or a : sbc hl,hl
sub hl,sp ; or a : sbc hl,sp
; multi-argument fake instructions (final level)
; ld (hl),l : dec hl : ld (ix+nn),a : dec ix : ld (hl),mm : dec hl : ld (ix+nn),mm : dec ix
ldd (hl),l,(ix+nn),a,(hl),mm,(ix+nn),mm
; ld (hl),l : inc hl : ld (ix+nn),a : inc ix : ld (hl),mm : inc hl : ld (ix+nn),mm : inc ix
ldi (hl),l,(ix+nn),a,(hl),mm,(ix+nn),mm
; sla c : rl b : sla e : rl d : add hl,hl
sla bc,de,hl
; hopefully that's enough to test... was not, round 2:
; multi-argument instructions
pop hl,de ; normal pop
OPT --reversepop
pop hl,de ; reverse pop
sla b,c