//
-// RMAC - Reboot's Macro Assembler for all Atari computers
+// RMAC - Renamed Macro Assembler for all Atari computers
// PARMODE.C - Addressing Modes Parser Include
-// Copyright (C) 199x Landon Dyer, 2011-2020 Reboot and Friends
+// Copyright (C) 199x Landon Dyer, 2011-2021 Reboot and Friends
// RMAC derived from MADMAC v1.07 Written by Landon Dyer, 1986
// Source utilised with the kind permission of Landon Dyer
//
AnEXTEN |= EXT_BDSIZEW;
if (optim_warn_flag)
- warn("absolute value in base displacement ranging $FFFF8000..$00007FFF optimised to absolute short");
+ warn("o5: absolute value in base displacement ranging $FFFF8000..$00007FFF optimised to absolute short");
}
else
{
AMn = MEMPOST + ea_PC;
if (optim_warn_flag)
- warn("absolute value in outer displacement ranging $FFFF8000..$00007FFF optimised to absolute short");
+ warn("o5: absolute value in outer displacement ranging $FFFF8000..$00007FFF optimised to absolute short");
}
AnEXTEN |= od_ea;
}
{
//AnEXTEN|=EXT_IISNOIW; // Word outer displacement with IS suppressed
if (optim_warn_flag)
- warn("outer displacement absolute value from $FFFF8000..$00007FFF optimised to absolute short");
+ warn("o5: outer displacement absolute value from $FFFF8000..$00007FFF optimised to absolute short");
}
}
expr_size = EXT_IISPREW;
if (optim_warn_flag)
- warn("outer displacement absolute value from $FFFF8000..$00007FFF optimised to absolute short");
+ warn("o5: outer displacement absolute value from $FFFF8000..$00007FFF optimised to absolute short");
}
}
// expr[.L]
AMn = ABSL;
- // When PC relative is enforced, check for any symbols that aren't
- // EQU'd, in this case it's an illegal mode
- if ((CHECK_OPTS(OPT_PC_RELATIVE)) && (AnEXATTR & REFERENCED) && (AnEXATTR & DEFINED) && (!(AnEXATTR & EQUATED)))
- return error("relocation not allowed");
-
// .L is forced here
if (*tok == DOTL)
{
+ // When PC relative is enforced, check for any symbols that aren't
+ // EQU'd, in this case it's an illegal mode
+ if ((CHECK_OPTS(OPT_PC_RELATIVE)) && (AnEXATTR & (DEFINED | REFERENCED | EQUATED) == (DEFINED | REFERENCED)))
+ return error("relocation not allowed when o30 is enabled");
+
tok++;
- AMn = ABSL;
}
else
{
AMn = ABSW;
if (optim_warn_flag)
- warn("absolute value from $FFFF8000..$00007FFF optimised to absolute short");
+ warn("o0: absolute value from $FFFF8000..$00007FFF optimised to absolute short");
}
}