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