1 #ifndef _ERRMSG_H 2 #define _ERRMSG_H 3 /* errmsg.h */ 4 /*****************************************************************************/ 5 /* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only */ 6 /* */ 7 /* Cross Assembler */ 8 /* */ 9 /* Error message definition & associated checking */ 10 /* */ 11 /*****************************************************************************/ 12 13 #include "cpulist.h" 14 #include "symflags.h" 15 #include "datatypes.h" 16 17 typedef enum 18 { 19 ErrNum_None = 0, 20 ErrNum_UselessDisp = 5, 21 ErrNum_ShortAddrPossible = 10, 22 ErrNum_ShortJumpPossible = 20, 23 ErrNum_NoShareFile = 30, 24 ErrNum_BigDecFloat = 40, 25 ErrNum_PrivOrder = 50, 26 ErrNum_DistNull = 60, 27 ErrNum_WrongSegment = 70, 28 ErrNum_InAccSegment = 75, 29 ErrNum_PhaseErr = 80, 30 ErrNum_Overlap = 90, 31 ErrNum_NoCaseHit = 100, 32 ErrNum_InAccPage = 110, 33 ErrNum_RMustBeEven = 120, 34 ErrNum_Obsolete = 130, 35 ErrNum_Unpredictable = 140, 36 ErrNum_AlphaNoSense = 150, 37 ErrNum_Senseless = 160, 38 ErrNum_RepassUnknown = 170, 39 ErrNum_AddrNotAligned = 180, 40 ErrNum_IOAddrNotAllowed = 190, 41 ErrNum_Pipeline = 200, 42 ErrNum_DoubleAdrRegUse = 210, 43 ErrNum_NotBitAddressable = 220, 44 ErrNum_StackNotEmpty = 230, 45 ErrNum_NULCharacter = 240, 46 ErrNum_PageCrossing = 250, 47 ErrNum_WOverRange = 260, 48 ErrNum_NegDUP = 270, 49 ErrNum_ConvIndX = 280, 50 ErrNum_NullResMem = 290, 51 ErrNum_BitNumberTruncated = 300, 52 ErrNum_InvRegisterPointer = 310, 53 ErrNum_MacArgRedef = 320, 54 ErrNum_Deprecated = 330, 55 ErrNum_SrcLEThanDest = 340, 56 ErrNum_TrapValidInstruction = 350, 57 ErrNum_PaddingAdded = 360, 58 ErrNum_DoubleDef = 1000, 59 ErrNum_SymbolUndef = 1010, 60 ErrNum_InvSymName = 1020, 61 ErrNum_InvFormat = 1090, 62 ErrNum_UseLessAttr = 1100, 63 ErrNum_TooLongAttr = 1105, 64 ErrNum_UndefAttr = 1107, 65 ErrNum_WrongArgCnt = 1110, 66 ErrNum_CannotSplitArg = 1112, 67 ErrNum_WrongOptCnt = 1115, 68 ErrNum_OnlyImmAddr = 1120, 69 ErrNum_InvOpSize = 1130, 70 ErrNum_ConfOpSizes = 1131, 71 ErrNum_UndefOpSizes = 1132, 72 ErrNum_StringOrIntButFloat = 1133, 73 ErrNum_IntButFloat = 1134, 74 /* ErrNum_InvOpType = 1135, */ 75 ErrNum_FloatButString = 1136, 76 ErrNum_OpTypeMismatch = 1137, 77 ErrNum_StringButInt = 1138, 78 ErrNum_StringButFloat = 1139, 79 ErrNum_TooManyArgs = 1140, 80 ErrNum_IntButString = 1141, 81 ErrNum_IntOrFloatButString = 1142, 82 ErrNum_ExpectString = 1143, 83 ErrNum_ExpectInt = 1144, 84 ErrNum_StringOrIntOrFloatButReg = 1145, 85 ErrNum_ExpectIntOrString = 1146, 86 ErrNum_ExpectReg = 1147, 87 ErrNum_RegWrongTarget = 1148, 88 ErrNum_NoRelocs = 1150, 89 ErrNum_UnresRelocs = 1155, 90 ErrNum_Unexportable = 1156, 91 ErrNum_UnknownInstruction = 1200, 92 ErrNum_BrackErr = 1300, 93 ErrNum_DivByZero = 1310, 94 ErrNum_UnderRange = 1315, 95 ErrNum_OverRange = 1320, 96 ErrNum_NotPwr2 = 1322, 97 ErrNum_NotAligned = 1325, 98 ErrNum_DistTooBig = 1330, 99 ErrNum_InAccReg = 1335, 100 ErrNum_NoShortAddr = 1340, 101 ErrNum_InvAddrMode = 1350, 102 ErrNum_AddrMustBeEven = 1351, 103 ErrNum_AddrMustBeAligned = 1352, 104 ErrNum_InvParAddrMode = 1355, 105 ErrNum_UndefCond = 1360, 106 ErrNum_IncompCond = 1365, 107 ErrNum_JmpDistTooBig = 1370, 108 ErrNum_DistIsOdd = 1375, 109 ErrNum_SkipTargetMismatch = 1376, 110 ErrNum_InvShiftArg = 1380, 111 ErrNum_Range18 = 1390, 112 ErrNum_Only1 = 1391, 113 ErrNum_ShiftCntTooBig = 1400, 114 ErrNum_InvRegList = 1410, 115 ErrNum_InvCmpMode = 1420, 116 ErrNum_InvCPUType = 1430, 117 ErrNum_InvCtrlReg = 1440, 118 ErrNum_InvReg = 1445, 119 ErrNum_DoubleReg = 1446, 120 ErrNum_RegBankMismatch = 1447, 121 ErrNum_UndefRegSize = 1448, 122 ErrNum_NoSaveFrame = 1450, 123 ErrNum_NoRestoreFrame = 1460, 124 ErrNum_UnknownMacArg = 1465, 125 ErrNum_MissEndif = 1470, 126 ErrNum_InvIfConst = 1480, 127 ErrNum_DoubleSection = 1483, 128 ErrNum_InvSection = 1484, 129 ErrNum_MissingEndSect = 1485, 130 ErrNum_WrongEndSect = 1486, 131 ErrNum_NotInSection = 1487, 132 ErrNum_UndefdForward = 1488, 133 ErrNum_ContForward = 1489, 134 ErrNum_InvFuncArgCnt = 1490, 135 ErrNum_MsgMissingLTORG = 1495, 136 ErrNum_InstructionNotSupported = 1500, 137 ErrNum_FPUNotEnabled = 1501, 138 ErrNum_PMMUNotEnabled = 1502, 139 ErrNum_FullPMMUNotEnabled = 1503, 140 ErrNum_Z80SyntaxNotEnabled = 1504, 141 ErrNum_AddrModeNotSupported = 1505, 142 ErrNum_Z80SyntaxExclusive = 1506, 143 ErrNum_InvBitPos = 1510, 144 ErrNum_OnlyOnOff = 1520, 145 ErrNum_StackEmpty = 1530, 146 ErrNum_NotOneBit = 1540, 147 ErrNum_MissingStruct = 1550, 148 ErrNum_OpenStruct = 1551, 149 ErrNum_WrongStruct = 1552, 150 ErrNum_PhaseDisallowed = 1553, 151 ErrNum_InvStructDir = 1554, 152 ErrNum_DoubleStruct = 1555, 153 ErrNum_UnresolvedStructRef = 1556, 154 ErrNum_NotRepeatable = 1560, 155 ErrNum_ShortRead = 1600, 156 ErrNum_UnknownCodepage = 1610, 157 ErrNum_RomOffs063 = 1700, 158 ErrNum_InvFCode = 1710, 159 ErrNum_InvFMask = 1720, 160 ErrNum_InvMMUReg = 1730, 161 ErrNum_Level07 = 1740, 162 ErrNum_InvBitMask = 1750, 163 ErrNum_InvRegPair = 1760, 164 ErrNum_OpenMacro = 1800, 165 ErrNum_OpenIRP = 1801, 166 ErrNum_OpenIRPC = 1802, 167 ErrNum_OpenREPT = 1803, 168 ErrNum_OpenWHILE = 1804, 169 ErrNum_EXITMOutsideMacro = 1805, 170 ErrNum_TooManyMacParams = 1810, 171 ErrNum_UndefKeyArg = 1811, 172 ErrNum_NoPosArg = 1812, 173 ErrNum_DoubleMacro = 1815, 174 ErrNum_FirstPassCalc = 1820, 175 ErrNum_TooManyNestedIfs = 1830, 176 ErrNum_MissingIf = 1840, 177 ErrNum_RekMacro = 1850, 178 ErrNum_UnknownFunc = 1860, 179 ErrNum_InvFuncArg = 1870, 180 ErrNum_FloatOverflow = 1880, 181 ErrNum_InvArgPair = 1890, 182 ErrNum_NotOnThisAddress = 1900, 183 ErrNum_NotFromThisAddress = 1905, 184 ErrNum_TargOnDiffPage = 1910, 185 ErrNum_TargOnDiffSection = 1911, 186 ErrNum_CodeOverflow = 1920, 187 ErrNum_AdrOverflow = 1925, 188 ErrNum_MixDBDS = 1930, 189 ErrNum_NotInStruct = 1940, 190 ErrNum_ParNotPossible = 1950, 191 ErrNum_InvSegment = 1960, 192 ErrNum_UnknownSegment = 1961, 193 ErrNum_UnknownSegReg = 1962, 194 ErrNum_InvString = 1970, 195 ErrNum_InvRegName = 1980, 196 ErrNum_InvArg = 1985, 197 ErrNum_NoIndir = 1990, 198 ErrNum_NotInThisSegment = 1995, 199 ErrNum_NotInMaxmode = 1996, 200 ErrNum_OnlyInMaxmode = 1997, 201 ErrNum_PackCrossBoundary = 2000, 202 ErrNum_UnitMultipleUsed = 2001, 203 ErrNum_MultipleLongRead = 2002, 204 ErrNum_MultipleLongWrite = 2003, 205 ErrNum_LongReadWithStore = 2004, 206 ErrNum_TooManyRegisterReads = 2005, 207 ErrNum_OverlapDests = 2006, 208 ErrNum_TooManyBranchesInExPacket = 2008, 209 ErrNum_CannotUseUnit = 2009, 210 ErrNum_InvEscSequence = 2010, 211 ErrNum_InvPrefixCombination = 2020, 212 ErrNum_ConstantRedefinedAsVariable = 2030, 213 ErrNum_VariableRedefinedAsConstant = 2035, 214 ErrNum_StructNameMissing = 2040, 215 ErrNum_EmptyArgument = 2050, 216 ErrNum_Unimplemented = 2060, 217 ErrNum_FreestandingUnnamedStruct = 2070, 218 ErrNum_STRUCTEndedByENDUNION = 2080, 219 ErrNum_AddrOnDifferentPage = 2090, 220 ErrNum_UnknownMacExpMod = 2100, 221 ErrNum_TooManyMacExpMod = 2105, 222 ErrNum_ConflictingMacExpMod = 2110, 223 ErrNum_InvalidPrepDir = 2120, 224 ErrNum_ExpectedError = 2130, 225 ErrNum_NoNestExpect = 2140, 226 ErrNum_MissingENDEXPECT = 2150, 227 ErrNum_MissingEXPECT = 2160, 228 ErrNum_NoDefCkptReg = 2170, 229 ErrNum_InvBitField = 2180, 230 ErrNum_ArgValueMissing = 2190, 231 ErrNum_UnknownArg = 2200, 232 ErrNum_InternalError = 10000, 233 ErrNum_OpeningFile = 10001, 234 ErrNum_ListWrError = 10002, 235 ErrNum_FileReadError = 10003, 236 ErrNum_FileWriteError = 10004, 237 ErrNum_HeapOvfl = 10006, 238 ErrNum_StackOvfl = 10007 239 } tErrorNum; 240 241 struct sLineComp; 242 243 extern Boolean ChkRange(LargeInt Value, LargeInt Min, LargeInt Max); 244 245 extern Boolean ChkArgCntExtPos(int ThisCnt, int MinCnt, int MaxCnt, const struct sLineComp *pComp); 246 #define ChkArgCnt(MinCnt, MaxCnt) ChkArgCntExtPos(ArgCnt, MinCnt, MaxCnt, NULL) 247 #define ChkArgCntExt(ThisCnt, MinCnt, MaxCnt) ChkArgCntExtPos(ThisCnt, MinCnt, MaxCnt, NULL) 248 extern Boolean ChkArgCntExtEitherOr(int ThisCnt, int EitherCnt, int OrCnt); 249 250 extern Boolean ChkMinCPUExt(CPUVar MinCPU, tErrorNum ErrorNum); 251 #define ChkMinCPU(MinCPU) ChkMinCPUExt(MinCPU, ErrNum_InstructionNotSupported) 252 253 extern Boolean ChkMaxCPUExt(CPUVar MaxCPU, tErrorNum ErrorNum); 254 #define ChkMaxCPU(MaxCPU) ChkMaxCPUExt(MaxCPU, ErrNum_InstructionNotSupported) 255 256 extern Boolean ChkExactCPUExt(CPUVar CheckCPU, tErrorNum ErrorNum); 257 #define ChkExactCPU(CheckCPU) ChkExactCPUExt(CheckCPU, ErrNum_InstructionNotSupported) 258 259 extern Boolean ChkRangeCPUExt(CPUVar MinCPU, CPUVar MaxCPU, tErrorNum ErrorNum); 260 #define ChkRangeCPU(MinCPU, MaxCPU) ChkRangeCPUExt(MinCPU, MaxCPU, ErrNum_InstructionNotSupported) 261 262 extern Boolean ChkExcludeCPUExt(CPUVar CheckCPU, tErrorNum ErrorNum); 263 #define ChkExcludeCPU(CheckCPU) ChkExcludeCPUExt(CheckCPU, ErrNum_InstructionNotSupported) 264 265 extern int ChkExactCPUList(int ErrorNum, ...); 266 extern int ChkExcludeCPUList(int ErrorNum, ...); 267 268 extern int ChkExactCPUMaskExt(Word CPUMask, CPUVar FirstCPU, tErrorNum ErrorNum); 269 #define ChkExactCPUMask(CPUMask, FirstCPU) ChkExactCPUMaskExt(CPUMask, FirstCPU, ErrNum_InstructionNotSupported) 270 271 extern Boolean ChkSamePage(LargeWord CurrAddr, LargeWord DestAddr, unsigned PageBits, tSymbolFlags DestFlags); 272 273 #endif /* _ERRMSG_H */ 274