--- NDK_3.9/Include/include_h/hardware/custom.h	2001-12-17 14:15:22.000000000 +0100
+++ NDK_3.9/Include/include_h/hardware/custom.h	2018-01-22 18:49:45.382919800 +0100
@@ -23,122 +23,139 @@
 
 
 struct Custom {
-    UWORD   bltddat;
-    UWORD   dmaconr;
-    UWORD   vposr;
-    UWORD   vhposr;
-    UWORD   dskdatr;
-    UWORD   joy0dat;
-    UWORD   joy1dat;
-    UWORD   clxdat;
-    UWORD   adkconr;
-    UWORD   pot0dat;
-    UWORD   pot1dat;
-    UWORD   potinp;
-    UWORD   serdatr;
-    UWORD   dskbytr;
-    UWORD   intenar;
-    UWORD   intreqr;
-    APTR    dskpt;
-    UWORD   dsklen;
-    UWORD   dskdat;
-    UWORD   refptr;
-    UWORD   vposw;
-    UWORD   vhposw;
-    UWORD   copcon;
-    UWORD   serdat;
-    UWORD   serper;
-    UWORD   potgo;
-    UWORD   joytest;
-    UWORD   strequ;
-    UWORD   strvbl;
-    UWORD   strhor;
-    UWORD   strlong;
-    UWORD   bltcon0;
-    UWORD   bltcon1;
-    UWORD   bltafwm;
-    UWORD   bltalwm;
-    APTR    bltcpt;
-    APTR    bltbpt;
-    APTR    bltapt;
-    APTR    bltdpt;
-    UWORD   bltsize;
-    UBYTE   pad2d;
-    UBYTE   bltcon0l;	/* low 8 bits of bltcon0, write only */
-    UWORD   bltsizv;
-    UWORD   bltsizh;	/* 5e */
-    UWORD   bltcmod;
-    UWORD   bltbmod;
-    UWORD   bltamod;
-    UWORD   bltdmod;
-    UWORD   pad34[4];
-    UWORD   bltcdat;
-    UWORD   bltbdat;
-    UWORD   bltadat;
-    UWORD   pad3b[3];
-    UWORD   deniseid;	/* 7c */
-    UWORD   dsksync;
-    ULONG   cop1lc;
-    ULONG   cop2lc;
-    UWORD   copjmp1;
-    UWORD   copjmp2;
-    UWORD   copins;
-    UWORD   diwstrt;
-    UWORD   diwstop;
-    UWORD   ddfstrt;
-    UWORD   ddfstop;
-    UWORD   dmacon;
-    UWORD   clxcon;
-    UWORD   intena;
-    UWORD   intreq;
-    UWORD   adkcon;
+    volatile UWORD   bltddat;
+    volatile UWORD   dmaconr;
+    union {
+    	volatile ULONG vpos32;
+    	struct {
+    		union {
+    			volatile UWORD   vposr;
+    			struct {
+        			volatile UBYTE  vposr_h;
+        			volatile UBYTE  vposr_l;
+    			};
+    		};
+    		union {
+    			volatile UWORD   vhposr;
+    			struct {
+        			volatile UBYTE  vhposr_h;
+        			volatile UBYTE  vhposr_l;
+    			};
+    		};
+    	};
+    };
+    volatile UWORD   dskdatr;
+    volatile UWORD   joy0dat;
+    volatile UWORD   joy1dat;
+    volatile UWORD   clxdat;
+    volatile UWORD   adkconr;
+    volatile UWORD   pot0dat;
+    volatile UWORD   pot1dat;
+    volatile UWORD   potinp;
+    volatile UWORD   serdatr;
+    volatile UWORD   dskbytr;
+    volatile UWORD   intenar;
+    volatile UWORD   intreqr;
+    volatile APTR    dskpt;
+    volatile UWORD   dsklen;
+    volatile UWORD   dskdat;
+    volatile UWORD   refptr;
+    volatile UWORD   vposw;
+    volatile UWORD   vhposw;
+    volatile UWORD   copcon;
+    volatile UWORD   serdat;
+    volatile UWORD   serper;
+    volatile UWORD   potgo;
+    volatile UWORD   joytest;
+    volatile UWORD   strequ;
+    volatile UWORD   strvbl;
+    volatile UWORD   strhor;
+    volatile UWORD   strlong;
+    volatile UWORD   bltcon0;
+    volatile UWORD   bltcon1;
+    volatile UWORD   bltafwm;
+    volatile UWORD   bltalwm;
+    volatile APTR    bltcpt;
+    volatile APTR    bltbpt;
+    volatile APTR    bltapt;
+    volatile APTR    bltdpt;
+    volatile UWORD   bltsize;
+    volatile UBYTE   pad2d;
+    volatile UBYTE   bltcon0l;	/* low 8 bits of bltcon0, write only */
+    volatile UWORD   bltsizv;
+    volatile UWORD   bltsizh;	/* 5e */
+    volatile UWORD   bltcmod;
+    volatile UWORD   bltbmod;
+    volatile UWORD   bltamod;
+    volatile UWORD   bltdmod;
+    volatile UWORD   pad34[4];
+    volatile UWORD   bltcdat;
+    volatile UWORD   bltbdat;
+    volatile UWORD   bltadat;
+    volatile UWORD   pad3b[3];
+    volatile UWORD   deniseid;	/* 7c */
+    volatile UWORD   dsksync;
+    volatile ULONG   cop1lc;
+    volatile ULONG   cop2lc;
+    volatile UWORD   copjmp1;
+    volatile UWORD   copjmp2;
+    volatile UWORD   copins;
+    volatile UWORD   diwstrt;
+    volatile UWORD   diwstop;
+    volatile UWORD   ddfstrt;
+    volatile UWORD   ddfstop;
+    volatile UWORD   dmacon;
+    volatile UWORD   clxcon;
+    volatile UWORD   intena;
+    volatile UWORD   intreq;
+    volatile UWORD   adkcon;
     struct  AudChannel {
-      UWORD *ac_ptr; /* ptr to start of waveform data */
-      UWORD ac_len;	/* length of waveform in words */
-      UWORD ac_per;	/* sample period */
-      UWORD ac_vol;	/* volume */
-      UWORD ac_dat;	/* sample pair */
-      UWORD ac_pad[2];	/* unused */
+      volatile UWORD *ac_ptr; /* ptr to start of waveform data */
+      volatile UWORD ac_len;	/* length of waveform in words */
+      volatile UWORD ac_per;	/* sample period */
+      volatile UWORD ac_vol;	/* volume */
+      volatile UWORD ac_dat;	/* sample pair */
+      volatile UWORD ac_pad[2];	/* unused */
     } aud[4];
-    APTR    bplpt[8];
-    UWORD   bplcon0;
-    UWORD   bplcon1;
-    UWORD   bplcon2;
-    UWORD   bplcon3;
-    UWORD   bpl1mod;
-    UWORD   bpl2mod;
-    UWORD   bplcon4;
-    UWORD   clxcon2;
-    UWORD   bpldat[8];
-    APTR    sprpt[8];
+    volatile APTR    bplpt[8];
+    volatile UWORD   bplcon0;
+    volatile UWORD   bplcon1;
+    volatile UWORD   bplcon2;
+    volatile UWORD   bplcon3;
+    volatile UWORD   bpl1mod;
+    volatile UWORD   bpl2mod;
+    volatile UWORD   bplcon4;
+    volatile UWORD   clxcon2;
+    volatile UWORD   bpldat[8];
+    volatile APTR    sprpt[8];
     struct  SpriteDef {
-      UWORD pos;
-      UWORD ctl;
-      UWORD dataa;
-      UWORD datab;
+      volatile UWORD pos;
+      volatile UWORD ctl;
+      volatile UWORD dataa;
+      volatile UWORD datab;
     } spr[8];
-    UWORD   color[32];
-    UWORD htotal;
-    UWORD hsstop;
-    UWORD hbstrt;
-    UWORD hbstop;
-    UWORD vtotal;
-    UWORD vsstop;
-    UWORD vbstrt;
-    UWORD vbstop;
-    UWORD sprhstrt;
-    UWORD sprhstop;
-    UWORD bplhstrt;
-    UWORD bplhstop;
-    UWORD hhposw;
-    UWORD hhposr;
-    UWORD beamcon0;
-    UWORD hsstrt;
-    UWORD vsstrt;
-    UWORD hcenter;
-    UWORD diwhigh;	/* 1e4 */
-    UWORD padf3[11];
-    UWORD fmode;
+    volatile UWORD   color[32];
+    volatile UWORD htotal;
+    volatile UWORD hsstop;
+    volatile UWORD hbstrt;
+    volatile UWORD hbstop;
+    volatile UWORD vtotal;
+    volatile UWORD vsstop;
+    volatile UWORD vbstrt;
+    volatile UWORD vbstop;
+    volatile UWORD sprhstrt;
+    volatile UWORD sprhstop;
+    volatile UWORD bplhstrt;
+    volatile UWORD bplhstop;
+    volatile UWORD hhposw;
+    volatile UWORD hhposr;
+    volatile UWORD beamcon0;
+    volatile UWORD hsstrt;
+    volatile UWORD vsstrt;
+    volatile UWORD hcenter;
+    volatile UWORD diwhigh;	/* 1e4 */
+    volatile UWORD padf3[11];
+    volatile UWORD fmode;
 };
 
 #ifdef ECS_SPECIFIC
