mirror of
https://github.com/gbdev/rgbds.git
synced 2025-11-20 10:12:06 +00:00
Allow 'ld a, a±c±<r8>' or 'ld a, a±<r8>±c' for adc/sbc
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user