1 #ifndef HARDWARE_CUSTOM_H
    2 #define HARDWARE_CUSTOM_H
    3 
    4 /*
    5 	custom-chip 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 Custom
   18 {
   19 	VOLATILE UWORD bltddat;
   20 	VOLATILE UWORD dmaconr;
   21 	VOLATILE UWORD vposr;
   22 	VOLATILE UWORD vhposr;
   23 	VOLATILE UWORD dskdatr;
   24 	VOLATILE UWORD joy0dat;
   25 	VOLATILE UWORD joy1dat;
   26 	VOLATILE UWORD clxdat;
   27 	VOLATILE UWORD adkconr;
   28 	VOLATILE UWORD pot0dat;
   29 	VOLATILE UWORD pot1dat;
   30 	VOLATILE UWORD potinp;
   31 	VOLATILE UWORD serdatr;
   32 	VOLATILE UWORD dskbytr;
   33 	VOLATILE UWORD intenar;
   34 	VOLATILE UWORD intreqr;
   35 	VOLATILE APTR  dskpt;
   36 	VOLATILE UWORD dsklen;
   37 	VOLATILE UWORD dskdat;
   38 	VOLATILE UWORD refptr;
   39 	VOLATILE UWORD vposw;
   40 	VOLATILE UWORD vhposw;
   41 	VOLATILE UWORD copcon;
   42 	VOLATILE UWORD serdat;
   43 	VOLATILE UWORD serper;
   44 	VOLATILE UWORD potgo;
   45 	VOLATILE UWORD joytest;
   46 	VOLATILE UWORD strequ;
   47 	VOLATILE UWORD strvbl;
   48 	VOLATILE UWORD strhor;
   49 	VOLATILE UWORD strlong;
   50 	VOLATILE UWORD bltcon0;
   51 	VOLATILE UWORD bltcon1;
   52 	VOLATILE UWORD bltafwm;
   53 	VOLATILE UWORD bltalwm;
   54 	VOLATILE APTR  bltcpt;
   55 	VOLATILE APTR  bltbpt;
   56 	VOLATILE APTR  bltapt;
   57 	VOLATILE APTR  bltdpt;
   58 	VOLATILE UWORD bltsize;
   59 	VOLATILE UBYTE pad2d;
   60 	VOLATILE UBYTE bltcon0l;
   61 	VOLATILE UWORD bltsizv;
   62 	VOLATILE UWORD bltsizh;
   63 	VOLATILE UWORD bltcmod;
   64 	VOLATILE UWORD bltbmod;
   65 	VOLATILE UWORD bltamod;
   66 	VOLATILE UWORD bltdmod;
   67 	VOLATILE UWORD pad34[4];
   68 	VOLATILE UWORD bltcdat;
   69 	VOLATILE UWORD bltbdat;
   70 	VOLATILE UWORD bltadat;
   71 	VOLATILE UWORD pad3b[3];
   72 	VOLATILE UWORD deniseid;
   73 	VOLATILE UWORD dsksync;
   74 	VOLATILE ULONG cop1lc;
   75 	VOLATILE ULONG cop2lc;
   76 	VOLATILE UWORD copjmp1;
   77 	VOLATILE UWORD copjmp2;
   78 	VOLATILE UWORD copins;
   79 	VOLATILE UWORD diwstrt;
   80 	VOLATILE UWORD diwstop;
   81 	VOLATILE UWORD ddfstrt;
   82 	VOLATILE UWORD ddfstop;
   83 	VOLATILE UWORD dmacon;
   84 	VOLATILE UWORD clxcon;
   85 	VOLATILE UWORD intena;
   86 	VOLATILE UWORD intreq;
   87 	VOLATILE UWORD adkcon;
   88 
   89 	struct AudChannel
   90 	{
   91 		VOLATILE UWORD *ac_ptr;
   92 		VOLATILE UWORD  ac_len;
   93 		VOLATILE UWORD  ac_per;
   94 		VOLATILE UWORD  ac_vol;
   95 		VOLATILE UWORD  ac_dat;
   96 		VOLATILE UWORD  ac_pad[2];
   97 	}     aud[4];
   98 
   99 	VOLATILE APTR  bplpt[8];
  100 	VOLATILE UWORD bplcon0;
  101 	VOLATILE UWORD bplcon1;
  102 	VOLATILE UWORD bplcon2;
  103 	VOLATILE UWORD bplcon3;
  104 	VOLATILE UWORD bpl1mod;
  105 	VOLATILE UWORD bpl2mod;
  106 	VOLATILE UWORD bplcon4;
  107 	VOLATILE UWORD clxcon2;
  108 	VOLATILE UWORD bpldat[8];
  109 	VOLATILE APTR  sprpt[8];
  110 
  111 	struct SpriteDef
  112 	{
  113 		VOLATILE UWORD pos;
  114 		VOLATILE UWORD ctl;
  115 		VOLATILE UWORD dataa;
  116 		VOLATILE UWORD datab;
  117 	}     spr[8];
  118 
  119 	VOLATILE UWORD color[32];
  120 	VOLATILE UWORD htotal;
  121 	VOLATILE UWORD hsstop;
  122 	VOLATILE UWORD hbstrt;
  123 	VOLATILE UWORD hbstop;
  124 	VOLATILE UWORD vtotal;
  125 	VOLATILE UWORD vsstop;
  126 	VOLATILE UWORD vbstrt;
  127 	VOLATILE UWORD vbstop;
  128 	VOLATILE UWORD sprhstrt;
  129 	VOLATILE UWORD sprhstop;
  130 	VOLATILE UWORD bplhstrt;
  131 	VOLATILE UWORD bplhstop;
  132 	VOLATILE UWORD hhposw;
  133 	VOLATILE UWORD hhposr;
  134 	VOLATILE UWORD beamcon0;
  135 	VOLATILE UWORD hsstrt;
  136 	VOLATILE UWORD vsstrt;
  137 	VOLATILE UWORD hcenter;
  138 	VOLATILE UWORD diwhigh;
  139 	VOLATILE UWORD padf3[11];
  140 	VOLATILE UWORD fmode;
  141 };
  142 
  143 
  144 #ifdef ECS_SPECIFIC
  145 
  146 #define VARVBLANK    0x1000
  147 #define LOLDIS       0x0800
  148 #define CSCBLANKEN   0x0400
  149 #define VARVSYNC     0x0200
  150 #define VARHSYNC     0x0100
  151 #define VARBEAM      0x0080
  152 #define DISPLAYDUAL  0x0040
  153 #define DISPLAYPAL   0x0020
  154 #define VARCSYNC     0x0010
  155 #define CSBLANK      0x0008
  156 #define CSYNCTRUE    0x0004
  157 #define VSYNCTRUE    0x0002
  158 #define HSYNCTRUE    0x0001
  159 
  160 #define USE_BPLCON3  1
  161 
  162 #define BPLCON2_ZDCTEN     (1<<10)
  163 #define BPLCON2_ZDBPEN     (1<<11)
  164 #define BPLCON2_ZDBPSEL0   (1<<12)
  165 #define BPLCON2_ZDBPSEL1   (1<<13)
  166 #define BPLCON2_ZDBPSEL2   (1<<14)
  167 
  168 #define BPLCON3_EXTBLNKEN  (1<<0)
  169 #define BPLCON3_EXTBLKZD   (1<<1)
  170 #define BPLCON3_ZDCLKEN    (1<<2)
  171 #define BPLCON3_BRDNTRAN   (1<<4)
  172 #define BPLCON3_BRDNBLNK   (1<<5)
  173 
  174 #endif /* ECS_SPECIFIC */
  175 
  176 
  177 #pragma pack()
  178 
  179 #endif /* HARDWARE_CUSTOM_H */