#ifndef LIBRARIES_CONFIGREGS_H
#define LIBRARIES_CONFIGREGS_H
/*
** $Filename: libraries/configregs.h $
** $Release: 2.04 Includes, V37.4 $
** $Revision: 36.13 $
** $Date: 91/02/15 $
**
** AutoConfig (tm) hardware register and bit definitions
**
** (C) Copyright 1985-1991 Commodore-Amiga, Inc.
** All Rights Reserved
*/


#ifndef EXEC_TYPES_H
#include "exec/types.h"
#endif 




struct ExpansionRom { 
 UBYTE er_Type; 
 UBYTE er_Product; 
 UBYTE er_Flags; 
 UBYTE er_Reserved03; 
 UWORD er_Manufacturer; 
 ULONG er_SerialNumber; 
 UWORD er_InitDiagVec; 
 UBYTE er_Reserved0c;
 UBYTE er_Reserved0d;
 UBYTE er_Reserved0e;
 UBYTE er_Reserved0f;
};




struct ExpansionControl { 
 UBYTE ec_Interrupt; 
 UBYTE ec_Z3_HighBase; 
 UBYTE ec_BaseAddress; 
 UBYTE ec_Shutup; 
 UBYTE ec_Reserved14;
 UBYTE ec_Reserved15;
 UBYTE ec_Reserved16;
 UBYTE ec_Reserved17;
 UBYTE ec_Reserved18;
 UBYTE ec_Reserved19;
 UBYTE ec_Reserved1a;
 UBYTE ec_Reserved1b;
 UBYTE ec_Reserved1c;
 UBYTE ec_Reserved1d;
 UBYTE ec_Reserved1e;
 UBYTE ec_Reserved1f;
};




#define E_SLOTSIZE 0x10000
#define E_SLOTMASK 0xffff
#define E_SLOTSHIFT 16


#define E_EXPANSIONBASE 0x00e80000 
#define EZ3_EXPANSIONBASE 0xff000000 

#define E_EXPANSIONSIZE 0x00080000 
#define E_EXPANSIONSLOTS 8

#define E_MEMORYBASE 0x00200000 
#define E_MEMORYSIZE 0x00800000
#define E_MEMORYSLOTS 128

#define EZ3_CONFIGAREA 0x40000000 
#define EZ3_CONFIGAREAEND 0x7FFFFFFF 
#define EZ3_SIZEGRANULARITY 0x00080000 






#define ERT_TYPEMASK 0xc0 
#define ERT_TYPEBIT 6
#define ERT_TYPESIZE 2
#define ERT_NEWBOARD 0xc0
#define ERT_ZORROII ERT_NEWBOARD
#define ERT_ZORROIII 0x80


#define ERTB_MEMLIST 5 
#define ERTB_DIAGVALID 4 
#define ERTB_CHAINEDCONFIG 3 

#define ERTF_MEMLIST (1<<5)
#define ERTF_DIAGVALID (1<<4)
#define ERTF_CHAINEDCONFIG (1<<3)


#define ERT_MEMMASK 0x07 
#define ERT_MEMBIT 0
#define ERT_MEMSIZE 3





#define ERFF_MEMSPACE (1<<7) 
#define ERFB_MEMSPACE 7 

#define ERFF_NOSHUTUP (1<<6) 
#define ERFB_NOSHUTUP 6

#define ERFF_EXTENDED (1<<5) 
#define ERFB_EXTENDED 5 
 

#define ERFF_ZORRO_III (1<<4) 
#define ERFB_ZORRO_III 4 

#define ERT_Z3_SSMASK 0x0F 
#define ERT_Z3_SSBIT 0 
#define ERT_Z3_SSSIZE 4 
 



#define ECIB_INTENA 1
#define ECIB_RESET 3
#define ECIB_INT2PEND 4
#define ECIB_INT6PEND 5
#define ECIB_INT7PEND 6
#define ECIB_INTERRUPTING 7

#define ECIF_INTENA (1<<1)
#define ECIF_RESET (1<<3)
#define ECIF_INT2PEND (1<<4)
#define ECIF_INT6PEND (1<<5)
#define ECIF_INT7PEND (1<<6)
#define ECIF_INTERRUPTING (1<<7)




#define ERT_MEMNEEDED(t) \
 (((t)&ERT_MEMMASK)? 0x10000 << (((t)&ERT_MEMMASK) -1) : 0x800000 )


#define ERT_SLOTSNEEDED(t) \
 (((t)&ERT_MEMMASK)? 1 << (((t)&ERT_MEMMASK)-1) : 0x80 )




#define EC_MEMADDR(slot) ((slot) << (E_SLOTSHIFT) )


#define EROFFSET(er) ((int)&((struct ExpansionRom *)0)->er)
#define ECOFFSET(ec) \
 (sizeof(struct ExpansionRom)+((int)&((struct ExpansionControl *)0)->ec))





struct DiagArea {
 UBYTE da_Config; 
 UBYTE da_Flags; 
 UWORD da_Size; 
 UWORD da_DiagPoint; 
 UWORD da_BootPoint; 
 UWORD da_Name; 
 
 

 UWORD da_Reserved01; 
 UWORD da_Reserved02;
};



#define DAC_BUSWIDTH 0xC0 
#define DAC_NIBBLEWIDE 0x00
#define DAC_BYTEWIDE 0x40 
#define DAC_WORDWIDE 0x80

#define DAC_BOOTTIME 0x30 
#define DAC_NEVER 0x00 
#define DAC_CONFIGTIME 0x10 
 
#define DAC_BINDTIME 0x20 




#endif 
