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