-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathasmdef.h
More file actions
397 lines (336 loc) · 10.7 KB
/
asmdef.h
File metadata and controls
397 lines (336 loc) · 10.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
#ifndef _ASMDEF_H
#define _ASMDEF_H
/* asmdef.h */
/*****************************************************************************/
/* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only */
/* */
/* AS-Portierung */
/* */
/* global benutzte Variablen und Definitionen */
/* */
/*****************************************************************************/
#include <stddef.h>
#include <stdio.h>
#include "chunks.h"
#include "fileformat.h"
#include "dynstr.h"
#include "intformat.h"
#include "strcomp.h"
#include "lstmacroexp.h"
#include "cpulist.h"
#include "tempresult.h"
#include "addrspace.h"
#include "chartrans.h"
typedef struct _TCrossRef
{
struct _TCrossRef *Next;
Byte FileNum;
LongInt LineNum;
Integer OccNum;
} TCrossRef,*PCrossRef;
typedef struct _TPatchEntry
{
struct _TPatchEntry *Next;
LargeWord Address;
char *Ref;
Word len;
LongWord RelocType;
} TPatchEntry, *PPatchEntry;
typedef struct _TExportEntry
{
struct _TExportEntry *Next;
char *Name;
Word len;
LongWord Flags;
LargeWord Value;
} TExportEntry, *PExportEntry;
typedef enum
{
DebugNone,
DebugMAP,
DebugAOUT,
DebugCOFF,
DebugELF,
DebugAtmel,
DebugNoICE
} DebugType;
#define Char_NUL 0
#define Char_BEL '\a'
#define Char_BS '\b'
#define Char_HT 9
#define Char_LF '\n'
#define Char_FF 12
#define Char_CR 13
#define Char_ESC 27
#define ListMask_FormFeed (1 << 0)
#define ListMask_SymbolList (1 << 1)
#define ListMask_MacroList (1 << 2)
#define ListMask_FunctionList (1 << 3)
#define ListMask_LineNums (1 << 4)
#define ListMask_DefineList (1 << 5)
#define ListMask_RegDefList (1 << 6)
#define ListMask_Codepages (1 << 7)
#define ListMask_StructList (1 << 8)
extern char SrcSuffix[],IncSuffix[],PrgSuffix[],LstSuffix[],
MacSuffix[],PreSuffix[],LogSuffix[],MapSuffix[],
OBJSuffix[];
#define MomCPUName "MOMCPU" /* mom. Prozessortyp */
#define MomCPUIdentName "MOMCPUNAME" /* mom. Prozessortyp */
#define MomFPUIdentName "MOMFPUNAME" /* mom. Koprozessortyp */
#define MomPMMUIdentName "MOMPMMUNAME" /* mom. MMU-Typ */
#define DoPaddingName "PADDING" /* Padding an */
#define PackingName "PACKING" /* gepackte Ablage an */
#define ListOnName "LISTON" /* Listing an/aus */
#define RelaxedName "RELAXED" /* alle Zahlenschreibweisen zugelassen */
#define BranchExtName "BRANCHEXT" /* Spruenge autom. verlaengern */
#define FlagTrueName "TRUE" /* Flagkonstanten */
#define FlagFalseName "FALSE"
#define PiName "CONSTPI" /* Zahl Pi */
#define DateName "DATE" /* Datum & Zeit */
#define TimeName "TIME"
#define VerName "VERSION" /* speichert Versionsnummer */
#define CaseSensName "CASESENSITIVE" /* zeigt Gross/Kleinunterscheidung an */
#define Has64Name "HAS64" /* arbeitet Parser mit 64-Bit-Integers ? */
#define ArchName "ARCHITECTURE" /* Zielarchitektur von AS */
#define AttrName "ATTRIBUTE" /* Attributansprache in Makros */
#define LabelName "__LABEL__" /* Labelansprache in Makros */
#define ArgCName "ARGCOUNT" /* Argumentzahlansprache in Makros */
#define AllArgName "ALLARGS" /* Ansprache Argumentliste in Makros */
#define DefStackName "DEFSTACK" /* Default-Stack */
#define NestMaxName "NESTMAX" /* max. nesting level of a macro */
#define DottedStructsName "DOTTEDSTRUCTS" /* struct elements by default with . */
extern const char *EnvName;
/* This results from the tokenized representation of macro arguments
in macro bodys: (31*16) - 4 for special arguments: */
#define ArgCntMax 476
#define ChapMax 4
#define AscOfs '0'
#define MaxCodeLen_Ini 256
#define MaxCodeLen_Max 65535
extern LongWord MaxCodeLen;
#define DEF_NESTMAX 256
typedef void (*SimpProc)(
#ifdef __PROTOS__
void
#endif
);
typedef void (*DissectBitProc)(
#ifdef __PROTOS__
char *pDest, size_t DestSize, LargeWord Inp
#endif
);
typedef Boolean (*tQualifyQuoteFnc)(const char *pStart, const char *pQuotePos);
typedef Word WordField[6]; /* fuer Zahlenumwandlung */
typedef struct _TTransTable
{
struct _TTransTable *Next;
char *Name;
as_chartrans_table_t *p_table;
} TTransTable, *PTransTable;
typedef struct _TSaveState
{
struct _TSaveState *Next;
CPUVar SaveCPU;
char *pSaveCPUArgs;
as_addrspace_t SavePC;
Byte SaveListOn;
tLstMacroExp SaveLstMacroExp;
tLstMacroExpMod SaveLstMacroExpModDefault,
SaveLstMacroExpModOverride;
PTransTable SaveTransTable;
Integer SaveEnumSegment;
LongInt SaveEnumCurrentValue, SaveEnumIncrement;
} TSaveState,*PSaveState;
typedef struct _TForwardSymbol
{
struct _TForwardSymbol *Next;
StringPtr Name;
LongInt DestSection;
StringPtr pErrorPos;
} TForwardSymbol, *PForwardSymbol;
typedef struct _TSaveSection
{
struct _TSaveSection *Next;
PForwardSymbol LocSyms, GlobSyms, ExportSyms;
LongInt Handle;
} TSaveSection, *PSaveSection;
typedef struct sSavePhase
{
struct sSavePhase *pNext;
LargeWord SaveValue;
} tSavePhase;
typedef struct _TDefinement
{
struct _TDefinement *Next;
StringPtr TransFrom, TransTo;
Byte Compiled[256];
} TDefinement, *PDefinement;
typedef struct _ASSUMERec
{
const char *Name;
LongInt *Dest;
LongInt Min,Max;
LongInt NothingVal;
void (*pPostProc)(void);
} ASSUMERec;
extern StringPtr SourceFile;
extern StringPtr CursUp;
extern LargeWord *PCs;
extern Boolean RelSegs;
extern LargeWord StartAdr;
extern LargeWord AfterBSRAddr;
extern Boolean StartAdrPresent;
extern LargeWord *Phases;
extern Word Grans[SegCountPlusStruct];
extern Word ListGrans[SegCountPlusStruct];
extern ChunkList SegChunks[SegCountPlusStruct];
extern as_addrspace_t ActPC;
extern Boolean PCsUsed[SegCountPlusStruct];
extern LargeWord *SegInits;
extern LargeWord *SegLimits;
extern LongInt ValidSegs;
extern Boolean ENDOccured;
extern Boolean Retracted;
extern Boolean ListToStdout,ListToNull;
extern unsigned ASSUMERecCnt;
extern const ASSUMERec *pASSUMERecs;
extern void (*pASSUMEOverride)(void);
extern Integer PassNo;
extern Integer JmpErrors;
extern Boolean ThrowErrors;
extern Boolean Repass;
extern Byte MaxSymPass;
extern Byte ShareMode;
extern DebugType DebugMode;
extern Word NoICEMask;
extern Byte ListMode;
extern Byte ListOn;
extern Integer MaxIncludeLevel;
extern Boolean MakeUseList;
extern Boolean MakeCrossList;
extern Boolean MakeSectionList;
extern Boolean MakeIncludeList;
extern Boolean DefRelaxedMode;
extern Word ListMask;
extern ShortInt ExtendErrors;
extern Integer EnumSegment;
extern LongInt EnumIncrement, EnumCurrentValue;
extern LongWord MaxErrors;
extern LongInt MomSectionHandle;
extern PSaveSection SectionStack;
extern tSavePhase *pPhaseStacks[SegCount];
extern tSymbolSize AttrPartOpSize[2];
extern LongInt CodeLen;
extern Byte *BAsmCode;
extern Word *WAsmCode;
extern LongWord *DAsmCode;
extern Boolean DontPrint;
extern Word ActListGran;
extern Boolean NumericErrors;
extern Boolean CodeOutput;
extern Boolean MacProOutput;
extern Boolean MacroOutput;
extern Boolean HardRanges;
extern const char *DivideChars;
extern Boolean HasAttrs;
extern const char *AttrChars;
extern Boolean MsgIfRepass;
extern Integer PassNoForMessage;
extern Boolean CaseSensitive;
extern LongInt NestMax;
extern Boolean GNUErrors;
extern FILE *PrgFile;
extern StringPtr ErrorPath,ErrorName;
extern StringPtr OutName;
extern Integer CurrIncludeLevel;
extern StringPtr CurrFileName;
extern LongInt CurrLine;
extern LongInt LineSum;
extern LongInt MacLineSum;
extern LongInt NOPCode;
extern Boolean TurnWords;
extern Byte HeaderID;
extern const char *PCSymbol;
extern tIntConstMode IntConstMode;
extern Boolean IntConstModeIBMNoTerm;
extern Boolean (*SetIsOccupiedFnc)(void),
(*SaveIsOccupiedFnc)(void),
(*RestoreIsOccupiedFnc)(void);
extern Boolean SwitchIsOccupied, PageIsOccupied, ShiftIsOccupied;
extern Boolean multi_char_le;
extern Boolean (*DecodeAttrPart)(void);
extern void (*MakeCode)(void);
extern Boolean (*ChkPC)(LargeWord Addr);
extern Boolean (*IsDef)(void);
extern void (*SwitchFrom)(void);
extern void (*InternSymbol)(char *Asc, TempResult *Erg);
extern DissectBitProc DissectBit;
extern DissectRegProc DissectReg;
extern tQualifyQuoteFnc QualifyQuote;
extern StringPtr IncludeList;
extern Integer IncDepth,NextIncDepth;
extern FILE *ErrorFile;
extern FILE *LstFile;
extern FILE *ShareFile;
extern FILE *MacProFile;
extern FILE *MacroFile;
extern Boolean InMacroFlag;
extern StringPtr LstName, MacroName, MacProName;
extern tLstMacroExp DoLst, NextDoLst;
extern StringPtr ShareName;
extern CPUVar MomCPU, MomVirtCPU;
extern StringPtr MomCPUArgs;
extern char DefCPU[20];
extern char MomCPUIdent[20],
MomFPUIdent[20],
MomPMMUIdent[20];
extern int OutRadixBase, ListRadixBase;
extern Boolean ListPCZeroPad;
extern const char *pCommentLeadIn;
extern tStrComp *ArgStr;
extern tStrComp LabPart, CommPart, ArgPart, OpPart, AttrPart;
extern char AttrSplit;
extern Boolean oppart_leading_dot;
extern int ArgCnt;
extern as_dynstr_t OneLine;
#ifdef PROFILE_MEMO
extern unsigned NumMemo;
extern unsigned long NumMemoSum, NumMemoCnt;
#endif
#define forallargs(pArg, cond) \
for (pArg = ArgStr + 1; (cond) && (pArg <= ArgStr + ArgCnt); pArg++)
extern Byte LstCounter;
extern Word PageCounter[ChapMax+1];
extern Byte ChapDepth;
extern StringPtr ListLine;
extern Byte PageLength, PageWidth;
extern tLstMacroExpMod LstMacroExpModOverride, LstMacroExpModDefault;
extern Boolean DottedStructs;
extern StringPtr PrtInitString;
extern StringPtr PrtExitString;
extern StringPtr PrtTitleString;
extern Byte StopfZahl;
extern Boolean SuppWarns;
extern PTransTable TransTables, CurrTransTable;
extern PDefinement FirstDefine;
extern PSaveState FirstSaveState;
extern Boolean MakeDebug;
extern FILE *Debug;
extern Boolean WasIF, WasMACRO;
extern void AsmDefInit(void);
extern void NullProc(void);
extern int SetMaxCodeLen(LongWord NewMaxCodeLen);
extern void Default_InternSymbol(char *Asc, TempResult *Erg);
extern void Default_DissectBit(char *pDest, size_t DestSize, LargeWord BitSpec);
extern void AppendArg(size_t ReqSize);
extern void InsertArg(int Index, size_t ReqSize);
extern Boolean memo_set_pseudo(void);
extern Boolean is_set_pseudo(void);
extern Boolean is_save_pseudo(void);
extern Boolean is_restore_pseudo(void);
extern Boolean memo_switch_pseudo(void);
extern Boolean memo_shift_pseudo(void);
extern Boolean is_page_pseudo(void);
extern void free_forward_symbol(PForwardSymbol p_symbol);
extern void asmdef_init(void);
#endif /* _ASMDEF_H */