Allow 'ld a, a±c±<r8>' or 'ld a, a±<r8>±c' for adc/sbc

This commit is contained in:
Rangi
2021-03-30 11:27:19 -04:00
parent 34c127d9c3
commit e023a84d04

View File

@@ -2035,14 +2035,22 @@ z80_ld_a_comma_args : reg_rr { // $0A,$1A,$2A,$3A: ld a, [<r16>]
| T_MODE_A T_OP_SUB T_TOKEN_C T_OP_SUB z80_ld_a_comma_a_minus_c_minus_args
;
z80_ld_a_comma_a_plus_c_plus_args : T_TOKEN_C { out_AbsByte(0x89); } // $89: adc a, c ==> ld a, a + c + c
z80_ld_a_comma_a_plus_c_plus_args : reg_nc {
// $88-$8F: adc a, <r8> ==> ld a, a + c + <r8> (except $89: adc a, c)
out_AbsByte(0x88 | $1);
}
| T_TOKEN_C { out_AbsByte(0x89); } // $89: adc a, c ==> ld a, a + c + c
| reloc_8bit { // $CE: adc a, <imm8> ==> ld a, a + c + <imm8>
out_AbsByte(0xCE);
out_RelByte(&$1, 1);
}
;
z80_ld_a_comma_a_minus_c_minus_args : T_TOKEN_C { out_AbsByte(0x99); } // $99: sbc a, c ==> ld a, a - c - c
z80_ld_a_comma_a_minus_c_minus_args : reg_nc {
// $98-$9F: sbc a, <r8> ==> ld a, a - c - <r8> (except $99: sbc a, c)
out_AbsByte(0x98 | $1);
}
| T_TOKEN_C { out_AbsByte(0x99); } // $99: sbc a, c ==> ld a, a - c - c
| reloc_8bit { // $DE: sbc a, <imm8> ==> ld a, a - c - <imm8>
out_AbsByte(0xDE);
out_RelByte(&$1, 1);