--- hdsp.c.old	2003-07-04 10:17:59.000000000 +0200
+++ hdsp.c	2003-07-04 10:21:28.000000000 +0200
@@ -705,21 +705,14 @@
 		   the first dword in the mixer
 		   memory."
 		*/
-
-		hdsp->mixer_matrix[addr] = data;
-
-		/* `addr' addresses a 16-bit wide address, but
-		   the address space accessed via hdsp_write
-		   uses byte offsets. put another way, addr
-		   varies from 0 to 1351, but to access the
-		   corresponding memory location, we need
-		   to access 0 to 2703 ...
-		*/
-
-		hdsp_write (hdsp, 4096 + (addr*2), 
-			    (hdsp->mixer_matrix[(addr&0x7fe)+1] << 16) + 
-			    hdsp->mixer_matrix[addr&0x7fe]);
+		if ((ad = addr/2) < 676) {
 		
+    			hdsp->mixer_matrix[addr] = data;
+
+			hdsp_write (hdsp, 1024 + ad, 
+				    (hdsp->mixer_matrix[(addr&0x7fe)+1] << 16) + 
+				    hdsp->mixer_matrix[addr&0x7fe]);
+		}
 		return 0;
 
 	} else {
