diff --git a/cores/BBCMicro/working/make.bat b/cores/BBCMicro/working/make.bat
index 6038303..6024c18 100644
--- a/cores/BBCMicro/working/make.bat
+++ b/cores/BBCMicro/working/make.bat
@@ -1,17 +1,17 @@
-SET machine = "bbc_micro"
+SET machine=bbc_micro
if not exist projnav.tmp mkdir projnav.tmp
call xst -intstyle ise -ifn %machine%.xst -ofn %machine%.syr
-call :generar v2 %machine%
-call :generar v3 %machine%
-call :generar v4 %machine%
-call :generar Ap %machine%
+call :generar v2
+call :generar v3
+call :generar v4
+call :generar Ap
goto :eof
:generar
-call ngdbuild -intstyle ise -dd _ngo -nt timestamp -uc ..\src\%2_zxuno_%1.ucf -p xc6slx9-tqg144-2 %2.ngc %2.ngd
-call map -intstyle ise -w -ol high -mt 2 -p xc6slx9-tqg144-2 -logic_opt off -t 1 -xt 0 -register_duplication off -r 4 -global_opt off -ir off -pr off -lc off -power off -o %2_map.ncd %2.ngd %2.pcf
-call par -intstyle ise -w -ol high -mt 4 %2_map.ncd %2.ncd %2.pcf
-call trce -intstyle ise -v 3 -s 2 -n 3 -fastpaths -xml %2.twx %2.ncd -o %2.twr %2.pcf
-call bitgen -intstyle ise -f %2.ut %2.ncd
-copy /y %2.bit %2.%1.bit
+call ngdbuild -intstyle ise -dd _ngo -nt timestamp -uc ..\src\%machine%_zxuno_%1.ucf -p xc6slx9-tqg144-2 %machine%.ngc %machine%.ngd
+call map -intstyle ise -w -ol high -mt 2 -p xc6slx9-tqg144-2 -logic_opt off -t 1 -xt 0 -register_duplication off -r 4 -global_opt off -ir off -pr off -lc off -power off -o %machine%_map.ncd %machine%.ngd %machine%.pcf
+call par -intstyle ise -w -ol high -mt 4 %machine%_map.ncd %machine%.ncd %machine%.pcf
+call trce -intstyle ise -v 3 -s 2 -n 3 -fastpaths -xml %machine%.twx %machine%.ncd -o %machine%.twr %machine%.pcf
+call bitgen -intstyle ise -f %machine%.ut %machine%.ncd
+copy /y %machine%.bit %machine%.%1.bit
:eof
\ No newline at end of file
diff --git a/cores/JupiterAce/jupiter_ace.gise b/cores/JupiterAce/jupiter_ace.gise
deleted file mode 100644
index d297a4b..0000000
--- a/cores/JupiterAce/jupiter_ace.gise
+++ /dev/null
@@ -1,188 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 11.1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/cores/JupiterAce/jupiter_ace.prj b/cores/JupiterAce/jupiter_ace.prj
new file mode 100644
index 0000000..ec3518e
--- /dev/null
+++ b/cores/JupiterAce/jupiter_ace.prj
@@ -0,0 +1,13 @@
+verilog work "tv80_reg.v"
+verilog work "tv80_mcode.v"
+verilog work "tv80_alu.v"
+verilog work "tv80_core.v"
+verilog work "tv80n.v"
+verilog work "rom.v"
+verilog work "ps2_port.v"
+verilog work "memorias.v"
+verilog work "jace_logic.v"
+verilog work "relojes.v"
+verilog work "keyboard_for_ace.v"
+verilog work "fpga_ace.v"
+verilog work "tld_jace_spartan6.v"
diff --git a/cores/JupiterAce/jupiter_ace.ut b/cores/JupiterAce/jupiter_ace.ut
new file mode 100644
index 0000000..a9facca
--- /dev/null
+++ b/cores/JupiterAce/jupiter_ace.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:No
+-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/JupiterAce/tld_jace_spartan6.v b/cores/JupiterAce/jupiter_ace.v
similarity index 100%
rename from cores/JupiterAce/tld_jace_spartan6.v
rename to cores/JupiterAce/jupiter_ace.v
diff --git a/cores/JupiterAce/jupiter_ace.xise b/cores/JupiterAce/jupiter_ace.xise
deleted file mode 100644
index d10d56d..0000000
--- a/cores/JupiterAce/jupiter_ace.xise
+++ /dev/null
@@ -1,427 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/cores/JupiterAce/jupiter_ace.xst b/cores/JupiterAce/jupiter_ace.xst
new file mode 100644
index 0000000..f22e93a
--- /dev/null
+++ b/cores/JupiterAce/jupiter_ace.xst
@@ -0,0 +1,52 @@
+set -tmpdir "projnav.tmp"
+set -xsthdpdir "xst"
+run
+-ifn jupiter_ace.prj
+-ofn jupiter_ace
+-ofmt NGC
+-p xc6slx9-2-tqg144
+-top jupiter_ace
+-opt_mode Area
+-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/JupiterAce/jupiter_ace_zxuno_Ap.ucf b/cores/JupiterAce/jupiter_ace_zxuno_Ap.ucf
new file mode 100644
index 0000000..a5f6e18
--- /dev/null
+++ b/cores/JupiterAce/jupiter_ace_zxuno_Ap.ucf
@@ -0,0 +1,89 @@
+# Clocks & debug
+NET "clk50mhz" LOC="P55" | IOSTANDARD = LVCMOS33 | PERIOD=20.0ns;
+#NET "testled" LOC="P2" | IOSTANDARD = LVCMOS33;
+
+# Video output
+NET "r<2>" LOC="P97" | IOSTANDARD = LVCMOS33;
+NET "r<1>" LOC="P95" | IOSTANDARD = LVCMOS33;
+NET "r<0>" LOC="P94" | IOSTANDARD = LVCMOS33;
+NET "g<2>" LOC="P88" | IOSTANDARD = LVCMOS33;
+NET "g<1>" LOC="P87" | IOSTANDARD = LVCMOS33;
+NET "g<0>" LOC="P85" | IOSTANDARD = LVCMOS33;
+NET "b<2>" LOC="P84" | IOSTANDARD = LVCMOS33;
+NET "b<1>" LOC="P83" | IOSTANDARD = LVCMOS33;
+NET "b<0>" LOC="P82" | IOSTANDARD = LVCMOS33;
+NET "csync" LOC="P93" | IOSTANDARD = LVCMOS33;
+#NET "vsync" LOC="P92" | IOSTANDARD = LVCMOS33;
+NET "stdn" LOC="P51" | IOSTANDARD = LVCMOS33;
+NET "stdnb" LOC="P50" | IOSTANDARD = LVCMOS33;
+
+# Sound input/output
+NET "audio_out_left" LOC="P98" | IOSTANDARD = LVCMOS33;
+NET "audio_out_right" LOC="P99" | IOSTANDARD = LVCMOS33;
+NET "ear" LOC="P1" | IOSTANDARD = LVCMOS33;
+
+# Keyboard and mouse
+NET "clkps2" LOC="P143" | IOSTANDARD = LVCMOS33 | PULLUP;
+NET "dataps2" LOC="P142" | IOSTANDARD = LVCMOS33 | PULLUP;
+#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_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;
+
+
+
+
+
diff --git a/cores/JupiterAce/jupiter_ace_zxuno_v2_v3.ucf b/cores/JupiterAce/jupiter_ace_zxuno_v2_v3.ucf
new file mode 100644
index 0000000..7008ca4
--- /dev/null
+++ b/cores/JupiterAce/jupiter_ace_zxuno_v2_v3.ucf
@@ -0,0 +1,91 @@
+# Clocks & debug
+NET "clk50mhz" LOC="P55" | IOSTANDARD = LVCMOS33 | PERIOD=20.0ns;
+#NET "testled" LOC="P10" | IOSTANDARD = LVCMOS33;
+
+# Video output
+NET "r<2>" LOC="P93" | IOSTANDARD = LVCMOS33;
+NET "r<1>" LOC="P92" | IOSTANDARD = LVCMOS33;
+NET "r<0>" LOC="P88" | IOSTANDARD = LVCMOS33;
+NET "g<2>" LOC="P84" | IOSTANDARD = LVCMOS33;
+NET "g<1>" LOC="P83" | IOSTANDARD = LVCMOS33;
+NET "g<0>" LOC="P82" | IOSTANDARD = LVCMOS33;
+NET "b<2>" LOC="P81" | IOSTANDARD = LVCMOS33;
+NET "b<1>" LOC="P80" | IOSTANDARD = LVCMOS33;
+NET "b<0>" LOC="P79" | IOSTANDARD = LVCMOS33;
+NET "csync" LOC="P87" | IOSTANDARD = LVCMOS33;
+#NET "vsync" LOC="P85" | IOSTANDARD = LVCMOS33;
+NET "stdn" LOC="P67" | IOSTANDARD = LVCMOS33;
+NET "stdnb" LOC="P66" | IOSTANDARD = LVCMOS33;
+
+# Sound input/output
+NET "audio_out_left" LOC="P8" | IOSTANDARD = LVCMOS33;
+NET "audio_out_right" LOC="P9" | IOSTANDARD = LVCMOS33;
+NET "ear" LOC="P105" | IOSTANDARD = LVCMOS33;
+
+# Keyboard and mouse
+NET "clkps2" LOC="P98" | IOSTANDARD = LVCMOS33 | PULLUP;
+NET "dataps2" LOC="P97" | IOSTANDARD = LVCMOS33 | PULLUP;
+#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
+
+
diff --git a/cores/JupiterAce/jupiter_ace_zxuno_v4.ucf b/cores/JupiterAce/jupiter_ace_zxuno_v4.ucf
new file mode 100644
index 0000000..1fe1cb8
--- /dev/null
+++ b/cores/JupiterAce/jupiter_ace_zxuno_v4.ucf
@@ -0,0 +1,91 @@
+# Clocks & debug
+NET "clk50mhz" LOC="P55" | IOSTANDARD = LVCMOS33 | PERIOD=20.0ns;
+#NET "testled" LOC="P10" | IOSTANDARD = LVCMOS33;
+
+# Video output
+NET "r<2>" LOC="P81" | IOSTANDARD = LVCMOS33;
+NET "r<1>" LOC="P80" | IOSTANDARD = LVCMOS33;
+NET "r<0>" LOC="P79" | IOSTANDARD = LVCMOS33;
+NET "g<2>" LOC="P84" | IOSTANDARD = LVCMOS33;
+NET "g<1>" LOC="P83" | IOSTANDARD = LVCMOS33;
+NET "g<0>" LOC="P82" | IOSTANDARD = LVCMOS33;
+NET "b<2>" LOC="P93" | IOSTANDARD = LVCMOS33;
+NET "b<1>" LOC="P92" | IOSTANDARD = LVCMOS33;
+NET "b<0>" LOC="P88" | IOSTANDARD = LVCMOS33;
+NET "csync" LOC="P87" | IOSTANDARD = LVCMOS33;
+#NET "vsync" LOC="P85" | IOSTANDARD = LVCMOS33;
+NET "stdn" LOC="P66" | IOSTANDARD = LVCMOS33;
+NET "stdnb" LOC="P67" | IOSTANDARD = LVCMOS33;
+
+# Sound input/output
+NET "audio_out_left" LOC="P10" | IOSTANDARD = LVCMOS33;
+NET "audio_out_right" LOC="P9" | IOSTANDARD = LVCMOS33;
+NET "ear" LOC="P94" | IOSTANDARD = LVCMOS33;
+
+# Keyboard and mouse
+NET "clkps2" LOC="P99" | IOSTANDARD = LVCMOS33 | PULLUP;
+NET "dataps2" LOC="P98" | IOSTANDARD = LVCMOS33 | PULLUP;
+#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;
+
+
+
+
+
diff --git a/cores/JupiterAce/make.bat b/cores/JupiterAce/make.bat
new file mode 100644
index 0000000..809d5db
--- /dev/null
+++ b/cores/JupiterAce/make.bat
@@ -0,0 +1,7 @@
+SET machine=jupiter_ace
+SET ruta_ucf=jupiter_ace
+SET ruta_bat=..\
+call ..\genxst.bat
+call ..\generar.bat v2_v3
+call ..\generar.bat v4
+call ..\generar.bat Ap
diff --git a/cores/JupiterAce/par_usage_statistics.html b/cores/JupiterAce/par_usage_statistics.html
deleted file mode 100644
index e9e92b5..0000000
--- a/cores/JupiterAce/par_usage_statistics.html
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-| Par Statistics |
-| Total Non-vccgnd Signals=2039 |
-| Total Non-vccgnd Design Pins=10450 |
-| Total Non-vccgnd Conns=10450 |
-| Total Non-vccgnd Timing Constrained Conns=10425 |
-| Phase 1 CPU=11.4 sec |
-| Phase 2 CPU=12.3 sec |
-| Phase 3 CPU=16.9 sec |
-| Phase 4 CPU=17.8 sec |
-| Phase 5 CPU=24.9 sec |
-| Phase 6 CPU=24.9 sec |
-| Phase 7 CPU=24.9 sec |
-| Phase 8 CPU=24.9 sec |
-| Phase 9 CPU=25.6 sec |
-| Phase 10 CPU=26.4 sec |
-| AvgWirelenPerPin Fanout 1=3.0 |
-| AvgWirelenPerPin Fanout 2=3.0 |
-| AvgWirelenPerPin Fanout 3=4.0 |
-| AvgWirelenPerPin Fanout 4=4.0 |
-| AvgWirelenPerPin Fanout 10=4.7 |
-| AvgWirelenPerPin Fanout 50=4.1 |
-| AvgWirelenPerPin Fanout 100=8.6 |
-| AvgWirelenPerPin Fanout 500=3.4 |
-| AvgWirelenPerPin Fanout 5000=0.0 |
-| AvgWirelenPerPin Fanout 20000=0.0 |
-| AvgWirelenPerPin Fanout 50000=0.0 |
-| AvgWirelenPerPin Fanout 100000=0.0 |
-| IRR Gamma=6.0303 |
-
-
diff --git a/cores/JupiterAce/pines_zxuno.ucf b/cores/JupiterAce/pines_zxuno.ucf
deleted file mode 100644
index 7fea9f7..0000000
--- a/cores/JupiterAce/pines_zxuno.ucf
+++ /dev/null
@@ -1,82 +0,0 @@
-# Clocks & debug
-NET "clk50mhz" LOC="P55" | IOSTANDARD = LVCMOS33;
-#NET "testled" LOC="2" | IOSTANDARD = LVCMOS33;
-NET "clk50mhz" PERIOD=20 ns;
-#NET "clk12" PERIOD=83 ns;
-
-# Video output
-NET "r<2>" LOC="P97" | IOSTANDARD = LVCMOS33;
-NET "r<1>" LOC="P95" | IOSTANDARD = LVCMOS33;
-NET "r<0>" LOC="P94" | IOSTANDARD = LVCMOS33;
-NET "g<2>" LOC="P88" | IOSTANDARD = LVCMOS33;
-NET "g<1>" LOC="P87" | IOSTANDARD = LVCMOS33;
-NET "g<0>" LOC="P85" | IOSTANDARD = LVCMOS33;
-NET "b<2>" LOC="P84" | IOSTANDARD = LVCMOS33;
-NET "b<1>" LOC="P83" | IOSTANDARD = LVCMOS33;
-NET "b<0>" LOC="P82" | IOSTANDARD = LVCMOS33;
-NET "csync" LOC="P93" | IOSTANDARD = LVCMOS33;
-#NET "vsync" LOC="P92" | IOSTANDARD = LVCMOS33;
-NET "stdn" LOC="P51" | IOSTANDARD = LVCMOS33;
-NET "stdnb" LOC="P50" | IOSTANDARD = LVCMOS33;
-
-# Sound input/output
-NET "audio_out_left" LOC="P98" | IOSTANDARD = LVCMOS33;
-NET "audio_out_right" LOC="P99" | IOSTANDARD = LVCMOS33;
-NET "ear" LOC="P1" | IOSTANDARD = LVCMOS33;
-
-# Keyboard and mouse
-NET "clkps2" LOC="P143" | IOSTANDARD = LVCMOS33 | PULLUP; # pin 1 DIN
-NET "dataps2" LOC="P142" | IOSTANDARD = LVCMOS33 | PULLUP; # pin 5 DIN
-#NET "mouseclk" LOC="P57" | IOSTANDARD = LVCMOS33 | PULLUP; # pin 6 DIN
-#NET "mousedata" LOC="P56" | IOSTANDARD = LVCMOS33 | PULLUP; # pin 2 DIN
-
-# 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_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;
-
-# 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; #JOY6
-#NET "joydown" LOC="P67" | IOSTANDARD = LVCMOS33 | PULLUP; #JOY4
-#NET "joyleft" LOC="P59" | IOSTANDARD = LVCMOS33 | PULLUP; #JOY3
-#NET "joyright" LOC="P58" | IOSTANDARD = LVCMOS33 | PULLUP; #JOY2
-#NET "joyfire" LOC="P75" | IOSTANDARD = LVCMOS33 | PULLUP; #JOY7
diff --git a/cores/JupiterAce/pines_zxuno_Ap.ucf b/cores/JupiterAce/pines_zxuno_Ap.ucf
deleted file mode 100644
index 7fea9f7..0000000
--- a/cores/JupiterAce/pines_zxuno_Ap.ucf
+++ /dev/null
@@ -1,82 +0,0 @@
-# Clocks & debug
-NET "clk50mhz" LOC="P55" | IOSTANDARD = LVCMOS33;
-#NET "testled" LOC="2" | IOSTANDARD = LVCMOS33;
-NET "clk50mhz" PERIOD=20 ns;
-#NET "clk12" PERIOD=83 ns;
-
-# Video output
-NET "r<2>" LOC="P97" | IOSTANDARD = LVCMOS33;
-NET "r<1>" LOC="P95" | IOSTANDARD = LVCMOS33;
-NET "r<0>" LOC="P94" | IOSTANDARD = LVCMOS33;
-NET "g<2>" LOC="P88" | IOSTANDARD = LVCMOS33;
-NET "g<1>" LOC="P87" | IOSTANDARD = LVCMOS33;
-NET "g<0>" LOC="P85" | IOSTANDARD = LVCMOS33;
-NET "b<2>" LOC="P84" | IOSTANDARD = LVCMOS33;
-NET "b<1>" LOC="P83" | IOSTANDARD = LVCMOS33;
-NET "b<0>" LOC="P82" | IOSTANDARD = LVCMOS33;
-NET "csync" LOC="P93" | IOSTANDARD = LVCMOS33;
-#NET "vsync" LOC="P92" | IOSTANDARD = LVCMOS33;
-NET "stdn" LOC="P51" | IOSTANDARD = LVCMOS33;
-NET "stdnb" LOC="P50" | IOSTANDARD = LVCMOS33;
-
-# Sound input/output
-NET "audio_out_left" LOC="P98" | IOSTANDARD = LVCMOS33;
-NET "audio_out_right" LOC="P99" | IOSTANDARD = LVCMOS33;
-NET "ear" LOC="P1" | IOSTANDARD = LVCMOS33;
-
-# Keyboard and mouse
-NET "clkps2" LOC="P143" | IOSTANDARD = LVCMOS33 | PULLUP; # pin 1 DIN
-NET "dataps2" LOC="P142" | IOSTANDARD = LVCMOS33 | PULLUP; # pin 5 DIN
-#NET "mouseclk" LOC="P57" | IOSTANDARD = LVCMOS33 | PULLUP; # pin 6 DIN
-#NET "mousedata" LOC="P56" | IOSTANDARD = LVCMOS33 | PULLUP; # pin 2 DIN
-
-# 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_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;
-
-# 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; #JOY6
-#NET "joydown" LOC="P67" | IOSTANDARD = LVCMOS33 | PULLUP; #JOY4
-#NET "joyleft" LOC="P59" | IOSTANDARD = LVCMOS33 | PULLUP; #JOY3
-#NET "joyright" LOC="P58" | IOSTANDARD = LVCMOS33 | PULLUP; #JOY2
-#NET "joyfire" LOC="P75" | IOSTANDARD = LVCMOS33 | PULLUP; #JOY7
diff --git a/cores/JupiterAce/pines_zxuno_v4.ucf b/cores/JupiterAce/pines_zxuno_v4.ucf
deleted file mode 100644
index 7862a72..0000000
--- a/cores/JupiterAce/pines_zxuno_v4.ucf
+++ /dev/null
@@ -1,85 +0,0 @@
-# Clocks & debug
-NET "clk50mhz" LOC="P55" | IOSTANDARD = LVCMOS33;
-#NET "testled" LOC="P10" | IOSTANDARD = LVCMOS33;
-NET "clk50mhz" PERIOD=20 ns;
-#NET "clk12" PERIOD=83 ns;
-
-# Video output
-NET "b<2>" LOC="P93" | IOSTANDARD = LVCMOS33;
-NET "b<1>" LOC="P92" | IOSTANDARD = LVCMOS33;
-NET "b<0>" LOC="P88" | IOSTANDARD = LVCMOS33;
-NET "g<2>" LOC="P84" | IOSTANDARD = LVCMOS33;
-NET "g<1>" LOC="P83" | IOSTANDARD = LVCMOS33;
-NET "g<0>" LOC="P82" | IOSTANDARD = LVCMOS33;
-NET "r<2>" LOC="P81" | IOSTANDARD = LVCMOS33;
-NET "r<1>" LOC="P80" | IOSTANDARD = LVCMOS33;
-NET "r<0>" LOC="P79" | IOSTANDARD = LVCMOS33;
-NET "csync" LOC="P87" | IOSTANDARD = LVCMOS33;
-#NET "vsync" LOC="P85" | IOSTANDARD = LVCMOS33;
-NET "stdn" LOC="P66" | IOSTANDARD = LVCMOS33;
-NET "stdnb" LOC="P67" | IOSTANDARD = LVCMOS33;
-
-# Sound input/output
-NET "audio_out_left" LOC="P10" | IOSTANDARD = LVCMOS33;
-NET "audio_out_right" LOC="P9" | IOSTANDARD = LVCMOS33;
-NET "ear" LOC="P94" | IOSTANDARD = LVCMOS33;
-
-# Keyboard and mouse
-NET "clkps2" LOC="P99" | IOSTANDARD = LVCMOS33 | PULLUP; # pin 1 DIN
-NET "dataps2" LOC="P98" | IOSTANDARD = LVCMOS33 | PULLUP; # pin 5 DIN
-#NET "mouseclk" LOC="P95" | IOSTANDARD = LVCMOS33 | PULLUP; # pin 6 DIN
-#NET "mousedata" LOC="P97" | IOSTANDARD = LVCMOS33 | PULLUP; # pin 2 DIN
-
-# 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;
-
-# 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; #JOY6
-#NET "joydown" LOC="P5" | IOSTANDARD = LVCMOS33 | PULLUP; #JOY4
-#NET "joyleft" LOC="P6" | IOSTANDARD = LVCMOS33 | PULLUP; #JOY3
-#NET "joyright" LOC="P7" | IOSTANDARD = LVCMOS33 | PULLUP; #JOY2
-#NET "joyfire" LOC="P2" | IOSTANDARD = LVCMOS33 | PULLUP; #JOY7
-#NET "btn2" LOC="P8" | IOSTANDARD = LVCMOS33 | PULLUP; #JOY5
diff --git a/cores/JupiterAce/relojes.v b/cores/JupiterAce/relojes.v
new file mode 100644
index 0000000..592c2c2
--- /dev/null
+++ b/cores/JupiterAce/relojes.v
@@ -0,0 +1,145 @@
+// file: tres_relojes.v
+//
+// (c) Copyright 2008 - 2010 Xilinx, Inc. All rights reserved.
+//
+// This file contains confidential and proprietary information
+// of Xilinx, Inc. and is protected under U.S. and
+// international copyright and other intellectual property
+// laws.
+//
+// DISCLAIMER
+// This disclaimer is not a license and does not grant any
+// rights to the materials distributed herewith. Except as
+// otherwise provided in a valid license issued to you by
+// Xilinx, and to the maximum extent permitted by applicable
+// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
+// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
+// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
+// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
+// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
+// (2) Xilinx shall not be liable (whether in contract or tort,
+// including negligence, or under any other theory of
+// liability) for any loss or damage of any kind or nature
+// related to, arising under or in connection with these
+// materials, including for any direct, or any indirect,
+// special, incidental, or consequential loss or damage
+// (including loss of data, profits, goodwill, or any type of
+// loss or damage suffered as a result of any action brought
+// by a third party) even if such damage or loss was
+// reasonably foreseeable or Xilinx had been advised of the
+// possibility of the same.
+//
+// CRITICAL APPLICATIONS
+// Xilinx products are not designed or intended to be fail-
+// safe, or for use in any application requiring fail-safe
+// performance, such as life-support or safety devices or
+// systems, Class III medical devices, nuclear facilities,
+// applications related to the deployment of airbags, or any
+// other applications that could lead to death, personal
+// injury, or severe property or environmental damage
+// (individually and collectively, "Critical
+// Applications"). Customer assumes the sole risk and
+// liability of any use of Xilinx products in Critical
+// Applications, subject only to applicable laws and
+// regulations governing limitations on product liability.
+//
+// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
+// PART OF THIS FILE AT ALL TIMES.
+//
+
+`timescale 1ps/1ps
+`default_nettype none
+
+(* CORE_GENERATION_INFO = "tres_relojes,clk_wiz_v1_8,{component_name=tres_relojes,use_phase_alignment=true,use_min_o_jitter=false,use_max_i_jitter=false,use_dyn_phase_shift=false,use_inclk_switchover=false,use_dyn_reconfig=false,feedback_source=FDBK_AUTO,primtype_sel=PLL_BASE,num_out_clk=3,clkin1_period=20.0,clkin2_period=20.0,use_power_down=false,use_reset=false,use_locked=false,use_inclk_stopped=false,use_status=false,use_freeze=false,use_clk_valid=false,feedback_type=SINGLE,clock_mgr_type=AUTO,manual_override=false}" *)
+module cuatro_relojes
+ (// Clock in ports
+ input wire CLK_IN1,
+ // Clock out ports
+ output wire CLK_OUT1,
+ output wire CLK_OUT2,
+ output wire CLK_OUT3,
+ output wire CLK_OUT4
+ );
+
+ wire clkin1,clkout0,clkout1,clkout2,clkout3;
+ // Input buffering
+ //------------------------------------
+ IBUFG clkin1_buf
+ (.O (clkin1),
+ .I (CLK_IN1));
+
+
+ // Clocking primitive
+ //------------------------------------
+ // Instantiation of the PLL primitive
+ // * Unused inputs are tied off
+ // * Unused outputs are labeled unused
+ wire [15:0] do_unused;
+ wire drdy_unused;
+ wire locked_unused;
+ wire clkfbout;
+ wire clkfbout_buf;
+ wire clkout4_unused;
+ wire clkout5_unused;
+
+ PLL_BASE
+ #(.BANDWIDTH ("OPTIMIZED"),
+ .CLK_FEEDBACK ("CLKFBOUT"),
+ .COMPENSATION ("SYSTEM_SYNCHRONOUS"),
+ .DIVCLK_DIVIDE (1),
+ .CLKFBOUT_MULT (8),
+ .CLKFBOUT_PHASE (0.000),
+ .CLKOUT0_DIVIDE (15),
+ .CLKOUT0_PHASE (0.000),
+ .CLKOUT0_DUTY_CYCLE (0.500),
+ .CLKOUT1_DIVIDE (60),
+ .CLKOUT1_PHASE (0.000),
+ .CLKOUT1_DUTY_CYCLE (0.500),
+ .CLKOUT2_DIVIDE (120),
+ .CLKOUT2_PHASE (0.000),
+ .CLKOUT3_DIVIDE (30),
+ .CLKOUT3_PHASE (0.000),
+ .CLKOUT2_DUTY_CYCLE (0.500),
+ .CLKIN_PERIOD (20.0),
+ .REF_JITTER (0.010))
+ pll_base_inst
+ // Output clocks
+ (.CLKFBOUT (clkfbout),
+ .CLKOUT0 (clkout0),
+ .CLKOUT1 (clkout1),
+ .CLKOUT2 (clkout2),
+ .CLKOUT3 (clkout3),
+ .CLKOUT4 (clkout4_unused),
+ .CLKOUT5 (clkout5_unused),
+ .LOCKED (locked_unused),
+ .RST (1'b0),
+ // Input clock control
+ .CLKFBIN (clkfbout_buf),
+ .CLKIN (clkin1));
+
+
+ // Output buffering
+ //-----------------------------------
+ BUFG clkf_buf
+ (.O (clkfbout_buf),
+ .I (clkfbout));
+
+
+ BUFG clkout1_buf
+ (.O (CLK_OUT1),
+ .I (clkout0));
+
+
+ BUFG clkout2_buf
+ (.O (CLK_OUT2),
+ .I (clkout1));
+
+ BUFG clkout3_buf
+ (.O (CLK_OUT3),
+ .I (clkout2));
+
+ BUFG clkout4_buf
+ (.O (CLK_OUT4),
+ .I (clkout3));
+
+endmodule
diff --git a/cores/generar.bat b/cores/generar.bat
new file mode 100644
index 0000000..14dfb84
--- /dev/null
+++ b/cores/generar.bat
@@ -0,0 +1,6 @@
+call %ruta_bat%ngdbuild -intstyle ise -dd _ngo -nt timestamp -uc %ruta_ucf%_zxuno_%1.ucf -p xc6slx9-tqg144-2 %machine%.ngc %machine%.ngd
+call %ruta_bat%map -intstyle ise -w -ol high -mt 2 -p xc6slx9-tqg144-2 -logic_opt off -t 1 -xt 0 -register_duplication off -r 4 -global_opt off -ir off -pr off -lc off -power off -o %machine%_map.ncd %machine%.ngd %machine%.pcf
+call %ruta_bat%par -intstyle ise -w -ol high -mt 4 %machine%_map.ncd %machine%.ncd %machine%.pcf
+call %ruta_bat%trce -intstyle ise -v 3 -s 2 -n 3 -fastpaths -xml %machine%.twx %machine%.ncd -o %machine%.twr %machine%.pcf
+call %ruta_bat%bitgen -intstyle ise -f %machine%.ut %machine%.ncd
+copy /y %machine%.bit %machine%.%1.bit
diff --git a/cores/genxst.bat b/cores/genxst.bat
new file mode 100644
index 0000000..5d87234
--- /dev/null
+++ b/cores/genxst.bat
@@ -0,0 +1,2 @@
+if not exist projnav.tmp mkdir projnav.tmp
+call %ruta_bat%xst -intstyle ise -ifn %machine%.xst -ofn %machine%.syr