В эмуляторе zxzxemul составил статистику выполнения команд при сбросе и PRINT SQR 2.
Неиспользуемые и редкоиспользуемые команды из основного набора:
02 ld (bc),a
0a ld a,(bc)
(15=1) dec d
1d dec e
2c inc l /нужно/
2d dec l
31 ld sp,nn
33 inc sp
39 add hl,sp /нужно/
3b dec sp
40 ld b,b
43 ld b,e
45 ld b,l
(48=2) ld c,b
49 ld c,c
4a ld c,d
(4b=3) ld c,e
50 ld d,b
(51=2) ld d,c
52 ld d,d
55 ld d,l
(58=5) ld e,b
(5a=1) ld e,d
5b ld e,e
5c ld e,h
(60=1) ld h,b
63 ld h,e
64 ld h,h
65 ld h,l
66 ld h,(hl) /нужно для переходов по таблице/
(69=1) ld l,c
6a ld l,d
6c ld l,h
6d ld l,l
6e ld l,(hl)
74 ld (hl),h
75 ld (hl),l
76 halt
7f ld a,a
(80=1) add a,b
82 add a,d
84 add a,h
85 add a,l
(86=1) add a,(hl)
88 adc a,b
8a adc a,d
8b adc a,e
8c adc a,l
93 sub e
94 sub h
(95=1) sub l
96 sub (hl)
97 sub a
98 sbc a,b
99 sbc a,c
9a sbc a,d
9b sbc a,e
9c sbc a,h
9d sbc a,l
9e sbc a,(hl) /sbc a,a нужно для расширения знаковых/
a1 and c
a3 and e
a4 and h
a5 and l
(a6=1) and (hl)
a8 xor b
aa xor d /xor e=#023c/
ac xor h /xor l=#0033/
b0 or b
b4 or h
b5 or l
b7 or a /and a=#179d/
ba cp d
bb cp e
bc cp h
bd cp l
c7 rst #00
cf rst #08
d4 call nc,nn
dc call c,nn
de sbc a,n
e0 ret po
e2 jp po,nn
e4 call po,nn
e8 ret pe
ea jp pe,nn
ec call pe,nn
f0 ret p
f4 call p,nn
f7 rst #30
(f9=1) ld sp,hl /нужно/
fc call m,nn
ff rst #38
Совсем не используется 80 из 252 команд основного набора, редко используется 13. Интересно, что из 63 направлений ld reg,reg активно используется только 35. Редко происходят копирования между младшими и старшими частями регистровых пар и копирования из b,c в h,l,d,e (обычно бывает только ld b,h:ld c,l).
По уму из списка ненужных надо убрать inc l, add hl,sp, ld sp,hl и ld h,(hl) и добавить daa (выполнилось 28 раз), cp a (выполнилось 4 раза) и nop (выполнилось 78 раз).