#ifndef EXEC_EXECBASE_H
#define EXEC_EXECBASE_H
/*
** $Filename: exec/execbase.h $
** $Release: 2.04 Includes, V37.4 $
** $Revision: 36.18 $
** $Date: 91/10/10 $
**
** Definition of the exec.library base structure.
**
** (C) Copyright 1985-1991 Commodore-Amiga, Inc.
** All Rights Reserved
*/

#ifndef EXEC_LISTS_H
#include "exec/lists.h"
#endif 

#ifndef EXEC_INTERRUPTS_H
#include "exec/interrupts.h"
#endif 

#ifndef EXEC_LIBRARIES_H
#include "exec/libraries.h"
#endif 

#ifndef EXEC_TASKS_H
#include "exec/tasks.h"
#endif 



struct ExecBase {
 struct Library LibNode; 



 UWORD SoftVer; 
 WORD LowMemChkSum; 
 ULONG ChkBase; 
 APTR ColdCapture; 
 APTR CoolCapture; 
 APTR WarmCapture; 
 APTR SysStkUpper; 
 APTR SysStkLower; 
 ULONG MaxLocMem; 
 APTR DebugEntry; 
 APTR DebugData; 
 APTR AlertData; 
 APTR MaxExtMem; 

 UWORD ChkSum; 



 struct IntVector IntVects[16];



 struct Task *ThisTask; 

 ULONG IdleCount; 
 ULONG DispCount; 
 UWORD Quantum; 
 UWORD Elapsed; 
 UWORD SysFlags; 
 BYTE IDNestCnt; 
 BYTE TDNestCnt; 

 UWORD AttnFlags; 

 UWORD AttnResched; 
 APTR ResModules; 
 APTR TaskTrapCode;
 APTR TaskExceptCode;
 APTR TaskExitCode;
 ULONG TaskSigAlloc;
 UWORD TaskTrapAlloc;




 struct List MemList;
 struct List ResourceList;
 struct List DeviceList;
 struct List IntrList;
 struct List LibList;
 struct List PortList;
 struct List TaskReady;
 struct List TaskWait;

 struct SoftIntList SoftInts[5];



 LONG LastAlert[4];

 
 UBYTE VBlankFrequency; 
 UBYTE PowerSupplyFrequency; 

 struct List SemaphoreList;

 
 APTR KickMemPtr; 
 APTR KickTagPtr; 
 APTR KickCheckSum; 



 UWORD ex_Pad0;
 ULONG ex_LaunchPoint; 
 APTR ex_RamLibPrivate;
 
 ULONG ex_EClockFrequency; 
 ULONG ex_CacheControl; 
 ULONG ex_TaskID; 

 ULONG ex_PuddleSize;
 ULONG ex_PoolThreshold;
 struct MinList ex_PublicPool;

 APTR ex_MMULock; 

 UBYTE ex_Reserved[12];
};





#define AFB_68010 0 
#define AFB_68020 1 
#define AFB_68030 2 
#define AFB_68040 3
#define AFB_68881 4 
#define AFB_68882 5
#define AFB_FPU40 6 


#define AFB_PRIVATE 15 

#define AFF_68010 (1L<<0)
#define AFF_68020 (1L<<1)
#define AFF_68030 (1L<<2)
#define AFF_68040 (1L<<3)
#define AFF_68881 (1L<<4)
#define AFF_68882 (1L<<5)
#define AFF_FPU40 (1L<<6)

#define AFF_PRIVATE (1L<<15)







#define CACRF_EnableI (1L<<0) 
#define CACRF_FreezeI (1L<<1) 
#define CACRF_ClearI (1L<<3) 
#define CACRF_IBE (1L<<4) 
#define CACRF_EnableD (1L<<8) 
#define CACRF_FreezeD (1L<<9) 
#define CACRF_ClearD (1L<<11) 
#define CACRF_DBE (1L<<12) 
#define CACRF_WriteAllocate (1L<<13) 
#define CACRF_CopyBack (1L<<31) 

#define DMA_Continue (1L<<1) 
#define DMA_NoModify (1L<<2) 


#endif 
