diff -ur src34/amiga/DispKbd.c arcem/amiga/DispKbd.c
--- src34/amiga/DispKbd.c	2011-09-11 18:07:14.116268413 +0100
+++ arcem/amiga/DispKbd.c	2011-09-18 20:58:41.500000000 +0100
@@ -596,7 +596,7 @@
 				window->RPort->BitMap,0,redraw_miny,
 				HD.Width,(redraw_maxy-redraw_miny)+1,0x0C0,0xff,NULL);
 		redraw_miny = INT_MAX;
-		redarw_maxy = 0;
+		redraw_maxy = 0;
 	}
 
 	pdd_refreshmouse(state);
diff -ur src34/arch/archio.c arcem/arch/archio.c
--- src34/arch/archio.c	2011-09-11 18:07:14.064274333 +0100
+++ arcem/arch/archio.c	2011-09-25 22:44:46.680000000 +0100
@@ -609,22 +609,22 @@
 
       case 5:
         /* It's either Latch A/B, printer DATA  or the HDC */
-        switch (offset & 0x7c) {
+        switch (offset & 0x58) {
           case 0x00:
-          case 0x04:
-          case 0x08:
-          case 0x0c:
             /*fprintf(stderr,"HDC write: address=0x%x speed=%u\n", address, speed); */
             HDC_Write(state, offset, data);
+            break;
+
+          case 0x08:
+            HDC_Write(state, offset, data);
+            break;
 
           case 0x10:
-          case 0x14: /* Is it right for this to be 8 bytes wide? */
             dbug_ioc("Write to Printer data latch offset=0x%x data=0x%x\n",
                      offset, data);
             break;
 
           case 0x18:
-          case 0x1c: /* Is it right for this to be 8 bytes wide? */
             dbug_ioc("Write to Latch B offset=0x%x data=0x%x\n",
                      offset, data);
             ioc.LatchB = data & 0xff;
@@ -633,7 +633,6 @@
             break;
 
           case 0x40:
-          case 0x44: /* Is it right for this to be 8 bytes wide? */
             dbug_ioc("Write to Latch A offset=0x%x data=0x%x\n",
                      offset, data);
             ioc.LatchA = data & 0xff;
@@ -641,20 +640,6 @@
             ioc.LatchAold = data & 0xff;
             break;
 
-          case 0x48:
-            dbug_ioc("Write to IOEB CR offset=0x%x data=0x%x\n",
-                     offset, data);
-            data &= 0xf;
-            if(ioc.IOEBControlReg != data)
-            {
-              ioc.IOEBControlReg = data;
-              (DisplayDev_Current->IOEBCRWrite)(state,data);
-#ifdef SOUND_SUPPORT
-              Sound_SoundFreqUpdated(state);
-#endif
-            }
-            break;
-
           default:
             dbug_ioc("Writing to non-defined bank 5 address offset=0x%x data=0x%x\n",
                      offset, data);
diff -ur src34/arch/displaydev.c arcem/arch/displaydev.c
--- src34/arch/displaydev.c	2011-09-11 18:07:14.064274333 +0100
+++ arcem/arch/displaydev.c	2011-09-18 20:59:05.780000000 +0100
@@ -45,7 +45,7 @@
   *y = VIDC.Vert_CursorStart-VIDC.Vert_DisplayStart;
 }
 
-static const unsigned long vidcclocks[4] = {24000000,25000000,36000000,24000000};
+static const unsigned long vidcclocks[4] = {24000000,25175000,36000000,24000000};
 
 unsigned long DisplayDev_GetVIDCClockIn(void)
 {
diff -ur src34/arch/newsound.c arcem/arch/newsound.c
--- src34/arch/newsound.c	2011-09-11 18:07:14.060272933 +0100
+++ arcem/arch/newsound.c	2011-09-25 23:13:40.700000000 +0100
@@ -205,7 +205,7 @@
               break;
 
       /* Right 100% */
-      case 5: channelAmount[i][1] = (ARMword) (1.0*65536);
+      case 7: channelAmount[i][1] = (ARMword) (1.0*65536);
               channelAmount[i][0] = (ARMword) (0.0*65536);
               break;
       /* Right 83% */
@@ -213,7 +213,7 @@
               channelAmount[i][0] = (ARMword) (0.17*65536);
               break;
       /* Right 67% */
-      case 7: channelAmount[i][1] = (ARMword) (0.67*65536);
+      case 5: channelAmount[i][1] = (ARMword) (0.67*65536);
               channelAmount[i][0] = (ARMword) (0.33*65536);
               break;
 
