From 2aeee7f0b17497924ed5d30c0caa70ff71079ff8 Mon Sep 17 00:00:00 2001 From: Gehstock Date: Sat, 9 Feb 2019 15:36:17 +0100 Subject: [PATCH] Some Changes --- .../Sprint2_MiST/README.txt | 3 +- .../Sprint2_MiST/Release/sprint2.rbf | Bin 0 -> 252470 bytes .../Sprint2_MiST/rtl/cpu_mem.vhd | 69 +- .../Sprint2_MiST/rtl/dac.sv | 2 +- .../Sprint2_MiST/rtl/gearshift.sv | 94 + .../Sprint2_MiST/rtl/joy2quad.sv | 100 + .../Sprint2_MiST/rtl/motion.vhd | 43 +- .../Sprint2_MiST/rtl/playfield.vhd | 43 +- .../Sprint2_MiST/rtl/pll.v | 2 +- .../Sprint2_MiST/rtl/roms/Char_LSB.qip | 3 - .../Sprint2_MiST/rtl/roms/Char_LSB.vhd | 141 - .../Sprint2_MiST/rtl/roms/Char_MSB.qip | 3 - .../Sprint2_MiST/rtl/roms/Char_MSB.vhd | 141 - .../Sprint2_MiST/rtl/roms/addec_prom.qip | 3 - .../Sprint2_MiST/rtl/roms/addec_prom.vhd | 141 - .../Sprint2_MiST/rtl/roms/j6_prom.qip | 3 - .../Sprint2_MiST/rtl/roms/j6_prom.vhd | 141 - .../Sprint2_MiST/rtl/roms/k6_prom.qip | 3 - .../Sprint2_MiST/rtl/roms/k6_prom.vhd | 141 - .../Sprint2_MiST/rtl/roms/prog_rom1.qip | 3 - .../Sprint2_MiST/rtl/roms/prog_rom1.vhd | 141 - .../Sprint2_MiST/rtl/roms/prog_rom2.qip | 3 - .../Sprint2_MiST/rtl/roms/prog_rom2.vhd | 141 - .../Sprint2_MiST/rtl/roms/prog_rom3.qip | 3 - .../Sprint2_MiST/rtl/roms/prog_rom3.vhd | 141 - .../Sprint2_MiST/rtl/roms/prog_rom4.qip | 3 - .../Sprint2_MiST/rtl/roms/prog_rom4.vhd | 141 - .../Sprint2_MiST/rtl/roms/sync_prom.qip | 3 - .../Sprint2_MiST/rtl/roms/sync_prom.vhd | 141 - .../Sprint2_MiST/rtl/sprint1.vhd | 313 -- .../Sprint2_MiST/rtl/sprint2.vhd | 14 +- .../Sprint2_MiST/rtl/sprint2_mist.sv | 144 +- .../Sprint2_MiST}/rtl/sprom.vhd | 0 .../Sprint2_MiST/rtl/sync.vhd | 14 +- .../Sprint2_MiST/snapshot/sprint2.rbf | Bin 251840 -> 0 bytes .../Sprint2_MiST/sprint2.qsf | 13 +- .../SprintOne_MiST/README.txt | 3 +- .../SprintOne_MiST/Release/sprint1.rbf | Bin 0 -> 251539 bytes .../SprintOne_MiST/rtl/gearshift.sv | 94 + .../SprintOne_MiST/rtl/joy2quad.sv | 100 + .../SprintOne_MiST/rtl/sprint1.vhd | 2 - .../SprintOne_MiST/rtl/sprint1_mist.sv | 70 +- .../SprintOne_MiST/snapshot/sprint1.rbf | Bin 250642 -> 0 bytes .../SprintOne_MiST/sprint1.qsf | 2 + .../SuperBreakout_MiST/SuperBreakout.srf | 10 + .../rtl/super_breakout_mist.sv | 32 +- .../UltraTank_MiST/rtl/keyboard.sv | 2 - .../UltraTank_MiST/rtl/ultratank_mist.sv | 72 +- .../UltraTank_MiST/ultratank.srf | 5 + .../rtl/address_decoder.sv | 2 +- .../rtl/programm_memory.sv | 6 +- .../KingBaloon_MiST/Release/KingBaloon.rbf | Bin 0 -> 308524 bytes .../KingBaloon_MiST/Snapshot/KingBaloon.rbf | Bin 312140 -> 0 bytes .../rtl/ROM/{prom.hex => col.hex} | 0 .../rtl/ROM/{GALAXIAN_1H.hex => h.hex} | 0 .../rtl/ROM/{GALAXIAN_1K.hex => k.hex} | 0 .../rtl/ROM/{kb_prog.hex => prog.hex} | 0 .../KingBaloon_MiST/rtl/build_id.v | 4 +- .../KingBaloon_MiST/rtl/kingballon.vhd | 12 +- .../KingBaloon_MiST/rtl/mc_col_pal.vhd | 9 +- .../KingBaloon_MiST/rtl/mc_video.vhd | 20 +- .../Midway8080v2_MiST/rtl/invaders_memory.sv | 8 +- .../rtl/roms/BlueShark/blueshrk_f.hex | 129 + .../rtl/roms/BlueShark/blueshrk_g.hex | 129 + .../rtl/roms/BlueShark/blueshrk_h.hex | 129 + .../Midway8080v2_Mist/Invaders.qsf | 2 +- .../Midway8080v2_Mist/rtl/Invaders_mist.sv | 15 +- .../Midway8080v2_Mist/rtl/build_id.v | 4 +- .../Midway8080v2_Mist/rtl/invaders.vhd | 10 +- .../Midway8080v2_Mist/rtl/invaders_video.vhd | 9 +- .../Jupiter Cantab - JupiterACE_MiST/ace.qsf | 45 +- .../rtl/T80/T80.vhd | 1175 +++++++ .../rtl/T80/T80_ALU.vhd | 376 +++ .../rtl/T80/T80_MCode.vhd | 2035 ++++++++++++ .../rtl/T80/T80_Reg.vhd | 152 + .../rtl/T80/T80pa.vhd | 216 ++ .../rtl/T80/tv80_alu.v | 442 --- .../rtl/T80/tv80_core.v | 1351 -------- .../rtl/T80/tv80_mcode.v | 2724 ----------------- .../rtl/T80/tv80_reg.v | 68 - .../rtl/T80/tv80n.v | 182 -- .../rtl/ace.mif | 353 +++ .../rtl/ace_mist.sv | 235 +- .../rtl/build_id.v | 4 +- .../rtl/dpram.v | 80 + .../rtl/jupiter_ace.v | 431 +-- .../rtl/keyboard.v | 843 ++--- .../rtl/mist_io.v | 385 ++- .../rtl/pll.qip | 2 +- .../rtl/pll.v | 120 +- .../rtl/sprom.vhd | 82 + .../rtl/video.sv | 75 + Computer_MiST/ORAO_MiST/db/Orao_MiST.db_info | 3 + .../Release/mz80k_mist.rbf | Bin .../clean.bat | 0 .../mz80k_mist.qpf | 0 .../mz80k_mist.qsf | 0 .../mz80k_mist.srf | 0 .../rtl/CPLD_74LS245.vhd | 0 .../rtl/Color_Card.sv | 0 .../rtl/HighResCard.sv | 0 .../rtl/TTL74LS245.sv | 0 .../rtl/TTL74LS373.sv | 0 .../rtl/build_id.tcl | 0 .../rtl/build_id.v | 0 .../rtl/cg_rom.v | 0 .../rtl/fz80.v | 0 .../rtl/fz80c.v | 0 .../rtl/hq2x.sv | 0 .../rtl/i8253.v | 0 .../rtl/i8255.vhd | 0 .../rtl/keymatrix.vhd | 0 .../rtl/mist_io.v | 0 .../rtl/monrom.v | 0 .../rtl/mz80k_mist.sv | 0 .../rtl/mz80k_top.v | 0 .../rtl/osd.v | 0 .../rtl/pll.v | 0 .../rtl/ram2.v | 0 .../rtl/roms/80ktc.zip | Bin .../rtl/roms/CG.ROM | Bin .../rtl/roms/MZ80K2E Jap CG | Bin .../rtl/roms/MZ80K2E Jap CG.zip | Bin .../rtl/roms/MZ80K2E ROM | Bin .../rtl/roms/MZ80K2E ROM.zip | Bin .../rtl/roms/Mon.hex | 0 .../rtl/roms/cg.hex | 0 .../rtl/roms/cg_jp.HEX | 0 .../rtl/roms/cg_jp_hex.hex | 0 .../rtl/roms/cgrom.v | 0 .../rtl/roms/combined_keymap.mif | 0 .../rtl/roms/mon_jp.HEX | 0 .../rtl/roms/mon_rom_jp.hex.hex | 0 .../rtl/roms/mram.v | 0 .../rtl/roms/newMon.hex | 0 .../rtl/roms/ram.v | 0 .../rtl/scandoubler.v | 0 .../rtl/sigma_delta_dac.v | 0 .../rtl/sound.v | 0 .../rtl/spram.vhd | 0 .../Sharp - MZ-80_MiST_New/rtl/sprom.vhd | 82 + .../rtl/vga.v | 0 .../rtl/video_mixer.sv | 0 .../suc_hires2.jpg | Bin 144 files changed, 6636 insertions(+), 7999 deletions(-) create mode 100644 Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/Release/sprint2.rbf create mode 100644 Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/gearshift.sv create mode 100644 Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/joy2quad.sv delete mode 100644 Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/Char_LSB.qip delete mode 100644 Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/Char_LSB.vhd delete mode 100644 Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/Char_MSB.qip delete mode 100644 Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/Char_MSB.vhd delete mode 100644 Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/addec_prom.qip delete mode 100644 Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/addec_prom.vhd delete mode 100644 Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/j6_prom.qip delete mode 100644 Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/j6_prom.vhd delete mode 100644 Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/k6_prom.qip delete mode 100644 Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/k6_prom.vhd delete mode 100644 Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/prog_rom1.qip delete mode 100644 Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/prog_rom1.vhd delete mode 100644 Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/prog_rom2.qip delete mode 100644 Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/prog_rom2.vhd delete mode 100644 Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/prog_rom3.qip delete mode 100644 Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/prog_rom3.vhd delete mode 100644 Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/prog_rom4.qip delete mode 100644 Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/prog_rom4.vhd delete mode 100644 Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/sync_prom.qip delete mode 100644 Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/sync_prom.vhd delete mode 100644 Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/sprint1.vhd rename {Computer_MiST/Sharp - MZ-80K_MiST => Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST}/rtl/sprom.vhd (100%) delete mode 100644 Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/snapshot/sprint2.rbf create mode 100644 Arcade_MiST/Atari BW Raster Hardware/SprintOne_MiST/Release/sprint1.rbf create mode 100644 Arcade_MiST/Atari BW Raster Hardware/SprintOne_MiST/rtl/gearshift.sv create mode 100644 Arcade_MiST/Atari BW Raster Hardware/SprintOne_MiST/rtl/joy2quad.sv delete mode 100644 Arcade_MiST/Atari BW Raster Hardware/SprintOne_MiST/snapshot/sprint1.rbf create mode 100644 Arcade_MiST/Atari BW Raster Hardware/SuperBreakout_MiST/SuperBreakout.srf create mode 100644 Arcade_MiST/Atari BW Raster Hardware/UltraTank_MiST/ultratank.srf create mode 100644 Arcade_MiST/Galaxian Hardware/KingBaloon_MiST/Release/KingBaloon.rbf delete mode 100644 Arcade_MiST/Galaxian Hardware/KingBaloon_MiST/Snapshot/KingBaloon.rbf rename Arcade_MiST/Galaxian Hardware/KingBaloon_MiST/rtl/ROM/{prom.hex => col.hex} (100%) rename Arcade_MiST/Galaxian Hardware/KingBaloon_MiST/rtl/ROM/{GALAXIAN_1H.hex => h.hex} (100%) rename Arcade_MiST/Galaxian Hardware/KingBaloon_MiST/rtl/ROM/{GALAXIAN_1K.hex => k.hex} (100%) rename Arcade_MiST/Galaxian Hardware/KingBaloon_MiST/rtl/ROM/{kb_prog.hex => prog.hex} (100%) create mode 100644 Arcade_MiST/Midway8080 Hardware/Midway8080v2_MiST/rtl/roms/BlueShark/blueshrk_f.hex create mode 100644 Arcade_MiST/Midway8080 Hardware/Midway8080v2_MiST/rtl/roms/BlueShark/blueshrk_g.hex create mode 100644 Arcade_MiST/Midway8080 Hardware/Midway8080v2_MiST/rtl/roms/BlueShark/blueshrk_h.hex create mode 100644 Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/T80/T80.vhd create mode 100644 Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/T80/T80_ALU.vhd create mode 100644 Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/T80/T80_MCode.vhd create mode 100644 Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/T80/T80_Reg.vhd create mode 100644 Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/T80/T80pa.vhd delete mode 100644 Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/T80/tv80_alu.v delete mode 100644 Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/T80/tv80_core.v delete mode 100644 Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/T80/tv80_mcode.v delete mode 100644 Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/T80/tv80_reg.v delete mode 100644 Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/T80/tv80n.v create mode 100644 Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/ace.mif create mode 100644 Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/dpram.v create mode 100644 Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/sprom.vhd create mode 100644 Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/video.sv create mode 100644 Computer_MiST/ORAO_MiST/db/Orao_MiST.db_info rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/Release/mz80k_mist.rbf (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/clean.bat (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/mz80k_mist.qpf (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/mz80k_mist.qsf (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/mz80k_mist.srf (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/CPLD_74LS245.vhd (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/Color_Card.sv (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/HighResCard.sv (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/TTL74LS245.sv (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/TTL74LS373.sv (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/build_id.tcl (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/build_id.v (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/cg_rom.v (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/fz80.v (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/fz80c.v (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/hq2x.sv (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/i8253.v (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/i8255.vhd (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/keymatrix.vhd (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/mist_io.v (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/monrom.v (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/mz80k_mist.sv (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/mz80k_top.v (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/osd.v (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/pll.v (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/ram2.v (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/roms/80ktc.zip (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/roms/CG.ROM (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/roms/MZ80K2E Jap CG (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/roms/MZ80K2E Jap CG.zip (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/roms/MZ80K2E ROM (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/roms/MZ80K2E ROM.zip (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/roms/Mon.hex (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/roms/cg.hex (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/roms/cg_jp.HEX (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/roms/cg_jp_hex.hex (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/roms/cgrom.v (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/roms/combined_keymap.mif (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/roms/mon_jp.HEX (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/roms/mon_rom_jp.hex.hex (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/roms/mram.v (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/roms/newMon.hex (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/roms/ram.v (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/scandoubler.v (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/sigma_delta_dac.v (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/sound.v (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/spram.vhd (100%) create mode 100644 Computer_MiST/Sharp - MZ-80_MiST_New/rtl/sprom.vhd rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/vga.v (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/rtl/video_mixer.sv (100%) rename Computer_MiST/{Sharp - MZ-80K_MiST => Sharp - MZ-80_MiST_New}/suc_hires2.jpg (100%) diff --git a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/README.txt b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/README.txt index 79fe7910..8a8bf8a2 100644 --- a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/README.txt +++ b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/README.txt @@ -14,5 +14,4 @@ -- Joystick support. -- -- ---------------------------------------------------------------------------------- -todo: Fix Controls \ No newline at end of file +---------------------------------------------------------------- \ No newline at end of file diff --git a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/Release/sprint2.rbf b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/Release/sprint2.rbf new file mode 100644 index 0000000000000000000000000000000000000000..f53b67969c09922002be93f88496ed3a1756b06c GIT binary patch literal 252470 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
$pmom{`bD7?u$l*?FIo!kP<3aZ;V)S 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

@xnGpMq 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 W+mLj|YS0(`oh}sK^RxO)VeWrvx%3 "rtl/roms/6290-01b1.hex", + widthad_a => 11, + width_a => 8) port map( clock => clk6, address => A(10) & ADR(9 downto 0), q => rom1_dout ); -C1: entity work.prog_rom2 +--A1: entity work.prog_rom1 +--port map( +-- clock => clk6, +-- address => A(10) & ADR(9 downto 0), +-- q => rom1_dout +-- ); + +C1: entity work.sprom +generic map( + init_file => "rtl/roms/6291-01c1.hex", + widthad_a => 11, + width_a => 8) port map( clock => clk6, address => A(10) & ADR(9 downto 0), q => rom2_dout ); + +--C1: entity work.prog_rom2 +--port map( +-- clock => clk6, +-- address => A(10) & ADR(9 downto 0), +-- q => rom2_dout +-- ); -D1: entity work.prog_rom3 +D1: entity work.sprom +generic map( + init_file => "rtl/roms/6404d1.hex", + widthad_a => 11, + width_a => 8) port map( clock => clk6, address => A(10) & ADR(9 downto 0), q => rom3_dout ); -E1: entity work.prog_rom4 +--D1: entity work.prog_rom3 +--port map( +-- clock => clk6, +-- address => A(10) & ADR(9 downto 0), +-- q => rom3_dout +-- ); + +E1: entity work.sprom +generic map( + init_file => "rtl/roms/6405-02e1.hex", + widthad_a => 11, + width_a => 8) port map( clock => clk6, address => A(10) & ADR(9 downto 0), q => rom4_dout ); + +--E1: entity work.prog_rom4 +--port map( +-- clock => clk6, +-- address => A(10) & ADR(9 downto 0), +-- q => rom4_dout +-- ); + -- ROM data mux ROM_mux_in <= (ROM1 & ROM2 & ROM3 & ROM4); @@ -302,12 +347,24 @@ end process; -- Original circuit uses a bipolar PROM in the address decoder, this could be replaced with combinational logic -- E2 PROM -E2: entity work.addec_prom +K6: entity work.sprom +generic map( + init_file => "rtl/roms/6401-01e2.hex", + widthad_a => 5, + width_a => 8) port map( - clock => clk12, + clock => clk12, address => A(13 downto 9), q => addec_bus ); + +--E2: entity work.addec_prom +--port map( +-- clock => clk12, +-- address => A(13 downto 9), +-- q => addec_bus +-- ); + F2_in <= addec_bus(0) & addec_bus(1) & addec_bus(2) & addec_bus(3); WRAM <= addec_bus(4); diff --git a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/dac.sv b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/dac.sv index 22ae8f07..5dea333e 100644 --- a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/dac.sv +++ b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/dac.sv @@ -3,7 +3,7 @@ // // MSBI is the highest bit number. NOT amount of bits! // -module dac #(parameter MSBI=6, parameter INV=1'b1) +module dac #(parameter MSBI=15, parameter INV=1'b1) ( output reg DACout, //Average Output feeding analog lowpass input [MSBI:0] DACin, //DAC input (excess 2**MSBI) diff --git a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/gearshift.sv b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/gearshift.sv new file mode 100644 index 00000000..da7ec335 --- /dev/null +++ b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/gearshift.sv @@ -0,0 +1,94 @@ +//============================================================================ +// gearshift +// +// Turn gearup and geardown buttons into state that can flip the correct switches +// for sprint +// +// +// Copyright (c) 2019 Alan Steremberg - alanswx +// +// +//============================================================================ + +module gearshift +( + input CLK, + + input gearup, + input geardown, + + output gear1, + output gear2, + output gear3 +); + +reg [2:0] gear=3'b0; + +always @(posedge CLK) begin + reg old_gear_up; + reg old_gear_down; + + if (gearup==1) + begin + if (old_gear_up==0) + begin + old_gear_up=1; + if (gear<4) + begin + gear=gear+1; + end + end + end + else + begin + old_gear_up=0; + end + if (geardown==1) + begin + if (old_gear_down==0) + begin + old_gear_down=1; + if (gear>0) + begin + gear=gear-1; + end + end + end + else + begin + old_gear_up=0; + end + + + casex(gear) + 3'b000: + begin + gear1=0; + gear2=1; + gear3=1; + end + 3'b001: + begin + gear1=1; + gear2=0; + gear3=1; + + end + 3'b010: + begin + gear1=1; + gear2=1; + gear3=0; + end + 3'b011: + begin + gear1=1; + gear2=1; + gear3=1; + end + endcase + +end + + +endmodule \ No newline at end of file diff --git a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/joy2quad.sv b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/joy2quad.sv new file mode 100644 index 00000000..dae1fa5f --- /dev/null +++ b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/joy2quad.sv @@ -0,0 +1,100 @@ +//============================================================================ +// joy2quad +// +// Take in digital joystick buttons, and try to estimate a quadrature encoder +// +// +// This makes an offset wave pattern for each keyboard stroke. It might +// be a good extension to change the size of the wave based on how long the joystick +// is held down. +// +// Copyright (c) 2019 Alan Steremberg - alanswx +// +// +//============================================================================ +// digital joystick button to quadrature encoder + +module joy2quad +( + input CLK, + input [31:0] clkdiv, + + input right, + input left, + + output reg [1:0] steer +); + + +reg [3:0] state = 0; + +always @(posedge CLK) begin + reg [31:0] count = 0; + if (count >0) + begin + count=count-1; + end + else + begin + count=clkdiv; + casex(state) + 4'b0000: + begin + steer=2'b00; + if (left==1) + begin + state=4'b0001; + end + if (right==1) + begin + state=4'b0101; + end + + end + 4'b0001: + begin + steer=2'b00; + state=4'b0010; + end + 4'b0010: + begin + steer=2'b01; + state=3'b0011; + end + 4'b0011: + begin + steer=2'b11; + state=4'b0100; + end + 4'b0100: + begin + steer=2'b10; + state=4'b000; + end + 4'b0101: + begin + steer=2'b00; + state=4'b0110; + end + 4'b0110: + begin + steer=2'b10; + state=4'b0111; + end + 4'b0111: + begin + steer=2'b11; + state=4'b1000; + end + 4'b1000: + begin + steer=2'b01; + state=4'b0000; + + end + + endcase + end +end + +endmodule \ No newline at end of file diff --git a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/motion.vhd b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/motion.vhd index f9010db1..2cca16fc 100644 --- a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/motion.vhd +++ b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/motion.vhd @@ -123,19 +123,42 @@ end process; -- Motion object PROMs - These contain the car images for all 32 possible orientations -J6: entity work.j6_prom +J6: entity work.sprom +generic map( + init_file => "rtl/roms/6399-01j6.hex", + widthad_a => 9, + width_a => 4) port map( - clock => clk6, - address => Display(7 downto 3) & L5_reg(2 downto 0) & phi2, - q => Vid(7 downto 4) - ); + clock => clk6, + address => Display(7 downto 3) & L5_reg(2 downto 0) & phi2, + q => Vid(7 downto 4) + ); + +--J6: entity work.j6_prom +--port map( +-- clock => clk6, +-- address => Display(7 downto 3) & L5_reg(2 downto 0) & phi2, +-- q => Vid(7 downto 4) +-- ); -K6: entity work.k6_prom +K6: entity work.sprom +generic map( + init_file => "rtl/roms/6398-01k6.hex", + widthad_a => 9, + width_a => 4) port map( - clock => clk6, - address => Display(7 downto 3) & L5_reg(2 downto 0) & phi2, - q => Vid(3 downto 0) - ); + clock => clk6, + address => Display(7 downto 3) & L5_reg(2 downto 0) & phi2, + q => Vid(3 downto 0) + ); + +--K6: entity work.k6_prom +--port map( +-- clock => clk6, +-- address => Display(7 downto 3) & L5_reg(2 downto 0) & phi2, +-- q => Vid(3 downto 0) +-- ); + -- Some glue logic diff --git a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/playfield.vhd b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/playfield.vhd index 86425cbc..7cd68716 100644 --- a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/playfield.vhd +++ b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/playfield.vhd @@ -93,19 +93,42 @@ P3_6 <= (HBlank or VBlank); char_addr <= display(5 downto 0) & V4 & V2 & V1; -- Background character ROMs -R4: entity work.Char_MSB +R4: entity work.sprom +generic map( + init_file => "rtl/roms/6397-01r4.hex", + widthad_a => 9, + width_a => 4) port map( - clock => clk6, - Address => char_addr, - q => char_data(3 downto 0) - ); + clock => clk6, + Address => char_addr, + q => char_data(3 downto 0) + ); + +--R4: entity work.Char_MSB +--port map( +-- clock => clk6, +-- Address => char_addr, +-- q => char_data(3 downto 0) +-- ); -P4: entity work.Char_LSB +P4: entity work.sprom +generic map( + init_file => "rtl/roms/6396-01p4.hex", + widthad_a => 9, + width_a => 4) port map( - clock => clk6, - Address => char_addr, - q => char_data(7 downto 4) - ); + clock => clk6, + Address => char_addr, + q => char_data(7 downto 4) + ); + +--P4: entity work.Char_LSB +--port map( +-- clock => clk6, +-- Address => char_addr, +-- q => char_data(7 downto 4) +-- ); + -- 74LS166 video shift register diff --git a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/pll.v b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/pll.v index 95460fd9..aec82b25 100644 --- a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/pll.v +++ b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/pll.v @@ -243,7 +243,7 @@ endmodule // Retrieval info: PRIVATE: PHASE_SHIFT_STEP_ENABLED_CHECK STRING "0" // Retrieval info: PRIVATE: PHASE_SHIFT_UNIT0 STRING "deg" // Retrieval info: PRIVATE: PHASE_SHIFT_UNIT1 STRING "deg" -// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT2 STRING "ps" +// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT2 STRING "deg" // Retrieval info: PRIVATE: PLL_ADVANCED_PARAM_CHECK STRING "0" // Retrieval info: PRIVATE: PLL_ARESET_CHECK STRING "0" // Retrieval info: PRIVATE: PLL_AUTOPLL_CHECK NUMERIC "1" diff --git a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/Char_LSB.qip b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/Char_LSB.qip deleted file mode 100644 index 2ce4cc47..00000000 --- a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/Char_LSB.qip +++ /dev/null @@ -1,3 +0,0 @@ -set_global_assignment -name IP_TOOL_NAME "ROM: 1-PORT" -set_global_assignment -name IP_TOOL_VERSION "13.1" -set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "Char_LSB.vhd"] diff --git a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/Char_LSB.vhd b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/Char_LSB.vhd deleted file mode 100644 index 9c7bdfc3..00000000 --- a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/Char_LSB.vhd +++ /dev/null @@ -1,141 +0,0 @@ --- megafunction wizard: %ROM: 1-PORT% --- GENERATION: STANDARD --- VERSION: WM1.0 --- MODULE: altsyncram - --- ============================================================ --- File Name: Char_LSB.vhd --- Megafunction Name(s): --- altsyncram --- --- Simulation Library Files(s): --- altera_mf --- ============================================================ --- ************************************************************ --- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! --- --- 13.1.4 Build 182 03/12/2014 SJ Web Edition --- ************************************************************ - - ---Copyright (C) 1991-2014 Altera Corporation ---Your use of Altera Corporation's design tools, logic functions ---and other software and tools, and its AMPP partner logic ---functions, and any output files from any of the foregoing ---(including device programming or simulation files), and any ---associated documentation or information are expressly subject ---to the terms and conditions of the Altera Program License ---Subscription Agreement, Altera MegaCore Function License ---Agreement, or other applicable license agreement, including, ---without limitation, that your use is for the sole purpose of ---programming logic devices manufactured by Altera and sold by ---Altera or its authorized distributors. Please refer to the ---applicable agreement for further details. - - -LIBRARY ieee; -USE ieee.std_logic_1164.all; - -LIBRARY altera_mf; -USE altera_mf.altera_mf_components.all; - -ENTITY Char_LSB IS - PORT - ( - address : IN STD_LOGIC_VECTOR (8 DOWNTO 0); - clock : IN STD_LOGIC := '1'; - q : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) - ); -END Char_LSB; - - -ARCHITECTURE SYN OF char_lsb IS - - SIGNAL sub_wire0 : STD_LOGIC_VECTOR (3 DOWNTO 0); - -BEGIN - q <= sub_wire0(3 DOWNTO 0); - - altsyncram_component : altsyncram - GENERIC MAP ( - clock_enable_input_a => "BYPASS", - clock_enable_output_a => "BYPASS", - init_file => "./rtl/roms/6396-01p4.hex", - intended_device_family => "Cyclone II", - lpm_hint => "ENABLE_RUNTIME_MOD=NO", - lpm_type => "altsyncram", - numwords_a => 512, - operation_mode => "ROM", - outdata_aclr_a => "NONE", - outdata_reg_a => "CLOCK0", - widthad_a => 9, - width_a => 4, - width_byteena_a => 1 - ) - PORT MAP ( - address_a => address, - clock0 => clock, - q_a => sub_wire0 - ); - - - -END SYN; - --- ============================================================ --- CNX file retrieval info --- ============================================================ --- Retrieval info: PRIVATE: ADDRESSSTALL_A NUMERIC "0" --- Retrieval info: PRIVATE: AclrAddr NUMERIC "0" --- Retrieval info: PRIVATE: AclrByte NUMERIC "0" --- Retrieval info: PRIVATE: AclrOutput NUMERIC "0" --- Retrieval info: PRIVATE: BYTE_ENABLE NUMERIC "0" --- Retrieval info: PRIVATE: BYTE_SIZE NUMERIC "8" --- Retrieval info: PRIVATE: BlankMemory NUMERIC "0" --- Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_A NUMERIC "0" --- Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_A NUMERIC "0" --- Retrieval info: PRIVATE: Clken NUMERIC "0" --- Retrieval info: PRIVATE: IMPLEMENT_IN_LES NUMERIC "0" --- Retrieval info: PRIVATE: INIT_FILE_LAYOUT STRING "PORT_A" --- Retrieval info: PRIVATE: INIT_TO_SIM_X NUMERIC "0" --- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone II" --- Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" --- Retrieval info: PRIVATE: JTAG_ID STRING "NONE" --- Retrieval info: PRIVATE: MAXIMUM_DEPTH NUMERIC "0" --- Retrieval info: PRIVATE: MIFfilename STRING "./rtl/roms/6396-01p4.hex" --- Retrieval info: PRIVATE: NUMWORDS_A NUMERIC "512" --- Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" --- Retrieval info: PRIVATE: RegAddr NUMERIC "1" --- Retrieval info: PRIVATE: RegOutput NUMERIC "1" --- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" --- Retrieval info: PRIVATE: SingleClock NUMERIC "1" --- Retrieval info: PRIVATE: UseDQRAM NUMERIC "0" --- Retrieval info: PRIVATE: WidthAddr NUMERIC "9" --- Retrieval info: PRIVATE: WidthData NUMERIC "4" --- Retrieval info: PRIVATE: rden NUMERIC "0" --- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all --- Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_A STRING "BYPASS" --- Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_A STRING "BYPASS" --- Retrieval info: CONSTANT: INIT_FILE STRING "./rtl/roms/6396-01p4.hex" --- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone II" --- Retrieval info: CONSTANT: LPM_HINT STRING "ENABLE_RUNTIME_MOD=NO" --- Retrieval info: CONSTANT: LPM_TYPE STRING "altsyncram" --- Retrieval info: CONSTANT: NUMWORDS_A NUMERIC "512" --- Retrieval info: CONSTANT: OPERATION_MODE STRING "ROM" --- Retrieval info: CONSTANT: OUTDATA_ACLR_A STRING "NONE" --- Retrieval info: CONSTANT: OUTDATA_REG_A STRING "CLOCK0" --- Retrieval info: CONSTANT: WIDTHAD_A NUMERIC "9" --- Retrieval info: CONSTANT: WIDTH_A NUMERIC "4" --- Retrieval info: CONSTANT: WIDTH_BYTEENA_A NUMERIC "1" --- Retrieval info: USED_PORT: address 0 0 9 0 INPUT NODEFVAL "address[8..0]" --- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT VCC "clock" --- Retrieval info: USED_PORT: q 0 0 4 0 OUTPUT NODEFVAL "q[3..0]" --- Retrieval info: CONNECT: @address_a 0 0 9 0 address 0 0 9 0 --- Retrieval info: CONNECT: @clock0 0 0 0 0 clock 0 0 0 0 --- Retrieval info: CONNECT: q 0 0 4 0 @q_a 0 0 4 0 --- Retrieval info: GEN_FILE: TYPE_NORMAL Char_LSB.vhd TRUE --- Retrieval info: GEN_FILE: TYPE_NORMAL Char_LSB.inc FALSE --- Retrieval info: GEN_FILE: TYPE_NORMAL Char_LSB.cmp FALSE --- Retrieval info: GEN_FILE: TYPE_NORMAL Char_LSB.bsf FALSE --- Retrieval info: GEN_FILE: TYPE_NORMAL Char_LSB_inst.vhd FALSE --- Retrieval info: LIB_FILE: altera_mf diff --git a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/Char_MSB.qip b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/Char_MSB.qip deleted file mode 100644 index 9c809207..00000000 --- a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/Char_MSB.qip +++ /dev/null @@ -1,3 +0,0 @@ -set_global_assignment -name IP_TOOL_NAME "ROM: 1-PORT" -set_global_assignment -name IP_TOOL_VERSION "13.1" -set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "Char_MSB.vhd"] diff --git a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/Char_MSB.vhd b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/Char_MSB.vhd deleted file mode 100644 index bfa538dd..00000000 --- a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/Char_MSB.vhd +++ /dev/null @@ -1,141 +0,0 @@ --- megafunction wizard: %ROM: 1-PORT% --- GENERATION: STANDARD --- VERSION: WM1.0 --- MODULE: altsyncram - --- ============================================================ --- File Name: Char_MSB.vhd --- Megafunction Name(s): --- altsyncram --- --- Simulation Library Files(s): --- altera_mf --- ============================================================ --- ************************************************************ --- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! --- --- 13.1.4 Build 182 03/12/2014 SJ Web Edition --- ************************************************************ - - ---Copyright (C) 1991-2014 Altera Corporation ---Your use of Altera Corporation's design tools, logic functions ---and other software and tools, and its AMPP partner logic ---functions, and any output files from any of the foregoing ---(including device programming or simulation files), and any ---associated documentation or information are expressly subject ---to the terms and conditions of the Altera Program License ---Subscription Agreement, Altera MegaCore Function License ---Agreement, or other applicable license agreement, including, ---without limitation, that your use is for the sole purpose of ---programming logic devices manufactured by Altera and sold by ---Altera or its authorized distributors. Please refer to the ---applicable agreement for further details. - - -LIBRARY ieee; -USE ieee.std_logic_1164.all; - -LIBRARY altera_mf; -USE altera_mf.altera_mf_components.all; - -ENTITY Char_MSB IS - PORT - ( - address : IN STD_LOGIC_VECTOR (8 DOWNTO 0); - clock : IN STD_LOGIC := '1'; - q : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) - ); -END Char_MSB; - - -ARCHITECTURE SYN OF char_msb IS - - SIGNAL sub_wire0 : STD_LOGIC_VECTOR (3 DOWNTO 0); - -BEGIN - q <= sub_wire0(3 DOWNTO 0); - - altsyncram_component : altsyncram - GENERIC MAP ( - clock_enable_input_a => "BYPASS", - clock_enable_output_a => "BYPASS", - init_file => "./rtl/roms/6397-01r4.hex", - intended_device_family => "Cyclone II", - lpm_hint => "ENABLE_RUNTIME_MOD=NO", - lpm_type => "altsyncram", - numwords_a => 512, - operation_mode => "ROM", - outdata_aclr_a => "NONE", - outdata_reg_a => "CLOCK0", - widthad_a => 9, - width_a => 4, - width_byteena_a => 1 - ) - PORT MAP ( - address_a => address, - clock0 => clock, - q_a => sub_wire0 - ); - - - -END SYN; - --- ============================================================ --- CNX file retrieval info --- ============================================================ --- Retrieval info: PRIVATE: ADDRESSSTALL_A NUMERIC "0" --- Retrieval info: PRIVATE: AclrAddr NUMERIC "0" --- Retrieval info: PRIVATE: AclrByte NUMERIC "0" --- Retrieval info: PRIVATE: AclrOutput NUMERIC "0" --- Retrieval info: PRIVATE: BYTE_ENABLE NUMERIC "0" --- Retrieval info: PRIVATE: BYTE_SIZE NUMERIC "8" --- Retrieval info: PRIVATE: BlankMemory NUMERIC "0" --- Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_A NUMERIC "0" --- Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_A NUMERIC "0" --- Retrieval info: PRIVATE: Clken NUMERIC "0" --- Retrieval info: PRIVATE: IMPLEMENT_IN_LES NUMERIC "0" --- Retrieval info: PRIVATE: INIT_FILE_LAYOUT STRING "PORT_A" --- Retrieval info: PRIVATE: INIT_TO_SIM_X NUMERIC "0" --- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone II" --- Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" --- Retrieval info: PRIVATE: JTAG_ID STRING "NONE" --- Retrieval info: PRIVATE: MAXIMUM_DEPTH NUMERIC "0" --- Retrieval info: PRIVATE: MIFfilename STRING "./rtl/roms/6397-01r4.hex" --- Retrieval info: PRIVATE: NUMWORDS_A NUMERIC "512" --- Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" --- Retrieval info: PRIVATE: RegAddr NUMERIC "1" --- Retrieval info: PRIVATE: RegOutput NUMERIC "1" --- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" --- Retrieval info: PRIVATE: SingleClock NUMERIC "1" --- Retrieval info: PRIVATE: UseDQRAM NUMERIC "0" --- Retrieval info: PRIVATE: WidthAddr NUMERIC "9" --- Retrieval info: PRIVATE: WidthData NUMERIC "4" --- Retrieval info: PRIVATE: rden NUMERIC "0" --- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all --- Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_A STRING "BYPASS" --- Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_A STRING "BYPASS" --- Retrieval info: CONSTANT: INIT_FILE STRING "./rtl/roms/6397-01r4.hex" --- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone II" --- Retrieval info: CONSTANT: LPM_HINT STRING "ENABLE_RUNTIME_MOD=NO" --- Retrieval info: CONSTANT: LPM_TYPE STRING "altsyncram" --- Retrieval info: CONSTANT: NUMWORDS_A NUMERIC "512" --- Retrieval info: CONSTANT: OPERATION_MODE STRING "ROM" --- Retrieval info: CONSTANT: OUTDATA_ACLR_A STRING "NONE" --- Retrieval info: CONSTANT: OUTDATA_REG_A STRING "CLOCK0" --- Retrieval info: CONSTANT: WIDTHAD_A NUMERIC "9" --- Retrieval info: CONSTANT: WIDTH_A NUMERIC "4" --- Retrieval info: CONSTANT: WIDTH_BYTEENA_A NUMERIC "1" --- Retrieval info: USED_PORT: address 0 0 9 0 INPUT NODEFVAL "address[8..0]" --- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT VCC "clock" --- Retrieval info: USED_PORT: q 0 0 4 0 OUTPUT NODEFVAL "q[3..0]" --- Retrieval info: CONNECT: @address_a 0 0 9 0 address 0 0 9 0 --- Retrieval info: CONNECT: @clock0 0 0 0 0 clock 0 0 0 0 --- Retrieval info: CONNECT: q 0 0 4 0 @q_a 0 0 4 0 --- Retrieval info: GEN_FILE: TYPE_NORMAL Char_MSB.vhd TRUE --- Retrieval info: GEN_FILE: TYPE_NORMAL Char_MSB.inc FALSE --- Retrieval info: GEN_FILE: TYPE_NORMAL Char_MSB.cmp FALSE --- Retrieval info: GEN_FILE: TYPE_NORMAL Char_MSB.bsf FALSE --- Retrieval info: GEN_FILE: TYPE_NORMAL Char_MSB_inst.vhd FALSE --- Retrieval info: LIB_FILE: altera_mf diff --git a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/addec_prom.qip b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/addec_prom.qip deleted file mode 100644 index 81a66586..00000000 --- a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/addec_prom.qip +++ /dev/null @@ -1,3 +0,0 @@ -set_global_assignment -name IP_TOOL_NAME "ROM: 1-PORT" -set_global_assignment -name IP_TOOL_VERSION "13.1" -set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "addec_prom.vhd"] diff --git a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/addec_prom.vhd b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/addec_prom.vhd deleted file mode 100644 index 6cd74f62..00000000 --- a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/addec_prom.vhd +++ /dev/null @@ -1,141 +0,0 @@ --- megafunction wizard: %ROM: 1-PORT% --- GENERATION: STANDARD --- VERSION: WM1.0 --- MODULE: altsyncram - --- ============================================================ --- File Name: addec_prom.vhd --- Megafunction Name(s): --- altsyncram --- --- Simulation Library Files(s): --- altera_mf --- ============================================================ --- ************************************************************ --- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! --- --- 13.1.4 Build 182 03/12/2014 SJ Web Edition --- ************************************************************ - - ---Copyright (C) 1991-2014 Altera Corporation ---Your use of Altera Corporation's design tools, logic functions ---and other software and tools, and its AMPP partner logic ---functions, and any output files from any of the foregoing ---(including device programming or simulation files), and any ---associated documentation or information are expressly subject ---to the terms and conditions of the Altera Program License ---Subscription Agreement, Altera MegaCore Function License ---Agreement, or other applicable license agreement, including, ---without limitation, that your use is for the sole purpose of ---programming logic devices manufactured by Altera and sold by ---Altera or its authorized distributors. Please refer to the ---applicable agreement for further details. - - -LIBRARY ieee; -USE ieee.std_logic_1164.all; - -LIBRARY altera_mf; -USE altera_mf.altera_mf_components.all; - -ENTITY addec_prom IS - PORT - ( - address : IN STD_LOGIC_VECTOR (4 DOWNTO 0); - clock : IN STD_LOGIC := '1'; - q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) - ); -END addec_prom; - - -ARCHITECTURE SYN OF addec_prom IS - - SIGNAL sub_wire0 : STD_LOGIC_VECTOR (7 DOWNTO 0); - -BEGIN - q <= sub_wire0(7 DOWNTO 0); - - altsyncram_component : altsyncram - GENERIC MAP ( - clock_enable_input_a => "BYPASS", - clock_enable_output_a => "BYPASS", - init_file => "./rtl/roms/6401-01e2.hex", - intended_device_family => "Cyclone II", - lpm_hint => "ENABLE_RUNTIME_MOD=NO", - lpm_type => "altsyncram", - numwords_a => 32, - operation_mode => "ROM", - outdata_aclr_a => "NONE", - outdata_reg_a => "UNREGISTERED", - widthad_a => 5, - width_a => 8, - width_byteena_a => 1 - ) - PORT MAP ( - address_a => address, - clock0 => clock, - q_a => sub_wire0 - ); - - - -END SYN; - --- ============================================================ --- CNX file retrieval info --- ============================================================ --- Retrieval info: PRIVATE: ADDRESSSTALL_A NUMERIC "0" --- Retrieval info: PRIVATE: AclrAddr NUMERIC "0" --- Retrieval info: PRIVATE: AclrByte NUMERIC "0" --- Retrieval info: PRIVATE: AclrOutput NUMERIC "0" --- Retrieval info: PRIVATE: BYTE_ENABLE NUMERIC "0" --- Retrieval info: PRIVATE: BYTE_SIZE NUMERIC "8" --- Retrieval info: PRIVATE: BlankMemory NUMERIC "0" --- Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_A NUMERIC "0" --- Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_A NUMERIC "0" --- Retrieval info: PRIVATE: Clken NUMERIC "0" --- Retrieval info: PRIVATE: IMPLEMENT_IN_LES NUMERIC "0" --- Retrieval info: PRIVATE: INIT_FILE_LAYOUT STRING "PORT_A" --- Retrieval info: PRIVATE: INIT_TO_SIM_X NUMERIC "0" --- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone II" --- Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" --- Retrieval info: PRIVATE: JTAG_ID STRING "NONE" --- Retrieval info: PRIVATE: MAXIMUM_DEPTH NUMERIC "0" --- Retrieval info: PRIVATE: MIFfilename STRING "./rtl/roms/6401-01e2.hex" --- Retrieval info: PRIVATE: NUMWORDS_A NUMERIC "32" --- Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" --- Retrieval info: PRIVATE: RegAddr NUMERIC "1" --- Retrieval info: PRIVATE: RegOutput NUMERIC "0" --- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" --- Retrieval info: PRIVATE: SingleClock NUMERIC "1" --- Retrieval info: PRIVATE: UseDQRAM NUMERIC "0" --- Retrieval info: PRIVATE: WidthAddr NUMERIC "5" --- Retrieval info: PRIVATE: WidthData NUMERIC "8" --- Retrieval info: PRIVATE: rden NUMERIC "0" --- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all --- Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_A STRING "BYPASS" --- Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_A STRING "BYPASS" --- Retrieval info: CONSTANT: INIT_FILE STRING "./rtl/roms/6401-01e2.hex" --- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone II" --- Retrieval info: CONSTANT: LPM_HINT STRING "ENABLE_RUNTIME_MOD=NO" --- Retrieval info: CONSTANT: LPM_TYPE STRING "altsyncram" --- Retrieval info: CONSTANT: NUMWORDS_A NUMERIC "32" --- Retrieval info: CONSTANT: OPERATION_MODE STRING "ROM" --- Retrieval info: CONSTANT: OUTDATA_ACLR_A STRING "NONE" --- Retrieval info: CONSTANT: OUTDATA_REG_A STRING "UNREGISTERED" --- Retrieval info: CONSTANT: WIDTHAD_A NUMERIC "5" --- Retrieval info: CONSTANT: WIDTH_A NUMERIC "8" --- Retrieval info: CONSTANT: WIDTH_BYTEENA_A NUMERIC "1" --- Retrieval info: USED_PORT: address 0 0 5 0 INPUT NODEFVAL "address[4..0]" --- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT VCC "clock" --- Retrieval info: USED_PORT: q 0 0 8 0 OUTPUT NODEFVAL "q[7..0]" --- Retrieval info: CONNECT: @address_a 0 0 5 0 address 0 0 5 0 --- Retrieval info: CONNECT: @clock0 0 0 0 0 clock 0 0 0 0 --- Retrieval info: CONNECT: q 0 0 8 0 @q_a 0 0 8 0 --- Retrieval info: GEN_FILE: TYPE_NORMAL addec_prom.vhd TRUE --- Retrieval info: GEN_FILE: TYPE_NORMAL addec_prom.inc FALSE --- Retrieval info: GEN_FILE: TYPE_NORMAL addec_prom.cmp FALSE --- Retrieval info: GEN_FILE: TYPE_NORMAL addec_prom.bsf FALSE --- Retrieval info: GEN_FILE: TYPE_NORMAL addec_prom_inst.vhd FALSE --- Retrieval info: LIB_FILE: altera_mf diff --git a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/j6_prom.qip b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/j6_prom.qip deleted file mode 100644 index a6b355f4..00000000 --- a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/j6_prom.qip +++ /dev/null @@ -1,3 +0,0 @@ -set_global_assignment -name IP_TOOL_NAME "ROM: 1-PORT" -set_global_assignment -name IP_TOOL_VERSION "13.1" -set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "j6_prom.vhd"] diff --git a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/j6_prom.vhd b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/j6_prom.vhd deleted file mode 100644 index cc6c3558..00000000 --- a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/j6_prom.vhd +++ /dev/null @@ -1,141 +0,0 @@ --- megafunction wizard: %ROM: 1-PORT% --- GENERATION: STANDARD --- VERSION: WM1.0 --- MODULE: altsyncram - --- ============================================================ --- File Name: j6_prom.vhd --- Megafunction Name(s): --- altsyncram --- --- Simulation Library Files(s): --- altera_mf --- ============================================================ --- ************************************************************ --- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! --- --- 13.1.4 Build 182 03/12/2014 SJ Web Edition --- ************************************************************ - - ---Copyright (C) 1991-2014 Altera Corporation ---Your use of Altera Corporation's design tools, logic functions ---and other software and tools, and its AMPP partner logic ---functions, and any output files from any of the foregoing ---(including device programming or simulation files), and any ---associated documentation or information are expressly subject ---to the terms and conditions of the Altera Program License ---Subscription Agreement, Altera MegaCore Function License ---Agreement, or other applicable license agreement, including, ---without limitation, that your use is for the sole purpose of ---programming logic devices manufactured by Altera and sold by ---Altera or its authorized distributors. Please refer to the ---applicable agreement for further details. - - -LIBRARY ieee; -USE ieee.std_logic_1164.all; - -LIBRARY altera_mf; -USE altera_mf.altera_mf_components.all; - -ENTITY j6_prom IS - PORT - ( - address : IN STD_LOGIC_VECTOR (8 DOWNTO 0); - clock : IN STD_LOGIC := '1'; - q : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) - ); -END j6_prom; - - -ARCHITECTURE SYN OF j6_prom IS - - SIGNAL sub_wire0 : STD_LOGIC_VECTOR (3 DOWNTO 0); - -BEGIN - q <= sub_wire0(3 DOWNTO 0); - - altsyncram_component : altsyncram - GENERIC MAP ( - clock_enable_input_a => "BYPASS", - clock_enable_output_a => "BYPASS", - init_file => "./rtl/roms/6399-01j6.hex", - intended_device_family => "Cyclone II", - lpm_hint => "ENABLE_RUNTIME_MOD=NO", - lpm_type => "altsyncram", - numwords_a => 512, - operation_mode => "ROM", - outdata_aclr_a => "NONE", - outdata_reg_a => "CLOCK0", - widthad_a => 9, - width_a => 4, - width_byteena_a => 1 - ) - PORT MAP ( - address_a => address, - clock0 => clock, - q_a => sub_wire0 - ); - - - -END SYN; - --- ============================================================ --- CNX file retrieval info --- ============================================================ --- Retrieval info: PRIVATE: ADDRESSSTALL_A NUMERIC "0" --- Retrieval info: PRIVATE: AclrAddr NUMERIC "0" --- Retrieval info: PRIVATE: AclrByte NUMERIC "0" --- Retrieval info: PRIVATE: AclrOutput NUMERIC "0" --- Retrieval info: PRIVATE: BYTE_ENABLE NUMERIC "0" --- Retrieval info: PRIVATE: BYTE_SIZE NUMERIC "8" --- Retrieval info: PRIVATE: BlankMemory NUMERIC "0" --- Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_A NUMERIC "0" --- Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_A NUMERIC "0" --- Retrieval info: PRIVATE: Clken NUMERIC "0" --- Retrieval info: PRIVATE: IMPLEMENT_IN_LES NUMERIC "0" --- Retrieval info: PRIVATE: INIT_FILE_LAYOUT STRING "PORT_A" --- Retrieval info: PRIVATE: INIT_TO_SIM_X NUMERIC "0" --- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone II" --- Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" --- Retrieval info: PRIVATE: JTAG_ID STRING "NONE" --- Retrieval info: PRIVATE: MAXIMUM_DEPTH NUMERIC "0" --- Retrieval info: PRIVATE: MIFfilename STRING "./rtl/roms/6399-01j6.hex" --- Retrieval info: PRIVATE: NUMWORDS_A NUMERIC "512" --- Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" --- Retrieval info: PRIVATE: RegAddr NUMERIC "1" --- Retrieval info: PRIVATE: RegOutput NUMERIC "1" --- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" --- Retrieval info: PRIVATE: SingleClock NUMERIC "1" --- Retrieval info: PRIVATE: UseDQRAM NUMERIC "0" --- Retrieval info: PRIVATE: WidthAddr NUMERIC "9" --- Retrieval info: PRIVATE: WidthData NUMERIC "4" --- Retrieval info: PRIVATE: rden NUMERIC "0" --- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all --- Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_A STRING "BYPASS" --- Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_A STRING "BYPASS" --- Retrieval info: CONSTANT: INIT_FILE STRING "./rtl/roms/6399-01j6.hex" --- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone II" --- Retrieval info: CONSTANT: LPM_HINT STRING "ENABLE_RUNTIME_MOD=NO" --- Retrieval info: CONSTANT: LPM_TYPE STRING "altsyncram" --- Retrieval info: CONSTANT: NUMWORDS_A NUMERIC "512" --- Retrieval info: CONSTANT: OPERATION_MODE STRING "ROM" --- Retrieval info: CONSTANT: OUTDATA_ACLR_A STRING "NONE" --- Retrieval info: CONSTANT: OUTDATA_REG_A STRING "CLOCK0" --- Retrieval info: CONSTANT: WIDTHAD_A NUMERIC "9" --- Retrieval info: CONSTANT: WIDTH_A NUMERIC "4" --- Retrieval info: CONSTANT: WIDTH_BYTEENA_A NUMERIC "1" --- Retrieval info: USED_PORT: address 0 0 9 0 INPUT NODEFVAL "address[8..0]" --- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT VCC "clock" --- Retrieval info: USED_PORT: q 0 0 4 0 OUTPUT NODEFVAL "q[3..0]" --- Retrieval info: CONNECT: @address_a 0 0 9 0 address 0 0 9 0 --- Retrieval info: CONNECT: @clock0 0 0 0 0 clock 0 0 0 0 --- Retrieval info: CONNECT: q 0 0 4 0 @q_a 0 0 4 0 --- Retrieval info: GEN_FILE: TYPE_NORMAL j6_prom.vhd TRUE --- Retrieval info: GEN_FILE: TYPE_NORMAL j6_prom.inc FALSE --- Retrieval info: GEN_FILE: TYPE_NORMAL j6_prom.cmp FALSE --- Retrieval info: GEN_FILE: TYPE_NORMAL j6_prom.bsf FALSE --- Retrieval info: GEN_FILE: TYPE_NORMAL j6_prom_inst.vhd FALSE --- Retrieval info: LIB_FILE: altera_mf diff --git a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/k6_prom.qip b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/k6_prom.qip deleted file mode 100644 index 9735dccb..00000000 --- a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/k6_prom.qip +++ /dev/null @@ -1,3 +0,0 @@ -set_global_assignment -name IP_TOOL_NAME "ROM: 1-PORT" -set_global_assignment -name IP_TOOL_VERSION "13.1" -set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "k6_prom.vhd"] diff --git a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/k6_prom.vhd b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/k6_prom.vhd deleted file mode 100644 index 5c772b25..00000000 --- a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/k6_prom.vhd +++ /dev/null @@ -1,141 +0,0 @@ --- megafunction wizard: %ROM: 1-PORT% --- GENERATION: STANDARD --- VERSION: WM1.0 --- MODULE: altsyncram - --- ============================================================ --- File Name: k6_prom.vhd --- Megafunction Name(s): --- altsyncram --- --- Simulation Library Files(s): --- altera_mf --- ============================================================ --- ************************************************************ --- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! --- --- 13.1.4 Build 182 03/12/2014 SJ Web Edition --- ************************************************************ - - ---Copyright (C) 1991-2014 Altera Corporation ---Your use of Altera Corporation's design tools, logic functions ---and other software and tools, and its AMPP partner logic ---functions, and any output files from any of the foregoing ---(including device programming or simulation files), and any ---associated documentation or information are expressly subject ---to the terms and conditions of the Altera Program License ---Subscription Agreement, Altera MegaCore Function License ---Agreement, or other applicable license agreement, including, ---without limitation, that your use is for the sole purpose of ---programming logic devices manufactured by Altera and sold by ---Altera or its authorized distributors. Please refer to the ---applicable agreement for further details. - - -LIBRARY ieee; -USE ieee.std_logic_1164.all; - -LIBRARY altera_mf; -USE altera_mf.altera_mf_components.all; - -ENTITY k6_prom IS - PORT - ( - address : IN STD_LOGIC_VECTOR (8 DOWNTO 0); - clock : IN STD_LOGIC := '1'; - q : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) - ); -END k6_prom; - - -ARCHITECTURE SYN OF k6_prom IS - - SIGNAL sub_wire0 : STD_LOGIC_VECTOR (3 DOWNTO 0); - -BEGIN - q <= sub_wire0(3 DOWNTO 0); - - altsyncram_component : altsyncram - GENERIC MAP ( - clock_enable_input_a => "BYPASS", - clock_enable_output_a => "BYPASS", - init_file => "./rtl/roms/6398-01k6.hex", - intended_device_family => "Cyclone II", - lpm_hint => "ENABLE_RUNTIME_MOD=NO", - lpm_type => "altsyncram", - numwords_a => 512, - operation_mode => "ROM", - outdata_aclr_a => "NONE", - outdata_reg_a => "CLOCK0", - widthad_a => 9, - width_a => 4, - width_byteena_a => 1 - ) - PORT MAP ( - address_a => address, - clock0 => clock, - q_a => sub_wire0 - ); - - - -END SYN; - --- ============================================================ --- CNX file retrieval info --- ============================================================ --- Retrieval info: PRIVATE: ADDRESSSTALL_A NUMERIC "0" --- Retrieval info: PRIVATE: AclrAddr NUMERIC "0" --- Retrieval info: PRIVATE: AclrByte NUMERIC "0" --- Retrieval info: PRIVATE: AclrOutput NUMERIC "0" --- Retrieval info: PRIVATE: BYTE_ENABLE NUMERIC "0" --- Retrieval info: PRIVATE: BYTE_SIZE NUMERIC "8" --- Retrieval info: PRIVATE: BlankMemory NUMERIC "0" --- Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_A NUMERIC "0" --- Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_A NUMERIC "0" --- Retrieval info: PRIVATE: Clken NUMERIC "0" --- Retrieval info: PRIVATE: IMPLEMENT_IN_LES NUMERIC "0" --- Retrieval info: PRIVATE: INIT_FILE_LAYOUT STRING "PORT_A" --- Retrieval info: PRIVATE: INIT_TO_SIM_X NUMERIC "0" --- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone II" --- Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" --- Retrieval info: PRIVATE: JTAG_ID STRING "NONE" --- Retrieval info: PRIVATE: MAXIMUM_DEPTH NUMERIC "0" --- Retrieval info: PRIVATE: MIFfilename STRING "./rtl/roms/6398-01k6.hex" --- Retrieval info: PRIVATE: NUMWORDS_A NUMERIC "512" --- Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" --- Retrieval info: PRIVATE: RegAddr NUMERIC "1" --- Retrieval info: PRIVATE: RegOutput NUMERIC "1" --- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" --- Retrieval info: PRIVATE: SingleClock NUMERIC "1" --- Retrieval info: PRIVATE: UseDQRAM NUMERIC "0" --- Retrieval info: PRIVATE: WidthAddr NUMERIC "9" --- Retrieval info: PRIVATE: WidthData NUMERIC "4" --- Retrieval info: PRIVATE: rden NUMERIC "0" --- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all --- Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_A STRING "BYPASS" --- Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_A STRING "BYPASS" --- Retrieval info: CONSTANT: INIT_FILE STRING "./rtl/roms/6398-01k6.hex" --- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone II" --- Retrieval info: CONSTANT: LPM_HINT STRING "ENABLE_RUNTIME_MOD=NO" --- Retrieval info: CONSTANT: LPM_TYPE STRING "altsyncram" --- Retrieval info: CONSTANT: NUMWORDS_A NUMERIC "512" --- Retrieval info: CONSTANT: OPERATION_MODE STRING "ROM" --- Retrieval info: CONSTANT: OUTDATA_ACLR_A STRING "NONE" --- Retrieval info: CONSTANT: OUTDATA_REG_A STRING "CLOCK0" --- Retrieval info: CONSTANT: WIDTHAD_A NUMERIC "9" --- Retrieval info: CONSTANT: WIDTH_A NUMERIC "4" --- Retrieval info: CONSTANT: WIDTH_BYTEENA_A NUMERIC "1" --- Retrieval info: USED_PORT: address 0 0 9 0 INPUT NODEFVAL "address[8..0]" --- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT VCC "clock" --- Retrieval info: USED_PORT: q 0 0 4 0 OUTPUT NODEFVAL "q[3..0]" --- Retrieval info: CONNECT: @address_a 0 0 9 0 address 0 0 9 0 --- Retrieval info: CONNECT: @clock0 0 0 0 0 clock 0 0 0 0 --- Retrieval info: CONNECT: q 0 0 4 0 @q_a 0 0 4 0 --- Retrieval info: GEN_FILE: TYPE_NORMAL k6_prom.vhd TRUE --- Retrieval info: GEN_FILE: TYPE_NORMAL k6_prom.inc FALSE --- Retrieval info: GEN_FILE: TYPE_NORMAL k6_prom.cmp FALSE --- Retrieval info: GEN_FILE: TYPE_NORMAL k6_prom.bsf FALSE --- Retrieval info: GEN_FILE: TYPE_NORMAL k6_prom_inst.vhd FALSE --- Retrieval info: LIB_FILE: altera_mf diff --git a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/prog_rom1.qip b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/prog_rom1.qip deleted file mode 100644 index ca8648de..00000000 --- a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/prog_rom1.qip +++ /dev/null @@ -1,3 +0,0 @@ -set_global_assignment -name IP_TOOL_NAME "ROM: 1-PORT" -set_global_assignment -name IP_TOOL_VERSION "13.1" -set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "prog_rom1.vhd"] diff --git a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/prog_rom1.vhd b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/prog_rom1.vhd deleted file mode 100644 index 0539e859..00000000 --- a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/prog_rom1.vhd +++ /dev/null @@ -1,141 +0,0 @@ --- megafunction wizard: %ROM: 1-PORT% --- GENERATION: STANDARD --- VERSION: WM1.0 --- MODULE: altsyncram - --- ============================================================ --- File Name: prog_rom1.vhd --- Megafunction Name(s): --- altsyncram --- --- Simulation Library Files(s): --- altera_mf --- ============================================================ --- ************************************************************ --- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! --- --- 13.1.4 Build 182 03/12/2014 SJ Web Edition --- ************************************************************ - - ---Copyright (C) 1991-2014 Altera Corporation ---Your use of Altera Corporation's design tools, logic functions ---and other software and tools, and its AMPP partner logic ---functions, and any output files from any of the foregoing ---(including device programming or simulation files), and any ---associated documentation or information are expressly subject ---to the terms and conditions of the Altera Program License ---Subscription Agreement, Altera MegaCore Function License ---Agreement, or other applicable license agreement, including, ---without limitation, that your use is for the sole purpose of ---programming logic devices manufactured by Altera and sold by ---Altera or its authorized distributors. Please refer to the ---applicable agreement for further details. - - -LIBRARY ieee; -USE ieee.std_logic_1164.all; - -LIBRARY altera_mf; -USE altera_mf.altera_mf_components.all; - -ENTITY prog_rom1 IS - PORT - ( - address : IN STD_LOGIC_VECTOR (10 DOWNTO 0); - clock : IN STD_LOGIC := '1'; - q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) - ); -END prog_rom1; - - -ARCHITECTURE SYN OF prog_rom1 IS - - SIGNAL sub_wire0 : STD_LOGIC_VECTOR (7 DOWNTO 0); - -BEGIN - q <= sub_wire0(7 DOWNTO 0); - - altsyncram_component : altsyncram - GENERIC MAP ( - clock_enable_input_a => "BYPASS", - clock_enable_output_a => "BYPASS", - init_file => "./rtl/roms/6290-01b1.hex", - intended_device_family => "Cyclone II", - lpm_hint => "ENABLE_RUNTIME_MOD=NO", - lpm_type => "altsyncram", - numwords_a => 2048, - operation_mode => "ROM", - outdata_aclr_a => "NONE", - outdata_reg_a => "CLOCK0", - widthad_a => 11, - width_a => 8, - width_byteena_a => 1 - ) - PORT MAP ( - address_a => address, - clock0 => clock, - q_a => sub_wire0 - ); - - - -END SYN; - --- ============================================================ --- CNX file retrieval info --- ============================================================ --- Retrieval info: PRIVATE: ADDRESSSTALL_A NUMERIC "0" --- Retrieval info: PRIVATE: AclrAddr NUMERIC "0" --- Retrieval info: PRIVATE: AclrByte NUMERIC "0" --- Retrieval info: PRIVATE: AclrOutput NUMERIC "0" --- Retrieval info: PRIVATE: BYTE_ENABLE NUMERIC "0" --- Retrieval info: PRIVATE: BYTE_SIZE NUMERIC "8" --- Retrieval info: PRIVATE: BlankMemory NUMERIC "0" --- Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_A NUMERIC "0" --- Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_A NUMERIC "0" --- Retrieval info: PRIVATE: Clken NUMERIC "0" --- Retrieval info: PRIVATE: IMPLEMENT_IN_LES NUMERIC "0" --- Retrieval info: PRIVATE: INIT_FILE_LAYOUT STRING "PORT_A" --- Retrieval info: PRIVATE: INIT_TO_SIM_X NUMERIC "0" --- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone II" --- Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" --- Retrieval info: PRIVATE: JTAG_ID STRING "NONE" --- Retrieval info: PRIVATE: MAXIMUM_DEPTH NUMERIC "0" --- Retrieval info: PRIVATE: MIFfilename STRING "./rtl/roms/6290-01b1.hex" --- Retrieval info: PRIVATE: NUMWORDS_A NUMERIC "2048" --- Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" --- Retrieval info: PRIVATE: RegAddr NUMERIC "1" --- Retrieval info: PRIVATE: RegOutput NUMERIC "1" --- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" --- Retrieval info: PRIVATE: SingleClock NUMERIC "1" --- Retrieval info: PRIVATE: UseDQRAM NUMERIC "0" --- Retrieval info: PRIVATE: WidthAddr NUMERIC "11" --- Retrieval info: PRIVATE: WidthData NUMERIC "8" --- Retrieval info: PRIVATE: rden NUMERIC "0" --- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all --- Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_A STRING "BYPASS" --- Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_A STRING "BYPASS" --- Retrieval info: CONSTANT: INIT_FILE STRING "./rtl/roms/6290-01b1.hex" --- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone II" --- Retrieval info: CONSTANT: LPM_HINT STRING "ENABLE_RUNTIME_MOD=NO" --- Retrieval info: CONSTANT: LPM_TYPE STRING "altsyncram" --- Retrieval info: CONSTANT: NUMWORDS_A NUMERIC "2048" --- Retrieval info: CONSTANT: OPERATION_MODE STRING "ROM" --- Retrieval info: CONSTANT: OUTDATA_ACLR_A STRING "NONE" --- Retrieval info: CONSTANT: OUTDATA_REG_A STRING "CLOCK0" --- Retrieval info: CONSTANT: WIDTHAD_A NUMERIC "11" --- Retrieval info: CONSTANT: WIDTH_A NUMERIC "8" --- Retrieval info: CONSTANT: WIDTH_BYTEENA_A NUMERIC "1" --- Retrieval info: USED_PORT: address 0 0 11 0 INPUT NODEFVAL "address[10..0]" --- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT VCC "clock" --- Retrieval info: USED_PORT: q 0 0 8 0 OUTPUT NODEFVAL "q[7..0]" --- Retrieval info: CONNECT: @address_a 0 0 11 0 address 0 0 11 0 --- Retrieval info: CONNECT: @clock0 0 0 0 0 clock 0 0 0 0 --- Retrieval info: CONNECT: q 0 0 8 0 @q_a 0 0 8 0 --- Retrieval info: GEN_FILE: TYPE_NORMAL prog_rom1.vhd TRUE --- Retrieval info: GEN_FILE: TYPE_NORMAL prog_rom1.inc FALSE --- Retrieval info: GEN_FILE: TYPE_NORMAL prog_rom1.cmp FALSE --- Retrieval info: GEN_FILE: TYPE_NORMAL prog_rom1.bsf FALSE --- Retrieval info: GEN_FILE: TYPE_NORMAL prog_rom1_inst.vhd FALSE --- Retrieval info: LIB_FILE: altera_mf diff --git a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/prog_rom2.qip b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/prog_rom2.qip deleted file mode 100644 index aefde75d..00000000 --- a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/prog_rom2.qip +++ /dev/null @@ -1,3 +0,0 @@ -set_global_assignment -name IP_TOOL_NAME "ROM: 1-PORT" -set_global_assignment -name IP_TOOL_VERSION "13.1" -set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "prog_rom2.vhd"] diff --git a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/prog_rom2.vhd b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/prog_rom2.vhd deleted file mode 100644 index d2ee7a7e..00000000 --- a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/prog_rom2.vhd +++ /dev/null @@ -1,141 +0,0 @@ --- megafunction wizard: %ROM: 1-PORT% --- GENERATION: STANDARD --- VERSION: WM1.0 --- MODULE: altsyncram - --- ============================================================ --- File Name: prog_rom2.vhd --- Megafunction Name(s): --- altsyncram --- --- Simulation Library Files(s): --- altera_mf --- ============================================================ --- ************************************************************ --- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! --- --- 13.1.4 Build 182 03/12/2014 SJ Web Edition --- ************************************************************ - - ---Copyright (C) 1991-2014 Altera Corporation ---Your use of Altera Corporation's design tools, logic functions ---and other software and tools, and its AMPP partner logic ---functions, and any output files from any of the foregoing ---(including device programming or simulation files), and any ---associated documentation or information are expressly subject ---to the terms and conditions of the Altera Program License ---Subscription Agreement, Altera MegaCore Function License ---Agreement, or other applicable license agreement, including, ---without limitation, that your use is for the sole purpose of ---programming logic devices manufactured by Altera and sold by ---Altera or its authorized distributors. Please refer to the ---applicable agreement for further details. - - -LIBRARY ieee; -USE ieee.std_logic_1164.all; - -LIBRARY altera_mf; -USE altera_mf.altera_mf_components.all; - -ENTITY prog_rom2 IS - PORT - ( - address : IN STD_LOGIC_VECTOR (10 DOWNTO 0); - clock : IN STD_LOGIC := '1'; - q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) - ); -END prog_rom2; - - -ARCHITECTURE SYN OF prog_rom2 IS - - SIGNAL sub_wire0 : STD_LOGIC_VECTOR (7 DOWNTO 0); - -BEGIN - q <= sub_wire0(7 DOWNTO 0); - - altsyncram_component : altsyncram - GENERIC MAP ( - clock_enable_input_a => "BYPASS", - clock_enable_output_a => "BYPASS", - init_file => "./rtl/roms/6291-01c1.hex", - intended_device_family => "Cyclone II", - lpm_hint => "ENABLE_RUNTIME_MOD=NO", - lpm_type => "altsyncram", - numwords_a => 2048, - operation_mode => "ROM", - outdata_aclr_a => "NONE", - outdata_reg_a => "CLOCK0", - widthad_a => 11, - width_a => 8, - width_byteena_a => 1 - ) - PORT MAP ( - address_a => address, - clock0 => clock, - q_a => sub_wire0 - ); - - - -END SYN; - --- ============================================================ --- CNX file retrieval info --- ============================================================ --- Retrieval info: PRIVATE: ADDRESSSTALL_A NUMERIC "0" --- Retrieval info: PRIVATE: AclrAddr NUMERIC "0" --- Retrieval info: PRIVATE: AclrByte NUMERIC "0" --- Retrieval info: PRIVATE: AclrOutput NUMERIC "0" --- Retrieval info: PRIVATE: BYTE_ENABLE NUMERIC "0" --- Retrieval info: PRIVATE: BYTE_SIZE NUMERIC "8" --- Retrieval info: PRIVATE: BlankMemory NUMERIC "0" --- Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_A NUMERIC "0" --- Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_A NUMERIC "0" --- Retrieval info: PRIVATE: Clken NUMERIC "0" --- Retrieval info: PRIVATE: IMPLEMENT_IN_LES NUMERIC "0" --- Retrieval info: PRIVATE: INIT_FILE_LAYOUT STRING "PORT_A" --- Retrieval info: PRIVATE: INIT_TO_SIM_X NUMERIC "0" --- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone II" --- Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" --- Retrieval info: PRIVATE: JTAG_ID STRING "NONE" --- Retrieval info: PRIVATE: MAXIMUM_DEPTH NUMERIC "0" --- Retrieval info: PRIVATE: MIFfilename STRING "./rtl/roms/6291-01c1.hex" --- Retrieval info: PRIVATE: NUMWORDS_A NUMERIC "2048" --- Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" --- Retrieval info: PRIVATE: RegAddr NUMERIC "1" --- Retrieval info: PRIVATE: RegOutput NUMERIC "1" --- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" --- Retrieval info: PRIVATE: SingleClock NUMERIC "1" --- Retrieval info: PRIVATE: UseDQRAM NUMERIC "0" --- Retrieval info: PRIVATE: WidthAddr NUMERIC "11" --- Retrieval info: PRIVATE: WidthData NUMERIC "8" --- Retrieval info: PRIVATE: rden NUMERIC "0" --- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all --- Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_A STRING "BYPASS" --- Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_A STRING "BYPASS" --- Retrieval info: CONSTANT: INIT_FILE STRING "./rtl/roms/6291-01c1.hex" --- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone II" --- Retrieval info: CONSTANT: LPM_HINT STRING "ENABLE_RUNTIME_MOD=NO" --- Retrieval info: CONSTANT: LPM_TYPE STRING "altsyncram" --- Retrieval info: CONSTANT: NUMWORDS_A NUMERIC "2048" --- Retrieval info: CONSTANT: OPERATION_MODE STRING "ROM" --- Retrieval info: CONSTANT: OUTDATA_ACLR_A STRING "NONE" --- Retrieval info: CONSTANT: OUTDATA_REG_A STRING "CLOCK0" --- Retrieval info: CONSTANT: WIDTHAD_A NUMERIC "11" --- Retrieval info: CONSTANT: WIDTH_A NUMERIC "8" --- Retrieval info: CONSTANT: WIDTH_BYTEENA_A NUMERIC "1" --- Retrieval info: USED_PORT: address 0 0 11 0 INPUT NODEFVAL "address[10..0]" --- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT VCC "clock" --- Retrieval info: USED_PORT: q 0 0 8 0 OUTPUT NODEFVAL "q[7..0]" --- Retrieval info: CONNECT: @address_a 0 0 11 0 address 0 0 11 0 --- Retrieval info: CONNECT: @clock0 0 0 0 0 clock 0 0 0 0 --- Retrieval info: CONNECT: q 0 0 8 0 @q_a 0 0 8 0 --- Retrieval info: GEN_FILE: TYPE_NORMAL prog_rom2.vhd TRUE --- Retrieval info: GEN_FILE: TYPE_NORMAL prog_rom2.inc FALSE --- Retrieval info: GEN_FILE: TYPE_NORMAL prog_rom2.cmp FALSE --- Retrieval info: GEN_FILE: TYPE_NORMAL prog_rom2.bsf FALSE --- Retrieval info: GEN_FILE: TYPE_NORMAL prog_rom2_inst.vhd FALSE --- Retrieval info: LIB_FILE: altera_mf diff --git a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/prog_rom3.qip b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/prog_rom3.qip deleted file mode 100644 index 562f4ad7..00000000 --- a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/prog_rom3.qip +++ /dev/null @@ -1,3 +0,0 @@ -set_global_assignment -name IP_TOOL_NAME "ROM: 1-PORT" -set_global_assignment -name IP_TOOL_VERSION "13.1" -set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "prog_rom3.vhd"] diff --git a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/prog_rom3.vhd b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/prog_rom3.vhd deleted file mode 100644 index 41a5470c..00000000 --- a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/prog_rom3.vhd +++ /dev/null @@ -1,141 +0,0 @@ --- megafunction wizard: %ROM: 1-PORT% --- GENERATION: STANDARD --- VERSION: WM1.0 --- MODULE: altsyncram - --- ============================================================ --- File Name: prog_rom3.vhd --- Megafunction Name(s): --- altsyncram --- --- Simulation Library Files(s): --- altera_mf --- ============================================================ --- ************************************************************ --- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! --- --- 13.1.4 Build 182 03/12/2014 SJ Web Edition --- ************************************************************ - - ---Copyright (C) 1991-2014 Altera Corporation ---Your use of Altera Corporation's design tools, logic functions ---and other software and tools, and its AMPP partner logic ---functions, and any output files from any of the foregoing ---(including device programming or simulation files), and any ---associated documentation or information are expressly subject ---to the terms and conditions of the Altera Program License ---Subscription Agreement, Altera MegaCore Function License ---Agreement, or other applicable license agreement, including, ---without limitation, that your use is for the sole purpose of ---programming logic devices manufactured by Altera and sold by ---Altera or its authorized distributors. Please refer to the ---applicable agreement for further details. - - -LIBRARY ieee; -USE ieee.std_logic_1164.all; - -LIBRARY altera_mf; -USE altera_mf.altera_mf_components.all; - -ENTITY prog_rom3 IS - PORT - ( - address : IN STD_LOGIC_VECTOR (10 DOWNTO 0); - clock : IN STD_LOGIC := '1'; - q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) - ); -END prog_rom3; - - -ARCHITECTURE SYN OF prog_rom3 IS - - SIGNAL sub_wire0 : STD_LOGIC_VECTOR (7 DOWNTO 0); - -BEGIN - q <= sub_wire0(7 DOWNTO 0); - - altsyncram_component : altsyncram - GENERIC MAP ( - clock_enable_input_a => "BYPASS", - clock_enable_output_a => "BYPASS", - init_file => "./rtl/roms/6404d1.hex", - intended_device_family => "Cyclone II", - lpm_hint => "ENABLE_RUNTIME_MOD=NO", - lpm_type => "altsyncram", - numwords_a => 2048, - operation_mode => "ROM", - outdata_aclr_a => "NONE", - outdata_reg_a => "CLOCK0", - widthad_a => 11, - width_a => 8, - width_byteena_a => 1 - ) - PORT MAP ( - address_a => address, - clock0 => clock, - q_a => sub_wire0 - ); - - - -END SYN; - --- ============================================================ --- CNX file retrieval info --- ============================================================ --- Retrieval info: PRIVATE: ADDRESSSTALL_A NUMERIC "0" --- Retrieval info: PRIVATE: AclrAddr NUMERIC "0" --- Retrieval info: PRIVATE: AclrByte NUMERIC "0" --- Retrieval info: PRIVATE: AclrOutput NUMERIC "0" --- Retrieval info: PRIVATE: BYTE_ENABLE NUMERIC "0" --- Retrieval info: PRIVATE: BYTE_SIZE NUMERIC "8" --- Retrieval info: PRIVATE: BlankMemory NUMERIC "0" --- Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_A NUMERIC "0" --- Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_A NUMERIC "0" --- Retrieval info: PRIVATE: Clken NUMERIC "0" --- Retrieval info: PRIVATE: IMPLEMENT_IN_LES NUMERIC "0" --- Retrieval info: PRIVATE: INIT_FILE_LAYOUT STRING "PORT_A" --- Retrieval info: PRIVATE: INIT_TO_SIM_X NUMERIC "0" --- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone II" --- Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" --- Retrieval info: PRIVATE: JTAG_ID STRING "NONE" --- Retrieval info: PRIVATE: MAXIMUM_DEPTH NUMERIC "0" --- Retrieval info: PRIVATE: MIFfilename STRING "./rtl/roms/6404d1.hex" --- Retrieval info: PRIVATE: NUMWORDS_A NUMERIC "2048" --- Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" --- Retrieval info: PRIVATE: RegAddr NUMERIC "1" --- Retrieval info: PRIVATE: RegOutput NUMERIC "1" --- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" --- Retrieval info: PRIVATE: SingleClock NUMERIC "1" --- Retrieval info: PRIVATE: UseDQRAM NUMERIC "0" --- Retrieval info: PRIVATE: WidthAddr NUMERIC "11" --- Retrieval info: PRIVATE: WidthData NUMERIC "8" --- Retrieval info: PRIVATE: rden NUMERIC "0" --- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all --- Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_A STRING "BYPASS" --- Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_A STRING "BYPASS" --- Retrieval info: CONSTANT: INIT_FILE STRING "./rtl/roms/6404d1.hex" --- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone II" --- Retrieval info: CONSTANT: LPM_HINT STRING "ENABLE_RUNTIME_MOD=NO" --- Retrieval info: CONSTANT: LPM_TYPE STRING "altsyncram" --- Retrieval info: CONSTANT: NUMWORDS_A NUMERIC "2048" --- Retrieval info: CONSTANT: OPERATION_MODE STRING "ROM" --- Retrieval info: CONSTANT: OUTDATA_ACLR_A STRING "NONE" --- Retrieval info: CONSTANT: OUTDATA_REG_A STRING "CLOCK0" --- Retrieval info: CONSTANT: WIDTHAD_A NUMERIC "11" --- Retrieval info: CONSTANT: WIDTH_A NUMERIC "8" --- Retrieval info: CONSTANT: WIDTH_BYTEENA_A NUMERIC "1" --- Retrieval info: USED_PORT: address 0 0 11 0 INPUT NODEFVAL "address[10..0]" --- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT VCC "clock" --- Retrieval info: USED_PORT: q 0 0 8 0 OUTPUT NODEFVAL "q[7..0]" --- Retrieval info: CONNECT: @address_a 0 0 11 0 address 0 0 11 0 --- Retrieval info: CONNECT: @clock0 0 0 0 0 clock 0 0 0 0 --- Retrieval info: CONNECT: q 0 0 8 0 @q_a 0 0 8 0 --- Retrieval info: GEN_FILE: TYPE_NORMAL prog_rom3.vhd TRUE --- Retrieval info: GEN_FILE: TYPE_NORMAL prog_rom3.inc FALSE --- Retrieval info: GEN_FILE: TYPE_NORMAL prog_rom3.cmp FALSE --- Retrieval info: GEN_FILE: TYPE_NORMAL prog_rom3.bsf FALSE --- Retrieval info: GEN_FILE: TYPE_NORMAL prog_rom3_inst.vhd FALSE --- Retrieval info: LIB_FILE: altera_mf diff --git a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/prog_rom4.qip b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/prog_rom4.qip deleted file mode 100644 index 30906c90..00000000 --- a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/prog_rom4.qip +++ /dev/null @@ -1,3 +0,0 @@ -set_global_assignment -name IP_TOOL_NAME "ROM: 1-PORT" -set_global_assignment -name IP_TOOL_VERSION "13.1" -set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "prog_rom4.vhd"] diff --git a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/prog_rom4.vhd b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/prog_rom4.vhd deleted file mode 100644 index b71ccb64..00000000 --- a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/prog_rom4.vhd +++ /dev/null @@ -1,141 +0,0 @@ --- megafunction wizard: %ROM: 1-PORT% --- GENERATION: STANDARD --- VERSION: WM1.0 --- MODULE: altsyncram - --- ============================================================ --- File Name: prog_rom4.vhd --- Megafunction Name(s): --- altsyncram --- --- Simulation Library Files(s): --- altera_mf --- ============================================================ --- ************************************************************ --- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! --- --- 13.1.4 Build 182 03/12/2014 SJ Web Edition --- ************************************************************ - - ---Copyright (C) 1991-2014 Altera Corporation ---Your use of Altera Corporation's design tools, logic functions ---and other software and tools, and its AMPP partner logic ---functions, and any output files from any of the foregoing ---(including device programming or simulation files), and any ---associated documentation or information are expressly subject ---to the terms and conditions of the Altera Program License ---Subscription Agreement, Altera MegaCore Function License ---Agreement, or other applicable license agreement, including, ---without limitation, that your use is for the sole purpose of ---programming logic devices manufactured by Altera and sold by ---Altera or its authorized distributors. Please refer to the ---applicable agreement for further details. - - -LIBRARY ieee; -USE ieee.std_logic_1164.all; - -LIBRARY altera_mf; -USE altera_mf.altera_mf_components.all; - -ENTITY prog_rom4 IS - PORT - ( - address : IN STD_LOGIC_VECTOR (10 DOWNTO 0); - clock : IN STD_LOGIC := '1'; - q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) - ); -END prog_rom4; - - -ARCHITECTURE SYN OF prog_rom4 IS - - SIGNAL sub_wire0 : STD_LOGIC_VECTOR (7 DOWNTO 0); - -BEGIN - q <= sub_wire0(7 DOWNTO 0); - - altsyncram_component : altsyncram - GENERIC MAP ( - clock_enable_input_a => "BYPASS", - clock_enable_output_a => "BYPASS", - init_file => "./rtl/roms/6405-02e1.hex", - intended_device_family => "Cyclone II", - lpm_hint => "ENABLE_RUNTIME_MOD=NO", - lpm_type => "altsyncram", - numwords_a => 2048, - operation_mode => "ROM", - outdata_aclr_a => "NONE", - outdata_reg_a => "CLOCK0", - widthad_a => 11, - width_a => 8, - width_byteena_a => 1 - ) - PORT MAP ( - address_a => address, - clock0 => clock, - q_a => sub_wire0 - ); - - - -END SYN; - --- ============================================================ --- CNX file retrieval info --- ============================================================ --- Retrieval info: PRIVATE: ADDRESSSTALL_A NUMERIC "0" --- Retrieval info: PRIVATE: AclrAddr NUMERIC "0" --- Retrieval info: PRIVATE: AclrByte NUMERIC "0" --- Retrieval info: PRIVATE: AclrOutput NUMERIC "0" --- Retrieval info: PRIVATE: BYTE_ENABLE NUMERIC "0" --- Retrieval info: PRIVATE: BYTE_SIZE NUMERIC "8" --- Retrieval info: PRIVATE: BlankMemory NUMERIC "0" --- Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_A NUMERIC "0" --- Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_A NUMERIC "0" --- Retrieval info: PRIVATE: Clken NUMERIC "0" --- Retrieval info: PRIVATE: IMPLEMENT_IN_LES NUMERIC "0" --- Retrieval info: PRIVATE: INIT_FILE_LAYOUT STRING "PORT_A" --- Retrieval info: PRIVATE: INIT_TO_SIM_X NUMERIC "0" --- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone II" --- Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" --- Retrieval info: PRIVATE: JTAG_ID STRING "NONE" --- Retrieval info: PRIVATE: MAXIMUM_DEPTH NUMERIC "0" --- Retrieval info: PRIVATE: MIFfilename STRING "./rtl/roms/6405-02e1.hex" --- Retrieval info: PRIVATE: NUMWORDS_A NUMERIC "2048" --- Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" --- Retrieval info: PRIVATE: RegAddr NUMERIC "1" --- Retrieval info: PRIVATE: RegOutput NUMERIC "1" --- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" --- Retrieval info: PRIVATE: SingleClock NUMERIC "1" --- Retrieval info: PRIVATE: UseDQRAM NUMERIC "0" --- Retrieval info: PRIVATE: WidthAddr NUMERIC "11" --- Retrieval info: PRIVATE: WidthData NUMERIC "8" --- Retrieval info: PRIVATE: rden NUMERIC "0" --- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all --- Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_A STRING "BYPASS" --- Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_A STRING "BYPASS" --- Retrieval info: CONSTANT: INIT_FILE STRING "./rtl/roms/6405-02e1.hex" --- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone II" --- Retrieval info: CONSTANT: LPM_HINT STRING "ENABLE_RUNTIME_MOD=NO" --- Retrieval info: CONSTANT: LPM_TYPE STRING "altsyncram" --- Retrieval info: CONSTANT: NUMWORDS_A NUMERIC "2048" --- Retrieval info: CONSTANT: OPERATION_MODE STRING "ROM" --- Retrieval info: CONSTANT: OUTDATA_ACLR_A STRING "NONE" --- Retrieval info: CONSTANT: OUTDATA_REG_A STRING "CLOCK0" --- Retrieval info: CONSTANT: WIDTHAD_A NUMERIC "11" --- Retrieval info: CONSTANT: WIDTH_A NUMERIC "8" --- Retrieval info: CONSTANT: WIDTH_BYTEENA_A NUMERIC "1" --- Retrieval info: USED_PORT: address 0 0 11 0 INPUT NODEFVAL "address[10..0]" --- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT VCC "clock" --- Retrieval info: USED_PORT: q 0 0 8 0 OUTPUT NODEFVAL "q[7..0]" --- Retrieval info: CONNECT: @address_a 0 0 11 0 address 0 0 11 0 --- Retrieval info: CONNECT: @clock0 0 0 0 0 clock 0 0 0 0 --- Retrieval info: CONNECT: q 0 0 8 0 @q_a 0 0 8 0 --- Retrieval info: GEN_FILE: TYPE_NORMAL prog_rom4.vhd TRUE --- Retrieval info: GEN_FILE: TYPE_NORMAL prog_rom4.inc FALSE --- Retrieval info: GEN_FILE: TYPE_NORMAL prog_rom4.cmp FALSE --- Retrieval info: GEN_FILE: TYPE_NORMAL prog_rom4.bsf FALSE --- Retrieval info: GEN_FILE: TYPE_NORMAL prog_rom4_inst.vhd FALSE --- Retrieval info: LIB_FILE: altera_mf diff --git a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/sync_prom.qip b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/sync_prom.qip deleted file mode 100644 index 9a31148f..00000000 --- a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/sync_prom.qip +++ /dev/null @@ -1,3 +0,0 @@ -set_global_assignment -name IP_TOOL_NAME "ROM: 1-PORT" -set_global_assignment -name IP_TOOL_VERSION "13.1" -set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "sync_prom.vhd"] diff --git a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/sync_prom.vhd b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/sync_prom.vhd deleted file mode 100644 index b078c62d..00000000 --- a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/roms/sync_prom.vhd +++ /dev/null @@ -1,141 +0,0 @@ --- megafunction wizard: %ROM: 1-PORT% --- GENERATION: STANDARD --- VERSION: WM1.0 --- MODULE: altsyncram - --- ============================================================ --- File Name: sync_prom.vhd --- Megafunction Name(s): --- altsyncram --- --- Simulation Library Files(s): --- altera_mf --- ============================================================ --- ************************************************************ --- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! --- --- 13.1.4 Build 182 03/12/2014 SJ Web Edition --- ************************************************************ - - ---Copyright (C) 1991-2014 Altera Corporation ---Your use of Altera Corporation's design tools, logic functions ---and other software and tools, and its AMPP partner logic ---functions, and any output files from any of the foregoing ---(including device programming or simulation files), and any ---associated documentation or information are expressly subject ---to the terms and conditions of the Altera Program License ---Subscription Agreement, Altera MegaCore Function License ---Agreement, or other applicable license agreement, including, ---without limitation, that your use is for the sole purpose of ---programming logic devices manufactured by Altera and sold by ---Altera or its authorized distributors. Please refer to the ---applicable agreement for further details. - - -LIBRARY ieee; -USE ieee.std_logic_1164.all; - -LIBRARY altera_mf; -USE altera_mf.altera_mf_components.all; - -ENTITY sync_prom IS - PORT - ( - address : IN STD_LOGIC_VECTOR (7 DOWNTO 0); - clock : IN STD_LOGIC := '1'; - q : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) - ); -END sync_prom; - - -ARCHITECTURE SYN OF sync_prom IS - - SIGNAL sub_wire0 : STD_LOGIC_VECTOR (3 DOWNTO 0); - -BEGIN - q <= sub_wire0(3 DOWNTO 0); - - altsyncram_component : altsyncram - GENERIC MAP ( - clock_enable_input_a => "BYPASS", - clock_enable_output_a => "BYPASS", - init_file => "./rtl/roms/6400-01m2.hex", - intended_device_family => "Cyclone II", - lpm_hint => "ENABLE_RUNTIME_MOD=NO", - lpm_type => "altsyncram", - numwords_a => 256, - operation_mode => "ROM", - outdata_aclr_a => "NONE", - outdata_reg_a => "UNREGISTERED", - widthad_a => 8, - width_a => 4, - width_byteena_a => 1 - ) - PORT MAP ( - address_a => address, - clock0 => clock, - q_a => sub_wire0 - ); - - - -END SYN; - --- ============================================================ --- CNX file retrieval info --- ============================================================ --- Retrieval info: PRIVATE: ADDRESSSTALL_A NUMERIC "0" --- Retrieval info: PRIVATE: AclrAddr NUMERIC "0" --- Retrieval info: PRIVATE: AclrByte NUMERIC "0" --- Retrieval info: PRIVATE: AclrOutput NUMERIC "0" --- Retrieval info: PRIVATE: BYTE_ENABLE NUMERIC "0" --- Retrieval info: PRIVATE: BYTE_SIZE NUMERIC "8" --- Retrieval info: PRIVATE: BlankMemory NUMERIC "0" --- Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_A NUMERIC "0" --- Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_A NUMERIC "0" --- Retrieval info: PRIVATE: Clken NUMERIC "0" --- Retrieval info: PRIVATE: IMPLEMENT_IN_LES NUMERIC "0" --- Retrieval info: PRIVATE: INIT_FILE_LAYOUT STRING "PORT_A" --- Retrieval info: PRIVATE: INIT_TO_SIM_X NUMERIC "0" --- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone II" --- Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" --- Retrieval info: PRIVATE: JTAG_ID STRING "NONE" --- Retrieval info: PRIVATE: MAXIMUM_DEPTH NUMERIC "0" --- Retrieval info: PRIVATE: MIFfilename STRING "./rtl/roms/6400-01m2.hex" --- Retrieval info: PRIVATE: NUMWORDS_A NUMERIC "256" --- Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" --- Retrieval info: PRIVATE: RegAddr NUMERIC "1" --- Retrieval info: PRIVATE: RegOutput NUMERIC "0" --- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" --- Retrieval info: PRIVATE: SingleClock NUMERIC "1" --- Retrieval info: PRIVATE: UseDQRAM NUMERIC "0" --- Retrieval info: PRIVATE: WidthAddr NUMERIC "8" --- Retrieval info: PRIVATE: WidthData NUMERIC "4" --- Retrieval info: PRIVATE: rden NUMERIC "0" --- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all --- Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_A STRING "BYPASS" --- Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_A STRING "BYPASS" --- Retrieval info: CONSTANT: INIT_FILE STRING "./rtl/roms/6400-01m2.hex" --- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone II" --- Retrieval info: CONSTANT: LPM_HINT STRING "ENABLE_RUNTIME_MOD=NO" --- Retrieval info: CONSTANT: LPM_TYPE STRING "altsyncram" --- Retrieval info: CONSTANT: NUMWORDS_A NUMERIC "256" --- Retrieval info: CONSTANT: OPERATION_MODE STRING "ROM" --- Retrieval info: CONSTANT: OUTDATA_ACLR_A STRING "NONE" --- Retrieval info: CONSTANT: OUTDATA_REG_A STRING "UNREGISTERED" --- Retrieval info: CONSTANT: WIDTHAD_A NUMERIC "8" --- Retrieval info: CONSTANT: WIDTH_A NUMERIC "4" --- Retrieval info: CONSTANT: WIDTH_BYTEENA_A NUMERIC "1" --- Retrieval info: USED_PORT: address 0 0 8 0 INPUT NODEFVAL "address[7..0]" --- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT VCC "clock" --- Retrieval info: USED_PORT: q 0 0 4 0 OUTPUT NODEFVAL "q[3..0]" --- Retrieval info: CONNECT: @address_a 0 0 8 0 address 0 0 8 0 --- Retrieval info: CONNECT: @clock0 0 0 0 0 clock 0 0 0 0 --- Retrieval info: CONNECT: q 0 0 4 0 @q_a 0 0 4 0 --- Retrieval info: GEN_FILE: TYPE_NORMAL sync_prom.vhd TRUE --- Retrieval info: GEN_FILE: TYPE_NORMAL sync_prom.inc FALSE --- Retrieval info: GEN_FILE: TYPE_NORMAL sync_prom.cmp FALSE --- Retrieval info: GEN_FILE: TYPE_NORMAL sync_prom.bsf FALSE --- Retrieval info: GEN_FILE: TYPE_NORMAL sync_prom_inst.vhd FALSE --- Retrieval info: LIB_FILE: altera_mf diff --git a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/sprint1.vhd b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/sprint1.vhd deleted file mode 100644 index 83424a60..00000000 --- a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/sprint1.vhd +++ /dev/null @@ -1,313 +0,0 @@ --- Top level file for Kee Games Sprint 1 --- (c) 2017 James Sweet --- --- This is free software: you can redistribute --- it and/or modify it under the terms of the GNU General --- Public License as published by the Free Software --- Foundation, either version 3 of the License, or (at your --- option) any later version. --- --- This is distributed in the hope that it will --- be useful, but WITHOUT ANY WARRANTY; without even the --- implied warranty of MERCHANTABILITY or FITNESS FOR A --- PARTICULAR PURPOSE. See the GNU General Public License --- for more details. - --- Targeted to EP2C5T144C8 mini board but porting to nearly any FPGA should be fairly simple --- See Sprint 1 manual for video output details. Resistor values listed here have been scaled --- for 3.3V logic. --- R48 1k Ohm --- R49 1k Ohm --- R50 680R --- R51 330R - -library IEEE; -use IEEE.STD_LOGIC_1164.all; -use IEEE.STD_LOGIC_ARITH.all; -use IEEE.STD_LOGIC_UNSIGNED.all; - - -entity sprint1 is -port( - Clk_50_I : in std_logic; -- 50MHz input clock - clk_12 : in std_logic; -- 12MHz input clock - Reset_n : in std_logic; -- Reset button (Active low) - - - VideoW_O : out std_logic; -- White video output (680 Ohm) - VideoB_O : out std_logic; -- Black video output (1.2k) - Sync_O : out std_logic; -- Composite sync output (1.2k) - - - Hs : out std_logic; - Vs : out std_logic; - Vb : out std_logic; - Hb : out std_logic; - Video : out std_logic; - - Audio : out std_logic_vector(6 downto 0); - Coin1_I : in std_logic; -- Coin switches (Active low) - Coin2_I : in std_logic; - Start_I : in std_logic; -- Start button - Gas_I : in std_logic; -- Gas pedal - Gear1_I : in std_logic; -- Gear shifter, 4th gear = no other gear selected - Gear2_I : in std_logic; - Gear3_I : in std_logic; - Test_I : in std_logic; -- Self-test switch - SteerA_I : in std_logic; -- Steering wheel inputs, these are quadrature encoders - SteerB_I : in std_logic; - StartLamp_O : out std_logic -- Start button lamp - ); -end sprint1; - -architecture rtl of sprint1 is - -signal clk_6 : std_logic; -signal phi1 : std_logic; -signal phi2 : std_logic; - -signal Hcount : std_logic_vector(8 downto 0) := (others => '0'); -signal H256 : std_logic; -signal H256_s : std_logic; -signal H256_n : std_logic; -signal H128 : std_logic; -signal H64 : std_logic; -signal H32 : std_logic; -signal H16 : std_logic; -signal H8 : std_logic; -signal H8_n : std_logic; -signal H4 : std_logic; -signal H4_n : std_logic; -signal H2 : std_logic; -signal H1 : std_logic; - - - -signal Vcount : std_logic_vector(7 downto 0) := (others => '0'); -signal V128 : std_logic; -signal V64 : std_logic; -signal V32 : std_logic; -signal V16 : std_logic; -signal V8 : std_logic; -signal V4 : std_logic; -signal V2 : std_logic; -signal V1 : std_logic; - - -signal Vreset : std_logic; -signal Vblank_s : std_logic; -signal Vblank_n_s : std_logic; -signal Vblank : std_logic; -signal Hblank : std_logic; -signal Hsync : std_logic; -signal Vsync : std_logic; - -signal CompBlank_s : std_logic; -signal CompSync_n_s : std_logic; - -signal WhitePF_n : std_logic; -signal BlackPF_n : std_logic; - -signal Display : std_logic_vector(7 downto 0); - --- Address decoder -signal addec_bus : std_logic_vector(7 downto 0); -signal RnW : std_logic; -signal Write_n : std_logic; -signal ROM1 : std_logic; -signal ROM2 : std_logic; -signal ROM3 : std_logic; -signal WRAM : std_logic; -signal RAM_n : std_logic; -signal Sync_n : std_logic; -signal Switch_n : std_logic; -signal Collision1_n : std_logic; -signal Collision2_n : std_logic; -signal Display_n : std_logic; -signal TimerReset_n : std_logic; -signal CollRst1_n : std_logic; -signal CollRst2_n : std_logic; -signal SteerRst1_n : std_logic; -signal SteerRst2_n : std_logic; -signal NoiseRst_n : std_logic; -signal Attract : std_logic; -signal Skid1 : std_logic; -signal Skid2 : std_logic; - -signal Crash_n : std_logic; -signal Motor1_n : std_logic; -signal Motor2_n : std_logic; -signal Car1 : std_logic; -signal Car1_n : std_logic; -signal Car2 : std_logic; -signal Car2_n : std_logic; -signal Car3_4_n : std_logic; - -signal NMI_n : std_logic; - -signal Adr : std_logic_vector(9 downto 0); - -signal SW1 : std_logic_vector(7 downto 0); - -signal Inputs : std_logic_vector(1 downto 0); -signal Collisions1 : std_logic_vector(1 downto 0); -signal Collisions2 : std_logic_vector(1 downto 0); - -begin --- Configuration DIP switches, these can be brought out to external switches if desired --- See Sprint 2 manual page 11 for complete information. Active low (0 = On, 1 = Off) --- 1 Oil slicks (0 - Oil slicks enabled) --- 2 Cycle tracks (0/1 - Cycle every lap/every two laps) --- 3 4 Coins per play (00 - 1 Coin per player) --- 5 Extended Play (0 - Extended Play enabled) --- 6 Not used (X - Don't care) --- 7 8 Game time (01 - 120 Seconds) -SW1 <= "11000101"; -- Config dip switches - - -Vid_sync: entity work.synchronizer -port map( - clk_12 => clk_12, - clk_6 => clk_6, - hcount => hcount, - vcount => vcount, - hsync => hsync, - hblank => hblank, - vblank_s => vblank_s, - vblank_n_s => vblank_n_s, - vblank => vblank, - vsync => vsync, - vreset => vreset - ); - - -Background: entity work.playfield -port map( - clk6 => clk_6, - display => display, - HCount => HCount, - VCount => VCount, - HBlank => HBlank, - H256_s => H256_s, - VBlank => VBlank, - VBlank_n_s => Vblank_n_s, - HSync => Hsync, - VSync => VSync, - CompSync_n_s => CompSync_n_s, - CompBlank_s => CompBlank_s, - WhitePF_n => WhitePF_n, - BlackPF_n => BlackPF_n - ); - - -Cars: entity work.motion -port map( - CLK6 => clk_6, - CLK12 => clk_12, - PHI2 => phi2, - DISPLAY => Display, - H256_s => H256_s, - VCount => VCount, - HCount => HCount, - Crash_n => Crash_n, - Motor1_n => Motor1_n, - Car1 => Car1, - Car1_n => Car1_n, - Car2 => Car2, - Car2_n => Car2_n, - Car3_4_n => Car3_4_n - ); - - -PF_Comparator: entity work.collision_detect -port map( - Clk6 => Clk_6, - Car1 => Car1, - Car1_n => Car1_n, - Car2 => Car2, - Car2_n => Car2_n, - Car3_4_n => Car3_4_n, - WhitePF_n => WhitePF_n, - BlackPF_n => BlackPF_n, - CollRst1_n => CollRst1_n, - Collisions1 => Collisions1 - ); - - -CPU: entity work.cpu_mem -port map( - Clk12 => clk_12, - Clk6 => clk_6, - Reset_n => reset_n, - VCount => VCount, - HCount => HCount, - Hsync_n => not Hsync, - Vblank_s => Vblank_s, - Vreset => Vreset, - Test_n => not Test_I, - Attract => Attract, - Skid1 => Skid1, - Skid2 => Skid2, - NoiseReset_n => NoiseRst_n, - CollRst1_n => CollRst1_n, - CollRst2_n => CollRst2_n, - SteerRst1_n => SteerRst1_n, - Lamp1 => StartLamp_O, - Phi1_o => Phi1, - Phi2_o => Phi2, - Display => Display, - IO_Adr => Adr, - Collisions1 => Collisions1, - Collisions2 => Collisions2, - Inputs => Inputs - ); - - -Input: entity work.Control_Inputs -port map( - clk6 => clk_6, - SW1 => SW1, -- DIP switches - Coin1_n => Coin1_I, - Coin2_n => Coin2_I, - Start => not Start_I, -- Active high in real hardware, inverting these makes more sense with the FPGA - Gas => not Gas_I, - Gear1 => not Gear1_I, - Gear2 => not Gear2_I, - Gear3 => not Gear3_I, - Self_Test => not Test_I, - Steering1A_n => SteerA_I, - Steering1B_n => SteerB_I, - SteerRst1_n => SteerRst1_n, - Adr => Adr, - Inputs => Inputs - ); - - -Sound: entity work.audio -port map( - Clk_50 => Clk_50_I, - Clk_6 => Clk_6, - Reset_n => Reset_n, - Motor1_n => Motor1_n, - Skid1 => Skid1, - Crash_n => Crash_n, - NoiseReset_n => NoiseRst_n, - Attract => Attract, - Display => Display, - HCount => HCount, - VCount => VCount, - Audio1 => Audio - ); - --- Video mixing -VideoB_O <= (not(BlackPF_n and Car2_n and Car3_4_n)) nor CompBlank_s; -VideoW_O <= not(WhitePF_n and Car1_n); -Sync_O <= CompSync_n_s; - -Vb <= VBLANK; -Hb <= HBLANK; -Hs <= Hsync; -Vs <= Vsync; -Video <= (WhitePF_n and blackpf_n and car1_n and Car2_n and Car3_4_n) nor CompBlank_s; - -end rtl; \ No newline at end of file diff --git a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/sprint2.vhd b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/sprint2.vhd index 74f6bb76..e422e553 100644 --- a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/sprint2.vhd +++ b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/sprint2.vhd @@ -31,16 +31,14 @@ entity sprint2 is port( clk_12 : in std_logic; -- 12MHz input clock Reset_n : in std_logic; -- Reset button (Active low) - Video : out std_logic_vector(1 downto 0); + Video : out std_logic_vector(1 downto 0); Sync_O : out std_logic; -- Composite sync output (1.2k) Audio1_O : out std_logic_vector(6 downto 0); -- Ideally this should have a simple low pass filter - Audio2_O : out std_logic_vector(6 downto 0); - + Audio2_O : out std_logic_vector(6 downto 0); Hs : out std_logic; Vs : out std_logic; Vb : out std_logic; Hb : out std_logic; - Coin1_I : in std_logic; -- Coin switches (Active low) Coin2_I : in std_logic; Start1_I : in std_logic; -- Start buttons @@ -322,16 +320,12 @@ port map( ); -- Video mixing ---VideoB_O <= (not(BlackPF_n and Car2_n and Car3_4_n)) nor CompBlank_s; ---VideoW_O <= not(WhitePF_n and Car1_n and Car3_4_n); +Video(0) <= (not(BlackPF_n and Car2_n and Car3_4_n)) nor CompBlank_s; +Video(1) <= not(WhitePF_n and Car1_n and Car3_4_n); Sync_O <= CompSync_n_s; - - Vb <= VBLANK; Hb <= HBLANK; Hs <= Hsync; Vs <= Vsync; -Video(0) <= (not(BlackPF_n and Car2_n and Car3_4_n)) nor CompBlank_s; -Video(1) <= not(WhitePF_n and Car1_n and Car3_4_n); end rtl; \ No newline at end of file diff --git a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/sprint2_mist.sv b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/sprint2_mist.sv index 1dd37a39..e9560183 100644 --- a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/sprint2_mist.sv +++ b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/sprint2_mist.sv @@ -21,91 +21,141 @@ module sprint2_mist( localparam CONF_STR = { "Sprint2;;", "O1,Test Mode,Off,On;", -// "T2,Next Track;", + "T2,Next Track;", "O34,Scandoubler Fx,None,HQ2x,CRT 25%,CRT 50%;", "T6,Reset;", - "V,v1.00.",`BUILD_DATE + "V,v1.10.",`BUILD_DATE }; wire [31:0] status; wire [1:0] buttons; wire [1:0] switches; -wire [9:0] kbjoy; +wire [11:0] kbjoy; wire [7:0] joystick_0; wire [7:0] joystick_1; wire scandoubler_disable; wire ypbpr; wire ps2_kbd_clk, ps2_kbd_data; wire [6:0] audio1, audio2; -wire [1:0] video; - +wire [1:0] Video; +assign LED = 1'b1; wire clk_24, clk_12, clk_6; wire locked; pll pll ( .inclk0(CLOCK_27), - .c0(clk_24), - .c1(clk_12), - .c2(clk_6), + .c0(clk_24),//24.192 + .c1(clk_12),//12.096 + .c2(clk_6),//6.048 .locked(locked) ); -wire led1, led2; -assign LED = (led1 | led2); +wire m_up1 = (kbjoy[3] | joystick_1[3]); +wire m_down1 = (kbjoy[2] | joystick_1[2]); +wire m_left1 = (kbjoy[1] | joystick_1[1]); +wire m_right1 = (kbjoy[0] | joystick_1[0]); + +wire m_up2 = (joystick_0[3]); +wire m_down2 = (joystick_0[2]); +wire m_left2 = (joystick_0[1]); +wire m_right2 = (joystick_0[0]); + +wire m_fire1 = ~(kbjoy[4] | joystick_1[4]); +wire m_fire2 = ~(joystick_0[4]); +wire m_start1 = ~(kbjoy[5]); +wire m_start2 = ~(kbjoy[6]); +wire m_coin = ~(kbjoy[7]); +wire m_gearup1 = (kbjoy[8] | joystick_1[5]); +wire m_geardown1 = (kbjoy[9] | joystick_1[6]); +wire m_gearup2 = (joystick_0[5]); +wire m_geardown2 = (joystick_0[6]); + +wire [1:0] steer1; +joy2quad steerp1 +( + .CLK(clk_24), + .clkdiv('d22500), + .right(m_right1), + .left(m_left1), + .steer(steer1) +); + +wire [1:0] steer2; +joy2quad steerp2 +( + .CLK(clk_24), + .clkdiv('d22500), + .right(m_right2), + .left(m_left2), + .steer(steer2) +); + +wire gear11,gear12,gear13; +gearshift gearshiftp1 +( + .CLK(clk_12), + .gearup(m_gearup1), + .geardown(m_geardown1), + .gear1(gear11), + .gear2(gear12), + .gear3(gear13) +); + +wire gear21,gear22,gear23; +gearshift gearshiftp2 +( + .CLK(clk_12), + .gearup(m_gearup2), + .geardown(m_geardown2), + .gear1(gear21), + .gear2(gear22), + .gear3(gear23) +); sprint2 sprint2 ( .clk_12(clk_12), - .Reset_n(~(status[0] | status[6] | buttons[1])), - .VideoW_O(), - .VideoB_O(), - .Sync_O(), + .Reset_n(~(status[0] | status[6] | buttons[1])), .Hs(hs), .Vs(vs), .Vb(vb), .Hb(hb), - .Video(video), + .Video(Video), .Audio1_O(audio1), .Audio2_O(audio2), .Coin1_I(~kbjoy[7]), - .Coin2_I(~kbjoy[7]), + .Coin2_I(1'b1), .Start1_I(~kbjoy[5]), .Start2_I(~kbjoy[6]), - .Trak_Sel_I(),//~status[2]), - .Gas1_I(~kbjoy[4]), - .Gas2_I(), -// .Gear1_1_I(),// Gear shifters, 4th gear = no other gear selected -// .Gear1_2_I(), -// .Gear1_3_I(), -// .Gear2_1_I(), -// .Gear2_2_I(), -// .Gear2_3_I(), + .Trak_Sel_I(~status[2]), + .Gas1_I(m_fire1), + .Gas2_I(m_fire2), + .Gear1_1_I(gear11), + .Gear1_2_I(gear21), + .Gear2_1_I(gear12), + .Gear2_2_I(gear22), + .Gear3_1_I(gear13), + .Gear3_2_I(gear23), .Test_I(~status[1]), - .Steer_1A_I(~kbjoy[1]),// Steering wheel inputs, these are quadrature encoders - .Steer_1B_I(~kbjoy[0]), -// .Steer_2A_I(), -// .Steer_2B_I(), - .Lamp1_O(led1), - .Lamp2_O(led2) + .Steer_1A_I(steer1[1]), + .Steer_1B_I(steer1[0]), + .Steer_2A_I(steer2[1]), + .Steer_2B_I(steer2[0]), + .Lamp1_O(), + .Lamp2_O() ); -dac dac1 ( +dac dac ( .CLK(clk_24), .RESET(1'b0), - .DACin(audio1), + .DACin({audio1,"00",audio2}), .DACout(AUDIO_L) ); -dac dacr ( - .CLK(clk_24), - .RESET(1'b0), - .DACin(audio2), - .DACout(AUDIO_R) - ); - +assign AUDIO_R = AUDIO_L; wire hs, vs; wire hb, vb; wire blankn = ~(hb | vb); -video_mixer #(.LINE_LENGTH(480), .HALF_DEPTH(1)) video_mixer +video_mixer #(.LINE_LENGTH(480), .HALF_DEPTH(0)) video_mixer ( .clk_sys(clk_24), .ce_pix(clk_6), @@ -113,12 +163,12 @@ video_mixer #(.LINE_LENGTH(480), .HALF_DEPTH(1)) video_mixer .SPI_SCK(SPI_SCK), .SPI_SS3(SPI_SS3), .SPI_DI(SPI_DI), - .R({video,video,video}), - .G({video,video,video}), - .B({video,video,video}), -// .R(blankn ? {video,video,video} : "000"), -// .G(blankn ? {video,video,video} : "000"), -// .B(blankn ? {video,video,video} : "000"), + .R({Video,Video,Video,Video,Video,Video}), + .G({Video,Video,Video,Video,Video,Video}), + .B({Video,Video,Video,Video,Video,Video}), +// .R(blankn ? {video,video,video} : "000000"), +// .G(blankn ? {video,video,video} : "000000"), +// .B(blankn ? {video,video,video} : "000000"), .HSync(hs), .VSync(vs), .VGA_R(VGA_R), diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/sprom.vhd b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/sprom.vhd similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/sprom.vhd rename to Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/sprom.vhd diff --git a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/sync.vhd b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/sync.vhd index 544cee27..9a9ea9f1 100644 --- a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/sync.vhd +++ b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/rtl/sync.vhd @@ -99,12 +99,24 @@ end process; -- Many Atari raster games use a 256 x 4 bit prom to decode vertical sync signals -- This could be replaced by combinatorial logic -M2: entity work.sync_prom +M2: entity work.sprom +generic map( + init_file => "rtl/roms/6400-01m2.hex", + widthad_a => 8, + width_a => 4) port map( clock => clk_12, address => sync_reg(3) & V128 & V64 & V16 & V8 & V4 & V2 & V1, q => sync_bus ); + +--M2: entity work.sync_prom +--port map( +-- clock => clk_12, +-- address => sync_reg(3) & V128 & V64 & V16 & V8 & V4 & V2 & V1, +-- q => sync_bus +-- ); + -- Register fed by the sync PROM, in the original hardware this also creates the complements of these signals sync_register: process(hsync_int) diff --git a/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/snapshot/sprint2.rbf b/Arcade_MiST/Atari BW Raster Hardware/Sprint2_MiST/snapshot/sprint2.rbf deleted file mode 100644 index 0ede27569ed5ee6a3360832927893d0e589a7424..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 251840 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

>ub}qICLZ-Yp2e<@su+$1PL&>GImM*iK>(F7 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 z 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 + begin + gear=gear-1; + end + end + end + else + begin + old_gear_up=0; + end + + + casex(gear) + 3'b000: + begin + gear1=0; + gear2=1; + gear3=1; + end + 3'b001: + begin + gear1=1; + gear2=0; + gear3=1; + + end + 3'b010: + begin + gear1=1; + gear2=1; + gear3=0; + end + 3'b011: + begin + gear1=1; + gear2=1; + gear3=1; + end + endcase + +end + + +endmodule \ No newline at end of file diff --git a/Arcade_MiST/Atari BW Raster Hardware/SprintOne_MiST/rtl/joy2quad.sv b/Arcade_MiST/Atari BW Raster Hardware/SprintOne_MiST/rtl/joy2quad.sv new file mode 100644 index 00000000..dae1fa5f --- /dev/null +++ b/Arcade_MiST/Atari BW Raster Hardware/SprintOne_MiST/rtl/joy2quad.sv @@ -0,0 +1,100 @@ +//============================================================================ +// joy2quad +// +// Take in digital joystick buttons, and try to estimate a quadrature encoder +// +// +// This makes an offset wave pattern for each keyboard stroke. It might +// be a good extension to change the size of the wave based on how long the joystick +// is held down. +// +// Copyright (c) 2019 Alan Steremberg - alanswx +// +// +//============================================================================ +// digital joystick button to quadrature encoder + +module joy2quad +( + input CLK, + input [31:0] clkdiv, + + input right, + input left, + + output reg [1:0] steer +); + + +reg [3:0] state = 0; + +always @(posedge CLK) begin + reg [31:0] count = 0; + if (count >0) + begin + count=count-1; + end + else + begin + count=clkdiv; + casex(state) + 4'b0000: + begin + steer=2'b00; + if (left==1) + begin + state=4'b0001; + end + if (right==1) + begin + state=4'b0101; + end + + end + 4'b0001: + begin + steer=2'b00; + state=4'b0010; + end + 4'b0010: + begin + steer=2'b01; + state=3'b0011; + end + 4'b0011: + begin + steer=2'b11; + state=4'b0100; + end + 4'b0100: + begin + steer=2'b10; + state=4'b000; + end + 4'b0101: + begin + steer=2'b00; + state=4'b0110; + end + 4'b0110: + begin + steer=2'b10; + state=4'b0111; + end + 4'b0111: + begin + steer=2'b11; + state=4'b1000; + end + 4'b1000: + begin + steer=2'b01; + state=4'b0000; + + end + + endcase + end +end + +endmodule \ No newline at end of file diff --git a/Arcade_MiST/Atari BW Raster Hardware/SprintOne_MiST/rtl/sprint1.vhd b/Arcade_MiST/Atari BW Raster Hardware/SprintOne_MiST/rtl/sprint1.vhd index d4245fcb..cc760a20 100644 --- a/Arcade_MiST/Atari BW Raster Hardware/SprintOne_MiST/rtl/sprint1.vhd +++ b/Arcade_MiST/Atari BW Raster Hardware/SprintOne_MiST/rtl/sprint1.vhd @@ -294,11 +294,9 @@ port map( Video(0) <= (not(BlackPF_n and Car2_n and Car3_4_n)) nor CompBlank_s; Video(1) <= not(WhitePF_n and Car1_n); Sync_O <= CompSync_n_s; - Vb <= VBLANK; Hb <= HBLANK; Hs <= Hsync; Vs <= Vsync; - end rtl; \ No newline at end of file diff --git a/Arcade_MiST/Atari BW Raster Hardware/SprintOne_MiST/rtl/sprint1_mist.sv b/Arcade_MiST/Atari BW Raster Hardware/SprintOne_MiST/rtl/sprint1_mist.sv index 8f9c27b3..ee0568c7 100644 --- a/Arcade_MiST/Atari BW Raster Hardware/SprintOne_MiST/rtl/sprint1_mist.sv +++ b/Arcade_MiST/Atari BW Raster Hardware/SprintOne_MiST/rtl/sprint1_mist.sv @@ -36,9 +36,9 @@ wire scandoubler_disable; wire ypbpr; wire ps2_kbd_clk, ps2_kbd_data; wire [6:0] audio; -wire [1:0] video; - -wire clk_48, clk_12, clk_6; +wire [1:0] Video; +assign LED = 1'b1; +wire clk_24, clk_12, clk_6; wire locked; pll pll ( @@ -49,30 +49,47 @@ pll pll .locked(locked) ); +wire [1:0] steer; +joy2quad steer1 +( + .CLK(clk_24), + .clkdiv('d22500), + .right(m_right), + .left(m_left), + .steer(steer) +); + +wire gear1,gear2,gear3; +gearshift gearshift1 +( + .CLK(clk_12), + .gearup(m_gearup), + .geardown(m_geardown), + .gear1(gear1), + .gear2(gear2), + .gear3(gear3) +); sprint1 sprint1 ( .clk_12(clk_12), .Reset_n(~(status[0] | status[6] | buttons[1])), - .VideoW_O(), - .VideoB_O(), - .Sync_O(), + .Video(Video), .Hs(hs), .Vs(vs), .Vb(vb), - .Hb(hb), - .Video(video), + .Hb(hb), .Audio(audio), - .Coin1_I(~kbjoy[7]), - .Coin2_I(~kbjoy[7]), - .Start_I(~kbjoy[5]), - .Gas_I(~kbjoy[4]), -// .Gear1_I(~kbjoy[8]), -// .Gear2_I(~kbjoy[9]), -// .Gear3_I(~kbjoy[10]), + .Coin1_I(m_coin), + .Coin2_I(1'b1), + .Start_I(m_start1), + .Gas_I(m_fire), + .Gear1_I(gear1), + .Gear2_I(gear2), + .Gear3_I(gear3), .Test_I(~status[1]), - .SteerA_I(), - .SteerB_I(), - .StartLamp_O(~LED) + .SteerA_I(steer[1]), + .SteerB_I(steer[0]), + .StartLamp_O() ); dac dac ( @@ -95,9 +112,9 @@ video_mixer #(.LINE_LENGTH(480), .HALF_DEPTH(0)) video_mixer .SPI_SCK(SPI_SCK), .SPI_SS3(SPI_SS3), .SPI_DI(SPI_DI), - .R({video,video,video}), - .G({video,video,video}), - .B({video,video,video}), + .R({Video,Video,Video,Video,Video,Video}), + .G({Video,Video,Video,Video,Video,Video}), + .B({Video,Video,Video,Video,Video,Video}), // .R(blankn ? {video,video,video} : "000000"), // .G(blankn ? {video,video,video} : "000000"), // .B(blankn ? {video,video,video} : "000000"), @@ -116,6 +133,17 @@ video_mixer #(.LINE_LENGTH(480), .HALF_DEPTH(0)) video_mixer .mono(0) ); +wire m_up = (kbjoy[3] | joystick_0[3] | joystick_1[3]); +wire m_down = (kbjoy[2] | joystick_0[2] | joystick_1[2]); +wire m_left = (kbjoy[1] | joystick_0[1] | joystick_1[1]); +wire m_right = (kbjoy[0] | joystick_0[0] | joystick_1[0]); + +wire m_fire = ~(kbjoy[4] | joystick_0[4] | joystick_1[4]); +wire m_start1 = ~(kbjoy[5]); +wire m_start2 = ~(kbjoy[6]); +wire m_coin = ~(kbjoy[7]); +wire m_gearup = (kbjoy[8] | joystick_0[5] | joystick_1[5]); +wire m_geardown = (kbjoy[9] | joystick_0[6] | joystick_1[6]); mist_io #(.STRLEN(($size(CONF_STR)>>3))) mist_io ( .clk_sys (clk_24 ), diff --git a/Arcade_MiST/Atari BW Raster Hardware/SprintOne_MiST/snapshot/sprint1.rbf b/Arcade_MiST/Atari BW Raster Hardware/SprintOne_MiST/snapshot/sprint1.rbf deleted file mode 100644 index 3be3f76572bd7be079c4f81bdb6f4795c128ed59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 250642 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 z

qG6WQqop%j2|-f*ot)JZU!Jm3EcEQ<6jG(Yyd#@D?VEmCNqsgfF`$icL5ySmU= zUs|a&`N2*V(pV26;gO_~HLnPSIA6*Kt^G{%%0ApFqefl}&-^SA&7`WFY|23jv2!u+ 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 z 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℘ABx;gCk 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

bH=No6Sewb8cM>8AobOW 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�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 L-()<3Di{`jRQaz}@<1!0 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 diff --git a/Arcade_MiST/Galaxian Hardware/KingBaloon_MiST/rtl/ROM/prom.hex b/Arcade_MiST/Galaxian Hardware/KingBaloon_MiST/rtl/ROM/col.hex similarity index 100% rename from Arcade_MiST/Galaxian Hardware/KingBaloon_MiST/rtl/ROM/prom.hex rename to Arcade_MiST/Galaxian Hardware/KingBaloon_MiST/rtl/ROM/col.hex diff --git a/Arcade_MiST/Galaxian Hardware/KingBaloon_MiST/rtl/ROM/GALAXIAN_1H.hex b/Arcade_MiST/Galaxian Hardware/KingBaloon_MiST/rtl/ROM/h.hex similarity index 100% rename from Arcade_MiST/Galaxian Hardware/KingBaloon_MiST/rtl/ROM/GALAXIAN_1H.hex rename to Arcade_MiST/Galaxian Hardware/KingBaloon_MiST/rtl/ROM/h.hex diff --git a/Arcade_MiST/Galaxian Hardware/KingBaloon_MiST/rtl/ROM/GALAXIAN_1K.hex b/Arcade_MiST/Galaxian Hardware/KingBaloon_MiST/rtl/ROM/k.hex similarity index 100% rename from Arcade_MiST/Galaxian Hardware/KingBaloon_MiST/rtl/ROM/GALAXIAN_1K.hex rename to Arcade_MiST/Galaxian Hardware/KingBaloon_MiST/rtl/ROM/k.hex diff --git a/Arcade_MiST/Galaxian Hardware/KingBaloon_MiST/rtl/ROM/kb_prog.hex b/Arcade_MiST/Galaxian Hardware/KingBaloon_MiST/rtl/ROM/prog.hex similarity index 100% rename from Arcade_MiST/Galaxian Hardware/KingBaloon_MiST/rtl/ROM/kb_prog.hex rename to Arcade_MiST/Galaxian Hardware/KingBaloon_MiST/rtl/ROM/prog.hex diff --git a/Arcade_MiST/Galaxian Hardware/KingBaloon_MiST/rtl/build_id.v b/Arcade_MiST/Galaxian Hardware/KingBaloon_MiST/rtl/build_id.v index f6d22cf2..adcfa042 100644 --- a/Arcade_MiST/Galaxian Hardware/KingBaloon_MiST/rtl/build_id.v +++ b/Arcade_MiST/Galaxian Hardware/KingBaloon_MiST/rtl/build_id.v @@ -1,2 +1,2 @@ -`define BUILD_DATE "181028" -`define BUILD_TIME "105037" +`define BUILD_DATE "190101" +`define BUILD_TIME "170231" diff --git a/Arcade_MiST/Galaxian Hardware/KingBaloon_MiST/rtl/kingballon.vhd b/Arcade_MiST/Galaxian Hardware/KingBaloon_MiST/rtl/kingballon.vhd index 2238dae1..3bfa76cb 100644 --- a/Arcade_MiST/Galaxian Hardware/KingBaloon_MiST/rtl/kingballon.vhd +++ b/Arcade_MiST/Galaxian Hardware/KingBaloon_MiST/rtl/kingballon.vhd @@ -342,19 +342,9 @@ port map( O_SDAT => W_SDAT_B ); ---------- ROM ------------------------------------------------------- --- mc_roms : entity work.ROM_PGM_0 --- port map ( --- CLK => W_CLK_12M, --- ADDR => W_A(13 downto 0), --- DATA => W_CPU_ROM_DO --- ); - - - mc_roms : entity work.sprom generic map ( - init_file => "./ROM/kb_prog.hex", + init_file => "./ROM/prog.hex", widthad_a => 14, width_a => 8) port map ( diff --git a/Arcade_MiST/Galaxian Hardware/KingBaloon_MiST/rtl/mc_col_pal.vhd b/Arcade_MiST/Galaxian Hardware/KingBaloon_MiST/rtl/mc_col_pal.vhd index 756e7cc0..0b4ac592 100644 --- a/Arcade_MiST/Galaxian Hardware/KingBaloon_MiST/rtl/mc_col_pal.vhd +++ b/Arcade_MiST/Galaxian Hardware/KingBaloon_MiST/rtl/mc_col_pal.vhd @@ -63,16 +63,9 @@ begin --- COL ROM -------------------------------------------------------- --wire W_COL_ROM_OEn = W_6M_DO[1]; --- galaxian_6l : entity work.GALAXIAN_6L --- port map ( --- CLK => I_CLK_12M, --- ADDR => W_6M_DO(6 downto 2), --- DATA => W_COL_ROM_DO --- ); - galaxian_6l : entity work.sprom generic map ( - init_file => "./ROM/prom.hex", + init_file => "./ROM/col.hex", widthad_a => 5, width_a => 8) port map ( diff --git a/Arcade_MiST/Galaxian Hardware/KingBaloon_MiST/rtl/mc_video.vhd b/Arcade_MiST/Galaxian Hardware/KingBaloon_MiST/rtl/mc_video.vhd index e521fb71..11ce2940 100644 --- a/Arcade_MiST/Galaxian Hardware/KingBaloon_MiST/rtl/mc_video.vhd +++ b/Arcade_MiST/Galaxian Hardware/KingBaloon_MiST/rtl/mc_video.vhd @@ -219,25 +219,9 @@ begin O_DB => W_VID_RAM_DOB ); - -- 1K VID-Rom --- k_rom : entity work.GALAXIAN_1K --- port map ( --- CLK => I_CLK_12M, --- ADDR => W_O_OBJ_ROM_A, --- DATA => W_1K_D --- ); - - -- 1H VID-Rom --- h_rom : entity work.GALAXIAN_1H --- port map( --- CLK => I_CLK_12M, --- ADDR => W_O_OBJ_ROM_A, --- DATA => W_1H_D --- ); - k_rom : entity work.sprom generic map ( - init_file => "./ROM/GALAXIAN_1K.hex", + init_file => "./ROM/k.hex", widthad_a => 11, width_a => 8) port map ( @@ -248,7 +232,7 @@ begin h_rom : entity work.sprom generic map ( - init_file => "./ROM/GALAXIAN_1H.hex", + init_file => "./ROM/h.hex", widthad_a => 11, width_a => 8) port map ( diff --git a/Arcade_MiST/Midway8080 Hardware/Midway8080v2_MiST/rtl/invaders_memory.sv b/Arcade_MiST/Midway8080 Hardware/Midway8080v2_MiST/rtl/invaders_memory.sv index ce66bd1d..ef52cf36 100644 --- a/Arcade_MiST/Midway8080 Hardware/Midway8080v2_MiST/rtl/invaders_memory.sv +++ b/Arcade_MiST/Midway8080 Hardware/Midway8080v2_MiST/rtl/invaders_memory.sv @@ -30,7 +30,8 @@ sprom #( `ifdef seawolf .init_file("./roms/Seawolf/sw0041_h.hex"), `endif//not working `ifdef dogpatch .init_file("./roms/Dogpatch/dogpatch_h.hex"), `endif//not working `ifdef jspecter .init_file("./roms/jspecter/rom_h.hex"), `endif//not working -`ifdef invadrev .init_file("./roms/InvadersRevenge/invrvnge_e.hex"), `endif//not working +`ifdef invadrev .init_file("./roms/InvadersRevenge/invrvnge_e.hex"), `endif//not +`ifdef blueshark .init_file("./roms/BlueShark/blueshrk_h.hex"), `endif// `ifdef zzzap280 .widthad_a(10), `endif// `ifdef generic .widthad_a(11), `endif// // .widthad_a(11), @@ -54,6 +55,7 @@ sprom #( `ifdef dogpatch .init_file("./roms/Dogpatch/dogpatch_g.hex"), `endif//not working `ifdef jspecter .init_file("./roms/jspecter/rom_g.hex"), `endif//not working `ifdef invadrev .init_file("./roms/InvadersRevenge/invrvnge_f.hex"), `endif//not working +`ifdef blueshark .init_file("./roms/BlueShark/blueshrk_g.hex"), `endif// `ifdef zzzap280 .widthad_a(10), `endif// `ifdef generic .widthad_a(11), `endif// // .widthad_a(11), @@ -77,6 +79,7 @@ sprom #( `ifdef dogpatch .init_file("./roms/Dogpatch/dogpatch_f.hex"), `endif//not working `ifdef jspecter .init_file("./roms/jspecter/rom_f.hex"), `endif//not working `ifdef invadrev .init_file("./roms/InvadersRevenge/invrvnge_g.hex"), `endif//not working +`ifdef blueshark .init_file("./roms/BlueShark/blueshrk_f.hex"), `endif// `ifdef zzzap280 .widthad_a(10), `endif// `ifdef generic .widthad_a(11), `endif// // .widthad_a(11), @@ -88,6 +91,7 @@ u_rom_f ( .q(rom_data_2) ); +`ifndef blueshark sprom #( `ifdef sflush .init_file("./roms/Strightflush/fr04_sc3.hex"), `endif// `ifdef zzzap280 .init_file("./roms/280zzz/zzzap_f.hex"), `endif//not working @@ -109,7 +113,7 @@ u_rom_e ( `ifdef generic .Address(Addr[10:0]), `endif .q(rom_data_3) ); - + `endif// `ifndef generic sprom #( `ifdef sflush .init_file("./roms/Strightflush/fr05_sc2.hex"), `endif// diff --git a/Arcade_MiST/Midway8080 Hardware/Midway8080v2_MiST/rtl/roms/BlueShark/blueshrk_f.hex b/Arcade_MiST/Midway8080 Hardware/Midway8080v2_MiST/rtl/roms/BlueShark/blueshrk_f.hex new file mode 100644 index 00000000..557f06b1 --- /dev/null +++ b/Arcade_MiST/Midway8080 Hardware/Midway8080v2_MiST/rtl/roms/BlueShark/blueshrk_f.hex @@ -0,0 +1,129 @@ +:1000000066667E3C181C1818181818183C3C3C7E74 +:1000100066607C3E06067E7E3C7E66603878606662 +:100020007E3C666666667E7E606060603E3E06067A +:100030003E7E60667E3C3C3E06063E7E66667E3CBC +:100040007E7E60703038181C0C0C3C7E66663C7EF0 +:1000500066667E3C3C7E66667E7C60667E3C00001A +:100060000000000000000000183C7E6666667E7E90 +:1000700066663E7E66663E7E66667E3E3C7E6606C2 +:10008000060606667E3C3E7E6666666666667E3E62 +:100090007E7E06063E3E06067E7E7E7E06063E3E50 +:1000A000060606063C7E6606067676667E3C666634 +:1000B00066667E7E666666663C3C181818181818D8 +:1000C0003C3C60606060606060667E3C6666763E78 +:1000D0001E1E3E76666606060606060606067E7E38 +:1000E000C3C3E7E7FFFFDBC3C3C366666E6E7E7EF6 +:1000F000767666663E7E66667E3E060606063C7E32 +:100100006666666666767E5C3E7E66667E3E766681 +:1001100066663C7E66063E7C60667E3C7E7E181887 +:1001200018181818181866666666666666667E3C55 +:1001300066666666667E3C3C1818C3C3C3DBFFFF79 +:10014000E7E7C3C366667E3C18183C7E6666666653 +:100150007E3C1818181818187E7E6070381C0E0621 +:100160007E7E3C7E6666703818001818000000001D +:100170003C3C00000000050D0000C000000100F83C +:1001800001000300FF030086E0FF0F000CFFFF7F6C +:1001900000FCFFFFDF01F8FFFFFFFF18FFFF7F00FC +:1001A0008C01FFFF00068001060003000002000131 +:1001B000000001000000800000050D00008001002B +:1001C0004000F003004000FE070040C4FF1F00C0D5 +:1001D000F8FF7F0080FFFFDF0180FFFFFFFFC0F817 +:1001E000FFFF004008FCFF014000060C0040000239 +:1001F000060000000003000000000000041E0001D3 +:1002000000000000000000000000000000000000EE +:10021000000000400000000000000000000000009E +:1002200000000000000000000000000000000000CE +:100230000E0000FC1E0000CC1E0000301E0000FE60 +:100240000F0000F7C77F00FF6F0280F71F07800FC6 +:10025000FC03C107F800FF030000FF010000FF00DE +:10026000000001000000010000000100000001008A +:10027000000000000000041E00000000000000005C +:10028000000000000004000000000000000000006A +:10029000000000000000010000400000000000001D +:1002A000000002000000000000001C0000F83D00FB +:1002B00000983D0004603C000EFC1F001EEE8FFF06 +:1002C0003BFFDF04F1EF3F0EE11FF807C003F00131 +:1002D0008000000020000000700000001C000000F2 +:1002E0000C000000040000000400000004000000F6 +:1002F00002118003C007E007E007A006E0036003E7 +:10030000C0018003C007F60FEC5BB073D8064E0C3B +:100310004238C000021100008007C00FE00F400FFC +:10032000F00FF0C78483CCC7F06FD83BED06A74D24 +:1003300030791003180E0000021500002000200084 +:1003400038003C0060006001C000C000C000C00177 +:10035000C001D009700D200740034001C001C0005A +:10036000C001800102150001000100010007800F9B +:10037000A001C000C000C000E000E000E402AC0347 +:100380003801B000A000E000C000E0006000000004 +:1003900002158001C001C000C001400140032007D8 +:1003A000700DD009C001C001C000C000C0006001D4 +:1003B00060003C0038002000200000000215000012 +:1003C0006000E000C000E000A000B0003801AC0315 +:1003D000E402E000E000C000C000C000A001800F07 +:1003E0000007000100010001040C000008000100EA +:1003F00018000300380006007C008CC0FF071CFFBB +:10040000FF3FF8FFFFDFF8FFFFFF0C81DF3F06C073 +:10041000C0000000600000003000040C000010006C +:1004200000003000200070002000F8002084FF0F42 +:1004300060FCFF3FC0FFFFDFC0FFFFFF6004BF1F86 +:10044000200081012000C0000000400003100000D7 +:10045000E00000F800F0BF00E07F00C01F00E00FE8 +:1004600000F809047F080C5E00980700F005007092 +:1004700000002000002000002000002000000310E9 +:10048000080000180000300000600000C00402F006 +:100490000502001F03007E0300F90300E00700F0DF +:1004A0001F00803F00007E0000FF0080D90000E0B8 +:1004B000040B0000080060001800C0003800800134 +:1004C00078000013FC0300FFFF3F00FFFFDF8013F5 +:1004D000FF7FC08000030000800100008000011346 +:1004E0000814080808080808080808080808080880 +:1004F000080808011008140808080808080808086F +:100500000808080808010D08000808080808080875 +:1005100008080808010A0800080808080808080868 +:10052000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB +:10053000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB +:10054000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB +:10055000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB +:10056000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B +:10057000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8B +:10058000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7B +:10059000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B +:1005A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B +:1005B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B +:1005C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B +:1005D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B +:1005E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B +:1005F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +:10060000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA +:10061000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA +:10062000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA +:10063000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA +:10064000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA +:10065000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA +:10066000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A +:10067000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A +:10068000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A +:10069000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A +:1006A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A +:1006B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A +:1006C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A +:1006D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A +:1006E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A +:1006F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A +:10070000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9 +:10071000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9 +:10072000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9 +:10073000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9 +:10074000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9 +:10075000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9 +:10076000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99 +:10077000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89 +:10078000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79 +:10079000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69 +:1007A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59 +:1007B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49 +:1007C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39 +:1007D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29 +:1007E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19 +:1007F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09 +:00000001FF diff --git a/Arcade_MiST/Midway8080 Hardware/Midway8080v2_MiST/rtl/roms/BlueShark/blueshrk_g.hex b/Arcade_MiST/Midway8080 Hardware/Midway8080v2_MiST/rtl/roms/BlueShark/blueshrk_g.hex new file mode 100644 index 00000000..8923d41f --- /dev/null +++ b/Arcade_MiST/Midway8080 Hardware/Midway8080v2_MiST/rtl/roms/BlueShark/blueshrk_g.hex @@ -0,0 +1,129 @@ +:10000000A7F2050837171213230605CD7D0F21022D +:1000100021CD930DC83A3620A7C8AF323620210132 +:10002000217EE6F0F60677C90606C30B08CD860FDB +:10003000210221E6014F3A2020CA5D08A7F24508B7 +:100040003606C3470836032B7881C24F08F60447AB +:100050007EE6F0B0772B36022323C31108A7F266A1 +:100060000836F9C3470836FCC347083A3620A713B9 +:10007000EBCA7D08CD9D0DCA8008C32209CD8D0D28 +:100080003A0121E603475F160021F508195E235661 +:100090003A0421BBDAD208BAD22D083A0121E6404F +:1000A0003A0621CAB708FE76C2B10821B911C3C504 +:1000B00008217611C3C508FEFCC2C208217612C30E +:1000C000C50821FC1122062121002136012323C36A +:1000D000110805C32D0801E103001082761101B15A +:1000E00003001080FC1101E3FC00C882761101B30B +:1000F000FC00C880FC11104890C83A3620A713EBCA +:10010000CA0C09CD9D0DCA0F09C32209CD8D0DCD95 +:10011000860FF60FE67F6F2680220021C913EBCDF4 +:100120008D0DAF3236202A0421CD2F0E222B203EFA +:10013000FF3238203E043232203A0121E640CA9E86 +:10014000092100213601237EE6F7F6077723CD8DBE +:100150000D0604C3F30C13EBCD8D0D21322035CAEF +:1001600080093A0621FE76C2700921B911C37309CC +:1001700021761122062121002136012323C38D0D72 +:10018000AF3238202100213606237EE640CA92098C +:100190003EFFF6803226207EE6F0F60577C906108F +:1001A000CDF30CC3800906EBCDFF0C1AE640CAB3B1 +:1001B000093EFFF680322520211080220021C90649 +:1001C00020CDF30C3A22203223202101612210217C +:1001D000210000221221CD860FE60E4F06002107D6 +:1001E0000A091114217E1213237E1221F012221605 +:1001F00021211221CD930DC83A3620A7C8AF32363F +:10020000203E63321121C910E820D028D870B08078 +:10021000D0A0E8C0A0E0E006DFCDFF0C3A3620A772 +:1002200013EBCA2E0ACD9D0DCA310AC3660ACD8DC5 +:100230000D3A23203D322320CA5A0A3E01321021B2 +:100240003A1621FEF0C24E0A211413C3510A21F0BE +:1002500012221621211221C3F409210200221021A9 +:10026000C913EBCD8D0DAF3236202A1421CD2F0EC0 +:10027000222F203EFF3238203E043234202110212C +:10028000360123360423CD8D0D0604CDF30C06DF95 +:10029000C3FF0C13EBCD8D0D21342035CABD0A3AB6 +:1002A0001621FEF0C2AD0A211413C3B00A21F012C8 +:1002B00022162121102136012323C38D0DAF3238A0 +:1002C000203EFF322A20210602221021C906FBCD42 +:1002D000FF0C3EFF322920210400221021C9060212 +:1002E000CDF30C3EFF323720211C213A3920D608AD +:1002F00087772336FD211D20360023360421DE14A6 +:10030000221E212101012218212100F4221A21217B +:100310001A21CD930DAF323520323620C913EBCDE3 +:100320009D0DCA360B3A1D21FEECD2360B211A2147 +:10033000CD8D0DC36F0B211E2035C25C0B2B7EFEB5 +:1003400003D2990B3C77878623EBC6B46F3E00CE71 +:100350000B677E12235E2356EB221E212101012210 +:100360001821211A21CD930DC83A1D21FEECD03E53 +:10037000FF323620210202221821C93A3620A7CAAC +:10038000890B210104221821C92101032218213AD5 +:100390003820A7C013EBCD8D0DAF32362032372079 +:1003A00021000022182106FDC3FF0C13EBCD8D0D9B +:1003B000AF323620C3360B04F314040515041415AC +:1003C000E5C3CA0BE5010400CD3E0C11E50F2A2F51 +:1003D00020CD080DE1AF77C9E57EE67FC2FE0B11A7 +:1003E000E90FC3010CE57EE67FC2F80B019509CD4C +:1003F000780C11E90FC3010C010200CD3E0C11D99C +:100400000F2A2B20CD080DE1AF77C9E57EE67FCA24 +:10041000310C11E10FC3340CE57EE67FCA2B0C01D1 +:100420000500CD3E0C11E10FC3340C010300CD3E9D +:100430000C11DD0F2A2D20CD080DE1AF77C9C511B4 +:100440000F2021D5253E03CD0A0DC1111120213FDA +:10045000207E812777F54FE60F121B790F0F0F0FC4 +:10046000E60F121B23F17E8827E60F1277110F206B +:1004700021D5253E03C30A0DC5110F2021D5253EE8 +:1004800003CD0A0DC1111120213F207E812777F570 +:100490004FE60F121B790F0F0F0FE60F121B23F100 +:1004A0007E88277712E6F0CABA0C7EE60F12771123 +:1004B0000F2021D5253E03C30A0DAF772B771213EA +:1004C000121312C3AF0CCD630F119C0F214324CD27 +:1004D000080D110A2021C6253E05CD0A0D11142054 +:1004E00021CF253E02CD0A0D110F2021D5253E0535 +:1004F000C30A0D2141207E0FD007B077D303C92155 +:1005000041207EA077D303C91A13F5D5CD770DE529 +:10051000060A1AF3AE77FBC501200009C11305C214 +:10052000120DE123D113F13DC20A0DC91A13F5D5FD +:10053000CD770D060AC51AD5010300E5210000118B +:100540000800292907D2490D091DC2420DEB011FE0 +:1005500000E17BF3AE77237AAE77097BAE77237A1F +:10056000AE77FB09D113C105C2350D0182FD09D15A +:1005700013F13DC22E0DC9E51A6F260029292987DE +:10058000856F7CCE006701FA0F09EBE1C9CDF00D54 +:10059000C31A0FAF323520CDA70DC3AB0EAF323526 +:1005A00020CDF00DC3420E7EF5234623A7F2D30DD6 +:1005B0003C86775F2FD3012378867757EBCD2F0EBC +:1005C000EBD5235E2356EB4E793D835F234623D143 +:1005D000EBF1C986775FD3012378867757EBCD2F70 +:1005E0000EEBD5235E2356EB4E234623D1EBF1C908 +:1005F0007EF52323A7F2160E7E5F2FD3012356EB41 +:10060000CD2F0EEBD5235E2356EB4E793D835F2332 +:100610004623D1EBF1C97E5FD3012356EBCD2F0EDC +:10062000EBD5235E2356EB4E234623D1EBF1C906CF +:10063000037C1F677D1F6F05C2310E7CE63FF620ED +:1006400067C9A7FA770EC5E51AD302DB03AE77DBDD +:1006500003A6C4140F13230DC2480EAFD302DB034D +:10066000AE77DB03A6C4140F012000E109C105C267 +:10067000460E3A3520A7C97D816FC5E51AD302DB46 +:1006800000AE77DB00A6C4140F132B0DC27C0EAF97 +:10069000D302DB00AE77DB00A6C4140F012000E11B +:1006A00009C105C27A0E3A3520A7C9A7FAE00EC5DE +:1006B000E51AD302DB03A6C4140FDB03AE771323C2 +:1006C0000DC2B10EAFD302DB03A6C4140FDB03AE21 +:1006D00077012000E109C105C2AF0E3A3520A7C954 +:1006E0007D816FC5E51AD302DB00A6C4140FDB00C1 +:1006F000AE77132B0DC2E50EAFD302DB00A6C414F8 +:100700000FDB00AE77012000E109C105C2E30E3A1C +:100710003520A7C93EFF323520C9A7FA3F0FC5E5EE +:100720001AD302DB03AE7713230DC2200FAFD3021F +:10073000DB03AE77012000E109C105C21E0FC97DB0 +:10074000816FC5E51AD302DB00AE77132B0DC244CF +:100750000FAFD302DB00AE77012000E109C105C273 +:10076000420FC92100240120E0C5E53600230DC257 +:100770006B0FE101200009C105C2690FC97E121388 +:100780002305C27D0FC9E52A0520291717AD17AD2E +:100790001F1F2FE601B56F220520E1C9171213258F +:1007A0001C0D001B0F0A0A0A1D13170F0A0A0A1C48 +:1007B0000D001B0F07251C1D0B1B1D2509110B17F9 +:1007C0000F0A001F0F1B061B0F19160B220B110B14 +:1007D000170F0A1B0F0B0E22240302000003030055 +:1007E00000030500000304000004250500000B13AE +:1007F000181C0F1B1D0A0D0013183C7E66666666EA +:00000001FF diff --git a/Arcade_MiST/Midway8080 Hardware/Midway8080v2_MiST/rtl/roms/BlueShark/blueshrk_h.hex b/Arcade_MiST/Midway8080 Hardware/Midway8080v2_MiST/rtl/roms/BlueShark/blueshrk_h.hex new file mode 100644 index 00000000..212503d2 --- /dev/null +++ b/Arcade_MiST/Midway8080 Hardware/Midway8080v2_MiST/rtl/roms/BlueShark/blueshrk_h.hex @@ -0,0 +1,129 @@ +:10000000310024C31800FFFFF5E5D5C5FBC342024C +:10001000F5E5D5C5FBC3710321002001201FCD6983 +:100020000FDB02E680CA3300CDC60CAFD302D30388 +:10003000C3B100CD630FFBC33700AF3200200120F6 +:1000400018211420F3CD690FAFD303FBCD630F113B +:100050000A20210F2006031ABECA6200DA6B00D202 +:100060007300132305C25700C373007E12132305C8 +:10007000C26B00CDC60C11BC0F210630CD2C0D3E3D +:10008000783208203A0820A7D304C2840001201443 +:10009000210630CD690F210220AFBECAA60036006E +:1000A0002B3600C3B1002BBECAB1002336FFC313E9 +:1000B00001012018211420F3CD690FAFD303FBCD2C +:1000C000C60C3E20323E203A0420A7C23901F3CDAF +:1000D000FB00FB11EE0F210430CD2C0D3E783208D1 +:1000E000203A0420A7C239013A0820A7D304C2E16C +:1000F00000213E2035C2D300C3B10021018022007F +:100100002121010022082121010022102121222089 +:100110003618C9CD630F11C60F210A2CCD2C0D1135 +:10012000CD0F210432CD2C0D3E5A3208203A082042 +:10013000A7D304C22D01C33E01F3210420350120C1 +:1001400018210F20CD690F3E01D303324120FB213E +:1001500014203609233609CD630FCDC60C3E9932E3 +:100160003C2011B40F210930CD2C0D3E4032082027 +:100170003A0820A7C27001CD630FCDC60CCDFB009D +:100180003EFF320020D304AF212520BEC4D80B236C +:10019000BEC4E50B23BEC40B0C23BEC4180C23BE87 +:1001A000C4C00B23BEC4C40B2A3F2029292929E53A +:1001B0003A1F20A7C2CA017CFE07DACA01211F200C +:1001C0003EFF7723772377233610E13A0220A7C238 +:1001D00007023A0120A7C20702DB02E660CA070253 +:1001E000FE40CAED01D2F2010614C3F4010618C3A1 +:1001F000F40106227CB8DA07023EFF32012011C664 +:100200000F215427CD080D3A3D20A7F23F02AF320F +:100210003D2021CF251114203E02CD0A0D211520AD +:100220003A3C20F547E60F77780F0F0F0FE60F2BBC +:1002300077EB21CF253E02CD0A0DF1A7CA3A00C3C4 +:1002400085012117203EFFBECA440377DB02E60882 +:10025000C2CA02F300000000AF3209203E01323C66 +:10026000203E01323B203EFF323D2011C502210CD1 +:100270002CCD2C0D1E0121FFFF2DC2790225C27944 +:10028000021DC27902D3041E0121FF0FDB02E60228 +:10029000CAAC022DC28C0225C28C021DC28C021176 +:1002A000C502210C2CCD2C0DFBC3DA0211C5022195 +:1002B0000C2CCD2C0DFBDB02E602C2DA023E023230 +:1002C0000920C3DA02041D13161D210920AFBECA7E +:1002D000B60235C2B602210420343A0020A7CA046F +:1002E000033A3720A7C20403211C20DB02E601CA1F +:1002F000F7023600C30403AFBEC2040336FF210178 +:10030000002218213A1A20A7C23D03211620357E6B +:10031000E603CA1D03E601C22603C36503111F04D9 +:10032000210121C33103112F042109217EA7F26588 +:1003300003CD4B03AF321720C1D1E1F1C921182001 +:1003400034C3340321182034C338032BAFBECA642E +:100350000335C26403237EE60F874F0600EB097E58 +:1003600023666FE9C1211820AFBECA340335C30B21 +:1003700003DB02E680CA5704211A203EFFBECADD15 +:100380000377DB01323920213B2035CCE4032108FF +:1003900020AFBECA9703353A1720A7C2D60321194A +:1003A00020357EE603CAB603E601C2BF03114D0441 +:1003B000211921C3C503114304211121C3CA03110B +:1003C0002F042109217EA7FA1304CDF903AF321AB5 +:1003D00020C1D1E1F1C9211B2034C3CD03211B2051 +:1003E00034C3D103363C3A3C20A7CAF303C699274D +:1003F000323C203EFF323D20C92BAFBECA1204352D +:10040000C21204237EE60F874F0600EB097E2366A7 +:100410006FE9C1211B20AFBECACD0335C39E03DAED +:10042000076B086B086B08FA08A6091D095609AE88 +:10043000045805F905580539068206D106C2071089 +:10044000074107BF09170ACD0A610A930ADE0A1D90 +:100450000B7B0B890BAB0BF3214220AFBEDB0132D0 +:100460003920C26A0436FFC370043A1C21CD8204CD +:100470003A3920D60887321C21CD8204C1D1E1F15E +:10048000FBC96F2690D301CD2F0E010138C5E53E83 +:10049000FFD302DB03AE77230DC28F04AFD302DBA1 +:1004A00003AE77012000E109C105C28D04C9060829 +:1004B000CDF30CCD860FE638C3C1043A0520E6081B +:1004C000B04F0600211805091108217E1213237E62 +:1004D0001213233A2120A7F210057EA7F2E0043779 +:1004E000171213237EA7F2EA043717121323060408 +:1004F000CD7D0F210A21CD930DC83A3620A7C8AF74 +:100500003236202109217E323120E6F0F60877C903 +:100510007E1213237EC3EB0404A604FD08704C1462 +:1005200004E1000408703813046100FB08B0901364 +:100530000462040008C0E8130462FB00E0C0E81392 +:100540000463FFFBE0B0901304E3FF04E070381392 +:1005500004A4FBFDE0704C141A47E690CABD05EEFA +:1005600080CAC8053A3620A713EBC5CA7805CD9DC9 +:100570000DCA7B05C1C30707CD8D0DC13A0D21FE04 +:1005800070DAD905FEB0D2E9053A0E21FE38CAADBF +:1005900005FE64CAA705FE90CAA105219013C3B049 +:1005A0000521BC13C3B005213813C3B00521641362 +:1005B000220E2121082136022323C3F6043A0D21FD +:1005C000FE80DAD005C364053A0D21FE80DA6405A9 +:1005D00078F610EE8012C3640578E602CAE40506D8 +:1005E00030C3BB040600C3BB0478E602CAF40506A8 +:1005F00020C3BB040610C3BB043A3620A713EBCAC2 +:100600000B06CD9D0DCA0E06C30707CD8D0D3A0C06 +:1006100021FE08DAF405FEE0D2EF053A0E21FEE8ED +:10062000C22906211A14C32C0621E813220E212107 +:10063000082136022323C3F6043A3620A713EBCA57 +:100640004B06CD9D0DCA4E06C30707CD8D0D3A0C46 +:1006500021FEB0DA6506FEE0D2DF05210821360171 +:100660002323C3F6042108213601233423237E2FBC +:100670003C322420360021B014220E21210A21C34D +:10068000930D3A3620A713EBCA9406CD9D0DCA9759 +:1006900006C30707CD8D0D3A0C21FE40DAAE06FEEB +:1006A000B0D2C70621082136012323C3F60421084E +:1006B000213601233423233A242077217E14220E6D +:1006C00021210A21C3F60421082136012335C3B5AF +:1006D000063A3620A713EBCAE306CD9D0DCAE606FF +:1006E000C30707CD8D0D3A0C21FE40D2FD06FE0852 +:1006F000DAE40521082136012323C3F60421082169 +:1007000036012335C36C063A0921323120C315075F +:1007100013EBCD8D0DAF3236202A0C21CD2F0E22BA +:100720002D203EFF3238203E08323320210821366A +:1007300001237EE6F9F6097723CD8D0D0604C3F378 +:100740000C13EBCD8D0D21332035CAA1073A312092 +:10075000E60FFE04D29707FE023A0E21CA8607FE74 +:1007600038CA8007FE64CA7A07FE90CA74072190CF +:1007700013C3940721BC13C39407213813C39407F0 +:10078000216413C39407FEE8CA910721E813C394B8 +:1007900007211A14220E2121082136012323C38D9B +:1007A0000DAF323820210821360B237EE64007C2E8 +:1007B000B4073EFF3228207EE6F0F6077706F7C33F +:1007C000FF0C06FBCDFF0C1AE64007C2D0073EFF28 +:1007D000322720210400220821C9CD860FE638FEE9 +:1007E00020DAE607E6104F060021D608091100219D +:1007F0007E1213237E1213233A2020A7F228087EAC +:00000001FF diff --git a/Arcade_MiST/Midway8080 Hardware/Midway8080v2_Mist/Invaders.qsf b/Arcade_MiST/Midway8080 Hardware/Midway8080v2_Mist/Invaders.qsf index b18fc331..3bd720e6 100644 --- a/Arcade_MiST/Midway8080 Hardware/Midway8080v2_Mist/Invaders.qsf +++ b/Arcade_MiST/Midway8080 Hardware/Midway8080v2_Mist/Invaders.qsf @@ -48,7 +48,6 @@ set_global_assignment -name SYSTEMVERILOG_FILE rtl/Invaders_mist.sv set_global_assignment -name VHDL_FILE rtl/invaders.vhd set_global_assignment -name VHDL_FILE rtl/mw8080.vhd set_global_assignment -name VHDL_FILE rtl/invaders_audio.vhd -set_global_assignment -name VHDL_FILE rtl/invaders_video.vhd set_global_assignment -name SYSTEMVERILOG_FILE rtl/invaders_memory.sv set_global_assignment -name QIP_FILE rtl/pll.qip set_global_assignment -name SYSTEMVERILOG_FILE rtl/video_mixer.sv @@ -177,4 +176,5 @@ set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top # end ENTITY(Invaders_mist) # ------------------------- set_global_assignment -name SYSTEMVERILOG_FILE rtl/cpu8080.sv +set_global_assignment -name VHDL_FILE rtl/invaders_video.vhd set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top \ No newline at end of file diff --git a/Arcade_MiST/Midway8080 Hardware/Midway8080v2_Mist/rtl/Invaders_mist.sv b/Arcade_MiST/Midway8080 Hardware/Midway8080v2_Mist/rtl/Invaders_mist.sv index 80f095d6..eada9535 100644 --- a/Arcade_MiST/Midway8080 Hardware/Midway8080v2_Mist/rtl/Invaders_mist.sv +++ b/Arcade_MiST/Midway8080 Hardware/Midway8080v2_Mist/rtl/Invaders_mist.sv @@ -1,21 +1,25 @@ `define generic +//`define noDIP `define invaders `ifdef invaders `define dip = 8'b00000000 `endif + //`define supearth `ifdef supearth `define dip = 8'b11000000 //4 lifes check this `endif + //`define slaser `ifdef slaser `define dip = 8'b00000000 //untested `endif -//`define sflush -`ifdef sflush - `define dip = 8'b00000000 //untested +//`define blueshark Sync Problems +`ifdef blueshark + `define dip = "00100100" //todo `endif + //TODO //`define lrescue @@ -58,9 +62,11 @@ localparam CONF_STR = { `ifdef invaders "Space Inv.;;", `endif `ifdef supearth "SEarthInv.;;", `endif `ifdef slaser "Space Laser;;", `endif - "Midway 8080.;;", +`ifdef blueshark "Blue Shark;;", `endif +`ifdef noDIP "Midway 8080.;;", `endif "O2,Joystick Control,Upright,Normal;", "O34,Scandoubler Fx,None,HQ2x,CRT 25%,CRT 50%;", + "O5,Overlay, On, Off;", "T6,Reset;", "V,v1.00.",`BUILD_DATE }; @@ -221,6 +227,7 @@ invaders_audio invaders_audio ( invaders_video invaders_video ( .Video(Video), + .Overlay(~status[5]), .CLK(clk_sys), .Rst_n_s(Rst_n_s), .HSync(HSync), diff --git a/Arcade_MiST/Midway8080 Hardware/Midway8080v2_Mist/rtl/build_id.v b/Arcade_MiST/Midway8080 Hardware/Midway8080v2_Mist/rtl/build_id.v index 28058561..21a4b647 100644 --- a/Arcade_MiST/Midway8080 Hardware/Midway8080v2_Mist/rtl/build_id.v +++ b/Arcade_MiST/Midway8080 Hardware/Midway8080v2_Mist/rtl/build_id.v @@ -1,2 +1,2 @@ -`define BUILD_DATE "181229" -`define BUILD_TIME "040306" +`define BUILD_DATE "190102" +`define BUILD_TIME "031130" diff --git a/Arcade_MiST/Midway8080 Hardware/Midway8080v2_Mist/rtl/invaders.vhd b/Arcade_MiST/Midway8080 Hardware/Midway8080v2_Mist/rtl/invaders.vhd index 2bf98881..21326c26 100644 --- a/Arcade_MiST/Midway8080 Hardware/Midway8080v2_Mist/rtl/invaders.vhd +++ b/Arcade_MiST/Midway8080 Hardware/Midway8080v2_Mist/rtl/invaders.vhd @@ -210,20 +210,20 @@ begin GDB1(0) <= not Coin;-- Active High ! GDB1(1) <= not Sel2Player; GDB1(2) <= not Sel1Player; - GDB1(3) <= '1'; -- Unused ? + GDB1(3) <= '1';-- Unused ? GDB1(4) <= not Fire; GDB1(5) <= not MoveLeft; GDB1(6) <= not MoveRight; - GDB1(7) <= '1'; -- Unused ? + GDB1(7) <= '1';-- Unused ? GDB2(0) <= DIP(4); -- LSB Lives 3-6 GDB2(1) <= DIP(3); -- MSB Lives 3-6 - GDB2(2) <= '0'; -- Tilt ? - GDB2(3) <= DIP(2); -- Bonus life at 1000 or 1500 + GDB2(2) <= '0';-- Tilt ? + GDB2(3) <= '0';--DIP(2); -- Bonus life at 1000 or 1500 GDB2(4) <= not Fire; GDB2(5) <= not MoveLeft; GDB2(6) <= not MoveRight; - GDB2(7) <= DIP(1); -- Coin info + GDB2(7) <= '1';--DIP(1); -- Coin info PortWr(2) <= '1' when AD_i(10 downto 8) = "010" and Sample = '1' else '0'; PortWr(3) <= '1' when AD_i(10 downto 8) = "011" and Sample = '1' else '0'; diff --git a/Arcade_MiST/Midway8080 Hardware/Midway8080v2_Mist/rtl/invaders_video.vhd b/Arcade_MiST/Midway8080 Hardware/Midway8080v2_Mist/rtl/invaders_video.vhd index ed3007f7..77ac2478 100644 --- a/Arcade_MiST/Midway8080 Hardware/Midway8080v2_Mist/rtl/invaders_video.vhd +++ b/Arcade_MiST/Midway8080 Hardware/Midway8080v2_Mist/rtl/invaders_video.vhd @@ -6,7 +6,8 @@ library ieee; entity invaders_video is port( - Video : in std_logic; + Video : in std_logic; + Overlay : in std_logic; CLK : in std_logic; Rst_n_s : in std_logic; HSync : in std_logic; @@ -116,9 +117,9 @@ begin end process; - O_VIDEO_R <= VideoRGB(2); - O_VIDEO_G <= VideoRGB(1); - O_VIDEO_B <= VideoRGB(0); + O_VIDEO_R <= VideoRGB(2) when (Overlay = '1') else VideoRGB(0) or VideoRGB(1) or VideoRGB(2); + O_VIDEO_G <= VideoRGB(1) when (Overlay = '1') else VideoRGB(0) or VideoRGB(1) or VideoRGB(2); + O_VIDEO_B <= VideoRGB(0) when (Overlay = '1') else VideoRGB(0) or VideoRGB(1) or VideoRGB(2); O_HSYNC <= not HSync; O_VSYNC <= not VSync; diff --git a/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/ace.qsf b/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/ace.qsf index dba20537..06907e8f 100644 --- a/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/ace.qsf +++ b/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/ace.qsf @@ -44,25 +44,6 @@ set_global_assignment -name PROJECT_CREATION_TIME_DATE "23:59:05 MARCH 16, 2017 set_global_assignment -name LAST_QUARTUS_VERSION "13.0 SP1" set_global_assignment -name PROJECT_OUTPUT_DIRECTORY Output set_global_assignment -name PRE_FLOW_SCRIPT_FILE "quartus_sh:rtl/build_id.tcl" -set_global_assignment -name VERILOG_FILE rtl/mist_io.v -set_global_assignment -name SYSTEMVERILOG_FILE rtl/hq2x.sv -set_global_assignment -name VERILOG_FILE rtl/osd.v -set_global_assignment -name VERILOG_FILE rtl/scandoubler.v -set_global_assignment -name VERILOG_FILE rtl/glue.v -set_global_assignment -name VERILOG_FILE rtl/T80/tv80n.v -set_global_assignment -name VERILOG_FILE rtl/T80/tv80_reg.v -set_global_assignment -name VERILOG_FILE rtl/T80/tv80_mcode.v -set_global_assignment -name VERILOG_FILE rtl/T80/tv80_core.v -set_global_assignment -name VERILOG_FILE rtl/T80/tv80_alu.v -set_global_assignment -name SYSTEMVERILOG_FILE rtl/video_mixer.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/ace_mist.sv -set_global_assignment -name QIP_FILE rtl/pll.qip -set_global_assignment -name VERILOG_FILE rtl/sigma_delta_dac.v -set_global_assignment -name VERILOG_FILE rtl/jupiter_ace.v -set_global_assignment -name VERILOG_FILE rtl/keyboard.v -set_global_assignment -name VERILOG_FILE rtl/rom_ram.v -set_global_assignment -name VERILOG_FILE rtl/ps2_port.v -set_global_assignment -name VERILOG_FILE rtl/io_write_to_rom.v # Pin & Location Assignments # ========================== @@ -202,14 +183,32 @@ set_global_assignment -name EDA_OUTPUT_DATA_FORMAT VHDL -section_id eda_simulati # Incremental Compilation Assignments # =================================== -set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top -set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top -set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top # end DESIGN_PARTITION(Top) # ------------------------- # end ENTITY(ace_mist) # -------------------- -set_global_assignment -name VERILOG_FILE rtl/sram.v +set_global_assignment -name VERILOG_INPUT_VERSION SYSTEMVERILOG_2005 +set_global_assignment -name VERILOG_SHOW_LMF_MAPPING_MESSAGES OFF +set_global_assignment -name SYSTEMVERILOG_FILE rtl/ace_mist.sv +set_global_assignment -name VERILOG_FILE rtl/jupiter_ace.v +set_global_assignment -name VHDL_FILE rtl/T80/T80_Reg.vhd +set_global_assignment -name VHDL_FILE rtl/T80/T80_MCode.vhd +set_global_assignment -name VHDL_FILE rtl/T80/T80_ALU.vhd +set_global_assignment -name VHDL_FILE rtl/T80/T80.vhd +set_global_assignment -name VHDL_FILE rtl/T80/T80pa.vhd +set_global_assignment -name VERILOG_FILE rtl/mist_io.v +set_global_assignment -name SYSTEMVERILOG_FILE rtl/hq2x.sv +set_global_assignment -name VERILOG_FILE rtl/osd.v +set_global_assignment -name VERILOG_FILE rtl/scandoubler.v +set_global_assignment -name SYSTEMVERILOG_FILE rtl/video_mixer.sv +set_global_assignment -name QIP_FILE rtl/pll.qip +set_global_assignment -name VERILOG_FILE rtl/sigma_delta_dac.v +set_global_assignment -name VERILOG_FILE rtl/keyboard.v +set_global_assignment -name SYSTEMVERILOG_FILE rtl/video.sv +set_global_assignment -name VERILOG_FILE rtl/dpram.v +set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top +set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top +set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top \ No newline at end of file diff --git a/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/T80/T80.vhd b/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/T80/T80.vhd new file mode 100644 index 00000000..bb300321 --- /dev/null +++ b/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/T80/T80.vhd @@ -0,0 +1,1175 @@ +-------------------------------------------------------------------------------- +-- **** +-- T80(c) core. Attempt to finish all undocumented features and provide +-- accurate timings. +-- Version 350. +-- Copyright (c) 2018 Sorgelig +-- Test passed: ZEXDOC, ZEXALL, Z80Full(*), Z80memptr +-- (*) Currently only SCF and CCF instructions aren't passed X/Y flags check as +-- correct implementation is still unclear. +-- +-- **** +-- T80(b) core. In an effort to merge and maintain bug fixes .... +-- +-- Ver 303 add undocumented DDCB and FDCB opcodes by TobiFlex 20.04.2010 +-- Ver 301 parity flag is just parity for 8080, also overflow for Z80, by Sean Riddle +-- Ver 300 started tidyup. +-- +-- MikeJ March 2005 +-- Latest version from www.fpgaarcade.com (original www.opencores.org) +-- +-- **** +-- Z80 compatible microprocessor core +-- +-- Version : 0247 +-- Copyright (c) 2001-2002 Daniel Wallner (jesus@opencores.org) +-- All rights reserved +-- +-- Redistribution and use in source and synthezised forms, with or without +-- modification, are permitted provided that the following conditions are met: +-- +-- Redistributions of source code must retain the above copyright notice, +-- this list of conditions and the following disclaimer. +-- +-- Redistributions in synthesized form must reproduce the above copyright +-- notice, this list of conditions and the following disclaimer in the +-- documentation and/or other materials provided with the distribution. +-- +-- Neither the name of the author nor the names of other contributors may +-- be used to endorse or promote products derived from this software without +-- specific prior written permission. +-- +-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +-- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +-- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +-- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE +-- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +-- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +-- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +-- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +-- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +-- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +-- POSSIBILITY OF SUCH DAMAGE. +-- +-- Please report bugs to the author, but before you do so, please +-- make sure that this is not a derivative work and that +-- you have the latest version of this file. +-- +-- The latest version of this file can be found at: +-- http://www.opencores.org/cvsweb.shtml/t80/ +-- +-- Limitations : +-- +-- File history : +-- +-- 0208 : First complete release +-- 0210 : Fixed wait and halt +-- 0211 : Fixed Refresh addition and IM 1 +-- 0214 : Fixed mostly flags, only the block instructions now fail the zex regression test +-- 0232 : Removed refresh address output for Mode > 1 and added DJNZ M1_n fix by Mike Johnson +-- 0235 : Added clock enable and IM 2 fix by Mike Johnson +-- 0237 : Changed 8080 I/O address output, added IntE output +-- 0238 : Fixed (IX/IY+d) timing and 16 bit ADC and SBC zero flag +-- 0240 : Added interrupt ack fix by Mike Johnson, changed (IX/IY+d) timing and changed flags in GB mode +-- 0242 : Added I/O wait, fixed refresh address, moved some registers to RAM +-- 0247 : Fixed bus req/ack cycle +-- + +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.numeric_std.all; +use IEEE.STD_LOGIC_UNSIGNED.all; + +entity T80 is + generic( + Mode : integer := 0; -- 0 => Z80, 1 => Fast Z80, 2 => 8080, 3 => GB + IOWait : integer := 0; -- 0 => Single cycle I/O, 1 => Std I/O cycle + Flag_C : integer := 0; + Flag_N : integer := 1; + Flag_P : integer := 2; + Flag_X : integer := 3; + Flag_H : integer := 4; + Flag_Y : integer := 5; + Flag_Z : integer := 6; + Flag_S : integer := 7 + ); + port( + RESET_n : in std_logic; + CLK_n : in std_logic; + CEN : in std_logic; + WAIT_n : in std_logic; + INT_n : in std_logic; + NMI_n : in std_logic; + BUSRQ_n : in std_logic; + M1_n : out std_logic; + IORQ : out std_logic; + NoRead : out std_logic; + Write : out std_logic; + RFSH_n : out std_logic; + HALT_n : out std_logic; + BUSAK_n : out std_logic; + A : out std_logic_vector(15 downto 0); + DInst : in std_logic_vector(7 downto 0); + DI : in std_logic_vector(7 downto 0); + DO : out std_logic_vector(7 downto 0); + MC : out std_logic_vector(2 downto 0); + TS : out std_logic_vector(2 downto 0); + IntCycle_n : out std_logic; + IntE : out std_logic; + Stop : out std_logic; + out0 : in std_logic := '0'; -- 0 => OUT(C),0, 1 => OUT(C),255 + REG : out std_logic_vector(211 downto 0); -- IFF2, IFF1, IM, IY, HL', DE', BC', IX, HL, DE, BC, PC, SP, R, I, F', A', F, A + + DIRSet : in std_logic := '0'; + DIR : in std_logic_vector(211 downto 0) := (others => '0') -- IFF2, IFF1, IM, IY, HL', DE', BC', IX, HL, DE, BC, PC, SP, R, I, F', A', F, A + ); +end T80; + +architecture rtl of T80 is + + constant aNone : std_logic_vector(2 downto 0) := "111"; + constant aBC : std_logic_vector(2 downto 0) := "000"; + constant aDE : std_logic_vector(2 downto 0) := "001"; + constant aXY : std_logic_vector(2 downto 0) := "010"; + constant aIOA : std_logic_vector(2 downto 0) := "100"; + constant aSP : std_logic_vector(2 downto 0) := "101"; + constant aZI : std_logic_vector(2 downto 0) := "110"; + + -- Registers + signal ACC, F : std_logic_vector(7 downto 0); + signal Ap, Fp : std_logic_vector(7 downto 0); + signal I : std_logic_vector(7 downto 0); + signal R : unsigned(7 downto 0); + signal SP, PC : unsigned(15 downto 0); + + signal RegDIH : std_logic_vector(7 downto 0); + signal RegDIL : std_logic_vector(7 downto 0); + signal RegBusA : std_logic_vector(15 downto 0); + signal RegBusB : std_logic_vector(15 downto 0); + signal RegBusC : std_logic_vector(15 downto 0); + signal RegAddrA_r : std_logic_vector(2 downto 0); + signal RegAddrA : std_logic_vector(2 downto 0); + signal RegAddrB_r : std_logic_vector(2 downto 0); + signal RegAddrB : std_logic_vector(2 downto 0); + signal RegAddrC : std_logic_vector(2 downto 0); + signal RegWEH : std_logic; + signal RegWEL : std_logic; + signal Alternate : std_logic; + + -- Help Registers + signal WZ : std_logic_vector(15 downto 0); -- MEMPTR register + signal IR : std_logic_vector(7 downto 0); -- Instruction register + signal ISet : std_logic_vector(1 downto 0); -- Instruction set selector + signal RegBusA_r : std_logic_vector(15 downto 0); + + signal ID16 : signed(15 downto 0); + signal Save_Mux : std_logic_vector(7 downto 0); + + signal TState : unsigned(2 downto 0); + signal MCycle : std_logic_vector(2 downto 0); + signal IntE_FF1 : std_logic; + signal IntE_FF2 : std_logic; + signal Halt_FF : std_logic; + signal BusReq_s : std_logic; + signal BusAck : std_logic; + signal ClkEn : std_logic; + signal NMI_s : std_logic; + signal IStatus : std_logic_vector(1 downto 0); + + signal DI_Reg : std_logic_vector(7 downto 0); + signal T_Res : std_logic; + signal XY_State : std_logic_vector(1 downto 0); + signal Pre_XY_F_M : std_logic_vector(2 downto 0); + signal NextIs_XY_Fetch : std_logic; + signal XY_Ind : std_logic; + signal No_BTR : std_logic; + signal BTR_r : std_logic; + signal Auto_Wait : std_logic; + signal Auto_Wait_t1 : std_logic; + signal Auto_Wait_t2 : std_logic; + signal IncDecZ : std_logic; + + -- ALU signals + signal BusB : std_logic_vector(7 downto 0); + signal BusA : std_logic_vector(7 downto 0); + signal ALU_Q : std_logic_vector(7 downto 0); + signal F_Out : std_logic_vector(7 downto 0); + + -- Registered micro code outputs + signal Read_To_Reg_r : std_logic_vector(4 downto 0); + signal Arith16_r : std_logic; + signal Z16_r : std_logic; + signal ALU_Op_r : std_logic_vector(3 downto 0); + signal Save_ALU_r : std_logic; + signal PreserveC_r : std_logic; + signal MCycles : std_logic_vector(2 downto 0); + + -- Micro code outputs + signal MCycles_d : std_logic_vector(2 downto 0); + signal TStates : std_logic_vector(2 downto 0); + signal IntCycle : std_logic; + signal NMICycle : std_logic; + signal Inc_PC : std_logic; + signal Inc_WZ : std_logic; + signal IncDec_16 : std_logic_vector(3 downto 0); + signal Prefix : std_logic_vector(1 downto 0); + signal Read_To_Acc : std_logic; + signal Read_To_Reg : std_logic; + signal Set_BusB_To : std_logic_vector(3 downto 0); + signal Set_BusA_To : std_logic_vector(3 downto 0); + signal ALU_Op : std_logic_vector(3 downto 0); + signal Save_ALU : std_logic; + signal PreserveC : std_logic; + signal Arith16 : std_logic; + signal Set_Addr_To : std_logic_vector(2 downto 0); + signal Jump : std_logic; + signal JumpE : std_logic; + signal JumpXY : std_logic; + signal Call : std_logic; + signal RstP : std_logic; + signal LDZ : std_logic; + signal LDW : std_logic; + signal LDSPHL : std_logic; + signal IORQ_i : std_logic; + signal Special_LD : std_logic_vector(2 downto 0); + signal ExchangeDH : std_logic; + signal ExchangeRp : std_logic; + signal ExchangeAF : std_logic; + signal ExchangeRS : std_logic; + signal I_DJNZ : std_logic; + signal I_CPL : std_logic; + signal I_CCF : std_logic; + signal I_SCF : std_logic; + signal I_RETN : std_logic; + signal I_BT : std_logic; + signal I_BC : std_logic; + signal I_BTR : std_logic; + signal I_RLD : std_logic; + signal I_RRD : std_logic; + signal I_RXDD : std_logic; + signal I_INRC : std_logic; + signal SetWZ : std_logic_vector(1 downto 0); + signal SetDI : std_logic; + signal SetEI : std_logic; + signal IMode : std_logic_vector(1 downto 0); + signal Halt : std_logic; + signal XYbit_undoc : std_logic; + signal DOR : std_logic_vector(127 downto 0); + +begin + + REG <= IntE_FF2 & IntE_FF1 & IStatus & DOR & std_logic_vector(PC) & std_logic_vector(SP) & std_logic_vector(R) & I & Fp & Ap & F & ACC when Alternate = '0' + else IntE_FF2 & IntE_FF1 & IStatus & DOR(127 downto 112) & DOR(47 downto 0) & DOR(63 downto 48) & DOR(111 downto 64) & + std_logic_vector(PC) & std_logic_vector(SP) & std_logic_vector(R) & I & Fp & Ap & F & ACC; + + mcode : work.T80_MCode + generic map( + Mode => Mode, + Flag_C => Flag_C, + Flag_N => Flag_N, + Flag_P => Flag_P, + Flag_X => Flag_X, + Flag_H => Flag_H, + Flag_Y => Flag_Y, + Flag_Z => Flag_Z, + Flag_S => Flag_S) + port map( + IR => IR, + ISet => ISet, + MCycle => MCycle, + F => F, + NMICycle => NMICycle, + IntCycle => IntCycle, + XY_State => XY_State, + MCycles => MCycles_d, + TStates => TStates, + Prefix => Prefix, + Inc_PC => Inc_PC, + Inc_WZ => Inc_WZ, + IncDec_16 => IncDec_16, + Read_To_Acc => Read_To_Acc, + Read_To_Reg => Read_To_Reg, + Set_BusB_To => Set_BusB_To, + Set_BusA_To => Set_BusA_To, + ALU_Op => ALU_Op, + Save_ALU => Save_ALU, + PreserveC => PreserveC, + Arith16 => Arith16, + Set_Addr_To => Set_Addr_To, + IORQ => IORQ_i, + Jump => Jump, + JumpE => JumpE, + JumpXY => JumpXY, + Call => Call, + RstP => RstP, + LDZ => LDZ, + LDW => LDW, + LDSPHL => LDSPHL, + Special_LD => Special_LD, + ExchangeDH => ExchangeDH, + ExchangeRp => ExchangeRp, + ExchangeAF => ExchangeAF, + ExchangeRS => ExchangeRS, + I_DJNZ => I_DJNZ, + I_CPL => I_CPL, + I_CCF => I_CCF, + I_SCF => I_SCF, + I_RETN => I_RETN, + I_BT => I_BT, + I_BC => I_BC, + I_BTR => I_BTR, + I_RLD => I_RLD, + I_RRD => I_RRD, + I_INRC => I_INRC, + SetWZ => SetWZ, + SetDI => SetDI, + SetEI => SetEI, + IMode => IMode, + Halt => Halt, + NoRead => NoRead, + Write => Write, + XYbit_undoc => XYbit_undoc); + + alu : work.T80_ALU + generic map( + Mode => Mode, + Flag_C => Flag_C, + Flag_N => Flag_N, + Flag_P => Flag_P, + Flag_X => Flag_X, + Flag_H => Flag_H, + Flag_Y => Flag_Y, + Flag_Z => Flag_Z, + Flag_S => Flag_S) + port map( + Arith16 => Arith16_r, + Z16 => Z16_r, + WZ => WZ, + XY_State=> XY_State, + ALU_Op => ALU_Op_r, + IR => IR(5 downto 0), + ISet => ISet, + BusA => BusA, + BusB => BusB, + F_In => F, + Q => ALU_Q, + F_Out => F_Out); + + ClkEn <= CEN and not BusAck; + + T_Res <= '1' when TState = unsigned(TStates) else '0'; + + NextIs_XY_Fetch <= '1' when XY_State /= "00" and XY_Ind = '0' and + ((Set_Addr_To = aXY) or + (MCycle = "001" and IR = "11001011") or + (MCycle = "001" and IR = "00110110")) else '0'; + + Save_Mux <= BusB when ExchangeRp = '1' else + DI_Reg when Save_ALU_r = '0' else + ALU_Q; + + process (RESET_n, CLK_n) + variable n : std_logic_vector(7 downto 0); + variable ioq : std_logic_vector(8 downto 0); + begin + if RESET_n = '0' then + PC <= (others => '0'); -- Program Counter + A <= (others => '0'); + WZ <= (others => '0'); + IR <= "00000000"; + ISet <= "00"; + XY_State <= "00"; + IStatus <= "00"; + MCycles <= "000"; + DO <= "00000000"; + + ACC <= (others => '1'); + F <= (others => '1'); + Ap <= (others => '1'); + Fp <= (others => '1'); + I <= (others => '0'); + R <= (others => '0'); + SP <= (others => '1'); + Alternate <= '0'; + + Read_To_Reg_r <= "00000"; + Arith16_r <= '0'; + BTR_r <= '0'; + Z16_r <= '0'; + ALU_Op_r <= "0000"; + Save_ALU_r <= '0'; + PreserveC_r <= '0'; + XY_Ind <= '0'; + I_RXDD <= '0'; + + elsif rising_edge(CLK_n) then + + if DIRSet = '1' then + ACC <= DIR( 7 downto 0); + F <= DIR(15 downto 8); + Ap <= DIR(23 downto 16); + Fp <= DIR(31 downto 24); + I <= DIR(39 downto 32); + R <= unsigned(DIR(47 downto 40)); + SP <= unsigned(DIR(63 downto 48)); + PC <= unsigned(DIR(79 downto 64)); + A <= DIR(79 downto 64); + IStatus <= DIR(209 downto 208); + + elsif ClkEn = '1' then + ALU_Op_r <= "0000"; + Save_ALU_r <= '0'; + Read_To_Reg_r <= "00000"; + + MCycles <= MCycles_d; + + if IMode /= "11" then + IStatus <= IMode; + end if; + + Arith16_r <= Arith16; + PreserveC_r <= PreserveC; + if ISet = "10" and ALU_OP(2) = '0' and ALU_OP(0) = '1' and MCycle = "011" then + Z16_r <= '1'; + else + Z16_r <= '0'; + end if; + + if MCycle = "001" and TState(2) = '0' then + -- MCycle = 1 and TState = 1, 2, or 3 + + if TState = 2 and Wait_n = '1' then + if Mode < 2 then + A(7 downto 0) <= std_logic_vector(R); + A(15 downto 8) <= I; + R(6 downto 0) <= R(6 downto 0) + 1; + end if; + + if Jump = '0' and Call = '0' and NMICycle = '0' and IntCycle = '0' and not (Halt_FF = '1' or Halt = '1') then + PC <= PC + 1; + end if; + + if IntCycle = '1' and IStatus = "01" then + IR <= "11111111"; + elsif Halt_FF = '1' or (IntCycle = '1' and IStatus = "10") or NMICycle = '1' then + IR <= "00000000"; + else + IR <= DInst; + end if; + + ISet <= "00"; + if Prefix /= "00" then + if Prefix = "11" then + if IR(5) = '1' then + XY_State <= "10"; + else + XY_State <= "01"; + end if; + else + if Prefix = "10" then + XY_State <= "00"; + XY_Ind <= '0'; + end if; + ISet <= Prefix; + end if; + else + XY_State <= "00"; + XY_Ind <= '0'; + end if; + end if; + + else + -- either (MCycle > 1) OR (MCycle = 1 AND TState > 3) + + if MCycle = "110" then + XY_Ind <= '1'; + if Prefix = "01" then + ISet <= "01"; + end if; + end if; + + if T_Res = '1' then + BTR_r <= (I_BT or I_BC or I_BTR) and not No_BTR; + if Jump = '1' then + A(15 downto 8) <= DI_Reg; + A(7 downto 0) <= WZ(7 downto 0); + PC(15 downto 8) <= unsigned(DI_Reg); + PC(7 downto 0) <= unsigned(WZ(7 downto 0)); + elsif JumpXY = '1' then + A <= RegBusC; + PC <= unsigned(RegBusC); + elsif Call = '1' or RstP = '1' then + A <= WZ; + PC <= unsigned(WZ); + elsif MCycle = MCycles and NMICycle = '1' then + A <= "0000000001100110"; + PC <= "0000000001100110"; + elsif MCycle = "011" and IntCycle = '1' and IStatus = "10" then + A(15 downto 8) <= I; + A(7 downto 0) <= WZ(7 downto 0); + PC(15 downto 8) <= unsigned(I); + PC(7 downto 0) <= unsigned(WZ(7 downto 0)); + else + case Set_Addr_To is + when aXY => + if XY_State = "00" then + A <= RegBusC; + else + if NextIs_XY_Fetch = '1' then + A <= std_logic_vector(PC); + else + A <= WZ; + end if; + end if; + when aIOA => + if Mode = 3 then + -- Memory map I/O on GBZ80 + A(15 downto 8) <= (others => '1'); + elsif Mode = 2 then + -- Duplicate I/O address on 8080 + A(15 downto 8) <= DI_Reg; + else + A(15 downto 8) <= ACC; + end if; + A(7 downto 0) <= DI_Reg; + WZ <= (ACC & DI_Reg) + "1"; + when aSP => + A <= std_logic_vector(SP); + when aBC => + if Mode = 3 and IORQ_i = '1' then + -- Memory map I/O on GBZ80 + A(15 downto 8) <= (others => '1'); + A(7 downto 0) <= RegBusC(7 downto 0); + else + A <= RegBusC; + if SetWZ = "01" then + WZ <= RegBusC + "1"; + end if; + if SetWZ = "10" then + WZ(7 downto 0) <= RegBusC(7 downto 0) + "1"; + WZ(15 downto 8) <= ACC; + end if; + end if; + when aDE => + A <= RegBusC; + if SetWZ = "10" then + WZ(7 downto 0) <= RegBusC(7 downto 0) + "1"; + WZ(15 downto 8) <= ACC; + end if; + when aZI => + if Inc_WZ = '1' then + A <= std_logic_vector(unsigned(WZ) + 1); + else + A(15 downto 8) <= DI_Reg; + A(7 downto 0) <= WZ(7 downto 0); + if SetWZ = "10" then + WZ(7 downto 0) <= WZ(7 downto 0) + "1"; + WZ(15 downto 8) <= ACC; + end if; + end if; + when others => + A <= std_logic_vector(PC); + end case; + end if; + + if SetWZ = "11" then + WZ <= std_logic_vector(ID16); + end if; + + Save_ALU_r <= Save_ALU; + ALU_Op_r <= ALU_Op; + + if I_CPL = '1' then + -- CPL + ACC <= not ACC; + F(Flag_Y) <= not ACC(5); + F(Flag_H) <= '1'; + F(Flag_X) <= not ACC(3); + F(Flag_N) <= '1'; + end if; + if I_CCF = '1' then + -- CCF + F(Flag_C) <= not F(Flag_C); + F(Flag_Y) <= ACC(5); + F(Flag_H) <= F(Flag_C); + F(Flag_X) <= ACC(3); + F(Flag_N) <= '0'; + end if; + if I_SCF = '1' then + -- SCF + F(Flag_C) <= '1'; + F(Flag_Y) <= ACC(5); + F(Flag_H) <= '0'; + F(Flag_X) <= ACC(3); + F(Flag_N) <= '0'; + end if; + end if; + + if (TState = 2 and I_BTR = '1' and IR(0) = '1') or (TState = 1 and I_BTR = '1' and IR(0) = '0') then + ioq := ('0' & DI_Reg) + ('0' & std_logic_vector(ID16(7 downto 0))); + F(Flag_N) <= DI_Reg(7); + F(Flag_C) <= ioq(8); + F(Flag_H) <= ioq(8); + ioq := (ioq and x"7") xor ('0'&BusA); + F(Flag_P) <= not (ioq(0) xor ioq(1) xor ioq(2) xor ioq(3) xor ioq(4) xor ioq(5) xor ioq(6) xor ioq(7)); + end if; + + if TState = 2 and Wait_n = '1' then + if ISet = "01" and MCycle = "111" then + IR <= DInst; + end if; + if JumpE = '1' then + PC <= unsigned(signed(PC) + signed(DI_Reg)); + WZ <= std_logic_vector(signed(PC) + signed(DI_Reg)); + elsif Inc_PC = '1' then + PC <= PC + 1; + end if; + if BTR_r = '1' then + PC <= PC - 2; + end if; + if RstP = '1' then + WZ <= (others =>'0'); + WZ(5 downto 3) <= IR(5 downto 3); + end if; + end if; + if TState = 3 and MCycle = "110" then + WZ <= std_logic_vector(signed(RegBusC) + signed(DI_Reg)); + end if; + + if MCycle = "011" and TState = 4 and No_BTR = '0' then + if I_BT = '1' or I_BC = '1' then + WZ <= std_logic_vector(PC)-"1"; + end if; + end if; + + if (TState = 2 and Wait_n = '1') or (TState = 4 and MCycle = "001") then + if IncDec_16(2 downto 0) = "111" then + if IncDec_16(3) = '1' then + SP <= SP - 1; + else + SP <= SP + 1; + end if; + end if; + end if; + + if LDSPHL = '1' then + SP <= unsigned(RegBusC); + end if; + if ExchangeAF = '1' then + Ap <= ACC; + ACC <= Ap; + Fp <= F; + F <= Fp; + end if; + if ExchangeRS = '1' then + Alternate <= not Alternate; + end if; + end if; + + if TState = 3 then + if LDZ = '1' then + WZ(7 downto 0) <= DI_Reg; + end if; + if LDW = '1' then + WZ(15 downto 8) <= DI_Reg; + end if; + + if Special_LD(2) = '1' then + case Special_LD(1 downto 0) is + when "00" => + ACC <= I; + F(Flag_P) <= IntE_FF2; + F(Flag_S) <= I(7); + + if I = x"00" then + F(Flag_Z) <= '1'; + else + F(Flag_Z) <= '0'; + end if; + + F(Flag_Y) <= I(5); + F(Flag_H) <= '0'; + F(Flag_X) <= I(3); + F(Flag_N) <= '0'; + + + when "01" => + ACC <= std_logic_vector(R); + F(Flag_P) <= IntE_FF2; + F(Flag_S) <= R(7); + + if R = x"00" then + F(Flag_Z) <= '1'; + else + F(Flag_Z) <= '0'; + end if; + + F(Flag_Y) <= R(5); + F(Flag_H) <= '0'; + F(Flag_X) <= R(3); + F(Flag_N) <= '0'; + + when "10" => + I <= ACC; + when others => + R <= unsigned(ACC); + end case; + end if; + end if; + + if (I_DJNZ = '0' and Save_ALU_r = '1') or ALU_Op_r = "1001" then + if Mode = 3 then + F(6) <= F_Out(6); + F(5) <= F_Out(5); + F(7) <= F_Out(7); + if PreserveC_r = '0' then + F(4) <= F_Out(4); + end if; + else + F(7 downto 1) <= F_Out(7 downto 1); + if PreserveC_r = '0' then + F(Flag_C) <= F_Out(0); + end if; + end if; + end if; + if T_Res = '1' and I_INRC = '1' then + F(Flag_H) <= '0'; + F(Flag_N) <= '0'; + F(Flag_X) <= DI_Reg(3); + F(Flag_Y) <= DI_Reg(5); + if DI_Reg(7 downto 0) = "00000000" then + F(Flag_Z) <= '1'; + else + F(Flag_Z) <= '0'; + end if; + F(Flag_S) <= DI_Reg(7); + F(Flag_P) <= not (DI_Reg(0) xor DI_Reg(1) xor DI_Reg(2) xor DI_Reg(3) xor + DI_Reg(4) xor DI_Reg(5) xor DI_Reg(6) xor DI_Reg(7)); + end if; + + if TState = 1 and Auto_Wait_t1 = '0' then + -- Keep D0 from M3 for RLD/RRD (Sorgelig) + I_RXDD <= I_RLD or I_RRD; + if I_RXDD='0' then + DO <= BusB; + end if; + if I_RLD = '1' then + DO(3 downto 0) <= BusA(3 downto 0); + DO(7 downto 4) <= BusB(3 downto 0); + end if; + if I_RRD = '1' then + DO(3 downto 0) <= BusB(7 downto 4); + DO(7 downto 4) <= BusA(3 downto 0); + end if; + end if; + + if T_Res = '1' then + Read_To_Reg_r(3 downto 0) <= Set_BusA_To; + Read_To_Reg_r(4) <= Read_To_Reg; + if Read_To_Acc = '1' then + Read_To_Reg_r(3 downto 0) <= "0111"; + Read_To_Reg_r(4) <= '1'; + end if; + end if; + + if TState = 1 and I_BT = '1' then + F(Flag_X) <= ALU_Q(3); + F(Flag_Y) <= ALU_Q(1); + F(Flag_H) <= '0'; + F(Flag_N) <= '0'; + end if; + if TState = 1 and I_BC = '1' then + n := ALU_Q - ("0000000" & F_Out(Flag_H)); + F(Flag_X) <= n(3); + F(Flag_Y) <= n(1); + end if; + if I_BC = '1' or I_BT = '1' then + F(Flag_P) <= IncDecZ; + end if; + + if (TState = 1 and Save_ALU_r = '0' and Auto_Wait_t1 = '0') or + (Save_ALU_r = '1' and ALU_OP_r /= "0111") then + case Read_To_Reg_r is + when "10111" => + ACC <= Save_Mux; + when "10110" => + DO <= Save_Mux; + when "11000" => + SP(7 downto 0) <= unsigned(Save_Mux); + when "11001" => + SP(15 downto 8) <= unsigned(Save_Mux); + when "11011" => + F <= Save_Mux; + when others => + end case; + if XYbit_undoc='1' then + DO <= ALU_Q; + end if; + end if; + end if; + end if; + end process; + +--------------------------------------------------------------------------- +-- +-- BC('), DE('), HL('), IX and IY +-- +--------------------------------------------------------------------------- + process (CLK_n) + begin + if rising_edge(CLK_n) then + if ClkEn = '1' then + -- Bus A / Write + RegAddrA_r <= Alternate & Set_BusA_To(2 downto 1); + if XY_Ind = '0' and XY_State /= "00" and Set_BusA_To(2 downto 1) = "10" then + RegAddrA_r <= XY_State(1) & "11"; + end if; + + -- Bus B + RegAddrB_r <= Alternate & Set_BusB_To(2 downto 1); + if XY_Ind = '0' and XY_State /= "00" and Set_BusB_To(2 downto 1) = "10" then + RegAddrB_r <= XY_State(1) & "11"; + end if; + + -- Address from register + RegAddrC <= Alternate & Set_Addr_To(1 downto 0); + -- Jump (HL), LD SP,HL + if (JumpXY = '1' or LDSPHL = '1') then + RegAddrC <= Alternate & "10"; + end if; + if ((JumpXY = '1' or LDSPHL = '1') and XY_State /= "00") or (MCycle = "110") then + RegAddrC <= XY_State(1) & "11"; + end if; + + if I_DJNZ = '1' and Save_ALU_r = '1' and Mode < 2 then + IncDecZ <= F_Out(Flag_Z); + end if; + if (TState = 2 or (TState = 3 and MCycle = "001")) and IncDec_16(2 downto 0) = "100" then + if ID16 = 0 then + IncDecZ <= '0'; + else + IncDecZ <= '1'; + end if; + end if; + + RegBusA_r <= RegBusA; + end if; + end if; + end process; + + RegAddrA <= + -- 16 bit increment/decrement + Alternate & IncDec_16(1 downto 0) when (TState = 2 or + (TState = 3 and MCycle = "001" and IncDec_16(2) = '1')) and XY_State = "00" else + XY_State(1) & "11" when (TState = 2 or + (TState = 3 and MCycle = "001" and IncDec_16(2) = '1')) and IncDec_16(1 downto 0) = "10" else + -- EX HL,DL + Alternate & "10" when ExchangeDH = '1' and TState = 3 else + Alternate & "01" when ExchangeDH = '1' and TState = 4 else + -- Bus A / Write + RegAddrA_r; + + RegAddrB <= + -- EX HL,DL + Alternate & "01" when ExchangeDH = '1' and TState = 3 else + -- Bus B + RegAddrB_r; + + ID16 <= signed(RegBusA) - 1 when IncDec_16(3) = '1' else + signed(RegBusA) + 1; + + process (Save_ALU_r, Auto_Wait_t1, ALU_OP_r, Read_To_Reg_r, + ExchangeDH, IncDec_16, MCycle, TState, Wait_n) + begin + RegWEH <= '0'; + RegWEL <= '0'; + if (TState = 1 and Save_ALU_r = '0' and Auto_Wait_t1 = '0') or + (Save_ALU_r = '1' and ALU_OP_r /= "0111") then + case Read_To_Reg_r is + when "10000" | "10001" | "10010" | "10011" | "10100" | "10101" => + RegWEH <= not Read_To_Reg_r(0); + RegWEL <= Read_To_Reg_r(0); + when others => + end case; + end if; + + if ExchangeDH = '1' and (TState = 3 or TState = 4) then + RegWEH <= '1'; + RegWEL <= '1'; + end if; + + if IncDec_16(2) = '1' and ((TState = 2 and Wait_n = '1' and MCycle /= "001") or (TState = 3 and MCycle = "001")) then + case IncDec_16(1 downto 0) is + when "00" | "01" | "10" => + RegWEH <= '1'; + RegWEL <= '1'; + when others => + end case; + end if; + end process; + + process (Save_Mux, RegBusB, RegBusA_r, ID16, + ExchangeDH, IncDec_16, MCycle, TState, Wait_n) + begin + RegDIH <= Save_Mux; + RegDIL <= Save_Mux; + + if ExchangeDH = '1' and TState = 3 then + RegDIH <= RegBusB(15 downto 8); + RegDIL <= RegBusB(7 downto 0); + end if; + if ExchangeDH = '1' and TState = 4 then + RegDIH <= RegBusA_r(15 downto 8); + RegDIL <= RegBusA_r(7 downto 0); + end if; + + if IncDec_16(2) = '1' and ((TState = 2 and MCycle /= "001") or (TState = 3 and MCycle = "001")) then + RegDIH <= std_logic_vector(ID16(15 downto 8)); + RegDIL <= std_logic_vector(ID16(7 downto 0)); + end if; + end process; + + Regs : work.T80_Reg + port map( + Clk => CLK_n, + CEN => ClkEn, + WEH => RegWEH, + WEL => RegWEL, + AddrA => RegAddrA, + AddrB => RegAddrB, + AddrC => RegAddrC, + DIH => RegDIH, + DIL => RegDIL, + DOAH => RegBusA(15 downto 8), + DOAL => RegBusA(7 downto 0), + DOBH => RegBusB(15 downto 8), + DOBL => RegBusB(7 downto 0), + DOCH => RegBusC(15 downto 8), + DOCL => RegBusC(7 downto 0), + DOR => DOR, + DIRSet => DIRSet, + DIR => DIR(207 downto 80)); + +--------------------------------------------------------------------------- +-- +-- Buses +-- +--------------------------------------------------------------------------- + process (CLK_n) + begin + if rising_edge(CLK_n) then + if ClkEn = '1' then + case Set_BusB_To is + when "0111" => + BusB <= ACC; + when "0000" | "0001" | "0010" | "0011" | "0100" | "0101" => + if Set_BusB_To(0) = '1' then + BusB <= RegBusB(7 downto 0); + else + BusB <= RegBusB(15 downto 8); + end if; + when "0110" => + BusB <= DI_Reg; + when "1000" => + BusB <= std_logic_vector(SP(7 downto 0)); + when "1001" => + BusB <= std_logic_vector(SP(15 downto 8)); + when "1010" => + BusB <= "00000001"; + when "1011" => + BusB <= F; + when "1100" => + BusB <= std_logic_vector(PC(7 downto 0)); + when "1101" => + BusB <= std_logic_vector(PC(15 downto 8)); + when "1110" => + if IR = x"71" and out0 = '1' then + BusB <= "11111111"; + else + BusB <= "00000000"; + end if; + when others => + BusB <= "--------"; + end case; + + case Set_BusA_To is + when "0111" => + BusA <= ACC; + when "0000" | "0001" | "0010" | "0011" | "0100" | "0101" => + if Set_BusA_To(0) = '1' then + BusA <= RegBusA(7 downto 0); + else + BusA <= RegBusA(15 downto 8); + end if; + when "0110" => + BusA <= DI_Reg; + when "1000" => + BusA <= std_logic_vector(SP(7 downto 0)); + when "1001" => + BusA <= std_logic_vector(SP(15 downto 8)); + when "1010" => + BusA <= "00000000"; + when others => + BusA <= "--------"; + end case; + if XYbit_undoc='1' then + BusA <= DI_Reg; + BusB <= DI_Reg; + end if; + end if; + end if; + end process; + +--------------------------------------------------------------------------- +-- +-- Generate external control signals +-- +--------------------------------------------------------------------------- + process (RESET_n,CLK_n) + begin + if RESET_n = '0' then + RFSH_n <= '1'; + elsif rising_edge(CLK_n) then + if DIRSet = '0' and CEN = '1' then + if MCycle = "001" and ((TState = 2 and Wait_n = '1') or TState = 3) then + RFSH_n <= '0'; + else + RFSH_n <= '1'; + end if; + end if; + end if; + end process; + + MC <= std_logic_vector(MCycle); + TS <= std_logic_vector(TState); + DI_Reg <= DI; + HALT_n <= not Halt_FF; + BUSAK_n <= not BusAck; + IntCycle_n <= not IntCycle; + IntE <= IntE_FF1; + IORQ <= IORQ_i; + Stop <= I_DJNZ; + +------------------------------------------------------------------------- +-- +-- Main state machine +-- +------------------------------------------------------------------------- + process (RESET_n, CLK_n) + variable OldNMI_n : std_logic; + begin + if RESET_n = '0' then + MCycle <= "001"; + TState <= "000"; + Pre_XY_F_M <= "000"; + Halt_FF <= '0'; + BusAck <= '0'; + NMICycle <= '0'; + IntCycle <= '0'; + IntE_FF1 <= '0'; + IntE_FF2 <= '0'; + No_BTR <= '0'; + Auto_Wait_t1 <= '0'; + Auto_Wait_t2 <= '0'; + M1_n <= '1'; + BusReq_s <= '0'; + NMI_s <= '0'; + elsif rising_edge(CLK_n) then + + if DIRSet = '1' then + IntE_FF2 <= DIR(211); + IntE_FF1 <= DIR(210); + else + if NMI_n = '0' and OldNMI_n = '1' then + NMI_s <= '1'; + end if; + OldNMI_n := NMI_n; + + if CEN = '1' then + BusReq_s <= not BUSRQ_n; + Auto_Wait_t2 <= Auto_Wait_t1; + if T_Res = '1' then + Auto_Wait_t1 <= '0'; + Auto_Wait_t2 <= '0'; + else + Auto_Wait_t1 <= Auto_Wait or IORQ_i; + end if; + No_BTR <= (I_BT and (not IR(4) or not F(Flag_P))) or + (I_BC and (not IR(4) or F(Flag_Z) or not F(Flag_P))) or + (I_BTR and (not IR(4) or F(Flag_Z))); + if TState = 2 then + if SetEI = '1' then + IntE_FF1 <= '1'; + IntE_FF2 <= '1'; + end if; + if I_RETN = '1' then + IntE_FF1 <= IntE_FF2; + end if; + end if; + if TState = 3 then + if SetDI = '1' then + IntE_FF1 <= '0'; + IntE_FF2 <= '0'; + end if; + end if; + if IntCycle = '1' or NMICycle = '1' then + Halt_FF <= '0'; + end if; + if MCycle = "001" and TState = 2 and Wait_n = '1' then + M1_n <= '1'; + end if; + if BusReq_s = '1' and BusAck = '1' then + else + BusAck <= '0'; + if TState = 2 and Wait_n = '0' then + elsif T_Res = '1' then + if Halt = '1' then + Halt_FF <= '1'; + end if; + if BusReq_s = '1' then + BusAck <= '1'; + else + TState <= "001"; + if NextIs_XY_Fetch = '1' then + MCycle <= "110"; + Pre_XY_F_M <= MCycle; + if IR = "00110110" and Mode = 0 then + Pre_XY_F_M <= "010"; + end if; + elsif (MCycle = "111") or (MCycle = "110" and Mode = 1 and ISet /= "01") then + MCycle <= std_logic_vector(unsigned(Pre_XY_F_M) + 1); + elsif (MCycle = MCycles) or No_BTR = '1' or (MCycle = "010" and I_DJNZ = '1' and IncDecZ = '1') then + M1_n <= '0'; + MCycle <= "001"; + IntCycle <= '0'; + NMICycle <= '0'; + if NMI_s = '1' and Prefix = "00" then + NMI_s <= '0'; + NMICycle <= '1'; + IntE_FF1 <= '0'; + elsif IntE_FF1 = '1' and INT_n='0' and Prefix = "00" and SetEI = '0' then + IntCycle <= '1'; + IntE_FF1 <= '0'; + IntE_FF2 <= '0'; + end if; + else + MCycle <= std_logic_vector(unsigned(MCycle) + 1); + end if; + end if; + else + if (Auto_Wait = '1' and Auto_Wait_t2 = '0') nor + (IOWait = 1 and IORQ_i = '1' and Auto_Wait_t1 = '0') then + TState <= TState + 1; + end if; + end if; + end if; + if TState = 0 then + M1_n <= '0'; + end if; + end if; + end if; + end if; + end process; + + Auto_Wait <= '1' when IntCycle = '1' and MCycle = "001" else '0'; +end; diff --git a/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/T80/T80_ALU.vhd b/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/T80/T80_ALU.vhd new file mode 100644 index 00000000..a9438aed --- /dev/null +++ b/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/T80/T80_ALU.vhd @@ -0,0 +1,376 @@ +-------------------------------------------------------------------------------- +-- **** +-- T80(c) core. Attempt to finish all undocumented features and provide +-- accurate timings. +-- Version 350. +-- Copyright (c) 2018 Sorgelig +-- Test passed: ZEXDOC, ZEXALL, Z80Full(*), Z80memptr +-- (*) Currently only SCF and CCF instructions aren't passed X/Y flags check as +-- correct implementation is still unclear. +-- +-- **** +-- T80(b) core. In an effort to merge and maintain bug fixes .... +-- +-- Ver 301 parity flag is just parity for 8080, also overflow for Z80, by Sean Riddle +-- Ver 300 started tidyup +-- MikeJ March 2005 +-- Latest version from www.fpgaarcade.com (original www.opencores.org) +-- +-- **** +-- Z80 compatible microprocessor core +-- +-- Version : 0247 +-- Copyright (c) 2001-2002 Daniel Wallner (jesus@opencores.org) +-- All rights reserved +-- +-- Redistribution and use in source and synthezised forms, with or without +-- modification, are permitted provided that the following conditions are met: +-- +-- Redistributions of source code must retain the above copyright notice, +-- this list of conditions and the following disclaimer. +-- +-- Redistributions in synthesized form must reproduce the above copyright +-- notice, this list of conditions and the following disclaimer in the +-- documentation and/or other materials provided with the distribution. +-- +-- Neither the name of the author nor the names of other contributors may +-- be used to endorse or promote products derived from this software without +-- specific prior written permission. +-- +-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +-- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +-- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +-- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE +-- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +-- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +-- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +-- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +-- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +-- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +-- POSSIBILITY OF SUCH DAMAGE. +-- +-- Please report bugs to the author, but before you do so, please +-- make sure that this is not a derivative work and that +-- you have the latest version of this file. +-- +-- The latest version of this file can be found at: +-- http://www.opencores.org/cvsweb.shtml/t80/ +-- +-- Limitations : +-- +-- File history : +-- +-- 0214 : Fixed mostly flags, only the block instructions now fail the zex regression test +-- 0238 : Fixed zero flag for 16 bit SBC and ADC +-- 0240 : Added GB operations +-- 0242 : Cleanup +-- 0247 : Cleanup +-- + +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.numeric_std.all; + +entity T80_ALU is + generic( + Mode : integer := 0; + Flag_C : integer := 0; + Flag_N : integer := 1; + Flag_P : integer := 2; + Flag_X : integer := 3; + Flag_H : integer := 4; + Flag_Y : integer := 5; + Flag_Z : integer := 6; + Flag_S : integer := 7 + ); + port( + Arith16 : in std_logic; + Z16 : in std_logic; + WZ : in std_logic_vector(15 downto 0); + XY_State : in std_logic_vector(1 downto 0); + ALU_Op : in std_logic_vector(3 downto 0); + IR : in std_logic_vector(5 downto 0); + ISet : in std_logic_vector(1 downto 0); + BusA : in std_logic_vector(7 downto 0); + BusB : in std_logic_vector(7 downto 0); + F_In : in std_logic_vector(7 downto 0); + Q : out std_logic_vector(7 downto 0); + F_Out : out std_logic_vector(7 downto 0) + ); +end T80_ALU; + +architecture rtl of T80_ALU is + + procedure AddSub(A : std_logic_vector; + B : std_logic_vector; + Sub : std_logic; + Carry_In : std_logic; + signal Res : out std_logic_vector; + signal Carry : out std_logic) is + + variable B_i : unsigned(A'length - 1 downto 0); + variable Res_i : unsigned(A'length + 1 downto 0); + begin + if Sub = '1' then + B_i := not unsigned(B); + else + B_i := unsigned(B); + end if; + + Res_i := unsigned("0" & A & Carry_In) + unsigned("0" & B_i & "1"); + Carry <= Res_i(A'length + 1); + Res <= std_logic_vector(Res_i(A'length downto 1)); + end; + + -- AddSub variables (temporary signals) + signal UseCarry : std_logic; + signal Carry7_v : std_logic; + signal Overflow_v : std_logic; + signal HalfCarry_v : std_logic; + signal Carry_v : std_logic; + signal Q_v : std_logic_vector(7 downto 0); + + signal BitMask : std_logic_vector(7 downto 0); + +begin + + with IR(5 downto 3) select BitMask <= "00000001" when "000", + "00000010" when "001", + "00000100" when "010", + "00001000" when "011", + "00010000" when "100", + "00100000" when "101", + "01000000" when "110", + "10000000" when others; + + UseCarry <= not ALU_Op(2) and ALU_Op(0); + AddSub(BusA(3 downto 0), BusB(3 downto 0), ALU_Op(1), ALU_Op(1) xor (UseCarry and F_In(Flag_C)), Q_v(3 downto 0), HalfCarry_v); + AddSub(BusA(6 downto 4), BusB(6 downto 4), ALU_Op(1), HalfCarry_v, Q_v(6 downto 4), Carry7_v); + AddSub(BusA(7 downto 7), BusB(7 downto 7), ALU_Op(1), Carry7_v, Q_v(7 downto 7), Carry_v); + + -- bug fix - parity flag is just parity for 8080, also overflow for Z80 + process (Carry_v, Carry7_v, Q_v) + begin + if(Mode=2) then + OverFlow_v <= not (Q_v(0) xor Q_v(1) xor Q_v(2) xor Q_v(3) xor + Q_v(4) xor Q_v(5) xor Q_v(6) xor Q_v(7)); else + OverFlow_v <= Carry_v xor Carry7_v; + end if; + end process; + + process (Arith16, ALU_OP, F_In, BusA, BusB, IR, Q_v, Carry_v, HalfCarry_v, OverFlow_v, BitMask, ISet, Z16, WZ, XY_State) + variable Q_t : std_logic_vector(7 downto 0); + variable DAA_Q : unsigned(8 downto 0); + begin + Q_t := "--------"; + F_Out <= F_In; + DAA_Q := "---------"; + case ALU_Op is + when "0000" | "0001" | "0010" | "0011" | "0100" | "0101" | "0110" | "0111" => + F_Out(Flag_N) <= '0'; + F_Out(Flag_C) <= '0'; + case ALU_OP(2 downto 0) is + when "000" | "001" => -- ADD, ADC + Q_t := Q_v; + F_Out(Flag_C) <= Carry_v; + F_Out(Flag_H) <= HalfCarry_v; + F_Out(Flag_P) <= OverFlow_v; + when "010" | "011" | "111" => -- SUB, SBC, CP + Q_t := Q_v; + F_Out(Flag_N) <= '1'; + F_Out(Flag_C) <= not Carry_v; + F_Out(Flag_H) <= not HalfCarry_v; + F_Out(Flag_P) <= OverFlow_v; + when "100" => -- AND + Q_t(7 downto 0) := BusA and BusB; + F_Out(Flag_H) <= '1'; + when "101" => -- XOR + Q_t(7 downto 0) := BusA xor BusB; + F_Out(Flag_H) <= '0'; + when others => -- OR "110" + Q_t(7 downto 0) := BusA or BusB; + F_Out(Flag_H) <= '0'; + end case; + if ALU_Op(2 downto 0) = "111" then -- CP + F_Out(Flag_X) <= BusB(3); + F_Out(Flag_Y) <= BusB(5); + else + F_Out(Flag_X) <= Q_t(3); + F_Out(Flag_Y) <= Q_t(5); + end if; + if Q_t(7 downto 0) = "00000000" then + F_Out(Flag_Z) <= '1'; + if Z16 = '1' then + F_Out(Flag_Z) <= F_In(Flag_Z); -- 16 bit ADC,SBC + end if; + else + F_Out(Flag_Z) <= '0'; + end if; + F_Out(Flag_S) <= Q_t(7); + case ALU_Op(2 downto 0) is + when "000" | "001" | "010" | "011" | "111" => -- ADD, ADC, SUB, SBC, CP + when others => + F_Out(Flag_P) <= not (Q_t(0) xor Q_t(1) xor Q_t(2) xor Q_t(3) xor + Q_t(4) xor Q_t(5) xor Q_t(6) xor Q_t(7)); + end case; + if Arith16 = '1' then + F_Out(Flag_S) <= F_In(Flag_S); + F_Out(Flag_Z) <= F_In(Flag_Z); + F_Out(Flag_P) <= F_In(Flag_P); + end if; + when "1100" => + -- DAA + F_Out(Flag_H) <= F_In(Flag_H); + F_Out(Flag_C) <= F_In(Flag_C); + DAA_Q(7 downto 0) := unsigned(BusA); + DAA_Q(8) := '0'; + if F_In(Flag_N) = '0' then + -- After addition + -- Alow > 9 or H = 1 + if DAA_Q(3 downto 0) > 9 or F_In(Flag_H) = '1' then + if (DAA_Q(3 downto 0) > 9) then + F_Out(Flag_H) <= '1'; + else + F_Out(Flag_H) <= '0'; + end if; + DAA_Q := DAA_Q + 6; + end if; + -- new Ahigh > 9 or C = 1 + if DAA_Q(8 downto 4) > 9 or F_In(Flag_C) = '1' then + DAA_Q := DAA_Q + 96; -- 0x60 + end if; + else + -- After subtraction + if DAA_Q(3 downto 0) > 9 or F_In(Flag_H) = '1' then + if DAA_Q(3 downto 0) > 5 then + F_Out(Flag_H) <= '0'; + end if; + DAA_Q(7 downto 0) := DAA_Q(7 downto 0) - 6; + end if; + if unsigned(BusA) > 153 or F_In(Flag_C) = '1' then + DAA_Q := DAA_Q - 352; -- 0x160 + end if; + end if; + F_Out(Flag_X) <= DAA_Q(3); + F_Out(Flag_Y) <= DAA_Q(5); + F_Out(Flag_C) <= F_In(Flag_C) or DAA_Q(8); + Q_t := std_logic_vector(DAA_Q(7 downto 0)); + if DAA_Q(7 downto 0) = "00000000" then + F_Out(Flag_Z) <= '1'; + else + F_Out(Flag_Z) <= '0'; + end if; + F_Out(Flag_S) <= DAA_Q(7); + F_Out(Flag_P) <= not (DAA_Q(0) xor DAA_Q(1) xor DAA_Q(2) xor DAA_Q(3) xor + DAA_Q(4) xor DAA_Q(5) xor DAA_Q(6) xor DAA_Q(7)); + when "1101" | "1110" => + -- RLD, RRD + Q_t(7 downto 4) := BusA(7 downto 4); + if ALU_Op(0) = '1' then + Q_t(3 downto 0) := BusB(7 downto 4); + else + Q_t(3 downto 0) := BusB(3 downto 0); + end if; + F_Out(Flag_H) <= '0'; + F_Out(Flag_N) <= '0'; + F_Out(Flag_X) <= Q_t(3); + F_Out(Flag_Y) <= Q_t(5); + if Q_t(7 downto 0) = "00000000" then + F_Out(Flag_Z) <= '1'; + else + F_Out(Flag_Z) <= '0'; + end if; + F_Out(Flag_S) <= Q_t(7); + F_Out(Flag_P) <= not (Q_t(0) xor Q_t(1) xor Q_t(2) xor Q_t(3) xor + Q_t(4) xor Q_t(5) xor Q_t(6) xor Q_t(7)); + when "1001" => + -- BIT + Q_t(7 downto 0) := BusB and BitMask; + F_Out(Flag_S) <= Q_t(7); + if Q_t(7 downto 0) = "00000000" then + F_Out(Flag_Z) <= '1'; + F_Out(Flag_P) <= '1'; + else + F_Out(Flag_Z) <= '0'; + F_Out(Flag_P) <= '0'; + end if; + F_Out(Flag_H) <= '1'; + F_Out(Flag_N) <= '0'; + if IR(2 downto 0) = "110" or XY_State /= "00" then + F_Out(Flag_X) <= WZ(11); + F_Out(Flag_Y) <= WZ(13); + else + F_Out(Flag_X) <= BusB(3); + F_Out(Flag_Y) <= BusB(5); + end if; + when "1010" => + -- SET + Q_t(7 downto 0) := BusB or BitMask; + when "1011" => + -- RES + Q_t(7 downto 0) := BusB and not BitMask; + when "1000" => + -- ROT + case IR(5 downto 3) is + when "000" => -- RLC + Q_t(7 downto 1) := BusA(6 downto 0); + Q_t(0) := BusA(7); + F_Out(Flag_C) <= BusA(7); + when "010" => -- RL + Q_t(7 downto 1) := BusA(6 downto 0); + Q_t(0) := F_In(Flag_C); + F_Out(Flag_C) <= BusA(7); + when "001" => -- RRC + Q_t(6 downto 0) := BusA(7 downto 1); + Q_t(7) := BusA(0); + F_Out(Flag_C) <= BusA(0); + when "011" => -- RR + Q_t(6 downto 0) := BusA(7 downto 1); + Q_t(7) := F_In(Flag_C); + F_Out(Flag_C) <= BusA(0); + when "100" => -- SLA + Q_t(7 downto 1) := BusA(6 downto 0); + Q_t(0) := '0'; + F_Out(Flag_C) <= BusA(7); + when "110" => -- SLL (Undocumented) / SWAP + if Mode = 3 then + Q_t(7 downto 4) := BusA(3 downto 0); + Q_t(3 downto 0) := BusA(7 downto 4); + F_Out(Flag_C) <= '0'; + else + Q_t(7 downto 1) := BusA(6 downto 0); + Q_t(0) := '1'; + F_Out(Flag_C) <= BusA(7); + end if; + when "101" => -- SRA + Q_t(6 downto 0) := BusA(7 downto 1); + Q_t(7) := BusA(7); + F_Out(Flag_C) <= BusA(0); + when others => -- SRL + Q_t(6 downto 0) := BusA(7 downto 1); + Q_t(7) := '0'; + F_Out(Flag_C) <= BusA(0); + end case; + F_Out(Flag_H) <= '0'; + F_Out(Flag_N) <= '0'; + F_Out(Flag_X) <= Q_t(3); + F_Out(Flag_Y) <= Q_t(5); + F_Out(Flag_S) <= Q_t(7); + if Q_t(7 downto 0) = "00000000" then + F_Out(Flag_Z) <= '1'; + else + F_Out(Flag_Z) <= '0'; + end if; + F_Out(Flag_P) <= not (Q_t(0) xor Q_t(1) xor Q_t(2) xor Q_t(3) xor + Q_t(4) xor Q_t(5) xor Q_t(6) xor Q_t(7)); + if ISet = "00" then + F_Out(Flag_P) <= F_In(Flag_P); + F_Out(Flag_S) <= F_In(Flag_S); + F_Out(Flag_Z) <= F_In(Flag_Z); + end if; + when others => + null; + end case; + Q <= Q_t; + end process; +end; diff --git a/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/T80/T80_MCode.vhd b/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/T80/T80_MCode.vhd new file mode 100644 index 00000000..f5312bd6 --- /dev/null +++ b/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/T80/T80_MCode.vhd @@ -0,0 +1,2035 @@ +-------------------------------------------------------------------------------- +-- **** +-- T80(c) core. Attempt to finish all undocumented features and provide +-- accurate timings. +-- Version 350. +-- Copyright (c) 2018 Sorgelig +-- Test passed: ZEXDOC, ZEXALL, Z80Full(*), Z80memptr +-- (*) Currently only SCF and CCF instructions aren't passed X/Y flags check as +-- correct implementation is still unclear. +-- +-- **** +-- T80(b) core. In an effort to merge and maintain bug fixes .... +-- +-- Ver 303 add undocumented DDCB and FDCB opcodes by TobiFlex 20.04.2010 +-- Ver 300 started tidyup +-- MikeJ March 2005 +-- Latest version from www.fpgaarcade.com (original www.opencores.org) +-- +-- **** +-- Z80 compatible microprocessor core +-- +-- Version : 0242 +-- Copyright (c) 2001-2002 Daniel Wallner (jesus@opencores.org) +-- All rights reserved +-- +-- Redistribution and use in source and synthezised forms, with or without +-- modification, are permitted provided that the following conditions are met: +-- +-- Redistributions of source code must retain the above copyright notice, +-- this list of conditions and the following disclaimer. +-- +-- Redistributions in synthesized form must reproduce the above copyright +-- notice, this list of conditions and the following disclaimer in the +-- documentation and/or other materials provided with the distribution. +-- +-- Neither the name of the author nor the names of other contributors may +-- be used to endorse or promote products derived from this software without +-- specific prior written permission. +-- +-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +-- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +-- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +-- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE +-- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +-- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +-- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +-- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +-- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +-- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +-- POSSIBILITY OF SUCH DAMAGE. +-- +-- Please report bugs to the author, but before you do so, please +-- make sure that this is not a derivative work and that +-- you have the latest version of this file. +-- +-- The latest version of this file can be found at: +-- http://www.opencores.org/cvsweb.shtml/t80/ +-- +-- Limitations : +-- +-- File history : +-- +-- 0208 : First complete release +-- 0211 : Fixed IM 1 +-- 0214 : Fixed mostly flags, only the block instructions now fail the zex regression test +-- 0235 : Added IM 2 fix by Mike Johnson +-- 0238 : Added NoRead signal +-- 0238b: Fixed instruction timing for POP and DJNZ +-- 0240 : Added (IX/IY+d) states, removed op-codes from mode 2 and added all remaining mode 3 op-codes +-- 0240mj1 fix for HL inc/dec for INI, IND, INIR, INDR, OUTI, OUTD, OTIR, OTDR +-- 0242 : Fixed I/O instruction timing, cleanup +-- + +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.numeric_std.all; + +entity T80_MCode is + generic( + Mode : integer := 0; + Flag_C : integer := 0; + Flag_N : integer := 1; + Flag_P : integer := 2; + Flag_X : integer := 3; + Flag_H : integer := 4; + Flag_Y : integer := 5; + Flag_Z : integer := 6; + Flag_S : integer := 7 + ); + port( + IR : in std_logic_vector(7 downto 0); + ISet : in std_logic_vector(1 downto 0); + MCycle : in std_logic_vector(2 downto 0); + F : in std_logic_vector(7 downto 0); + NMICycle : in std_logic; + IntCycle : in std_logic; + XY_State : in std_logic_vector(1 downto 0); + MCycles : out std_logic_vector(2 downto 0); + TStates : out std_logic_vector(2 downto 0); + Prefix : out std_logic_vector(1 downto 0); -- None,CB,ED,DD/FD + Inc_PC : out std_logic; + Inc_WZ : out std_logic; + IncDec_16 : out std_logic_vector(3 downto 0); -- BC,DE,HL,SP 0 is inc + Read_To_Reg : out std_logic; + Read_To_Acc : out std_logic; + Set_BusA_To : out std_logic_vector(3 downto 0); -- B,C,D,E,H,L,DI/DB,A,SP(L),SP(M),0,F + Set_BusB_To : out std_logic_vector(3 downto 0); -- B,C,D,E,H,L,DI,A,SP(L),SP(M),1,F,PC(L),PC(M),0 + ALU_Op : out std_logic_vector(3 downto 0); + -- ADD, ADC, SUB, SBC, AND, XOR, OR, CP, ROT, BIT, SET, RES, DAA, RLD, RRD, None + Save_ALU : out std_logic; + PreserveC : out std_logic; + Arith16 : out std_logic; + Set_Addr_To : out std_logic_vector(2 downto 0); -- aNone,aXY,aIOA,aSP,aBC,aDE,aZI + IORQ : out std_logic; + Jump : out std_logic; + JumpE : out std_logic; + JumpXY : out std_logic; + Call : out std_logic; + RstP : out std_logic; + LDZ : out std_logic; + LDW : out std_logic; + LDSPHL : out std_logic; + Special_LD : out std_logic_vector(2 downto 0); -- A,I;A,R;I,A;R,A;None + ExchangeDH : out std_logic; + ExchangeRp : out std_logic; + ExchangeAF : out std_logic; + ExchangeRS : out std_logic; + I_DJNZ : out std_logic; + I_CPL : out std_logic; + I_CCF : out std_logic; + I_SCF : out std_logic; + I_RETN : out std_logic; + I_BT : out std_logic; + I_BC : out std_logic; + I_BTR : out std_logic; + I_RLD : out std_logic; + I_RRD : out std_logic; + I_INRC : out std_logic; + SetWZ : out std_logic_vector(1 downto 0); + SetDI : out std_logic; + SetEI : out std_logic; + IMode : out std_logic_vector(1 downto 0); + Halt : out std_logic; + NoRead : out std_logic; + Write : out std_logic; + XYbit_undoc : out std_logic + ); +end T80_MCode; + +architecture rtl of T80_MCode is + + constant aNone : std_logic_vector(2 downto 0) := "111"; + constant aBC : std_logic_vector(2 downto 0) := "000"; + constant aDE : std_logic_vector(2 downto 0) := "001"; + constant aXY : std_logic_vector(2 downto 0) := "010"; + constant aIOA : std_logic_vector(2 downto 0) := "100"; + constant aSP : std_logic_vector(2 downto 0) := "101"; + constant aZI : std_logic_vector(2 downto 0) := "110"; + + function is_cc_true( + F : std_logic_vector(7 downto 0); + cc : bit_vector(2 downto 0) + ) return boolean is + begin + if Mode = 3 then + case cc is + when "000" => return F(Flag_S) = '0'; -- NZ + when "001" => return F(Flag_S) = '1'; -- Z + when "010" => return F(Flag_H) = '0'; -- NC + when "011" => return F(Flag_H) = '1'; -- C + when "100" => return false; + when "101" => return false; + when "110" => return false; + when "111" => return false; + end case; + else + case cc is + when "000" => return F(Flag_Z) = '0'; -- NZ + when "001" => return F(Flag_Z) = '1'; -- Z + when "010" => return F(Flag_C) = '0'; -- NC + when "011" => return F(Flag_C) = '1'; -- C + when "100" => return F(Flag_P) = '0'; -- PO + when "101" => return F(Flag_P) = '1'; -- PE + when "110" => return F(Flag_S) = '0'; -- P + when "111" => return F(Flag_S) = '1'; -- M + end case; + end if; + end; + +begin + + process (IR, ISet, MCycle, F, NMICycle, IntCycle, XY_State) + variable DDD : std_logic_vector(2 downto 0); + variable SSS : std_logic_vector(2 downto 0); + variable DPair : std_logic_vector(1 downto 0); + variable IRB : bit_vector(7 downto 0); + begin + DDD := IR(5 downto 3); + SSS := IR(2 downto 0); + DPair := IR(5 downto 4); + IRB := to_bitvector(IR); + + MCycles <= "001"; + if MCycle = "001" then + TStates <= "100"; + else + TStates <= "011"; + end if; + Prefix <= "00"; + Inc_PC <= '0'; + Inc_WZ <= '0'; + IncDec_16 <= "0000"; + Read_To_Acc <= '0'; + Read_To_Reg <= '0'; + Set_BusB_To <= "0000"; + Set_BusA_To <= "0000"; + ALU_Op <= "0" & IR(5 downto 3); + Save_ALU <= '0'; + PreserveC <= '0'; + Arith16 <= '0'; + IORQ <= '0'; + Set_Addr_To <= aNone; + Jump <= '0'; + JumpE <= '0'; + JumpXY <= '0'; + Call <= '0'; + RstP <= '0'; + LDZ <= '0'; + LDW <= '0'; + LDSPHL <= '0'; + Special_LD <= "000"; + ExchangeDH <= '0'; + ExchangeRp <= '0'; + ExchangeAF <= '0'; + ExchangeRS <= '0'; + I_DJNZ <= '0'; + I_CPL <= '0'; + I_CCF <= '0'; + I_SCF <= '0'; + I_RETN <= '0'; + I_BT <= '0'; + I_BC <= '0'; + I_BTR <= '0'; + I_RLD <= '0'; + I_RRD <= '0'; + I_INRC <= '0'; + SetDI <= '0'; + SetEI <= '0'; + IMode <= "11"; + Halt <= '0'; + NoRead <= '0'; + Write <= '0'; + XYbit_undoc <= '0'; + SetWZ <= "00"; + + case ISet is + when "00" => + +------------------------------------------------------------------------------ +-- +-- Unprefixed instructions +-- +------------------------------------------------------------------------------ + + case IRB is +-- 8 BIT LOAD GROUP + when "01000000"|"01000001"|"01000010"|"01000011"|"01000100"|"01000101"|"01000111" + |"01001000"|"01001001"|"01001010"|"01001011"|"01001100"|"01001101"|"01001111" + |"01010000"|"01010001"|"01010010"|"01010011"|"01010100"|"01010101"|"01010111" + |"01011000"|"01011001"|"01011010"|"01011011"|"01011100"|"01011101"|"01011111" + |"01100000"|"01100001"|"01100010"|"01100011"|"01100100"|"01100101"|"01100111" + |"01101000"|"01101001"|"01101010"|"01101011"|"01101100"|"01101101"|"01101111" + |"01111000"|"01111001"|"01111010"|"01111011"|"01111100"|"01111101"|"01111111" => + -- LD r,r' + Set_BusB_To(2 downto 0) <= SSS; + ExchangeRp <= '1'; + Set_BusA_To(2 downto 0) <= DDD; + Read_To_Reg <= '1'; + when "00000110"|"00001110"|"00010110"|"00011110"|"00100110"|"00101110"|"00111110" => + -- LD r,n + MCycles <= "010"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + Set_BusA_To(2 downto 0) <= DDD; + Read_To_Reg <= '1'; + when others => null; + end case; + when "01000110"|"01001110"|"01010110"|"01011110"|"01100110"|"01101110"|"01111110" => + -- LD r,(HL) + MCycles <= "010"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aXY; + when 2 => + Set_BusA_To(2 downto 0) <= DDD; + Read_To_Reg <= '1'; + when others => null; + end case; + when "01110000"|"01110001"|"01110010"|"01110011"|"01110100"|"01110101"|"01110111" => + -- LD (HL),r + MCycles <= "010"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aXY; + Set_BusB_To(2 downto 0) <= SSS; + Set_BusB_To(3) <= '0'; + when 2 => + Write <= '1'; + when others => null; + end case; + when "00110110" => + -- LD (HL),n + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + Set_Addr_To <= aXY; + Set_BusB_To(2 downto 0) <= SSS; + Set_BusB_To(3) <= '0'; + when 3 => + Write <= '1'; + when others => null; + end case; + when "00001010" => + -- LD A,(BC) + MCycles <= "010"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aBC; + when 2 => + Read_To_Acc <= '1'; + when others => null; + end case; + when "00011010" => + -- LD A,(DE) + MCycles <= "010"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aDE; + when 2 => + Read_To_Acc <= '1'; + when others => null; + end case; + when "00111010" => + if Mode = 3 then + -- LDD A,(HL) + MCycles <= "010"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aXY; + when 2 => + Read_To_Acc <= '1'; + IncDec_16 <= "1110"; + when others => null; + end case; + else + -- LD A,(nn) + MCycles <= "100"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + LDZ <= '1'; + when 3 => + Set_Addr_To <= aZI; + Inc_PC <= '1'; + when 4 => + Read_To_Acc <= '1'; + when others => null; + end case; + end if; + when "00000010" => + -- LD (BC),A + MCycles <= "010"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aBC; + Set_BusB_To <= "0111"; + SetWZ <= "10"; + when 2 => + Write <= '1'; + when others => null; + end case; + when "00010010" => + -- LD (DE),A + MCycles <= "010"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aDE; + Set_BusB_To <= "0111"; + SetWZ <= "10"; + when 2 => + Write <= '1'; + when others => null; + end case; + when "00110010" => + if Mode = 3 then + -- LDD (HL),A + MCycles <= "010"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aXY; + Set_BusB_To <= "0111"; + when 2 => + Write <= '1'; + IncDec_16 <= "1110"; + when others => null; + end case; + else + -- LD (nn),A + MCycles <= "100"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + LDZ <= '1'; + when 3 => + Set_Addr_To <= aZI; + SetWZ <= "10"; + Inc_PC <= '1'; + Set_BusB_To <= "0111"; + when 4 => + Write <= '1'; + when others => null; + end case; + end if; + +-- 16 BIT LOAD GROUP + when "00000001"|"00010001"|"00100001"|"00110001" => + -- LD dd,nn + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + Read_To_Reg <= '1'; + if DPAIR = "11" then + Set_BusA_To(3 downto 0) <= "1000"; + else + Set_BusA_To(2 downto 1) <= DPAIR; + Set_BusA_To(0) <= '1'; + end if; + when 3 => + Inc_PC <= '1'; + Read_To_Reg <= '1'; + if DPAIR = "11" then + Set_BusA_To(3 downto 0) <= "1001"; + else + Set_BusA_To(2 downto 1) <= DPAIR; + Set_BusA_To(0) <= '0'; + end if; + when others => null; + end case; + when "00101010" => + if Mode = 3 then + -- LDI A,(HL) + MCycles <= "010"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aXY; + when 2 => + Read_To_Acc <= '1'; + IncDec_16 <= "0110"; + when others => null; + end case; + else + -- LD HL,(nn) + MCycles <= "101"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + LDZ <= '1'; + when 3 => + Set_Addr_To <= aZI; + Inc_PC <= '1'; + LDW <= '1'; + when 4 => + Set_BusA_To(2 downto 0) <= "101"; -- L + Read_To_Reg <= '1'; + Inc_WZ <= '1'; + Set_Addr_To <= aZI; + when 5 => + Set_BusA_To(2 downto 0) <= "100"; -- H + Read_To_Reg <= '1'; + when others => null; + end case; + end if; + when "00100010" => + if Mode = 3 then + -- LDI (HL),A + MCycles <= "010"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aXY; + Set_BusB_To <= "0111"; + when 2 => + Write <= '1'; + IncDec_16 <= "0110"; + when others => null; + end case; + else + -- LD (nn),HL + MCycles <= "101"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + LDZ <= '1'; + when 3 => + Set_Addr_To <= aZI; + Inc_PC <= '1'; + LDW <= '1'; + Set_BusB_To <= "0101"; -- L + when 4 => + Inc_WZ <= '1'; + Set_Addr_To <= aZI; + Write <= '1'; + Set_BusB_To <= "0100"; -- H + when 5 => + Write <= '1'; + when others => null; + end case; + end if; + when "11111001" => + -- LD SP,HL + TStates <= "110"; + LDSPHL <= '1'; + when "11000101"|"11010101"|"11100101"|"11110101" => + -- PUSH qq + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 1 => + TStates <= "101"; + IncDec_16 <= "1111"; + Set_Addr_TO <= aSP; + if DPAIR = "11" then + Set_BusB_To <= "0111"; + else + Set_BusB_To(2 downto 1) <= DPAIR; + Set_BusB_To(0) <= '0'; + Set_BusB_To(3) <= '0'; + end if; + when 2 => + IncDec_16 <= "1111"; + Set_Addr_To <= aSP; + if DPAIR = "11" then + Set_BusB_To <= "1011"; + else + Set_BusB_To(2 downto 1) <= DPAIR; + Set_BusB_To(0) <= '1'; + Set_BusB_To(3) <= '0'; + end if; + Write <= '1'; + when 3 => + Write <= '1'; + when others => null; + end case; + when "11000001"|"11010001"|"11100001"|"11110001" => + -- POP qq + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aSP; + when 2 => + IncDec_16 <= "0111"; + Set_Addr_To <= aSP; + Read_To_Reg <= '1'; + if DPAIR = "11" then + Set_BusA_To(3 downto 0) <= "1011"; + else + Set_BusA_To(2 downto 1) <= DPAIR; + Set_BusA_To(0) <= '1'; + end if; + when 3 => + IncDec_16 <= "0111"; + Read_To_Reg <= '1'; + if DPAIR = "11" then + Set_BusA_To(3 downto 0) <= "0111"; + else + Set_BusA_To(2 downto 1) <= DPAIR; + Set_BusA_To(0) <= '0'; + end if; + when others => null; + end case; + +-- EXCHANGE, BLOCK TRANSFER AND SEARCH GROUP + when "11101011" => + if Mode /= 3 then + -- EX DE,HL + ExchangeDH <= '1'; + end if; + when "00001000" => + if Mode = 3 then + -- LD (nn),SP + MCycles <= "101"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + LDZ <= '1'; + when 3 => + Set_Addr_To <= aZI; + Inc_PC <= '1'; + LDW <= '1'; + Set_BusB_To <= "1000"; + when 4 => + Inc_WZ <= '1'; + Set_Addr_To <= aZI; + Write <= '1'; + Set_BusB_To <= "1001"; + when 5 => + Write <= '1'; + when others => null; + end case; + elsif Mode < 2 then + -- EX AF,AF' + ExchangeAF <= '1'; + end if; + when "11011001" => + if Mode = 3 then + -- RETI + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_TO <= aSP; + when 2 => + IncDec_16 <= "0111"; + Set_Addr_To <= aSP; + LDZ <= '1'; + when 3 => + Jump <= '1'; + IncDec_16 <= "0111"; + I_RETN <= '1'; + SetEI <= '1'; + when others => null; + end case; + elsif Mode < 2 then + -- EXX + ExchangeRS <= '1'; + end if; + when "11100011" => + if Mode /= 3 then + -- EX (SP),HL + MCycles <= "101"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aSP; + when 2 => + Read_To_Reg <= '1'; + Set_BusA_To <= "0101"; + Set_BusB_To <= "0101"; + Set_Addr_To <= aSP; + LDZ <= '1'; + when 3 => + IncDec_16 <= "0111"; + Set_Addr_To <= aSP; + TStates <= "100"; + Write <= '1'; + when 4 => + Read_To_Reg <= '1'; + Set_BusA_To <= "0100"; + Set_BusB_To <= "0100"; + Set_Addr_To <= aSP; + LDW <= '1'; + when 5 => + IncDec_16 <= "1111"; + TStates <= "101"; + Write <= '1'; + when others => null; + end case; + end if; + +-- 8 BIT ARITHMETIC AND LOGICAL GROUP + when "10000000"|"10000001"|"10000010"|"10000011"|"10000100"|"10000101"|"10000111" + |"10001000"|"10001001"|"10001010"|"10001011"|"10001100"|"10001101"|"10001111" + |"10010000"|"10010001"|"10010010"|"10010011"|"10010100"|"10010101"|"10010111" + |"10011000"|"10011001"|"10011010"|"10011011"|"10011100"|"10011101"|"10011111" + |"10100000"|"10100001"|"10100010"|"10100011"|"10100100"|"10100101"|"10100111" + |"10101000"|"10101001"|"10101010"|"10101011"|"10101100"|"10101101"|"10101111" + |"10110000"|"10110001"|"10110010"|"10110011"|"10110100"|"10110101"|"10110111" + |"10111000"|"10111001"|"10111010"|"10111011"|"10111100"|"10111101"|"10111111" => + -- ADD A,r + -- ADC A,r + -- SUB A,r + -- SBC A,r + -- AND A,r + -- OR A,r + -- XOR A,r + -- CP A,r + Set_BusB_To(2 downto 0) <= SSS; + Set_BusA_To(2 downto 0) <= "111"; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + when "10000110"|"10001110"|"10010110"|"10011110"|"10100110"|"10101110"|"10110110"|"10111110" => + -- ADD A,(HL) + -- ADC A,(HL) + -- SUB A,(HL) + -- SBC A,(HL) + -- AND A,(HL) + -- OR A,(HL) + -- XOR A,(HL) + -- CP A,(HL) + MCycles <= "010"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aXY; + when 2 => + Read_To_Reg <= '1'; + Save_ALU <= '1'; + Set_BusB_To(2 downto 0) <= SSS; + Set_BusA_To(2 downto 0) <= "111"; + when others => null; + end case; + when "11000110"|"11001110"|"11010110"|"11011110"|"11100110"|"11101110"|"11110110"|"11111110" => + -- ADD A,n + -- ADC A,n + -- SUB A,n + -- SBC A,n + -- AND A,n + -- OR A,n + -- XOR A,n + -- CP A,n + MCycles <= "010"; + if MCycle = "010" then + Inc_PC <= '1'; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + Set_BusB_To(2 downto 0) <= SSS; + Set_BusA_To(2 downto 0) <= "111"; + end if; + when "00000100"|"00001100"|"00010100"|"00011100"|"00100100"|"00101100"|"00111100" => + -- INC r + Set_BusB_To <= "1010"; + Set_BusA_To(2 downto 0) <= DDD; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + PreserveC <= '1'; + ALU_Op <= "0000"; + when "00110100" => + -- INC (HL) + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aXY; + when 2 => + TStates <= "100"; + Set_Addr_To <= aXY; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + PreserveC <= '1'; + ALU_Op <= "0000"; + Set_BusB_To <= "1010"; + Set_BusA_To(2 downto 0) <= DDD; + when 3 => + Write <= '1'; + when others => null; + end case; + when "00000101"|"00001101"|"00010101"|"00011101"|"00100101"|"00101101"|"00111101" => + -- DEC r + Set_BusB_To <= "1010"; + Set_BusA_To(2 downto 0) <= DDD; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + PreserveC <= '1'; + ALU_Op <= "0010"; + when "00110101" => + -- DEC (HL) + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aXY; + when 2 => + TStates <= "100"; + Set_Addr_To <= aXY; + ALU_Op <= "0010"; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + PreserveC <= '1'; + Set_BusB_To <= "1010"; + Set_BusA_To(2 downto 0) <= DDD; + when 3 => + Write <= '1'; + when others => null; + end case; + +-- GENERAL PURPOSE ARITHMETIC AND CPU CONTROL GROUPS + when "00100111" => + -- DAA + Set_BusA_To(2 downto 0) <= "111"; + Read_To_Reg <= '1'; + ALU_Op <= "1100"; + Save_ALU <= '1'; + when "00101111" => + -- CPL + I_CPL <= '1'; + when "00111111" => + -- CCF + I_CCF <= '1'; + when "00110111" => + -- SCF + I_SCF <= '1'; + when "00000000" => + if NMICycle = '1' then + -- NMI + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 1 => + TStates <= "101"; + IncDec_16 <= "1111"; + Set_Addr_To <= aSP; + Set_BusB_To <= "1101"; + when 2 => + Write <= '1'; + IncDec_16 <= "1111"; + Set_Addr_To <= aSP; + Set_BusB_To <= "1100"; + when 3 => + Write <= '1'; + when others => null; + end case; + elsif IntCycle = '1' then + -- INT (IM 2) + MCycles <= "101"; + case to_integer(unsigned(MCycle)) is + when 1 => + LDZ <= '1'; + TStates <= "101"; + IncDec_16 <= "1111"; + Set_Addr_To <= aSP; + Set_BusB_To <= "1101"; + when 2 => + --TStates <= "100"; + Write <= '1'; + IncDec_16 <= "1111"; + Set_Addr_To <= aSP; + Set_BusB_To <= "1100"; + when 3 => + --TStates <= "100"; + Write <= '1'; + when 4 => + Inc_PC <= '1'; + LDZ <= '1'; + when 5 => + Jump <= '1'; + when others => null; + end case; + else + -- NOP + end if; + when "01110110" => + -- HALT + Halt <= '1'; + when "11110011" => + -- DI + SetDI <= '1'; + when "11111011" => + -- EI + SetEI <= '1'; + +-- 16 BIT ARITHMETIC GROUP + when "00001001"|"00011001"|"00101001"|"00111001" => + -- ADD HL,ss + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 2 => + NoRead <= '1'; + ALU_Op <= "0000"; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + Set_BusA_To(2 downto 0) <= "101"; + case to_integer(unsigned(IR(5 downto 4))) is + when 0|1|2 => + Set_BusB_To(2 downto 1) <= IR(5 downto 4); + Set_BusB_To(0) <= '1'; + when others => + Set_BusB_To <= "1000"; + end case; + TStates <= "100"; + Arith16 <= '1'; + SetWZ <= "11"; + when 3 => + NoRead <= '1'; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + ALU_Op <= "0001"; + Set_BusA_To(2 downto 0) <= "100"; + case to_integer(unsigned(IR(5 downto 4))) is + when 0|1|2 => + Set_BusB_To(2 downto 1) <= IR(5 downto 4); + when others => + Set_BusB_To <= "1001"; + end case; + Arith16 <= '1'; + when others => + end case; + when "00000011"|"00010011"|"00100011"|"00110011" => + -- INC ss + TStates <= "110"; + IncDec_16(3 downto 2) <= "01"; + IncDec_16(1 downto 0) <= DPair; + when "00001011"|"00011011"|"00101011"|"00111011" => + -- DEC ss + TStates <= "110"; + IncDec_16(3 downto 2) <= "11"; + IncDec_16(1 downto 0) <= DPair; + +-- ROTATE AND SHIFT GROUP + when "00000111" + -- RLCA + |"00010111" + -- RLA + |"00001111" + -- RRCA + |"00011111" => + -- RRA + Set_BusA_To(2 downto 0) <= "111"; + ALU_Op <= "1000"; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + +-- JUMP GROUP + when "11000011" => + -- JP nn + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + LDZ <= '1'; + when 3 => + Inc_PC <= '1'; + Jump <= '1'; + LDW <= '1'; + when others => null; + end case; + when "11000010"|"11001010"|"11010010"|"11011010"|"11100010"|"11101010"|"11110010"|"11111010" => + if IR(5) = '1' and Mode = 3 then + case IRB(4 downto 3) is + when "00" => + -- LD ($FF00+C),A + MCycles <= "010"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aBC; + Set_BusB_To <= "0111"; + when 2 => + Write <= '1'; + IORQ <= '1'; + when others => + end case; + when "01" => + -- LD (nn),A + MCycles <= "100"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + LDZ <= '1'; + when 3 => + Set_Addr_To <= aZI; + Inc_PC <= '1'; + Set_BusB_To <= "0111"; + when 4 => + Write <= '1'; + when others => null; + end case; + when "10" => + -- LD A,($FF00+C) + MCycles <= "010"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aBC; + when 2 => + Read_To_Acc <= '1'; + IORQ <= '1'; + when others => + end case; + when "11" => + -- LD A,(nn) + MCycles <= "100"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + LDZ <= '1'; + when 3 => + Set_Addr_To <= aZI; + Inc_PC <= '1'; + when 4 => + Read_To_Acc <= '1'; + when others => null; + end case; + end case; + else + -- JP cc,nn + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + LDZ <= '1'; + when 3 => + LDW <= '1'; + Inc_PC <= '1'; + if is_cc_true(F, to_bitvector(IR(5 downto 3))) then + Jump <= '1'; + end if; + when others => null; + end case; + end if; + when "00011000" => + if Mode /= 2 then + -- JR e + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + when 3 => + NoRead <= '1'; + JumpE <= '1'; + TStates <= "101"; + when others => null; + end case; + end if; + when "00111000" => + if Mode /= 2 then + -- JR C,e + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + if F(Flag_C) = '0' then + MCycles <= "010"; + end if; + when 3 => + NoRead <= '1'; + JumpE <= '1'; + TStates <= "101"; + when others => null; + end case; + end if; + when "00110000" => + if Mode /= 2 then + -- JR NC,e + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + if F(Flag_C) = '1' then + MCycles <= "010"; + end if; + when 3 => + NoRead <= '1'; + JumpE <= '1'; + TStates <= "101"; + when others => null; + end case; + end if; + when "00101000" => + if Mode /= 2 then + -- JR Z,e + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + if F(Flag_Z) = '0' then + MCycles <= "010"; + end if; + when 3 => + NoRead <= '1'; + JumpE <= '1'; + TStates <= "101"; + when others => null; + end case; + end if; + when "00100000" => + if Mode /= 2 then + -- JR NZ,e + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + if F(Flag_Z) = '1' then + MCycles <= "010"; + end if; + when 3 => + NoRead <= '1'; + JumpE <= '1'; + TStates <= "101"; + when others => null; + end case; + end if; + when "11101001" => + -- JP (HL) + JumpXY <= '1'; + when "00010000" => + if Mode = 3 then + I_DJNZ <= '1'; + elsif Mode < 2 then + -- DJNZ,e + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 1 => + TStates <= "101"; + I_DJNZ <= '1'; + Set_BusB_To <= "1010"; + Set_BusA_To(2 downto 0) <= "000"; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + ALU_Op <= "0010"; + when 2 => + I_DJNZ <= '1'; + Inc_PC <= '1'; + when 3 => + NoRead <= '1'; + JumpE <= '1'; + TStates <= "101"; + when others => null; + end case; + end if; + +-- CALL AND RETURN GROUP + when "11001101" => + -- CALL nn + MCycles <= "101"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + LDZ <= '1'; + when 3 => + IncDec_16 <= "1111"; + Inc_PC <= '1'; + TStates <= "100"; + Set_Addr_To <= aSP; + LDW <= '1'; + Set_BusB_To <= "1101"; + when 4 => + Write <= '1'; + IncDec_16 <= "1111"; + Set_Addr_To <= aSP; + Set_BusB_To <= "1100"; + when 5 => + Write <= '1'; + Call <= '1'; + when others => null; + end case; + when "11000100"|"11001100"|"11010100"|"11011100"|"11100100"|"11101100"|"11110100"|"11111100" => + if IR(5) = '0' or Mode /= 3 then + -- CALL cc,nn + MCycles <= "101"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + LDZ <= '1'; + when 3 => + Inc_PC <= '1'; + LDW <= '1'; + if is_cc_true(F, to_bitvector(IR(5 downto 3))) then + IncDec_16 <= "1111"; + Set_Addr_TO <= aSP; + TStates <= "100"; + Set_BusB_To <= "1101"; + else + MCycles <= "011"; + end if; + when 4 => + Write <= '1'; + IncDec_16 <= "1111"; + Set_Addr_To <= aSP; + Set_BusB_To <= "1100"; + when 5 => + Write <= '1'; + Call <= '1'; + when others => null; + end case; + end if; + when "11001001" => + -- RET + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 1 => + --TStates <= "101"; + Set_Addr_TO <= aSP; + when 2 => + IncDec_16 <= "0111"; + Set_Addr_To <= aSP; + LDZ <= '1'; + when 3 => + Jump <= '1'; + IncDec_16 <= "0111"; + when others => null; + end case; + when "11000000"|"11001000"|"11010000"|"11011000"|"11100000"|"11101000"|"11110000"|"11111000" => + if IR(5) = '1' and Mode = 3 then + case IRB(4 downto 3) is + when "00" => + -- LD ($FF00+nn),A + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + Set_Addr_To <= aIOA; + Set_BusB_To <= "0111"; + when 3 => + Write <= '1'; + when others => null; + end case; + when "01" => + -- ADD SP,n + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 2 => + ALU_Op <= "0000"; + Inc_PC <= '1'; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + Set_BusA_To <= "1000"; + Set_BusB_To <= "0110"; + when 3 => + NoRead <= '1'; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + ALU_Op <= "0001"; + Set_BusA_To <= "1001"; + Set_BusB_To <= "1110"; -- Incorrect unsigned !!!!!!!!!!!!!!!!!!!!! + when others => + end case; + when "10" => + -- LD A,($FF00+nn) + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + Set_Addr_To <= aIOA; + when 3 => + Read_To_Acc <= '1'; + when others => null; + end case; + when "11" => + -- LD HL,SP+n -- Not correct !!!!!!!!!!!!!!!!!!! + MCycles <= "101"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + LDZ <= '1'; + when 3 => + Set_Addr_To <= aZI; + Inc_PC <= '1'; + LDW <= '1'; + when 4 => + Set_BusA_To(2 downto 0) <= "101"; -- L + Read_To_Reg <= '1'; + Inc_WZ <= '1'; + Set_Addr_To <= aZI; + when 5 => + Set_BusA_To(2 downto 0) <= "100"; -- H + Read_To_Reg <= '1'; + when others => null; + end case; + end case; + else + -- RET cc + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 1 => + if is_cc_true(F, to_bitvector(IR(5 downto 3))) then + Set_Addr_TO <= aSP; + else + MCycles <= "001"; + end if; + TStates <= "101"; + when 2 => + IncDec_16 <= "0111"; + Set_Addr_To <= aSP; + LDZ <= '1'; + when 3 => + Jump <= '1'; + IncDec_16 <= "0111"; + when others => null; + end case; + end if; + when "11000111"|"11001111"|"11010111"|"11011111"|"11100111"|"11101111"|"11110111"|"11111111" => + -- RST p + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 1 => + TStates <= "101"; + IncDec_16 <= "1111"; + Set_Addr_To <= aSP; + Set_BusB_To <= "1101"; + when 2 => + Write <= '1'; + IncDec_16 <= "1111"; + Set_Addr_To <= aSP; + Set_BusB_To <= "1100"; + when 3 => + Write <= '1'; + RstP <= '1'; + when others => null; + end case; + +-- INPUT AND OUTPUT GROUP + when "11011011" => + if Mode /= 3 then + -- IN A,(n) + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + Set_Addr_To <= aIOA; + when 3 => + Read_To_Acc <= '1'; + IORQ <= '1'; + when others => null; + end case; + end if; + when "11010011" => + if Mode /= 3 then + -- OUT (n),A + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + Set_Addr_To <= aIOA; + Set_BusB_To <= "0111"; + when 3 => + Write <= '1'; + IORQ <= '1'; + when others => null; + end case; + end if; + +------------------------------------------------------------------------------ +------------------------------------------------------------------------------ +-- MULTIBYTE INSTRUCTIONS +------------------------------------------------------------------------------ +------------------------------------------------------------------------------ + + when "11001011" => + if Mode /= 2 then + Prefix <= "01"; + end if; + + when "11101101" => + if Mode < 2 then + Prefix <= "10"; + end if; + + when "11011101"|"11111101" => + if Mode < 2 then + Prefix <= "11"; + end if; + + end case; + + when "01" => + +------------------------------------------------------------------------------ +-- +-- CB prefixed instructions +-- +------------------------------------------------------------------------------ + + Set_BusA_To(2 downto 0) <= IR(2 downto 0); + Set_BusB_To(2 downto 0) <= IR(2 downto 0); + + case IRB is + when "00000000"|"00000001"|"00000010"|"00000011"|"00000100"|"00000101"|"00000111" + |"00010000"|"00010001"|"00010010"|"00010011"|"00010100"|"00010101"|"00010111" + |"00001000"|"00001001"|"00001010"|"00001011"|"00001100"|"00001101"|"00001111" + |"00011000"|"00011001"|"00011010"|"00011011"|"00011100"|"00011101"|"00011111" + |"00100000"|"00100001"|"00100010"|"00100011"|"00100100"|"00100101"|"00100111" + |"00101000"|"00101001"|"00101010"|"00101011"|"00101100"|"00101101"|"00101111" + |"00110000"|"00110001"|"00110010"|"00110011"|"00110100"|"00110101"|"00110111" + |"00111000"|"00111001"|"00111010"|"00111011"|"00111100"|"00111101"|"00111111" => + -- RLC r + -- RL r + -- RRC r + -- RR r + -- SLA r + -- SRA r + -- SRL r + -- SLL r (Undocumented) / SWAP r + if XY_State="00" then + if MCycle = "001" then + ALU_Op <= "1000"; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + end if; + else + -- R/S (IX+d),Reg, undocumented + MCycles <= "011"; + XYbit_undoc <= '1'; + case to_integer(unsigned(MCycle)) is + when 1 | 7=> + Set_Addr_To <= aXY; + when 2 => + ALU_Op <= "1000"; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + Set_Addr_To <= aXY; + TStates <= "100"; + when 3 => + Write <= '1'; + when others => null; + end case; + end if; + + when "00000110"|"00010110"|"00001110"|"00011110"|"00101110"|"00111110"|"00100110"|"00110110" => + -- RLC (HL) + -- RL (HL) + -- RRC (HL) + -- RR (HL) + -- SRA (HL) + -- SRL (HL) + -- SLA (HL) + -- SLL (HL) (Undocumented) / SWAP (HL) + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 1 | 7 => + Set_Addr_To <= aXY; + when 2 => + ALU_Op <= "1000"; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + Set_Addr_To <= aXY; + TStates <= "100"; + when 3 => + Write <= '1'; + when others => + end case; + when "01000000"|"01000001"|"01000010"|"01000011"|"01000100"|"01000101"|"01000111" + |"01001000"|"01001001"|"01001010"|"01001011"|"01001100"|"01001101"|"01001111" + |"01010000"|"01010001"|"01010010"|"01010011"|"01010100"|"01010101"|"01010111" + |"01011000"|"01011001"|"01011010"|"01011011"|"01011100"|"01011101"|"01011111" + |"01100000"|"01100001"|"01100010"|"01100011"|"01100100"|"01100101"|"01100111" + |"01101000"|"01101001"|"01101010"|"01101011"|"01101100"|"01101101"|"01101111" + |"01110000"|"01110001"|"01110010"|"01110011"|"01110100"|"01110101"|"01110111" + |"01111000"|"01111001"|"01111010"|"01111011"|"01111100"|"01111101"|"01111111" => + -- BIT b,r + if XY_State="00" then + if MCycle = "001" then + Set_BusB_To(2 downto 0) <= IR(2 downto 0); + ALU_Op <= "1001"; + end if; + else + -- BIT b,(IX+d), undocumented + MCycles <= "010"; + XYbit_undoc <= '1'; + case to_integer(unsigned(MCycle)) is + when 1 | 7=> + Set_Addr_To <= aXY; + when 2 => + ALU_Op <= "1001"; + TStates <= "100"; + when others => null; + end case; + end if; + + when "01000110"|"01001110"|"01010110"|"01011110"|"01100110"|"01101110"|"01110110"|"01111110" => + -- BIT b,(HL) + MCycles <= "010"; + case to_integer(unsigned(MCycle)) is + when 1 | 7 => + Set_Addr_To <= aXY; + when 2 => + ALU_Op <= "1001"; + TStates <= "100"; + when others => null; + end case; + when "11000000"|"11000001"|"11000010"|"11000011"|"11000100"|"11000101"|"11000111" + |"11001000"|"11001001"|"11001010"|"11001011"|"11001100"|"11001101"|"11001111" + |"11010000"|"11010001"|"11010010"|"11010011"|"11010100"|"11010101"|"11010111" + |"11011000"|"11011001"|"11011010"|"11011011"|"11011100"|"11011101"|"11011111" + |"11100000"|"11100001"|"11100010"|"11100011"|"11100100"|"11100101"|"11100111" + |"11101000"|"11101001"|"11101010"|"11101011"|"11101100"|"11101101"|"11101111" + |"11110000"|"11110001"|"11110010"|"11110011"|"11110100"|"11110101"|"11110111" + |"11111000"|"11111001"|"11111010"|"11111011"|"11111100"|"11111101"|"11111111" => + -- SET b,r + if XY_State="00" then + if MCycle = "001" then + ALU_Op <= "1010"; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + end if; + else + -- SET b,(IX+d),Reg, undocumented + MCycles <= "011"; + XYbit_undoc <= '1'; + case to_integer(unsigned(MCycle)) is + when 1 | 7=> + Set_Addr_To <= aXY; + when 2 => + ALU_Op <= "1010"; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + Set_Addr_To <= aXY; + TStates <= "100"; + when 3 => + Write <= '1'; + when others => null; + end case; + end if; + + when "11000110"|"11001110"|"11010110"|"11011110"|"11100110"|"11101110"|"11110110"|"11111110" => + -- SET b,(HL) + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 1 | 7 => + Set_Addr_To <= aXY; + when 2 => + ALU_Op <= "1010"; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + Set_Addr_To <= aXY; + TStates <= "100"; + when 3 => + Write <= '1'; + when others => null; + end case; + when "10000000"|"10000001"|"10000010"|"10000011"|"10000100"|"10000101"|"10000111" + |"10001000"|"10001001"|"10001010"|"10001011"|"10001100"|"10001101"|"10001111" + |"10010000"|"10010001"|"10010010"|"10010011"|"10010100"|"10010101"|"10010111" + |"10011000"|"10011001"|"10011010"|"10011011"|"10011100"|"10011101"|"10011111" + |"10100000"|"10100001"|"10100010"|"10100011"|"10100100"|"10100101"|"10100111" + |"10101000"|"10101001"|"10101010"|"10101011"|"10101100"|"10101101"|"10101111" + |"10110000"|"10110001"|"10110010"|"10110011"|"10110100"|"10110101"|"10110111" + |"10111000"|"10111001"|"10111010"|"10111011"|"10111100"|"10111101"|"10111111" => + -- RES b,r + if XY_State="00" then + if MCycle = "001" then + ALU_Op <= "1011"; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + end if; + else + -- RES b,(IX+d),Reg, undocumented + MCycles <= "011"; + XYbit_undoc <= '1'; + case to_integer(unsigned(MCycle)) is + when 1 | 7=> + Set_Addr_To <= aXY; + when 2 => + ALU_Op <= "1011"; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + Set_Addr_To <= aXY; + TStates <= "100"; + when 3 => + Write <= '1'; + when others => null; + end case; + end if; + + when "10000110"|"10001110"|"10010110"|"10011110"|"10100110"|"10101110"|"10110110"|"10111110" => + -- RES b,(HL) + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 1 | 7 => + Set_Addr_To <= aXY; + when 2 => + ALU_Op <= "1011"; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + Set_Addr_To <= aXY; + TStates <= "100"; + when 3 => + Write <= '1'; + when others => null; + end case; + end case; + + when others => + +------------------------------------------------------------------------------ +-- +-- ED prefixed instructions +-- +------------------------------------------------------------------------------ + + case IRB is + when "00000000"|"00000001"|"00000010"|"00000011"|"00000100"|"00000101"|"00000110"|"00000111" + |"00001000"|"00001001"|"00001010"|"00001011"|"00001100"|"00001101"|"00001110"|"00001111" + |"00010000"|"00010001"|"00010010"|"00010011"|"00010100"|"00010101"|"00010110"|"00010111" + |"00011000"|"00011001"|"00011010"|"00011011"|"00011100"|"00011101"|"00011110"|"00011111" + |"00100000"|"00100001"|"00100010"|"00100011"|"00100100"|"00100101"|"00100110"|"00100111" + |"00101000"|"00101001"|"00101010"|"00101011"|"00101100"|"00101101"|"00101110"|"00101111" + |"00110000"|"00110001"|"00110010"|"00110011"|"00110100"|"00110101"|"00110110"|"00110111" + |"00111000"|"00111001"|"00111010"|"00111011"|"00111100"|"00111101"|"00111110"|"00111111" + + + |"10000000"|"10000001"|"10000010"|"10000011"|"10000100"|"10000101"|"10000110"|"10000111" + |"10001000"|"10001001"|"10001010"|"10001011"|"10001100"|"10001101"|"10001110"|"10001111" + |"10010000"|"10010001"|"10010010"|"10010011"|"10010100"|"10010101"|"10010110"|"10010111" + |"10011000"|"10011001"|"10011010"|"10011011"|"10011100"|"10011101"|"10011110"|"10011111" + | "10100100"|"10100101"|"10100110"|"10100111" + | "10101100"|"10101101"|"10101110"|"10101111" + | "10110100"|"10110101"|"10110110"|"10110111" + | "10111100"|"10111101"|"10111110"|"10111111" + |"11000000"|"11000001"|"11000010"|"11000011"|"11000100"|"11000101"|"11000110"|"11000111" + |"11001000"|"11001001"|"11001010"|"11001011"|"11001100"|"11001101"|"11001110"|"11001111" + |"11010000"|"11010001"|"11010010"|"11010011"|"11010100"|"11010101"|"11010110"|"11010111" + |"11011000"|"11011001"|"11011010"|"11011011"|"11011100"|"11011101"|"11011110"|"11011111" + |"11100000"|"11100001"|"11100010"|"11100011"|"11100100"|"11100101"|"11100110"|"11100111" + |"11101000"|"11101001"|"11101010"|"11101011"|"11101100"|"11101101"|"11101110"|"11101111" + |"11110000"|"11110001"|"11110010"|"11110011"|"11110100"|"11110101"|"11110110"|"11110111" + |"11111000"|"11111001"|"11111010"|"11111011"|"11111100"|"11111101"|"11111110"|"11111111" => + null; -- NOP, undocumented + when "01111110"|"01111111" => + -- NOP, undocumented + null; +-- 8 BIT LOAD GROUP + when "01010111" => + -- LD A,I + Special_LD <= "100"; + TStates <= "101"; + when "01011111" => + -- LD A,R + Special_LD <= "101"; + TStates <= "101"; + when "01000111" => + -- LD I,A + Special_LD <= "110"; + TStates <= "101"; + when "01001111" => + -- LD R,A + Special_LD <= "111"; + TStates <= "101"; +-- 16 BIT LOAD GROUP + when "01001011"|"01011011"|"01101011"|"01111011" => + -- LD dd,(nn) + MCycles <= "101"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + LDZ <= '1'; + when 3 => + Set_Addr_To <= aZI; + Inc_PC <= '1'; + LDW <= '1'; + when 4 => + Read_To_Reg <= '1'; + if IR(5 downto 4) = "11" then + Set_BusA_To <= "1000"; + else + Set_BusA_To(2 downto 1) <= IR(5 downto 4); + Set_BusA_To(0) <= '1'; + end if; + Inc_WZ <= '1'; + Set_Addr_To <= aZI; + when 5 => + Read_To_Reg <= '1'; + if IR(5 downto 4) = "11" then + Set_BusA_To <= "1001"; + else + Set_BusA_To(2 downto 1) <= IR(5 downto 4); + Set_BusA_To(0) <= '0'; + end if; + when others => null; + end case; + when "01000011"|"01010011"|"01100011"|"01110011" => + -- LD (nn),dd + MCycles <= "101"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + LDZ <= '1'; + when 3 => + Set_Addr_To <= aZI; + Inc_PC <= '1'; + LDW <= '1'; + if IR(5 downto 4) = "11" then + Set_BusB_To <= "1000"; + else + Set_BusB_To(2 downto 1) <= IR(5 downto 4); + Set_BusB_To(0) <= '1'; + Set_BusB_To(3) <= '0'; + end if; + when 4 => + Inc_WZ <= '1'; + Set_Addr_To <= aZI; + Write <= '1'; + if IR(5 downto 4) = "11" then + Set_BusB_To <= "1001"; + else + Set_BusB_To(2 downto 1) <= IR(5 downto 4); + Set_BusB_To(0) <= '0'; + Set_BusB_To(3) <= '0'; + end if; + when 5 => + Write <= '1'; + when others => null; + end case; + when "10100000" | "10101000" | "10110000" | "10111000" => + -- LDI, LDD, LDIR, LDDR + MCycles <= "100"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aXY; + IncDec_16 <= "1100"; -- BC + when 2 => + Set_BusB_To <= "0110"; + Set_BusA_To(2 downto 0) <= "111"; + ALU_Op <= "0000"; + Set_Addr_To <= aDE; + if IR(3) = '0' then + IncDec_16 <= "0110"; -- IX + else + IncDec_16 <= "1110"; + end if; + when 3 => + I_BT <= '1'; + TStates <= "101"; + Write <= '1'; + if IR(3) = '0' then + IncDec_16 <= "0101"; -- DE + else + IncDec_16 <= "1101"; + end if; + when 4 => + NoRead <= '1'; + TStates <= "101"; + when others => null; + end case; + when "10100001" | "10101001" | "10110001" | "10111001" => + -- CPI, CPD, CPIR, CPDR + MCycles <= "100"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aXY; + IncDec_16 <= "1100"; -- BC + when 2 => + Set_BusB_To <= "0110"; + Set_BusA_To(2 downto 0) <= "111"; + ALU_Op <= "0111"; + Save_ALU <= '1'; + PreserveC <= '1'; + if IR(3) = '0' then + IncDec_16 <= "0110"; + else + IncDec_16 <= "1110"; + end if; + when 3 => + NoRead <= '1'; + I_BC <= '1'; + TStates <= "101"; + when 4 => + NoRead <= '1'; + TStates <= "101"; + when others => null; + end case; + when "01000100"|"01001100"|"01010100"|"01011100"|"01100100"|"01101100"|"01110100"|"01111100" => + -- NEG + Alu_OP <= "0010"; + Set_BusB_To <= "0111"; + Set_BusA_To <= "1010"; + Read_To_Acc <= '1'; + Save_ALU <= '1'; + when "01000110"|"01001110"|"01100110"|"01101110" => + -- IM 0 + IMode <= "00"; + when "01010110"|"01110110" => + -- IM 1 + IMode <= "01"; + when "01011110"|"01110111" => + -- IM 2 + IMode <= "10"; +-- 16 bit arithmetic + when "01001010"|"01011010"|"01101010"|"01111010" => + -- ADC HL,ss + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 2 => + NoRead <= '1'; + ALU_Op <= "0001"; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + Set_BusA_To(2 downto 0) <= "101"; + case to_integer(unsigned(IR(5 downto 4))) is + when 0|1|2 => + Set_BusB_To(2 downto 1) <= IR(5 downto 4); + Set_BusB_To(0) <= '1'; + when others => + Set_BusB_To <= "1000"; + end case; + TStates <= "100"; + SetWZ <= "11"; + when 3 => + NoRead <= '1'; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + ALU_Op <= "0001"; + Set_BusA_To(2 downto 0) <= "100"; + case to_integer(unsigned(IR(5 downto 4))) is + when 0|1|2 => + Set_BusB_To(2 downto 1) <= IR(5 downto 4); + Set_BusB_To(0) <= '0'; + when others => + Set_BusB_To <= "1001"; + end case; + when others => + end case; + when "01000010"|"01010010"|"01100010"|"01110010" => + -- SBC HL,ss + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 2 => + NoRead <= '1'; + ALU_Op <= "0011"; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + Set_BusA_To(2 downto 0) <= "101"; + case to_integer(unsigned(IR(5 downto 4))) is + when 0|1|2 => + Set_BusB_To(2 downto 1) <= IR(5 downto 4); + Set_BusB_To(0) <= '1'; + when others => + Set_BusB_To <= "1000"; + end case; + TStates <= "100"; + SetWZ <= "11"; + when 3 => + NoRead <= '1'; + ALU_Op <= "0011"; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + Set_BusA_To(2 downto 0) <= "100"; + case to_integer(unsigned(IR(5 downto 4))) is + when 0|1|2 => + Set_BusB_To(2 downto 1) <= IR(5 downto 4); + when others => + Set_BusB_To <= "1001"; + end case; + when others => + end case; + when "01101111" => + -- RLD -- Read in M2, not M3! fixed by Sorgelig + MCycles <= "100"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aXY; + when 2 => + Read_To_Reg <= '1'; + Set_BusB_To(2 downto 0) <= "110"; + Set_BusA_To(2 downto 0) <= "111"; + ALU_Op <= "1101"; + Save_ALU <= '1'; + when 3 => + TStates <= "100"; + I_RLD <= '1'; + NoRead <= '1'; + Set_Addr_To <= aXY; + when 4 => + Write <= '1'; + when others => + end case; + when "01100111" => + -- RRD -- Read in M2, not M3! fixed by Sorgelig + MCycles <= "100"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aXY; + when 2 => + Read_To_Reg <= '1'; + Set_BusB_To(2 downto 0) <= "110"; + Set_BusA_To(2 downto 0) <= "111"; + ALU_Op <= "1110"; + Save_ALU <= '1'; + when 3 => + TStates <= "100"; + I_RRD <= '1'; + NoRead <= '1'; + Set_Addr_To <= aXY; + when 4 => + Write <= '1'; + when others => + end case; + when "01000101"|"01001101"|"01010101"|"01011101"|"01100101"|"01101101"|"01110101"|"01111101" => + -- RETI/RETN + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_TO <= aSP; + when 2 => + IncDec_16 <= "0111"; + Set_Addr_To <= aSP; + LDZ <= '1'; + when 3 => + Jump <= '1'; + IncDec_16 <= "0111"; + LDW <= '1'; + I_RETN <= '1'; + when others => null; + end case; + when "01000000"|"01001000"|"01010000"|"01011000"|"01100000"|"01101000"|"01110000"|"01111000" => + -- IN r,(C) + MCycles <= "010"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aBC; + SetWZ <= "01"; + when 2 => + IORQ <= '1'; + if IR(5 downto 3) /= "110" then + Read_To_Reg <= '1'; + Set_BusA_To(2 downto 0) <= IR(5 downto 3); + end if; + I_INRC <= '1'; + when others => + end case; + when "01000001"|"01001001"|"01010001"|"01011001"|"01100001"|"01101001"|"01110001"|"01111001" => + -- OUT (C),r + -- OUT (C),0 + MCycles <= "010"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aBC; + SetWZ <= "01"; + Set_BusB_To(2 downto 0) <= IR(5 downto 3); + if IR(5 downto 3) = "110" then + Set_BusB_To(3) <= '1'; + end if; + when 2 => + Write <= '1'; + IORQ <= '1'; + when others => + end case; + when "10100010" | "10101010" | "10110010" | "10111010" => + -- INI, IND, INIR, INDR + MCycles <= "100"; + case to_integer(unsigned(MCycle)) is + when 1 => + TStates <= "101"; + Set_Addr_To <= aBC; + Set_BusB_To <= "1010"; + Set_BusA_To <= "0000"; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + ALU_Op <= "0010"; + SetWZ <= "11"; + IncDec_16(3) <= IR(3); + when 2 => + IORQ <= '1'; + Set_BusB_To <= "0110"; + Set_Addr_To <= aXY; + when 3 => + if IR(3) = '0' then + IncDec_16 <= "0110"; + else + IncDec_16 <= "1110"; + end if; + Write <= '1'; + I_BTR <= '1'; + when 4 => + NoRead <= '1'; + TStates <= "101"; + when others => null; + end case; + when "10100011" | "10101011" | "10110011" | "10111011" => + -- OUTI, OUTD, OTIR, OTDR + MCycles <= "100"; + case to_integer(unsigned(MCycle)) is + when 1 => + TStates <= "101"; + Set_Addr_To <= aXY; + Set_BusB_To <= "1010"; + Set_BusA_To <= "0000"; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + ALU_Op <= "0010"; + when 2 => + Set_BusB_To <= "0110"; + Set_Addr_To <= aBC; + SetWZ <= "11"; + IncDec_16(3) <= IR(3); + when 3 => + if IR(3) = '0' then + IncDec_16 <= "0110"; + else + IncDec_16 <= "1110"; + end if; + IORQ <= '1'; + Write <= '1'; + I_BTR <= '1'; + when 4 => + NoRead <= '1'; + TStates <= "101"; + when others => null; + end case; + end case; + + end case; + + if Mode = 1 then + if MCycle = "001" then +-- TStates <= "100"; + else + TStates <= "011"; + end if; + end if; + + if Mode = 3 then + if MCycle = "001" then +-- TStates <= "100"; + else + TStates <= "100"; + end if; + end if; + + if Mode < 2 then + if MCycle = "110" then + Inc_PC <= '1'; + if Mode = 1 then + Set_Addr_To <= aXY; + TStates <= "100"; + Set_BusB_To(2 downto 0) <= SSS; + Set_BusB_To(3) <= '0'; + end if; + if IRB = "00110110" or IRB = "11001011" then + Set_Addr_To <= aNone; + end if; + end if; + if MCycle = "111" then + if Mode = 0 then + TStates <= "101"; + end if; + if ISet /= "01" then + Set_Addr_To <= aXY; + end if; + Set_BusB_To(2 downto 0) <= SSS; + Set_BusB_To(3) <= '0'; + if IRB = "00110110" or ISet = "01" then + -- LD (HL),n + Inc_PC <= '1'; + else + NoRead <= '1'; + end if; + end if; + end if; + + end process; + +end; diff --git a/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/T80/T80_Reg.vhd b/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/T80/T80_Reg.vhd new file mode 100644 index 00000000..ea526225 --- /dev/null +++ b/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/T80/T80_Reg.vhd @@ -0,0 +1,152 @@ +-------------------------------------------------------------------------------- +-- **** +-- T80(c) core. Attempt to finish all undocumented features and provide +-- accurate timings. +-- Version 350. +-- Copyright (c) 2018 Sorgelig +-- Test passed: ZEXDOC, ZEXALL, Z80Full(*), Z80memptr +-- (*) Currently only SCF and CCF instructions aren't passed X/Y flags check as +-- correct implementation is still unclear. +-- +-- **** +-- T80(b) core. In an effort to merge and maintain bug fixes .... +-- +-- +-- Ver 300 started tidyup +-- MikeJ March 2005 +-- Latest version from www.fpgaarcade.com (original www.opencores.org) +-- +-- **** +-- +-- T80 Registers, technology independent +-- +-- Version : 0244 +-- +-- Copyright (c) 2002 Daniel Wallner (jesus@opencores.org) +-- +-- All rights reserved +-- +-- Redistribution and use in source and synthezised forms, with or without +-- modification, are permitted provided that the following conditions are met: +-- +-- Redistributions of source code must retain the above copyright notice, +-- this list of conditions and the following disclaimer. +-- +-- Redistributions in synthesized form must reproduce the above copyright +-- notice, this list of conditions and the following disclaimer in the +-- documentation and/or other materials provided with the distribution. +-- +-- Neither the name of the author nor the names of other contributors may +-- be used to endorse or promote products derived from this software without +-- specific prior written permission. +-- +-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +-- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +-- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +-- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE +-- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +-- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +-- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +-- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +-- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +-- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +-- POSSIBILITY OF SUCH DAMAGE. +-- +-- Please report bugs to the author, but before you do so, please +-- make sure that this is not a derivative work and that +-- you have the latest version of this file. +-- +-- The latest version of this file can be found at: +-- http://www.opencores.org/cvsweb.shtml/t51/ +-- +-- Limitations : +-- +-- File history : +-- +-- 0242 : Initial release +-- +-- 0244 : Changed to single register file +-- + +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.numeric_std.all; + +entity T80_Reg is + port( + Clk : in std_logic; + CEN : in std_logic; + WEH : in std_logic; + WEL : in std_logic; + AddrA : in std_logic_vector(2 downto 0); + AddrB : in std_logic_vector(2 downto 0); + AddrC : in std_logic_vector(2 downto 0); + DIH : in std_logic_vector(7 downto 0); + DIL : in std_logic_vector(7 downto 0); + DOAH : out std_logic_vector(7 downto 0); + DOAL : out std_logic_vector(7 downto 0); + DOBH : out std_logic_vector(7 downto 0); + DOBL : out std_logic_vector(7 downto 0); + DOCH : out std_logic_vector(7 downto 0); + DOCL : out std_logic_vector(7 downto 0); + DOR : out std_logic_vector(127 downto 0); + DIRSet : in std_logic; + DIR : in std_logic_vector(127 downto 0) + ); +end T80_Reg; + +architecture rtl of T80_Reg is + + type Register_Image is array (natural range <>) of std_logic_vector(7 downto 0); + signal RegsH : Register_Image(0 to 7); + signal RegsL : Register_Image(0 to 7); + +begin + + process (Clk) + begin + if rising_edge(Clk) then + if DIRSet = '1' then + RegsL(0) <= DIR( 7 downto 0); + RegsH(0) <= DIR( 15 downto 8); + + RegsL(1) <= DIR( 23 downto 16); + RegsH(1) <= DIR( 31 downto 24); + + RegsL(2) <= DIR( 39 downto 32); + RegsH(2) <= DIR( 47 downto 40); + + RegsL(3) <= DIR( 55 downto 48); + RegsH(3) <= DIR( 63 downto 56); + + RegsL(4) <= DIR( 71 downto 64); + RegsH(4) <= DIR( 79 downto 72); + + RegsL(5) <= DIR( 87 downto 80); + RegsH(5) <= DIR( 95 downto 88); + + RegsL(6) <= DIR(103 downto 96); + RegsH(6) <= DIR(111 downto 104); + + RegsL(7) <= DIR(119 downto 112); + RegsH(7) <= DIR(127 downto 120); + elsif CEN = '1' then + if WEH = '1' then + RegsH(to_integer(unsigned(AddrA))) <= DIH; + end if; + if WEL = '1' then + RegsL(to_integer(unsigned(AddrA))) <= DIL; + end if; + end if; + end if; + end process; + + DOAH <= RegsH(to_integer(unsigned(AddrA))); + DOAL <= RegsL(to_integer(unsigned(AddrA))); + DOBH <= RegsH(to_integer(unsigned(AddrB))); + DOBL <= RegsL(to_integer(unsigned(AddrB))); + DOCH <= RegsH(to_integer(unsigned(AddrC))); + DOCL <= RegsL(to_integer(unsigned(AddrC))); + DOR <= RegsH(7) & RegsL(7) & RegsH(6) & RegsL(6) & RegsH(5) & RegsL(5) & RegsH(4) & RegsL(4) & RegsH(3) & RegsL(3) & RegsH(2) & RegsL(2) & RegsH(1) & RegsL(1) & RegsH(0) & RegsL(0); + +end; diff --git a/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/T80/T80pa.vhd b/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/T80/T80pa.vhd new file mode 100644 index 00000000..c09f15ae --- /dev/null +++ b/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/T80/T80pa.vhd @@ -0,0 +1,216 @@ +-- +-- Z80 compatible microprocessor core, preudo-asynchronous top level (by Sorgelig) +-- +-- Copyright (c) 2001-2002 Daniel Wallner (jesus@opencores.org) +-- +-- All rights reserved +-- +-- Redistribution and use in source and synthezised forms, with or without +-- modification, are permitted provided that the following conditions are met: +-- +-- Redistributions of source code must retain the above copyright notice, +-- this list of conditions and the following disclaimer. +-- +-- Redistributions in synthesized form must reproduce the above copyright +-- notice, this list of conditions and the following disclaimer in the +-- documentation and/or other materials provided with the distribution. +-- +-- Neither the name of the author nor the names of other contributors may +-- be used to endorse or promote products derived from this software without +-- specific prior written permission. +-- +-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +-- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +-- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +-- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE +-- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +-- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +-- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +-- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +-- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +-- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +-- POSSIBILITY OF SUCH DAMAGE. +-- +-- Please report bugs to the author, but before you do so, please +-- make sure that this is not a derivative work and that +-- you have the latest version of this file. +-- +-- The latest version of this file can be found at: +-- http://www.opencores.org/cvsweb.shtml/t80/ +-- +-- File history : +-- +-- v1.0: convert to preudo-asynchronous model with original Z80 timings. +-- +-- v2.0: rewritten for more precise timings. +-- support for both CEN_n and CEN_p set to 1. Effective clock will be CLK/2. +-- +-- v2.1: Output Address 0 during non-bus MCycle (fix ZX contention) +-- +-- v2.2: Interrupt acknowledge cycle has been corrected +-- WAIT_n is broken in T80.vhd. Simulate correct WAIT_n locally. +-- +-- v2.3: Output last used Address during non-bus MCycle seems more correct. +-- + +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.numeric_std.all; + +entity T80pa is + generic( + Mode : integer := 0 -- 0 => Z80, 1 => Fast Z80, 2 => 8080, 3 => GB + ); + port( + RESET_n : in std_logic; + CLK : in std_logic; + CEN_p : in std_logic := '1'; + CEN_n : in std_logic := '1'; + WAIT_n : in std_logic := '1'; + INT_n : in std_logic := '1'; + NMI_n : in std_logic := '1'; + BUSRQ_n : in std_logic := '1'; + M1_n : out std_logic; + MREQ_n : out std_logic; + IORQ_n : out std_logic; + RD_n : out std_logic; + WR_n : out std_logic; + RFSH_n : out std_logic; + HALT_n : out std_logic; + BUSAK_n : out std_logic; + OUT0 : in std_logic := '0'; -- 0 => OUT(C),0, 1 => OUT(C),255 + A : out std_logic_vector(15 downto 0); + DI : in std_logic_vector(7 downto 0); + DO : out std_logic_vector(7 downto 0); + REG : out std_logic_vector(211 downto 0); -- IFF2, IFF1, IM, IY, HL', DE', BC', IX, HL, DE, BC, PC, SP, R, I, F', A', F, A + DIRSet : in std_logic := '0'; + DIR : in std_logic_vector(211 downto 0) := (others => '0') -- IFF2, IFF1, IM, IY, HL', DE', BC', IX, HL, DE, BC, PC, SP, R, I, F', A', F, A + ); +end T80pa; + +architecture rtl of T80pa is + + signal IntCycle_n : std_logic; + signal IntCycleD_n : std_logic_vector(1 downto 0); + signal IORQ : std_logic; + signal NoRead : std_logic; + signal Write : std_logic; + signal BUSAK : std_logic; + signal DI_Reg : std_logic_vector (7 downto 0); -- Input synchroniser + signal MCycle : std_logic_vector(2 downto 0); + signal TState : std_logic_vector(2 downto 0); + signal CEN_pol : std_logic; + signal A_int : std_logic_vector(15 downto 0); + signal A_last : std_logic_vector(15 downto 0); + +begin + + A <= A_int when NoRead = '0' or Write = '1' else A_last; + + BUSAK_n <= BUSAK; + + u0 : work.T80 + generic map( + Mode => Mode, + IOWait => 1 + ) + port map( + CEN => CEN_p and not CEN_pol, + M1_n => M1_n, + IORQ => IORQ, + NoRead => NoRead, + Write => Write, + RFSH_n => RFSH_n, + HALT_n => HALT_n, + WAIT_n => '1', + INT_n => INT_n, + NMI_n => NMI_n, + RESET_n => RESET_n, + BUSRQ_n => BUSRQ_n, + BUSAK_n => BUSAK, + CLK_n => CLK, + A => A_int, + DInst => DI, -- valid at beginning of T3 + DI => DI_Reg, -- latched at middle of T3 + DO => DO, + REG => REG, + MC => MCycle, + TS => TState, + OUT0 => OUT0, + IntCycle_n => IntCycle_n, + DIRSet => DIRSet, + DIR => DIR + ); + + process(CLK) + begin + if rising_edge(CLK) then + if RESET_n = '0' then + WR_n <= '1'; + RD_n <= '1'; + IORQ_n <= '1'; + MREQ_n <= '1'; + DI_Reg <= "00000000"; + CEN_pol <= '0'; + elsif CEN_p = '1' and CEN_pol = '0' then + CEN_pol <= '1'; + if MCycle = "001" then + if TState = "010" then + IORQ_n <= '1'; + MREQ_n <= '1'; + RD_n <= '1'; + end if; + else + if TState = "001" and IORQ = '1' then + WR_n <= not Write; + RD_n <= Write; + IORQ_n <= '0'; + end if; + end if; + elsif CEN_n = '1' and CEN_pol = '1' then + if TState = "010" then + CEN_pol <= not WAIT_n; + else + CEN_pol <= '0'; + end if; + if TState = "011" and BUSAK = '1' then + DI_Reg <= DI; + end if; + if MCycle = "001" then + if TState = "001" then + IntCycleD_n <= IntCycleD_n(0) & IntCycle_n; + RD_n <= not IntCycle_n; + MREQ_n <= not IntCycle_n; + IORQ_n <= IntCycleD_n(1); + A_last <= A_int; + end if; + if TState = "011" then + IntCycleD_n <= "11"; + RD_n <= '1'; + MREQ_n <= '0'; + end if; + if TState = "100" then + MREQ_n <= '1'; + end if; + else + if NoRead = '0' and IORQ = '0' then + if TState = "001" then + RD_n <= Write; + MREQ_n <= '0'; + A_last <= A_int; + end if; + end if; + if TState = "010" then + WR_n <= not Write; + end if; + if TState = "011" then + WR_n <= '1'; + RD_n <= '1'; + IORQ_n <= '1'; + MREQ_n <= '1'; + end if; + end if; + end if; + end if; + end process; +end; diff --git a/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/T80/tv80_alu.v b/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/T80/tv80_alu.v deleted file mode 100644 index 2f015e21..00000000 --- a/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/T80/tv80_alu.v +++ /dev/null @@ -1,442 +0,0 @@ -// -// TV80 8-Bit Microprocessor Core -// Based on the VHDL T80 core by Daniel Wallner (jesus@opencores.org) -// -// Copyright (c) 2004 Guy Hutchison (ghutchis@opencores.org) -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the "Software"), -// to deal in the Software without restriction, including without limitation -// the rights to use, copy, modify, merge, publish, distribute, sublicense, -// and/or sell copies of the Software, and to permit persons to whom the -// Software is furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -module tv80_alu (/*AUTOARG*/ - // Outputs - Q, F_Out, - // Inputs - Arith16, Z16, ALU_Op, IR, ISet, BusA, BusB, F_In - ); - - parameter Mode = 0; - parameter Flag_C = 0; - parameter Flag_N = 1; - parameter Flag_P = 2; - parameter Flag_X = 3; - parameter Flag_H = 4; - parameter Flag_Y = 5; - parameter Flag_Z = 6; - parameter Flag_S = 7; - - input Arith16; - input Z16; - input [3:0] ALU_Op ; - input [5:0] IR; - input [1:0] ISet; - input [7:0] BusA; - input [7:0] BusB; - input [7:0] F_In; - output [7:0] Q; - output [7:0] F_Out; - reg [7:0] Q; - reg [7:0] F_Out; - - function [4:0] AddSub4; - input [3:0] A; - input [3:0] B; - input Sub; - input Carry_In; - begin - AddSub4 = { 1'b0, A } + { 1'b0, (Sub)?~B:B } + Carry_In; - end - endfunction // AddSub4 - - function [3:0] AddSub3; - input [2:0] A; - input [2:0] B; - input Sub; - input Carry_In; - begin - AddSub3 = { 1'b0, A } + { 1'b0, (Sub)?~B:B } + Carry_In; - end - endfunction // AddSub4 - - function [1:0] AddSub1; - input A; - input B; - input Sub; - input Carry_In; - begin - AddSub1 = { 1'b0, A } + { 1'b0, (Sub)?~B:B } + Carry_In; - end - endfunction // AddSub4 - - // AddSub variables (temporary signals) - reg UseCarry; - reg Carry7_v; - reg OverFlow_v; - reg HalfCarry_v; - reg Carry_v; - reg [7:0] Q_v; - - reg [7:0] BitMask; - - - always @(/*AUTOSENSE*/ALU_Op or BusA or BusB or F_In or IR) - begin - case (IR[5:3]) - 3'b000 : BitMask = 8'b00000001; - 3'b001 : BitMask = 8'b00000010; - 3'b010 : BitMask = 8'b00000100; - 3'b011 : BitMask = 8'b00001000; - 3'b100 : BitMask = 8'b00010000; - 3'b101 : BitMask = 8'b00100000; - 3'b110 : BitMask = 8'b01000000; - default: BitMask = 8'b10000000; - endcase // case(IR[5:3]) - - UseCarry = ~ ALU_Op[2] && ALU_Op[0]; - { HalfCarry_v, Q_v[3:0] } = AddSub4(BusA[3:0], BusB[3:0], ALU_Op[1], ALU_Op[1] ^ (UseCarry && F_In[Flag_C]) ); - { Carry7_v, Q_v[6:4] } = AddSub3(BusA[6:4], BusB[6:4], ALU_Op[1], HalfCarry_v); - { Carry_v, Q_v[7] } = AddSub1(BusA[7], BusB[7], ALU_Op[1], Carry7_v); - OverFlow_v = Carry_v ^ Carry7_v; - end // always @ * - - reg [7:0] Q_t; - reg [8:0] DAA_Q; - - always @ (/*AUTOSENSE*/ALU_Op or Arith16 or BitMask or BusA or BusB - or Carry_v or F_In or HalfCarry_v or IR or ISet - or OverFlow_v or Q_v or Z16) - begin - Q_t = 8'hxx; - DAA_Q = {9{1'bx}}; - - F_Out = F_In; - case (ALU_Op) - 4'b0000, 4'b0001, 4'b0010, 4'b0011, 4'b0100, 4'b0101, 4'b0110, 4'b0111 : - begin - F_Out[Flag_N] = 1'b0; - F_Out[Flag_C] = 1'b0; - - case (ALU_Op[2:0]) - - 3'b000, 3'b001 : // ADD, ADC - begin - Q_t = Q_v; - F_Out[Flag_C] = Carry_v; - F_Out[Flag_H] = HalfCarry_v; - F_Out[Flag_P] = OverFlow_v; - end - - 3'b010, 3'b011, 3'b111 : // SUB, SBC, CP - begin - Q_t = Q_v; - F_Out[Flag_N] = 1'b1; - F_Out[Flag_C] = ~ Carry_v; - F_Out[Flag_H] = ~ HalfCarry_v; - F_Out[Flag_P] = OverFlow_v; - end - - 3'b100 : // AND - begin - Q_t[7:0] = BusA & BusB; - F_Out[Flag_H] = 1'b1; - end - - 3'b101 : // XOR - begin - Q_t[7:0] = BusA ^ BusB; - F_Out[Flag_H] = 1'b0; - end - - default : // OR 3'b110 - begin - Q_t[7:0] = BusA | BusB; - F_Out[Flag_H] = 1'b0; - end - - endcase // case(ALU_OP[2:0]) - - if (ALU_Op[2:0] == 3'b111 ) - begin // CP - F_Out[Flag_X] = BusB[3]; - F_Out[Flag_Y] = BusB[5]; - end - else - begin - F_Out[Flag_X] = Q_t[3]; - F_Out[Flag_Y] = Q_t[5]; - end - - if (Q_t[7:0] == 8'b00000000 ) - begin - F_Out[Flag_Z] = 1'b1; - if (Z16 == 1'b1 ) - begin - F_Out[Flag_Z] = F_In[Flag_Z]; // 16 bit ADC,SBC - end - end - else - begin - F_Out[Flag_Z] = 1'b0; - end // else: !if(Q_t[7:0] == 8'b00000000 ) - - F_Out[Flag_S] = Q_t[7]; - case (ALU_Op[2:0]) - 3'b000, 3'b001, 3'b010, 3'b011, 3'b111 : // ADD, ADC, SUB, SBC, CP - ; - - default : - F_Out[Flag_P] = ~(^Q_t); - endcase // case(ALU_Op[2:0]) - - if (Arith16 == 1'b1 ) - begin - F_Out[Flag_S] = F_In[Flag_S]; - F_Out[Flag_Z] = F_In[Flag_Z]; - F_Out[Flag_P] = F_In[Flag_P]; - end - end // case: 4'b0000, 4'b0001, 4'b0010, 4'b0011, 4'b0100, 4'b0101, 4'b0110, 4'b0111 - - 4'b1100 : - begin - // DAA - F_Out[Flag_H] = F_In[Flag_H]; - F_Out[Flag_C] = F_In[Flag_C]; - DAA_Q[7:0] = BusA; - DAA_Q[8] = 1'b0; - if (F_In[Flag_N] == 1'b0 ) - begin - // After addition - // Alow > 9 || H == 1 - if (DAA_Q[3:0] > 9 || F_In[Flag_H] == 1'b1 ) - begin - if ((DAA_Q[3:0] > 9) ) - begin - F_Out[Flag_H] = 1'b1; - end - else - begin - F_Out[Flag_H] = 1'b0; - end - DAA_Q = DAA_Q + 6; - end // if (DAA_Q[3:0] > 9 || F_In[Flag_H] == 1'b1 ) - - // new Ahigh > 9 || C == 1 - if (DAA_Q[8:4] > 9 || F_In[Flag_C] == 1'b1 ) - begin - DAA_Q = DAA_Q + 96; // 0x60 - end - end - else - begin - // After subtraction - if (DAA_Q[3:0] > 9 || F_In[Flag_H] == 1'b1 ) - begin - if (DAA_Q[3:0] > 5 ) - begin - F_Out[Flag_H] = 1'b0; - end - DAA_Q[7:0] = DAA_Q[7:0] - 6; - end - if (BusA > 153 || F_In[Flag_C] == 1'b1 ) - begin - DAA_Q = DAA_Q - 352; // 0x160 - end - end // else: !if(F_In[Flag_N] == 1'b0 ) - - F_Out[Flag_X] = DAA_Q[3]; - F_Out[Flag_Y] = DAA_Q[5]; - F_Out[Flag_C] = F_In[Flag_C] || DAA_Q[8]; - Q_t = DAA_Q[7:0]; - - if (DAA_Q[7:0] == 8'b00000000 ) - begin - F_Out[Flag_Z] = 1'b1; - end - else - begin - F_Out[Flag_Z] = 1'b0; - end - - F_Out[Flag_S] = DAA_Q[7]; - F_Out[Flag_P] = ~ (^DAA_Q); - end // case: 4'b1100 - - 4'b1101, 4'b1110 : - begin - // RLD, RRD - Q_t[7:4] = BusA[7:4]; - if (ALU_Op[0] == 1'b1 ) - begin - Q_t[3:0] = BusB[7:4]; - end - else - begin - Q_t[3:0] = BusB[3:0]; - end - F_Out[Flag_H] = 1'b0; - F_Out[Flag_N] = 1'b0; - F_Out[Flag_X] = Q_t[3]; - F_Out[Flag_Y] = Q_t[5]; - if (Q_t[7:0] == 8'b00000000 ) - begin - F_Out[Flag_Z] = 1'b1; - end - else - begin - F_Out[Flag_Z] = 1'b0; - end - F_Out[Flag_S] = Q_t[7]; - F_Out[Flag_P] = ~(^Q_t); - end // case: when 4'b1101, 4'b1110 - - 4'b1001 : - begin - // BIT - Q_t[7:0] = BusB & BitMask; - F_Out[Flag_S] = Q_t[7]; - if (Q_t[7:0] == 8'b00000000 ) - begin - F_Out[Flag_Z] = 1'b1; - F_Out[Flag_P] = 1'b1; - end - else - begin - F_Out[Flag_Z] = 1'b0; - F_Out[Flag_P] = 1'b0; - end - F_Out[Flag_H] = 1'b1; - F_Out[Flag_N] = 1'b0; - F_Out[Flag_X] = 1'b0; - F_Out[Flag_Y] = 1'b0; - if (IR[2:0] != 3'b110 ) - begin - F_Out[Flag_X] = BusB[3]; - F_Out[Flag_Y] = BusB[5]; - end - end // case: when 4'b1001 - - 4'b1010 : - // SET - Q_t[7:0] = BusB | BitMask; - - 4'b1011 : - // RES - Q_t[7:0] = BusB & ~ BitMask; - - 4'b1000 : - begin - // ROT - case (IR[5:3]) - 3'b000 : // RLC - begin - Q_t[7:1] = BusA[6:0]; - Q_t[0] = BusA[7]; - F_Out[Flag_C] = BusA[7]; - end - - 3'b010 : // RL - begin - Q_t[7:1] = BusA[6:0]; - Q_t[0] = F_In[Flag_C]; - F_Out[Flag_C] = BusA[7]; - end - - 3'b001 : // RRC - begin - Q_t[6:0] = BusA[7:1]; - Q_t[7] = BusA[0]; - F_Out[Flag_C] = BusA[0]; - end - - 3'b011 : // RR - begin - Q_t[6:0] = BusA[7:1]; - Q_t[7] = F_In[Flag_C]; - F_Out[Flag_C] = BusA[0]; - end - - 3'b100 : // SLA - begin - Q_t[7:1] = BusA[6:0]; - Q_t[0] = 1'b0; - F_Out[Flag_C] = BusA[7]; - end - - 3'b110 : // SLL (Undocumented) / SWAP - begin - if (Mode == 3 ) - begin - Q_t[7:4] = BusA[3:0]; - Q_t[3:0] = BusA[7:4]; - F_Out[Flag_C] = 1'b0; - end - else - begin - Q_t[7:1] = BusA[6:0]; - Q_t[0] = 1'b1; - F_Out[Flag_C] = BusA[7]; - end // else: !if(Mode == 3 ) - end // case: 3'b110 - - 3'b101 : // SRA - begin - Q_t[6:0] = BusA[7:1]; - Q_t[7] = BusA[7]; - F_Out[Flag_C] = BusA[0]; - end - - default : // SRL - begin - Q_t[6:0] = BusA[7:1]; - Q_t[7] = 1'b0; - F_Out[Flag_C] = BusA[0]; - end - endcase // case(IR[5:3]) - - F_Out[Flag_H] = 1'b0; - F_Out[Flag_N] = 1'b0; - F_Out[Flag_X] = Q_t[3]; - F_Out[Flag_Y] = Q_t[5]; - F_Out[Flag_S] = Q_t[7]; - if (Q_t[7:0] == 8'b00000000 ) - begin - F_Out[Flag_Z] = 1'b1; - end - else - begin - F_Out[Flag_Z] = 1'b0; - end - F_Out[Flag_P] = ~(^Q_t); - - if (ISet == 2'b00 ) - begin - F_Out[Flag_P] = F_In[Flag_P]; - F_Out[Flag_S] = F_In[Flag_S]; - F_Out[Flag_Z] = F_In[Flag_Z]; - end - end // case: 4'b1000 - - - default : - ; - - endcase // case(ALU_Op) - - Q = Q_t; - end // always @ (Arith16, ALU_OP, F_In, BusA, BusB, IR, Q_v, Carry_v, HalfCarry_v, OverFlow_v, BitMask, ISet, Z16) - -endmodule // T80_ALU diff --git a/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/T80/tv80_core.v b/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/T80/tv80_core.v deleted file mode 100644 index af1483a1..00000000 --- a/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/T80/tv80_core.v +++ /dev/null @@ -1,1351 +0,0 @@ -// -// TV80 8-Bit Microprocessor Core -// Based on the VHDL T80 core by Daniel Wallner (jesus@opencores.org) -// -// Copyright (c) 2004 Guy Hutchison (ghutchis@opencores.org) -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the "Software"), -// to deal in the Software without restriction, including without limitation -// the rights to use, copy, modify, merge, publish, distribute, sublicense, -// and/or sell copies of the Software, and to permit persons to whom the -// Software is furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -module tv80_core (/*AUTOARG*/ - // Outputs - m1_n, iorq, no_read, write, rfsh_n, halt_n, busak_n, A, dout, mc, ts, - intcycle_n, IntE, stop, - // Inputs - reset_n, clk, cen, wait_n, int_n, nmi_n, busrq_n, dinst, di - ); - // Beginning of automatic inputs (from unused autoinst inputs) - // End of automatics - - parameter Mode = 1; // 0 => Z80, 1 => Fast Z80, 2 => 8080, 3 => GB - parameter IOWait = 1; // 0 => Single cycle I/O, 1 => Std I/O cycle - parameter Flag_C = 0; - parameter Flag_N = 1; - parameter Flag_P = 2; - parameter Flag_X = 3; - parameter Flag_H = 4; - parameter Flag_Y = 5; - parameter Flag_Z = 6; - parameter Flag_S = 7; - - input reset_n; - input clk; - input cen; - input wait_n; - input int_n; - input nmi_n; - input busrq_n; - output m1_n; - output iorq; - output no_read; - output write; - output rfsh_n; - output halt_n; - output busak_n; - output [15:0] A; - input [7:0] dinst; - input [7:0] di; - output [7:0] dout; - output [6:0] mc; - output [6:0] ts; - output intcycle_n; - output IntE; - output stop; - - reg m1_n; - reg iorq; - reg rfsh_n; - reg halt_n; - reg busak_n; - reg [15:0] A; - reg [7:0] dout; - reg [6:0] mc; - reg [6:0] ts; - reg intcycle_n; - reg IntE; - reg stop; - - parameter aNone = 3'b111; - parameter aBC = 3'b000; - parameter aDE = 3'b001; - parameter aXY = 3'b010; - parameter aIOA = 3'b100; - parameter aSP = 3'b101; - parameter aZI = 3'b110; - - // Registers - reg [7:0] ACC, F; - reg [7:0] Ap, Fp; - reg [7:0] I; - reg [7:0] R; - reg [15:0] SP, PC; - reg [7:0] RegDIH; - reg [7:0] RegDIL; - wire [15:0] RegBusA; - wire [15:0] RegBusB; - wire [15:0] RegBusC; - reg [2:0] RegAddrA_r; - reg [2:0] RegAddrA; - reg [2:0] RegAddrB_r; - reg [2:0] RegAddrB; - reg [2:0] RegAddrC; - reg RegWEH; - reg RegWEL; - reg Alternate; - - // Help Registers - reg [15:0] TmpAddr; // Temporary address register - reg [7:0] IR; // Instruction register - reg [1:0] ISet; // Instruction set selector - reg [15:0] RegBusA_r; - - reg [15:0] ID16; - reg [7:0] Save_Mux; - - reg [6:0] tstate; - reg [6:0] mcycle; - reg last_mcycle, last_tstate; - reg IntE_FF1; - reg IntE_FF2; - reg Halt_FF; - reg BusReq_s; - reg BusAck; - reg ClkEn; - reg NMI_s; - reg INT_s; - reg [1:0] IStatus; - - reg [7:0] DI_Reg; - reg T_Res; - reg [1:0] XY_State; - reg [2:0] Pre_XY_F_M; - reg NextIs_XY_Fetch; - reg XY_Ind; - reg No_BTR; - reg BTR_r; - reg Auto_Wait; - reg Auto_Wait_t1; - reg Auto_Wait_t2; - reg IncDecZ; - - // ALU signals - reg [7:0] BusB; - reg [7:0] BusA; - wire [7:0] ALU_Q; - wire [7:0] F_Out; - - // Registered micro code outputs - reg [4:0] Read_To_Reg_r; - reg Arith16_r; - reg Z16_r; - reg [3:0] ALU_Op_r; - reg Save_ALU_r; - reg PreserveC_r; - reg [2:0] mcycles; - - // Micro code outputs - wire [2:0] mcycles_d; - wire [2:0] tstates; - reg IntCycle; - reg NMICycle; - wire Inc_PC; - wire Inc_WZ; - wire [3:0] IncDec_16; - wire [1:0] Prefix; - wire Read_To_Acc; - wire Read_To_Reg; - wire [3:0] Set_BusB_To; - wire [3:0] Set_BusA_To; - wire [3:0] ALU_Op; - wire Save_ALU; - wire PreserveC; - wire Arith16; - wire [2:0] Set_Addr_To; - wire Jump; - wire JumpE; - wire JumpXY; - wire Call; - wire RstP; - wire LDZ; - wire LDW; - wire LDSPHL; - wire iorq_i; - wire [2:0] Special_LD; - wire ExchangeDH; - wire ExchangeRp; - wire ExchangeAF; - wire ExchangeRS; - wire I_DJNZ; - wire I_CPL; - wire I_CCF; - wire I_SCF; - wire I_RETN; - wire I_BT; - wire I_BC; - wire I_BTR; - wire I_RLD; - wire I_RRD; - wire I_INRC; - wire SetDI; - wire SetEI; - wire [1:0] IMode; - wire Halt; - - reg [15:0] PC16; - reg [15:0] PC16_B; - reg [15:0] SP16, SP16_A, SP16_B; - reg [15:0] ID16_B; - reg Oldnmi_n; - - tv80_mcode #(Mode, Flag_C, Flag_N, Flag_P, Flag_X, Flag_H, Flag_Y, Flag_Z, Flag_S) i_mcode - ( - .IR (IR), - .ISet (ISet), - .MCycle (mcycle), - .F (F), - .NMICycle (NMICycle), - .IntCycle (IntCycle), - .MCycles (mcycles_d), - .TStates (tstates), - .Prefix (Prefix), - .Inc_PC (Inc_PC), - .Inc_WZ (Inc_WZ), - .IncDec_16 (IncDec_16), - .Read_To_Acc (Read_To_Acc), - .Read_To_Reg (Read_To_Reg), - .Set_BusB_To (Set_BusB_To), - .Set_BusA_To (Set_BusA_To), - .ALU_Op (ALU_Op), - .Save_ALU (Save_ALU), - .PreserveC (PreserveC), - .Arith16 (Arith16), - .Set_Addr_To (Set_Addr_To), - .IORQ (iorq_i), - .Jump (Jump), - .JumpE (JumpE), - .JumpXY (JumpXY), - .Call (Call), - .RstP (RstP), - .LDZ (LDZ), - .LDW (LDW), - .LDSPHL (LDSPHL), - .Special_LD (Special_LD), - .ExchangeDH (ExchangeDH), - .ExchangeRp (ExchangeRp), - .ExchangeAF (ExchangeAF), - .ExchangeRS (ExchangeRS), - .I_DJNZ (I_DJNZ), - .I_CPL (I_CPL), - .I_CCF (I_CCF), - .I_SCF (I_SCF), - .I_RETN (I_RETN), - .I_BT (I_BT), - .I_BC (I_BC), - .I_BTR (I_BTR), - .I_RLD (I_RLD), - .I_RRD (I_RRD), - .I_INRC (I_INRC), - .SetDI (SetDI), - .SetEI (SetEI), - .IMode (IMode), - .Halt (Halt), - .NoRead (no_read), - .Write (write) - ); - - tv80_alu #(Mode, Flag_C, Flag_N, Flag_P, Flag_X, Flag_H, Flag_Y, Flag_Z, Flag_S) i_alu - ( - .Arith16 (Arith16_r), - .Z16 (Z16_r), - .ALU_Op (ALU_Op_r), - .IR (IR[5:0]), - .ISet (ISet), - .BusA (BusA), - .BusB (BusB), - .F_In (F), - .Q (ALU_Q), - .F_Out (F_Out) - ); - - function [6:0] number_to_bitvec; - input [2:0] num; - begin - case (num) - 1 : number_to_bitvec = 7'b0000001; - 2 : number_to_bitvec = 7'b0000010; - 3 : number_to_bitvec = 7'b0000100; - 4 : number_to_bitvec = 7'b0001000; - 5 : number_to_bitvec = 7'b0010000; - 6 : number_to_bitvec = 7'b0100000; - 7 : number_to_bitvec = 7'b1000000; - default : number_to_bitvec = 7'bx; - endcase // case(num) - end - endfunction // number_to_bitvec - - always @(/*AUTOSENSE*/mcycle or mcycles or tstate or tstates) - begin - case (mcycles) - 1 : last_mcycle = mcycle[0]; - 2 : last_mcycle = mcycle[1]; - 3 : last_mcycle = mcycle[2]; - 4 : last_mcycle = mcycle[3]; - 5 : last_mcycle = mcycle[4]; - 6 : last_mcycle = mcycle[5]; - 7 : last_mcycle = mcycle[6]; - default : last_mcycle = 1'bx; - endcase // case(mcycles) - - case (tstates) - 0 : last_tstate = tstate[0]; - 1 : last_tstate = tstate[1]; - 2 : last_tstate = tstate[2]; - 3 : last_tstate = tstate[3]; - 4 : last_tstate = tstate[4]; - 5 : last_tstate = tstate[5]; - 6 : last_tstate = tstate[6]; - default : last_tstate = 1'bx; - endcase - end // always @ (... - - - always @(/*AUTOSENSE*/ALU_Q or BusAck or BusB or DI_Reg - or ExchangeRp or IR or Save_ALU_r or Set_Addr_To or XY_Ind - or XY_State or cen or last_tstate or mcycle) - begin - ClkEn = cen && ~ BusAck; - - if (last_tstate) - T_Res = 1'b1; - else T_Res = 1'b0; - - if (XY_State != 2'b00 && XY_Ind == 1'b0 && - ((Set_Addr_To == aXY) || - (mcycle[0] && IR == 8'b11001011) || - (mcycle[0] && IR == 8'b00110110))) - NextIs_XY_Fetch = 1'b1; - else - NextIs_XY_Fetch = 1'b0; - - if (ExchangeRp) - Save_Mux = BusB; - else if (!Save_ALU_r) - Save_Mux = DI_Reg; - else - Save_Mux = ALU_Q; - end // always @ * - - always @ (posedge clk) - begin - if (reset_n == 1'b0 ) - begin - PC <= #1 0; // Program Counter - A <= #1 0; - TmpAddr <= #1 0; - IR <= #1 8'b00000000; - ISet <= #1 2'b00; - XY_State <= #1 2'b00; - IStatus <= #1 2'b00; - mcycles <= #1 3'b000; - dout <= #1 8'b00000000; - - ACC <= #1 8'hFF; - F <= #1 8'hFF; - Ap <= #1 8'hFF; - Fp <= #1 8'hFF; - I <= #1 0; - `ifdef TV80_REFRESH - R <= #1 0; - `endif - SP <= #1 16'hFFFF; - Alternate <= #1 1'b0; - - Read_To_Reg_r <= #1 5'b00000; - Arith16_r <= #1 1'b0; - BTR_r <= #1 1'b0; - Z16_r <= #1 1'b0; - ALU_Op_r <= #1 4'b0000; - Save_ALU_r <= #1 1'b0; - PreserveC_r <= #1 1'b0; - XY_Ind <= #1 1'b0; - end - else - begin - - if (ClkEn == 1'b1 ) - begin - - ALU_Op_r <= #1 4'b0000; - Save_ALU_r <= #1 1'b0; - Read_To_Reg_r <= #1 5'b00000; - - mcycles <= #1 mcycles_d; - - if (IMode != 2'b11 ) - begin - IStatus <= #1 IMode; - end - - Arith16_r <= #1 Arith16; - PreserveC_r <= #1 PreserveC; - if (ISet == 2'b10 && ALU_Op[2] == 1'b0 && ALU_Op[0] == 1'b1 && mcycle[2] ) - begin - Z16_r <= #1 1'b1; - end - else - begin - Z16_r <= #1 1'b0; - end - - if (mcycle[0] && (tstate[1] | tstate[2] | tstate[3] )) - begin - // mcycle == 1 && tstate == 1, 2, || 3 - if (tstate[2] && wait_n == 1'b1 ) - begin - `ifdef TV80_REFRESH - if (Mode < 2 ) - begin - A[7:0] <= #1 R; - A[15:8] <= #1 I; - R[6:0] <= #1 R[6:0] + 1; - end - `endif - if (Jump == 1'b0 && Call == 1'b0 && NMICycle == 1'b0 && IntCycle == 1'b0 && ~ (Halt_FF == 1'b1 || Halt == 1'b1) ) - begin - PC <= #1 PC16; - end - - if (IntCycle == 1'b1 && IStatus == 2'b01 ) - begin - IR <= #1 8'b11111111; - end - else if (Halt_FF == 1'b1 || (IntCycle == 1'b1 && IStatus == 2'b10) || NMICycle == 1'b1 ) - begin - IR <= #1 8'b00000000; - end - else - begin - IR <= #1 dinst; - end - - ISet <= #1 2'b00; - if (Prefix != 2'b00 ) - begin - if (Prefix == 2'b11 ) - begin - if (IR[5] == 1'b1 ) - begin - XY_State <= #1 2'b10; - end - else - begin - XY_State <= #1 2'b01; - end - end - else - begin - if (Prefix == 2'b10 ) - begin - XY_State <= #1 2'b00; - XY_Ind <= #1 1'b0; - end - ISet <= #1 Prefix; - end - end - else - begin - XY_State <= #1 2'b00; - XY_Ind <= #1 1'b0; - end - end // if (tstate == 2 && wait_n == 1'b1 ) - - - end - else - begin - // either (mcycle > 1) OR (mcycle == 1 AND tstate > 3) - - if (mcycle[5] ) - begin - XY_Ind <= #1 1'b1; - if (Prefix == 2'b01 ) - begin - ISet <= #1 2'b01; - end - end - - if (T_Res == 1'b1 ) - begin - BTR_r <= #1 (I_BT || I_BC || I_BTR) && ~ No_BTR; - if (Jump == 1'b1 ) - begin - A[15:8] <= #1 DI_Reg; - A[7:0] <= #1 TmpAddr[7:0]; - PC[15:8] <= #1 DI_Reg; - PC[7:0] <= #1 TmpAddr[7:0]; - end - else if (JumpXY == 1'b1 ) - begin - A <= #1 RegBusC; - PC <= #1 RegBusC; - end else if (Call == 1'b1 || RstP == 1'b1 ) - begin - A <= #1 TmpAddr; - PC <= #1 TmpAddr; - end - else if (last_mcycle && NMICycle == 1'b1 ) - begin - A <= #1 16'b0000000001100110; - PC <= #1 16'b0000000001100110; - end - else if (mcycle[2] && IntCycle == 1'b1 && IStatus == 2'b10 ) - begin - A[15:8] <= #1 I; - A[7:0] <= #1 TmpAddr[7:0]; - PC[15:8] <= #1 I; - PC[7:0] <= #1 TmpAddr[7:0]; - end - else - begin - case (Set_Addr_To) - aXY : - begin - if (XY_State == 2'b00 ) - begin - A <= #1 RegBusC; - end - else - begin - if (NextIs_XY_Fetch == 1'b1 ) - begin - A <= #1 PC; - end - else - begin - A <= #1 TmpAddr; - end - end // else: !if(XY_State == 2'b00 ) - end // case: aXY - - aIOA : - begin - if (Mode == 3 ) - begin - // Memory map I/O on GBZ80 - A[15:8] <= #1 8'hFF; - end - else if (Mode == 2 ) - begin - // Duplicate I/O address on 8080 - A[15:8] <= #1 DI_Reg; - end - else - begin - A[15:8] <= #1 ACC; - end - A[7:0] <= #1 DI_Reg; - end // case: aIOA - - - aSP : - begin - A <= #1 SP; - end - - aBC : - begin - if (Mode == 3 && iorq_i == 1'b1 ) - begin - // Memory map I/O on GBZ80 - A[15:8] <= #1 8'hFF; - A[7:0] <= #1 RegBusC[7:0]; - end - else - begin - A <= #1 RegBusC; - end - end // case: aBC - - aDE : - begin - A <= #1 RegBusC; - end - - aZI : - begin - if (Inc_WZ == 1'b1 ) - begin - A <= #1 TmpAddr + 1; - end - else - begin - A[15:8] <= #1 DI_Reg; - A[7:0] <= #1 TmpAddr[7:0]; - end - end // case: aZI - - default : - begin - A <= #1 PC; - end - endcase // case(Set_Addr_To) - - end // else: !if(mcycle[2] && IntCycle == 1'b1 && IStatus == 2'b10 ) - - - Save_ALU_r <= #1 Save_ALU; - ALU_Op_r <= #1 ALU_Op; - - if (I_CPL == 1'b1 ) - begin - // CPL - ACC <= #1 ~ ACC; - F[Flag_Y] <= #1 ~ ACC[5]; - F[Flag_H] <= #1 1'b1; - F[Flag_X] <= #1 ~ ACC[3]; - F[Flag_N] <= #1 1'b1; - end - if (I_CCF == 1'b1 ) - begin - // CCF - F[Flag_C] <= #1 ~ F[Flag_C]; - F[Flag_Y] <= #1 ACC[5]; - F[Flag_H] <= #1 F[Flag_C]; - F[Flag_X] <= #1 ACC[3]; - F[Flag_N] <= #1 1'b0; - end - if (I_SCF == 1'b1 ) - begin - // SCF - F[Flag_C] <= #1 1'b1; - F[Flag_Y] <= #1 ACC[5]; - F[Flag_H] <= #1 1'b0; - F[Flag_X] <= #1 ACC[3]; - F[Flag_N] <= #1 1'b0; - end - end // if (T_Res == 1'b1 ) - - - if (tstate[2] && wait_n == 1'b1 ) - begin - if (ISet == 2'b01 && mcycle[6] ) - begin - IR <= #1 dinst; - end - if (JumpE == 1'b1 ) - begin - PC <= #1 PC16; - end - else if (Inc_PC == 1'b1 ) - begin - //PC <= #1 PC + 1; - PC <= #1 PC16; - end - if (BTR_r == 1'b1 ) - begin - //PC <= #1 PC - 2; - PC <= #1 PC16; - end - if (RstP == 1'b1 ) - begin - TmpAddr <= #1 { 10'h0, IR[5:3], 3'h0 }; - //TmpAddr <= #1 (others =>1'b0); - //TmpAddr[5:3] <= #1 IR[5:3]; - end - end - if (tstate[3] && mcycle[5] ) - begin - TmpAddr <= #1 SP16; - end - - if ((tstate[2] && wait_n == 1'b1) || (tstate[4] && mcycle[0]) ) - begin - if (IncDec_16[2:0] == 3'b111 ) - begin - SP <= #1 SP16; - end - end - - if (LDSPHL == 1'b1 ) - begin - SP <= #1 RegBusC; - end - if (ExchangeAF == 1'b1 ) - begin - Ap <= #1 ACC; - ACC <= #1 Ap; - Fp <= #1 F; - F <= #1 Fp; - end - if (ExchangeRS == 1'b1 ) - begin - Alternate <= #1 ~ Alternate; - end - end // else: !if(mcycle == 3'b001 && tstate(2) == 1'b0 ) - - - if (tstate[3] ) - begin - if (LDZ == 1'b1 ) - begin - TmpAddr[7:0] <= #1 DI_Reg; - end - if (LDW == 1'b1 ) - begin - TmpAddr[15:8] <= #1 DI_Reg; - end - - if (Special_LD[2] == 1'b1 ) - begin - case (Special_LD[1:0]) - 2'b00 : - begin - ACC <= #1 I; - F[Flag_P] <= #1 IntE_FF2; - end - - 2'b01 : - begin - ACC <= #1 R; - F[Flag_P] <= #1 IntE_FF2; - end - - 2'b10 : - I <= #1 ACC; - - `ifdef TV80_REFRESH - default : - R <= #1 ACC; - `else - default : ; - `endif - endcase - end - end // if (tstate == 3 ) - - - if ((I_DJNZ == 1'b0 && Save_ALU_r == 1'b1) || ALU_Op_r == 4'b1001 ) - begin - if (Mode == 3 ) - begin - F[6] <= #1 F_Out[6]; - F[5] <= #1 F_Out[5]; - F[7] <= #1 F_Out[7]; - if (PreserveC_r == 1'b0 ) - begin - F[4] <= #1 F_Out[4]; - end - end - else - begin - F[7:1] <= #1 F_Out[7:1]; - if (PreserveC_r == 1'b0 ) - begin - F[Flag_C] <= #1 F_Out[0]; - end - end - end // if ((I_DJNZ == 1'b0 && Save_ALU_r == 1'b1) || ALU_Op_r == 4'b1001 ) - - if (T_Res == 1'b1 && I_INRC == 1'b1 ) - begin - F[Flag_H] <= #1 1'b0; - F[Flag_N] <= #1 1'b0; - if (DI_Reg[7:0] == 8'b00000000 ) - begin - F[Flag_Z] <= #1 1'b1; - end - else - begin - F[Flag_Z] <= #1 1'b0; - end - F[Flag_S] <= #1 DI_Reg[7]; - F[Flag_P] <= #1 ~ (^DI_Reg[7:0]); - end // if (T_Res == 1'b1 && I_INRC == 1'b1 ) - - - if (tstate[1] && Auto_Wait_t1 == 1'b0 ) - begin - dout <= #1 BusB; - if (I_RLD == 1'b1 ) - begin - dout[3:0] <= #1 BusA[3:0]; - dout[7:4] <= #1 BusB[3:0]; - end - if (I_RRD == 1'b1 ) - begin - dout[3:0] <= #1 BusB[7:4]; - dout[7:4] <= #1 BusA[3:0]; - end - end - - if (T_Res == 1'b1 ) - begin - Read_To_Reg_r[3:0] <= #1 Set_BusA_To; - Read_To_Reg_r[4] <= #1 Read_To_Reg; - if (Read_To_Acc == 1'b1 ) - begin - Read_To_Reg_r[3:0] <= #1 4'b0111; - Read_To_Reg_r[4] <= #1 1'b1; - end - end - - if (tstate[1] && I_BT == 1'b1 ) - begin - F[Flag_X] <= #1 ALU_Q[3]; - F[Flag_Y] <= #1 ALU_Q[1]; - F[Flag_H] <= #1 1'b0; - F[Flag_N] <= #1 1'b0; - end - if (I_BC == 1'b1 || I_BT == 1'b1 ) - begin - F[Flag_P] <= #1 IncDecZ; - end - - if ((tstate[1] && Save_ALU_r == 1'b0 && Auto_Wait_t1 == 1'b0) || - (Save_ALU_r == 1'b1 && ALU_Op_r != 4'b0111) ) - begin - case (Read_To_Reg_r) - 5'b10111 : - ACC <= #1 Save_Mux; - 5'b10110 : - dout <= #1 Save_Mux; - 5'b11000 : - SP[7:0] <= #1 Save_Mux; - 5'b11001 : - SP[15:8] <= #1 Save_Mux; - 5'b11011 : - F <= #1 Save_Mux; - endcase - end // if ((tstate == 1 && Save_ALU_r == 1'b0 && Auto_Wait_t1 == 1'b0) ||... - end // if (ClkEn == 1'b1 ) - end // else: !if(reset_n == 1'b0 ) - end - - - //------------------------------------------------------------------------- - // - // BC('), DE('), HL('), IX && IY - // - //------------------------------------------------------------------------- - always @ (posedge clk) - begin - if (ClkEn == 1'b1 ) - begin - // Bus A / Write - RegAddrA_r <= #1 { Alternate, Set_BusA_To[2:1] }; - if (XY_Ind == 1'b0 && XY_State != 2'b00 && Set_BusA_To[2:1] == 2'b10 ) - begin - RegAddrA_r <= #1 { XY_State[1], 2'b11 }; - end - - // Bus B - RegAddrB_r <= #1 { Alternate, Set_BusB_To[2:1] }; - if (XY_Ind == 1'b0 && XY_State != 2'b00 && Set_BusB_To[2:1] == 2'b10 ) - begin - RegAddrB_r <= #1 { XY_State[1], 2'b11 }; - end - - // Address from register - RegAddrC <= #1 { Alternate, Set_Addr_To[1:0] }; - // Jump (HL), LD SP,HL - if ((JumpXY == 1'b1 || LDSPHL == 1'b1) ) - begin - RegAddrC <= #1 { Alternate, 2'b10 }; - end - if (((JumpXY == 1'b1 || LDSPHL == 1'b1) && XY_State != 2'b00) || (mcycle[5]) ) - begin - RegAddrC <= #1 { XY_State[1], 2'b11 }; - end - - if (I_DJNZ == 1'b1 && Save_ALU_r == 1'b1 && Mode < 2 ) - begin - IncDecZ <= #1 F_Out[Flag_Z]; - end - if ((tstate[2] || (tstate[3] && mcycle[0])) && IncDec_16[2:0] == 3'b100 ) - begin - if (ID16 == 0 ) - begin - IncDecZ <= #1 1'b0; - end - else - begin - IncDecZ <= #1 1'b1; - end - end - - RegBusA_r <= #1 RegBusA; - end - - end // always @ (posedge clk) - - - always @(/*AUTOSENSE*/Alternate or ExchangeDH or IncDec_16 - or RegAddrA_r or RegAddrB_r or XY_State or mcycle or tstate) - begin - if ((tstate[2] || (tstate[3] && mcycle[0] && IncDec_16[2] == 1'b1)) && XY_State == 2'b00) - RegAddrA = { Alternate, IncDec_16[1:0] }; - else if ((tstate[2] || (tstate[3] && mcycle[0] && IncDec_16[2] == 1'b1)) && IncDec_16[1:0] == 2'b10) - RegAddrA = { XY_State[1], 2'b11 }; - else if (ExchangeDH == 1'b1 && tstate[3]) - RegAddrA = { Alternate, 2'b10 }; - else if (ExchangeDH == 1'b1 && tstate[4]) - RegAddrA = { Alternate, 2'b01 }; - else - RegAddrA = RegAddrA_r; - - if (ExchangeDH == 1'b1 && tstate[3]) - RegAddrB = { Alternate, 2'b01 }; - else - RegAddrB = RegAddrB_r; - end // always @ * - - - always @(/*AUTOSENSE*/ALU_Op_r or Auto_Wait_t1 or ExchangeDH - or IncDec_16 or Read_To_Reg_r or Save_ALU_r or mcycle - or tstate or wait_n) - begin - RegWEH = 1'b0; - RegWEL = 1'b0; - if ((tstate[1] && Save_ALU_r == 1'b0 && Auto_Wait_t1 == 1'b0) || - (Save_ALU_r == 1'b1 && ALU_Op_r != 4'b0111) ) - begin - case (Read_To_Reg_r) - 5'b10000 , 5'b10001 , 5'b10010 , 5'b10011 , 5'b10100 , 5'b10101 : - begin - RegWEH = ~ Read_To_Reg_r[0]; - RegWEL = Read_To_Reg_r[0]; - end - endcase // case(Read_To_Reg_r) - - end // if ((tstate == 1 && Save_ALU_r == 1'b0 && Auto_Wait_t1 == 1'b0) ||... - - - if (ExchangeDH == 1'b1 && (tstate[3] || tstate[4]) ) - begin - RegWEH = 1'b1; - RegWEL = 1'b1; - end - - if (IncDec_16[2] == 1'b1 && ((tstate[2] && wait_n == 1'b1 && mcycle != 3'b001) || (tstate[3] && mcycle[0])) ) - begin - case (IncDec_16[1:0]) - 2'b00 , 2'b01 , 2'b10 : - begin - RegWEH = 1'b1; - RegWEL = 1'b1; - end - endcase - end - end // always @ * - - - always @(/*AUTOSENSE*/ExchangeDH or ID16 or IncDec_16 or RegBusA_r - or RegBusB or Save_Mux or mcycle or tstate) - begin - RegDIH = Save_Mux; - RegDIL = Save_Mux; - - if (ExchangeDH == 1'b1 && tstate[3] ) - begin - RegDIH = RegBusB[15:8]; - RegDIL = RegBusB[7:0]; - end - else if (ExchangeDH == 1'b1 && tstate[4] ) - begin - RegDIH = RegBusA_r[15:8]; - RegDIL = RegBusA_r[7:0]; - end - else if (IncDec_16[2] == 1'b1 && ((tstate[2] && mcycle != 3'b001) || (tstate[3] && mcycle[0])) ) - begin - RegDIH = ID16[15:8]; - RegDIL = ID16[7:0]; - end - end - - tv80_reg i_reg - ( - .clk (clk), - .CEN (ClkEn), - .WEH (RegWEH), - .WEL (RegWEL), - .AddrA (RegAddrA), - .AddrB (RegAddrB), - .AddrC (RegAddrC), - .DIH (RegDIH), - .DIL (RegDIL), - .DOAH (RegBusA[15:8]), - .DOAL (RegBusA[7:0]), - .DOBH (RegBusB[15:8]), - .DOBL (RegBusB[7:0]), - .DOCH (RegBusC[15:8]), - .DOCL (RegBusC[7:0]) - ); - - //------------------------------------------------------------------------- - // - // Buses - // - //------------------------------------------------------------------------- - - always @ (posedge clk) - begin - if (ClkEn == 1'b1 ) - begin - case (Set_BusB_To) - 4'b0111 : - BusB <= #1 ACC; - 4'b0000 , 4'b0001 , 4'b0010 , 4'b0011 , 4'b0100 , 4'b0101 : - begin - if (Set_BusB_To[0] == 1'b1 ) - begin - BusB <= #1 RegBusB[7:0]; - end - else - begin - BusB <= #1 RegBusB[15:8]; - end - end - 4'b0110 : - BusB <= #1 DI_Reg; - 4'b1000 : - BusB <= #1 SP[7:0]; - 4'b1001 : - BusB <= #1 SP[15:8]; - 4'b1010 : - BusB <= #1 8'b00000001; - 4'b1011 : - BusB <= #1 F; - 4'b1100 : - BusB <= #1 PC[7:0]; - 4'b1101 : - BusB <= #1 PC[15:8]; - 4'b1110 : - BusB <= #1 8'b00000000; - default : - BusB <= #1 8'hxx; - endcase - - case (Set_BusA_To) - 4'b0111 : - BusA <= #1 ACC; - 4'b0000 , 4'b0001 , 4'b0010 , 4'b0011 , 4'b0100 , 4'b0101 : - begin - if (Set_BusA_To[0] == 1'b1 ) - begin - BusA <= #1 RegBusA[7:0]; - end - else - begin - BusA <= #1 RegBusA[15:8]; - end - end - 4'b0110 : - BusA <= #1 DI_Reg; - 4'b1000 : - BusA <= #1 SP[7:0]; - 4'b1001 : - BusA <= #1 SP[15:8]; - 4'b1010 : - BusA <= #1 8'b00000000; - default : - BusB <= #1 8'hxx; - endcase - end - end - - //------------------------------------------------------------------------- - // - // Generate external control signals - // - //------------------------------------------------------------------------- -`ifdef TV80_REFRESH - always @ (posedge clk) - begin - if (reset_n == 1'b0 ) - begin - rfsh_n <= #1 1'b1; - end - else - begin - if (cen == 1'b1 ) - begin - if (mcycle[0] && ((tstate[2] && wait_n == 1'b1) || tstate[3]) ) - begin - rfsh_n <= #1 1'b0; - end - else - begin - rfsh_n <= #1 1'b1; - end - end - end - end -`endif - - always @(/*AUTOSENSE*/BusAck or Halt_FF or I_DJNZ or IntCycle - or IntE_FF1 or di or iorq_i or mcycle or tstate) - begin - mc = mcycle; - ts = tstate; - DI_Reg = di; - halt_n = ~ Halt_FF; - busak_n = ~ BusAck; - intcycle_n = ~ IntCycle; - IntE = IntE_FF1; - iorq = iorq_i; - stop = I_DJNZ; - end - - //----------------------------------------------------------------------- - // - // Syncronise inputs - // - //----------------------------------------------------------------------- - - always @ (posedge clk) - begin : sync_inputs - - if (reset_n == 1'b0 ) - begin - BusReq_s <= #1 1'b0; - INT_s <= #1 1'b0; - NMI_s <= #1 1'b0; - Oldnmi_n <= #1 1'b0; - end - else - begin - if (cen == 1'b1 ) - begin - BusReq_s <= #1 ~ busrq_n; - INT_s <= #1 ~ int_n; - if (NMICycle == 1'b1 ) - begin - NMI_s <= #1 1'b0; - end - else if (nmi_n == 1'b0 && Oldnmi_n == 1'b1 ) - begin - NMI_s <= #1 1'b1; - end - Oldnmi_n <= #1 nmi_n; - end - end - end - - //----------------------------------------------------------------------- - // - // Main state machine - // - //----------------------------------------------------------------------- - - always @ (posedge clk) - begin - if (reset_n == 1'b0 ) - begin - mcycle <= #1 7'b0000001; - tstate <= #1 7'b0000001; - Pre_XY_F_M <= #1 3'b000; - Halt_FF <= #1 1'b0; - BusAck <= #1 1'b0; - NMICycle <= #1 1'b0; - IntCycle <= #1 1'b0; - IntE_FF1 <= #1 1'b0; - IntE_FF2 <= #1 1'b0; - No_BTR <= #1 1'b0; - Auto_Wait_t1 <= #1 1'b0; - Auto_Wait_t2 <= #1 1'b0; - m1_n <= #1 1'b1; - end - else - begin - if (cen == 1'b1 ) - begin - if (T_Res == 1'b1 ) - begin - Auto_Wait_t1 <= #1 1'b0; - end - else - begin - Auto_Wait_t1 <= #1 Auto_Wait || iorq_i; - end - Auto_Wait_t2 <= #1 Auto_Wait_t1; - No_BTR <= #1 (I_BT && (~ IR[4] || ~ F[Flag_P])) || - (I_BC && (~ IR[4] || F[Flag_Z] || ~ F[Flag_P])) || - (I_BTR && (~ IR[4] || F[Flag_Z])); - if (tstate[2] ) - begin - if (SetEI == 1'b1 ) - begin - IntE_FF1 <= #1 1'b1; - IntE_FF2 <= #1 1'b1; - end - if (I_RETN == 1'b1 ) - begin - IntE_FF1 <= #1 IntE_FF2; - end - end - if (tstate[3] ) - begin - if (SetDI == 1'b1 ) - begin - IntE_FF1 <= #1 1'b0; - IntE_FF2 <= #1 1'b0; - end - end - if (IntCycle == 1'b1 || NMICycle == 1'b1 ) - begin - Halt_FF <= #1 1'b0; - end - if (mcycle[0] && tstate[2] && wait_n == 1'b1 ) - begin - m1_n <= #1 1'b1; - end - if (BusReq_s == 1'b1 && BusAck == 1'b1 ) - begin - end - else - begin - BusAck <= #1 1'b0; - if (tstate[2] && wait_n == 1'b0 ) - begin - end - else if (T_Res == 1'b1 ) - begin - if (Halt == 1'b1 ) - begin - Halt_FF <= #1 1'b1; - end - if (BusReq_s == 1'b1 ) - begin - BusAck <= #1 1'b1; - end - else - begin - tstate <= #1 7'b0000010; - if (NextIs_XY_Fetch == 1'b1 ) - begin - mcycle <= #1 7'b0100000; - Pre_XY_F_M <= #1 mcycle; - if (IR == 8'b00110110 && Mode == 0 ) - begin - Pre_XY_F_M <= #1 3'b010; - end - end - else if ((mcycle[6]) || (mcycle[5] && Mode == 1 && ISet != 2'b01) ) - begin - mcycle <= #1 number_to_bitvec(Pre_XY_F_M + 1); - end - else if ((last_mcycle) || - No_BTR == 1'b1 || - (mcycle[1] && I_DJNZ == 1'b1 && IncDecZ == 1'b1) ) - begin - m1_n <= #1 1'b0; - mcycle <= #1 7'b0000001; - IntCycle <= #1 1'b0; - NMICycle <= #1 1'b0; - if (NMI_s == 1'b1 && Prefix == 2'b00 ) - begin - NMICycle <= #1 1'b1; - IntE_FF1 <= #1 1'b0; - end - else if ((IntE_FF1 == 1'b1 && INT_s == 1'b1) && Prefix == 2'b00 && SetEI == 1'b0 ) - begin - IntCycle <= #1 1'b1; - IntE_FF1 <= #1 1'b0; - IntE_FF2 <= #1 1'b0; - end - end - else - begin - mcycle <= #1 { mcycle[5:0], mcycle[6] }; - end - end - end - else - begin // verilog has no "nor" operator - if ( ~(Auto_Wait == 1'b1 && Auto_Wait_t2 == 1'b0) && - ~(IOWait == 1 && iorq_i == 1'b1 && Auto_Wait_t1 == 1'b0) ) - begin - tstate <= #1 { tstate[5:0], tstate[6] }; - end - end - end - if (tstate[0]) - begin - m1_n <= #1 1'b0; - end - end - end - end - - always @(/*AUTOSENSE*/BTR_r or DI_Reg or IncDec_16 or JumpE or PC - or RegBusA or RegBusC or SP or tstate) - begin - if (JumpE == 1'b1 ) - begin - PC16_B = { {8{DI_Reg[7]}}, DI_Reg }; - end - else if (BTR_r == 1'b1 ) - begin - PC16_B = -2; - end - else - begin - PC16_B = 1; - end - - if (tstate[3]) - begin - SP16_A = RegBusC; - SP16_B = { {8{DI_Reg[7]}}, DI_Reg }; - end - else - begin - // suspect that ID16 and SP16 could be shared - SP16_A = SP; - - if (IncDec_16[3] == 1'b1) - SP16_B = -1; - else - SP16_B = 1; - end - - if (IncDec_16[3]) - ID16_B = -1; - else - ID16_B = 1; - - ID16 = RegBusA + ID16_B; - PC16 = PC + PC16_B; - SP16 = SP16_A + SP16_B; - end // always @ * - - - always @(/*AUTOSENSE*/IntCycle or NMICycle or mcycle) - begin - Auto_Wait = 1'b0; - if (IntCycle == 1'b1 || NMICycle == 1'b1 ) - begin - if (mcycle[0] ) - begin - Auto_Wait = 1'b1; - end - end - end // always @ * - -endmodule // T80 - diff --git a/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/T80/tv80_mcode.v b/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/T80/tv80_mcode.v deleted file mode 100644 index 7d49cb51..00000000 --- a/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/T80/tv80_mcode.v +++ /dev/null @@ -1,2724 +0,0 @@ -// -// TV80 8-Bit Microprocessor Core -// Based on the VHDL T80 core by Daniel Wallner (jesus@opencores.org) -// -// Copyright (c) 2004 Guy Hutchison (ghutchis@opencores.org) -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the "Software"), -// to deal in the Software without restriction, including without limitation -// the rights to use, copy, modify, merge, publish, distribute, sublicense, -// and/or sell copies of the Software, and to permit persons to whom the -// Software is furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -module tv80_mcode - (/*AUTOARG*/ - // Outputs - MCycles, TStates, Prefix, Inc_PC, Inc_WZ, IncDec_16, Read_To_Reg, - Read_To_Acc, Set_BusA_To, Set_BusB_To, ALU_Op, Save_ALU, PreserveC, - Arith16, Set_Addr_To, IORQ, Jump, JumpE, JumpXY, Call, RstP, LDZ, - LDW, LDSPHL, Special_LD, ExchangeDH, ExchangeRp, ExchangeAF, - ExchangeRS, I_DJNZ, I_CPL, I_CCF, I_SCF, I_RETN, I_BT, I_BC, I_BTR, - I_RLD, I_RRD, I_INRC, SetDI, SetEI, IMode, Halt, NoRead, Write, - // Inputs - IR, ISet, MCycle, F, NMICycle, IntCycle - ); - - parameter Mode = 0; - parameter Flag_C = 0; - parameter Flag_N = 1; - parameter Flag_P = 2; - parameter Flag_X = 3; - parameter Flag_H = 4; - parameter Flag_Y = 5; - parameter Flag_Z = 6; - parameter Flag_S = 7; - - input [7:0] IR; - input [1:0] ISet ; - input [6:0] MCycle ; - input [7:0] F ; - input NMICycle ; - input IntCycle ; - output [2:0] MCycles ; - output [2:0] TStates ; - output [1:0] Prefix ; // None,BC,ED,DD/FD - output Inc_PC ; - output Inc_WZ ; - output [3:0] IncDec_16 ; // BC,DE,HL,SP 0 is inc - output Read_To_Reg ; - output Read_To_Acc ; - output [3:0] Set_BusA_To ; // B,C,D,E,H,L,DI/DB,A,SP(L),SP(M),0,F - output [3:0] Set_BusB_To ; // B,C,D,E,H,L,DI,A,SP(L),SP(M),1,F,PC(L),PC(M),0 - output [3:0] ALU_Op ; - output Save_ALU ; - output PreserveC ; - output Arith16 ; - output [2:0] Set_Addr_To ; // aNone,aXY,aIOA,aSP,aBC,aDE,aZI - output IORQ ; - output Jump ; - output JumpE ; - output JumpXY ; - output Call ; - output RstP ; - output LDZ ; - output LDW ; - output LDSPHL ; - output [2:0] Special_LD ; // A,I;A,R;I,A;R,A;None - output ExchangeDH ; - output ExchangeRp ; - output ExchangeAF ; - output ExchangeRS ; - output I_DJNZ ; - output I_CPL ; - output I_CCF ; - output I_SCF ; - output I_RETN ; - output I_BT ; - output I_BC ; - output I_BTR ; - output I_RLD ; - output I_RRD ; - output I_INRC ; - output SetDI ; - output SetEI ; - output [1:0] IMode ; - output Halt ; - output NoRead ; - output Write ; - - // regs - reg [2:0] MCycles ; - reg [2:0] TStates ; - reg [1:0] Prefix ; // None,BC,ED,DD/FD - reg Inc_PC ; - reg Inc_WZ ; - reg [3:0] IncDec_16 ; // BC,DE,HL,SP 0 is inc - reg Read_To_Reg ; - reg Read_To_Acc ; - reg [3:0] Set_BusA_To ; // B,C,D,E,H,L,DI/DB,A,SP(L),SP(M),0,F - reg [3:0] Set_BusB_To ; // B,C,D,E,H,L,DI,A,SP(L),SP(M),1,F,PC(L),PC(M),0 - reg [3:0] ALU_Op ; - reg Save_ALU ; - reg PreserveC ; - reg Arith16 ; - reg [2:0] Set_Addr_To ; // aNone,aXY,aIOA,aSP,aBC,aDE,aZI - reg IORQ ; - reg Jump ; - reg JumpE ; - reg JumpXY ; - reg Call ; - reg RstP ; - reg LDZ ; - reg LDW ; - reg LDSPHL ; - reg [2:0] Special_LD ; // A,I;A,R;I,A;R,A;None - reg ExchangeDH ; - reg ExchangeRp ; - reg ExchangeAF ; - reg ExchangeRS ; - reg I_DJNZ ; - reg I_CPL ; - reg I_CCF ; - reg I_SCF ; - reg I_RETN ; - reg I_BT ; - reg I_BC ; - reg I_BTR ; - reg I_RLD ; - reg I_RRD ; - reg I_INRC ; - reg SetDI ; - reg SetEI ; - reg [1:0] IMode ; - reg Halt ; - reg NoRead ; - reg Write ; - - parameter aNone = 3'b111; - parameter aBC = 3'b000; - parameter aDE = 3'b001; - parameter aXY = 3'b010; - parameter aIOA = 3'b100; - parameter aSP = 3'b101; - parameter aZI = 3'b110; - // constant aNone : std_logic_vector[2:0] = 3'b000; - // constant aXY : std_logic_vector[2:0] = 3'b001; - // constant aIOA : std_logic_vector[2:0] = 3'b010; - // constant aSP : std_logic_vector[2:0] = 3'b011; - // constant aBC : std_logic_vector[2:0] = 3'b100; - // constant aDE : std_logic_vector[2:0] = 3'b101; - // constant aZI : std_logic_vector[2:0] = 3'b110; - - function is_cc_true; - input [7:0] F; - input [2:0] cc; - begin - if (Mode == 3 ) - begin - case (cc) - 3'b000 : is_cc_true = F[7] == 1'b0; // NZ - 3'b001 : is_cc_true = F[7] == 1'b1; // Z - 3'b010 : is_cc_true = F[4] == 1'b0; // NC - 3'b011 : is_cc_true = F[4] == 1'b1; // C - 3'b100 : is_cc_true = 0; - 3'b101 : is_cc_true = 0; - 3'b110 : is_cc_true = 0; - 3'b111 : is_cc_true = 0; - endcase - end - else - begin - case (cc) - 3'b000 : is_cc_true = F[6] == 1'b0; // NZ - 3'b001 : is_cc_true = F[6] == 1'b1; // Z - 3'b010 : is_cc_true = F[0] == 1'b0; // NC - 3'b011 : is_cc_true = F[0] == 1'b1; // C - 3'b100 : is_cc_true = F[2] == 1'b0; // PO - 3'b101 : is_cc_true = F[2] == 1'b1; // PE - 3'b110 : is_cc_true = F[7] == 1'b0; // P - 3'b111 : is_cc_true = F[7] == 1'b1; // M - endcase - end - end - endfunction // is_cc_true - - - reg [2:0] DDD; - reg [2:0] SSS; - reg [1:0] DPAIR; - reg [7:0] IRB; - - always @ (/*AUTOSENSE*/F or IR or ISet or IntCycle or MCycle - or NMICycle) - begin - DDD = IR[5:3]; - SSS = IR[2:0]; - DPAIR = IR[5:4]; - IRB = IR; - - MCycles = 3'b001; - if (MCycle[0] ) - begin - TStates = 3'b100; - end - else - begin - TStates = 3'b011; - end - Prefix = 2'b00; - Inc_PC = 1'b0; - Inc_WZ = 1'b0; - IncDec_16 = 4'b0000; - Read_To_Acc = 1'b0; - Read_To_Reg = 1'b0; - Set_BusB_To = 4'b0000; - Set_BusA_To = 4'b0000; - ALU_Op = { 1'b0, IR[5:3] }; - Save_ALU = 1'b0; - PreserveC = 1'b0; - Arith16 = 1'b0; - IORQ = 1'b0; - Set_Addr_To = aNone; - Jump = 1'b0; - JumpE = 1'b0; - JumpXY = 1'b0; - Call = 1'b0; - RstP = 1'b0; - LDZ = 1'b0; - LDW = 1'b0; - LDSPHL = 1'b0; - Special_LD = 3'b000; - ExchangeDH = 1'b0; - ExchangeRp = 1'b0; - ExchangeAF = 1'b0; - ExchangeRS = 1'b0; - I_DJNZ = 1'b0; - I_CPL = 1'b0; - I_CCF = 1'b0; - I_SCF = 1'b0; - I_RETN = 1'b0; - I_BT = 1'b0; - I_BC = 1'b0; - I_BTR = 1'b0; - I_RLD = 1'b0; - I_RRD = 1'b0; - I_INRC = 1'b0; - SetDI = 1'b0; - SetEI = 1'b0; - IMode = 2'b11; - Halt = 1'b0; - NoRead = 1'b0; - Write = 1'b0; - - case (ISet) - 2'b00 : - begin - - //---------------------------------------------------------------------------- - // - // Unprefixed instructions - // - //---------------------------------------------------------------------------- - - casex (IRB) - // 8 BIT LOAD GROUP - 8'b01xxxxxx : - begin - if (IRB[5:0] == 6'b110110) - Halt = 1'b1; - else if (IRB[2:0] == 3'b110) - begin - // LD r,(HL) - MCycles = 3'b010; - if (MCycle[0]) - Set_Addr_To = aXY; - if (MCycle[1]) - begin - Set_BusA_To[2:0] = DDD; - Read_To_Reg = 1'b1; - end - end // if (IRB[2:0] == 3'b110) - else if (IRB[5:3] == 3'b110) - begin - // LD (HL),r - MCycles = 3'b010; - if (MCycle[0]) - begin - Set_Addr_To = aXY; - Set_BusB_To[2:0] = SSS; - Set_BusB_To[3] = 1'b0; - end - if (MCycle[1]) - Write = 1'b1; - end // if (IRB[5:3] == 3'b110) - else - begin - Set_BusB_To[2:0] = SSS; - ExchangeRp = 1'b1; - Set_BusA_To[2:0] = DDD; - Read_To_Reg = 1'b1; - end // else: !if(IRB[5:3] == 3'b110) - end // case: 8'b01xxxxxx - - 8'b00xxx110 : - begin - if (IRB[5:3] == 3'b110) - begin - // LD (HL),n - MCycles = 3'b011; - if (MCycle[1]) - begin - Inc_PC = 1'b1; - Set_Addr_To = aXY; - Set_BusB_To[2:0] = SSS; - Set_BusB_To[3] = 1'b0; - end - if (MCycle[2]) - Write = 1'b1; - end // if (IRB[5:3] == 3'b110) - else - begin - // LD r,n - MCycles = 3'b010; - if (MCycle[1]) - begin - Inc_PC = 1'b1; - Set_BusA_To[2:0] = DDD; - Read_To_Reg = 1'b1; - end - end - end - - 8'b00001010 : - begin - // LD A,(BC) - MCycles = 3'b010; - if (MCycle[0]) - Set_Addr_To = aBC; - if (MCycle[1]) - Read_To_Acc = 1'b1; - end // case: 8'b00001010 - - 8'b00011010 : - begin - // LD A,(DE) - MCycles = 3'b010; - if (MCycle[0]) - Set_Addr_To = aDE; - if (MCycle[1]) - Read_To_Acc = 1'b1; - end // case: 8'b00011010 - - 8'b00111010 : - begin - if (Mode == 3 ) - begin - // LDD A,(HL) - MCycles = 3'b010; - if (MCycle[0]) - Set_Addr_To = aXY; - if (MCycle[1]) - begin - Read_To_Acc = 1'b1; - IncDec_16 = 4'b1110; - end - end - else - begin - // LD A,(nn) - MCycles = 3'b100; - if (MCycle[1]) - begin - Inc_PC = 1'b1; - LDZ = 1'b1; - end - if (MCycle[2]) - begin - Set_Addr_To = aZI; - Inc_PC = 1'b1; - end - if (MCycle[3]) - begin - Read_To_Acc = 1'b1; - end - end // else: !if(Mode == 3 ) - end // case: 8'b00111010 - - 8'b00000010 : - begin - // LD (BC),A - MCycles = 3'b010; - if (MCycle[0]) - begin - Set_Addr_To = aBC; - Set_BusB_To = 4'b0111; - end - if (MCycle[1]) - begin - Write = 1'b1; - end - end // case: 8'b00000010 - - 8'b00010010 : - begin - // LD (DE),A - MCycles = 3'b010; - case (1'b1) // MCycle - MCycle[0] : - begin - Set_Addr_To = aDE; - Set_BusB_To = 4'b0111; - end - MCycle[1] : - Write = 1'b1; - default :; - endcase // case(MCycle) - end // case: 8'b00010010 - - 8'b00110010 : - begin - if (Mode == 3 ) - begin - // LDD (HL),A - MCycles = 3'b010; - case (1'b1) // MCycle - MCycle[0] : - begin - Set_Addr_To = aXY; - Set_BusB_To = 4'b0111; - end - MCycle[1] : - begin - Write = 1'b1; - IncDec_16 = 4'b1110; - end - default :; - endcase // case(MCycle) - - end - else - begin - // LD (nn),A - MCycles = 3'b100; - case (1'b1) // MCycle - MCycle[1] : - begin - Inc_PC = 1'b1; - LDZ = 1'b1; - end - MCycle[2] : - begin - Set_Addr_To = aZI; - Inc_PC = 1'b1; - Set_BusB_To = 4'b0111; - end - MCycle[3] : - begin - Write = 1'b1; - end - default :; - endcase - end // else: !if(Mode == 3 ) - end // case: 8'b00110010 - - - // 16 BIT LOAD GROUP - 8'b00000001,8'b00010001,8'b00100001,8'b00110001 : - begin - // LD dd,nn - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[1] : - begin - Inc_PC = 1'b1; - Read_To_Reg = 1'b1; - if (DPAIR == 2'b11 ) - begin - Set_BusA_To[3:0] = 4'b1000; - end - else - begin - Set_BusA_To[2:1] = DPAIR; - Set_BusA_To[0] = 1'b1; - end - end // case: 2 - - MCycle[2] : - begin - Inc_PC = 1'b1; - Read_To_Reg = 1'b1; - if (DPAIR == 2'b11 ) - begin - Set_BusA_To[3:0] = 4'b1001; - end - else - begin - Set_BusA_To[2:1] = DPAIR; - Set_BusA_To[0] = 1'b0; - end - end // case: 3 - - default :; - endcase // case(MCycle) - end // case: 8'b00000001,8'b00010001,8'b00100001,8'b00110001 - - 8'b00101010 : - begin - if (Mode == 3 ) - begin - // LDI A,(HL) - MCycles = 3'b010; - case (1'b1) // MCycle - MCycle[0] : - Set_Addr_To = aXY; - MCycle[1] : - begin - Read_To_Acc = 1'b1; - IncDec_16 = 4'b0110; - end - - default :; - endcase - end - else - begin - // LD HL,(nn) - MCycles = 3'b101; - case (1'b1) // MCycle - MCycle[1] : - begin - Inc_PC = 1'b1; - LDZ = 1'b1; - end - MCycle[2] : - begin - Set_Addr_To = aZI; - Inc_PC = 1'b1; - LDW = 1'b1; - end - MCycle[3] : - begin - Set_BusA_To[2:0] = 3'b101; // L - Read_To_Reg = 1'b1; - Inc_WZ = 1'b1; - Set_Addr_To = aZI; - end - MCycle[4] : - begin - Set_BusA_To[2:0] = 3'b100; // H - Read_To_Reg = 1'b1; - end - default :; - endcase - end // else: !if(Mode == 3 ) - end // case: 8'b00101010 - - 8'b00100010 : - begin - if (Mode == 3 ) - begin - // LDI (HL),A - MCycles = 3'b010; - case (1'b1) // MCycle - MCycle[0] : - begin - Set_Addr_To = aXY; - Set_BusB_To = 4'b0111; - end - MCycle[1] : - begin - Write = 1'b1; - IncDec_16 = 4'b0110; - end - default :; - endcase - end - else - begin - // LD (nn),HL - MCycles = 3'b101; - case (1'b1) // MCycle - MCycle[1] : - begin - Inc_PC = 1'b1; - LDZ = 1'b1; - end - - MCycle[2] : - begin - Set_Addr_To = aZI; - Inc_PC = 1'b1; - LDW = 1'b1; - Set_BusB_To = 4'b0101; // L - end - - MCycle[3] : - begin - Inc_WZ = 1'b1; - Set_Addr_To = aZI; - Write = 1'b1; - Set_BusB_To = 4'b0100; // H - end - MCycle[4] : - Write = 1'b1; - default :; - endcase - end // else: !if(Mode == 3 ) - end // case: 8'b00100010 - - 8'b11111001 : - begin - // LD SP,HL - TStates = 3'b110; - LDSPHL = 1'b1; - end - - 8'b11xx0101 : - begin - // PUSH qq - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[0] : - begin - TStates = 3'b101; - IncDec_16 = 4'b1111; - Set_Addr_To = aSP; - if (DPAIR == 2'b11 ) - begin - Set_BusB_To = 4'b0111; - end - else - begin - Set_BusB_To[2:1] = DPAIR; - Set_BusB_To[0] = 1'b0; - Set_BusB_To[3] = 1'b0; - end - end // case: 1 - - MCycle[1] : - begin - IncDec_16 = 4'b1111; - Set_Addr_To = aSP; - if (DPAIR == 2'b11 ) - begin - Set_BusB_To = 4'b1011; - end - else - begin - Set_BusB_To[2:1] = DPAIR; - Set_BusB_To[0] = 1'b1; - Set_BusB_To[3] = 1'b0; - end - Write = 1'b1; - end // case: 2 - - MCycle[2] : - Write = 1'b1; - default :; - endcase // case(MCycle) - end // case: 8'b11000101,8'b11010101,8'b11100101,8'b11110101 - - 8'b11xx0001 : - begin - // POP qq - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[0] : - Set_Addr_To = aSP; - MCycle[1] : - begin - IncDec_16 = 4'b0111; - Set_Addr_To = aSP; - Read_To_Reg = 1'b1; - if (DPAIR == 2'b11 ) - begin - Set_BusA_To[3:0] = 4'b1011; - end - else - begin - Set_BusA_To[2:1] = DPAIR; - Set_BusA_To[0] = 1'b1; - end - end // case: 2 - - MCycle[2] : - begin - IncDec_16 = 4'b0111; - Read_To_Reg = 1'b1; - if (DPAIR == 2'b11 ) - begin - Set_BusA_To[3:0] = 4'b0111; - end - else - begin - Set_BusA_To[2:1] = DPAIR; - Set_BusA_To[0] = 1'b0; - end - end // case: 3 - - default :; - endcase // case(MCycle) - end // case: 8'b11000001,8'b11010001,8'b11100001,8'b11110001 - - - // EXCHANGE, BLOCK TRANSFER AND SEARCH GROUP - 8'b11101011 : - begin - if (Mode != 3 ) - begin - // EX DE,HL - ExchangeDH = 1'b1; - end - end - - 8'b00001000 : - begin - if (Mode == 3 ) - begin - // LD (nn),SP - MCycles = 3'b101; - case (1'b1) // MCycle - MCycle[1] : - begin - Inc_PC = 1'b1; - LDZ = 1'b1; - end - - MCycle[2] : - begin - Set_Addr_To = aZI; - Inc_PC = 1'b1; - LDW = 1'b1; - Set_BusB_To = 4'b1000; - end - - MCycle[3] : - begin - Inc_WZ = 1'b1; - Set_Addr_To = aZI; - Write = 1'b1; - Set_BusB_To = 4'b1001; - end - - MCycle[4] : - Write = 1'b1; - default :; - endcase - end - else if (Mode < 2 ) - begin - // EX AF,AF' - ExchangeAF = 1'b1; - end - end // case: 8'b00001000 - - 8'b11011001 : - begin - if (Mode == 3 ) - begin - // RETI - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[0] : - Set_Addr_To = aSP; - MCycle[1] : - begin - IncDec_16 = 4'b0111; - Set_Addr_To = aSP; - LDZ = 1'b1; - end - - MCycle[2] : - begin - Jump = 1'b1; - IncDec_16 = 4'b0111; - I_RETN = 1'b1; - SetEI = 1'b1; - end - default :; - endcase - end - else if (Mode < 2 ) - begin - // EXX - ExchangeRS = 1'b1; - end - end // case: 8'b11011001 - - 8'b11100011 : - begin - if (Mode != 3 ) - begin - // EX (SP),HL - MCycles = 3'b101; - case (1'b1) // MCycle - MCycle[0] : - Set_Addr_To = aSP; - MCycle[1] : - begin - Read_To_Reg = 1'b1; - Set_BusA_To = 4'b0101; - Set_BusB_To = 4'b0101; - Set_Addr_To = aSP; - end - MCycle[2] : - begin - IncDec_16 = 4'b0111; - Set_Addr_To = aSP; - TStates = 3'b100; - Write = 1'b1; - end - MCycle[3] : - begin - Read_To_Reg = 1'b1; - Set_BusA_To = 4'b0100; - Set_BusB_To = 4'b0100; - Set_Addr_To = aSP; - end - MCycle[4] : - begin - IncDec_16 = 4'b1111; - TStates = 3'b101; - Write = 1'b1; - end - - default :; - endcase - end // if (Mode != 3 ) - end // case: 8'b11100011 - - - // 8 BIT ARITHMETIC AND LOGICAL GROUP - 8'b10xxxxxx : - begin - if (IR[2:0] == 3'b110) - begin - // ADD A,(HL) - // ADC A,(HL) - // SUB A,(HL) - // SBC A,(HL) - // AND A,(HL) - // OR A,(HL) - // XOR A,(HL) - // CP A,(HL) - MCycles = 3'b010; - case (1'b1) // MCycle - MCycle[0] : - Set_Addr_To = aXY; - MCycle[1] : - begin - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - Set_BusB_To[2:0] = SSS; - Set_BusA_To[2:0] = 3'b111; - end - - default :; - endcase // case(MCycle) - end // if (IR[2:0] == 3'b110) - else - begin - // ADD A,r - // ADC A,r - // SUB A,r - // SBC A,r - // AND A,r - // OR A,r - // XOR A,r - // CP A,r - Set_BusB_To[2:0] = SSS; - Set_BusA_To[2:0] = 3'b111; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - end // else: !if(IR[2:0] == 3'b110) - end // case: 8'b10000000,8'b10000001,8'b10000010,8'b10000011,8'b10000100,8'b10000101,8'b10000111,... - - 8'b11xxx110 : - begin - // ADD A,n - // ADC A,n - // SUB A,n - // SBC A,n - // AND A,n - // OR A,n - // XOR A,n - // CP A,n - MCycles = 3'b010; - if (MCycle[1] ) - begin - Inc_PC = 1'b1; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - Set_BusB_To[2:0] = SSS; - Set_BusA_To[2:0] = 3'b111; - end - end - - 8'b00xxx100 : - begin - if (IRB[5:3] == 3'b110) - begin - // INC (HL) - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[0] : - Set_Addr_To = aXY; - MCycle[1] : - begin - TStates = 3'b100; - Set_Addr_To = aXY; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - PreserveC = 1'b1; - ALU_Op = 4'b0000; - Set_BusB_To = 4'b1010; - Set_BusA_To[2:0] = DDD; - end // case: 2 - - MCycle[2] : - Write = 1'b1; - default :; - endcase // case(MCycle) - end // case: 8'b00110100 - else - begin - // INC r - Set_BusB_To = 4'b1010; - Set_BusA_To[2:0] = DDD; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - PreserveC = 1'b1; - ALU_Op = 4'b0000; - end - end - - 8'b00xxx101 : - begin - if (IRB[5:3] == 3'b110) - begin - // DEC (HL) - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[0] : - Set_Addr_To = aXY; - MCycle[1] : - begin - TStates = 3'b100; - Set_Addr_To = aXY; - ALU_Op = 4'b0010; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - PreserveC = 1'b1; - Set_BusB_To = 4'b1010; - Set_BusA_To[2:0] = DDD; - end // case: 2 - - MCycle[2] : - Write = 1'b1; - default :; - endcase // case(MCycle) - end - else - begin - // DEC r - Set_BusB_To = 4'b1010; - Set_BusA_To[2:0] = DDD; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - PreserveC = 1'b1; - ALU_Op = 4'b0010; - end - end - - // GENERAL PURPOSE ARITHMETIC AND CPU CONTROL GROUPS - 8'b00100111 : - begin - // DAA - Set_BusA_To[2:0] = 3'b111; - Read_To_Reg = 1'b1; - ALU_Op = 4'b1100; - Save_ALU = 1'b1; - end - - 8'b00101111 : - // CPL - I_CPL = 1'b1; - - 8'b00111111 : - // CCF - I_CCF = 1'b1; - - 8'b00110111 : - // SCF - I_SCF = 1'b1; - - 8'b00000000 : - begin - if (NMICycle == 1'b1 ) - begin - // NMI - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[0] : - begin - TStates = 3'b101; - IncDec_16 = 4'b1111; - Set_Addr_To = aSP; - Set_BusB_To = 4'b1101; - end - - MCycle[1] : - begin - TStates = 3'b100; - Write = 1'b1; - IncDec_16 = 4'b1111; - Set_Addr_To = aSP; - Set_BusB_To = 4'b1100; - end - - MCycle[2] : - begin - TStates = 3'b100; - Write = 1'b1; - end - - default :; - endcase // case(MCycle) - - end - else if (IntCycle == 1'b1 ) - begin - // INT (IM 2) - MCycles = 3'b101; - case (1'b1) // MCycle - MCycle[0] : - begin - LDZ = 1'b1; - TStates = 3'b101; - IncDec_16 = 4'b1111; - Set_Addr_To = aSP; - Set_BusB_To = 4'b1101; - end - - MCycle[1] : - begin - TStates = 3'b100; - Write = 1'b1; - IncDec_16 = 4'b1111; - Set_Addr_To = aSP; - Set_BusB_To = 4'b1100; - end - - MCycle[2] : - begin - TStates = 3'b100; - Write = 1'b1; - end - - MCycle[3] : - begin - Inc_PC = 1'b1; - LDZ = 1'b1; - end - - MCycle[4] : - Jump = 1'b1; - default :; - endcase - end - end // case: 8'b00000000 - - 8'b11110011 : - // DI - SetDI = 1'b1; - - 8'b11111011 : - // EI - SetEI = 1'b1; - - // 16 BIT ARITHMETIC GROUP - 8'b00001001,8'b00011001,8'b00101001,8'b00111001 : - begin - // ADD HL,ss - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[1] : - begin - NoRead = 1'b1; - ALU_Op = 4'b0000; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - Set_BusA_To[2:0] = 3'b101; - case (IR[5:4]) - 0,1,2 : - begin - Set_BusB_To[2:1] = IR[5:4]; - Set_BusB_To[0] = 1'b1; - end - - default : - Set_BusB_To = 4'b1000; - endcase // case(IR[5:4]) - - TStates = 3'b100; - Arith16 = 1'b1; - end // case: 2 - - MCycle[2] : - begin - NoRead = 1'b1; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - ALU_Op = 4'b0001; - Set_BusA_To[2:0] = 3'b100; - case (IR[5:4]) - 0,1,2 : - Set_BusB_To[2:1] = IR[5:4]; - default : - Set_BusB_To = 4'b1001; - endcase - Arith16 = 1'b1; - end // case: 3 - - default :; - endcase // case(MCycle) - end // case: 8'b00001001,8'b00011001,8'b00101001,8'b00111001 - - 8'b00000011,8'b00010011,8'b00100011,8'b00110011 : - begin - // INC ss - TStates = 3'b110; - IncDec_16[3:2] = 2'b01; - IncDec_16[1:0] = DPAIR; - end - - 8'b00001011,8'b00011011,8'b00101011,8'b00111011 : - begin - // DEC ss - TStates = 3'b110; - IncDec_16[3:2] = 2'b11; - IncDec_16[1:0] = DPAIR; - end - - // ROTATE AND SHIFT GROUP - 8'b00000111, - // RLCA - 8'b00010111, - // RLA - 8'b00001111, - // RRCA - 8'b00011111 : - // RRA - begin - Set_BusA_To[2:0] = 3'b111; - ALU_Op = 4'b1000; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - end // case: 8'b00000111,... - - - // JUMP GROUP - 8'b11000011 : - begin - // JP nn - MCycles = 3'b011; - if (MCycle[1]) - begin - Inc_PC = 1'b1; - LDZ = 1'b1; - end - - if (MCycle[2]) - begin - Inc_PC = 1'b1; - Jump = 1'b1; - end - - end // case: 8'b11000011 - - 8'b11000010,8'b11001010,8'b11010010,8'b11011010,8'b11100010,8'b11101010,8'b11110010,8'b11111010 : - begin - if (IR[5] == 1'b1 && Mode == 3 ) - begin - case (IRB[4:3]) - 2'b00 : - begin - // LD ($FF00+C),A - MCycles = 3'b010; - case (1'b1) // MCycle - MCycle[0] : - begin - Set_Addr_To = aBC; - Set_BusB_To = 4'b0111; - end - MCycle[1] : - begin - Write = 1'b1; - IORQ = 1'b1; - end - - default :; - endcase // case(MCycle) - end // case: 2'b00 - - 2'b01 : - begin - // LD (nn),A - MCycles = 3'b100; - case (1'b1) // MCycle - MCycle[1] : - begin - Inc_PC = 1'b1; - LDZ = 1'b1; - end - - MCycle[2] : - begin - Set_Addr_To = aZI; - Inc_PC = 1'b1; - Set_BusB_To = 4'b0111; - end - - MCycle[3] : - Write = 1'b1; - default :; - endcase // case(MCycle) - end // case: default :... - - 2'b10 : - begin - // LD A,($FF00+C) - MCycles = 3'b010; - case (1'b1) // MCycle - MCycle[0] : - Set_Addr_To = aBC; - MCycle[1] : - begin - Read_To_Acc = 1'b1; - IORQ = 1'b1; - end - default :; - endcase // case(MCycle) - end // case: 2'b10 - - 2'b11 : - begin - // LD A,(nn) - MCycles = 3'b100; - case (1'b1) // MCycle - MCycle[1] : - begin - Inc_PC = 1'b1; - LDZ = 1'b1; - end - MCycle[2] : - begin - Set_Addr_To = aZI; - Inc_PC = 1'b1; - end - MCycle[3] : - Read_To_Acc = 1'b1; - default :; - endcase // case(MCycle) - end - endcase - end - else - begin - // JP cc,nn - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[1] : - begin - Inc_PC = 1'b1; - LDZ = 1'b1; - end - MCycle[2] : - begin - Inc_PC = 1'b1; - if (is_cc_true(F, IR[5:3]) ) - begin - Jump = 1'b1; - end - end - - default :; - endcase - end // else: !if(DPAIR == 2'b11 ) - end // case: 8'b11000010,8'b11001010,8'b11010010,8'b11011010,8'b11100010,8'b11101010,8'b11110010,8'b11111010 - - 8'b00011000 : - begin - if (Mode != 2 ) - begin - // JR e - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[1] : - Inc_PC = 1'b1; - MCycle[2] : - begin - NoRead = 1'b1; - JumpE = 1'b1; - TStates = 3'b101; - end - default :; - endcase - end // if (Mode != 2 ) - end // case: 8'b00011000 - - 8'b00111000 : - begin - if (Mode != 2 ) - begin - // JR C,e - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[1] : - begin - Inc_PC = 1'b1; - if (F[Flag_C] == 1'b0 ) - begin - MCycles = 3'b010; - end - end - - MCycle[2] : - begin - NoRead = 1'b1; - JumpE = 1'b1; - TStates = 3'b101; - end - default :; - endcase - end // if (Mode != 2 ) - end // case: 8'b00111000 - - 8'b00110000 : - begin - if (Mode != 2 ) - begin - // JR NC,e - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[1] : - begin - Inc_PC = 1'b1; - if (F[Flag_C] == 1'b1 ) - begin - MCycles = 3'b010; - end - end - - MCycle[2] : - begin - NoRead = 1'b1; - JumpE = 1'b1; - TStates = 3'b101; - end - default :; - endcase - end // if (Mode != 2 ) - end // case: 8'b00110000 - - 8'b00101000 : - begin - if (Mode != 2 ) - begin - // JR Z,e - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[1] : - begin - Inc_PC = 1'b1; - if (F[Flag_Z] == 1'b0 ) - begin - MCycles = 3'b010; - end - end - - MCycle[2] : - begin - NoRead = 1'b1; - JumpE = 1'b1; - TStates = 3'b101; - end - - default :; - endcase - end // if (Mode != 2 ) - end // case: 8'b00101000 - - 8'b00100000 : - begin - if (Mode != 2 ) - begin - // JR NZ,e - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[1] : - begin - Inc_PC = 1'b1; - if (F[Flag_Z] == 1'b1 ) - begin - MCycles = 3'b010; - end - end - MCycle[2] : - begin - NoRead = 1'b1; - JumpE = 1'b1; - TStates = 3'b101; - end - default :; - endcase - end // if (Mode != 2 ) - end // case: 8'b00100000 - - 8'b11101001 : - // JP (HL) - JumpXY = 1'b1; - - 8'b00010000 : - begin - if (Mode == 3 ) - begin - I_DJNZ = 1'b1; - end - else if (Mode < 2 ) - begin - // DJNZ,e - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[0] : - begin - TStates = 3'b101; - I_DJNZ = 1'b1; - Set_BusB_To = 4'b1010; - Set_BusA_To[2:0] = 3'b000; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - ALU_Op = 4'b0010; - end - MCycle[1] : - begin - I_DJNZ = 1'b1; - Inc_PC = 1'b1; - end - MCycle[2] : - begin - NoRead = 1'b1; - JumpE = 1'b1; - TStates = 3'b101; - end - default :; - endcase - end // if (Mode < 2 ) - end // case: 8'b00010000 - - - // CALL AND RETURN GROUP - 8'b11001101 : - begin - // CALL nn - MCycles = 3'b101; - case (1'b1) // MCycle - MCycle[1] : - begin - Inc_PC = 1'b1; - LDZ = 1'b1; - end - MCycle[2] : - begin - IncDec_16 = 4'b1111; - Inc_PC = 1'b1; - TStates = 3'b100; - Set_Addr_To = aSP; - LDW = 1'b1; - Set_BusB_To = 4'b1101; - end - MCycle[3] : - begin - Write = 1'b1; - IncDec_16 = 4'b1111; - Set_Addr_To = aSP; - Set_BusB_To = 4'b1100; - end - MCycle[4] : - begin - Write = 1'b1; - Call = 1'b1; - end - default :; - endcase // case(MCycle) - end // case: 8'b11001101 - - 8'b11000100,8'b11001100,8'b11010100,8'b11011100,8'b11100100,8'b11101100,8'b11110100,8'b11111100 : - begin - if (IR[5] == 1'b0 || Mode != 3 ) - begin - // CALL cc,nn - MCycles = 3'b101; - case (1'b1) // MCycle - MCycle[1] : - begin - Inc_PC = 1'b1; - LDZ = 1'b1; - end - MCycle[2] : - begin - Inc_PC = 1'b1; - LDW = 1'b1; - if (is_cc_true(F, IR[5:3]) ) - begin - IncDec_16 = 4'b1111; - Set_Addr_To = aSP; - TStates = 3'b100; - Set_BusB_To = 4'b1101; - end - else - begin - MCycles = 3'b011; - end // else: !if(is_cc_true(F, IR[5:3]) ) - end // case: 3 - - MCycle[3] : - begin - Write = 1'b1; - IncDec_16 = 4'b1111; - Set_Addr_To = aSP; - Set_BusB_To = 4'b1100; - end - - MCycle[4] : - begin - Write = 1'b1; - Call = 1'b1; - end - - default :; - endcase - end // if (IR[5] == 1'b0 || Mode != 3 ) - end // case: 8'b11000100,8'b11001100,8'b11010100,8'b11011100,8'b11100100,8'b11101100,8'b11110100,8'b11111100 - - 8'b11001001 : - begin - // RET - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[0] : - begin - TStates = 3'b101; - Set_Addr_To = aSP; - end - - MCycle[1] : - begin - IncDec_16 = 4'b0111; - Set_Addr_To = aSP; - LDZ = 1'b1; - end - - MCycle[2] : - begin - Jump = 1'b1; - IncDec_16 = 4'b0111; - end - - default :; - endcase // case(MCycle) - end // case: 8'b11001001 - - 8'b11000000,8'b11001000,8'b11010000,8'b11011000,8'b11100000,8'b11101000,8'b11110000,8'b11111000 : - begin - if (IR[5] == 1'b1 && Mode == 3 ) - begin - case (IRB[4:3]) - 2'b00 : - begin - // LD ($FF00+nn),A - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[1] : - begin - Inc_PC = 1'b1; - Set_Addr_To = aIOA; - Set_BusB_To = 4'b0111; - end - - MCycle[2] : - Write = 1'b1; - default :; - endcase // case(MCycle) - end // case: 2'b00 - - 2'b01 : - begin - // ADD SP,n - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[1] : - begin - ALU_Op = 4'b0000; - Inc_PC = 1'b1; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - Set_BusA_To = 4'b1000; - Set_BusB_To = 4'b0110; - end - - MCycle[2] : - begin - NoRead = 1'b1; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - ALU_Op = 4'b0001; - Set_BusA_To = 4'b1001; - Set_BusB_To = 4'b1110; // Incorrect unsigned !!!!!!!!!!!!!!!!!!!!! - end - - default :; - endcase // case(MCycle) - end // case: 2'b01 - - 2'b10 : - begin - // LD A,($FF00+nn) - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[1] : - begin - Inc_PC = 1'b1; - Set_Addr_To = aIOA; - end - - MCycle[2] : - Read_To_Acc = 1'b1; - default :; - endcase // case(MCycle) - end // case: 2'b10 - - 2'b11 : - begin - // LD HL,SP+n -- Not correct !!!!!!!!!!!!!!!!!!! - MCycles = 3'b101; - case (1'b1) // MCycle - MCycle[1] : - begin - Inc_PC = 1'b1; - LDZ = 1'b1; - end - - MCycle[2] : - begin - Set_Addr_To = aZI; - Inc_PC = 1'b1; - LDW = 1'b1; - end - - MCycle[3] : - begin - Set_BusA_To[2:0] = 3'b101; // L - Read_To_Reg = 1'b1; - Inc_WZ = 1'b1; - Set_Addr_To = aZI; - end - - MCycle[4] : - begin - Set_BusA_To[2:0] = 3'b100; // H - Read_To_Reg = 1'b1; - end - - default :; - endcase // case(MCycle) - end // case: 2'b11 - - endcase // case(IRB[4:3]) - - end - else - begin - // RET cc - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[0] : - begin - if (is_cc_true(F, IR[5:3]) ) - begin - Set_Addr_To = aSP; - end - else - begin - MCycles = 3'b001; - end - TStates = 3'b101; - end // case: 1 - - MCycle[1] : - begin - IncDec_16 = 4'b0111; - Set_Addr_To = aSP; - LDZ = 1'b1; - end - MCycle[2] : - begin - Jump = 1'b1; - IncDec_16 = 4'b0111; - end - default :; - endcase - end // else: !if(IR[5] == 1'b1 && Mode == 3 ) - end // case: 8'b11000000,8'b11001000,8'b11010000,8'b11011000,8'b11100000,8'b11101000,8'b11110000,8'b11111000 - - 8'b11000111,8'b11001111,8'b11010111,8'b11011111,8'b11100111,8'b11101111,8'b11110111,8'b11111111 : - begin - // RST p - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[0] : - begin - TStates = 3'b101; - IncDec_16 = 4'b1111; - Set_Addr_To = aSP; - Set_BusB_To = 4'b1101; - end - - MCycle[1] : - begin - Write = 1'b1; - IncDec_16 = 4'b1111; - Set_Addr_To = aSP; - Set_BusB_To = 4'b1100; - end - - MCycle[2] : - begin - Write = 1'b1; - RstP = 1'b1; - end - - default :; - endcase // case(MCycle) - end // case: 8'b11000111,8'b11001111,8'b11010111,8'b11011111,8'b11100111,8'b11101111,8'b11110111,8'b11111111 - - // INPUT AND OUTPUT GROUP - 8'b11011011 : - begin - if (Mode != 3 ) - begin - // IN A,(n) - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[1] : - begin - Inc_PC = 1'b1; - Set_Addr_To = aIOA; - end - - MCycle[2] : - begin - Read_To_Acc = 1'b1; - IORQ = 1'b1; - end - - default :; - endcase - end // if (Mode != 3 ) - end // case: 8'b11011011 - - 8'b11010011 : - begin - if (Mode != 3 ) - begin - // OUT (n),A - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[1] : - begin - Inc_PC = 1'b1; - Set_Addr_To = aIOA; - Set_BusB_To = 4'b0111; - end - - MCycle[2] : - begin - Write = 1'b1; - IORQ = 1'b1; - end - - default :; - endcase - end // if (Mode != 3 ) - end // case: 8'b11010011 - - - //---------------------------------------------------------------------------- - //---------------------------------------------------------------------------- - // MULTIBYTE INSTRUCTIONS - //---------------------------------------------------------------------------- - //---------------------------------------------------------------------------- - - 8'b11001011 : - begin - if (Mode != 2 ) - begin - Prefix = 2'b01; - end - end - - 8'b11101101 : - begin - if (Mode < 2 ) - begin - Prefix = 2'b10; - end - end - - 8'b11011101,8'b11111101 : - begin - if (Mode < 2 ) - begin - Prefix = 2'b11; - end - end - - endcase // case(IRB) - end // case: 2'b00 - - - 2'b01 : - begin - - - //---------------------------------------------------------------------------- - // - // CB prefixed instructions - // - //---------------------------------------------------------------------------- - - Set_BusA_To[2:0] = IR[2:0]; - Set_BusB_To[2:0] = IR[2:0]; - - case (IRB) - 8'b00000000,8'b00000001,8'b00000010,8'b00000011,8'b00000100,8'b00000101,8'b00000111, - 8'b00010000,8'b00010001,8'b00010010,8'b00010011,8'b00010100,8'b00010101,8'b00010111, - 8'b00001000,8'b00001001,8'b00001010,8'b00001011,8'b00001100,8'b00001101,8'b00001111, - 8'b00011000,8'b00011001,8'b00011010,8'b00011011,8'b00011100,8'b00011101,8'b00011111, - 8'b00100000,8'b00100001,8'b00100010,8'b00100011,8'b00100100,8'b00100101,8'b00100111, - 8'b00101000,8'b00101001,8'b00101010,8'b00101011,8'b00101100,8'b00101101,8'b00101111, - 8'b00110000,8'b00110001,8'b00110010,8'b00110011,8'b00110100,8'b00110101,8'b00110111, - 8'b00111000,8'b00111001,8'b00111010,8'b00111011,8'b00111100,8'b00111101,8'b00111111 : - begin - // RLC r - // RL r - // RRC r - // RR r - // SLA r - // SRA r - // SRL r - // SLL r (Undocumented) / SWAP r - if (MCycle[0] ) begin - ALU_Op = 4'b1000; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - end - end // case: 8'b00000000,8'b00000001,8'b00000010,8'b00000011,8'b00000100,8'b00000101,8'b00000111,... - - 8'b00000110,8'b00010110,8'b00001110,8'b00011110,8'b00101110,8'b00111110,8'b00100110,8'b00110110 : - begin - // RLC (HL) - // RL (HL) - // RRC (HL) - // RR (HL) - // SRA (HL) - // SRL (HL) - // SLA (HL) - // SLL (HL) (Undocumented) / SWAP (HL) - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[0], MCycle[6] : - Set_Addr_To = aXY; - MCycle[1] : - begin - ALU_Op = 4'b1000; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - Set_Addr_To = aXY; - TStates = 3'b100; - end - - MCycle[2] : - Write = 1'b1; - default :; - endcase // case(MCycle) - end // case: 8'b00000110,8'b00010110,8'b00001110,8'b00011110,8'b00101110,8'b00111110,8'b00100110,8'b00110110 - - 8'b01000000,8'b01000001,8'b01000010,8'b01000011,8'b01000100,8'b01000101,8'b01000111, - 8'b01001000,8'b01001001,8'b01001010,8'b01001011,8'b01001100,8'b01001101,8'b01001111, - 8'b01010000,8'b01010001,8'b01010010,8'b01010011,8'b01010100,8'b01010101,8'b01010111, - 8'b01011000,8'b01011001,8'b01011010,8'b01011011,8'b01011100,8'b01011101,8'b01011111, - 8'b01100000,8'b01100001,8'b01100010,8'b01100011,8'b01100100,8'b01100101,8'b01100111, - 8'b01101000,8'b01101001,8'b01101010,8'b01101011,8'b01101100,8'b01101101,8'b01101111, - 8'b01110000,8'b01110001,8'b01110010,8'b01110011,8'b01110100,8'b01110101,8'b01110111, - 8'b01111000,8'b01111001,8'b01111010,8'b01111011,8'b01111100,8'b01111101,8'b01111111 : - begin - // BIT b,r - if (MCycle[0] ) - begin - Set_BusB_To[2:0] = IR[2:0]; - ALU_Op = 4'b1001; - end - end // case: 8'b01000000,8'b01000001,8'b01000010,8'b01000011,8'b01000100,8'b01000101,8'b01000111,... - - 8'b01000110,8'b01001110,8'b01010110,8'b01011110,8'b01100110,8'b01101110,8'b01110110,8'b01111110 : - begin - // BIT b,(HL) - MCycles = 3'b010; - case (1'b1) // MCycle - MCycle[0], MCycle[6] : - Set_Addr_To = aXY; - MCycle[1] : - begin - ALU_Op = 4'b1001; - TStates = 3'b100; - end - - default :; - endcase // case(MCycle) - end // case: 8'b01000110,8'b01001110,8'b01010110,8'b01011110,8'b01100110,8'b01101110,8'b01110110,8'b01111110 - - 8'b11000000,8'b11000001,8'b11000010,8'b11000011,8'b11000100,8'b11000101,8'b11000111, - 8'b11001000,8'b11001001,8'b11001010,8'b11001011,8'b11001100,8'b11001101,8'b11001111, - 8'b11010000,8'b11010001,8'b11010010,8'b11010011,8'b11010100,8'b11010101,8'b11010111, - 8'b11011000,8'b11011001,8'b11011010,8'b11011011,8'b11011100,8'b11011101,8'b11011111, - 8'b11100000,8'b11100001,8'b11100010,8'b11100011,8'b11100100,8'b11100101,8'b11100111, - 8'b11101000,8'b11101001,8'b11101010,8'b11101011,8'b11101100,8'b11101101,8'b11101111, - 8'b11110000,8'b11110001,8'b11110010,8'b11110011,8'b11110100,8'b11110101,8'b11110111, - 8'b11111000,8'b11111001,8'b11111010,8'b11111011,8'b11111100,8'b11111101,8'b11111111 : - begin - // SET b,r - if (MCycle[0] ) - begin - ALU_Op = 4'b1010; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - end - end // case: 8'b11000000,8'b11000001,8'b11000010,8'b11000011,8'b11000100,8'b11000101,8'b11000111,... - - 8'b11000110,8'b11001110,8'b11010110,8'b11011110,8'b11100110,8'b11101110,8'b11110110,8'b11111110 : - begin - // SET b,(HL) - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[0], MCycle[6] : - Set_Addr_To = aXY; - MCycle[1] : - begin - ALU_Op = 4'b1010; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - Set_Addr_To = aXY; - TStates = 3'b100; - end - MCycle[2] : - Write = 1'b1; - default :; - endcase // case(MCycle) - end // case: 8'b11000110,8'b11001110,8'b11010110,8'b11011110,8'b11100110,8'b11101110,8'b11110110,8'b11111110 - - 8'b10000000,8'b10000001,8'b10000010,8'b10000011,8'b10000100,8'b10000101,8'b10000111, - 8'b10001000,8'b10001001,8'b10001010,8'b10001011,8'b10001100,8'b10001101,8'b10001111, - 8'b10010000,8'b10010001,8'b10010010,8'b10010011,8'b10010100,8'b10010101,8'b10010111, - 8'b10011000,8'b10011001,8'b10011010,8'b10011011,8'b10011100,8'b10011101,8'b10011111, - 8'b10100000,8'b10100001,8'b10100010,8'b10100011,8'b10100100,8'b10100101,8'b10100111, - 8'b10101000,8'b10101001,8'b10101010,8'b10101011,8'b10101100,8'b10101101,8'b10101111, - 8'b10110000,8'b10110001,8'b10110010,8'b10110011,8'b10110100,8'b10110101,8'b10110111, - 8'b10111000,8'b10111001,8'b10111010,8'b10111011,8'b10111100,8'b10111101,8'b10111111 : - begin - // RES b,r - if (MCycle[0] ) - begin - ALU_Op = 4'b1011; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - end - end // case: 8'b10000000,8'b10000001,8'b10000010,8'b10000011,8'b10000100,8'b10000101,8'b10000111,... - - 8'b10000110,8'b10001110,8'b10010110,8'b10011110,8'b10100110,8'b10101110,8'b10110110,8'b10111110 : - begin - // RES b,(HL) - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[0], MCycle[6] : - Set_Addr_To = aXY; - MCycle[1] : - begin - ALU_Op = 4'b1011; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - Set_Addr_To = aXY; - TStates = 3'b100; - end - - MCycle[2] : - Write = 1'b1; - default :; - endcase // case(MCycle) - end // case: 8'b10000110,8'b10001110,8'b10010110,8'b10011110,8'b10100110,8'b10101110,8'b10110110,8'b10111110 - - endcase // case(IRB) - end // case: 2'b01 - - - default : - begin : default_ed_block - - //---------------------------------------------------------------------------- - // - // ED prefixed instructions - // - //---------------------------------------------------------------------------- - - case (IRB) - 8'b00000000,8'b00000001,8'b00000010,8'b00000011,8'b00000100,8'b00000101,8'b00000110,8'b00000111 - ,8'b00001000,8'b00001001,8'b00001010,8'b00001011,8'b00001100,8'b00001101,8'b00001110,8'b00001111 - ,8'b00010000,8'b00010001,8'b00010010,8'b00010011,8'b00010100,8'b00010101,8'b00010110,8'b00010111 - ,8'b00011000,8'b00011001,8'b00011010,8'b00011011,8'b00011100,8'b00011101,8'b00011110,8'b00011111 - ,8'b00100000,8'b00100001,8'b00100010,8'b00100011,8'b00100100,8'b00100101,8'b00100110,8'b00100111 - ,8'b00101000,8'b00101001,8'b00101010,8'b00101011,8'b00101100,8'b00101101,8'b00101110,8'b00101111 - ,8'b00110000,8'b00110001,8'b00110010,8'b00110011,8'b00110100,8'b00110101,8'b00110110,8'b00110111 - ,8'b00111000,8'b00111001,8'b00111010,8'b00111011,8'b00111100,8'b00111101,8'b00111110,8'b00111111 - - - ,8'b10000000,8'b10000001,8'b10000010,8'b10000011,8'b10000100,8'b10000101,8'b10000110,8'b10000111 - ,8'b10001000,8'b10001001,8'b10001010,8'b10001011,8'b10001100,8'b10001101,8'b10001110,8'b10001111 - ,8'b10010000,8'b10010001,8'b10010010,8'b10010011,8'b10010100,8'b10010101,8'b10010110,8'b10010111 - ,8'b10011000,8'b10011001,8'b10011010,8'b10011011,8'b10011100,8'b10011101,8'b10011110,8'b10011111 - , 8'b10100100,8'b10100101,8'b10100110,8'b10100111 - , 8'b10101100,8'b10101101,8'b10101110,8'b10101111 - , 8'b10110100,8'b10110101,8'b10110110,8'b10110111 - , 8'b10111100,8'b10111101,8'b10111110,8'b10111111 - ,8'b11000000,8'b11000001,8'b11000010,8'b11000011,8'b11000100,8'b11000101,8'b11000110,8'b11000111 - ,8'b11001000,8'b11001001,8'b11001010,8'b11001011,8'b11001100,8'b11001101,8'b11001110,8'b11001111 - ,8'b11010000,8'b11010001,8'b11010010,8'b11010011,8'b11010100,8'b11010101,8'b11010110,8'b11010111 - ,8'b11011000,8'b11011001,8'b11011010,8'b11011011,8'b11011100,8'b11011101,8'b11011110,8'b11011111 - ,8'b11100000,8'b11100001,8'b11100010,8'b11100011,8'b11100100,8'b11100101,8'b11100110,8'b11100111 - ,8'b11101000,8'b11101001,8'b11101010,8'b11101011,8'b11101100,8'b11101101,8'b11101110,8'b11101111 - ,8'b11110000,8'b11110001,8'b11110010,8'b11110011,8'b11110100,8'b11110101,8'b11110110,8'b11110111 - ,8'b11111000,8'b11111001,8'b11111010,8'b11111011,8'b11111100,8'b11111101,8'b11111110,8'b11111111 : - ; // NOP, undocumented - - 8'b01111110,8'b01111111 : - // NOP, undocumented - ; - // 8 BIT LOAD GROUP - 8'b01010111 : - begin - // LD A,I - Special_LD = 3'b100; - TStates = 3'b101; - end - - 8'b01011111 : - begin - // LD A,R - Special_LD = 3'b101; - TStates = 3'b101; - end - - 8'b01000111 : - begin - // LD I,A - Special_LD = 3'b110; - TStates = 3'b101; - end - - 8'b01001111 : - begin - // LD R,A - Special_LD = 3'b111; - TStates = 3'b101; - end - - // 16 BIT LOAD GROUP - 8'b01001011,8'b01011011,8'b01101011,8'b01111011 : - begin - // LD dd,(nn) - MCycles = 3'b101; - case (1'b1) // MCycle - MCycle[1] : - begin - Inc_PC = 1'b1; - LDZ = 1'b1; - end - - MCycle[2] : - begin - Set_Addr_To = aZI; - Inc_PC = 1'b1; - LDW = 1'b1; - end - - MCycle[3] : - begin - Read_To_Reg = 1'b1; - if (IR[5:4] == 2'b11 ) - begin - Set_BusA_To = 4'b1000; - end - else - begin - Set_BusA_To[2:1] = IR[5:4]; - Set_BusA_To[0] = 1'b1; - end - Inc_WZ = 1'b1; - Set_Addr_To = aZI; - end // case: 4 - - MCycle[4] : - begin - Read_To_Reg = 1'b1; - if (IR[5:4] == 2'b11 ) - begin - Set_BusA_To = 4'b1001; - end - else - begin - Set_BusA_To[2:1] = IR[5:4]; - Set_BusA_To[0] = 1'b0; - end - end // case: 5 - - default :; - endcase // case(MCycle) - end // case: 8'b01001011,8'b01011011,8'b01101011,8'b01111011 - - - 8'b01000011,8'b01010011,8'b01100011,8'b01110011 : - begin - // LD (nn),dd - MCycles = 3'b101; - case (1'b1) // MCycle - MCycle[1] : - begin - Inc_PC = 1'b1; - LDZ = 1'b1; - end - - MCycle[2] : - begin - Set_Addr_To = aZI; - Inc_PC = 1'b1; - LDW = 1'b1; - if (IR[5:4] == 2'b11 ) - begin - Set_BusB_To = 4'b1000; - end - else - begin - Set_BusB_To[2:1] = IR[5:4]; - Set_BusB_To[0] = 1'b1; - Set_BusB_To[3] = 1'b0; - end - end // case: 3 - - MCycle[3] : - begin - Inc_WZ = 1'b1; - Set_Addr_To = aZI; - Write = 1'b1; - if (IR[5:4] == 2'b11 ) - begin - Set_BusB_To = 4'b1001; - end - else - begin - Set_BusB_To[2:1] = IR[5:4]; - Set_BusB_To[0] = 1'b0; - Set_BusB_To[3] = 1'b0; - end - end // case: 4 - - MCycle[4] : - begin - Write = 1'b1; - end - - default :; - endcase // case(MCycle) - end // case: 8'b01000011,8'b01010011,8'b01100011,8'b01110011 - - 8'b10100000 , 8'b10101000 , 8'b10110000 , 8'b10111000 : - begin - // LDI, LDD, LDIR, LDDR - MCycles = 3'b100; - case (1'b1) // MCycle - MCycle[0] : - begin - Set_Addr_To = aXY; - IncDec_16 = 4'b1100; // BC - end - - MCycle[1] : - begin - Set_BusB_To = 4'b0110; - Set_BusA_To[2:0] = 3'b111; - ALU_Op = 4'b0000; - Set_Addr_To = aDE; - if (IR[3] == 1'b0 ) - begin - IncDec_16 = 4'b0110; // IX - end - else - begin - IncDec_16 = 4'b1110; - end - end // case: 2 - - MCycle[2] : - begin - I_BT = 1'b1; - TStates = 3'b101; - Write = 1'b1; - if (IR[3] == 1'b0 ) - begin - IncDec_16 = 4'b0101; // DE - end - else - begin - IncDec_16 = 4'b1101; - end - end // case: 3 - - MCycle[3] : - begin - NoRead = 1'b1; - TStates = 3'b101; - end - - default :; - endcase // case(MCycle) - end // case: 8'b10100000 , 8'b10101000 , 8'b10110000 , 8'b10111000 - - 8'b10100001 , 8'b10101001 , 8'b10110001 , 8'b10111001 : - begin - // CPI, CPD, CPIR, CPDR - MCycles = 3'b100; - case (1'b1) // MCycle - MCycle[0] : - begin - Set_Addr_To = aXY; - IncDec_16 = 4'b1100; // BC - end - - MCycle[1] : - begin - Set_BusB_To = 4'b0110; - Set_BusA_To[2:0] = 3'b111; - ALU_Op = 4'b0111; - Save_ALU = 1'b1; - PreserveC = 1'b1; - if (IR[3] == 1'b0 ) - begin - IncDec_16 = 4'b0110; - end - else - begin - IncDec_16 = 4'b1110; - end - end // case: 2 - - MCycle[2] : - begin - NoRead = 1'b1; - I_BC = 1'b1; - TStates = 3'b101; - end - - MCycle[3] : - begin - NoRead = 1'b1; - TStates = 3'b101; - end - - default :; - endcase // case(MCycle) - end // case: 8'b10100001 , 8'b10101001 , 8'b10110001 , 8'b10111001 - - 8'b01000100,8'b01001100,8'b01010100,8'b01011100,8'b01100100,8'b01101100,8'b01110100,8'b01111100 : - begin - // NEG - ALU_Op = 4'b0010; - Set_BusB_To = 4'b0111; - Set_BusA_To = 4'b1010; - Read_To_Acc = 1'b1; - Save_ALU = 1'b1; - end - - 8'b01000110,8'b01001110,8'b01100110,8'b01101110 : - begin - // IM 0 - IMode = 2'b00; - end - - 8'b01010110,8'b01110110 : - // IM 1 - IMode = 2'b01; - - 8'b01011110,8'b01110111 : - // IM 2 - IMode = 2'b10; - - // 16 bit arithmetic - 8'b01001010,8'b01011010,8'b01101010,8'b01111010 : - begin - // ADC HL,ss - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[1] : - begin - NoRead = 1'b1; - ALU_Op = 4'b0001; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - Set_BusA_To[2:0] = 3'b101; - case (IR[5:4]) - 0,1,2 : - begin - Set_BusB_To[2:1] = IR[5:4]; - Set_BusB_To[0] = 1'b1; - end - default : - Set_BusB_To = 4'b1000; - endcase - TStates = 3'b100; - end // case: 2 - - MCycle[2] : - begin - NoRead = 1'b1; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - ALU_Op = 4'b0001; - Set_BusA_To[2:0] = 3'b100; - case (IR[5:4]) - 0,1,2 : - begin - Set_BusB_To[2:1] = IR[5:4]; - Set_BusB_To[0] = 1'b0; - end - default : - Set_BusB_To = 4'b1001; - endcase // case(IR[5:4]) - end // case: 3 - - default :; - endcase // case(MCycle) - end // case: 8'b01001010,8'b01011010,8'b01101010,8'b01111010 - - 8'b01000010,8'b01010010,8'b01100010,8'b01110010 : - begin - // SBC HL,ss - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[1] : - begin - NoRead = 1'b1; - ALU_Op = 4'b0011; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - Set_BusA_To[2:0] = 3'b101; - case (IR[5:4]) - 0,1,2 : - begin - Set_BusB_To[2:1] = IR[5:4]; - Set_BusB_To[0] = 1'b1; - end - default : - Set_BusB_To = 4'b1000; - endcase - TStates = 3'b100; - end // case: 2 - - MCycle[2] : - begin - NoRead = 1'b1; - ALU_Op = 4'b0011; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - Set_BusA_To[2:0] = 3'b100; - case (IR[5:4]) - 0,1,2 : - Set_BusB_To[2:1] = IR[5:4]; - default : - Set_BusB_To = 4'b1001; - endcase - end // case: 3 - - default :; - - endcase // case(MCycle) - end // case: 8'b01000010,8'b01010010,8'b01100010,8'b01110010 - - 8'b01101111 : - begin - // RLD - MCycles = 3'b100; - case (1'b1) // MCycle - MCycle[1] : - begin - NoRead = 1'b1; - Set_Addr_To = aXY; - end - - MCycle[2] : - begin - Read_To_Reg = 1'b1; - Set_BusB_To[2:0] = 3'b110; - Set_BusA_To[2:0] = 3'b111; - ALU_Op = 4'b1101; - TStates = 3'b100; - Set_Addr_To = aXY; - Save_ALU = 1'b1; - end - - MCycle[3] : - begin - I_RLD = 1'b1; - Write = 1'b1; - end - - default :; - endcase // case(MCycle) - end // case: 8'b01101111 - - 8'b01100111 : - begin - // RRD - MCycles = 3'b100; - case (1'b1) // MCycle - MCycle[1] : - Set_Addr_To = aXY; - MCycle[2] : - begin - Read_To_Reg = 1'b1; - Set_BusB_To[2:0] = 3'b110; - Set_BusA_To[2:0] = 3'b111; - ALU_Op = 4'b1110; - TStates = 3'b100; - Set_Addr_To = aXY; - Save_ALU = 1'b1; - end - - MCycle[3] : - begin - I_RRD = 1'b1; - Write = 1'b1; - end - - default :; - endcase // case(MCycle) - end // case: 8'b01100111 - - 8'b01000101,8'b01001101,8'b01010101,8'b01011101,8'b01100101,8'b01101101,8'b01110101,8'b01111101 : - begin - // RETI, RETN - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[0] : - Set_Addr_To = aSP; - - MCycle[1] : - begin - IncDec_16 = 4'b0111; - Set_Addr_To = aSP; - LDZ = 1'b1; - end - - MCycle[2] : - begin - Jump = 1'b1; - IncDec_16 = 4'b0111; - I_RETN = 1'b1; - end - - default :; - endcase // case(MCycle) - end // case: 8'b01000101,8'b01001101,8'b01010101,8'b01011101,8'b01100101,8'b01101101,8'b01110101,8'b01111101 - - 8'b01000000,8'b01001000,8'b01010000,8'b01011000,8'b01100000,8'b01101000,8'b01110000,8'b01111000 : - begin - // IN r,(C) - MCycles = 3'b010; - case (1'b1) // MCycle - MCycle[0] : - Set_Addr_To = aBC; - - MCycle[1] : - begin - IORQ = 1'b1; - if (IR[5:3] != 3'b110 ) - begin - Read_To_Reg = 1'b1; - Set_BusA_To[2:0] = IR[5:3]; - end - I_INRC = 1'b1; - end - - default :; - endcase // case(MCycle) - end // case: 8'b01000000,8'b01001000,8'b01010000,8'b01011000,8'b01100000,8'b01101000,8'b01110000,8'b01111000 - - 8'b01000001,8'b01001001,8'b01010001,8'b01011001,8'b01100001,8'b01101001,8'b01110001,8'b01111001 : - begin - // OUT (C),r - // OUT (C),0 - MCycles = 3'b010; - case (1'b1) // MCycle - MCycle[0] : - begin - Set_Addr_To = aBC; - Set_BusB_To[2:0] = IR[5:3]; - if (IR[5:3] == 3'b110 ) - begin - Set_BusB_To[3] = 1'b1; - end - end - - MCycle[1] : - begin - Write = 1'b1; - IORQ = 1'b1; - end - - default :; - endcase // case(MCycle) - end // case: 8'b01000001,8'b01001001,8'b01010001,8'b01011001,8'b01100001,8'b01101001,8'b01110001,8'b01111001 - - 8'b10100010 , 8'b10101010 , 8'b10110010 , 8'b10111010 : - begin - // INI, IND, INIR, INDR - MCycles = 3'b100; - case (1'b1) // MCycle - MCycle[0] : - begin - Set_Addr_To = aBC; - Set_BusB_To = 4'b1010; - Set_BusA_To = 4'b0000; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - ALU_Op = 4'b0010; - end - - MCycle[1] : - begin - IORQ = 1'b1; - Set_BusB_To = 4'b0110; - Set_Addr_To = aXY; - end - - MCycle[2] : - begin - if (IR[3] == 1'b0 ) - begin - IncDec_16 = 4'b0110; - end - else - begin - IncDec_16 = 4'b1110; - end - TStates = 3'b100; - Write = 1'b1; - I_BTR = 1'b1; - end // case: 3 - - MCycle[3] : - begin - NoRead = 1'b1; - TStates = 3'b101; - end - - default :; - endcase // case(MCycle) - end // case: 8'b10100010 , 8'b10101010 , 8'b10110010 , 8'b10111010 - - 8'b10100011 , 8'b10101011 , 8'b10110011 , 8'b10111011 : - begin - // OUTI, OUTD, OTIR, OTDR - MCycles = 3'b100; - case (1'b1) // MCycle - MCycle[0] : - begin - TStates = 3'b101; - Set_Addr_To = aXY; - Set_BusB_To = 4'b1010; - Set_BusA_To = 4'b0000; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - ALU_Op = 4'b0010; - end - - MCycle[1] : - begin - Set_BusB_To = 4'b0110; - Set_Addr_To = aBC; - if (IR[3] == 1'b0 ) - begin - IncDec_16 = 4'b0110; - end - else - begin - IncDec_16 = 4'b1110; - end - end - - MCycle[2] : - begin - if (IR[3] == 1'b0 ) - begin - IncDec_16 = 4'b0010; - end - else - begin - IncDec_16 = 4'b1010; - end - IORQ = 1'b1; - Write = 1'b1; - I_BTR = 1'b1; - end // case: 3 - - MCycle[3] : - begin - NoRead = 1'b1; - TStates = 3'b101; - end - - default :; - endcase // case(MCycle) - end // case: 8'b10100011 , 8'b10101011 , 8'b10110011 , 8'b10111011 - - endcase // case(IRB) - end // block: default_ed_block - endcase // case(ISet) - - if (Mode == 1 ) - begin - if (MCycle[0] ) - begin - //TStates = 3'b100; - end - else - begin - TStates = 3'b011; - end - end - - if (Mode == 3 ) - begin - if (MCycle[0] ) - begin - //TStates = 3'b100; - end - else - begin - TStates = 3'b100; - end - end - - if (Mode < 2 ) - begin - if (MCycle[5] ) - begin - Inc_PC = 1'b1; - if (Mode == 1 ) - begin - Set_Addr_To = aXY; - TStates = 3'b100; - Set_BusB_To[2:0] = SSS; - Set_BusB_To[3] = 1'b0; - end - if (IRB == 8'b00110110 || IRB == 8'b11001011 ) - begin - Set_Addr_To = aNone; - end - end - if (MCycle[6] ) - begin - if (Mode == 0 ) - begin - TStates = 3'b101; - end - if (ISet != 2'b01 ) - begin - Set_Addr_To = aXY; - end - Set_BusB_To[2:0] = SSS; - Set_BusB_To[3] = 1'b0; - if (IRB == 8'b00110110 || ISet == 2'b01 ) - begin - // LD (HL),n - Inc_PC = 1'b1; - end - else - begin - NoRead = 1'b1; - end - end - end // if (Mode < 2 ) - - end // always @ (IR, ISet, MCycle, F, NMICycle, IntCycle) - -endmodule // T80_MCode diff --git a/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/T80/tv80_reg.v b/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/T80/tv80_reg.v deleted file mode 100644 index 9d378330..00000000 --- a/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/T80/tv80_reg.v +++ /dev/null @@ -1,68 +0,0 @@ -// -// TV80 8-Bit Microprocessor Core -// Based on the VHDL T80 core by Daniel Wallner (jesus@opencores.org) -// -// Copyright (c) 2004 Guy Hutchison (ghutchis@opencores.org) -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the "Software"), -// to deal in the Software without restriction, including without limitation -// the rights to use, copy, modify, merge, publish, distribute, sublicense, -// and/or sell copies of the Software, and to permit persons to whom the -// Software is furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -module tv80_reg (/*AUTOARG*/ - // Outputs - DOBH, DOAL, DOCL, DOBL, DOCH, DOAH, - // Inputs - AddrC, AddrA, AddrB, DIH, DIL, clk, CEN, WEH, WEL - ); - input [2:0] AddrC; - output [7:0] DOBH; - input [2:0] AddrA; - input [2:0] AddrB; - input [7:0] DIH; - output [7:0] DOAL; - output [7:0] DOCL; - input [7:0] DIL; - output [7:0] DOBL; - output [7:0] DOCH; - output [7:0] DOAH; - input clk, CEN, WEH, WEL; - - reg [7:0] RegsH [0:7]; - reg [7:0] RegsL [0:7]; - - always @(posedge clk) - begin - if (CEN) - begin - if (WEH) RegsH[AddrA] <= DIH; - if (WEL) RegsL[AddrA] <= DIL; - end - end - - assign DOAH = RegsH[AddrA]; - assign DOAL = RegsL[AddrA]; - assign DOBH = RegsH[AddrB]; - assign DOBL = RegsL[AddrB]; - assign DOCH = RegsH[AddrC]; - assign DOCL = RegsL[AddrC]; - - // break out ram bits for waveform debug - wire [7:0] H = RegsH[2]; - wire [7:0] L = RegsL[2]; - -endmodule - diff --git a/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/T80/tv80n.v b/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/T80/tv80n.v deleted file mode 100644 index b7802e33..00000000 --- a/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/T80/tv80n.v +++ /dev/null @@ -1,182 +0,0 @@ -// -// TV80 8-Bit Microprocessor Core -// Based on the VHDL T80 core by Daniel Wallner (jesus@opencores.org) -// -// Copyright (c) 2004 Guy Hutchison (ghutchis@opencores.org) -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the "Software"), -// to deal in the Software without restriction, including without limitation -// the rights to use, copy, modify, merge, publish, distribute, sublicense, -// and/or sell copies of the Software, and to permit persons to whom the -// Software is furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -// Negative-edge based wrapper allows memory wait_n signal to work -// correctly without resorting to asynchronous logic. - -module tv80n (/*AUTOARG*/ - // Outputs - m1_n, mreq_n, iorq_n, rd_n, wr_n, rfsh_n, halt_n, busak_n, A, dout, - // Inputs - reset_n, clk, wait_n, int_n, nmi_n, busrq_n, di - ); - - parameter Mode = 0; // 0 => Z80, 1 => Fast Z80, 2 => 8080, 3 => GB - parameter T2Write = 0; // 0 => wr_n active in T3, /=0 => wr_n active in T2 - parameter IOWait = 1; // 0 => Single cycle I/O, 1 => Std I/O cycle - - - input reset_n; - input clk; - input wait_n; - input int_n; - input nmi_n; - input busrq_n; - output m1_n; - output mreq_n; - output iorq_n; - output rd_n; - output wr_n; - output rfsh_n; - output halt_n; - output busak_n; - output [15:0] A; - input [7:0] di; - output [7:0] dout; - - reg mreq_n; - reg iorq_n; - reg rd_n; - reg wr_n; - reg nxt_mreq_n; - reg nxt_iorq_n; - reg nxt_rd_n; - reg nxt_wr_n; - - wire cen; - wire intcycle_n; - wire no_read; - wire write; - wire iorq; - reg [7:0] di_reg; - wire [6:0] mcycle; - wire [6:0] tstate; - - assign cen = 1; - - tv80_core #(Mode, IOWait) i_tv80_core - ( - .cen (cen), - .m1_n (m1_n), - .iorq (iorq), - .no_read (no_read), - .write (write), - .rfsh_n (rfsh_n), - .halt_n (halt_n), - .wait_n (wait_n), - .int_n (int_n), - .nmi_n (nmi_n), - .reset_n (reset_n), - .busrq_n (busrq_n), - .busak_n (busak_n), - .clk (clk), - .IntE (), - .stop (), - .A (A), - .dinst (di), - .di (di_reg), - .dout (dout), - .mc (mcycle), - .ts (tstate), - .intcycle_n (intcycle_n) - ); - - always @* - begin - nxt_mreq_n = 1; - nxt_rd_n = 1; - nxt_iorq_n = 1; - nxt_wr_n = 1; - - if (mcycle[0]) - begin - if (tstate[1] || tstate[2]) - begin - nxt_rd_n = ~ intcycle_n; - nxt_mreq_n = ~ intcycle_n; - nxt_iorq_n = intcycle_n; - end - end // if (mcycle[0]) - else - begin - if ((tstate[1] || tstate[2]) && !no_read && !write) - begin - nxt_rd_n = 1'b0; - nxt_iorq_n = ~ iorq; - nxt_mreq_n = iorq; - end - if (T2Write == 0) - begin - if (tstate[2] && write) - begin - nxt_wr_n = 1'b0; - nxt_iorq_n = ~ iorq; - nxt_mreq_n = iorq; - end - end - else - begin - if ((tstate[1] || (tstate[2] && !wait_n)) && write) - begin - nxt_wr_n = 1'b0; - nxt_iorq_n = ~ iorq; - nxt_mreq_n = iorq; - end - end // else: !if(T2write == 0) - end // else: !if(mcycle[0]) - end // always @ * - - always @(negedge clk) - begin - if (!reset_n) - begin - rd_n <= #1 1'b1; - wr_n <= #1 1'b1; - iorq_n <= #1 1'b1; - mreq_n <= #1 1'b1; - end - else - begin - rd_n <= #1 nxt_rd_n; - wr_n <= #1 nxt_wr_n; - iorq_n <= #1 nxt_iorq_n; - mreq_n <= #1 nxt_mreq_n; - end // else: !if(!reset_n) - end // always @ (posedge clk or negedge reset_n) - - always @(posedge clk) - begin - if (!reset_n) - begin - di_reg <= #1 0; - end - else - begin - if (tstate[2] && wait_n == 1'b1) - di_reg <= #1 di; - end // else: !if(!reset_n) - end // always @ (posedge clk) - -endmodule // t80n - diff --git a/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/ace.mif b/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/ace.mif new file mode 100644 index 00000000..a62f3330 --- /dev/null +++ b/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/ace.mif @@ -0,0 +1,353 @@ +-- http://srecord.sourceforge.net/ +-- +-- Generated automatically by srec -o --mif +-- +DEPTH = 8192; +WIDTH = 8; +ADDRESS_RADIX = HEX; +DATA_RADIX = HEX; +CONTENT BEGIN +0000: F3 21 00 3C 3E FC 18 20 D9 DD CB 3E 5E C3 EE 03 2A 3B 3C 73 23 C3 5F 08; +0018: 2A 3B 3C 2B 56 C3 59 08 E1 7E 32 3D 3C C3 AD 00 24 77 BE 28 FB A4 67 22; +0030: 18 3C F9 21 0D 01 18 03 C3 3A 01 11 24 3C 01 2D 00 ED B0 DD 21 00 3C FD; +0048: 21 C8 04 CD 24 0A AF 32 00 27 21 00 2C 7D E6 BF 0F 0F 0F 30 02 0F 0F 0F; +0060: 47 9F CB 18 47 9F A8 E6 F0 A8 77 2C 20 E7 11 FF 2F 21 FB 1F 01 08 00 ED; +0078: B8 EB 3E 5F 0E 07 CB 6F 28 03 70 2B 0D EB ED B8 EB 70 2B 3D 20 EE ED 56; +0090: 18 09 51 55 49 D4 00 00 04 9B 00 ED 7B 18 3C FB C3 F2 04 41 42 4F 52 D4; +00A8: 98 00 05 AD 00 FD E5 FD 21 B9 04 2A 37 3C 22 3B 3C 21 3E 3C 7E E6 B3 CB; +00C0: 56 77 28 1A CD B9 04 90 04 B3 08 4B 10 05 D2 0D 6B 08 10 16 B5 15 11 10; +00D8: 37 3C C1 08 0E 1A DD CB 3D 7E 20 1B CD 08 18 45 52 52 4F D2 CD B9 04 11; +00F0: 10 3D 3C 96 08 B3 09 95 0A 0E 1A DD 36 3D FF 2A 37 3C 01 0C 00 09 22 3B; +0108: 3C FD E1 18 8E E0 26 00 00 00 00 00 00 00 00 00 00 00 4C 3C 4C 3C 4F 3C; +0120: 51 3C 45 3C 5D 3C FF 00 0A 46 4F 52 54 C8 00 00 FF 1F 05 B5 11 49 3C 00; +0138: 00 00 F5 08 F5 C5 D5 E5 06 3E 10 FE 21 2B 3C 34 23 28 FC CD 10 03 21 28; +0150: 3C CB 46 28 21 A7 28 1E FE 20 38 14 CB 4E C4 07 08 CB 56 28 02 E6 9F CB; +0168: 5E 28 02 F6 80 CD 96 01 CD E6 01 CD 82 02 E1 D1 C1 F1 08 F1 FB C9 FE 0D; +0180: 20 14 21 00 27 22 22 3C 22 20 3C AF CD 98 01 21 E0 26 22 1E 3C C9 A7 C8; +0198: 08 2A 22 3C 7E A7 28 06 11 00 D9 19 30 28 ED 5B 24 3C 21 A0 DB 19 30 34; +01B0: 2A 1C 3C 01 20 00 09 ED 52 D5 D4 21 04 CD B0 02 D1 CD 2F 04 21 1E 3C 06; +01C8: 04 CD 43 04 10 FB CD 02 03 54 5D 23 22 22 3C 2B 2B 28 02 ED B8 08 12 13; +01E0: ED 53 20 3C AF C9 21 F0 01 16 00 5F 19 5E 19 E9 20 13 0C 1E 0A 37 1A 50; +01F8: 06 9C C9 15 14 D3 21 28 3C AE 77 C9 2A 20 3C 2B 7E A7 C8 22 20 3C 23 77; +0210: C9 2A 20 3C 23 ED 5B 22 3C A7 ED 52 C8 19 22 20 3C 7E 2B 77 C9 2A 20 3C; +0228: 23 22 20 3C CD 02 03 62 6B 1B 1A A7 C8 ED 53 20 3C 78 B1 28 02 ED B0 2B; +0240: 36 20 22 22 3C 0C C9 CD 04 02 28 08 06 1F CD 04 02 10 FB C9 2A 1E 3C ED; +0258: 5B 24 3C A7 ED 52 C8 CD 25 02 2A 1E 3C 11 E0 FF AF 19 BE 20 FC 22 1E 3C; +0270: CD F4 02 22 20 3C 3E A0 CD 7E 01 2A 20 3C 2B 22 20 3C 2A 20 3C 3A 28 3C; +0288: 1F 36 97 1F 30 02 36 C3 1F D0 36 C7 C9 CD 11 02 28 08 06 1F CD 11 02 10; +02A0: FB C9 CD B0 02 E0 E5 CD 25 02 E1 CD ED 02 18 C6 21 00 27 ED 5B 1E 3C A7; +02B8: ED 52 44 4D EB 23 AF ED B1 2B C9 2A 22 3C 2B 22 20 3C CD 2C 02 20 FB C9; +02D0: 21 28 3C CB EE CB 86 C9 21 00 27 ED 5B 24 3C CD FA 07 21 E0 26 22 24 3C; +02E8: 36 00 2A 24 3C 22 1E 3C 23 22 20 3C CD B0 02 3E 20 2B BE 28 FC 23 22 22; +0300: 3C C9 2A 22 3C ED 5B 20 3C A7 ED 52 44 4D 19 C9 CD 36 03 47 2A 26 3C AD; +0318: 28 0B AD 28 03 AF BD C0 68 26 20 18 0D 25 7C FE 1E 28 06 AF BC 20 03 26; +0330: 04 7D 22 26 3C C9 01 FE FE ED 50 5A CB 3A 9F E6 D8 CB 3A 38 02 3E 28 C6; +0348: 57 6F 7B F6 03 1E FF 2F E6 1F 57 28 0D 7D 1C 20 12 D6 08 CB 3A 30 FA 5F; +0360: 20 09 2D CB 00 30 06 ED 78 18 E4 1E FF 7B 3C C8 21 76 03 19 7E C9 76 68; +0378: 79 36 35 74 67 63 62 6A 75 37 34 72 66 78 6E 6B 69 38 33 65 64 7A 6D 6C; +0390: 6F 39 32 77 73 00 20 0D 70 30 31 71 61 00 56 48 59 07 01 54 47 43 42 4A; +03A8: 55 09 08 52 46 58 4E 4B 49 03 33 45 44 5A 4D 4C 4F 04 02 57 53 00 20 0D; +03C0: 50 05 0A 51 41 00 2F 5E 5B 26 25 3E 7D 3F 2A 2D 5D 27 24 3C 7B 60 2C 2B; +03D8: 7F 28 23 45 5C 3A 2E 3D 3B 29 40 57 7C 00 20 0D 22 5F 21 51 7E 00 28 05; +03F0: CD 7E 01 D9 C9 47 2A 29 3C 7C B5 78 28 01 E9 2A 1C 3C ED 5B 24 3C EB 37; +0408: ED 52 EB DC 21 04 FE 0D 28 04 77 23 18 06 23 7D E6 1F 20 FA 22 1C 3C D9; +0420: C9 F5 21 1C 3C CD 43 04 F1 2A 24 3C 11 20 24 A7 ED 52 44 4D 21 E0 FF 19; +0438: EB ED B0 06 20 2B 36 20 10 FB C9 7E D6 20 77 23 30 01 35 23 C9 EB 5E 16; +0450: 00 21 00 3C 19 EB D7 FD E9 48 45 52 C5 AA 00 04 62 04 ED 5B 37 3C D7 FD; +0468: E9 43 4F 4E 54 45 58 D4 5F 04 07 4D 04 33 43 55 52 52 45 4E D4 72 04 07; +0480: 4D 04 31 42 41 53 C5 7F 04 04 4D 04 3F 4D 04 3E 4D 04 39 50 41 C4 89 04; +0498: 03 F5 0F 01 27 BB 98 04 41 08 11 B6 04 D8 12 0A 0E 1A 21 3E 3C 7E E6 BB; +04B0: 77 FD E9 00 E8 FF B8 04 E1 E1 5E 23 56 23 E5 EB 5E 23 56 23 EB E9 C8 04; +04C8: 01 0B 00 ED 5B 3B 3C 2A 37 3C 09 ED 52 38 02 E7 02 01 00 00 CD 8C 0F CD; +04E0: E4 04 18 D5 3E FE DB FE 1F D8 3E 7F DB FE 1F D8 E7 03 CD B9 04 8C 05 06; +04F8: 05 36 05 76 12 F7 FF 4C 49 4E C5 A0 04 04 C3 0E C6 04 3D 06 EE 08 83 12; +0510: 07 00 4F 05 76 12 F1 FF A9 06 EE 08 83 12 07 00 64 05 76 12 E3 FF 1B 06; +0528: 1A 0C 83 12 03 00 B6 04 78 05 76 12 D3 FF 38 05 3A 3E 3C CB 77 20 0E CB; +0540: 67 20 0A CD 08 18 20 4F 4B A0 3E 0D CF FD E9 51 05 DF 1B 1A 2F DD A6 3E; +0558: E6 40 13 28 04 D7 11 4E 0F C3 BF 04 66 05 DF DD CB 3E 76 20 F4 FD E9 52; +0570: 45 54 59 50 C5 8B 05 06 7A 05 CD EA 02 CD 76 02 36 BF 18 10 51 55 45 52; +0588: D9 05 05 05 8E 05 CD D8 02 CD 76 02 21 28 3C CB C6 CB AE CB 6E 28 FC CD; +05A0: 25 02 FD E9 57 4F 52 C4 77 05 04 AD 05 DF 21 FE 27 06 FD 36 20 2B 10 FB; +05B8: D5 EB D7 D1 CD E1 05 04 05 28 03 01 FF 00 21 01 27 71 23 3E FC B9 30 01; +05D0: 4F 0C D5 C5 EB ED B0 C1 D1 0D CD DA 07 FD E9 1E 20 2A 24 3C 22 1E 3C 01; +05E8: 00 00 23 7E BB 28 FB A7 28 0E E5 03 23 7E A7 28 03 BB 20 F7 D1 AF B8 C9; +0600: D5 CD B0 02 E2 14 06 ED 5B 24 3C CD FA 07 22 24 3C D1 18 CD EB C1 01 00; +0618: 00 37 C9 1D 06 CD DF 05 50 59 D7 FD E9 56 4C 49 53 D4 AA 05 05 2F 06 3E; +0630: 0D CF 0E 00 18 0E 46 49 4E C4 2C 06 04 3F 06 CD DF 05 38 46 2A 33 3C 7E; +0648: 23 66 6F 7E E6 3F 28 2F A9 28 04 79 A7 20 28 D5 E5 CD E8 15 B1 28 17 41; +0660: 1A CD 07 08 13 AE E6 7F 23 20 12 10 F3 D1 13 D7 D1 CD DA 07 FD E9 CD FB; +0678: 17 76 CD E4 04 E1 D1 2B 7E 2B 6E 67 B5 20 C4 C3 8A 06 11 00 00 D7 FD E9; +0690: 45 58 45 43 55 54 C5 3C 06 07 9C 06 DF C3 BF 04 4E 55 4D 42 45 D2 99 06; +06A8: 06 AB 06 CD DF 05 38 DA C5 D5 CD 4C 07 20 05 11 06 10 18 58 DF 11 00 00; +06C0: D7 11 00 45 C1 C5 0A FE 2D 20 03 16 C5 03 D7 50 59 2B 2B CD 23 07 23 34; +06D8: 2B 30 F8 FE FE 20 3D CD 23 07 30 FB C6 30 CD 7B 07 20 04 1E 00 18 0E E6; +06F0: DF FE 45 20 27 E5 CD 4C 07 DF E1 20 1F CD 40 07; +0700: 28 0F 23 7E E6 7F 83 FA 1C 07 28 10 AE E6 7F AE 77 11 55 10 D7 D1 C1 CD; +0718: DA 07 FD E9 E1 E1 DF DF C3 8A 06 1A 13 D6 30 D8 FE 0A 3F D8 4F 7E E6 F0; +0730: C0 79 2B 2B 0E 03 ED 6F 23 0D 20 FA 35 2B BF C9 06 06 AF CD 2C 07 C0 10; +0748: F9 23 70 C9 D7 CD B9 04 6B 08 96 08 4B 10 2D 4A 0C 6B 08 A9 0D D2 08 D2; +0760: 0D 1F 0E 88 06 88 06 FF 08 8A 07 FF 08 DF 08 94 0D FF 08 79 08 85 08 0E; +0778: 1A DF 1A FE 20 C8 A7 C9 43 4F 4E 56 45 52 D4 A8 06 07 C3 0E 09 0E 6B 08; +0790: D2 08 96 08 B8 07 83 12 1B 00 85 08 8A 04 96 08 A8 0C 79 08 FF 08 8A 04; +07A8: 96 08 A8 0C EE 0D DF 08 76 12 D9 FF DF 08 B6 04 BA 07 DF 7B CD 07 08 C6; +07C0: D0 30 14 FE 0A 38 06 C6 EF 30 0C C6 0A DD BE 3F 30 05 16 00 5F D7 37 C3; +07D8: 21 0C 62 6B 03 09 E5 DD CB 3E 66 CC 7F 09 CD B0 02 D1 A7 ED 52 44 4D 2A; +07F0: 1E 3C 23 EB 38 05 28 02 ED B0 A7 ED 52 EB 7A B3 C8 36 20 23 1B 18 F7 E6; +0808: 7F FE 61 D8 FE 7B D0 E6 5F C9 56 49 D3 89 07 03 1A 08 DD CB 3E A6 FD E9; +0820: 49 4E 56 49 D3 17 08 05 2A 08 DD CB 3E E6 FD E9 46 41 53 D4 27 08 04 39; +0838: 08 FD 21 B9 04 FD E9 53 4C 4F D7 36 08 04 48 08 FD 21 C8 04 FD E9 2A 3B; +0850: 3C 2B 46 2B 4E 22 3B 3C C9 2B 5E 22 3B 3C C9 72 23 22 3B 3C C9 44 55 D0; +0868: 45 08 03 6D 08 DF D7 D7 FD E9 44 52 4F D0 6A 08 04 7B 08 DF FD E9 53 57; +0880: 41 D0 78 08 04 87 08 DF CD 4E 08 D7 50 59 D7 FD E9 43 C0 84 08 02 98 08; +0898: DF 1A 5F 16 00 D7 FD E9 43 A1 95 08 02 A7 08 DF CD 4E 08 79 12 FD E9 C0; +08B0: A4 08 01 B5 08 DF EB 5E 23 56 D7 FD E9 A1 B2 08 01 C3 08 DF CD 4E 08 EB; +08C8: 71 23 70 FD E9 3E D2 C0 08 02 D4 08 DF C1 D5 C5 FD E9 52 BE D1 08 02 E1; +08E0: 08 C1 D1 C5 D7 FD E9 3F 44 55 D0 DE 08 04 F0 08 DF D7 7A B3 C4 10 00 FD; +08F8: E9 52 4F D4 ED 08 03 C3 0E D2 08 85 08 DF 08 85 08 B6 04 4F 56 45 D2 FE; +0910: 08 04 C3 0E D2 08 6B 08 DF 08 85 08 B6 04 50 49 43 CB 11 09 04 27 09 CD; +0928: 4D 09 FD E9 52 4F 4C CC 24 09 04 35 09 CD 4D 09 EB 2A 37 3C ED 52 D2 D7; +0940: 04 62 6B 23 23 ED B0 ED 53 3B 3C FD E9 CD 4E 08 0B CB 21 CB 10 03 03 30; +0958: 02 E7 07 2A 3B 3C ED 42 E5 5E 23 56 D7 E1 C9 54 59 50 C5 32 09 04 70 09; +0970: CD 4E 08 DF CD 7F 09 FD E9 1A 4F 13 1A 47 13 78 B1 C8 1A 13 0B CF 18 F7; +0988: 3C A3 6D 09 02 8F 09 21 FF 27 22 1A 3C FD E9 23 BE 8C 09 02 9E 09 DF DF; +09A0: ED 5B 1A 3C D7 21 FF 27 A7 ED 52 EB D7 FD E9 AE 49 0A 01 C3 0E 8D 09 6B; +09B8: 08 0D 0C 88 06 E1 09 FF 08 4A 0A 9C 09 6E 09 73 0A B6 04 55 AE B2 09 02; +09D0: C3 0E 88 06 8D 09 E1 09 76 12 E8 FF 23 D3 CF 09 02 C3 0E F7 09 12 09 12; +09E8: 09 36 0E 1A 0C 8D 12 F3 FF B6 04 A3 E0 09 01 C3 0E 8A 04 96 08 C4 0C FF; +0A00: 08 07 0A 5C 0A B6 04 09 0A DF 7B C6 30 FE 3A 38 02 C6 07 5F D7 FD E9 43; +0A18: 4C D3 F6 09 03 1F 0A CD 24 0A FD E9 11 FF 26 2A 24 3C 01 20 00 09 2B ED; +0A30: B8 ED 43 2F 3C 21 00 24 22 1C 3C 13 EB 22 24 3C C3 FA 07 53 49 47 CE 9B; +0A48: 09 04 4C 0A DF CB 12 1E 2D 38 0C FD E9 48 4F 4C C4 1C 0A 04 5E 0A DF 2A; +0A60: 1A 3C 2D 28 04 22 1A 3C 73 FD E9 53 50 41 43 C5 5B 0A 05 75 0A 3E 20 CF; +0A78: FD E9 53 50 41 43 45 D3 72 0A 06 85 0A DF 1B CB 7A 20 ED 3E 20 CF 18 F6; +0A90: 43 D2 82 0A 02 97 0A 3E 0D CF FD E9 45 4D 49 D4 94 0A 04 A5 0A DF 7B CF; +0AA8: FD E9 46 AE A2 0A 02 B1 0A 2A 3B 3C 2B CB 7E CB BE 28 03 3E 2D CF 1E 00; +0AC0: 7E 3D FE 49 30 04 FE 3C 30 04 36 41 3C 5F 3E 40 96 38 09 47 04 3E 2E CF; +0AD8: 3E 30 10 FB 3E 40 BE 9F 2B B6 2B B6 2B B6 23 23 28 12 AF CD 32 07 C6 30; +0AF0: CF 23 7E FE 40 20 E5 3E 2E CF 18 E0 7B A7 20 05 3E 20 CF 18 0B D6 41 6F; +0B08: 9F 67 3E 45 CF CD 0E 18 DF DF FD E9 41 D4 AE 0A 02 1B 0B DF CD 4E 08 79; +0B20: CD 28 0B 22 1C 3C FD E9 C6 20 6F 26 01 29 29 29 29 29 16 00 7B E6 1F 5F; +0B38: 19 ED 5B 24 3C ED 52 19 D8 E7 09 50 4C 4F D4 18 0B 04 4C 0B CD 4E 08 DF; +0B50: DD 73 30 CB 3B CB 11 3E 16 93 DF DD 73 2F CB 3B CB 11 CD 28 0B 7E E6 78; +0B68: FE 10 7E 28 02 3E 10 5F 16 87 79 E6 03 47 28 07 2F C6 02 CE 03 57 43 79; +0B80: 0F 0F 0F 9F CB 59 20 04 AB 07 9F A8 A2 AB 77 FD E9 42 45 45 D0 49 0B 04; +0B98: C3 0E 12 09 4B 10 7D 85 08 7A 0D 0E 1A DF CD 4E 08 21 F9 00 09 2C F3 3E; +0BB0: 7F DB FE 0F 30 11 CD C9 0B 1B 7A D3 FE CD C9 0B B3 C2 AF 0B FB FD E9 E7; +0BC8: 03 45 4C 10 FE 05 0D C2 CB 0B C9 49 4E 4B 45 D9 97 0B 05 DD 0B CD 36 03; +0BE0: 5F 16 00 D7 FD E9 49 CE DA 0B 02 ED 0B CD 4E 08 16 00 ED 58 D7 FD E9 4F; +0BF8: 55 D4 EA 0B 03 FF 0B CD 4E 08 DF ED 59 FD E9 41 42 D3 FC 0B 03 C3 0E 6B; +0C10: 08 94 0D B6 04 30 BD 0C 0C 02 1C 0C DF 7A B3 FE 01 3E 00 57 17 5F D7 FD; +0C28: E9 30 BC 19 0C 02 30 0C DF CB 12 18 EC 30 BE 2D 0C 02 3C 0C DF 7A B3 28; +0C40: E0 CB 12 3F 18 DB BD 39 0C 01 C3 0E E1 0D 1A 0C B6 04 BE 49 0C 01 58 0C; +0C58: DF D5 DF E1 CD 99 0C 18 C0 BC 55 0C 01 C3 0E 85 08 56 0C B6 04 55 BC 64; +0C70: 0C 02 74 0C CD 4E 08 DF EB A7 ED 42 18 A3 44 BC 71 0C 02 85 0C DF D5 CD; +0C88: 4E 08 DF E1 A7 ED 52 28 E6 19 EB CD 99 0C DF 18 88 7C AA FA A0 0C ED 52; +0CA0: CB 14 C9 55 AA 82 0C 02 AA 0C DF CD 4E 08 21 00 00 3E 10 29 EB ED 6A EB; +0CB8: 30 04 09 30 01 13 3D 20 F2 EB 18 2F C6 0C DF D9 DF D5 DF E1 7C B5 3E 21; +0CD0: 20 03 EB 3E 11 D9 47 AF 67 6F 4F ED 6A 9F A7 ED 52 99 30 01 19 3F D9 EB; +0CE8: ED 6A EB ED 6A D9 10 EB EB D7 D9 E5 D7 D1 D7 FD E9 2F 4D 4F C4 A7 0C 04; +0D00: C3 0E 85 08 D2 08 E9 12 0D 0C 4B 10 00 FF 08 6B 08 E9 12 60 0E D2 08 0D; +0D18: 0C 8C 0D DF 08 94 0D 85 08 DF 08 94 0D 85 08 B6 04 2A 2F 4D 4F C4 FF 0C; +0D30: 05 C3 0E FF 08 D2 08 E9 12 0D 0C FF 08 6B 08 DF 08 60 0E D2 08 0D 0C A8; +0D48: 0C 76 12 C1 FF AF 30 0D 01 C3 0E 00 0D 85 08 79 08 B6 04 4D 4F C4 50 0D; +0D60: 03 C3 0E 00 0D 79 08 B6 04 AA 60 0D 01 C3 0E A8 0C 79 08 B6 04 2A AF 6C; +0D78: 0D 02 C3 0E 31 0D 85 08 79 08 B6 04 55 2F 4D 4F C4 79 0D 05 C3 0E C4 0C; +0D90: 79 08 B6 04 C3 0E 2E 0C 83 12 03 00 A9 0D B6 04 4E 45 47 41 54 C5 8B 0D; +0DA8: 06 AB 0D 01 02 00 18 0F 44 4E 45 47 41 54 C5 A8 0D 07 BC 0D 01 04 00 2A; +0DC0: 3B 3C A7 ED 42 78 9E 77 23 0D 20 F9 FD E9 AB B9 0D 01 D4 0D DF D5 DF E1; +0DD8: 19 EB D7 FD E9 AD D1 0D 01 C3 0E A9 0D D2 0D B6 04 44 AB E0 0D 02 F0 0D; +0DF0: DF D5 CD 4E 08 DF D5 DF EB 09 EB D7 C1 E1 ED 4A; +0E00: EB D7 FD E9 31 AB ED 0D 02 0B 0E DF 18 09 32 AB 08 0E 02 15 0E DF 13 13; +0E18: 18 14 31 AD 12 0E 02 21 0E DF 18 09 32 AD 1E 0E 02 2B 0E DF 1B 1B D7 FD; +0E30: E9 4F D2 28 0E 02 38 0E DF CD 4E 08 7B B1 5F 7A B0 57 D7 FD E9 41 4E C4; +0E48: 35 0E 03 4D 0E DF CD 4E 08 7B A1 5F 7A A0 57 D7 FD E9 58 4F D2 4A 0E 03; +0E60: 62 0E DF CD 4E 08 7B A9 5F 7A A8 57 D7 FD E9 4D 41 D8 5F 0E 03 C3 0E 12; +0E78: 09 12 09 65 0C 71 12 0F 00 4D 49 CE 74 0E 03 C3 0E 12 09 12 09 56 0C 83; +0E90: 12 03 00 85 08 79 08 B6 04 44 45 43 49 4D 41 CC 86 0E 07 A5 0E DD 36 3F; +0EA8: 0A FD E9 BA A2 0E 01 85 10 C3 0E 4B 10 0A 0E 1A 21 3E 3C 7E F6 44 77 FD; +0EC0: E9 E9 FF EB C3 BA 04 43 52 45 41 54 C5 AE 0E 06 C3 0E 4B 10 20 AB 05 FB; +0ED8: 0E 88 06 4E 0F 80 04 B3 08 6B 08 B3 08 4E 0F 60 04 85 08 C1 08 99 04 96; +0EF0: 08 5F 0F 11 10 EC 0F 4E 0F B6 04 FD 0E CD 2E 0F DF 1A 3D FE 3F 38 02 E7; +0F08: 06 C6 08 4F 06 00 CD 8C 0F 1A 4F 2A 37 3C D5 CD 9E 0F D1 1A 47 13 1A CD; +0F20: 07 08 77 23 10 F7 22 39 3C 2B CB FE FD E9 DD CB 3E 56 28 02 E7 0C 2A 37; +0F38: 3C ED 5B 39 3C AF ED 52 EB 73 23 72 67 6F 22 39 3C C9 AC CF 0E 01 C3 0E; +0F50: 83 0F 60 04 29 0E C1 08 B6 04 43 AC 4D 0F 02 C3 0E 4B 10 01 76 0F 60 04; +0F68: 1F 0E A5 08 B6 04 41 4C 4C 4F D4 5E 0F 05 78 0F CD 4E 08 2A 37 3C CD 9E; +0F80: 0F FD E9 C3 0E 4B 10 02 76 0F B6 04 21 1E 00 C5 09 ED 4B 3B 3C 09 C1 38; +0F98: 03 ED 72 D8 E7 01 EB 21 28 00 CD 8F 0F 2A 37 3C 09 22 37 3C 2A 3B 3C E5; +0FB0: 09 22 3B 3C E3 E5 A7 ED 52 44 4D E1 D1 C8 2B 1B ED B8 23 C9 56 41 52 49; +0FC8: 41 42 4C C5 75 0F 08 85 10 F0 0F 4E 0F B6 04 43 4F 4E 53 54 41 4E D4 CE; +0FE0: 0F 08 85 10 F5 0F 4E 0F B6 04 DC FE 18 02 D5 FF D7 FD E9 E3 FF EB 5E 23; +0FF8: 56 D7 FD E9 4C 49 54 45 52 41 CC E1 0F 47 08 11 11 10 4E 0F B6 04 02 FF; +1010: FF 13 10 06 01 E1 5E 23 56 23 E5 D7 10 F7 FD E9 41 53 43 49 C9 05 10 45; +1028: C3 0E 4B 10 20 AB 05 09 0E 96 08 0E 1A DD CB 3E 76 28 E3 CD B9 04 11 10; +1040: 4B 10 4E 0F 5F 0F B6 04 01 D6 FF 4D 10 E1 5E 16 00 06 01 18 C4 08 11 64; +1058: 10 85 08 4E 0F 4E 0F B6 04 04 FF FF 66 10 06 02 18 AB 44 45 46 49 4E 45; +1070: D2 27 10 07 85 10 85 10 60 04 4B 10 0C 83 0F 76 12 34 FE E6 FF CD F0 0F; +1088: D0 0E 6B 08 B3 08 60 04 29 0E C1 08 13 0E 9A 10 B6 04 9C 10 DF C3 C3 0E; +10A0: 43 41 4C CC 73 10 04 A9 10 DF EB E9 44 4F 45 53 BE F4 10 45 08 11 E8 10; +10B8: D8 12 0C CD 10 4B 10 CD 5F 0F 11 10 F0 0F 4E 0F 4B 10 0A B6 04 C3 0E 6B; +10D0: 08 29 0E B5 15 60 04 E1 0D 1F 0E 4E 0F 60 04 85 08 C1 08 B6 04 05 C5 FF; +10E8: B8 04 43 4F 4D 50 49 4C 45 D2 A6 10 08 85 10 08 11 60 11 60 04 4B 10 0B; +1100: 83 0F 76 12 B1 FD E3 FF DD CB 3E 76 20 02 E7 04 CD F0 0F 6B 08 B3 08 4E; +1118: 0F 76 12 78 FF 52 55 4E 53 BE B3 10 45 08 11 40 11 D8 12 0B 85 08 5F 0F; +1130: CD 10 11 10 42 11 4E 0F 4B 10 0A B6 04 05 DE FF B8 04 E1 D5 EB D7 42 4B; +1148: D1 D5 1B 1B CD 9E 15 D1 C5 C3 C3 0E 49 4D 4D 45 44 49 41 54 C5 24 11 09; +1160: C3 0E 80 04 B3 08 B3 08 0E 1A DF EB CB F6 FD E9 56 4F 43 41 42 55 4C 41; +1178: 52 D9 5F 11 0A 85 10 B5 11 80 04 B3 08 13 0E 4E 0F 88 06 5F 0F 60 04 11; +1190: 10 35 3C 6B 08 B3 08 4E 0F C1 08 B6 04 44 45 46 49 4E 49 54 49 4F 4E D3; +11A8: 7C 11 0B AD 11 2A 33 3C 22 31 3C FD E9 ED 53 33 3C FD E9 49 C6 E0 13 42; +11C0: 08 11 83 12 60 04 4B 10 02 83 0F B6 04 57 48 49 4C C5 BF 11 45 08 11 88; +11D8: 12 D8 12 01 60 04 4B 10 04 83 0F B6 04 45 4C 53 C5 D4 11 44 08 11 71 12; +11F0: D8 12 02 83 0F 25 12 60 04 29 0E 4B 10 02 B6 04 54 48 45 CE EB 11 44 08; +1208: 11 A4 12 D8 12 02 25 12 B6 04 42 45 47 49 CE 06 12 45 08 11 9F 12 60 04; +1220: 4B 10 01 B6 04 C3 0E 6B 08 60 04 85 08 E1 0D 1F 0E 85 08 C1 08 B6 04 C3; +1238: 0E 60 04 E1 0D 1F 0E 4E 0F B6 04 52 45 50 45 41 D4 19 12 46 08 11 76 12; +1250: D8 12 04 85 08 37 12 25 12 B6 04 55 4E 54 49 CC 4B 12 45 08 11 8D 12 D8; +1268: 12 01 37 12 B6 04 02 75 FF 78 12 02 CE FF 78 12 E1 5E 23 56 19 C3 BA 04; +1280: 02 39 FF 8F 12 02 46 FF 8F 12 02 CF FF 8F 12 CD 4E 08 78 B1 28 E2 E1 23; +1298: 23 C3 BA 04 00 74 FF B9 04 00 5D FF B9 04 44 CF 62 12 42 08 11 23 13 60; +12B0: 04 4B 10 03 B6 04 4C 4F 4F D0 AA 12 44 08 11 32 13 D8 12 03 37 12 B6 04; +12C8: 2B 4C 4F 4F D0 BC 12 45 08 11 3C 13 76 12 EA FF DA 12 DF E1 7E 23 E5 93; +12E0: B2 28 4A E7 05 C9 AA 11 01 EB 12 C1 D1 D5 C5 D7 FD E9 49 A7 E8 12 02 F9; +12F8: 12 21 04 00 18 09 CA F6 12 01 04 13 21 06 00 39 5E 23 56 D7 FD E9 4C 45; +1310: 41 56 C5 01 13 05 18 13 C1 E1 E1 E5 E5 C5 FD E9 00 84 FF 25 13 CD 4E 08; +1328: DF E1 D5 C5 E5 FD E9 02 85 FF 34 13 11 01 00 18 06 02 8D FF 3E 13 DF C1; +1340: E1 A7 ED 5A 7A D1 37 EA 58 13 D5 E5 07 30 01 EB CD 99 0C 3F 30 02 E1 E1; +1358: C5 9F C3 94 12 A8 D4 13 41 08 11 79 13 4B 10 29 60 04 85 08 83 0F 9F 13; +1370: 85 08 C1 08 B6 04 FF E5 FF 7B 13 E1 5E 23 56 13 C3 7C 12 2E A2 60 13 42; +1388: 08 11 96 13 4B 10 22 76 12 D6 FF FF EE FF 98 13 D1 CD 79 09 D5 FD E9 A1; +13A0: 13 DF D5 CD E1 05 62 6B 09 7E E1 BD 28 0A EB D7 11 78 05 CD 15 18 18 E9; +13B8: D5 C5 2A 37 3C CD 9E 0F C1 D1 D5 C5 EB ED B0 C1 50 59 D7 D1 CD DA 07 FD; +13D0: E9 DB CF 12 41 D7 13 DD CB 3E B6 FD E9 DD 15 13 01 E3 13 DD CB 3E F6 FD; +13E8: E9 45 58 49 D4 87 13 04 B8 04 52 45 44 45 46 49 4E C5 EF 13 08 FF 13 CD; +1400: 2E 0F 2A 31 3C 5E 23 56 EB 23 22 05 27 E5 CD C0 15 22 0D 27 ED 43 07 27; +1418: ED 53 0B 27 2A 37 3C ED 52 C2 DA 14 D1 D7 CD B9 04 10 16 3D 06 0E 1A DF; +1430: 21 AF C3 19 D2 CF 14 EB 22 03 27 CD C0 15 22 01 27 E5 ED 53 09 27 78 B1; +1448: ED 5B 07 27 28 04 7A B3 28 7D E1 ED 4B 0D 27 ED 42 EB 19 22 07 27 2A 0B; +1460: 27 19 ED 4B 09 27 A7 ED 42 22 0B 27 01 2E 00 09 CB 7C 20 0B ED 4B 3B 3C; +1478: 09 38 54 ED 72 30 50 2A 03 27 E5 2B 2B 46 2B 4E 2A 05 27 E5 2B 2B 70 2B; +1490: 71 E1 19 C1 A7 ED 42 22 05 27 ED 5B 01 27 2A 09 27 A7 ED 52 44 4D D5 C5; +14A8: CD DC 14 2A 0B 27 C1 09 44 4D E1 C5 CD 9E 0F EB 2A 0D 27 ED 4B 0B 27 09; +14C0: C1 C5 E5 ED B0 D1 C1 CD DC 14 CD F8 14 FD E9 2A 31 3C ED 5B 05 27 1B 73; +14D8: 23 72 E7 0B 2A 37 3C A7 ED 42 22 37 3C 2A 3B 3C ED 42 22 3B 3C ED 52 C8; +14F0: C5 44 4D E1 19 ED B0 C9 01 31 3C CD 57 15 CD 57; +1500: 15 01 40 3C 2A 37 3C 37 ED 42 D8 0A 17 03 30 FB 03 03 CD 57 15 03 CD 57; +1518: 15 CD FB 15 C3 0E 1C 85 10 16 08 11 13 B5 11 18 00 00 21 F9 FF 09 4E 23; +1530: 46 2B 09 44 4D 18 CD CD 57 15 CD 48 15 18 C5 CD 57 15 03 CD 57 15 18 BC; +1548: CD 57 15 21 B6 04 A7 ED 52 C8 CD 9E 15 18 F1 0A 5F 03 0A 57 0B CD 68 15; +1560: EB 7B 02 03 7A 02 03 C9 2A 01 27 A7 ED 52 62 6B D0 2A 09 27 ED 52 30 0C; +1578: 2A 0D 27 ED 52 38 13 2A 0B 27 19 C9 2A 03 27 ED 52 2A 07 27 D8 2A 05 27; +1590: 19 C9 2A 01 27 19 ED 5B 0D 27 A7 ED 52 C9 1B 1A 17 D0 1B 1B 1A 6F 26 00; +15A8: 3C 20 06 0A 6F 03 0A 67 03 09 44 4D C9 B7 15 DF EB CD E7 15 EB D7 FD E9; +15C0: E5 5E 23 56 CD FB 15 08 11 0B 85 10 08 00 00 01 00 00 18 07 E1 E5 23 23; +15D8: 4E 23 46 E1 E5 2B 2B 2B 2B 56 2B 5E 19 EB E1 2B 7C FE 3C 7E CB B7 38 02; +15F0: C6 02 2B 2B 2B 3D 20 FC C9 23 E5 E1 7E 23 E5 66 6F B4 C8 ED 52 E1 23 20; +1608: F0 D5 16 00 5E 19 D1 E9 C3 0E 1F 0E 29 0E B3 08 80 04 B3 08 C1 08 B6 04; +1620: CD B9 04 3D 06 0E 1A DF 21 AF C3 19 D8 E7 0D 46 4F 52 47 45 D4 FC 13 06; +1638: 3A 16 2A 31 3C ED 5B 33 3C A7 ED 52 C2 DA 14 CD 20 16 21 FB FF 19 22 39; +1650: 3C DD CB 3E D6 E7 FF 45 44 49 D4 37 16 04 60 16 CD 20 16 DD CB 3E DE 18; +1668: 0C 4C 49 53 D4 5D 16 04 72 16 CD 20 16 3E 0D CF DD CB 3E 5E D5 C4 D8 02; +1680: C1 0A 5F 03 0A 57 0B CD FB 15 C3 0E 0B 08 11 0D 85 10 1F 00 00 E7 0E 21; +1698: 02 00 18 18 D5 21 02 00 09 7E 23 66 6F 2B 2B 2B 6E 7D 07 9F 67 CD 0E 18; +16B0: D1 21 04 00 09 E5 C5 CD E4 17 D1 C1 CD E4 17 DD 36 14 01 DD 36 16 10 CD; +16C8: 08 17 38 06 DD 35 16 F2 C7 16 DD CB 3E 5E 20 10 38 28 21 26 3C 36 00 7E; +16E0: A7 28 FC CD E4 04 18 DB F5 DD CB 3E 9E C5 CD B9 04 78 05 06 05 0E 1A DD; +16F8: CB 3E DE CD D8 02 C1 F1 30 C1 DD CB 3E 9E FD E9 3A 14 3C 32 15 3C DD 36; +1710: 13 05 0A 5F 03 0A 57 03 CD FB 15 83 12 40 71 12 44 A4 12 48 9F 12 37 8D; +1728: 12 42 88 12 38 76 12 3C 23 13 2B 32 13 36 3C 13 33 E8 10 29 40 11 26 11; +1740: 10 3B 64 10 47 4B 10 51 79 13 62 96 13 63 B6 04 54 00 00 CD E1 17 DD 35; +1758: 13 20 B7 A7 C9 2A 14 3C 65 2C 18 0C 2A 14 3C 65 25 18 05 2A 14 3C 2D 65; +1770: 22 14 3C DD 36 13 01 DD 35 16 18 D7 CD DA 17 D7 11 B3 09 CD C1 17 CD 15; +1788: 18 18 CB CD DA 17 D7 CD DA 17 D7 11 AF 0A 18 EB 0A F5 CD E1 17 F1 CF 3E; +17A0: 20 CF 18 B2 CD 08 18 0D 3B 8D 37 C9 3E 29 18 02 3E 22 F5 C5 CD E1 17 D1; +17B8: CD 79 09 42 4B F1 CF A7 C9 3A 15 3C A7 F8 C5 47 3E 0D CF 04 05 28 05 3E; +17D0: 20 CF 10 FB DD 36 15 FF C1 C9 0A 5F 03 0A 57 03 C9 CD C1 17 EB 2B 7E CB; +17E8: 7F 20 05 CD E8 15 18 0B EB CD A2 15 13 1A 6F 13 1A 67 19 7E E6 7F CF CB; +1800: 7E 23 28 F7 3E 20 CF C9 E3 CD FB 17 E3 C9 11 B3 09 D5 EB D7 D1 C5 CD BF; +1818: 04 1B 18 1D 18 C1 C1 C9 FD E5 E5 FD E1 21 92 18 E5 21 00 E0 CB 79 28 02; +1830: 26 FC 13 FD 2B F3 AF 06 97 10 FE D3 FE EE 08 2C 20 01 24 20 F2 06 2B 10; +1848: FE D3 FE 69 01 08 3B 10 FE 79 D3 FE 06 38 C3 8A 18 79 CB 78 10 FE 30 04; +1860: 06 3D 10 FE D3 FE 06 3A C2 59 18 05 AF CB 15 C2 5C 18 1B FD 23 06 2E 3E; +1878: 7F DB FE 1F D0 7A FE FF D0 B3 28 0B FD 6E 00 7C AD 67 AF 37 C3 6D 18 6C; +1890: 18 F5 FD E1 08 06 3B 10 FE AF D3 FE 3E 7F DB FE 1F FB D2 F0 04 08 C9 F3; +18A8: FD E5 E5 FD E1 21 92 18 E5 61 08 AF 4F C0 2E 00 06 B8 CD 11 19 30 F6 3E; +18C0: DF B8 30 F2 2C 20 F1 06 CF CD 15 19 30 E7 78 FE D8 30 F4 CD 15 19 D0 CD; +18D8: FC 18 D0 3F C0 18 11 08 30 05 FD 75 00 18 05 FD 7E 00 AD C0 FD 23 1B 08; +18F0: CD FC 18 D0 7A B3 20 E7 7C FE 01 C9 2E 01 06 C7 CD 11 19 D0 3E E2 B8 CB; +1908: 15 D2 FE 18 7C AD 67 37 C9 CD 15 19 D0 3E 14 3D 20 FD A7 04 C8 3E 7F DB; +1920: FE 1F D0 A9 E6 10 28 F3 79 2F 4F 37 C9 53 41 56 C5 6F 16 04 C3 0E 10 1A; +1938: 4F 1A B6 04 42 53 41 56 C5 33 19 05 C3 0E 3D 1A 4F 1A B6 04 42 4C 4F 41; +1950: C4 43 19 05 C3 0E 3D 1A 74 1A B8 1A B6 04 56 45 52 49 46 D9 53 19 06 C3; +1968: 0E 10 1A 71 12 0F 00 42 56 45 52 49 46 D9 66 19 07 C3 0E 3D 1A 74 1A BE; +1980: 1A B6 04 4C 4F 41 C4 78 19 04 C3 0E 10 1A 0E 1A 2A 37 3C 22 0E 23 EB 21; +1998: CC FF 39 A7 ED 52 22 0C 23 CD B9 04 74 1A B8 1A 0E 1A ED 4B 37 3C 21 50; +19B0: 3C 22 01 27 23 22 09 27 2A 25 23 09 22 37 3C 21 AF C3 09 22 0B 27 ED 5B; +19C8: 29 23 19 ED 5B 4C 3C 22 4C 3C C5 D5 ED 73 0D 27 CD 04 15 C1 E1 CB 7E 23; +19E0: 28 FB 23 23 71 23 70 2A 37 3C 01 0C 00 09 22 3B 3C FD E9 C3 0E 4B 10 20; +19F8: AB 05 0E 1A CD 2E 0F DF 3E 20 12 11 0C 27 21 FF 27 CD FA 07 FD E9 FB 18; +1A10: C3 0E F3 19 0E 1A AF 32 01 23 21 51 3C 22 0E 23 EB 2A 37 3C A7 ED 52 22; +1A28: 0C 23 2A 4C 3C 22 10 23 21 31 3C 11 12 23 01 08 00 ED B0 FD E9 C3 0E F3; +1A40: 19 11 10 0C 23 C1 08 11 10 0E 23 C1 08 B6 04 51 1A 3A 02 23 A7 28 5F 2A; +1A58: 0C 23 7C B5 28 58 E5 11 19 00 21 01 23 4A CD 20 18 D1 2A 0E 23 0E FF CD; +1A70: 20 18 FD E9 76 1A 11 19 00 21 1A 23 4A 37 CD A7 18 30 F3 11 1A 23 1A A7; +1A88: 20 0B CD 08 18 0D 44 69 63 74 BA 18 0A CD 08 18 0D 42 79 74 65 73 BA 21; +1AA0: 01 23 01 0B 0B 18 02 1A CF 1A BE 20 01 0D 23 13 10 F5 20 C2 FD E9 E7 0A; +1AB8: BA 1A 06 FF 18 12 C0 1A 21 12 23 11 2B 23 06 08 1A 13 BE 23 20 E8 10 F8; +1AD0: 2A 0C 23 ED 5B 25 23 7C B5 28 04 ED 52 38 D7 2A 0E 23 7C B5 20 03 2A 27; +1AE8: 23 0E FF CB 18 CD A7 18 30 C4 FD E9 01 0F 3C AF 02 0D 20 FC 2A 3B 3C 11; +1B00: FC FF 2B 4E 77 19 23 22 3B 3C 2B 46 77 79 0F A8 E6 7F A8 32 02 3C CB B8; +1B18: CB B9 ED 43 00 3C 23 EB 19 C9 3E 09 B8 30 01 47 0E 04 23 23 23 AF ED 67; +1B30: 2B 0D 20 FA 23 10 F1 C6 FB E5 7E 88 27 77 23 38 F9 E1 C9 C5 E5 06 04 A7; +1B48: 3E 00 9E 27 77 23 10 F8 E1 C1 C9 0E 01 E5 D5 C5 79 E6 0F 47 A9 4F 0F 0F; +1B60: 81 0F 80 4F 06 04 AF C5 D5 E5 86 27 6F 1A 26 00 54 CB 14 A7 28 1B 5F CB; +1B78: 39 30 08 7D 83 27 6F 7C 8A 27 67 0C 0D 28 0A 7B 87 27 5F 7A 8F 27 57 18; +1B90: E6 EB E1 73 7A D1 C1 13 23 10 CC C1 D1 E1 C9 46 AD 89 19 02 C3 0E 0F 1D; +1BA8: 0E 1A 18 07 46 AB A3 1B 02 B3 1B CD F4 1A 79 90 F5 30 06 EB ED 44 DD 70; +1BC0: 00 47 C4 22 1B F1 30 01 EB 06 02 DD 4E 02 CB 11 DC 43 1B EB 10 F8 CD 53; +1BD8: 1B 1B 1A C6 68 CB 18 DD 70 02 C4 43 1B 1A A7 20 19 DD 35 00 DD 35 00 D5; +1BF0: 62 6B 2B 01 FF 03 B6 ED A8 10 FB EB 70 D1 20 E5; +1C00: FD E9 54 5D D5 01 04 00 ED B0 E1 1B 1A A7 28 11 FE 10 9F 3C 3C 47 DD 86; +1C18: 00 32 00 3C CD 22 1B 18 EB 3A 00 3C 3D FE BF 3C 30 13 FE 80 30 0D 47 3A; +1C30: 02 3C 4F 17 A9 E6 80 A8 12 FD E9 E7 08 01 00 04 71 23 10 FC FD E9 46 AA; +1C48: B0 1B 02 4D 1C CD F4 1A AF B8 9F A1 28 E7 E5 01 02 3C C5 06 03 4E 23 E3; +1C60: 23 CD 55 1B E3 10 F6 ED 4B 00 3C 78 81 D6 42 32 00 3C E1 D1 18 8E 46 AF; +1C78: 4A 1C 02 7D 1C CD F4 1A AF B8 28 B9 B9 28 B4 13 13 1A 1B 1B C6 01 27 08; +1C90: EB CD 43 1B EB E5 11 10 3C 01 04 00 ED B0 EB 2B 06 05 D5 7E 2B 5E 08 4F; +1CA8: 08 0C 0D 20 03 5F 18 1B C5 06 02 16 10 CB 23 17 CB 12 30 F9 14 91 27 1C; +1CC0: 30 FB 15 20 F8 81 27 1D 10 E9 C1 4B D1 0C 0D 28 17 E5 2B 2B CD 55 1B D5; +1CD8: 11 FB FF 19 11 03 3C 79 12 CD 53 1B D1 E1 23 04 10 B8 2A 00 3C 7C 95 C6; +1CF0: 40 21 08 3C 47 3A 0B 3C A7 20 03 05 05 2B DD 70 00 D1 C3 04 1C 46 4E 45; +1D08: 47 41 54 C5 7A 1C 07 11 1D DF 7A A7 28 02 EE 80 57 D7 FD E9 49 4E D4 0E; +1D20: 1D 03 24 1D 2A 3B 3C 2B 11 00 00 7E 07 FE 82 38 14 AF 2B CD 32 07 23 EB; +1D38: 44 4D 29 29 09 29 4F 06 00 09 EB 18 E6 2B 2B 72 2B 73 11 94 0D C3 BF 04; +1D50: 55 46 4C 4F 41 D4 21 1D 06 5B 1D DF EB 01 00 10 51 59 29 7B 8F 27 5F 7A; +1D68: 8F 27 57 CB 11 10 F3 D7 16 46 59 D7 2B 2B CD 40 07 FD E9 00 00 00 00 00; +1D80: 00 00 10 10 10 10 00 10 00 24 24 00 00 00 00 00 24 7E 24 24 7E 24 00 08; +1D98: 3E 28 3E 0A 3E 08 62 64 08 10 26 46 00 10 28 10 2A 44 3A 00 08 10 00 00; +1DB0: 00 00 00 04 08 08 08 08 04 00 20 10 10 10 10 20 00 00 14 08 3E 08 14 00; +1DC8: 00 08 08 3E 08 08 00 00 00 00 00 08 08 10 00 00 00 3E 00 00 00 00 00 00; +1DE0: 00 18 18 00 00 02 04 08 10 20 00 3C 46 4A 52 62 3C 00 18 28 08 08 08 3E; +1DF8: 00 3C 42 02 3C 40 7E 00 3C 42 0C 02 42 3C 00 08 18 28 48 7E 08 00 7E 40; +1E10: 7C 02 42 3C 00 3C 40 7C 42 42 3C 00 7E 02 04 08 10 10 00 3C 42 3C 42 42; +1E28: 3C 00 3C 42 42 3E 02 3C 00 00 00 10 00 00 10 00 00 10 00 00 10 10 20 00; +1E40: 04 08 10 08 04 00 00 00 3E 00 3E 00 00 00 10 08 04 08 10 00 3C 42 04 08; +1E58: 00 08 3C 4A 56 5E 40 3C 3C 42 42 7E 42 42 7C 42 7C 42 42 7C 3C 42 40 40; +1E70: 42 3C 78 44 42 42 44 78 7E 40 7C 40 40 7E 7E 40 7C 40 40 40 3C 42 40 4E; +1E88: 42 3C 42 42 7E 42 42 42 3E 08 08 08 08 3E 02 02 02 42 42 3C 44 48 70 48; +1EA0: 44 42 40 40 40 40 40 7E 42 66 5A 42 42 42 42 62 52 4A 46 42 3C 42 42 42; +1EB8: 42 3C 7C 42 42 7C 40 40 3C 42 42 52 4A 3C 7C 42 42 7C 44 42 3C 40 3C 02; +1ED0: 42 3C FE 10 10 10 10 10 42 42 42 42 42 3E 42 42 42 42 24 18 42 42 42 42; +1EE8: 5A 24 42 24 18 18 24 42 82 44 28 10 10 10 7E 04 08 10 20 7E 0E 08 08 08; +1F00: 08 0E 00 40 20 10 08 04 70 10 10 10 10 70 10 38 54 10 10 10 00 00 00 00; +1F18: 00 00 FF 1C 22 78 20 20 7E 00 00 38 04 3C 44 3E 00 20 20 3C 22 22 3C 00; +1F30: 00 1C 20 20 20 1C 00 04 04 3C 44 44 3E 00 00 38 44 78 40 3C 00 0C 10 18; +1F48: 10 10 10 00 00 3C 44 44 3C 04 38 40 40 78 44 44 44 00 10 00 30 10 10 38; +1F60: 00 04 00 04 04 04 24 18 20 28 30 30 28 24 00 10 10 10 10 10 0C 00 00 68; +1F78: 54 54 54 54 00 00 78 44 44 44 44 00 00 38 44 44 44 38 00 00 78 44 44 78; +1F90: 40 40 00 3C 44 44 3C 04 06 00 1C 20 20 20 20 00 00 38 40 38 04 78 00 10; +1FA8: 38 10 10 10 0C 00 00 44 44 44 44 3C 00 00 44 44 28 28 10 00 00 44 54 54; +1FC0: 54 28 00 00 44 28 10 28 44 00 00 44 44 44 3C 04 38 00 7C 08 10 20 7C 00; +1FD8: 0E 08 30 30 08 0E 00 08 08 08 08 08 08 00 70 10 0C 0C 10 70 00 32 4C 00; +1FF0: 00 00 00 00 3C 42 99 A1 A1 99 42 3C FF 58 1D 00; +END; diff --git a/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/ace_mist.sv b/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/ace_mist.sv index 2079be4a..8cfecfd1 100644 --- a/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/ace_mist.sv +++ b/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/ace_mist.sv @@ -19,68 +19,44 @@ module ace_mist( input SPI_SS2, input SPI_SS3, input SPI_SS4, - input CONF_DATA0, - output [12:0] SDRAM_A, - inout [15:0] SDRAM_DQ, - output SDRAM_DQML, - output SDRAM_DQMH, - output SDRAM_nWE, - output SDRAM_nCAS, - output SDRAM_nRAS, - output SDRAM_nCS, - output [1:0] SDRAM_BA, - output SDRAM_CLK, - output SDRAM_CKE + input CONF_DATA0 ); `include "rtl\build_id.v" localparam CONF_STR = { "Jupiter ACE;;", + "F,ACE;", "O34,Scandoubler Fx,None,HQ2x,CRT 25%,CRT 50%;", + "O67,CPU Speed,Normal,x2,x4;", "T5,Reset;", - "V,v0.2.",`BUILD_DATE + "V,v0.5.",`BUILD_DATE }; wire clk_sys; -wire clk_65; -wire clk_cpu; wire clk_sdram; wire locked; wire scandoubler_disable; wire ypbpr; -wire ps2_kbd_clk, ps2_kbd_data; - +wire [10:0] ps2_key; +assign LED = ~ioctl_download; wire [31:0] status; wire [1:0] buttons; wire [1:0] switches; -wire audio; -wire TapeIn; -wire TapeOut; -wire HSync, VSync; +wire HSync, VSync, HBlank, VBlank; +wire blankn = ~(HBlank | VBlank); wire video; -wire [7:0] kbd_rows; -wire [4:0] kbd_columns; +wire ioctl_download; +wire ioctl_wr; +wire [24:0] ioctl_addr; +wire [7:0] ioctl_dout; +reg ioctl_wait = 0; pll pll( - .areset(), .inclk0(CLOCK_27), - .c0(clk_sys),//26.0Mhz - .c1(clk_65),//6.5Mhz - .c2(clk_cpu),//3.25Mhz - .c3(SDRAM_CLK),//100Mhz - .locked(locked) + .c0(clk_sys) ); -reg [7:0] reset_cnt; -always @(posedge clk_sys) begin - if(!locked || buttons[1] || status[0] || status[5]) - reset_cnt <= 8'h0; - else if(reset_cnt != 8'd255) - reset_cnt <= reset_cnt + 8'd1; -end - -wire reset = (reset_cnt != 8'd255); mist_io #(.STRLEN(($size(CONF_STR)>>3))) mist_io ( @@ -96,15 +72,19 @@ mist_io #(.STRLEN(($size(CONF_STR)>>3))) mist_io .scandoubler_disable(scandoubler_disable), .ypbpr(ypbpr), .status(status), - .ps2_kbd_clk(ps2_kbd_clk), - .ps2_kbd_data(ps2_kbd_data) + .ps2_key(ps2_key), + .ioctl_download(ioctl_download), + .ioctl_wr(ioctl_wr), + .ioctl_addr(ioctl_addr), + .ioctl_dout(ioctl_dout), + .ioctl_wait(ioctl_wait) ); -video_mixer #(.LINE_LENGTH(800), .HALF_DEPTH(1)) video_mixer +video_mixer #(.LINE_LENGTH(280), .HALF_DEPTH(1)) video_mixer ( .clk_sys(clk_sys), - .ce_pix(clk_65), - .ce_pix_actual(clk_65), + .ce_pix(ce_pix), + .ce_pix_actual(ce_pix), .SPI_SCK(SPI_SCK), .SPI_SS3(SPI_SS3), .SPI_DI(SPI_DI), @@ -113,12 +93,12 @@ video_mixer #(.LINE_LENGTH(800), .HALF_DEPTH(1)) video_mixer .hq2x(status[4:3]==1), .ypbpr(ypbpr), .ypbpr_full(1), - .R({video,video,1'b0}), - .G({video,video,1'b0}), - .B({video,video,1'b0}), - .mono(1), - .HSync(HSync), - .VSync(VSync), + .R(blankn ? {video,video,video} : "000"), + .G(blankn ? {video,video,video} : "000"), + .B(blankn ? {video,video,video} : "000"), + .mono(0), + .HSync(~HSync), + .VSync(~VSync), .line_start(0), .VGA_R(VGA_R), .VGA_G(VGA_G), @@ -127,79 +107,118 @@ video_mixer #(.LINE_LENGTH(800), .HALF_DEPTH(1)) video_mixer .VGA_HS(VGA_HS) ); -wire [14:0]sd_addr; -wire [7:0]sd_dout; -wire [7:0]sd_din; -wire sd_we; -wire sd_rd; -wire sd_ready; +wire [1:0] turbo = status[7:6]; -sram sram( - .SDRAM_DQ(SDRAM_DQ), - .SDRAM_A(SDRAM_A), - .SDRAM_DQML(SDRAM_DQML), - .SDRAM_DQMH(SDRAM_DQMH), - .SDRAM_BA(SDRAM_BA), - .SDRAM_nCS(SDRAM_nCS), - .SDRAM_nWE(SDRAM_nWE), - .SDRAM_nRAS(SDRAM_nRAS), - .SDRAM_nCAS(SDRAM_nCAS), - .SDRAM_CKE(SDRAM_CKE), - .init(~locked), - .clk_sdram(SDRAM_CLK), - .addr({10'b0000000000,sd_addr}), // 25 bit address - .dout(sd_dout), // data output to cpu - .din(sd_din), // data input from cpu - .we(sd_we), // cpu requests write - .rd(sd_rd), // cpu requests read - .ready(sd_ready) -); +reg ce_pix; +reg ce_cpu; +always @(negedge clk_sys) begin + reg [2:0] div; - -jupiter_ace jupiter_ace -( - .clk_65(clk_65), - .clk_cpu(clk_cpu), - .reset(~reset), - .filas(kbd_rows), - .columnas(kbd_columns), - .video(video), - .hsync(HSync), + div <= div + 1'd1; + ce_pix <= !div[1:0]; + ce_cpu <= (!div[2:0] && !turbo) | (!div[1:0] && turbo[0]) | turbo[1]; +end +wire reset = ~(buttons[1] || status[0] || status[5]); +wire spk, mic; +jupiter_ace jupiter_ace( + .clk(clk_sys), + .ce_pix(ce_pix), + .ce_cpu(ce_cpu), + .no_wait(|turbo), + .reset(reset|loader_reset), + .kbd_row(kbd_row), + .kbd_col(kbd_col), + .video_out(video), + .hsync(HSync), .vsync(VSync), - .ear(UART_RX),//Play - .mic(UART_TX),//Record - .spk(audio), - .sd_addr(sd_addr), - .sd_dout(sd_dout), - .sd_din(sd_din), - .sd_we(sd_we), - .sd_rd(sd_rd), - .sd_ready(sd_ready) + .hblank(HBlank), + .vblank(VBlank), + .mic(mic), + .spk(spk), + .loader_en(loader_en), + .loader_addr(loader_addr), + .loader_data(loader_data), + .loader_wr(loader_wr) ); sigma_delta_dac sigma_delta_dac ( .DACout(AUDIO_L), - .DACin({audio}), - .CLK(clk_65), - .RESET(0) + .DACin({1'b0, spk, mic, 13'd0}), + .CLK(clk_sys), + .RESET(reset) ); assign AUDIO_R = AUDIO_L; - -keyboard keyboard -( - .clk(clk_65), - .clkps2(ps2_kbd_clk), - .dataps2(ps2_kbd_data), - .rows(kbd_rows), - .columns(kbd_columns), - .kbd_reset(), - .kbd_nmi(), - .kbd_mreset() +wire [7:0] kbd_row; +wire [4:0] kbd_col; + +keyboard keyboard( + .reset(reset), + .clk_sys(clk_sys), + .ps2_key(ps2_key), + .kbd_row(kbd_row), + .kbd_col(kbd_col) ); +reg [15:0] loader_addr; +reg [7:0] loader_data; +reg loader_wr; +reg loader_en; +reg loader_reset = 0; +always @(posedge clk_sys) begin + reg [7:0] cnt = 0; + reg [1:0] status = 0; + reg old_download; + integer timeout = 0; + + old_download <= ioctl_download; + + loader_reset <= 0; + if(~old_download && ioctl_download) begin + loader_addr <= 'h2000; + status <= 0; + loader_reset <=1; + ioctl_wait <= 1; + timeout <= 3000000; + cnt <= 0; + end + + loader_wr <= 0; + if(loader_wr) loader_addr <= loader_addr + 1'd1; + + if(ioctl_wr) begin + loader_en <= 1; + case(status) + 0: if(ioctl_dout == 'hED) status <= 1; + else begin + loader_wr <= 1; + loader_data <= ioctl_dout; + end + 1: begin + cnt <= ioctl_dout; + status <= ioctl_dout ? 2'd2 : 2'd3; // cnt = 0 => stop + end + 2: begin + loader_data <= ioctl_dout; + ioctl_wait <= 1; + end + endcase + end + + if(ioctl_wait && !loader_wr) begin + if(cnt) begin + cnt <= cnt - 1'd1; + loader_wr <= 1; + end + else if(timeout) timeout <= timeout - 1; + else {status,ioctl_wait} <= 0; + end + + if(old_download & ~ioctl_download) loader_en <= 0; + if(reset) ioctl_wait <= 0; +end endmodule diff --git a/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/build_id.v b/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/build_id.v index f10d751c..8318a533 100644 --- a/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/build_id.v +++ b/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/build_id.v @@ -1,2 +1,2 @@ -`define BUILD_DATE "180723" -`define BUILD_TIME "190837" +`define BUILD_DATE "181231" +`define BUILD_TIME "044701" diff --git a/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/dpram.v b/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/dpram.v new file mode 100644 index 00000000..bba33894 --- /dev/null +++ b/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/dpram.v @@ -0,0 +1,80 @@ + +module dpram #(parameter ADDRWIDTH=8, DATAWIDTH=8, NUMWORDS=1< loader_addr) begin + REG[63:48] <= 16'hFFFE; // bug in dump! + end + end + end +end +video video( + .clk(clk), + .ce_pix(ce_pix), + .sram_addr(sram_addr), + .sram_data(sram_data), + .cram_addr(cram_addr), + .cram_data(cram_data), + .video_out(video_out), + .hsync(hsync), + .vsync(vsync), + .hblank(hblank), + .vblank(vblank) +); +endmodule \ No newline at end of file diff --git a/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/keyboard.v b/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/keyboard.v index e4f69fa6..ce47db4d 100644 --- a/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/keyboard.v +++ b/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/keyboard.v @@ -1,632 +1,253 @@ -`timescale 1ns / 1ps -////////////////////////////////////////////////////////////////////////////////// -// Company: -// Engineer: -// -// Create Date: 17:36:45 11/07/2015 -// Design Name: -// Module Name: keyboard -// Project Name: -// Target Devices: -// Tool versions: -// Description: +//============================================================================ +// Jupiter Ace keyboard +// Copyright (C) 2018 Sorgelig // -// Dependencies: +// This program is free software; you can redistribute it and/or modify it +// under the terms of the GNU General Public License as published by the Free +// Software Foundation; either version 2 of the License, or (at your option) +// any later version. // -// Revision: -// Revision 0.01 - File Created -// Additional Comments: +// This program is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +// more details. // -////////////////////////////////////////////////////////////////////////////////// -module keyboard( - input wire clk, - input wire clkps2, - input wire dataps2, - input wire [7:0] rows, - output wire [4:0] columns, - output reg kbd_reset, - output reg kbd_nmi, - output reg kbd_mreset - ); +// You should have received a copy of the GNU General Public License along +// with this program; if not, write to the Free Software Foundation, Inc., +// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +//============================================================================ - initial begin - kbd_reset = 1'b1; - kbd_nmi = 1'b1; - kbd_mreset = 1'b1; - end +module keyboard +( + input reset, + input clk_sys, - // Teclas no extendidas -`define KEY_RELEASED 8'hf0 -`define KEY_EXTENDED 8'he0 -`define KEY_ESC 8'h76 -`define KEY_F1 8'h05 -`define KEY_F2 8'h06 -`define KEY_F3 8'h04 -`define KEY_F4 8'h0C -`define KEY_F5 8'h03 -`define KEY_F6 8'h0B -`define KEY_F7 8'h83 -`define KEY_F8 8'h0A -`define KEY_F9 8'h01 -`define KEY_F10 8'h09 -`define KEY_F11 8'h78 -`define KEY_F12 8'h07 + input [10:0] ps2_key, -`define KEY_BL 8'h0E -`define KEY_1 8'h16 -`define KEY_2 8'h1E -`define KEY_3 8'h26 -`define KEY_4 8'h25 -`define KEY_5 8'h2E -`define KEY_6 8'h36 -`define KEY_7 8'h3D -`define KEY_8 8'h3E -`define KEY_9 8'h46 -`define KEY_0 8'h45 -`define KEY_APOS 8'h4E -`define KEY_AEXC 8'h55 -`define KEY_BKSP 8'h66 + input [7:0] kbd_row, + output [4:0] kbd_col +); -`define KEY_TAB 8'h0D -`define KEY_Q 8'h15 -`define KEY_W 8'h1D -`define KEY_E 8'h24 -`define KEY_R 8'h2D -`define KEY_T 8'h2C -`define KEY_Y 8'h35 -`define KEY_U 8'h3C -`define KEY_I 8'h43 -`define KEY_O 8'h44 -`define KEY_P 8'h4D -`define KEY_CORCHA 8'h54 -`define KEY_CORCHC 8'h5B -`define KEY_ENTER 8'h5A +reg [4:0] keys[7:0]; +wire press_n = ~ps2_key[9]; -`define KEY_CPSLK 8'h58 -`define KEY_A 8'h1C -`define KEY_S 8'h1B -`define KEY_D 8'h23 -`define KEY_F 8'h2B -`define KEY_G 8'h34 -`define KEY_H 8'h33 -`define KEY_J 8'h3B -`define KEY_K 8'h42 -`define KEY_L 8'h4B -`define KEY_NT 8'h4C -`define KEY_LLAVA 8'h52 -`define KEY_LLAVC 8'h5D +// Output addressed row to ULA +assign kbd_col = ({5{kbd_row[0]}} | keys[0]) + &({5{kbd_row[1]}} | keys[1]) + &({5{kbd_row[2]}} | keys[2]) + &({5{kbd_row[3]}} | keys[3]) + &({5{kbd_row[4]}} | keys[4]) + &({5{kbd_row[5]}} | keys[5]) + &({5{kbd_row[6]}} | keys[6]) + &({5{kbd_row[7]}} | keys[7]); -`define KEY_LSHIFT 8'h12 -`define KEY_LT 8'h61 -`define KEY_Z 8'h1A -`define KEY_X 8'h22 -`define KEY_C 8'h21 -`define KEY_V 8'h2A -`define KEY_B 8'h32 -`define KEY_N 8'h31 -`define KEY_M 8'h3A -`define KEY_COMA 8'h41 -`define KEY_PUNTO 8'h49 -`define KEY_MENOS 8'h4A -`define KEY_RSHIFT 8'h59 +wire shift = ~keys[0][0]; -`define KEY_LCTRL 8'h14 -`define KEY_LALT 8'h11 -`define KEY_SPACE 8'h29 +always @(posedge clk_sys) begin + reg old_reset = 0; + reg old_state; -`define KEY_KP0 8'h70 -`define KEY_KP1 8'h69 -`define KEY_KP2 8'h72 -`define KEY_KP3 8'h7A -`define KEY_KP4 8'h6B -`define KEY_KP5 8'h73 -`define KEY_KP6 8'h74 -`define KEY_KP7 8'h6C -`define KEY_KP8 8'h75 -`define KEY_KP9 8'h7D -`define KEY_KPPUNTO 8'h71 -`define KEY_KPMAS 8'h79 -`define KEY_KPMENOS 8'h7B -`define KEY_KPASTER 8'h7C + old_state <= ps2_key[10]; -`define KEY_BLKNUM 8'h77 -`define KEY_BLKSCR 8'h7E + old_reset <= reset; + if(~old_reset & reset)begin + keys[0] <= 5'b11111; + keys[1] <= 5'b11111; + keys[2] <= 5'b11111; + keys[3] <= 5'b11111; + keys[4] <= 5'b11111; + keys[5] <= 5'b11111; + keys[6] <= 5'b11111; + keys[7] <= 5'b11111; + end -// Teclas extendidas (E0 + scancode) -`define KEY_WAKEUP 8'h5E -`define KEY_SLEEP 8'h3F -`define KEY_POWER 8'h37 -`define KEY_INS 8'h70 -`define KEY_SUP 8'h71 -`define KEY_HOME 8'h6C -`define KEY_END 8'h69 -`define KEY_PGU 8'h7D -`define KEY_PGD 8'h7A -`define KEY_UP 8'h75 -`define KEY_DOWN 8'h72 -`define KEY_LEFT 8'h6B -`define KEY_RIGHT 8'h74 -`define KEY_RCTRL 8'h14 -`define KEY_ALTGR 8'h11 -`define KEY_KPENTER 8'h5A -`define KEY_KPSLASH 8'h4A -`define KEY_PRTSCR 8'h7C + if(old_state != ps2_key[10]) begin + case(ps2_key[7:0]) + 8'h12 : keys[0][0] <= press_n; // Left shift (CAPS SHIFT) + 8'h59 : keys[0][0] <= press_n; // Right shift (CAPS SHIFT) + 8'h14: keys[0][1] <= press_n; // ctrl + 8'h1a : keys[0][2] <= press_n; // Z + 8'h22 : keys[0][3] <= press_n; // X + 8'h21 : keys[0][4] <= press_n; // C + 8'h1c : keys[1][0] <= press_n; // A + 8'h1b : keys[1][1] <= press_n; // S + 8'h23 : keys[1][2] <= press_n; // D + 8'h2b : keys[1][3] <= press_n; // F + 8'h34 : keys[1][4] <= press_n; // G - wire new_key_aval; - wire [7:0] scancode; - wire is_released; - wire is_extended; + 8'h15 : keys[2][0] <= press_n; // Q + 8'h1d : keys[2][1] <= press_n; // W + 8'h24 : keys[2][2] <= press_n; // E + 8'h2d : keys[2][3] <= press_n; // R + 8'h2c : keys[2][4] <= press_n; // T - reg shift_pressed = 1'b0; - reg ctrl_pressed = 1'b0; - reg alt_pressed = 1'b0; + 8'h16 : keys[3][0] <= press_n; // 1 + 8'h1e : keys[3][1] <= press_n; // 2 + 8'h26 : keys[3][2] <= press_n; // 3 + 8'h25 : keys[3][3] <= press_n; // 4 + 8'h2e : keys[3][4] <= press_n; // 5 - ps2_port ps2_kbd ( - .clk(clk), // se recomienda 1 MHz <= clk <= 600 MHz - .enable_rcv(1'b1), // habilitar la maquina de estados de recepcion - .ps2clk_ext(clkps2), - .ps2data_ext(dataps2), - .kb_interrupt(new_key_aval), // a 1 durante 1 clk para indicar nueva tecla recibida - .scancode(scancode), // make o breakcode de la tecla - .released(is_released), // soltada=1, pulsada=0 - .extended(is_extended) // extendida=1, no extendida=0 - ); + 8'h45 : keys[4][0] <= press_n; // 0 + 8'h46 : keys[4][1] <= press_n; // 9 + 8'h3e : keys[4][2] <= press_n; // 8 + 8'h3d : keys[4][3] <= press_n; // 7 + 8'h36 : keys[4][4] <= press_n; // 6 - reg [4:0] matrix[0:7]; // 40-key matrix keyboard - initial begin - matrix[0] = 5'b11111; // C X Z SS CS - matrix[1] = 5'b11111; // G F D S A - matrix[2] = 5'b11111; // T R E W Q - matrix[3] = 5'b11111; // 5 4 3 2 1 - matrix[4] = 5'b11111; // 6 7 8 9 0 - matrix[5] = 5'b11111; // Y U I O P - matrix[6] = 5'b11111; // H J K L ENT - matrix[7] = 5'b11111; // V B N M SP - end + 8'h4d : keys[5][0] <= press_n; // P + 8'h44 : keys[5][1] <= press_n; // O + 8'h43 : keys[5][2] <= press_n; // I + 8'h3c : keys[5][3] <= press_n; // U + 8'h35 : keys[5][4] <= press_n; // Y - assign columns = (matrix[0] | { {8{rows[0]}} }) & - (matrix[1] | { {8{rows[1]}} }) & - (matrix[2] | { {8{rows[2]}} }) & - (matrix[3] | { {8{rows[3]}} }) & - (matrix[4] | { {8{rows[4]}} }) & - (matrix[5] | { {8{rows[5]}} }) & - (matrix[6] | { {8{rows[6]}} }) & - (matrix[7] | { {8{rows[7]}} }); + 8'h5a : keys[6][0] <= press_n; // ENTER + 8'h4b : keys[6][1] <= press_n; // L + 8'h42 : keys[6][2] <= press_n; // K + 8'h3b : keys[6][3] <= press_n; // J + 8'h33 : keys[6][4] <= press_n; // H + + 8'h29 : keys[7][0] <= press_n; // SPACE + 8'h3a : keys[7][1] <= press_n; // M + 8'h31 : keys[7][2] <= press_n; // N + 8'h32 : keys[7][3] <= press_n; // B + 8'h2a : keys[7][4] <= press_n; // V + + 8'h6B : begin // Left (CAPS 5) + keys[0][0] <= press_n; + keys[3][4] <= press_n; + end + 8'h72 : begin // Up (CAPS 6) + keys[0][0] <= press_n; + keys[4][3] <= press_n; + end + 8'h75 : begin // Down (CAPS 7) + keys[0][0] <= press_n; + keys[4][4] <= press_n; + end + 8'h74 : begin // Right (CAPS 8) + keys[0][0] <= press_n; + keys[4][2] <= press_n; + end + + 8'h66 : begin // Backspace (CAPS 0) + keys[0][0] <= press_n; + keys[4][0] <= press_n; + end + 8'h76 : begin // Escape (CAPS SPACE) + keys[0][0] <= press_n; + keys[7][0] <= press_n; + end + 8'h58 : begin // Caps Lock + keys[0][0] <= press_n; + keys[3][1] <= press_n; + end + 8'h0D : begin // TAB + keys[0][0] <= press_n; + keys[3][0] <= press_n; + end + + 8'h41 : begin // , < + keys[0][1] <= press_n; + if(press_n) begin + keys[7][2] <= 1; + keys[2][3] <= 1; + end + else if(shift) keys[2][3] <= 0; + else keys[7][2] <= 0; + end + 8'h49 : begin // . > + keys[0][1] <= press_n; + if(press_n) begin + keys[7][1] <= 1; + keys[2][4] <= 1; + end + else if(shift) keys[2][4] <= 0; + else keys[7][1] <= 0; + end + 8'h4C : begin // ; : + keys[0][1] <= press_n; + if(press_n) begin + keys[5][1] <= 1; + keys[0][2] <= 1; + end + else if(shift) keys[0][2] <= 0; + else keys[5][1] <= 0; + end + 8'h52 : begin // " ' + keys[0][1] <= press_n; + if(press_n) begin + keys[5][0] <= 1; + keys[4][3] <= 1; + end + else if(shift) keys[4][3] <= 0; + else keys[5][0] <= 0; + end + 8'h4A : begin // / ? + keys[0][1] <= press_n; + if(press_n) begin + keys[0][4] <= 1; + keys[7][4] <= 1; + end + else if(shift) keys[0][4] <= 0; + else keys[7][4] <= 0; + end + 8'h4E : begin // - _ + keys[0][1] <= press_n; + if(press_n) begin + keys[6][3] <= 1; + keys[4][0] <= 1; + end + else if(shift) keys[4][0] <= 0; + else keys[6][3] <= 0; + end + 8'h55 : begin // = + + keys[0][1] <= press_n; + if(press_n) begin + keys[6][1] <= 1; + keys[6][2] <= 1; + end + else if(shift) keys[6][2] <= 0; + else keys[6][1] <= 0; + end + 8'h54 : begin // [ { + keys[0][1] <= press_n; + if(press_n) begin + keys[5][4] <= 1; + keys[1][3] <= 1; + end + else if(shift) keys[1][3] <= 0; + else keys[5][4] <= 0; + end + 8'h5B : begin // ] } + keys[0][1] <= press_n; + if(press_n) begin + keys[5][3] <= 1; + keys[1][4] <= 1; + end + else if(shift) keys[1][4] <= 0; + else keys[5][3] <= 0; + end + 8'h5D : begin // \ | + keys[0][1] <= press_n; + if(press_n) begin + keys[1][2] <= 1; + keys[1][1] <= 1; + end + else if(shift) keys[1][1] <= 0; + else keys[1][2] <= 0; + end + 8'h0E : begin // ~ * + keys[0][1] <= press_n; + if(press_n) begin + keys[1][0] <= 1; + keys[7][3] <= 1; + end + else if(shift) keys[7][3] <= 0; + else keys[1][0] <= 0; + end + default: ; + endcase + end +end - always @(posedge clk) begin - if (new_key_aval == 1'b1) begin - case (scancode) - // Special and control keys - `KEY_LSHIFT, - `KEY_RSHIFT: - shift_pressed <= ~is_released; - `KEY_LCTRL, - `KEY_RCTRL: - begin - ctrl_pressed <= ~is_released; - if (is_extended) - matrix[0][1] <= is_released; // Right control = Symbol shift - else - matrix[0][0] <= is_released; // Left control = Caps shift - end - `KEY_LALT: - alt_pressed <= ~is_released; - `KEY_KPPUNTO: - if (ctrl_pressed && alt_pressed) begin - kbd_reset <= is_released; - if (is_released == 1'b0) begin - matrix[0] <= 5'b11111; // C X Z SS CS - matrix[1] <= 5'b11111; // G F D S A - matrix[2] <= 5'b11111; // T R E W Q - matrix[3] <= 5'b11111; // 5 4 3 2 1 - matrix[4] <= 5'b11111; // 6 7 8 9 0 - matrix[5] <= 5'b11111; // Y U I O P - matrix[6] <= 5'b11111; // H J K L ENT - matrix[7] <= 5'b11111; // V B N M SP - end - end - `KEY_F5: - if (ctrl_pressed && alt_pressed) - kbd_nmi <= is_released; - `KEY_ENTER: - matrix[6][0] <= is_released; - `KEY_ESC: - begin - matrix[0][0] <= is_released; - matrix[7][0] <= is_released; - end - `KEY_BKSP: - if (ctrl_pressed && alt_pressed) begin - kbd_mreset <= is_released; - end - else begin - matrix[0][0] <= is_released; - matrix[4][0] <= is_released; - end - `KEY_CPSLK: - begin - matrix[0][0] <= is_released; - matrix[3][1] <= is_released; // CAPS LOCK - end - `KEY_F2: - begin - matrix[0][0] <= is_released; - matrix[3][0] <= is_released; // EDIT - end - - // Digits and puntuaction marks inside digits - `KEY_1: - begin - if (alt_pressed) begin - matrix[0][1] <= is_released; - matrix[1][1] <= is_released; // | - end - else if (shift_pressed) begin - matrix[0][1] <= is_released; - matrix[3][0] <= is_released; // ! - end - else - matrix[3][0] <= is_released; - - end - `KEY_2: - begin - if (alt_pressed) begin - matrix[0][1] <= is_released; - matrix[3][1] <= is_released; // @ - end - else if (shift_pressed) begin - matrix[0][1] <= is_released; - matrix[5][0] <= is_released; // " - end - else - matrix[3][1] <= is_released; - end - `KEY_3: - begin - if (!shift_pressed) - matrix[3][2] <= is_released; - else begin - matrix[0][1] <= is_released; - matrix[3][2] <= is_released; // # - end - end - `KEY_4: - begin - if (shift_pressed) begin - matrix[0][1] <= is_released; - matrix[3][3] <= is_released; // $ - end - else if (ctrl_pressed) begin - matrix[0][0] <= is_released; - matrix[3][3] <= is_released; // INV VIDEO - end - else - matrix[3][3] <= is_released; - end - `KEY_5: - begin - if (!shift_pressed) - matrix[3][4] <= is_released; - else begin - matrix[0][1] <= is_released; - matrix[3][4] <= is_released; // % - end - end - `KEY_6: - begin - if (!shift_pressed) - matrix[4][4] <= is_released; - else begin - matrix[0][1] <= is_released; - matrix[4][4] <= is_released; // & - end - end - `KEY_7: - begin - if (!shift_pressed) - matrix[4][3] <= is_released; - else begin - matrix[0][1] <= is_released; - matrix[7][4] <= is_released; // / - end - end - `KEY_8: - begin - if (!shift_pressed) - matrix[4][2] <= is_released; - else begin - matrix[0][1] <= is_released; - matrix[4][2] <= is_released; // ( - end - end - `KEY_9: - begin - if (shift_pressed) begin - matrix[0][1] <= is_released; - matrix[4][1] <= is_released; // ) - end - else if (ctrl_pressed) begin - matrix[0][0] <= is_released; - matrix[4][1] <= is_released; - end - else - matrix[4][1] <= is_released; - end - `KEY_0: - begin - if (!shift_pressed) - matrix[4][0] <= is_released; - else begin - matrix[0][1] <= is_released; - matrix[6][1] <= is_released; // = - end - end - - // Alphabetic characters - `KEY_Z: - begin - matrix[0][2] <= is_released; - if (shift_pressed) - matrix[0][0] <= is_released; - end - `KEY_X: - begin - matrix[0][3] <= is_released; - if (shift_pressed) - matrix[0][0] <= is_released; - end - `KEY_C: - begin - matrix[0][4] <= is_released; - if (shift_pressed) - matrix[0][0] <= is_released; - end - `KEY_A: - begin - matrix[1][0] <= is_released; - if (shift_pressed) - matrix[0][0] <= is_released; - end - `KEY_S: - begin - matrix[1][1] <= is_released; - if (shift_pressed) - matrix[0][0] <= is_released; - end - `KEY_D: - begin - matrix[1][2] <= is_released; - if (shift_pressed) - matrix[0][0] <= is_released; - end - `KEY_F: - begin - matrix[1][3] <= is_released; - if (shift_pressed) - matrix[0][0] <= is_released; - end - `KEY_G: - begin - matrix[1][4] <= is_released; - if (shift_pressed) - matrix[0][0] <= is_released; - end - `KEY_Q: - begin - matrix[2][0] <= is_released; - if (shift_pressed) - matrix[0][0] <= is_released; - end - `KEY_W: - begin - matrix[2][1] <= is_released; - if (shift_pressed) - matrix[0][0] <= is_released; - end - `KEY_E: - begin - matrix[2][2] <= is_released; - if (shift_pressed) - matrix[0][0] <= is_released; - end - `KEY_R: - begin - matrix[2][3] <= is_released; - if (shift_pressed) - matrix[0][0] <= is_released; - end - `KEY_T: - begin - matrix[2][4] <= is_released; - if (shift_pressed) - matrix[0][0] <= is_released; - end - `KEY_P: - begin - matrix[5][0] <= is_released; - if (shift_pressed) - matrix[0][0] <= is_released; - end - `KEY_O: - begin - matrix[5][1] <= is_released; - if (shift_pressed) - matrix[0][0] <= is_released; - end - `KEY_I: - begin - matrix[5][2] <= is_released; - if (shift_pressed) - matrix[0][0] <= is_released; - end - `KEY_U: - begin - matrix[5][3] <= is_released; - if (shift_pressed) - matrix[0][0] <= is_released; - end - `KEY_Y: - begin - matrix[5][4] <= is_released; - if (shift_pressed) - matrix[0][0] <= is_released; - end - `KEY_L: - begin - matrix[6][1] <= is_released; - if (shift_pressed) - matrix[0][0] <= is_released; - end - `KEY_K: - begin - matrix[6][2] <= is_released; - if (shift_pressed) - matrix[0][0] <= is_released; - end - `KEY_J: - begin - matrix[6][3] <= is_released; - if (shift_pressed) - matrix[0][0] <= is_released; - end - `KEY_H: - begin - matrix[6][4] <= is_released; - if (shift_pressed) - matrix[0][0] <= is_released; - end - `KEY_M: - begin - matrix[7][1] <= is_released; - if (shift_pressed) - matrix[0][0] <= is_released; - end - `KEY_N: - begin - matrix[7][2] <= is_released; - if (shift_pressed) - matrix[0][0] <= is_released; - end - `KEY_B: - begin - matrix[7][3] <= is_released; - if (shift_pressed) - matrix[0][0] <= is_released; - end - `KEY_V: - begin - matrix[7][4] <= is_released; - if (shift_pressed) - matrix[0][0] <= is_released; - end - - // Symbols - `KEY_APOS: - begin - matrix[0][1] <= is_released; - if (!shift_pressed) - matrix[4][3] <= is_released; - else - matrix[0][4] <= is_released; // ? - end - `KEY_CORCHA: - begin - matrix[0][1] <= is_released; - if (alt_pressed || shift_pressed) - matrix[5][4] <= is_released; // [ - else - matrix[6][4] <= is_released; // ^ - end - `KEY_CORCHC: - begin - matrix[0][1] <= is_released; - if (shift_pressed) - matrix[7][3] <= is_released; // * - else if (alt_pressed) - matrix[5][3] <= is_released; // ] - else - matrix[6][2] <= is_released; // + - end - `KEY_LLAVA: - begin - matrix[0][1] <= is_released; - if (alt_pressed || shift_pressed) - matrix[1][3] <= is_released; // { - else - matrix[0][3] <= is_released; // pound - end - `KEY_LLAVC: - begin - matrix[0][1] <= is_released; - if (alt_pressed || shift_pressed) - matrix[1][4] <= is_released; // } - else - matrix[5][2] <= is_released; // copyright - end - `KEY_COMA: - begin - matrix[0][1] <= is_released; - if (!shift_pressed) - matrix[7][2] <= is_released; - else - matrix[5][1] <= is_released; // ; - end - `KEY_PUNTO: - begin - matrix[0][1] <= is_released; - if (!shift_pressed) - matrix[7][1] <= is_released; - else - matrix[0][2] <= is_released; // : - end - `KEY_MENOS: - begin - matrix[0][1] <= is_released; - if (!shift_pressed) - matrix[6][3] <= is_released; // - else - matrix[4][0] <= is_released; // _ - end - `KEY_LT: - begin - matrix[0][1] <= is_released; - if (!shift_pressed) - matrix[2][3] <= is_released; // < - else - matrix[2][4] <= is_released; // > - end - `KEY_BL: - begin - matrix[0][1] <= is_released; - matrix[1][2] <= is_released; // \ - end - `KEY_SPACE: - matrix[7][0] <= is_released; - - // Cursor keys - `KEY_UP: - begin - matrix[0][0] <= is_released; - matrix[4][4] <= is_released; - end - `KEY_DOWN: - begin - matrix[0][0] <= is_released; - matrix[4][3] <= is_released; - end - `KEY_LEFT: - begin - matrix[0][0] <= is_released; - matrix[3][4] <= is_released; - end - `KEY_RIGHT: - begin - matrix[0][0] <= is_released; - matrix[4][2] <= is_released; - end - endcase - end - end endmodule diff --git a/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/mist_io.v b/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/mist_io.v index ab9ef8ad..40ced8f8 100644 --- a/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/mist_io.v +++ b/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/mist_io.v @@ -5,6 +5,7 @@ // http://code.google.com/p/mist-board/ // // Copyright (c) 2014 Till Harbaum +// Copyright (c) 2015-2017 Sorgelig // // This source file is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published @@ -61,13 +62,13 @@ module mist_io #(parameter STRLEN=0, parameter PS2DIV=100) // SD config input sd_conf, input sd_sdhc, - output img_mounted, // signaling that new image has been mounted + output [1:0] img_mounted, // signaling that new image has been mounted output reg [31:0] img_size, // size of image in bytes // SD block level access input [31:0] sd_lba, - input sd_rd, - input sd_wr, + input [1:0] sd_rd, + input [1:0] sd_wr, output reg sd_ack, output reg sd_ack_conf, @@ -83,25 +84,27 @@ module mist_io #(parameter STRLEN=0, parameter PS2DIV=100) output ps2_mouse_clk, output reg ps2_mouse_data, + // ps2 alternative interface. + + // [8] - extended, [9] - pressed, [10] - toggles with every press/release + output reg [10:0] ps2_key = 0, + + // [24] - toggles with every event + output reg [24:0] ps2_mouse = 0, + // ARM -> FPGA download - input ioctl_force_erase, + input ioctl_ce, output reg ioctl_download = 0, // signal indicating an active download - output reg ioctl_erasing = 0, // signal indicating an active erase output reg [7:0] ioctl_index, // menu index used to upload the file output reg ioctl_wr = 0, output reg [24:0] ioctl_addr, - output reg [7:0] ioctl_dout + output reg [7:0] ioctl_dout, + input ioctl_wait ); -reg [7:0] b_data; -reg [6:0] sbuf; -reg [7:0] cmd; -reg [2:0] bit_cnt; // counts bits 0-7 0-7 ... -reg [7:0] byte_cnt; // counts bytes reg [7:0] but_sw; reg [2:0] stick_idx; - -reg mount_strobe = 0; +reg [1:0] mount_strobe = 0; assign img_mounted = mount_strobe; assign buttons = but_sw[1:0]; @@ -109,160 +112,189 @@ assign switches = but_sw[3:2]; assign scandoubler_disable = but_sw[4]; assign ypbpr = but_sw[5]; -wire [7:0] spi_dout = { sbuf, SPI_DI}; - // this variant of user_io is for 8 bit cores (type == a4) only wire [7:0] core_type = 8'ha4; // command byte read by the io controller -wire [7:0] sd_cmd = { 4'h5, sd_conf, sd_sdhc, sd_wr, sd_rd }; +wire drive_sel = sd_rd[1] | sd_wr[1]; +wire [7:0] sd_cmd = { 4'h6, sd_conf, sd_sdhc, sd_wr[drive_sel], sd_rd[drive_sel] }; + +reg [7:0] cmd; +reg [2:0] bit_cnt; // counts bits 0-7 0-7 ... +reg [9:0] byte_cnt; // counts bytes reg spi_do; assign SPI_DO = CONF_DATA0 ? 1'bZ : spi_do; -// drive MISO only when transmitting core id -always@(negedge SPI_SCK) begin - if(!CONF_DATA0) begin - // first byte returned is always core type, further bytes are - // command dependent - if(byte_cnt == 0) begin - spi_do <= core_type[~bit_cnt]; +reg [7:0] spi_data_out; - end else begin - case(cmd) - // reading config string - 8'h14: begin - // returning a byte from string - if(byte_cnt < STRLEN + 1) spi_do <= conf_str[{STRLEN - byte_cnt,~bit_cnt}]; - else spi_do <= 0; - end +// SPI transmitter +always@(negedge SPI_SCK) spi_do <= spi_data_out[~bit_cnt]; - // reading sd card status - 8'h16: begin - if(byte_cnt == 1) spi_do <= sd_cmd[~bit_cnt]; - else if((byte_cnt >= 2) && (byte_cnt < 6)) spi_do <= sd_lba[{5-byte_cnt, ~bit_cnt}]; - else spi_do <= 0; - end - - // reading sd card write data - 8'h18: - spi_do <= b_data[~bit_cnt]; - - default: - spi_do <= 0; - endcase - end - end -end - -reg b_wr2,b_wr3; -always @(negedge clk_sys) begin - b_wr3 <= b_wr2; - sd_buff_wr <= b_wr3; -end +reg [7:0] spi_data_in; +reg spi_data_ready = 0; // SPI receiver always@(posedge SPI_SCK or posedge CONF_DATA0) begin + reg [6:0] sbuf; + reg [31:0] sd_lba_r; + reg drive_sel_r; if(CONF_DATA0) begin - b_wr2 <= 0; bit_cnt <= 0; byte_cnt <= 0; - sd_ack <= 0; - sd_ack_conf <= 0; - end else begin - b_wr2 <= 0; - - sbuf <= spi_dout[6:0]; + spi_data_out <= core_type; + end + else + begin bit_cnt <= bit_cnt + 1'd1; - if(bit_cnt == 5) begin - if (byte_cnt == 0) sd_buff_addr <= 0; - if((byte_cnt != 0) & (sd_buff_addr != 511)) sd_buff_addr <= sd_buff_addr + 1'b1; - if((byte_cnt == 1) & ((cmd == 8'h17) | (cmd == 8'h19))) sd_buff_addr <= 0; - end + sbuf <= {sbuf[5:0], SPI_DI}; // finished reading command byte if(bit_cnt == 7) begin + if(!byte_cnt) cmd <= {sbuf, SPI_DI}; + + spi_data_in <= {sbuf, SPI_DI}; + spi_data_ready <= ~spi_data_ready; if(~&byte_cnt) byte_cnt <= byte_cnt + 8'd1; - if(byte_cnt == 0) begin - cmd <= spi_dout; - - if(spi_dout == 8'h19) begin - sd_ack_conf <= 1; - sd_buff_addr <= 0; - end - if((spi_dout == 8'h17) || (spi_dout == 8'h18)) begin - sd_ack <= 1; - sd_buff_addr <= 0; - end - if(spi_dout == 8'h18) b_data <= sd_buff_din; - - mount_strobe <= 0; - - end else begin - case(cmd) - // buttons and switches - 8'h01: but_sw <= spi_dout; - 8'h02: joystick_0 <= spi_dout; - 8'h03: joystick_1 <= spi_dout; + spi_data_out <= 0; + case({(!byte_cnt) ? {sbuf, SPI_DI} : cmd}) + // reading config string + 8'h14: if(byte_cnt < STRLEN) spi_data_out <= conf_str[(STRLEN - byte_cnt - 1)<<3 +:8]; - // store incoming ps2 mouse bytes - 8'h04: begin - ps2_mouse_fifo[ps2_mouse_wptr] <= spi_dout; - ps2_mouse_wptr <= ps2_mouse_wptr + 1'd1; - end + // reading sd card status + 8'h16: if(byte_cnt == 0) begin + spi_data_out <= sd_cmd; + sd_lba_r <= sd_lba; + drive_sel_r <= drive_sel; + end else if (byte_cnt == 1) begin + spi_data_out <= drive_sel_r; + end else if(byte_cnt < 6) spi_data_out <= sd_lba_r[(5-byte_cnt)<<3 +:8]; - // store incoming ps2 keyboard bytes - 8'h05: begin - ps2_kbd_fifo[ps2_kbd_wptr] <= spi_dout; - ps2_kbd_wptr <= ps2_kbd_wptr + 1'd1; - end - - 8'h15: status[7:0] <= spi_dout; - - // send SD config IO -> FPGA - // flag that download begins - // sd card knows data is config if sd_dout_strobe is asserted - // with sd_ack still being inactive (low) - 8'h19, - // send sector IO -> FPGA - // flag that download begins - 8'h17: begin - sd_buff_dout <= spi_dout; - b_wr2 <= 1; - end + // reading sd card write data + 8'h18: spi_data_out <= sd_buff_din; + endcase + end + end +end - 8'h18: b_data <= sd_buff_din; +reg [31:0] ps2_key_raw = 0; +wire pressed = (ps2_key_raw[15:8] != 8'hf0); +wire extended = (~pressed ? (ps2_key_raw[23:16] == 8'he0) : (ps2_key_raw[15:8] == 8'he0)); - // joystick analog - 8'h1a: begin - // first byte is joystick index - if(byte_cnt == 1) stick_idx <= spi_dout[2:0]; - else if(byte_cnt == 2) begin - // second byte is x axis - if(stick_idx == 0) joystick_analog_0[15:8] <= spi_dout; - else if(stick_idx == 1) joystick_analog_1[15:8] <= spi_dout; - end else if(byte_cnt == 3) begin - // third byte is y axis - if(stick_idx == 0) joystick_analog_0[7:0] <= spi_dout; - else if(stick_idx == 1) joystick_analog_1[7:0] <= spi_dout; - end - end +// transfer to clk_sys domain +always@(posedge clk_sys) begin + reg old_ss1, old_ss2; + reg old_ready1, old_ready2; + reg [2:0] b_wr; + reg got_ps2 = 0; - // notify image selection - 8'h1c: mount_strobe <= 1; + old_ss1 <= CONF_DATA0; + old_ss2 <= old_ss1; + old_ready1 <= spi_data_ready; + old_ready2 <= old_ready1; + + sd_buff_wr <= b_wr[0]; + if(b_wr[2] && (~&sd_buff_addr)) sd_buff_addr <= sd_buff_addr + 1'b1; + b_wr <= (b_wr<<1); - // send image info - 8'h1d: if(byte_cnt<5) img_size[(byte_cnt-1)<<3 +:8] <= spi_dout; - - // status, 32bit version - 8'h1e: if(byte_cnt<5) status[(byte_cnt-1)<<3 +:8] <= spi_dout; - default: ; - endcase + if(old_ss2) begin + got_ps2 <= 0; + sd_ack <= 0; + sd_ack_conf <= 0; + sd_buff_addr <= 0; + if(got_ps2) begin + if(cmd == 4) ps2_mouse[24] <= ~ps2_mouse[24]; + if(cmd == 5) begin + ps2_key <= {~ps2_key[10], pressed, extended, ps2_key_raw[7:0]}; + if(ps2_key_raw == 'hE012E07C) ps2_key[9:0] <= 'h37C; // prnscr pressed + if(ps2_key_raw == 'h7CE0F012) ps2_key[9:0] <= 'h17C; // prnscr released + if(ps2_key_raw == 'hF014F077) ps2_key[9:0] <= 'h377; // pause pressed end end end + else + if(old_ready2 ^ old_ready1) begin + + if(cmd == 8'h18 && ~&sd_buff_addr) sd_buff_addr <= sd_buff_addr + 1'b1; + + if(byte_cnt < 2) begin + + if (cmd == 8'h19) sd_ack_conf <= 1; + if((cmd == 8'h17) || (cmd == 8'h18)) sd_ack <= 1; + mount_strobe <= 0; + + if(cmd == 5) ps2_key_raw <= 0; + end else begin + + case(cmd) + // buttons and switches + 8'h01: but_sw <= spi_data_in; + 8'h02: joystick_0 <= spi_data_in; + 8'h03: joystick_1 <= spi_data_in; + + // store incoming ps2 mouse bytes + 8'h04: begin + got_ps2 <= 1; + case(byte_cnt) + 2: ps2_mouse[7:0] <= spi_data_in; + 3: ps2_mouse[15:8] <= spi_data_in; + 4: ps2_mouse[23:16] <= spi_data_in; + endcase + ps2_mouse_fifo[ps2_mouse_wptr] <= spi_data_in; + ps2_mouse_wptr <= ps2_mouse_wptr + 1'd1; + end + + // store incoming ps2 keyboard bytes + 8'h05: begin + got_ps2 <= 1; + ps2_key_raw[31:0] <= {ps2_key_raw[23:0], spi_data_in}; + ps2_kbd_fifo[ps2_kbd_wptr] <= spi_data_in; + ps2_kbd_wptr <= ps2_kbd_wptr + 1'd1; + end + + 8'h15: status[7:0] <= spi_data_in; + + // send SD config IO -> FPGA + // flag that download begins + // sd card knows data is config if sd_dout_strobe is asserted + // with sd_ack still being inactive (low) + 8'h19, + // send sector IO -> FPGA + // flag that download begins + 8'h17: begin + sd_buff_dout <= spi_data_in; + b_wr <= 1; + end + + // joystick analog + 8'h1a: begin + // first byte is joystick index + if(byte_cnt == 2) stick_idx <= spi_data_in[2:0]; + else if(byte_cnt == 3) begin + // second byte is x axis + if(stick_idx == 0) joystick_analog_0[15:8] <= spi_data_in; + else if(stick_idx == 1) joystick_analog_1[15:8] <= spi_data_in; + end else if(byte_cnt == 4) begin + // third byte is y axis + if(stick_idx == 0) joystick_analog_0[7:0] <= spi_data_in; + else if(stick_idx == 1) joystick_analog_1[7:0] <= spi_data_in; + end + end + + // notify image selection + 8'h1c: mount_strobe[spi_data_in[0]] <= 1; + + // send image info + 8'h1d: if(byte_cnt<6) img_size[(byte_cnt-2)<<3 +:8] <= spi_data_in; + + // status, 32bit version + 8'h1e: if(byte_cnt<6) status[(byte_cnt-2)<<3 +:8] <= spi_data_in; + default: ; + endcase + end + end end @@ -417,6 +449,8 @@ localparam UIO_FILE_TX = 8'h53; localparam UIO_FILE_TX_DAT = 8'h54; localparam UIO_FILE_INDEX = 8'h55; +reg rdownload = 0; + // data_io has its own SPI interface to the io controller always@(posedge SPI_SCK, posedge SPI_SS2) begin reg [6:0] sbuf; @@ -426,15 +460,10 @@ always@(posedge SPI_SCK, posedge SPI_SS2) begin if(SPI_SS2) cnt <= 0; else begin - rclk <= 0; - // don't shift in last bit. It is evaluated directly // when writing to ram if(cnt != 15) sbuf <= { sbuf[5:0], SPI_DI}; - // increase target address after write - if(rclk) addr <= addr + 1'd1; - // count 0-7 8-15 8-15 ... if(cnt < 15) cnt <= cnt + 1'd1; else cnt <= 8; @@ -446,18 +475,11 @@ always@(posedge SPI_SCK, posedge SPI_SS2) begin if((cmd == UIO_FILE_TX) && (cnt == 15)) begin // prepare if(SPI_DI) begin - case(ioctl_index) - 0: addr <= 'h080000; // BOOT ROM - 'h01: addr <= 'h000100; // ROM file - 'h41: addr <= 'h000100; // COM file - 'h81: addr <= 'h000000; // C00 file - 'hC1: addr <= 'h010000; // EDD file - default: addr <= 'h100000; // FDD file - endcase - ioctl_download <= 1; + addr <= 25'h080000; + rdownload <= 1; end else begin addr_w <= addr; - ioctl_download <= 0; + rdownload <= 0; end end @@ -465,7 +487,8 @@ always@(posedge SPI_SCK, posedge SPI_SS2) begin if((cmd == UIO_FILE_TX_DAT) && (cnt == 15)) begin addr_w <= addr; data_w <= {sbuf, SPI_DI}; - rclk <= 1; + addr <= addr + 1'd1; + rclk <= ~rclk; end // expose file (menu) index @@ -473,60 +496,24 @@ always@(posedge SPI_SCK, posedge SPI_SS2) begin end end -reg [24:0] erase_mask; -wire [24:0] next_erase = (ioctl_addr + 1'd1) & erase_mask; - +// transfer to ioctl_clk domain. +// ioctl_index is set before ioctl_download, so it's stable already always@(posedge clk_sys) begin reg rclkD, rclkD2; - reg old_force = 0; - reg [5:0] erase_clk_div; - reg [24:0] end_addr; - reg erase_trigger = 0; - rclkD <= rclk; - rclkD2 <= rclkD; - ioctl_wr <= 0; + if(ioctl_ce& ~ioctl_wait) begin + ioctl_download <= rdownload; - if(rclkD & ~rclkD2) begin - ioctl_dout <= data_w; - ioctl_addr <= addr_w; - ioctl_wr <= 1; - end + rclkD <= rclk; + rclkD2 <= rclkD; + ioctl_wr <= 0; - if(ioctl_download) begin - old_force <= 0; - ioctl_erasing <= 0; - erase_trigger <= (ioctl_index == 1); - end else begin - - old_force <= ioctl_force_erase; - - // start erasing - if(erase_trigger) begin - erase_trigger <= 0; - erase_mask <= 'hFFFF; - end_addr <= 'h0100; - erase_clk_div <= 1; - ioctl_erasing <= 1; - end else if((ioctl_force_erase & ~old_force)) begin - erase_trigger <= 0; - ioctl_addr <= 'h1FFFFFF; - erase_mask <= 'h1FFFFFF; - end_addr <= 'h0050000; - erase_clk_div <= 1; - ioctl_erasing <= 1; - end else if(ioctl_erasing) begin - erase_clk_div <= erase_clk_div + 1'd1; - if(!erase_clk_div) begin - if(next_erase == end_addr) ioctl_erasing <= 0; - else begin - ioctl_addr <= next_erase; - ioctl_dout <= 0; - ioctl_wr <= 1; - end - end + if(rclkD != rclkD2) begin + ioctl_dout <= data_w; + ioctl_addr <= addr_w; + ioctl_wr <= 1; end end end -endmodule \ No newline at end of file +endmodule diff --git a/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/pll.qip b/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/pll.qip index afd958be..aaef684a 100644 --- a/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/pll.qip +++ b/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/pll.qip @@ -1,4 +1,4 @@ set_global_assignment -name IP_TOOL_NAME "ALTPLL" -set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name IP_TOOL_VERSION "13.0" set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "pll.v"] set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "pll.ppf"] diff --git a/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/pll.v b/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/pll.v index 47bde791..0c5e50f4 100644 --- a/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/pll.v +++ b/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/pll.v @@ -14,7 +14,7 @@ // ************************************************************ // THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! // -// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// 13.0.1 Build 232 06/12/2013 SP 1 SJ Full Version // ************************************************************ @@ -40,17 +40,11 @@ module pll ( areset, inclk0, c0, - c1, - c2, - c3, locked); input areset; input inclk0; output c0; - output c1; - output c2; - output c3; output locked; `ifndef ALTERA_RESERVED_QIS // synopsys translate_off @@ -60,26 +54,20 @@ module pll ( // synopsys translate_on `endif - wire [4:0] sub_wire0; - wire sub_wire3; - wire [0:0] sub_wire8 = 1'h0; - wire [2:2] sub_wire5 = sub_wire0[2:2]; - wire [0:0] sub_wire4 = sub_wire0[0:0]; - wire [3:3] sub_wire2 = sub_wire0[3:3]; - wire [1:1] sub_wire1 = sub_wire0[1:1]; - wire c1 = sub_wire1; - wire c3 = sub_wire2; - wire locked = sub_wire3; - wire c0 = sub_wire4; - wire c2 = sub_wire5; - wire sub_wire6 = inclk0; - wire [1:0] sub_wire7 = {sub_wire8, sub_wire6}; + wire sub_wire0; + wire [4:0] sub_wire1; + wire [0:0] sub_wire5 = 1'h0; + wire locked = sub_wire0; + wire [0:0] sub_wire2 = sub_wire1[0:0]; + wire c0 = sub_wire2; + wire sub_wire3 = inclk0; + wire [1:0] sub_wire4 = {sub_wire5, sub_wire3}; altpll altpll_component ( .areset (areset), - .inclk (sub_wire7), - .clk (sub_wire0), - .locked (sub_wire3), + .inclk (sub_wire4), + .locked (sub_wire0), + .clk (sub_wire1), .activeclock (), .clkbad (), .clkena ({6{1'b1}}), @@ -119,18 +107,6 @@ module pll ( altpll_component.clk0_duty_cycle = 50, altpll_component.clk0_multiply_by = 26, altpll_component.clk0_phase_shift = "0", - altpll_component.clk1_divide_by = 54, - altpll_component.clk1_duty_cycle = 50, - altpll_component.clk1_multiply_by = 13, - altpll_component.clk1_phase_shift = "0", - altpll_component.clk2_divide_by = 108, - altpll_component.clk2_duty_cycle = 50, - altpll_component.clk2_multiply_by = 13, - altpll_component.clk2_phase_shift = "0", - altpll_component.clk3_divide_by = 27, - altpll_component.clk3_duty_cycle = 50, - altpll_component.clk3_multiply_by = 104, - altpll_component.clk3_phase_shift = "0", altpll_component.compensate_clock = "CLK0", altpll_component.inclk0_input_frequency = 37037, altpll_component.intended_device_family = "Cyclone III", @@ -164,9 +140,9 @@ module pll ( altpll_component.port_scanread = "PORT_UNUSED", altpll_component.port_scanwrite = "PORT_UNUSED", altpll_component.port_clk0 = "PORT_USED", - altpll_component.port_clk1 = "PORT_USED", - altpll_component.port_clk2 = "PORT_USED", - altpll_component.port_clk3 = "PORT_USED", + altpll_component.port_clk1 = "PORT_UNUSED", + altpll_component.port_clk2 = "PORT_UNUSED", + altpll_component.port_clk3 = "PORT_UNUSED", altpll_component.port_clk4 = "PORT_UNUSED", altpll_component.port_clk5 = "PORT_UNUSED", altpll_component.port_clkena0 = "PORT_UNUSED", @@ -205,17 +181,8 @@ endmodule // Retrieval info: PRIVATE: CUR_FBIN_CLK STRING "c0" // Retrieval info: PRIVATE: DEVICE_SPEED_GRADE STRING "8" // Retrieval info: PRIVATE: DIV_FACTOR0 NUMERIC "27" -// Retrieval info: PRIVATE: DIV_FACTOR1 NUMERIC "54" -// Retrieval info: PRIVATE: DIV_FACTOR2 NUMERIC "108" -// Retrieval info: PRIVATE: DIV_FACTOR3 NUMERIC "27" // Retrieval info: PRIVATE: DUTY_CYCLE0 STRING "50.00000000" -// Retrieval info: PRIVATE: DUTY_CYCLE1 STRING "50.00000000" -// Retrieval info: PRIVATE: DUTY_CYCLE2 STRING "50.00000000" -// Retrieval info: PRIVATE: DUTY_CYCLE3 STRING "50.00000000" // Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE0 STRING "26.000000" -// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE1 STRING "6.500000" -// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE2 STRING "3.250000" -// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE3 STRING "104.000000" // Retrieval info: PRIVATE: EXPLICIT_SWITCHOVER_COUNTER STRING "0" // Retrieval info: PRIVATE: EXT_FEEDBACK_RADIO STRING "0" // Retrieval info: PRIVATE: GLOCKED_COUNTER_EDIT_CHANGED STRING "1" @@ -236,42 +203,18 @@ endmodule // Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE STRING "Not Available" // Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE_DIRTY NUMERIC "0" // Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT0 STRING "deg" -// Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT1 STRING "deg" -// Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT2 STRING "deg" -// Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT3 STRING "ps" // Retrieval info: PRIVATE: MIG_DEVICE_SPEED_GRADE STRING "Any" // Retrieval info: PRIVATE: MIRROR_CLK0 STRING "0" -// Retrieval info: PRIVATE: MIRROR_CLK1 STRING "0" -// Retrieval info: PRIVATE: MIRROR_CLK2 STRING "0" -// Retrieval info: PRIVATE: MIRROR_CLK3 STRING "0" // Retrieval info: PRIVATE: MULT_FACTOR0 NUMERIC "26" -// Retrieval info: PRIVATE: MULT_FACTOR1 NUMERIC "13" -// Retrieval info: PRIVATE: MULT_FACTOR2 NUMERIC "13" -// Retrieval info: PRIVATE: MULT_FACTOR3 NUMERIC "104" // Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "1" // Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "26.00000000" -// Retrieval info: PRIVATE: OUTPUT_FREQ1 STRING "6.50000000" -// Retrieval info: PRIVATE: OUTPUT_FREQ2 STRING "3.25000000" -// Retrieval info: PRIVATE: OUTPUT_FREQ3 STRING "104.00000000" // Retrieval info: PRIVATE: OUTPUT_FREQ_MODE0 STRING "0" -// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE1 STRING "0" -// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE2 STRING "0" -// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE3 STRING "0" // Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT0 STRING "MHz" -// Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT1 STRING "MHz" -// Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT2 STRING "MHz" -// Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT3 STRING "MHz" // Retrieval info: PRIVATE: PHASE_RECONFIG_FEATURE_ENABLED STRING "1" // Retrieval info: PRIVATE: PHASE_RECONFIG_INPUTS_CHECK STRING "0" // Retrieval info: PRIVATE: PHASE_SHIFT0 STRING "0.00000000" -// Retrieval info: PRIVATE: PHASE_SHIFT1 STRING "0.00000000" -// Retrieval info: PRIVATE: PHASE_SHIFT2 STRING "0.00000000" -// Retrieval info: PRIVATE: PHASE_SHIFT3 STRING "0.00000000" // Retrieval info: PRIVATE: PHASE_SHIFT_STEP_ENABLED_CHECK STRING "0" // Retrieval info: PRIVATE: PHASE_SHIFT_UNIT0 STRING "deg" -// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT1 STRING "deg" -// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT2 STRING "deg" -// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT3 STRING "ps" // Retrieval info: PRIVATE: PLL_ADVANCED_PARAM_CHECK STRING "0" // Retrieval info: PRIVATE: PLL_ARESET_CHECK STRING "1" // Retrieval info: PRIVATE: PLL_AUTOPLL_CHECK NUMERIC "1" @@ -294,20 +237,11 @@ endmodule // Retrieval info: PRIVATE: SPREAD_USE STRING "0" // Retrieval info: PRIVATE: SRC_SYNCH_COMP_RADIO STRING "0" // Retrieval info: PRIVATE: STICKY_CLK0 STRING "1" -// Retrieval info: PRIVATE: STICKY_CLK1 STRING "1" -// Retrieval info: PRIVATE: STICKY_CLK2 STRING "1" -// Retrieval info: PRIVATE: STICKY_CLK3 STRING "1" // Retrieval info: PRIVATE: SWITCHOVER_COUNT_EDIT NUMERIC "1" // Retrieval info: PRIVATE: SWITCHOVER_FEATURE_ENABLED STRING "1" // Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" // Retrieval info: PRIVATE: USE_CLK0 STRING "1" -// Retrieval info: PRIVATE: USE_CLK1 STRING "1" -// Retrieval info: PRIVATE: USE_CLK2 STRING "1" -// Retrieval info: PRIVATE: USE_CLK3 STRING "1" // Retrieval info: PRIVATE: USE_CLKENA0 STRING "0" -// Retrieval info: PRIVATE: USE_CLKENA1 STRING "0" -// Retrieval info: PRIVATE: USE_CLKENA2 STRING "0" -// Retrieval info: PRIVATE: USE_CLKENA3 STRING "0" // Retrieval info: PRIVATE: USE_MIL_SPEED_GRADE NUMERIC "0" // Retrieval info: PRIVATE: ZERO_DELAY_RADIO STRING "0" // Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all @@ -316,18 +250,6 @@ endmodule // Retrieval info: CONSTANT: CLK0_DUTY_CYCLE NUMERIC "50" // Retrieval info: CONSTANT: CLK0_MULTIPLY_BY NUMERIC "26" // Retrieval info: CONSTANT: CLK0_PHASE_SHIFT STRING "0" -// Retrieval info: CONSTANT: CLK1_DIVIDE_BY NUMERIC "54" -// Retrieval info: CONSTANT: CLK1_DUTY_CYCLE NUMERIC "50" -// Retrieval info: CONSTANT: CLK1_MULTIPLY_BY NUMERIC "13" -// Retrieval info: CONSTANT: CLK1_PHASE_SHIFT STRING "0" -// Retrieval info: CONSTANT: CLK2_DIVIDE_BY NUMERIC "108" -// Retrieval info: CONSTANT: CLK2_DUTY_CYCLE NUMERIC "50" -// Retrieval info: CONSTANT: CLK2_MULTIPLY_BY NUMERIC "13" -// Retrieval info: CONSTANT: CLK2_PHASE_SHIFT STRING "0" -// Retrieval info: CONSTANT: CLK3_DIVIDE_BY NUMERIC "27" -// Retrieval info: CONSTANT: CLK3_DUTY_CYCLE NUMERIC "50" -// Retrieval info: CONSTANT: CLK3_MULTIPLY_BY NUMERIC "104" -// Retrieval info: CONSTANT: CLK3_PHASE_SHIFT STRING "0" // Retrieval info: CONSTANT: COMPENSATE_CLOCK STRING "CLK0" // Retrieval info: CONSTANT: INCLK0_INPUT_FREQUENCY NUMERIC "37037" // Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" @@ -360,9 +282,9 @@ endmodule // Retrieval info: CONSTANT: PORT_SCANREAD STRING "PORT_UNUSED" // Retrieval info: CONSTANT: PORT_SCANWRITE STRING "PORT_UNUSED" // Retrieval info: CONSTANT: PORT_clk0 STRING "PORT_USED" -// Retrieval info: CONSTANT: PORT_clk1 STRING "PORT_USED" -// Retrieval info: CONSTANT: PORT_clk2 STRING "PORT_USED" -// Retrieval info: CONSTANT: PORT_clk3 STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_clk1 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clk2 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clk3 STRING "PORT_UNUSED" // Retrieval info: CONSTANT: PORT_clk4 STRING "PORT_UNUSED" // Retrieval info: CONSTANT: PORT_clk5 STRING "PORT_UNUSED" // Retrieval info: CONSTANT: PORT_clkena0 STRING "PORT_UNUSED" @@ -380,18 +302,12 @@ endmodule // Retrieval info: USED_PORT: @clk 0 0 5 0 OUTPUT_CLK_EXT VCC "@clk[4..0]" // Retrieval info: USED_PORT: areset 0 0 0 0 INPUT GND "areset" // Retrieval info: USED_PORT: c0 0 0 0 0 OUTPUT_CLK_EXT VCC "c0" -// Retrieval info: USED_PORT: c1 0 0 0 0 OUTPUT_CLK_EXT VCC "c1" -// Retrieval info: USED_PORT: c2 0 0 0 0 OUTPUT_CLK_EXT VCC "c2" -// Retrieval info: USED_PORT: c3 0 0 0 0 OUTPUT_CLK_EXT VCC "c3" // Retrieval info: USED_PORT: inclk0 0 0 0 0 INPUT_CLK_EXT GND "inclk0" // Retrieval info: USED_PORT: locked 0 0 0 0 OUTPUT GND "locked" // Retrieval info: CONNECT: @areset 0 0 0 0 areset 0 0 0 0 // Retrieval info: CONNECT: @inclk 0 0 1 1 GND 0 0 0 0 // Retrieval info: CONNECT: @inclk 0 0 1 0 inclk0 0 0 0 0 // Retrieval info: CONNECT: c0 0 0 0 0 @clk 0 0 1 0 -// Retrieval info: CONNECT: c1 0 0 0 0 @clk 0 0 1 1 -// Retrieval info: CONNECT: c2 0 0 0 0 @clk 0 0 1 2 -// Retrieval info: CONNECT: c3 0 0 0 0 @clk 0 0 1 3 // Retrieval info: CONNECT: locked 0 0 0 0 @locked 0 0 0 0 // Retrieval info: GEN_FILE: TYPE_NORMAL pll.v TRUE // Retrieval info: GEN_FILE: TYPE_NORMAL pll.ppf TRUE diff --git a/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/sprom.vhd b/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/sprom.vhd new file mode 100644 index 00000000..a81ac959 --- /dev/null +++ b/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/sprom.vhd @@ -0,0 +1,82 @@ +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY sprom IS + GENERIC + ( + init_file : string := ""; + widthad_a : natural; + width_a : natural := 8; + outdata_reg_a : string := "UNREGISTERED" + ); + PORT + ( + address : IN STD_LOGIC_VECTOR (widthad_a-1 DOWNTO 0); + clock : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (width_a-1 DOWNTO 0) + ); +END sprom; + + +ARCHITECTURE SYN OF sprom IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (width_a-1 DOWNTO 0); + + + + COMPONENT altsyncram + GENERIC ( + address_aclr_a : STRING; + clock_enable_input_a : STRING; + clock_enable_output_a : STRING; + init_file : STRING; + intended_device_family : STRING; + lpm_hint : STRING; + lpm_type : STRING; + numwords_a : NATURAL; + operation_mode : STRING; + outdata_aclr_a : STRING; + outdata_reg_a : STRING; + widthad_a : NATURAL; + width_a : NATURAL; + width_byteena_a : NATURAL + ); + PORT ( + clock0 : IN STD_LOGIC ; + address_a : IN STD_LOGIC_VECTOR (widthad_a-1 DOWNTO 0); + q_a : OUT STD_LOGIC_VECTOR (width_a-1 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + q <= sub_wire0(width_a-1 DOWNTO 0); + + altsyncram_component : altsyncram + GENERIC MAP ( + address_aclr_a => "NONE", + clock_enable_input_a => "BYPASS", + clock_enable_output_a => "BYPASS", + init_file => init_file, + intended_device_family => "Cyclone III", + lpm_hint => "ENABLE_RUNTIME_MOD=NO", + lpm_type => "altsyncram", + numwords_a => 2**widthad_a, + operation_mode => "ROM", + outdata_aclr_a => "NONE", + outdata_reg_a => outdata_reg_a, + widthad_a => widthad_a, + width_a => width_a, + width_byteena_a => 1 + ) + PORT MAP ( + clock0 => clock, + address_a => address, + q_a => sub_wire0 + ); + + + +END SYN; diff --git a/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/video.sv b/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/video.sv new file mode 100644 index 00000000..e4b89236 --- /dev/null +++ b/Computer_MiST/Jupiter Cantab - JupiterACE_MiST/rtl/video.sv @@ -0,0 +1,75 @@ +//============================================================================ +// Jupiter Ace video +// Copyright (C) 2018 Sorgelig +// +// This program is free software; you can redistribute it and/or modify it +// under the terms of the GNU General Public License as published by the Free +// Software Foundation; either version 2 of the License, or (at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +// more details. +// +// You should have received a copy of the GNU General Public License along +// with this program; if not, write to the Free Software Foundation, Inc., +// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +//============================================================================ + +module video +( + input clk, + input ce_pix, + + output [9:0] sram_addr, + input [7:0] sram_data, + output [9:0] cram_addr, + input [7:0] cram_data, + + output video_out, + output reg hsync, + output reg vsync, + output reg hblank, + output reg vblank +); + +assign sram_addr = {vcnt[7:3], hcnt[7:3]}; +assign cram_addr = {sram_data[6:0], vcnt[2:0]}; +assign video_out = pix[7] ^ inv; + +reg [8:0] hcnt; +reg [8:0] vcnt; +reg [7:0] pix; +reg inv; +always @(posedge clk) begin + reg ven,hen; + + if(ce_pix) begin + if (hcnt != 415) hcnt <= hcnt + 1'd1; + else begin + hcnt <= 0; + if (vcnt != 311) vcnt <= vcnt + 1'd1; + else vcnt <= 0; + end + + if (hcnt == 308) hsync <= 0; + if (hcnt == 340) hsync <= 1; + if (hcnt == 000) hen = 1; + if (hcnt == 256) hen = 0; + + if (vcnt == 248) vsync <= 0; + if (vcnt == 256) vsync <= 1; + if (vcnt == 000) ven = 1; + if (vcnt == 192) ven = 0; + + hblank <= ~hen; + vblank <= ~ven; + + pix <= {pix[6:0], 1'b0}; + if (!hcnt[2:0] && ven && hen) pix <= cram_data; + if (!hcnt[2:0]) inv <= ven & hen & sram_data[7]; + end +end + +endmodule \ No newline at end of file diff --git a/Computer_MiST/ORAO_MiST/db/Orao_MiST.db_info b/Computer_MiST/ORAO_MiST/db/Orao_MiST.db_info new file mode 100644 index 00000000..cce0536c --- /dev/null +++ b/Computer_MiST/ORAO_MiST/db/Orao_MiST.db_info @@ -0,0 +1,3 @@ +Quartus_Version = Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Full Version +Version_Index = 302049280 +Creation_Time = Mon Dec 31 01:30:50 2018 diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/Release/mz80k_mist.rbf b/Computer_MiST/Sharp - MZ-80_MiST_New/Release/mz80k_mist.rbf similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/Release/mz80k_mist.rbf rename to Computer_MiST/Sharp - MZ-80_MiST_New/Release/mz80k_mist.rbf diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/clean.bat b/Computer_MiST/Sharp - MZ-80_MiST_New/clean.bat similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/clean.bat rename to Computer_MiST/Sharp - MZ-80_MiST_New/clean.bat diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/mz80k_mist.qpf b/Computer_MiST/Sharp - MZ-80_MiST_New/mz80k_mist.qpf similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/mz80k_mist.qpf rename to Computer_MiST/Sharp - MZ-80_MiST_New/mz80k_mist.qpf diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/mz80k_mist.qsf b/Computer_MiST/Sharp - MZ-80_MiST_New/mz80k_mist.qsf similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/mz80k_mist.qsf rename to Computer_MiST/Sharp - MZ-80_MiST_New/mz80k_mist.qsf diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/mz80k_mist.srf b/Computer_MiST/Sharp - MZ-80_MiST_New/mz80k_mist.srf similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/mz80k_mist.srf rename to Computer_MiST/Sharp - MZ-80_MiST_New/mz80k_mist.srf diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/CPLD_74LS245.vhd b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/CPLD_74LS245.vhd similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/CPLD_74LS245.vhd rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/CPLD_74LS245.vhd diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/Color_Card.sv b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/Color_Card.sv similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/Color_Card.sv rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/Color_Card.sv diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/HighResCard.sv b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/HighResCard.sv similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/HighResCard.sv rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/HighResCard.sv diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/TTL74LS245.sv b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/TTL74LS245.sv similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/TTL74LS245.sv rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/TTL74LS245.sv diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/TTL74LS373.sv b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/TTL74LS373.sv similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/TTL74LS373.sv rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/TTL74LS373.sv diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/build_id.tcl b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/build_id.tcl similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/build_id.tcl rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/build_id.tcl diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/build_id.v b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/build_id.v similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/build_id.v rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/build_id.v diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/cg_rom.v b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/cg_rom.v similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/cg_rom.v rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/cg_rom.v diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/fz80.v b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/fz80.v similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/fz80.v rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/fz80.v diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/fz80c.v b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/fz80c.v similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/fz80c.v rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/fz80c.v diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/hq2x.sv b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/hq2x.sv similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/hq2x.sv rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/hq2x.sv diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/i8253.v b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/i8253.v similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/i8253.v rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/i8253.v diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/i8255.vhd b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/i8255.vhd similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/i8255.vhd rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/i8255.vhd diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/keymatrix.vhd b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/keymatrix.vhd similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/keymatrix.vhd rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/keymatrix.vhd diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/mist_io.v b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/mist_io.v similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/mist_io.v rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/mist_io.v diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/monrom.v b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/monrom.v similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/monrom.v rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/monrom.v diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/mz80k_mist.sv b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/mz80k_mist.sv similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/mz80k_mist.sv rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/mz80k_mist.sv diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/mz80k_top.v b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/mz80k_top.v similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/mz80k_top.v rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/mz80k_top.v diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/osd.v b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/osd.v similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/osd.v rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/osd.v diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/pll.v b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/pll.v similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/pll.v rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/pll.v diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/ram2.v b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/ram2.v similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/ram2.v rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/ram2.v diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/roms/80ktc.zip b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/roms/80ktc.zip similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/roms/80ktc.zip rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/roms/80ktc.zip diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/roms/CG.ROM b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/roms/CG.ROM similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/roms/CG.ROM rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/roms/CG.ROM diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/roms/MZ80K2E Jap CG b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/roms/MZ80K2E Jap CG similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/roms/MZ80K2E Jap CG rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/roms/MZ80K2E Jap CG diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/roms/MZ80K2E Jap CG.zip b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/roms/MZ80K2E Jap CG.zip similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/roms/MZ80K2E Jap CG.zip rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/roms/MZ80K2E Jap CG.zip diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/roms/MZ80K2E ROM b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/roms/MZ80K2E ROM similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/roms/MZ80K2E ROM rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/roms/MZ80K2E ROM diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/roms/MZ80K2E ROM.zip b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/roms/MZ80K2E ROM.zip similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/roms/MZ80K2E ROM.zip rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/roms/MZ80K2E ROM.zip diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/roms/Mon.hex b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/roms/Mon.hex similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/roms/Mon.hex rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/roms/Mon.hex diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/roms/cg.hex b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/roms/cg.hex similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/roms/cg.hex rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/roms/cg.hex diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/roms/cg_jp.HEX b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/roms/cg_jp.HEX similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/roms/cg_jp.HEX rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/roms/cg_jp.HEX diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/roms/cg_jp_hex.hex b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/roms/cg_jp_hex.hex similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/roms/cg_jp_hex.hex rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/roms/cg_jp_hex.hex diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/roms/cgrom.v b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/roms/cgrom.v similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/roms/cgrom.v rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/roms/cgrom.v diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/roms/combined_keymap.mif b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/roms/combined_keymap.mif similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/roms/combined_keymap.mif rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/roms/combined_keymap.mif diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/roms/mon_jp.HEX b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/roms/mon_jp.HEX similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/roms/mon_jp.HEX rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/roms/mon_jp.HEX diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/roms/mon_rom_jp.hex.hex b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/roms/mon_rom_jp.hex.hex similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/roms/mon_rom_jp.hex.hex rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/roms/mon_rom_jp.hex.hex diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/roms/mram.v b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/roms/mram.v similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/roms/mram.v rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/roms/mram.v diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/roms/newMon.hex b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/roms/newMon.hex similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/roms/newMon.hex rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/roms/newMon.hex diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/roms/ram.v b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/roms/ram.v similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/roms/ram.v rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/roms/ram.v diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/scandoubler.v b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/scandoubler.v similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/scandoubler.v rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/scandoubler.v diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/sigma_delta_dac.v b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/sigma_delta_dac.v similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/sigma_delta_dac.v rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/sigma_delta_dac.v diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/sound.v b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/sound.v similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/sound.v rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/sound.v diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/spram.vhd b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/spram.vhd similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/spram.vhd rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/spram.vhd diff --git a/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/sprom.vhd b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/sprom.vhd new file mode 100644 index 00000000..a81ac959 --- /dev/null +++ b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/sprom.vhd @@ -0,0 +1,82 @@ +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY sprom IS + GENERIC + ( + init_file : string := ""; + widthad_a : natural; + width_a : natural := 8; + outdata_reg_a : string := "UNREGISTERED" + ); + PORT + ( + address : IN STD_LOGIC_VECTOR (widthad_a-1 DOWNTO 0); + clock : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (width_a-1 DOWNTO 0) + ); +END sprom; + + +ARCHITECTURE SYN OF sprom IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (width_a-1 DOWNTO 0); + + + + COMPONENT altsyncram + GENERIC ( + address_aclr_a : STRING; + clock_enable_input_a : STRING; + clock_enable_output_a : STRING; + init_file : STRING; + intended_device_family : STRING; + lpm_hint : STRING; + lpm_type : STRING; + numwords_a : NATURAL; + operation_mode : STRING; + outdata_aclr_a : STRING; + outdata_reg_a : STRING; + widthad_a : NATURAL; + width_a : NATURAL; + width_byteena_a : NATURAL + ); + PORT ( + clock0 : IN STD_LOGIC ; + address_a : IN STD_LOGIC_VECTOR (widthad_a-1 DOWNTO 0); + q_a : OUT STD_LOGIC_VECTOR (width_a-1 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + q <= sub_wire0(width_a-1 DOWNTO 0); + + altsyncram_component : altsyncram + GENERIC MAP ( + address_aclr_a => "NONE", + clock_enable_input_a => "BYPASS", + clock_enable_output_a => "BYPASS", + init_file => init_file, + intended_device_family => "Cyclone III", + lpm_hint => "ENABLE_RUNTIME_MOD=NO", + lpm_type => "altsyncram", + numwords_a => 2**widthad_a, + operation_mode => "ROM", + outdata_aclr_a => "NONE", + outdata_reg_a => outdata_reg_a, + widthad_a => widthad_a, + width_a => width_a, + width_byteena_a => 1 + ) + PORT MAP ( + clock0 => clock, + address_a => address, + q_a => sub_wire0 + ); + + + +END SYN; diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/vga.v b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/vga.v similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/vga.v rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/vga.v diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/rtl/video_mixer.sv b/Computer_MiST/Sharp - MZ-80_MiST_New/rtl/video_mixer.sv similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/rtl/video_mixer.sv rename to Computer_MiST/Sharp - MZ-80_MiST_New/rtl/video_mixer.sv diff --git a/Computer_MiST/Sharp - MZ-80K_MiST/suc_hires2.jpg b/Computer_MiST/Sharp - MZ-80_MiST_New/suc_hires2.jpg similarity index 100% rename from Computer_MiST/Sharp - MZ-80K_MiST/suc_hires2.jpg rename to Computer_MiST/Sharp - MZ-80_MiST_New/suc_hires2.jpg