dect
/
asl
Archived
13
0
Fork 0
This repository has been archived on 2022-02-17. You can view files and clone it, but cannot push or open issues or pull requests.
asl/asmdef.h

401 lines
11 KiB
C

/* 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);