diff --git a/cores/MasterSystem/make.bat b/cores/MasterSystem/make.bat
index 7e66ca5..de58ae2 100644
--- a/cores/MasterSystem/make.bat
+++ b/cores/MasterSystem/make.bat
@@ -1,8 +1,8 @@
SET machine=sms_rgb
SET ruta_ucf=src\sms_rgb
SET ruta_bat=..\
-call ..\genxst.bat
-call ..\generar.bat v2
-call ..\generar.bat v3
-call ..\generar.bat v4
-call ..\generar.bat Ap
+call %ruta_bat%genxst.bat
+call %ruta_bat%generar.bat v2
+call %ruta_bat%generar.bat v3
+call %ruta_bat%generar.bat v4
+call %ruta_bat%generar.bat Ap
diff --git a/cores/NES/xilinx/NES_ZXUNO.xise b/cores/NES/xilinx/NES_ZXUNO.xise
deleted file mode 100644
index 6f32326..0000000
--- a/cores/NES/xilinx/NES_ZXUNO.xise
+++ /dev/null
@@ -1,474 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/cores/NES/xilinx/make.bat b/cores/NES/xilinx/make.bat
new file mode 100644
index 0000000..5a7501a
--- /dev/null
+++ b/cores/NES/xilinx/make.bat
@@ -0,0 +1,8 @@
+SET machine=NES_ZXUNO
+SET ruta_ucf=..\src\nes
+SET ruta_bat=..\..\
+call %ruta_bat%genxst.bat
+call %ruta_bat%generar.bat v2
+call %ruta_bat%generar.bat v3
+call %ruta_bat%generar.bat v4
+call %ruta_bat%generar.bat Ap
diff --git a/cores/SamCoupe/SamCoupe_zxuno_v2.ucf b/cores/SamCoupe/SamCoupe_zxuno_v2.ucf
index 66fd161..a2d927a 100644
--- a/cores/SamCoupe/SamCoupe_zxuno_v2.ucf
+++ b/cores/SamCoupe/SamCoupe_zxuno_v2.ucf
@@ -1,6 +1,6 @@
# Clocks & debug
NET "clk50mhz" LOC="P55" | IOSTANDARD = LVCMOS33 | PERIOD=20.0ns;
-NET "testled" LOC="P10" | IOSTANDARD = LVCMOS33;
+#NET "testled" LOC="P10" | IOSTANDARD = LVCMOS33;
# Video output
NET "r<2>" LOC="P93" | IOSTANDARD = LVCMOS33;
diff --git a/cores/SamCoupe/SamCoupe_zxuno_v3.ucf b/cores/SamCoupe/SamCoupe_zxuno_v3.ucf
index 6e7b14c..679a83e 100644
--- a/cores/SamCoupe/SamCoupe_zxuno_v3.ucf
+++ b/cores/SamCoupe/SamCoupe_zxuno_v3.ucf
@@ -1,6 +1,6 @@
# Clocks & debug
NET "clk50mhz" LOC="P55" | IOSTANDARD = LVCMOS33 | PERIOD=20.0ns;
-NET "testled" LOC="P10" | IOSTANDARD = LVCMOS33;
+#NET "testled" LOC="P10" | IOSTANDARD = LVCMOS33;
# Video output
NET "r<2>" LOC="P93" | IOSTANDARD = LVCMOS33;
diff --git a/cores/SamCoupe/SamCoupe_zxuno_v4.ucf b/cores/SamCoupe/SamCoupe_zxuno_v4.ucf
index bdbc0ec..4daa913 100644
--- a/cores/SamCoupe/SamCoupe_zxuno_v4.ucf
+++ b/cores/SamCoupe/SamCoupe_zxuno_v4.ucf
@@ -1,6 +1,6 @@
# Clocks & debug
NET "clk50mhz" LOC="P55" | IOSTANDARD = LVCMOS33 | PERIOD=20.0ns;
-NET "testled" LOC="P11" | IOSTANDARD = LVCMOS33;
+#NET "testled" LOC="P11" | IOSTANDARD = LVCMOS33;
# Video output
NET "r<2>" LOC="P81" | IOSTANDARD = LVCMOS33;
diff --git a/cores/VIC20/ise/VIC-20.xise b/cores/VIC20/ise/VIC-20.xise
deleted file mode 100644
index bf9609e..0000000
--- a/cores/VIC20/ise/VIC-20.xise
+++ /dev/null
@@ -1,436 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/cores/VIC20/ise/VIC20.prj b/cores/VIC20/ise/VIC20.prj
new file mode 100644
index 0000000..d637632
--- /dev/null
+++ b/cores/VIC20/ise/VIC20.prj
@@ -0,0 +1,17 @@
+vhdl work "../source/T65_Pack.vhd"
+vhdl work "../source/T65_MCode.vhd"
+vhdl work "../source/T65_ALU.vhd"
+vhdl work "../source/ps2kbd.vhd"
+vhdl work "../source/vic20_vic.vhd"
+vhdl work "../source/vic20_rams.vhd"
+vhdl work "../source/vic20_ram.vhd"
+vhdl work "../source/vic20_ps2_if.vhd"
+vhdl work "../source/vic20_dblscan.vhd"
+vhdl work "../source/vic20_clocks_xilinx.vhd"
+vhdl work "../source/T65.vhd"
+vhdl work "../source/roms/vic20_kernal.vhd"
+vhdl work "../source/roms/vic20_chars.vhd"
+vhdl work "../source/roms/vic20_basic.vhd"
+vhdl work "../source/m6522.vhd"
+vhdl work "../source/dac.vhd"
+vhdl work "../source/vic20.vhd"
diff --git a/cores/VIC20/ise/VIC20.ut b/cores/VIC20/ise/VIC20.ut
new file mode 100644
index 0000000..dfd4060
--- /dev/null
+++ b/cores/VIC20/ise/VIC20.ut
@@ -0,0 +1,30 @@
+-w
+-g Binary:no
+-g Compress
+-g CRC:Enable
+-g Reset_on_err:No
+-g ConfigRate:2
+-g ProgPin:PullUp
+-g TckPin:PullUp
+-g TdiPin:PullUp
+-g TdoPin:PullUp
+-g TmsPin:PullUp
+-g UnusedPin:PullDown
+-g UserID:0xFFFFFFFF
+-g ExtMasterCclk_en:No
+-g SPI_buswidth:1
+-g TIMER_CFG:0xFFFF
+-g multipin_wakeup:No
+-g StartUpClk:CClk
+-g DONE_cycle:4
+-g GTS_cycle:5
+-g GWE_cycle:6
+-g LCK_cycle:NoWait
+-g Security:None
+-g DonePipe:Yes
+-g DriveDone:No
+-g en_sw_gsr:No
+-g drive_awake:No
+-g sw_clk:Startupclk
+-g sw_gwe_cycle:5
+-g sw_gts_cycle:4
diff --git a/cores/VIC20/ise/VIC20.xst b/cores/VIC20/ise/VIC20.xst
new file mode 100644
index 0000000..f170ef0
--- /dev/null
+++ b/cores/VIC20/ise/VIC20.xst
@@ -0,0 +1,52 @@
+set -tmpdir "projnav.tmp"
+set -xsthdpdir "xst"
+run
+-ifn VIC20.prj
+-ofn VIC20
+-ofmt NGC
+-p xc6slx9-3-tqg144
+-top VIC20
+-opt_mode Speed
+-opt_level 1
+-power NO
+-iuc NO
+-keep_hierarchy No
+-netlist_hierarchy As_Optimized
+-rtlview Yes
+-glob_opt AllClockNets
+-read_cores YES
+-write_timing_constraints NO
+-cross_clock_analysis NO
+-hierarchy_separator /
+-bus_delimiter <>
+-case Maintain
+-slice_utilization_ratio 100
+-bram_utilization_ratio 100
+-dsp_utilization_ratio 100
+-lc Auto
+-reduce_control_sets Auto
+-fsm_extract YES -fsm_encoding Auto
+-safe_implementation No
+-fsm_style LUT
+-ram_extract Yes
+-ram_style Auto
+-rom_extract Yes
+-shreg_extract YES
+-rom_style Auto
+-auto_bram_packing NO
+-resource_sharing YES
+-async_to_sync NO
+-shreg_min_size 2
+-use_dsp48 Auto
+-iobuf YES
+-max_fanout 100000
+-bufg 16
+-register_duplication YES
+-register_balancing No
+-optimize_primitives NO
+-use_clock_enable Auto
+-use_sync_set Auto
+-use_sync_reset Auto
+-iob Auto
+-equivalent_register_removal YES
+-slice_utilization_ratio_maxmargin 5
diff --git a/cores/VIC20/ise/make.bat b/cores/VIC20/ise/make.bat
new file mode 100644
index 0000000..cbe3bec
--- /dev/null
+++ b/cores/VIC20/ise/make.bat
@@ -0,0 +1,7 @@
+SET machine=VIC20
+SET ruta_ucf=..\source\vic20
+SET ruta_bat=..\..\
+call %ruta_bat%genxst.bat
+call %ruta_bat%generar.bat v2_v3
+call %ruta_bat%generar.bat v4
+call %ruta_bat%generar.bat Ap
diff --git a/cores/VIC20/ise/vic20.bit b/cores/VIC20/ise/vic20.bit
deleted file mode 100644
index c02f0a4..0000000
Binary files a/cores/VIC20/ise/vic20.bit and /dev/null differ
diff --git a/cores/VIC20/source/vic20_zxuno.ucf b/cores/VIC20/source/vic20_zxuno.ucf
deleted file mode 100644
index 6c48d0c..0000000
--- a/cores/VIC20/source/vic20_zxuno.ucf
+++ /dev/null
@@ -1,33 +0,0 @@
-#UCF for ZX-UNO
-
-NET I_CLK_REF TNM_NET = clk_ref_grp;
-TIMESPEC TS01 = PERIOD : clk_ref_grp : 20.00 : PRIORITY 1; # 50.00 MHz
-
-NET I_PS2_CLK LOC = "P98" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = SLOW ;
-NET I_PS2_DATA LOC = "P97" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = SLOW ;
-
-NET O_HSYNC LOC = "P87" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
-NET O_VSYNC LOC = "P85" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
-
-NET O_VIDEO_B(2) LOC = "P81" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
-NET O_VIDEO_B(1) LOC = "P80" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
-NET O_VIDEO_B(0) LOC = "P79" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
-
-NET O_VIDEO_G(2) LOC = "P84" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
-NET O_VIDEO_G(1) LOC = "P83" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
-NET O_VIDEO_G(0) LOC = "P82" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
-
-NET O_VIDEO_R(2) LOC = "P93" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
-NET O_VIDEO_R(1) LOC = "P92" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
-NET O_VIDEO_R(0) LOC = "P88" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
-
-
-NET I_RESET LOC = "P51" | IOSTANDARD = LVCMOS33;
-NET I_CLK_REF LOC = "P55" | IOSTANDARD = LVCMOS33;
-
-NET O_AUDIO_L LOC = "P8" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 8;
-NET O_AUDIO_R LOC = "P9" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 8;
-
-
-NET O_NTSC LOC = "P67" | IOSTANDARD = LVCMOS33;
-NET O_PAL LOC = "P66" | IOSTANDARD = LVCMOS33;
diff --git a/cores/VIC20/source/vic20_zxuno_Ap.ucf b/cores/VIC20/source/vic20_zxuno_Ap.ucf
new file mode 100644
index 0000000..41a92b5
--- /dev/null
+++ b/cores/VIC20/source/vic20_zxuno_Ap.ucf
@@ -0,0 +1,92 @@
+# Clocks & debug
+NET I_CLK_REF LOC="P55" | IOSTANDARD = LVCMOS33 | PERIOD=20.0ns;
+#NET "testled" LOC="P2" | IOSTANDARD = LVCMOS33;
+
+# Video output
+NET O_VIDEO_R(2) LOC="P97" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
+NET O_VIDEO_R(1) LOC="P95" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
+NET O_VIDEO_R(0) LOC="P94" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
+NET O_VIDEO_G(2) LOC="P88" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
+NET O_VIDEO_G(1) LOC="P87" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
+NET O_VIDEO_G(0) LOC="P85" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
+NET O_VIDEO_B(2) LOC="P84" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
+NET O_VIDEO_B(1) LOC="P83" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
+NET O_VIDEO_B(0) LOC="P82" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
+NET O_HSYNC LOC="P93" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
+NET O_VSYNC LOC="P92" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
+NET O_NTSC LOC="P51" | IOSTANDARD = LVCMOS33;
+NET O_PAL LOC="P50" | IOSTANDARD = LVCMOS33;
+
+# Sound input/output
+NET O_AUDIO_L LOC="P98" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 8;
+NET O_AUDIO_R LOC="P99" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 8;
+#NET "ear" LOC="P1" | IOSTANDARD = LVCMOS33;
+
+# Keyboard and mouse
+NET I_PS2_CLK LOC="P143" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = SLOW;
+NET I_PS2_DATA LOC="P142" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = SLOW;
+#NET "mouseclk" LOC="P57" | IOSTANDARD = LVCMOS33 | PULLUP;
+#NET "mousedata" LOC="P56" | IOSTANDARD = LVCMOS33 | PULLUP;
+
+# SRAM
+#NET "sram_addr<0>" LOC="P115" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<1>" LOC="P116" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<2>" LOC="P117" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<3>" LOC="P119" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<4>" LOC="P120" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<5>" LOC="P123" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<6>" LOC="P126" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<7>" LOC="P131" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<8>" LOC="P127" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<9>" LOC="P124" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<10>" LOC="P118" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<11>" LOC="P121" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<12>" LOC="P133" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<13>" LOC="P132" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<14>" LOC="P137" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<15>" LOC="P140" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<16>" LOC="P139" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<17>" LOC="P141" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<18>" LOC="P138" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<19>" LOC="P105" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<20>" LOC="P143" | IOSTANDARD = LVCMOS33;
+
+#NET "sram_data<0>" LOC="P114" | IOSTANDARD = LVCMOS33;
+#NET "sram_data<1>" LOC="P112" | IOSTANDARD = LVCMOS33;
+#NET "sram_data<2>" LOC="P111" | IOSTANDARD = LVCMOS33;
+#NET "sram_data<3>" LOC="P105" | IOSTANDARD = LVCMOS33;
+#NET "sram_data<4>" LOC="P104" | IOSTANDARD = LVCMOS33;
+#NET "sram_data<5>" LOC="P102" | IOSTANDARD = LVCMOS33;
+#NET "sram_data<6>" LOC="P101" | IOSTANDARD = LVCMOS33;
+#NET "sram_data<7>" LOC="P100" | IOSTANDARD = LVCMOS33;
+
+#NET "sram_we_n" LOC="P134" | IOSTANDARD = LVCMOS33;
+
+# SPI Flash
+#NET "flash_cs_n" LOC="P38" | IOSTANDARD = LVCMOS33;
+#NET "flash_clk" LOC="P70" | IOSTANDARD = LVCMOS33;
+#NET "flash_mosi" LOC="P64" | IOSTANDARD = LVCMOS33;
+#NET "flash_miso" LOC="P65" | IOSTANDARD = LVCMOS33;
+#NET "flash_ext1" LOC="P62" | IOSTANDARD = LVCMOS33;
+#NET "flash_ext2" LOC="P61" | IOSTANDARD = LVCMOS33;
+
+# SD/MMC
+#NET "sd_cs_n" LOC="P78" | IOSTANDARD = LVCMOS33;
+#NET "sd_clk" LOC="P80" | IOSTANDARD = LVCMOS33;
+#NET "sd_mosi" LOC="P79" | IOSTANDARD = LVCMOS33;
+#NET "sd_miso" LOC="P81" | IOSTANDARD = LVCMOS33;
+
+# JOYSTICK
+#NET "joyup" LOC="P74" | IOSTANDARD = LVCMOS33 | PULLUP;
+#NET "joydown" LOC="P67" | IOSTANDARD = LVCMOS33 | PULLUP;
+#NET "joyleft" LOC="P59" | IOSTANDARD = LVCMOS33 | PULLUP;
+#NET "joyright" LOC="P58" | IOSTANDARD = LVCMOS33 | PULLUP;
+#NET "joyfire" LOC="P75" | IOSTANDARD = LVCMOS33 | PULLUP;
+#NET "joyfire2" LOC="P8" | IOSTANDARD = LVCMOS33 | PULLUP;
+#NET "joyfire3" LOC="P39" | IOSTANDARD = LVCMOS33 | PULLUP;
+
+
+# Otros
+NET I_RESET LOC="P44" | IOSTANDARD = LVCMOS33;
+NET I_CLK_REF TNM_NET = clk_ref_grp;
+TIMESPEC TS01 = PERIOD : clk_ref_grp : 20.00 : PRIORITY 1; # 50.00 MHz
diff --git a/cores/VIC20/source/vic20_zxuno_v2_v3.ucf b/cores/VIC20/source/vic20_zxuno_v2_v3.ucf
new file mode 100644
index 0000000..21ff0a2
--- /dev/null
+++ b/cores/VIC20/source/vic20_zxuno_v2_v3.ucf
@@ -0,0 +1,92 @@
+# Clocks & debug
+NET I_CLK_REF LOC="P55" | IOSTANDARD = LVCMOS33 | PERIOD=20.0ns;
+#NET "testled" LOC="P10" | IOSTANDARD = LVCMOS33;
+
+# Video output
+NET O_VIDEO_R(2) LOC="P93" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
+NET O_VIDEO_R(1) LOC="P92" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
+NET O_VIDEO_R(0) LOC="P88" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
+NET O_VIDEO_G(2) LOC="P84" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
+NET O_VIDEO_G(1) LOC="P83" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
+NET O_VIDEO_G(0) LOC="P82" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
+NET O_VIDEO_B(2) LOC="P81" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
+NET O_VIDEO_B(1) LOC="P80" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
+NET O_VIDEO_B(0) LOC="P79" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
+NET O_HSYNC LOC="P87" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
+NET O_VSYNC LOC="P85" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
+NET O_NTSC LOC="P67" | IOSTANDARD = LVCMOS33;
+NET O_PAL LOC="P66" | IOSTANDARD = LVCMOS33;
+
+# Sound input/output
+NET O_AUDIO_L LOC="P8" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 8;
+NET O_AUDIO_R LOC="P9" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 8;
+#NET "ear" LOC="P105" | IOSTANDARD = LVCMOS33;
+
+# Keyboard and mouse
+NET I_PS2_CLK LOC="P98" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = SLOW ;
+NET I_PS2_DATA LOC="P97" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = SLOW ;
+#NET "mouseclk" LOC="P94" | IOSTANDARD = LVCMOS33 | PULLUP;
+#NET "mousedata" LOC="P95" | IOSTANDARD = LVCMOS33 | PULLUP;
+
+# SRAM
+#NET "sram_addr<0>" LOC="P115" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<1>" LOC="P116" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<2>" LOC="P117" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<3>" LOC="P119" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<4>" LOC="P120" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<5>" LOC="P123" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<6>" LOC="P126" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<7>" LOC="P131" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<8>" LOC="P127" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<9>" LOC="P124" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<10>" LOC="P118" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<11>" LOC="P121" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<12>" LOC="P133" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<13>" LOC="P132" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<14>" LOC="P137" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<15>" LOC="P140" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<16>" LOC="P139" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<17>" LOC="P141" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<18>" LOC="P138" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<19>" LOC="P111" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<20>" LOC="P138" | IOSTANDARD = LVCMOS33;
+
+#NET "sram_data<0>" LOC="P114" | IOSTANDARD = LVCMOS33;
+#NET "sram_data<1>" LOC="P112" | IOSTANDARD = LVCMOS33;
+#NET "sram_data<2>" LOC="P111" | IOSTANDARD = LVCMOS33;
+#NET "sram_data<3>" LOC="P99" | IOSTANDARD = LVCMOS33;
+#NET "sram_data<4>" LOC="P100" | IOSTANDARD = LVCMOS33;
+#NET "sram_data<5>" LOC="P101" | IOSTANDARD = LVCMOS33;
+#NET "sram_data<6>" LOC="P102" | IOSTANDARD = LVCMOS33;
+#NET "sram_data<7>" LOC="P104" | IOSTANDARD = LVCMOS33;
+
+#NET "sram_we_n" LOC="P134" | IOSTANDARD = LVCMOS33;
+
+# SPI Flash
+#NET "flash_cs_n" LOC="P38" | IOSTANDARD = LVCMOS33;
+#NET "flash_clk" LOC="P70" | IOSTANDARD = LVCMOS33;
+#NET "flash_mosi" LOC="P64" | IOSTANDARD = LVCMOS33;
+#NET "flash_miso" LOC="P65" | IOSTANDARD = LVCMOS33;
+#NET "flash_ext1" LOC="P62" | IOSTANDARD = LVCMOS33;
+#NET "flash_ext2" LOC="P61" | IOSTANDARD = LVCMOS33;
+
+# SD/MMC
+#NET "sd_cs_n" LOC="P59" | IOSTANDARD = LVCMOS33;
+#NET "sd_clk" LOC="P75" | IOSTANDARD = LVCMOS33;
+#NET "sd_mosi" LOC="P74" | IOSTANDARD = LVCMOS33;
+#NET "sd_miso" LOC="P78" | IOSTANDARD = LVCMOS33;
+
+# JOYSTICK
+#NET "joyup" LOC="P142" | IOSTANDARD = LVCMOS33 | PULLUP;
+#NET "joydown" LOC="P1" | IOSTANDARD = LVCMOS33 | PULLUP;
+#NET "joyleft" LOC="P2" | IOSTANDARD = LVCMOS33 | PULLUP;
+#NET "joyright" LOC="P5" | IOSTANDARD = LVCMOS33 | PULLUP;
+#NET "joyfire" LOC="P143" | IOSTANDARD = LVCMOS33 | PULLUP;
+#NET "joyfire2" LOC="P6" | IOSTANDARD = LVCMOS33 | PULLUP;
+#NET "joyfire3" LOC="P7" | IOSTANDARD = LVCMOS33 | PULLUP;
+
+
+# Otros
+NET I_RESET LOC="P51" | IOSTANDARD = LVCMOS33;
+NET I_CLK_REF TNM_NET = clk_ref_grp;
+TIMESPEC TS01 = PERIOD : clk_ref_grp : 20.00 : PRIORITY 1; # 50.00 MHz
diff --git a/cores/VIC20/source/vic20_zxuno_v4.ucf b/cores/VIC20/source/vic20_zxuno_v4.ucf
new file mode 100644
index 0000000..cd34f8c
--- /dev/null
+++ b/cores/VIC20/source/vic20_zxuno_v4.ucf
@@ -0,0 +1,92 @@
+# Clocks & debug
+NET I_CLK_REF LOC="P55" | IOSTANDARD = LVCMOS33 | PERIOD=20.0ns;
+#NET "testled" LOC="P10" | IOSTANDARD = LVCMOS33;
+
+# Video output
+NET O_VIDEO_R(2) LOC="P81" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
+NET O_VIDEO_R(1) LOC="P80" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
+NET O_VIDEO_R(0) LOC="P79" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
+NET O_VIDEO_G(2) LOC="P84" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
+NET O_VIDEO_G(1) LOC="P83" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
+NET O_VIDEO_G(0) LOC="P82" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
+NET O_VIDEO_B(2) LOC="P93" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
+NET O_VIDEO_B(1) LOC="P92" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
+NET O_VIDEO_B(0) LOC="P88" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
+NET O_HSYNC LOC="P87" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
+NET O_VSYNC LOC="P85" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
+NET O_NTSC LOC="P66" | IOSTANDARD = LVCMOS33;
+NET O_PAL LOC="P67" | IOSTANDARD = LVCMOS33;
+
+# Sound input/output
+NET O_AUDIO_L LOC="P10" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 8;
+NET O_AUDIO_R LOC="P9" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 8;
+#NET "ear" LOC="P94" | IOSTANDARD = LVCMOS33;
+
+# Keyboard and mouse
+NET I_PS2_CLK LOC="P99" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = SLOW ;
+NET I_PS2_DATA LOC="P98" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = SLOW ;
+#NET "mouseclk" LOC="P95" | IOSTANDARD = LVCMOS33 | PULLUP;
+#NET "mousedata" LOC="P97" | IOSTANDARD = LVCMOS33 | PULLUP;
+
+# SRAM
+#NET "sram_addr<0>" LOC="P141" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<1>" LOC="P139" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<2>" LOC="P137" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<3>" LOC="P134" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<4>" LOC="P133" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<5>" LOC="P120" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<6>" LOC="P118" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<7>" LOC="P116" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<8>" LOC="P114" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<9>" LOC="P112" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<10>" LOC="P104" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<11>" LOC="P102" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<12>" LOC="P101" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<13>" LOC="P100" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<14>" LOC="P111" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<15>" LOC="P131" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<16>" LOC="P138" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<17>" LOC="P140" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<18>" LOC="P142" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<19>" LOC="P105" | IOSTANDARD = LVCMOS33;
+#NET "sram_addr<20>" LOC="P143" | IOSTANDARD = LVCMOS33;
+
+#NET "sram_data<0>" LOC="P132" | IOSTANDARD = LVCMOS33;
+#NET "sram_data<1>" LOC="P127" | IOSTANDARD = LVCMOS33;
+#NET "sram_data<2>" LOC="P124" | IOSTANDARD = LVCMOS33;
+#NET "sram_data<3>" LOC="P123" | IOSTANDARD = LVCMOS33;
+#NET "sram_data<4>" LOC="P115" | IOSTANDARD = LVCMOS33;
+#NET "sram_data<5>" LOC="P117" | IOSTANDARD = LVCMOS33;
+#NET "sram_data<6>" LOC="P119" | IOSTANDARD = LVCMOS33;
+#NET "sram_data<7>" LOC="P126" | IOSTANDARD = LVCMOS33;
+
+#NET "sram_we_n" LOC="P121" | IOSTANDARD = LVCMOS33;
+
+# SPI Flash
+#NET "flash_cs_n" LOC="P38" | IOSTANDARD = LVCMOS33;
+#NET "flash_clk" LOC="P70" | IOSTANDARD = LVCMOS33;
+#NET "flash_mosi" LOC="P64" | IOSTANDARD = LVCMOS33;
+#NET "flash_miso" LOC="P65" | IOSTANDARD = LVCMOS33;
+#NET "flash_ext1" LOC="P62" | IOSTANDARD = LVCMOS33;
+#NET "flash_ext2" LOC="P61" | IOSTANDARD = LVCMOS33;
+
+# SD/MMC
+#NET "sd_cs_n" LOC="P59" | IOSTANDARD = LVCMOS33;
+#NET "sd_clk" LOC="P75" | IOSTANDARD = LVCMOS33;
+#NET "sd_mosi" LOC="P74" | IOSTANDARD = LVCMOS33;
+#NET "sd_miso" LOC="P78" | IOSTANDARD = LVCMOS33;
+
+# JOYSTICK
+#NET "joyup" LOC="P1" | IOSTANDARD = LVCMOS33 | PULLUP;
+#NET "joydown" LOC="P5" | IOSTANDARD = LVCMOS33 | PULLUP;
+#NET "joyleft" LOC="P6" | IOSTANDARD = LVCMOS33 | PULLUP;
+#NET "joyright" LOC="P7" | IOSTANDARD = LVCMOS33 | PULLUP;
+#NET "joyfire" LOC="P2" | IOSTANDARD = LVCMOS33 | PULLUP;
+#NET "joyfire2" LOC="P8" | IOSTANDARD = LVCMOS33 | PULLUP;
+#NET "joyfire3" LOC="P39" | IOSTANDARD = LVCMOS33 | PULLUP;
+
+
+# Otros
+NET I_RESET LOC="P51" | IOSTANDARD = LVCMOS33;
+NET I_CLK_REF TNM_NET = clk_ref_grp;
+TIMESPEC TS01 = PERIOD : clk_ref_grp : 20.00 : PRIORITY 1; # 50.00 MHz