From c6d769f64a73a1287421e893d96ec28208e8bf00 Mon Sep 17 00:00:00 2001 From: Gehstock Date: Thu, 26 Dec 2019 23:46:32 +0100 Subject: [PATCH] move rom to sdram --- Arcade_MiST/Atari Vector/LunarLander_MiST.rar | Bin 0 -> 58753 bytes .../LunarLander_MiST/LunarLander.qsf | 9 - .../LunarLander_MiST/LunarLander.sdc | 134 ++++++++ .../LunarLander_MiST/Release/LLANDER.ROM | Bin 0 -> 16384 bytes .../LunarLander_MiST/rtl/LunarLander_MiST.sv | 131 ++++--- .../LunarLander_MiST/rtl/llander.vhd | 67 +--- .../LunarLander_MiST/rtl/llander_dw.vhd | 64 ++-- .../LunarLander_MiST/rtl/llander_top.vhd | 25 +- .../LunarLander_MiST/rtl/llander_vg.vhd | 107 +++--- .../Atari Vector/LunarLander_MiST/rtl/p2ram.v | 215 ------------ .../rtl/rom/LLANDER_DVG_ROM.vhd | 38 --- .../rtl/rom/LLANDER_PROG_ROM_0.vhd | 150 -------- .../rtl/rom/LLANDER_PROG_ROM_1.vhd | 150 -------- .../rtl/rom/LLANDER_PROG_ROM_2.vhd | 150 -------- .../rtl/rom/LLANDER_PROG_ROM_3.vhd | 150 -------- .../rtl/rom/LLANDER_VEC_ROM_0.vhd | 150 -------- .../rtl/rom/LLANDER_VEC_ROM_1.vhd | 150 -------- .../rtl/rom/LLANDER_VEC_ROM_2.vhd | 150 -------- .../LunarLander_MiST/rtl/sdram.sv | 323 ++++++++++++++++++ 19 files changed, 638 insertions(+), 1525 deletions(-) create mode 100644 Arcade_MiST/Atari Vector/LunarLander_MiST.rar create mode 100644 Arcade_MiST/Atari Vector/LunarLander_MiST/LunarLander.sdc create mode 100644 Arcade_MiST/Atari Vector/LunarLander_MiST/Release/LLANDER.ROM delete mode 100644 Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/p2ram.v delete mode 100644 Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/rom/LLANDER_DVG_ROM.vhd delete mode 100644 Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/rom/LLANDER_PROG_ROM_0.vhd delete mode 100644 Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/rom/LLANDER_PROG_ROM_1.vhd delete mode 100644 Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/rom/LLANDER_PROG_ROM_2.vhd delete mode 100644 Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/rom/LLANDER_PROG_ROM_3.vhd delete mode 100644 Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/rom/LLANDER_VEC_ROM_0.vhd delete mode 100644 Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/rom/LLANDER_VEC_ROM_1.vhd delete mode 100644 Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/rom/LLANDER_VEC_ROM_2.vhd create mode 100644 Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/sdram.sv diff --git a/Arcade_MiST/Atari Vector/LunarLander_MiST.rar b/Arcade_MiST/Atari Vector/LunarLander_MiST.rar new file mode 100644 index 0000000000000000000000000000000000000000..756899d5c644600cd8127b31ec1debb5391dc82a GIT binary patch literal 58753 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%0AMPz7K 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 c_addr(10 downto 0), - data => rom0_dout, - clk => CLK_6 - ); +--rom : entity work.llander_cpu_rom +-- port map ( +-- clk => CLK_6, +-- addr => c_addr(12 downto 0), +-- data => rom_dout +--); - rom1 : entity work.LLANDER_PROG_ROM_1 - port map ( - addr => c_addr(10 downto 0), - data => rom1_dout, - clk => CLK_6 - ); - - rom2 : entity work.LLANDER_PROG_ROM_2 - port map ( - addr => c_addr(10 downto 0), - data => rom2_dout, - clk => CLK_6 - ); - - rom3 : entity work.LLANDER_PROG_ROM_3 - port map ( - addr => c_addr(10 downto 0), - data => rom3_dout, - clk => CLK_6 - ); - - p_rom_mux : process(c_addr, rom0_dout, rom1_dout, rom2_dout, rom3_dout) - begin - rom_dout <= (others => '0'); - case c_addr(12 downto 11) is - when "00" => rom_dout <= rom0_dout; - when "01" => rom_dout <= rom1_dout; - when "10" => rom_dout <= rom2_dout; - when "11" => rom_dout <= rom3_dout; - when others => null; - end case; - end process; - - --- Zero-page RAM ---RAM: Entity work.RAM256 ---port map( --- clock => clk_6, --- address => c_addr(7 downto 0), --- data => c_dout, --- wren => ram_we, --- q => ram_dout --- ); +cpu_rom_address <= c_addr(12 downto 0); +rom_dout <= cpu_rom_data; RAM: Entity work.gen_ram generic map( @@ -639,7 +602,9 @@ end process; ENA_1_5M_E => ena_1_5m_e, RESET_L => reset_l, CLK_6 => CLK_6, - CLK_25 => CLK_25 + CLK_25 => CLK_25, + vector_rom_address => vector_rom_address, + vector_rom_data => vector_rom_data ); BEAM_ENA <= ena_1_5m; diff --git a/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/llander_dw.vhd b/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/llander_dw.vhd index 7fb8a131..b6cc9408 100644 --- a/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/llander_dw.vhd +++ b/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/llander_dw.vhd @@ -57,30 +57,24 @@ library ieee; entity LLANDER_DW is port ( - RESET : in std_logic; - clk_25 : in std_logic; - clk_6 : in std_logic; + RESET : in std_logic; + clk_25 : in std_logic; + clk_6 : in std_logic; - X_VECTOR : in std_logic_vector(9 downto 0); - Y_VECTOR : in std_logic_vector(9 downto 0); - Z_VECTOR : in std_logic_vector(3 downto 0); - BEAM_ON : in std_logic; - BEAM_ENA : in std_logic; + X_VECTOR : in std_logic_vector(9 downto 0); + Y_VECTOR : in std_logic_vector(9 downto 0); + Z_VECTOR : in std_logic_vector(3 downto 0); + BEAM_ON : in std_logic; + BEAM_ENA : in std_logic; - VIDEO_R_OUT : out std_logic_vector(3 downto 0); - VIDEO_G_OUT : out std_logic_vector(3 downto 0); - VIDEO_B_OUT : out std_logic_vector(3 downto 0); - HSYNC_OUT : out std_logic; - VSYNC_OUT : out std_logic; - VID_DE : out std_logic; - VID_HBLANK : out std_logic; - VID_VBLANK : out std_logic; - - vram_write_addr : out std_logic_vector(18 downto 0); - vram_write_data : out std_logic_vector(3 downto 0); - vram_read_addr : out std_logic_vector(18 downto 0); - vram_read_data : in std_logic_vector(3 downto 0); - vram_wren : out std_logic + VIDEO_R_OUT : out std_logic_vector(3 downto 0); + VIDEO_G_OUT : out std_logic_vector(3 downto 0); + VIDEO_B_OUT : out std_logic_vector(3 downto 0); + HSYNC_OUT : out std_logic; + VSYNC_OUT : out std_logic; + VID_DE : out std_logic; + VID_HBLANK : out std_logic; + VID_VBLANK : out std_logic ); end; @@ -129,7 +123,7 @@ architecture RTL of LLANDER_DW is signal vcount : std_logic_vector(8 downto 0); signal hcount : std_logic_vector(8 downto 0); signal pxcount : std_logic_vector(8 downto 0); --- signal vram_wren : std_logic; + signal vram_wren : std_logic; @@ -431,20 +425,18 @@ begin end process; ---video_rgb : work.dpram generic map (19,4) ---port map( --- clock_a => clk_25, --- wren_a => vram_wren, --- address_a => dw_addr(18 downto 0), --- data_a => vid_data, + video_rgb : work.dpram generic map (16,4) +port map +( + clock_a => clk_25, + wren_a => vram_wren, + address_a => dw_addr(15 downto 0), + data_a => vid_data, --- clock_b => clk_25, --- address_b => (screen & up_addr(17 downto 0)), ---); -vram_write_addr <= dw_addr(18 downto 0); -vram_write_data <= vid_data; -vram_read_addr <= screen & up_addr(17 downto 0); -vid_out <= vram_read_data; + clock_b => clk_25, + address_b => (screen & up_addr(14 downto 0)), + q_b => vid_out +); -- job done ! end architecture RTL; diff --git a/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/llander_top.vhd b/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/llander_top.vhd index 033c390c..5e161c1f 100644 --- a/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/llander_top.vhd +++ b/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/llander_top.vhd @@ -97,18 +97,17 @@ entity LLANDER_TOP is VID_HBLANK : out std_logic; VID_VBLANK : out std_logic; - DIP : in std_logic_vector(7 downto 0); + DIP : in std_logic_vector(7 downto 0); RESET_L : in std_logic; -- ref clock in clk_6 : in std_logic; clk_25 : in std_logic; - vram_write_addr : out std_logic_vector(18 downto 0); - vram_write_data : out std_logic_vector(3 downto 0); - vram_read_addr : out std_logic_vector(18 downto 0); - vram_read_data : in std_logic_vector(3 downto 0); - vram_wren : out std_logic + cpu_rom_address : out std_logic_vector(12 downto 0); + cpu_rom_data : in std_logic_vector(7 downto 0); + vector_rom_address : out std_logic_vector(12 downto 0); + vector_rom_data : in std_logic_vector(7 downto 0) ); end; @@ -203,7 +202,11 @@ port map( y_vector => y_vector, z_vector => z_vector, beam_on => beam_on, - BEAM_ENA => beam_ena + BEAM_ENA => beam_ena, + cpu_rom_address => cpu_rom_address, + cpu_rom_data => cpu_rom_data, + vector_rom_address => vector_rom_address, + vector_rom_data => vector_rom_data ); y_vector_w_offset<= y_vector+100; @@ -228,13 +231,7 @@ port map( VSYNC_OUT => VSYNC_OUT, VID_DE => VGA_DE, VID_HBLANK => VID_HBLANK, - VID_VBLANK => VID_VBLANK, - - vram_write_addr => vram_write_addr, - vram_write_data => vram_write_data, - vram_read_addr => vram_read_addr, - vram_read_data => vram_read_data, - vram_wren => vram_wren + VID_VBLANK => VID_VBLANK ); diff --git a/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/llander_vg.vhd b/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/llander_vg.vhd index 7d7a85ad..38f2b0ec 100644 --- a/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/llander_vg.vhd +++ b/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/llander_vg.vhd @@ -52,26 +52,28 @@ library ieee; entity LLANDER_VG is port ( - C_ADDR : in std_logic_vector(15 downto 0); - C_DIN : in std_logic_vector( 7 downto 0); - C_DOUT : out std_logic_vector( 7 downto 0); - C_RW_L : in std_logic; - VMEM_L : in std_logic; + C_ADDR : in std_logic_vector(15 downto 0); + C_DIN : in std_logic_vector( 7 downto 0); + C_DOUT : out std_logic_vector( 7 downto 0); + C_RW_L : in std_logic; + VMEM_L : in std_logic; - DMA_GO_L : in std_logic; - DMA_RESET_L : in std_logic; - HALT_OP : out std_logic; + DMA_GO_L : in std_logic; + DMA_RESET_L : in std_logic; + HALT_OP : out std_logic; - X_VECTOR : out std_logic_vector(9 downto 0); - Y_VECTOR : out std_logic_vector(9 downto 0); - Z_VECTOR : out std_logic_vector(3 downto 0); - BEAM_ON : out std_logic; + X_VECTOR : out std_logic_vector(9 downto 0); + Y_VECTOR : out std_logic_vector(9 downto 0); + Z_VECTOR : out std_logic_vector(3 downto 0); + BEAM_ON : out std_logic; - ENA_1_5M : in std_logic; - ENA_1_5M_E : in std_logic; - RESET_L : in std_logic; - CLK_6 : in std_logic; - Clk_25 : in std_logic + ENA_1_5M : in std_logic; + ENA_1_5M_E : in std_logic; + RESET_L : in std_logic; + CLK_6 : in std_logic; + Clk_25 : in std_logic; + vector_rom_address : out std_logic_vector(12 downto 0); + vector_rom_data : in std_logic_vector( 7 downto 0) ); end; @@ -117,14 +119,10 @@ architecture RTL of LLANDER_VG is signal vram1_l : std_logic; signal vram2_l : std_logic; - signal vrom1_l : std_logic; - signal vrom2_l : std_logic; - signal vrom3_l : std_logic; + signal vrom_l : std_logic; signal vram1_t1_l : std_logic; signal vram2_t1_l : std_logic; - signal vrom1_t1_l : std_logic; - signal vrom2_t1_l : std_logic; - signal vrom3_t1_l : std_logic; + signal vrom_t1_l : std_logic; signal am_bus : std_logic_vector(12 downto 0); signal vw_l : std_logic; @@ -144,9 +142,7 @@ architecture RTL of LLANDER_VG is signal ram_din : std_logic_vector(7 downto 0); signal ram_dout_1 : std_logic_vector(7 downto 0); signal ram_dout_2 : std_logic_vector(7 downto 0); - signal rom_dout_1 : std_logic_vector(7 downto 0); - signal rom_dout_2 : std_logic_vector(7 downto 0); - signal rom_dout_3 : std_logic_vector(7 downto 0); + signal rom_dout : std_logic_vector(7 downto 0); signal memory_dout : std_logic_vector(7 downto 0); begin @@ -403,18 +399,16 @@ begin begin vram1_l <= '1'; vram2_l <= '1'; - vrom1_l <= '1'; - vrom2_l <= '1'; - vrom3_l <= '1'; + vrom_l <= '1'; case am_bus(12 downto 10) is when "000" => vram1_l <= '0'; when "001" => vram2_l <= '0'; - when "010" => vrom1_l <= '0'; - when "011" => vrom1_l <= '0'; - when "100" => vrom2_l <= '0'; - when "101" => vrom2_l <= '0'; - when "110" => vrom3_l <= '0'; -- AJS? - when "111" => vrom3_l <= '0'; + when "010" => vrom_l <= '0'; + when "011" => vrom_l <= '0'; + when "100" => vrom_l <= '0'; + when "101" => vrom_l <= '0'; + when "110" => vrom_l <= '0'; -- AJS? + when "111" => vrom_l <= '0'; when others => null; end case; @@ -425,9 +419,7 @@ begin wait until rising_edge(CLK_6); vram1_t1_l <= vram1_l; vram2_t1_l <= vram2_l; - vrom1_t1_l <= vrom1_l; - vrom2_t1_l <= vrom2_l; - vrom3_t1_l <= vrom3_l; + vrom_t1_l <= vrom_l; end process; -- only cpu can write to vector ram @@ -457,28 +449,17 @@ begin CLK => CLK_6 ); -u_vector_rom_0 : entity work.LLANDER_VEC_ROM_0 - port map ( - addr => am_bus(10 downto 0), - data => rom_dout_1, - clk => CLK_6 - ); +-- u_vector_rom : entity work.llander_vec_rom +-- port map ( +-- clk => CLK_6, +-- addr => am_bus(12 downto 0), +-- data => rom_dout +--); -u_vector_rom_1 : entity work.LLANDER_VEC_ROM_1 - port map ( - addr => am_bus(10 downto 0), - data => rom_dout_2, - clk => CLK_6 - ); - -u_vector_rom_2 : entity work.LLANDER_VEC_ROM_2 - port map ( - addr => am_bus(10 downto 0), - data => rom_dout_3, - clk => CLK_6 - ); +vector_rom_address <= am_bus(12 downto 0); +rom_dout <= vector_rom_data; - p_memory_data_mux : process(vram1_t1_l, vram2_t1_l, vrom1_t1_l, vrom2_t1_l, vrom3_t1_l,ram_dout_1, ram_dout_2, rom_dout_1, rom_dout_2,rom_dout_3) + p_memory_data_mux : process(vram1_t1_l, vram2_t1_l, vrom_t1_l, ram_dout_1, ram_dout_2, rom_dout) begin -- cpu buffer enabled when VMEM_L = 0 memory_dout <= (others => '0'); @@ -486,16 +467,12 @@ u_vector_rom_2 : entity work.LLANDER_VEC_ROM_2 memory_dout <= ram_dout_1; elsif (vram2_t1_l = '0') then memory_dout <= ram_dout_2; - elsif (vrom1_t1_l = '0') then - memory_dout <= rom_dout_1; -- AJS?? - elsif (vrom2_t1_l = '0') then - memory_dout <= rom_dout_2; -- AJS?? - elsif (vrom3_t1_l = '0') then - memory_dout <= rom_dout_3; -- AJS?? + elsif (vrom_t1_l = '0')then + memory_dout <= rom_dout; -- AJS?? else memory_dout <= (others => 'X'); end if; - end process; + end process; -- -- data memory latches -- diff --git a/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/p2ram.v b/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/p2ram.v deleted file mode 100644 index 67b17477..00000000 --- a/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/p2ram.v +++ /dev/null @@ -1,215 +0,0 @@ -// megafunction wizard: %RAM: 2-PORT% -// GENERATION: STANDARD -// VERSION: WM1.0 -// MODULE: altsyncram - -// ============================================================ -// File Name: p2ram.v -// Megafunction Name(s): -// altsyncram -// -// Simulation Library Files(s): -// altera_mf -// ============================================================ -// ************************************************************ -// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! -// -// 13.1.0 Build 162 10/23/2013 SJ Web Edition -// ************************************************************ - - -//Copyright (C) 1991-2013 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. - - -// synopsys translate_off -`timescale 1 ps / 1 ps -// synopsys translate_on -module p2ram ( - clock, - data, - rdaddress, - wraddress, - wren, - q); - - input clock; - input [3:0] data; - input [16:0] rdaddress; - input [16:0] wraddress; - input wren; - output [3:0] q; -`ifndef ALTERA_RESERVED_QIS -// synopsys translate_off -`endif - tri1 clock; - tri0 wren; -`ifndef ALTERA_RESERVED_QIS -// synopsys translate_on -`endif - - wire [3:0] sub_wire0; - wire [3:0] q = sub_wire0[3:0]; - - altsyncram altsyncram_component ( - .address_a (wraddress), - .clock0 (clock), - .data_a (data), - .wren_a (wren), - .address_b (rdaddress), - .q_b (sub_wire0), - .aclr0 (1'b0), - .aclr1 (1'b0), - .addressstall_a (1'b0), - .addressstall_b (1'b0), - .byteena_a (1'b1), - .byteena_b (1'b1), - .clock1 (1'b1), - .clocken0 (1'b1), - .clocken1 (1'b1), - .clocken2 (1'b1), - .clocken3 (1'b1), - .data_b ({4{1'b1}}), - .eccstatus (), - .q_a (), - .rden_a (1'b1), - .rden_b (1'b1), - .wren_b (1'b0)); - defparam - altsyncram_component.address_aclr_b = "NONE", - altsyncram_component.address_reg_b = "CLOCK0", - altsyncram_component.clock_enable_input_a = "BYPASS", - altsyncram_component.clock_enable_input_b = "BYPASS", - altsyncram_component.clock_enable_output_b = "BYPASS", - altsyncram_component.intended_device_family = "Cyclone III", - altsyncram_component.lpm_type = "altsyncram", - altsyncram_component.numwords_a = 131072, - altsyncram_component.numwords_b = 131072, - altsyncram_component.operation_mode = "DUAL_PORT", - altsyncram_component.outdata_aclr_b = "NONE", - altsyncram_component.outdata_reg_b = "CLOCK0", - altsyncram_component.power_up_uninitialized = "FALSE", - altsyncram_component.ram_block_type = "M9K", - altsyncram_component.read_during_write_mode_mixed_ports = "DONT_CARE", - altsyncram_component.widthad_a = 17, - altsyncram_component.widthad_b = 17, - altsyncram_component.width_a = 4, - altsyncram_component.width_b = 4, - altsyncram_component.width_byteena_a = 1; - - -endmodule - -// ============================================================ -// CNX file retrieval info -// ============================================================ -// Retrieval info: PRIVATE: ADDRESSSTALL_A NUMERIC "0" -// Retrieval info: PRIVATE: ADDRESSSTALL_B NUMERIC "0" -// Retrieval info: PRIVATE: BYTEENA_ACLR_A NUMERIC "0" -// Retrieval info: PRIVATE: BYTEENA_ACLR_B NUMERIC "0" -// Retrieval info: PRIVATE: BYTE_ENABLE_A NUMERIC "0" -// Retrieval info: PRIVATE: BYTE_ENABLE_B NUMERIC "0" -// Retrieval info: PRIVATE: BYTE_SIZE NUMERIC "8" -// Retrieval info: PRIVATE: BlankMemory NUMERIC "1" -// Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_A NUMERIC "0" -// Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_B NUMERIC "0" -// Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_A NUMERIC "0" -// Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_B NUMERIC "0" -// Retrieval info: PRIVATE: CLRdata NUMERIC "0" -// Retrieval info: PRIVATE: CLRq NUMERIC "0" -// Retrieval info: PRIVATE: CLRrdaddress NUMERIC "0" -// Retrieval info: PRIVATE: CLRrren NUMERIC "0" -// Retrieval info: PRIVATE: CLRwraddress NUMERIC "0" -// Retrieval info: PRIVATE: CLRwren NUMERIC "0" -// Retrieval info: PRIVATE: Clock NUMERIC "0" -// Retrieval info: PRIVATE: Clock_A NUMERIC "0" -// Retrieval info: PRIVATE: Clock_B NUMERIC "0" -// Retrieval info: PRIVATE: IMPLEMENT_IN_LES NUMERIC "0" -// Retrieval info: PRIVATE: INDATA_ACLR_B NUMERIC "0" -// Retrieval info: PRIVATE: INDATA_REG_B NUMERIC "0" -// Retrieval info: PRIVATE: INIT_FILE_LAYOUT STRING "PORT_B" -// Retrieval info: PRIVATE: INIT_TO_SIM_X NUMERIC "0" -// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" -// Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" -// Retrieval info: PRIVATE: JTAG_ID STRING "NONE" -// Retrieval info: PRIVATE: MAXIMUM_DEPTH NUMERIC "0" -// Retrieval info: PRIVATE: MEMSIZE NUMERIC "524288" -// Retrieval info: PRIVATE: MEM_IN_BITS NUMERIC "0" -// Retrieval info: PRIVATE: MIFfilename STRING "" -// Retrieval info: PRIVATE: OPERATION_MODE NUMERIC "2" -// Retrieval info: PRIVATE: OUTDATA_ACLR_B NUMERIC "0" -// Retrieval info: PRIVATE: OUTDATA_REG_B NUMERIC "1" -// Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "2" -// Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_MIXED_PORTS NUMERIC "2" -// Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_PORT_A NUMERIC "3" -// Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_PORT_B NUMERIC "3" -// Retrieval info: PRIVATE: REGdata NUMERIC "1" -// Retrieval info: PRIVATE: REGq NUMERIC "1" -// Retrieval info: PRIVATE: REGrdaddress NUMERIC "1" -// Retrieval info: PRIVATE: REGrren NUMERIC "1" -// Retrieval info: PRIVATE: REGwraddress NUMERIC "1" -// Retrieval info: PRIVATE: REGwren NUMERIC "1" -// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" -// Retrieval info: PRIVATE: USE_DIFF_CLKEN NUMERIC "0" -// Retrieval info: PRIVATE: UseDPRAM NUMERIC "1" -// Retrieval info: PRIVATE: VarWidth NUMERIC "0" -// Retrieval info: PRIVATE: WIDTH_READ_A NUMERIC "4" -// Retrieval info: PRIVATE: WIDTH_READ_B NUMERIC "4" -// Retrieval info: PRIVATE: WIDTH_WRITE_A NUMERIC "4" -// Retrieval info: PRIVATE: WIDTH_WRITE_B NUMERIC "4" -// Retrieval info: PRIVATE: WRADDR_ACLR_B NUMERIC "0" -// Retrieval info: PRIVATE: WRADDR_REG_B NUMERIC "0" -// Retrieval info: PRIVATE: WRCTRL_ACLR_B NUMERIC "0" -// Retrieval info: PRIVATE: enable NUMERIC "0" -// Retrieval info: PRIVATE: rden NUMERIC "0" -// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all -// Retrieval info: CONSTANT: ADDRESS_ACLR_B STRING "NONE" -// Retrieval info: CONSTANT: ADDRESS_REG_B STRING "CLOCK0" -// Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_A STRING "BYPASS" -// Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_B STRING "BYPASS" -// Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_B STRING "BYPASS" -// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" -// Retrieval info: CONSTANT: LPM_TYPE STRING "altsyncram" -// Retrieval info: CONSTANT: NUMWORDS_A NUMERIC "131072" -// Retrieval info: CONSTANT: NUMWORDS_B NUMERIC "131072" -// Retrieval info: CONSTANT: OPERATION_MODE STRING "DUAL_PORT" -// Retrieval info: CONSTANT: OUTDATA_ACLR_B STRING "NONE" -// Retrieval info: CONSTANT: OUTDATA_REG_B STRING "CLOCK0" -// Retrieval info: CONSTANT: POWER_UP_UNINITIALIZED STRING "FALSE" -// Retrieval info: CONSTANT: RAM_BLOCK_TYPE STRING "M9K" -// Retrieval info: CONSTANT: READ_DURING_WRITE_MODE_MIXED_PORTS STRING "DONT_CARE" -// Retrieval info: CONSTANT: WIDTHAD_A NUMERIC "17" -// Retrieval info: CONSTANT: WIDTHAD_B NUMERIC "17" -// Retrieval info: CONSTANT: WIDTH_A NUMERIC "4" -// Retrieval info: CONSTANT: WIDTH_B NUMERIC "4" -// Retrieval info: CONSTANT: WIDTH_BYTEENA_A NUMERIC "1" -// Retrieval info: USED_PORT: clock 0 0 0 0 INPUT VCC "clock" -// Retrieval info: USED_PORT: data 0 0 4 0 INPUT NODEFVAL "data[3..0]" -// Retrieval info: USED_PORT: q 0 0 4 0 OUTPUT NODEFVAL "q[3..0]" -// Retrieval info: USED_PORT: rdaddress 0 0 17 0 INPUT NODEFVAL "rdaddress[16..0]" -// Retrieval info: USED_PORT: wraddress 0 0 17 0 INPUT NODEFVAL "wraddress[16..0]" -// Retrieval info: USED_PORT: wren 0 0 0 0 INPUT GND "wren" -// Retrieval info: CONNECT: @address_a 0 0 17 0 wraddress 0 0 17 0 -// Retrieval info: CONNECT: @address_b 0 0 17 0 rdaddress 0 0 17 0 -// Retrieval info: CONNECT: @clock0 0 0 0 0 clock 0 0 0 0 -// Retrieval info: CONNECT: @data_a 0 0 4 0 data 0 0 4 0 -// Retrieval info: CONNECT: @wren_a 0 0 0 0 wren 0 0 0 0 -// Retrieval info: CONNECT: q 0 0 4 0 @q_b 0 0 4 0 -// Retrieval info: GEN_FILE: TYPE_NORMAL p2ram.v TRUE -// Retrieval info: GEN_FILE: TYPE_NORMAL p2ram.inc FALSE -// Retrieval info: GEN_FILE: TYPE_NORMAL p2ram.cmp FALSE -// Retrieval info: GEN_FILE: TYPE_NORMAL p2ram.bsf FALSE -// Retrieval info: GEN_FILE: TYPE_NORMAL p2ram_inst.v FALSE -// Retrieval info: GEN_FILE: TYPE_NORMAL p2ram_bb.v FALSE -// Retrieval info: LIB_FILE: altera_mf diff --git a/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/rom/LLANDER_DVG_ROM.vhd b/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/rom/LLANDER_DVG_ROM.vhd deleted file mode 100644 index aff1c787..00000000 --- a/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/rom/LLANDER_DVG_ROM.vhd +++ /dev/null @@ -1,38 +0,0 @@ -library ieee; -use ieee.std_logic_1164.all,ieee.numeric_std.all; - -entity LLANDER_DVG_ROM is -port ( - clk : in std_logic; - addr : in std_logic_vector(7 downto 0); - data : out std_logic_vector(7 downto 0) -); -end entity; - -architecture prom of LLANDER_DVG_ROM is - type rom is array(0 to 255) of std_logic_vector(7 downto 0); - signal rom_data: rom := ( - X"00",X"01",X"0D",X"0D",X"05",X"06",X"07",X"0D",X"09",X"0D",X"01",X"00",X"0F",X"0C",X"0A",X"0E", - X"00",X"01",X"0D",X"0D",X"05",X"06",X"07",X"0D",X"09",X"0D",X"01",X"00",X"0F",X"0C",X"0A",X"0E", - X"00",X"01",X"0D",X"0D",X"05",X"06",X"07",X"0D",X"09",X"0D",X"01",X"0D",X"0F",X"0C",X"0B",X"0E", - X"00",X"01",X"0D",X"0D",X"05",X"06",X"07",X"0D",X"0B",X"0D",X"01",X"00",X"08",X"0C",X"0A",X"0E", - X"00",X"01",X"0D",X"0D",X"05",X"06",X"07",X"0D",X"09",X"0D",X"01",X"00",X"08",X"0C",X"0A",X"0E", - X"00",X"01",X"0D",X"0D",X"05",X"06",X"07",X"0D",X"09",X"0D",X"01",X"00",X"09",X"0C",X"0A",X"0E", - X"00",X"01",X"0D",X"0D",X"05",X"06",X"07",X"0D",X"09",X"0D",X"01",X"00",X"09",X"0C",X"0A",X"0E", - X"00",X"01",X"0D",X"0D",X"05",X"06",X"07",X"0D",X"09",X"0D",X"01",X"00",X"0A",X"0C",X"0A",X"0E", - X"09",X"02",X"0D",X"0D",X"05",X"06",X"07",X"0D",X"09",X"0D",X"01",X"00",X"0F",X"0C",X"0A",X"0E", - X"09",X"02",X"0D",X"0D",X"05",X"06",X"07",X"0D",X"09",X"0D",X"01",X"00",X"0F",X"0C",X"0A",X"0E", - X"09",X"02",X"0D",X"0D",X"05",X"06",X"07",X"0D",X"09",X"0D",X"01",X"0D",X"0F",X"0C",X"0B",X"0E", - X"09",X"02",X"0D",X"0D",X"05",X"06",X"07",X"0D",X"0B",X"0D",X"01",X"00",X"08",X"0C",X"0A",X"0E", - X"09",X"02",X"0D",X"0D",X"05",X"06",X"07",X"0D",X"09",X"0D",X"01",X"00",X"08",X"0C",X"0A",X"0E", - X"09",X"02",X"0D",X"0D",X"05",X"06",X"07",X"0D",X"09",X"0D",X"01",X"00",X"09",X"0C",X"0A",X"0E", - X"09",X"02",X"0D",X"0D",X"05",X"06",X"07",X"0D",X"09",X"0D",X"01",X"00",X"09",X"0C",X"0A",X"0E", - X"09",X"02",X"0D",X"0D",X"05",X"06",X"07",X"0D",X"09",X"0D",X"01",X"00",X"0A",X"0C",X"0A",X"0E"); -begin -process(clk) -begin - if rising_edge(clk) then - data <= rom_data(to_integer(unsigned(addr))); - end if; -end process; -end architecture; diff --git a/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/rom/LLANDER_PROG_ROM_0.vhd b/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/rom/LLANDER_PROG_ROM_0.vhd deleted file mode 100644 index 8ef5c152..00000000 --- a/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/rom/LLANDER_PROG_ROM_0.vhd +++ /dev/null @@ -1,150 +0,0 @@ -library ieee; -use ieee.std_logic_1164.all,ieee.numeric_std.all; - -entity LLANDER_PROG_ROM_0 is -port ( - clk : in std_logic; - addr : in std_logic_vector(10 downto 0); - data : out std_logic_vector(7 downto 0) -); -end entity; - -architecture prom of LLANDER_PROG_ROM_0 is - type rom is array(0 to 2047) of std_logic_vector(7 downto 0); - signal rom_data: rom := ( - X"6B",X"20",X"13",X"62",X"A9",X"80",X"85",X"5D",X"24",X"97",X"30",X"0F",X"A9",X"00",X"85",X"22", - X"85",X"97",X"24",X"5D",X"10",X"4C",X"20",X"13",X"62",X"D0",X"28",X"A5",X"22",X"D0",X"21",X"20", - X"13",X"62",X"A9",X"F0",X"A2",X"08",X"20",X"5F",X"79",X"A2",X"00",X"86",X"23",X"86",X"A4",X"86", - X"A5",X"A9",X"11",X"85",X"63",X"A9",X"20",X"A6",X"98",X"D0",X"01",X"4A",X"85",X"22",X"D0",X"03", - X"20",X"35",X"62",X"20",X"A9",X"73",X"A2",X"2C",X"A0",X"CA",X"A5",X"21",X"F0",X"04",X"A2",X"A0", - X"A0",X"C3",X"A5",X"22",X"29",X"20",X"F0",X"04",X"A2",X"00",X"A0",X"F0",X"8E",X"00",X"40",X"8C", - X"01",X"40",X"A2",X"40",X"A0",X"04",X"A5",X"86",X"4A",X"90",X"04",X"A2",X"42",X"A0",X"84",X"86", - X"28",X"84",X"27",X"A5",X"22",X"29",X"20",X"D0",X"2D",X"20",X"95",X"67",X"20",X"39",X"65",X"20", - X"67",X"65",X"20",X"AD",X"65",X"A5",X"22",X"29",X"10",X"D0",X"1B",X"24",X"22",X"10",X"1D",X"A5", - X"62",X"29",X"0F",X"F0",X"0B",X"A5",X"29",X"85",X"27",X"A5",X"2A",X"85",X"28",X"20",X"95",X"75", - X"20",X"D6",X"68",X"4C",X"CE",X"60",X"20",X"7E",X"68",X"4C",X"CE",X"60",X"20",X"9D",X"66",X"24", - X"22",X"50",X"18",X"A5",X"23",X"D0",X"0B",X"A5",X"86",X"29",X"0F",X"C9",X"08",X"D0",X"03",X"20", - X"09",X"65",X"20",X"9E",X"68",X"20",X"FF",X"67",X"4C",X"CE",X"60",X"20",X"9F",X"79",X"A0",X"DE", - X"A9",X"4B",X"A2",X"06",X"20",X"A6",X"7E",X"AD",X"00",X"20",X"29",X"02",X"F0",X"FE",X"20",X"2D", - X"65",X"A0",X"02",X"A2",X"F0",X"A5",X"86",X"4A",X"90",X"04",X"A2",X"E1",X"A0",X"42",X"8E",X"03", - X"40",X"8C",X"02",X"40",X"8D",X"00",X"30",X"E6",X"86",X"A2",X"00",X"AD",X"00",X"20",X"29",X"04", - X"D0",X"02",X"A2",X"20",X"A9",X"1F",X"20",X"53",X"79",X"20",X"E6",X"62",X"20",X"14",X"64",X"24", - X"22",X"30",X"37",X"50",X"1F",X"20",X"32",X"6B",X"20",X"3C",X"63",X"20",X"71",X"6B",X"20",X"1B", - X"75",X"A5",X"01",X"C9",X"10",X"D0",X"02",X"A9",X"0F",X"4A",X"09",X"01",X"AA",X"A9",X"30",X"20", - X"53",X"79",X"D0",X"0D",X"A9",X"20",X"A2",X"00",X"20",X"53",X"79",X"A5",X"22",X"29",X"20",X"D0", - X"09",X"20",X"68",X"6C",X"20",X"4F",X"6D",X"20",X"1C",X"71",X"A5",X"22",X"F0",X"5B",X"20",X"AB", - X"62",X"24",X"22",X"30",X"33",X"70",X"55",X"A2",X"00",X"A5",X"86",X"29",X"10",X"D0",X"02",X"A2", - X"10",X"A9",X"0F",X"20",X"5F",X"79",X"2C",X"00",X"24",X"30",X"06",X"A9",X"40",X"85",X"25",X"D0", - X"04",X"06",X"25",X"B0",X"0D",X"24",X"5D",X"10",X"0C",X"20",X"13",X"62",X"A9",X"10",X"85",X"22", - X"D0",X"03",X"4C",X"40",X"60",X"4C",X"62",X"60",X"24",X"62",X"50",X"0E",X"24",X"5C",X"10",X"04", - X"24",X"5D",X"30",X"06",X"20",X"68",X"6C",X"20",X"4F",X"6D",X"A5",X"86",X"4A",X"B0",X"E6",X"E6", - X"56",X"10",X"E2",X"06",X"56",X"A5",X"62",X"85",X"5D",X"4C",X"08",X"60",X"A5",X"5D",X"30",X"28", - X"20",X"AA",X"64",X"24",X"97",X"30",X"0C",X"A5",X"8D",X"C9",X"05",X"90",X"03",X"4C",X"01",X"60", - X"4C",X"62",X"60",X"2C",X"05",X"24",X"30",X"06",X"A9",X"40",X"85",X"68",X"D0",X"F2",X"06",X"68", - X"90",X"EE",X"A9",X"64",X"85",X"56",X"D0",X"E8",X"20",X"E0",X"6B",X"A5",X"5D",X"85",X"62",X"0A", - X"D0",X"07",X"A0",X"00",X"A9",X"50",X"20",X"13",X"63",X"20",X"90",X"6B",X"20",X"94",X"76",X"A2", - X"00",X"86",X"AF",X"86",X"B0",X"86",X"B1",X"A0",X"0A",X"96",X"57",X"88",X"10",X"FB",X"A9",X"20", - X"20",X"53",X"79",X"06",X"22",X"A9",X"01",X"85",X"56",X"A9",X"0A",X"85",X"61",X"A9",X"41",X"85", - X"63",X"D0",X"AD",X"8D",X"00",X"3E",X"A2",X"08",X"86",X"02",X"BD",X"0E",X"78",X"95",X"06",X"BD", - X"B3",X"4B",X"95",X"0C",X"CA",X"D0",X"F3",X"86",X"60",X"86",X"61",X"A5",X"74",X"85",X"5F",X"A9", - X"11",X"85",X"63",X"10",X"53",X"A5",X"74",X"29",X"03",X"85",X"33",X"18",X"69",X"01",X"29",X"03", - X"85",X"34",X"A5",X"74",X"4A",X"4A",X"29",X"0F",X"C9",X"0F",X"D0",X"02",X"A9",X"04",X"20",X"9E", - X"62",X"85",X"35",X"49",X"0F",X"20",X"9E",X"62",X"85",X"36",X"A2",X"03",X"BD",X"13",X"78",X"95", - X"5E",X"BD",X"0F",X"78",X"95",X"07",X"BD",X"AE",X"55",X"95",X"11",X"CA",X"10",X"EE",X"A9",X"00", - X"AA",X"A0",X"07",X"96",X"9C",X"88",X"10",X"FB",X"A9",X"40",X"85",X"22",X"A9",X"0F",X"20",X"5F", - X"79",X"A9",X"10",X"85",X"02",X"20",X"BE",X"62",X"A2",X"00",X"A0",X"0E",X"96",X"4F",X"88",X"10", - X"FB",X"CA",X"A0",X"07",X"96",X"79",X"88",X"10",X"FB",X"A9",X"40",X"85",X"4E",X"60",X"C9",X"04", - X"B0",X"04",X"69",X"01",X"09",X"0A",X"60",X"11",X"11",X"22",X"11",X"2C",X"04",X"24",X"10",X"2D", - X"06",X"24",X"90",X"2D",X"E6",X"23",X"A5",X"23",X"29",X"03",X"85",X"23",X"A5",X"02",X"0A",X"0A", - X"85",X"67",X"A9",X"00",X"A2",X"03",X"95",X"03",X"CA",X"10",X"FB",X"85",X"66",X"A6",X"23",X"BD", - X"A7",X"62",X"85",X"63",X"BD",X"E2",X"62",X"AA",X"A9",X"F0",X"4C",X"5F",X"79",X"A9",X"40",X"85", - X"24",X"60",X"08",X"04",X"02",X"01",X"20",X"6B",X"79",X"D0",X"07",X"24",X"97",X"70",X"03",X"20", - X"09",X"63",X"A6",X"B6",X"F0",X"05",X"C6",X"B6",X"20",X"09",X"63",X"A6",X"B8",X"F0",X"09",X"C6", - X"B8",X"20",X"09",X"63",X"C6",X"99",X"D0",X"F9",X"60",X"A5",X"98",X"0A",X"AA",X"BD",X"2A",X"63", - X"BC",X"2B",X"63",X"A2",X"FF",X"86",X"97",X"F8",X"18",X"65",X"AD",X"AA",X"98",X"65",X"AE",X"D8", - X"90",X"03",X"A9",X"99",X"AA",X"85",X"AE",X"86",X"AD",X"60",X"00",X"09",X"50",X"04",X"00",X"06", - X"50",X"07",X"00",X"09",X"00",X"11",X"00",X"13",X"50",X"15",X"00",X"18",X"A5",X"56",X"F0",X"01", - X"60",X"A5",X"23",X"C9",X"03",X"F0",X"03",X"4C",X"D4",X"63",X"A5",X"66",X"18",X"65",X"03",X"85", - X"66",X"A5",X"67",X"65",X"04",X"85",X"67",X"4A",X"4A",X"29",X"1F",X"85",X"02",X"A0",X"00",X"A5", - X"03",X"A6",X"04",X"F0",X"0A",X"E8",X"D0",X"0B",X"C9",X"C0",X"90",X"07",X"88",X"30",X"04",X"C9", - X"41",X"90",X"F9",X"84",X"05",X"24",X"97",X"10",X"5A",X"20",X"04",X"64",X"0A",X"0A",X"0A",X"0A", - X"A0",X"00",X"29",X"F0",X"F0",X"25",X"90",X"01",X"88",X"18",X"65",X"03",X"AA",X"98",X"65",X"04", - X"10",X"0A",X"C9",X"FC",X"B0",X"0E",X"A9",X"FC",X"A2",X"00",X"F0",X"08",X"C9",X"04",X"90",X"04", - X"A9",X"03",X"A2",X"E0",X"85",X"04",X"86",X"03",X"4C",X"FE",X"63",X"A5",X"05",X"F0",X"1E",X"A5", - X"06",X"F0",X"05",X"A9",X"00",X"AA",X"F0",X"11",X"A5",X"03",X"05",X"04",X"F0",X"0F",X"A9",X"50", - X"A2",X"00",X"24",X"04",X"10",X"03",X"A9",X"B0",X"CA",X"86",X"04",X"85",X"03",X"A5",X"03",X"05", - X"04",X"85",X"06",X"60",X"24",X"97",X"10",X"FB",X"20",X"04",X"64",X"F0",X"F6",X"18",X"65",X"67", - X"85",X"67",X"AA",X"4A",X"4A",X"29",X"1F",X"85",X"02",X"A5",X"23",X"D0",X"11",X"E8",X"F0",X"06", - X"E0",X"42",X"D0",X"0A",X"A9",X"10",X"85",X"02",X"0A",X"0A",X"85",X"67",X"90",X"D5",X"A2",X"00", - X"A0",X"06",X"D0",X"5D",X"A2",X"00",X"2C",X"06",X"24",X"10",X"01",X"CA",X"2C",X"07",X"24",X"10", - X"01",X"E8",X"8A",X"60",X"24",X"22",X"50",X"04",X"A5",X"56",X"D0",X"44",X"A5",X"84",X"4A",X"4A", - X"AA",X"4A",X"85",X"37",X"A0",X"00",X"E4",X"82",X"B0",X"1A",X"A5",X"84",X"38",X"E5",X"82",X"A0", - X"0F",X"90",X"11",X"C5",X"37",X"90",X"0D",X"A5",X"82",X"A4",X"84",X"20",X"C0",X"70",X"8A",X"4A", - X"4A",X"4A",X"4A",X"A8",X"84",X"01",X"A0",X"00",X"A5",X"85",X"C9",X"4B",X"90",X"08",X"E6",X"83", - X"C6",X"84",X"C6",X"84",X"84",X"85",X"24",X"97",X"10",X"04",X"A5",X"22",X"D0",X"02",X"84",X"01", - X"60",X"A9",X"00",X"F8",X"85",X"39",X"86",X"38",X"84",X"37",X"A5",X"AC",X"38",X"E5",X"37",X"A8", - X"A5",X"AD",X"E5",X"38",X"AA",X"A5",X"AE",X"E5",X"39",X"B0",X"14",X"24",X"97",X"10",X"29",X"A9", - X"40",X"85",X"97",X"A9",X"00",X"85",X"AC",X"85",X"AD",X"85",X"AE",X"85",X"8D",X"F0",X"0A",X"84", - X"AC",X"86",X"AD",X"85",X"AE",X"05",X"AD",X"F0",X"E2",X"18",X"A0",X"02",X"A2",X"00",X"B5",X"A1", - X"75",X"37",X"95",X"A1",X"E8",X"88",X"10",X"F6",X"D8",X"60",X"A0",X"00",X"A5",X"56",X"F0",X"49", - X"24",X"97",X"10",X"46",X"A5",X"86",X"4A",X"90",X"1A",X"A5",X"02",X"C9",X"08",X"90",X"0A",X"F0", - X"12",X"C9",X"19",X"B0",X"04",X"C6",X"02",X"D0",X"07",X"18",X"69",X"01",X"29",X"1F",X"85",X"02", - X"20",X"BC",X"62",X"A5",X"5F",X"D0",X"04",X"85",X"5E",X"F0",X"02",X"C6",X"5F",X"A5",X"02",X"C9", - X"08",X"D0",X"16",X"A5",X"56",X"C9",X"3C",X"B0",X"0A",X"24",X"5C",X"30",X"06",X"A5",X"61",X"C9", - X"10",X"B0",X"09",X"A9",X"10",X"85",X"01",X"C6",X"56",X"60",X"84",X"01",X"84",X"56",X"60",X"04", - X"04",X"02",X"82",X"04",X"08",X"02",X"82",X"07",X"F0",X"A2",X"02",X"B5",X"5E",X"85",X"37",X"B5", - X"5F",X"A0",X"05",X"4A",X"66",X"37",X"88",X"D0",X"FA",X"85",X"38",X"B5",X"5E",X"38",X"E5",X"37", - X"95",X"5E",X"B5",X"5F",X"E5",X"38",X"95",X"5F",X"CA",X"CA",X"10",X"DF",X"60",X"46",X"73",X"90", - X"FC",X"AD",X"00",X"20",X"4A",X"90",X"FA",X"60",X"2E",X"A5",X"4F",X"0A",X"85",X"8C",X"0A",X"85", - X"8B",X"24",X"4E",X"70",X"0D",X"A9",X"E2",X"A2",X"51",X"20",X"D5",X"7E",X"A9",X"BA",X"A2",X"51", - X"D0",X"0B",X"A9",X"BC",X"A2",X"4B",X"20",X"D5",X"7E",X"A9",X"F0",X"A2",X"44",X"A4",X"27",X"84", - X"2D",X"A4",X"28",X"84",X"2E",X"D0",X"2B",X"24",X"4E",X"50",X"1C",X"A2",X"A1",X"20",X"9E",X"65", - X"A9",X"FE",X"A2",X"52",X"20",X"92",X"65",X"24",X"22",X"70",X"01",X"60",X"A2",X"A3",X"20",X"9E", - X"65",X"A9",X"0E",X"A2",X"53",X"D0",X"0B",X"A9",X"16",X"A2",X"54",X"20",X"D5",X"7E",X"A9",X"EE", - X"A2",X"53",X"18",X"65",X"8C",X"A8",X"8A",X"69",X"00",X"A2",X"0A",X"4C",X"A6",X"7E",X"A9",X"00", - X"85",X"37",X"85",X"39",X"85",X"3A",X"86",X"38",X"A0",X"37",X"4C",X"DC",X"7E",X"20",X"84",X"66", - X"A0",X"0D",X"A9",X"00",X"85",X"3E",X"85",X"40",X"20",X"A4",X"7E",X"A5",X"27",X"85",X"29",X"A5", - X"28",X"85",X"2A",X"A5",X"02",X"C9",X"09",X"B0",X"06",X"20",X"6E",X"66",X"4C",X"C9",X"7E",X"A2", - X"04",X"A0",X"04",X"C6",X"3E",X"C6",X"40",X"C9",X"10",X"90",X"0E",X"C9",X"19",X"90",X"06",X"A2", - X"00",X"E6",X"40",X"F0",X"08",X"29",X"0F",X"10",X"09",X"A0",X"00",X"E6",X"3E",X"20",X"F9",X"67", - X"29",X"07",X"86",X"3D",X"84",X"3F",X"20",X"6E",X"66",X"84",X"37",X"85",X"38",X"A0",X"00",X"B1", - X"37",X"0A",X"85",X"39",X"C8",X"B1",X"37",X"29",X"0F",X"09",X"20",X"2A",X"85",X"3A",X"24",X"4E", - X"50",X"05",X"A5",X"39",X"18",X"90",X"18",X"88",X"B1",X"39",X"0A",X"85",X"64",X"C8",X"B1",X"39", - X"29",X"0F",X"09",X"20",X"2A",X"85",X"65",X"20",X"37",X"66",X"A5",X"39",X"18",X"69",X"02",X"85", - X"64",X"A5",X"3A",X"69",X"00",X"85",X"65",X"A0",X"00",X"B1",X"64",X"91",X"27",X"C8",X"B1",X"64", - X"C9",X"A0",X"90",X"08",X"C9",X"F0",X"B0",X"17",X"88",X"4C",X"F8",X"74",X"45",X"3F",X"91",X"27", - X"C8",X"B1",X"64",X"91",X"27",X"C8",X"B1",X"64",X"45",X"3D",X"91",X"27",X"C8",X"D0",X"DA",X"45", - X"3F",X"91",X"27",X"88",X"B1",X"27",X"45",X"3D",X"91",X"27",X"C8",X"C8",X"D0",X"CB",X"0A",X"85", - X"8B",X"24",X"4E",X"50",X"07",X"69",X"F4",X"A8",X"A9",X"4D",X"D0",X"05",X"69",X"A2",X"A8",X"A9", - X"4B",X"69",X"00",X"60",X"A5",X"08",X"A6",X"07",X"20",X"EF",X"6C",X"85",X"10",X"84",X"0F",X"A5", - X"0A",X"A6",X"09",X"20",X"EF",X"6C",X"84",X"0D",X"09",X"A0",X"85",X"0E",X"60",X"A5",X"01",X"F0", - X"FB",X"A5",X"8B",X"24",X"4E",X"50",X"03",X"18",X"69",X"12",X"AA",X"BC",X"72",X"67",X"BD",X"71", - X"67",X"24",X"3E",X"10",X"03",X"20",X"F9",X"67",X"85",X"3D",X"98",X"24",X"40",X"10",X"03",X"20", - X"F9",X"67",X"85",X"3F",X"A5",X"01",X"A0",X"74",X"20",X"EF",X"70",X"A8",X"A5",X"86",X"4A",X"90", - X"01",X"C8",X"A5",X"01",X"18",X"69",X"10",X"0A",X"0A",X"0A",X"90",X"02",X"A9",X"F0",X"85",X"8F", - X"84",X"39",X"98",X"A4",X"3F",X"20",X"EF",X"70",X"86",X"3A",X"A5",X"3D",X"20",X"F9",X"67",X"A8", - X"A5",X"39",X"20",X"EF",X"70",X"86",X"39",X"A5",X"3E",X"45",X"40",X"10",X"06",X"20",X"28",X"67", - X"4C",X"09",X"67",X"20",X"09",X"67",X"4C",X"28",X"67",X"A0",X"00",X"A5",X"3A",X"18",X"65",X"3D", - X"10",X"01",X"88",X"85",X"19",X"84",X"1A",X"A2",X"00",X"A5",X"39",X"18",X"65",X"3F",X"10",X"01", - X"CA",X"85",X"1B",X"86",X"1C",X"4C",X"4A",X"67",X"A5",X"3A",X"20",X"F9",X"67",X"A2",X"00",X"18", - X"65",X"3D",X"10",X"01",X"CA",X"85",X"19",X"86",X"1A",X"A5",X"39",X"20",X"F9",X"67",X"A2",X"00", - X"18",X"65",X"3F",X"10",X"01",X"CA",X"85",X"1B",X"86",X"1C",X"A5",X"3E",X"45",X"40",X"10",X"1E", - X"A5",X"19",X"F0",X"0B",X"20",X"F9",X"67",X"85",X"19",X"A5",X"1A",X"49",X"FF",X"85",X"1A",X"A5", - X"1B",X"F0",X"0B",X"20",X"F9",X"67",X"85",X"1B",X"A5",X"1C",X"49",X"FF",X"85",X"1C",X"4C",X"43", - X"78",X"00",X"F9",X"02",X"FA",X"03",X"FA",X"04",X"FB",X"05",X"FB",X"06",X"FC",X"06",X"FD",X"07", - X"FE",X"07",X"00",X"00",X"FC",X"01",X"FC",X"01",X"FC",X"02",X"FD",X"03",X"FD",X"03",X"FE",X"04", - X"FF",X"04",X"FF",X"04",X"00",X"A0",X"3C",X"A9",X"55",X"20",X"A4",X"7E",X"A9",X"A4",X"20",X"EB", - X"67",X"A0",X"01",X"A9",X"9D",X"18",X"20",X"5A",X"7B",X"A2",X"02",X"20",X"AA",X"7E",X"A0",X"01", - X"A9",X"9C",X"20",X"ED",X"67",X"A9",X"AD",X"20",X"EB",X"67",X"A9",X"AF",X"20",X"F4",X"67",X"20", - X"D1",X"7E",X"A9",X"A6",X"20",X"F4",X"67",X"20",X"D1",X"7E",X"A9",X"A9",X"20",X"F4",X"67",X"A9", - X"55",X"A0",X"AA",X"20",X"A4",X"7E",X"A5",X"9B",X"0A",X"69",X"60",X"20",X"E3",X"67",X"A5",X"9A", - X"0A",X"69",X"5A",X"A8",X"A9",X"55",X"69",X"00",X"4C",X"C9",X"7E",X"A0",X"02",X"18",X"20",X"5A", - X"7B",X"4C",X"D1",X"7E",X"A0",X"03",X"4C",X"59",X"7B",X"49",X"FF",X"18",X"69",X"01",X"60",X"A2"); -begin -process(clk) -begin - if rising_edge(clk) then - data <= rom_data(to_integer(unsigned(addr))); - end if; -end process; -end architecture; diff --git a/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/rom/LLANDER_PROG_ROM_1.vhd b/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/rom/LLANDER_PROG_ROM_1.vhd deleted file mode 100644 index ab57e3df..00000000 --- a/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/rom/LLANDER_PROG_ROM_1.vhd +++ /dev/null @@ -1,150 +0,0 @@ -library ieee; -use ieee.std_logic_1164.all,ieee.numeric_std.all; - -entity LLANDER_PROG_ROM_1 is -port ( - clk : in std_logic; - addr : in std_logic_vector(10 downto 0); - data : out std_logic_vector(7 downto 0) -); -end entity; - -architecture prom of LLANDER_PROG_ROM_1 is - type rom is array(0 to 2047) of std_logic_vector(7 downto 0); - signal rom_data: rom := ( - X"03",X"86",X"41",X"B5",X"33",X"85",X"37",X"0A",X"0A",X"85",X"8B",X"A2",X"4E",X"A9",X"06",X"A0", - X"03",X"24",X"4E",X"70",X"04",X"A9",X"42",X"A0",X"0F",X"84",X"3E",X"20",X"76",X"68",X"A6",X"4F", - X"86",X"3D",X"20",X"E4",X"7E",X"A5",X"27",X"85",X"2B",X"A5",X"28",X"85",X"2C",X"A6",X"37",X"BD", - X"54",X"6C",X"85",X"8B",X"A2",X"47",X"A9",X"00",X"24",X"4E",X"70",X"04",X"A2",X"4E",X"A9",X"7E", - X"20",X"76",X"68",X"20",X"A4",X"7E",X"A5",X"86",X"29",X"10",X"D0",X"0A",X"A0",X"03",X"B1",X"2B", - X"29",X"0F",X"91",X"2B",X"10",X"1A",X"A9",X"65",X"A0",X"07",X"20",X"C9",X"7E",X"A6",X"37",X"BD", - X"45",X"6C",X"0A",X"69",X"A4",X"A8",X"A9",X"57",X"20",X"C9",X"7E",X"A9",X"18",X"20",X"4F",X"7A", - X"A6",X"41",X"CA",X"10",X"8C",X"60",X"18",X"65",X"8B",X"A8",X"8A",X"69",X"00",X"60",X"20",X"2D", - X"7F",X"A2",X"00",X"A9",X"16",X"20",X"34",X"7A",X"A2",X"1C",X"A9",X"00",X"20",X"34",X"7A",X"A2", - X"20",X"20",X"32",X"7A",X"A9",X"AD",X"20",X"57",X"7B",X"A9",X"17",X"4C",X"4F",X"7A",X"A5",X"90", - X"F0",X"0F",X"C6",X"90",X"A2",X"08",X"20",X"32",X"7A",X"A9",X"95",X"20",X"57",X"7B",X"4C",X"29", - X"7A",X"A8",X"A2",X"04",X"A9",X"02",X"24",X"97",X"10",X"0E",X"A5",X"AE",X"D0",X"11",X"A5",X"86", - X"29",X"10",X"D0",X"0B",X"A9",X"01",X"A0",X"10",X"84",X"37",X"20",X"34",X"7A",X"A4",X"37",X"98", - X"AA",X"A9",X"2F",X"4C",X"53",X"79",X"A5",X"90",X"F0",X"16",X"C6",X"90",X"A2",X"10",X"A9",X"06", - X"20",X"34",X"7A",X"A2",X"08",X"20",X"32",X"7A",X"A9",X"95",X"20",X"57",X"7B",X"20",X"29",X"7A", - X"A2",X"18",X"20",X"32",X"7A",X"A9",X"92",X"20",X"57",X"7B",X"A9",X"15",X"20",X"4F",X"7A",X"A5", - X"62",X"29",X"0F",X"D0",X"20",X"A2",X"14",X"A9",X"07",X"24",X"62",X"50",X"0B",X"A9",X"08",X"20", - X"34",X"7A",X"A2",X"2C",X"A9",X"0D",X"D0",X"07",X"20",X"34",X"7A",X"A2",X"28",X"A9",X"09",X"18", - X"65",X"91",X"4C",X"34",X"7A",X"A2",X"24",X"A9",X"11",X"D0",X"F4",X"AB",X"69",X"79",X"69",X"84", - X"69",X"8F",X"69",X"9F",X"69",X"DD",X"69",X"E6",X"69",X"04",X"6A",X"13",X"6A",X"22",X"6A",X"3A", - X"6A",X"4E",X"6A",X"65",X"6A",X"74",X"6A",X"88",X"6A",X"9C",X"6A",X"B7",X"6A",X"CC",X"6A",X"D5", - X"6A",X"F2",X"6A",X"1A",X"6B",X"C2",X"69",X"B5",X"69",X"93",X"69",X"E5",X"69",X"C9",X"69",X"CC", - X"69",X"CF",X"69",X"D2",X"69",X"FF",X"64",X"03",X"65",X"D5",X"69",X"D9",X"69",X"00",X"18",X"06", - X"36",X"3C",X"3C",X"12",X"00",X"BA",X"3C",X"00",X"66",X"2C",X"32",X"42",X"00",X"32",X"30",X"00", - X"20",X"3E",X"1E",X"AC",X"32",X"3E",X"3C",X"00",X"32",X"20",X"00",X"20",X"3E",X"1E",X"AC",X"2C", - X"32",X"3A",X"BC",X"00",X"20",X"3E",X"1E",X"2C",X"00",X"3E",X"30",X"26",X"3C",X"3A",X"80",X"26", - X"30",X"3A",X"1E",X"38",X"3C",X"00",X"1A",X"32",X"26",X"30",X"BA",X"34",X"3E",X"3A",X"24",X"00", - X"3A",X"3C",X"16",X"38",X"BC",X"3A",X"1E",X"2C",X"1E",X"1A",X"3C",X"00",X"32",X"34",X"3C",X"26", - X"32",X"B0",X"00",X"34",X"32",X"26",X"30",X"3C",X"BA",X"0A",X"0C",X"82",X"0E",X"02",X"82",X"10", - X"0C",X"82",X"14",X"02",X"82",X"04",X"0C",X"0C",X"82",X"04",X"12",X"02",X"82",X"34",X"1E",X"38", - X"00",X"1A",X"32",X"26",X"B0",X"C4",X"16",X"3E",X"44",X"26",X"2C",X"26",X"16",X"38",X"46",X"00", - X"20",X"3E",X"1E",X"2C",X"00",X"3C",X"16",X"30",X"2A",X"3A",X"00",X"1C",X"1E",X"3A",X"3C",X"38", - X"32",X"46",X"1E",X"9C",X"1A",X"32",X"30",X"22",X"38",X"16",X"3C",X"3E",X"2C",X"16",X"3C",X"26", - X"32",X"30",X"BA",X"46",X"32",X"3E",X"00",X"2C",X"16",X"30",X"1C",X"1E",X"1C",X"00",X"24",X"16", - X"38",X"9C",X"3C",X"24",X"16",X"3C",X"00",X"42",X"16",X"3A",X"00",X"16",X"00",X"22",X"38",X"1E", - X"16",X"3C",X"00",X"2C",X"16",X"30",X"1C",X"26",X"30",X"A2",X"3C",X"24",X"1E",X"00",X"1E",X"16", - X"22",X"2C",X"1E",X"00",X"24",X"16",X"3A",X"00",X"2C",X"16",X"30",X"1C",X"1E",X"9C",X"3C",X"24", - X"1E",X"00",X"1A",X"32",X"2C",X"3E",X"2E",X"18",X"26",X"16",X"00",X"24",X"16",X"3A",X"00",X"2C", - X"16",X"30",X"1C",X"1E",X"9C",X"46",X"32",X"3E",X"00",X"24",X"16",X"40",X"1E",X"00",X"2C",X"16", - X"30",X"1C",X"1E",X"9C",X"2C",X"26",X"20",X"1E",X"00",X"3A",X"3E",X"34",X"34",X"32",X"38",X"3C", - X"00",X"26",X"3A",X"00",X"22",X"32",X"30",X"9E",X"46",X"32",X"3E",X"38",X"00",X"3C",X"38",X"26", - X"34",X"00",X"26",X"3A",X"00",X"32",X"30",X"1E",X"00",X"42",X"16",X"C6",X"46",X"32",X"3E",X"00", - X"16",X"38",X"1E",X"00",X"24",X"32",X"34",X"1E",X"2C",X"1E",X"3A",X"3A",X"2C",X"46",X"00",X"2E", - X"16",X"38",X"32",X"32",X"30",X"1E",X"9C",X"1A",X"32",X"2E",X"2E",X"3E",X"30",X"26",X"1A",X"16", - X"3C",X"26",X"32",X"30",X"00",X"3A",X"46",X"3A",X"3C",X"1E",X"2E",X"00",X"1C",X"1E",X"3A",X"3C", - X"38",X"32",X"46",X"1E",X"9C",X"46",X"32",X"3E",X"00",X"1A",X"38",X"1E",X"16",X"3C",X"1E",X"1C", - X"00",X"16",X"00",X"3C",X"42",X"32",X"00",X"2E",X"26",X"2C",X"1E",X"00",X"1A",X"38",X"16",X"3C", - X"1E",X"B8",X"46",X"32",X"3E",X"00",X"28",X"3E",X"3A",X"3C",X"00",X"1C",X"1E",X"3A",X"3C",X"38", - X"32",X"46",X"1E",X"1C",X"00",X"16",X"00",X"04",X"02",X"02",X"00",X"2E",X"1E",X"22",X"16",X"18", - X"3E",X"1A",X"2A",X"00",X"2C",X"16",X"30",X"1C",X"1E",X"B8",X"3C",X"24",X"1E",X"38",X"1E",X"00", - X"42",X"1E",X"38",X"1E",X"00",X"30",X"32",X"00",X"3A",X"3E",X"38",X"40",X"26",X"40",X"32",X"38", - X"BA",X"1C",X"A5",X"02",X"4A",X"4A",X"4A",X"AA",X"BD",X"F2",X"76",X"85",X"46",X"0A",X"85",X"47", - X"A6",X"01",X"BD",X"F6",X"76",X"85",X"0B",X"A5",X"02",X"29",X"0F",X"C9",X"09",X"90",X"04",X"49", - X"0F",X"69",X"00",X"85",X"37",X"49",X"07",X"69",X"01",X"29",X"0F",X"AA",X"BD",X"E9",X"76",X"A4", - X"0B",X"20",X"EF",X"70",X"85",X"58",X"A6",X"37",X"BD",X"E9",X"76",X"20",X"EF",X"70",X"85",X"59", - X"60",X"A9",X"DA",X"A4",X"0B",X"30",X"08",X"A6",X"23",X"E0",X"02",X"D0",X"02",X"A9",X"90",X"20", - X"EF",X"70",X"AA",X"A0",X"00",X"84",X"37",X"A0",X"07",X"20",X"C6",X"79",X"A8",X"4C",X"61",X"64", - X"A5",X"5D",X"29",X"0F",X"F0",X"49",X"F8",X"A5",X"9E",X"38",X"E5",X"A2",X"AA",X"A5",X"9F",X"E5", - X"A3",X"A8",X"A5",X"A0",X"E9",X"00",X"D8",X"90",X"36",X"F0",X"04",X"A2",X"99",X"A0",X"99",X"8A", - X"D0",X"03",X"98",X"F0",X"2A",X"98",X"A4",X"AD",X"84",X"3A",X"A4",X"AE",X"84",X"3B",X"A0",X"00", - X"84",X"A2",X"84",X"A3",X"20",X"63",X"64",X"A5",X"A2",X"A6",X"A3",X"24",X"97",X"30",X"04",X"A5", - X"3A",X"A6",X"3B",X"85",X"95",X"86",X"96",X"05",X"96",X"F0",X"04",X"A9",X"7F",X"85",X"90",X"60", - X"A5",X"0F",X"18",X"65",X"51",X"85",X"37",X"A5",X"10",X"65",X"4F",X"29",X"0F",X"A8",X"A2",X"03", - X"86",X"41",X"B5",X"33",X"85",X"3A",X"0A",X"0A",X"AA",X"38",X"A5",X"37",X"FD",X"44",X"4E",X"85", - X"38",X"98",X"FD",X"45",X"4E",X"90",X"12",X"D0",X"10",X"A6",X"3A",X"BD",X"54",X"6C",X"4A",X"4A", - X"4A",X"AA",X"BD",X"63",X"6C",X"C5",X"38",X"B0",X"09",X"A6",X"41",X"CA",X"10",X"D2",X"A9",X"01", - X"D0",X"05",X"A6",X"3A",X"BD",X"45",X"6C",X"A8",X"85",X"8E",X"20",X"76",X"75",X"88",X"D0",X"FA", - X"F8",X"86",X"92",X"84",X"93",X"98",X"18",X"65",X"92",X"90",X"02",X"E6",X"93",X"C6",X"8E",X"D0", - X"F5",X"85",X"92",X"D8",X"60",X"02",X"02",X"02",X"02",X"03",X"03",X"04",X"04",X"04",X"04",X"05", - X"05",X"05",X"05",X"05",X"00",X"08",X"10",X"10",X"18",X"10",X"18",X"18",X"18",X"18",X"18",X"18", - X"18",X"18",X"18",X"FF",X"80",X"40",X"20",X"68",X"A2",X"02",X"86",X"37",X"A9",X"00",X"85",X"5D", - X"85",X"4D",X"85",X"49",X"B5",X"55",X"30",X"28",X"B5",X"5F",X"85",X"48",X"B5",X"5E",X"24",X"4E", - X"70",X"0A",X"0A",X"26",X"48",X"26",X"49",X"0A",X"26",X"48",X"26",X"49",X"B5",X"5A",X"85",X"4C", - X"B5",X"08",X"48",X"B5",X"07",X"AA",X"68",X"20",X"00",X"6D",X"A6",X"37",X"95",X"08",X"94",X"07", - X"A9",X"00",X"85",X"49",X"8A",X"F0",X"02",X"A5",X"63",X"85",X"48",X"A9",X"80",X"85",X"4C",X"B4", - X"5A",X"B5",X"5F",X"48",X"B5",X"5E",X"AA",X"68",X"20",X"FE",X"6C",X"A5",X"37",X"4A",X"AA",X"B5", - X"58",X"85",X"48",X"B5",X"46",X"85",X"4C",X"A5",X"23",X"C9",X"02",X"D0",X"0C",X"A5",X"48",X"4A", - X"18",X"65",X"48",X"85",X"48",X"90",X"02",X"E6",X"49",X"20",X"04",X"6D",X"48",X"8A",X"A6",X"37", - X"95",X"5A",X"94",X"5E",X"68",X"95",X"5F",X"CA",X"CA",X"30",X"03",X"4C",X"6A",X"6C",X"60",X"86", - X"4A",X"06",X"4A",X"2A",X"26",X"4A",X"2A",X"A8",X"A5",X"4A",X"2A",X"29",X"03",X"60",X"84",X"4D", - X"85",X"4B",X"86",X"4A",X"A5",X"4C",X"45",X"4D",X"10",X"34",X"38",X"A5",X"4A",X"E5",X"48",X"A8", - X"A5",X"4B",X"E5",X"49",X"90",X"16",X"D0",X"0D",X"C0",X"00",X"D0",X"09",X"85",X"4A",X"85",X"4B", - X"85",X"4D",X"AA",X"A8",X"60",X"A6",X"4D",X"84",X"4A",X"85",X"4B",X"60",X"49",X"FF",X"AA",X"98", - X"49",X"FF",X"A8",X"C8",X"D0",X"01",X"E8",X"8A",X"A6",X"4C",X"86",X"4D",X"90",X"E9",X"18",X"A5", - X"4A",X"65",X"48",X"A8",X"A5",X"4B",X"65",X"49",X"90",X"DB",X"A9",X"FF",X"A8",X"B0",X"D6",X"20", - X"84",X"66",X"A9",X"6B",X"85",X"69",X"A2",X"00",X"86",X"6A",X"A5",X"86",X"4A",X"B0",X"11",X"86", - X"81",X"CA",X"86",X"79",X"86",X"7A",X"86",X"7D",X"86",X"7E",X"A0",X"07",X"A2",X"77",X"D0",X"11", - X"A9",X"C0",X"85",X"81",X"CA",X"86",X"7B",X"86",X"7C",X"86",X"7F",X"86",X"80",X"A0",X"87",X"A2", - X"77",X"20",X"B8",X"6F",X"A5",X"1D",X"18",X"65",X"51",X"A8",X"A5",X"1E",X"29",X"03",X"69",X"00", - X"AA",X"98",X"38",X"E9",X"30",X"A8",X"8A",X"E9",X"00",X"B0",X"03",X"A0",X"00",X"98",X"24",X"4E", - X"70",X"02",X"A0",X"00",X"84",X"38",X"85",X"39",X"18",X"65",X"4F",X"24",X"4E",X"70",X"08",X"29", - X"0F",X"A0",X"E2",X"A2",X"51",X"D0",X"10",X"29",X"03",X"85",X"3A",X"A0",X"BC",X"A2",X"4B",X"24", - X"38",X"10",X"04",X"A0",X"CE",X"A2",X"4B",X"86",X"2C",X"84",X"2B",X"0A",X"0A",X"A8",X"B1",X"2B", - X"38",X"E5",X"53",X"85",X"1B",X"C8",X"B1",X"2B",X"29",X"0F",X"E5",X"54",X"85",X"1C",X"C8",X"B1", - X"2B",X"38",X"E5",X"51",X"85",X"19",X"C8",X"B1",X"2B",X"29",X"03",X"E9",X"00",X"18",X"65",X"39", - X"85",X"1A",X"A5",X"39",X"AA",X"0A",X"18",X"24",X"38",X"10",X"24",X"A5",X"3A",X"0A",X"A8",X"B9", - X"07",X"78",X"85",X"2B",X"B9",X"08",X"78",X"85",X"2C",X"A0",X"00",X"E8",X"8A",X"0A",X"65",X"2D", - X"91",X"69",X"A5",X"2E",X"69",X"00",X"C8",X"91",X"69",X"E6",X"69",X"E6",X"69",X"D0",X"0A",X"65", - X"2D",X"85",X"2B",X"A5",X"2E",X"69",X"00",X"85",X"2C",X"A0",X"00",X"B1",X"2B",X"C8",X"AA",X"B1", - X"2B",X"C8",X"C9",X"A0",X"90",X"3D",X"C9",X"D0",X"90",X"16",X"F0",X"03",X"4C",X"85",X"6F",X"C6", - X"69",X"A0",X"00",X"B1",X"69",X"85",X"2C",X"C6",X"69",X"B1",X"69",X"85",X"2B",X"4C",X"2B",X"6E", - X"85",X"37",X"98",X"18",X"65",X"2B",X"A0",X"00",X"91",X"69",X"86",X"2B",X"E6",X"69",X"A5",X"2C", - X"69",X"00",X"91",X"69",X"E6",X"69",X"A5",X"37",X"29",X"0F",X"09",X"20",X"06",X"2B",X"2A",X"85", - X"2C",X"D0",X"B6",X"86",X"3F",X"AA",X"B1",X"2B",X"85",X"3D",X"C8",X"B1",X"2B",X"C8",X"84",X"39", - X"29",X"03",X"A8",X"8A",X"29",X"03",X"85",X"40",X"8A",X"6A",X"6A",X"6A",X"6A",X"85",X"4C",X"29", - X"0F",X"85",X"41",X"A9",X"09",X"38",X"E5",X"41",X"AA",X"98",X"4A",X"66",X"3D",X"46",X"40",X"66", - X"3F",X"CA",X"D0",X"F6",X"85",X"3E",X"A5",X"19",X"85",X"15",X"18",X"65",X"3D",X"85",X"19",X"A5", - X"1A",X"85",X"16",X"65",X"3E",X"85",X"1A",X"24",X"4C",X"10",X"12",X"A5",X"3F",X"49",X"FF",X"AA", - X"A5",X"40",X"49",X"FF",X"A8",X"E8",X"86",X"3F",X"D0",X"01",X"C8",X"84",X"40",X"A5",X"1B",X"85", - X"17",X"18",X"65",X"3F",X"85",X"1B",X"A5",X"1C",X"85",X"18",X"65",X"40",X"85",X"1C",X"A5",X"1A", - X"10",X"03",X"4C",X"80",X"6F",X"24",X"81",X"30",X"3F",X"A5",X"19",X"C5",X"1D",X"A5",X"1A",X"E5", - X"1E",X"90",X"06",X"A9",X"80",X"85",X"81",X"B0",X"28",X"A5",X"1F",X"C5",X"1B",X"A5",X"20",X"E5", - X"1C",X"90",X"7D",X"A9",X"80",X"85",X"81",X"A5",X"17",X"C5",X"1F",X"A5",X"18",X"30",X"12",X"E5", - X"20",X"90",X"0E",X"20",X"6E",X"70",X"85",X"7A",X"84",X"79",X"8A",X"10",X"04",X"A9",X"8F",X"85", - X"5D",X"A0",X"47",X"A2",X"77",X"20",X"B8",X"6F",X"A5",X"81",X"29",X"0F",X"D0",X"27",X"A5",X"19", - X"C5",X"1D",X"A5",X"1A",X"E5",X"1E",X"90",X"48",X"20",X"22",X"70",X"24",X"81",X"70",X"07",X"85", - X"7E",X"84",X"7D",X"4C",X"7F",X"6F",X"85",X"80",X"84",X"7F",X"A2",X"CF",X"86",X"81",X"A0",X"C7", - X"A2",X"77",X"20",X"B8",X"6F",X"A5",X"1D",X"18",X"69",X"30",X"AA",X"A5",X"1E",X"69",X"00",X"E4", - X"19",X"E5",X"1A",X"90",X"1A",X"A5",X"1B",X"C5",X"1F",X"A5",X"1C",X"30",X"13",X"E5",X"20",X"90", - X"0F",X"20",X"6E",X"70",X"85",X"7C",X"84",X"7B",X"8A",X"30",X"04",X"A9",X"8F",X"85",X"5D",X"60", - X"A4",X"39",X"4C",X"2B",X"6E",X"84",X"39",X"85",X"37",X"29",X"03",X"85",X"3F",X"A5",X"37",X"29", - X"08",X"4A",X"85",X"38",X"8A",X"29",X"08",X"05",X"38",X"4A",X"4A",X"86",X"38",X"A8",X"8A",X"29", - X"03",X"0A",X"06",X"3F",X"88",X"10",X"FA",X"85",X"3D",X"A5",X"37",X"4A",X"4A",X"6A",X"6A",X"85", - X"4C",X"A9",X"00",X"85",X"40",X"4C",X"A4",X"6E",X"86",X"32",X"84",X"31",X"24",X"4E",X"70",X"26", - X"A5",X"02",X"0A",X"A8",X"A2",X"00",X"B1",X"31",X"10",X"01",X"CA",X"18",X"65",X"0F",X"85",X"1D", - X"8A",X"65",X"10",X"85",X"1E",X"C8",X"A2",X"00",X"B1",X"31",X"10",X"01",X"CA",X"18",X"65",X"0D", - X"A8",X"8A",X"65",X"0E",X"D0",X"0C",X"A5",X"0F",X"85",X"1D",X"A5",X"10",X"85",X"1E",X"A4",X"0D", - X"A5",X"0E",X"29",X"0F",X"85",X"20",X"84",X"1F",X"60",X"A5",X"19",X"38",X"E5",X"15",X"85",X"3D"); -begin -process(clk) -begin - if rising_edge(clk) then - data <= rom_data(to_integer(unsigned(addr))); - end if; -end process; -end architecture; diff --git a/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/rom/LLANDER_PROG_ROM_2.vhd b/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/rom/LLANDER_PROG_ROM_2.vhd deleted file mode 100644 index e5706ae1..00000000 --- a/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/rom/LLANDER_PROG_ROM_2.vhd +++ /dev/null @@ -1,150 +0,0 @@ -library ieee; -use ieee.std_logic_1164.all,ieee.numeric_std.all; - -entity LLANDER_PROG_ROM_2 is -port ( - clk : in std_logic; - addr : in std_logic_vector(10 downto 0); - data : out std_logic_vector(7 downto 0) -); -end entity; - -architecture prom of LLANDER_PROG_ROM_2 is - type rom is array(0 to 2047) of std_logic_vector(7 downto 0); - signal rom_data: rom := ( - X"A5",X"17",X"49",X"FF",X"A8",X"A5",X"18",X"49",X"FF",X"AA",X"C8",X"D0",X"01",X"E8",X"98",X"18", - X"65",X"1B",X"A8",X"8A",X"A2",X"00",X"65",X"1C",X"10",X"05",X"98",X"49",X"FF",X"A8",X"CA",X"86", - X"40",X"60",X"20",X"F9",X"6F",X"98",X"A4",X"3D",X"20",X"C0",X"70",X"A5",X"1D",X"38",X"E5",X"15", - X"A4",X"77",X"20",X"EF",X"70",X"86",X"37",X"A4",X"76",X"20",X"F1",X"70",X"18",X"65",X"37",X"85", - X"37",X"24",X"40",X"30",X"0E",X"18",X"65",X"17",X"85",X"48",X"A5",X"18",X"69",X"00",X"85",X"49", - X"4C",X"60",X"70",X"38",X"A5",X"17",X"E5",X"37",X"85",X"48",X"A5",X"18",X"E9",X"00",X"85",X"49", - X"A6",X"1F",X"A5",X"20",X"20",X"9B",X"70",X"10",X"04",X"A2",X"8F",X"86",X"5D",X"60",X"20",X"F9", - X"6F",X"A5",X"3D",X"20",X"C0",X"70",X"A5",X"17",X"38",X"E5",X"1F",X"A4",X"77",X"20",X"EF",X"70", - X"86",X"37",X"A4",X"76",X"20",X"F1",X"70",X"18",X"65",X"37",X"85",X"37",X"18",X"65",X"15",X"85", - X"48",X"A5",X"16",X"69",X"00",X"85",X"49",X"A6",X"1D",X"A5",X"1E",X"85",X"4B",X"A9",X"80",X"24", - X"49",X"10",X"14",X"A5",X"48",X"49",X"FF",X"85",X"48",X"A5",X"49",X"49",X"FF",X"85",X"49",X"E6", - X"48",X"D0",X"02",X"E6",X"49",X"A9",X"00",X"85",X"4C",X"A0",X"00",X"84",X"4D",X"4C",X"02",X"6D", - X"84",X"75",X"20",X"D1",X"70",X"86",X"77",X"A2",X"00",X"86",X"78",X"20",X"D5",X"70",X"86",X"76", - X"60",X"85",X"78",X"A9",X"00",X"A0",X"07",X"26",X"78",X"2A",X"B0",X"0E",X"C5",X"75",X"90",X"02", - X"E5",X"75",X"88",X"10",X"F2",X"26",X"78",X"A6",X"78",X"60",X"E5",X"75",X"38",X"B0",X"F3",X"85", - X"43",X"84",X"42",X"A5",X"43",X"48",X"49",X"FF",X"85",X"43",X"A9",X"00",X"85",X"44",X"85",X"45", - X"A2",X"08",X"06",X"43",X"B0",X"06",X"65",X"42",X"90",X"02",X"E6",X"45",X"CA",X"D0",X"07",X"AA", - X"68",X"85",X"43",X"A5",X"45",X"60",X"0A",X"26",X"45",X"90",X"E7",X"55",X"A9",X"00",X"85",X"55", - X"85",X"57",X"A9",X"0F",X"24",X"4E",X"50",X"02",X"A9",X"03",X"85",X"37",X"A5",X"08",X"24",X"5A", - X"10",X"0D",X"C9",X"20",X"B0",X"1A",X"20",X"2C",X"73",X"B0",X"15",X"C6",X"4F",X"90",X"0B",X"C9", - X"E0",X"90",X"0D",X"20",X"1B",X"73",X"90",X"08",X"E6",X"4F",X"A5",X"4F",X"25",X"37",X"85",X"4F", - X"24",X"4E",X"50",X"03",X"4C",X"3E",X"72",X"A5",X"0A",X"24",X"5C",X"10",X"0A",X"C9",X"40",X"B0", - X"03",X"20",X"54",X"73",X"4C",X"03",X"72",X"C9",X"A5",X"90",X"F9",X"20",X"FE",X"72",X"C9",X"02", - X"90",X"06",X"D0",X"0A",X"E0",X"08",X"B0",X"06",X"20",X"3D",X"73",X"4C",X"03",X"72",X"24",X"5D", - X"10",X"03",X"4C",X"39",X"72",X"A5",X"0F",X"18",X"65",X"51",X"85",X"51",X"A5",X"10",X"29",X"03", - X"65",X"4F",X"29",X"0F",X"AA",X"4A",X"66",X"51",X"4A",X"66",X"51",X"18",X"69",X"02",X"29",X"03", - X"85",X"4F",X"8A",X"29",X"0C",X"48",X"0A",X"0A",X"AA",X"BD",X"E2",X"51",X"38",X"E5",X"53",X"85", - X"48",X"BD",X"E3",X"51",X"E5",X"54",X"85",X"49",X"A9",X"80",X"85",X"4C",X"A0",X"00",X"A6",X"0D", - X"A5",X"0E",X"29",X"0F",X"20",X"FE",X"6C",X"4A",X"66",X"4A",X"4A",X"66",X"4A",X"85",X"4B",X"68", - X"AA",X"BD",X"BC",X"4B",X"85",X"48",X"BD",X"BD",X"4B",X"85",X"49",X"A9",X"00",X"85",X"50",X"85", - X"52",X"85",X"53",X"85",X"54",X"85",X"09",X"85",X"07",X"85",X"4C",X"20",X"04",X"6D",X"84",X"0A", - X"4A",X"66",X"0A",X"66",X"09",X"4A",X"66",X"0A",X"66",X"09",X"A9",X"80",X"85",X"08",X"A9",X"40", - X"85",X"4E",X"60",X"20",X"FE",X"72",X"09",X"00",X"D0",X"2B",X"E0",X"02",X"B0",X"27",X"C0",X"02", - X"B0",X"23",X"A5",X"02",X"38",X"E9",X"07",X"C9",X"03",X"B0",X"1E",X"A5",X"61",X"A2",X"80",X"C9", - X"04",X"90",X"06",X"C9",X"08",X"B0",X"12",X"A2",X"C0",X"A5",X"5F",X"C9",X"04",X"B0",X"0A",X"8A", - X"05",X"5D",X"85",X"5D",X"60",X"24",X"5D",X"10",X"04",X"A9",X"8F",X"85",X"5D",X"60",X"A5",X"0A", - X"24",X"5C",X"30",X"1A",X"C9",X"A5",X"90",X"2A",X"20",X"3D",X"73",X"F0",X"10",X"C9",X"02",X"90", - X"0C",X"20",X"2D",X"65",X"20",X"96",X"6B",X"A2",X"FF",X"9A",X"4C",X"40",X"60",X"60",X"A5",X"53", - X"05",X"54",X"F0",X"0E",X"20",X"54",X"73",X"B0",X"F4",X"A9",X"00",X"85",X"52",X"85",X"53",X"85", - X"54",X"60",X"20",X"FE",X"72",X"A8",X"D0",X"F9",X"E0",X"60",X"B0",X"F5",X"A5",X"0F",X"18",X"65", - X"51",X"85",X"51",X"A5",X"10",X"65",X"4F",X"29",X"03",X"AA",X"06",X"51",X"2A",X"06",X"51",X"2A", - X"48",X"38",X"E9",X"02",X"29",X"0F",X"85",X"4F",X"8A",X"0A",X"0A",X"AA",X"BD",X"BC",X"4B",X"85", - X"48",X"BD",X"BD",X"4B",X"85",X"49",X"A9",X"80",X"85",X"4C",X"A5",X"0E",X"A6",X"0D",X"A0",X"00", - X"20",X"FE",X"6C",X"06",X"4A",X"2A",X"06",X"4A",X"2A",X"85",X"4B",X"A9",X"A3",X"A2",X"78",X"85", - X"49",X"86",X"48",X"20",X"04",X"6D",X"A9",X"18",X"85",X"48",X"A9",X"A1",X"85",X"49",X"A9",X"00", - X"85",X"4C",X"85",X"4E",X"85",X"07",X"85",X"09",X"85",X"50",X"85",X"52",X"20",X"04",X"6D",X"68", - X"29",X"0C",X"0A",X"AA",X"BD",X"22",X"52",X"85",X"48",X"BD",X"23",X"52",X"85",X"49",X"20",X"04", - X"6D",X"85",X"54",X"84",X"53",X"A9",X"80",X"85",X"08",X"A9",X"9E",X"85",X"0A",X"60",X"A0",X"FF", - X"A5",X"7E",X"A6",X"7D",X"C5",X"80",X"90",X"12",X"D0",X"0C",X"A4",X"7F",X"C4",X"7D",X"B0",X"0A", - X"A6",X"7F",X"A4",X"7D",X"90",X"04",X"A5",X"80",X"A6",X"7F",X"60",X"20",X"6B",X"73",X"A5",X"50", - X"18",X"65",X"3D",X"85",X"50",X"A5",X"51",X"65",X"3E",X"85",X"51",X"60",X"20",X"6B",X"73",X"A5", - X"50",X"38",X"E5",X"3D",X"85",X"50",X"A5",X"51",X"E5",X"3E",X"85",X"51",X"60",X"20",X"8A",X"73", - X"A5",X"52",X"18",X"65",X"3F",X"85",X"52",X"A5",X"53",X"65",X"40",X"85",X"53",X"A5",X"54",X"69", - X"00",X"85",X"54",X"60",X"20",X"8A",X"73",X"A5",X"52",X"38",X"E5",X"3F",X"85",X"52",X"A5",X"53", - X"E5",X"40",X"85",X"53",X"A5",X"54",X"E9",X"00",X"85",X"54",X"60",X"A9",X"80",X"85",X"55",X"A5", - X"5F",X"85",X"3D",X"A9",X"00",X"85",X"3E",X"A5",X"5E",X"A2",X"02",X"24",X"4E",X"70",X"02",X"A2", - X"04",X"0A",X"26",X"3D",X"26",X"3E",X"CA",X"D0",X"F8",X"60",X"A9",X"80",X"85",X"57",X"A5",X"61", - X"85",X"3F",X"A9",X"00",X"85",X"40",X"A5",X"60",X"A2",X"02",X"24",X"4E",X"70",X"02",X"A2",X"04", - X"0A",X"26",X"3F",X"26",X"40",X"CA",X"D0",X"F8",X"60",X"A9",X"BA",X"85",X"64",X"A9",X"51",X"85", - X"65",X"A9",X"45",X"85",X"28",X"A9",X"6B",X"85",X"69",X"A9",X"00",X"85",X"27",X"85",X"6A",X"85", - X"37",X"85",X"38",X"85",X"39",X"A9",X"F0",X"85",X"2B",X"A9",X"44",X"85",X"2C",X"20",X"03",X"75", - X"A0",X"00",X"B1",X"64",X"AA",X"C8",X"B1",X"64",X"C9",X"A0",X"90",X"12",X"C9",X"D0",X"90",X"25", - X"F0",X"4F",X"91",X"27",X"88",X"8A",X"49",X"08",X"91",X"27",X"C8",X"C8",X"D0",X"E4",X"38",X"E9", - X"20",X"91",X"27",X"88",X"8A",X"91",X"27",X"C8",X"C8",X"B1",X"64",X"91",X"27",X"C8",X"B1",X"64", - X"91",X"27",X"C8",X"D0",X"CD",X"29",X"0F",X"85",X"3A",X"86",X"3B",X"88",X"20",X"F8",X"74",X"C8", - X"C8",X"98",X"A0",X"00",X"18",X"65",X"64",X"91",X"69",X"E6",X"69",X"A5",X"65",X"69",X"00",X"91", - X"69",X"E6",X"69",X"A5",X"3B",X"0A",X"85",X"64",X"A5",X"3A",X"2A",X"09",X"40",X"85",X"65",X"D0", - X"A1",X"88",X"20",X"F8",X"74",X"A0",X"00",X"C6",X"69",X"B1",X"69",X"85",X"65",X"C6",X"69",X"B1", - X"69",X"85",X"64",X"A6",X"69",X"E0",X"6B",X"D0",X"89",X"E6",X"37",X"A2",X"04",X"E4",X"37",X"D0", - X"81",X"A9",X"00",X"85",X"37",X"91",X"27",X"C8",X"A9",X"D0",X"91",X"27",X"C8",X"20",X"F8",X"74", - X"E6",X"39",X"A2",X"04",X"E4",X"39",X"F0",X"03",X"4C",X"CD",X"73",X"A9",X"F0",X"85",X"64",X"A9", - X"44",X"85",X"65",X"A5",X"38",X"18",X"65",X"2B",X"85",X"2B",X"D0",X"02",X"E6",X"2C",X"A0",X"07", - X"B1",X"64",X"91",X"2B",X"88",X"10",X"F9",X"A9",X"7E",X"85",X"64",X"A9",X"4E",X"85",X"65",X"A9", - X"00",X"85",X"27",X"A9",X"47",X"85",X"28",X"A0",X"00",X"A2",X"00",X"B1",X"64",X"E0",X"01",X"D0", - X"05",X"38",X"E9",X"20",X"D0",X"16",X"E0",X"07",X"D0",X"12",X"29",X"03",X"85",X"37",X"88",X"B1", - X"64",X"46",X"37",X"6A",X"46",X"37",X"6A",X"91",X"27",X"C8",X"A9",X"04",X"91",X"27",X"E8",X"8A", - X"29",X"07",X"AA",X"C8",X"C0",X"20",X"90",X"D3",X"A5",X"21",X"F0",X"2B",X"A2",X"05",X"86",X"37", - X"0A",X"AA",X"CA",X"CA",X"A9",X"40",X"85",X"27",X"A9",X"47",X"85",X"28",X"BD",X"6A",X"5E",X"BC", - X"69",X"5E",X"20",X"A4",X"7E",X"A6",X"65",X"A4",X"64",X"20",X"F2",X"79",X"A5",X"2C",X"A4",X"2B", - X"20",X"CD",X"7E",X"C6",X"37",X"10",X"EE",X"60",X"98",X"18",X"65",X"27",X"85",X"27",X"90",X"02", - X"E6",X"28",X"60",X"A5",X"28",X"4A",X"29",X"0F",X"09",X"C0",X"AA",X"A5",X"27",X"6A",X"A4",X"38", - X"91",X"2B",X"8A",X"C8",X"91",X"2B",X"C8",X"84",X"38",X"60",X"A8",X"A2",X"03",X"86",X"39",X"A2", - X"02",X"B5",X"5F",X"B4",X"5E",X"84",X"37",X"A0",X"09",X"86",X"3A",X"AA",X"20",X"C6",X"79",X"48", - X"8A",X"A6",X"39",X"95",X"A7",X"94",X"A8",X"68",X"95",X"A6",X"A6",X"3A",X"A0",X"02",X"05",X"94", - X"05",X"93",X"F0",X"07",X"B5",X"5A",X"0A",X"A9",X"00",X"2A",X"A8",X"8A",X"4A",X"AA",X"94",X"9A", - X"A9",X"00",X"85",X"39",X"A6",X"3A",X"CA",X"CA",X"10",X"C7",X"20",X"FE",X"72",X"86",X"37",X"24", - X"4E",X"50",X"06",X"06",X"37",X"2A",X"06",X"37",X"2A",X"AA",X"A4",X"37",X"20",X"C2",X"79",X"85", - X"AF",X"86",X"B0",X"84",X"B1",X"60",X"A2",X"15",X"24",X"5D",X"70",X"0A",X"A2",X"05",X"A5",X"5D", - X"29",X"0F",X"D0",X"02",X"A2",X"50",X"F8",X"8A",X"18",X"65",X"A4",X"85",X"A4",X"A5",X"A5",X"69", - X"00",X"85",X"A5",X"D8",X"60",X"A2",X"0C",X"A9",X"00",X"85",X"8F",X"8A",X"4A",X"A8",X"B9",X"8D", - X"76",X"C5",X"56",X"90",X"70",X"86",X"3A",X"20",X"2F",X"76",X"E0",X"0C",X"D0",X"03",X"18",X"65", - X"3D",X"20",X"BF",X"76",X"86",X"19",X"84",X"1A",X"A6",X"3A",X"E8",X"20",X"2F",X"76",X"CA",X"E0", - X"0C",X"D0",X"03",X"18",X"65",X"3F",X"20",X"BF",X"76",X"86",X"1B",X"84",X"1C",X"98",X"10",X"0B", - X"49",X"FF",X"A8",X"8A",X"49",X"FF",X"AA",X"E8",X"D0",X"01",X"C8",X"C0",X"04",X"B0",X"3A",X"20", - X"43",X"78",X"A0",X"00",X"A6",X"3A",X"E0",X"0C",X"D0",X"13",X"A5",X"56",X"29",X"07",X"0A",X"AA", - X"BD",X"9E",X"4E",X"91",X"27",X"C8",X"BD",X"9F",X"4E",X"91",X"27",X"D0",X"13",X"20",X"2D",X"76", - X"98",X"A4",X"37",X"91",X"27",X"C8",X"E8",X"20",X"2D",X"76",X"98",X"CA",X"A4",X"37",X"91",X"27", - X"20",X"38",X"78",X"A6",X"3A",X"CA",X"CA",X"10",X"82",X"A5",X"56",X"49",X"7F",X"C9",X"40",X"90", - X"0B",X"4A",X"4A",X"4A",X"09",X"08",X"AA",X"A9",X"20",X"4C",X"53",X"79",X"60",X"84",X"37",X"A5", - X"91",X"F0",X"1B",X"C9",X"02",X"90",X"10",X"F0",X"07",X"BD",X"7F",X"76",X"BC",X"10",X"4F",X"60", - X"BD",X"71",X"76",X"BC",X"04",X"4F",X"60",X"BD",X"63",X"76",X"BC",X"F8",X"4E",X"60",X"BD",X"55", - X"76",X"BC",X"EC",X"4E",X"60",X"00",X"FE",X"FF",X"FF",X"FE",X"00",X"FF",X"00",X"00",X"02",X"02", - X"FF",X"00",X"03",X"02",X"01",X"00",X"01",X"FC",X"01",X"FF",X"FF",X"02",X"00",X"00",X"FF",X"00", - X"02",X"FF",X"00",X"FD",X"00",X"01",X"00",X"FF",X"FF",X"00",X"FF",X"03",X"00",X"00",X"03",X"01", - X"FF",X"FB",X"00",X"01",X"FF",X"03",X"01",X"FF",X"FD",X"01",X"01",X"00",X"03",X"5D",X"60",X"64", - X"6D",X"70",X"74",X"7F",X"A5",X"61",X"4A",X"4A",X"4A",X"C9",X"08",X"90",X"02",X"A9",X"07",X"85", - X"3F",X"A5",X"5F",X"4A",X"4A",X"C9",X"08",X"90",X"02",X"A9",X"07",X"24",X"5A",X"30",X"05",X"49", - X"FF",X"18",X"69",X"01",X"85",X"3D",X"A5",X"74",X"4A",X"4A",X"29",X"03",X"85",X"91",X"60",X"A0", - X"00",X"85",X"38",X"0A",X"A5",X"56",X"85",X"37",X"90",X"02",X"A0",X"FF",X"84",X"39",X"A2",X"00", - X"A0",X"00",X"46",X"37",X"B0",X"03",X"D0",X"0A",X"60",X"18",X"8A",X"65",X"38",X"AA",X"98",X"65", - X"39",X"A8",X"06",X"38",X"26",X"39",X"4C",X"D2",X"76",X"00",X"32",X"5F",X"9A",X"B5",X"CD",X"EE", - X"FB",X"FF",X"00",X"80",X"C0",X"40",X"00",X"02",X"05",X"08",X"0B",X"0D",X"0F",X"10",X"11",X"12", - X"13",X"14",X"16",X"18",X"1A",X"1C",X"FF",X"EE",X"0C",X"EB",X"08",X"EA",X"04",X"E9",X"FF",X"EA", - X"FB",X"EB",X"F8",X"ED",X"F3",X"F1",X"F0",X"F5",X"EE",X"F8",X"EB",X"F8",X"00",X"F9",X"FD",X"F9", - X"FC",X"FA",X"FB",X"F8",X"00",X"F8",X"FF",X"F8",X"FD",X"F9",X"FC",X"F8",X"00",X"F9",X"FE",X"F9", - X"FD",X"FA",X"FC",X"F8",X"00",X"F8",X"FF",X"F4",X"12",X"F1",X"10",X"ED",X"0D",X"EB",X"08",X"EA", - X"05",X"E9",X"01",X"EA",X"FC",X"EB",X"F8",X"EE",X"F5",X"F0",X"F1",X"F2",X"EE",X"F8",X"EA",X"FB", - X"EA",X"FD",X"EA",X"ED",X"F3",X"F1",X"F0",X"F7",X"EE",X"F8",X"EB",X"FD",X"EA",X"03",X"EA",X"05", - X"EA",X"08",X"EA",X"04",X"EE",X"FC",X"F9",X"FD",X"F8",X"FF",X"F8",X"01",X"F8",X"FC",X"FA",X"FD", - X"F9",X"FE",X"F9",X"00",X"F7",X"01",X"F8",X"FD",X"F8",X"F9",X"FC",X"F9",X"FA",X"FB",X"FA",X"FC", - X"F9",X"FD",X"F9",X"EA",X"FC",X"EB",X"F8",X"03",X"F9",X"04",X"F9",X"05",X"F9",X"06",X"FB",X"FB", - X"EA",X"FD",X"EA",X"03",X"EA",X"08",X"EB",X"0C",X"EE",X"0F",X"F0",X"13",X"F3",X"15",X"F8",X"16", - X"FB",X"17",X"FF",X"16",X"04",X"10",X"F1",X"12",X"F4",X"15",X"F8",X"16",X"FC",X"03",X"F9",X"04", - X"F9",X"05",X"FA",X"07",X"FA",X"07",X"FC",X"02",X"F8",X"FF",X"F8",X"00",X"F7",X"02",X"F9",X"03", - X"F9",X"04",X"FA",X"FF",X"F8",X"01",X"F8",X"08",X"FE",X"08",X"FF",X"08",X"00",X"07",X"02",X"07", - X"FC",X"07",X"FD",X"08",X"00",X"08",X"01",X"0C",X"EE",X"0F",X"F0",X"13",X"F3",X"15",X"F8",X"16", - X"FB",X"17",X"FF",X"16",X"04",X"15",X"08",X"12",X"F4",X"15",X"F8",X"16",X"FC",X"17",X"01",X"16", - X"05",X"15",X"08",X"13",X"0D",X"0F",X"10",X"0B",X"12",X"08",X"FF",X"08",X"00",X"06",X"FC",X"07"); -begin -process(clk) -begin - if rising_edge(clk) then - data <= rom_data(to_integer(unsigned(addr))); - end if; -end process; -end architecture; diff --git a/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/rom/LLANDER_PROG_ROM_3.vhd b/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/rom/LLANDER_PROG_ROM_3.vhd deleted file mode 100644 index 99863272..00000000 --- a/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/rom/LLANDER_PROG_ROM_3.vhd +++ /dev/null @@ -1,150 +0,0 @@ -library ieee; -use ieee.std_logic_1164.all,ieee.numeric_std.all; - -entity LLANDER_PROG_ROM_3 is -port ( - clk : in std_logic; - addr : in std_logic_vector(10 downto 0); - data : out std_logic_vector(7 downto 0) -); -end entity; - -architecture prom of LLANDER_PROG_ROM_3 is - type rom is array(0 to 2047) of std_logic_vector(7 downto 0); - signal rom_data: rom := ( - X"FD",X"07",X"FE",X"06",X"FB",X"07",X"FC",X"3C",X"45",X"BC",X"45",X"5E",X"46",X"B4",X"46",X"00", - X"10",X"80",X"AA",X"00",X"32",X"10",X"00",X"BF",X"90",X"04",X"29",X"0F",X"F0",X"05",X"29",X"0F", - X"18",X"69",X"01",X"08",X"0A",X"A0",X"00",X"AA",X"BD",X"A2",X"57",X"91",X"27",X"BD",X"A3",X"57", - X"C8",X"91",X"27",X"20",X"38",X"78",X"28",X"60",X"98",X"38",X"65",X"27",X"85",X"27",X"90",X"02", - X"E6",X"28",X"60",X"A5",X"1A",X"C9",X"80",X"90",X"11",X"49",X"FF",X"85",X"1A",X"A5",X"19",X"49", - X"FF",X"69",X"00",X"85",X"19",X"90",X"02",X"E6",X"1A",X"38",X"26",X"37",X"A5",X"1C",X"C9",X"80", - X"90",X"11",X"49",X"FF",X"85",X"1C",X"A5",X"1B",X"49",X"FF",X"69",X"00",X"85",X"1B",X"90",X"02", - X"E6",X"1C",X"38",X"26",X"37",X"A5",X"19",X"C5",X"1B",X"A5",X"1A",X"E5",X"1C",X"A2",X"00",X"B0", - X"02",X"A2",X"02",X"B5",X"1A",X"A0",X"09",X"C9",X"02",X"B0",X"09",X"88",X"16",X"19",X"F0",X"03", - X"2A",X"10",X"F4",X"2A",X"95",X"1A",X"98",X"0A",X"66",X"37",X"2A",X"66",X"37",X"2A",X"0A",X"85", - X"37",X"8A",X"49",X"02",X"AA",X"C0",X"09",X"B0",X"07",X"C8",X"16",X"19",X"36",X"1A",X"10",X"F5", - X"A0",X"00",X"A5",X"1B",X"91",X"27",X"A5",X"37",X"29",X"FC",X"05",X"1C",X"C8",X"91",X"27",X"A5", - X"19",X"C8",X"91",X"27",X"A5",X"37",X"29",X"02",X"0A",X"05",X"8F",X"05",X"1A",X"C8",X"91",X"27", - X"4C",X"38",X"78",X"A2",X"02",X"BD",X"01",X"24",X"0A",X"B5",X"B7",X"29",X"1F",X"B0",X"37",X"F0", - X"10",X"C9",X"1B",X"B0",X"0A",X"A8",X"A5",X"BA",X"29",X"07",X"C9",X"07",X"98",X"90",X"02",X"E9", - X"01",X"95",X"B7",X"AD",X"00",X"20",X"29",X"04",X"D0",X"04",X"A9",X"F0",X"85",X"B4",X"A5",X"B4", - X"F0",X"08",X"C6",X"B4",X"A9",X"00",X"95",X"B7",X"95",X"B3",X"18",X"B5",X"B3",X"F0",X"23",X"D6", - X"B3",X"D0",X"1F",X"38",X"B0",X"1C",X"C9",X"1B",X"B0",X"09",X"B5",X"B7",X"69",X"20",X"90",X"D1", - X"F0",X"01",X"18",X"A9",X"1F",X"B0",X"CA",X"95",X"B7",X"B5",X"B3",X"F0",X"01",X"38",X"A9",X"78", - X"95",X"B3",X"90",X"04",X"F6",X"B6",X"E6",X"B2",X"CA",X"CA",X"10",X"99",X"E6",X"BA",X"A5",X"BA", - X"4A",X"A5",X"B2",X"B0",X"0C",X"F0",X"0A",X"C9",X"10",X"B0",X"02",X"69",X"FF",X"69",X"EF",X"85", - X"B2",X"0A",X"60",X"25",X"89",X"86",X"3C",X"05",X"3C",X"8D",X"00",X"3C",X"85",X"89",X"60",X"25", - X"88",X"86",X"3C",X"05",X"3C",X"8D",X"00",X"32",X"85",X"88",X"60",X"AD",X"03",X"28",X"29",X"03", - X"AA",X"BD",X"9B",X"79",X"85",X"99",X"A2",X"00",X"EE",X"00",X"58",X"F0",X"06",X"AD",X"02",X"28", - X"29",X"03",X"AA",X"86",X"21",X"38",X"AD",X"01",X"28",X"2A",X"2A",X"2D",X"00",X"28",X"29",X"0F", - X"69",X"00",X"C9",X"09",X"90",X"02",X"A9",X"00",X"85",X"98",X"60",X"01",X"04",X"05",X"06",X"A2", - X"0C",X"A5",X"98",X"18",X"69",X"18",X"20",X"34",X"7A",X"A9",X"17",X"20",X"4F",X"7A",X"A9",X"05", - X"20",X"4F",X"7A",X"A5",X"86",X"29",X"20",X"F0",X"07",X"A2",X"00",X"A9",X"04",X"4C",X"34",X"7A", - X"60",X"00",X"84",X"37",X"A0",X"0F",X"86",X"38",X"A9",X"00",X"85",X"92",X"85",X"93",X"85",X"94", - X"F8",X"06",X"37",X"26",X"38",X"A5",X"92",X"65",X"92",X"85",X"92",X"A5",X"93",X"65",X"93",X"85", - X"93",X"A5",X"94",X"65",X"94",X"85",X"94",X"88",X"10",X"E7",X"A4",X"94",X"A6",X"93",X"A5",X"92", - X"D8",X"60",X"86",X"2C",X"84",X"2B",X"A9",X"00",X"4A",X"A8",X"B1",X"2B",X"85",X"39",X"29",X"7F", - X"AA",X"98",X"0A",X"A8",X"BD",X"A2",X"57",X"91",X"27",X"C8",X"BD",X"A3",X"57",X"91",X"27",X"C8", - X"98",X"24",X"39",X"10",X"E3",X"18",X"65",X"27",X"85",X"27",X"90",X"02",X"E6",X"28",X"98",X"4A", - X"65",X"2B",X"85",X"2B",X"90",X"02",X"E6",X"2C",X"60",X"A9",X"17",X"20",X"4F",X"7A",X"A9",X"03", - X"D0",X"1D",X"A9",X"80",X"48",X"8A",X"18",X"69",X"0C",X"A8",X"A9",X"55",X"69",X"00",X"A6",X"27", - X"86",X"2F",X"A6",X"28",X"86",X"30",X"20",X"CD",X"7E",X"20",X"10",X"7F",X"68",X"30",X"58",X"C9", - X"18",X"90",X"03",X"0A",X"D0",X"48",X"48",X"A6",X"21",X"F0",X"10",X"CA",X"7D",X"A1",X"5F",X"AA", - X"BD",X"A4",X"5F",X"A2",X"00",X"0A",X"90",X"0F",X"CA",X"B0",X"0C",X"E9",X"08",X"C9",X"0C",X"B0", - X"13",X"AA",X"BD",X"6D",X"69",X"A2",X"00",X"18",X"A0",X"02",X"71",X"2F",X"91",X"2F",X"8A",X"C8", - X"71",X"2F",X"91",X"2F",X"68",X"0A",X"C9",X"30",X"B0",X"14",X"A6",X"21",X"F0",X"10",X"CA",X"18", - X"7D",X"00",X"58",X"AA",X"BC",X"04",X"58",X"BD",X"05",X"58",X"AA",X"4C",X"F2",X"79",X"AA",X"BC", - X"2B",X"69",X"BD",X"2C",X"69",X"D0",X"F3",X"60",X"48",X"8A",X"48",X"98",X"48",X"D8",X"AD",X"00", - X"2C",X"38",X"E5",X"83",X"B0",X"04",X"C6",X"83",X"A9",X"00",X"C5",X"84",X"90",X"04",X"E6",X"84", - X"A5",X"84",X"AA",X"38",X"E5",X"82",X"90",X"0A",X"4A",X"4A",X"F0",X"0A",X"86",X"82",X"E6",X"85", - X"D0",X"04",X"69",X"03",X"30",X"F6",X"E6",X"74",X"A5",X"73",X"C9",X"03",X"B0",X"0D",X"8D",X"00", - X"34",X"A5",X"00",X"45",X"C1",X"45",X"C2",X"C9",X"85",X"F0",X"03",X"4C",X"EB",X"7A",X"20",X"D3", - X"78",X"90",X"06",X"A2",X"20",X"A9",X"FF",X"D0",X"04",X"A9",X"DF",X"A2",X"00",X"20",X"5F",X"79", - X"24",X"22",X"50",X"2F",X"C6",X"87",X"D0",X"2B",X"A9",X"FA",X"85",X"87",X"E6",X"8D",X"F8",X"18", - X"A2",X"00",X"A0",X"02",X"A9",X"08",X"75",X"9E",X"95",X"9E",X"A9",X"00",X"E8",X"88",X"10",X"F6", - X"A5",X"9C",X"18",X"69",X"01",X"C9",X"60",X"90",X"02",X"A9",X"00",X"85",X"9C",X"A5",X"9D",X"69", - X"00",X"85",X"9D",X"D8",X"A5",X"22",X"D0",X"0E",X"A5",X"74",X"A2",X"1F",X"4A",X"90",X"02",X"A2", - X"10",X"A9",X"00",X"20",X"5F",X"79",X"C6",X"8A",X"D0",X"06",X"A9",X"06",X"85",X"8A",X"E6",X"73", - X"68",X"A8",X"68",X"AA",X"68",X"40",X"00",X"A0",X"02",X"38",X"08",X"88",X"84",X"38",X"18",X"65", - X"38",X"28",X"AA",X"08",X"86",X"37",X"B5",X"00",X"4A",X"4A",X"4A",X"4A",X"28",X"20",X"18",X"78", - X"A5",X"38",X"D0",X"01",X"18",X"A6",X"37",X"B5",X"00",X"20",X"18",X"78",X"A6",X"37",X"CA",X"C6", - X"38",X"10",X"E0",X"60",X"A2",X"FF",X"9A",X"D8",X"A9",X"00",X"8D",X"00",X"3C",X"AA",X"95",X"00", - X"E8",X"D0",X"FB",X"AD",X"00",X"20",X"4A",X"4A",X"B0",X"03",X"4C",X"B9",X"7B",X"A9",X"85",X"85", - X"00",X"85",X"C1",X"85",X"C2",X"A9",X"FF",X"85",X"83",X"A9",X"06",X"85",X"8A",X"A9",X"02",X"85", - X"9A",X"85",X"9B",X"8D",X"00",X"34",X"4C",X"01",X"60",X"A2",X"11",X"9A",X"8A",X"85",X"00",X"A0", - X"00",X"A2",X"01",X"C8",X"B9",X"00",X"00",X"D0",X"23",X"E8",X"D0",X"F7",X"BA",X"8A",X"8D",X"00", - X"34",X"C8",X"D9",X"00",X"00",X"D0",X"12",X"A2",X"00",X"96",X"00",X"C8",X"D0",X"05",X"0A",X"A2", - X"00",X"B0",X"0A",X"AA",X"9A",X"96",X"00",X"D0",X"D8",X"59",X"00",X"00",X"AA",X"8A",X"A0",X"10", - X"29",X"0F",X"F0",X"02",X"A0",X"20",X"8A",X"A2",X"10",X"29",X"F0",X"F0",X"02",X"A2",X"20",X"98", - X"9A",X"AA",X"8E",X"00",X"3C",X"A0",X"0C",X"A2",X"64",X"2C",X"00",X"20",X"70",X"FB",X"2C",X"00", - X"20",X"50",X"FB",X"8D",X"00",X"34",X"CA",X"D0",X"F0",X"C0",X"05",X"D0",X"03",X"8E",X"00",X"3C", - X"88",X"D0",X"E4",X"A8",X"30",X"05",X"09",X"80",X"BA",X"10",X"D7",X"C9",X"90",X"D0",X"05",X"BA", - X"E0",X"10",X"F0",X"06",X"8D",X"00",X"34",X"4C",X"34",X"7C",X"A2",X"FF",X"9A",X"20",X"59",X"7E", - X"A8",X"91",X"27",X"C8",X"D0",X"FB",X"E6",X"28",X"A6",X"28",X"E0",X"48",X"90",X"F3",X"20",X"59", - X"7E",X"A9",X"11",X"85",X"37",X"84",X"BC",X"91",X"27",X"98",X"AA",X"C8",X"F0",X"06",X"B1",X"27", - X"D0",X"2B",X"F0",X"F7",X"8A",X"A8",X"A5",X"37",X"8D",X"00",X"34",X"D1",X"27",X"D0",X"1C",X"A9", - X"00",X"91",X"27",X"A5",X"37",X"C8",X"D0",X"03",X"0A",X"B0",X"06",X"85",X"37",X"91",X"27",X"D0", - X"D8",X"E6",X"28",X"A5",X"28",X"C9",X"48",X"90",X"C8",X"B0",X"1E",X"51",X"27",X"A2",X"00",X"48", - X"29",X"F0",X"F0",X"02",X"A2",X"02",X"68",X"29",X"0F",X"F0",X"01",X"E8",X"8A",X"A6",X"28",X"E0", - X"44",X"90",X"02",X"0A",X"0A",X"05",X"BC",X"85",X"BC",X"A5",X"BC",X"8D",X"00",X"32",X"A9",X"03", - X"85",X"56",X"18",X"A9",X"10",X"66",X"BC",X"08",X"90",X"01",X"0A",X"8D",X"00",X"3C",X"A0",X"50", - X"20",X"7F",X"7E",X"8E",X"00",X"3C",X"A0",X"28",X"20",X"7F",X"7E",X"28",X"C6",X"56",X"10",X"E3", - X"66",X"BC",X"8D",X"00",X"34",X"D0",X"FB",X"A9",X"48",X"85",X"2C",X"20",X"59",X"7E",X"85",X"2B", - X"85",X"BC",X"85",X"BB",X"20",X"2D",X"7F",X"A9",X"12",X"20",X"62",X"7E",X"A2",X"37",X"8A",X"0A", - X"A0",X"00",X"8D",X"00",X"34",X"51",X"2B",X"C8",X"D0",X"FB",X"A8",X"8A",X"29",X"03",X"C9",X"01", - X"98",X"B0",X"2E",X"F0",X"2B",X"85",X"BC",X"86",X"39",X"A9",X"34",X"38",X"E5",X"39",X"4A",X"85", - X"3A",X"38",X"E9",X"04",X"C9",X"04",X"B0",X"02",X"C6",X"BB",X"A5",X"BC",X"29",X"0F",X"F0",X"03", - X"20",X"17",X"7F",X"A5",X"BC",X"29",X"F0",X"F0",X"05",X"E6",X"3A",X"20",X"17",X"7F",X"A6",X"39", - X"8A",X"E6",X"2C",X"CA",X"10",X"BA",X"A6",X"BC",X"F0",X"16",X"24",X"BB",X"10",X"1B",X"A9",X"40", - X"85",X"27",X"A9",X"18",X"85",X"27",X"A9",X"22",X"A2",X"0E",X"20",X"64",X"7E",X"4C",X"59",X"7D", - X"AE",X"7F",X"7F",X"AC",X"7E",X"7F",X"20",X"F2",X"79",X"A9",X"00",X"85",X"56",X"85",X"39",X"85", - X"89",X"A9",X"11",X"8D",X"00",X"32",X"A5",X"28",X"85",X"2A",X"A5",X"27",X"85",X"29",X"A2",X"07", - X"BD",X"00",X"24",X"0A",X"26",X"BD",X"CA",X"10",X"F7",X"AD",X"00",X"20",X"29",X"04",X"85",X"BE", - X"A2",X"00",X"A5",X"BF",X"45",X"BD",X"D0",X"06",X"A5",X"C0",X"45",X"BE",X"F0",X"02",X"A2",X"30", - X"A9",X"0F",X"20",X"53",X"79",X"A5",X"BD",X"85",X"BF",X"A5",X"BE",X"85",X"C0",X"A5",X"29",X"85", - X"27",X"A5",X"2A",X"85",X"28",X"24",X"BB",X"30",X"27",X"A9",X"1A",X"20",X"62",X"7E",X"A0",X"01", - X"AD",X"00",X"2C",X"18",X"65",X"82",X"6A",X"85",X"82",X"A9",X"82",X"20",X"59",X"7B",X"20",X"9F", - X"79",X"A9",X"3A",X"20",X"62",X"7E",X"20",X"6B",X"79",X"A9",X"99",X"A0",X"01",X"20",X"59",X"7B", - X"20",X"71",X"7E",X"E6",X"56",X"A5",X"56",X"C9",X"20",X"90",X"1C",X"A6",X"3A",X"E8",X"E0",X"05", - X"90",X"02",X"A2",X"00",X"86",X"3A",X"BD",X"80",X"7F",X"8D",X"00",X"32",X"BD",X"85",X"7F",X"AA", - X"A9",X"30",X"20",X"53",X"79",X"84",X"56",X"20",X"95",X"7E",X"B0",X"03",X"4C",X"6E",X"7D",X"A2", - X"00",X"8E",X"00",X"3C",X"86",X"BB",X"20",X"59",X"7E",X"A4",X"BB",X"C0",X"03",X"D0",X"23",X"A9", - X"30",X"20",X"62",X"7E",X"A9",X"FB",X"A0",X"00",X"91",X"27",X"E6",X"27",X"48",X"A9",X"F8",X"91", - X"27",X"E6",X"27",X"A9",X"38",X"A2",X"02",X"20",X"64",X"7E",X"68",X"38",X"E9",X"10",X"B0",X"E6", - X"90",X"12",X"BE",X"F4",X"7F",X"98",X"0A",X"A8",X"B9",X"EF",X"7F",X"48",X"B9",X"EE",X"7F",X"A8", - X"68",X"20",X"A6",X"7E",X"20",X"71",X"7E",X"20",X"7A",X"7E",X"20",X"95",X"7E",X"90",X"F8",X"A6", - X"BB",X"E8",X"E0",X"04",X"90",X"AE",X"4C",X"9D",X"7B",X"A9",X"40",X"85",X"28",X"A9",X"00",X"85", - X"27",X"60",X"A2",X"08",X"18",X"6D",X"7C",X"7F",X"A8",X"AD",X"7D",X"7F",X"69",X"00",X"4C",X"A6", - X"7E",X"A9",X"4B",X"A0",X"DE",X"A2",X"06",X"20",X"A6",X"7E",X"8D",X"00",X"30",X"A0",X"03",X"8D", - X"00",X"34",X"A2",X"14",X"2C",X"00",X"20",X"70",X"FB",X"2C",X"00",X"20",X"50",X"FB",X"CA",X"D0", - X"F3",X"88",X"D0",X"EB",X"60",X"2C",X"00",X"20",X"30",X"03",X"06",X"26",X"60",X"A9",X"20",X"85", - X"26",X"18",X"90",X"F8",X"A2",X"08",X"85",X"65",X"84",X"64",X"8A",X"A8",X"88",X"B1",X"64",X"91", - X"27",X"88",X"10",X"F9",X"8A",X"18",X"65",X"27",X"85",X"27",X"90",X"02",X"E6",X"28",X"8A",X"18", - X"65",X"64",X"85",X"64",X"90",X"02",X"E6",X"65",X"60",X"A2",X"02",X"D0",X"D9",X"A2",X"04",X"D0", - X"D5",X"A2",X"04",X"D0",X"D5",X"18",X"65",X"8B",X"A8",X"8A",X"69",X"00",X"A2",X"00",X"86",X"3D", - X"A2",X"0F",X"86",X"3E",X"85",X"65",X"84",X"64",X"A0",X"00",X"B1",X"64",X"38",X"E5",X"53",X"91", - X"27",X"C8",X"B1",X"64",X"E5",X"54",X"29",X"0F",X"09",X"A0",X"91",X"27",X"C8",X"B1",X"64",X"38", - X"E5",X"51",X"91",X"27",X"C8",X"B1",X"64",X"E5",X"3D",X"25",X"3E",X"91",X"27",X"20",X"38",X"78", - X"A9",X"55",X"A0",X"AE",X"4C",X"CD",X"7E",X"A2",X"00",X"A4",X"3A",X"20",X"C2",X"79",X"A9",X"92", - X"38",X"A0",X"01",X"20",X"5A",X"7B",X"A9",X"10",X"A2",X"02",X"4C",X"64",X"7E",X"A9",X"00",X"A2", - X"10",X"4C",X"64",X"7E",X"00",X"A0",X"00",X"00",X"00",X"90",X"00",X"00",X"FF",X"A2",X"FF",X"03", - X"00",X"90",X"00",X"00",X"0B",X"F0",X"58",X"A2",X"10",X"00",X"00",X"70",X"00",X"00",X"80",X"A1", - X"00",X"02",X"00",X"70",X"00",X"00",X"CB",X"F8",X"C8",X"FF",X"CF",X"F8",X"C8",X"FB",X"CB",X"FF", - X"0F",X"F8",X"CB",X"FB",X"90",X"A1",X"00",X"02",X"00",X"90",X"00",X"00",X"0F",X"FD",X"F4",X"A1", - X"76",X"01",X"00",X"70",X"00",X"00",X"38",X"32",X"2E",X"00",X"32",X"AA",X"34",X"7F",X"76",X"7F", - X"11",X"12",X"14",X"18",X"00",X"01",X"03",X"07",X"0F",X"00",X"80",X"A1",X"00",X"02",X"00",X"90", - X"00",X"00",X"20",X"73",X"20",X"C3",X"07",X"E0",X"00",X"A0",X"00",X"00",X"00",X"90",X"00",X"00", - X"FF",X"92",X"FF",X"C2",X"FC",X"77",X"FC",X"C3",X"FE",X"87",X"FE",X"C7",X"FE",X"83",X"FE",X"C7", - X"FC",X"73",X"FC",X"C3",X"FF",X"96",X"FF",X"C2",X"FF",X"92",X"01",X"00",X"FF",X"96",X"FF",X"C6", - X"FC",X"73",X"FC",X"C7",X"FE",X"83",X"FE",X"C3",X"FE",X"87",X"FE",X"C3",X"FC",X"77",X"FC",X"C7", - X"FF",X"92",X"FF",X"C6",X"80",X"A1",X"00",X"02",X"00",X"90",X"00",X"00",X"06",X"C0",X"00",X"B0", - X"08",X"C0",X"00",X"D0",X"0A",X"C0",X"00",X"D0",X"CB",X"FB",X"CF",X"FB",X"00",X"D0",X"8A",X"7F", - X"98",X"7F",X"D4",X"7F",X"0E",X"3C",X"1A",X"00",X"57",X"00",X"A8",X"7A",X"84",X"7B",X"84",X"7B"); -begin -process(clk) -begin - if rising_edge(clk) then - data <= rom_data(to_integer(unsigned(addr))); - end if; -end process; -end architecture; diff --git a/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/rom/LLANDER_VEC_ROM_0.vhd b/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/rom/LLANDER_VEC_ROM_0.vhd deleted file mode 100644 index 6fbb36a5..00000000 --- a/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/rom/LLANDER_VEC_ROM_0.vhd +++ /dev/null @@ -1,150 +0,0 @@ -library ieee; -use ieee.std_logic_1164.all,ieee.numeric_std.all; - -entity LLANDER_VEC_ROM_0 is -port ( - clk : in std_logic; - addr : in std_logic_vector(10 downto 0); - data : out std_logic_vector(7 downto 0) -); -end entity; - -architecture prom of LLANDER_VEC_ROM_0 is - type rom is array(0 to 2047) of std_logic_vector(7 downto 0); - signal rom_data: rom := ( - X"80",X"27",X"00",X"05",X"80",X"22",X"80",X"C6",X"80",X"22",X"00",X"C0",X"80",X"22",X"80",X"C2", - X"00",X"20",X"80",X"C2",X"80",X"26",X"80",X"C2",X"80",X"26",X"00",X"C0",X"80",X"26",X"80",X"C6", - X"00",X"20",X"80",X"C6",X"00",X"D0",X"00",X"36",X"40",X"04",X"C7",X"F2",X"80",X"22",X"80",X"C4", - X"C2",X"F3",X"80",X"20",X"80",X"C2",X"C3",X"F6",X"80",X"26",X"80",X"C0",X"C6",X"F7",X"80",X"24", - X"80",X"C6",X"00",X"D0",X"40",X"36",X"00",X"00",X"80",X"21",X"80",X"C7",X"80",X"22",X"00",X"C5", - X"80",X"23",X"80",X"C1",X"00",X"21",X"80",X"C2",X"80",X"25",X"80",X"C3",X"80",X"26",X"00",X"C1", - X"80",X"27",X"80",X"C5",X"00",X"25",X"80",X"C6",X"00",X"D0",X"00",X"36",X"80",X"00",X"80",X"20", - X"80",X"C7",X"00",X"22",X"80",X"C5",X"80",X"23",X"80",X"C0",X"80",X"21",X"00",X"C2",X"80",X"24", - X"80",X"C3",X"00",X"26",X"80",X"C1",X"80",X"27",X"80",X"C4",X"80",X"25",X"00",X"C6",X"00",X"D0", - X"05",X"FE",X"C5",X"F9",X"80",X"23",X"00",X"C0",X"C1",X"F9",X"00",X"20",X"80",X"C3",X"C1",X"FD", - X"80",X"27",X"00",X"C0",X"C5",X"FD",X"00",X"20",X"80",X"C7",X"00",X"D0",X"00",X"36",X"C0",X"04", - X"80",X"21",X"00",X"C6",X"80",X"23",X"80",X"C4",X"00",X"22",X"80",X"C1",X"80",X"20",X"80",X"C3", - X"80",X"25",X"00",X"C2",X"80",X"27",X"80",X"C0",X"00",X"26",X"80",X"C5",X"80",X"24",X"80",X"C7", - X"00",X"D0",X"00",X"36",X"40",X"04",X"00",X"21",X"80",X"C6",X"80",X"23",X"80",X"C5",X"80",X"22", - X"00",X"C1",X"80",X"21",X"80",X"C3",X"00",X"25",X"80",X"C2",X"80",X"27",X"80",X"C1",X"80",X"26", - X"00",X"C5",X"80",X"25",X"80",X"C7",X"00",X"D0",X"00",X"36",X"40",X"00",X"80",X"20",X"80",X"C6", - X"C6",X"F3",X"80",X"22",X"80",X"C0",X"C3",X"F2",X"80",X"24",X"80",X"C2",X"C2",X"F7",X"80",X"26", - X"80",X"C4",X"C7",X"F6",X"00",X"D0",X"00",X"C4",X"C0",X"33",X"40",X"05",X"80",X"26",X"00",X"C0", - X"80",X"26",X"00",X"00",X"80",X"26",X"00",X"C0",X"00",X"10",X"00",X"C7",X"C0",X"33",X"00",X"C0", - X"00",X"10",X"00",X"C3",X"00",X"10",X"00",X"07",X"C6",X"F9",X"00",X"F1",X"C0",X"FD",X"60",X"46", - X"00",X"00",X"C0",X"FD",X"00",X"F1",X"C2",X"F9",X"00",X"F9",X"80",X"25",X"00",X"C7",X"40",X"33", - X"00",X"C0",X"80",X"25",X"00",X"C3",X"80",X"21",X"00",X"07",X"00",X"D0",X"13",X"C4",X"80",X"24", - X"80",X"06",X"80",X"22",X"80",X"C4",X"80",X"22",X"80",X"04",X"80",X"22",X"80",X"C4",X"00",X"15", - X"00",X"C7",X"C0",X"37",X"C0",X"C0",X"00",X"11",X"00",X"C3",X"00",X"15",X"00",X"07",X"80",X"26", - X"80",X"C7",X"00",X"16",X"00",X"01",X"C5",X"F2",X"60",X"42",X"80",X"04",X"C0",X"F9",X"00",X"F5", - X"C0",X"34",X"40",X"C2",X"C0",X"36",X"80",X"00",X"00",X"26",X"80",X"C6",X"40",X"33",X"C0",X"C4", - X"00",X"25",X"80",X"C3",X"00",X"21",X"80",X"07",X"00",X"D0",X"22",X"C4",X"40",X"33",X"C0",X"06", - X"80",X"26",X"00",X"C1",X"80",X"26",X"00",X"01",X"80",X"26",X"00",X"C1",X"00",X"15",X"00",X"C7", - X"C0",X"33",X"80",X"C5",X"00",X"11",X"00",X"C3",X"00",X"15",X"00",X"07",X"40",X"30",X"00",X"C6", - X"00",X"12",X"00",X"05",X"C1",X"F6",X"40",X"46",X"C0",X"00",X"C1",X"F6",X"00",X"12",X"00",X"05", - X"C3",X"F3",X"05",X"F2",X"80",X"26",X"00",X"C6",X"40",X"33",X"40",X"C5",X"80",X"24",X"80",X"C3", - X"80",X"20",X"80",X"07",X"00",X"D0",X"35",X"C4",X"80",X"25",X"00",X"06",X"00",X"22",X"80",X"C5", - X"00",X"22",X"80",X"05",X"00",X"22",X"80",X"C5",X"00",X"15",X"00",X"C7",X"40",X"37",X"80",X"C2", - X"C1",X"F1",X"05",X"F5",X"40",X"36",X"00",X"C5",X"00",X"06",X"00",X"02",X"C5",X"F1",X"40",X"42", - X"A0",X"05",X"C5",X"F2",X"00",X"16",X"00",X"01",X"40",X"30",X"40",X"C2",X"40",X"36",X"C0",X"01", - X"00",X"27",X"80",X"C5",X"80",X"32",X"00",X"C6",X"80",X"20",X"80",X"C3",X"80",X"24",X"80",X"07", - X"00",X"D0",X"48",X"C4",X"01",X"FD",X"C5",X"F9",X"05",X"F9",X"C5",X"F9",X"C5",X"F5",X"C3",X"FF", - X"C1",X"F1",X"05",X"F5",X"00",X"36",X"C0",X"C4",X"00",X"06",X"00",X"02",X"C5",X"F1",X"C0",X"33", - X"C0",X"07",X"C5",X"F1",X"00",X"06",X"00",X"02",X"C0",X"30",X"00",X"C2",X"40",X"36",X"40",X"02", - X"C5",X"F7",X"80",X"32",X"C0",X"C6",X"00",X"21",X"80",X"C3",X"00",X"25",X"80",X"07",X"00",X"D0", - X"56",X"C4",X"80",X"31",X"00",X"06",X"80",X"25",X"00",X"C2",X"80",X"25",X"00",X"02",X"80",X"25", - X"00",X"C2",X"C5",X"F5",X"40",X"32",X"00",X"C7",X"C1",X"F1",X"05",X"F5",X"C6",X"FD",X"00",X"02", - X"00",X"06",X"C1",X"F5",X"00",X"37",X"C0",X"03",X"C2",X"F5",X"00",X"11",X"00",X"06",X"40",X"32", - X"80",X"C0",X"00",X"12",X"00",X"07",X"80",X"27",X"80",X"C4",X"00",X"32",X"C0",X"C6",X"80",X"21", - X"80",X"C3",X"80",X"25",X"80",X"07",X"00",X"D0",X"69",X"C4",X"00",X"25",X"80",X"02",X"00",X"21", - X"80",X"C6",X"00",X"21",X"80",X"06",X"00",X"21",X"80",X"C6",X"00",X"17",X"00",X"C5",X"80",X"35", - X"C0",X"C3",X"00",X"13",X"00",X"C1",X"00",X"17",X"00",X"05",X"40",X"36",X"00",X"C0",X"01",X"F0", - X"C5",X"F8",X"00",X"41",X"60",X"06",X"C5",X"F1",X"00",X"06",X"00",X"02",X"00",X"23",X"80",X"C3", - X"00",X"35",X"C0",X"02",X"80",X"27",X"00",X"C0",X"40",X"31",X"00",X"C7",X"00",X"22",X"80",X"C2", - X"00",X"26",X"80",X"06",X"00",X"D0",X"7C",X"C4",X"80",X"24",X"80",X"02",X"80",X"20",X"80",X"C6", - X"80",X"20",X"80",X"06",X"80",X"20",X"80",X"C6",X"00",X"17",X"00",X"C5",X"60",X"44",X"00",X"C2", - X"00",X"13",X"00",X"C0",X"00",X"17",X"00",X"00",X"40",X"36",X"80",X"C0",X"01",X"F0",X"C5",X"F8", - X"80",X"40",X"60",X"06",X"C6",X"F1",X"00",X"15",X"00",X"02",X"80",X"23",X"80",X"C2",X"80",X"34", - X"00",X"03",X"80",X"27",X"00",X"C1",X"C0",X"30",X"80",X"C7",X"80",X"22",X"00",X"C2",X"80",X"26", - X"00",X"C6",X"00",X"D0",X"00",X"C4",X"00",X"20",X"80",X"C6",X"00",X"17",X"00",X"C0",X"00",X"30", - X"C0",X"C3",X"00",X"13",X"00",X"C0",X"00",X"20",X"80",X"C6",X"C0",X"34",X"80",X"06",X"C5",X"FE", - X"05",X"F0",X"C1",X"F8",X"00",X"40",X"60",X"02",X"C1",X"F8",X"05",X"F0",X"C5",X"FA",X"05",X"F8", - X"00",X"27",X"80",X"C1",X"00",X"30",X"40",X"C7",X"00",X"23",X"80",X"C1",X"00",X"27",X"80",X"05", - X"00",X"D0",X"8B",X"C4",X"AE",X"C4",X"D5",X"C4",X"FB",X"C4",X"21",X"C5",X"40",X"C5",X"64",X"C5", - X"8B",X"C5",X"B2",X"C5",X"AA",X"A2",X"40",X"00",X"00",X"70",X"00",X"00",X"E8",X"A0",X"00",X"00", - X"40",X"A0",X"00",X"00",X"18",X"A1",X"00",X"00",X"78",X"A0",X"00",X"00",X"EA",X"00",X"AC",X"A0", - X"80",X"00",X"E0",X"A0",X"80",X"00",X"18",X"A0",X"80",X"00",X"18",X"A0",X"80",X"00",X"80",X"A1", - X"00",X"02",X"00",X"B0",X"80",X"20",X"80",X"06",X"00",X"13",X"00",X"C3",X"00",X"10",X"00",X"C3", - X"00",X"17",X"00",X"C3",X"00",X"17",X"00",X"C0",X"00",X"17",X"00",X"C7",X"00",X"10",X"00",X"C7", - X"00",X"13",X"00",X"C7",X"06",X"F7",X"C2",X"F1",X"C0",X"32",X"00",X"C0",X"C6",X"F1",X"02",X"F7", - X"00",X"12",X"00",X"C7",X"80",X"27",X"00",X"C0",X"00",X"12",X"00",X"C3",X"80",X"22",X"80",X"05", - X"00",X"D0",X"00",X"20",X"80",X"06",X"C1",X"F2",X"00",X"11",X"00",X"C3",X"C2",X"F5",X"00",X"17", - X"00",X"C1",X"C5",X"F6",X"00",X"15",X"00",X"C7",X"C6",X"F1",X"C5",X"F5",X"00",X"23",X"80",X"C4", - X"00",X"15",X"00",X"C3",X"00",X"22",X"80",X"06",X"80",X"24",X"00",X"C2",X"40",X"36",X"80",X"C0", - X"00",X"16",X"00",X"C7",X"40",X"32",X"40",X"04",X"00",X"D0",X"00",X"20",X"80",X"06",X"C1",X"F2", - X"00",X"11",X"00",X"C3",X"C2",X"F5",X"00",X"17",X"00",X"C1",X"C5",X"F6",X"00",X"15",X"00",X"C7", - X"C6",X"F1",X"05",X"F7",X"00",X"13",X"00",X"C3",X"40",X"32",X"C0",X"C4",X"80",X"20",X"00",X"C6", - X"00",X"26",X"80",X"02",X"00",X"11",X"00",X"C7",X"80",X"27",X"00",X"C1",X"00",X"13",X"00",X"C2", - X"05",X"F9",X"00",X"D0",X"00",X"26",X"80",X"05",X"80",X"24",X"00",X"C2",X"00",X"12",X"00",X"C3", - X"00",X"22",X"80",X"C0",X"00",X"13",X"00",X"C6",X"80",X"20",X"00",X"C6",X"00",X"16",X"00",X"C7", - X"00",X"26",X"80",X"C4",X"80",X"21",X"80",X"C7",X"00",X"20",X"80",X"C2",X"40",X"36",X"80",X"C1", - X"C5",X"F6",X"80",X"23",X"00",X"00",X"00",X"17",X"00",X"C5",X"C6",X"F3",X"00",X"10",X"00",X"C3", - X"00",X"10",X"00",X"07",X"00",X"D0",X"06",X"F5",X"B0",X"F9",X"B1",X"F1",X"B1",X"F8",X"B1",X"F5", - X"B0",X"FD",X"B5",X"F5",X"B5",X"F8",X"80",X"27",X"00",X"01",X"00",X"22",X"80",X"C0",X"CD",X"F1", - X"80",X"24",X"00",X"C6",X"00",X"25",X"80",X"03",X"C5",X"F8",X"C3",X"F7",X"C0",X"F9",X"07",X"F1", - X"00",X"D0",X"80",X"26",X"80",X"04",X"80",X"20",X"00",X"C2",X"00",X"13",X"00",X"C2",X"00",X"22", - X"80",X"C4",X"00",X"12",X"00",X"C7",X"80",X"24",X"00",X"C6",X"00",X"17",X"00",X"C6",X"00",X"26", - X"80",X"C0",X"00",X"36",X"80",X"01",X"C0",X"F9",X"80",X"31",X"40",X"C6",X"C6",X"F5",X"00",X"20", - X"80",X"03",X"00",X"15",X"00",X"C7",X"C3",X"F6",X"00",X"13",X"00",X"C0",X"80",X"20",X"00",X"07", - X"00",X"D0",X"00",X"26",X"80",X"05",X"C5",X"F2",X"00",X"13",X"00",X"C1",X"C2",X"F1",X"00",X"15", - X"00",X"C3",X"C1",X"F6",X"00",X"17",X"00",X"C5",X"C6",X"F5",X"80",X"26",X"00",X"02",X"00",X"22", - X"80",X"C4",X"C0",X"30",X"40",X"C6",X"00",X"17",X"00",X"C7",X"03",X"F1",X"00",X"16",X"00",X"C7", - X"00",X"25",X"80",X"C3",X"00",X"13",X"00",X"C5",X"80",X"24",X"00",X"07",X"00",X"D0",X"80",X"26", - X"00",X"00",X"C2",X"F1",X"00",X"13",X"00",X"C1",X"C5",X"F2",X"00",X"11",X"00",X"C7",X"C6",X"F5", - X"00",X"17",X"00",X"C5",X"C1",X"F6",X"C5",X"F5",X"80",X"24",X"00",X"C3",X"00",X"13",X"00",X"C5", - X"80",X"26",X"00",X"02",X"00",X"22",X"80",X"C4",X"80",X"30",X"40",X"C6",X"00",X"17",X"00",X"C6", - X"00",X"10",X"00",X"03",X"00",X"D0",X"80",X"26",X"80",X"04",X"00",X"13",X"00",X"C7",X"00",X"13", - X"00",X"C0",X"00",X"13",X"00",X"C3",X"00",X"10",X"00",X"C3",X"00",X"17",X"00",X"C3",X"00",X"17", - X"00",X"C0",X"00",X"17",X"00",X"C7",X"03",X"F6",X"C5",X"F2",X"00",X"30",X"C0",X"C6",X"C5",X"F6", - X"03",X"F2",X"00",X"17",X"00",X"C6",X"00",X"20",X"80",X"C3",X"00",X"13",X"00",X"C6",X"80",X"25", - X"80",X"06",X"00",X"D0",X"F2",X"C5",X"11",X"C6",X"2D",X"C6",X"4A",X"C6",X"6B",X"C6",X"81",X"C6", - X"A1",X"C6",X"BF",X"C6",X"DB",X"C6",X"18",X"A0",X"80",X"02",X"18",X"A0",X"60",X"03",X"38",X"A0", - X"08",X"01",X"20",X"A0",X"30",X"03",X"68",X"A0",X"40",X"00",X"A0",X"A0",X"C8",X"03",X"E8",X"A0", - X"00",X"00",X"C0",X"A0",X"98",X"00",X"88",X"A0",X"C8",X"00",X"70",X"A1",X"C0",X"01",X"78",X"A0", - X"F8",X"02",X"E0",X"A0",X"80",X"01",X"F0",X"A0",X"20",X"02",X"B8",X"A0",X"30",X"02",X"40",X"A0", - X"60",X"02",X"40",X"00",X"00",X"0A",X"40",X"00",X"80",X"0D",X"C0",X"00",X"20",X"04",X"60",X"00", - X"C0",X"0C",X"80",X"01",X"00",X"01",X"60",X"02",X"20",X"0F",X"80",X"03",X"00",X"00",X"E0",X"02", - X"60",X"02",X"00",X"02",X"20",X"03",X"A0",X"05",X"00",X"07",X"C0",X"01",X"E0",X"0B",X"60",X"03", - X"00",X"06",X"A0",X"03",X"80",X"08",X"C0",X"02",X"C0",X"08",X"E0",X"00",X"80",X"09",X"00",X"80", - X"00",X"D2",X"50",X"74",X"18",X"06",X"00",X"70",X"00",X"D2",X"A0",X"64",X"30",X"06",X"00",X"60", - X"00",X"D2",X"40",X"55",X"60",X"06",X"00",X"40",X"E0",X"D3",X"80",X"46",X"00",X"07",X"57",X"C7", - X"5B",X"C7",X"5F",X"C7",X"63",X"C7",X"67",X"C7",X"6A",X"C7",X"6E",X"C7",X"72",X"C7",X"00",X"C4", - X"80",X"23",X"00",X"01",X"00",X"D0",X"13",X"C4",X"00",X"32",X"40",X"00",X"00",X"D0",X"22",X"C4", - X"40",X"32",X"00",X"00",X"00",X"D0",X"35",X"C4",X"00",X"32",X"80",X"04",X"00",X"D0",X"48",X"C4", - X"01",X"FA",X"00",X"D0",X"56",X"C4",X"00",X"32",X"C0",X"00",X"00",X"D0",X"69",X"C4",X"00",X"32", - X"40",X"00",X"00",X"D0",X"7C",X"C4",X"00",X"32",X"40",X"04",X"00",X"D0",X"8E",X"C7",X"94",X"C7", - X"9D",X"C7",X"A3",X"C7",X"A9",X"C7",X"B1",X"C7",X"B7",X"C7",X"BC",X"C7",X"C7",X"C7",X"D0",X"C7", - X"D7",X"C7",X"DF",X"C7",X"9D",X"C7",X"DF",X"C7",X"C7",X"C7",X"B1",X"C7",X"A3",X"C7",X"DF",X"C7", - X"BC",X"C7",X"94",X"C7",X"9D",X"C7",X"D0",X"C7",X"B1",X"C7",X"B7",X"C7",X"A5",X"F8",X"01",X"F0", - X"A1",X"FA",X"00",X"36",X"80",X"04",X"00",X"D0",X"00",X"20",X"80",X"A6",X"00",X"17",X"00",X"A0", - X"00",X"30",X"C0",X"A2",X"80",X"21",X"00",X"07",X"00",X"D0",X"A7",X"F0",X"00",X"23",X"80",X"A1", - X"00",X"27",X"80",X"01",X"00",X"D0",X"00",X"20",X"80",X"A3",X"00",X"23",X"80",X"A5",X"06",X"F7", - X"00",X"D0",X"A1",X"F8",X"00",X"13",X"00",X"A0",X"00",X"30",X"80",X"A6",X"80",X"25",X"00",X"03", - X"00",X"D0",X"A1",X"F8",X"05",X"F0",X"A5",X"FA",X"00",X"36",X"80",X"00",X"00",X"D0",X"A0",X"F1", - X"A1",X"F0",X"A0",X"F5",X"A5",X"F0",X"00",X"D0",X"00",X"27",X"80",X"A5",X"00",X"30",X"40",X"A3", - X"00",X"23",X"80",X"A5",X"00",X"25",X"80",X"A6",X"00",X"11",X"00",X"A6",X"00",X"D0",X"00",X"13", - X"00",X"A0",X"00",X"30",X"80",X"A3",X"00",X"17",X"00",X"A0",X"00",X"30",X"80",X"A7",X"00",X"D0", - X"A5",X"F1",X"00",X"06",X"00",X"02",X"A2",X"F9",X"80",X"26",X"80",X"07",X"00",X"D0",X"A1",X"F1", - X"00",X"06",X"00",X"06",X"C0",X"30",X"00",X"A6",X"00",X"26",X"80",X"07",X"00",X"D0",X"00",X"13", - X"00",X"A3",X"00",X"17",X"00",X"A3",X"00",X"17",X"00",X"A7",X"00",X"13",X"00",X"A7",X"00",X"D0", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"53"); -begin -process(clk) -begin - if rising_edge(clk) then - data <= rom_data(to_integer(unsigned(addr))); - end if; -end process; -end architecture; diff --git a/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/rom/LLANDER_VEC_ROM_1.vhd b/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/rom/LLANDER_VEC_ROM_1.vhd deleted file mode 100644 index 74684fe4..00000000 --- a/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/rom/LLANDER_VEC_ROM_1.vhd +++ /dev/null @@ -1,150 +0,0 @@ -library ieee; -use ieee.std_logic_1164.all,ieee.numeric_std.all; - -entity LLANDER_VEC_ROM_1 is -port ( - clk : in std_logic; - addr : in std_logic_vector(10 downto 0); - data : out std_logic_vector(7 downto 0) -); -end entity; - -architecture prom of LLANDER_VEC_ROM_1 is - type rom is array(0 to 2047) of std_logic_vector(7 downto 0); - signal rom_data: rom := ( - X"44",X"C8",X"4C",X"C8",X"52",X"C8",X"56",X"C8",X"00",X"D0",X"5B",X"C8",X"62",X"C8",X"00",X"D0", - X"68",X"C8",X"6F",X"C8",X"00",X"D0",X"7C",X"C8",X"82",X"C8",X"86",X"C8",X"4C",X"C8",X"00",X"D0", - X"8D",X"C8",X"62",X"C8",X"00",X"D0",X"92",X"C8",X"98",X"C8",X"9D",X"C8",X"00",X"D0",X"5B",X"C8", - X"A6",X"C8",X"D1",X"C8",X"AD",X"C8",X"00",X"D0",X"44",X"C8",X"86",X"C8",X"B2",X"C8",X"00",X"D0", - X"6F",X"C8",X"AA",X"F8",X"4C",X"C8",X"AA",X"F8",X"C4",X"C8",X"00",X"D0",X"56",X"C8",X"4C",X"C8", - X"7C",X"C8",X"56",X"C8",X"AA",X"FE",X"00",X"D0",X"BC",X"C8",X"82",X"C8",X"68",X"C8",X"00",X"D0", - X"B2",X"C8",X"C4",X"C8",X"86",X"C8",X"00",X"60",X"00",X"A2",X"00",X"D0",X"C9",X"C8",X"CE",X"C8", - X"00",X"D0",X"A6",X"C8",X"AA",X"F8",X"9D",X"C8",X"AA",X"F8",X"92",X"C8",X"00",X"D0",X"8D",X"C8", - X"D1",X"C8",X"AD",X"C8",X"AA",X"FA",X"00",X"D0",X"AA",X"F8",X"00",X"56",X"80",X"A0",X"AA",X"F8", - X"00",X"56",X"80",X"A0",X"A9",X"F8",X"00",X"D0",X"00",X"67",X"40",X"A0",X"00",X"67",X"C0",X"A0", - X"A8",X"FE",X"00",X"D0",X"00",X"66",X"80",X"A0",X"AB",X"FE",X"00",X"D0",X"00",X"66",X"80",X"A0", - X"A9",X"FE",X"AA",X"FE",X"00",X"D0",X"AA",X"F8",X"AA",X"FA",X"80",X"53",X"00",X"A2",X"80",X"52", - X"00",X"A2",X"00",X"D0",X"AA",X"FA",X"A9",X"FA",X"AA",X"FA",X"A9",X"FA",X"AA",X"F9",X"00",X"D0", - X"AA",X"FB",X"80",X"50",X"00",X"A2",X"80",X"51",X"00",X"A2",X"AA",X"F8",X"00",X"D0",X"80",X"54", - X"00",X"A2",X"80",X"55",X"00",X"A2",X"00",X"56",X"80",X"A0",X"00",X"56",X"80",X"A1",X"00",X"56", - X"80",X"A0",X"00",X"56",X"80",X"A1",X"00",X"D0",X"00",X"56",X"80",X"A0",X"00",X"56",X"80",X"A1", - X"AA",X"F8",X"00",X"D0",X"00",X"62",X"C0",X"A0",X"AB",X"F2",X"00",X"D0",X"AB",X"F6",X"00",X"56", - X"80",X"A1",X"00",X"66",X"80",X"A0",X"AB",X"FE",X"00",X"D0",X"AA",X"FE",X"00",X"60",X"00",X"A2", - X"AA",X"FA",X"00",X"D0",X"80",X"62",X"80",X"A0",X"00",X"62",X"80",X"A0",X"AA",X"F9",X"00",X"D0", - X"AA",X"FA",X"AA",X"FB",X"00",X"62",X"00",X"A1",X"00",X"D0",X"00",X"62",X"80",X"A0",X"AA",X"FA", - X"A9",X"FA",X"00",X"52",X"80",X"A0",X"00",X"52",X"80",X"A1",X"00",X"D0",X"00",X"62",X"80",X"A0", - X"00",X"63",X"80",X"A0",X"00",X"62",X"00",X"A0",X"00",X"D0",X"00",X"52",X"80",X"A0",X"00",X"52", - X"80",X"A1",X"00",X"D0",X"00",X"56",X"80",X"A0",X"80",X"67",X"40",X"A1",X"00",X"D0",X"00",X"70", - X"00",X"A2",X"00",X"70",X"00",X"A2",X"00",X"D0",X"00",X"63",X"80",X"A0",X"00",X"62",X"00",X"A1", - X"00",X"62",X"80",X"A0",X"A9",X"F8",X"00",X"D0",X"00",X"56",X"80",X"A0",X"00",X"56",X"80",X"A1", - X"00",X"D0",X"40",X"64",X"00",X"A2",X"C0",X"64",X"00",X"A2",X"00",X"D0",X"00",X"70",X"00",X"A2", - X"00",X"D0",X"00",X"62",X"40",X"A0",X"80",X"62",X"C0",X"A0",X"AA",X"F9",X"00",X"D0",X"AA",X"FA", - X"00",X"62",X"80",X"A0",X"00",X"52",X"80",X"A2",X"00",X"D0",X"00",X"C8",X"05",X"C8",X"08",X"C8", - X"0B",X"C8",X"10",X"C8",X"13",X"C8",X"17",X"C8",X"1C",X"C8",X"20",X"C8",X"26",X"C8",X"B7",X"C8", - X"2C",X"C8",X"30",X"C8",X"36",X"C8",X"39",X"C8",X"3F",X"C8",X"00",X"C8",X"05",X"C8",X"08",X"C8", - X"0B",X"C8",X"80",X"03",X"00",X"00",X"80",X"01",X"00",X"00",X"90",X"02",X"00",X"00",X"40",X"02", - X"00",X"00",X"E0",X"00",X"00",X"00",X"70",X"01",X"00",X"00",X"60",X"03",X"00",X"00",X"A0",X"05", - X"00",X"00",X"40",X"04",X"00",X"00",X"80",X"02",X"00",X"00",X"40",X"00",X"00",X"00",X"40",X"00", - X"00",X"00",X"C0",X"01",X"00",X"00",X"60",X"00",X"00",X"00",X"40",X"00",X"00",X"00",X"80",X"02", - X"00",X"00",X"68",X"03",X"68",X"01",X"78",X"02",X"28",X"02",X"C8",X"00",X"58",X"01",X"48",X"03", - X"88",X"05",X"28",X"04",X"68",X"02",X"28",X"00",X"28",X"00",X"A8",X"01",X"48",X"00",X"28",X"00", - X"68",X"02",X"92",X"00",X"00",X"62",X"00",X"02",X"88",X"F8",X"40",X"83",X"40",X"04",X"78",X"F8", - X"00",X"70",X"00",X"03",X"88",X"F8",X"80",X"77",X"80",X"04",X"98",X"F8",X"00",X"86",X"80",X"00", - X"00",X"D0",X"40",X"82",X"C0",X"00",X"98",X"F8",X"80",X"76",X"80",X"00",X"78",X"F8",X"00",X"76", - X"00",X"02",X"00",X"D0",X"08",X"FA",X"98",X"F8",X"00",X"83",X"C0",X"00",X"78",X"F8",X"00",X"77", - X"80",X"01",X"88",X"F8",X"80",X"77",X"00",X"01",X"00",X"D0",X"00",X"63",X"00",X"01",X"78",X"F8", - X"80",X"73",X"00",X"00",X"98",X"F8",X"80",X"75",X"80",X"02",X"88",X"F8",X"80",X"77",X"00",X"01", - X"00",X"D0",X"00",X"66",X"00",X"03",X"98",X"F8",X"00",X"72",X"00",X"01",X"88",X"F8",X"40",X"82", - X"C0",X"04",X"98",X"F8",X"00",X"72",X"80",X"02",X"88",X"F8",X"C0",X"87",X"40",X"00",X"78",X"F8", - X"00",X"D0",X"80",X"70",X"00",X"02",X"78",X"F8",X"80",X"82",X"80",X"00",X"98",X"F8",X"C0",X"86", - X"80",X"00",X"00",X"D0",X"40",X"82",X"40",X"00",X"98",X"F8",X"80",X"73",X"00",X"03",X"88",X"F8", - X"C0",X"87",X"80",X"04",X"78",X"F8",X"00",X"65",X"00",X"03",X"00",X"D0",X"00",X"72",X"00",X"01", - X"88",X"F8",X"00",X"72",X"00",X"02",X"98",X"F8",X"00",X"86",X"80",X"00",X"00",X"D0",X"22",X"C9", - X"3A",X"C9",X"51",X"C9",X"6A",X"C9",X"22",X"C9",X"3A",X"C9",X"51",X"C9",X"6A",X"C9",X"31",X"C9", - X"45",X"C9",X"61",X"C9",X"76",X"C9",X"31",X"C9",X"45",X"C9",X"61",X"C9",X"76",X"C9",X"00",X"60", - X"00",X"02",X"88",X"F8",X"40",X"87",X"00",X"01",X"68",X"F8",X"40",X"83",X"80",X"00",X"00",X"D0", - X"00",X"92",X"00",X"00",X"8F",X"C9",X"00",X"96",X"00",X"00",X"00",X"D0",X"00",X"86",X"00",X"00", - X"58",X"F8",X"80",X"82",X"C0",X"01",X"88",X"F8",X"00",X"73",X"80",X"00",X"00",X"D0",X"00",X"71", - X"00",X"02",X"78",X"F8",X"E0",X"96",X"40",X"00",X"68",X"F8",X"40",X"82",X"80",X"00",X"88",X"F8", - X"00",X"D0",X"40",X"92",X"80",X"00",X"58",X"F8",X"E0",X"97",X"60",X"00",X"88",X"F8",X"20",X"92", - X"20",X"00",X"68",X"F8",X"00",X"D0",X"80",X"92",X"A0",X"00",X"78",X"F8",X"80",X"86",X"C0",X"00", - X"88",X"F8",X"00",X"D0",X"40",X"83",X"40",X"01",X"58",X"F8",X"00",X"73",X"80",X"01",X"88",X"F8", - X"00",X"D0",X"00",X"76",X"00",X"02",X"78",X"F8",X"C0",X"86",X"C0",X"00",X"88",X"F8",X"00",X"72", - X"80",X"00",X"68",X"F8",X"00",X"D0",X"20",X"97",X"00",X"00",X"BB",X"C9",X"00",X"D0",X"00",X"73", - X"00",X"00",X"A7",X"C9",X"00",X"D0",X"00",X"86",X"00",X"00",X"B1",X"C9",X"00",X"72",X"00",X"00", - X"00",X"D0",X"80",X"77",X"00",X"00",X"BB",X"C9",X"00",X"D0",X"00",X"67",X"00",X"00",X"C9",X"C9", - X"00",X"D0",X"80",X"83",X"80",X"01",X"68",X"F8",X"00",X"60",X"00",X"02",X"00",X"D0",X"E0",X"96", - X"00",X"00",X"C2",X"C9",X"00",X"D0",X"00",X"77",X"00",X"00",X"BB",X"C9",X"00",X"D0",X"8F",X"C9", - X"98",X"C9",X"9E",X"C9",X"A7",X"C9",X"B1",X"C9",X"BB",X"C9",X"C2",X"C9",X"C9",X"C9",X"D3",X"C9", - X"D7",X"C9",X"DB",X"C9",X"E1",X"C9",X"E5",X"C9",X"E9",X"C9",X"EF",X"C9",X"F3",X"C9",X"8F",X"C9", - X"98",X"C9",X"9E",X"C9",X"A7",X"C9",X"E0",X"04",X"00",X"00",X"E0",X"04",X"00",X"00",X"E0",X"04", - X"00",X"00",X"E0",X"05",X"00",X"00",X"60",X"04",X"00",X"00",X"E0",X"04",X"00",X"00",X"20",X"06", - X"00",X"00",X"80",X"08",X"00",X"00",X"20",X"07",X"00",X"00",X"40",X"05",X"00",X"00",X"80",X"04", - X"00",X"00",X"80",X"04",X"00",X"00",X"E0",X"04",X"00",X"00",X"20",X"03",X"00",X"00",X"E0",X"04", - X"00",X"00",X"60",X"04",X"00",X"00",X"2C",X"CA",X"EC",X"A2",X"64",X"00",X"00",X"70",X"00",X"00", - X"62",X"CB",X"F4",X"CA",X"44",X"CB",X"5A",X"CB",X"02",X"CB",X"93",X"CB",X"93",X"CB",X"E0",X"64", - X"A0",X"06",X"69",X"CB",X"21",X"CB",X"39",X"CB",X"02",X"CB",X"93",X"CB",X"93",X"CB",X"93",X"CB", - X"E0",X"64",X"A0",X"06",X"0A",X"CB",X"6F",X"CB",X"02",X"CB",X"34",X"CB",X"93",X"CB",X"93",X"CB", - X"93",X"CB",X"70",X"80",X"40",X"03",X"DF",X"CA",X"34",X"CB",X"69",X"CB",X"21",X"CB",X"69",X"CB", - X"6F",X"CB",X"FA",X"CA",X"02",X"CB",X"93",X"CB",X"93",X"CB",X"93",X"CB",X"93",X"CB",X"93",X"CB", - X"93",X"CB",X"93",X"CB",X"93",X"CB",X"93",X"CB",X"93",X"CB",X"70",X"74",X"60",X"07",X"1A",X"CB", - X"44",X"CB",X"5A",X"CB",X"21",X"CB",X"8D",X"CB",X"44",X"CB",X"3F",X"CB",X"69",X"CB",X"DF",X"CA", - X"34",X"CB",X"93",X"CB",X"62",X"CB",X"4A",X"CB",X"02",X"CB",X"02",X"CB",X"FA",X"CA",X"93",X"CB", - X"93",X"CB",X"70",X"74",X"60",X"07",X"75",X"CB",X"02",X"CB",X"5A",X"CB",X"69",X"CB",X"21",X"CB", - X"F4",X"CA",X"DF",X"CA",X"34",X"CB",X"93",X"CB",X"62",X"CB",X"4A",X"CB",X"02",X"CB",X"02",X"CB", - X"FA",X"CA",X"93",X"CB",X"93",X"CB",X"93",X"CB",X"93",X"CB",X"00",X"D0",X"40",X"A2",X"B2",X"01", - X"60",X"A2",X"BE",X"01",X"60",X"A2",X"88",X"01",X"10",X"A2",X"76",X"01",X"80",X"A2",X"4C",X"01", - X"20",X"A2",X"A6",X"01",X"D0",X"A1",X"BE",X"01",X"10",X"A2",X"C4",X"01",X"E0",X"A1",X"A6",X"01", - X"20",X"A2",X"10",X"01",X"00",X"A2",X"70",X"01",X"00",X"A2",X"4C",X"01",X"EC",X"A2",X"C8",X"00", - X"00",X"70",X"00",X"00",X"C0",X"55",X"00",X"07",X"D9",X"CA",X"C0",X"55",X"80",X"07",X"38",X"90", - X"3C",X"02",X"E0",X"64",X"40",X"06",X"E0",X"64",X"40",X"06",X"B3",X"CA",X"BB",X"CA",X"08",X"F8", - X"C3",X"CA",X"CC",X"CA",X"08",X"F8",X"80",X"42",X"80",X"01",X"CB",X"F0",X"C7",X"F3",X"80",X"36", - X"00",X"C0",X"C3",X"F3",X"00",X"D0",X"40",X"51",X"40",X"02",X"CF",X"F0",X"C3",X"F3",X"80",X"36", - X"00",X"C0",X"C7",X"F3",X"00",X"D0",X"40",X"46",X"00",X"03",X"C8",X"F3",X"C7",X"F7",X"C3",X"F8", - X"C7",X"F3",X"C0",X"44",X"00",X"07",X"00",X"D0",X"C0",X"40",X"00",X"03",X"C8",X"F7",X"C7",X"F3", - X"C3",X"F8",X"C7",X"F7",X"40",X"42",X"00",X"07",X"00",X"D0",X"C2",X"A2",X"78",X"03",X"00",X"70", - X"00",X"00",X"01",X"F2",X"70",X"F0",X"00",X"F2",X"70",X"F0",X"01",X"FE",X"00",X"D0",X"C0",X"FA", - X"C2",X"F2",X"C2",X"F6",X"C0",X"FE",X"06",X"F9",X"C2",X"F8",X"02",X"F6",X"00",X"D0",X"C0",X"FB", - X"C3",X"F0",X"C1",X"F5",X"C0",X"F5",X"C5",X"F5",X"C7",X"F0",X"03",X"F0",X"C1",X"F5",X"C0",X"F5", - X"C5",X"F5",X"C7",X"F0",X"03",X"F8",X"00",X"D0",X"C0",X"FB",X"C2",X"F8",X"06",X"FF",X"C2",X"F8", - X"02",X"F0",X"00",X"D0",X"C0",X"FB",X"C2",X"F0",X"C2",X"F6",X"C0",X"F6",X"C6",X"F6",X"C6",X"F0", - X"03",X"F8",X"00",X"D0",X"C0",X"FB",X"C2",X"F8",X"05",X"F7",X"C7",X"F0",X"00",X"F7",X"C2",X"F8", - X"02",X"F0",X"00",X"D0",X"C0",X"FB",X"C2",X"F8",X"05",X"F7",X"C7",X"F0",X"00",X"F7",X"03",X"F8", - X"00",X"D0",X"C0",X"FB",X"C2",X"F8",X"C0",X"F6",X"06",X"F6",X"C2",X"F0",X"C0",X"F6",X"C6",X"F8", - X"03",X"F8",X"00",X"D0",X"C0",X"FB",X"00",X"F7",X"C2",X"F8",X"00",X"F3",X"C0",X"FF",X"02",X"F0", - X"00",X"D0",X"C2",X"F8",X"06",X"F0",X"C0",X"FB",X"02",X"F0",X"C6",X"F8",X"03",X"FF",X"00",X"D0", - X"00",X"F2",X"C2",X"F6",X"C2",X"F0",X"C0",X"FB",X"01",X"FF",X"00",X"D0",X"C0",X"FB",X"03",X"F0", - X"C7",X"F7",X"C3",X"F7",X"03",X"F0",X"00",X"D0",X"00",X"FB",X"C0",X"FF",X"C2",X"F8",X"02",X"F0", - X"00",X"D0",X"C0",X"FB",X"C2",X"F6",X"C2",X"F2",X"C0",X"FF",X"02",X"F0",X"00",X"D0",X"C0",X"FB", - X"C2",X"FF",X"C0",X"FB",X"01",X"FF",X"00",X"D0",X"C0",X"FB",X"C2",X"F8",X"C0",X"FF",X"C6",X"F8", - X"03",X"F8",X"00",X"D0",X"C0",X"FB",X"C2",X"F8",X"C0",X"F7",X"C6",X"F8",X"03",X"F7",X"03",X"F0", - X"00",X"D0",X"C0",X"FB",X"C2",X"F8",X"C0",X"FE",X"C6",X"F6",X"C6",X"F0",X"02",X"F2",X"C2",X"F6", - X"02",X"F0",X"00",X"D0",X"C0",X"FB",X"C2",X"F8",X"C0",X"F7",X"C6",X"F8",X"01",X"F0",X"C3",X"F7", - X"02",X"F0",X"00",X"D0",X"C2",X"F8",X"C0",X"F3",X"C6",X"F8",X"C0",X"F3",X"C2",X"F8",X"01",X"FF", - X"00",X"D0",X"02",X"F0",X"C0",X"FB",X"06",X"F0",X"C2",X"F8",X"01",X"FF",X"00",X"D0",X"00",X"FB", - X"C0",X"FF",X"C2",X"F8",X"C0",X"FB",X"01",X"FF",X"00",X"D0",X"00",X"FB",X"C1",X"FF",X"C1",X"FB", - X"01",X"FF",X"00",X"D0",X"00",X"FB",X"C0",X"FF",X"C2",X"F2",X"C2",X"F6",X"C0",X"FB",X"01",X"FF", - X"00",X"D0",X"C2",X"FB",X"06",X"F8",X"C2",X"FF",X"02",X"F0",X"00",X"D0",X"02",X"F0",X"C0",X"FA", - X"C6",X"F2",X"02",X"F8",X"C6",X"F6",X"02",X"FE",X"00",X"D0",X"00",X"FB",X"C2",X"F8",X"C6",X"FF", - X"C2",X"F8",X"02",X"F0",X"00",X"D0",X"03",X"F8",X"00",X"D0",X"02",X"F0",X"C0",X"FB",X"02",X"FF", - X"00",X"D0",X"00",X"FB",X"C2",X"F8",X"C0",X"F7",X"C6",X"F8",X"C0",X"F7",X"C2",X"F8",X"02",X"F0", - X"00",X"D0",X"C2",X"F8",X"C0",X"FB",X"C6",X"F8",X"00",X"F7",X"C2",X"F8",X"02",X"F7",X"00",X"D0", - X"00",X"FB",X"C0",X"F7",X"C2",X"F8",X"00",X"F3",X"C0",X"FF",X"02",X"F0",X"00",X"D0",X"C2",X"F8", - X"C0",X"F3",X"C6",X"F8",X"C0",X"F3",X"C2",X"F8",X"01",X"FF",X"00",X"D0",X"00",X"F3",X"C2",X"F8", - X"C0",X"F7",X"C6",X"F8",X"C0",X"FB",X"03",X"FF",X"00",X"D0",X"00",X"FB",X"C2",X"F8",X"C0",X"FF", - X"02",X"F0",X"00",X"D0",X"C2",X"F8",X"C0",X"FB",X"C6",X"F8",X"C0",X"FF",X"00",X"F3",X"C2",X"F8", - X"02",X"F7",X"00",X"D0",X"02",X"F8",X"C0",X"FB",X"C6",X"F8",X"C0",X"F7",X"C2",X"F8",X"02",X"F7", - X"00",X"D0",X"93",X"CB",X"44",X"CB",X"95",X"CB",X"99",X"CB",X"A1",X"CB",X"A8",X"CB",X"AF",X"CB", - X"B6",X"CB",X"BD",X"CB",X"C2",X"CB",X"CA",X"CB",X"DF",X"CA",X"E7",X"CA",X"F4",X"CA",X"FA",X"CA", - X"02",X"CB",X"0A",X"CB",X"11",X"CB",X"1A",X"CB",X"21",X"CB",X"28",X"CB",X"2E",X"CB",X"34",X"CB", - X"39",X"CB",X"3F",X"CB",X"44",X"CB",X"4A",X"CB",X"51",X"CB",X"5A",X"CB",X"62",X"CB",X"69",X"CB", - X"6F",X"CB",X"75",X"CB",X"7A",X"CB",X"81",X"CB",X"86",X"CB",X"8D",X"CB",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"37"); -begin -process(clk) -begin - if rising_edge(clk) then - data <= rom_data(to_integer(unsigned(addr))); - end if; -end process; -end architecture; diff --git a/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/rom/LLANDER_VEC_ROM_2.vhd b/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/rom/LLANDER_VEC_ROM_2.vhd deleted file mode 100644 index 2f727bb4..00000000 --- a/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/rom/LLANDER_VEC_ROM_2.vhd +++ /dev/null @@ -1,150 +0,0 @@ -library ieee; -use ieee.std_logic_1164.all,ieee.numeric_std.all; - -entity LLANDER_VEC_ROM_2 is -port ( - clk : in std_logic; - addr : in std_logic_vector(10 downto 0); - data : out std_logic_vector(7 downto 0) -); -end entity; - -architecture prom of LLANDER_VEC_ROM_2 is - type rom is array(0 to 2047) of std_logic_vector(7 downto 0); - signal rom_data: rom := ( - X"00",X"30",X"60",X"00",X"94",X"58",X"C6",X"58",X"FA",X"58",X"2E",X"59",X"48",X"59",X"79",X"59", - X"9C",X"59",X"10",X"5A",X"36",X"5A",X"86",X"5A",X"D2",X"5A",X"0C",X"5B",X"4E",X"5B",X"82",X"5B", - X"EA",X"5B",X"36",X"5C",X"8D",X"5C",X"A6",X"5C",X"EC",X"5C",X"6A",X"5D",X"AA",X"5D",X"ED",X"5D", - X"02",X"5E",X"23",X"5E",X"A5",X"58",X"D7",X"58",X"0B",X"59",X"35",X"59",X"5D",X"59",X"82",X"59", - X"C5",X"59",X"1D",X"5A",X"55",X"5A",X"9C",X"5A",X"E4",X"5A",X"21",X"5B",X"5F",X"5B",X"A3",X"5B", - X"06",X"5C",X"47",X"5C",X"AD",X"5C",X"C5",X"5C",X"18",X"5D",X"7C",X"5D",X"C4",X"5D",X"F4",X"5D", - X"0E",X"5E",X"38",X"5E",X"B1",X"58",X"E7",X"58",X"1A",X"59",X"3D",X"59",X"6B",X"59",X"8B",X"59", - X"F1",X"59",X"2B",X"5A",X"70",X"5A",X"B1",X"5A",X"FA",X"5A",X"39",X"5B",X"71",X"5B",X"C4",X"5B", - X"22",X"5C",X"6C",X"5C",X"CE",X"5C",X"E3",X"5C",X"3C",X"5D",X"83",X"5D",X"DA",X"5D",X"FB",X"5D", - X"1A",X"5E",X"51",X"5E",X"16",X"34",X"34",X"3E",X"46",X"1E",X"38",X"00",X"3A",X"3E",X"38",X"00", - X"3A",X"3C",X"16",X"38",X"BC",X"34",X"3E",X"2C",X"3A",X"16",X"38",X"00",X"3A",X"3C",X"16",X"38", - X"BC",X"3A",X"3C",X"16",X"38",X"3C",X"2A",X"30",X"32",X"1E",X"34",X"20",X"1E",X"00",X"1C",X"38", - X"3E",X"1E",X"1A",X"2A",X"1E",X"B0",X"1A",X"16",X"38",X"18",X"3E",X"38",X"16",X"30",X"3C",X"00", - X"1C",X"26",X"2E",X"26",X"30",X"3E",X"9E",X"34",X"32",X"1A",X"32",X"00",X"1A",X"32",X"2E",X"18", - X"3E",X"3A",X"3C",X"26",X"18",X"2C",X"9E",X"3C",X"38",X"1E",X"26",X"18",X"3A",X"3C",X"32",X"20", - X"20",X"00",X"22",X"1E",X"24",X"3C",X"00",X"16",X"3E",X"BA",X"34",X"2C",X"3E",X"3A",X"00",X"1C", - X"1E",X"00",X"1A",X"16",X"38",X"18",X"3E",X"38",X"16",X"30",X"BC",X"3A",X"26",X"30",X"00",X"1A", - X"32",X"2E",X"18",X"3E",X"3A",X"3C",X"26",X"18",X"2C",X"9E",X"3C",X"38",X"1E",X"26",X"18",X"3A", - X"3C",X"32",X"20",X"20",X"3C",X"16",X"30",X"2A",X"3A",X"00",X"2C",X"1E",X"1E",X"B8",X"34",X"1E", - X"38",X"1C",X"3E",X"1E",X"BA",X"34",X"1E",X"38",X"1C",X"26",X"1C",X"16",X"BA",X"3C",X"1E",X"26", - X"2C",X"40",X"1E",X"38",X"2C",X"3E",X"3A",X"BC",X"26",X"30",X"3C",X"38",X"32",X"1C",X"3E",X"26", - X"38",X"1E",X"00",X"2C",X"1E",X"3A",X"00",X"34",X"26",X"1E",X"1A",X"1E",X"BA",X"26",X"30",X"3A", - X"1E",X"38",X"3C",X"1E",X"00",X"20",X"26",X"1A",X"24",X"16",X"BA",X"22",X"1E",X"2C",X"1C",X"00", - X"16",X"3E",X"3A",X"42",X"1E",X"38",X"20",X"1E",X"B0",X"34",X"16",X"38",X"00",X"34",X"26",X"1E", - X"1A",X"9E",X"34",X"32",X"38",X"00",X"20",X"26",X"1A",X"24",X"96",X"48",X"3E",X"2A",X"16",X"3E", - X"20",X"00",X"34",X"38",X"32",X"00",X"2E",X"3E",X"1E",X"30",X"48",X"9E",X"38",X"1E",X"3A",X"1E", - X"38",X"40",X"32",X"26",X"38",X"00",X"16",X"3E",X"44",X"26",X"2C",X"26",X"16",X"26",X"38",X"1E", - X"00",X"1C",X"1E",X"00",X"1A",X"16",X"38",X"18",X"3E",X"38",X"16",X"30",X"3C",X"00",X"1C",X"1E", - X"3C",X"38",X"3E",X"26",X"BC",X"3C",X"16",X"30",X"36",X"3E",X"1E",X"3A",X"00",X"16",X"3E",X"44", - X"26",X"2C",X"26",X"16",X"38",X"1E",X"3A",X"00",X"1C",X"1E",X"00",X"1A",X"32",X"2E",X"18",X"3E", - X"3A",X"3C",X"26",X"18",X"2C",X"1E",X"00",X"1C",X"1E",X"3A",X"3C",X"38",X"3E",X"26",X"1C",X"32", - X"BA",X"48",X"3E",X"3A",X"16",X"3C",X"48",X"3C",X"38",X"1E",X"26",X"18",X"3A",X"3C",X"32",X"20", - X"20",X"3C",X"16",X"30",X"2A",X"3A",X"00",X"48",X"1E",X"38",X"3A",X"3C",X"32",X"1E",X"38",X"BC", - X"20",X"1E",X"2C",X"26",X"1A",X"26",X"3C",X"16",X"3C",X"26",X"32",X"30",X"BA",X"20",X"1E",X"2C", - X"26",X"1A",X"26",X"3C",X"16",X"1A",X"26",X"32",X"30",X"1E",X"BA",X"22",X"38",X"16",X"3C",X"3E", - X"2C",X"16",X"3C",X"26",X"32",X"B0",X"40",X"32",X"3E",X"3A",X"00",X"16",X"40",X"1E",X"48",X"00", - X"16",X"3C",X"3C",X"1E",X"38",X"38",X"26",X"00",X"1C",X"26",X"20",X"20",X"26",X"1A",X"26",X"2C", - X"1E",X"2E",X"1E",X"30",X"BC",X"3E",X"3A",X"3C",X"1E",X"1C",X"00",X"16",X"2C",X"3E",X"30",X"26", - X"48",X"32",X"00",X"40",X"26",X"32",X"2C",X"1E",X"30",X"3C",X"16",X"2E",X"1E",X"30",X"3C",X"9E", - X"3A",X"26",X"1E",X"00",X"3A",X"26",X"30",X"1C",X"00",X"24",X"16",X"38",X"3C",X"00",X"22",X"1E", - X"2C",X"16",X"30",X"1C",X"1E",X"BC",X"3A",X"34",X"2C",X"1E",X"30",X"1C",X"26",X"1C",X"1E",X"00", - X"16",X"3C",X"3C",X"1E",X"38",X"38",X"26",X"3A",X"3A",X"16",X"22",X"9E",X"20",X"3E",X"1E",X"00", - X"3E",X"30",X"00",X"22",X"38",X"16",X"30",X"00",X"16",X"2C",X"3E",X"30",X"26",X"48",X"16",X"28", - X"9E",X"1C",X"26",X"1E",X"3A",X"00",X"42",X"16",X"38",X"00",X"1E",X"26",X"30",X"1E",X"00",X"22", - X"38",X"32",X"3A",X"3A",X"16",X"38",X"3C",X"26",X"22",X"1E",X"00",X"2C",X"16",X"30",X"1C",X"3E", - X"30",X"A2",X"2C",X"1E",X"00",X"1E",X"16",X"22",X"2C",X"1E",X"00",X"16",X"00",X"16",X"3C",X"3C", - X"1E",X"38",X"38",X"A6",X"1E",X"2C",X"00",X"16",X"22",X"3E",X"26",X"2C",X"16",X"00",X"24",X"16", - X"00",X"16",X"2C",X"3E",X"30",X"26",X"48",X"16",X"1C",X"B2",X"1E",X"16",X"22",X"2C",X"1E",X"00", - X"26",X"3A",X"3C",X"00",X"22",X"1E",X"2C",X"16",X"30",X"1C",X"1E",X"BC",X"2C",X"1E",X"00",X"1A", - X"32",X"2C",X"3E",X"2E",X"18",X"26",X"16",X"00",X"16",X"00",X"16",X"3C",X"3C",X"1E",X"38",X"38", - X"A6",X"1E",X"2C",X"00",X"1A",X"32",X"2C",X"3E",X"2E",X"18",X"26",X"16",X"00",X"24",X"16",X"00", - X"16",X"2C",X"3E",X"30",X"26",X"48",X"16",X"1C",X"B2",X"1A",X"32",X"2C",X"3E",X"2E",X"18",X"26", - X"16",X"00",X"26",X"3A",X"3C",X"00",X"22",X"1E",X"2C",X"16",X"30",X"1C",X"1E",X"BC",X"40",X"32", - X"3E",X"3A",X"00",X"16",X"40",X"1E",X"48",X"00",X"16",X"3C",X"3C",X"1E",X"38",X"38",X"A6",X"3E", - X"3A",X"3C",X"1E",X"1C",X"00",X"24",X"16",X"00",X"16",X"2C",X"3E",X"30",X"26",X"48",X"16",X"1C", - X"B2",X"3A",X"26",X"1E",X"00",X"3A",X"26",X"30",X"1C",X"00",X"22",X"1E",X"2C",X"16",X"30",X"1C", - X"1E",X"BC",X"2C",X"1E",X"00",X"3A",X"3E",X"34",X"34",X"32",X"38",X"3C",X"00",X"1C",X"1E",X"00", - X"3A",X"16",X"3E",X"40",X"1E",X"3C",X"16",X"22",X"1E",X"00",X"1E",X"3A",X"3C",X"00",X"34",X"16", - X"38",X"3C",X"A6",X"1E",X"36",X"3E",X"26",X"34",X"32",X"00",X"1C",X"1E",X"00",X"3A",X"3E",X"34", - X"1E",X"38",X"40",X"26",X"40",X"1E",X"30",X"1A",X"26",X"16",X"00",X"1C",X"1E",X"3A",X"3C",X"38", - X"3E",X"26",X"1C",X"B2",X"2C",X"1E",X"18",X"1E",X"30",X"3A",X"38",X"1E",X"3C",X"3C",X"3E",X"30", - X"22",X"3A",X"3A",X"46",X"3A",X"3C",X"1E",X"2E",X"1E",X"00",X"3A",X"26",X"30",X"1C",X"00",X"16", - X"3E",X"3A",X"22",X"1E",X"20",X"16",X"2C",X"2C",X"1E",X"B0",X"40",X"32",X"3C",X"38",X"1E",X"00", - X"40",X"32",X"46",X"16",X"22",X"1E",X"00",X"1E",X"3A",X"3C",X"00",X"3A",X"16",X"30",X"3A",X"00", - X"38",X"1E",X"3C",X"32",X"3E",X"B8",X"3A",X"3E",X"00",X"40",X"26",X"16",X"28",X"1E",X"00",X"1E", - X"3A",X"00",X"1C",X"1E",X"00",X"26",X"1C",X"16",X"00",X"3A",X"32",X"2C",X"16",X"2E",X"1E",X"30", - X"3C",X"9E",X"38",X"1E",X"26",X"3A",X"1E",X"00",X"32",X"24",X"30",X"1E",X"00",X"38",X"3E",X"1E", - X"1A",X"2A",X"2A",X"1E",X"24",X"B8",X"34",X"1E",X"38",X"1C",X"3E",X"00",X"3A",X"16",X"30",X"3A", - X"00",X"1E",X"3A",X"34",X"32",X"26",X"B8",X"2C",X"16",X"2E",X"1E",X"30",X"3C",X"16",X"18",X"2C", - X"1E",X"2E",X"1E",X"30",X"3C",X"1E",X"00",X"3E",X"3A",X"3C",X"1E",X"1C",X"00",X"30",X"32",X"00", - X"34",X"3E",X"1E",X"1C",X"1E",X"00",X"40",X"32",X"2C",X"40",X"1E",X"B8",X"2A",X"1E",X"26",X"30", - X"00",X"38",X"3E",X"1E",X"1A",X"2A",X"3A",X"3C",X"16",X"38",X"3C",X"00",X"48",X"3E",X"38",X"00", - X"1E",X"38",X"1C",X"1E",X"00",X"2E",X"32",X"1E",X"22",X"2C",X"26",X"1A",X"A4",X"3A",X"46",X"3A", - X"3C",X"1E",X"2E",X"1E",X"00",X"1C",X"1E",X"00",X"1A",X"32",X"2E",X"2E",X"3E",X"30",X"26",X"1A", - X"16",X"3C",X"26",X"32",X"30",X"00",X"1C",X"1E",X"3C",X"38",X"3E",X"26",X"BC",X"3A",X"26",X"3A", - X"3C",X"1E",X"2E",X"16",X"00",X"1C",X"1E",X"00",X"1A",X"32",X"2E",X"3E",X"30",X"26",X"1A",X"16", - X"1A",X"26",X"32",X"30",X"00",X"1C",X"1E",X"3A",X"3C",X"38",X"3E",X"26",X"1C",X"B2",X"2A",X"32", - X"2E",X"2E",X"3E",X"30",X"26",X"2A",X"16",X"3C",X"26",X"32",X"30",X"3A",X"3A",X"46",X"3A",X"3C", - X"1E",X"2E",X"00",X"48",X"1E",X"38",X"3A",X"3C",X"32",X"1E",X"38",X"BC",X"40",X"32",X"3E",X"3A", - X"00",X"16",X"40",X"1E",X"48",X"00",X"1A",X"38",X"1E",X"1E",X"00",X"3E",X"30",X"00",X"1A",X"38", - X"16",X"3C",X"1E",X"38",X"1E",X"00",X"1C",X"1E",X"00",X"1C",X"1E",X"3E",X"44",X"00",X"2A",X"26", - X"2C",X"32",X"2E",X"1E",X"3C",X"38",X"1E",X"BA",X"3E",X"3A",X"3C",X"1E",X"1C",X"00",X"1A",X"38", - X"1E",X"32",X"00",X"3E",X"30",X"00",X"1A",X"38",X"16",X"3C",X"1E",X"38",X"00",X"1C",X"1E",X"00", - X"06",X"00",X"2A",X"26",X"2C",X"32",X"2E",X"1E",X"3C",X"38",X"32",X"BA",X"3A",X"26",X"1E",X"00", - X"24",X"16",X"18",X"1E",X"30",X"00",X"1E",X"26",X"30",X"1E",X"30",X"00",X"06",X"00",X"2A",X"26", - X"2C",X"32",X"2E",X"1E",X"3C",X"1E",X"38",X"00",X"2A",X"38",X"16",X"3C",X"1E",X"38",X"00",X"16", - X"3E",X"20",X"22",X"1E",X"38",X"26",X"3A",X"3A",X"1E",X"B0",X"40",X"32",X"3E",X"3A",X"00",X"16", - X"40",X"1E",X"48",X"00",X"3E",X"30",X"00",X"1A",X"38",X"16",X"3A",X"A4",X"1C",X"1E",X"2E",X"32", - X"2C",X"1E",X"B8",X"0C",X"02",X"00",X"02",X"02",X"02",X"00",X"02",X"02",X"02",X"00",X"2E",X"16", - X"38",X"2A",X"00",X"3A",X"26",X"30",X"1C",X"00",X"26",X"30",X"00",X"1C",X"26",X"1E",X"00",X"2C", - X"3E",X"20",X"3C",X"00",X"22",X"1E",X"28",X"16",X"22",X"BC",X"26",X"2C",X"00",X"30",X"1E",X"46", - X"00",X"16",X"00",X"34",X"16",X"3A",X"00",X"1C",X"1E",X"00",X"3A",X"3E",X"38",X"40",X"26",X"40", - X"16",X"30",X"3C",X"BA",X"30",X"32",X"00",X"24",X"3E",X"18",X"32",X"00",X"3A",X"32",X"18",X"38", - X"1E",X"40",X"26",X"40",X"26",X"1E",X"30",X"3C",X"1E",X"BA",X"2A",X"1E",X"26",X"30",X"1E",X"00", - X"3E",X"1E",X"18",X"1E",X"38",X"2C",X"1E",X"18",X"1E",X"30",X"1C",X"1E",X"B0",X"00",X"34",X"32", - X"26",X"30",X"3C",X"BA",X"00",X"34",X"3E",X"30",X"3C",X"32",X"BA",X"00",X"34",X"3E",X"30",X"2A", - X"3C",X"9E",X"1A",X"24",X"32",X"26",X"44",X"00",X"1C",X"3E",X"00",X"28",X"1E",X"BE",X"1E",X"2C", - X"1E",X"22",X"26",X"38",X"00",X"28",X"3E",X"1E",X"22",X"B2",X"3A",X"34",X"26",X"1E",X"2C",X"42", - X"16",X"24",X"AC",X"00",X"3E",X"30",X"26",X"3C",X"1E",X"3A",X"00",X"1C",X"1E",X"00",X"1A",X"16", - X"38",X"18",X"3E",X"38",X"16",X"30",X"3C",X"80",X"00",X"3E",X"30",X"26",X"1C",X"16",X"1C",X"1E", - X"3A",X"00",X"1C",X"1E",X"00",X"1A",X"32",X"2E",X"18",X"3E",X"3A",X"3C",X"26",X"18",X"2C",X"1E", - X"80",X"00",X"3C",X"38",X"1E",X"26",X"18",X"3A",X"3C",X"32",X"20",X"20",X"80",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"6F",X"5E",X"D5",X"5E",X"33",X"5F",X"EC", - X"A2",X"28",X"00",X"00",X"70",X"00",X"00",X"3A",X"1A",X"32",X"38",X"9E",X"C0",X"55",X"C0",X"07", - X"1C",X"3E",X"38",X"1E",X"1E",X"00",X"1C",X"3E",X"00",X"28",X"1E",X"BE",X"70",X"74",X"40",X"06", - X"1A",X"32",X"2E",X"18",X"3E",X"3A",X"3C",X"26",X"18",X"2C",X"9E",X"70",X"80",X"40",X"03",X"16", - X"2C",X"3C",X"26",X"3C",X"3E",X"1C",X"9E",X"E0",X"64",X"00",X"07",X"40",X"26",X"3C",X"1E",X"3A", - X"3A",X"1E",X"00",X"24",X"32",X"38",X"26",X"48",X"32",X"30",X"3C",X"16",X"2C",X"9E",X"70",X"74", - X"90",X"07",X"40",X"26",X"3C",X"1E",X"3A",X"3A",X"1E",X"00",X"40",X"1E",X"38",X"3C",X"26",X"1A", - X"16",X"2C",X"9E",X"00",X"D0",X"EC",X"A2",X"64",X"00",X"00",X"70",X"00",X"00",X"34",X"3E",X"30", - X"3C",X"16",X"28",X"9E",X"E0",X"64",X"A0",X"06",X"3C",X"26",X"1E",X"2E",X"34",X"B2",X"E0",X"64", - X"40",X"06",X"34",X"1E",X"3C",X"38",X"32",X"AC",X"70",X"80",X"10",X"03",X"16",X"2C",X"3C",X"26", - X"3C",X"3E",X"9C",X"E0",X"64",X"A0",X"06",X"40",X"1E",X"2C",X"32",X"1A",X"26",X"1C",X"16",X"1C", - X"00",X"24",X"32",X"38",X"26",X"48",X"32",X"30",X"3C",X"16",X"AC",X"70",X"74",X"C0",X"07",X"40", - X"1E",X"2C",X"32",X"1A",X"26",X"1C",X"16",X"1C",X"00",X"40",X"1E",X"38",X"3C",X"26",X"1A",X"16", - X"AC",X"00",X"D0",X"EC",X"A2",X"4C",X"00",X"00",X"70",X"00",X"00",X"34",X"3E",X"30",X"2A",X"3C", - X"48",X"16",X"24",X"AC",X"E0",X"64",X"60",X"07",X"38",X"1E",X"3A",X"3C",X"48",X"1E",X"26",X"BC", - X"E0",X"64",X"00",X"07",X"34",X"1E",X"3C",X"38",X"32",X"AC",X"70",X"80",X"B0",X"02",X"24",X"32", - X"1E",X"24",X"9E",X"C0",X"55",X"C0",X"07",X"24",X"32",X"38",X"26",X"48",X"32",X"30",X"3C",X"16", - X"2C",X"1E",X"00",X"22",X"1E",X"3A",X"1A",X"24",X"42",X"26",X"30",X"1C",X"26",X"22",X"2A",X"1E", - X"26",X"BC",X"38",X"84",X"88",X"06",X"40",X"1E",X"38",X"3C",X"26",X"2A",X"16",X"2C",X"1E",X"00", - X"22",X"1E",X"3A",X"1A",X"24",X"42",X"26",X"30",X"1C",X"26",X"22",X"2A",X"1E",X"26",X"BC",X"00", - X"D0",X"00",X"1D",X"3A",X"EB",X"EE",X"EE",X"F7",X"E5",X"FD",X"DF",X"06",X"D0",X"06",X"12",X"09", - X"15",X"F7",X"06",X"27",X"FA",X"63",X"F4",X"42",X"2A",X"00",X"03",X"E5",X"00",X"00",X"00",X"00", - X"00",X"FA",X"F1",X"F4",X"F4",X"FA",X"FD",X"D6",X"03",X"DC",X"09",X"06",X"00",X"12",X"F7",X"06", - X"EB",X"F7",X"5D",X"0C",X"63",X"36",X"00",X"03",X"D9",X"00",X"00",X"00",X"00",X"00",X"DF",X"E8", - X"E5",X"EB",X"FA",X"E5",X"FD",X"0C",X"EB",X"E5",X"12",X"09",X"15",X"E8",X"1E",X"F7",X"00",X"5D", - X"EE",X"03",X"3F",X"00",X"0C",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00"); -begin -process(clk) -begin - if rising_edge(clk) then - data <= rom_data(to_integer(unsigned(addr))); - end if; -end process; -end architecture; diff --git a/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/sdram.sv b/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/sdram.sv new file mode 100644 index 00000000..bc78584d --- /dev/null +++ b/Arcade_MiST/Atari Vector/LunarLander_MiST/rtl/sdram.sv @@ -0,0 +1,323 @@ +// +// sdram.v +// +// sdram controller implementation for the MiST board +// https://github.com/mist-devel/mist-board +// +// Copyright (c) 2013 Till Harbaum +// Copyright (c) 2019 Gyorgy Szombathelyi +// +// 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 +// by the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This source file 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, see . +// + +module sdram ( + + // interface to the MT48LC16M16 chip + inout reg [15:0] SDRAM_DQ, // 16 bit bidirectional data bus + output reg [12:0] SDRAM_A, // 13 bit multiplexed address bus + output reg SDRAM_DQML, // two byte masks + output reg SDRAM_DQMH, // two byte masks + output reg [1:0] SDRAM_BA, // two banks + output SDRAM_nCS, // a single chip select + output SDRAM_nWE, // write enable + output SDRAM_nRAS, // row address select + output SDRAM_nCAS, // columns address select + + // cpu/chipset interface + input init_n, // init signal after FPGA config to initialize RAM + input clk, // sdram clock + + input port1_req, + output reg port1_ack, + input port1_we, + input [23:1] port1_a, + input [1:0] port1_ds, + input [15:0] port1_d, + output [15:0] port1_q, + + input [15:1] cpu1_addr, + output reg [15:0] cpu1_q, + + input port2_req, + output reg port2_ack, + input port2_we, + input [23:1] port2_a, + input [1:0] port2_ds, + input [15:0] port2_d, + output [15:0] port2_q, + + input [15:1] snd_addr, + output reg [15:0] snd_q +); + +localparam RASCAS_DELAY = 3'd2; // tRCD=20ns -> 2 cycles@<100MHz +localparam BURST_LENGTH = 3'b000; // 000=1, 001=2, 010=4, 011=8 +localparam ACCESS_TYPE = 1'b0; // 0=sequential, 1=interleaved +localparam CAS_LATENCY = 3'd2; // 2/3 allowed +localparam OP_MODE = 2'b00; // only 00 (standard operation) allowed +localparam NO_WRITE_BURST = 1'b1; // 0= write burst enabled, 1=only single access write + +localparam MODE = { 3'b000, NO_WRITE_BURST, OP_MODE, CAS_LATENCY, ACCESS_TYPE, BURST_LENGTH}; + +// 64ms/8192 rows = 7.8us -> 842 cycles@108MHz +localparam RFRSH_CYCLES = 10'd842; + +// --------------------------------------------------------------------- +// ------------------------ cycle state machine ------------------------ +// --------------------------------------------------------------------- + +/* + SDRAM state machine for 2 bank interleaved access + 1 word burst, CL2 +cmd issued registered + 0 RAS0 cas1 + 1 ras0 + 2 CAS0 data1 returned + 3 RAS1 cas0 + 4 ras1 + 5 CAS1 data0 returned +*/ + +localparam STATE_RAS0 = 3'd0; // first state in cycle +localparam STATE_RAS1 = 3'd3; // Second ACTIVE command after RAS0 + tRRD (15ns) +localparam STATE_CAS0 = STATE_RAS0 + RASCAS_DELAY; // CAS phase - 3 +localparam STATE_CAS1 = STATE_RAS1 + RASCAS_DELAY; // CAS phase - 5 +localparam STATE_READ0 = 3'd0; //STATE_CAS0 + CAS_LATENCY + 1'd1; // 7 +localparam STATE_READ1 = 3'd3; +localparam STATE_LAST = 3'd5; + +reg [2:0] t; + +always @(posedge clk) begin + t <= t + 1'd1; + if (t == STATE_LAST) t <= STATE_RAS0; +end + +// --------------------------------------------------------------------- +// --------------------------- startup/reset --------------------------- +// --------------------------------------------------------------------- + +// wait 1ms (32 8Mhz cycles) after FPGA config is done before going +// into normal operation. Initialize the ram in the last 16 reset cycles (cycles 15-0) +reg [4:0] reset; +reg init = 1'b1; +always @(posedge clk, negedge init_n) begin + if(!init_n) begin + reset <= 5'h1f; + init <= 1'b1; + end else begin + if((t == STATE_LAST) && (reset != 0)) reset <= reset - 5'd1; + init <= !(reset == 0); + end +end + +// --------------------------------------------------------------------- +// ------------------ generate ram control signals --------------------- +// --------------------------------------------------------------------- + +// all possible commands +localparam CMD_INHIBIT = 4'b1111; +localparam CMD_NOP = 4'b0111; +localparam CMD_ACTIVE = 4'b0011; +localparam CMD_READ = 4'b0101; +localparam CMD_WRITE = 4'b0100; +localparam CMD_BURST_TERMINATE = 4'b0110; +localparam CMD_PRECHARGE = 4'b0010; +localparam CMD_AUTO_REFRESH = 4'b0001; +localparam CMD_LOAD_MODE = 4'b0000; + +reg [3:0] sd_cmd; // current command sent to sd ram +reg [15:0] sd_din; +// drive control signals according to current command +assign SDRAM_nCS = sd_cmd[3]; +assign SDRAM_nRAS = sd_cmd[2]; +assign SDRAM_nCAS = sd_cmd[1]; +assign SDRAM_nWE = sd_cmd[0]; + +reg [24:1] addr_latch[2]; +reg [24:1] addr_latch_next[2]; +reg [15:1] addr_last[2]; +reg [15:1] addr_last2[2]; +reg [15:0] din_latch[2]; +reg [1:0] oe_latch; +reg [1:0] we_latch; +reg [1:0] ds[2]; + +localparam PORT_NONE = 2'd0; +localparam PORT_CPU1 = 2'd1; +localparam PORT_REQ = 2'd2; + +localparam PORT_SND = 2'd1; + +reg [2:0] next_port[2]; +reg [2:0] port[2]; + +reg refresh; +reg [10:0] refresh_cnt; +wire need_refresh = (refresh_cnt >= RFRSH_CYCLES); + +// PORT1: bank 0,1 +always @(*) begin + if (refresh) begin + next_port[0] = PORT_NONE; + addr_latch_next[0] = addr_latch[0]; + end else if (port1_req ^ port1_ack) begin + next_port[0] = PORT_REQ; + addr_latch_next[0] = { 1'b0, port1_a }; + end else if (cpu1_addr != addr_last[PORT_CPU1]) begin + next_port[0] = PORT_CPU1; + addr_latch_next[0] = { 9'd0, cpu1_addr }; + end else begin + next_port[0] = PORT_NONE; + addr_latch_next[0] = addr_latch[0]; + end +end + +// PORT2: bank 2,3 +always @(*) begin + if (port2_req ^ port2_ack) begin + next_port[1] = PORT_REQ; + addr_latch_next[1] = { 1'b1, port2_a }; + end else if (snd_addr != addr_last2[PORT_SND]) begin + next_port[1] = PORT_SND; + addr_latch_next[1] = { 1'b1, 8'd0, snd_addr }; + end else begin + next_port[1] = PORT_NONE; + addr_latch_next[1] = addr_latch[1]; + end +end + +always @(posedge clk) begin + + // permanently latch ram data to reduce delays + sd_din <= SDRAM_DQ; + SDRAM_DQ <= 16'bZZZZZZZZZZZZZZZZ; + { SDRAM_DQMH, SDRAM_DQML } <= 2'b11; + sd_cmd <= CMD_NOP; // default: idle + refresh_cnt <= refresh_cnt + 1'd1; + + if(init) begin + // initialization takes place at the end of the reset phase + if(t == STATE_RAS0) begin + + if(reset == 15) begin + sd_cmd <= CMD_PRECHARGE; + SDRAM_A[10] <= 1'b1; // precharge all banks + end + + if(reset == 10 || reset == 8) begin + sd_cmd <= CMD_AUTO_REFRESH; + end + + if(reset == 2) begin + sd_cmd <= CMD_LOAD_MODE; + SDRAM_A <= MODE; + SDRAM_BA <= 2'b00; + end + end + end else begin + // RAS phase + // bank 0,1 + if(t == STATE_RAS0) begin + addr_latch[0] <= addr_latch_next[0]; + port[0] <= next_port[0]; + { oe_latch[0], we_latch[0] } <= 2'b00; + + if (next_port[0] != PORT_NONE) begin + sd_cmd <= CMD_ACTIVE; + SDRAM_A <= addr_latch_next[0][22:10]; + SDRAM_BA <= addr_latch_next[0][24:23]; + addr_last[next_port[0]] <= addr_latch_next[0][15:1]; + if (next_port[0] == PORT_REQ) begin + { oe_latch[0], we_latch[0] } <= { ~port1_we, port1_we }; + ds[0] <= port1_ds; + din_latch[0] <= port1_d; + end else begin + { oe_latch[0], we_latch[0] } <= 2'b10; + ds[0] <= 2'b11; + end + end + end + + // bank 2,3 + if(t == STATE_RAS1) begin + refresh <= 1'b0; + addr_latch[1] <= addr_latch_next[1]; + { oe_latch[1], we_latch[1] } <= 2'b00; + port[1] <= next_port[1]; + + if (next_port[1] != PORT_NONE) begin + sd_cmd <= CMD_ACTIVE; + SDRAM_A <= addr_latch_next[1][22:10]; + SDRAM_BA <= addr_latch_next[1][24:23]; + addr_last2[next_port[1]] <= addr_latch_next[1][15:1]; + if (next_port[1] == PORT_REQ) begin + { oe_latch[1], we_latch[1] } <= { ~port2_we, port2_we }; + ds[1] <= port2_ds; + din_latch[1] <= port2_d; + end else begin + { oe_latch[1], we_latch[1] } <= 2'b10; + ds[1] <= 2'b11; + end + end + + if (next_port[1] == PORT_NONE && need_refresh && !we_latch[0] && !oe_latch[0]) begin + refresh <= 1'b1; + refresh_cnt <= 0; + sd_cmd <= CMD_AUTO_REFRESH; + end + end + + // CAS phase + if(t == STATE_CAS0 && (we_latch[0] || oe_latch[0])) begin + sd_cmd <= we_latch[0]?CMD_WRITE:CMD_READ; + { SDRAM_DQMH, SDRAM_DQML } <= ~ds[0]; + if (we_latch[0]) begin + SDRAM_DQ <= din_latch[0]; + port1_ack <= port1_req; + end + SDRAM_A <= { 4'b0010, addr_latch[0][9:1] }; // auto precharge + SDRAM_BA <= addr_latch[0][24:23]; + end + + if(t == STATE_CAS1 && (we_latch[1] || oe_latch[1])) begin + sd_cmd <= we_latch[1]?CMD_WRITE:CMD_READ; + { SDRAM_DQMH, SDRAM_DQML } <= ~ds[1]; + if (we_latch[1]) begin + SDRAM_DQ <= din_latch[1]; + port2_ack <= port2_req; + end + SDRAM_A <= { 4'b0010, addr_latch[1][9:1] }; // auto precharge + SDRAM_BA <= addr_latch[1][24:23]; + end + + // Data returned + if(t == STATE_READ0 && oe_latch[0]) begin + case(port[0]) + PORT_REQ: begin port1_q <= sd_din; port1_ack <= port1_req; end + PORT_CPU1: begin cpu1_q <= sd_din; end + default: ; + endcase; + end + if(t == STATE_READ1 && oe_latch[1]) begin + case(port[1]) + PORT_REQ: begin port2_q <= sd_din; port2_ack <= port2_req; end + PORT_SND: begin snd_q <= sd_din; end + default: ; + endcase; + end + end +end + +endmodule