mirror of
https://github.com/gbdev/rgbds.git
synced 2025-11-20 18:22:07 +00:00
Deprecate LDH with $00-$FF (#1575)
This commit is contained in:
@@ -53,7 +53,7 @@ struct Expression {
|
|||||||
void makeUnaryOp(RPNCommand op, Expression &&src);
|
void makeUnaryOp(RPNCommand op, Expression &&src);
|
||||||
void makeBinaryOp(RPNCommand op, Expression &&src1, Expression const &src2);
|
void makeBinaryOp(RPNCommand op, Expression &&src1, Expression const &src2);
|
||||||
|
|
||||||
void makeCheckHRAM();
|
bool makeCheckHRAM();
|
||||||
void makeCheckRST();
|
void makeCheckRST();
|
||||||
|
|
||||||
void checkNBit(uint8_t n) const;
|
void checkNBit(uint8_t n) const;
|
||||||
|
|||||||
@@ -267,6 +267,23 @@ Instead, use
|
|||||||
.Ql LDH [C], A
|
.Ql LDH [C], A
|
||||||
and
|
and
|
||||||
.Ql LDH A, [C] .
|
.Ql LDH A, [C] .
|
||||||
|
.Ss LDH [n8], A and LDH A, [n8]
|
||||||
|
Deprecated in 0.9.0.
|
||||||
|
.Pp
|
||||||
|
.Ql LDH
|
||||||
|
used to treat "addresses" from
|
||||||
|
.Ad $00
|
||||||
|
to
|
||||||
|
.Ad $FF
|
||||||
|
as if they were the low byte of an address from
|
||||||
|
.Ad $FF00
|
||||||
|
to
|
||||||
|
.Ad $FFFF .
|
||||||
|
.Pp
|
||||||
|
Instead, use
|
||||||
|
.Ql LDH [n16], A
|
||||||
|
and
|
||||||
|
.Ql LDH A, [n16] .
|
||||||
.Ss rgbasm -i
|
.Ss rgbasm -i
|
||||||
Deprecated in 0.6.0, removed in 0.8.0.
|
Deprecated in 0.6.0, removed in 0.8.0.
|
||||||
.Pp
|
.Pp
|
||||||
|
|||||||
@@ -1949,13 +1949,23 @@ z80_ldd:
|
|||||||
|
|
||||||
z80_ldh:
|
z80_ldh:
|
||||||
Z80_LDH MODE_A COMMA op_mem_ind {
|
Z80_LDH MODE_A COMMA op_mem_ind {
|
||||||
$4.makeCheckHRAM();
|
if ($4.makeCheckHRAM()) {
|
||||||
|
warning(
|
||||||
|
WARNING_OBSOLETE,
|
||||||
|
"LDH is deprecated with values from $00 to $FF; use $FF00 to $FFFF\n"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
sect_ConstByte(0xF0);
|
sect_ConstByte(0xF0);
|
||||||
sect_RelByte($4, 1);
|
sect_RelByte($4, 1);
|
||||||
}
|
}
|
||||||
| Z80_LDH op_mem_ind COMMA MODE_A {
|
| Z80_LDH op_mem_ind COMMA MODE_A {
|
||||||
$2.makeCheckHRAM();
|
if ($2.makeCheckHRAM()) {
|
||||||
|
warning(
|
||||||
|
WARNING_OBSOLETE,
|
||||||
|
"LDH is deprecated with values from $00 to $FF; use $FF00 to $FFFF\n"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
sect_ConstByte(0xE0);
|
sect_ConstByte(0xE0);
|
||||||
sect_RelByte($2, 1);
|
sect_RelByte($2, 1);
|
||||||
|
|||||||
@@ -568,16 +568,20 @@ void Expression::makeBinaryOp(RPNCommand op, Expression &&src1, Expression const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Expression::makeCheckHRAM() {
|
bool Expression::makeCheckHRAM() {
|
||||||
isSymbol = false;
|
isSymbol = false;
|
||||||
if (!isKnown()) {
|
if (!isKnown()) {
|
||||||
*reserveSpace(1) = RPN_HRAM;
|
*reserveSpace(1) = RPN_HRAM;
|
||||||
} else if (int32_t val = value(); val >= 0xFF00 && val <= 0xFFFF) {
|
} else if (int32_t val = value(); val >= 0xFF00 && val <= 0xFFFF) {
|
||||||
// That range is valid, but only keep the lower byte
|
// That range is valid, but only keep the lower byte
|
||||||
data = val & 0xFF;
|
data = val & 0xFF;
|
||||||
} else if (val < 0 || val > 0xFF) {
|
} else if (val >= 0 && val <= 0xFF) {
|
||||||
|
// That range is valid, but deprecated
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
error("Source address $%" PRIx32 " not between $FF00 to $FFFF\n", val);
|
error("Source address $%" PRIx32 " not between $FF00 to $FFFF\n", val);
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Expression::makeCheckRST() {
|
void Expression::makeCheckRST() {
|
||||||
|
|||||||
@@ -356,6 +356,12 @@ static int32_t computeRPNExpr(Patch const &patch, std::vector<Symbol> const &fil
|
|||||||
isError = true;
|
isError = true;
|
||||||
}
|
}
|
||||||
value = 0;
|
value = 0;
|
||||||
|
} else if (value >= 0 && value <= 0xFF) {
|
||||||
|
warning(
|
||||||
|
patch.src,
|
||||||
|
patch.lineNo,
|
||||||
|
"LDH is deprecated with values from $00 to $FF; use $FF00 to $FFFF"
|
||||||
|
);
|
||||||
}
|
}
|
||||||
value &= 0xFF;
|
value &= 0xFF;
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
warning: deprecated-ldio.asm(5): [-Wobsolete]
|
||||||
|
LDH is deprecated with values from $00 to $FF; use $FF00 to $FFFF
|
||||||
|
warning: deprecated-ldio.asm(6): [-Wobsolete]
|
||||||
|
LDH is deprecated with values from $00 to $FF; use $FF00 to $FFFF
|
||||||
warning: deprecated-ldio.asm(8): [-Wobsolete]
|
warning: deprecated-ldio.asm(8): [-Wobsolete]
|
||||||
LD [C], A is deprecated; use LDH [C], A
|
LD [C], A is deprecated; use LDH [C], A
|
||||||
warning: deprecated-ldio.asm(9): [-Wobsolete]
|
warning: deprecated-ldio.asm(9): [-Wobsolete]
|
||||||
@@ -10,6 +14,10 @@ warning: deprecated-ldio.asm(15): [-Wobsolete]
|
|||||||
LDIO is deprecated; use LDH
|
LDIO is deprecated; use LDH
|
||||||
warning: deprecated-ldio.asm(16): [-Wobsolete]
|
warning: deprecated-ldio.asm(16): [-Wobsolete]
|
||||||
LDIO is deprecated; use LDH
|
LDIO is deprecated; use LDH
|
||||||
|
warning: deprecated-ldio.asm(20): [-Wobsolete]
|
||||||
|
LDH is deprecated with values from $00 to $FF; use $FF00 to $FFFF
|
||||||
|
warning: deprecated-ldio.asm(21): [-Wobsolete]
|
||||||
|
LDH is deprecated with values from $00 to $FF; use $FF00 to $FFFF
|
||||||
warning: deprecated-ldio.asm(23): [-Wobsolete]
|
warning: deprecated-ldio.asm(23): [-Wobsolete]
|
||||||
LD [C], A is deprecated; use LDH [C], A
|
LD [C], A is deprecated; use LDH [C], A
|
||||||
warning: deprecated-ldio.asm(24): [-Wobsolete]
|
warning: deprecated-ldio.asm(24): [-Wobsolete]
|
||||||
|
|||||||
Reference in New Issue
Block a user