Undeprecate ld [$ff00+c] (#1619)

This commit is contained in:
Rangi
2025-01-20 14:05:15 -05:00
committed by GitHub
parent 147a5c9bf3
commit 2426068409
7 changed files with 35 additions and 22 deletions

View File

@@ -266,6 +266,14 @@ Instead, use
.Ql LDH [C], A .Ql LDH [C], A
and and
.Ql LDH A, [C] . .Ql LDH A, [C] .
.Pp
Note that
.Ql LD [$FF00+C], A
and
.Ql LD A, [$FF00+C]
were also deprecated in 0.9.0, but were
.Em undeprecated
in 0.9.1.
.Ss LDH [n8], A and LDH A, [n8] .Ss LDH [n8], A and LDH A, [n8]
Deprecated in 0.9.0. Deprecated in 0.9.0.
.Pp .Pp

View File

@@ -1973,14 +1973,21 @@ z80_ldh:
| Z80_LDH MODE_A COMMA c_ind { | Z80_LDH MODE_A COMMA c_ind {
sect_ConstByte(0xF2); sect_ConstByte(0xF2);
} }
| Z80_LDH MODE_A COMMA ff00_c_ind {
sect_ConstByte(0xF2);
}
| Z80_LDH c_ind COMMA MODE_A { | Z80_LDH c_ind COMMA MODE_A {
sect_ConstByte(0xE2); sect_ConstByte(0xE2);
} }
| Z80_LDH ff00_c_ind COMMA MODE_A {
sect_ConstByte(0xE2);
}
; ;
c_ind: c_ind: LBRACK MODE_C RBRACK;
LBRACK MODE_C RBRACK
| LBRACK relocexpr OP_ADD MODE_C RBRACK { ff00_c_ind:
LBRACK relocexpr OP_ADD MODE_C RBRACK {
// This has to use `relocexpr`, not `iconst`, to avoid a shift/reduce conflict // This has to use `relocexpr`, not `iconst`, to avoid a shift/reduce conflict
if ($2.getConstVal() != 0xFF00) if ($2.getConstVal() != 0xFF00)
::error("Base value must be equal to $FF00 for $FF00+C\n"); ::error("Base value must be equal to $FF00 for $FF00+C\n");
@@ -2031,7 +2038,10 @@ z80_ld_mem:
; ;
z80_ld_c_ind: z80_ld_c_ind:
Z80_LD c_ind COMMA MODE_A { Z80_LD ff00_c_ind COMMA MODE_A {
sect_ConstByte(0xE2);
}
| Z80_LD c_ind COMMA MODE_A {
warning(WARNING_OBSOLETE, "LD [C], A is deprecated; use LDH [C], A\n"); warning(WARNING_OBSOLETE, "LD [C], A is deprecated; use LDH [C], A\n");
sect_ConstByte(0xE2); sect_ConstByte(0xE2);
} }
@@ -2064,6 +2074,9 @@ z80_ld_a:
| Z80_LD reg_a COMMA reg_r { | Z80_LD reg_a COMMA reg_r {
sect_ConstByte(0x40 | ($2 << 3) | $4); sect_ConstByte(0x40 | ($2 << 3) | $4);
} }
| Z80_LD reg_a COMMA ff00_c_ind {
sect_ConstByte(0xF2);
}
| Z80_LD reg_a COMMA c_ind { | Z80_LD reg_a COMMA c_ind {
warning(WARNING_OBSOLETE, "LD A, [C] is deprecated; use LDH A, [C]\n"); warning(WARNING_OBSOLETE, "LD A, [C] is deprecated; use LDH A, [C]\n");
sect_ConstByte(0xF2); sect_ConstByte(0xF2);

View File

@@ -2,10 +2,6 @@ warning: deprecated-ldio.asm(5): [-Wobsolete]
LDH is deprecated with values from $00 to $FF; use $FF00 to $FFFF LDH is deprecated with values from $00 to $FF; use $FF00 to $FFFF
warning: deprecated-ldio.asm(6): [-Wobsolete] warning: deprecated-ldio.asm(6): [-Wobsolete]
LDH is deprecated with values from $00 to $FF; use $FF00 to $FFFF LDH is deprecated with values from $00 to $FF; use $FF00 to $FFFF
warning: deprecated-ldio.asm(8): [-Wobsolete]
LD [C], A is deprecated; use LDH [C], A
warning: deprecated-ldio.asm(9): [-Wobsolete]
LD A, [C] is deprecated; use LDH A, [C]
warning: deprecated-ldio.asm(13): [-Wobsolete] warning: deprecated-ldio.asm(13): [-Wobsolete]
LDIO is deprecated; use LDH LDIO is deprecated; use LDH
warning: deprecated-ldio.asm(14): [-Wobsolete] warning: deprecated-ldio.asm(14): [-Wobsolete]
@@ -18,10 +14,6 @@ warning: deprecated-ldio.asm(20): [-Wobsolete]
LDH is deprecated with values from $00 to $FF; use $FF00 to $FFFF LDH is deprecated with values from $00 to $FF; use $FF00 to $FFFF
warning: deprecated-ldio.asm(21): [-Wobsolete] warning: deprecated-ldio.asm(21): [-Wobsolete]
LDH is deprecated with values from $00 to $FF; use $FF00 to $FFFF LDH is deprecated with values from $00 to $FF; use $FF00 to $FFFF
warning: deprecated-ldio.asm(23): [-Wobsolete]
LD [C], A is deprecated; use LDH [C], A
warning: deprecated-ldio.asm(24): [-Wobsolete]
LD A, [C] is deprecated; use LDH A, [C]
warning: deprecated-ldio.asm(28): [-Wobsolete] warning: deprecated-ldio.asm(28): [-Wobsolete]
LDIO is deprecated; use LDH LDIO is deprecated; use LDH
warning: deprecated-ldio.asm(29): [-Wobsolete] warning: deprecated-ldio.asm(29): [-Wobsolete]

View File

@@ -1,9 +1,9 @@
SECTION "ff00+c or not to ff00+c", ROMX SECTION "ff00+c or not to ff00+c", ROMX
ldh a, [$ff00 + c] ld a, [$ff00 + c]
ldh [65280 + c], a ld [65280 + c], a
; Not ok ; Not ok
ldh a, [$ff01 + c] ld a, [$ff01 + c]
ldh [xyz + c], a ld [xyz + c], a

View File

@@ -1,5 +1,5 @@
SECTION "test", ROM0[0] SECTION "test", ROM0[0]
ldh [ $ff00 + c ], a ld [ $ff00 + c ], a
; 257 spaces exceeds both LEXER_BUF_SIZE (64) and uint8_t limit (255) ; 257 spaces exceeds both LEXER_BUF_SIZE (64) and uint8_t limit (255)
ldh [ $ff00 + c ], a ld [ $ff00 + c ], a
ldh [ $ff00 + c ], a ld [ $ff00 + c ], a

View File

@@ -1,6 +1,6 @@
SECTION "invalid", ROM0[$10000] SECTION "invalid", ROM0[$10000]
ld [hl], [hl] ld [hl], [hl]
ldh a, [$00ff+c] ld a, [$00ff+c]
ld b, [c] ld b, [c]
ld b, [bc] ld b, [bc]
ld b, [$4000] ld b, [$4000]

View File

@@ -154,7 +154,7 @@ ENDM
ld [hl],a ld [hl],a
ld [$ABCD],a ld [$ABCD],a
ldh [$ff00+$DB],a ldh [$ff00+$DB],a
ldh [$ff00+c],a ld [$ff00+c],a
ldh [$ff00 + c],a ldh [$ff00 + c],a
ldh [c],a ldh [c],a
@@ -164,7 +164,7 @@ ENDM
ld a,[$ABCD] ld a,[$ABCD]
ldh a,[$ff00+$DB] ldh a,[$ff00+$DB]
ldh a,[$ff00+c] ldh a,[$ff00+c]
ldh a,[$ff00 + c] ld a,[$ff00 + c]
ldh a,[c] ldh a,[c]
ld [hl+],a ld [hl+],a