Index: atari_chips/pokeyv2/convert_secure.cof
===================================================================
--- atari_chips/pokeyv2/convert_secure.cof	(revision 1324)
+++ atari_chips/pokeyv2/convert_secure.cof	(nonexistent)
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="US-ASCII" standalone="yes"?>
-<cof>
-	<output_filename>output_files/pokeymax.pof</output_filename>
-	<n_pages>1</n_pages>
-	<width>1</width>
-	<mode>14</mode>
-	<sof_data>
-		<user_name>Page_0</user_name>
-		<page_flags>1</page_flags>
-		<bit0>
-			<sof_filename>output_files/pokeymax.sof<compress_bitstream>1</compress_bitstream></sof_filename> 
-		</bit0>
-	</sof_data>
-	<version>10</version>
-	<create_cvp_file>0</create_cvp_file>
-	<create_hps_iocsr>0</create_hps_iocsr>
-	<auto_create_rpd>0</auto_create_rpd>
-	<rpd_little_endian>1</rpd_little_endian>
-	<options>
-		<map_file>1</map_file>
-	</options>
-	<MAX10_device_options>
-		<por>0</por>
-		<io_pullup>1</io_pullup>
-		<config_from_cfm0_only>0</config_from_cfm0_only>
-		<isp_source>0</isp_source>
-		<verify_protect>1</verify_protect>
-		<epof>0</epof>
- 		<ufm_source>2</ufm_source>
-		<ufm_filepath>../init.hex</ufm_filepath>		
-	</MAX10_device_options>
-	<advanced_options>
-		<ignore_epcs_id_check>1</ignore_epcs_id_check>
-		<ignore_condone_check>2</ignore_condone_check>
-		<plc_adjustment>0</plc_adjustment>
-		<post_chain_bitstream_pad_bytes>-1</post_chain_bitstream_pad_bytes>
-		<post_device_bitstream_pad_bytes>-1</post_device_bitstream_pad_bytes>
-		<bitslice_pre_padding>1</bitslice_pre_padding>
-	</advanced_options>
-</cof>
Index: atari_chips/pokeyv2/build.sh
===================================================================
--- atari_chips/pokeyv2/build.sh	(revision 1324)
+++ atari_chips/pokeyv2/build.sh	(revision 1325)
@@ -8,7 +8,7 @@
 #Added like this to the generated qsf
 #set_parameter -name TV 1
 
-my $version = "123";
+my $version = "000";
 
 my %variants = 
 (
@@ -44,50 +44,134 @@
 		"cs0_bit" => 0, #force low
 		"version" => $version . "M02SA"
 	},
-#	"10M02_stereo_u1mb_auto" =>
-#	{
-#		"pokeys" => 2,
-#		"enable_auto_stereo" => 1,
-#		"a4_bit" => 1,
-#		"fancy_switch_bit" => 2,
-#		"gtia_audio_bit" => 3,
-#		"fpga" => "10M02SCU169C8G",
-#		"version" => $version . "M02SU"
-#	},
-#	"10M02_mark" =>
-#	{
-#		"pokeys" => 1,
-#		"enable_auto_stereo" => 1,
-#		"enable_covox" => 0,
-#		"a4_bit" => 1,
-#		"a7_bit" => 2,
-#		"gtia_audio_bit" => 3, 
-#		"fpga" => "10M02SCU169C8G",
-#		"version" =>  $version."M02SC"
-#	},
-#	"10M02_stereo_covox_auto" =>
-#	{
-#		"pokeys" => 2,
-#		"enable_auto_stereo" => 1,
-#		"enable_covox" => 1,
-#		"a4_bit" => 1,
-#		"a7_bit" => 2,
-#		"gtia_audio_bit" => 3, 
-#		"fpga" => "10M02SCU169C8G",
-#		"version" =>  $version."M02SC"
-#	},
-#	"10M02_stereo_covox_no_right_detect" =>
-#	{
-#		"pokeys" => 2,
-#		"enable_auto_stereo" => 0,
-#		"enable_covox" => 1,
-#		"detect_right_on_by_default" => 0,
-#		"a4_bit" => 1,
-#		"a7_bit" => 2,
-#		"gtia_audio_bit" => 3, 
-#		"fpga" => "10M02SCU169C8G",
-#		"version" =>  $version."M02SC"
-#	},
+	"10M02_mono_linear" =>
+	{
+		"saturate_on_by_default" => 0,
+		"pokeys" => 1,
+		"fpga" => "10M02SCU169C8G",
+		"enable_auto_stereo" => 1,
+		"gtia_audio_bit" => 3,
+		"a4_bit" => 1, #to access config!
+		"version" => $version . "M02MO"
+	},
+	"10M02_stereo_xel_auto_linear" =>
+	{
+		"saturate_on_by_default" => 0,
+		"pokeys" => 2,
+		"enable_auto_stereo" => 1,
+		"a4_bit" => 1,
+		"cs1_bit" => 20,
+		"gtia_audio_bit" => 3,
+		"fpga" => "10M02SCU169C8G",
+		"version" => $version . "M02SX"
+	},
+	"10M02_stereo_covox_no_right_detect_linear" =>
+	{
+		"saturate_on_by_default" => 0,
+		"pokeys" => 2,
+		"enable_auto_stereo" => 0,
+		"enable_covox" => 1,
+		"detect_right_on_by_default" => 0,
+		"a4_bit" => 1,
+		"a7_bit" => 2,
+		"gtia_audio_bit" => 3, 
+		"fpga" => "10M02SCU169C8G",
+		"version" =>  $version."M02SC"
+	},
+	"10M02_stereo_auto_linear" =>
+	{
+		"saturate_on_by_default" => 0,
+		"pokeys" => 2,
+		"enable_auto_stereo" => 1,
+		"a4_bit" => 1,
+		"gtia_audio_bit" => 3,
+		"fpga" => "10M02SCU169C8G",
+		"version" => $version . "M02SA"
+	},
+	"10M02_stereo_u1mb_auto_linear" =>
+	{
+		"saturate_on_by_default" => 0,
+		"pokeys" => 2,
+		"enable_auto_stereo" => 1,
+		"a4_bit" => 1,
+		"fancy_switch_bit" => 2,
+		"gtia_audio_bit" => 3,
+		"fpga" => "10M02SCU169C8G",
+		"version" => $version . "M02SU"
+	},
+	"10M02_stereo_covox_auto_linear" =>
+	{
+		"saturate_on_by_default" => 0,
+		"pokeys" => 2,
+		"enable_auto_stereo" => 1,
+		"enable_covox" => 1,
+		"a4_bit" => 1,
+		"a7_bit" => 2,
+		"gtia_audio_bit" => 3, 
+		"fpga" => "10M02SCU169C8G",
+		"version" =>  $version."M02SC"
+	},
+	"10M02_mono" =>
+	{
+		"pokeys" => 1,
+		"fpga" => "10M02SCU169C8G",
+		"enable_auto_stereo" => 1,
+		"gtia_audio_bit" => 3,
+		"a4_bit" => 1, #to access config!
+		"version" => $version . "M02MO"
+	},
+	"10M02_stereo_xel_auto" =>
+	{
+		"pokeys" => 2,
+		"enable_auto_stereo" => 1,
+		"a4_bit" => 1,
+		"cs1_bit" => 20,
+		"gtia_audio_bit" => 3,
+		"fpga" => "10M02SCU169C8G",
+		"version" => $version . "M02SX"
+	},
+	"10M02_stereo_covox_no_right_detect" =>
+	{
+		"pokeys" => 2,
+		"enable_auto_stereo" => 0,
+		"enable_covox" => 1,
+		"detect_right_on_by_default" => 0,
+		"a4_bit" => 1,
+		"a7_bit" => 2,
+		"gtia_audio_bit" => 3, 
+		"fpga" => "10M02SCU169C8G",
+		"version" =>  $version."M02SC"
+	},
+	"10M02_stereo_auto" =>
+	{
+		"pokeys" => 2,
+		"enable_auto_stereo" => 1,
+		"a4_bit" => 1,
+		"gtia_audio_bit" => 3,
+		"fpga" => "10M02SCU169C8G",
+		"version" => $version . "M02SA"
+	},
+	"10M02_stereo_u1mb_auto" =>
+	{
+		"pokeys" => 2,
+		"enable_auto_stereo" => 1,
+		"a4_bit" => 1,
+		"fancy_switch_bit" => 2,
+		"gtia_audio_bit" => 3,
+		"fpga" => "10M02SCU169C8G",
+		"version" => $version . "M02SU"
+	},
+	"10M02_stereo_covox_auto" =>
+	{
+		"pokeys" => 2,
+		"enable_auto_stereo" => 1,
+		"enable_covox" => 1,
+		"a4_bit" => 1,
+		"a7_bit" => 2,
+		"gtia_audio_bit" => 3, 
+		"fpga" => "10M02SCU169C8G",
+		"version" =>  $version."M02SC"
+	},
 	"10M04_mono" =>
 	{
 		"pokeys" => 1,
@@ -225,6 +309,28 @@
 		"fpga" => "10M08SCU169C8G",
 		"version" => $version . "M08SS"
 	},
+	"sidmax_10M08_full" =>
+	{
+		"pokeys" => 2,
+		"enable_auto_stereo" => 1,
+		"enable_flash" => 1,
+		"enable_psg" => 1,
+		"enable_covox" => 1,
+		"enable_sample" => 1,
+		"ext_bits"=> 4,
+		"bus" => "c64",
+		"a5_bit" => 1,  #STEREO
+		"a6_bit" => 2,
+		"a7_bit" => 3,
+		"irq_bit" => 4,
+		#"a6_bit" => 20, #force high
+		#"a7_bit" => 0, #force low
+		"type" => "sidmax",
+		"board" => "v1",
+		#"cs1_bit" => 20, #force high
+		"fpga" => "10M08SCU169C8G",
+		"version" => $version . "S08HK"
+	},
 	"10M08_stereo_u1mb_auto" =>
 	{
 		"pokeys" => 2,
@@ -446,6 +552,11 @@
 	my $fpga = $variants{$variant}->{"fpga"};
 	my $flashver = $fpga;
 	$flashver =~ s/..M(..).*/$1/;
+	if (not exists $variants{$variant}->{"type"})
+	{
+		$variants{$variant}->{"type"} = "pokeymax";
+	}
+	my $type = $variants{$variant}->{"type"};
 	my $board = $variants{$variant}->{"board"};
 	my $bus = $variants{$variant}->{"bus"};
 
@@ -455,15 +566,18 @@
 	`cp *.vhd* $dir`;
 	`cp iox_glue.vhdl $dir/iox_glue.vhdl`;
 	`cp pokeymax.vhd $dir/pokeymax.vhd`;
+
 	`cp iox_glue$board.vhdl $dir/iox_glue.vhdl`;
-	`cp pokeymax$board.vhd $dir/pokeymax.vhd`;
+	`cp $type$board.vhd $dir/$type.vhd`;
+	`cp $type$board.qsf $dir/$type.qsf`;
+
 	`cp slave_timing_6502$bus.vhd $dir/slave_timing_6502.vhd`;
 	`cp swapbits $dir`;
-	`cp pokeymax*.sdc $dir`;
-	`cp pokeymax*.qpf $dir`;
-	`cp pokeymax$board.qsf $dir/pokeymax.qsf`;
+	`cp $type*.sdc $dir`;
+	`cp $type*.qpf $dir`;
 	`cp -r int_osc* $dir`;
 	`cp -r pll* $dir`;
+	`cp -r lvds* $dir`;
 	`cp -r flash_$flashver/flash* $dir`;
 	`cp -r PSG $dir`;
 	`cp -r SID $dir`;
@@ -474,25 +588,25 @@
 	chdir $dir;
 
 	
-	`echo set_global_assignment -name DEVICE $fpga >> pokeymax.qsf`;
+	`echo set_global_assignment -name DEVICE $fpga >> $type.qsf`;
 
 	foreach my $key (sort keys %{$variants{$variant}})
 	{
 		my $val = $variants{$variant}->{$key};
-		`echo 'set_parameter -name $key $val' >> pokeymax.qsf`;
+		`echo 'set_parameter -name $key $val' >> $type.qsf`;
 	}
 	if (exists $variants{$variant}->{"optimisearea"})
 	{
-		`echo 'set_global_assignment -name CYCLONEII_OPTIMIZATION_TECHNIQUE AREA' >>pokeymax.qsf`;
+		`echo 'set_global_assignment -name CYCLONEII_OPTIMIZATION_TECHNIQUE AREA' >>$type.qsf`;
 	}
 
-	`quartus_sh --flow compile pokeymax > build.log 2> build.err`;
-	`quartus_cpf --convert ../convert_secure.cof`;
-	`../modifypof_$flashver ./output_files/pokeymax.pof`;
-	`quartus_cpf -c -q 10MHz -g 3.3 -n p output_files/pokeymax.pof output_files/pokeymax.svf`;
-	`../makeflash_$flashver ./output_files/pokeymax.pof $versioncode output_files/core.bin`;
+	`quartus_sh --flow compile $type > build.log 2> build.err`;
+	`quartus_cpf --convert ../convert_secure_$type.cof`;
+	`../modifypof_$flashver $type ./output_files/$type.pof`;
+	`quartus_cpf -c -q 10MHz -g 3.3 -n p output_files/$type.pof output_files/$type.svf`;
+	`../makeflash_$flashver $type ./output_files/$type.pof $versioncode output_files/core.bin`;
 	`touch UFM1 UFM0 CFM1 CFM0`;
-	`../openocd_flash/extractbinfromsvf.pl output_files/pokeymax.svf`;
+	`../openocd_flash/extractbinfromsvf.pl output_files/$type.svf`;
 	`cat UFM1.bin UFM0.bin > UFMboth.bin`;
 	`cat CFM1.bin CFM0.bin > CFMboth.bin`;
 
Index: atari_chips/pokeyv2/convert_secure_pokeymax.cof
===================================================================
--- atari_chips/pokeyv2/convert_secure_pokeymax.cof	(nonexistent)
+++ atari_chips/pokeyv2/convert_secure_pokeymax.cof	(revision 1325)
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="US-ASCII" standalone="yes"?>
+<cof>
+	<output_filename>output_files/pokeymax.pof</output_filename>
+	<n_pages>1</n_pages>
+	<width>1</width>
+	<mode>14</mode>
+	<sof_data>
+		<user_name>Page_0</user_name>
+		<page_flags>1</page_flags>
+		<bit0>
+			<sof_filename>output_files/pokeymax.sof<compress_bitstream>1</compress_bitstream></sof_filename> 
+		</bit0>
+	</sof_data>
+	<version>10</version>
+	<create_cvp_file>0</create_cvp_file>
+	<create_hps_iocsr>0</create_hps_iocsr>
+	<auto_create_rpd>0</auto_create_rpd>
+	<rpd_little_endian>1</rpd_little_endian>
+	<options>
+		<map_file>1</map_file>
+	</options>
+	<MAX10_device_options>
+		<por>0</por>
+		<io_pullup>1</io_pullup>
+		<config_from_cfm0_only>0</config_from_cfm0_only>
+		<isp_source>0</isp_source>
+		<verify_protect>1</verify_protect>
+		<epof>0</epof>
+ 		<ufm_source>2</ufm_source>
+		<ufm_filepath>../init.hex</ufm_filepath>		
+	</MAX10_device_options>
+	<advanced_options>
+		<ignore_epcs_id_check>1</ignore_epcs_id_check>
+		<ignore_condone_check>2</ignore_condone_check>
+		<plc_adjustment>0</plc_adjustment>
+		<post_chain_bitstream_pad_bytes>-1</post_chain_bitstream_pad_bytes>
+		<post_device_bitstream_pad_bytes>-1</post_device_bitstream_pad_bytes>
+		<bitslice_pre_padding>1</bitslice_pre_padding>
+	</advanced_options>
+</cof>
Index: atari_chips/pokeyv2/init.c
===================================================================
--- atari_chips/pokeyv2/init.c	(revision 1324)
+++ atari_chips/pokeyv2/init.c	(revision 1325)
@@ -59,7 +59,7 @@
 	buffer[0] |= (irq_en&1)<<3;
 	buffer[0] |= (detect_right&1)<<4;
 	buffer[0] |= (pal&1)<<5;
-	int post_divide = 0b10100000;
+	int post_divide = 0b10100101;
 	buffer[1] |= (post_divide&0xff)<<0;
 	int gtia_enable = 0b1100;
 	buffer[2] |= (gtia_enable&0xf)<<0;
@@ -74,6 +74,8 @@
 	buffer[4] = 0x11; // 6581 filter
 	buffer[5] = 0xff; // enable_all
 
+	buffer[6] = 0x10; // enable_all
+
 	// 0x80(0x200 8-bit) adpcm step table - 90
 	for (i=0x0; i!=89; ++i)
 	{
Index: atari_chips/pokeyv2/makeflash_04
===================================================================
--- atari_chips/pokeyv2/makeflash_04	(revision 1324)
+++ atari_chips/pokeyv2/makeflash_04	(revision 1325)
@@ -1,11 +1,12 @@
-rm pokeymax.pofswap
+TYPE=$1
+rm ${TYPE}.pofswap
 rm flash2.bin
 rm core2.bin
 rm version
 
-./swapbits $1 pokeymax.pofswap
-dd if=pokeymax.pofswap bs=1 skip=18600 count=16384 of=init2.bin
-dd if=pokeymax.pofswap bs=1 skip=118952 count=202752 of=core2.bin
-cat init2.bin core2.bin > $3
-echo $2 > version
-dd conv=notrunc if=version bs=1 count=8 of=$3
+./swapbits $2 ${TYPE}.pofswap
+dd if=${TYPE}.pofswap bs=1 skip=18600 count=16384 of=init2.bin
+dd if=${TYPE}.pofswap bs=1 skip=118952 count=202752 of=core2.bin
+cat init2.bin core2.bin > $4
+echo $3 > version
+dd conv=notrunc if=version bs=1 count=8 of=$4
Index: atari_chips/pokeyv2/makeflash_08
===================================================================
--- atari_chips/pokeyv2/makeflash_08	(revision 1324)
+++ atari_chips/pokeyv2/makeflash_08	(revision 1325)
@@ -1,11 +1,12 @@
-rm pokeymax.pofswap
+TYPE=$1
+rm ${TYPE}.pofswap
 rm flash2.bin
 rm core2.bin
 rm version
 
-./swapbits $1 pokeymax.pofswap
-dd if=pokeymax.pofswap bs=1 skip=2216 count=32768 of=init2.bin
-dd if=pokeymax.pofswap bs=1 skip=118952 count=202752 of=core2.bin
-cat init2.bin core2.bin > $3
-echo $2 > version
-dd conv=notrunc if=version bs=1 count=8 of=$3
+./swapbits $2 ${TYPE}.pofswap
+dd if=${TYPE}.pofswap bs=1 skip=2216 count=32768 of=init2.bin
+dd if=${TYPE}.pofswap bs=1 skip=118952 count=202752 of=core2.bin
+cat init2.bin core2.bin > $4
+echo $3 > version
+dd conv=notrunc if=version bs=1 count=8 of=$4
Index: atari_chips/pokeyv2/makeflash_16
===================================================================
--- atari_chips/pokeyv2/makeflash_16	(revision 1324)
+++ atari_chips/pokeyv2/makeflash_16	(revision 1325)
@@ -1,12 +1,13 @@
 #TODO: Probably wrong!
-rm pokeymax.pofswap
+TYPE=$1
+rm ${TYPE}.pofswap
 rm flash2.bin
 rm core2.bin
 rm version
 
-./swapbits $1 pokeymax.pofswap
-dd if=pokeymax.pofswap bs=1 skip=4264 count=32768 of=init2.bin
-dd if=pokeymax.pofswap bs=1 skip=192680 count=385024 of=core2.bin
-cat init2.bin core2.bin > $3
-echo $2 > version
-dd conv=notrunc if=version bs=1 count=8 of=$3
+./swapbits $2 ${TYPE}.pofswap
+dd if=${TYPE}.pofswap bs=1 skip=4264 count=32768 of=init2.bin
+dd if=${TYPE}.pofswap bs=1 skip=192680 count=385024 of=core2.bin
+cat init2.bin core2.bin > $4
+echo $3 > version
+dd conv=notrunc if=version bs=1 count=8 of=$4
Index: atari_chips/pokeyv2/modifypof_08
===================================================================
--- atari_chips/pokeyv2/modifypof_08	(revision 1324)
+++ atari_chips/pokeyv2/modifypof_08	(revision 1325)
@@ -1,7 +1,8 @@
-cp $1 pokeymax_orig.pof
+TYPE=$1
+cp $2 ${TYPE}_orig.pof
 
 ./swapbits sidwavedata.bin sidwavedata_swap.bin
-dd if=sidwavedata_swap.bin bs=1 seek=256168 count=65536 of=$1 conv=notrunc
-truncate -s -2 $1
-HASHCODE=`../rehashr/rehash $1 -norecur -none -fcs16 | grep FCS | sed -e 's/.*:\s*//'`
-../addhash.pl $1 $HASHCODE
+dd if=sidwavedata_swap.bin bs=1 seek=256168 count=65536 of=$2 conv=notrunc
+truncate -s -2 $2
+HASHCODE=`../rehashr/rehash $2 -norecur -none -fcs16 | grep FCS | sed -e 's/.*:\s*//'`
+../addhash.pl $2 $HASHCODE
Index: atari_chips/pokeyv2/modifypof_16
===================================================================
--- atari_chips/pokeyv2/modifypof_16	(revision 1324)
+++ atari_chips/pokeyv2/modifypof_16	(revision 1325)
@@ -1,8 +1,9 @@
 #TODO probably wrong
-cp $1 pokeymax_orig.pof
+TYPE=$1
+cp $2 ${TYPE}_orig.pof
 
 ./swapbits sidwavedata.bin sidwavedata_swap.bin
-dd if=sidwavedata_swap.bin bs=1 seek=479400 count=65536 of=$1 conv=notrunc
-truncate -s -2 $1
-HASHCODE=`../rehashr/rehash $1 -norecur -none -fcs16 | grep FCS | sed -e 's/.*:\s*//'`
-../addhash.pl $1 $HASHCODE
+dd if=sidwavedata_swap.bin bs=1 seek=479400 count=65536 of=$2 conv=notrunc
+truncate -s -2 $2
+HASHCODE=`../rehashr/rehash $2 -norecur -none -fcs16 | grep FCS | sed -e 's/.*:\s*//'`
+../addhash.pl $2 $HASHCODE
Index: atari_chips/pokeyv2/pokeymax.sdc
===================================================================
--- atari_chips/pokeyv2/pokeymax.sdc	(revision 1324)
+++ atari_chips/pokeyv2/pokeymax.sdc	(revision 1325)
@@ -1,6 +1,6 @@
 create_clock -period 1.9MHz [get_ports PHI2]
 
-create_clock -period 85MHz [get_ports CLK_SLOW]
+create_clock -period 87.36MHz [get_ports CLK_SLOW]
 derive_pll_clocks
 derive_clock_uncertainty
 
Index: atari_chips/pokeyv2/pokeymax.vhd
===================================================================
--- atari_chips/pokeyv2/pokeymax.vhd	(revision 1324)
+++ atari_chips/pokeyv2/pokeymax.vhd	(revision 1325)
@@ -25,6 +25,7 @@
 		fancy_switch_bit : integer := 20; -- 0=ext is low => mono
 		gtia_audio_bit : integer := 0;    -- 0=no gtia on l/r,1=gtia mixed on l/r
 		detect_right_on_by_default : integer := 1; 
+		saturate_on_by_default : integer := 1; 
 		a4_bit : integer := 0;
 		a5_bit : integer := 0;
 		a6_bit : integer := 0;
@@ -134,6 +135,7 @@
 	SIGNAL POKEY_WRITE_ENABLE : STD_LOGIC_VECTOR(3 downto 0);		
 	
 	SIGNAL SID_WRITE_ENABLE : STD_LOGIC_VECTOR(1 downto 0);	
+	SIGNAL SID_READ_ENABLE : STD_LOGIC_VECTOR(1 downto 0);	
 
 	SIGNAL PSG_WRITE_ENABLE : STD_LOGIC_VECTOR(1 downto 0);	
 
@@ -175,6 +177,7 @@
 
 	signal SIO_TXD : std_logic;
 	signal SIO_RXD : std_logic;
+	signal SIO_RXD_SYNC : std_logic;
 
 	signal POKEY_IRQ : std_logic_vector(3 downto 0);
 
@@ -867,6 +870,7 @@
 	ENABLE => SID_CLK_ENABLE, --1MHz
 
 	WRITE_ENABLE => SID_WRITE_ENABLE(0),
+	READ_ENABLE => SID_READ_ENABLE(0),
 	ADDR => ADDR_IN(4 downto 0),
 	DI => WRITE_DATA(7 downto 0),
 	DO => SID_DO(0),
@@ -876,8 +880,13 @@
 	--EXTFILTER_EN => '0',
 	AUDIO => SID_AUDIO(0), 
 
-	SIDTYPE => SID_FILTER1_REG,
+	SIDTYPE => SID_FILTER1_REG(0),
+	EXT => "0"&SID_FILTER1_REG(1),
+	EXT_ADC => (others=>'0'),
 
+	POT_X => '0',
+	POT_Y => '0',
+
 	rom_addr => sid_flash1_addr,
 	rom_data => flash_do_slow,
        	rom_request => sid_flash1_romrequest,
@@ -901,6 +910,7 @@
 	ENABLE => SID_CLK_ENABLE, --1MHz
 
 	WRITE_ENABLE => SID_WRITE_ENABLE(1),
+	READ_ENABLE => SID_READ_ENABLE(1),
 	ADDR => ADDR_IN(4 downto 0),
 	DI => WRITE_DATA(7 downto 0),
 	DO => SID_DO(1),
@@ -910,8 +920,13 @@
 	--EXTFILTER_EN => '0',
 	AUDIO => SID_AUDIO(1),
 
-	SIDTYPE => SID_FILTER2_REG,
+	SIDTYPE => SID_FILTER2_REG(0),
+	EXT => "0"&SID_FILTER2_REG(1),
+	EXT_ADC => (others=>'0'),
 
+	POT_X => '0',
+	POT_Y => '0',
+
 	rom_addr => sid_flash2_addr,
 	rom_data => flash_do_slow,
        	rom_request => sid_flash2_romrequest,
@@ -1182,12 +1197,15 @@
 	RESTRICT_CAPABILITY_REG
 	)
 	variable writereq : std_logic;
+	variable readreq : std_logic;
 	variable enable_region : std_logic;
 begin
 	writereq := not(write_n) and request;
+	readreq := write_n and request;
 	
 	POKEY_WRITE_ENABLE <= (others=>'0');
 	SID_WRITE_ENABLE <= (others=>'0');
+	SID_READ_ENABLE <= (others=>'0');
 	PSG_WRITE_ENABLE <= (others=>'0');
 	SAMPLE_WRITE_ENABLE <= '0';
 	CONFIG_WRITE_ENABLE <= '0';
@@ -1214,11 +1232,13 @@
 			DO_MUX <= SID_DO(0);
 			DRIVE_DO_MUX <= SID_DRIVE_DO(0);
 			SID_WRITE_ENABLE(0) <= writereq;
+			SID_READ_ENABLE(0) <= readreq;
 		when "0110"|"0111" =>
 			enable_region := RESTRICT_CAPABILITY_REG(2);
 			DO_MUX <= SID_DO(1);
 			DRIVE_DO_MUX <= SID_DRIVE_DO(1);
 			SID_WRITE_ENABLE(1) <= writereq;
+			SID_READ_ENABLE(0) <= readreq;
 		when "1000"|"1001" =>
 			enable_region := RESTRICT_CAPABILITY_REG(4);
 			DO_MUX <= SAMPLE_DO;								
@@ -1257,7 +1277,11 @@
 		end if;
 		IRQ_EN_REG <= '0';
 		CHANNEL_MODE_REG <= '0';
-		SATURATE_REG <= '1';
+		if saturate_on_by_default=1 then
+			SATURATE_REG <= '1';
+		else
+			SATURATE_REG <= '0';
+		end if;
 		POST_DIVIDE_REG <= "10100000"; -- 1/2 5v, 3/4 1v
 		GTIA_ENABLE_REG <= "1100"; -- external only
 		CONFIG_ENABLE_REG <= '0';
@@ -1635,7 +1659,9 @@
 	CH7 => unsigned(SID_AUDIO(1)),	
 	CH8 => unsigned(PSG_AUDIO(0)),
 	CH9 => unsigned(PSG_AUDIO(1)),		
-	CHA(14 downto 0) => (others=>'0'),
+	CHA(14 downto 12) => (others=>'0'),
+	CHA(11) => SIO_RXD_SYNC,
+	CHA(10 downto 0) => (others=>'0'),
 	CHA(15) => GTIA_AUDIO,			
 	
 	AUDIO_0_UNSIGNED => AUDIO_0_UNSIGNED,
@@ -1846,6 +1872,8 @@
 
 SOD <= '0' when SIO_TXD='0' else 'Z';
 SIO_RXD <= SID;
+synchronizer_SIO : entity work.synchronizer
+	port map (clk=>clk, raw=>SID, sync=>SIO_RXD_SYNC);
 
 
 --1->pin37
Index: atari_chips/pokeyv2/slave_timing_6502c64.vhd
===================================================================
--- atari_chips/pokeyv2/slave_timing_6502c64.vhd	(revision 1324)
+++ atari_chips/pokeyv2/slave_timing_6502c64.vhd	(revision 1325)
@@ -141,6 +141,7 @@
 		phi2_falling_edge,
 		phi2_sync,
 		cs_sync,
+		phi_addr_reg,
 		phi_rw_n_reg,
 		bus_addr,
 		bus_rw_n,
