Начал пополнять вики сайзкодеров. Нужно было добавить процедуру расчета адреса для построения точки $22B0(reg.A=X coordinate,reg.C=Y coordinate) Я решил взглянуть на код, чтобы проверить. И тут мне попался участок, который я не понимал.
22B0 47 LD B ,A
22B1 A7 AND A
22B2 1F RRA
22B3 37 SCF
22B4 1F RRA
22B5 A7 AND A
22B6 1F RRA
22B7 A8 XOR B
22B8 E6 F8 AND $F8
22BA A8 XOR B
22BB 67 LD H ,A
22BC 79 LD A ,C
22BD 07 RLCA
22BE 07 RLCA
22BF 07 RLCA
22C0 A8 XOR B
22C1 E6 C7 AND $C7
22C3 A8 XOR B
22C4 07 RLCA
22C5 07 RLCA
22C6 6F LD L ,A
22C7 79 LD A ,C
22C8 E6 07 AND $07
22CA C9 RET
22B1 A7 AND A
22B2 1F RRA
22B3 37 SCF
22B4 1F RRA
22B5 A7 AND A
22B6 1F RRA
22B7 A8 XOR B
22B8 E6 F8 AND $F8
22BA A8 XOR B
22BB 67 LD H ,A
22BC 79 LD A ,C
22BD 07 RLCA
22BE 07 RLCA
22BF 07 RLCA
22C0 A8 XOR B
22C1 E6 C7 AND $C7
22C3 A8 XOR B
22C4 07 RLCA
22C5 07 RLCA
22C6 6F LD L ,A
22C7 79 LD A ,C
22C8 E6 07 AND $07
22CA C9 RET
Непонятна операция XOR-AND XOR. Тред мне ничего не объяснил. Если поразмыслить, то опкоды xor b/and $f8/xor b выполнят операцию A=A|(B&7). или A=A|(reg&~mask). Возьму на вооружение этот прием.
Комментарии
Отправить комментарий