aboutsummaryrefslogtreecommitdiffstats
path: root/asmdef.h
diff options
context:
space:
mode:
Diffstat (limited to 'asmdef.h')
-rw-r--r--asmdef.h400
1 files changed, 400 insertions, 0 deletions
diff --git a/asmdef.h b/asmdef.h
new file mode 100644
index 0000000..94fb312
--- /dev/null
+++ b/asmdef.h
@@ -0,0 +1,400 @@
+/* asmdef.h */
+/*****************************************************************************/
+/* AS-Portierung */
+/* */
+/* global benutzte Variablen und Definitionen */
+/* */
+/* Historie: 4. 5.1996 Grundsteinlegung */
+/* 24. 6.1998 Zeichenübersetzungstabellen */
+/* 24. 7.1998 Debug-Modus NoICE */
+/* 25. 7.1998 PassNo --> Integer */
+/* 17. 8.1998 InMacroFlag hierher verschoben */
+/* 18. 8.1998 RadixBase hinzugenommen */
+/* ArgStr-Feld war eins zu kurz */
+/* 19. 8.1998 BranchExt-Variablen */
+/* 29. 8.1998 ActListGran hinzugenommen */
+/* 1. 1.1999 SegLimits dazugenommen */
+/* SegInits --> LargeInt */
+/* 9. 1.1999 ChkPC jetzt mit Adresse als Parameter */
+/* 17. 4.1999 DefCPU hinzugenommen */
+/* 30. 5.1999 OutRadixBase hinzugenommen */
+/* 10. 7.1999 Symbolrecord hierher verschoben */
+/* 22. 9.1999 RelocEntry definiert */
+/* 5.11.1999 ExtendErrors von Boolean nach ShortInt */
+/* */
+/*****************************************************************************/
+
+#include "chunks.h"
+
+#include "fileformat.h"
+
+typedef Byte CPUVar;
+
+typedef struct _TCPUDef
+ {
+ struct _TCPUDef *Next;
+ char *Name;
+ CPUVar Number,Orig;
+ void (*SwitchProc)(
+#ifdef __PROTOS__
+ void
+#endif
+ );
+ } TCPUDef,*PCPUDef;
+
+typedef enum {TempInt,TempFloat,TempString,TempNone} TempType;
+
+typedef struct _RelocEntry
+ {
+ struct _RelocEntry *Next;
+ char *Ref;
+ Byte Add;
+ } TRelocEntry, *PRelocEntry;
+
+typedef struct
+ {
+ TempType Typ;
+ PRelocEntry Relocs;
+ union
+ {
+ LargeInt Int;
+ Double Float;
+ String Ascii;
+ } Contents;
+ } TempResult;
+
+typedef struct
+ {
+ TempType Typ;
+ TRelocEntry *Relocs;
+ union
+ {
+ LargeInt IWert;
+ Double FWert;
+ char *SWert;
+ } Contents;
+ } SymbolVal;
+
+typedef struct _TCrossRef
+ {
+ struct _TCrossRef *Next;
+ Byte FileNum;
+ LongInt LineNum;
+ Integer OccNum;
+ } TCrossRef,*PCrossRef;
+
+typedef struct _SymbolEntry
+ {
+ struct _SymbolEntry *Left,*Right;
+ ShortInt Balance;
+ LongInt Attribute;
+ char *SymName;
+ Byte SymType;
+ ShortInt SymSize;
+ Boolean Defined,Used,Changeable;
+ SymbolVal SymWert;
+ PCrossRef RefList;
+ Byte FileNum;
+ LongInt LineNum;
+ TRelocEntry *Relocs;
+ } SymbolEntry,*SymbolPtr;
+
+typedef struct _TPatchEntry
+ {
+ struct _TPatchEntry *Next;
+ LargeWord Address;
+ Byte *RelocType;
+ } TPatchEntry, *PPatchEntry;
+
+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
+
+#ifdef HAS64
+#define MaxLargeInt 0x7fffffffffffffffll
+#else
+#define MaxLargeInt 0x7fffffffl
+#endif
+
+extern char SrcSuffix[],IncSuffix[],PrgSuffix[],LstSuffix[],
+ MacSuffix[],PreSuffix[],LogSuffix[],MapSuffix[],
+ OBJSuffix[];
+
+#define MomCPUName "MOMCPU" /* mom. Prozessortyp */
+#define MomCPUIdentName "MOMCPUNAME" /* mom. Prozessortyp */
+#define SupAllowedName "INSUPMODE" /* privilegierte Befehle erlaubt */
+#define DoPaddingName "PADDING" /* Padding an */
+#define MaximumName "INMAXMODE" /* CPU im Maximum-Modus */
+#define FPUAvailName "HASFPU" /* FPU-Befehle erlaubt */
+#define LstMacroExName "MACEXP" /* expandierte Makros anzeigen */
+#define ListOnName "LISTON" /* Listing an/aus */
+#define RelaxedName "RELAXED" /* alle Zahlenschreibweisen zugelassen */
+#define SrcModeName "INSRCMODE" /* CPU im Quellcode-kompatiblen Modus */
+#define BigEndianName "BIGENDIAN" /* Datenablage MSB first */
+#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 DefStackName "DEFSTACK" /* Default-Stack */
+
+extern char *EnvName;
+
+#define ParMax 20
+
+#define ChapMax 4
+
+#define StructSeg (PCMax+1)
+
+extern char *SegNames[PCMax+1];
+extern char SegShorts[PCMax+1];
+
+extern LongInt Magic;
+
+#define AscOfs '0'
+
+#define MaxCodeLen 1024
+
+extern char *InfoMessCopyright;
+
+typedef void (*SimpProc)(
+#ifdef __PROTOS__
+void
+#endif
+);
+
+typedef Word WordField[6]; /* fuer Zahlenumwandlung */
+typedef char *ArgStrField[ParMax+1];/* Feld mit Befehlsparametern */
+typedef char *StringPtr;
+
+typedef enum {ConstModeIntel, /* Hex xxxxh, Okt xxxxo, Bin xxxxb */
+ ConstModeMoto, /* Hex $xxxx, Okt @xxxx, Bin %xxxx */
+ ConstModeC} /* Hex 0x..., Okt 0...., Bin ----- */
+ TConstMode;
+
+typedef struct _TFunction
+ {
+ struct _TFunction *Next;
+ Byte ArguCnt;
+ StringPtr Name,Definition;
+ } TFunction,*PFunction;
+
+typedef struct _TTransTable
+ {
+ struct _TTransTable *Next;
+ char *Name;
+ unsigned char *Table;
+ } TTransTable,*PTransTable;
+
+typedef struct _TSaveState
+ {
+ struct _TSaveState *Next;
+ CPUVar SaveCPU;
+ Integer SavePC;
+ Byte SaveListOn;
+ Boolean SaveLstMacroEx;
+ PTransTable SaveTransTable;
+ } TSaveState,*PSaveState;
+
+typedef struct _TForwardSymbol
+ {
+ struct _TForwardSymbol *Next;
+ StringPtr Name;
+ LongInt DestSection;
+ } TForwardSymbol,*PForwardSymbol;
+
+typedef struct _TSaveSection
+ {
+ struct _TSaveSection *Next;
+ PForwardSymbol LocSyms,GlobSyms,ExportSyms;
+ LongInt Handle;
+ } TSaveSection,*PSaveSection;
+
+typedef struct _TDefinement
+ {
+ struct _TDefinement *Next;
+ StringPtr TransFrom,TransTo;
+ Byte Compiled[256];
+ } TDefinement,*PDefinement;
+
+typedef struct _TStructure
+ {
+ struct _TStructure *Next;
+ Boolean DoExt;
+ char *Name;
+ LargeWord CurrPC;
+ } TStructure,*PStructure;
+
+extern StringPtr SourceFile;
+
+extern StringPtr ClrEol;
+extern StringPtr CursUp;
+
+extern LargeWord PCs[StructSeg+1];
+extern LargeWord StartAdr;
+extern Boolean StartAdrPresent;
+extern LargeWord Phases[StructSeg+1];
+extern Word Grans[StructSeg+1];
+extern Word ListGrans[StructSeg+1];
+extern ChunkList SegChunks[StructSeg+1];
+extern Integer ActPC;
+extern Boolean PCsUsed[StructSeg+1];
+extern LargeInt SegInits[PCMax+1];
+extern LargeInt SegLimits[PCMax+1];
+extern LongInt ValidSegs;
+extern Boolean ENDOccured;
+extern Boolean Retracted;
+extern Boolean ListToStdout,ListToNull;
+
+extern Word TypeFlag;
+extern ShortInt SizeFlag;
+
+extern Integer PassNo;
+extern Integer JmpErrors;
+extern Boolean ThrowErrors;
+extern Boolean Repass;
+extern Byte MaxSymPass;
+extern Byte ShareMode;
+extern DebugType DebugMode;
+extern Byte ListMode;
+extern Byte ListOn;
+extern Boolean MakeUseList;
+extern Boolean MakeCrossList;
+extern Boolean MakeSectionList;
+extern Boolean MakeIncludeList;
+extern Boolean RelaxedMode;
+extern Byte ListMask;
+extern ShortInt ExtendErrors;
+
+extern LongInt MomSectionHandle;
+extern PSaveSection SectionStack;
+
+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 QuietMode;
+extern Boolean HardRanges;
+extern char *DivideChars;
+extern Boolean HasAttrs;
+extern char *AttrChars;
+extern Boolean MsgIfRepass;
+extern Integer PassNoForMessage;
+extern Boolean CaseSensitive;
+
+extern FILE *PrgFile;
+
+extern StringPtr ErrorPath,ErrorName;
+extern StringPtr OutName;
+extern Boolean IsErrorOpen;
+extern StringPtr CurrFileName;
+extern LongInt CurrLine;
+extern LongInt MomLineCounter;
+extern LongInt LineSum;
+extern LongInt MacLineSum;
+
+extern LongInt NOPCode;
+extern Boolean TurnWords;
+extern Byte HeaderID;
+extern char *PCSymbol;
+extern TConstMode ConstMode;
+extern Boolean SetIsOccupied;
+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 void (*InitPassProc)(void);
+extern void (*ClearUpProc)(void);
+
+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 Boolean DoLst,NextDoLst;
+extern StringPtr ShareName;
+extern CPUVar MomCPU,MomVirtCPU;
+extern char DefCPU[20];
+extern char MomCPUIdent[10];
+extern PCPUDef FirstCPUDef;
+extern CPUVar CPUCnt;
+
+extern Boolean FPUAvail;
+extern Boolean DoPadding;
+extern Boolean SupAllowed;
+extern Boolean Maximum;
+extern Boolean DoBranchExt;
+
+extern LargeWord RadixBase, OutRadixBase;
+
+extern StringPtr LabPart,OpPart,AttrPart,ArgPart,CommPart,LOpPart;
+extern char AttrSplit;
+extern ArgStrField ArgStr;
+extern Byte ArgCnt;
+extern StringPtr OneLine;
+
+extern Byte LstCounter;
+extern Word PageCounter[ChapMax+1];
+extern Byte ChapDepth;
+extern StringPtr ListLine;
+extern Byte PageLength,PageWidth;
+extern Boolean LstMacroEx;
+extern StringPtr PrtInitString;
+extern StringPtr PrtExitString;
+extern StringPtr PrtTitleString;
+extern StringPtr ExtendError;
+
+extern Byte StopfZahl;
+
+extern Boolean SuppWarns;
+
+#define CharTransTable CurrTransTable->Table
+extern PTransTable TransTables,CurrTransTable;
+
+extern PFunction FirstFunction;
+
+extern PDefinement FirstDefine;
+
+extern PStructure StructureStack;
+extern int StructSaveSeg;
+
+extern PSaveState FirstSaveState;
+
+extern Boolean MakeDebug;
+extern FILE *Debug;
+
+
+extern void AsmDefInit(void);
+
+extern void NullProc(void);
+
+extern void Default_InternSymbol(char *Asc, TempResult *Erg);
+
+
+extern void asmdef_init(void);