1 #ifndef LIBRARIES_CONFIGREGS_H
    2 #define LIBRARIES_CONFIGREGS_H
    3 
    4 /*
    5 	AutoConfig(TM) registers and bits
    6 
    7 	Copyright © 2002 The MorphOS Development Team, All Rights Reserved.
    8 */
    9 
   10 #ifndef EXEC_TYPES_H
   11 # include <exec/types.h>
   12 #endif
   13 
   14 #pragma pack(2)
   15 
   16 
   17 struct ExpansionRom
   18 {
   19 	UBYTE er_Type;
   20 	UBYTE er_Product;
   21 	UBYTE er_Flags;
   22 	UBYTE er_Reserved03;
   23 	UWORD er_Manufacturer;
   24 	ULONG er_SerialNumber;
   25 	UWORD er_InitDiagVec;
   26 	UBYTE er_Reserved0c;
   27 	UBYTE er_Reserved0d;
   28 	UBYTE er_Reserved0e;
   29 	UBYTE er_Reserved0f;
   30 };
   31 
   32 
   33 struct ExpansionControl
   34 {
   35 	UBYTE ec_Interrupt;
   36 	UBYTE ec_Z3_HighBase;
   37 	UBYTE ec_BaseAddress;
   38 	UBYTE ec_Shutup;
   39 	UBYTE ec_Reserved14;
   40 	UBYTE ec_Reserved15;
   41 	UBYTE ec_Reserved16;
   42 	UBYTE ec_Reserved17;
   43 	UBYTE ec_Reserved18;
   44 	UBYTE ec_Reserved19;
   45 	UBYTE ec_Reserved1a;
   46 	UBYTE ec_Reserved1b;
   47 	UBYTE ec_Reserved1c;
   48 	UBYTE ec_Reserved1d;
   49 	UBYTE ec_Reserved1e;
   50 	UBYTE ec_Reserved1f;
   51 };
   52 
   53 
   54 #define E_SLOTSIZE   0x10000
   55 #define E_SLOTMASK   0xffff
   56 #define E_SLOTSHIFT  16
   57 
   58 
   59 #define E_EXPANSIONBASE      0x00E80000
   60 #define EZ3_EXPANSIONBASE    0xFF000000
   61 
   62 #define E_EXPANSIONSIZE      0x00080000
   63 #define E_EXPANSIONSLOTS     8
   64 
   65 #define E_MEMORYBASE         0x00200000
   66 #define E_MEMORYSIZE         0x00800000
   67 #define E_MEMORYSLOTS        128
   68 
   69 #define EZ3_CONFIGAREA       0x40000000
   70 #define EZ3_CONFIGAREAEND    0x7FFFFFFF
   71 #define EZ3_SIZEGRANULARITY  0x00080000
   72 
   73 
   74 #define ERT_TYPEMASK        0xC0
   75 #define ERT_TYPEBIT         6
   76 #define ERT_TYPESIZE        2
   77 #define ERT_NEWBOARD        0xC0
   78 #define ERT_ZORROII         ERT_NEWBOARD
   79 #define ERT_ZORROIII        0x80
   80 
   81 #define ERTB_MEMLIST        5
   82 #define ERTB_DIAGVALID      4
   83 #define ERTB_CHAINEDCONFIG  3
   84 
   85 #define ERTF_MEMLIST        (1<<ERTB_MEMLIST)
   86 #define ERTF_DIAGVALID      (1<<ERTB_DIAGVALID)
   87 #define ERTF_CHAINEDCONFIG  (1<<ERTB_CHAINEDCONFIG)
   88 
   89 #define ERT_MEMMASK         0x07
   90 #define ERT_MEMBIT          0
   91 #define ERT_MEMSIZE         3
   92 
   93 
   94 #define ERFB_MEMSPACE   7
   95 #define ERFB_NOSHUTUP   6
   96 #define ERFB_EXTENDED   5
   97 #define ERFB_ZORRO_III  4
   98 
   99 #define ERFF_MEMSPACE   (1<<ERFB_MEMSPACE)
  100 #define ERFF_NOSHUTUP   (1<<ERFB_NOSHUTUP)
  101 #define ERFF_EXTENDED   (1<<ERFB_EXTENDED)
  102 #define ERFF_ZORRO_III  (1<<ERFB_ZORRO_III)
  103 
  104 #define ERT_Z3_SSMASK   0x0F
  105 #define ERT_Z3_SSBIT    0
  106 #define ERT_Z3_SSSIZE   4
  107 
  108 
  109 #define ECIB_INTENA         1
  110 #define ECIB_RESET          3
  111 #define ECIB_INT2PEND       4
  112 #define ECIB_INT6PEND       5
  113 #define ECIB_INT7PEND       6
  114 #define ECIB_INTERRUPTING   7
  115 
  116 #define ECIF_INTENA         (1<<ECIB_INTENA)
  117 #define ECIF_RESET          (1<<ECIB_RESET)
  118 #define ECIF_INT2PEND       (1<<ECIB_INT2PEND)
  119 #define ECIF_INT6PEND       (1<<ECIB_INT6PEND)
  120 #define ECIF_INT7PEND       (1<<ECIB_INT7PEND)
  121 #define ECIF_INTERRUPTING   (1<<ECIB_INTERRUPTING)
  122 
  123 
  124 #define ERT_MEMNEEDED(t)    (((t) & ERT_MEMMASK) ? 0x10000 << (((t) & ERT_MEMMASK) - 1) : 0x800000)
  125 #define ERT_SLOTSNEEDED(t)  (((t) & ERT_MEMMASK) ?       1 << (((t) & ERT_MEMMASK) - 1) : 0x80)
  126 
  127 #define EC_MEMADDR(slot)    ((slot) << (E_SLOTSHIFT))
  128 
  129 #define EROFFSET(er)        ((int)&((struct ExpansionRom *)0)->er)
  130 #define ECOFFSET(ec)        (sizeof(struct ExpansionRom) + ((int)&((struct ExpansionControl *)0)->ec))
  131 
  132 
  133 struct DiagArea
  134 {
  135 	UBYTE da_Config;
  136 	UBYTE da_Flags;
  137 	UWORD da_Size;
  138 	UWORD da_DiagPoint;
  139 	UWORD da_BootPoint;
  140 	UWORD da_Name;
  141 
  142 	UWORD da_Reserved01;
  143 	UWORD da_Reserved02;
  144 };
  145 
  146 
  147 #define DAC_BUSWIDTH    0xC0
  148 #define DAC_NIBBLEWIDE  0x00
  149 #define DAC_BYTEWIDE    0x40
  150 #define DAC_WORDWIDE    0x80
  151 
  152 #define DAC_BOOTTIME    0x30
  153 #define DAC_NEVER       0x00
  154 #define DAC_CONFIGTIME  0x10
  155 #define DAC_BINDTIME    0x20
  156 
  157 
  158 #pragma pack()
  159 
  160 #endif /* LIBRARIES_CONFIGREGS_H */