From ba038e921fcd7c224ea144d68af6043afafde537 Mon Sep 17 00:00:00 2001 From: bbbradsmith Date: Tue, 21 Feb 2023 17:06:21 -0500 Subject: [PATCH] jmp (abs) page wrapping should be an error, not a warning, also only applies to 6502 CPU --- src/ca65/instr.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/ca65/instr.c b/src/ca65/instr.c index d0d7ce64c..503304b5b 100644 --- a/src/ca65/instr.c +++ b/src/ca65/instr.c @@ -1605,11 +1605,12 @@ static void PutJMP (const InsDesc* Ins) if (EvalEA (Ins, &A)) { /* Check for indirect addressing */ - if (A.AddrModeBit & AM65_ABS_IND) { + if (A.AddrModeBit & AM65_ABS_IND && CPU < CPU_65SC02) { /* Compare the low byte of the expression to 0xFF to check for ** a page cross. Be sure to use a copy of the expression otherwise - ** things will go weird later. + ** things will go weird later. This only affects the 6502 CPU, + ** and was corrected in 65C02 and later CPUs in this family. */ ExprNode* E = GenNE (GenByteExpr (CloneExpr (A.Expr)), 0xFF); @@ -1617,7 +1618,7 @@ static void PutJMP (const InsDesc* Ins) unsigned Msg = GetStringId ("\"jmp (abs)\" across page border"); /* Generate the assertion */ - AddAssertion (E, ASSERT_ACT_WARN, Msg); + AddAssertion (E, ASSERT_ACT_ERROR, Msg); } /* No error, output code */