diff --git a/Arcade_MiST/Atari Vector/BlackWidow_MiST/BlackWidow.qpf b/Arcade_MiST/Atari Vector/BlackWidow_MiST/BlackWidow.qpf new file mode 100644 index 00000000..3ac39351 --- /dev/null +++ b/Arcade_MiST/Atari Vector/BlackWidow_MiST/BlackWidow.qpf @@ -0,0 +1,6 @@ +DATE = "19:48:06 May 24, 2017" +QUARTUS_VERSION = "16.0.2" + +# Revisions + +PROJECT_REVISION = "BlackWidow" diff --git a/Arcade_MiST/Atari Vector/BlackWidow_MiST/BlackWidow.qsf b/Arcade_MiST/Atari Vector/BlackWidow_MiST/BlackWidow.qsf new file mode 100644 index 00000000..7e0e1d37 --- /dev/null +++ b/Arcade_MiST/Atari Vector/BlackWidow_MiST/BlackWidow.qsf @@ -0,0 +1,216 @@ +# -------------------------------------------------------------------------- # +# +# Copyright (C) 1991-2014 Altera Corporation +# Your use of Altera Corporation's design tools, logic functions +# and other software and tools, and its AMPP partner logic +# functions, and any output files from any of the foregoing +# (including device programming or simulation files), and any +# associated documentation or information are expressly subject +# to the terms and conditions of the Altera Program License +# Subscription Agreement, Altera MegaCore Function License +# Agreement, or other applicable license agreement, including, +# without limitation, that your use is for the sole purpose of +# programming logic devices manufactured by Altera and sold by +# Altera or its authorized distributors. Please refer to the +# applicable agreement for further details. +# +# -------------------------------------------------------------------------- # +# +# Quartus II 64-Bit +# Version 13.1.4 Build 182 03/12/2014 SJ Web Edition +# Date created = 16:03:28 October 01, 2019 +# +# -------------------------------------------------------------------------- # +# +# Notes: +# +# 1) The default values for assignments are stored in the file: +# DigDugII_assignment_defaults.qdf +# If this file doesn't exist, see file: +# assignment_defaults.qdf +# +# 2) Altera recommends that you do not modify this file. This +# file is updated automatically by the Quartus II software +# and any changes you make may be lost or overwritten. +# +# -------------------------------------------------------------------------- # + + + +# Project-Wide Assignments +# ======================== +set_global_assignment -name ORIGINAL_QUARTUS_VERSION 16.0.2 +set_global_assignment -name LAST_QUARTUS_VERSION 13.1 +set_global_assignment -name PROJECT_CREATION_TIME_DATE "19:48:06 MAY 24,2017" +set_global_assignment -name PRE_FLOW_SCRIPT_FILE "quartus_sh:rtl/build_id.tcl" +set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files + +# Pin & Location Assignments +# ========================== +set_location_assignment PIN_7 -to LED +set_location_assignment PIN_54 -to CLOCK_27 +set_location_assignment PIN_144 -to VGA_R[5] +set_location_assignment PIN_143 -to VGA_R[4] +set_location_assignment PIN_142 -to VGA_R[3] +set_location_assignment PIN_141 -to VGA_R[2] +set_location_assignment PIN_137 -to VGA_R[1] +set_location_assignment PIN_135 -to VGA_R[0] +set_location_assignment PIN_133 -to VGA_B[5] +set_location_assignment PIN_132 -to VGA_B[4] +set_location_assignment PIN_125 -to VGA_B[3] +set_location_assignment PIN_121 -to VGA_B[2] +set_location_assignment PIN_120 -to VGA_B[1] +set_location_assignment PIN_115 -to VGA_B[0] +set_location_assignment PIN_114 -to VGA_G[5] +set_location_assignment PIN_113 -to VGA_G[4] +set_location_assignment PIN_112 -to VGA_G[3] +set_location_assignment PIN_111 -to VGA_G[2] +set_location_assignment PIN_110 -to VGA_G[1] +set_location_assignment PIN_106 -to VGA_G[0] +set_location_assignment PIN_136 -to VGA_VS +set_location_assignment PIN_119 -to VGA_HS +set_location_assignment PIN_65 -to AUDIO_L +set_location_assignment PIN_80 -to AUDIO_R +set_location_assignment PIN_105 -to SPI_DO +set_location_assignment PIN_88 -to SPI_DI +set_location_assignment PIN_126 -to SPI_SCK +set_location_assignment PIN_127 -to SPI_SS2 +set_location_assignment PIN_91 -to SPI_SS3 +set_location_assignment PIN_90 -to SPI_SS4 +set_location_assignment PIN_13 -to CONF_DATA0 +set_location_assignment PIN_49 -to SDRAM_A[0] +set_location_assignment PIN_44 -to SDRAM_A[1] +set_location_assignment PIN_42 -to SDRAM_A[2] +set_location_assignment PIN_39 -to SDRAM_A[3] +set_location_assignment PIN_4 -to SDRAM_A[4] +set_location_assignment PIN_6 -to SDRAM_A[5] +set_location_assignment PIN_8 -to SDRAM_A[6] +set_location_assignment PIN_10 -to SDRAM_A[7] +set_location_assignment PIN_11 -to SDRAM_A[8] +set_location_assignment PIN_28 -to SDRAM_A[9] +set_location_assignment PIN_50 -to SDRAM_A[10] +set_location_assignment PIN_30 -to SDRAM_A[11] +set_location_assignment PIN_32 -to SDRAM_A[12] +set_location_assignment PIN_83 -to SDRAM_DQ[0] +set_location_assignment PIN_79 -to SDRAM_DQ[1] +set_location_assignment PIN_77 -to SDRAM_DQ[2] +set_location_assignment PIN_76 -to SDRAM_DQ[3] +set_location_assignment PIN_72 -to SDRAM_DQ[4] +set_location_assignment PIN_71 -to SDRAM_DQ[5] +set_location_assignment PIN_69 -to SDRAM_DQ[6] +set_location_assignment PIN_68 -to SDRAM_DQ[7] +set_location_assignment PIN_86 -to SDRAM_DQ[8] +set_location_assignment PIN_87 -to SDRAM_DQ[9] +set_location_assignment PIN_98 -to SDRAM_DQ[10] +set_location_assignment PIN_99 -to SDRAM_DQ[11] +set_location_assignment PIN_100 -to SDRAM_DQ[12] +set_location_assignment PIN_101 -to SDRAM_DQ[13] +set_location_assignment PIN_103 -to SDRAM_DQ[14] +set_location_assignment PIN_104 -to SDRAM_DQ[15] +set_location_assignment PIN_58 -to SDRAM_BA[0] +set_location_assignment PIN_51 -to SDRAM_BA[1] +set_location_assignment PIN_85 -to SDRAM_DQMH +set_location_assignment PIN_67 -to SDRAM_DQML +set_location_assignment PIN_60 -to SDRAM_nRAS +set_location_assignment PIN_64 -to SDRAM_nCAS +set_location_assignment PIN_66 -to SDRAM_nWE +set_location_assignment PIN_59 -to SDRAM_nCS +set_location_assignment PIN_33 -to SDRAM_CKE +set_location_assignment PIN_43 -to SDRAM_CLK + +# Classic Timing Assignments +# ========================== +set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0 +set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85 +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL ON +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS ON + +# Analysis & Synthesis Assignments +# ================================ +set_global_assignment -name FAMILY "Cyclone III" +set_global_assignment -name DEVICE_FILTER_PIN_COUNT 144 +set_global_assignment -name DEVICE_FILTER_SPEED_GRADE 8 +set_global_assignment -name TOP_LEVEL_ENTITY BlackWidow_MiST +set_global_assignment -name VERILOG_INPUT_VERSION SYSTEMVERILOG_2005 +set_global_assignment -name VERILOG_SHOW_LMF_MAPPING_MESSAGES OFF + +# Fitter Assignments +# ================== +set_global_assignment -name DEVICE EP3C25E144C8 +set_global_assignment -name CYCLONEIII_CONFIGURATION_SCHEME "PASSIVE SERIAL" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN OFF +set_global_assignment -name FORCE_CONFIGURATION_VCCIO ON +set_global_assignment -name STRATIX_DEVICE_IO_STANDARD "3.3-V LVTTL" +set_global_assignment -name CYCLONEII_RESERVE_NCEO_AFTER_CONFIGURATION "USE AS REGULAR IO" +set_global_assignment -name RESERVE_DATA0_AFTER_CONFIGURATION "USE AS REGULAR IO" +set_global_assignment -name RESERVE_DATA1_AFTER_CONFIGURATION "USE AS REGULAR IO" +set_global_assignment -name RESERVE_FLASH_NCE_AFTER_CONFIGURATION "USE AS REGULAR IO" +set_global_assignment -name RESERVE_DCLK_AFTER_CONFIGURATION "USE AS REGULAR IO" + +# Assembler Assignments +# ===================== +set_global_assignment -name USE_CONFIGURATION_DEVICE OFF +set_global_assignment -name GENERATE_RBF_FILE ON + +# SignalTap II Assignments +# ======================== +set_global_assignment -name ENABLE_SIGNALTAP OFF +set_global_assignment -name USE_SIGNALTAP_FILE stp1.stp + +# Power Estimation Assignments +# ============================ +set_global_assignment -name POWER_PRESET_COOLING_SOLUTION "23 MM HEAT SINK WITH 200 LFPM AIRFLOW" +set_global_assignment -name POWER_BOARD_THERMAL_MODEL "NONE (CONSERVATIVE)" + +# Advanced I/O Timing Assignments +# =============================== +set_global_assignment -name OUTPUT_IO_TIMING_NEAR_END_VMEAS "HALF VCCIO" -rise +set_global_assignment -name OUTPUT_IO_TIMING_NEAR_END_VMEAS "HALF VCCIO" -fall +set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" -rise +set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" -fall + +# --------------------------- +# start ENTITY(DigDugII_mist) + + # start DESIGN_PARTITION(Top) + # --------------------------- + + # Incremental Compilation Assignments + # =================================== + + # end DESIGN_PARTITION(Top) + # ------------------------- + +# end ENTITY(DigDugII_mist) +# ------------------------- +set_global_assignment -name VHDL_INPUT_VERSION VHDL_1993 +set_global_assignment -name VHDL_SHOW_LMF_MAPPING_MESSAGES OFF +set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top +set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top +set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top +set_global_assignment -name SYSTEMVERILOG_FILE rtl/BlackWidow_MiST.sv +set_global_assignment -name VHDL_FILE rtl/bwidow_top.vhd +set_global_assignment -name VHDL_FILE rtl/bwidow.vhd +set_global_assignment -name VHDL_FILE rtl/bwidow_dw.vhd +set_global_assignment -name VHDL_FILE rtl/avg.vhd +set_global_assignment -name VHDL_FILE rtl/vector_drawer.vhd +set_global_assignment -name VHDL_FILE rtl/pokey.vhd +set_global_assignment -name VERILOG_FILE rtl/p2ram.v +set_global_assignment -name VHDL_FILE rtl/pgmrom.vhd +set_global_assignment -name VHDL_FILE rtl/vecrom.vhd +set_global_assignment -name VHDL_FILE rtl/earom.vhd +set_global_assignment -name VHDL_FILE rtl/roms/bwidow_vec_rom4.vhd +set_global_assignment -name VHDL_FILE rtl/roms/bwidow_vec_rom3.vhd +set_global_assignment -name VHDL_FILE rtl/roms/bwidow_vec_rom2.vhd +set_global_assignment -name VHDL_FILE rtl/roms/bwidow_vec_rom1.vhd +set_global_assignment -name VHDL_FILE rtl/roms/bwidow_pgm_rom6.vhd +set_global_assignment -name VHDL_FILE rtl/roms/bwidow_pgm_rom5.vhd +set_global_assignment -name VHDL_FILE rtl/roms/bwidow_pgm_rom4.vhd +set_global_assignment -name VHDL_FILE rtl/roms/bwidow_pgm_rom3.vhd +set_global_assignment -name VHDL_FILE rtl/roms/bwidow_pgm_rom2.vhd +set_global_assignment -name VHDL_FILE rtl/roms/bwidow_pgm_rom1.vhd +set_global_assignment -name VHDL_FILE rtl/gen_ram.vhd +set_global_assignment -name VERILOG_FILE rtl/pll.v +set_global_assignment -name QIP_FILE ../../../common/CPU/T65/T65.qip +set_global_assignment -name QIP_FILE ../../../common/mist/mist.qip +set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top \ No newline at end of file diff --git a/Arcade_MiST/Atari Vector/BlackWidow_MiST/clean.bat b/Arcade_MiST/Atari Vector/BlackWidow_MiST/clean.bat new file mode 100644 index 00000000..59a9a059 --- /dev/null +++ b/Arcade_MiST/Atari Vector/BlackWidow_MiST/clean.bat @@ -0,0 +1,38 @@ +@echo off +del /s *.bak +del /s *.orig +del /s *.rej +del /s *~ +rmdir /s /q db +rmdir /s /q incremental_db +rmdir /s /q output_files +rmdir /s /q simulation +rmdir /s /q greybox_tmp +rmdir /s /q hc_output +rmdir /s /q .qsys_edit +rmdir /s /q hps_isw_handoff +rmdir /s /q sys\.qsys_edit +rmdir /s /q sys\vip +cd sys +for /d %%i in (*_sim) do rmdir /s /q "%%~nxi" +cd .. +for /d %%i in (*_sim) do rmdir /s /q "%%~nxi" +del build_id.v +del c5_pin_model_dump.txt +del PLLJ_PLLSPE_INFO.txt +del /s *.qws +del /s *.ppf +del /s *.ddb +del /s *.csv +del /s *.cmp +del /s *.sip +del /s *.spd +del /s *.bsf +del /s *.f +del /s *.sopcinfo +del /s *.xml +del /s new_rtl_netlist +del /s old_rtl_netlist +del /s PLLJ_PLLSPE_INFO.txt + +pause diff --git a/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/BlackWidow_MiST.sv b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/BlackWidow_MiST.sv new file mode 100644 index 00000000..67112519 --- /dev/null +++ b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/BlackWidow_MiST.sv @@ -0,0 +1,234 @@ +module BlackWidow_MiST( + output LED, + output [5:0] VGA_R, + output [5:0] VGA_G, + output [5:0] VGA_B, + output VGA_HS, + output VGA_VS, + output AUDIO_L, + output AUDIO_R, + input SPI_SCK, + output SPI_DO, + input SPI_DI, + input SPI_SS2, + input SPI_SS3, + input CONF_DATA0, + input CLOCK_27/*, + + output [12:0] SDRAM_A, + inout [15:0] SDRAM_DQ, + output SDRAM_DQML, + output SDRAM_DQMH, + output SDRAM_nWE, + output SDRAM_nCAS, + output SDRAM_nRAS, + output SDRAM_nCS, + output [1:0] SDRAM_BA, + output SDRAM_CLK, + output SDRAM_CKE +*/ +); + +`include "rtl\build_id.v" + +localparam CONF_STR = { + "BLACKWIDOW;;", + "O12,Scanlines,None,CRT 25%,CRT 50%,CRT 75%;", + "O3,Test,Off,On;", +// "O45,Max Start Level,13,21,37,53;", +// "O67,Lives,3,4,5,6;", +// "O89,Difficulty,Easy,Medium,Hard,Demo;", +// "OAB,Extra Spider,20k,30k,40k,None;", + "T0,Reset;", + "V,v1.00.",`BUILD_DATE +}; + +assign LED = 1; +assign AUDIO_R = AUDIO_L; + +wire clk_50, clk_25, clk_12, clk_6, locked; +pll pll( + .inclk0(CLOCK_27), + .c0(clk_50), + .c1(clk_25), + .c2(clk_12), + .c3(clk_6), + .locked(locked) +); + +wire [31:0] status; +wire [1:0] buttons; +wire [1:0] switches; +wire [7:0] joystick_0; +wire [7:0] joystick_1; +wire scandoublerD; +wire ypbpr; +wire hs, vs; +wire hb, vb; +wire blankn = ~(hb | vb); +wire [3:0] r, g, b; +wire vgade; +wire [7:0] audio; +wire key_strobe; +wire key_pressed; +wire [7:0] key_code; +//this must go to sdram +wire [18:0] vram_write_addr; +wire [3:0] vram_write_data; +wire [18:0] vram_read_addr; +wire [3:0] vram_read_data; +wire vram_wren; +/* +sdram sdram ( + .SDRAM_DQ(SDRAM_DQ), + .SDRAM_A(SDRAM_A), + .SDRAM_DQML(SDRAM_DQML), + .SDRAM_DQMH(SDRAM_DQMH), + .SDRAM_BA(SDRAM_BA), + .SDRAM_nCS(SDRAM_nCS), + .SDRAM_nWE(SDRAM_nWE), + .SDRAM_nRAS(SDRAM_nRAS), + .SDRAM_nCAS(SDRAM_nCAS), + .SDRAM_CKE(SDRAM_CKE), + .init(~locked), // init signal after FPGA config to initialize RAM + .clk(clk_50), // sdram is accessed at up to 128MHz + .clkref(clk_25), // reference clock to sync to + .din(vram_write_data), // data input from chipset/cpu + .dout(vram_read_data), // data output to chipset/cpu + .raddr(vram_read_addr), // 25 bit byte address + .waddr(vram_write_addr), // 25 bit byte address + .rd(~vram_wren), // cpu/chipset requests read + .we(vram_wren) +);*/ + +//reduced ram size + +p2ram p2ram ( + .clock(clk_25), + .data(vram_write_data), + .rdaddress(vram_read_addr[14:0]), + .wraddress(vram_write_addr[14:0]), + .wren(vram_wren), + .q(vram_read_data) + ); + +wire [7:0] sw_d4 = {2'b00, 2'b00,1'b0,3'b000}; // will be do if i see enough +wire [7:0] sw_b4 = {status[11:10],status[9:8],status[7:6], status[5:4]}; +wire [14:0] BUTTONS = ~{~btn_test, status[3], btn_coin, 1'b0, 1'b1, btn_two_players, btn_one_player, m_fire_down, m_fire_up, m_fire_left, m_fire_right, m_up, m_down, m_left, m_right}; +bwidow_top bwidow_top( + .BUTTON(BUTTONS), + .SELF_TEST_SWITCH_L(status[3]), + .AUDIO_OUT(audio), + .VIDEO_R_OUT(r), + .VIDEO_G_OUT(g), + .VIDEO_B_OUT(b), + .HSYNC_OUT(hs), + .VSYNC_OUT(vs), + .VID_HBLANK(hb), + .VID_VBLANK(vb), + .SW_B4(sw_b4), + .SW_D4(sw_d4), + .RESET_L(~(status[0] | buttons[1])), + .clk_6(clk_6), + .clk_12(clk_12), + .clk_25(clk_25), + .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) +); + +mist_video #(.COLOR_DEPTH(4), .SD_HCNT_WIDTH(10)) mist_video( + .clk_sys ( clk_25 ), + .SPI_SCK ( SPI_SCK ), + .SPI_SS3 ( SPI_SS3 ), + .SPI_DI ( SPI_DI ), + .R ( blankn ? r : 0 ), + .G ( blankn ? g : 0 ), + .B ( blankn ? b : 0 ), + .HSync ( ~hs ), + .VSync ( ~vs ), + .VGA_R ( VGA_R ), + .VGA_G ( VGA_G ), + .VGA_B ( VGA_B ), + .VGA_VS ( VGA_VS ), + .VGA_HS ( VGA_HS ), + .scandoubler_disable(1),//scandoublerD ), + .scanlines ( status[2:1] ), + .ypbpr ( ypbpr ) + ); + +user_io #(.STRLEN(($size(CONF_STR)>>3)))user_io( + .clk_sys (clk_25 ), + .conf_str (CONF_STR ), + .SPI_CLK (SPI_SCK ), + .SPI_SS_IO (CONF_DATA0 ), + .SPI_MISO (SPI_DO ), + .SPI_MOSI (SPI_DI ), + .buttons (buttons ), + .switches (switches ), + .scandoubler_disable (scandoublerD ), + .ypbpr (ypbpr ), + .key_strobe (key_strobe ), + .key_pressed (key_pressed ), + .key_code (key_code ), + .joystick_0 (joystick_0 ), + .joystick_1 (joystick_1 ), + .status (status ) + ); + +dac #( + .C_bits(8)) +dac( + .clk_i(clk_25), + .res_n_i(1), + .dac_i(audio), + .dac_o(AUDIO_L) + ); + +wire m_up = btn_up | joystick_0[3] | joystick_1[3]; +wire m_down = btn_down | joystick_0[2] | joystick_1[2]; +wire m_left = btn_left | joystick_0[1] | joystick_1[1]; +wire m_right = btn_right | joystick_0[0] | joystick_1[0]; + +wire m_fire_down = btn_fire1 | joystick_0[4] | joystick_1[4]; +wire m_fire_up = btn_fire2 | joystick_0[5] | joystick_1[5]; +wire m_fire_left = btn_fire1 | joystick_0[4] | joystick_1[4]; +wire m_fire_right = btn_fire2 | joystick_0[5] | joystick_1[5]; + +reg btn_one_player = 0; +reg btn_two_players = 0; +reg btn_left = 0; +reg btn_right = 0; +reg btn_down = 0; +reg btn_up = 0; +reg btn_fire1 = 0; +reg btn_fire2 = 0; +reg btn_test = 0; + +reg btn_coin = 0; + +always @(posedge clk_25) begin + reg old_state; + old_state <= key_strobe; + if(old_state != key_strobe) begin + case(key_code) + 'h75: btn_up <= key_pressed; // up + 'h72: btn_down <= key_pressed; // down + 'h6B: btn_left <= key_pressed; // left + 'h74: btn_right <= key_pressed; // right + 'h76: btn_coin <= key_pressed; // ESC + 'h05: btn_one_player <= key_pressed; // F1 + 'h04: btn_two_players <= key_pressed; // F2 + +// 'h11: btn_fire2 <= key_pressed; // alt +// 'h29: btn_fire1 <= key_pressed; // Space + + + 'h2C: btn_test <= key_pressed; // T + endcase + end +end + +endmodule \ No newline at end of file diff --git a/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/avg.vhd b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/avg.vhd new file mode 100644 index 00000000..e42d5225 --- /dev/null +++ b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/avg.vhd @@ -0,0 +1,319 @@ +--Atari (Analog) Vector Generator +--This implementation tries to duplicate the functionality, not the hardware. +--It doesn't use the 4-bit vector micro-instruction rom. It's compatible with +--the Tempest AVG, which uses the same micro-instruction ROM. +--ToDo: Make an implementation that does use the ROM so we can adapt it easily to other games. + +-- Black Widow arcade hardware implemented in an FPGA +-- (C) 2012 Jeroen Domburg (jeroen AT spritesmods.com) +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + + +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_ARITH.ALL; +use IEEE.STD_LOGIC_UNSIGNED.ALL; + +entity avg is + Port ( cpu_data_in : out STD_LOGIC_VECTOR (7 downto 0); + cpu_data_out : in STD_LOGIC_VECTOR (7 downto 0); + cpu_addr : in STD_LOGIC_VECTOR (13 downto 0); + cpu_cs_l : in STD_LOGIC; + cpu_rw_l : in STD_LOGIC; + vgrst : in STD_LOGIC; + vggo : in STD_LOGIC; + halted : out STD_LOGIC; + xout : out STD_LOGIC_VECTOR (9 downto 0); + yout : out STD_LOGIC_VECTOR (9 downto 0); + zout : out STD_LOGIC_VECTOR (7 downto 0); + rgbout : out STD_LOGIC_VECTOR (2 downto 0); + dbg : out std_logic_vector(15 downto 0); + clken: in STD_LOGIC; + clk : in STD_LOGIC + ); +end avg; + +-- Opcodes stored as lo-hi in 8bit memory. +-- Opcode Hex Binary +-- Draw relative vector. 0x00 000YYYYY YYYYYYYY IIIXXXXX XXXXXXXX +-- Halt 0x20 00100000 00000000 +-- Draw short relative vector 0x40 010YYYYY IIIXXXXX +-- New color/intensity 0x60 0110URGB IIIIIIII +-- New scale 0x70 0111USSS SSSSSSSS +-- Center 0x80 10000000 00000000 +-- Jump to subroutine 0xA0 101AAAAA AAAAAAAA +-- Return from subroutine 0xC0 11000000 00000000 +-- Jump to new address 0xE0 111AAAAA AAAAAAAA + + +architecture Behavioral of avg is + type stackarraytype is array (natural range <>) of std_logic_vector(13 downto 0); + type statetype is (FETCHINSLO, FETCHINSHI, EXECINS, FETCHOPHI, FETCHOPLO, DRAWVECLONG, + DRAWVECSHORT, WAITVECDONE, ISHALTED, SETCOLOR, SETSCALE, CENTER, + PUSHPCFORJUMP, POPPC, JUMP); + signal pc: STD_LOGIC_VECTOR(13 downto 0); + signal instruction: STD_LOGIC_VECTOR(15 downto 0); + signal operand: STD_LOGIC_VECTOR(15 downto 0); + signal state: statetype; + signal stack: stackarraytype(3 downto 0); + signal sp: STD_LOGIC_VECTOR(1 downto 0); + signal vecram_dout: STD_LOGIC_VECTOR(7 downto 0); + signal vecram_din: STD_LOGIC_VECTOR(7 downto 0); + signal vecrom_dout: STD_LOGIC_VECTOR(7 downto 0); + signal vecram_cs_l: STD_LOGIC; + signal vecram_rw_l: STD_LOGIC; + signal memory_din: STD_LOGIC_VECTOR(7 downto 0); + signal memory_addr: STD_LOGIC_VECTOR(13 downto 0); +-- signal rom_addr: STD_LOGIC_VECTOR(13 downto 0); + signal vec_scale: STD_LOGIC_VECTOR(12 downto 0); + signal vec_dx: STD_LOGIC_VECTOR(12 downto 0); + signal vec_dy: STD_LOGIC_VECTOR(12 downto 0); + signal vec_zero: STD_LOGIC; + signal vec_draw: STD_LOGIC; + signal vec_done: STD_LOGIC; + signal retryRead: STD_LOGIC; + signal intensity: STD_LOGIC_VECTOR(7 downto 0); + signal intens_mod: STD_LOGIC_VECTOR(2 downto 0); + signal rgb: STD_LOGIC_VECTOR(2 downto 0); +begin + +mypgmram : entity work.gen_ram + generic map( dWidth => 8, aWidth => 11) + port map( + clk => clk, + we => (not vecram_rw_l) and (not vecram_cs_l), + addr => memory_addr(10 downto 0), + d => vecram_din, + q => vecram_dout + ); + + +myvecrom: entity work.vecrom + port map ( + addr => memory_addr, + data => vecrom_dout, + clk => clk + ); + +vectordrawer: entity work.vector_drawer + port map ( + clk => clk, + clk_ena => clken, + scale => vec_scale, + rel_x => vec_dx, + rel_y => vec_dy, + zero => vec_zero, + draw => vec_draw, + done => vec_done, + xout => xout, + yout => yout + ); + + process (clk) begin + if clk'event and clk='1' and clken='1' then + vec_zero<='0'; + vec_draw<='0'; + if vgrst='1' then + pc<="00000000000000"; + instruction<=x"0000"; + state<=ISHALTED; + sp<="00"; + rgb<="000"; + intensity<=(others=>'0'); + intens_mod<=(others=>'0'); + vec_dx<=(others=>'0'); + vec_dy<=(others=>'0'); + vec_scale<=(others=>'0'); + vec_zero<='1'; + vec_draw<='0'; + elsif state=EXECINS then + if instruction(15 downto 13)="000" then --draw relative vector + state<=FETCHOPLO; + elsif instruction(15 downto 13)="001" then --halt + state<=ISHALTED; + elsif instruction(15 downto 13)="010" then --draw short + state<=DRAWVECSHORT; + elsif instruction(15 downto 12)="0110" then --new color + state<=SETCOLOR; + elsif instruction(15 downto 12)="0111" then --new scale + state<=SETSCALE; + elsif instruction(15 downto 13)="100" then --center + state<=CENTER; + elsif instruction(15 downto 13)="101" then --jump to subroutine + state<=PUSHPCFORJUMP; + elsif instruction(15 downto 13)="110" then --return from subroutine + state<=POPPC; + elsif instruction(15 downto 13)="111" then --jump to address + state<=JUMP; + end if; + elsif state=DRAWVECLONG then + vec_dy<=instruction(12 downto 0); + vec_dx<=operand(12 downto 0); + intens_mod<=operand(15 downto 13); + vec_draw<='1'; + state<=WAITVECDONE; + elsif state=DRAWVECSHORT then + vec_dy(5 downto 1)<=instruction(12 downto 8); + vec_dy(0)<='0'; + if instruction(12)='0' then + vec_dy(12 downto 6)<="0000000"; + else + vec_dy(12 downto 6)<="1111111"; + end if; + vec_dx(5 downto 1)<=instruction(4 downto 0); + vec_dx(0)<='0'; + if instruction(4)='0' then + vec_dx(12 downto 6)<="0000000"; + else + vec_dx(12 downto 6)<="1111111"; + end if; + intens_mod<=instruction(7 downto 5); + vec_draw<='1'; + state<=WAITVECDONE; + elsif state=WAITVECDONE then + if vec_done='1' then + state<=FETCHINSLO; + end if; + elsif state=SETCOLOR then + -- Valid for other arcade machines. +-- intensity<=instruction(7 downto 0); +-- rgb<=instruction(10 downto 8); + -- Black Widow encodes the Z and color in the lowest 8 bits. + intensity<=instruction(7 downto 4)&"0000"; + rgb<=instruction(2 downto 0); + state<=FETCHINSLO; + elsif state=SETSCALE then + if instruction(10 downto 8)="000" then + vec_scale<= '0' &(x"ff"-instruction(7 downto 0))&"0000"; + elsif instruction(10 downto 8)="001" then + vec_scale<="00"&(x"ff"-instruction(7 downto 0))&"000"; + elsif instruction(10 downto 8)="010" then + vec_scale<="000"&(x"ff"-instruction(7 downto 0))&"00"; + elsif instruction(10 downto 8)="011" then + vec_scale<="0000"&(x"ff"-instruction(7 downto 0))&"0"; + elsif instruction(10 downto 8)="100" then + vec_scale<="00000"&(x"ff"-instruction(7 downto 0)); + elsif instruction(10 downto 8)="101" then + vec_scale<="00000"&(x"7f"-instruction(7 downto 1)); + elsif instruction(10 downto 8)="110" then + vec_scale<="00000"&(x"3f"-instruction(7 downto 2)); + elsif instruction(10 downto 8)="111" then + vec_scale<="00000"&(x"1f"-instruction(7 downto 3)); + end if; + state<=FETCHINSLO; + elsif state=CENTER then + intens_mod<="000"; --blank + vec_zero<='1'; + state<=WAITVECDONE; + elsif state=PUSHPCFORJUMP then + if (sp="00") then stack(0)<=pc; end if; + if (sp="01") then stack(1)<=pc; end if; + if (sp="10") then stack(2)<=pc; end if; + if (sp="11") then stack(3)<=pc; end if; + sp<=sp+"01"; + state<=JUMP; + elsif state=JUMP then + pc(13 downto 1)<=instruction(12 downto 0); + pc(0)<='0'; + state<=FETCHINSLO; + elsif state=POPPC then + if (sp="01") then pc<=stack(0); end if; + if (sp="10") then pc<=stack(1); end if; + if (sp="11") then pc<=stack(2); end if; + if (sp="00") then pc<=stack(3); end if; + sp<=sp-"01"; + state<=FETCHINSLO; + elsif state=ISHALTED then + pc<=(others=>'0'); + if vggo='1' then state<=FETCHINSLO; end if; + --No idea if the original implementation zeroed the beam and location, but I will. + --It's easier on the CRT and deflection amps this way. + rgb<="000"; + vec_zero<='1'; + --...and keep spinning here. +--Memory-accessing things + elsif cpu_cs_l='0' then + retryRead<='1'; + elsif retryRead='1' then + retryRead<='0'; + elsif state=FETCHINSLO then -- Start of instruction handling cycle. + instruction(7 downto 0)<=memory_din; + pc<=pc+"00000000000001"; + state<=FETCHINSHI; + elsif state=FETCHINSHI then + instruction(15 downto 8)<=memory_din; + pc<=pc+"00000000000001"; + state<=EXECINS; + elsif state=FETCHOPLO then + operand(7 downto 0)<=memory_din; + pc<=pc+"00000000000001"; + state<=FETCHOPHI; + elsif state=FETCHOPHI then + operand(15 downto 8)<=memory_din; + pc<=pc+"00000000000001"; + state<=DRAWVECLONG; + else + state<=FETCHINSLO; + end if; + end if; + end process; + + memory_din<=vecram_dout when memory_addr(13 downto 11)="000" else vecrom_dout; + + process (clk) begin + if clk'event and clk='1' then + if cpu_cs_l='0' then + --Cpu wants to access RAM + vecram_rw_l<=cpu_rw_l; + memory_addr<=cpu_addr; + vecram_din<=cpu_data_out; + if cpu_addr(13 downto 11)="000" then + vecram_cs_l<='0'; + else + vecram_cs_l<='1'; + end if; + if cpu_addr(13 downto 11)="000" then + cpu_data_in<=vecram_dout; + else + cpu_data_in<=vecrom_dout; + end if; + else + --AVG has access. + vecram_rw_l<='1'; + vecram_cs_l<='0'; + memory_addr<=pc; + end if; + end if; + end process; + + dbg(15)<=clk; + dbg(14)<=clken; + dbg(13)<='0'; + dbg(12)<=retryRead; + dbg(11)<=cpu_cs_l; + dbg(10)<=cpu_rw_l; + dbg(9)<=vecram_cs_l; + dbg(8)<=vecram_rw_l; + dbg(7 downto 4)<=memory_addr(3 downto 0); + dbg(3 downto 0)<=vecram_din(3 downto 0); + + halted<='1' when state=ISHALTED else '0'; + + --idiotic scheme for the intensity... thanks to the mame source for this line. + zout<=intensity when intens_mod="001" else intens_mod&"00000"; + + rgbout <= rgb; +end Behavioral; + diff --git a/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/build_id.tcl b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/build_id.tcl new file mode 100644 index 00000000..938515d8 --- /dev/null +++ b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/build_id.tcl @@ -0,0 +1,35 @@ +# ================================================================================ +# +# Build ID Verilog Module Script +# Jeff Wiencrot - 8/1/2011 +# +# Generates a Verilog module that contains a timestamp, +# from the current build. These values are available from the build_date, build_time, +# physical_address, and host_name output ports of the build_id module in the build_id.v +# Verilog source file. +# +# ================================================================================ + +proc generateBuildID_Verilog {} { + + # Get the timestamp (see: http://www.altera.com/support/examples/tcl/tcl-date-time-stamp.html) + set buildDate [ clock format [ clock seconds ] -format %y%m%d ] + set buildTime [ clock format [ clock seconds ] -format %H%M%S ] + + # Create a Verilog file for output + set outputFileName "rtl/build_id.v" + set outputFile [open $outputFileName "w"] + + # Output the Verilog source + puts $outputFile "`define BUILD_DATE \"$buildDate\"" + puts $outputFile "`define BUILD_TIME \"$buildTime\"" + close $outputFile + + # Send confirmation message to the Messages window + post_message "Generated build identification Verilog module: [pwd]/$outputFileName" + post_message "Date: $buildDate" + post_message "Time: $buildTime" +} + +# Comment out this line to prevent the process from automatically executing when the file is sourced: +generateBuildID_Verilog \ No newline at end of file diff --git a/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/bwidow.vhd b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/bwidow.vhd new file mode 100644 index 00000000..6caf511b --- /dev/null +++ b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/bwidow.vhd @@ -0,0 +1,306 @@ +--=============================================================================-- +-- Black Widow logic. Everything from here should be implementation-agnostic. +--===========================================================================-- + +-- Black Widow arcade hardware implemented in an FPGA +-- (C) 2012 Jeroen Domburg (jeroen AT spritesmods.com) +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +library ieee; + use ieee.std_logic_1164.all; + use IEEE.STD_LOGIC_ARITH.ALL; + use IEEE.STD_LOGIC_UNSIGNED.ALL; + use ieee.numeric_std.all; + + +entity bwidow is + port( + reset_h : in std_logic; + clk : in std_logic; --12 MHz + clk_25 : in std_logic; + analog_sound_out : out std_logic_vector(7 downto 0); + analog_x_out : out std_logic_vector(9 downto 0); + analog_y_out : out std_logic_vector(9 downto 0); + analog_z_out : out std_logic_vector(7 downto 0); + BEAM_ENA : out std_logic; + rgb_out : out std_logic_vector(2 downto 0); + buttons : in std_logic_vector(14 downto 0); + SW_B4 : in std_logic_vector(7 downto 0); + SW_D4 : in std_logic_vector(7 downto 0); + dbg : out std_logic_vector(15 downto 0) + ); +end bwidow; + +architecture Behaviour of bwidow is + signal c_addr : std_logic_vector(23 downto 0); + signal c_din : std_logic_vector(7 downto 0); + signal c_dout : std_logic_vector(7 downto 0); + signal c_rw_l : std_logic; + signal c_irq_l : std_logic; + signal avg_dout : std_logic_vector(7 downto 0); + signal pgmrom_dout : std_logic_vector(7 downto 0); + signal pgmram_dout : std_logic_vector(7 downto 0); + signal pgmrom_addr : std_logic_vector(15 downto 0); + signal pgmram_addr : std_logic_vector(10 downto 0); + signal avgmem_addr : std_logic_vector(15 downto 0); + signal earom_dout : std_logic_vector(7 downto 0); + signal pokeya_dout : std_logic_vector(7 downto 0); + signal pokeyb_dout : std_logic_vector(7 downto 0); + signal pokeya_cs_l : std_logic; + signal pokeyb_cs_l : std_logic; + signal pgmram_cs_l : std_logic; + signal avgmem_cs_l : std_logic; + signal earom_write_l : std_logic; + signal earom_con_l : std_logic; + signal pokeya_audio : std_logic_vector(7 downto 0); + signal pokeyb_audio : std_logic_vector(7 downto 0); + signal latchin_a : std_logic_vector(7 downto 0); + signal latchin_b : std_logic_vector(7 downto 0); + signal latchin_c : std_logic_vector(7 downto 0); + signal latchout : std_logic_vector(7 downto 0); + signal cnt_3khz : std_logic_vector(8 downto 0); + signal ena_1_5M : std_logic; + signal reset_l : std_logic; + signal avg_rst : std_logic; + signal avg_go : std_logic; + signal avg_halted : std_logic; + signal avg_dbg : std_logic_vector(15 downto 0); + signal clkdiv : std_logic_vector(2 downto 0); + signal irqctr : std_logic_vector(3 downto 0); + signal intack_l : std_logic; + signal service_btnst : std_logic; +begin +pokeya: entity work.pokey + port map ( + ADDR => c_addr(3 downto 0), + DIN => c_dout, + DOUT => pokeya_dout, + DOUT_OE_L => open, + RW_L => c_rw_l, + CS => '1', + CS_L => pokeya_cs_l, + AUDIO_OUT => pokeya_audio, + PIN => SW_D4, -- dip free play? + ENA => ena_1_5M, + CLK => clk + ); + +pokeyb: entity work.pokey + port map ( + ADDR => c_addr(3 downto 0), + DIN => c_dout, + DOUT => pokeyb_dout, + DOUT_OE_L => open, + RW_L => c_rw_l, + CS => '1', + CS_L => pokeyb_cs_l, + AUDIO_OUT => pokeyb_audio, + PIN => SW_B4, + ENA => ena_1_5M, + CLK => clk + ); + +cpu: entity work.T65 + port map ( + Mode => "00", + Res_n => reset_l, + Enable => ena_1_5M, + Clk => clk, + Rdy => '1', + Abort_n => '1', + IRQ_n => c_irq_l, + NMI_n => '1', + SO_n => '1', + R_W_n => c_rw_l, + Sync => open, + EF => open, + MF => open, + XF => open, + ML_n => open, + VP_n => open, + VDA => open, + VPA => open, + A => c_addr, + DI => c_din, + DO => c_dout + ); + +mypgmrom: entity work.pgmrom + port map ( + addr => pgmrom_addr(14 downto 0), + data => pgmrom_dout, + clk => clk + ); + +--mypgmram: entity work.ram2k +-- port map ( +-- addr => pgmram_addr, +-- data_in => c_dout, +-- data_out => pgmram_dout, +-- ena => ena_1_5M, --doesn't work due to pipelining +-- ena => '1', +-- cs_l => pgmram_cs_l, -- no enable on Altera, hopefully this works +-- rw_l => c_rw_l, +-- clk => clk +-- ); + +mypgmram : entity work.gen_ram + generic map( dWidth => 8, aWidth => 11) + port map( + clk => clk, + we => (not c_rw_l) and (not pgmram_cs_l), + addr => pgmram_addr, + d => c_dout, + q => pgmram_dout + ); + +myearom: entity work.earom + port map ( + reset_l => reset_l, + clk => clk, + data_in => c_dout, + data_out => earom_dout, + addr => c_addr(5 downto 0), +-- we_l => c_wr_l, + write_l => earom_write_l, + con_l => earom_con_l + ); + +myavg: entity work.avg + port map ( + clk => clk, + clken => ena_1_5M, + cpu_data_in => avg_dout, + cpu_data_out => c_dout, + cpu_addr => avgmem_addr(13 downto 0), + cpu_cs_l => avgmem_cs_l, + cpu_rw_l => c_rw_l, + vgrst => avg_rst, + vggo => avg_go, + halted => avg_halted, + xout => analog_x_out, + yout => analog_y_out, + zout => analog_z_out, + rgbout => rgb_out, + dbg => avg_dbg + ); + + -- Memory decoding: CPU read + c_din <= latchin_a when c_addr(15 downto 11)="10001" else + latchin_b when c_addr(15 downto 11)="10000" else + latchin_c when c_addr(15 downto 11)="01111" else + earom_dout when c_addr(15 downto 11)="01110" else + pokeyb_dout when c_addr(15 downto 11)="01101" else + pokeya_dout when c_addr(15 downto 11)="01100" else + avg_dout when c_addr(15 downto 12)="0101" else + avg_dout when c_addr(15 downto 12)="0100" else + avg_dout when c_addr(15 downto 12)="0011" else + avg_dout when c_addr(15 downto 11)="00101" else + avg_dout when c_addr(15 downto 11)="00100" else + pgmram_dout when c_addr(15 downto 11)="00000" else + pgmrom_dout when c_addr(15)='1' else + "00000000"; + + -- Memory decoding: CPU writes + pokeya_cs_l <= '0' when c_addr(15 downto 11)="01100" else '1'; + pokeyb_cs_l <= '0' when c_addr(15 downto 11)="01101" else '1'; + pgmram_cs_l <= '0' when c_addr(15 downto 11)="00000" else '1'; + avgmem_cs_l <= '0' when c_addr(15 downto 12)="0101" else + '0' when c_addr(15 downto 12)="0100" else + '0' when c_addr(15 downto 12)="0011" else + '0' when c_addr(15 downto 11)="00101" else + '0' when c_addr(15 downto 11)="00100" else '1'; + earom_write_l <= '0' when c_addr(15 downto 6)="1000100101" else '1'; + earom_con_l <= '0' when c_addr(15 downto 6)="1000100100" else '1'; + intack_l <= '0' when c_addr(15 downto 6)="1000100011" else '1'; + avg_go <= '1' when c_addr(15 downto 6)="1000100001" else '0'; + avg_rst <= '1' when c_addr(15 downto 6)="1000100010" else '0'; + latchout <= c_dout when c_addr(15 downto 12)="1000100000" and c_rw_l='0' else latchout; + +-- dbg(15)<=clk; +-- dbg(14)<=ena_1_5M; +-- dbg(13)<=cnt_3khz(8); +-- dbg(12)<=intack_l; +-- dbg(11 downto 0)<=avg_dbg(15 downto 4); +-- dbg<=c_addr(15 downto 0); +-- dbg(7 downto 0)<=c_addr(7 downto 0); +-- dbg(15 downto 8)<=pgmram_dout; + dbg<=avg_dbg; + + analog_sound_out<=(("0"&pokeya_audio(7 downto 1))+("0"&pokeyb_audio(7 downto 1))); + + -- Memory decoding: offsets in address map + pgmrom_addr<=c_addr(15 downto 0); +-- avgmem_addr<=c_addr(15 downto 0)-x"002000"; + avgmem_addr<= c_addr(15 downto 0)-"10000000000000"; -- broken + pgmram_addr(10)<=c_addr(10) xor latchout(2); --handle banksel + pgmram_addr(9 downto 0)<=c_addr(9 downto 0); + + --Misc stuff + reset_l <= not reset_h; + + --Latches + --buttons(14 downto 0): SELFTEST, SA, COINAUX COINL COINR START2 START1 FD FU FL FR MU MD ML MR + latchin_c(7)<=cnt_3khz(8); + latchin_c(6)<=avg_halted; + latchin_c(5)<='1';--buttons(14); -- self test? + --latchin_c(4)<=buttons(14); -- self test? handled below + latchin_c(3)<='1'; --nc + latchin_c(2 downto 0)<=buttons(12 downto 10); + latchin_b(7 downto 4)<="0000"; --option2-0, spare + latchin_b(3 downto 0)<=buttons(3 downto 0); + latchin_a(7)<='0'; --cabinet1 + latchin_a(6 downto 5)<=buttons(9 downto 8); + latchin_a(4)<='0'; --spare + latchin_a(3 downto 0)<=buttons(7 downto 4); + + c_irq_l<=not(irqctr(3) and irqctr(2)); --triggers irq 250 times per second. + + --Clock divider to generate the 1.5MHz enable signal. Also handles the 3KHz counter and 250Hz interrupt. + process(clk) begin + if clk'EVENT and clk='1' then + clkdiv<=clkdiv+"001"; + if (clkdiv="000") then + ena_1_5M<='1'; + cnt_3khz<=cnt_3khz+"000000001"; + if cnt_3KHz="000000000" and intack_l='1' and c_irq_l='1' then + irqctr<=irqctr+"0001"; + end if; + else + ena_1_5M<='0'; + end if; + end if; + if intack_l='0' then + irqctr<="0000"; + end if; + end process; + + --Handle service switch + process(clk) begin + if clk'EVENT and clk='1' then + if reset_h='1' then + latchin_c(4)<='1'; + elsif (service_btnst='1' and buttons(13)='0') then + latchin_c(4)<=not latchin_c(4); + end if; + service_btnst<=buttons(13); + end if; + end process; + + + BEAM_ENA <= ena_1_5m; + +end Behaviour; + diff --git a/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/bwidow_dw.vhd b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/bwidow_dw.vhd new file mode 100644 index 00000000..6764c65a --- /dev/null +++ b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/bwidow_dw.vhd @@ -0,0 +1,471 @@ +-- +-- A simulation model of Asteroids Deluxe hardware +-- Copyright (c) MikeJ - May 2004 +-- +-- All rights reserved +-- +-- Redistribution and use in source and synthezised forms, with or without +-- modification, are permitted provided that the following conditions are met: +-- +-- Redistributions of source code must retain the above copyright notice, +-- this list of conditions and the following disclaimer. +-- +-- Redistributions in synthesized form must reproduce the above copyright +-- notice, this list of conditions and the following disclaimer in the +-- documentation and/or other materials provided with the distribution. +-- +-- Neither the name of the author nor the names of other contributors may +-- be used to endorse or promote products derived from this software without +-- specific prior written permission. +-- +-- THIS CODE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +-- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +-- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +-- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE +-- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +-- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +-- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +-- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +-- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +-- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +-- POSSIBILITY OF SUCH DAMAGE. +-- +-- You are responsible for any legal issues arising from your use of this code. +-- +-- The latest version of this file can be found at: www.fpgaarcade.com +-- +-- Email support@fpgaarcade.com +-- +-- Revision list +-- +-- version 001 initial release +-- +-- This code is not part of the original game. + +-- Dave Wood (oldgit) Feb 2019 + +-- My smaller version (512 x 512 screen). This module takes the Vectors and beam intensisty and +-- produces a double buffered raster graphics screen. The intensity was used to give a 'blue hue' as per the original game +-- to the rocks and text but produces white for the ships. + +library ieee; + use ieee.std_logic_1164.all; + use ieee.std_logic_arith.all; + use ieee.std_logic_unsigned.all; + +--use work.pkg_asteroids.all; + +entity BWIDOW_DW is + port ( + 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); + RGB : in std_logic_vector(2 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 + + + ); +end; + +architecture RTL of BWIDOW_DW is + -- types & constants + subtype Bus12 is std_logic_vector (11 downto 0); + + constant V_FRONT_PORCH_START : Bus12 := x"1e0"; -- line 480 + constant V_SYNC_START : Bus12 := x"1ea"; -- line 490 + constant V_BACK_PORCH_START : Bus12 := x"1ec"; -- line 492 + constant LINE_PER_FRAME : Bus12 := x"20d"; -- 525 lines + + constant H_FRONT_PORCH_START : Bus12 := x"280"; -- pixel 640 + constant H_SYNC_START : Bus12 := x"290"; -- pixel 656 + constant H_BACK_PORCH_START : Bus12 := x"2f0"; -- pixel 752 + constant PIXEL_PER_LINE : Bus12 := x"320"; -- 800 pixels + + signal lcount : std_logic_vector(9 downto 0); + signal pcount : std_logic_vector(10 downto 0); + + signal hterm : boolean; + signal vterm : boolean; + signal v_sync : std_logic; + signal h_sync : std_logic; + signal v_blank : std_logic; + signal h_blank : std_logic; + signal raster_active : std_logic; + + -- + signal beam_ena_t : std_logic_vector(2 downto 0); + signal beam_load : std_logic; + signal video_r : std_logic_vector(3 downto 0); + signal video_g : std_logic_vector(3 downto 0); + signal video_b : std_logic_vector(3 downto 0); + + signal dw_addr : std_logic_vector(18 downto 0); + + signal up_addr : std_logic_vector(17 downto 0); + signal vid_out : std_logic_vector(3 downto 0); + signal Y_Vid : std_logic_vector(8 downto 0); + signal X_Vid : std_logic_vector(8 downto 0); + signal Vid_data : std_logic_vector(3 downto 0); + + signal dcount : std_logic_vector(2 downto 0); + signal screen : std_logic_vector(0 downto 0); + signal vcount : std_logic_vector(8 downto 0); + signal hcount : std_logic_vector(8 downto 0); + signal pxcount : std_logic_vector(8 downto 0); + +begin + + pixel_cnt : process(clk_25, RESET) + variable vcnt_front_porch_start : boolean; + variable hcnt_front_porch_start : boolean; + begin + if (RESET = '1') then + hcount <= (others => '0'); + vcount <= (others => '0'); + + elsif rising_edge(clk_25) then + + vcnt_front_porch_start := (vcount = 511); + hcnt_front_porch_start := (hcount = 511); + + if hcnt_front_porch_start then + hcount <= (others => '0'); + else + hcount <= hcount + "1"; + end if; + + if hcnt_front_porch_start then + if vcnt_front_porch_start then + vcount <= (others => '0'); + + else + vcount <= vcount + "1"; + end if; + end if; + + end if; + end process; + + -- basic raster gen + p_cnt_compare_comb : process(pcount,lcount) + begin + hterm <= (pcount = (PIXEL_PER_LINE(10 downto 0) - "1")); + vterm <= (lcount = (LINE_PER_FRAME( 9 downto 0) - "1")); + end process; + + p_display_cnt : process(clk_25, RESET) + begin + if (RESET = '1') then + pcount <= (others => '0'); + lcount <= (others => '0'); + dcount <= (others => '0'); + elsif rising_edge(clk_25) then + if hterm then + pcount <= (others => '0'); + else + pcount <= pcount + "1"; + end if; + + if pcount > 63 then + pxcount <= pxcount + "1"; + raster_active <= '1'; + end if; + if pcount > 575 then + raster_active <= '0'; + pxcount <= "111111111"; + end if; + + + if hterm then + if vterm then + lcount <= (others => '0'); + dcount <= dcount + "1" ; + else + lcount <= lcount + "1"; + end if; + end if; + + end if; + end process; + + p_vsync : process(clk_25, RESET) + variable vcnt_eq_front_porch_start : boolean; + variable vcnt_eq_sync_start : boolean; + variable vcnt_eq_back_porch_start : boolean; + begin + if (RESET = '1') then + v_sync <= '1'; + v_blank <= '0'; + elsif rising_edge(clk_25) then + + vcnt_eq_front_porch_start := (lcount = (V_FRONT_PORCH_START(9 downto 0) - "1")); + vcnt_eq_sync_start := (lcount = ( V_SYNC_START(9 downto 0) - "1")); + vcnt_eq_back_porch_start := (lcount = ( V_BACK_PORCH_START(9 downto 0) - "1")); + + if vcnt_eq_sync_start and hterm then + v_sync <= '0'; + elsif vcnt_eq_back_porch_start and hterm then + v_sync <= '1'; + end if; + + if vcnt_eq_front_porch_start and hterm then + v_blank <= '1'; + elsif vterm and hterm then + v_blank <= '0'; + end if; + + end if; + end process; + + p_hsync : process(clk_25, RESET) + variable hcnt_eq_front_porch_start : boolean; + variable hcnt_eq_sync_start : boolean; + variable hcnt_eq_back_porch_start : boolean; + begin + if (RESET = '1') then + h_sync <= '1'; + h_blank <= '1'; -- 0 + elsif rising_edge(clk_25) then + hcnt_eq_front_porch_start := (pcount = ( H_FRONT_PORCH_START(10 downto 0) - "1")); + hcnt_eq_sync_start := (pcount = ( H_SYNC_START(10 downto 0) - "1")); + hcnt_eq_back_porch_start := (pcount = ( H_BACK_PORCH_START(10 downto 0) - "1")); + + if hcnt_eq_sync_start then + h_sync <= '0'; + elsif hcnt_eq_back_porch_start then + h_sync <= '1'; + end if; + + if hcnt_eq_front_porch_start then + h_blank <= '1'; + elsif hterm then + h_blank <= '0'; + end if; + + end if; + end process; + + p_active_video : process(h_blank, v_blank, raster_active, lcount, pxcount) + begin +-- raster_active <= not(h_blank or v_blank); + if raster_active = '1' then + Y_Vid <= not (lcount(8 downto 0) and lcount(8 downto 0)) ; + else + Y_Vid <= "111111111"; + end if; + if raster_active = '1' then + X_Vid <= pxcount(8 downto 0); + else + X_Vid <= "111111111"; + end if; + + end process; + + p_video_out : process + begin + wait until rising_edge(clk_25); + if raster_active = '1' then + if (vid_out(3) = '1') then + video_r <= "1111"; + else + video_r <= "0000"; + end if; + if (vid_out(2) = '1') then + video_g <= "1111"; + else + video_g <= "0000"; + end if; + if (vid_out(1) = '1') then + video_b <= "1111"; + else + video_b <= "0000"; + end if; + +-- case vid_out is +-- when "0000" => video_r <= "0000";video_g <= "0000";video_b <= "0000"; +-- when "0001" => video_r <= "0001";video_g <= "0001";video_b <= "0001"; +-- when "0010" => video_r <= "0011";video_g <= "0011";video_b <= "0011"; +-- when "0011" => video_r <= "0011";video_g <= "0011";video_b <= "0011"; +-- when "0100" => video_r <= "0011";video_g <= "0011";video_b <= "0111"; +-- when "0101" => video_r <= "0011";video_g <= "0011";video_b <= "0111"; +-- when "0110" => video_r <= "0011";video_g <= "0011";video_b <= "0111"; +-- when "0111" => video_r <= "0011";video_g <= "0011";video_b <= "0111"; +-- when "1000" => video_r <= "0111";video_g <= "0111";video_b <= "0111"; +-- when "1001" => video_r <= "0111";video_g <= "0111";video_b <= "0111"; +-- when "1010" => video_r <= "0111";video_g <= "0111";video_b <= "0111"; +-- when "1011" => video_r <= "0111";video_g <= "0111";video_b <= "0111"; +-- when "1100" => video_r <= "1111";video_g <= "1111";video_b <= "1111"; +-- when "1101" => video_r <= "1111";video_g <= "1111";video_b <= "1111"; +-- when "1110" => video_r <= "1111";video_g <= "1111";video_b <= "1111"; +-- when others => video_r <= "1111";video_g <= "1111";video_b <= "1111"; + -- end case; + VIDEO_R_OUT <= video_r; + VIDEO_G_OUT <= video_g; + VIDEO_B_OUT <= video_b; + else -- blank + VIDEO_R_OUT <= "0000"; + VIDEO_G_OUT <= "0000"; + VIDEO_B_OUT <= "0000"; + end if; + VID_DE <= not(v_blank or h_blank); + VSYNC_OUT <= v_sync; + HSYNC_OUT <= h_sync; + VID_HBLANK <= h_blank; + VID_VBLANK <= v_blank; + end process; + + up_addr <= (Y_Vid(8 downto 0) & X_Vid(8 downto 0)); + + clear_ram : process(clk_25, RESET) + variable state : integer range 0 to 4; + variable beam_ena_r : std_logic := '0'; + + begin + if RESET = '1' then + beam_ena_r := '0'; + + elsif rising_edge(clk_25) then + vram_wren <= '0' after 2 ns; + + if dcount = "000" then + screen <= "0"; + dw_addr <= "0" & ((Y_VECTOR(9 downto 1) ) & X_VECTOR(9 downto 1)); + if BEAM_ON = '1' and beam_ena_r = '0' and BEAM_ENA = '1' then + if Z_VECTOR(3 downto 0) = "0000" then + vid_data <= "0000"; + vram_wren <= '0'; + else + --vid_data <= Z_VECTOR(3 downto 0); + vid_data <= rgb & '0'; + vram_wren <= '1'; + end if; + end if; + end if; + if dcount = "001" then + screen <= "0"; + dw_addr <= "1" & (vcount ) & hcount; + vid_data <= "0000"; + vram_wren <= '1'; + end if; + if dcount = "010" then + screen <= "0"; + dw_addr <= "0" & ((Y_VECTOR(9 downto 1) ) & X_VECTOR(9 downto 1)); + if BEAM_ON = '1' and beam_ena_r = '0' and BEAM_ENA = '1' then + if Z_VECTOR(3 downto 0) = "0000" then + vid_data <= "0000"; + vram_wren <= '0'; + else + --vid_data <= Z_VECTOR(3 downto 0); + vid_data <= rgb & '0'; + + vram_wren <= '1'; + end if; + end if; + end if; + if dcount = "011" then + screen <= "0"; + dw_addr <= "1" & ((Y_VECTOR(9 downto 1) ) & X_VECTOR(9 downto 1)); + if BEAM_ON = '1' and beam_ena_r = '0' and BEAM_ENA = '1' then + if Z_VECTOR(3 downto 0) = "0000" then + vid_data <= "0000"; + vram_wren <= '0'; + else + --vid_data <= Z_VECTOR(3 downto 0); + vid_data <= rgb & '0'; + vram_wren <= '1'; + end if; + end if; + end if; + if dcount = "100" then + screen <= "1"; + dw_addr <= "1" & ((Y_VECTOR(9 downto 1) ) & X_VECTOR(9 downto 1)); + if BEAM_ON = '1' and beam_ena_r = '0' and BEAM_ENA = '1' then + if Z_VECTOR(3 downto 0) = "0000" then + vid_data <= "0000"; + vram_wren <= '0'; + else + --vid_data <= Z_VECTOR(3 downto 0); + vid_data <= rgb & '0'; + vram_wren <= '1'; + end if; + end if; + end if; + if dcount = "101" then + screen <= "1"; + dw_addr <= "0" & (vcount ) & hcount; + vid_data <= "0000"; + vram_wren <= '1'; + end if; + if dcount = "110" then + screen <= "1"; + dw_addr <= "1" & ((Y_VECTOR(9 downto 1) ) & X_VECTOR(9 downto 1)); + if BEAM_ON = '1' and beam_ena_r = '0' and BEAM_ENA = '1' then + if Z_VECTOR(3 downto 0) = "0000" then + vid_data <= "0000"; + vram_wren <= '0'; + else + --vid_data <= Z_VECTOR(3 downto 0); + vid_data <= rgb & '0'; + vram_wren <= '1'; + end if; + end if; + end if; + if dcount = "111" then + screen <= "1"; + dw_addr <= "0" & ((Y_VECTOR(9 downto 1) ) & X_VECTOR(9 downto 1)); + if BEAM_ON = '1' and beam_ena_r = '0' and BEAM_ENA = '1' then + if Z_VECTOR(3 downto 0) = "0000" then + vid_data <= "0000"; + vram_wren <= '0'; + else + --vid_data <= Z_VECTOR(3 downto 0); + vid_data <= rgb & '0'; + vram_wren <= '1'; + end if; + end if; + end if; + beam_ena_r := beam_ena; + end if; + 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, + +-- clock_b => clk_25, +-- address_b => (screen & up_addr), +-- q_b => vid_out +--); + +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; + + -- job done ! +end architecture RTL; diff --git a/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/bwidow_top.vhd b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/bwidow_top.vhd new file mode 100644 index 00000000..b004664a --- /dev/null +++ b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/bwidow_top.vhd @@ -0,0 +1,210 @@ +-- +-- A simulation model of Asteroids Deluxe hardware +-- Copyright (c) MikeJ - May 2004 +-- +-- All rights reserved +-- +-- Redistribution and use in source and synthezised forms, with or without +-- modification, are permitted provided that the following conditions are met: +-- +-- Redistributions of source code must retain the above copyright notice, +-- this list of conditions and the following disclaimer. +-- +-- Redistributions in synthesized form must reproduce the above copyright +-- notice, this list of conditions and the following disclaimer in the +-- documentation and/or other materials provided with the distribution. +-- +-- Neither the name of the author nor the names of other contributors may +-- be used to endorse or promote products derived from this software without +-- specific prior written permission. +-- +-- THIS CODE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +-- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +-- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +-- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE +-- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +-- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +-- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +-- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +-- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +-- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +-- POSSIBILITY OF SUCH DAMAGE. +-- +-- You are responsible for any legal issues arising from your use of this code. +-- +-- The latest version of this file can be found at: www.fpgaarcade.com +-- +-- Email support@fpgaarcade.com +-- +-- Revision list +-- +-- version 001 initial release +-- + + -- + -- Notes : + -- + -- Button shorts input to ground when pressed + -- + -- ToDo: + -- Model sound effects for thump-thump, ship and saucer fire and saucer warble + -- Add player control switching and screen flip for cocktail mode + -- General cleanup + + + +library ieee; + use ieee.std_logic_1164.all; + use ieee.std_logic_arith.all; + use ieee.std_logic_unsigned.all; + +entity BWIDOW_TOP is + port ( + BUTTON : in std_logic_vector(14 downto 0); -- active low + + SW_B4 : in std_logic_vector(7 downto 0); + SW_D4 : in std_logic_vector(7 downto 0); + AUDIO_OUT : out std_logic_vector(7 downto 0); + SELF_TEST_SWITCH_L: 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; + VGA_DE : out std_logic; + VID_HBLANK : out std_logic; + VID_VBLANK : out std_logic; + + + + RESET_L : in std_logic; + + -- ref clock in + clk_6 : in std_logic; + clk_12 : 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 + + ); +end; + +architecture RTL of BWIDOW_TOP is + + signal RAM_ADDR_A : std_logic_vector(18 downto 0); + signal RAM_ADDR_B : std_logic_vector(15 downto 0); -- same as above + signal RAM_WE_L : std_logic; + signal RAM_ADV_L : std_logic; + signal RAM_OE_L : std_logic; + signal RAM_DO : std_logic_vector(31 downto 0); + signal RAM_DI : std_logic_vector(31 downto 0); + signal ram_we : std_logic; + + signal reset_dll_h : std_logic; + + signal delay_count : std_logic_vector(7 downto 0) := (others => '0'); + signal reset_6_l : std_logic; + signal reset_6 : std_logic; + + signal clk_cnt : std_logic_vector(2 downto 0) := "000"; + + signal x_vector : std_logic_vector(9 downto 0); + signal y_vector : std_logic_vector(9 downto 0); + signal z_vector : std_logic_vector(7 downto 0); + signal beam_on : std_logic; + signal beam_ena : std_logic; + + signal ram_addr_int : std_logic_vector(18 downto 0); + signal ram_we_l_int : std_logic; + signal ram_adv_l_int : std_logic; + signal ram_oe_l_int : std_logic; + signal ram_dout_oe_l : std_logic; + signal ram_dout_oe_l_reg : std_logic; + signal ram_dout : std_logic_vector(31 downto 0); + signal ram_dout_reg : std_logic_vector(31 downto 0); + signal ram_din : std_logic_vector(31 downto 0); + + signal rgb : STD_LOGIC_VECTOR(2 downto 0); + +begin + + -- + -- Note about clocks + -- + -- (the original uses a 6.048 MHz clock, so 40 / 6 - slightly slower) + -- + + reset_dll_h <= not RESET_L; + reset_6 <= reset_dll_h; + + p_delay : process(RESET_L, clk_6) + begin + if (RESET_L = '0') then + delay_count <= x"00"; -- longer delay for cpu + reset_6_l <= '0'; + elsif rising_edge(clk_6) then + if (delay_count(7 downto 0) = (x"FF")) then + delay_count <= (x"FF"); + reset_6_l <= '1'; + else + delay_count <= delay_count + "1"; + reset_6_l <= '0'; + end if; + end if; + end process; + + mybwidow: entity work.bwidow port map ( + clk => clk_12, + clk_25 => clk_25, + reset_h => not reset_6_l, + analog_sound_out => AUDIO_OUT, + analog_x_out => x_vector, + analog_y_out => y_vector, + analog_z_out => z_vector, + BEAM_ENA => beam_ena, + rgb_out => rgb, + dbg => open, + buttons => button, + SW_B4 => SW_B4, + SW_D4 => SW_D4 + ); + + + u_DW : entity work.BWIDOW_DW + port map ( + RESET => reset_6, + clk_25 => clk_25, + clk_6 => clk_6, + + X_VECTOR => not x_vector(9) & x_vector(8 downto 0), + Y_VECTOR => not y_vector(9) & y_vector(8 downto 0), + --Z_VECTOR => z_vector(3 downto 0) or z_vector(7 downto 4), + Z_VECTOR => z_vector(7 downto 4), + RGB => rgb, + --BEAM_ON => beam_on, + BEAM_ENA => beam_ena, + BEAM_ON => rgb(0) or rgb(1) or rgb(2), + + VIDEO_R_OUT => VIDEO_R_OUT, + VIDEO_G_OUT => VIDEO_G_OUT, + VIDEO_B_OUT => VIDEO_B_OUT, + HSYNC_OUT => HSYNC_OUT, + 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 + ); + + +end RTL; diff --git a/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/earom.vhd b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/earom.vhd new file mode 100644 index 00000000..34894551 --- /dev/null +++ b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/earom.vhd @@ -0,0 +1,42 @@ + +-- Black Widow arcade hardware implemented in an FPGA +-- (C) 2012 Jeroen Domburg (jeroen AT spritesmods.com) +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +--The EAROM is a bit of EEPROM used to store the highscores. Not implemented here: +--the FPGA doesn't have nonvolatile storage and I'm too lazy to interface it to some. + +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_ARITH.ALL; +use IEEE.STD_LOGIC_UNSIGNED.ALL; + + +entity earom is + Port ( reset_l : in STD_LOGIC; + clk : in STD_LOGIC; + addr : in STD_LOGIC_VECTOR (5 downto 0); + data_in : in STD_LOGIC_VECTOR (7 downto 0); + data_out : out STD_LOGIC_VECTOR (7 downto 0); + write_l : in STD_LOGIC; + con_l : in STD_LOGIC); +end earom; + +architecture Behavioral of earom is +begin + --To be implemented. + data_out <= "11111111"; +end Behavioral; + diff --git a/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/gen_ram.vhd b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/gen_ram.vhd new file mode 100644 index 00000000..f1a95608 --- /dev/null +++ b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/gen_ram.vhd @@ -0,0 +1,84 @@ +-- ----------------------------------------------------------------------- +-- +-- Syntiac's generic VHDL support files. +-- +-- ----------------------------------------------------------------------- +-- Copyright 2005-2008 by Peter Wendrich (pwsoft@syntiac.com) +-- http://www.syntiac.com/fpga64.html +-- +-- Modified April 2016 by Dar (darfpga@aol.fr) +-- http://darfpga.blogspot.fr +-- Remove address register when writing +-- +-- ----------------------------------------------------------------------- +-- +-- gen_rwram.vhd +-- +-- ----------------------------------------------------------------------- +-- +-- generic ram. +-- +-- ----------------------------------------------------------------------- + +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.numeric_std.ALL; + +-- ----------------------------------------------------------------------- + +entity gen_ram is + generic ( + dWidth : integer := 8; + aWidth : integer := 10 + ); + port ( + clk : in std_logic; + we : in std_logic; + addr : in std_logic_vector((aWidth-1) downto 0); + d : in std_logic_vector((dWidth-1) downto 0); + q : out std_logic_vector((dWidth-1) downto 0) + ); +end entity; + +-- ----------------------------------------------------------------------- + +architecture rtl of gen_ram is + subtype addressRange is integer range 0 to ((2**aWidth)-1); + type ramDef is array(addressRange) of std_logic_vector((dWidth-1) downto 0); + signal ram: ramDef; + + signal rAddrReg : std_logic_vector((aWidth-1) downto 0); + signal qReg : std_logic_vector((dWidth-1) downto 0); +begin +-- ----------------------------------------------------------------------- +-- Signals to entity interface +-- ----------------------------------------------------------------------- +-- q <= qReg; + +-- ----------------------------------------------------------------------- +-- Memory write +-- ----------------------------------------------------------------------- + process(clk) + begin + if rising_edge(clk) then + if we = '1' then + ram(to_integer(unsigned(addr))) <= d; + end if; + end if; + end process; + +-- ----------------------------------------------------------------------- +-- Memory read +-- ----------------------------------------------------------------------- +process(clk) + begin + if rising_edge(clk) then +-- qReg <= ram(to_integer(unsigned(rAddrReg))); +-- rAddrReg <= addr; +---- qReg <= ram(to_integer(unsigned(addr))); + q <= ram(to_integer(unsigned(addr))); + end if; + end process; +--q <= ram(to_integer(unsigned(addr))); +end architecture; + diff --git a/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/p2ram.v b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/p2ram.v new file mode 100644 index 00000000..67b17477 --- /dev/null +++ b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/p2ram.v @@ -0,0 +1,215 @@ +// 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/BlackWidow_MiST/rtl/pgmrom.vhd b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/pgmrom.vhd new file mode 100644 index 00000000..b6ff8b72 --- /dev/null +++ b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/pgmrom.vhd @@ -0,0 +1,102 @@ + +-- Black Widow arcade hardware implemented in an FPGA +-- (C) 2012 Jeroen Domburg (jeroen AT spritesmods.com) +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + + +--The program ROM. + +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_ARITH.ALL; +use IEEE.STD_LOGIC_UNSIGNED.ALL; + +entity pgmrom is + Port ( addr : in STD_LOGIC_VECTOR (14 downto 0); + data : out STD_LOGIC_VECTOR (7 downto 0); + clk : in STD_LOGIC + ); +end pgmrom; + +architecture Behavioral of pgmrom is + signal dataa: std_logic_vector(7 downto 0); + signal datab: std_logic_vector(7 downto 0); + signal datac: std_logic_vector(7 downto 0); + signal datad: std_logic_vector(7 downto 0); + signal datae: std_logic_vector(7 downto 0); + signal dataf: std_logic_vector(7 downto 0); + +begin + +--136017-101.d1 4096 0 0000 000000000000 +--136017-102.ef1 4096 4096 0001 000000000000 +--136017-103.h1 4096 8192 0010 000000000000 +--136017-104.j1 4096 12288 0011 000000000000 +--136017-105.kl1 4096 16384 0100 000000000000 +--136017-106.m1 4096 20480 0101 000000000000 + + + +roma: entity work.bwidow_pgm_rom1 + port map ( + clk => clk, + addr => addr(11 downto 0), + data => dataa + ); + +romb: entity work.bwidow_pgm_rom2 + port map ( + clk => clk, + addr => addr(11 downto 0), + data => datab + ); +romc: entity work.bwidow_pgm_rom3 + port map ( + clk => clk, + addr => addr(11 downto 0), + data => datac + ); + +romd: entity work.bwidow_pgm_rom4 + port map ( + clk => clk, + addr => addr(11 downto 0), + data => datad + ); + +rome: entity work.bwidow_pgm_rom5 + port map ( + clk => clk, + addr => addr(11 downto 0), + data => datae + ); + +romf: entity work.bwidow_pgm_rom6 + port map ( + clk => clk, + addr => addr(11 downto 0), + data => dataf + ); + + data <= dataa when addr(14 downto 12)="001" else + datab when addr(14 downto 12)="010" else + datac when addr(14 downto 12)="011" else + datad when addr(14 downto 12)="100" else + datae when addr(14 downto 12)="101" else + dataf when addr(14 downto 12)="110" else + dataf when addr(14 downto 12)="111" --last rom is mirrored once + else "00000000"; +end Behavioral; + diff --git a/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/pkg_bwidow.vhd b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/pkg_bwidow.vhd new file mode 100644 index 00000000..05eac939 --- /dev/null +++ b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/pkg_bwidow.vhd @@ -0,0 +1,220 @@ + +-- Black Widow arcade hardware implemented in an FPGA +-- (C) 2012 Jeroen Domburg (jeroen AT spritesmods.com) +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + + +library ieee; + use ieee.std_logic_1164.all; + use ieee.std_logic_unsigned.all; + use ieee.numeric_std.all; + + +package pkg_bwidow is + +component bwidow is + port( + reset_h : in std_logic; + clk : in std_logic; --12 MHz + clk_25 : in std_logic; + analog_sound_out : out std_logic_vector(7 downto 0); + analog_x_out : out std_logic_vector(9 downto 0); + analog_y_out : out std_logic_vector(9 downto 0); + analog_z_out : out std_logic_vector(7 downto 0); + BEAM_ENA : out std_logic; + rgb_out : out std_logic_vector(2 downto 0); + buttons : in std_logic_vector(14 downto 0); + SW_B4 : in std_logic_vector(7 downto 0); + SW_D4 : in std_logic_vector(7 downto 0); + dn_addr : in std_logic_vector(15 downto 0); + dn_data : in std_logic_vector(7 downto 0); + dn_wr : in std_logic ; + dbg : out std_logic_vector(15 downto 0) + ); +end component; + + + + + +component pokey is + port ( + ADDR : in std_logic_vector(3 downto 0); + DIN : in std_logic_vector(7 downto 0); + DOUT : out std_logic_vector(7 downto 0); + DOUT_OE_L : out std_logic; + RW_L : in std_logic; + CS : in std_logic; -- used as enable + CS_L : in std_logic; + -- + AUDIO_OUT : out std_logic_vector(7 downto 0); + -- + PIN : in std_logic_vector(7 downto 0); + ENA : in std_logic; + CLK : in std_logic -- note 6 Mhz + ); +end component; + +--component rom_pgma is +-- port ( +-- CLK : in std_logic; +-- ADDR : in std_logic_vector(11 downto 0); +-- DATA : out std_logic_vector(7 downto 0) +-- ); +--end component; +--component rom_pgmb is +-- port ( +-- CLK : in std_logic; +-- ADDR : in std_logic_vector(11 downto 0); +-- DATA : out std_logic_vector(7 downto 0) +-- ); +--end component; +--component rom_pgmc is +-- port ( +-- CLK : in std_logic; +-- ADDR : in std_logic_vector(11 downto 0); +-- DATA : out std_logic_vector(7 downto 0) +-- ); +--end component; +--component rom_pgmd is +-- port ( +-- CLK : in std_logic; +-- ADDR : in std_logic_vector(11 downto 0); +-- DATA : out std_logic_vector(7 downto 0) +-- ); +--end component; +--component rom_pgme is +-- port ( +-- CLK : in std_logic; +-- ADDR : in std_logic_vector(11 downto 0); +-- DATA : out std_logic_vector(7 downto 0) +-- ); +--end component; +--component rom_pgmf is +-- port ( +-- CLK : in std_logic; +-- ADDR : in std_logic_vector(11 downto 0); +-- DATA : out std_logic_vector(7 downto 0) +-- ); +--end component; +-- +-- +--component rom_veca is +-- port ( +-- CLK : in std_logic; +-- ADDR : in std_logic_vector(10 downto 0); +-- DATA : out std_logic_vector(7 downto 0) +-- ); +--end component; +--component rom_vecb is +-- port ( +-- CLK : in std_logic; +-- ADDR : in std_logic_vector(11 downto 0); +-- DATA : out std_logic_vector(7 downto 0) +-- ); +--end component; +--component rom_vecc is +-- port ( +-- CLK : in std_logic; +-- ADDR : in std_logic_vector(11 downto 0); +-- DATA : out std_logic_vector(7 downto 0) +-- ); +--end component; +--component rom_vecd is +-- port ( +-- CLK : in std_logic; +-- ADDR : in std_logic_vector(11 downto 0); +-- DATA : out std_logic_vector(7 downto 0) +-- ); +--end component; +-- +-- +--component ram2k is +-- Port ( addr : in STD_LOGIC_VECTOR (10 downto 0); +-- data_in : in STD_LOGIC_VECTOR (7 downto 0); +-- data_out : out STD_LOGIC_VECTOR (7 downto 0); +-- rw_l : in STD_LOGIC; +-- cs_l : in STD_LOGIC; +-- ena : in STD_LOGIC; +-- clk : in STD_LOGIC); +--end component; + +component earom is + Port ( reset_l : in STD_LOGIC; + clk : in STD_LOGIC; + addr : in STD_LOGIC_VECTOR (5 downto 0); + data_in : in STD_LOGIC_VECTOR (7 downto 0); + data_out : out STD_LOGIC_VECTOR (7 downto 0); + write_l : in STD_LOGIC; + con_l : in STD_LOGIC); +end component; + +component avg is + Port ( cpu_data_in : out STD_LOGIC_VECTOR (7 downto 0); + cpu_data_out : in STD_LOGIC_VECTOR (7 downto 0); + cpu_addr : in STD_LOGIC_VECTOR (13 downto 0); + cpu_cs_l : in STD_LOGIC; + cpu_rw_l : in STD_LOGIC; + vgrst : in STD_LOGIC; + vggo : in STD_LOGIC; + halted : out STD_LOGIC; + xout : out STD_LOGIC_VECTOR (9 downto 0); + yout : out STD_LOGIC_VECTOR (9 downto 0); + zout : out STD_LOGIC_VECTOR (7 downto 0); + rgbout : out STD_LOGIC_VECTOR (2 downto 0); + dbg : out std_logic_vector(15 downto 0); + clken: in STD_LOGIC; + clk_25 : in STD_LOGIC; + clk : in STD_LOGIC; + dn_addr : in std_logic_vector(15 downto 0); + dn_data : in std_logic_vector(7 downto 0); + dn_wr : in std_logic + ); +end component; + +component vector_drawer is + Port ( clk : in STD_LOGIC; + clk_ena: in STD_LOGIC; + scale : in STD_LOGIC_VECTOR (12 downto 0); + rel_x : in STD_LOGIC_VECTOR (12 downto 0); + rel_y : in STD_LOGIC_VECTOR (12 downto 0); + zero: in STD_LOGIC; + draw : in STD_LOGIC; + done : out STD_LOGIC; + xout : out STD_LOGIC_VECTOR (9 downto 0); + yout : out STD_LOGIC_VECTOR (9 downto 0) + ); +end component; + +--component vecram_filled is --Used for debugging, not in normal operations. +-- Port ( addr : in STD_LOGIC_VECTOR (10 downto 0); +-- data_in : in STD_LOGIC_VECTOR (7 downto 0); +-- data_out : out STD_LOGIC_VECTOR (7 downto 0); +-- rw_l : in STD_LOGIC; +-- cs_l : in STD_LOGIC; +-- ena : in STD_LOGIC; +-- clk : in STD_LOGIC); +--end component; + +component spotkiller is + Port ( poweringup : out STD_LOGIC; + reset: in STD_LOGIC; + clk_12 : in STD_LOGIC; + xin : in STD_LOGIC_VECTOR(9 downto 0); + yin : in STD_LOGIC_VECTOR(9 downto 0); + crtenable : out STD_LOGIC); +end component; + +end pkg_bwidow; \ No newline at end of file diff --git a/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/pll.v b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/pll.v new file mode 100644 index 00000000..08304948 --- /dev/null +++ b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/pll.v @@ -0,0 +1,393 @@ +// megafunction wizard: %ALTPLL% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: altpll + +// ============================================================ +// File Name: pll.v +// Megafunction Name(s): +// altpll +// +// 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 pll ( + inclk0, + c0, + c1, + c2, + c3, + locked); + + input inclk0; + output c0; + output c1; + output c2; + output c3; + output locked; + + wire [4:0] sub_wire0; + wire sub_wire3; + wire [0:0] sub_wire8 = 1'h0; + wire [2:2] sub_wire5 = sub_wire0[2:2]; + wire [0:0] sub_wire4 = sub_wire0[0:0]; + wire [3:3] sub_wire2 = sub_wire0[3:3]; + wire [1:1] sub_wire1 = sub_wire0[1:1]; + wire c1 = sub_wire1; + wire c3 = sub_wire2; + wire locked = sub_wire3; + wire c0 = sub_wire4; + wire c2 = sub_wire5; + wire sub_wire6 = inclk0; + wire [1:0] sub_wire7 = {sub_wire8, sub_wire6}; + + altpll altpll_component ( + .inclk (sub_wire7), + .clk (sub_wire0), + .locked (sub_wire3), + .activeclock (), + .areset (1'b0), + .clkbad (), + .clkena ({6{1'b1}}), + .clkloss (), + .clkswitch (1'b0), + .configupdate (1'b0), + .enable0 (), + .enable1 (), + .extclk (), + .extclkena ({4{1'b1}}), + .fbin (1'b1), + .fbmimicbidir (), + .fbout (), + .fref (), + .icdrclk (), + .pfdena (1'b1), + .phasecounterselect ({4{1'b1}}), + .phasedone (), + .phasestep (1'b1), + .phaseupdown (1'b1), + .pllena (1'b1), + .scanaclr (1'b0), + .scanclk (1'b0), + .scanclkena (1'b1), + .scandata (1'b0), + .scandataout (), + .scandone (), + .scanread (1'b0), + .scanwrite (1'b0), + .sclkout0 (), + .sclkout1 (), + .vcooverrange (), + .vcounderrange ()); + defparam + altpll_component.bandwidth_type = "AUTO", + altpll_component.clk0_divide_by = 27, + altpll_component.clk0_duty_cycle = 50, + altpll_component.clk0_multiply_by = 50, + altpll_component.clk0_phase_shift = "0", + altpll_component.clk1_divide_by = 27, + altpll_component.clk1_duty_cycle = 50, + altpll_component.clk1_multiply_by = 25, + altpll_component.clk1_phase_shift = "0", + altpll_component.clk2_divide_by = 9, + altpll_component.clk2_duty_cycle = 50, + altpll_component.clk2_multiply_by = 4, + altpll_component.clk2_phase_shift = "0", + altpll_component.clk3_divide_by = 9, + altpll_component.clk3_duty_cycle = 50, + altpll_component.clk3_multiply_by = 2, + altpll_component.clk3_phase_shift = "0", + altpll_component.compensate_clock = "CLK0", + altpll_component.inclk0_input_frequency = 37037, + altpll_component.intended_device_family = "Cyclone III", + altpll_component.lpm_hint = "CBX_MODULE_PREFIX=pll", + altpll_component.lpm_type = "altpll", + altpll_component.operation_mode = "NORMAL", + altpll_component.pll_type = "AUTO", + altpll_component.port_activeclock = "PORT_UNUSED", + altpll_component.port_areset = "PORT_UNUSED", + altpll_component.port_clkbad0 = "PORT_UNUSED", + altpll_component.port_clkbad1 = "PORT_UNUSED", + altpll_component.port_clkloss = "PORT_UNUSED", + altpll_component.port_clkswitch = "PORT_UNUSED", + altpll_component.port_configupdate = "PORT_UNUSED", + altpll_component.port_fbin = "PORT_UNUSED", + altpll_component.port_inclk0 = "PORT_USED", + altpll_component.port_inclk1 = "PORT_UNUSED", + altpll_component.port_locked = "PORT_USED", + altpll_component.port_pfdena = "PORT_UNUSED", + altpll_component.port_phasecounterselect = "PORT_UNUSED", + altpll_component.port_phasedone = "PORT_UNUSED", + altpll_component.port_phasestep = "PORT_UNUSED", + altpll_component.port_phaseupdown = "PORT_UNUSED", + altpll_component.port_pllena = "PORT_UNUSED", + altpll_component.port_scanaclr = "PORT_UNUSED", + altpll_component.port_scanclk = "PORT_UNUSED", + altpll_component.port_scanclkena = "PORT_UNUSED", + altpll_component.port_scandata = "PORT_UNUSED", + altpll_component.port_scandataout = "PORT_UNUSED", + altpll_component.port_scandone = "PORT_UNUSED", + altpll_component.port_scanread = "PORT_UNUSED", + altpll_component.port_scanwrite = "PORT_UNUSED", + altpll_component.port_clk0 = "PORT_USED", + altpll_component.port_clk1 = "PORT_USED", + altpll_component.port_clk2 = "PORT_USED", + altpll_component.port_clk3 = "PORT_USED", + altpll_component.port_clk4 = "PORT_UNUSED", + altpll_component.port_clk5 = "PORT_UNUSED", + altpll_component.port_clkena0 = "PORT_UNUSED", + altpll_component.port_clkena1 = "PORT_UNUSED", + altpll_component.port_clkena2 = "PORT_UNUSED", + altpll_component.port_clkena3 = "PORT_UNUSED", + altpll_component.port_clkena4 = "PORT_UNUSED", + altpll_component.port_clkena5 = "PORT_UNUSED", + altpll_component.port_extclk0 = "PORT_UNUSED", + altpll_component.port_extclk1 = "PORT_UNUSED", + altpll_component.port_extclk2 = "PORT_UNUSED", + altpll_component.port_extclk3 = "PORT_UNUSED", + altpll_component.self_reset_on_loss_lock = "OFF", + altpll_component.width_clock = 5; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: ACTIVECLK_CHECK STRING "0" +// Retrieval info: PRIVATE: BANDWIDTH STRING "1.000" +// Retrieval info: PRIVATE: BANDWIDTH_FEATURE_ENABLED STRING "1" +// Retrieval info: PRIVATE: BANDWIDTH_FREQ_UNIT STRING "MHz" +// Retrieval info: PRIVATE: BANDWIDTH_PRESET STRING "Low" +// Retrieval info: PRIVATE: BANDWIDTH_USE_AUTO STRING "1" +// Retrieval info: PRIVATE: BANDWIDTH_USE_PRESET STRING "0" +// Retrieval info: PRIVATE: CLKBAD_SWITCHOVER_CHECK STRING "0" +// Retrieval info: PRIVATE: CLKLOSS_CHECK STRING "0" +// Retrieval info: PRIVATE: CLKSWITCH_CHECK STRING "0" +// Retrieval info: PRIVATE: CNX_NO_COMPENSATE_RADIO STRING "0" +// Retrieval info: PRIVATE: CREATE_CLKBAD_CHECK STRING "0" +// Retrieval info: PRIVATE: CREATE_INCLK1_CHECK STRING "0" +// Retrieval info: PRIVATE: CUR_DEDICATED_CLK STRING "c0" +// Retrieval info: PRIVATE: CUR_FBIN_CLK STRING "c0" +// Retrieval info: PRIVATE: DEVICE_SPEED_GRADE STRING "8" +// Retrieval info: PRIVATE: DIV_FACTOR0 NUMERIC "27" +// Retrieval info: PRIVATE: DIV_FACTOR1 NUMERIC "27" +// Retrieval info: PRIVATE: DIV_FACTOR2 NUMERIC "9" +// Retrieval info: PRIVATE: DIV_FACTOR3 NUMERIC "9" +// Retrieval info: PRIVATE: DUTY_CYCLE0 STRING "50.00000000" +// Retrieval info: PRIVATE: DUTY_CYCLE1 STRING "50.00000000" +// Retrieval info: PRIVATE: DUTY_CYCLE2 STRING "50.00000000" +// Retrieval info: PRIVATE: DUTY_CYCLE3 STRING "50.00000000" +// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE0 STRING "50.000000" +// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE1 STRING "25.000000" +// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE2 STRING "12.000000" +// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE3 STRING "6.000000" +// Retrieval info: PRIVATE: EXPLICIT_SWITCHOVER_COUNTER STRING "0" +// Retrieval info: PRIVATE: EXT_FEEDBACK_RADIO STRING "0" +// Retrieval info: PRIVATE: GLOCKED_COUNTER_EDIT_CHANGED STRING "1" +// Retrieval info: PRIVATE: GLOCKED_FEATURE_ENABLED STRING "0" +// Retrieval info: PRIVATE: GLOCKED_MODE_CHECK STRING "0" +// Retrieval info: PRIVATE: GLOCK_COUNTER_EDIT NUMERIC "1048575" +// Retrieval info: PRIVATE: HAS_MANUAL_SWITCHOVER STRING "1" +// Retrieval info: PRIVATE: INCLK0_FREQ_EDIT STRING "27.000" +// Retrieval info: PRIVATE: INCLK0_FREQ_UNIT_COMBO STRING "MHz" +// Retrieval info: PRIVATE: INCLK1_FREQ_EDIT STRING "100.000" +// Retrieval info: PRIVATE: INCLK1_FREQ_EDIT_CHANGED STRING "1" +// Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_CHANGED STRING "1" +// Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_COMBO STRING "MHz" +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: PRIVATE: INT_FEEDBACK__MODE_RADIO STRING "1" +// Retrieval info: PRIVATE: LOCKED_OUTPUT_CHECK STRING "1" +// Retrieval info: PRIVATE: LONG_SCAN_RADIO STRING "1" +// Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE STRING "Not Available" +// Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE_DIRTY NUMERIC "0" +// Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT0 STRING "deg" +// Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT1 STRING "deg" +// Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT2 STRING "deg" +// Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT3 STRING "ps" +// Retrieval info: PRIVATE: MIG_DEVICE_SPEED_GRADE STRING "Any" +// Retrieval info: PRIVATE: MIRROR_CLK0 STRING "0" +// Retrieval info: PRIVATE: MIRROR_CLK1 STRING "0" +// Retrieval info: PRIVATE: MIRROR_CLK2 STRING "0" +// Retrieval info: PRIVATE: MIRROR_CLK3 STRING "0" +// Retrieval info: PRIVATE: MULT_FACTOR0 NUMERIC "50" +// Retrieval info: PRIVATE: MULT_FACTOR1 NUMERIC "25" +// Retrieval info: PRIVATE: MULT_FACTOR2 NUMERIC "4" +// Retrieval info: PRIVATE: MULT_FACTOR3 NUMERIC "2" +// Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "1" +// Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "50.00000000" +// Retrieval info: PRIVATE: OUTPUT_FREQ1 STRING "25.00000000" +// Retrieval info: PRIVATE: OUTPUT_FREQ2 STRING "12.00000000" +// Retrieval info: PRIVATE: OUTPUT_FREQ3 STRING "6.00000000" +// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE0 STRING "0" +// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE1 STRING "0" +// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE2 STRING "0" +// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE3 STRING "0" +// Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT0 STRING "MHz" +// Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT1 STRING "MHz" +// Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT2 STRING "MHz" +// Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT3 STRING "MHz" +// Retrieval info: PRIVATE: PHASE_RECONFIG_FEATURE_ENABLED STRING "1" +// Retrieval info: PRIVATE: PHASE_RECONFIG_INPUTS_CHECK STRING "0" +// Retrieval info: PRIVATE: PHASE_SHIFT0 STRING "0.00000000" +// Retrieval info: PRIVATE: PHASE_SHIFT1 STRING "0.00000000" +// Retrieval info: PRIVATE: PHASE_SHIFT2 STRING "0.00000000" +// Retrieval info: PRIVATE: PHASE_SHIFT3 STRING "0.00000000" +// Retrieval info: PRIVATE: PHASE_SHIFT_STEP_ENABLED_CHECK STRING "0" +// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT0 STRING "deg" +// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT1 STRING "deg" +// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT2 STRING "deg" +// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT3 STRING "deg" +// Retrieval info: PRIVATE: PLL_ADVANCED_PARAM_CHECK STRING "0" +// Retrieval info: PRIVATE: PLL_ARESET_CHECK STRING "0" +// Retrieval info: PRIVATE: PLL_AUTOPLL_CHECK NUMERIC "1" +// Retrieval info: PRIVATE: PLL_ENHPLL_CHECK NUMERIC "0" +// Retrieval info: PRIVATE: PLL_FASTPLL_CHECK NUMERIC "0" +// Retrieval info: PRIVATE: PLL_FBMIMIC_CHECK STRING "0" +// Retrieval info: PRIVATE: PLL_LVDS_PLL_CHECK NUMERIC "0" +// Retrieval info: PRIVATE: PLL_PFDENA_CHECK STRING "0" +// Retrieval info: PRIVATE: PLL_TARGET_HARCOPY_CHECK NUMERIC "0" +// Retrieval info: PRIVATE: PRIMARY_CLK_COMBO STRING "inclk0" +// Retrieval info: PRIVATE: RECONFIG_FILE STRING "pll.mif" +// Retrieval info: PRIVATE: SACN_INPUTS_CHECK STRING "0" +// Retrieval info: PRIVATE: SCAN_FEATURE_ENABLED STRING "1" +// Retrieval info: PRIVATE: SELF_RESET_LOCK_LOSS STRING "0" +// Retrieval info: PRIVATE: SHORT_SCAN_RADIO STRING "0" +// Retrieval info: PRIVATE: SPREAD_FEATURE_ENABLED STRING "0" +// Retrieval info: PRIVATE: SPREAD_FREQ STRING "50.000" +// Retrieval info: PRIVATE: SPREAD_FREQ_UNIT STRING "KHz" +// Retrieval info: PRIVATE: SPREAD_PERCENT STRING "0.500" +// Retrieval info: PRIVATE: SPREAD_USE STRING "0" +// Retrieval info: PRIVATE: SRC_SYNCH_COMP_RADIO STRING "0" +// Retrieval info: PRIVATE: STICKY_CLK0 STRING "1" +// Retrieval info: PRIVATE: STICKY_CLK1 STRING "1" +// Retrieval info: PRIVATE: STICKY_CLK2 STRING "1" +// Retrieval info: PRIVATE: STICKY_CLK3 STRING "1" +// Retrieval info: PRIVATE: SWITCHOVER_COUNT_EDIT NUMERIC "1" +// Retrieval info: PRIVATE: SWITCHOVER_FEATURE_ENABLED STRING "1" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: USE_CLK0 STRING "1" +// Retrieval info: PRIVATE: USE_CLK1 STRING "1" +// Retrieval info: PRIVATE: USE_CLK2 STRING "1" +// Retrieval info: PRIVATE: USE_CLK3 STRING "1" +// Retrieval info: PRIVATE: USE_CLKENA0 STRING "0" +// Retrieval info: PRIVATE: USE_CLKENA1 STRING "0" +// Retrieval info: PRIVATE: USE_CLKENA2 STRING "0" +// Retrieval info: PRIVATE: USE_CLKENA3 STRING "0" +// Retrieval info: PRIVATE: USE_MIL_SPEED_GRADE NUMERIC "0" +// Retrieval info: PRIVATE: ZERO_DELAY_RADIO STRING "0" +// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +// Retrieval info: CONSTANT: BANDWIDTH_TYPE STRING "AUTO" +// Retrieval info: CONSTANT: CLK0_DIVIDE_BY NUMERIC "27" +// Retrieval info: CONSTANT: CLK0_DUTY_CYCLE NUMERIC "50" +// Retrieval info: CONSTANT: CLK0_MULTIPLY_BY NUMERIC "50" +// Retrieval info: CONSTANT: CLK0_PHASE_SHIFT STRING "0" +// Retrieval info: CONSTANT: CLK1_DIVIDE_BY NUMERIC "27" +// Retrieval info: CONSTANT: CLK1_DUTY_CYCLE NUMERIC "50" +// Retrieval info: CONSTANT: CLK1_MULTIPLY_BY NUMERIC "25" +// Retrieval info: CONSTANT: CLK1_PHASE_SHIFT STRING "0" +// Retrieval info: CONSTANT: CLK2_DIVIDE_BY NUMERIC "9" +// Retrieval info: CONSTANT: CLK2_DUTY_CYCLE NUMERIC "50" +// Retrieval info: CONSTANT: CLK2_MULTIPLY_BY NUMERIC "4" +// Retrieval info: CONSTANT: CLK2_PHASE_SHIFT STRING "0" +// Retrieval info: CONSTANT: CLK3_DIVIDE_BY NUMERIC "9" +// Retrieval info: CONSTANT: CLK3_DUTY_CYCLE NUMERIC "50" +// Retrieval info: CONSTANT: CLK3_MULTIPLY_BY NUMERIC "2" +// Retrieval info: CONSTANT: CLK3_PHASE_SHIFT STRING "0" +// Retrieval info: CONSTANT: COMPENSATE_CLOCK STRING "CLK0" +// Retrieval info: CONSTANT: INCLK0_INPUT_FREQUENCY NUMERIC "37037" +// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: CONSTANT: LPM_TYPE STRING "altpll" +// Retrieval info: CONSTANT: OPERATION_MODE STRING "NORMAL" +// Retrieval info: CONSTANT: PLL_TYPE STRING "AUTO" +// Retrieval info: CONSTANT: PORT_ACTIVECLOCK STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_ARESET STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CLKBAD0 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CLKBAD1 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CLKLOSS STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CLKSWITCH STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CONFIGUPDATE STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_FBIN STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_INCLK0 STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_INCLK1 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_LOCKED STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_PFDENA STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PHASECOUNTERSELECT STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PHASEDONE STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PHASESTEP STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PHASEUPDOWN STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PLLENA STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANACLR STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANCLK STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANCLKENA STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANDATA STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANDATAOUT STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANDONE STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANREAD STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANWRITE STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clk0 STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_clk1 STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_clk2 STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_clk3 STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_clk4 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clk5 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena0 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena1 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena2 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena3 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena4 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena5 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_extclk0 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_extclk1 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_extclk2 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_extclk3 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: SELF_RESET_ON_LOSS_LOCK STRING "OFF" +// Retrieval info: CONSTANT: WIDTH_CLOCK NUMERIC "5" +// Retrieval info: USED_PORT: @clk 0 0 5 0 OUTPUT_CLK_EXT VCC "@clk[4..0]" +// Retrieval info: USED_PORT: c0 0 0 0 0 OUTPUT_CLK_EXT VCC "c0" +// Retrieval info: USED_PORT: c1 0 0 0 0 OUTPUT_CLK_EXT VCC "c1" +// Retrieval info: USED_PORT: c2 0 0 0 0 OUTPUT_CLK_EXT VCC "c2" +// Retrieval info: USED_PORT: c3 0 0 0 0 OUTPUT_CLK_EXT VCC "c3" +// Retrieval info: USED_PORT: inclk0 0 0 0 0 INPUT_CLK_EXT GND "inclk0" +// Retrieval info: USED_PORT: locked 0 0 0 0 OUTPUT GND "locked" +// Retrieval info: CONNECT: @inclk 0 0 1 1 GND 0 0 0 0 +// Retrieval info: CONNECT: @inclk 0 0 1 0 inclk0 0 0 0 0 +// Retrieval info: CONNECT: c0 0 0 0 0 @clk 0 0 1 0 +// Retrieval info: CONNECT: c1 0 0 0 0 @clk 0 0 1 1 +// Retrieval info: CONNECT: c2 0 0 0 0 @clk 0 0 1 2 +// Retrieval info: CONNECT: c3 0 0 0 0 @clk 0 0 1 3 +// Retrieval info: CONNECT: locked 0 0 0 0 @locked 0 0 0 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL pll.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL pll.ppf TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL pll.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL pll.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL pll.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL pll_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL pll_bb.v FALSE +// Retrieval info: LIB_FILE: altera_mf +// Retrieval info: CBX_MODULE_PREFIX: ON diff --git a/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/pokey.vhd b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/pokey.vhd new file mode 100644 index 00000000..b65b697b --- /dev/null +++ b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/pokey.vhd @@ -0,0 +1,565 @@ + +-- Modified from: + +-- +-- A simulation model of Asteroids Deluxe hardware +-- Copyright (c) MikeJ - May 2004 +-- +-- All rights reserved +-- +-- Redistribution and use in source and synthezised forms, with or without +-- modification, are permitted provided that the following conditions are met: +-- +-- Redistributions of source code must retain the above copyright notice, +-- this list of conditions and the following disclaimer. +-- + +-- Redistributions in synthesized form must reproduce the above copyright +-- notice, this list of conditions and the following disclaimer in the +-- documentation and/or other materials provided with the distribution. +-- +-- Neither the name of the author nor the names of other contributors may +-- be used to endorse or promote products derived from this software without +-- specific prior written permission. +-- +-- THIS CODE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +-- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +-- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +-- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE +-- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +-- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +-- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +-- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +-- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +-- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +-- POSSIBILITY OF SUCH DAMAGE. +-- +-- You are responsible for any legal issues arising from your use of this code. +-- +-- The latest version of this file can be found at: www.fpgaarcade.com +-- +-- Email support@fpgaarcade.com +-- +-- Revision list +-- +-- version 002 return 00 on allpot when fast scan completed to fix self test +-- version 001 initial release (this version should be considered Beta +-- it seems to make all the right sort of sounds however ... ) +-- +library ieee; + use ieee.std_logic_1164.all; + use ieee.std_logic_arith.all; + use ieee.std_logic_unsigned.all; + + +entity pokey is + port ( + ADDR : in std_logic_vector(3 downto 0); + DIN : in std_logic_vector(7 downto 0); + DOUT : out std_logic_vector(7 downto 0); + DOUT_OE_L : out std_logic; + RW_L : in std_logic; + CS : in std_logic; -- used as enable + CS_L : in std_logic; + -- + AUDIO_OUT : out std_logic_vector(7 downto 0); + -- + PIN : in std_logic_vector(7 downto 0); + ENA : in std_logic; + CLK : in std_logic -- note 6 Mhz + ); +end; + +architecture RTL of pokey is + type array_8x8 is array (0 to 7) of std_logic_vector(7 downto 0); + type array_4x8 is array (1 to 4) of std_logic_vector(7 downto 0); + type array_4x4 is array (1 to 4) of std_logic_vector(3 downto 0); + type array_4x9 is array (1 to 4) of std_logic_vector(8 downto 0); + type array_2x17 is array (1 to 2) of std_logic_vector(16 downto 0); + type bool_4 is array (1 to 4) of boolean; + + signal we : std_logic; + signal oe : std_logic; + -- + signal ena_64k_15k : std_logic; + signal cnt_64k : std_logic_vector(4 downto 0) := (others => '0'); + signal ena_64k : std_logic; + signal cnt_15k : std_logic_vector(6 downto 0) := (others => '0'); + signal ena_15k : std_logic; + -- + signal poly4 : std_logic_vector(3 downto 0) := (others => '0'); + signal poly5 : std_logic_vector(4 downto 0) := (others => '0'); + signal poly9 : std_logic_vector(8 downto 0) := (others => '0'); + signal poly17 : std_logic_vector(16 downto 0) := (others => '0'); + signal poly_17_9 : std_logic; + + -- registers + signal audf : array_4x8 := (x"00",x"00",x"00",x"00"); + signal audc : array_4x8 := (x"00",x"00",x"00",x"00"); + signal audctl : std_logic_vector(7 downto 0) := "00000000"; + signal stimer : std_logic_vector(7 downto 0); + signal skres : std_logic_vector(7 downto 0); + signal potgo : std_logic; + signal serout : std_logic_vector(7 downto 0); + signal irqen : std_logic_vector(7 downto 0); + signal skctls : std_logic_vector(7 downto 0); + signal reset : std_logic; + -- + signal kbcode : std_logic_vector(7 downto 0); + signal random : std_logic_vector(7 downto 0); + signal serin : std_logic_vector(7 downto 0); + signal irqst : std_logic_vector(7 downto 0); + signal skstat : std_logic_vector(7 downto 0); + -- + signal pot_fin : std_logic; + signal pot_cnt : std_logic_vector(7 downto 0); + signal pot_val : array_8x8; + signal pin_reg : std_logic_vector(7 downto 0); + signal pin_reg_gated : std_logic_vector(7 downto 0); + -- + signal chan_ena : std_logic_vector(4 downto 1); + signal tone_gen_div : std_logic_vector(4 downto 1); + signal tone_gen_cnt : array_4x8 := (others => (others => '0')); + signal tone_gen_div_mux : std_logic_vector(4 downto 1); + signal tone_gen_zero : std_logic_vector(4 downto 1); + signal tone_gen_zero_t : array_4x8 := (others => (others => '0')); + signal chan_done_load : std_logic_vector(4 downto 1) := (others => '0'); + -- + signal poly_sel : std_logic_vector(4 downto 1); + signal poly_sel_hp : std_logic_vector(4 downto 1); + signal poly_sel_hp_t1 : std_logic_vector(4 downto 1); + signal poly_sel_hp_reg : std_logic_vector(4 downto 1); + signal tone_gen_final : std_logic_vector(4 downto 1) := (others => '0'); +begin + + p_we : process(RW_L, CS_L, CS, ENA) + begin + we <= (not CS_L) and CS and (not RW_L) and ENA; + end process; + + p_oe : process(RW_L, CS_L, CS) + begin + oe <= (not CS_L) and CS and RW_L; + end process; + DOUT_OE_L <= not oe; + + p_ipreg : process + begin + wait until rising_edge(CLK); + -- in asteroids, these are dip switches + pin_reg <= PIN; + end process; + + p_dividers : process + begin + wait until rising_edge(CLK); + if (ENA = '1') then + ena_64k <= '0'; + if cnt_64k = "00000" then + cnt_64k <= "11011"; -- 28 - 1 + ena_64k <= '1'; + else + cnt_64k <= cnt_64k - "1"; + end if; + + ena_15k <= '0'; + if cnt_15k = "0000000" then + cnt_15k <= "1110001"; -- 114 - 1 + ena_15k <= '1'; + else + cnt_15k <= cnt_15k - "1"; + end if; + end if; + end process; + + p_ena_64k_15k : process(ena_64k, ena_15k, audctl) + begin + if (audctl(0) = '1') then + ena_64k_15k <= ena_15k; + else + ena_64k_15k <= ena_64k; + end if; + end process; + + p_poly : process + variable poly9_zero : std_logic; + variable poly17_zero : std_logic; + begin + wait until rising_edge(CLK); + if (ENA = '1') then + poly4 <= poly4(2 downto 0) & not (poly4(3) xor poly4(2)); + poly5 <= poly5(3 downto 0) & not (poly5(4) xor poly4(2)); -- used inverted + + -- not correct + poly9_zero := '0'; + if (poly9 = "000000000") then poly9_zero := '1'; end if; + poly9 <= poly9(7 downto 0) & (poly9(8) xor poly9(3) xor poly9_zero); + + poly17_zero := '0'; + if (poly17 = "00000000000000000") then poly17_zero := '1'; end if; + poly17 <= poly17(15 downto 0) & (poly17(16) xor poly17(2) xor poly17_zero); + + end if; + end process; + + p_random_mux : process(audctl, poly9, poly17) + begin + -- bit unnecessary this .... + for i in 0 to 7 loop + if (audctl(7) = '1') then -- 9 bit poly + random(i) <= poly9(8-i); + else + random(i) <= poly17(16-i); + end if; + end loop; + + if (audctl(7) = '1') then + poly_17_9 <= poly9(8); + else + poly_17_9 <= poly17(16); + end if; + end process; + + p_wdata : process + begin + wait until rising_edge(CLK); + potgo <= '0'; + + --if (reset = '1') then + -- no idea what the reset state is + --audf <= (others => (others => '0')); + --audc <= (others => (others => '0')); + --audctl <= x"00"; + --else + if (we = '1') then + case ADDR is + when x"0" => audf(1) <= DIN; + when x"1" => audc(1) <= DIN; + when x"2" => audf(2) <= DIN; + when x"3" => audc(2) <= DIN; + when x"4" => audf(3) <= DIN; + when x"5" => audc(3) <= DIN; + when x"6" => audf(4) <= DIN; + when x"7" => audc(4) <= DIN; + when x"8" => audctl <= DIN; + when x"9" => stimer <= DIN; + when x"A" => skres <= DIN; + when x"B" => potgo <= '1'; + --when x"C" => + when x"D" => serout <= DIN; + when x"E" => irqen <= DIN; + when x"F" => skctls <= DIN; + when others => null; + end case; + end if; + --end if; + end process; + + p_reset : process(skctls) + begin + -- chip in reset if bits 1..0 of skctls are both zero + reset <= '0'; + if (skctls(1 downto 0) = "00") then + reset <= '1'; + end if; + end process; + + p_rdata : process(oe, ADDR, pot_val, pin_reg_gated, kbcode, random, serin, irqst, skstat) + begin + DOUT <= x"00"; + if (oe = '1') then -- keep things quiet + case ADDR IS + when x"0" => DOUT <= pot_val(0); -- pot 0 + when x"1" => DOUT <= pot_val(1); -- pot 1 + when x"2" => DOUT <= pot_val(2); -- pot 2 + when x"3" => DOUT <= pot_val(3); -- pot 3 + when x"4" => DOUT <= pot_val(4); -- pot 4 + when x"5" => DOUT <= pot_val(5); -- pot 5 + when x"6" => DOUT <= pot_val(6); -- pot 6 + when x"7" => DOUT <= pot_val(7); -- pot 7 + when x"8" => DOUT <= pin_reg_gated;-- allpot + when x"9" => DOUT <= kbcode; + when x"A" => DOUT <= random; + when x"B" => DOUT <= x"FF"; + when x"C" => DOUT <= x"FF"; + when x"D" => DOUT <= serin; + when x"E" => DOUT <= irqst; + when x"F" => DOUT <= skstat; + when others => null; + end case; + end if; + end process; + + -- POT ANALOGUE IN UNTESTED !! + p_pot_cnt : process + begin + wait until rising_edge(CLK); + if (potgo = '1') then + pot_cnt <= x"00"; + elsif ((ena_15k = '1') or (skctls(2) = '1')) and (ENA = '1') then -- fast scan mode + pot_cnt <= pot_cnt + "1"; + end if; + end process; + + p_pot_comp : process + begin + wait until rising_edge(CLK); + if (reset = '1') then + pot_fin <= '1'; + else + if (potgo = '1') then + pot_fin <= '0'; + elsif (pot_cnt = x"E4") then -- 228 + pot_fin <= '1'; + end if; + end if; + end process; + + p_pot_val : process + begin + wait until rising_edge(CLK); + for i in 0 to 7 loop + if (pot_fin = '0') and (pin_reg(i) = '0') then + -- continue latching counter value until input reaches ViH threshold + pot_val(i) <= pot_cnt; + end if; + end loop; + end process; + + -- dump transistors + --PIN <= x"00" when (pot_fin = '1') else (others => 'Z'); + p_in_gate : process(pin_reg, reset) -- dump transistor fakeup + begin + pin_reg_gated <= pin_reg; + -- I think the datasheet lies about dump transistors being disabled + -- in fast scan mode, as the self test fails .... + if (reset = '1') or (pot_fin = '1') then --and (skctls(2) = '0')) + pin_reg_gated <= x"00"; + end if; + end process; + + p_tone_cnt_ena : process(audctl, ena_64k_15k, tone_gen_div) + variable chan_ena1, chan_ena3 : std_ulogic; + begin + + if (audctl(6) = '1') then + chan_ena1 := '1'; -- 1.5 MHz, + else + chan_ena1 := ena_64k_15k; + end if; + chan_ena(1) <= chan_ena1; + + if (audctl(4) = '1') then -- chan 1/2 joined + chan_ena(2) <= chan_ena1; + else + chan_ena(2) <= ena_64k_15k; + end if; + + if (audctl(5) = '1') then + chan_ena3 := '1'; -- 1.5 MHz, + else + chan_ena3 := ena_64k_15k; -- 64 KHz + end if; + chan_ena(3) <= chan_ena3; + + if (audctl(3) = '1') then -- chan 3/4 joined + chan_ena(4) <= chan_ena3; + else + chan_ena(4) <= ena_64k_15k; -- 64 KHz + end if; + end process; + + p_tone_generator_zero : process(tone_gen_cnt, chan_ena) + begin + for i in 1 to 4 loop + if (tone_gen_cnt(i) = "00000000") and (chan_ena(i) = '1') then + tone_gen_zero(i) <= '1'; + else + tone_gen_zero(i) <= '0'; + end if; + end loop; + end process; + + p_tone_generators : process + variable chan_load : std_logic_vector(4 downto 1); + variable chan_dec : std_logic_vector(4 downto 1); + begin + -- quite tricky this .. but I think it does the correct stuff + -- bet this is not how is was done originally ! + -- + -- nasty frig to easily get exact chip behaviour in high speed mode + -- fout = fin / 2(audf + n) when n=4 or 7 in 16 bit mode + wait until rising_edge(CLK); + if (ENA = '1') then + tone_gen_div <= "0000"; + + if (audctl(4) = '1') then -- chan 1/2 joined + chan_load(1) := '0'; + chan_load(2) := '0'; + if (tone_gen_zero_t(1)(5) = '1') and (tone_gen_zero_t(2)(5) = '1') and (chan_done_load(1) = '0') then + chan_load(1) := '1'; + chan_load(2) := '1'; + end if; + chan_dec(1) := '1'; + chan_dec(2) := tone_gen_zero(1); + else + chan_load(1) := tone_gen_zero_t(1)(2) and not chan_done_load(1); + chan_load(2) := tone_gen_zero_t(2)(2) and not chan_done_load(2); + + chan_dec(1) := '1'; + chan_dec(2) := '1'; + end if; + + if (audctl(3) = '1') then -- chan 1/2 joined + chan_load(3) := '0'; + chan_load(4) := '0'; + if (tone_gen_zero_t(3)(5) = '1') and (tone_gen_zero_t(4)(5) = '1') and (chan_done_load(3) = '0') then + chan_load(3) := '1'; + chan_load(4) := '1'; + end if; + chan_dec(3) := '1'; + chan_dec(4) := tone_gen_zero(3); + else + chan_load(3) := tone_gen_zero_t(3)(2) and not chan_done_load(3); + chan_load(4) := tone_gen_zero_t(4)(2) and not chan_done_load(4); + + chan_dec(3) := '1'; + chan_dec(4) := '1'; + end if; + + for i in 1 to 4 loop + + if (chan_load(i) = '1') then + chan_done_load(i) <= '1'; + tone_gen_div(i) <= '1'; + tone_gen_cnt(i) <= audf(i); + elsif (chan_dec(i) = '1') and (chan_ena(i) = '1') then + chan_done_load(i) <= '0'; + tone_gen_cnt(i) <= tone_gen_cnt(i) - "1"; + end if; + + tone_gen_div(i) <= chan_load(i); + tone_gen_zero_t(i)(7 downto 0) <= tone_gen_zero_t(i)(6 downto 0) & tone_gen_zero(i); + end loop; + + end if; + end process; + + p_tone_generator_mux : process(audctl, tone_gen_div) + begin + if (audctl(4) = '1') then -- chan 1/2 joined + tone_gen_div_mux(1) <= tone_gen_div(1); -- do they both waggle + tone_gen_div_mux(2) <= tone_gen_div(2); -- or do I mute chan 1? + else + tone_gen_div_mux(1) <= tone_gen_div(1); + tone_gen_div_mux(2) <= tone_gen_div(2); + end if; + + if (audctl(3) = '1') then -- chan 3/4 joined + tone_gen_div_mux(3) <= tone_gen_div(3); -- ditto + tone_gen_div_mux(4) <= tone_gen_div(4); + else + tone_gen_div_mux(3) <= tone_gen_div(3); + tone_gen_div_mux(4) <= tone_gen_div(4); + end if; + end process; + + p_poly_gating : process(audc, poly4, poly5, poly_17_9, tone_gen_div_mux) + variable filter_a : std_logic_vector(4 downto 1); + variable filter_b : std_logic_vector(4 downto 1); + begin + for i in 1 to 4 loop + if (audc(i)(7) = '0') then + filter_a(i) := poly5(4) and tone_gen_div_mux(i);-- 5 bit poly + else + filter_a(i) := tone_gen_div_mux(i); + end if; + + if (audc(i)(6) = '0') then + filter_b(i) := poly_17_9 and filter_a(i);-- 17 bit poly + else + filter_b(i) := poly4(3) and filter_a(i);-- 4 bit poly + end if; + + if (audc(i)(5) = '0') then + poly_sel(i) <= filter_b(i); + else + poly_sel(i) <= filter_a(i); + end if; + end loop; + end process; + + p_high_pass_filters : process(audctl, poly_sel, poly_sel_hp_reg) + begin + poly_sel_hp <= poly_sel; + + if (audctl(2) = '1') then + poly_sel_hp(1) <= poly_sel(1) xor poly_sel_hp_reg(1); + end if; + + if (audctl(1) = '1') then + poly_sel_hp(2) <= poly_sel(2) xor poly_sel_hp_reg(2); + end if; + end process; + + p_audio_out : process + begin + wait until rising_edge(CLK); + if (ENA = '1') then + for i in 1 to 4 loop + -- filter reg + if (tone_gen_div(3) = '1') then -- tone gen 1 clocked by gen 3 + poly_sel_hp_reg(1) <= poly_sel(1); + end if; + + if (tone_gen_div(4) = '1') then -- tone gen 2 clocked by gen 4 + poly_sel_hp_reg(2) <= poly_sel(2); + end if; + + poly_sel_hp_t1 <= poly_sel_hp; + + if (poly_sel_hp(i) = '1') and (poly_sel_hp_t1(i) = '0') then -- rising edge + tone_gen_final(i) <= not tone_gen_final(i); + end if; + end loop; + end if; + end process; + + p_op_mixer : process + variable vol : array_4x4; + variable sum12 : std_logic_vector(4 downto 0); + variable sum34 : std_logic_vector(4 downto 0); + variable sum : std_logic_vector(5 downto 0); + begin + wait until rising_edge(CLK); + if (ENA = '1') then + for i in 1 to 4 loop + if (audc(i)(4) = '1') then -- vol only + vol(i) := audc(i)(3 downto 0); + else + if (tone_gen_final(i) = '1') then + vol(i) := audc(i)(3 downto 0); + else + vol(i) := "0000"; + end if; + end if; + end loop; + + sum12 := ('0' & vol(1)) + ('0' & vol(2)); + sum34 := ('0' & vol(3)) + ('0' & vol(4)); + sum := ('0' & sum12) + ('0' & sum34); + + if (reset = '1') then + AUDIO_OUT <= "00000000"; + else + if (sum(5) = '0') then + AUDIO_OUT <= sum(4 downto 0) & "000"; + else -- clip + AUDIO_OUT <= "11111111"; + end if; + end if; + end if; + end process; + + -- keyboard / serial etc to do +end architecture RTL; diff --git a/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/roms/bwidow_pgm_rom1.vhd b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/roms/bwidow_pgm_rom1.vhd new file mode 100644 index 00000000..2070e01e --- /dev/null +++ b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/roms/bwidow_pgm_rom1.vhd @@ -0,0 +1,278 @@ +library ieee; +use ieee.std_logic_1164.all,ieee.numeric_std.all; + +entity bwidow_pgm_rom1 is +port ( + clk : in std_logic; + addr : in std_logic_vector(11 downto 0); + data : out std_logic_vector(7 downto 0) +); +end entity; + +architecture prom of bwidow_pgm_rom1 is + type rom is array(0 to 4095) of std_logic_vector(7 downto 0); + signal rom_data: rom := ( + X"43",X"4F",X"50",X"59",X"52",X"49",X"47",X"48",X"54",X"20",X"28",X"43",X"29",X"20",X"41",X"54", + X"41",X"52",X"49",X"20",X"31",X"39",X"38",X"32",X"A9",X"55",X"85",X"00",X"A9",X"00",X"8D",X"0F", + X"60",X"8D",X"0F",X"68",X"A9",X"07",X"8D",X"0F",X"60",X"8D",X"0F",X"68",X"D8",X"8D",X"80",X"88", + X"A9",X"38",X"8D",X"00",X"88",X"A9",X"00",X"85",X"01",X"85",X"02",X"A0",X"03",X"A9",X"00",X"91", + X"01",X"C8",X"D0",X"F9",X"E6",X"02",X"A5",X"02",X"49",X"08",X"D0",X"F1",X"20",X"4E",X"E7",X"A9", + X"01",X"85",X"FE",X"85",X"FF",X"A9",X"80",X"85",X"EF",X"A2",X"1F",X"8A",X"BD",X"B5",X"A5",X"9D", + X"00",X"01",X"CA",X"10",X"F6",X"A9",X"C8",X"8D",X"00",X"88",X"85",X"99",X"A9",X"0A",X"85",X"4E", + X"A2",X"00",X"A9",X"01",X"85",X"1B",X"85",X"1D",X"A9",X"50",X"85",X"1C",X"85",X"1E",X"A9",X"00", + X"9D",X"D7",X"03",X"A5",X"1D",X"9D",X"D5",X"03",X"A5",X"1E",X"9D",X"D6",X"03",X"18",X"F8",X"65", + X"1C",X"85",X"1E",X"A5",X"1D",X"65",X"1B",X"85",X"1D",X"D8",X"E8",X"E8",X"E8",X"E0",X"4B",X"90", + X"DD",X"8D",X"0B",X"68",X"AD",X"08",X"68",X"29",X"03",X"AA",X"BD",X"25",X"9C",X"29",X"FC",X"8D", + X"2B",X"06",X"A9",X"01",X"8D",X"01",X"02",X"20",X"95",X"9F",X"8D",X"80",X"89",X"20",X"0E",X"BE", + X"20",X"9C",X"9D",X"20",X"54",X"99",X"A9",X"F6",X"8D",X"D0",X"03",X"58",X"A9",X"00",X"8D",X"2D", + X"01",X"20",X"A9",X"D6",X"AD",X"2E",X"01",X"D0",X"FB",X"A9",X"00",X"8D",X"2A",X"01",X"A9",X"AA", + X"85",X"00",X"8D",X"80",X"89",X"24",X"EF",X"10",X"2A",X"AD",X"20",X"04",X"C9",X"05",X"F0",X"23", + X"AD",X"22",X"04",X"D0",X"1E",X"20",X"DC",X"B7",X"AE",X"23",X"04",X"BD",X"80",X"91",X"D0",X"05", + X"A2",X"00",X"4C",X"FB",X"90",X"8D",X"22",X"04",X"BD",X"81",X"91",X"8D",X"21",X"04",X"E8",X"E8", + X"8E",X"23",X"04",X"AD",X"21",X"04",X"F0",X"4C",X"CD",X"20",X"04",X"D0",X"08",X"A9",X"00",X"8D", + X"21",X"04",X"4C",X"64",X"91",X"20",X"29",X"9C",X"AD",X"21",X"04",X"8D",X"20",X"04",X"0A",X"AA", + X"20",X"3B",X"91",X"A9",X"00",X"8D",X"21",X"04",X"4C",X"64",X"91",X"BD",X"43",X"91",X"48",X"BD", + X"42",X"91",X"48",X"60",X"51",X"91",X"E0",X"91",X"95",X"92",X"AE",X"92",X"22",X"94",X"86",X"91", + X"D6",X"9C",X"24",X"EF",X"10",X"0B",X"A9",X"00",X"85",X"79",X"8D",X"D3",X"03",X"85",X"F7",X"85", + X"73",X"4C",X"9C",X"9D",X"AD",X"20",X"04",X"0A",X"AA",X"BD",X"71",X"91",X"48",X"BD",X"70",X"91", + X"48",X"60",X"52",X"98",X"8F",X"92",X"EA",X"92",X"F0",X"92",X"25",X"96",X"D8",X"91",X"F2",X"9C", + X"24",X"01",X"0A",X"02",X"0A",X"03",X"00",X"24",X"EF",X"30",X"41",X"AD",X"C8",X"04",X"F0",X"3C", + X"20",X"AA",X"9C",X"A2",X"02",X"20",X"B7",X"DC",X"AD",X"C9",X"04",X"18",X"69",X"01",X"20",X"AF", + X"D7",X"20",X"C9",X"D8",X"A9",X"00",X"A0",X"00",X"20",X"EF",X"D7",X"A9",X"B0",X"A2",X"50",X"20", + X"1D",X"D8",X"A9",X"50",X"A2",X"B0",X"20",X"1D",X"D8",X"20",X"A2",X"D7",X"A9",X"03",X"8D",X"22", + X"04",X"A9",X"00",X"8D",X"20",X"01",X"8D",X"40",X"88",X"85",X"81",X"60",X"68",X"68",X"A9",X"01", + X"8D",X"21",X"04",X"8D",X"D4",X"03",X"4C",X"13",X"91",X"AD",X"22",X"04",X"F0",X"F0",X"4C",X"2C", + X"96",X"A9",X"00",X"85",X"11",X"A9",X"20",X"85",X"12",X"20",X"C9",X"D8",X"A0",X"00",X"A9",X"01", + X"20",X"12",X"D8",X"A9",X"B0",X"A2",X"18",X"20",X"1D",X"D8",X"A0",X"00",X"A9",X"00",X"20",X"12", + X"D8",X"A9",X"00",X"A0",X"E4",X"20",X"EF",X"D7",X"A9",X"A2",X"AA",X"A9",X"2F",X"20",X"E3",X"D7", + X"20",X"C9",X"D8",X"A0",X"00",X"A9",X"01",X"20",X"12",X"D8",X"A9",X"A4",X"A2",X"E0",X"20",X"1D", + X"D8",X"A0",X"20",X"A9",X"00",X"20",X"12",X"D8",X"A9",X"00",X"A0",X"E4",X"20",X"EF",X"D7",X"A9", + X"44",X"AA",X"A9",X"30",X"20",X"E3",X"D7",X"A0",X"00",X"A9",X"01",X"20",X"12",X"D8",X"20",X"C9", + X"D8",X"A2",X"2A",X"20",X"B7",X"DC",X"AD",X"2E",X"06",X"29",X"03",X"AA",X"BD",X"88",X"92",X"AA", + X"20",X"B7",X"DC",X"AD",X"45",X"04",X"F0",X"22",X"A2",X"30",X"20",X"B7",X"DC",X"AD",X"2F",X"06", + X"4A",X"4A",X"4A",X"4A",X"4A",X"4A",X"18",X"69",X"02",X"20",X"AF",X"D7",X"A9",X"04",X"85",X"1E", + X"A9",X"00",X"18",X"20",X"AF",X"D7",X"C6",X"1E",X"D0",X"F6",X"20",X"A6",X"D7",X"A9",X"00",X"85", + X"81",X"8D",X"20",X"01",X"8D",X"40",X"88",X"60",X"26",X"28",X"22",X"24",X"02",X"03",X"00",X"01", + X"20",X"9C",X"96",X"4C",X"2C",X"96",X"A9",X"00",X"85",X"11",X"A9",X"20",X"85",X"12",X"20",X"7F", + X"CB",X"20",X"A6",X"D7",X"A9",X"00",X"8D",X"20",X"01",X"8D",X"40",X"88",X"85",X"81",X"60",X"A9", + X"00",X"85",X"11",X"85",X"A5",X"A9",X"0F",X"85",X"A8",X"A9",X"20",X"85",X"12",X"20",X"7F",X"CB", + X"A2",X"0A",X"20",X"B7",X"DC",X"A2",X"0C",X"20",X"B7",X"DC",X"A2",X"0E",X"20",X"B7",X"DC",X"20", + X"A6",X"D7",X"A9",X"FF",X"85",X"72",X"A9",X"00",X"85",X"71",X"8D",X"20",X"01",X"8D",X"40",X"88", + X"85",X"81",X"8D",X"01",X"03",X"A9",X"3C",X"8D",X"22",X"04",X"60",X"20",X"9C",X"96",X"4C",X"2C", + X"96",X"AD",X"22",X"04",X"D0",X"03",X"4C",X"D1",X"93",X"A9",X"1E",X"8D",X"24",X"04",X"E6",X"6F", + X"A5",X"72",X"10",X"12",X"AD",X"00",X"88",X"29",X"0F",X"49",X"0F",X"F0",X"03",X"4C",X"2C",X"96", + X"85",X"A8",X"A9",X"01",X"85",X"72",X"A5",X"6F",X"29",X"03",X"D0",X"11",X"A0",X"00",X"AD",X"0A", + X"60",X"29",X"03",X"AA",X"BD",X"F2",X"CD",X"91",X"A3",X"A0",X"14",X"91",X"A3",X"AD",X"00",X"80", + X"29",X"0F",X"C9",X"0F",X"F0",X"36",X"A8",X"C6",X"71",X"10",X"31",X"A9",X"05",X"85",X"71",X"98", + X"29",X"0C",X"C9",X"0C",X"F0",X"15",X"EE",X"01",X"03",X"29",X"08",X"D0",X"06",X"CE",X"01",X"03", + X"CE",X"01",X"03",X"AD",X"01",X"03",X"29",X"03",X"8D",X"01",X"03",X"98",X"29",X"03",X"C9",X"03", + X"F0",X"0A",X"E6",X"72",X"29",X"01",X"F0",X"04",X"C6",X"72",X"C6",X"72",X"A5",X"72",X"29",X"1F", + X"85",X"72",X"F0",X"03",X"0A",X"69",X"14",X"AA",X"AC",X"01",X"03",X"B9",X"F2",X"CD",X"48",X"A5", + X"A5",X"0A",X"0A",X"18",X"69",X"08",X"A8",X"68",X"91",X"A3",X"C8",X"C8",X"BD",X"C4",X"5D",X"91", + X"A3",X"20",X"0C",X"94",X"B0",X"03",X"4C",X"2C",X"96",X"A5",X"72",X"C9",X"1F",X"D0",X"13",X"A5", + X"A5",X"F0",X"F3",X"0A",X"0A",X"69",X"08",X"A8",X"AD",X"C4",X"5D",X"91",X"A3",X"C6",X"A5",X"4C", + X"2C",X"96",X"A5",X"A5",X"18",X"65",X"A9",X"AA",X"AD",X"01",X"03",X"0A",X"0A",X"0A",X"0A",X"0A", + X"0A",X"05",X"72",X"9D",X"10",X"03",X"E6",X"A5",X"A5",X"A5",X"C9",X"03",X"F0",X"03",X"4C",X"2C", + X"96",X"A5",X"F6",X"C9",X"03",X"F0",X"03",X"20",X"8F",X"D6",X"A9",X"1E",X"8D",X"24",X"04",X"AD", + X"C8",X"04",X"F0",X"0B",X"AD",X"C9",X"04",X"D0",X"06",X"8D",X"20",X"04",X"4C",X"EB",X"9B",X"A9", + X"00",X"8D",X"22",X"04",X"8D",X"23",X"04",X"8D",X"2C",X"06",X"A9",X"80",X"8D",X"20",X"04",X"85", + X"EF",X"A9",X"01",X"8D",X"21",X"04",X"20",X"DC",X"B7",X"4C",X"13",X"91",X"AD",X"00",X"88",X"29", + X"0F",X"49",X"0F",X"F0",X"04",X"85",X"A8",X"18",X"60",X"A5",X"A8",X"F0",X"FA",X"A9",X"00",X"85", + X"A8",X"38",X"60",X"A9",X"02",X"85",X"11",X"A9",X"20",X"85",X"12",X"E6",X"6F",X"A5",X"6F",X"4A", + X"90",X"04",X"A9",X"24",X"85",X"12",X"20",X"C9",X"D8",X"A0",X"00",X"A9",X"01",X"20",X"12",X"D8", + X"20",X"C9",X"D8",X"AD",X"2E",X"01",X"0D",X"2B",X"01",X"D0",X"44",X"A2",X"46",X"20",X"B7",X"DC", + X"A2",X"00",X"AD",X"2C",X"06",X"8E",X"2C",X"06",X"29",X"20",X"F0",X"21",X"AD",X"00",X"88",X"49", + X"0F",X"29",X"0F",X"F0",X"0D",X"AD",X"01",X"03",X"29",X"03",X"0A",X"AA",X"20",X"EE",X"95",X"4C", + X"99",X"94",X"EE",X"01",X"03",X"AD",X"01",X"03",X"29",X"03",X"8D",X"01",X"03",X"AD",X"01",X"03", + X"AA",X"BD",X"8B",X"94",X"AA",X"20",X"B7",X"DC",X"4C",X"99",X"94",X"48",X"4A",X"4C",X"4E",X"A2", + X"50",X"20",X"B7",X"DC",X"A9",X"00",X"8D",X"2C",X"06",X"A2",X"44",X"20",X"B7",X"DC",X"A5",X"7A", + X"85",X"65",X"A5",X"7B",X"85",X"66",X"A9",X"00",X"85",X"63",X"20",X"4B",X"96",X"20",X"82",X"96", + X"AD",X"2E",X"06",X"29",X"03",X"AA",X"BD",X"88",X"92",X"AA",X"20",X"B7",X"DC",X"AD",X"45",X"04", + X"F0",X"22",X"A2",X"30",X"20",X"B7",X"DC",X"AD",X"2F",X"06",X"4A",X"4A",X"4A",X"4A",X"4A",X"4A", + X"18",X"69",X"02",X"20",X"AF",X"D7",X"A9",X"04",X"85",X"1E",X"A9",X"00",X"18",X"20",X"AF",X"D7", + X"C6",X"1E",X"D0",X"F6",X"A2",X"36",X"20",X"B7",X"DC",X"AD",X"2F",X"06",X"29",X"0C",X"4A",X"4A", + X"69",X"03",X"20",X"AF",X"D7",X"A2",X"3A",X"20",X"B7",X"DC",X"AD",X"2F",X"06",X"29",X"03",X"AA", + X"BD",X"25",X"9C",X"20",X"A1",X"DC",X"48",X"4A",X"4A",X"4A",X"4A",X"20",X"AF",X"D7",X"68",X"29", + X"0F",X"20",X"AF",X"D7",X"A2",X"52",X"20",X"B7",X"DC",X"AD",X"2E",X"06",X"29",X"E0",X"4A",X"4A", + X"4A",X"4A",X"4A",X"20",X"AF",X"D7",X"A2",X"54",X"20",X"B7",X"DC",X"AD",X"2E",X"06",X"29",X"10", + X"4A",X"4A",X"4A",X"4A",X"18",X"69",X"01",X"20",X"AF",X"D7",X"A2",X"56",X"20",X"B7",X"DC",X"AD", + X"2E",X"06",X"4A",X"4A",X"29",X"03",X"18",X"69",X"01",X"C9",X"01",X"F0",X"03",X"18",X"69",X"02", + X"20",X"AF",X"D7",X"A5",X"7A",X"05",X"7B",X"D0",X"03",X"4C",X"A5",X"95",X"A2",X"38",X"20",X"B7", + X"DC",X"A5",X"7C",X"85",X"1B",X"A5",X"7D",X"85",X"1C",X"A5",X"7E",X"85",X"1D",X"A9",X"00",X"85", + X"65",X"85",X"66",X"E6",X"65",X"D0",X"02",X"E6",X"66",X"A5",X"1B",X"38",X"E5",X"7A",X"85",X"1B", + X"A5",X"1C",X"E5",X"7B",X"85",X"1C",X"A5",X"1D",X"E9",X"00",X"85",X"1D",X"10",X"E5",X"A9",X"00", + X"85",X"63",X"20",X"4B",X"96",X"A0",X"00",X"A5",X"1C",X"20",X"3F",X"CC",X"A5",X"1B",X"20",X"43", + X"CC",X"88",X"20",X"05",X"D8",X"AD",X"2F",X"06",X"29",X"30",X"4A",X"4A",X"4A",X"4A",X"AA",X"BD", + X"22",X"96",X"AA",X"20",X"B7",X"DC",X"AD",X"00",X"78",X"29",X"40",X"F0",X"F9",X"20",X"29",X"9C", + X"A9",X"02",X"85",X"1B",X"A9",X"20",X"85",X"1C",X"A5",X"6F",X"4A",X"90",X"04",X"A9",X"24",X"85", + X"1C",X"20",X"A6",X"D7",X"A9",X"00",X"85",X"11",X"A9",X"20",X"85",X"12",X"A6",X"1B",X"A5",X"1C", + X"20",X"CF",X"D7",X"A9",X"00",X"8D",X"40",X"88",X"8D",X"20",X"01",X"85",X"81",X"60",X"BD",X"F8", + X"95",X"48",X"BD",X"F7",X"95",X"48",X"60",X"75",X"E7",X"FE",X"95",X"08",X"96",X"1A",X"96",X"20", + X"F6",X"CD",X"20",X"88",X"9F",X"20",X"8F",X"D6",X"60",X"78",X"A9",X"00",X"85",X"7C",X"85",X"7D", + X"85",X"7E",X"85",X"7A",X"85",X"7B",X"58",X"20",X"93",X"D6",X"60",X"20",X"FF",X"95",X"20",X"09", + X"96",X"60",X"3E",X"40",X"42",X"3C",X"20",X"9C",X"96",X"20",X"23",X"94",X"AD",X"20",X"01",X"D0", + X"11",X"AD",X"00",X"78",X"29",X"40",X"D0",X"0D",X"A9",X"00",X"85",X"00",X"A9",X"AA",X"C5",X"00", + X"D0",X"FA",X"4C",X"E2",X"90",X"8D",X"40",X"88",X"4C",X"E2",X"90",X"A9",X"00",X"85",X"1B",X"85", + X"1C",X"85",X"1D",X"85",X"1E",X"A0",X"18",X"18",X"F8",X"A5",X"1B",X"65",X"1B",X"85",X"1B",X"A5", + X"1C",X"65",X"1C",X"85",X"1C",X"A5",X"1D",X"65",X"1D",X"85",X"1D",X"A5",X"1E",X"65",X"1E",X"85", + X"1E",X"D8",X"06",X"65",X"26",X"66",X"26",X"63",X"A5",X"1B",X"69",X"00",X"85",X"1B",X"88",X"D0", + X"D6",X"60",X"A0",X"00",X"A5",X"1E",X"20",X"3F",X"CC",X"A5",X"1D",X"20",X"43",X"CC",X"A5",X"1C", + X"20",X"43",X"CC",X"A5",X"1B",X"20",X"43",X"CC",X"88",X"4C",X"05",X"D8",X"24",X"EF",X"10",X"3F", + X"AD",X"00",X"78",X"29",X"10",X"F0",X"20",X"AD",X"20",X"04",X"C9",X"05",X"D0",X"31",X"A9",X"00", + X"8D",X"23",X"04",X"8D",X"22",X"04",X"8D",X"80",X"88",X"8D",X"20",X"01",X"85",X"8D",X"85",X"95", + X"A9",X"01",X"8D",X"21",X"04",X"18",X"60",X"A9",X"05",X"8D",X"21",X"04",X"8D",X"0B",X"68",X"AD", + X"08",X"68",X"29",X"03",X"AA",X"BD",X"25",X"9C",X"29",X"FC",X"8D",X"2B",X"06",X"18",X"60",X"AD", + X"2F",X"06",X"29",X"C0",X"4A",X"4A",X"4A",X"4A",X"4A",X"4A",X"18",X"69",X"02",X"C9",X"05",X"D0", + X"02",X"A9",X"00",X"8D",X"45",X"04",X"AD",X"2E",X"06",X"29",X"03",X"AA",X"4D",X"2E",X"06",X"1D", + X"8C",X"92",X"85",X"8C",X"29",X"03",X"D0",X"0E",X"78",X"A5",X"99",X"29",X"F7",X"85",X"99",X"8D", + X"00",X"88",X"58",X"4C",X"21",X"97",X"78",X"A5",X"99",X"09",X"08",X"85",X"99",X"8D",X"00",X"88", + X"58",X"A5",X"8C",X"29",X"03",X"D0",X"05",X"A9",X"02",X"4C",X"3B",X"97",X"A5",X"8D",X"D0",X"0B", + X"A5",X"99",X"09",X"F0",X"85",X"99",X"8D",X"00",X"88",X"18",X"60",X"24",X"EF",X"30",X"02",X"18", + X"60",X"A2",X"EF",X"C9",X"02",X"90",X"02",X"A2",X"CF",X"78",X"A5",X"99",X"09",X"30",X"85",X"99", + X"AD",X"D0",X"03",X"29",X"20",X"F0",X"05",X"8A",X"25",X"99",X"85",X"99",X"A5",X"99",X"8D",X"00", + X"88",X"58",X"A5",X"8C",X"29",X"03",X"F0",X"06",X"A5",X"8D",X"C9",X"02",X"90",X"30",X"AD",X"2C", + X"06",X"D0",X"07",X"18",X"A9",X"00",X"8D",X"2C",X"06",X"60",X"78",X"A2",X"00",X"8E",X"2C",X"06", + X"58",X"29",X"20",X"D0",X"20",X"A9",X"01",X"8D",X"CA",X"04",X"8D",X"C8",X"04",X"A5",X"8C",X"29", + X"03",X"F0",X"02",X"C6",X"8D",X"E6",X"7A",X"D0",X"02",X"E6",X"7B",X"4C",X"AF",X"97",X"AD",X"2C", + X"06",X"29",X"20",X"F0",X"CE",X"78",X"A9",X"00",X"8D",X"2C",X"06",X"58",X"8D",X"C8",X"04",X"A9", + X"00",X"8D",X"C9",X"04",X"A5",X"8C",X"29",X"03",X"F0",X"02",X"C6",X"8D",X"E6",X"7A",X"D0",X"02", + X"E6",X"7B",X"68",X"68",X"A9",X"00",X"85",X"F5",X"85",X"F4",X"AD",X"2F",X"06",X"29",X"30",X"4A", + X"4A",X"4A",X"4A",X"85",X"F6",X"C9",X"03",X"D0",X"0A",X"A5",X"8C",X"29",X"E3",X"F0",X"04",X"A9", + X"02",X"85",X"F6",X"A9",X"00",X"8D",X"41",X"04",X"8D",X"42",X"04",X"8D",X"43",X"04",X"A9",X"07", + X"8D",X"21",X"04",X"AD",X"2F",X"06",X"29",X"0C",X"4A",X"4A",X"69",X"02",X"8D",X"40",X"04",X"20", + X"DC",X"B7",X"A9",X"04",X"8D",X"58",X"04",X"A9",X"FF",X"85",X"9A",X"A9",X"00",X"8D",X"47",X"04", + X"85",X"EF",X"8D",X"2C",X"06",X"A9",X"03",X"8D",X"5C",X"04",X"20",X"0E",X"BE",X"A2",X"0F",X"A9", + X"00",X"9D",X"48",X"04",X"CA",X"10",X"FA",X"A2",X"10",X"A9",X"03",X"9D",X"00",X"02",X"E0",X"50", + X"90",X"06",X"9D",X"7B",X"04",X"9D",X"2B",X"05",X"8A",X"18",X"69",X"10",X"AA",X"D0",X"EA",X"A0", + X"35",X"A2",X"00",X"BD",X"29",X"04",X"9D",X"93",X"04",X"9D",X"5E",X"04",X"E8",X"88",X"D0",X"F3", + X"4C",X"13",X"91",X"AD",X"D4",X"03",X"D0",X"22",X"A5",X"EF",X"10",X"1B",X"20",X"9C",X"96",X"AD", + X"00",X"02",X"C9",X"03",X"D0",X"11",X"A9",X"FF",X"85",X"9A",X"A9",X"00",X"8D",X"5D",X"04",X"A9", + X"04",X"8D",X"58",X"04",X"4C",X"7F",X"98",X"4C",X"A2",X"98",X"A9",X"00",X"8D",X"D4",X"03",X"A9", + X"00",X"8D",X"00",X"21",X"8D",X"06",X"21",X"A9",X"02",X"8D",X"00",X"02",X"A9",X"00",X"8D",X"28", + X"04",X"A9",X"08",X"05",X"5E",X"85",X"5E",X"20",X"C7",X"A0",X"A9",X"00",X"8D",X"00",X"02",X"4C", + X"63",X"99",X"A9",X"00",X"85",X"00",X"A5",X"00",X"C9",X"AA",X"D0",X"FA",X"20",X"F1",X"B1",X"C6", + X"FF",X"D0",X"EF",X"A5",X"FE",X"85",X"FF",X"A5",X"FC",X"F0",X"0F",X"AD",X"00",X"88",X"29",X"40", + X"A8",X"45",X"FD",X"84",X"FD",X"F0",X"DB",X"98",X"F0",X"D8",X"E6",X"6F",X"A5",X"6F",X"29",X"01", + X"D0",X"03",X"20",X"72",X"D9",X"20",X"D2",X"A3",X"20",X"C7",X"A0",X"8D",X"80",X"89",X"20",X"F5", + X"A5",X"8D",X"80",X"89",X"A9",X"00",X"85",X"21",X"85",X"40",X"A0",X"40",X"20",X"CF",X"CE",X"20", + X"30",X"CF",X"A5",X"6C",X"F0",X"26",X"A2",X"10",X"A9",X"03",X"9D",X"00",X"02",X"8A",X"18",X"69", + X"10",X"AA",X"C9",X"50",X"90",X"F2",X"A9",X"00",X"85",X"79",X"AD",X"00",X"02",X"C9",X"03",X"D0", + X"03",X"4C",X"A6",X"99",X"A9",X"02",X"8D",X"00",X"02",X"8D",X"01",X"03",X"A9",X"00",X"85",X"40", + X"A5",X"40",X"18",X"69",X"10",X"C9",X"50",X"D0",X"03",X"4C",X"39",X"99",X"85",X"40",X"A0",X"50", + X"20",X"B3",X"CE",X"20",X"30",X"CF",X"4C",X"20",X"99",X"A9",X"50",X"85",X"40",X"18",X"69",X"10", + X"90",X"03",X"4C",X"E2",X"90",X"A8",X"20",X"B3",X"CE",X"20",X"30",X"CF",X"A5",X"6E",X"18",X"69", + X"10",X"4C",X"3B",X"99",X"A0",X"10",X"A9",X"03",X"99",X"00",X"02",X"98",X"18",X"69",X"10",X"A8", + X"D0",X"F4",X"60",X"A9",X"00",X"85",X"73",X"24",X"EF",X"30",X"02",X"E6",X"73",X"A9",X"A2",X"8D", + X"02",X"01",X"8D",X"03",X"01",X"A9",X"00",X"8D",X"06",X"02",X"85",X"6C",X"8D",X"0B",X"02",X"8D", + X"09",X"02",X"A9",X"64",X"8D",X"0C",X"02",X"AD",X"C8",X"04",X"F0",X"0D",X"AD",X"C9",X"04",X"F0", + X"08",X"A9",X"64",X"8D",X"0A",X"02",X"4C",X"9E",X"99",X"A9",X"CC",X"8D",X"0A",X"02",X"20",X"3B", + X"9C",X"4C",X"2C",X"96",X"BF",X"00",X"A9",X"00",X"8D",X"00",X"02",X"8D",X"03",X"03",X"8D",X"D3", + X"03",X"8D",X"06",X"02",X"8D",X"3A",X"04",X"8D",X"3B",X"04",X"8D",X"04",X"03",X"AD",X"28",X"04", + X"F0",X"0F",X"A2",X"0F",X"A9",X"00",X"9D",X"48",X"04",X"CA",X"10",X"F8",X"A9",X"00",X"8D",X"28", + X"04",X"AD",X"01",X"02",X"29",X"EF",X"8D",X"01",X"02",X"24",X"EF",X"10",X"03",X"4C",X"63",X"99", + X"CE",X"40",X"04",X"10",X"6E",X"A9",X"01",X"8D",X"20",X"01",X"8D",X"80",X"88",X"20",X"AA",X"9C", + X"A9",X"FE",X"18",X"65",X"11",X"85",X"11",X"A5",X"12",X"69",X"FF",X"85",X"12",X"A2",X"00",X"20", + X"B7",X"DC",X"AD",X"C8",X"04",X"F0",X"0E",X"A2",X"02",X"20",X"B7",X"DC",X"AD",X"C9",X"04",X"18", + X"69",X"01",X"20",X"AF",X"D7",X"A2",X"1A",X"20",X"B7",X"DC",X"AD",X"5D",X"04",X"18",X"69",X"01", + X"20",X"A1",X"DC",X"48",X"4A",X"4A",X"4A",X"4A",X"38",X"20",X"AF",X"D7",X"68",X"29",X"0F",X"20", + X"AF",X"D7",X"20",X"A2",X"D7",X"A9",X"03",X"8D",X"22",X"04",X"20",X"C1",X"91",X"AD",X"00",X"78", + X"29",X"40",X"D0",X"0A",X"A9",X"00",X"85",X"00",X"A9",X"AA",X"C5",X"00",X"D0",X"FA",X"AD",X"22", + X"04",X"D0",X"E7",X"A9",X"29",X"85",X"4C",X"A9",X"04",X"85",X"4D",X"AD",X"C8",X"04",X"F0",X"05", + X"AD",X"C9",X"04",X"D0",X"18",X"A9",X"5E",X"85",X"49",X"A9",X"04",X"85",X"4A",X"A2",X"00",X"BD", + X"50",X"02",X"9D",X"CB",X"04",X"E8",X"E0",X"B0",X"D0",X"F5",X"4C",X"92",X"9A",X"A9",X"93",X"85", + X"49",X"A9",X"04",X"85",X"4A",X"A2",X"00",X"BD",X"50",X"02",X"9D",X"7B",X"05",X"E8",X"E0",X"B0", + X"D0",X"F5",X"A2",X"35",X"20",X"5C",X"A0",X"AD",X"C8",X"04",X"D0",X"03",X"4C",X"22",X"9B",X"AD", + X"C9",X"04",X"D0",X"10",X"AD",X"AA",X"04",X"30",X"79",X"A9",X"93",X"85",X"4C",X"A9",X"04",X"85", + X"4D",X"4C",X"C1",X"9A",X"AD",X"75",X"04",X"30",X"69",X"A9",X"5E",X"85",X"4C",X"A9",X"04",X"85", + X"4D",X"A2",X"35",X"A9",X"29",X"85",X"49",X"A9",X"04",X"85",X"4A",X"20",X"5C",X"A0",X"A9",X"FF", + X"4D",X"C9",X"04",X"29",X"01",X"8D",X"C9",X"04",X"A2",X"00",X"AD",X"C8",X"04",X"F0",X"05",X"AD", + X"C9",X"04",X"D0",X"0E",X"BD",X"CB",X"04",X"9D",X"50",X"02",X"E8",X"E0",X"B0",X"D0",X"F5",X"4C", + X"FD",X"9A",X"BD",X"7B",X"05",X"9D",X"50",X"02",X"E8",X"E0",X"B0",X"D0",X"F5",X"AD",X"C9",X"04", + X"F0",X"20",X"AD",X"CA",X"04",X"F0",X"1B",X"AD",X"C3",X"04",X"8D",X"59",X"04",X"8D",X"3E",X"04", + X"A9",X"00",X"8D",X"CA",X"04",X"A9",X"07",X"8D",X"21",X"04",X"A9",X"1E",X"8D",X"22",X"04",X"4C", + X"13",X"91",X"AD",X"C8",X"04",X"D0",X"08",X"AD",X"75",X"04",X"10",X"10",X"4C",X"62",X"9B",X"AD", + X"75",X"04",X"10",X"08",X"AD",X"AA",X"04",X"10",X"03",X"4C",X"62",X"9B",X"A2",X"10",X"BD",X"01", + X"02",X"29",X"07",X"C9",X"03",X"D0",X"07",X"BD",X"00",X"02",X"29",X"02",X"F0",X"05",X"A9",X"03", + X"9D",X"00",X"02",X"8A",X"18",X"69",X"10",X"AA",X"D0",X"E4",X"A9",X"06",X"8D",X"21",X"04",X"4C", + X"13",X"91",X"A5",X"F6",X"C9",X"03",X"F0",X"03",X"20",X"93",X"D6",X"A9",X"00",X"8D",X"C9",X"04", + X"AD",X"76",X"04",X"8D",X"41",X"04",X"AD",X"77",X"04",X"8D",X"42",X"04",X"AD",X"78",X"04",X"8D", + X"43",X"04",X"AD",X"92",X"04",X"8D",X"5D",X"04",X"AD",X"92",X"04",X"8D",X"59",X"04",X"AE",X"C8", + X"04",X"F0",X"0B",X"AD",X"59",X"04",X"CD",X"C7",X"04",X"B0",X"03",X"AD",X"C7",X"04",X"CD",X"2B", + X"06",X"90",X"05",X"F0",X"03",X"4C",X"BD",X"9B",X"A9",X"0D",X"85",X"19",X"AD",X"2F",X"06",X"29", + X"03",X"AA",X"AD",X"2B",X"06",X"DD",X"25",X"9C",X"90",X"08",X"38",X"E9",X"04",X"29",X"FC",X"8D", + X"2B",X"06",X"8D",X"59",X"04",X"8D",X"8E",X"04",X"8D",X"C3",X"04",X"20",X"90",X"CC",X"A9",X"00", + X"8D",X"2C",X"06",X"A9",X"80",X"85",X"EF",X"AD",X"21",X"04",X"C9",X"04",X"D0",X"03",X"4C",X"13", + X"91",X"AD",X"C8",X"04",X"F0",X"25",X"AD",X"C9",X"04",X"D0",X"20",X"A9",X"01",X"8D",X"C9",X"04", + X"AD",X"AB",X"04",X"8D",X"41",X"04",X"AD",X"AC",X"04",X"8D",X"42",X"04",X"AD",X"AD",X"04",X"8D", + X"43",X"04",X"AD",X"C7",X"04",X"8D",X"5D",X"04",X"4C",X"CB",X"9B",X"A9",X"1E",X"8D",X"24",X"04", + X"A9",X"00",X"8D",X"20",X"04",X"8D",X"22",X"04",X"8D",X"23",X"04",X"8D",X"2C",X"06",X"A9",X"80", + X"85",X"EF",X"4C",X"E2",X"90",X"0D",X"15",X"25",X"35",X"78",X"A9",X"01",X"8D",X"20",X"01",X"8D", + X"80",X"88",X"AD",X"00",X"78",X"29",X"40",X"F0",X"F9",X"58",X"60",X"24",X"EF",X"30",X"6A",X"AD", + X"C8",X"04",X"F0",X"30",X"A9",X"E4",X"A0",X"00",X"91",X"61",X"A9",X"00",X"A0",X"06",X"AE",X"AA", + X"04",X"30",X"02",X"A9",X"E7",X"91",X"61",X"AD",X"C9",X"04",X"D0",X"09",X"AD",X"AA",X"04",X"18", + X"69",X"02",X"4C",X"6B",X"9C",X"AD",X"AA",X"04",X"18",X"69",X"01",X"0A",X"AA",X"BD",X"C4",X"5D", + X"A0",X"08",X"91",X"61",X"A9",X"E4",X"A0",X"00",X"91",X"5F",X"A0",X"06",X"A9",X"00",X"AE",X"75", + X"04",X"30",X"02",X"A9",X"E7",X"91",X"5F",X"AD",X"C8",X"04",X"F0",X"0E",X"AD",X"C9",X"04",X"F0", + X"09",X"AD",X"75",X"04",X"18",X"69",X"02",X"4C",X"A0",X"9C",X"AD",X"75",X"04",X"18",X"69",X"01", + X"0A",X"AA",X"BD",X"C4",X"5D",X"A0",X"08",X"91",X"5F",X"60",X"A9",X"00",X"85",X"11",X"A9",X"20", + X"85",X"12",X"20",X"C9",X"D8",X"A9",X"01",X"20",X"10",X"D8",X"A9",X"20",X"18",X"69",X"04",X"A2", + X"00",X"20",X"E3",X"D7",X"20",X"A6",X"D7",X"A9",X"00",X"85",X"AA",X"85",X"11",X"A9",X"20",X"18", + X"69",X"04",X"85",X"AB",X"85",X"12",X"60",X"AD",X"2B",X"06",X"8D",X"59",X"04",X"A9",X"0F",X"8D", + X"22",X"04",X"20",X"AA",X"9C",X"A9",X"00",X"8D",X"5D",X"04",X"8D",X"2C",X"06",X"20",X"70",X"DA", + X"4C",X"C1",X"91",X"A5",X"F6",X"C9",X"03",X"D0",X"15",X"A9",X"45",X"8D",X"22",X"04",X"AD",X"5D", + X"04",X"C9",X"5D",X"B0",X"03",X"18",X"69",X"04",X"8D",X"2B",X"06",X"8D",X"59",X"04",X"E6",X"6F", + X"A5",X"6F",X"29",X"07",X"F0",X"03",X"4C",X"69",X"9D",X"AD",X"00",X"88",X"49",X"0F",X"29",X"0F", + X"F0",X"0A",X"A8",X"29",X"08",X"D0",X"50",X"98",X"29",X"04",X"D0",X"5C",X"AD",X"00",X"80",X"49", + X"0F",X"29",X"0F",X"F0",X"34",X"A9",X"00",X"8D",X"2C",X"06",X"8D",X"2D",X"06",X"AD",X"00",X"88", + X"49",X"FF",X"29",X"60",X"F0",X"23",X"A9",X"00",X"8D",X"2C",X"06",X"8D",X"5A",X"04",X"CE",X"5D", + X"04",X"30",X"05",X"A9",X"02",X"8D",X"5A",X"04",X"AD",X"5D",X"04",X"8D",X"59",X"04",X"A9",X"01", + X"8D",X"21",X"04",X"8D",X"D4",X"03",X"4C",X"13",X"91",X"20",X"AA",X"9C",X"20",X"70",X"DA",X"AD", + X"22",X"04",X"F0",X"D2",X"4C",X"2C",X"96",X"AD",X"5D",X"04",X"F0",X"B0",X"38",X"E9",X"04",X"8D", + X"5D",X"04",X"20",X"32",X"BD",X"4C",X"2C",X"9D",X"AD",X"5D",X"04",X"CD",X"59",X"04",X"B0",X"9C", + X"18",X"69",X"04",X"8D",X"5D",X"04",X"20",X"32",X"BD",X"4C",X"2C",X"9D",X"A9",X"00",X"85",X"11", + X"A9",X"20",X"85",X"12",X"20",X"C9",X"D8",X"A9",X"01",X"20",X"10",X"D8",X"A5",X"11",X"85",X"53", + X"A5",X"12",X"85",X"54",X"A9",X"E4",X"A2",X"00",X"20",X"5B",X"D8",X"A9",X"80",X"85",X"08",X"A9", + X"FE",X"85",X"09",X"A9",X"80",X"85",X"0A",X"A9",X"01",X"85",X"0B",X"20",X"E2",X"D8",X"20",X"A2", + X"D8",X"A9",X"08",X"A2",X"04",X"20",X"1D",X"D8",X"A5",X"11",X"85",X"5F",X"A5",X"12",X"85",X"60", + X"20",X"2F",X"A0",X"A5",X"11",X"85",X"55",X"A5",X"12",X"85",X"56",X"A9",X"E4",X"A2",X"00",X"20", + X"5B",X"D8",X"A9",X"E0",X"85",X"08",X"A9",X"00",X"85",X"09",X"A9",X"80",X"85",X"0A",X"A9",X"01", + X"85",X"0B",X"20",X"E2",X"D8",X"20",X"A2",X"D8",X"A9",X"08",X"A2",X"04",X"20",X"1D",X"D8",X"A5", + X"11",X"85",X"61",X"A5",X"12",X"85",X"62",X"20",X"2F",X"A0",X"8D",X"80",X"89",X"20",X"68",X"9E", + X"8D",X"80",X"89",X"20",X"A2",X"9E",X"A9",X"20",X"18",X"69",X"04",X"A2",X"00",X"20",X"E3",X"D7", + X"20",X"A6",X"D7",X"A9",X"00",X"85",X"11",X"85",X"AA",X"A9",X"20",X"18",X"69",X"04",X"85",X"12", + X"85",X"AB",X"20",X"A2",X"D7",X"A2",X"40",X"A0",X"0C",X"A5",X"F6",X"C9",X"03",X"F0",X"06",X"A9", + X"0D",X"38",X"E5",X"F6",X"A8",X"98",X"9D",X"05",X"02",X"A9",X"04",X"9D",X"01",X"02",X"8A",X"38", + X"E9",X"10",X"AA",X"D0",X"F0",X"4C",X"C1",X"91",X"20",X"C9",X"D8",X"A9",X"01",X"20",X"10",X"D8", + X"A9",X"00",X"AA",X"A9",X"25",X"20",X"E3",X"D7",X"A5",X"11",X"85",X"13",X"A5",X"12",X"85",X"14", + X"A9",X"25",X"85",X"12",X"A9",X"00",X"85",X"11",X"A9",X"40",X"85",X"0C",X"A9",X"A1",X"A2",X"00", + X"20",X"5B",X"D8",X"20",X"76",X"BE",X"20",X"A2",X"D7",X"A5",X"13",X"85",X"11",X"A5",X"14",X"85", + X"12",X"60",X"A2",X"00",X"A9",X"22",X"20",X"CF",X"D7",X"A5",X"11",X"48",X"A5",X"12",X"48",X"20", + X"C9",X"D8",X"A2",X"00",X"A9",X"20",X"18",X"69",X"04",X"20",X"E3",X"D7",X"20",X"A6",X"D7",X"A2", + X"00",X"A9",X"00",X"9D",X"00",X"22",X"9D",X"01",X"22",X"9D",X"02",X"22",X"9D",X"03",X"22",X"8A", + X"09",X"80",X"9D",X"04",X"22",X"A9",X"A0",X"9D",X"05",X"22",X"A9",X"40",X"9D",X"06",X"22",X"A9", + X"80",X"9D",X"07",X"22",X"8A",X"18",X"69",X"08",X"AA",X"C9",X"80",X"D0",X"D4",X"68",X"85",X"4D", + X"68",X"85",X"4C",X"46",X"4D",X"66",X"4C",X"A5",X"4C",X"8D",X"7E",X"22",X"A5",X"4D",X"29",X"0F", + X"09",X"E0",X"8D",X"7F",X"22",X"A2",X"00",X"A9",X"00",X"9D",X"00",X"21",X"A9",X"60",X"9D",X"01", + X"21",X"A9",X"00",X"9D",X"02",X"21",X"A9",X"71",X"9D",X"03",X"21",X"A9",X"00",X"9D",X"04",X"21", + X"A9",X"B4",X"9D",X"05",X"21",X"A9",X"00",X"9D",X"06",X"21",X"A9",X"60",X"9D",X"07",X"21",X"A9", + X"00",X"9D",X"08",X"21",X"A9",X"AF",X"9D",X"09",X"21",X"A9",X"00",X"9D",X"0A",X"21",X"A9",X"71", + X"9D",X"0B",X"21",X"A9",X"00",X"9D",X"0C",X"21",X"A9",X"60",X"9D",X"0D",X"21",X"A9",X"00",X"9D", + X"0E",X"21",X"A9",X"C0",X"9D",X"0F",X"21",X"8A",X"18",X"69",X"10",X"AA",X"90",X"A9",X"A9",X"00", + X"85",X"11",X"A9",X"20",X"18",X"69",X"03",X"85",X"12",X"A0",X"00",X"B9",X"69",X"D8",X"91",X"11", + X"C8",X"C0",X"10",X"D0",X"F6",X"A5",X"11",X"18",X"69",X"10",X"85",X"11",X"90",X"EB",X"A9",X"00", + X"85",X"73",X"A9",X"03",X"8D",X"00",X"02",X"60",X"A2",X"00",X"BD",X"A3",X"9F",X"9D",X"10",X"03", + X"E8",X"E0",X"15",X"D0",X"F5",X"A2",X"00",X"BD",X"B8",X"9F",X"9D",X"25",X"03",X"E8",X"E0",X"77", + X"D0",X"F5",X"60",X"C2",X"D7",X"CD",X"05",X"43",X"21",X"14",X"12",X"47",X"82",X"04",X"32",X"10", + X"11",X"10",X"04",X"11",X"03",X"21",X"00",X"09",X"DB",X"1B",X"5B",X"01",X"08",X"01",X"11",X"C2", + X"04",X"4D",X"01",X"01",X"01",X"11",X"D2",X"05",X"4F",X"01",X"01",X"01",X"11",X"D5",X"0E",X"52", + X"01",X"01",X"01",X"11",X"C3",X"0E",X"47",X"01",X"01",X"01",X"11",X"C5",X"09",X"41",X"01",X"01", + X"01",X"11",X"DB",X"13",X"4E",X"01",X"01",X"01",X"11",X"C2",X"9B",X"17",X"01",X"01",X"01",X"11", + X"CC",X"9B",X"09",X"01",X"01",X"01",X"11",X"C1",X"9B",X"04",X"01",X"01",X"01",X"11",X"C3",X"9B"); +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/BlackWidow_MiST/rtl/roms/bwidow_pgm_rom2.vhd b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/roms/bwidow_pgm_rom2.vhd new file mode 100644 index 00000000..5b19235d --- /dev/null +++ b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/roms/bwidow_pgm_rom2.vhd @@ -0,0 +1,278 @@ +library ieee; +use ieee.std_logic_1164.all,ieee.numeric_std.all; + +entity bwidow_pgm_rom2 is +port ( + clk : in std_logic; + addr : in std_logic_vector(11 downto 0); + data : out std_logic_vector(7 downto 0) +); +end entity; + +architecture prom of bwidow_pgm_rom2 is + type rom is array(0 to 4095) of std_logic_vector(7 downto 0); + signal rom_data: rom := ( + X"0F",X"01",X"01",X"01",X"11",X"CB",X"9B",X"17",X"01",X"01",X"01",X"11",X"C1",X"9B",X"07",X"01", + X"01",X"01",X"11",X"D4",X"9B",X"01",X"01",X"01",X"01",X"11",X"C1",X"9B",X"0D",X"01",X"01",X"01", + X"11",X"D2",X"9B",X"05",X"01",X"01",X"01",X"11",X"C9",X"9B",X"13",X"01",X"01",X"01",X"11",X"A9", + X"00",X"AA",X"20",X"5B",X"D8",X"A9",X"5A",X"AA",X"A9",X"2F",X"20",X"E3",X"D7",X"A0",X"60",X"A9", + X"01",X"20",X"12",X"D8",X"A9",X"00",X"A2",X"00",X"20",X"5B",X"D8",X"A9",X"00",X"38",X"20",X"AF", + X"D7",X"A0",X"00",X"A9",X"01",X"20",X"12",X"D8",X"20",X"C9",X"D8",X"60",X"A0",X"00",X"B1",X"4C", + X"91",X"49",X"C8",X"CA",X"D0",X"F8",X"60",X"A4",X"03",X"08",X"A9",X"00",X"A0",X"08",X"46",X"03", + X"90",X"03",X"18",X"65",X"02",X"6A",X"66",X"01",X"88",X"D0",X"F3",X"28",X"10",X"03",X"38",X"E5", + X"02",X"60",X"A2",X"0F",X"A0",X"00",X"B1",X"4C",X"91",X"49",X"C8",X"C0",X"10",X"D0",X"F7",X"A5", + X"49",X"18",X"6D",X"35",X"04",X"85",X"49",X"90",X"02",X"E6",X"4A",X"CA",X"D0",X"E6",X"60",X"A5", + X"4D",X"30",X"12",X"A5",X"4A",X"30",X"1D",X"A5",X"4C",X"38",X"E5",X"49",X"A5",X"4D",X"E5",X"4A", + X"10",X"12",X"A9",X"FF",X"60",X"A5",X"4A",X"10",X"F9",X"A5",X"49",X"38",X"E5",X"4C",X"A5",X"4A", + X"E5",X"4D",X"30",X"EE",X"A9",X"00",X"60",X"A2",X"00",X"A5",X"5E",X"D0",X"01",X"60",X"4A",X"B0", + X"05",X"E8",X"E8",X"4C",X"CE",X"A0",X"BD",X"E0",X"A0",X"48",X"BD",X"DF",X"A0",X"48",X"60",X"EE", + X"A0",X"F9",X"A1",X"3C",X"A2",X"72",X"A1",X"64",X"A2",X"65",X"A2",X"66",X"A2",X"67",X"A2",X"A5", + X"6F",X"29",X"03",X"D0",X"E9",X"A5",X"74",X"85",X"49",X"A5",X"75",X"85",X"4A",X"A9",X"08",X"85", + X"4C",X"A6",X"4B",X"8A",X"29",X"10",X"D0",X"0D",X"8A",X"29",X"07",X"AA",X"BD",X"6B",X"A1",X"8D", + X"00",X"25",X"4C",X"3C",X"A1",X"A9",X"A1",X"20",X"5B",X"A1",X"A5",X"49",X"18",X"69",X"4E",X"85", + X"49",X"A5",X"4A",X"69",X"00",X"85",X"4A",X"E8",X"8A",X"29",X"07",X"AA",X"C6",X"4C",X"D0",X"E5", + X"A9",X"A1",X"8D",X"00",X"25",X"A5",X"5E",X"29",X"FE",X"85",X"5E",X"60",X"BD",X"6B",X"A1",X"20", + X"5B",X"A1",X"A5",X"49",X"18",X"69",X"4E",X"85",X"49",X"A5",X"4A",X"69",X"00",X"85",X"4A",X"E8", + X"8A",X"29",X"07",X"AA",X"C6",X"4C",X"D0",X"E4",X"E6",X"4B",X"60",X"A0",X"04",X"91",X"49",X"48", + X"98",X"18",X"69",X"06",X"A8",X"68",X"C0",X"4C",X"D0",X"F3",X"60",X"E1",X"E2",X"E3",X"E4",X"E5", + X"E6",X"E7",X"E4",X"A9",X"0B",X"85",X"19",X"A6",X"19",X"BD",X"29",X"04",X"F0",X"16",X"20",X"CA", + X"A1",X"BD",X"29",X"04",X"29",X"C0",X"4A",X"4A",X"4A",X"4A",X"4A",X"4A",X"A8",X"B9",X"A2",X"A1", + X"A0",X"00",X"91",X"49",X"C6",X"19",X"10",X"DF",X"A9",X"00",X"8D",X"01",X"03",X"A9",X"00",X"85", + X"5E",X"60",X"01",X"02",X"04",X"04",X"04",X"0A",X"10",X"16",X"1C",X"22",X"28",X"2E",X"34",X"3A", + X"40",X"46",X"00",X"00",X"4E",X"00",X"9C",X"00",X"EA",X"00",X"38",X"01",X"86",X"01",X"D4",X"01", + X"22",X"02",X"01",X"02",X"04",X"08",X"10",X"20",X"40",X"80",X"A0",X"00",X"29",X"3F",X"F0",X"06", + X"C8",X"38",X"E9",X"06",X"D0",X"FA",X"98",X"48",X"0A",X"A8",X"B9",X"B2",X"A1",X"18",X"7D",X"A6", + X"A1",X"85",X"49",X"A9",X"00",X"79",X"B3",X"A1",X"85",X"4A",X"18",X"A5",X"74",X"65",X"49",X"85", + X"49",X"A5",X"75",X"65",X"4A",X"85",X"4A",X"68",X"A8",X"60",X"A5",X"6F",X"29",X"02",X"D0",X"F9", + X"E6",X"A5",X"A5",X"A5",X"29",X"0F",X"D0",X"05",X"A9",X"0D",X"85",X"5E",X"60",X"85",X"1D",X"A9", + X"00",X"85",X"1B",X"85",X"1E",X"A9",X"00",X"85",X"1C",X"A6",X"1B",X"A4",X"1C",X"20",X"D6",X"A1", + X"A0",X"00",X"A5",X"1D",X"29",X"07",X"09",X"E0",X"91",X"49",X"E6",X"1C",X"A5",X"1C",X"29",X"07", + X"D0",X"E7",X"E6",X"1D",X"E6",X"1B",X"A5",X"1B",X"C9",X"0C",X"90",X"D9",X"60",X"AD",X"5D",X"04", + X"C9",X"0C",X"90",X"06",X"38",X"E9",X"0C",X"4C",X"40",X"A2",X"0A",X"0A",X"85",X"19",X"0A",X"65", + X"19",X"A8",X"A2",X"00",X"B9",X"17",X"B8",X"9D",X"29",X"04",X"C8",X"E8",X"E0",X"0C",X"D0",X"F4", + X"A9",X"08",X"85",X"5E",X"60",X"60",X"60",X"60",X"60",X"98",X"10",X"0E",X"49",X"FF",X"18",X"69", + X"01",X"20",X"7A",X"A2",X"49",X"FF",X"18",X"69",X"01",X"60",X"A8",X"8A",X"10",X"10",X"49",X"FF", + X"18",X"69",X"01",X"20",X"8E",X"A2",X"49",X"20",X"49",X"FF",X"18",X"69",X"01",X"60",X"85",X"1A", + X"98",X"C5",X"1A",X"F0",X"2F",X"90",X"11",X"A4",X"1A",X"85",X"1A",X"98",X"20",X"A8",X"A2",X"38", + X"E9",X"10",X"49",X"FF",X"18",X"69",X"01",X"60",X"A0",X"00",X"84",X"19",X"A0",X"04",X"26",X"19", + X"2A",X"C5",X"1A",X"90",X"02",X"E5",X"1A",X"88",X"D0",X"F4",X"A5",X"19",X"2A",X"29",X"0F",X"AA", + X"BD",X"C7",X"A2",X"60",X"A9",X"08",X"60",X"00",X"01",X"02",X"02",X"02",X"03",X"04",X"04",X"05", + X"05",X"06",X"06",X"06",X"07",X"07",X"07",X"6B",X"00",X"BD",X"01",X"02",X"A8",X"29",X"20",X"F0", + X"14",X"98",X"38",X"E9",X"40",X"A8",X"29",X"C0",X"F0",X"05",X"98",X"9D",X"01",X"02",X"60",X"98", + X"29",X"1F",X"4C",X"EB",X"A2",X"98",X"18",X"69",X"40",X"A8",X"29",X"C0",X"C9",X"C0",X"D0",X"EA", + X"98",X"29",X"1F",X"09",X"60",X"A8",X"29",X"0F",X"C9",X"04",X"D0",X"DE",X"98",X"29",X"1F",X"4C", + X"EB",X"A2",X"E0",X"00",X"D0",X"05",X"A5",X"71",X"4C",X"1E",X"A3",X"BD",X"06",X"02",X"18",X"69", + X"02",X"4A",X"4A",X"29",X"0F",X"85",X"19",X"BD",X"01",X"02",X"85",X"1A",X"29",X"0F",X"C9",X"03", + X"F0",X"0F",X"48",X"A9",X"00",X"9D",X"0A",X"21",X"A9",X"71",X"9D",X"0B",X"21",X"68",X"4C",X"59", + X"A3",X"BD",X"02",X"02",X"D0",X"09",X"A5",X"1A",X"29",X"F0",X"09",X"02",X"4C",X"55",X"A3",X"A5", + X"1A",X"29",X"F0",X"09",X"06",X"85",X"1A",X"29",X"0F",X"C9",X"05",X"D0",X"04",X"A9",X"50",X"D0", + X"21",X"C9",X"0B",X"F0",X"13",X"C9",X"04",X"D0",X"13",X"A5",X"1A",X"29",X"C0",X"4A",X"4A",X"4A", + X"4A",X"4A",X"4A",X"09",X"40",X"4C",X"82",X"A3",X"A0",X"00",X"84",X"19",X"0A",X"0A",X"0A",X"0A", + X"05",X"19",X"9D",X"04",X"21",X"A9",X"A4",X"9D",X"05",X"21",X"06",X"19",X"A5",X"1A",X"29",X"C0", + X"4A",X"05",X"19",X"85",X"19",X"A5",X"1A",X"29",X"0F",X"0A",X"A8",X"B9",X"B3",X"A3",X"30",X"11", + X"B9",X"B2",X"A3",X"05",X"19",X"9D",X"08",X"21",X"B9",X"B3",X"A3",X"18",X"69",X"A5",X"9D",X"09", + X"21",X"60",X"00",X"01",X"00",X"00",X"00",X"01",X"FF",X"FF",X"FF",X"FF",X"00",X"01",X"80",X"01", + X"80",X"00",X"00",X"02",X"00",X"02",X"00",X"02",X"FF",X"FF",X"00",X"01",X"00",X"02",X"80",X"01", + X"00",X"02",X"A2",X"00",X"A0",X"00",X"BD",X"00",X"02",X"29",X"03",X"C9",X"02",X"90",X"5B",X"C9", + X"03",X"F0",X"0C",X"E0",X"00",X"F0",X"03",X"4C",X"5C",X"A5",X"A9",X"00",X"4C",X"3A",X"A4",X"A9", + X"00",X"99",X"00",X"22",X"99",X"01",X"22",X"99",X"02",X"22",X"99",X"03",X"22",X"9D",X"09",X"02", + X"9D",X"0A",X"02",X"9D",X"0B",X"02",X"9D",X"0C",X"02",X"A9",X"60",X"9D",X"07",X"21",X"A9",X"00", + X"9D",X"00",X"21",X"9D",X"06",X"21",X"A9",X"A4",X"9D",X"05",X"21",X"A9",X"AF",X"9D",X"09",X"21", + X"A9",X"00",X"9D",X"08",X"21",X"A9",X"00",X"9D",X"04",X"21",X"A9",X"00",X"9D",X"0A",X"21",X"A9", + X"71",X"9D",X"0B",X"21",X"9D",X"03",X"21",X"4C",X"6B",X"A5",X"29",X"03",X"F0",X"0C",X"BD",X"01", + X"02",X"29",X"0F",X"C9",X"0D",X"D0",X"03",X"4C",X"6B",X"A5",X"20",X"12",X"A3",X"8A",X"4A",X"A8", + X"BD",X"09",X"02",X"85",X"08",X"BD",X"0A",X"02",X"85",X"09",X"30",X"04",X"A9",X"00",X"F0",X"02", + X"A9",X"FF",X"06",X"08",X"26",X"09",X"2A",X"06",X"08",X"26",X"09",X"2A",X"29",X"1F",X"99",X"03", + X"22",X"A5",X"09",X"99",X"02",X"22",X"BD",X"0B",X"02",X"85",X"0A",X"BD",X"0C",X"02",X"85",X"0B", + X"30",X"04",X"A9",X"00",X"F0",X"02",X"A9",X"FF",X"06",X"0A",X"26",X"0B",X"2A",X"06",X"0A",X"26", + X"0B",X"2A",X"29",X"1F",X"99",X"01",X"22",X"A5",X"0B",X"99",X"00",X"22",X"BD",X"01",X"02",X"29", + X"0F",X"C9",X"03",X"D0",X"03",X"4C",X"38",X"A5",X"C9",X"05",X"F0",X"1A",X"C9",X"0E",X"90",X"38", + X"0A",X"A8",X"BD",X"00",X"02",X"29",X"03",X"C9",X"01",X"D0",X"33",X"A9",X"E6",X"9D",X"00",X"21", + X"9D",X"06",X"21",X"4C",X"29",X"A5",X"A9",X"70",X"9D",X"03",X"21",X"A9",X"71",X"9D",X"0B",X"21", + X"A9",X"00",X"9D",X"02",X"21",X"9D",X"0A",X"21",X"A9",X"E2",X"9D",X"00",X"21",X"A9",X"87",X"9D", + X"06",X"21",X"4C",X"6B",X"A5",X"4C",X"96",X"A5",X"0A",X"A8",X"C9",X"16",X"F0",X"F7",X"C0",X"08", + X"D0",X"2B",X"AD",X"0A",X"60",X"29",X"07",X"09",X"C0",X"C9",X"C0",X"D0",X"04",X"A9",X"C7",X"D0", + X"00",X"9D",X"00",X"21",X"B9",X"01",X"01",X"9D",X"06",X"21",X"A5",X"F6",X"C9",X"03",X"D0",X"19", + X"A9",X"0C",X"9D",X"0F",X"02",X"A9",X"20",X"9D",X"02",X"21",X"4C",X"6B",X"A5",X"B9",X"00",X"01", + X"9D",X"00",X"21",X"B9",X"01",X"01",X"9D",X"06",X"21",X"B9",X"D6",X"A5",X"9D",X"0F",X"02",X"B9", + X"D5",X"A5",X"9D",X"02",X"21",X"4C",X"6B",X"A5",X"AD",X"62",X"56",X"9D",X"0A",X"21",X"AD",X"63", + X"56",X"9D",X"0B",X"21",X"A0",X"04",X"BD",X"02",X"02",X"F0",X"02",X"A0",X"0C",X"B9",X"00",X"01", + X"9D",X"00",X"21",X"B9",X"01",X"01",X"9D",X"06",X"21",X"4C",X"6B",X"A5",X"C9",X"01",X"F0",X"0B", + X"BD",X"01",X"02",X"29",X"0F",X"A8",X"B9",X"13",X"B0",X"10",X"0C",X"8A",X"18",X"69",X"10",X"AA", + X"4A",X"A8",X"F0",X"18",X"4C",X"D6",X"A3",X"A5",X"6F",X"29",X"03",X"D0",X"EE",X"AD",X"0A",X"60", + X"29",X"07",X"A8",X"B9",X"8D",X"A5",X"9D",X"00",X"21",X"4C",X"6B",X"A5",X"60",X"E7",X"E1",X"E1", + X"E2",X"E3",X"E4",X"E5",X"E6",X"E7",X"BD",X"0D",X"02",X"29",X"18",X"4A",X"4A",X"4A",X"84",X"19", + X"A8",X"B9",X"B1",X"A5",X"9D",X"00",X"21",X"A9",X"00",X"9D",X"06",X"21",X"A4",X"19",X"4C",X"29", + X"A5",X"E1",X"E2",X"E3",X"E7",X"C5",X"C2",X"E4",X"E4",X"A4",X"A6",X"E5",X"00",X"C7",X"00",X"E2", + X"87",X"E5",X"A4",X"E1",X"84",X"C7",X"E4",X"E6",X"E4",X"E4",X"E1",X"E2",X"00",X"00",X"00",X"E4", + X"E2",X"C5",X"A2",X"C7",X"E4",X"7F",X"02",X"20",X"03",X"60",X"03",X"00",X"04",X"60",X"02",X"00", + X"04",X"00",X"04",X"00",X"04",X"60",X"03",X"3F",X"04",X"3F",X"04",X"00",X"04",X"00",X"04",X"00", + X"04",X"00",X"04",X"00",X"04",X"A2",X"00",X"8E",X"3A",X"04",X"86",X"82",X"8E",X"04",X"03",X"86", + X"40",X"BD",X"00",X"02",X"29",X"03",X"C9",X"02",X"90",X"05",X"F0",X"1F",X"4C",X"5C",X"A6",X"BD", + X"01",X"02",X"29",X"0F",X"A8",X"B9",X"13",X"B0",X"29",X"20",X"D0",X"03",X"EE",X"3A",X"04",X"98", + X"0A",X"A8",X"B9",X"2A",X"A7",X"48",X"B9",X"29",X"A7",X"48",X"60",X"8A",X"F0",X"DE",X"BD",X"01", + X"02",X"29",X"0F",X"A8",X"B9",X"13",X"B0",X"30",X"20",X"BD",X"02",X"21",X"18",X"69",X"10",X"9D", + X"02",X"21",X"10",X"18",X"A9",X"00",X"9D",X"02",X"21",X"FE",X"03",X"21",X"BD",X"03",X"21",X"C9", + X"74",X"90",X"09",X"20",X"FE",X"A6",X"4C",X"5C",X"A6",X"20",X"C2",X"A6",X"A5",X"40",X"18",X"69", + X"10",X"AA",X"B0",X"03",X"4C",X"FF",X"A5",X"AD",X"01",X"03",X"D0",X"15",X"AD",X"04",X"03",X"F0", + X"1B",X"AD",X"3A",X"04",X"0D",X"36",X"04",X"D0",X"13",X"A9",X"FF",X"8D",X"01",X"03",X"4C",X"8C", + X"A6",X"AD",X"04",X"03",X"0D",X"3A",X"04",X"D0",X"03",X"8D",X"01",X"03",X"AD",X"00",X"02",X"C9", + X"02",X"D0",X"2E",X"A9",X"01",X"8D",X"01",X"03",X"AD",X"0A",X"60",X"09",X"E0",X"8D",X"00",X"21", + X"AD",X"06",X"02",X"18",X"69",X"03",X"29",X"3F",X"8D",X"06",X"02",X"A2",X"00",X"20",X"1B",X"A3", + X"AD",X"3A",X"04",X"0D",X"04",X"03",X"D0",X"09",X"A5",X"BA",X"D0",X"05",X"A9",X"03",X"8D",X"00", + X"02",X"60",X"BD",X"03",X"02",X"0A",X"0A",X"A8",X"B9",X"88",X"B1",X"9D",X"00",X"21",X"B9",X"89", + X"B1",X"9D",X"01",X"21",X"B9",X"8A",X"B1",X"9D",X"02",X"21",X"B9",X"8B",X"B1",X"9D",X"03",X"21", + X"BD",X"03",X"02",X"18",X"7D",X"02",X"02",X"29",X"07",X"9D",X"03",X"02",X"D0",X"0F",X"BD",X"02", + X"02",X"30",X"0B",X"A9",X"FF",X"9D",X"02",X"02",X"A9",X"08",X"9D",X"03",X"02",X"60",X"78",X"A4", + X"40",X"A9",X"00",X"99",X"00",X"21",X"99",X"06",X"21",X"A9",X"60",X"99",X"05",X"21",X"A9",X"00", + X"99",X"04",X"21",X"A9",X"A4",X"99",X"05",X"21",X"A9",X"60",X"99",X"07",X"21",X"A9",X"71",X"99", + X"03",X"21",X"A9",X"03",X"9D",X"00",X"02",X"58",X"60",X"64",X"A8",X"48",X"A7",X"E3",X"A8",X"0F", + X"A9",X"02",X"AA",X"E5",X"A9",X"9B",X"A9",X"20",X"AA",X"44",X"AA",X"89",X"AB",X"ED",X"AC",X"7F", + X"A9",X"78",X"AF",X"4C",X"AD",X"6E",X"AE",X"17",X"AE",X"A5",X"73",X"F0",X"13",X"A9",X"0A",X"8D", + X"05",X"02",X"A0",X"50",X"20",X"87",X"B0",X"AD",X"0E",X"02",X"8D",X"06",X"02",X"4C",X"83",X"A7", + X"A9",X"03",X"8D",X"05",X"02",X"24",X"EF",X"10",X"33",X"A9",X"05",X"8D",X"05",X"02",X"A0",X"50", + X"20",X"87",X"B0",X"A5",X"47",X"30",X"22",X"AD",X"0E",X"02",X"8D",X"06",X"02",X"A5",X"F7",X"C9", + X"06",X"B0",X"13",X"A2",X"00",X"20",X"B4",X"C9",X"A5",X"73",X"D0",X"07",X"AD",X"0A",X"60",X"29", + X"03",X"F0",X"03",X"20",X"DE",X"C3",X"20",X"DE",X"A7",X"4C",X"5C",X"A6",X"AD",X"5C",X"04",X"8D", + X"05",X"02",X"AD",X"00",X"80",X"29",X"0F",X"49",X"0F",X"F0",X"0F",X"A8",X"B9",X"C0",X"A7",X"30", + X"09",X"8D",X"06",X"02",X"20",X"B4",X"C9",X"20",X"DE",X"C3",X"20",X"DE",X"A7",X"4C",X"5C",X"A6", + X"80",X"10",X"30",X"80",X"20",X"18",X"28",X"80",X"00",X"08",X"38",X"80",X"80",X"80",X"80",X"80", + X"8A",X"18",X"69",X"10",X"AA",X"C9",X"50",X"D0",X"44",X"A9",X"00",X"85",X"4F",X"60",X"A5",X"73", + X"D0",X"1A",X"24",X"EF",X"10",X"17",X"AD",X"0E",X"02",X"85",X"71",X"A5",X"F7",X"C9",X"07",X"F0", + X"2A",X"C9",X"02",X"90",X"07",X"C9",X"04",X"B0",X"03",X"4C",X"1B",X"A8",X"60",X"AD",X"00",X"88", + X"29",X"0F",X"49",X"0F",X"D0",X"05",X"A9",X"00",X"85",X"4F",X"60",X"A8",X"B9",X"C0",X"A7",X"30", + X"EB",X"85",X"71",X"C6",X"4F",X"10",X"E5",X"A9",X"02",X"85",X"4F",X"A2",X"10",X"BD",X"00",X"02", + X"29",X"03",X"F0",X"AC",X"86",X"40",X"A5",X"71",X"8D",X"04",X"02",X"9D",X"06",X"02",X"24",X"EF", + X"10",X"06",X"AD",X"06",X"02",X"9D",X"06",X"02",X"20",X"22",X"BD",X"A9",X"01",X"9D",X"0D",X"02", + X"AD",X"09",X"02",X"9D",X"09",X"02",X"AD",X"0A",X"02",X"9D",X"0A",X"02",X"AD",X"0B",X"02",X"9D", + X"0B",X"02",X"AD",X"0C",X"02",X"9D",X"0C",X"02",X"A9",X"00",X"9D",X"00",X"02",X"20",X"B4",X"C9", + X"A9",X"00",X"85",X"40",X"60",X"20",X"7C",X"AF",X"A5",X"82",X"F0",X"33",X"A8",X"DE",X"0D",X"02", + X"10",X"2A",X"AD",X"3F",X"04",X"09",X"01",X"9D",X"0D",X"02",X"A9",X"FF",X"85",X"47",X"4A",X"85", + X"46",X"20",X"03",X"CE",X"A6",X"40",X"9D",X"0E",X"02",X"A5",X"83",X"9D",X"01",X"02",X"A5",X"84", + X"18",X"69",X"01",X"29",X"0F",X"D0",X"02",X"A9",X"0F",X"9D",X"05",X"02",X"4C",X"D8",X"A8",X"86", + X"82",X"DE",X"0D",X"02",X"10",X"28",X"AD",X"0A",X"60",X"10",X"11",X"A9",X"FF",X"85",X"47",X"4A", + X"85",X"46",X"A0",X"00",X"20",X"03",X"CE",X"A6",X"40",X"4C",X"C1",X"A8",X"AD",X"0A",X"60",X"29", + X"3F",X"9D",X"0E",X"02",X"AD",X"3F",X"04",X"0A",X"0A",X"09",X"01",X"9D",X"0D",X"02",X"BD",X"01", + X"02",X"85",X"83",X"BD",X"05",X"02",X"85",X"84",X"20",X"31",X"B1",X"20",X"B4",X"C9",X"20",X"DE", + X"C3",X"4C",X"5C",X"A6",X"20",X"7C",X"AF",X"DE",X"0D",X"02",X"D0",X"18",X"BD",X"00",X"02",X"29", + X"F7",X"9D",X"00",X"02",X"AD",X"3F",X"04",X"09",X"01",X"9D",X"0D",X"02",X"20",X"23",X"B0",X"A6", + X"40",X"9D",X"0E",X"02",X"20",X"31",X"B1",X"20",X"B4",X"C9",X"20",X"DE",X"C3",X"4C",X"5C",X"A6", + X"24",X"EF",X"30",X"27",X"A5",X"6C",X"F0",X"08",X"A9",X"20",X"9D",X"0D",X"02",X"4C",X"30",X"A9", + X"AD",X"01",X"03",X"D0",X"58",X"A5",X"6F",X"29",X"0E",X"D0",X"52",X"DE",X"0D",X"02",X"30",X"2A", + X"BD",X"02",X"02",X"F0",X"06",X"BD",X"0D",X"02",X"4C",X"41",X"A9",X"BD",X"0D",X"02",X"18",X"69", + X"0C",X"A8",X"29",X"30",X"4A",X"4A",X"4A",X"4A",X"18",X"69",X"71",X"9D",X"03",X"21",X"98",X"29", + X"0F",X"0A",X"0A",X"0A",X"9D",X"02",X"21",X"4C",X"CA",X"AF",X"A9",X"02",X"9D",X"01",X"02",X"BD", + X"02",X"02",X"F0",X"05",X"A9",X"06",X"9D",X"01",X"02",X"A9",X"01",X"9D",X"0D",X"02",X"A9",X"00", + X"9D",X"00",X"02",X"A9",X"71",X"9D",X"0B",X"21",X"A9",X"00",X"9D",X"0A",X"21",X"4C",X"5C",X"A6", + X"24",X"EF",X"30",X"F9",X"A9",X"00",X"9D",X"05",X"02",X"A5",X"6F",X"29",X"07",X"D0",X"0A",X"DE", + X"0D",X"02",X"10",X"05",X"A9",X"03",X"9D",X"00",X"02",X"4C",X"5C",X"A6",X"20",X"7C",X"AF",X"AD", + X"04",X"03",X"0D",X"56",X"04",X"0D",X"57",X"04",X"D0",X"09",X"AD",X"05",X"02",X"9D",X"05",X"02", + X"4C",X"DA",X"A9",X"DE",X"0D",X"02",X"30",X"03",X"4C",X"DA",X"A9",X"AD",X"05",X"02",X"38",X"E9", + X"01",X"9D",X"05",X"02",X"AD",X"3F",X"04",X"09",X"01",X"9D",X"0D",X"02",X"A9",X"FF",X"85",X"46", + X"A0",X"00",X"20",X"03",X"CE",X"A6",X"40",X"9D",X"0E",X"02",X"20",X"31",X"B1",X"20",X"B4",X"C9", + X"20",X"DE",X"C3",X"4C",X"5C",X"A6",X"20",X"7C",X"AF",X"DE",X"0D",X"02",X"10",X"09",X"AD",X"3F", + X"04",X"9D",X"0D",X"02",X"20",X"C5",X"B0",X"20",X"31",X"B1",X"20",X"B4",X"C9",X"20",X"DE",X"C3", + X"4C",X"5C",X"A6",X"FE",X"0D",X"02",X"BD",X"0D",X"02",X"C9",X"18",X"90",X"08",X"A9",X"03",X"9D", + X"00",X"02",X"4C",X"5C",X"A6",X"BD",X"06",X"02",X"20",X"B4",X"C9",X"20",X"DE",X"C3",X"4C",X"5C", + X"A6",X"20",X"7C",X"AF",X"DE",X"0D",X"02",X"D0",X"10",X"AD",X"3F",X"04",X"09",X"01",X"9D",X"0D", + X"02",X"20",X"56",X"B0",X"A6",X"40",X"9D",X"0E",X"02",X"20",X"31",X"B1",X"20",X"B4",X"C9",X"20", + X"DE",X"C3",X"4C",X"5C",X"A6",X"20",X"7C",X"AF",X"FE",X"05",X"02",X"BD",X"05",X"02",X"C9",X"10", + X"90",X"03",X"DE",X"05",X"02",X"AD",X"5D",X"04",X"C9",X"1C",X"B0",X"1E",X"BD",X"02",X"02",X"10", + X"10",X"A9",X"02",X"9D",X"02",X"02",X"A9",X"00",X"9D",X"03",X"02",X"20",X"3B",X"AB",X"9D",X"06", + X"02",X"20",X"B4",X"C9",X"20",X"DE",X"C3",X"4C",X"5C",X"A6",X"BD",X"04",X"02",X"10",X"40",X"A9", + X"00",X"9D",X"04",X"02",X"9D",X"03",X"02",X"20",X"3B",X"AB",X"9D",X"0E",X"02",X"AD",X"5D",X"04", + X"C9",X"2D",X"90",X"0C",X"AD",X"0A",X"60",X"29",X"8F",X"10",X"13",X"29",X"0F",X"4C",X"A9",X"AA", + X"AD",X"0A",X"60",X"29",X"87",X"10",X"07",X"29",X"07",X"49",X"FF",X"18",X"69",X"01",X"18",X"7D", + X"0E",X"02",X"29",X"3F",X"9D",X"06",X"02",X"A9",X"08",X"9D",X"0D",X"02",X"4C",X"71",X"AA",X"BD", + X"02",X"02",X"10",X"20",X"DE",X"0D",X"02",X"10",X"A8",X"A9",X"01",X"9D",X"02",X"02",X"A9",X"00", + X"9D",X"03",X"02",X"AD",X"5D",X"04",X"38",X"E9",X"25",X"30",X"4A",X"C9",X"20",X"90",X"02",X"A9", + X"1F",X"9D",X"03",X"02",X"DE",X"0D",X"02",X"10",X"3C",X"FE",X"04",X"02",X"BD",X"04",X"02",X"C9", + X"05",X"90",X"19",X"A9",X"00",X"9D",X"04",X"02",X"BD",X"03",X"02",X"18",X"69",X"20",X"90",X"09", + X"18",X"69",X"01",X"29",X"1F",X"D0",X"02",X"A9",X"1F",X"9D",X"03",X"02",X"BD",X"03",X"02",X"29", + X"1F",X"0A",X"A8",X"B9",X"4A",X"AB",X"9D",X"0D",X"02",X"B9",X"4B",X"AB",X"9D",X"02",X"02",X"20", + X"3B",X"AB",X"9D",X"0E",X"02",X"BD",X"02",X"02",X"85",X"1B",X"20",X"38",X"B1",X"A9",X"00",X"9D", + X"02",X"02",X"20",X"B4",X"C9",X"20",X"DE",X"C3",X"4C",X"5C",X"A6",X"A9",X"FF",X"85",X"47",X"4A", + X"85",X"46",X"A0",X"00",X"20",X"03",X"CE",X"A6",X"40",X"60",X"07",X"01",X"07",X"01",X"06",X"01", + X"06",X"01",X"05",X"01",X"05",X"01",X"04",X"01",X"04",X"01",X"04",X"02",X"04",X"02",X"04",X"03", + X"04",X"03",X"04",X"04",X"04",X"04",X"04",X"05",X"04",X"05",X"04",X"06",X"03",X"06",X"03",X"07", + X"03",X"08",X"03",X"09",X"03",X"0A",X"02",X"08",X"02",X"09",X"01",X"07",X"01",X"08",X"01",X"09", + X"01",X"0A",X"01",X"0B",X"01",X"0C",X"01",X"0D",X"01",X"0E",X"A5",X"6C",X"D0",X"04",X"A5",X"73", + X"F0",X"0D",X"A9",X"0F",X"9D",X"05",X"02",X"A9",X"01",X"1D",X"00",X"02",X"9D",X"00",X"02",X"DE", + X"0D",X"02",X"F0",X"20",X"BD",X"00",X"02",X"10",X"06",X"20",X"31",X"B1",X"4C",X"BB",X"AB",X"BD", + X"06",X"02",X"18",X"7D",X"04",X"02",X"29",X"3F",X"9D",X"06",X"02",X"20",X"B4",X"C9",X"20",X"DE", + X"C3",X"4C",X"5C",X"A6",X"BD",X"02",X"02",X"85",X"4C",X"BD",X"03",X"02",X"85",X"4D",X"20",X"CF", + X"AC",X"BD",X"00",X"02",X"10",X"5E",X"8A",X"A8",X"84",X"19",X"98",X"18",X"69",X"10",X"D0",X"0C", + X"E4",X"19",X"D0",X"37",X"A9",X"00",X"8D",X"34",X"01",X"4C",X"1B",X"AC",X"A8",X"B9",X"01",X"02", + X"29",X"0F",X"C9",X"09",X"D0",X"E4",X"B9",X"00",X"02",X"29",X"03",X"F0",X"DB",X"4C",X"DA",X"AB", + X"9D",X"0D",X"02",X"C8",X"B1",X"4C",X"9D",X"04",X"02",X"A9",X"02",X"18",X"65",X"4C",X"9D",X"02", + X"02",X"A9",X"00",X"65",X"4D",X"9D",X"03",X"02",X"4C",X"AF",X"AB",X"BD",X"00",X"02",X"29",X"7F", + X"9D",X"00",X"02",X"AD",X"27",X"04",X"C5",X"40",X"F0",X"3B",X"AD",X"25",X"04",X"85",X"4C",X"AD", + X"26",X"04",X"85",X"4D",X"A0",X"00",X"B1",X"4C",X"10",X"C6",X"A9",X"80",X"1D",X"00",X"02",X"9D", + X"00",X"02",X"FE",X"05",X"02",X"BD",X"05",X"02",X"C9",X"10",X"D0",X"0B",X"DE",X"05",X"02",X"A9", + X"01",X"1D",X"00",X"02",X"9D",X"00",X"02",X"EC",X"27",X"04",X"F0",X"44",X"AD",X"35",X"01",X"9D", + X"0E",X"02",X"4C",X"B6",X"AC",X"A0",X"00",X"B1",X"4C",X"D0",X"11",X"A9",X"C6",X"85",X"4C",X"8D", + X"25",X"04",X"A9",X"B1",X"85",X"4D",X"8D",X"26",X"04",X"4C",X"65",X"AC",X"30",X"0D",X"A5",X"4C", + X"8D",X"25",X"04",X"A5",X"4D",X"8D",X"26",X"04",X"4C",X"34",X"AC",X"AD",X"34",X"01",X"F0",X"EE", + X"A9",X"02",X"18",X"65",X"4C",X"85",X"4C",X"A9",X"00",X"65",X"4D",X"85",X"4D",X"4C",X"65",X"AC", + X"A9",X"7F",X"8D",X"34",X"01",X"85",X"46",X"A0",X"00",X"20",X"03",X"CE",X"29",X"3F",X"A6",X"40", + X"9D",X"0E",X"02",X"8D",X"35",X"01",X"A0",X"01",X"B1",X"4C",X"9D",X"0D",X"02",X"A9",X"02",X"18", + X"65",X"4C",X"9D",X"02",X"02",X"A9",X"00",X"65",X"4D",X"9D",X"03",X"02",X"4C",X"A9",X"AB",X"A0", + X"50",X"E0",X"50",X"F0",X"15",X"B9",X"00",X"02",X"19",X"01",X"02",X"29",X"0F",X"C9",X"09",X"F0", + X"09",X"98",X"18",X"69",X"10",X"A8",X"C4",X"40",X"90",X"EB",X"8C",X"27",X"04",X"60",X"20",X"7C", + X"AF",X"A0",X"50",X"B9",X"01",X"02",X"19",X"00",X"02",X"29",X"0F",X"C9",X"09",X"F0",X"0A",X"98", + X"18",X"69",X"10",X"A8",X"D0",X"ED",X"4C",X"DE",X"AF",X"DE",X"0D",X"02",X"10",X"18",X"AD",X"3F", + X"04",X"09",X"01",X"9D",X"0D",X"02",X"A9",X"7F",X"85",X"46",X"A0",X"00",X"20",X"03",X"CE",X"29", + X"3F",X"A6",X"40",X"9D",X"0E",X"02",X"20",X"31",X"B1",X"20",X"B4",X"C9",X"20",X"DE",X"C3",X"4C", + X"5C",X"A6",X"BD",X"03",X"02",X"C5",X"19",X"B0",X"5E",X"0A",X"7D",X"03",X"02",X"A8",X"B9",X"AD", + X"B1",X"9D",X"02",X"21",X"B9",X"AE",X"B1",X"9D",X"03",X"21",X"4C",X"5C",X"A6",X"A5",X"F6",X"C9", + X"03",X"D0",X"02",X"A9",X"01",X"18",X"69",X"06",X"85",X"19",X"A5",X"6C",X"F0",X"0C",X"BD",X"00", + X"02",X"29",X"03",X"C9",X"01",X"F0",X"11",X"4C",X"DE",X"AF",X"A5",X"73",X"D0",X"F0",X"BD",X"00", + X"02",X"29",X"03",X"D0",X"03",X"4C",X"FE",X"AD",X"DE",X"0D",X"02",X"10",X"B5",X"A5",X"F6",X"C9", + X"03",X"D0",X"05",X"A9",X"04",X"4C",X"8D",X"AD",X"38",X"A9",X"05",X"E5",X"F6",X"9D",X"0D",X"02", + X"BD",X"03",X"02",X"C5",X"19",X"90",X"06",X"20",X"FE",X"A6",X"4C",X"5C",X"A6",X"0A",X"7D",X"03", + X"02",X"A8",X"B9",X"AC",X"B1",X"85",X"46",X"A9",X"60",X"9D",X"01",X"21",X"AD",X"0A",X"60",X"29", + X"07",X"A8",X"B9",X"8D",X"A5",X"9D",X"00",X"21",X"FE",X"03",X"02",X"A9",X"80",X"8D",X"00",X"03", + X"A9",X"00",X"A8",X"48",X"C4",X"40",X"F0",X"24",X"B9",X"01",X"02",X"29",X"0F",X"C9",X"04",X"F0", + X"1B",X"B9",X"00",X"02",X"29",X"03",X"C9",X"02",X"B0",X"12",X"C9",X"01",X"D0",X"09",X"B9",X"01", + X"02",X"29",X"0F",X"C9",X"0D",X"F0",X"05",X"A6",X"40",X"20",X"03",X"CE",X"68",X"18",X"69",X"10", + X"A8",X"D0",X"CF",X"A9",X"00",X"8D",X"00",X"03",X"20",X"46",X"BD",X"4C",X"5C",X"A6",X"DE",X"0D", + X"02",X"10",X"09",X"AD",X"3F",X"04",X"9D",X"0D",X"02",X"20",X"C5",X"B0",X"20",X"31",X"B1",X"20", + X"B4",X"C9",X"20",X"DE",X"C3",X"4C",X"5C",X"A6",X"EE",X"04",X"03",X"AC",X"04",X"03",X"8A",X"99", + X"04",X"03",X"AD",X"01",X"03",X"F0",X"0A",X"10",X"05",X"A9",X"01",X"9D",X"00",X"02",X"4C",X"DE", + X"AF",X"DE",X"0D",X"02",X"10",X"13",X"AD",X"3F",X"04",X"4A",X"09",X"01",X"9D",X"0D",X"02",X"A9", + X"FF",X"85",X"47",X"4A",X"85",X"46",X"20",X"D5",X"B0",X"A5",X"6F",X"D0",X"0D",X"BD",X"05",X"02", + X"18",X"69",X"01",X"C9",X"10",X"B0",X"03",X"9D",X"05",X"02",X"BD",X"05",X"02",X"85",X"19",X"20", + X"31",X"B1",X"C6",X"19",X"10",X"F9",X"20",X"B4",X"C9",X"20",X"DE",X"C3",X"4C",X"5C",X"A6",X"EE", + X"04",X"03",X"AC",X"04",X"03",X"8A",X"99",X"04",X"03",X"AD",X"01",X"03",X"F0",X"0A",X"10",X"05", + X"A9",X"01",X"9D",X"00",X"02",X"4C",X"DE",X"AF",X"BD",X"02",X"02",X"D0",X"58",X"A9",X"00",X"9D", + X"05",X"02",X"DE",X"0D",X"02",X"30",X"12",X"AD",X"0A",X"60",X"29",X"3F",X"D0",X"08",X"AD",X"0A", + X"60",X"29",X"3F",X"9D",X"0E",X"02",X"4C",X"2C",X"AF",X"A9",X"30",X"9D",X"0D",X"02",X"A9",X"50", + X"9D",X"02",X"02",X"A8",X"20",X"49",X"AF",X"B0",X"18",X"98",X"18",X"69",X"10",X"90",X"F1",X"A9", + X"00",X"9D",X"02",X"02",X"9D",X"05",X"02",X"AD",X"3F",X"04",X"0A",X"9D",X"0D",X"02",X"4C",X"5C", + X"A6",X"A9",X"FF",X"85",X"47",X"4A",X"85",X"46",X"20",X"03",X"CE",X"A6",X"40",X"A5",X"47",X"9D", + X"06",X"02",X"4C",X"35",X"AF",X"A8",X"20",X"49",X"AF",X"90",X"D4",X"DE",X"0D",X"02",X"30",X"0E", + X"BD",X"06",X"02",X"18",X"69",X"01",X"29",X"3F",X"9D",X"06",X"02",X"4C",X"2F",X"AF",X"A9",X"FF", + X"9D",X"0D",X"02",X"A5",X"6F",X"29",X"01",X"D0",X"23",X"BD",X"05",X"02",X"18",X"69",X"01",X"C9", + X"10",X"B0",X"03",X"9D",X"05",X"02",X"A9",X"FF",X"85",X"47",X"4A",X"85",X"46",X"20",X"03",X"CE", + X"A6",X"40",X"A5",X"47",X"29",X"3F",X"9D",X"06",X"02",X"9D",X"0E",X"02",X"20",X"31",X"B1",X"20", + X"B4",X"C9",X"20",X"DE",X"C3",X"BD",X"02",X"02",X"F0",X"0C",X"A8",X"A5",X"6F",X"29",X"02",X"D0", + X"05",X"A9",X"E7",X"99",X"00",X"21",X"4C",X"5C",X"A6",X"C4",X"40",X"F0",X"28",X"B9",X"00",X"02", + X"29",X"03",X"C9",X"02",X"B0",X"1F",X"B9",X"01",X"02",X"29",X"0F",X"C9",X"03",X"F0",X"16",X"C9", + X"05",X"F0",X"0C",X"C9",X"08",X"F0",X"0E",X"C9",X"0F",X"F0",X"0A",X"C9",X"0D",X"D0",X"08",X"A5", + X"79",X"C9",X"1E",X"B0",X"02",X"18",X"60",X"38",X"60",X"4C",X"5C",X"A6",X"A5",X"6C",X"05",X"73", + X"0D",X"00",X"02",X"D0",X"52",X"BD",X"00",X"02",X"29",X"03",X"C9",X"01",X"D0",X"39",X"BD",X"01", + X"02",X"29",X"0F",X"A8",X"B9",X"13",X"B0",X"29",X"08",X"D0",X"3C",X"A5",X"6F",X"29",X"07",X"D0", + X"27",X"B9",X"13",X"B0",X"29",X"02",X"D0",X"03",X"DE",X"0D",X"02",X"98",X"0A",X"A8",X"B9",X"00", + X"01",X"9D",X"06",X"21",X"B9",X"01",X"01",X"9D",X"00",X"21",X"BD",X"0D",X"02",X"10",X"09",X"A9", + X"00",X"9D",X"00",X"02",X"9D",X"0D",X"02",X"60",X"68",X"68",X"BD",X"0D",X"02",X"C9",X"08",X"B0", + X"03",X"20",X"D9",X"A2",X"4C",X"5C",X"A6",X"68",X"68",X"A9",X"00",X"9D",X"00",X"02",X"A5",X"6F", + X"29",X"03",X"D0",X"23",X"A0",X"00",X"A9",X"FF",X"85",X"47",X"4A",X"85",X"46",X"20",X"03",X"CE", + X"A6",X"40",X"18",X"69",X"20",X"29",X"3F",X"9D",X"0E",X"02",X"BD",X"05",X"02",X"18",X"69",X"01"); +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/BlackWidow_MiST/rtl/roms/bwidow_pgm_rom3.vhd b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/roms/bwidow_pgm_rom3.vhd new file mode 100644 index 00000000..81f0b444 --- /dev/null +++ b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/roms/bwidow_pgm_rom3.vhd @@ -0,0 +1,278 @@ +library ieee; +use ieee.std_logic_1164.all,ieee.numeric_std.all; + +entity bwidow_pgm_rom3 is +port ( + clk : in std_logic; + addr : in std_logic_vector(11 downto 0); + data : out std_logic_vector(7 downto 0) +); +end entity; + +architecture prom of bwidow_pgm_rom3 is + type rom is array(0 to 4095) of std_logic_vector(7 downto 0); + signal rom_data: rom := ( + X"C9",X"10",X"B0",X"03",X"9D",X"05",X"02",X"20",X"31",X"B1",X"20",X"B4",X"C9",X"20",X"DE",X"C3", + X"4C",X"5C",X"A6",X"16",X"20",X"14",X"60",X"61",X"D0",X"99",X"14",X"EB",X"58",X"D1",X"76",X"00", + X"80",X"6A",X"6A",X"A9",X"FF",X"85",X"47",X"4A",X"85",X"46",X"A9",X"00",X"A8",X"48",X"F0",X"18", + X"B9",X"00",X"02",X"29",X"03",X"C9",X"02",X"B0",X"14",X"B9",X"01",X"02",X"29",X"0F",X"C9",X"0B", + X"D0",X"0B",X"A5",X"9A",X"29",X"03",X"F0",X"05",X"A6",X"40",X"20",X"03",X"CE",X"68",X"18",X"69", + X"10",X"90",X"D9",X"A5",X"47",X"60",X"A9",X"FF",X"85",X"47",X"4A",X"85",X"46",X"A9",X"00",X"A8", + X"48",X"F0",X"16",X"B9",X"00",X"02",X"29",X"03",X"C9",X"02",X"B0",X"12",X"B9",X"01",X"02",X"29", + X"0F",X"C9",X"01",X"F0",X"04",X"C9",X"0B",X"D0",X"05",X"A6",X"40",X"20",X"03",X"CE",X"68",X"18", + X"69",X"10",X"90",X"DB",X"A5",X"47",X"60",X"A9",X"FF",X"85",X"47",X"A9",X"7F",X"85",X"46",X"A0", + X"50",X"84",X"1C",X"B9",X"00",X"02",X"29",X"02",X"D0",X"16",X"24",X"EF",X"30",X"0D",X"B9",X"01", + X"02",X"29",X"0F",X"AA",X"BD",X"13",X"B0",X"29",X"10",X"F0",X"05",X"A6",X"40",X"20",X"03",X"CE", + X"A5",X"1C",X"18",X"69",X"10",X"A8",X"D0",X"D9",X"A5",X"47",X"30",X"4A",X"A6",X"40",X"9D",X"0E", + X"02",X"20",X"31",X"B1",X"60",X"A9",X"FF",X"85",X"47",X"4A",X"85",X"46",X"A0",X"00",X"A6",X"40", + X"20",X"03",X"CE",X"A6",X"40",X"A0",X"50",X"84",X"1C",X"20",X"49",X"AF",X"90",X"05",X"A6",X"40", + X"20",X"03",X"CE",X"A5",X"1C",X"18",X"69",X"10",X"A8",X"D0",X"EC",X"A6",X"40",X"A5",X"47",X"10", + X"11",X"A6",X"40",X"BD",X"06",X"02",X"18",X"69",X"10",X"29",X"3F",X"9D",X"0E",X"02",X"20",X"31", + X"B1",X"60",X"9D",X"0E",X"02",X"60",X"A6",X"40",X"20",X"12",X"B1",X"9D",X"0E",X"02",X"20",X"31", + X"B1",X"60",X"A9",X"00",X"38",X"FD",X"0A",X"02",X"C9",X"80",X"6A",X"85",X"42",X"A9",X"00",X"38", + X"FD",X"0C",X"02",X"C9",X"80",X"6A",X"AA",X"A4",X"42",X"20",X"69",X"A2",X"29",X"3F",X"A6",X"40", + X"60",X"AD",X"44",X"04",X"09",X"01",X"85",X"1B",X"BD",X"0E",X"02",X"38",X"FD",X"06",X"02",X"F0", + X"16",X"30",X"1F",X"C9",X"21",X"B0",X"11",X"C5",X"1B",X"90",X"02",X"A5",X"1B",X"18",X"7D",X"06", + X"02",X"29",X"3F",X"9D",X"06",X"02",X"A8",X"60",X"85",X"1C",X"A9",X"40",X"38",X"E5",X"1C",X"4C", + X"67",X"B1",X"49",X"FF",X"18",X"69",X"01",X"C9",X"21",X"90",X"06",X"38",X"E9",X"20",X"4C",X"47", + X"B1",X"85",X"1C",X"C5",X"1B",X"90",X"04",X"A5",X"1B",X"85",X"1C",X"BD",X"06",X"02",X"38",X"E5", + X"1C",X"29",X"3F",X"9D",X"06",X"02",X"A8",X"60",X"E7",X"60",X"08",X"76",X"E4",X"60",X"07",X"75", + X"E3",X"60",X"4A",X"74",X"E6",X"60",X"11",X"74",X"E2",X"60",X"59",X"73",X"E4",X"60",X"24",X"73", + X"E5",X"60",X"71",X"72",X"E1",X"60",X"3F",X"72",X"E7",X"60",X"0F",X"72",X"03",X"00",X"74",X"04", + X"40",X"73",X"05",X"00",X"73",X"07",X"40",X"72",X"09",X"00",X"72",X"0D",X"40",X"71",X"0F",X"20", + X"71",X"11",X"00",X"71",X"EE",X"00",X"0A",X"00",X"05",X"02",X"05",X"00",X"05",X"FE",X"0A",X"00", + X"05",X"02",X"05",X"00",X"FF",X"14",X"20",X"02",X"20",X"FE",X"14",X"00",X"FF",X"14",X"10",X"02", + X"0F",X"00",X"08",X"FC",X"0F",X"00",X"FF",X"1E",X"20",X"02",X"10",X"FC",X"08",X"08",X"FF",X"14", + X"00",X"24",X"EF",X"30",X"03",X"4C",X"26",X"B4",X"A5",X"5E",X"D0",X"2B",X"A5",X"79",X"C9",X"02", + X"B0",X"15",X"A5",X"F7",X"29",X"01",X"D0",X"0E",X"A2",X"10",X"A9",X"03",X"9D",X"00",X"02",X"8A", + X"18",X"69",X"10",X"AA",X"D0",X"F4",X"60",X"A9",X"00",X"85",X"73",X"A5",X"F7",X"0A",X"AA",X"BD", + X"29",X"B2",X"48",X"BD",X"28",X"B2",X"48",X"60",X"37",X"B2",X"BA",X"B2",X"62",X"B2",X"BA",X"B2", + X"7D",X"B2",X"BA",X"B2",X"9D",X"B2",X"BA",X"B2",X"A9",X"E6",X"85",X"4C",X"A9",X"B2",X"85",X"4D", + X"A2",X"40",X"A9",X"00",X"8D",X"09",X"02",X"8D",X"0B",X"02",X"8D",X"0A",X"02",X"A9",X"28",X"8D", + X"0C",X"02",X"4C",X"55",X"B2",X"A9",X"50",X"85",X"49",X"A9",X"02",X"85",X"4A",X"20",X"5C",X"A0", + X"4C",X"CE",X"B2",X"A9",X"26",X"85",X"4C",X"A9",X"B3",X"85",X"4D",X"A2",X"60",X"A9",X"00",X"8D", + X"09",X"02",X"8D",X"0B",X"02",X"8D",X"0A",X"02",X"8D",X"0C",X"02",X"4C",X"55",X"B2",X"A9",X"86", + X"85",X"4C",X"A9",X"B3",X"85",X"4D",X"A2",X"60",X"A9",X"00",X"8D",X"09",X"02",X"8D",X"0B",X"02", + X"8D",X"0A",X"02",X"8D",X"03",X"03",X"A9",X"40",X"8D",X"0C",X"02",X"4C",X"55",X"B2",X"A9",X"E6", + X"85",X"4C",X"A9",X"B3",X"85",X"4D",X"A2",X"40",X"A9",X"00",X"8D",X"09",X"02",X"8D",X"0B",X"02", + X"8D",X"0C",X"02",X"A9",X"18",X"8D",X"0A",X"02",X"4C",X"55",X"B2",X"A2",X"50",X"BD",X"00",X"02", + X"29",X"03",X"C9",X"03",X"F0",X"01",X"60",X"8A",X"18",X"69",X"10",X"AA",X"D0",X"EF",X"A9",X"00", + X"85",X"79",X"E6",X"F7",X"A5",X"F7",X"C9",X"08",X"B0",X"01",X"60",X"A9",X"02",X"8D",X"23",X"04", + X"A9",X"00",X"8D",X"22",X"04",X"60",X"00",X"0B",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"F0",X"18",X"00",X"03",X"00",X"0B",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"E0",X"10",X"00",X"03",X"00",X"0B",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"D0",X"08",X"00",X"03",X"00",X"0B",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"C0",X"06",X"00",X"03",X"00",X"00",X"00",X"00",X"00",X"01",X"00",X"00",X"00",X"00", + X"28",X"00",X"50",X"01",X"00",X"02",X"00",X"00",X"00",X"00",X"00",X"01",X"00",X"00",X"00",X"00", + X"64",X"00",X"14",X"01",X"00",X"02",X"00",X"02",X"00",X"00",X"00",X"01",X"00",X"00",X"00",X"00", + X"50",X"00",X"C4",X"01",X"00",X"03",X"00",X"02",X"00",X"00",X"00",X"01",X"00",X"00",X"00",X"00", + X"D8",X"00",X"B0",X"01",X"00",X"03",X"00",X"07",X"00",X"00",X"00",X"01",X"00",X"00",X"00",X"00", + X"9C",X"00",X"EC",X"01",X"00",X"04",X"00",X"07",X"00",X"00",X"00",X"01",X"00",X"00",X"00",X"00", + X"B0",X"00",X"3C",X"01",X"00",X"04",X"00",X"03",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"10",X"18",X"00",X"03",X"00",X"03",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"10",X"00",X"E0",X"14",X"00",X"03",X"00",X"03",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"40",X"00",X"C0",X"10",X"00",X"03",X"00",X"03",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"28",X"00",X"E0",X"0C",X"00",X"03",X"00",X"03",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"F0",X"00",X"D8",X"08",X"00",X"03",X"00",X"03",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"B8",X"00",X"C8",X"04",X"00",X"03",X"00",X"0D",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"A0",X"00",X"18",X"04",X"00",X"03",X"00",X"02",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"98",X"00",X"30",X"04",X"00",X"03",X"00",X"0D",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"A8",X"00",X"E0",X"04",X"00",X"03",X"00",X"07",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"98",X"00",X"D8",X"04",X"00",X"03",X"AD",X"01",X"03",X"05",X"73",X"05",X"6C",X"F0",X"01",X"60", + X"A5",X"5E",X"D0",X"FB",X"A2",X"0F",X"A9",X"00",X"18",X"7D",X"48",X"04",X"CA",X"10",X"F9",X"8D", + X"36",X"04",X"AD",X"28",X"04",X"D0",X"08",X"AD",X"36",X"04",X"F0",X"36",X"4C",X"B2",X"B4",X"AD", + X"36",X"04",X"D0",X"09",X"AD",X"3A",X"04",X"D0",X"03",X"4C",X"D2",X"B4",X"60",X"CE",X"21",X"01", + X"30",X"01",X"60",X"AE",X"58",X"04",X"E0",X"08",X"90",X"02",X"A2",X"07",X"BD",X"D4",X"B7",X"8D", + X"21",X"01",X"A9",X"0B",X"38",X"ED",X"51",X"04",X"0A",X"0A",X"0A",X"0A",X"69",X"50",X"AA",X"4C", + X"EB",X"B6",X"AD",X"3A",X"04",X"0D",X"04",X"03",X"D0",X"03",X"4C",X"D2",X"B4",X"A5",X"79",X"29", + X"0F",X"F0",X"01",X"60",X"A5",X"6F",X"29",X"1F",X"D0",X"F9",X"EE",X"44",X"04",X"AD",X"44",X"04", + X"C9",X"08",X"90",X"03",X"CE",X"44",X"04",X"AD",X"3D",X"04",X"C9",X"0B",X"B0",X"03",X"EE",X"3D", + X"04",X"60",X"AD",X"3A",X"04",X"18",X"6D",X"04",X"03",X"CD",X"3D",X"04",X"90",X"06",X"20",X"8D", + X"B4",X"4C",X"9F",X"B6",X"AD",X"3A",X"04",X"F0",X"03",X"4C",X"94",X"B6",X"4C",X"9F",X"B6",X"4C", + X"8E",X"B5",X"20",X"DC",X"B7",X"A9",X"A0",X"8D",X"00",X"25",X"A9",X"00",X"85",X"4B",X"A9",X"0D", + X"85",X"5E",X"A9",X"00",X"8D",X"01",X"03",X"85",X"4B",X"8D",X"03",X"03",X"8D",X"D3",X"03",X"85", + X"79",X"EE",X"5D",X"04",X"24",X"EF",X"30",X"D7",X"AD",X"5A",X"04",X"D0",X"D2",X"AD",X"5D",X"04", + X"F0",X"CD",X"4A",X"B0",X"CA",X"4A",X"B0",X"C7",X"38",X"E9",X"01",X"85",X"19",X"0A",X"65",X"19", + X"AA",X"A9",X"00",X"85",X"A5",X"A9",X"0E",X"85",X"5E",X"38",X"AD",X"43",X"04",X"FD",X"D7",X"03", + X"AD",X"42",X"04",X"FD",X"D6",X"03",X"AD",X"41",X"04",X"FD",X"D5",X"03",X"90",X"52",X"AD",X"41", + X"04",X"9D",X"D5",X"03",X"85",X"1B",X"AD",X"42",X"04",X"9D",X"D6",X"03",X"85",X"1C",X"AD",X"43", + X"04",X"9D",X"D7",X"03",X"85",X"1D",X"A5",X"1C",X"F8",X"18",X"69",X"50",X"85",X"1C",X"A5",X"1B", + X"69",X"01",X"85",X"1B",X"D8",X"E8",X"E8",X"E8",X"E0",X"4B",X"B0",X"24",X"BD",X"D7",X"03",X"38", + X"E5",X"1D",X"BD",X"D6",X"03",X"E5",X"1C",X"BD",X"D5",X"03",X"E5",X"1B",X"B0",X"D8",X"A5",X"1D", + X"9D",X"D7",X"03",X"A5",X"1C",X"9D",X"D6",X"03",X"A5",X"1B",X"9D",X"D5",X"03",X"4C",X"46",X"B5", + X"A5",X"9A",X"8D",X"5B",X"04",X"AD",X"5D",X"04",X"8D",X"59",X"04",X"20",X"56",X"BD",X"AD",X"5D", + X"04",X"C9",X"21",X"90",X"11",X"29",X"07",X"D0",X"0D",X"EE",X"5C",X"04",X"AD",X"5C",X"04",X"C9", + X"08",X"90",X"03",X"CE",X"5C",X"04",X"AD",X"5D",X"04",X"29",X"03",X"49",X"03",X"D0",X"35",X"8D", + X"34",X"01",X"A9",X"01",X"8D",X"28",X"04",X"06",X"9A",X"E6",X"9A",X"A2",X"10",X"A9",X"03",X"9D", + X"00",X"02",X"8A",X"18",X"69",X"10",X"AA",X"D0",X"F4",X"A9",X"01",X"8D",X"21",X"01",X"AD",X"58", + X"04",X"18",X"69",X"01",X"C9",X"0A",X"B0",X"03",X"8D",X"58",X"04",X"8D",X"44",X"04",X"A9",X"0B", + X"8D",X"51",X"04",X"60",X"AD",X"5D",X"04",X"85",X"19",X"38",X"E9",X"3C",X"30",X"07",X"29",X"07", + X"18",X"69",X"34",X"85",X"19",X"A5",X"19",X"0A",X"65",X"19",X"AA",X"BD",X"AF",X"B8",X"29",X"0F", + X"0A",X"09",X"01",X"8D",X"3F",X"04",X"BD",X"AF",X"B8",X"4A",X"4A",X"4A",X"4A",X"8D",X"44",X"04", + X"BD",X"B0",X"B8",X"8D",X"3D",X"04",X"BD",X"B1",X"B8",X"8D",X"21",X"01",X"8D",X"3C",X"04",X"A0", + X"00",X"8C",X"28",X"04",X"A2",X"00",X"8E",X"36",X"04",X"A4",X"19",X"F0",X"13",X"BD",X"63",X"B9", + X"F0",X"0A",X"29",X"F0",X"C9",X"E0",X"B0",X"04",X"E8",X"4C",X"2D",X"B6",X"E8",X"88",X"D0",X"ED", + X"BD",X"63",X"B9",X"4A",X"4A",X"4A",X"4A",X"A8",X"BD",X"63",X"B9",X"29",X"0F",X"C0",X"0D",X"B0", + X"0C",X"85",X"19",X"A5",X"F6",X"F0",X"1D",X"C9",X"02",X"F0",X"23",X"A5",X"19",X"99",X"48",X"04", + X"18",X"6D",X"36",X"04",X"8D",X"36",X"04",X"BD",X"63",X"B9",X"29",X"F0",X"C9",X"E0",X"B0",X"14", + X"E8",X"4C",X"40",X"B6",X"A5",X"19",X"0A",X"65",X"19",X"4A",X"4A",X"4C",X"5D",X"B6",X"A5",X"19", + X"0A",X"4C",X"76",X"B6",X"AD",X"5A",X"04",X"F0",X"0A",X"CE",X"5A",X"04",X"D0",X"05",X"A9",X"01", + X"8D",X"4D",X"04",X"60",X"CE",X"21",X"01",X"D0",X"24",X"AD",X"3C",X"04",X"8D",X"21",X"01",X"A2", + X"50",X"BD",X"00",X"02",X"29",X"03",X"C9",X"03",X"F0",X"3C",X"18",X"8A",X"69",X"10",X"AA",X"C9", + X"00",X"D0",X"EE",X"AD",X"04",X"03",X"F0",X"06",X"A5",X"79",X"8D",X"3E",X"04",X"60",X"A5",X"79", + X"38",X"ED",X"3E",X"04",X"C9",X"0F",X"90",X"F5",X"AD",X"0A",X"60",X"29",X"F0",X"C9",X"50",X"90", + X"F7",X"A8",X"B9",X"01",X"02",X"29",X"0F",X"C9",X"05",X"F0",X"ED",X"A9",X"03",X"99",X"00",X"02", + X"A5",X"79",X"8D",X"3E",X"04",X"60",X"AD",X"28",X"04",X"F0",X"1C",X"AD",X"51",X"04",X"C9",X"0B", + X"F0",X"06",X"AD",X"36",X"01",X"4C",X"2B",X"B7",X"AD",X"0A",X"60",X"29",X"0F",X"C9",X"0C",X"B0", + X"F7",X"8D",X"36",X"01",X"4C",X"2B",X"B7",X"A9",X"00",X"85",X"1B",X"AD",X"D1",X"03",X"C9",X"0B", + X"F0",X"04",X"85",X"1B",X"E6",X"1B",X"AD",X"0A",X"60",X"29",X"0F",X"C9",X"0C",X"90",X"03",X"38", + X"E9",X"0C",X"CD",X"D1",X"03",X"F0",X"EF",X"C5",X"1B",X"F0",X"EB",X"A8",X"B9",X"C8",X"B7",X"9D", + X"06",X"02",X"A9",X"01",X"9D",X"0D",X"02",X"98",X"0A",X"0A",X"A8",X"B9",X"E7",X"B7",X"9D",X"09", + X"02",X"B9",X"E8",X"B7",X"9D",X"0A",X"02",X"B9",X"E9",X"B7",X"9D",X"0B",X"02",X"B9",X"EA",X"B7", + X"9D",X"0C",X"02",X"8A",X"A8",X"AD",X"28",X"04",X"F0",X"17",X"AD",X"44",X"04",X"99",X"05",X"02", + X"A9",X"C6",X"9D",X"02",X"02",X"A9",X"B1",X"9D",X"03",X"02",X"A2",X"09",X"86",X"19",X"4C",X"AC", + X"B7",X"AD",X"44",X"04",X"99",X"05",X"02",X"AD",X"0A",X"60",X"29",X"0F",X"AA",X"85",X"19",X"C9", + X"0E",X"90",X"24",X"AD",X"3A",X"04",X"D0",X"0D",X"AD",X"36",X"04",X"CD",X"56",X"04",X"F0",X"2F", + X"CD",X"57",X"04",X"F0",X"2A",X"A5",X"79",X"C9",X"05",X"90",X"23",X"A9",X"00",X"99",X"02",X"02", + X"AD",X"44",X"04",X"4A",X"99",X"05",X"02",X"BD",X"48",X"04",X"F0",X"CB",X"DE",X"48",X"04",X"B9", + X"01",X"02",X"29",X"F0",X"05",X"19",X"99",X"01",X"02",X"A9",X"00",X"99",X"00",X"02",X"60",X"A9", + X"00",X"8D",X"56",X"04",X"8D",X"57",X"04",X"60",X"25",X"29",X"2E",X"32",X"37",X"3B",X"05",X"09", + X"0E",X"12",X"17",X"1B",X"10",X"09",X"08",X"07",X"06",X"05",X"04",X"03",X"A2",X"0B",X"A9",X"00", + X"9D",X"29",X"04",X"CA",X"10",X"FA",X"60",X"00",X"28",X"00",X"50",X"00",X"50",X"00",X"3C",X"00", + X"64",X"00",X"14",X"00",X"64",X"00",X"EC",X"00",X"50",X"00",X"C4",X"00",X"28",X"00",X"B0",X"00", + X"D8",X"00",X"B0",X"00",X"B0",X"00",X"C4",X"00",X"9C",X"00",X"EC",X"00",X"9C",X"00",X"14",X"00", + X"B0",X"00",X"3C",X"00",X"D8",X"00",X"50",X"5E",X"5E",X"58",X"5E",X"5E",X"5E",X"5E",X"5E",X"58", + X"5E",X"5E",X"5E",X"6A",X"64",X"5E",X"58",X"52",X"4C",X"52",X"58",X"5E",X"64",X"6A",X"6A",X"5E", + X"5E",X"98",X"5E",X"5E",X"98",X"5E",X"5E",X"98",X"5E",X"5E",X"98",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"5E",X"9E",X"5E",X"9E",X"5E",X"9E",X"5E",X"9E",X"5E", + X"9E",X"5E",X"9E",X"5E",X"98",X"5E",X"98",X"5E",X"98",X"5E",X"98",X"5E",X"98",X"5E",X"98",X"98", + X"9E",X"A4",X"AA",X"AA",X"AA",X"AA",X"AA",X"92",X"92",X"92",X"92",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"98",X"98",X"98",X"9E",X"9E",X"9E",X"9E",X"9E",X"98", + X"98",X"98",X"98",X"92",X"92",X"92",X"9E",X"9E",X"9E",X"9E",X"9E",X"92",X"92",X"92",X"92",X"9E", + X"9E",X"52",X"9E",X"9E",X"9E",X"9E",X"9E",X"52",X"9E",X"9E",X"9E",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"02",X"BB",X"AA",X"30",X"5F",X"EE",X"3D",X"A8",X"0F", + X"04",X"19",X"1F",X"05",X"19",X"1F",X"06",X"19",X"00",X"00",X"00",X"1F",X"07",X"19",X"2F",X"08", + X"19",X"2F",X"09",X"19",X"00",X"00",X"00",X"3F",X"0A",X"18",X"3F",X"0A",X"17",X"3F",X"0A",X"16", + X"00",X"00",X"00",X"37",X"0A",X"15",X"37",X"0A",X"14",X"47",X"0A",X"14",X"00",X"00",X"00",X"47", + X"0A",X"14",X"47",X"0A",X"14",X"47",X"0A",X"14",X"00",X"00",X"00",X"47",X"0A",X"14",X"47",X"0A", + X"14",X"47",X"0A",X"14",X"00",X"00",X"00",X"47",X"0A",X"14",X"47",X"0A",X"14",X"47",X"0A",X"14", + X"00",X"00",X"00",X"57",X"0A",X"14",X"57",X"0A",X"14",X"57",X"0A",X"14",X"00",X"00",X"00",X"57", + X"0A",X"14",X"57",X"0A",X"14",X"57",X"0A",X"14",X"00",X"00",X"00",X"57",X"0A",X"0F",X"57",X"0A", + X"0F",X"57",X"0A",X"0F",X"00",X"00",X"00",X"57",X"0A",X"0F",X"57",X"0A",X"0F",X"57",X"0A",X"0F", + X"00",X"00",X"00",X"57",X"0B",X"0F",X"57",X"0B",X"0F",X"57",X"0B",X"05",X"00",X"00",X"00",X"57", + X"0A",X"0F",X"57",X"0A",X"0F",X"57",X"0A",X"0F",X"00",X"00",X"00",X"57",X"0B",X"07",X"57",X"0B", + X"07",X"67",X"0B",X"07",X"00",X"00",X"00",X"57",X"0B",X"07",X"67",X"0B",X"07",X"77",X"0B",X"07", + X"00",X"00",X"00",X"25",X"75",X"05",X"E1",X"25",X"75",X"05",X"E1",X"25",X"75",X"05",X"E1",X"00", + X"25",X"75",X"05",X"E1",X"25",X"75",X"05",X"E1",X"25",X"75",X"05",X"E1",X"00",X"25",X"75",X"05", + X"D1",X"E1",X"25",X"75",X"05",X"D2",X"E1",X"25",X"75",X"05",X"D4",X"E1",X"00",X"DB",X"E1",X"25", + X"75",X"05",X"D1",X"E1",X"25",X"75",X"05",X"D2",X"E1",X"00",X"0A",X"F1",X"0A",X"F2",X"0A",X"F3", + X"00",X"25",X"75",X"05",X"D1",X"F1",X"25",X"75",X"05",X"D2",X"F1",X"25",X"75",X"05",X"D4",X"F1", + X"00",X"25",X"75",X"05",X"D1",X"F1",X"25",X"75",X"05",X"D2",X"F1",X"25",X"75",X"05",X"D4",X"F1", + X"00",X"25",X"75",X"05",X"D2",X"F1",X"25",X"75",X"05",X"D4",X"F1",X"25",X"75",X"05",X"D8",X"F1", + X"00",X"25",X"75",X"05",X"D2",X"F1",X"25",X"75",X"05",X"D4",X"F1",X"25",X"75",X"05",X"D8",X"F1", + X"00",X"25",X"75",X"05",X"D2",X"F1",X"25",X"75",X"05",X"D2",X"F2",X"25",X"75",X"05",X"D4",X"F4", + X"00",X"25",X"75",X"05",X"D2",X"F1",X"25",X"75",X"05",X"D4",X"F2",X"25",X"75",X"05",X"D8",X"F4", + X"00",X"25",X"75",X"05",X"D2",X"F1",X"25",X"75",X"05",X"D4",X"F2",X"25",X"75",X"05",X"D8",X"F4", + X"00",X"25",X"75",X"05",X"D2",X"F2",X"25",X"75",X"05",X"D4",X"F2",X"25",X"75",X"05",X"D4",X"F2", + X"00",X"02",X"7A",X"2A",X"D4",X"F3",X"04",X"7A",X"2A",X"D4",X"F3",X"06",X"7A",X"2A",X"D4",X"F3", + X"00",X"06",X"7A",X"2A",X"D4",X"F3",X"08",X"7A",X"2A",X"D4",X"F3",X"0A",X"7A",X"2A",X"D4",X"F3", + X"00",X"90",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"01",X"04",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"6B",X"6E",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"ED",X"F4",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"07",X"10",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"29",X"38",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"55",X"5A",X"00",X"00",X"00",X"00", + X"00",X"00",X"19",X"1C",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"71",X"86",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"9F",X"B0",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"3F",X"4C",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"99",X"9C",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"B5",X"C6",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"8B",X"92",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"B5",X"C6",X"D9",X"DC", + X"00",X"00",X"E1",X"E6",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"02",X"01",X"0F",X"00",X"00",X"2F",X"02",X"FF",X"0F",X"00",X"00",X"00",X"04", + X"0E",X"03",X"79",X"04",X"0E",X"03",X"00",X"04",X"0E",X"03",X"51",X"04",X"0E",X"07",X"00",X"00", + X"8F",X"04",X"00",X"03",X"AF",X"04",X"FF",X"03",X"8B",X"04",X"FF",X"03",X"A6",X"04",X"FF",X"07", + X"00",X"00",X"06",X"30",X"00",X"03",X"00",X"00",X"AF",X"18",X"00",X"01",X"A0",X"18",X"00",X"01", + X"AF",X"18",X"00",X"01",X"A0",X"18",X"00",X"01",X"AF",X"18",X"00",X"01",X"A0",X"18",X"00",X"01", + X"00",X"00",X"00",X"08",X"00",X"02",X"10",X"08",X"10",X"03",X"20",X"08",X"10",X"03",X"30",X"08", + X"10",X"03",X"40",X"08",X"10",X"03",X"50",X"08",X"10",X"03",X"60",X"08",X"10",X"03",X"00",X"00", + X"2F",X"08",X"00",X"02",X"AF",X"08",X"00",X"04",X"AD",X"08",X"FF",X"0E",X"00",X"00",X"60",X"10", + X"00",X"01",X"50",X"10",X"F8",X"01",X"48",X"10",X"18",X"01",X"60",X"18",X"F0",X"01",X"60",X"10", + X"F8",X"01",X"60",X"10",X"08",X"10",X"00",X"00",X"8C",X"20",X"02",X"01",X"8E",X"10",X"00",X"04", + X"8E",X"38",X"FF",X"04",X"00",X"18",X"00",X"01",X"00",X"00",X"00",X"04",X"10",X"0A",X"00",X"04", + X"10",X"0A",X"00",X"00",X"05",X"04",X"05",X"02",X"CF",X"04",X"00",X"02",X"0F",X"04",X"00",X"02", + X"00",X"04",X"00",X"04",X"C5",X"04",X"05",X"02",X"0F",X"04",X"00",X"02",X"CF",X"04",X"00",X"02", + X"00",X"04",X"00",X"04",X"00",X"00",X"0F",X"04",X"00",X"01",X"00",X"00",X"A8",X"04",X"40",X"01", + X"00",X"00",X"F0",X"09",X"F0",X"02",X"D0",X"09",X"10",X"02",X"F0",X"09",X"F0",X"02",X"D0",X"09", + X"10",X"02",X"F0",X"09",X"F0",X"02",X"D0",X"09",X"10",X"02",X"F0",X"09",X"F0",X"02",X"D0",X"09", + X"10",X"02",X"F0",X"09",X"F0",X"02",X"D0",X"09",X"10",X"02",X"00",X"00",X"AF",X"09",X"FF",X"0A", + X"A7",X"09",X"01",X"0A",X"00",X"00",X"08",X"04",X"20",X"0A",X"08",X"04",X"01",X"09",X"10",X"0C", + X"04",X"0C",X"00",X"00",X"0F",X"04",X"00",X"0A",X"6F",X"04",X"00",X"09",X"6F",X"10",X"FF",X"09", + X"00",X"00",X"B0",X"02",X"00",X"11",X"00",X"00",X"C0",X"02",X"02",X"11",X"00",X"00",X"60",X"01", + X"00",X"01",X"60",X"01",X"FF",X"40",X"48",X"01",X"FF",X"30",X"30",X"01",X"FF",X"20",X"24",X"01", + X"FF",X"18",X"1E",X"01",X"FF",X"14",X"1B",X"01",X"FF",X"12",X"18",X"01",X"FF",X"10",X"00",X"00", + X"A8",X"DE",X"00",X"01",X"A0",X"01",X"00",X"01",X"00",X"00",X"00",X"04",X"00",X"06",X"1B",X"04", + X"0E",X"03",X"00",X"04",X"00",X"01",X"51",X"04",X"0E",X"03",X"00",X"04",X"00",X"01",X"87",X"04", + X"0E",X"03",X"00",X"04",X"00",X"01",X"BD",X"04",X"0E",X"02",X"00",X"00",X"4F",X"04",X"00",X"03", + X"8F",X"04",X"00",X"03",X"AE",X"04",X"FF",X"03",X"4B",X"04",X"00",X"01",X"AA",X"04",X"FF",X"03", + X"47",X"04",X"00",X"01",X"A6",X"04",X"FF",X"03",X"43",X"04",X"00",X"01",X"A2",X"04",X"FE",X"02", + X"00",X"00",X"0A",X"FF",X"00",X"10",X"00",X"00",X"40",X"20",X"01",X"0A",X"4A",X"10",X"01",X"06", + X"00",X"00",X"20",X"01",X"00",X"03",X"70",X"01",X"10",X"06",X"00",X"00",X"AF",X"01",X"FE",X"02", + X"A0",X"01",X"00",X"01",X"A2",X"02",X"FF",X"03",X"00",X"00",X"36",X"10",X"00",X"03",X"43",X"10", + X"0E",X"0A",X"D0",X"10",X"00",X"07",X"00",X"00",X"A3",X"10",X"04",X"04",X"AF",X"10",X"FF",X"10", + X"00",X"00",X"A9",X"0F",X"D0",X"36",X"A9",X"9F",X"D0",X"32",X"A9",X"3F",X"D0",X"2E",X"A9",X"4F", + X"D0",X"2A",X"A9",X"1F",X"D0",X"26",X"A9",X"5F",X"D0",X"22",X"A9",X"6F",X"D0",X"1E",X"A9",X"7F", + X"D0",X"1A",X"A9",X"AF",X"D0",X"16",X"A9",X"BF",X"D0",X"12",X"A9",X"CF",X"D0",X"0E",X"A9",X"2F", + X"D0",X"0A",X"A9",X"DF",X"D0",X"06",X"A9",X"8F",X"D0",X"02",X"A9",X"EF",X"24",X"EF",X"30",X"22", + X"86",X"ED",X"84",X"EE",X"A8",X"A2",X"0F",X"B9",X"42",X"BA",X"F0",X"0E",X"86",X"F3",X"95",X"AD", + X"A9",X"01",X"95",X"CD",X"95",X"DD",X"A9",X"FF",X"85",X"F3",X"88",X"CA",X"10",X"E9",X"A6",X"ED", + X"A4",X"EE",X"60",X"A2",X"0F",X"B5",X"AD",X"F0",X"7E",X"E4",X"F3",X"F0",X"7A",X"D6",X"CD",X"D0", + X"76",X"D6",X"DD",X"D0",X"38",X"F6",X"AD",X"F6",X"AD",X"B5",X"AD",X"0A",X"A8",X"B0",X"10",X"B9", + X"2C",X"BB",X"95",X"BD",X"B9",X"2F",X"BB",X"95",X"DD",X"B9",X"2D",X"BB",X"4C",X"BC",X"BD",X"B9", + X"2C",X"BC",X"95",X"BD",X"B9",X"2F",X"BC",X"95",X"DD",X"B9",X"2D",X"BC",X"95",X"CD",X"D0",X"0A", + X"95",X"AD",X"B5",X"BD",X"F0",X"04",X"95",X"AD",X"D0",X"CB",X"4C",X"F8",X"BD",X"0A",X"A8",X"B0", + X"0B",X"B9",X"2D",X"BB",X"95",X"CD",X"B9",X"2E",X"BB",X"4C",X"E4",X"BD",X"B9",X"2D",X"BC",X"95", + X"CD",X"B9",X"2E",X"BC",X"B4",X"BD",X"18",X"75",X"BD",X"95",X"BD",X"8A",X"4A",X"90",X"09",X"98", + X"55",X"BD",X"29",X"F0",X"55",X"BD",X"95",X"BD",X"B5",X"BD",X"E0",X"08",X"90",X"06",X"9D",X"F8", + X"67",X"4C",X"07",X"BE",X"9D",X"00",X"60",X"CA",X"30",X"03",X"4C",X"85",X"BD",X"60",X"A9",X"00", + X"8D",X"0F",X"60",X"8D",X"0F",X"68",X"A9",X"07",X"8D",X"0F",X"60",X"8D",X"0F",X"68",X"A2",X"07", + X"A9",X"00",X"9D",X"00",X"60",X"9D",X"00",X"68",X"95",X"AD",X"95",X"BD",X"CA",X"10",X"F3",X"A9", + X"00",X"8D",X"08",X"60",X"A2",X"00",X"8E",X"08",X"68",X"60",X"02",X"04",X"04",X"FE",X"C4",X"04", + X"03",X"02",X"FC",X"00",X"05",X"01",X"00",X"FC",X"F8",X"05",X"FF",X"FE",X"FC",X"F8",X"04",X"FD", + X"FC",X"FE",X"F0",X"02",X"FC",X"FC",X"00",X"EC",X"FE",X"FC",X"FC",X"02",X"E4",X"FC",X"FD",X"FE", + X"04",X"E0",X"FB",X"FF",X"00",X"04",X"D8",X"FB",X"01",X"02",X"04",X"D8",X"FC",X"03",X"04",X"02", + X"D0",X"FE",X"04",X"04",X"00",X"CC",X"A2",X"00",X"A9",X"01",X"85",X"6D",X"20",X"C9",X"D8",X"8A", + X"48",X"BD",X"3A",X"BE",X"85",X"15",X"E8",X"BD",X"3A",X"BE",X"85",X"16",X"A5",X"4E",X"85",X"02", + X"A5",X"15",X"85",X"03",X"20",X"67",X"A0",X"85",X"09",X"A5",X"01",X"85",X"08",X"A5",X"16",X"85", + X"03",X"20",X"67",X"A0",X"85",X"0B",X"A5",X"01",X"85",X"0A",X"A9",X"00",X"85",X"0C",X"20",X"E2", + X"D8",X"A9",X"A0",X"85",X"0C",X"A9",X"58",X"85",X"02",X"A5",X"15",X"85",X"03",X"20",X"67",X"A0", + X"85",X"09",X"A5",X"01",X"85",X"08",X"A5",X"16",X"85",X"03",X"20",X"67",X"A0",X"85",X"0B",X"A5", + X"01",X"85",X"0A",X"20",X"E2",X"D8",X"68",X"18",X"69",X"05",X"AA",X"C9",X"3C",X"90",X"9D",X"20", + X"C9",X"D8",X"A5",X"11",X"85",X"74",X"A5",X"12",X"85",X"75",X"A5",X"4E",X"8D",X"80",X"89",X"85", + X"05",X"A9",X"00",X"85",X"0C",X"85",X"07",X"AA",X"BD",X"3A",X"BE",X"85",X"03",X"A5",X"05",X"85", + X"02",X"20",X"67",X"A0",X"85",X"09",X"A5",X"01",X"85",X"08",X"E8",X"BD",X"3A",X"BE",X"85",X"03", + X"20",X"67",X"A0",X"85",X"0B",X"A5",X"01",X"85",X"0A",X"20",X"E2",X"D8",X"A9",X"A1",X"A2",X"00", + X"20",X"5B",X"D8",X"A9",X"A0",X"85",X"0C",X"A5",X"07",X"18",X"69",X"05",X"C9",X"3C",X"90",X"C5", + X"AD",X"3A",X"BE",X"85",X"03",X"20",X"67",X"A0",X"85",X"09",X"A5",X"01",X"85",X"08",X"AD",X"3C", + X"BE",X"85",X"03",X"20",X"67",X"A0",X"85",X"0B",X"A5",X"01",X"85",X"0A",X"20",X"E2",X"D8",X"A9", + X"00",X"85",X"0C",X"20",X"C9",X"D8",X"E6",X"6D",X"A5",X"05",X"18",X"65",X"4E",X"C9",X"58",X"90", + X"8B",X"60",X"29",X"36",X"00",X"09",X"16",X"20",X"29",X"36",X"00",X"09",X"16",X"20",X"80",X"0C", + X"00",X"0A",X"80",X"1B",X"00",X"19",X"00",X"14",X"00",X"37",X"80",X"25",X"00",X"1E",X"80",X"52", + X"00",X"32",X"00",X"28",X"00",X"6E",X"80",X"3E",X"00",X"32",X"80",X"89",X"00",X"4B",X"00",X"3C", + X"00",X"A5",X"80",X"57",X"00",X"46",X"80",X"C0",X"00",X"64",X"00",X"50",X"00",X"DC",X"00",X"00", + X"5A",X"00",X"00",X"00",X"B4",X"00",X"00",X"00",X"0E",X"01",X"00",X"00",X"68",X"01",X"00",X"00", + X"C2",X"01",X"00",X"00",X"1C",X"02",X"00",X"00",X"76",X"02",X"00",X"00",X"D0",X"02",X"00",X"00", + X"2A",X"03",X"00",X"00",X"84",X"03",X"00",X"00",X"DE",X"03",X"00",X"00",X"38",X"04",X"00",X"00", + X"92",X"04",X"00",X"00",X"EC",X"04",X"00",X"00",X"46",X"05",X"00",X"00",X"A0",X"05",X"06",X"00", + X"5A",X"00",X"0C",X"00",X"B4",X"00",X"12",X"00",X"0E",X"01",X"18",X"00",X"68",X"01",X"1E",X"00", + X"C2",X"01",X"24",X"00",X"1C",X"02",X"2A",X"00",X"76",X"02",X"30",X"00",X"D0",X"02",X"36",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/BlackWidow_MiST/rtl/roms/bwidow_pgm_rom4.vhd b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/roms/bwidow_pgm_rom4.vhd new file mode 100644 index 00000000..b52fd797 --- /dev/null +++ b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/roms/bwidow_pgm_rom4.vhd @@ -0,0 +1,278 @@ +library ieee; +use ieee.std_logic_1164.all,ieee.numeric_std.all; + +entity bwidow_pgm_rom4 is +port ( + clk : in std_logic; + addr : in std_logic_vector(11 downto 0); + data : out std_logic_vector(7 downto 0) +); +end entity; + +architecture prom of bwidow_pgm_rom4 is + type rom is array(0 to 4095) of std_logic_vector(7 downto 0); + signal rom_data: rom := ( + X"2A",X"03",X"3C",X"00",X"84",X"03",X"42",X"00",X"DE",X"03",X"48",X"00",X"38",X"04",X"4E",X"00", + X"92",X"04",X"54",X"00",X"EC",X"04",X"5A",X"00",X"46",X"05",X"60",X"00",X"A0",X"05",X"12",X"00", + X"5A",X"00",X"24",X"00",X"B4",X"00",X"36",X"00",X"0E",X"01",X"48",X"00",X"68",X"01",X"5A",X"00", + X"C2",X"01",X"6C",X"00",X"1C",X"02",X"7E",X"00",X"76",X"02",X"90",X"00",X"D0",X"02",X"A2",X"00", + X"2A",X"03",X"B4",X"00",X"84",X"03",X"C6",X"00",X"DE",X"03",X"D8",X"00",X"38",X"04",X"EA",X"00", + X"92",X"04",X"FC",X"00",X"EC",X"04",X"0E",X"01",X"46",X"05",X"20",X"01",X"A0",X"05",X"18",X"00", + X"54",X"00",X"30",X"00",X"A8",X"00",X"48",X"00",X"FC",X"00",X"60",X"00",X"50",X"01",X"78",X"00", + X"A4",X"01",X"90",X"00",X"F8",X"01",X"A8",X"00",X"4C",X"02",X"C0",X"00",X"A0",X"02",X"D8",X"00", + X"F4",X"02",X"F0",X"00",X"48",X"03",X"08",X"01",X"9C",X"03",X"20",X"01",X"F0",X"03",X"38",X"01", + X"44",X"04",X"50",X"01",X"98",X"04",X"68",X"01",X"EC",X"04",X"80",X"01",X"40",X"05",X"24",X"00", + X"54",X"00",X"48",X"00",X"A8",X"00",X"6C",X"00",X"FC",X"00",X"90",X"00",X"50",X"01",X"B4",X"00", + X"A4",X"01",X"D8",X"00",X"F8",X"01",X"FC",X"00",X"4C",X"02",X"20",X"01",X"A0",X"02",X"44",X"01", + X"F4",X"02",X"68",X"01",X"48",X"03",X"8C",X"01",X"9C",X"03",X"B0",X"01",X"F0",X"03",X"D4",X"01", + X"44",X"04",X"F8",X"01",X"98",X"04",X"1C",X"02",X"EC",X"04",X"40",X"02",X"40",X"05",X"2A",X"00", + X"4E",X"00",X"54",X"00",X"9C",X"00",X"7E",X"00",X"EA",X"00",X"A8",X"00",X"38",X"01",X"D2",X"00", + X"86",X"01",X"FC",X"00",X"D4",X"01",X"26",X"01",X"22",X"02",X"50",X"01",X"70",X"02",X"7A",X"01", + X"BE",X"02",X"A4",X"01",X"0C",X"03",X"CE",X"01",X"5A",X"03",X"F8",X"01",X"A8",X"03",X"22",X"02", + X"F6",X"03",X"4C",X"02",X"44",X"04",X"76",X"02",X"92",X"04",X"A0",X"02",X"E0",X"04",X"30",X"00", + X"48",X"00",X"60",X"00",X"90",X"00",X"90",X"00",X"D8",X"00",X"C0",X"00",X"20",X"01",X"F0",X"00", + X"68",X"01",X"20",X"01",X"B0",X"01",X"50",X"01",X"F8",X"01",X"80",X"01",X"40",X"02",X"B0",X"01", + X"88",X"02",X"E0",X"01",X"D0",X"02",X"10",X"02",X"18",X"03",X"40",X"02",X"60",X"03",X"70",X"02", + X"A8",X"03",X"A0",X"02",X"F0",X"03",X"D0",X"02",X"38",X"04",X"00",X"03",X"80",X"04",X"3C",X"00", + X"48",X"00",X"78",X"00",X"90",X"00",X"B4",X"00",X"D8",X"00",X"F0",X"00",X"20",X"01",X"2C",X"01", + X"68",X"01",X"68",X"01",X"B0",X"01",X"A4",X"01",X"F8",X"01",X"E0",X"01",X"40",X"02",X"1C",X"02", + X"88",X"02",X"58",X"02",X"D0",X"02",X"94",X"02",X"18",X"03",X"D0",X"02",X"60",X"03",X"0C",X"03", + X"A8",X"03",X"48",X"03",X"F0",X"03",X"84",X"03",X"38",X"04",X"C0",X"03",X"80",X"04",X"42",X"00", + X"42",X"00",X"84",X"00",X"84",X"00",X"C6",X"00",X"C6",X"00",X"08",X"01",X"08",X"01",X"4A",X"01", + X"4A",X"01",X"8C",X"01",X"8C",X"01",X"CE",X"01",X"CE",X"01",X"10",X"02",X"10",X"02",X"52",X"02", + X"52",X"02",X"94",X"02",X"94",X"02",X"D6",X"02",X"D6",X"02",X"18",X"03",X"18",X"03",X"5A",X"03", + X"5A",X"03",X"9C",X"03",X"9C",X"03",X"DE",X"03",X"DE",X"03",X"20",X"04",X"20",X"04",X"48",X"00", + X"3C",X"00",X"90",X"00",X"78",X"00",X"D8",X"00",X"B4",X"00",X"20",X"01",X"F0",X"00",X"68",X"01", + X"2C",X"01",X"B0",X"01",X"68",X"01",X"F8",X"01",X"A4",X"01",X"40",X"02",X"E0",X"01",X"88",X"02", + X"1C",X"02",X"D0",X"02",X"58",X"02",X"18",X"03",X"94",X"02",X"60",X"03",X"D0",X"02",X"A8",X"03", + X"0C",X"03",X"F0",X"03",X"48",X"03",X"38",X"04",X"84",X"03",X"80",X"04",X"C0",X"03",X"48",X"00", + X"30",X"00",X"90",X"00",X"60",X"00",X"D8",X"00",X"90",X"00",X"20",X"01",X"C0",X"00",X"68",X"01", + X"F0",X"00",X"B0",X"01",X"20",X"01",X"F8",X"01",X"50",X"01",X"40",X"02",X"80",X"01",X"88",X"02", + X"B0",X"01",X"D0",X"02",X"E0",X"01",X"18",X"03",X"10",X"02",X"60",X"03",X"40",X"02",X"A8",X"03", + X"70",X"02",X"F0",X"03",X"A0",X"02",X"38",X"04",X"D0",X"02",X"80",X"04",X"00",X"03",X"4E",X"00", + X"2A",X"00",X"9C",X"00",X"54",X"00",X"EA",X"00",X"7E",X"00",X"38",X"01",X"A8",X"00",X"86",X"01", + X"D2",X"00",X"D4",X"01",X"FC",X"00",X"22",X"02",X"26",X"01",X"70",X"02",X"50",X"01",X"BE",X"02", + X"7A",X"01",X"0C",X"03",X"A4",X"01",X"5A",X"03",X"CE",X"01",X"A8",X"03",X"F8",X"01",X"F6",X"03", + X"22",X"02",X"44",X"04",X"4C",X"02",X"92",X"04",X"76",X"02",X"E0",X"04",X"A0",X"02",X"54",X"00", + X"24",X"00",X"A8",X"00",X"48",X"00",X"FC",X"00",X"6C",X"00",X"50",X"01",X"90",X"00",X"A4",X"01", + X"B4",X"00",X"F8",X"01",X"D8",X"00",X"4C",X"02",X"FC",X"00",X"A0",X"02",X"20",X"01",X"F4",X"02", + X"44",X"01",X"48",X"03",X"68",X"01",X"9C",X"03",X"8C",X"01",X"F0",X"03",X"B0",X"01",X"44",X"04", + X"D4",X"01",X"98",X"04",X"F8",X"01",X"EC",X"04",X"1C",X"02",X"40",X"05",X"40",X"02",X"54",X"00", + X"18",X"00",X"A8",X"00",X"30",X"00",X"FC",X"00",X"48",X"00",X"50",X"01",X"60",X"00",X"A4",X"01", + X"78",X"00",X"F8",X"01",X"90",X"00",X"4C",X"02",X"A8",X"00",X"A0",X"02",X"C0",X"00",X"F4",X"02", + X"D8",X"00",X"48",X"03",X"F0",X"00",X"9C",X"03",X"08",X"01",X"F0",X"03",X"20",X"01",X"44",X"04", + X"38",X"01",X"98",X"04",X"50",X"01",X"EC",X"04",X"68",X"01",X"40",X"05",X"80",X"01",X"5A",X"00", + X"12",X"00",X"B4",X"00",X"24",X"00",X"0E",X"01",X"36",X"00",X"68",X"01",X"48",X"00",X"C2",X"01", + X"5A",X"00",X"1C",X"02",X"6C",X"00",X"76",X"02",X"7E",X"00",X"D0",X"02",X"90",X"00",X"2A",X"03", + X"A2",X"00",X"84",X"03",X"B4",X"00",X"DE",X"03",X"C6",X"00",X"38",X"04",X"D8",X"00",X"92",X"04", + X"EA",X"00",X"EC",X"04",X"FC",X"00",X"46",X"05",X"0E",X"01",X"A0",X"05",X"20",X"01",X"5A",X"00", + X"06",X"00",X"B4",X"00",X"0C",X"00",X"0E",X"01",X"12",X"00",X"68",X"01",X"18",X"00",X"C2",X"01", + X"1E",X"00",X"1C",X"02",X"24",X"00",X"76",X"02",X"2A",X"00",X"D0",X"02",X"30",X"00",X"2A",X"03", + X"36",X"00",X"84",X"03",X"3C",X"00",X"DE",X"03",X"42",X"00",X"38",X"04",X"48",X"00",X"92",X"04", + X"4E",X"00",X"EC",X"04",X"54",X"00",X"46",X"05",X"5A",X"00",X"A0",X"05",X"60",X"00",X"5A",X"00", + X"00",X"00",X"B4",X"00",X"00",X"00",X"0E",X"01",X"00",X"00",X"68",X"01",X"00",X"00",X"C2",X"01", + X"00",X"00",X"1C",X"02",X"00",X"00",X"76",X"02",X"00",X"00",X"D0",X"02",X"00",X"00",X"2A",X"03", + X"00",X"00",X"84",X"03",X"00",X"00",X"DE",X"03",X"00",X"00",X"38",X"04",X"00",X"00",X"92",X"04", + X"00",X"00",X"EC",X"04",X"00",X"00",X"46",X"05",X"00",X"00",X"A0",X"05",X"00",X"00",X"A6",X"40", + X"D0",X"06",X"AD",X"04",X"02",X"4C",X"EB",X"C3",X"BD",X"06",X"02",X"20",X"D9",X"A2",X"A6",X"40", + X"BD",X"01",X"02",X"29",X"0F",X"A8",X"B9",X"13",X"B0",X"29",X"40",X"F0",X"03",X"4C",X"12",X"C6", + X"BD",X"00",X"02",X"29",X"03",X"D0",X"0A",X"A5",X"6C",X"D0",X"06",X"A6",X"40",X"A5",X"73",X"F0", + X"03",X"4C",X"5B",X"C6",X"20",X"7A",X"C5",X"20",X"8C",X"C4",X"A6",X"40",X"D0",X"06",X"AD",X"22", + X"01",X"8D",X"D1",X"03",X"AC",X"22",X"01",X"B9",X"29",X"04",X"F0",X"2F",X"A8",X"29",X"C0",X"C9", + X"40",X"F0",X"03",X"4C",X"3D",X"C4",X"E0",X"00",X"D0",X"03",X"4C",X"12",X"C6",X"98",X"29",X"3F", + X"18",X"65",X"59",X"AA",X"A5",X"5B",X"DD",X"6E",X"BF",X"A5",X"5C",X"FD",X"6F",X"BF",X"F0",X"10", + X"10",X"05",X"49",X"FF",X"18",X"69",X"01",X"C9",X"04",X"90",X"05",X"A6",X"40",X"4C",X"12",X"C6", + X"A6",X"40",X"BD",X"01",X"02",X"29",X"0F",X"C9",X"06",X"D0",X"03",X"4C",X"C5",X"C5",X"98",X"29", + X"C0",X"C9",X"C0",X"D0",X"03",X"4C",X"B7",X"C5",X"20",X"42",X"BD",X"AC",X"22",X"01",X"B9",X"56", + X"D5",X"A6",X"40",X"9D",X"06",X"02",X"20",X"B4",X"C9",X"4C",X"5B",X"C6",X"A5",X"59",X"0A",X"85", + X"19",X"A5",X"5A",X"2A",X"85",X"1B",X"A5",X"5B",X"C5",X"19",X"A5",X"5C",X"E5",X"1B",X"90",X"10", + X"A0",X"05",X"A5",X"44",X"30",X"02",X"A0",X"0B",X"8C",X"22",X"01",X"A9",X"02",X"85",X"59",X"60", + X"A5",X"59",X"18",X"65",X"19",X"85",X"19",X"A5",X"1B",X"65",X"5A",X"6A",X"66",X"19",X"4A",X"66", + X"19",X"85",X"1B",X"A5",X"19",X"C5",X"5B",X"A5",X"1B",X"E5",X"5C",X"B0",X"30",X"A0",X"00",X"A5", + X"42",X"10",X"0B",X"A0",X"0A",X"A5",X"44",X"10",X"0B",X"A0",X"06",X"4C",X"E4",X"C4",X"A5",X"44", + X"10",X"02",X"A0",X"04",X"8C",X"22",X"01",X"46",X"5A",X"66",X"59",X"18",X"A5",X"59",X"65",X"5B", + X"85",X"5B",X"A5",X"5A",X"65",X"5C",X"85",X"5C",X"A9",X"00",X"85",X"59",X"60",X"A5",X"5B",X"85", + X"19",X"A5",X"5C",X"85",X"1B",X"06",X"19",X"26",X"1B",X"06",X"19",X"26",X"1B",X"B0",X"30",X"A5", + X"19",X"65",X"5B",X"85",X"19",X"A5",X"1B",X"65",X"5C",X"85",X"1B",X"B0",X"22",X"A5",X"59",X"C5", + X"19",X"A5",X"5A",X"E5",X"1B",X"90",X"18",X"A0",X"02",X"A5",X"42",X"10",X"02",X"A0",X"08",X"8C", + X"22",X"01",X"A5",X"59",X"85",X"5B",X"A5",X"5A",X"85",X"5C",X"A9",X"00",X"85",X"59",X"60",X"A0", + X"01",X"A5",X"42",X"10",X"0B",X"A0",X"07",X"A5",X"44",X"30",X"0B",X"A0",X"09",X"4C",X"56",X"C5", + X"A5",X"44",X"10",X"02",X"A0",X"03",X"8C",X"22",X"01",X"06",X"59",X"26",X"5A",X"18",X"A5",X"59", + X"65",X"5B",X"85",X"5B",X"A5",X"5A",X"65",X"5C",X"85",X"5C",X"B0",X"05",X"A9",X"04",X"85",X"59", + X"60",X"A9",X"FF",X"85",X"5B",X"85",X"5C",X"4C",X"6C",X"C5",X"BD",X"09",X"02",X"85",X"59",X"BD", + X"0A",X"02",X"85",X"5A",X"85",X"42",X"10",X"10",X"49",X"FF",X"85",X"5A",X"A5",X"59",X"49",X"FF", + X"85",X"59",X"E6",X"59",X"D0",X"02",X"E6",X"5A",X"BD",X"0B",X"02",X"85",X"5B",X"BD",X"0C",X"02", + X"85",X"5C",X"85",X"44",X"10",X"10",X"49",X"FF",X"85",X"5C",X"A5",X"5B",X"49",X"FF",X"85",X"5B", + X"E6",X"5B",X"D0",X"02",X"E6",X"5C",X"60",X"AC",X"22",X"01",X"A6",X"40",X"BD",X"01",X"02",X"29", + X"0F",X"C9",X"06",X"D0",X"1F",X"20",X"36",X"BD",X"AE",X"22",X"01",X"BD",X"29",X"04",X"20",X"CA", + X"A1",X"A9",X"A1",X"A0",X"00",X"91",X"49",X"AC",X"22",X"01",X"A9",X"00",X"99",X"29",X"04",X"A6", + X"40",X"4C",X"5B",X"C6",X"B9",X"62",X"BF",X"38",X"FD",X"06",X"02",X"38",X"E9",X"01",X"10",X"07", + X"85",X"19",X"A9",X"40",X"18",X"65",X"19",X"29",X"3F",X"9D",X"06",X"02",X"BD",X"01",X"02",X"29", + X"0F",X"D0",X"07",X"BD",X"06",X"02",X"09",X"80",X"85",X"82",X"20",X"B4",X"C9",X"20",X"42",X"BD", + X"A6",X"40",X"BD",X"00",X"02",X"29",X"08",X"F0",X"01",X"60",X"E0",X"00",X"F0",X"09",X"BD",X"01", + X"02",X"29",X"0F",X"C9",X"07",X"D0",X"34",X"BD",X"0A",X"02",X"85",X"59",X"BD",X"0C",X"02",X"85", + X"5B",X"A9",X"07",X"85",X"5D",X"20",X"03",X"D5",X"A6",X"40",X"90",X"1F",X"BD",X"06",X"02",X"48", + X"AC",X"22",X"01",X"B9",X"56",X"D5",X"A6",X"40",X"9D",X"06",X"02",X"20",X"B4",X"C9",X"20",X"70", + X"C7",X"A6",X"40",X"68",X"9D",X"06",X"02",X"20",X"42",X"BD",X"60",X"20",X"70",X"C7",X"BD",X"00", + X"02",X"29",X"02",X"F0",X"01",X"60",X"8A",X"D0",X"03",X"4C",X"CE",X"C6",X"BD",X"01",X"02",X"29", + X"0F",X"C9",X"03",X"D0",X"20",X"A9",X"07",X"85",X"5D",X"BD",X"0A",X"02",X"85",X"59",X"BD",X"0C", + X"02",X"85",X"5B",X"20",X"03",X"D5",X"90",X"03",X"4C",X"ED",X"C7",X"A9",X"00",X"85",X"5D",X"20", + X"1F",X"D5",X"90",X"F4",X"60",X"BD",X"0A",X"02",X"10",X"05",X"49",X"FF",X"18",X"69",X"01",X"C9", + X"70",X"90",X"17",X"A0",X"6E",X"BD",X"0A",X"02",X"10",X"02",X"A0",X"92",X"98",X"9D",X"0A",X"02", + X"A9",X"00",X"9D",X"09",X"02",X"85",X"19",X"4C",X"E5",X"C6",X"BD",X"0C",X"02",X"10",X"05",X"49", + X"FF",X"18",X"69",X"01",X"C9",X"60",X"B0",X"07",X"60",X"A9",X"03",X"9D",X"00",X"02",X"60",X"A0", + X"5E",X"BD",X"0C",X"02",X"10",X"02",X"A0",X"A2",X"98",X"9D",X"0C",X"02",X"A9",X"00",X"9D",X"0B", + X"02",X"A9",X"20",X"85",X"19",X"A5",X"6C",X"F0",X"29",X"8A",X"A8",X"BD",X"01",X"02",X"29",X"0F", + X"AA",X"C9",X"04",X"F0",X"15",X"C9",X"08",X"F0",X"11",X"C9",X"09",X"F0",X"0D",X"C9",X"0A",X"F0", + X"09",X"C9",X"06",X"D0",X"02",X"A2",X"02",X"FE",X"48",X"04",X"98",X"AA",X"A9",X"03",X"9D",X"00", + X"02",X"60",X"E0",X"50",X"B0",X"03",X"4C",X"C9",X"C6",X"BD",X"01",X"02",X"29",X"0F",X"A8",X"B9", + X"13",X"B0",X"A8",X"29",X"01",X"D0",X"A2",X"98",X"29",X"08",X"F0",X"2A",X"BD",X"00",X"02",X"29", + X"03",X"F0",X"23",X"BD",X"01",X"02",X"29",X"0F",X"C9",X"09",X"D0",X"8D",X"CE",X"03",X"03",X"AD", + X"03",X"03",X"C9",X"F5",X"D0",X"83",X"86",X"19",X"A9",X"01",X"85",X"59",X"A9",X"00",X"85",X"5A", + X"85",X"5B",X"20",X"80",X"D1",X"60",X"A5",X"19",X"38",X"FD",X"06",X"02",X"38",X"E9",X"01",X"10", + X"03",X"18",X"69",X"40",X"29",X"3F",X"9D",X"06",X"02",X"20",X"B4",X"C9",X"20",X"5B",X"C6",X"60", + X"86",X"19",X"BD",X"07",X"02",X"85",X"4C",X"BD",X"08",X"02",X"85",X"4D",X"A2",X"03",X"A0",X"03", + X"B1",X"4C",X"95",X"1B",X"88",X"CA",X"10",X"F8",X"A6",X"19",X"BD",X"06",X"02",X"C9",X"11",X"B0", + X"15",X"20",X"AD",X"C7",X"18",X"BD",X"0B",X"02",X"65",X"1D",X"9D",X"0B",X"02",X"BD",X"0C",X"02", + X"65",X"1E",X"9D",X"0C",X"02",X"60",X"C9",X"21",X"B0",X"15",X"20",X"C6",X"C7",X"18",X"BD",X"09", + X"02",X"65",X"1B",X"9D",X"09",X"02",X"BD",X"0A",X"02",X"65",X"1C",X"9D",X"0A",X"02",X"60",X"C9", + X"31",X"B0",X"15",X"20",X"DB",X"C7",X"38",X"BD",X"0B",X"02",X"E5",X"1D",X"9D",X"0B",X"02",X"BD", + X"0C",X"02",X"E5",X"1E",X"9D",X"0C",X"02",X"60",X"20",X"94",X"C7",X"38",X"BD",X"09",X"02",X"E5", + X"1B",X"9D",X"09",X"02",X"BD",X"0A",X"02",X"E5",X"1C",X"9D",X"0A",X"02",X"60",X"A9",X"00",X"85", + X"59",X"9D",X"01",X"02",X"86",X"19",X"A9",X"13",X"0A",X"AA",X"BD",X"72",X"C9",X"85",X"5A",X"BD", + X"73",X"C9",X"85",X"5B",X"8A",X"48",X"20",X"4E",X"BD",X"68",X"AA",X"AC",X"03",X"03",X"C0",X"04", + X"B0",X"03",X"EE",X"03",X"03",X"F8",X"88",X"30",X"0B",X"BD",X"72",X"C9",X"18",X"65",X"5A",X"85", + X"5A",X"4C",X"16",X"C8",X"D8",X"A5",X"5A",X"A8",X"A6",X"19",X"A9",X"60",X"9D",X"01",X"21",X"A9", + X"00",X"9D",X"00",X"21",X"9D",X"06",X"21",X"A9",X"71",X"9D",X"0B",X"21",X"A9",X"00",X"9D",X"0A", + X"21",X"A5",X"5B",X"4C",X"9D",X"C8",X"86",X"19",X"48",X"A5",X"79",X"8D",X"3E",X"04",X"A9",X"60", + X"9D",X"01",X"21",X"A9",X"00",X"9D",X"00",X"21",X"9D",X"06",X"21",X"68",X"C9",X"22",X"D0",X"2C", + X"24",X"EF",X"30",X"25",X"AD",X"39",X"04",X"F8",X"18",X"6D",X"43",X"04",X"8D",X"43",X"04",X"AD", + X"38",X"04",X"6D",X"42",X"04",X"8D",X"42",X"04",X"AD",X"37",X"04",X"6D",X"41",X"04",X"8D",X"41", + X"04",X"D8",X"A9",X"00",X"A0",X"00",X"20",X"1B",X"CA",X"4C",X"FD",X"C8",X"0A",X"AA",X"A9",X"00", + X"85",X"59",X"BD",X"72",X"C9",X"A8",X"85",X"5A",X"BD",X"73",X"C9",X"85",X"5B",X"20",X"1B",X"CA", + X"A6",X"19",X"BD",X"01",X"02",X"29",X"0F",X"A8",X"B9",X"13",X"B0",X"30",X"40",X"20",X"2E",X"BD", + X"A9",X"00",X"85",X"1C",X"A5",X"19",X"18",X"69",X"04",X"85",X"11",X"A9",X"20",X"18",X"69",X"03", + X"85",X"12",X"20",X"1D",X"C9",X"A6",X"19",X"8A",X"4A",X"4A",X"4A",X"38",X"E9",X"0A",X"A8",X"78", + X"B9",X"B3",X"D8",X"9D",X"04",X"21",X"B9",X"B4",X"D8",X"9D",X"05",X"21",X"A9",X"00",X"9D",X"02", + X"21",X"A9",X"70",X"9D",X"03",X"21",X"A9",X"02",X"9D",X"00",X"02",X"58",X"60",X"78",X"C0",X"0D", + X"D0",X"0B",X"A0",X"05",X"A9",X"00",X"20",X"1B",X"CA",X"A9",X"01",X"D0",X"02",X"A9",X"02",X"9D", + X"00",X"02",X"A9",X"00",X"9D",X"03",X"02",X"A9",X"01",X"9D",X"02",X"02",X"AD",X"64",X"56",X"9D", + X"04",X"21",X"AD",X"65",X"56",X"9D",X"05",X"21",X"58",X"20",X"4A",X"BD",X"60",X"A5",X"59",X"29", + X"0F",X"38",X"F0",X"03",X"18",X"C6",X"1C",X"20",X"AF",X"D7",X"A5",X"5A",X"4A",X"4A",X"4A",X"4A", + X"20",X"4B",X"C9",X"A5",X"5A",X"29",X"0F",X"20",X"4B",X"C9",X"A5",X"5B",X"4A",X"4A",X"4A",X"4A", + X"18",X"20",X"AF",X"D7",X"A5",X"5B",X"18",X"20",X"AF",X"D7",X"60",X"18",X"F0",X"05",X"C6",X"1C", + X"4C",X"AF",X"D7",X"24",X"1C",X"30",X"01",X"38",X"4C",X"AF",X"D7",X"A6",X"40",X"A5",X"08",X"9D", + X"09",X"02",X"A5",X"09",X"9D",X"0A",X"02",X"A5",X"0A",X"9D",X"0B",X"02",X"A5",X"0B",X"9D",X"0C", + X"02",X"60",X"00",X"25",X"00",X"50",X"00",X"75",X"01",X"00",X"01",X"25",X"01",X"50",X"01",X"75", + X"02",X"00",X"02",X"25",X"02",X"50",X"02",X"75",X"03",X"00",X"03",X"25",X"03",X"50",X"03",X"75", + X"04",X"00",X"04",X"25",X"04",X"50",X"04",X"75",X"05",X"00",X"05",X"25",X"05",X"50",X"05",X"75", + X"06",X"00",X"06",X"25",X"06",X"50",X"06",X"75",X"07",X"00",X"07",X"25",X"07",X"50",X"07",X"75", + X"08",X"00",X"10",X"00",X"E0",X"50",X"B0",X"13",X"24",X"EF",X"30",X"0F",X"A5",X"73",X"D0",X"0B", + X"BD",X"06",X"02",X"18",X"69",X"04",X"29",X"38",X"9D",X"06",X"02",X"BD",X"06",X"02",X"85",X"1D", + X"C9",X"11",X"90",X"20",X"C9",X"21",X"B0",X"0A",X"A9",X"20",X"38",X"E5",X"1D",X"85",X"1D",X"4C", + X"F4",X"C9",X"C9",X"31",X"B0",X"08",X"38",X"E9",X"20",X"85",X"1D",X"4C",X"F4",X"C9",X"A9",X"40", + X"E5",X"1D",X"85",X"1D",X"BD",X"05",X"02",X"0A",X"0A",X"0A",X"0A",X"85",X"1C",X"A5",X"1D",X"29", + X"1F",X"4A",X"66",X"1C",X"4A",X"66",X"1C",X"85",X"1B",X"A9",X"9E",X"18",X"65",X"1C",X"9D",X"07", + X"02",X"A9",X"BF",X"65",X"1B",X"9D",X"08",X"02",X"60",X"D4",X"00",X"24",X"EF",X"30",X"67",X"18", + X"F8",X"6D",X"43",X"04",X"8D",X"43",X"04",X"98",X"6D",X"42",X"04",X"8D",X"42",X"04",X"90",X"08", + X"AD",X"41",X"04",X"69",X"00",X"8D",X"41",X"04",X"D8",X"AC",X"45",X"04",X"F0",X"48",X"F8",X"A0", + X"00",X"AD",X"41",X"04",X"C8",X"38",X"ED",X"45",X"04",X"10",X"F9",X"D8",X"88",X"CC",X"47",X"04", + X"F0",X"34",X"8C",X"47",X"04",X"8A",X"48",X"98",X"48",X"AD",X"40",X"04",X"C9",X"06",X"B0",X"1F", + X"EE",X"40",X"04",X"AD",X"C8",X"04",X"F0",X"0E",X"AD",X"C9",X"04",X"F0",X"09",X"AD",X"40",X"04", + X"8D",X"AA",X"04",X"4C",X"7C",X"CA",X"AD",X"40",X"04",X"8D",X"75",X"04",X"20",X"3B",X"9C",X"20", + X"3A",X"BD",X"68",X"A8",X"68",X"AA",X"60",X"AD",X"C9",X"04",X"F0",X"15",X"AD",X"41",X"04",X"8D", + X"AB",X"04",X"AD",X"42",X"04",X"8D",X"AC",X"04",X"AD",X"43",X"04",X"8D",X"AD",X"04",X"4C",X"B3", + X"CA",X"AD",X"41",X"04",X"8D",X"76",X"04",X"AD",X"42",X"04",X"8D",X"77",X"04",X"AD",X"43",X"04", + X"8D",X"78",X"04",X"AD",X"76",X"04",X"8D",X"41",X"04",X"AD",X"77",X"04",X"8D",X"42",X"04",X"AD", + X"78",X"04",X"8D",X"43",X"04",X"A5",X"54",X"85",X"12",X"A5",X"53",X"85",X"11",X"A0",X"00",X"A2", + X"C4",X"24",X"EF",X"30",X"0C",X"AD",X"C9",X"04",X"D0",X"07",X"2C",X"D0",X"03",X"10",X"02",X"A2", + X"C7",X"8A",X"91",X"11",X"20",X"33",X"CB",X"AD",X"AB",X"04",X"8D",X"41",X"04",X"AD",X"AC",X"04", + X"8D",X"42",X"04",X"AD",X"AD",X"04",X"8D",X"43",X"04",X"A5",X"55",X"85",X"11",X"A5",X"56",X"85", + X"12",X"A0",X"00",X"A2",X"C4",X"24",X"EF",X"30",X"0C",X"AD",X"C9",X"04",X"F0",X"07",X"2C",X"D0", + X"03",X"10",X"02",X"A2",X"C7",X"8A",X"91",X"11",X"20",X"33",X"CB",X"AD",X"C9",X"04",X"D0",X"12", + X"AD",X"76",X"04",X"8D",X"41",X"04",X"AD",X"77",X"04",X"8D",X"42",X"04",X"AD",X"78",X"04",X"8D", + X"43",X"04",X"60",X"A9",X"06",X"18",X"65",X"11",X"85",X"11",X"A2",X"00",X"A0",X"00",X"84",X"19", + X"BD",X"41",X"04",X"4A",X"4A",X"4A",X"4A",X"F0",X"02",X"C6",X"19",X"24",X"19",X"18",X"30",X"01", + X"38",X"86",X"1B",X"20",X"AF",X"D7",X"A6",X"1B",X"BD",X"41",X"04",X"29",X"0F",X"F0",X"02",X"C6", + X"19",X"24",X"19",X"18",X"30",X"01",X"38",X"20",X"AF",X"D7",X"A6",X"1B",X"E8",X"E0",X"03",X"D0", + X"CF",X"60",X"CE",X"50",X"0B",X"E4",X"00",X"01",X"90",X"E0",X"10",X"0B",X"E1",X"00",X"01",X"AD", + X"20",X"04",X"C9",X"03",X"F0",X"16",X"AD",X"C8",X"04",X"F0",X"11",X"A2",X"02",X"20",X"B7",X"DC", + X"AD",X"C9",X"04",X"18",X"69",X"01",X"20",X"AF",X"D7",X"4C",X"A1",X"CB",X"A2",X"10",X"20",X"B7", + X"DC",X"AD",X"72",X"CB",X"85",X"59",X"AD",X"73",X"CB",X"85",X"5B",X"AD",X"74",X"CB",X"85",X"65", + X"AD",X"75",X"CB",X"85",X"63",X"AD",X"76",X"CB",X"85",X"5A",X"AD",X"77",X"CB",X"85",X"5C",X"A9", + X"00",X"85",X"19",X"85",X"1D",X"85",X"0C",X"A9",X"01",X"85",X"1C",X"20",X"3B",X"CD",X"A9",X"00", + X"20",X"2C",X"CC",X"A6",X"19",X"BD",X"16",X"03",X"20",X"3F",X"CC",X"88",X"20",X"05",X"D8",X"A5", + X"5B",X"38",X"E5",X"65",X"85",X"5B",X"A5",X"19",X"18",X"69",X"07",X"85",X"19",X"E6",X"1D",X"A5", + X"1C",X"C9",X"11",X"D0",X"21",X"AD",X"78",X"CB",X"85",X"59",X"AD",X"79",X"CB",X"85",X"5B",X"AD", + X"7B",X"CB",X"85",X"65",X"AD",X"7C",X"CB",X"85",X"63",X"AD",X"7D",X"CB",X"85",X"5A",X"AD",X"7E", + X"CB",X"85",X"5C",X"4C",X"CB",X"CB",X"C9",X"21",X"90",X"01",X"60",X"C9",X"16",X"D0",X"F4",X"AD", + X"7A",X"CB",X"85",X"59",X"AD",X"79",X"CB",X"85",X"5B",X"4C",X"13",X"CC",X"AA",X"F0",X"04",X"0A", + X"69",X"14",X"AA",X"BD",X"C4",X"5D",X"20",X"6F",X"CC",X"BD",X"C5",X"5D",X"4C",X"6F",X"CC",X"A2", + X"00",X"86",X"64",X"48",X"29",X"F0",X"4A",X"4A",X"4A",X"20",X"50",X"CC",X"68",X"29",X"0F",X"0A", + X"F0",X"07",X"A2",X"FF",X"86",X"64",X"4C",X"62",X"CC",X"24",X"64",X"30",X"05",X"A2",X"00",X"4C", + X"66",X"CC",X"18",X"69",X"02",X"AA",X"BD",X"C4",X"5D",X"20",X"6F",X"CC",X"BD",X"C5",X"5D",X"91", + X"11",X"C8",X"D0",X"02",X"E6",X"12",X"60",X"E6",X"A3",X"A5",X"19",X"18",X"69",X"07",X"C9",X"8C", + X"90",X"14",X"A9",X"01",X"8D",X"21",X"04",X"A9",X"FF",X"85",X"A3",X"A9",X"00",X"85",X"A4",X"60", + X"A9",X"00",X"85",X"A3",X"85",X"A4",X"85",X"19",X"38",X"A6",X"19",X"BD",X"15",X"03",X"ED",X"43", + X"04",X"BD",X"14",X"03",X"ED",X"42",X"04",X"BD",X"13",X"03",X"ED",X"41",X"04",X"B0",X"C8",X"E0", + X"85",X"F0",X"51",X"A0",X"85",X"B9",X"16",X"03",X"D0",X"0C",X"98",X"38",X"E9",X"07",X"A8",X"10", + X"F4",X"A2",X"00",X"4C",X"04",X"CD",X"98",X"18",X"69",X"07",X"AA",X"C5",X"19",X"F0",X"35",X"A8", + X"38",X"E9",X"07",X"AA",X"BD",X"10",X"03",X"99",X"10",X"03",X"BD",X"11",X"03",X"99",X"11",X"03", + X"BD",X"12",X"03",X"99",X"12",X"03",X"BD",X"13",X"03",X"99",X"13",X"03",X"BD",X"14",X"03",X"99", + X"14",X"03",X"BD",X"15",X"03",X"99",X"15",X"03",X"BD",X"16",X"03",X"99",X"16",X"03",X"8A",X"A8", + X"E4",X"19",X"D0",X"CC",X"86",X"A9",X"AD",X"41",X"04",X"9D",X"13",X"03",X"AD",X"42",X"04",X"9D", + X"14",X"03",X"AD",X"43",X"04",X"9D",X"15",X"03",X"A9",X"00",X"9D",X"10",X"03",X"9D",X"11",X"03", + X"9D",X"12",X"03",X"AD",X"5D",X"04",X"18",X"69",X"01",X"20",X"A1",X"DC",X"9D",X"16",X"03",X"20", + X"0E",X"BE",X"20",X"5A",X"BD",X"A9",X"04",X"8D",X"21",X"04",X"60",X"20",X"C9",X"D8",X"A0",X"00", + X"A9",X"01",X"20",X"12",X"D8",X"A5",X"59",X"A6",X"5B",X"20",X"1D",X"D8",X"A4",X"5A",X"A5",X"5C", + X"20",X"12",X"D8",X"A5",X"1D",X"C5",X"A3",X"D0",X"08",X"A5",X"11",X"85",X"A3",X"A5",X"12",X"85", + X"A4",X"A4",X"63",X"A9",X"00",X"20",X"EF",X"D7",X"A0",X"00",X"AD",X"20",X"04",X"F0",X"17",X"C9", + X"01",X"F0",X"13",X"A5",X"1C",X"20",X"3F",X"CC",X"A9",X"00",X"20",X"2C",X"CC",X"F8",X"18",X"A9", + X"01",X"65",X"1C",X"85",X"1C",X"D8",X"A6",X"19",X"BD",X"10",X"03",X"20",X"DD",X"CD",X"BD",X"10", + X"03",X"29",X"1F",X"20",X"2C",X"CC",X"A6",X"19",X"BD",X"11",X"03",X"20",X"DD",X"CD",X"BD",X"11", + X"03",X"29",X"1F",X"20",X"2C",X"CC",X"A6",X"19",X"BD",X"12",X"03",X"20",X"DD",X"CD",X"BD",X"12", + X"03",X"29",X"1F",X"20",X"2C",X"CC",X"A5",X"63",X"20",X"6F",X"CC",X"A9",X"60",X"20",X"6F",X"CC", + X"A9",X"00",X"20",X"2C",X"CC",X"A6",X"19",X"BD",X"13",X"03",X"20",X"3F",X"CC",X"A6",X"19",X"BD", + X"14",X"03",X"20",X"43",X"CC",X"A6",X"19",X"BD",X"15",X"03",X"4C",X"43",X"CC",X"4A",X"4A",X"4A", + X"4A",X"4A",X"4A",X"AA",X"BD",X"F2",X"CD",X"A6",X"19",X"20",X"6F",X"CC",X"A9",X"60",X"20",X"6F", + X"CC",X"60",X"C4",X"C2",X"C1",X"C7",X"A2",X"00",X"A9",X"00",X"9D",X"10",X"03",X"E8",X"E0",X"8C", + X"D0",X"F6",X"60",X"BD",X"0A",X"02",X"C9",X"80",X"6A",X"85",X"67",X"B9",X"0A",X"02",X"C9",X"80", + X"6A",X"38",X"E5",X"67",X"85",X"42",X"10",X"05",X"49",X"FF",X"18",X"69",X"01",X"85",X"43",X"4A", + X"85",X"67",X"BD",X"0C",X"02",X"C9",X"80",X"6A",X"85",X"69",X"B9",X"0C",X"02",X"C9",X"80",X"6A", + X"38",X"E5",X"69",X"85",X"44",X"10",X"05",X"49",X"FF",X"18",X"69",X"01",X"85",X"45",X"4A",X"85", + X"69",X"C5",X"67",X"90",X"0E",X"A5",X"67",X"18",X"65",X"43",X"4A",X"4A",X"4A",X"18",X"65",X"69", + X"4C",X"5E",X"CE",X"A5",X"69",X"18",X"65",X"45",X"4A",X"4A",X"4A",X"18",X"65",X"67",X"C5",X"46", + X"B0",X"50",X"2C",X"00",X"03",X"10",X"3C",X"98",X"AA",X"D0",X"11",X"A5",X"F6",X"C9",X"03",X"F0", + X"0A",X"A5",X"1B",X"85",X"6C",X"20",X"0E",X"BE",X"20",X"52",X"BD",X"60",X"BD",X"01",X"02",X"29", + X"0F",X"C9",X"0E",X"90",X"06",X"A8",X"A9",X"01",X"99",X"48",X"04",X"BD",X"01",X"02",X"29",X"0F", + X"C9",X"05",X"D0",X"0A",X"A9",X"01",X"9D",X"0D",X"02",X"A9",X"22",X"4C",X"46",X"C8",X"A9",X"13", + X"4C",X"46",X"C8",X"84",X"48",X"85",X"46",X"A6",X"44",X"A4",X"42",X"20",X"69",X"A2",X"29",X"3F", + X"85",X"47",X"60",X"A6",X"40",X"A9",X"00",X"85",X"21",X"BD",X"00",X"02",X"29",X"02",X"F0",X"04", + X"60",X"4C",X"25",X"CF",X"B9",X"00",X"02",X"29",X"02",X"D0",X"F6",X"C4",X"40",X"F0",X"F2",X"A6", + X"40",X"38",X"BD",X"0A",X"02",X"F9",X"0A",X"02",X"85",X"42",X"10",X"06",X"49",X"FF",X"85",X"42", + X"E6",X"42",X"38",X"BD",X"0C",X"02",X"F9",X"0C",X"02",X"85",X"44",X"10",X"06",X"49",X"FF",X"85", + X"44",X"E6",X"44",X"18",X"B9",X"0F",X"02",X"7D",X"0F",X"02",X"C5",X"42",X"90",X"27",X"C5",X"44", + X"90",X"23",X"85",X"46",X"0A",X"65",X"46",X"4A",X"85",X"46",X"A5",X"42",X"18",X"65",X"44",X"B0", + X"14",X"C5",X"46",X"B0",X"10",X"A6",X"21",X"E8",X"98",X"95",X"21",X"E8",X"B9",X"01",X"02",X"29", + X"0F",X"95",X"21",X"86",X"21",X"98",X"18",X"69",X"10",X"A8",X"B0",X"03",X"4C",X"C4",X"CE",X"60", + X"A5",X"40",X"85",X"6E",X"4C",X"3F",X"CF",X"C6",X"21",X"C6",X"21",X"A5",X"6E",X"85",X"40",X"A8", + X"A6",X"21",X"F0",X"65",X"B5",X"21",X"85",X"19",X"B9",X"00",X"02",X"29",X"02",X"D0",X"E8",X"B9", + X"01",X"02",X"29",X"0F",X"85",X"1B",X"C5",X"19",X"D0",X"18",X"84",X"40",X"A8",X"CA",X"B5",X"21", + X"85",X"41",X"98",X"0A",X"AA",X"BD",X"AB",X"CF",X"48",X"BD",X"AA",X"CF",X"48",X"A4",X"41",X"A6", + X"40",X"60",X"B0",X"0E",X"85",X"19",X"B5",X"21",X"85",X"1B",X"CA",X"B5",X"21",X"85",X"41",X"4C", + X"89",X"CF",X"84",X"41",X"CA",X"B5",X"21",X"85",X"40",X"C6",X"1B",X"A5",X"1B",X"38",X"E5",X"19", + X"85",X"1B",X"A5",X"19",X"AA",X"BD",X"CA",X"CF",X"06",X"1B",X"65",X"1B",X"AA",X"BD",X"DA",X"CF", + X"48",X"BD",X"D9",X"CF",X"48",X"A4",X"41",X"A6",X"40",X"60",X"CF",X"D3",X"36",X"CF",X"CF",X"D3", + X"E0",X"D3",X"36",X"CF",X"36",X"CF",X"CF",X"D3",X"CF",X"D3",X"36",X"CF",X"36",X"CF",X"CF",X"D3", + X"36",X"CF",X"36",X"CF",X"36",X"CF",X"90",X"D4",X"36",X"CF",X"00",X"1E",X"3A",X"54",X"6C",X"82", + X"96",X"A8",X"B8",X"C6",X"D2",X"DC",X"E4",X"EA",X"EE",X"C8",X"D0",X"CD",X"D0",X"36",X"CF",X"D0", + X"D0",X"36",X"CF",X"36",X"CF",X"2B",X"D1",X"36",X"CF",X"36",X"CF",X"36",X"CF",X"36",X"CF",X"36", + X"CF",X"36",X"CF",X"90",X"D4",X"BC",X"D4",X"12",X"D2",X"15",X"D3",X"41",X"D3",X"36",X"CF",X"12"); +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/BlackWidow_MiST/rtl/roms/bwidow_pgm_rom5.vhd b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/roms/bwidow_pgm_rom5.vhd new file mode 100644 index 00000000..bca5a6f3 --- /dev/null +++ b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/roms/bwidow_pgm_rom5.vhd @@ -0,0 +1,278 @@ +library ieee; +use ieee.std_logic_1164.all,ieee.numeric_std.all; + +entity bwidow_pgm_rom5 is +port ( + clk : in std_logic; + addr : in std_logic_vector(11 downto 0); + data : out std_logic_vector(7 downto 0) +); +end entity; + +architecture prom of bwidow_pgm_rom5 is + type rom is array(0 to 4095) of std_logic_vector(7 downto 0); + signal rom_data: rom := ( + X"D2",X"74",X"D3",X"12",X"D2",X"CC",X"D3",X"30",X"D2",X"33",X"D2",X"36",X"CF",X"D7",X"D1",X"36", + X"CF",X"26",X"D2",X"36",X"CF",X"EE",X"D3",X"36",X"CF",X"36",X"CF",X"21",X"D4",X"36",X"CF",X"36", + X"CF",X"36",X"CF",X"4E",X"D2",X"36",X"CF",X"36",X"CF",X"90",X"D4",X"BC",X"D4",X"F1",X"D3",X"36", + X"CF",X"36",X"CF",X"36",X"CF",X"36",X"CF",X"36",X"CF",X"36",X"CF",X"36",X"CF",X"36",X"CF",X"36", + X"CF",X"36",X"CF",X"36",X"CF",X"65",X"D3",X"50",X"D4",X"33",X"D4",X"24",X"D4",X"2E",X"D1",X"48", + X"D1",X"09",X"D4",X"36",X"CF",X"D7",X"D1",X"3C",X"D4",X"3C",X"D4",X"36",X"CF",X"36",X"CF",X"36", + X"CF",X"36",X"CF",X"36",X"CF",X"36",X"CF",X"36",X"CF",X"36",X"CF",X"90",X"D4",X"BC",X"D4",X"36", + X"CF",X"36",X"CF",X"36",X"CF",X"36",X"CF",X"36",X"CF",X"36",X"CF",X"36",X"CF",X"90",X"D4",X"BC", + X"D4",X"36",X"CF",X"36",X"CF",X"36",X"CF",X"0A",X"D3",X"36",X"CF",X"36",X"CF",X"90",X"D4",X"BC", + X"D4",X"36",X"CF",X"36",X"CF",X"36",X"CF",X"36",X"CF",X"36",X"CF",X"36",X"CF",X"36",X"CF",X"36", + X"CF",X"36",X"CF",X"36",X"CF",X"36",X"CF",X"36",X"CF",X"36",X"CF",X"36",X"CF",X"36",X"CF",X"36", + X"CF",X"36",X"CF",X"36",X"CF",X"36",X"CF",X"36",X"CF",X"90",X"D4",X"BC",X"D4",X"36",X"CF",X"36", + X"CF",X"36",X"CF",X"90",X"D4",X"BC",X"D4",X"BC",X"D4",X"8A",X"A8",X"4C",X"13",X"D2",X"4C",X"37", + X"CF",X"BD",X"0A",X"02",X"85",X"59",X"BD",X"0C",X"02",X"85",X"5B",X"A9",X"07",X"85",X"5D",X"20", + X"03",X"D5",X"B0",X"09",X"A9",X"00",X"85",X"5D",X"20",X"1F",X"D5",X"B0",X"10",X"A9",X"03",X"99", + X"00",X"02",X"20",X"78",X"D3",X"A9",X"00",X"20",X"46",X"C8",X"4C",X"37",X"CF",X"A9",X"00",X"9D", + X"00",X"21",X"9D",X"06",X"21",X"A9",X"0B",X"9D",X"01",X"02",X"A9",X"1F",X"9D",X"0D",X"02",X"A9", + X"25",X"84",X"19",X"A9",X"00",X"9D",X"00",X"02",X"A8",X"20",X"1B",X"CA",X"A4",X"19",X"20",X"2A", + X"BD",X"A9",X"03",X"99",X"00",X"02",X"4C",X"37",X"CF",X"4C",X"37",X"CF",X"4C",X"37",X"CF",X"B9", + X"01",X"02",X"29",X"F0",X"09",X"0A",X"99",X"01",X"02",X"A9",X"01",X"99",X"0D",X"02",X"A9",X"03", + X"9D",X"00",X"02",X"20",X"2A",X"BD",X"4C",X"37",X"CF",X"A9",X"03",X"9D",X"00",X"02",X"EE",X"03", + X"03",X"AD",X"03",X"03",X"C9",X"0B",X"D0",X"03",X"4C",X"65",X"D1",X"98",X"AA",X"A9",X"09",X"20", + X"46",X"C8",X"4C",X"37",X"CF",X"A6",X"41",X"86",X"19",X"A9",X"00",X"9D",X"01",X"02",X"A9",X"00", + X"85",X"59",X"A9",X"50",X"85",X"5A",X"A9",X"00",X"85",X"5B",X"20",X"80",X"D1",X"4C",X"37",X"CF", + X"A9",X"60",X"9D",X"01",X"21",X"A9",X"00",X"9D",X"00",X"21",X"9D",X"06",X"21",X"A5",X"5B",X"24", + X"EF",X"30",X"20",X"F8",X"18",X"6D",X"43",X"04",X"8D",X"43",X"04",X"A5",X"5A",X"6D",X"42",X"04", + X"8D",X"42",X"04",X"A5",X"59",X"6D",X"41",X"04",X"8D",X"41",X"04",X"D8",X"A0",X"00",X"A9",X"00", + X"20",X"1B",X"CA",X"20",X"AD",X"C8",X"60",X"98",X"AA",X"A9",X"00",X"20",X"46",X"C8",X"4C",X"37", + X"CF",X"A9",X"01",X"99",X"00",X"02",X"A9",X"14",X"99",X"0D",X"02",X"A0",X"00",X"A9",X"25",X"20", + X"1B",X"CA",X"20",X"2A",X"BD",X"4C",X"37",X"CF",X"A5",X"73",X"D0",X"F9",X"B9",X"00",X"02",X"29", + X"03",X"D0",X"F2",X"A9",X"01",X"99",X"00",X"02",X"A9",X"00",X"99",X"03",X"02",X"A9",X"01",X"99", + X"0D",X"02",X"99",X"02",X"02",X"A9",X"00",X"99",X"00",X"21",X"99",X"06",X"21",X"AD",X"64",X"56", + X"99",X"04",X"21",X"AD",X"65",X"56",X"99",X"05",X"21",X"A0",X"05",X"A9",X"00",X"20",X"1B",X"CA", + X"4C",X"37",X"CF",X"A5",X"6C",X"D0",X"0D",X"A5",X"73",X"D0",X"09",X"84",X"6C",X"20",X"0E",X"BE", + X"20",X"52",X"BD",X"60",X"4C",X"37",X"CF",X"B9",X"00",X"02",X"29",X"03",X"D0",X"F6",X"4C",X"13", + X"D2",X"4C",X"13",X"D2",X"20",X"9B",X"D3",X"98",X"AA",X"B9",X"0D",X"02",X"29",X"18",X"4A",X"4A", + X"4A",X"A8",X"B9",X"4B",X"D2",X"20",X"46",X"C8",X"4C",X"37",X"CF",X"01",X"03",X"09",X"13",X"AD", + X"0A",X"60",X"10",X"03",X"4C",X"AC",X"D2",X"A9",X"08",X"9D",X"00",X"02",X"20",X"3E",X"BD",X"A9", + X"14",X"9D",X"0D",X"02",X"B9",X"09",X"02",X"9D",X"09",X"02",X"B9",X"0A",X"02",X"9D",X"0A",X"02", + X"B9",X"0B",X"02",X"9D",X"0B",X"02",X"B9",X"0C",X"02",X"9D",X"0C",X"02",X"B9",X"01",X"02",X"29", + X"F0",X"09",X"03",X"99",X"01",X"02",X"99",X"02",X"02",X"A9",X"03",X"99",X"0F",X"02",X"A9",X"00", + X"99",X"00",X"02",X"A9",X"1F",X"99",X"0D",X"02",X"A9",X"00",X"99",X"02",X"21",X"A9",X"73",X"99", + X"03",X"21",X"84",X"40",X"A9",X"00",X"99",X"00",X"02",X"4C",X"37",X"CF",X"86",X"19",X"98",X"AA", + X"A4",X"19",X"A9",X"01",X"25",X"9A",X"F0",X"50",X"20",X"3E",X"BD",X"B9",X"00",X"02",X"09",X"08", + X"99",X"00",X"02",X"A9",X"14",X"99",X"0D",X"02",X"BD",X"09",X"02",X"99",X"09",X"02",X"BD",X"0A", + X"02",X"99",X"0A",X"02",X"BD",X"0B",X"02",X"99",X"0B",X"02",X"BD",X"0C",X"02",X"99",X"0C",X"02", + X"BD",X"01",X"02",X"29",X"F0",X"09",X"03",X"9D",X"01",X"02",X"A9",X"03",X"9D",X"0F",X"02",X"A9", + X"00",X"9D",X"02",X"02",X"9D",X"00",X"02",X"A9",X"1F",X"9D",X"0D",X"02",X"A9",X"00",X"9D",X"02", + X"21",X"A9",X"73",X"9D",X"03",X"21",X"86",X"40",X"4C",X"37",X"CF",X"A9",X"03",X"99",X"00",X"02", + X"20",X"36",X"BD",X"4C",X"37",X"CF",X"B9",X"00",X"02",X"29",X"F7",X"99",X"00",X"02",X"84",X"40", + X"B9",X"06",X"02",X"48",X"BD",X"07",X"02",X"99",X"07",X"02",X"BD",X"08",X"02",X"99",X"08",X"02", + X"BD",X"06",X"02",X"99",X"06",X"02",X"20",X"EE",X"C3",X"A6",X"40",X"68",X"9D",X"06",X"02",X"4C", + X"37",X"CF",X"A5",X"73",X"F0",X"1D",X"A9",X"00",X"85",X"73",X"8D",X"03",X"03",X"8D",X"01",X"03", + X"24",X"EF",X"30",X"0F",X"A9",X"E4",X"8D",X"02",X"01",X"8D",X"03",X"01",X"AD",X"06",X"02",X"49", + X"FF",X"85",X"72",X"4C",X"37",X"CF",X"A9",X"03",X"9D",X"00",X"02",X"98",X"AA",X"A9",X"22",X"20", + X"46",X"C8",X"4C",X"37",X"CF",X"4C",X"13",X"D2",X"AD",X"04",X"03",X"F0",X"1D",X"86",X"19",X"86", + X"1B",X"84",X"1C",X"85",X"1D",X"AA",X"BD",X"04",X"03",X"A8",X"B9",X"02",X"02",X"C5",X"19",X"F0", + X"14",X"CA",X"C6",X"1D",X"D0",X"F0",X"A6",X"1B",X"A4",X"1C",X"60",X"AD",X"04",X"03",X"F0",X"FA", + X"84",X"19",X"4C",X"7F",X"D3",X"A9",X"00",X"99",X"02",X"02",X"68",X"68",X"A6",X"19",X"AD",X"D3", + X"03",X"0A",X"69",X"17",X"C9",X"20",X"90",X"02",X"A9",X"1F",X"20",X"46",X"C8",X"EE",X"D3",X"03", + X"4C",X"37",X"CF",X"A5",X"73",X"F0",X"03",X"4C",X"37",X"CF",X"4C",X"13",X"D2",X"4C",X"13",X"D2", + X"AD",X"0A",X"60",X"29",X"30",X"18",X"7D",X"0E",X"02",X"29",X"3F",X"9D",X"0E",X"02",X"4C",X"37", + X"CF",X"BD",X"00",X"02",X"29",X"F7",X"9D",X"00",X"02",X"20",X"DE",X"C3",X"4C",X"37",X"CF",X"4C", + X"D1",X"D0",X"AD",X"0A",X"60",X"29",X"87",X"10",X"02",X"09",X"F8",X"18",X"79",X"06",X"02",X"29", + X"3F",X"99",X"06",X"02",X"20",X"2A",X"BD",X"4C",X"37",X"CF",X"AD",X"0A",X"60",X"29",X"87",X"10", + X"02",X"09",X"F8",X"18",X"7D",X"06",X"02",X"29",X"3F",X"9D",X"06",X"02",X"20",X"2A",X"BD",X"4C", + X"37",X"CF",X"4C",X"37",X"CF",X"A9",X"03",X"9D",X"00",X"02",X"98",X"AA",X"A9",X"20",X"20",X"46", + X"C8",X"4C",X"37",X"CF",X"98",X"48",X"8A",X"A8",X"68",X"AA",X"4C",X"D1",X"D0",X"B9",X"00",X"02", + X"29",X"01",X"D0",X"39",X"B9",X"05",X"02",X"18",X"69",X"01",X"C9",X"10",X"B0",X"03",X"99",X"05", + X"02",X"A9",X"03",X"9D",X"00",X"02",X"B9",X"06",X"02",X"48",X"BD",X"07",X"02",X"99",X"07",X"02", + X"BD",X"08",X"02",X"99",X"08",X"02",X"BD",X"06",X"02",X"99",X"06",X"02",X"84",X"40",X"20",X"EE", + X"C3",X"A6",X"40",X"68",X"9D",X"06",X"02",X"20",X"2A",X"BD",X"4C",X"37",X"CF",X"A9",X"03",X"9D", + X"00",X"02",X"A9",X"00",X"99",X"01",X"02",X"98",X"AA",X"A9",X"20",X"20",X"46",X"C8",X"4C",X"37", + X"CF",X"8A",X"D9",X"02",X"02",X"D0",X"F7",X"BD",X"00",X"02",X"29",X"03",X"C9",X"02",X"B0",X"1A", + X"A9",X"03",X"9D",X"00",X"02",X"AD",X"3F",X"04",X"0A",X"99",X"0D",X"02",X"A9",X"00",X"8D",X"D3", + X"03",X"99",X"02",X"02",X"99",X"05",X"02",X"20",X"36",X"BD",X"4C",X"37",X"CF",X"BD",X"00",X"02", + X"29",X"03",X"C9",X"02",X"B0",X"3A",X"BD",X"01",X"02",X"29",X"0F",X"C9",X"05",X"D0",X"09",X"A5", + X"79",X"C9",X"1E",X"B0",X"03",X"4C",X"37",X"CF",X"BD",X"01",X"02",X"29",X"F0",X"09",X"08",X"9D", + X"01",X"02",X"A9",X"71",X"9D",X"03",X"21",X"9D",X"0B",X"21",X"A9",X"FF",X"9D",X"02",X"02",X"9D", + X"04",X"02",X"A9",X"00",X"9D",X"0A",X"21",X"9D",X"00",X"02",X"9D",X"0D",X"02",X"20",X"26",X"BD", + X"4C",X"37",X"CF",X"A5",X"59",X"10",X"06",X"49",X"FF",X"85",X"59",X"E6",X"59",X"A5",X"5B",X"10", + X"06",X"49",X"FF",X"85",X"5B",X"E6",X"5B",X"A5",X"59",X"85",X"5A",X"A5",X"5B",X"85",X"5C",X"84", + X"19",X"A5",X"5D",X"0A",X"0A",X"65",X"5D",X"65",X"5D",X"A8",X"B9",X"6F",X"BF",X"C5",X"59",X"90", + X"21",X"B9",X"71",X"BF",X"C5",X"5B",X"90",X"1A",X"A5",X"59",X"4A",X"18",X"65",X"5B",X"D9",X"6F", + X"BF",X"B0",X"0F",X"A5",X"59",X"0A",X"18",X"65",X"5B",X"D9",X"73",X"BF",X"B0",X"04",X"18",X"A4", + X"19",X"60",X"38",X"A4",X"19",X"60",X"27",X"2C",X"30",X"34",X"39",X"00",X"07",X"0C",X"10",X"14", + X"19",X"20",X"61",X"00",X"A2",X"02",X"AD",X"00",X"78",X"E0",X"01",X"F0",X"03",X"B0",X"02",X"4A", + X"4A",X"4A",X"B5",X"91",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"94",X"29",X"07",X"C9",X"07",X"98",X"90",X"02",X"E9",X"01",X"95",X"91",X"AD",X"00",X"78",X"29", + X"08",X"D0",X"04",X"A9",X"F0",X"85",X"96",X"A5",X"96",X"F0",X"08",X"C6",X"96",X"A9",X"00",X"95", + X"91",X"95",X"8E",X"18",X"B5",X"8E",X"F0",X"23",X"D6",X"8E",X"D0",X"1F",X"38",X"B0",X"1C",X"C9", + X"1B",X"B0",X"09",X"B5",X"91",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"91",X"B5",X"8E",X"F0",X"01",X"38",X"A9",X"78",X"95",X"8E",X"90",X"2A",X"A9",X"00",X"E0", + X"01",X"90",X"16",X"F0",X"0C",X"A5",X"8C",X"29",X"0C",X"4A",X"4A",X"F0",X"0C",X"69",X"02",X"D0", + X"08",X"A5",X"8C",X"29",X"10",X"F0",X"02",X"A9",X"01",X"38",X"48",X"65",X"F5",X"85",X"F5",X"68", + X"38",X"65",X"95",X"85",X"95",X"F6",X"89",X"CA",X"30",X"03",X"4C",X"66",X"D5",X"A5",X"8C",X"4A", + X"4A",X"4A",X"4A",X"4A",X"A8",X"A5",X"F5",X"38",X"F9",X"19",X"D6",X"30",X"14",X"85",X"F5",X"E6", + X"F4",X"C0",X"03",X"D0",X"0C",X"E6",X"F4",X"D0",X"08",X"7F",X"02",X"04",X"04",X"05",X"03",X"7F", + X"7F",X"A5",X"8C",X"29",X"03",X"A8",X"F0",X"1A",X"4A",X"69",X"00",X"49",X"FF",X"38",X"65",X"95", + X"B0",X"08",X"65",X"F4",X"30",X"0E",X"85",X"F4",X"A9",X"00",X"C0",X"02",X"B0",X"02",X"E6",X"8D", + X"E6",X"8D",X"85",X"95",X"A5",X"94",X"4A",X"B0",X"27",X"A0",X"00",X"A2",X"02",X"B5",X"89",X"F0", + X"09",X"C9",X"10",X"90",X"05",X"69",X"EF",X"C8",X"95",X"89",X"CA",X"10",X"F0",X"98",X"D0",X"10", + X"A2",X"02",X"B5",X"89",X"F0",X"07",X"18",X"69",X"EF",X"95",X"89",X"30",X"03",X"CA",X"10",X"F2", + X"60",X"00",X"02",X"03",X"18",X"19",X"1C",X"1D",X"20",X"7A",X"00",X"10",X"03",X"76",X"00",X"7C", + X"00",X"A9",X"04",X"D0",X"06",X"A9",X"03",X"D0",X"02",X"A9",X"07",X"A0",X"FF",X"D0",X"08",X"A9", + X"02",X"D0",X"02",X"A9",X"0D",X"A0",X"00",X"8C",X"2A",X"01",X"48",X"0D",X"2B",X"01",X"8D",X"2B", + X"01",X"68",X"0D",X"2C",X"01",X"8D",X"2C",X"01",X"60",X"A9",X"0F",X"8D",X"2B",X"01",X"A9",X"00", + X"8D",X"2C",X"01",X"AD",X"2E",X"01",X"D0",X"4B",X"AD",X"2B",X"01",X"F0",X"46",X"A2",X"00",X"8E", + X"2F",X"01",X"8E",X"33",X"01",X"8E",X"32",X"01",X"A2",X"08",X"38",X"6E",X"32",X"01",X"0A",X"CA", + X"90",X"F9",X"A0",X"80",X"AD",X"32",X"01",X"2D",X"2C",X"01",X"D0",X"02",X"A0",X"20",X"8C",X"2E", + X"01",X"AD",X"32",X"01",X"4D",X"2B",X"01",X"8D",X"2B",X"01",X"8A",X"0A",X"AA",X"BD",X"71",X"D6", + X"8D",X"30",X"01",X"BD",X"72",X"D6",X"8D",X"31",X"01",X"BD",X"79",X"D6",X"85",X"97",X"BD",X"7A", + X"D6",X"85",X"98",X"A0",X"00",X"8C",X"00",X"89",X"AD",X"2E",X"01",X"D0",X"01",X"60",X"AC",X"2F", + X"01",X"AE",X"30",X"01",X"0A",X"90",X"0D",X"9D",X"40",X"89",X"A9",X"40",X"8D",X"2E",X"01",X"A0", + X"0E",X"4C",X"98",X"D7",X"10",X"25",X"A9",X"80",X"8D",X"2E",X"01",X"AD",X"2A",X"01",X"F0",X"04", + X"A9",X"00",X"91",X"97",X"B1",X"97",X"EC",X"31",X"01",X"90",X"08",X"A9",X"00",X"8D",X"2E",X"01", + X"AD",X"33",X"01",X"9D",X"40",X"89",X"A0",X"0C",X"4C",X"8B",X"D7",X"A9",X"08",X"8D",X"00",X"89", + X"9D",X"40",X"89",X"A9",X"09",X"8D",X"00",X"89",X"EA",X"A9",X"08",X"8D",X"00",X"89",X"EC",X"31", + X"01",X"AD",X"00",X"70",X"90",X"21",X"4D",X"33",X"01",X"F0",X"14",X"A9",X"00",X"AC",X"2F",X"01", + X"88",X"91",X"97",X"88",X"10",X"FB",X"AD",X"32",X"01",X"0D",X"2D",X"01",X"8D",X"2D",X"01",X"A9", + X"00",X"8D",X"2E",X"01",X"4C",X"89",X"D7",X"91",X"97",X"A0",X"00",X"18",X"6D",X"33",X"01",X"8D", + X"33",X"01",X"EE",X"2F",X"01",X"EE",X"30",X"01",X"8C",X"00",X"89",X"98",X"D0",X"03",X"4C",X"B3", + X"D6",X"60",X"A9",X"C0",X"D0",X"02",X"A9",X"20",X"A0",X"00",X"91",X"11",X"4C",X"54",X"D8",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"C4",X"5D",X"91",X"11",X"BD",X"C5",X"5D",X"C8",X"91",X"11",X"20",X"05",X"D8",X"28",X"60",X"38", + X"E9",X"20",X"4A",X"29",X"1F",X"09",X"E0",X"A0",X"01",X"91",X"11",X"88",X"8A",X"6A",X"91",X"11", + X"C8",X"D0",X"22",X"38",X"E9",X"20",X"4A",X"29",X"1F",X"09",X"A0",X"D0",X"EA",X"A4",X"0C",X"A2", + X"60",X"98",X"4C",X"FD",X"D7",X"A2",X"60",X"D0",X"F8",X"A9",X"40",X"A2",X"80",X"A0",X"00",X"91", + X"11",X"C8",X"8A",X"91",X"11",X"98",X"38",X"65",X"11",X"85",X"11",X"90",X"02",X"E6",X"12",X"60", + X"A0",X"00",X"09",X"70",X"AA",X"98",X"4C",X"FD",X"D7",X"A0",X"00",X"84",X"0C",X"A0",X"00",X"0A", + X"90",X"01",X"88",X"84",X"A0",X"0A",X"26",X"A0",X"85",X"9F",X"8A",X"0A",X"A0",X"00",X"90",X"01", + X"88",X"84",X"A2",X"0A",X"26",X"A2",X"85",X"A1",X"A2",X"9F",X"A0",X"00",X"B5",X"02",X"91",X"11", + X"B5",X"03",X"29",X"1F",X"C8",X"91",X"11",X"B5",X"00",X"C8",X"91",X"11",X"B5",X"01",X"45",X"0C", + X"29",X"1F",X"45",X"0C",X"C8",X"91",X"11",X"D0",X"AC",X"A5",X"0C",X"A0",X"00",X"91",X"11",X"C8", + X"8A",X"09",X"60",X"91",X"11",X"20",X"05",X"D8",X"60",X"00",X"00",X"D0",X"1F",X"4E",X"BE",X"4E", + X"BE",X"4E",X"BE",X"4E",X"BE",X"4E",X"BE",X"00",X"C0",X"48",X"A5",X"74",X"85",X"4C",X"A5",X"75", + X"85",X"4D",X"A9",X"04",X"CA",X"30",X"06",X"18",X"69",X"06",X"4C",X"84",X"D8",X"A8",X"68",X"38", + X"E9",X"02",X"F0",X"0D",X"AA",X"98",X"18",X"69",X"4E",X"90",X"02",X"E6",X"4D",X"CA",X"D0",X"F6", + X"A8",X"60",X"A9",X"06",X"85",X"19",X"A9",X"A4",X"AA",X"A9",X"5C",X"20",X"E3",X"D7",X"C6",X"19", + X"D0",X"F4",X"60",X"A8",X"A1",X"B0",X"A1",X"B8",X"A1",X"C0",X"A1",X"C8",X"A1",X"D0",X"A1",X"D8", + X"A1",X"E0",X"A1",X"E8",X"A1",X"F0",X"A1",X"F8",X"A1",X"A0",X"00",X"A9",X"80",X"91",X"11",X"C8", + X"A9",X"80",X"91",X"11",X"20",X"05",X"D8",X"A9",X"00",X"85",X"0D",X"85",X"0F",X"85",X"0E",X"85", + X"10",X"60",X"A9",X"FF",X"4C",X"E9",X"D8",X"A9",X"00",X"48",X"A2",X"00",X"38",X"B5",X"08",X"A8", + X"F5",X"0D",X"95",X"08",X"98",X"95",X"0D",X"E8",X"B5",X"08",X"A8",X"F5",X"0D",X"95",X"08",X"98", + X"95",X"0D",X"E8",X"E0",X"02",X"F0",X"E5",X"68",X"D0",X"45",X"A0",X"00",X"A2",X"03",X"98",X"15", + X"08",X"A8",X"CA",X"10",X"F9",X"98",X"F0",X"37",X"A2",X"02",X"B5",X"09",X"10",X"0F",X"49",X"FF", + X"D0",X"2D",X"B5",X"08",X"49",X"FF",X"18",X"69",X"01",X"B0",X"24",X"90",X"02",X"B5",X"08",X"29", + X"1F",X"D0",X"1C",X"B5",X"08",X"29",X"1F",X"95",X"08",X"CA",X"CA",X"10",X"DD",X"A5",X"0C",X"05", + X"08",X"A0",X"00",X"91",X"11",X"C8",X"A5",X"0A",X"09",X"40",X"91",X"11",X"4C",X"05",X"D8",X"20", + X"56",X"D9",X"20",X"05",X"D8",X"60",X"A0",X"00",X"A5",X"0A",X"91",X"11",X"C8",X"A5",X"0B",X"29", + X"1F",X"91",X"11",X"C8",X"A5",X"08",X"91",X"11",X"C8",X"A5",X"09",X"29",X"1F",X"05",X"0C",X"91", + X"11",X"60",X"A5",X"AA",X"85",X"11",X"A5",X"AB",X"85",X"12",X"24",X"EF",X"10",X"3C",X"AD",X"20", + X"04",X"C9",X"01",X"D0",X"0F",X"A5",X"F7",X"C9",X"08",X"B0",X"09",X"4A",X"AA",X"BD",X"5C",X"DA", + X"AA",X"20",X"B7",X"DC",X"A9",X"EC",X"85",X"59",X"A9",X"60",X"85",X"5B",X"AD",X"75",X"CB",X"85", + X"63",X"A9",X"40",X"85",X"5A",X"AD",X"77",X"CB",X"85",X"5C",X"A2",X"00",X"86",X"19",X"A0",X"00", + X"20",X"3B",X"CD",X"88",X"20",X"05",X"D8",X"4C",X"15",X"DA",X"AD",X"C8",X"04",X"F0",X"0E",X"AD", + X"C9",X"04",X"F0",X"09",X"AD",X"40",X"04",X"8D",X"AA",X"04",X"4C",X"D3",X"D9",X"AD",X"40",X"04", + X"8D",X"75",X"04",X"AD",X"45",X"04",X"F0",X"3A",X"A2",X"34",X"20",X"B7",X"DC",X"AD",X"47",X"04", + X"85",X"1E",X"A9",X"00",X"F8",X"18",X"6D",X"45",X"04",X"C6",X"1E",X"10",X"F8",X"D8",X"85",X"1B", + X"4A",X"4A",X"4A",X"4A",X"F0",X"03",X"20",X"AF",X"D7",X"A5",X"1B",X"20",X"AF",X"D7",X"A9",X"00", + X"20",X"AF",X"D7",X"A9",X"00",X"20",X"AF",X"D7",X"A9",X"00",X"20",X"AF",X"D7",X"A9",X"00",X"20", + X"AF",X"D7",X"4C",X"34",X"DA",X"20",X"6F",X"DE",X"A2",X"2A",X"20",X"B7",X"DC",X"A5",X"8C",X"29", + X"03",X"F0",X"0C",X"A5",X"8D",X"D0",X"08",X"A2",X"20",X"20",X"B7",X"DC",X"4C",X"34",X"DA",X"A2", + X"06",X"20",X"B7",X"DC",X"24",X"EF",X"30",X"1D",X"A2",X"1A",X"20",X"B7",X"DC",X"AD",X"5D",X"04", + X"18",X"69",X"01",X"20",X"A1",X"DC",X"48",X"4A",X"4A",X"4A",X"4A",X"38",X"20",X"AF",X"D7",X"68", + X"29",X"0F",X"20",X"AF",X"D7",X"20",X"A2",X"D7",X"20",X"87",X"CA",X"60",X"58",X"5A",X"5C",X"5E", + X"18",X"F0",X"05",X"C6",X"1C",X"4C",X"AF",X"D7",X"24",X"1C",X"30",X"01",X"38",X"4C",X"AF",X"D7", + X"A5",X"AA",X"85",X"11",X"A5",X"AB",X"85",X"12",X"A9",X"00",X"A2",X"28",X"20",X"1D",X"D8",X"A9", + X"00",X"20",X"10",X"D8",X"AD",X"5D",X"04",X"29",X"78",X"4A",X"4A",X"C9",X"0A",X"90",X"02",X"A9", + X"08",X"AA",X"A0",X"00",X"BD",X"66",X"56",X"91",X"11",X"C8",X"BD",X"67",X"56",X"91",X"11",X"E6", + X"11",X"E6",X"11",X"20",X"F9",X"D7",X"A9",X"01",X"20",X"10",X"D8",X"A9",X"00",X"A2",X"28",X"20", + X"1D",X"D8",X"A9",X"00",X"A0",X"84",X"20",X"EF",X"D7",X"A9",X"00",X"20",X"10",X"D8",X"A0",X"00", + X"AD",X"70",X"56",X"91",X"11",X"C8",X"AD",X"71",X"56",X"91",X"11",X"E6",X"11",X"E6",X"11",X"A9", + X"01",X"20",X"10",X"D8",X"AD",X"C8",X"04",X"F0",X"0E",X"A2",X"02",X"20",X"B7",X"DC",X"AD",X"C9", + X"04",X"18",X"69",X"01",X"20",X"AF",X"D7",X"A2",X"18",X"20",X"B7",X"DC",X"AD",X"22",X"04",X"20", + X"A1",X"DC",X"48",X"4A",X"4A",X"4A",X"4A",X"38",X"20",X"AF",X"D7",X"68",X"29",X"0F",X"18",X"20", + X"AF",X"D7",X"A2",X"12",X"20",X"B7",X"DC",X"A2",X"14",X"20",X"B7",X"DC",X"A2",X"1C",X"20",X"B7", + X"DC",X"A9",X"90",X"A2",X"02",X"20",X"64",X"DC",X"A2",X"1E",X"20",X"B7",X"DC",X"A9",X"03",X"85", + X"1E",X"AD",X"5D",X"04",X"38",X"E9",X"04",X"85",X"1D",X"A9",X"C8",X"85",X"1C",X"A5",X"1D",X"10", + X"03",X"4C",X"38",X"DC",X"20",X"F9",X"D7",X"A9",X"BB",X"A6",X"1C",X"20",X"1D",X"D8",X"A0",X"C1", + X"A5",X"1E",X"C9",X"02",X"D0",X"0D",X"A5",X"6F",X"4A",X"4A",X"29",X"07",X"D0",X"02",X"A9",X"07", + X"09",X"E0",X"A8",X"A9",X"00",X"20",X"EF",X"D7",X"A5",X"1D",X"18",X"69",X"01",X"20",X"A1",X"DC", + X"48",X"4A",X"4A",X"4A",X"4A",X"38",X"20",X"AF",X"D7",X"68",X"29",X"0F",X"18",X"20",X"AF",X"D7", + X"A9",X"00",X"8D",X"37",X"04",X"8D",X"38",X"04",X"8D",X"39",X"04",X"A9",X"10",X"A2",X"00",X"20", + X"1D",X"D8",X"A5",X"1D",X"F0",X"1D",X"4A",X"4A",X"38",X"E9",X"01",X"85",X"1B",X"0A",X"65",X"1B", + X"AA",X"BD",X"24",X"DE",X"8D",X"37",X"04",X"BD",X"25",X"DE",X"8D",X"38",X"04",X"BD",X"26",X"DE", + X"8D",X"39",X"04",X"AD",X"5D",X"04",X"C5",X"1D",X"D0",X"0C",X"AD",X"39",X"04",X"48",X"AD",X"38", + X"04",X"48",X"AD",X"37",X"04",X"48",X"AD",X"37",X"04",X"4A",X"4A",X"4A",X"4A",X"38",X"F0",X"01", + X"18",X"20",X"AF",X"D7",X"AD",X"37",X"04",X"20",X"60",X"DA",X"AD",X"38",X"04",X"4A",X"4A",X"4A", + X"4A",X"20",X"60",X"DA",X"AD",X"38",X"04",X"29",X"0F",X"20",X"60",X"DA",X"AD",X"39",X"04",X"4A", + X"4A",X"4A",X"4A",X"18",X"20",X"AF",X"D7",X"AD",X"39",X"04",X"18",X"20",X"AF",X"D7",X"20",X"F9", + X"D7",X"A9",X"0C",X"A6",X"1C",X"20",X"1D",X"D8",X"A5",X"1D",X"29",X"78",X"4A",X"4A",X"C9",X"18", + X"90",X"02",X"A9",X"16",X"AA",X"BD",X"58",X"DD",X"85",X"4C",X"BD",X"59",X"DD",X"85",X"4D",X"A9", + X"FF",X"85",X"1B",X"E6",X"1B",X"A4",X"1B",X"B1",X"4C",X"A0",X"00",X"48",X"29",X"7F",X"AA",X"BD", + X"C4",X"5D",X"91",X"11",X"C8",X"BD",X"C5",X"5D",X"91",X"11",X"A5",X"11",X"18",X"69",X"02",X"85", + X"11",X"90",X"02",X"E6",X"12",X"68",X"10",X"DB",X"A5",X"1D",X"30",X"05",X"CD",X"2B",X"06",X"B0", + X"13",X"18",X"69",X"04",X"85",X"1D",X"A5",X"1C",X"38",X"E9",X"0C",X"85",X"1C",X"C6",X"1E",X"F0", + X"03",X"4C",X"2D",X"DB",X"68",X"8D",X"37",X"04",X"68",X"8D",X"38",X"04",X"68",X"8D",X"39",X"04", + X"20",X"A2",X"D7",X"60",X"20",X"1D",X"D8",X"A0",X"C2",X"A9",X"00",X"20",X"EF",X"D7",X"A9",X"01", + X"A8",X"20",X"10",X"D8",X"A9",X"16",X"AA",X"A9",X"2F",X"20",X"E3",X"D7",X"A0",X"87",X"A9",X"00", + X"20",X"EF",X"D7",X"A9",X"00",X"AA",X"A9",X"2C",X"20",X"E3",X"D7",X"A0",X"00",X"A9",X"00",X"20", + X"EF",X"D7",X"A9",X"01",X"20",X"10",X"D8",X"A9",X"10",X"A2",X"FE",X"A0",X"00",X"20",X"1D",X"D8", + X"60",X"F8",X"85",X"19",X"A9",X"00",X"85",X"1B",X"A0",X"07",X"06",X"19",X"A5",X"1B",X"65",X"1B", + X"85",X"1B",X"88",X"10",X"F5",X"D8",X"60",X"BD",X"29",X"E0",X"8E",X"02",X"03",X"85",X"1C",X"AC", + X"02",X"03",X"B1",X"9B",X"85",X"9D",X"C8",X"B1",X"9B",X"85",X"9E",X"A0",X"00",X"B1",X"9D",X"85", + X"1B",X"20",X"F9",X"D7",X"A9",X"00",X"85",X"0C",X"A9",X"01",X"20",X"10",X"D8",X"A5",X"1B",X"A6", + X"1C",X"20",X"1D",X"D8",X"AC",X"02",X"03",X"B1",X"9B",X"85",X"9D",X"C8",X"B1",X"9B",X"85",X"9E", + X"AE",X"02",X"03",X"BD",X"28",X"E0",X"48",X"4A",X"4A",X"4A",X"4A",X"09",X"C0",X"A8",X"29",X"08", + X"F0",X"09",X"AD",X"D0",X"03",X"29",X"C0",X"D0",X"02",X"A0",X"00",X"A9",X"00",X"20",X"EF",X"D7", + X"68",X"A0",X"10",X"29",X"0F",X"C9",X"01",X"F0",X"04",X"A0",X"68",X"A9",X"01",X"20",X"12",X"D8", + X"A0",X"01",X"A9",X"00",X"85",X"1B",X"B1",X"9D",X"85",X"1C",X"29",X"7F",X"C8",X"84",X"1D",X"AA", + X"BD",X"C4",X"5D",X"A4",X"1B",X"91",X"11",X"C8",X"BD",X"C5",X"5D",X"91",X"11",X"C8",X"84",X"1B", + X"A4",X"1D",X"24",X"1C",X"10",X"E0",X"A4",X"1B",X"88",X"4C",X"05",X"D8",X"8E",X"02",X"03",X"85", + X"1B",X"A9",X"00",X"85",X"1C",X"4C",X"D4",X"DC",X"70",X"DD",X"7F",X"DD",X"8E",X"DD",X"9D",X"DD", + X"AC",X"DD",X"BB",X"DD",X"CA",X"DD",X"D9",X"DD",X"E8",X"DD",X"F7",X"DD",X"06",X"DE",X"15",X"DE", + X"00",X"00",X"00",X"20",X"1E",X"38",X"00",X"3A",X"3E",X"38",X"1E",X"00",X"00",X"00",X"80",X"00", + X"00",X"00",X"20",X"16",X"38",X"00",X"32",X"3E",X"3C",X"00",X"00",X"00",X"00",X"80",X"00",X"00", + X"00",X"26",X"30",X"3C",X"1E",X"30",X"3A",X"1E",X"00",X"00",X"00",X"00",X"80",X"00",X"00",X"00", + X"00",X"3E",X"30",X"38",X"1E",X"16",X"2C",X"00",X"00",X"00",X"00",X"80",X"00",X"00",X"00",X"16", + X"42",X"1E",X"3A",X"32",X"2E",X"1E",X"00",X"00",X"00",X"00",X"80",X"00",X"00",X"00",X"00",X"26", + X"30",X"3A",X"16",X"30",X"1E",X"00",X"00",X"00",X"00",X"80",X"00",X"00",X"00",X"3C",X"3E",X"18", + X"3E",X"2C",X"16",X"38",X"00",X"00",X"00",X"00",X"80",X"3C",X"32",X"3C",X"16",X"2C",X"2C",X"46", + X"00",X"16",X"42",X"1E",X"3A",X"32",X"2E",X"9E",X"2C",X"3E",X"30",X"16",X"3C",X"26",X"1A",X"00", + X"20",X"38",X"26",X"30",X"22",X"1E",X"80",X"00",X"00",X"3C",X"32",X"00",X"3C",X"24",X"1E",X"00", + X"2E",X"16",X"44",X"00",X"00",X"80",X"00",X"00",X"00",X"00",X"1A",X"32",X"3A",X"2E",X"26",X"1A", + X"00",X"00",X"00",X"00",X"80",X"00",X"00",X"00",X"00",X"30",X"32",X"00",X"42",X"16",X"46",X"00", + X"00",X"00",X"00",X"80",X"02",X"50",X"00",X"05",X"00",X"00",X"07",X"50",X"00",X"10",X"00",X"00", + X"12",X"50",X"00",X"15",X"00",X"00",X"17",X"50",X"00",X"21",X"50",X"00",X"25",X"50",X"00",X"29", + X"50",X"00",X"33",X"50",X"00",X"37",X"50",X"00",X"41",X"50",X"00",X"45",X"50",X"00",X"49",X"50", + X"00",X"53",X"50",X"00",X"57",X"50",X"00",X"61",X"50",X"00",X"65",X"50",X"00",X"69",X"50",X"00", + X"73",X"50",X"00",X"77",X"50",X"00",X"81",X"50",X"00",X"85",X"50",X"00",X"89",X"50",X"00",X"A2", + X"2C",X"20",X"B7",X"DC",X"A5",X"8C",X"29",X"03",X"D0",X"04",X"A9",X"02",X"D0",X"02",X"A5",X"8D", + X"20",X"A1",X"DC",X"48",X"4A",X"4A",X"4A",X"4A",X"38",X"20",X"AF",X"D7",X"68",X"29",X"0F",X"18", + X"20",X"AF",X"D7",X"A5",X"8C",X"29",X"03",X"49",X"03",X"D0",X"0C",X"A5",X"95",X"F0",X"08",X"A9", + X"52",X"AA",X"A9",X"5F",X"20",X"E3",X"D7",X"60",X"88",X"E0",X"BA",X"E0",X"BA",X"E0",X"DC",X"E0", + X"FE",X"E0",X"16",X"E1",X"74",X"E1",X"E1",X"E1",X"4E",X"E2",X"7D",X"E2",X"B6",X"E2",X"F5",X"E2", + X"FB",X"E2",X"16",X"E3",X"31",X"E3",X"62",X"E3",X"93",X"E3",X"D4",X"E3",X"DE",X"E3",X"22",X"E4", + X"63",X"E4",X"A8",X"E4",X"BA",X"E4",X"D6",X"E4",X"17",X"E5",X"51",X"E5",X"69",X"E5",X"8B",X"E5", + X"D7",X"E5",X"B1",X"E5",X"00",X"E6",X"0E",X"E6",X"13",X"E6",X"1A",X"E6",X"1F",X"E6",X"2C",X"E6", + X"49",X"E6",X"52",X"E6",X"62",X"E6",X"71",X"E6",X"8B",X"E6",X"A3",X"E6",X"B0",X"E6",X"BC",X"E6", + X"C9",X"E6",X"E3",X"E6",X"02",X"E7",X"26",X"E7",X"92",X"E0",X"C2",X"E0",X"C2",X"E0",X"E8",X"E0", + X"03",X"E1",X"2A",X"E1",X"8B",X"E1",X"FB",X"E1",X"67",X"E2",X"A0",X"E2",X"DF",X"E2",X"F5",X"E2", + X"01",X"E3",X"1C",X"E3",X"4C",X"E3",X"7D",X"E3",X"A0",X"E3",X"D4",X"E3",X"ED",X"E3",X"30",X"E4", + X"72",X"E4",X"A8",X"E4",X"BA",X"E4",X"E7",X"E4",X"2B",X"E5",X"57",X"E5",X"75",X"E5",X"9B",X"E5", + X"EA",X"E5",X"C1",X"E5",X"00",X"E6",X"0E",X"E6",X"13",X"E6",X"1A",X"E6",X"1F",X"E6",X"2C",X"E6", + X"49",X"E6",X"52",X"E6",X"62",X"E6",X"71",X"E6",X"8B",X"E6",X"A3",X"E6",X"B0",X"E6",X"BC",X"E6", + X"C9",X"E6",X"E3",X"E6",X"02",X"E7",X"26",X"E7",X"A0",X"E0",X"CA",X"E0",X"CA",X"E0",X"EF",X"E0", + X"09",X"E1",X"43",X"E1",X"AA",X"E1",X"16",X"E2",X"6E",X"E2",X"A7",X"E2",X"E6",X"E2",X"F5",X"E2", + X"08",X"E3",X"24",X"E3",X"5B",X"E3",X"8C",X"E3",X"B6",X"E3",X"D4",X"E3",X"FF",X"E3",X"41",X"E4", + X"84",X"E4",X"A8",X"E4",X"C3",X"E4",X"F6",X"E4",X"39",X"E5",X"5E",X"E5",X"7C",X"E5",X"A2",X"E5", + X"F1",X"E5",X"C8",X"E5",X"00",X"E6",X"0E",X"E6",X"13",X"E6",X"1A",X"E6",X"1F",X"E6",X"2C",X"E6", + X"49",X"E6",X"52",X"E6",X"62",X"E6",X"71",X"E6",X"8B",X"E6",X"A3",X"E6",X"B0",X"E6",X"BC",X"E6", + X"C9",X"E6",X"E3",X"E6",X"02",X"E7",X"26",X"E7",X"AA",X"E0",X"D3",X"E0",X"D3",X"E0",X"F6",X"E0", + X"0F",X"E1",X"60",X"E1",X"C4",X"E1",X"31",X"E2",X"75",X"E2",X"AE",X"E2",X"ED",X"E2",X"F5",X"E2", + X"0E",X"E3",X"2A",X"E3",X"53",X"E3",X"84",X"E3",X"C5",X"E3",X"D4",X"E3",X"10",X"E4",X"52",X"E4", + X"96",X"E4",X"A8",X"E4",X"CC",X"E4",X"07",X"E5",X"45",X"E5",X"63",X"E5",X"83",X"E5",X"A9",X"E5"); +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/BlackWidow_MiST/rtl/roms/bwidow_pgm_rom6.vhd b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/roms/bwidow_pgm_rom6.vhd new file mode 100644 index 00000000..5c1d39f7 --- /dev/null +++ b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/roms/bwidow_pgm_rom6.vhd @@ -0,0 +1,278 @@ +library ieee; +use ieee.std_logic_1164.all,ieee.numeric_std.all; + +entity bwidow_pgm_rom6 is +port ( + clk : in std_logic; + addr : in std_logic_vector(11 downto 0); + data : out std_logic_vector(7 downto 0) +); +end entity; + +architecture prom of bwidow_pgm_rom6 is + type rom is array(0 to 4095) of std_logic_vector(7 downto 0); + signal rom_data: rom := ( + X"F8",X"E5",X"CF",X"E5",X"00",X"E6",X"0E",X"E6",X"13",X"E6",X"1A",X"E6",X"1F",X"E6",X"2C",X"E6", + X"49",X"E6",X"52",X"E6",X"62",X"E6",X"71",X"E6",X"8B",X"E6",X"A3",X"E6",X"B0",X"E6",X"BC",X"E6", + X"C9",X"E6",X"E3",X"E6",X"02",X"E7",X"26",X"E7",X"61",X"0A",X"71",X"60",X"71",X"20",X"F1",X"56", + X"71",X"38",X"41",X"A4",X"31",X"9C",X"61",X"94",X"21",X"60",X"21",X"08",X"E1",X"F8",X"21",X"F8", + X"C1",X"98",X"21",X"92",X"71",X"E8",X"21",X"D8",X"C1",X"56",X"21",X"A1",X"21",X"A1",X"21",X"A1", + X"21",X"A1",X"11",X"92",X"21",X"A0",X"21",X"89",X"21",X"B0",X"11",X"5A",X"C2",X"60",X"21",X"30", + X"21",X"00",X"21",X"20",X"21",X"C0",X"21",X"C0",X"21",X"C0",X"21",X"C0",X"21",X"10",X"71",X"50", + X"71",X"40",X"71",X"40",X"71",X"40",X"71",X"40",X"41",X"50",X"21",X"D0",X"21",X"F0",X"21",X"E0", + X"71",X"40",X"71",X"30",X"71",X"20",X"71",X"40",X"E5",X"22",X"16",X"2E",X"1E",X"00",X"32",X"40", + X"1E",X"B8",X"D9",X"20",X"26",X"30",X"00",X"1C",X"1E",X"00",X"34",X"16",X"38",X"3C",X"26",X"9E", + X"E5",X"3A",X"34",X"26",X"1E",X"2C",X"1E",X"30",X"1C",X"9E",X"D3",X"28",X"3E",X"1E",X"22",X"32", + X"00",X"3C",X"1E",X"38",X"2E",X"26",X"30",X"16",X"1C",X"B2",X"EB",X"34",X"2C",X"16",X"46",X"1E", + X"38",X"80",X"EB",X"28",X"32",X"3E",X"1E",X"3E",X"38",X"80",X"E8",X"3A",X"34",X"26",X"1E",X"2C", + X"1E",X"38",X"80",X"E8",X"28",X"3E",X"22",X"16",X"1C",X"32",X"38",X"80",X"DF",X"34",X"38",X"1E", + X"3A",X"3A",X"00",X"3A",X"3C",X"16",X"38",X"BC",X"EE",X"20",X"38",X"1E",X"30",X"1A",X"A4",X"EE", + X"22",X"1E",X"38",X"2E",X"16",X"B0",X"EB",X"3A",X"34",X"16",X"30",X"26",X"3A",X"A4",X"F4",X"34", + X"2C",X"16",X"C6",X"F1",X"28",X"32",X"3E",X"1E",X"C8",X"F1",X"3A",X"34",X"26",X"1E",X"AC",X"EE", + X"28",X"3E",X"1E",X"22",X"3E",X"9E",X"C7",X"1E",X"30",X"3C",X"1E",X"38",X"00",X"46",X"32",X"3E", + X"38",X"00",X"26",X"30",X"26",X"3C",X"26",X"16",X"2C",X"BA",X"B8",X"3A",X"40",X"34",X"00",X"1E", + X"30",X"3C",X"38",X"1E",X"48",X"00",X"40",X"32",X"3A",X"00",X"26",X"30",X"26",X"3C",X"26",X"16", + X"2C",X"1E",X"BA",X"AC",X"22",X"1E",X"18",X"1E",X"30",X"00",X"3A",X"26",X"1E",X"00",X"26",X"24", + X"38",X"1E",X"00",X"26",X"30",X"26",X"3C",X"26",X"16",X"2C",X"1E",X"30",X"00",X"1E",X"26",X"B0", + X"C7",X"1E",X"30",X"3C",X"38",X"1E",X"00",X"3A",X"3E",X"3A",X"00",X"26",X"30",X"26",X"1A",X"26", + X"16",X"2C",X"1E",X"BA",X"BE",X"1A",X"24",X"16",X"30",X"22",X"1E",X"00",X"42",X"26",X"3C",X"24", + X"00",X"2C",X"1E",X"20",X"3C",X"00",X"3A",X"3C",X"26",X"1A",X"AA",X"A6",X"3C",X"32",X"3E",X"38", + X"30",X"1E",X"48",X"00",X"2C",X"1E",X"00",X"18",X"32",X"3E",X"3C",X"32",X"30",X"00",X"34",X"32", + X"3E",X"38",X"00",X"1A",X"24",X"16",X"30",X"22",X"1E",X"B8",X"B5",X"2A",X"30",X"32",X"34",X"20", + X"00",X"1C",X"38",X"1E",X"24",X"1E",X"30",X"00",X"48",X"3E",X"2E",X"00",X"42",X"1E",X"1A",X"24", + X"3A",X"1E",X"2C",X"B0",X"AC",X"22",X"26",X"38",X"1E",X"00",X"2C",X"16",X"00",X"34",X"1E",X"38", + X"26",X"2C",X"2C",X"16",X"00",X"34",X"16",X"38",X"16",X"00",X"1A",X"16",X"2E",X"18",X"26",X"16", + X"B8",X"B5",X"2E",X"32",X"40",X"1E",X"00",X"38",X"26",X"22",X"24",X"3C",X"00",X"3A",X"3C",X"26", + X"1A",X"2A",X"00",X"3C",X"32",X"00",X"1E",X"30",X"3C",X"1E",X"B8",X"B2",X"34",X"32",X"3E",X"3A", + X"3A",X"1E",X"48",X"00",X"20",X"1E",X"3E",X"00",X"36",X"3E",X"16",X"30",X"1C",X"00",X"1A",X"32", + X"38",X"38",X"1E",X"1A",X"3C",X"9E",X"B2",X"20",X"26",X"38",X"1E",X"00",X"1C",X"38",X"3E",X"1E", + X"1A",X"2A",X"1E",X"30",X"00",X"42",X"1E",X"30",X"30",X"00",X"38",X"26",X"1A",X"24",X"3C",X"26", + X"A2",X"AC",X"32",X"34",X"38",X"26",X"2E",X"16",X"00",X"20",X"26",X"38",X"1E",X"00",X"34",X"16", + X"38",X"16",X"00",X"3A",X"1E",X"2C",X"1E",X"1A",X"1A",X"26",X"32",X"30",X"16",X"B8",X"C0",X"18", + X"2C",X"16",X"1A",X"2A",X"00",X"42",X"26",X"1C",X"32",X"42",X"00",X"24",X"16",X"2C",X"2C",X"00", + X"32",X"20",X"00",X"20",X"16",X"2E",X"9E",X"EE",X"20",X"38",X"1E",X"30",X"1A",X"A4",X"EE",X"22", + X"1E",X"38",X"2E",X"16",X"B0",X"EB",X"3A",X"34",X"16",X"30",X"26",X"3A",X"A4",X"9A",X"3A",X"1E", + X"2C",X"1E",X"1A",X"3C",X"00",X"1C",X"26",X"20",X"20",X"26",X"1A",X"3E",X"2C",X"3C",X"46",X"00", + X"42",X"26",X"3C",X"24",X"00",X"38",X"26",X"22",X"24",X"3C",X"00",X"3A",X"3C",X"26",X"1A",X"AA", + X"EE",X"20",X"38",X"1E",X"30",X"1A",X"A4",X"EE",X"22",X"1E",X"38",X"2E",X"16",X"B0",X"EB",X"3A", + X"34",X"16",X"30",X"26",X"3A",X"A4",X"90",X"34",X"3E",X"3A",X"24",X"00",X"2C",X"1E",X"20",X"3C", + X"00",X"3A",X"3C",X"26",X"1A",X"2A",X"00",X"16",X"30",X"1C",X"00",X"34",X"38",X"1E",X"3A",X"3A", + X"00",X"3A",X"3C",X"16",X"38",X"3C",X"00",X"3C",X"32",X"00",X"18",X"1E",X"22",X"26",X"B0",X"EE", + X"20",X"38",X"1E",X"30",X"1A",X"A4",X"EE",X"22",X"1E",X"38",X"2E",X"16",X"B0",X"EB",X"3A",X"34", + X"16",X"30",X"26",X"3A",X"A4",X"8B",X"18",X"32",X"30",X"3E",X"BA",X"E8",X"3C",X"26",X"2E",X"1E", + X"80",X"E0",X"1C",X"3E",X"38",X"1E",X"1E",X"80",X"E8",X"48",X"1E",X"26",X"3C",X"80",X"E4",X"3C", + X"26",X"1E",X"2E",X"34",X"32",X"80",X"E8",X"42",X"16",X"40",X"1E",X"80",X"DC",X"30",X"26",X"40", + X"1E",X"16",X"3E",X"80",X"E8",X"22",X"38",X"16",X"1C",X"80",X"E2",X"30",X"26",X"40",X"1E",X"2C", + X"80",X"B2",X"3A",X"24",X"32",X"32",X"3C",X"00",X"00",X"00",X"00",X"00",X"3C",X"32",X"00",X"1A", + X"32",X"2C",X"2C",X"1E",X"1A",X"3C",X"00",X"18",X"32",X"30",X"3E",X"BA",X"EE",X"20",X"38",X"1E", + X"30",X"1A",X"A4",X"EB",X"3A",X"34",X"16",X"30",X"26",X"3A",X"A4",X"EE",X"22",X"1E",X"38",X"2E", + X"16",X"B0",X"BA",X"42",X"16",X"40",X"1E",X"00",X"00",X"18",X"32",X"30",X"3E",X"3A",X"00",X"00", + X"00",X"00",X"00",X"1C",X"26",X"20",X"20",X"26",X"1A",X"3E",X"2C",X"3C",X"C6",X"EE",X"20",X"38", + X"1E",X"30",X"1A",X"A4",X"EB",X"3A",X"34",X"16",X"30",X"26",X"3A",X"A4",X"EE",X"22",X"1E",X"38", + X"2E",X"16",X"B0",X"DC",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"C1",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"D6",X"22",X"1E",X"2C",X"1C",X"00",X"1E",X"26",X"30",X"42", + X"1E",X"38",X"20",X"1E",X"B0",X"D6",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"E5",X"20",X"38",X"1E",X"1E",X"00",X"34",X"2C",X"16",X"C6",X"D6",X"04", + X"00",X"1A",X"32",X"26",X"30",X"00",X"06",X"00",X"34",X"2C",X"16",X"46",X"BA",X"CD",X"04",X"00", + X"34",X"26",X"1E",X"1A",X"1E",X"00",X"06",X"00",X"28",X"32",X"3E",X"1E",X"3E",X"38",X"BA",X"D0", + X"04",X"00",X"2E",X"3E",X"1E",X"30",X"48",X"00",X"06",X"00",X"3A",X"34",X"26",X"1E",X"2C",X"9E", + X"CD",X"04",X"00",X"2E",X"32",X"30",X"1E",X"1C",X"16",X"00",X"06",X"00",X"28",X"3E",X"1E",X"22", + X"32",X"BA",X"D9",X"04",X"00",X"1A",X"32",X"26",X"30",X"00",X"04",X"00",X"34",X"2C",X"16",X"C6", + X"D0",X"04",X"00",X"34",X"26",X"1E",X"1A",X"1E",X"00",X"04",X"00",X"28",X"32",X"3E",X"1E",X"3E", + X"B8",X"D0",X"04",X"00",X"2E",X"3E",X"1E",X"30",X"48",X"1E",X"00",X"04",X"00",X"3A",X"34",X"26", + X"1E",X"AC",X"D0",X"04",X"00",X"2E",X"32",X"30",X"1E",X"1C",X"16",X"00",X"04",X"00",X"28",X"3E", + X"1E",X"22",X"B2",X"D6",X"06",X"00",X"1A",X"32",X"26",X"30",X"3A",X"00",X"04",X"00",X"34",X"2C", + X"16",X"C6",X"CD",X"06",X"00",X"34",X"26",X"1E",X"1A",X"1E",X"3A",X"00",X"04",X"00",X"28",X"32", + X"3E",X"1E",X"3E",X"B8",X"CD",X"06",X"00",X"2E",X"3E",X"1E",X"30",X"48",X"1E",X"30",X"00",X"04", + X"00",X"3A",X"34",X"26",X"1E",X"AC",X"CD",X"06",X"00",X"2E",X"32",X"30",X"1E",X"1C",X"16",X"3A", + X"00",X"04",X"00",X"28",X"3E",X"1E",X"22",X"B2",X"CD",X"50",X"00",X"16",X"3C",X"16",X"38",X"26", + X"00",X"2E",X"1A",X"2E",X"2C",X"44",X"44",X"44",X"26",X"A6",X"E6",X"1A",X"38",X"1E",X"1C",X"26", + X"3C",X"3A",X"80",X"A0",X"2A",X"38",X"1E",X"1C",X"26",X"3C",X"1E",X"80",X"A0",X"1A",X"38",X"1E", + X"1C",X"26",X"3C",X"32",X"3A",X"80",X"D0",X"06",X"00",X"1A",X"38",X"1E",X"1C",X"26",X"3C",X"00", + X"2E",X"26",X"30",X"26",X"2E",X"3E",X"AE",X"D6",X"06",X"00",X"28",X"1E",X"3E",X"44",X"00",X"2E", + X"26",X"30",X"26",X"2E",X"3E",X"AE",X"D0",X"06",X"00",X"3A",X"34",X"26",X"1E",X"2C",X"1E",X"00", + X"2E",X"26",X"30",X"26",X"2E",X"3E",X"AE",X"D3",X"06",X"00",X"28",X"3E",X"1E",X"22",X"32",X"3A", + X"00",X"2E",X"26",X"30",X"26",X"2E",X"B2",X"BC",X"18",X"32",X"30",X"3E",X"3A",X"00",X"3A",X"34", + X"26",X"1C",X"1E",X"38",X"00",X"1E",X"40",X"1E",X"38",X"46",X"80",X"CE",X"18",X"32",X"30",X"3E", + X"3A",X"00",X"1A",X"24",X"16",X"36",X"3E",X"1E",X"80",X"CE",X"18",X"32",X"30",X"3E",X"3A",X"00", + X"28",X"1E",X"1C",X"1E",X"80",X"C8",X"18",X"32",X"30",X"3E",X"3A",X"00",X"1A",X"16",X"1C",X"16", + X"80",X"E0",X"2C",X"1E",X"40",X"1E",X"AC",X"DA",X"30",X"26",X"40",X"1E",X"16",X"BE",X"E2",X"22", + X"38",X"16",X"9C",X"E0",X"30",X"26",X"40",X"1E",X"AC",X"E4",X"30",X"1E",X"44",X"3C",X"00",X"18", + X"32",X"30",X"3E",X"3A",X"80",X"E8",X"20",X"38",X"1E",X"30",X"1A",X"A4",X"E8",X"22",X"1E",X"38", + X"2E",X"16",X"B0",X"E8",X"3A",X"34",X"16",X"30",X"26",X"3A",X"A4",X"C0",X"2C",X"26",X"40",X"1E", + X"3A",X"00",X"34",X"1E",X"38",X"00",X"22",X"16",X"2E",X"1E",X"80",X"E8",X"20",X"38",X"1E",X"30", + X"1A",X"A4",X"E8",X"22",X"1E",X"38",X"2E",X"16",X"B0",X"E8",X"3A",X"34",X"16",X"30",X"26",X"3A", + X"A4",X"C0",X"2E",X"16",X"44",X"00",X"3A",X"3C",X"16",X"38",X"3C",X"00",X"42",X"16",X"40",X"1E", + X"80",X"E8",X"20",X"38",X"1E",X"30",X"1A",X"A4",X"E8",X"22",X"1E",X"38",X"2E",X"16",X"B0",X"E8", + X"3A",X"34",X"16",X"30",X"26",X"3A",X"A4",X"C0",X"16",X"40",X"1E",X"38",X"16",X"22",X"1E",X"00", + X"22",X"16",X"2E",X"1E",X"00",X"3C",X"26",X"2E",X"1E",X"80",X"E8",X"20",X"38",X"1E",X"30",X"1A", + X"A4",X"E8",X"22",X"1E",X"38",X"2E",X"16",X"B0",X"E8",X"3A",X"34",X"16",X"30",X"26",X"3A",X"A4", + X"D9",X"1C",X"1E",X"2E",X"32",X"30",X"3A",X"3C",X"38",X"16",X"3C",X"26",X"32",X"B0",X"F4",X"1E", + X"16",X"3A",X"C6",X"EE",X"2E",X"1E",X"1C",X"26",X"3E",X"AE",X"F4",X"24",X"16",X"38",X"9C",X"C0", + X"22",X"16",X"2E",X"1E",X"3A",X"00",X"34",X"2C",X"16",X"46",X"1E",X"9C",X"AC",X"24",X"32",X"2C", + X"1C",X"00",X"20",X"26",X"38",X"1E",X"00",X"3C",X"24",X"1E",X"30",X"00",X"34",X"38",X"1E",X"3A", + X"3A",X"00",X"3A",X"3C",X"16",X"38",X"3C",X"00",X"84",X"E8",X"20",X"32",X"38",X"00",X"3C",X"1E", + X"3A",X"BC",X"D3",X"3C",X"32",X"00",X"1A",X"2C",X"1E",X"16",X"38",X"00",X"3A",X"1A",X"32",X"38", + X"1E",X"BA",X"D6",X"3C",X"32",X"00",X"1A",X"2C",X"1E",X"16",X"38",X"00",X"3C",X"26",X"2E",X"1E", + X"BA",X"B5",X"3C",X"32",X"00",X"1A",X"2C",X"1E",X"16",X"38",X"00",X"3A",X"1A",X"32",X"38",X"1E", + X"3A",X"00",X"16",X"30",X"1C",X"00",X"3C",X"26",X"2E",X"1E",X"BA",X"BB",X"1E",X"16",X"38",X"32", + X"2E",X"00",X"18",X"3E",X"3A",X"46",X"00",X"00",X"34",X"2C",X"1E",X"16",X"3A",X"1E",X"00",X"42", + X"16",X"26",X"BC",X"C0",X"18",X"32",X"30",X"3E",X"3A",X"00",X"16",X"1C",X"1C",X"1E",X"38",X"80", + X"C0",X"2C",X"1E",X"20",X"3C",X"00",X"2E",X"1E",X"1A",X"24",X"00",X"C4",X"C0",X"38",X"26",X"22", + X"24",X"3C",X"00",X"2E",X"1E",X"1A",X"24",X"00",X"C4",X"BA",X"3C",X"16",X"22",X"00",X"22",X"38", + X"3E",X"18",X"3A",X"3C",X"1E",X"16",X"2A",X"3A",X"00",X"20",X"32",X"38",X"00",X"34",X"32",X"26", + X"30",X"3C",X"BA",X"AB",X"3A",X"24",X"32",X"32",X"3C",X"00",X"18",X"3E",X"22",X"3A",X"00",X"3C", + X"24",X"1E",X"30",X"00",X"3C",X"16",X"22",X"00",X"22",X"38",X"3E",X"18",X"3A",X"3C",X"1E",X"16", + X"2A",X"BA",X"9C",X"34",X"3E",X"3A",X"24",X"00",X"1E",X"22",X"22",X"3A",X"00",X"32",X"20",X"20", + X"00",X"42",X"1E",X"18",X"00",X"18",X"1E",X"20",X"32",X"38",X"1E",X"00",X"3C",X"24",X"1E",X"46", + X"00",X"24",X"16",X"3C",X"1A",X"A4",X"A8",X"3A",X"24",X"32",X"32",X"3C",X"00",X"22",X"38",X"1E", + X"30",X"16",X"1C",X"1E",X"00",X"18",X"3E",X"22",X"3A",X"00",X"42",X"26",X"3C",X"24",X"00",X"1A", + X"16",X"3E",X"3C",X"26",X"32",X"B0",X"A8",X"DE",X"08",X"DF",X"68",X"DF",X"C8",X"DF",X"A9",X"00", + X"0A",X"A8",X"B9",X"46",X"E7",X"85",X"9B",X"B9",X"47",X"E7",X"85",X"9C",X"60",X"F3",X"00",X"78", + X"8D",X"80",X"89",X"8D",X"C0",X"88",X"8D",X"80",X"88",X"A2",X"FF",X"9A",X"AD",X"00",X"78",X"29", + X"10",X"F0",X"03",X"4C",X"18",X"90",X"78",X"A9",X"C0",X"8D",X"00",X"88",X"A9",X"00",X"A2",X"00", + X"95",X"00",X"9D",X"00",X"01",X"9D",X"00",X"02",X"9D",X"00",X"03",X"9D",X"00",X"04",X"9D",X"00", + X"05",X"9D",X"00",X"06",X"9D",X"00",X"07",X"9D",X"00",X"20",X"9D",X"00",X"21",X"9D",X"00",X"22", + X"9D",X"00",X"23",X"9D",X"00",X"24",X"9D",X"00",X"25",X"9D",X"00",X"26",X"9D",X"00",X"27",X"E8", + X"D0",X"CE",X"A9",X"69",X"8D",X"FF",X"07",X"8D",X"80",X"88",X"4C",X"D3",X"E8",X"48",X"8A",X"48", + X"98",X"48",X"D8",X"AD",X"FF",X"07",X"C9",X"69",X"D0",X"06",X"20",X"B3",X"D6",X"4C",X"CA",X"E8", + X"8D",X"0B",X"60",X"AD",X"08",X"60",X"8D",X"2E",X"06",X"8D",X"0B",X"68",X"AD",X"08",X"68",X"8D", + X"2F",X"06",X"24",X"EF",X"10",X"11",X"A5",X"8C",X"F0",X"14",X"AD",X"00",X"78",X"29",X"10",X"F0", + X"0D",X"A5",X"8D",X"F0",X"1D",X"D0",X"07",X"AD",X"20",X"04",X"C9",X"07",X"D0",X"14",X"AD",X"00", + X"88",X"49",X"FF",X"29",X"60",X"F0",X"08",X"4D",X"2D",X"06",X"F0",X"06",X"8D",X"2C",X"06",X"8D", + X"2D",X"06",X"E6",X"94",X"A5",X"19",X"85",X"18",X"A5",X"94",X"29",X"0F",X"D0",X"03",X"20",X"B3", + X"D6",X"A5",X"00",X"C9",X"55",X"D0",X"03",X"4C",X"6F",X"E8",X"20",X"83",X"BD",X"20",X"64",X"D5", + X"A5",X"99",X"4A",X"4A",X"85",X"19",X"A5",X"8A",X"0A",X"26",X"19",X"A5",X"8B",X"0A",X"26",X"19", + X"A5",X"19",X"85",X"99",X"8D",X"00",X"88",X"AD",X"20",X"01",X"D0",X"23",X"A5",X"00",X"C9",X"AA", + X"F0",X"1D",X"AD",X"00",X"78",X"29",X"40",X"D0",X"0B",X"E6",X"81",X"A5",X"81",X"C9",X"0A",X"D0", + X"0E",X"8D",X"80",X"88",X"A9",X"00",X"85",X"81",X"A9",X"AA",X"85",X"00",X"8D",X"40",X"88",X"A5", + X"18",X"85",X"19",X"A5",X"FC",X"D0",X"50",X"CE",X"D0",X"03",X"D0",X"4B",X"A9",X"F6",X"8D",X"D0", + X"03",X"CE",X"22",X"04",X"10",X"05",X"A9",X"00",X"8D",X"22",X"04",X"24",X"EF",X"10",X"1E",X"CE", + X"24",X"04",X"10",X"19",X"A9",X"1E",X"8D",X"24",X"04",X"AD",X"2F",X"06",X"29",X"03",X"AA",X"AD", + X"2B",X"06",X"DD",X"25",X"9C",X"90",X"06",X"38",X"E9",X"04",X"8D",X"2B",X"06",X"E6",X"79",X"E6", + X"76",X"D0",X"06",X"E6",X"77",X"D0",X"02",X"E6",X"78",X"24",X"EF",X"30",X"0A",X"E6",X"7C",X"D0", + X"06",X"E6",X"7D",X"D0",X"02",X"E6",X"7E",X"8D",X"80",X"89",X"8D",X"C0",X"88",X"68",X"A8",X"68", + X"AA",X"68",X"40",X"A2",X"11",X"9A",X"8A",X"86",X"00",X"A0",X"00",X"A2",X"01",X"C8",X"B9",X"00", + X"00",X"D0",X"21",X"E8",X"D0",X"F7",X"BA",X"8A",X"8D",X"80",X"89",X"C8",X"59",X"00",X"00",X"D0", + X"13",X"8A",X"A2",X"00",X"96",X"00",X"C8",X"D0",X"05",X"0A",X"A2",X"00",X"B0",X"4B",X"AA",X"9A", + X"96",X"00",X"D0",X"D7",X"AA",X"8A",X"A0",X"82",X"29",X"0F",X"F0",X"02",X"A0",X"12",X"8A",X"A2", + X"82",X"29",X"F0",X"F0",X"02",X"A2",X"12",X"98",X"9A",X"AA",X"8E",X"00",X"60",X"A2",X"A8",X"8E", + X"01",X"60",X"A0",X"0C",X"A2",X"64",X"2C",X"00",X"78",X"30",X"FB",X"2C",X"00",X"78",X"10",X"FB", + X"8D",X"80",X"89",X"CA",X"D0",X"F0",X"C0",X"05",X"D0",X"03",X"8E",X"01",X"60",X"88",X"D0",X"E4", + X"4A",X"B0",X"03",X"BA",X"D0",X"D4",X"4C",X"00",X"EA",X"A2",X"FF",X"9A",X"A2",X"00",X"8A",X"95", + X"00",X"E8",X"D0",X"FB",X"A8",X"A9",X"01",X"85",X"01",X"A2",X"11",X"B1",X"00",X"D0",X"27",X"8A", + X"91",X"00",X"51",X"00",X"D0",X"20",X"8A",X"0A",X"AA",X"90",X"F5",X"C8",X"D0",X"EB",X"8D",X"80", + X"89",X"E6",X"01",X"A6",X"01",X"E0",X"04",X"90",X"E0",X"A9",X"20",X"E0",X"20",X"90",X"D8",X"E0", + X"28",X"90",X"D6",X"4C",X"07",X"EA",X"A6",X"01",X"E0",X"20",X"85",X"02",X"90",X"03",X"8A",X"E9", + X"1C",X"4A",X"4A",X"29",X"07",X"A8",X"A5",X"02",X"84",X"00",X"85",X"01",X"A9",X"01",X"85",X"02", + X"A2",X"A8",X"A0",X"82",X"A5",X"00",X"D0",X"08",X"A5",X"01",X"29",X"0F",X"F0",X"02",X"A0",X"12", + X"8E",X"01",X"60",X"8C",X"00",X"60",X"A9",X"09",X"C0",X"12",X"F0",X"02",X"A9",X"01",X"A8",X"A2", + X"00",X"2C",X"00",X"78",X"30",X"FB",X"2C",X"00",X"78",X"10",X"FB",X"8D",X"80",X"89",X"CA",X"D0", + X"F0",X"88",X"D0",X"ED",X"8E",X"01",X"60",X"A0",X"09",X"2C",X"00",X"78",X"30",X"FB",X"2C",X"00", + X"78",X"10",X"FB",X"8D",X"80",X"89",X"CA",X"D0",X"F0",X"88",X"D0",X"ED",X"A5",X"00",X"D0",X"08", + X"A5",X"01",X"4A",X"4A",X"4A",X"4A",X"85",X"01",X"C6",X"02",X"F0",X"A4",X"C6",X"00",X"10",X"9C", + X"8D",X"80",X"89",X"A9",X"FF",X"85",X"D4",X"A9",X"00",X"AA",X"9D",X"00",X"01",X"9D",X"00",X"02", + X"9D",X"00",X"03",X"CA",X"D0",X"F4",X"A8",X"85",X"C0",X"A9",X"30",X"85",X"C1",X"A9",X"10",X"85", + X"C2",X"8A",X"51",X"C0",X"C8",X"D0",X"FB",X"E6",X"C1",X"8D",X"80",X"89",X"C6",X"C2",X"D0",X"F2", + X"95",X"CB",X"E8",X"F0",X"18",X"A5",X"C1",X"C9",X"60",X"D0",X"04",X"A9",X"90",X"85",X"C1",X"C9", + X"F0",X"90",X"D8",X"A2",X"FF",X"A9",X"28",X"85",X"C1",X"A9",X"08",X"D0",X"D2",X"A5",X"CA",X"05", + X"CB",X"F0",X"0A",X"A9",X"F0",X"A2",X"A2",X"8D",X"04",X"60",X"8E",X"05",X"60",X"A2",X"05",X"AD", + X"0A",X"68",X"CD",X"0A",X"68",X"D0",X"05",X"CA",X"10",X"F8",X"85",X"D5",X"A2",X"05",X"AD",X"0A", + X"60",X"CD",X"0A",X"60",X"D0",X"05",X"CA",X"10",X"F8",X"85",X"D6",X"58",X"20",X"A9",X"D6",X"A0", + X"02",X"AD",X"2D",X"01",X"F0",X"0A",X"85",X"D7",X"20",X"89",X"D6",X"A0",X"00",X"8C",X"2D",X"01", + X"84",X"C9",X"4C",X"D8",X"EC",X"AD",X"2E",X"01",X"0D",X"2B",X"01",X"D0",X"0C",X"20",X"A9",X"D6", + X"AD",X"2D",X"01",X"85",X"D7",X"A9",X"02",X"85",X"C9",X"60",X"A0",X"A7",X"A9",X"04",X"20",X"EF", + X"D7",X"A2",X"20",X"A9",X"5E",X"20",X"E3",X"D7",X"A9",X"48",X"A2",X"40",X"A0",X"00",X"20",X"1B", + X"D8",X"20",X"42",X"EC",X"A9",X"01",X"20",X"12",X"D8",X"A2",X"46",X"86",X"C2",X"A2",X"09",X"B5", + X"CA",X"F0",X"1B",X"86",X"C1",X"20",X"F9",X"D7",X"A6",X"C2",X"8A",X"38",X"E9",X"08",X"85",X"C2", + X"A9",X"F6",X"A0",X"00",X"20",X"1B",X"D8",X"A5",X"C1",X"20",X"C3",X"ED",X"A6",X"C1",X"CA",X"10", + X"DE",X"20",X"F9",X"D7",X"A9",X"F6",X"A2",X"58",X"A0",X"00",X"20",X"1B",X"D8",X"A2",X"03",X"86", + X"C1",X"A6",X"C1",X"A0",X"00",X"B5",X"D4",X"F0",X"03",X"BC",X"CA",X"EB",X"B9",X"C4",X"5D",X"BE", + X"C5",X"5D",X"20",X"FD",X"D7",X"C6",X"C1",X"10",X"E8",X"20",X"A8",X"EC",X"60",X"A2",X"FE",X"A9", + X"5E",X"4C",X"E3",X"D7",X"E6",X"C4",X"10",X"06",X"A9",X"00",X"85",X"C4",X"E6",X"C2",X"A5",X"C2", + X"29",X"07",X"AA",X"BC",X"69",X"EB",X"A9",X"00",X"99",X"F1",X"67",X"BC",X"6A",X"EB",X"BD",X"73", + X"EB",X"99",X"F0",X"67",X"A9",X"A8",X"99",X"F1",X"67",X"A2",X"04",X"A9",X"5F",X"20",X"E3",X"D7", + X"20",X"F9",X"D7",X"A4",X"C4",X"A5",X"C2",X"29",X"07",X"D0",X"04",X"A9",X"01",X"85",X"C2",X"20", + X"12",X"D8",X"A2",X"22",X"A9",X"5E",X"4C",X"E3",X"D7",X"16",X"00",X"10",X"02",X"12",X"04",X"14", + X"06",X"16",X"00",X"10",X"10",X"40",X"40",X"90",X"90",X"FF",X"FF",X"A2",X"20",X"A9",X"5E",X"20", + X"E3",X"D7",X"A0",X"06",X"84",X"C2",X"20",X"F9",X"D7",X"A4",X"C2",X"B9",X"BC",X"EB",X"BE",X"C3", + X"EB",X"20",X"1B",X"D8",X"A5",X"C2",X"49",X"FF",X"29",X"07",X"A8",X"20",X"EF",X"D7",X"A5",X"C2", + X"D0",X"07",X"A2",X"C0",X"A9",X"5E",X"4C",X"AD",X"EB",X"A2",X"BA",X"A9",X"5E",X"20",X"E3",X"D7", + X"C6",X"C2",X"10",X"D2",X"A2",X"DE",X"A9",X"5E",X"20",X"E3",X"D7",X"60",X"DE",X"9D",X"1F",X"9D", + X"DE",X"1F",X"DE",X"F4",X"D8",X"D8",X"10",X"D8",X"10",X"10",X"38",X"34",X"36",X"1E",X"20",X"F9", + X"D7",X"A9",X"01",X"20",X"10",X"D8",X"A2",X"06",X"86",X"C1",X"A4",X"C1",X"A9",X"90",X"BE",X"1D", + X"EC",X"20",X"1B",X"D8",X"A2",X"F6",X"A9",X"5E",X"20",X"E3",X"D7",X"C6",X"C1",X"10",X"EB",X"A2", + X"06",X"86",X"C1",X"A4",X"C1",X"B9",X"24",X"EC",X"A2",X"6B",X"20",X"1B",X"D8",X"A2",X"EE",X"A9", + X"5E",X"20",X"E3",X"D7",X"C6",X"C1",X"10",X"EB",X"AD",X"00",X"88",X"29",X"20",X"D0",X"09",X"06", + X"C0",X"90",X"02",X"E6",X"C5",X"4C",X"1C",X"EC",X"A9",X"20",X"85",X"C0",X"60",X"B2",X"CC",X"E6", + X"00",X"1A",X"34",X"4E",X"AC",X"C8",X"E4",X"00",X"1C",X"38",X"54",X"A2",X"46",X"A9",X"5F",X"20", + X"E3",X"D7",X"A9",X"20",X"85",X"C0",X"A2",X"3A",X"A9",X"5F",X"20",X"E3",X"D7",X"C6",X"C0",X"10", + X"F5",X"60",X"A2",X"0F",X"86",X"C1",X"8D",X"0B",X"60",X"EA",X"AD",X"08",X"60",X"85",X"C3",X"8D", + X"0B",X"68",X"EA",X"AD",X"08",X"68",X"48",X"29",X"01",X"18",X"20",X"C3",X"ED",X"46",X"C3",X"68", + X"6A",X"C6",X"C1",X"10",X"F1",X"A9",X"D0",X"A0",X"00",X"A2",X"F8",X"20",X"1B",X"D8",X"A2",X"07", + X"86",X"C1",X"A9",X"78",X"85",X"C6",X"A9",X"07",X"85",X"C7",X"A9",X"00",X"85",X"C5",X"A8",X"B1", + X"C5",X"49",X"FF",X"29",X"7F",X"48",X"29",X"01",X"18",X"20",X"C3",X"ED",X"68",X"6A",X"C8",X"C6", + X"C7",X"10",X"F2",X"A9",X"D0",X"A0",X"00",X"A2",X"F8",X"20",X"1B",X"D8",X"A5",X"C6",X"18",X"69", + X"08",X"85",X"C6",X"C9",X"90",X"90",X"CF",X"60",X"84",X"C3",X"AD",X"00",X"78",X"29",X"0F",X"85", + X"C0",X"AD",X"00",X"80",X"29",X"1F",X"85",X"C1",X"AD",X"00",X"88",X"29",X"7F",X"85",X"C2",X"A5", + X"C0",X"09",X"10",X"25",X"C1",X"09",X"60",X"25",X"C2",X"49",X"7F",X"F0",X"07",X"69",X"40",X"8D", + X"00",X"60",X"A0",X"A4",X"8C",X"01",X"60",X"60",X"A2",X"18",X"2C",X"00",X"78",X"10",X"FB",X"2C", + X"00",X"78",X"30",X"FB",X"CA",X"10",X"F3",X"E6",X"D9",X"2C",X"00",X"78",X"50",X"FB",X"A9",X"00", + X"8D",X"11",X"00",X"A9",X"20",X"8D",X"12",X"00",X"AD",X"00",X"78",X"49",X"FF",X"29",X"24",X"F0", + X"26",X"06",X"C8",X"90",X"1F",X"AD",X"00",X"88",X"29",X"40",X"D0",X"06",X"20",X"8E",X"ED",X"20", + X"FF",X"ED",X"E6",X"C9",X"E6",X"C9",X"A9",X"00",X"A2",X"06",X"9D",X"00",X"60",X"9D",X"00",X"68", + X"CA",X"CA",X"10",X"F6",X"4C",X"2B",X"ED",X"A9",X"20",X"85",X"C8",X"A5",X"C9",X"C9",X"0C",X"D0", + X"0E",X"A5",X"C5",X"29",X"07",X"D0",X"02",X"A9",X"01",X"09",X"C0",X"A8",X"4C",X"41",X"ED",X"A0", + X"A7",X"A9",X"04",X"20",X"EF",X"D7",X"A2",X"20",X"A9",X"5E",X"20",X"E3",X"D7",X"20",X"7B",X"ED", + X"20",X"F9",X"D7",X"20",X"A6",X"D7",X"A9",X"C0",X"85",X"DA",X"8D",X"40",X"88",X"8D",X"80",X"89", + X"AD",X"00",X"78",X"29",X"10",X"D0",X"03",X"4C",X"D8",X"EC",X"4C",X"6A",X"ED",X"94",X"EA",X"A9", + X"EA",X"1C",X"EB",X"23",X"EB",X"2A",X"EC",X"7A",X"EB",X"CD",X"EB",X"A6",X"C9",X"E0",X"0E",X"90", + X"04",X"A2",X"02",X"86",X"C9",X"BD",X"6E",X"ED",X"48",X"BD",X"6D",X"ED",X"48",X"60",X"A9",X"00", + X"8D",X"0F",X"60",X"8D",X"0F",X"68",X"A9",X"07",X"8D",X"0F",X"60",X"8D",X"0F",X"68",X"A2",X"0F", + X"A9",X"00",X"9D",X"00",X"60",X"9D",X"00",X"68",X"CA",X"10",X"F7",X"A9",X"00",X"8D",X"08",X"60", + X"A2",X"00",X"8E",X"08",X"68",X"60",X"48",X"08",X"4A",X"4A",X"4A",X"4A",X"28",X"20",X"C3",X"ED", + X"68",X"29",X"0F",X"90",X"05",X"29",X"0F",X"F0",X"08",X"18",X"0A",X"08",X"20",X"DD",X"ED",X"28", + X"60",X"AE",X"C4",X"5D",X"AD",X"C5",X"5D",X"08",X"20",X"E8",X"ED",X"28",X"60",X"A8",X"BE",X"C6", + X"5D",X"B9",X"C7",X"5D",X"20",X"E8",X"ED",X"60",X"A0",X"01",X"91",X"11",X"88",X"8A",X"91",X"11", + X"AD",X"11",X"00",X"18",X"69",X"02",X"8D",X"11",X"00",X"90",X"03",X"EE",X"12",X"00",X"60",X"78", + X"D8",X"A9",X"FF",X"85",X"02",X"D0",X"11",X"A5",X"00",X"F0",X"0D",X"AD",X"00",X"78",X"29",X"40", + X"F0",X"06",X"8D",X"80",X"88",X"8D",X"40",X"88",X"8D",X"80",X"89",X"AD",X"00",X"78",X"29",X"10", + X"D0",X"FE",X"AD",X"00",X"80",X"18",X"2A",X"2A",X"2A",X"2A",X"49",X"FF",X"29",X"07",X"85",X"00", + X"A5",X"00",X"C5",X"02",X"F0",X"D1",X"85",X"02",X"AA",X"F0",X"21",X"A9",X"C7",X"8D",X"00",X"20", + X"A9",X"60",X"8D",X"01",X"20",X"BC",X"B0",X"EE",X"BD",X"B8",X"EE",X"AA",X"B9",X"C0",X"EE",X"9D", + X"02",X"20",X"88",X"CA",X"10",X"F6",X"8D",X"80",X"88",X"4C",X"07",X"EE",X"A9",X"20",X"85",X"04", + X"A9",X"00",X"85",X"03",X"85",X"01",X"A8",X"A9",X"08",X"85",X"00",X"18",X"A5",X"01",X"91",X"03", + X"69",X"05",X"85",X"01",X"C8",X"D0",X"F4",X"E6",X"04",X"C6",X"00",X"D0",X"EE",X"A0",X"07",X"A2", + X"00",X"A9",X"11",X"9D",X"80",X"27",X"9D",X"80",X"26",X"48",X"8A",X"18",X"69",X"10",X"AA",X"68", + X"88",X"10",X"F0",X"8D",X"B2",X"26",X"8D",X"B2",X"27",X"8D",X"DE",X"26",X"8D",X"EE",X"26",X"8D", + X"DE",X"27",X"8D",X"EE",X"27",X"A9",X"80",X"8D",X"FE",X"26",X"8D",X"FE",X"27",X"4C",X"56",X"EE", + X"01",X"01",X"15",X"2B",X"45",X"71",X"01",X"01",X"01",X"01",X"13",X"15",X"19",X"2B",X"01",X"01", + X"00",X"20",X"40",X"80",X"00",X"71",X"80",X"01",X"00",X"22",X"40",X"80",X"00",X"60",X"80",X"1E", + X"00",X"3E",X"40",X"80",X"00",X"20",X"40",X"80",X"00",X"71",X"80",X"01",X"00",X"22",X"07",X"E0", + X"00",X"20",X"40",X"80",X"80",X"1E",X"00",X"3E",X"40",X"80",X"00",X"20",X"40",X"80",X"00",X"71", + X"80",X"01",X"00",X"22",X"07",X"E0",X"00",X"20",X"40",X"80",X"80",X"1E",X"00",X"3E",X"40",X"80", + X"2F",X"51",X"40",X"80",X"00",X"20",X"40",X"80",X"00",X"71",X"80",X"01",X"00",X"22",X"07",X"E0", + X"00",X"20",X"40",X"80",X"80",X"1E",X"00",X"3E",X"40",X"80",X"2F",X"51",X"40",X"80",X"11",X"A0", + X"20",X"51",X"40",X"80",X"00",X"20",X"13",X"A0",X"00",X"C0",X"15",X"A0",X"00",X"C0",X"2F",X"40", + X"00",X"C0",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"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"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"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"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"5F",X"E7",X"5F",X"E7",X"BD",X"E7"); +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/BlackWidow_MiST/rtl/roms/bwidow_vec_rom1.vhd b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/roms/bwidow_vec_rom1.vhd new file mode 100644 index 00000000..c9bd56ff --- /dev/null +++ b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/roms/bwidow_vec_rom1.vhd @@ -0,0 +1,150 @@ +library ieee; +use ieee.std_logic_1164.all,ieee.numeric_std.all; + +entity bwidow_vec_rom1 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 bwidow_vec_rom1 is + type rom is array(0 to 2047) of std_logic_vector(7 downto 0); + signal rom_data: rom := ( + X"AE",X"E8",X"B9",X"E8",X"C4",X"E8",X"CF",X"E8",X"DA",X"E8",X"E5",X"E8",X"F0",X"E8",X"FB",X"E8", + X"06",X"E9",X"11",X"E9",X"1C",X"E9",X"27",X"E9",X"32",X"E9",X"3D",X"E9",X"48",X"E9",X"53",X"E9", + X"5E",X"E9",X"6F",X"E9",X"80",X"E9",X"91",X"E9",X"A2",X"E9",X"B3",X"E9",X"C4",X"E9",X"D5",X"E9", + X"E6",X"E9",X"F7",X"E9",X"08",X"EA",X"19",X"EA",X"2A",X"EA",X"3B",X"EA",X"4C",X"EA",X"5D",X"EA", + X"6E",X"EA",X"87",X"EA",X"A0",X"EA",X"BA",X"EA",X"D3",X"EA",X"EC",X"EA",X"05",X"EB",X"1E",X"EB", + X"37",X"EB",X"50",X"EB",X"69",X"EB",X"82",X"EB",X"9B",X"EB",X"B4",X"EB",X"CD",X"EB",X"E6",X"EB", + X"A0",X"E7",X"A0",X"E7",X"A0",X"E7",X"A0",X"E7",X"A0",X"E7",X"A0",X"E7",X"A0",X"E7",X"A0",X"E7", + X"A0",X"E7",X"A0",X"E7",X"A0",X"E7",X"A0",X"E7",X"A0",X"E7",X"A0",X"E7",X"A0",X"E7",X"A0",X"E7", + X"75",X"E8",X"88",X"E8",X"9B",X"E8",X"A0",X"E7",X"A0",X"E7",X"A0",X"E7",X"A0",X"E7",X"A0",X"E7", + X"A0",X"E7",X"A0",X"E7",X"A0",X"E7",X"A0",X"E7",X"A0",X"E7",X"A0",X"E7",X"A0",X"E7",X"A0",X"E7", + X"8B",X"E7",X"8B",X"E7",X"8B",X"E7",X"8B",X"E7",X"8B",X"E7",X"8B",X"E7",X"8B",X"E7",X"8B",X"E7", + X"8B",X"E7",X"8B",X"E7",X"8B",X"E7",X"8B",X"E7",X"8B",X"E7",X"8B",X"E7",X"8B",X"E7",X"8B",X"E7", + X"4F",X"ED",X"5F",X"ED",X"6F",X"ED",X"7F",X"ED",X"8F",X"ED",X"9F",X"ED",X"AF",X"ED",X"BF",X"ED", + X"CF",X"ED",X"DF",X"ED",X"EF",X"ED",X"FF",X"ED",X"0F",X"EE",X"1F",X"EE",X"2F",X"EE",X"3F",X"EE", + X"4F",X"EE",X"61",X"EE",X"73",X"EE",X"85",X"EE",X"97",X"EE",X"A9",X"EE",X"BB",X"EE",X"CD",X"EE", + X"DF",X"EE",X"F1",X"EE",X"03",X"EF",X"15",X"EF",X"27",X"EF",X"39",X"EF",X"4B",X"EF",X"5D",X"EF", + X"6F",X"EF",X"79",X"EF",X"83",X"EF",X"8D",X"EF",X"97",X"EF",X"A1",X"EF",X"AB",X"EF",X"B5",X"EF", + X"BF",X"EF",X"C9",X"EF",X"D3",X"EF",X"DD",X"EF",X"E7",X"EF",X"F1",X"EF",X"FB",X"EF",X"05",X"F0", + X"0F",X"F0",X"18",X"F0",X"21",X"F0",X"2A",X"F0",X"33",X"F0",X"3C",X"F0",X"45",X"F0",X"4E",X"F0", + X"57",X"F0",X"60",X"F0",X"69",X"F0",X"72",X"F0",X"7B",X"F0",X"84",X"F0",X"8D",X"F0",X"96",X"F0", + X"0F",X"F0",X"18",X"F0",X"21",X"F0",X"2A",X"F0",X"33",X"F0",X"3C",X"F0",X"45",X"F0",X"4E",X"F0", + X"57",X"F0",X"60",X"F0",X"69",X"F0",X"72",X"F0",X"7B",X"F0",X"84",X"F0",X"8D",X"F0",X"96",X"F0", + X"8B",X"E7",X"8B",X"E7",X"8B",X"E7",X"8B",X"E7",X"8B",X"E7",X"8B",X"E7",X"8B",X"E7",X"8B",X"E7", + X"8B",X"E7",X"8B",X"E7",X"8B",X"E7",X"8B",X"E7",X"8B",X"E7",X"8B",X"E7",X"8B",X"E7",X"8B",X"E7", + X"00",X"C0",X"00",X"C0",X"00",X"C0",X"00",X"C0",X"00",X"C0",X"00",X"C0",X"00",X"C0",X"00",X"C0", + X"00",X"C0",X"00",X"C0",X"00",X"C0",X"00",X"C0",X"00",X"C0",X"00",X"C0",X"00",X"C0",X"00",X"C0", + X"9F",X"F0",X"B1",X"F0",X"C3",X"F0",X"D5",X"F0",X"E7",X"F0",X"F9",X"F0",X"0B",X"F1",X"1D",X"F1", + X"2F",X"F1",X"41",X"F1",X"53",X"F1",X"65",X"F1",X"77",X"F1",X"89",X"F1",X"9B",X"F1",X"AD",X"F1", + X"BF",X"F1",X"C9",X"F1",X"D3",X"F1",X"DD",X"F1",X"E7",X"F1",X"F1",X"F1",X"FB",X"F1",X"05",X"F2", + X"0F",X"F2",X"19",X"F2",X"23",X"F2",X"2D",X"F2",X"37",X"F2",X"41",X"F2",X"4B",X"F2",X"55",X"F2", + X"6F",X"EF",X"79",X"EF",X"83",X"EF",X"8D",X"EF",X"97",X"EF",X"A1",X"EF",X"AB",X"EF",X"B5",X"EF", + X"BF",X"EF",X"C9",X"EF",X"D3",X"EF",X"DD",X"EF",X"E7",X"EF",X"F1",X"EF",X"FB",X"EF",X"05",X"F0", + X"30",X"B5",X"00",X"C0",X"45",X"B5",X"00",X"C0",X"5A",X"B5",X"00",X"C0",X"6F",X"B5",X"00",X"C0", + X"84",X"B5",X"00",X"C0",X"99",X"B5",X"00",X"C0",X"AE",X"B5",X"00",X"C0",X"C3",X"B5",X"00",X"C0", + X"D8",X"B5",X"00",X"C0",X"ED",X"B5",X"00",X"C0",X"02",X"B6",X"00",X"C0",X"17",X"B6",X"00",X"C0", + X"2C",X"B6",X"00",X"C0",X"41",X"B6",X"00",X"C0",X"56",X"B6",X"00",X"C0",X"6B",X"B6",X"00",X"C0", + X"80",X"B6",X"00",X"C0",X"95",X"B6",X"00",X"C0",X"AA",X"B6",X"00",X"C0",X"BF",X"B6",X"00",X"C0", + X"D4",X"B6",X"00",X"C0",X"E9",X"B6",X"00",X"C0",X"FE",X"B6",X"00",X"C0",X"13",X"B7",X"00",X"C0", + X"28",X"B7",X"00",X"C0",X"3D",X"B7",X"00",X"C0",X"52",X"B7",X"00",X"C0",X"67",X"B7",X"00",X"C0", + X"7C",X"B7",X"00",X"C0",X"91",X"B7",X"00",X"C0",X"A6",X"B7",X"00",X"C0",X"BB",X"B7",X"00",X"C0", + X"D0",X"B7",X"00",X"C0",X"E5",X"B7",X"00",X"C0",X"FA",X"B7",X"00",X"C0",X"0F",X"B8",X"00",X"C0", + X"24",X"B8",X"00",X"C0",X"39",X"B8",X"00",X"C0",X"4E",X"B8",X"00",X"C0",X"63",X"B8",X"00",X"C0", + X"78",X"B8",X"00",X"C0",X"8D",X"B8",X"00",X"C0",X"A2",X"B8",X"00",X"C0",X"B7",X"B8",X"00",X"C0", + X"CC",X"B8",X"00",X"C0",X"E1",X"B8",X"00",X"C0",X"F6",X"B8",X"00",X"C0",X"0B",X"B9",X"00",X"C0", + 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"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"30",X"B5",X"5F",X"F2",X"45",X"B5",X"6E",X"F2",X"5A",X"B5",X"7D",X"F2",X"6F",X"B5",X"8C",X"F2", + X"84",X"B5",X"9C",X"F2",X"99",X"B5",X"AB",X"F2",X"AE",X"B5",X"BA",X"F2",X"C3",X"B5",X"C9",X"F2", + X"D8",X"B5",X"D8",X"F2",X"ED",X"B5",X"E7",X"F2",X"02",X"B6",X"F6",X"F2",X"17",X"B6",X"05",X"F3", + X"2C",X"B6",X"14",X"F3",X"41",X"B6",X"23",X"F3",X"56",X"B6",X"32",X"F3",X"6B",X"B6",X"41",X"F3", + X"80",X"B6",X"50",X"F3",X"95",X"B6",X"5F",X"F3",X"AA",X"B6",X"6E",X"F3",X"BF",X"B6",X"7D",X"F3", + X"D4",X"B6",X"8C",X"F3",X"E9",X"B6",X"9B",X"F3",X"FE",X"B6",X"AA",X"F3",X"13",X"B7",X"B9",X"F3", + X"28",X"B7",X"C8",X"F3",X"3D",X"B7",X"D7",X"F3",X"52",X"B7",X"E6",X"F3",X"67",X"B7",X"F5",X"F3", + X"7C",X"B7",X"04",X"F4",X"91",X"B7",X"13",X"F4",X"A6",X"B7",X"22",X"F4",X"BB",X"B7",X"31",X"F4", + X"D0",X"B7",X"40",X"F4",X"E5",X"B7",X"4F",X"F4",X"FA",X"B7",X"5E",X"F4",X"0F",X"B8",X"6D",X"F4", + X"24",X"B8",X"7C",X"F4",X"39",X"B8",X"8B",X"F4",X"4E",X"B8",X"9A",X"F4",X"63",X"B8",X"A9",X"F4", + X"78",X"B8",X"B8",X"F4",X"8D",X"B8",X"C7",X"F4",X"A2",X"B8",X"D6",X"F4",X"B7",X"B8",X"E5",X"F4", + X"CC",X"B8",X"F4",X"F4",X"E1",X"B8",X"03",X"F5",X"F6",X"B8",X"12",X"F5",X"0B",X"B9",X"21",X"F5", + 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"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"30",X"B5",X"20",X"F9",X"45",X"B5",X"2B",X"F9",X"5A",X"B5",X"36",X"F9",X"6F",X"B5",X"41",X"F9", + X"84",X"B5",X"4C",X"F9",X"99",X"B5",X"57",X"F9",X"AE",X"B5",X"62",X"F9",X"C3",X"B5",X"6D",X"F9", + X"D8",X"B5",X"78",X"F9",X"ED",X"B5",X"83",X"F9",X"02",X"B6",X"8E",X"F9",X"17",X"B6",X"99",X"F9", + X"2C",X"B6",X"A4",X"F9",X"41",X"B6",X"AF",X"F9",X"56",X"B6",X"BA",X"F9",X"6B",X"B6",X"C5",X"F9", + X"80",X"B6",X"D0",X"F9",X"95",X"B6",X"DB",X"F9",X"AA",X"B6",X"E6",X"F9",X"BF",X"B6",X"F1",X"F9", + X"D4",X"B6",X"FC",X"F9",X"E9",X"B6",X"07",X"FA",X"FE",X"B6",X"12",X"FA",X"13",X"B7",X"1D",X"FA", + X"28",X"B7",X"28",X"FA",X"3D",X"B7",X"33",X"FA",X"52",X"B7",X"3E",X"FA",X"67",X"B7",X"49",X"FA", + X"7C",X"B7",X"54",X"FA",X"91",X"B7",X"5F",X"FA",X"A6",X"B7",X"6A",X"FA",X"BB",X"B7",X"75",X"FA", + X"D0",X"B7",X"80",X"FA",X"E5",X"B7",X"8B",X"FA",X"FA",X"B7",X"97",X"FA",X"0F",X"B8",X"A2",X"FA", + X"24",X"B8",X"AD",X"FA",X"39",X"B8",X"B8",X"FA",X"4E",X"B8",X"C3",X"FA",X"63",X"B8",X"CE",X"FA", + X"78",X"B8",X"D9",X"FA",X"8D",X"B8",X"E4",X"FA",X"A2",X"B8",X"EF",X"FA",X"B7",X"B8",X"FA",X"FA", + X"CC",X"B8",X"05",X"FB",X"E1",X"B8",X"10",X"FB",X"F6",X"B8",X"1B",X"FB",X"0B",X"B9",X"26",X"FB", + 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"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"20",X"B9",X"80",X"E5",X"2B",X"B9",X"82",X"E5",X"36",X"B9",X"84",X"E5",X"41",X"B9",X"86",X"E5", + X"4C",X"B9",X"88",X"E5",X"57",X"B9",X"8A",X"E5",X"62",X"B9",X"8C",X"E5",X"6D",X"B9",X"8E",X"E5", + X"78",X"B9",X"90",X"E5",X"83",X"B9",X"92",X"E5",X"8E",X"B9",X"94",X"E5",X"99",X"B9",X"96",X"E5", + X"A4",X"B9",X"98",X"E5",X"AF",X"B9",X"9A",X"E5",X"BA",X"B9",X"9C",X"E5",X"C5",X"B9",X"9E",X"E5", + X"D0",X"B9",X"A0",X"E5",X"DB",X"B9",X"A2",X"E5",X"E6",X"B9",X"A4",X"E5",X"F1",X"B9",X"A6",X"E5", + X"FC",X"B9",X"A8",X"E5",X"07",X"BA",X"AA",X"E5",X"12",X"BA",X"AC",X"E5",X"1D",X"BA",X"AE",X"E5", + X"28",X"BA",X"B0",X"E5",X"33",X"BA",X"B2",X"E5",X"3E",X"BA",X"B4",X"E5",X"49",X"BA",X"B6",X"E5", + X"54",X"BA",X"B8",X"E5",X"5F",X"BA",X"BA",X"E5",X"6A",X"BA",X"BC",X"E5",X"75",X"BA",X"BE",X"E5", + X"80",X"BA",X"C0",X"E5",X"8B",X"BA",X"C2",X"E5",X"97",X"BA",X"C4",X"E5",X"A2",X"BA",X"C6",X"E5", + X"AD",X"BA",X"C8",X"E5",X"B8",X"BA",X"CA",X"E5",X"C3",X"BA",X"CC",X"E5",X"CE",X"BA",X"CE",X"E5", + X"D9",X"BA",X"D0",X"E5",X"E4",X"BA",X"D2",X"E5",X"EF",X"BA",X"D4",X"E5",X"FA",X"BA",X"D6",X"E5", + X"05",X"BB",X"D8",X"E5",X"10",X"BB",X"DA",X"E5",X"1B",X"BB",X"DC",X"E5",X"26",X"BB",X"DE",X"E5", + X"DD",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"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"20",X"B9",X"00",X"C0",X"2B",X"B9",X"00",X"C0",X"36",X"B9",X"00",X"C0",X"41",X"B9",X"00",X"C0", + X"4C",X"B9",X"00",X"C0",X"57",X"B9",X"00",X"C0",X"62",X"B9",X"00",X"C0",X"6D",X"B9",X"00",X"C0", + X"78",X"B9",X"00",X"C0",X"83",X"B9",X"00",X"C0",X"8E",X"B9",X"00",X"C0",X"99",X"B9",X"00",X"C0", + X"A4",X"B9",X"00",X"C0",X"AF",X"B9",X"00",X"C0",X"BA",X"B9",X"00",X"C0",X"C5",X"B9",X"00",X"C0", + X"D0",X"B9",X"00",X"C0",X"DB",X"B9",X"00",X"C0",X"E6",X"B9",X"00",X"C0",X"F1",X"B9",X"00",X"C0", + X"FC",X"B9",X"00",X"C0",X"07",X"BA",X"00",X"C0",X"12",X"BA",X"00",X"C0",X"1D",X"BA",X"00",X"C0", + X"28",X"BA",X"00",X"C0",X"33",X"BA",X"00",X"C0",X"3E",X"BA",X"00",X"C0",X"49",X"BA",X"00",X"C0", + X"54",X"BA",X"00",X"C0",X"5F",X"BA",X"00",X"C0",X"6A",X"BA",X"00",X"C0",X"75",X"BA",X"00",X"C0", + X"80",X"BA",X"00",X"C0",X"8B",X"BA",X"00",X"C0",X"97",X"BA",X"00",X"C0",X"A2",X"BA",X"00",X"C0", + X"AD",X"BA",X"00",X"C0",X"B8",X"BA",X"00",X"C0",X"C3",X"BA",X"00",X"C0",X"CE",X"BA",X"00",X"C0", + X"D9",X"BA",X"00",X"C0",X"E4",X"BA",X"00",X"C0",X"EF",X"BA",X"00",X"C0",X"FA",X"BA",X"00",X"C0", + X"05",X"BB",X"00",X"C0",X"10",X"BB",X"00",X"C0",X"1B",X"BB",X"00",X"C0",X"26",X"BB",X"00",X"C0", + X"00",X"01",X"00",X"00",X"00",X"00",X"00",X"E0",X"F0",X"1F",X"57",X"E0",X"D4",X"1F",X"4D",X"E0", + X"BB",X"1F",X"39",X"E0",X"AD",X"1F",X"1F",X"E0",X"A8",X"1F",X"00",X"E0",X"AC",X"1F",X"E1",X"FF", + X"BC",X"1F",X"C7",X"FF",X"D4",X"1F",X"B3",X"FF",X"F0",X"1F",X"A9",X"FF",X"10",X"00",X"A9",X"FF", + X"2C",X"00",X"B3",X"FF",X"45",X"00",X"C7",X"FF",X"53",X"00",X"E1",X"FF",X"58",X"00",X"00",X"E0", + X"53",X"00",X"1F",X"E0",X"45",X"00",X"39",X"E0",X"2C",X"00",X"4D",X"E0",X"10",X"00",X"57",X"E0", + X"00",X"1F",X"00",X"00",X"00",X"C0",X"3E",X"40",X"3F",X"41",X"20",X"42",X"21",X"41",X"24",X"40", + X"21",X"5F",X"1D",X"5D",X"22",X"40",X"21",X"5F",X"20",X"5E",X"3F",X"5F",X"3C",X"40",X"3F",X"41", + X"02",X"5E",X"20",X"45",X"20",X"45",X"02",X"40",X"20",X"5B",X"20",X"5B",X"1F",X"45",X"00",X"C0", + X"00",X"4C",X"3A",X"40",X"3A",X"5A",X"20",X"54",X"26",X"5A",X"2C",X"40",X"26",X"46",X"20",X"4C", + X"3A",X"46",X"3A",X"40",X"00",X"54",X"00",X"71",X"00",X"C0",X"1E",X"43",X"3E",X"5D",X"21",X"5D", + X"22",X"5F",X"3B",X"5C",X"20",X"5B",X"24",X"5C",X"24",X"40",X"24",X"44",X"20",X"45",X"3B",X"44", + X"22",X"41",X"21",X"43",X"3E",X"43",X"3C",X"40",X"3B",X"43",X"3E",X"44",X"05",X"56",X"3B",X"5F", + X"3E",X"5C",X"08",X"42",X"3B",X"5D",X"3E",X"5B",X"0A",X"40",X"0A",X"40",X"3E",X"45",X"3B",X"43", + X"08",X"5E",X"3E",X"44",X"3B",X"41",X"1E",X"43",X"25",X"43",X"22",X"44",X"17",X"56",X"1E",X"51", + X"00",X"C0",X"5A",X"00",X"00",X"00",X"00",X"00",X"32",X"20",X"25",X"5B",X"20",X"56",X"3B",X"5B", + X"25",X"5B",X"20",X"51",X"3B",X"5B",X"46",X"00",X"E2",X"1F",X"20",X"5B",X"2A",X"40",X"16",X"56", + X"20",X"56",X"2A",X"40",X"0A",X"56",X"0A",X"40",X"5A",X"00",X"00",X"00",X"2A",X"40",X"A6",X"1F", + X"00",X"20",X"00",X"00",X"00",X"00",X"0A",X"40",X"32",X"00",X"00",X"00",X"25",X"45",X"00",X"00", + X"28",X"20",X"25",X"5B",X"CE",X"1F",X"00",X"20",X"14",X"00",X"C4",X"1F",X"25",X"45",X"2F",X"40", + X"16",X"5B",X"20",X"5B",X"2A",X"40",X"16",X"4F",X"20",X"45",X"CE",X"1F",X"28",X"00",X"0A",X"40"); +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/BlackWidow_MiST/rtl/roms/bwidow_vec_rom2.vhd b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/roms/bwidow_vec_rom2.vhd new file mode 100644 index 00000000..5865c266 --- /dev/null +++ b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/roms/bwidow_vec_rom2.vhd @@ -0,0 +1,278 @@ +library ieee; +use ieee.std_logic_1164.all,ieee.numeric_std.all; + +entity bwidow_vec_rom2 is +port ( + clk : in std_logic; + addr : in std_logic_vector(11 downto 0); + data : out std_logic_vector(7 downto 0) +); +end entity; + +architecture prom of bwidow_vec_rom2 is + type rom is array(0 to 4095) of std_logic_vector(7 downto 0); + signal rom_data: rom := ( + X"32",X"00",X"00",X"00",X"25",X"45",X"00",X"00",X"28",X"20",X"25",X"5B",X"20",X"5B",X"16",X"56", + X"2A",X"40",X"20",X"5B",X"3B",X"5B",X"1B",X"45",X"36",X"40",X"28",X"00",X"00",X"20",X"CE",X"1F", + X"28",X"00",X"0A",X"40",X"5A",X"00",X"00",X"00",X"2A",X"40",X"CE",X"1F",X"00",X"20",X"2A",X"4A", + X"2A",X"40",X"11",X"51",X"2F",X"51",X"00",X"00",X"D8",X"1F",X"20",X"4A",X"EC",X"1F",X"28",X"00", + X"0A",X"40",X"00",X"C0",X"5A",X"00",X"00",X"00",X"2A",X"40",X"25",X"56",X"05",X"4A",X"2A",X"40", + X"25",X"56",X"05",X"4A",X"2A",X"40",X"A6",X"1F",X"EC",X"3F",X"32",X"00",X"E2",X"1F",X"CE",X"1F", + X"EC",X"3F",X"00",X"00",X"46",X"00",X"0A",X"40",X"3C",X"00",X"00",X"00",X"2A",X"40",X"C4",X"1F", + X"00",X"20",X"46",X"00",X"00",X"00",X"20",X"4A",X"36",X"40",X"A6",X"1F",X"14",X"00",X"0A",X"40", + X"5A",X"00",X"28",X"00",X"2A",X"40",X"A6",X"1F",X"00",X"20",X"32",X"00",X"EC",X"1F",X"3B",X"45", + X"36",X"40",X"3B",X"5B",X"D8",X"1F",X"28",X"00",X"3B",X"5B",X"28",X"00",X"EC",X"1F",X"20",X"51", + X"25",X"40",X"F6",X"1F",X"28",X"00",X"0A",X"40",X"32",X"00",X"00",X"00",X"25",X"45",X"00",X"00", + X"28",X"20",X"25",X"5B",X"D8",X"1F",X"00",X"20",X"3B",X"5B",X"1B",X"45",X"36",X"40",X"28",X"00", + X"00",X"20",X"CE",X"1F",X"28",X"00",X"0A",X"40",X"3C",X"00",X"00",X"00",X"2A",X"40",X"25",X"56", + X"05",X"4A",X"2A",X"40",X"25",X"56",X"05",X"4A",X"2A",X"40",X"C4",X"1F",X"EC",X"3F",X"11",X"4F", + X"3B",X"51",X"00",X"00",X"3C",X"00",X"0A",X"40",X"00",X"C0",X"00",X"49",X"3E",X"5B",X"3B",X"43", + X"23",X"5B",X"3B",X"5E",X"25",X"5E",X"3D",X"5B",X"25",X"43",X"22",X"5B",X"22",X"45",X"25",X"5D", + X"3D",X"45",X"25",X"42",X"3B",X"42",X"23",X"45",X"3B",X"5D",X"3E",X"45",X"00",X"57",X"00",X"C0", + X"02",X"49",X"3D",X"5B",X"3C",X"45",X"22",X"5A",X"3A",X"5F",X"25",X"5F",X"3B",X"5A",X"26",X"42", + X"21",X"5A",X"21",X"45",X"26",X"5B",X"3E",X"46",X"26",X"41",X"3B",X"43",X"25",X"44",X"3A",X"5E", + X"3F",X"46",X"1E",X"57",X"00",X"C0",X"04",X"48",X"3C",X"5C",X"3D",X"46",X"21",X"5A",X"3A",X"40", + X"24",X"5C",X"3A",X"5D",X"26",X"41",X"20",X"5A",X"24",X"44",X"23",X"5A",X"3F",X"46",X"26",X"40", + X"3C",X"44",X"26",X"43",X"3A",X"5F",X"20",X"46",X"1C",X"58",X"00",X"C0",X"1E",X"43",X"3E",X"5D", + X"21",X"5D",X"23",X"54",X"23",X"4C",X"21",X"43",X"3E",X"43",X"3E",X"48",X"3E",X"58",X"02",X"5D", + X"00",X"C0",X"1F",X"44",X"3D",X"5E",X"20",X"5C",X"3E",X"54",X"28",X"4A",X"22",X"42",X"3F",X"44", + X"21",X"48",X"3B",X"5A",X"01",X"5C",X"00",X"C0",X"1F",X"44",X"3E",X"5F",X"3F",X"5D",X"39",X"55", + X"2B",X"47",X"23",X"41",X"21",X"44",X"24",X"47",X"37",X"5C",X"01",X"5C",X"00",X"C0",X"02",X"43", + X"3C",X"41",X"3E",X"5E",X"36",X"58",X"2C",X"42",X"24",X"40",X"22",X"45",X"26",X"43",X"38",X"5F", + X"1E",X"5D",X"00",X"C0",X"03",X"42",X"3D",X"42",X"3D",X"5F",X"34",X"5D",X"2C",X"5D",X"23",X"5F", + X"23",X"42",X"28",X"42",X"38",X"42",X"1D",X"5E",X"00",X"C0",X"04",X"41",X"3E",X"43",X"3C",X"40", + X"34",X"42",X"2A",X"58",X"22",X"5E",X"24",X"41",X"28",X"5F",X"3A",X"45",X"1C",X"5F",X"00",X"C0", + X"04",X"41",X"3F",X"42",X"3D",X"41",X"35",X"47",X"27",X"55",X"21",X"5D",X"22",X"5F",X"29",X"5C", + X"3C",X"49",X"1C",X"5F",X"00",X"C0",X"03",X"5E",X"21",X"44",X"3E",X"42",X"38",X"4A",X"22",X"54", + X"20",X"5C",X"23",X"5E",X"25",X"5A",X"3F",X"48",X"1D",X"42",X"00",X"C0",X"02",X"5D",X"22",X"43", + X"3F",X"43",X"3D",X"4C",X"3D",X"54",X"3F",X"5D",X"22",X"5D",X"22",X"58",X"22",X"48",X"1E",X"43", + X"00",X"C0",X"1F",X"5C",X"25",X"42",X"20",X"44",X"22",X"4C",X"38",X"56",X"3E",X"5E",X"21",X"5C", + X"3F",X"58",X"23",X"46",X"01",X"44",X"00",X"C0",X"1F",X"5C",X"24",X"41",X"21",X"43",X"27",X"4B", + X"35",X"59",X"3D",X"5F",X"3F",X"5E",X"3C",X"57",X"27",X"44",X"01",X"44",X"00",X"C0",X"1E",X"5D", + X"24",X"5F",X"22",X"42",X"2A",X"48",X"34",X"5E",X"3C",X"40",X"3E",X"5D",X"3A",X"5B",X"28",X"41", + X"02",X"43",X"00",X"C0",X"1D",X"5E",X"23",X"5E",X"23",X"41",X"2C",X"43",X"34",X"43",X"3D",X"41", + X"3D",X"5E",X"38",X"5E",X"28",X"5E",X"03",X"42",X"00",X"C0",X"1C",X"41",X"22",X"5B",X"24",X"40", + X"2C",X"5E",X"36",X"48",X"3E",X"42",X"3C",X"5F",X"38",X"41",X"26",X"5D",X"04",X"5F",X"00",X"C0", + X"1C",X"41",X"21",X"5C",X"23",X"5F",X"2B",X"59",X"39",X"4B",X"3F",X"43",X"3C",X"41",X"39",X"44", + X"24",X"59",X"04",X"5F",X"00",X"C0",X"1D",X"42",X"3F",X"5C",X"22",X"5E",X"28",X"56",X"3E",X"4C", + X"20",X"44",X"3B",X"42",X"3D",X"46",X"21",X"58",X"03",X"5E",X"00",X"C0",X"1E",X"43",X"3E",X"5D", + X"21",X"5D",X"22",X"5F",X"3B",X"5C",X"20",X"5B",X"24",X"5C",X"24",X"40",X"24",X"44",X"20",X"45", + X"3B",X"44",X"22",X"41",X"21",X"43",X"3E",X"43",X"3C",X"40",X"02",X"5D",X"00",X"C0",X"1F",X"44", + X"3D",X"5E",X"20",X"5C",X"22",X"5F",X"39",X"5E",X"3E",X"5B",X"23",X"5B",X"23",X"5F",X"24",X"42", + X"23",X"44",X"3D",X"46",X"23",X"40",X"22",X"42",X"3F",X"44",X"3C",X"42",X"01",X"5C",X"00",X"C0", + X"1F",X"44",X"3E",X"5F",X"3F",X"5D",X"20",X"5E",X"3A",X"41",X"3D",X"5C",X"20",X"5A",X"22",X"5E", + X"26",X"40",X"24",X"43",X"3F",X"46",X"22",X"40",X"23",X"41",X"21",X"44",X"3B",X"43",X"01",X"5C", + X"00",X"C0",X"02",X"43",X"3C",X"41",X"3E",X"5E",X"20",X"5F",X"3A",X"41",X"3C",X"5F",X"3E",X"5A", + X"21",X"5D",X"25",X"5D",X"25",X"42",X"22",X"47",X"21",X"5E",X"24",X"40",X"22",X"45",X"3E",X"42", + X"1E",X"5D",X"00",X"C0",X"03",X"42",X"3D",X"42",X"3D",X"5F",X"3F",X"5E",X"3C",X"45",X"3B",X"40", + X"3C",X"5C",X"20",X"5C",X"24",X"5C",X"25",X"40",X"24",X"45",X"21",X"5E",X"23",X"5F",X"23",X"42", + X"20",X"44",X"1D",X"5E",X"00",X"C0",X"04",X"41",X"3E",X"43",X"3C",X"40",X"3F",X"5E",X"3E",X"47", + X"3B",X"42",X"3B",X"5D",X"3F",X"5D",X"22",X"5C",X"24",X"5D",X"26",X"43",X"20",X"5D",X"22",X"5E", + X"24",X"41",X"22",X"44",X"1C",X"5F",X"00",X"C0",X"04",X"41",X"3F",X"42",X"3D",X"41",X"3E",X"40", + X"21",X"46",X"3C",X"43",X"3A",X"40",X"3E",X"5E",X"20",X"5A",X"23",X"5C",X"26",X"41",X"20",X"5E", + X"21",X"5D",X"22",X"5F",X"25",X"45",X"1C",X"5F",X"00",X"C0",X"03",X"5E",X"21",X"44",X"3E",X"42", + X"3D",X"40",X"23",X"46",X"3D",X"44",X"3C",X"42",X"3D",X"5F",X"3D",X"5B",X"22",X"5B",X"27",X"5E", + X"3E",X"5F",X"20",X"5C",X"23",X"5E",X"24",X"42",X"1D",X"42",X"00",X"C0",X"02",X"5D",X"22",X"43", + X"3F",X"43",X"3C",X"41",X"27",X"44",X"20",X"45",X"3C",X"44",X"3C",X"40",X"3C",X"5C",X"20",X"5B", + X"25",X"5C",X"3E",X"5F",X"3F",X"5D",X"22",X"5D",X"24",X"40",X"1E",X"43",X"00",X"C0",X"1F",X"5C", + X"25",X"42",X"20",X"44",X"3E",X"41",X"27",X"42",X"22",X"45",X"3D",X"45",X"3D",X"41",X"3A",X"5E", + X"3F",X"5C",X"21",X"5A",X"3F",X"40",X"3E",X"5E",X"21",X"5C",X"22",X"5E",X"01",X"44",X"00",X"C0", + X"1F",X"5C",X"24",X"41",X"21",X"43",X"20",X"42",X"26",X"5F",X"23",X"44",X"20",X"46",X"3E",X"42", + X"3A",X"40",X"3C",X"5D",X"21",X"5A",X"3E",X"40",X"3D",X"5F",X"3F",X"5E",X"23",X"5B",X"01",X"44", + X"00",X"C0",X"1E",X"5D",X"24",X"5F",X"22",X"42",X"20",X"43",X"26",X"5D",X"24",X"43",X"22",X"44", + X"3F",X"43",X"3B",X"43",X"3B",X"5E",X"3E",X"59",X"3F",X"42",X"3C",X"40",X"3E",X"5D",X"22",X"5C", + X"02",X"43",X"00",X"C0",X"1D",X"5E",X"23",X"5E",X"23",X"41",X"21",X"42",X"24",X"5B",X"25",X"40", + X"24",X"44",X"20",X"44",X"3C",X"44",X"3B",X"40",X"3C",X"5B",X"3F",X"42",X"3D",X"41",X"3D",X"5E", + X"20",X"5C",X"03",X"42",X"00",X"C0",X"1C",X"41",X"22",X"5B",X"24",X"40",X"21",X"42",X"22",X"59", + X"25",X"5E",X"25",X"43",X"21",X"43",X"3E",X"46",X"3C",X"41",X"3A",X"5F",X"20",X"41",X"3E",X"42", + X"3C",X"5F",X"3E",X"5E",X"04",X"5F",X"00",X"C0",X"1C",X"41",X"21",X"5C",X"23",X"5F",X"22",X"40", + X"3F",X"5A",X"24",X"5D",X"26",X"40",X"22",X"42",X"20",X"46",X"3D",X"44",X"3A",X"5F",X"20",X"42", + X"3F",X"43",X"3C",X"41",X"3D",X"5D",X"04",X"5F",X"00",X"C0",X"1D",X"42",X"3F",X"5C",X"22",X"5E", + X"21",X"40",X"3F",X"5A",X"21",X"5C",X"26",X"5E",X"23",X"41",X"23",X"45",X"3E",X"45",X"39",X"42", + X"22",X"41",X"20",X"44",X"3B",X"42",X"3E",X"5E",X"03",X"5E",X"00",X"C0",X"1E",X"43",X"3E",X"5D", + X"21",X"5D",X"3F",X"5D",X"20",X"5C",X"24",X"5D",X"24",X"43",X"20",X"44",X"3F",X"43",X"21",X"43", + X"3E",X"43",X"21",X"43",X"20",X"43",X"3D",X"42",X"3D",X"5E",X"20",X"5D",X"21",X"5D",X"1E",X"57", + X"28",X"40",X"00",X"5E",X"38",X"40",X"00",X"5E",X"28",X"40",X"1C",X"4A",X"00",X"C0",X"1F",X"44", + X"3D",X"5E",X"20",X"5C",X"3E",X"5E",X"3E",X"5C",X"23",X"5C",X"25",X"41",X"21",X"44",X"21",X"43", + X"22",X"42",X"3F",X"44",X"22",X"42",X"21",X"43",X"3E",X"43",X"3B",X"5F",X"21",X"5E",X"3F",X"5D", + X"1B",X"58",X"27",X"5D",X"1E",X"5E",X"3A",X"43",X"1F",X"5E",X"28",X"5D",X"00",X"4B",X"00",X"C0", + X"1F",X"44",X"3E",X"5F",X"3F",X"5D",X"3D",X"5F",X"3D",X"5D",X"21",X"5B",X"25",X"5F",X"23",X"43", + X"21",X"43",X"23",X"41",X"21",X"44",X"22",X"41",X"22",X"42",X"20",X"44",X"3C",X"40",X"3E",X"5E", + X"3D",X"5E",X"1A",X"5B",X"26",X"5A",X"1E",X"5F",X"3B",X"45",X"1E",X"5F",X"26",X"5A",X"04",X"4A", + X"00",X"C0",X"E7",X"00",X"02",X"43",X"3C",X"41",X"3E",X"5E",X"3D",X"5F",X"3C",X"5F",X"3F",X"5B", + X"24",X"5D",X"24",X"42",X"22",X"42",X"24",X"40",X"22",X"45",X"23",X"5F",X"22",X"41",X"21",X"43", + X"3D",X"42",X"3D",X"5F",X"3E",X"5E",X"17",X"5E",X"23",X"59",X"1E",X"5F",X"3D",X"48",X"1E",X"5F", + X"23",X"58",X"08",X"48",X"00",X"C0",X"03",X"42",X"3D",X"42",X"3D",X"5F",X"3D",X"41",X"3C",X"40", + X"3D",X"5C",X"23",X"5C",X"24",X"40",X"23",X"41",X"23",X"5F",X"23",X"42",X"23",X"5F",X"23",X"40", + X"22",X"43",X"3E",X"43",X"3D",X"40",X"3D",X"5F",X"17",X"42",X"20",X"58",X"1E",X"40",X"20",X"48", + X"1E",X"40",X"20",X"58",X"0A",X"44",X"00",X"C0",X"04",X"41",X"3E",X"43",X"3C",X"40",X"3E",X"42", + X"3C",X"42",X"3C",X"5D",X"21",X"5B",X"24",X"5F",X"23",X"5F",X"22",X"5E",X"24",X"41",X"22",X"5E", + X"23",X"5F",X"23",X"42",X"3F",X"45",X"3E",X"5F",X"3D",X"41",X"18",X"45",X"3D",X"59",X"1E",X"42", + X"23",X"46",X"1E",X"41",X"3D",X"58",X"0B",X"40",X"00",X"C0",X"04",X"41",X"3F",X"42",X"3D",X"41", + X"3F",X"43",X"3D",X"43",X"3B",X"5F",X"3F",X"5B",X"23",X"5D",X"23",X"5F",X"21",X"5D",X"22",X"5F", + X"23",X"5E",X"22",X"5E",X"24",X"40",X"20",X"44",X"3E",X"42",X"3E",X"43",X"1B",X"46",X"3A",X"5A", + X"1F",X"42",X"25",X"45",X"1F",X"42",X"3A",X"5A",X"0A",X"5C",X"00",X"C0",X"03",X"5E",X"21",X"44", + X"3E",X"42",X"3F",X"43",X"3F",X"44",X"3B",X"41",X"3D",X"5C",X"22",X"5C",X"22",X"5E",X"20",X"5C", + X"23",X"5E",X"21",X"5D",X"3F",X"5E",X"25",X"5F",X"22",X"43",X"3F",X"43",X"3E",X"42",X"1E",X"49", + X"39",X"5D",X"1F",X"42",X"26",X"43",X"01",X"42",X"38",X"5D",X"08",X"58",X"00",X"C0",X"02",X"5D", + X"22",X"43",X"3F",X"43",X"21",X"43",X"20",X"44",X"3C",X"43",X"3C",X"5D",X"20",X"5C",X"21",X"5D", + X"3F",X"5D",X"22",X"5D",X"3F",X"5D",X"20",X"5D",X"23",X"5E",X"23",X"42",X"20",X"43",X"3F",X"43", + X"02",X"49",X"38",X"40",X"00",X"42",X"28",X"40",X"00",X"42",X"38",X"40",X"04",X"56",X"00",X"C0", + X"1F",X"5C",X"25",X"42",X"20",X"44",X"22",X"42",X"22",X"44",X"3D",X"44",X"3B",X"5F",X"3F",X"5C", + X"3F",X"5D",X"3E",X"5E",X"21",X"5C",X"3E",X"5E",X"3F",X"5D",X"22",X"5D",X"23",X"41",X"21",X"42", + X"3F",X"43",X"07",X"48",X"39",X"43",X"00",X"42",X"28",X"5D",X"01",X"42",X"38",X"43",X"00",X"55", + X"00",X"C0",X"1F",X"5C",X"24",X"41",X"21",X"43",X"23",X"41",X"23",X"43",X"3F",X"45",X"3B",X"41", + X"3D",X"5D",X"3F",X"5D",X"3D",X"5F",X"3F",X"5E",X"3E",X"5D",X"3E",X"5E",X"20",X"5C",X"24",X"40", + X"22",X"42",X"21",X"42",X"08",X"45",X"3A",X"46",X"02",X"41",X"25",X"5B",X"02",X"41",X"3A",X"46", + X"1C",X"56",X"00",X"C0",X"1E",X"5D",X"24",X"5F",X"22",X"42",X"23",X"41",X"24",X"41",X"21",X"45", + X"3C",X"43",X"3C",X"5E",X"3E",X"5E",X"3C",X"40",X"3E",X"5D",X"3D",X"5F",X"3E",X"41",X"3F",X"5B", + X"23",X"5E",X"23",X"41",X"22",X"42",X"09",X"42",X"3D",X"47",X"02",X"41",X"23",X"5A",X"02",X"5F", + X"3D",X"48",X"18",X"58",X"00",X"C0",X"1D",X"5E",X"23",X"5E",X"23",X"41",X"23",X"5F",X"24",X"40", + X"23",X"44",X"3D",X"44",X"3C",X"40",X"3D",X"5F",X"3D",X"41",X"3D",X"5E",X"3D",X"41",X"3D",X"40", + X"3E",X"5D",X"22",X"5D",X"23",X"40",X"23",X"41",X"09",X"5E",X"20",X"48",X"02",X"40",X"20",X"58", + X"02",X"40",X"20",X"48",X"16",X"5C",X"00",X"C0",X"1C",X"41",X"22",X"5B",X"24",X"40",X"22",X"5E", + X"24",X"5E",X"24",X"43",X"3F",X"45",X"3C",X"41",X"3D",X"41",X"3E",X"42",X"3C",X"5F",X"3E",X"42", + X"3D",X"41",X"3D",X"5E",X"21",X"5D",X"22",X"5F",X"23",X"41",X"08",X"59",X"23",X"47",X"02",X"40", + X"3D",X"58",X"02",X"5F",X"23",X"48",X"15",X"40",X"00",X"C0",X"1C",X"41",X"21",X"5C",X"23",X"5F", + X"21",X"5D",X"23",X"5D",X"25",X"41",X"21",X"45",X"3D",X"43",X"3D",X"41",X"3F",X"43",X"3C",X"41", + X"3F",X"42",X"3E",X"42",X"3C",X"40",X"20",X"5C",X"22",X"5E",X"22",X"5F",X"05",X"58",X"26",X"46", + X"01",X"5E",X"3B",X"5B",X"01",X"5E",X"26",X"46",X"16",X"44",X"00",X"C0",X"1D",X"42",X"3F",X"5C", + X"22",X"5E",X"21",X"5D",X"21",X"5C",X"25",X"5F",X"23",X"44",X"3E",X"44",X"3E",X"42",X"20",X"44", + X"3B",X"42",X"21",X"43",X"3F",X"42",X"3D",X"41",X"3E",X"5D",X"21",X"5D",X"22",X"5E",X"02",X"57", + X"27",X"43",X"01",X"5E",X"38",X"5D",X"01",X"5E",X"28",X"43",X"18",X"48",X"00",X"C0",X"24",X"40", + X"23",X"43",X"20",X"44",X"3D",X"43",X"38",X"40",X"3D",X"5D",X"07",X"59",X"3C",X"40",X"3D",X"5D", + X"20",X"5C",X"23",X"5D",X"28",X"40",X"23",X"43",X"1B",X"5A",X"20",X"4D",X"20",X"4D",X"1C",X"40", + X"20",X"53",X"20",X"53",X"02",X"4D",X"00",X"C0",X"24",X"5E",X"24",X"42",X"21",X"44",X"3F",X"44", + X"38",X"43",X"3C",X"5E",X"04",X"57",X"3C",X"42",X"3C",X"5E",X"3F",X"5C",X"21",X"5C",X"28",X"5D", + X"24",X"42",X"19",X"5C",X"25",X"4E",X"25",X"4A",X"1C",X"42",X"3B",X"54",X"3B",X"54",X"07",X"4B", + X"00",X"C0",X"23",X"5D",X"24",X"40",X"23",X"43",X"20",X"44",X"3A",X"46",X"3C",X"40",X"00",X"56", + X"3D",X"43",X"3C",X"40",X"3D",X"5D",X"20",X"5C",X"26",X"5A",X"24",X"40",X"18",X"5F",X"29",X"4A", + X"2A",X"49",X"1D",X"43",X"37",X"56",X"36",X"57",X"0B",X"48",X"00",X"C0",X"22",X"5C",X"23",X"5F", + X"24",X"41",X"22",X"44",X"3D",X"48",X"3C",X"41",X"1C",X"57",X"3E",X"44",X"3D",X"41",X"3C",X"5F", + X"3E",X"5C",X"23",X"58",X"24",X"5F",X"19",X"42",X"2A",X"45",X"2E",X"45",X"1E",X"44",X"34",X"5B", + X"34",X"5B",X"0D",X"43",X"00",X"C0",X"20",X"5C",X"23",X"5D",X"24",X"40",X"23",X"43",X"20",X"48", + X"3D",X"43",X"19",X"59",X"20",X"44",X"3D",X"43",X"3C",X"40",X"3D",X"5D",X"20",X"58",X"23",X"5D", + X"1A",X"45",X"2D",X"40",X"2D",X"40",X"00",X"44",X"33",X"40",X"33",X"40",X"0D",X"5E",X"00",X"C0", + X"3E",X"5C",X"22",X"5C",X"24",X"5F",X"24",X"41",X"23",X"48",X"3E",X"44",X"17",X"5C",X"22",X"44", + X"3E",X"44",X"3C",X"41",X"3C",X"5F",X"3D",X"58",X"22",X"5C",X"1C",X"47",X"2C",X"5B",X"2C",X"5B", + X"02",X"44",X"32",X"45",X"36",X"45",X"0B",X"59",X"00",X"C0",X"3D",X"5D",X"20",X"5C",X"23",X"5D", + X"24",X"40",X"26",X"46",X"20",X"44",X"16",X"40",X"23",X"43",X"20",X"44",X"3D",X"43",X"3C",X"40", + X"3A",X"5A",X"20",X"5C",X"1F",X"48",X"2A",X"57",X"29",X"56",X"03",X"43",X"36",X"49",X"37",X"4A", + X"08",X"55",X"00",X"C0",X"3C",X"5E",X"3F",X"5D",X"21",X"5C",X"24",X"5E",X"28",X"43",X"21",X"44", + X"17",X"44",X"24",X"42",X"21",X"43",X"3F",X"44",X"3C",X"42",X"38",X"5D",X"3F",X"5C",X"02",X"47", + X"25",X"56",X"25",X"52",X"04",X"42",X"3B",X"4C",X"3B",X"4C",X"03",X"53",X"00",X"C0",X"3C",X"40", + X"3D",X"5D",X"20",X"5C",X"23",X"5D",X"28",X"40",X"23",X"43",X"19",X"47",X"24",X"40",X"23",X"43", + X"20",X"44",X"3D",X"43",X"38",X"40",X"3D",X"5D",X"05",X"46",X"20",X"53",X"20",X"53",X"04",X"40", + X"20",X"4D",X"20",X"4D",X"1E",X"53",X"00",X"C0",X"3C",X"42",X"3C",X"5E",X"3F",X"5C",X"21",X"5C", + X"28",X"5D",X"24",X"42",X"1C",X"49",X"24",X"5E",X"24",X"42",X"21",X"44",X"3F",X"44",X"38",X"43", + X"3C",X"5E",X"07",X"44",X"3B",X"54",X"3B",X"54",X"04",X"5E",X"25",X"4E",X"25",X"4A",X"19",X"55", + X"00",X"C0",X"3D",X"43",X"3C",X"40",X"3D",X"5D",X"20",X"5C",X"26",X"5A",X"24",X"40",X"00",X"4A", + X"23",X"5D",X"24",X"40",X"23",X"43",X"20",X"44",X"3A",X"46",X"3C",X"40",X"08",X"41",X"37",X"56", + X"36",X"57",X"03",X"5D",X"29",X"4A",X"2A",X"49",X"15",X"58",X"00",X"C0",X"3E",X"44",X"3D",X"41", + X"3C",X"5F",X"3E",X"5C",X"23",X"58",X"24",X"5F",X"04",X"49",X"22",X"5C",X"23",X"5F",X"24",X"41", + X"22",X"44",X"3D",X"48",X"3C",X"41",X"07",X"5E",X"34",X"5B",X"34",X"5B",X"02",X"5C",X"2A",X"45", + X"2E",X"45",X"13",X"5D",X"00",X"C0",X"20",X"44",X"3D",X"43",X"3C",X"40",X"3D",X"5D",X"20",X"58", + X"23",X"5D",X"07",X"47",X"20",X"5C",X"23",X"5D",X"24",X"40",X"23",X"43",X"20",X"48",X"3D",X"43", + X"06",X"5B",X"33",X"40",X"33",X"40",X"00",X"5C",X"2D",X"40",X"2D",X"40",X"13",X"42",X"00",X"C0", + X"22",X"44",X"3E",X"44",X"3C",X"41",X"3C",X"5F",X"3D",X"58",X"22",X"5C",X"09",X"44",X"3E",X"5C", + X"22",X"5C",X"24",X"5F",X"24",X"41",X"23",X"48",X"3E",X"44",X"04",X"59",X"32",X"45",X"36",X"45", + X"1E",X"5C",X"2C",X"5B",X"2C",X"5B",X"15",X"47",X"00",X"C0",X"23",X"43",X"20",X"44",X"3D",X"43", + X"3C",X"40",X"3A",X"5A",X"20",X"5C",X"0A",X"40",X"3D",X"5D",X"20",X"5C",X"23",X"5D",X"24",X"40", + X"26",X"46",X"20",X"44",X"01",X"58",X"36",X"49",X"37",X"4A",X"1D",X"5D",X"2A",X"57",X"29",X"56", + X"18",X"4B",X"00",X"C0",X"24",X"42",X"21",X"43",X"3F",X"44",X"3C",X"42",X"38",X"5D",X"3F",X"5C", + X"09",X"5C",X"3C",X"5E",X"3F",X"5D",X"21",X"5C",X"24",X"5E",X"28",X"43",X"21",X"44",X"1E",X"59", + X"3B",X"4C",X"3B",X"4C",X"1C",X"5E",X"25",X"56",X"25",X"52",X"1D",X"4D",X"00",X"C0",X"1C",X"40", + X"21",X"5D",X"3F",X"5D",X"22",X"58",X"22",X"48",X"22",X"58",X"22",X"48",X"3F",X"43",X"21",X"43", + X"3C",X"46",X"3C",X"5A",X"03",X"56",X"21",X"5C",X"21",X"44",X"1F",X"4A",X"00",X"C0",X"1C",X"42", + X"20",X"5C",X"3E",X"5E",X"3F",X"58",X"25",X"46",X"3E",X"58",X"25",X"47",X"21",X"43",X"22",X"42", + X"3E",X"48",X"3A",X"5C",X"1F",X"55",X"20",X"5C",X"22",X"43",X"03",X"4A",X"00",X"C0",X"1D",X"43", + X"3F",X"5D",X"3D",X"5F",X"3C",X"59",X"27",X"44",X"3C",X"59",X"27",X"44",X"21",X"43",X"23",X"41", + X"21",X"47",X"39",X"5F",X"1B",X"57",X"3E",X"5C",X"24",X"42",X"06",X"48",X"00",X"C0",X"1E",X"44", + X"3E",X"5E",X"3D",X"5F",X"39",X"5B",X"28",X"42",X"3A",X"5B",X"28",X"41",X"22",X"42",X"24",X"40", + X"24",X"46",X"38",X"42",X"18",X"59",X"3D",X"5E",X"24",X"40",X"09",X"45",X"00",X"C0",X"00",X"44", + X"3D",X"5F",X"3D",X"41",X"38",X"5E",X"28",X"5E",X"38",X"5E",X"28",X"5E",X"23",X"41",X"23",X"5F", + X"26",X"44",X"3A",X"44",X"16",X"5D",X"3C",X"5F",X"24",X"5F",X"0A",X"41",X"00",X"C0",X"02",X"44", + X"3C",X"40",X"3E",X"42",X"38",X"41",X"26",X"5B",X"38",X"42",X"27",X"5B",X"23",X"5F",X"22",X"5E", + X"28",X"42",X"3C",X"46",X"15",X"41",X"3C",X"40",X"23",X"5E",X"0A",X"5D",X"00",X"C0",X"03",X"43", + X"3D",X"41",X"3F",X"43",X"39",X"44",X"24",X"59",X"39",X"44",X"24",X"59",X"23",X"5F",X"21",X"5D", + X"27",X"5F",X"3F",X"47",X"17",X"45",X"3C",X"42",X"22",X"5C",X"08",X"5A",X"00",X"C0",X"04",X"42", + X"3E",X"42",X"3F",X"43",X"3B",X"47",X"22",X"58",X"3B",X"46",X"21",X"58",X"22",X"5E",X"20",X"5C", + X"26",X"5C",X"22",X"48",X"19",X"48",X"3E",X"43",X"20",X"5C",X"05",X"57",X"00",X"C0",X"04",X"40", + X"3F",X"43",X"21",X"43",X"3E",X"48",X"3E",X"58",X"3E",X"48",X"3E",X"58",X"21",X"5D",X"3F",X"5D", + X"24",X"5A",X"24",X"46",X"1B",X"4A",X"21",X"44",X"3F",X"5C",X"01",X"56",X"00",X"C0",X"04",X"5E", + X"20",X"44",X"22",X"42",X"21",X"48",X"3B",X"5A",X"22",X"48",X"3B",X"59",X"3F",X"5D",X"3E",X"5E", + X"22",X"58",X"26",X"44",X"01",X"4B",X"20",X"44",X"3E",X"5D",X"1D",X"56",X"00",X"C0",X"03",X"5D", + X"21",X"43",X"23",X"41",X"24",X"47",X"39",X"5C",X"24",X"47",X"39",X"5C",X"3F",X"5D",X"3D",X"5F", + X"3F",X"59",X"27",X"41",X"05",X"49",X"22",X"44",X"3C",X"5E",X"1A",X"58",X"00",X"C0",X"02",X"5C", + X"22",X"42",X"23",X"41",X"27",X"45",X"38",X"5E",X"26",X"45",X"38",X"5F",X"3E",X"5E",X"3C",X"40", + X"3C",X"5A",X"28",X"5E",X"08",X"47",X"23",X"42",X"3C",X"40",X"17",X"5B",X"00",X"C0",X"00",X"5C", + X"23",X"41",X"23",X"5F",X"28",X"42",X"38",X"42",X"28",X"42",X"38",X"42",X"3D",X"5F",X"3D",X"41", + X"3A",X"5C",X"26",X"5C",X"0A",X"43",X"24",X"41",X"3C",X"41",X"16",X"5F",X"00",X"C0",X"1E",X"5C", + X"24",X"40",X"22",X"5E",X"28",X"5F",X"3A",X"45",X"28",X"5E",X"39",X"45",X"3D",X"41",X"3E",X"42", + X"38",X"5E",X"24",X"5A",X"0B",X"5F",X"24",X"40",X"3D",X"42",X"16",X"43",X"00",X"C0",X"1D",X"5D", + X"23",X"5F",X"21",X"5D",X"27",X"5C",X"3C",X"47",X"27",X"5C",X"3C",X"47",X"3D",X"41",X"3F",X"43", + X"39",X"41",X"21",X"59",X"09",X"5B",X"24",X"5E",X"3E",X"44",X"18",X"46",X"00",X"C0",X"1C",X"5E", + X"22",X"5E",X"21",X"5D",X"25",X"59",X"3E",X"48",X"25",X"5A",X"3F",X"48",X"3E",X"42",X"20",X"44", + X"3A",X"44",X"3E",X"58",X"07",X"58",X"22",X"5D",X"20",X"44",X"1B",X"49",X"00",X"C0",X"1E",X"43", + X"3E",X"5D",X"21",X"5D",X"3D",X"5B",X"20",X"5A",X"23",X"5E",X"26",X"40",X"23",X"42",X"20",X"46", + X"3D",X"45",X"21",X"43",X"3E",X"43",X"01",X"5A",X"3A",X"40",X"03",X"53",X"20",X"4D",X"00",X"43", + X"00",X"C0",X"1F",X"44",X"3D",X"5E",X"20",X"5C",X"3B",X"5D",X"3E",X"5A",X"22",X"5D",X"26",X"5E", + X"23",X"41",X"22",X"45",X"20",X"46",X"22",X"42",X"3F",X"44",X"1F",X"5A",X"3A",X"42",X"1E",X"53", + X"25",X"4C",X"01",X"43",X"00",X"C0",X"1F",X"44",X"3E",X"5F",X"3F",X"5D",X"3A",X"5F",X"3C",X"5B", + X"21",X"5D",X"24",X"5C",X"23",X"5F",X"25",X"44",X"21",X"46",X"23",X"41",X"21",X"44",X"1C",X"5B", + X"3C",X"44",X"19",X"55",X"29",X"49",X"02",X"42",X"00",X"C0",X"02",X"43",X"3C",X"41",X"3E",X"5E", + X"3A",X"40",X"3B",X"5E",X"3F",X"5D",X"22",X"5A",X"23",X"5E",X"26",X"42",X"23",X"45",X"24",X"40", + X"22",X"45",X"1A",X"5B",X"3E",X"46",X"15",X"58",X"2C",X"45",X"03",X"41",X"00",X"C0",X"03",X"42", + X"3D",X"42",X"3D",X"5F",X"3B",X"43",X"3A",X"40",X"3E",X"5D",X"20",X"5A",X"22",X"5D",X"26",X"40", + X"25",X"43",X"23",X"5F",X"23",X"42",X"1A",X"5F",X"20",X"46",X"13",X"5D",X"2D",X"40",X"03",X"40", + X"00",X"C0",X"04",X"41",X"3E",X"43",X"3C",X"40",X"3D",X"45",X"3A",X"42",X"3D",X"5E",X"3E",X"5A", + X"21",X"5D",X"25",X"5E",X"26",X"40",X"22",X"5E",X"24",X"41",X"1A",X"41",X"22",X"46",X"13",X"42", + X"2C",X"5B",X"03",X"5F",X"00",X"C0",X"04",X"41",X"3F",X"42",X"3D",X"41",X"3F",X"46",X"3B",X"44", + X"3D",X"5F",X"3C",X"5C",X"3F",X"5D",X"24",X"5B",X"26",X"5F",X"21",X"5D",X"22",X"5F",X"1D",X"44", + X"24",X"44",X"15",X"47",X"29",X"57",X"02",X"5E",X"00",X"C0",X"03",X"5E",X"21",X"44",X"3E",X"42", + X"20",X"46",X"3E",X"45",X"3D",X"41",X"3A",X"5E",X"3E",X"5D",X"22",X"5A",X"25",X"5D",X"20",X"5C", + X"23",X"5E",X"1D",X"46",X"26",X"42",X"18",X"4B",X"25",X"54",X"01",X"5D",X"00",X"C0",X"02",X"5D", + X"22",X"43",X"3F",X"43",X"23",X"45",X"20",X"46",X"3D",X"42",X"3A",X"40",X"3D",X"5E",X"20",X"5A", + X"23",X"5B",X"3F",X"5D",X"22",X"5D",X"1F",X"46",X"26",X"40",X"1D",X"4D",X"20",X"53",X"00",X"5D", + X"00",X"C0",X"1F",X"5C",X"25",X"42",X"20",X"44",X"25",X"43",X"22",X"46",X"3E",X"43",X"3A",X"42", + X"3D",X"5F",X"3E",X"5B",X"20",X"5A",X"3E",X"5E",X"21",X"5C",X"01",X"46",X"26",X"5E",X"02",X"4D", + X"3B",X"54",X"1F",X"5D",X"00",X"C0",X"1F",X"5C",X"24",X"41",X"21",X"43",X"26",X"41",X"24",X"45", + X"3F",X"43",X"3C",X"44",X"3D",X"41",X"3B",X"5C",X"3F",X"5A",X"3D",X"5F",X"3F",X"5E",X"04",X"43", + X"24",X"5C",X"07",X"4B",X"37",X"57",X"1E",X"5E",X"00",X"C0",X"1E",X"5D",X"24",X"5F",X"22",X"42", + X"26",X"40",X"25",X"42",X"21",X"43",X"3E",X"46",X"3D",X"42",X"3A",X"5E",X"3D",X"5B",X"3C",X"40", + X"3E",X"5D",X"06",X"43",X"22",X"5A",X"0B",X"48",X"34",X"5B",X"1D",X"5F",X"00",X"C0",X"1D",X"5E", + X"23",X"5E",X"23",X"41",X"25",X"5D",X"26",X"40",X"22",X"43",X"20",X"46",X"3E",X"43",X"3A",X"40", + X"3B",X"5D",X"3D",X"41",X"3D",X"5E",X"06",X"41",X"20",X"5A",X"0D",X"43",X"33",X"40",X"1D",X"40", + X"00",X"C0",X"1C",X"41",X"22",X"5B",X"24",X"40",X"23",X"5B",X"26",X"5E",X"23",X"42",X"22",X"46", + X"3F",X"43",X"3B",X"42",X"3A",X"40",X"3E",X"42",X"3C",X"5F",X"06",X"5F",X"3E",X"5A",X"0D",X"5E", + X"34",X"45",X"1D",X"41",X"00",X"C0",X"1C",X"41",X"21",X"5C",X"23",X"5F",X"21",X"5A",X"25",X"5C", + X"23",X"41",X"24",X"44",X"21",X"43",X"3C",X"45",X"3A",X"41",X"3F",X"43",X"3C",X"41",X"05",X"5C", + X"3C",X"5C",X"0B",X"59",X"37",X"49",X"1E",X"42",X"00",X"C0",X"1D",X"42",X"3F",X"5C",X"22",X"5E", + X"20",X"5A",X"22",X"5B",X"23",X"5F",X"26",X"42",X"22",X"43",X"3E",X"46",X"3B",X"43",X"20",X"44", + X"3B",X"42",X"05",X"5A",X"3A",X"5E",X"08",X"55",X"3B",X"4C",X"1F",X"43",X"00",X"C0",X"00",X"4A", + X"3A",X"56",X"24",X"40",X"20",X"5A",X"24",X"40",X"20",X"46",X"24",X"40",X"3A",X"4A",X"00",X"56", + X"00",X"C0",X"04",X"49",X"36",X"59",X"24",X"5F",X"3E",X"5A",X"24",X"5F",X"22",X"47",X"24",X"5D", + X"3E",X"4B",X"1C",X"57",X"00",X"C0",X"07",X"47",X"35",X"5D",X"23",X"5D",X"3B",X"5C",X"23",X"5D", + X"24",X"45",X"23",X"5D",X"23",X"4B",X"19",X"59",X"00",X"C0",X"09",X"44",X"35",X"42",X"21",X"5C", + X"3B",X"5E",X"21",X"5C",X"24",X"42",X"23",X"5C",X"27",X"4A",X"17",X"5C",X"00",X"C0",X"0A",X"40", + X"36",X"46",X"20",X"5C",X"3A",X"40",X"20",X"5C",X"26",X"40",X"20",X"5C",X"2A",X"46",X"16",X"40", + X"00",X"C0",X"09",X"5C",X"39",X"4A",X"3D",X"5C",X"3C",X"42",X"3F",X"5C",X"25",X"5E",X"3F",X"5C", + X"2B",X"42",X"17",X"44",X"00",X"C0",X"07",X"59",X"3D",X"4B",X"3D",X"5D",X"3C",X"45",X"3D",X"5D", + X"25",X"5C",X"3D",X"5D",X"2B",X"5D",X"19",X"47",X"00",X"C0",X"04",X"57",X"22",X"4B",X"3C",X"5F", + X"3E",X"45",X"3C",X"5F",X"22",X"5C",X"3C",X"5D",X"2A",X"59",X"1C",X"49",X"00",X"C0",X"00",X"56", + X"26",X"4A",X"3C",X"40",X"20",X"46",X"3C",X"40",X"20",X"5A",X"3C",X"40",X"26",X"56",X"00",X"4A", + X"00",X"C0",X"1C",X"57",X"2A",X"47",X"3C",X"43",X"22",X"44",X"3C",X"41",X"3E",X"5B",X"3C",X"41", + X"22",X"55",X"04",X"49",X"00",X"C0",X"19",X"59",X"2B",X"43",X"3D",X"43",X"25",X"44",X"3D",X"43", + X"3C",X"5B",X"3D",X"43",X"3D",X"55",X"07",X"47",X"00",X"C0",X"17",X"5C",X"2B",X"5E",X"3D",X"44", + X"27",X"42",X"3F",X"44",X"3A",X"5E",X"3F",X"44",X"39",X"56",X"09",X"44",X"00",X"C0",X"16",X"40", + X"2A",X"5A",X"20",X"44",X"26",X"40",X"20",X"44",X"3A",X"40",X"20",X"44",X"36",X"5A",X"0A",X"40", + X"00",X"C0",X"17",X"44",X"27",X"56",X"21",X"44",X"26",X"5E",X"21",X"44",X"39",X"42",X"23",X"44", + X"35",X"5E",X"09",X"5C",X"00",X"C0",X"19",X"47",X"23",X"55",X"23",X"43",X"24",X"5B",X"23",X"43"); +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/BlackWidow_MiST/rtl/roms/bwidow_vec_rom3.vhd b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/roms/bwidow_vec_rom3.vhd new file mode 100644 index 00000000..a7165edc --- /dev/null +++ b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/roms/bwidow_vec_rom3.vhd @@ -0,0 +1,278 @@ +library ieee; +use ieee.std_logic_1164.all,ieee.numeric_std.all; + +entity bwidow_vec_rom3 is +port ( + clk : in std_logic; + addr : in std_logic_vector(11 downto 0); + data : out std_logic_vector(7 downto 0) +); +end entity; + +architecture prom of bwidow_vec_rom3 is + type rom is array(0 to 4095) of std_logic_vector(7 downto 0); + signal rom_data: rom := ( + X"3B",X"44",X"23",X"43",X"35",X"43",X"07",X"59",X"00",X"C0",X"1C",X"49",X"3E",X"55",X"24",X"43", + X"22",X"59",X"24",X"41",X"3E",X"46",X"24",X"41",X"36",X"47",X"04",X"57",X"00",X"C0",X"00",X"4A", + X"3C",X"54",X"3C",X"54",X"28",X"44",X"28",X"5C",X"3C",X"4C",X"3C",X"4C",X"00",X"56",X"00",X"C0", + X"04",X"49",X"38",X"57",X"37",X"56",X"29",X"41",X"26",X"59",X"21",X"4D",X"21",X"4C",X"1C",X"57", + X"00",X"C0",X"07",X"47",X"35",X"5A",X"34",X"5B",X"29",X"5D",X"23",X"57",X"25",X"4C",X"26",X"4B", + X"19",X"59",X"00",X"C0",X"09",X"44",X"34",X"5F",X"33",X"5F",X"27",X"5A",X"3F",X"57",X"2A",X"49", + X"29",X"48",X"17",X"5C",X"00",X"C0",X"0A",X"40",X"34",X"44",X"34",X"44",X"24",X"58",X"3C",X"58", + X"2C",X"44",X"2C",X"44",X"16",X"40",X"00",X"C0",X"09",X"5C",X"37",X"48",X"36",X"49",X"21",X"57", + X"39",X"5A",X"2D",X"5F",X"2C",X"5F",X"17",X"44",X"00",X"C0",X"07",X"59",X"3A",X"4B",X"3B",X"4C", + X"3D",X"57",X"37",X"5D",X"2C",X"5B",X"2B",X"5A",X"19",X"47",X"00",X"C0",X"04",X"57",X"3F",X"4C", + X"3F",X"4D",X"3A",X"59",X"37",X"41",X"29",X"56",X"28",X"57",X"1C",X"49",X"00",X"C0",X"00",X"56", + X"24",X"4C",X"24",X"4C",X"38",X"5C",X"38",X"44",X"24",X"54",X"24",X"54",X"00",X"4A",X"00",X"C0", + X"1C",X"57",X"28",X"49",X"29",X"4A",X"37",X"5F",X"3A",X"47",X"3F",X"53",X"3F",X"54",X"04",X"49", + X"00",X"C0",X"19",X"59",X"2B",X"46",X"2C",X"45",X"37",X"43",X"3D",X"49",X"3B",X"54",X"3A",X"55", + X"07",X"47",X"00",X"C0",X"17",X"5C",X"2C",X"41",X"2D",X"41",X"39",X"46",X"21",X"49",X"36",X"57", + X"37",X"58",X"09",X"44",X"00",X"C0",X"16",X"40",X"2C",X"5C",X"2C",X"5C",X"3C",X"48",X"24",X"48", + X"34",X"5C",X"34",X"5C",X"0A",X"40",X"00",X"C0",X"17",X"44",X"29",X"58",X"2A",X"57",X"3F",X"49", + X"27",X"46",X"33",X"41",X"34",X"41",X"09",X"5C",X"00",X"C0",X"19",X"47",X"26",X"55",X"25",X"54", + X"23",X"49",X"29",X"43",X"34",X"45",X"35",X"46",X"07",X"59",X"00",X"C0",X"1C",X"49",X"21",X"54", + X"21",X"53",X"26",X"47",X"29",X"5F",X"37",X"4A",X"38",X"49",X"04",X"57",X"00",X"C0",X"1E",X"43", + X"3E",X"5D",X"21",X"5D",X"20",X"5E",X"3E",X"5E",X"20",X"5A",X"25",X"43",X"25",X"5D",X"20",X"46", + X"3E",X"42",X"20",X"42",X"21",X"43",X"3E",X"43",X"3F",X"41",X"3E",X"40",X"3F",X"5F",X"02",X"5D", + X"00",X"C0",X"1F",X"44",X"3D",X"5E",X"20",X"5C",X"3F",X"5F",X"3E",X"5E",X"3D",X"5B",X"26",X"41", + X"24",X"5B",X"22",X"46",X"3D",X"42",X"23",X"42",X"22",X"42",X"3F",X"44",X"3F",X"41",X"3D",X"41", + X"20",X"40",X"01",X"5C",X"00",X"C0",X"1F",X"44",X"3E",X"5F",X"3F",X"5D",X"3E",X"5F",X"3E",X"40", + X"3B",X"5B",X"26",X"5F",X"21",X"5A",X"25",X"45",X"20",X"42",X"21",X"42",X"23",X"41",X"21",X"44", + X"20",X"41",X"3E",X"42",X"3D",X"40",X"01",X"5C",X"00",X"C0",X"02",X"43",X"3C",X"41",X"3E",X"5E", + X"3E",X"5F",X"3E",X"41",X"3A",X"5E",X"25",X"5C",X"3F",X"5A",X"25",X"43",X"22",X"42",X"21",X"41", + X"24",X"40",X"22",X"45",X"20",X"40",X"3F",X"41",X"3F",X"41",X"1E",X"5D",X"00",X"C0",X"03",X"42", + X"3D",X"42",X"3D",X"5F",X"3E",X"40",X"3E",X"42",X"3A",X"40",X"23",X"5B",X"3D",X"5B",X"26",X"40", + X"22",X"42",X"22",X"40",X"23",X"5F",X"23",X"42",X"21",X"43",X"20",X"40",X"3F",X"41",X"1D",X"5E", + X"00",X"C0",X"04",X"41",X"3E",X"43",X"3C",X"40",X"3F",X"41",X"3E",X"42",X"3B",X"43",X"21",X"5A", + X"3B",X"5C",X"26",X"5E",X"22",X"43",X"22",X"5D",X"22",X"5E",X"24",X"41",X"21",X"41",X"21",X"43", + X"20",X"40",X"1C",X"5F",X"00",X"C0",X"04",X"41",X"3F",X"42",X"3D",X"41",X"3F",X"42",X"20",X"42", + X"3B",X"45",X"3F",X"5A",X"3A",X"5F",X"25",X"5B",X"22",X"40",X"22",X"5F",X"21",X"5D",X"22",X"5F", + X"23",X"40",X"22",X"42",X"20",X"43",X"1C",X"5F",X"00",X"C0",X"03",X"5E",X"21",X"44",X"3E",X"42", + X"3D",X"42",X"23",X"42",X"3E",X"46",X"3C",X"5B",X"3A",X"41",X"23",X"5B",X"22",X"5E",X"21",X"5F", + X"20",X"5C",X"23",X"5E",X"20",X"40",X"23",X"41",X"21",X"41",X"1D",X"42",X"00",X"C0",X"02",X"5D", + X"22",X"43",X"3F",X"43",X"20",X"42",X"22",X"42",X"20",X"46",X"3B",X"5D",X"3B",X"43",X"20",X"5A", + X"22",X"5E",X"20",X"5E",X"3F",X"5D",X"22",X"5D",X"21",X"5F",X"22",X"40",X"21",X"41",X"1E",X"43", + X"00",X"C0",X"1F",X"5C",X"25",X"42",X"20",X"44",X"21",X"41",X"22",X"42",X"23",X"45",X"3A",X"5F", + X"3C",X"45",X"3E",X"5A",X"21",X"5E",X"3F",X"5E",X"3E",X"5E",X"21",X"5C",X"21",X"5F",X"21",X"5F", + X"20",X"40",X"01",X"44",X"00",X"C0",X"1F",X"5C",X"24",X"41",X"21",X"43",X"22",X"41",X"22",X"40", + X"25",X"45",X"3A",X"41",X"3F",X"46",X"3B",X"5B",X"20",X"5E",X"3F",X"5E",X"3D",X"5F",X"3F",X"5E", + X"20",X"5D",X"22",X"5E",X"21",X"40",X"01",X"44",X"00",X"C0",X"1E",X"5D",X"24",X"5F",X"22",X"42", + X"22",X"43",X"22",X"5D",X"26",X"42",X"3B",X"44",X"21",X"46",X"3B",X"5D",X"3E",X"5E",X"3F",X"5F", + X"3C",X"40",X"3E",X"5D",X"20",X"40",X"21",X"5D",X"21",X"5F",X"02",X"43",X"00",X"C0",X"1D",X"5E", + X"23",X"5E",X"23",X"41",X"22",X"40",X"22",X"5E",X"26",X"40",X"3D",X"45",X"23",X"45",X"3A",X"40", + X"3E",X"5E",X"3E",X"40",X"3D",X"41",X"3D",X"5E",X"3F",X"5F",X"20",X"40",X"21",X"5D",X"03",X"42", + X"00",X"C0",X"1C",X"41",X"22",X"5B",X"24",X"40",X"21",X"5F",X"22",X"5E",X"25",X"5D",X"3F",X"46", + X"25",X"44",X"3A",X"42",X"3E",X"5F",X"3E",X"41",X"3E",X"42",X"3C",X"5F",X"3F",X"5F",X"3F",X"5F", + X"20",X"40",X"04",X"5F",X"00",X"C0",X"1C",X"41",X"21",X"5C",X"23",X"5F",X"21",X"5E",X"20",X"5E", + X"25",X"5B",X"21",X"46",X"26",X"41",X"3B",X"45",X"3E",X"40",X"3E",X"41",X"3F",X"43",X"3C",X"41", + X"3F",X"40",X"3E",X"5E",X"20",X"5F",X"04",X"5F",X"00",X"C0",X"1D",X"42",X"3F",X"5C",X"22",X"5E", + X"21",X"5E",X"3F",X"5E",X"22",X"5A",X"24",X"45",X"26",X"5F",X"3D",X"45",X"3E",X"42",X"3F",X"41", + X"20",X"44",X"3B",X"42",X"20",X"40",X"3F",X"5F",X"3F",X"5F",X"03",X"5E",X"00",X"C0",X"1E",X"43", + X"3A",X"5A",X"20",X"5A",X"26",X"5A",X"24",X"40",X"26",X"46",X"20",X"46",X"3A",X"46",X"1E",X"5D", + X"00",X"C0",X"1F",X"44",X"38",X"5C",X"3E",X"5B",X"23",X"58",X"24",X"5E",X"28",X"44",X"22",X"45", + X"3D",X"48",X"1D",X"5E",X"00",X"C0",X"1F",X"44",X"39",X"40",X"3C",X"5D",X"20",X"56",X"23",X"5D", + X"28",X"40",X"25",X"44",X"20",X"49",X"1C",X"5F",X"00",X"C0",X"02",X"43",X"38",X"43",X"3B",X"5E", + X"3C",X"58",X"22",X"5C",X"28",X"5D",X"25",X"42",X"24",X"4A",X"1C",X"5F",X"00",X"C0",X"03",X"42", + X"3A",X"46",X"3A",X"40",X"3A",X"5A",X"20",X"5C",X"26",X"5A",X"26",X"40",X"26",X"46",X"1D",X"42", + X"00",X"C0",X"04",X"41",X"3C",X"48",X"3B",X"42",X"38",X"5D",X"3E",X"5C",X"24",X"58",X"25",X"5E", + X"28",X"43",X"1E",X"43",X"00",X"C0",X"04",X"41",X"20",X"47",X"3B",X"44",X"38",X"40",X"3D",X"5D", + X"20",X"58",X"24",X"5B",X"27",X"40",X"01",X"44",X"00",X"C0",X"03",X"5E",X"23",X"48",X"3E",X"45", + X"38",X"44",X"3C",X"5E",X"3D",X"58",X"22",X"5B",X"28",X"5C",X"01",X"44",X"00",X"C0",X"02",X"5D", + X"26",X"46",X"20",X"46",X"3A",X"46",X"3C",X"40",X"3A",X"5A",X"20",X"5A",X"26",X"5A",X"02",X"43", + X"00",X"C0",X"1F",X"5C",X"2A",X"44",X"22",X"45",X"3D",X"48",X"3C",X"42",X"38",X"5C",X"3E",X"5B", + X"23",X"58",X"03",X"42",X"00",X"C0",X"1F",X"5C",X"29",X"40",X"24",X"45",X"20",X"48",X"3D",X"43", + X"36",X"40",X"3D",X"5C",X"20",X"59",X"04",X"5F",X"00",X"C0",X"1E",X"5D",X"28",X"5D",X"25",X"42", + X"24",X"48",X"3E",X"44",X"38",X"43",X"3B",X"5E",X"3C",X"58",X"04",X"5F",X"00",X"C0",X"1D",X"5E", + X"26",X"5A",X"26",X"40",X"26",X"46",X"20",X"44",X"3A",X"46",X"3A",X"40",X"3A",X"5A",X"03",X"5E", + X"00",X"C0",X"1C",X"41",X"24",X"56",X"25",X"5E",X"28",X"43",X"22",X"44",X"3C",X"48",X"3B",X"42", + X"38",X"5D",X"02",X"5D",X"00",X"C0",X"1C",X"41",X"20",X"57",X"23",X"5C",X"2A",X"40",X"23",X"43", + X"20",X"4A",X"3C",X"43",X"37",X"40",X"01",X"5C",X"00",X"C0",X"1D",X"42",X"3D",X"58",X"22",X"5B", + X"28",X"5C",X"24",X"42",X"23",X"48",X"3E",X"45",X"36",X"44",X"01",X"5C",X"00",X"C0",X"02",X"43", + X"22",X"43",X"3F",X"43",X"3E",X"41",X"21",X"5E",X"20",X"5E",X"3E",X"5E",X"3E",X"42",X"20",X"42", + X"21",X"42",X"3E",X"5F",X"3F",X"5D",X"22",X"5D",X"02",X"5D",X"00",X"C0",X"03",X"42",X"23",X"42", + X"20",X"43",X"3F",X"42",X"20",X"5E",X"3F",X"5E",X"3E",X"5F",X"3E",X"42",X"21",X"42",X"22",X"42", + X"3C",X"5F",X"20",X"5E",X"20",X"5D",X"01",X"5C",X"00",X"C0",X"04",X"41",X"23",X"40",X"21",X"43", + X"20",X"42",X"3F",X"5E",X"3F",X"5F",X"3D",X"40",X"20",X"43",X"21",X"41",X"22",X"41",X"3E",X"40", + X"3D",X"5F",X"3E",X"5D",X"01",X"5C",X"00",X"C0",X"04",X"41",X"23",X"5E",X"22",X"42",X"21",X"42", + X"3E",X"5E",X"3E",X"5F",X"3E",X"42",X"21",X"42",X"22",X"41",X"22",X"40",X"3E",X"41",X"3D",X"40", + X"3E",X"5D",X"1E",X"5D",X"00",X"C0",X"4E",X"00",X"03",X"5E",X"23",X"5E",X"23",X"41",X"21",X"44", + X"3E",X"5D",X"3E",X"40",X"3E",X"42",X"22",X"42",X"22",X"40",X"22",X"5F",X"3F",X"42",X"3D",X"41", + X"3D",X"5E",X"1D",X"5E",X"00",X"C0",X"02",X"5D",X"22",X"5D",X"23",X"40",X"22",X"41",X"3E",X"40", + X"3E",X"41",X"3F",X"42",X"22",X"42",X"22",X"5F",X"22",X"5E",X"3F",X"44",X"3E",X"40",X"3D",X"40", + X"1C",X"5F",X"00",X"C0",X"1F",X"5C",X"22",X"5D",X"23",X"5F",X"22",X"40",X"3E",X"41",X"3F",X"41", + X"20",X"43",X"23",X"40",X"21",X"5F",X"21",X"5E",X"20",X"42",X"3F",X"43",X"3D",X"42",X"1C",X"5F", + X"00",X"C0",X"1F",X"5C",X"20",X"5D",X"20",X"5E",X"24",X"5F",X"3E",X"42",X"3F",X"42",X"22",X"42", + X"22",X"5F",X"21",X"5E",X"20",X"5E",X"21",X"42",X"20",X"43",X"3D",X"42",X"1D",X"42",X"00",X"C0", + X"1E",X"5D",X"3E",X"5D",X"21",X"5D",X"22",X"5F",X"3F",X"42",X"20",X"42",X"22",X"42",X"22",X"5E", + X"20",X"5E",X"3F",X"5E",X"22",X"41",X"21",X"43",X"3E",X"43",X"1E",X"43",X"00",X"C0",X"1D",X"5E", + X"3D",X"5E",X"20",X"5D",X"21",X"5E",X"20",X"42",X"21",X"42",X"22",X"41",X"22",X"5E",X"3F",X"5E", + X"3E",X"5E",X"22",X"41",X"22",X"42",X"3E",X"43",X"01",X"44",X"00",X"C0",X"1C",X"41",X"3D",X"5E", + X"3F",X"5D",X"20",X"5E",X"21",X"42",X"21",X"41",X"23",X"40",X"20",X"5D",X"3F",X"5F",X"3E",X"5F", + X"22",X"40",X"23",X"41",X"20",X"43",X"01",X"44",X"00",X"C0",X"1C",X"41",X"3D",X"40",X"3E",X"40", + X"3F",X"5C",X"22",X"42",X"22",X"41",X"22",X"5E",X"3F",X"5E",X"3E",X"5F",X"3E",X"40",X"22",X"5F", + X"23",X"40",X"22",X"43",X"02",X"43",X"00",X"C0",X"1D",X"42",X"3D",X"42",X"3D",X"5F",X"3F",X"5E", + X"22",X"41",X"22",X"40",X"22",X"5E",X"3E",X"5E",X"3E",X"40",X"3E",X"43",X"21",X"5C",X"23",X"5F", + X"23",X"42",X"03",X"42",X"00",X"C0",X"1E",X"43",X"3E",X"43",X"3D",X"40",X"3E",X"5F",X"22",X"40", + X"22",X"5F",X"21",X"5E",X"3E",X"5E",X"3E",X"41",X"3E",X"42",X"21",X"5E",X"22",X"5E",X"23",X"42", + X"04",X"5F",X"00",X"C0",X"1F",X"44",X"20",X"43",X"3D",X"41",X"3E",X"40",X"22",X"5F",X"21",X"5F", + X"20",X"5D",X"3D",X"40",X"3F",X"41",X"3F",X"42",X"20",X"5E",X"21",X"5D",X"23",X"40",X"04",X"5F", + X"00",X"C0",X"1F",X"44",X"22",X"43",X"3E",X"42",X"3E",X"41",X"22",X"5E",X"21",X"5E",X"3E",X"5E", + X"3E",X"41",X"3F",X"42",X"20",X"42",X"3F",X"5E",X"20",X"5D",X"23",X"5E",X"03",X"5E",X"00",X"C0", + X"02",X"43",X"23",X"43",X"3F",X"43",X"3E",X"41",X"21",X"5E",X"20",X"5E",X"3D",X"5E",X"3D",X"42", + X"20",X"42",X"21",X"42",X"3E",X"5F",X"3F",X"5D",X"23",X"5D",X"02",X"5D",X"00",X"C0",X"03",X"42", + X"24",X"42",X"20",X"43",X"3F",X"41",X"20",X"5E",X"3F",X"5E",X"3D",X"40",X"3E",X"43",X"20",X"42", + X"22",X"41",X"3E",X"40",X"3E",X"5D",X"21",X"5D",X"01",X"5C",X"00",X"C0",X"04",X"41",X"24",X"40", + X"21",X"43",X"3F",X"42",X"20",X"5E",X"3E",X"5E",X"3D",X"41",X"3F",X"43",X"22",X"42",X"22",X"40", + X"3E",X"41",X"3B",X"5F",X"20",X"5C",X"01",X"5C",X"00",X"C0",X"04",X"41",X"23",X"5D",X"23",X"42", + X"20",X"42",X"3F",X"5E",X"3E",X"40",X"3D",X"42",X"20",X"43",X"22",X"41",X"22",X"40",X"3F",X"41", + X"3D",X"40",X"3E",X"5C",X"1E",X"5D",X"00",X"C0",X"03",X"5E",X"23",X"5D",X"23",X"41",X"21",X"42", + X"3E",X"5F",X"3E",X"40",X"3E",X"43",X"22",X"43",X"22",X"40",X"22",X"5F",X"3F",X"42",X"3D",X"41", + X"3D",X"5D",X"1D",X"5E",X"00",X"C0",X"02",X"5D",X"22",X"5C",X"23",X"40",X"21",X"41",X"3E",X"40", + X"3E",X"41",X"20",X"43",X"23",X"42",X"22",X"40",X"21",X"5E",X"20",X"42",X"3D",X"42",X"3D",X"5F", + X"1C",X"5F",X"00",X"C0",X"1F",X"5C",X"20",X"5C",X"25",X"5F",X"22",X"41",X"3E",X"40",X"3E",X"42", + X"21",X"43",X"23",X"41",X"22",X"5E",X"20",X"5E",X"21",X"42",X"3F",X"45",X"3C",X"40",X"1C",X"5F", + X"00",X"C0",X"1F",X"5C",X"3F",X"5D",X"22",X"5D",X"22",X"40",X"3E",X"41",X"20",X"42",X"22",X"43", + X"23",X"40",X"21",X"5E",X"20",X"5E",X"21",X"41",X"20",X"43",X"3C",X"42",X"1D",X"42",X"00",X"C0", + X"1E",X"5D",X"3D",X"5D",X"21",X"5D",X"22",X"5F",X"3F",X"42",X"20",X"42",X"23",X"42",X"23",X"5E", + X"20",X"5E",X"3F",X"5E",X"22",X"41",X"21",X"43",X"3D",X"43",X"1E",X"43",X"00",X"C0",X"1D",X"5E", + X"3C",X"5E",X"20",X"5D",X"21",X"5F",X"20",X"42",X"21",X"42",X"23",X"40",X"22",X"5D",X"20",X"5E", + X"3E",X"5F",X"22",X"40",X"22",X"43",X"3D",X"43",X"01",X"44",X"00",X"C0",X"1C",X"41",X"3C",X"40", + X"3F",X"5B",X"21",X"5E",X"20",X"42",X"22",X"42",X"23",X"5F",X"21",X"5D",X"3E",X"5E",X"3E",X"40", + X"22",X"5F",X"23",X"41",X"20",X"44",X"01",X"44",X"00",X"C0",X"1C",X"41",X"3D",X"41",X"3D",X"5E", + X"20",X"5E",X"21",X"42",X"22",X"40",X"23",X"5E",X"20",X"5D",X"3E",X"5F",X"3E",X"40",X"21",X"5F", + X"23",X"40",X"22",X"44",X"02",X"43",X"00",X"C0",X"1D",X"42",X"3D",X"43",X"3D",X"5F",X"3F",X"5E", + X"22",X"41",X"22",X"40",X"22",X"5D",X"3E",X"5D",X"3E",X"40",X"3E",X"41",X"21",X"5E",X"23",X"5F", + X"23",X"43",X"03",X"42",X"00",X"C0",X"1E",X"43",X"3E",X"44",X"3D",X"40",X"3F",X"5F",X"22",X"40", + X"22",X"5F",X"20",X"5D",X"3D",X"5E",X"3E",X"40",X"3F",X"42",X"20",X"5E",X"23",X"5E",X"23",X"43", + X"04",X"5F",X"00",X"C0",X"1F",X"44",X"20",X"44",X"3D",X"41",X"3E",X"5F",X"22",X"40",X"22",X"5E", + X"3F",X"5D",X"3D",X"5F",X"3E",X"42",X"20",X"42",X"3F",X"5E",X"21",X"5D",X"24",X"40",X"04",X"5F", + X"00",X"C0",X"1F",X"44",X"23",X"43",X"3E",X"43",X"3E",X"40",X"22",X"5F",X"20",X"5E",X"3E",X"5D", + X"3D",X"40",X"3F",X"42",X"20",X"42",X"3F",X"5F",X"20",X"5D",X"24",X"5E",X"03",X"5E",X"00",X"C0", + X"02",X"43",X"23",X"43",X"20",X"43",X"3E",X"41",X"21",X"5E",X"3F",X"5E",X"3D",X"5E",X"3D",X"42", + X"3F",X"42",X"21",X"42",X"3E",X"5F",X"20",X"5D",X"23",X"5D",X"02",X"5D",X"00",X"C0",X"03",X"42", + X"24",X"42",X"21",X"42",X"3F",X"42",X"20",X"5E",X"3E",X"5E",X"3D",X"40",X"3E",X"43",X"3F",X"42", + X"22",X"41",X"3E",X"40",X"3F",X"5D",X"21",X"5D",X"01",X"5C",X"00",X"C0",X"04",X"41",X"24",X"40", + X"22",X"42",X"3F",X"42",X"3F",X"5E",X"3E",X"5F",X"3D",X"41",X"3F",X"43",X"21",X"42",X"22",X"41", + X"3E",X"41",X"3C",X"5E",X"20",X"5C",X"01",X"5C",X"00",X"C0",X"04",X"41",X"23",X"5D",X"23",X"41", + X"20",X"42",X"3F",X"40",X"3E",X"5F",X"3D",X"42",X"20",X"43",X"22",X"42",X"22",X"40",X"3E",X"41", + X"3E",X"5F",X"3E",X"5C",X"1E",X"5D",X"00",X"C0",X"03",X"5E",X"23",X"5D",X"23",X"40",X"21",X"42", + X"3E",X"5F",X"3E",X"41",X"3E",X"43",X"22",X"43",X"22",X"41",X"22",X"5F",X"3F",X"42",X"3D",X"40", + X"3D",X"5D",X"1D",X"5E",X"00",X"C0",X"02",X"5D",X"22",X"5C",X"22",X"5F",X"22",X"41",X"3E",X"40", + X"3E",X"42",X"20",X"43",X"23",X"42",X"22",X"41",X"21",X"5E",X"20",X"42",X"3D",X"41",X"3D",X"5F", + X"1C",X"5F",X"00",X"C0",X"1F",X"5C",X"20",X"5C",X"24",X"5E",X"22",X"41",X"3E",X"41",X"3F",X"42", + X"21",X"43",X"23",X"41",X"22",X"5F",X"21",X"5E",X"21",X"42",X"3E",X"44",X"3C",X"40",X"1C",X"5F", + X"00",X"C0",X"1F",X"5C",X"3F",X"5D",X"21",X"5D",X"22",X"40",X"3E",X"41",X"21",X"42",X"22",X"43", + X"23",X"40",X"22",X"5E",X"20",X"5E",X"21",X"42",X"3F",X"42",X"3C",X"42",X"1D",X"42",X"00",X"C0", + X"1E",X"5D",X"3D",X"5D",X"20",X"5D",X"22",X"5F",X"3F",X"42",X"21",X"42",X"23",X"42",X"23",X"5E", + X"21",X"5E",X"3F",X"5E",X"22",X"41",X"20",X"43",X"3D",X"43",X"1E",X"43",X"00",X"C0",X"1D",X"5E", + X"3C",X"5E",X"3F",X"5E",X"21",X"5E",X"20",X"42",X"22",X"42",X"23",X"40",X"22",X"5D",X"3F",X"5E", + X"20",X"5F",X"22",X"40",X"21",X"43",X"3D",X"43",X"01",X"44",X"00",X"C0",X"1C",X"41",X"3C",X"40", + X"3E",X"5C",X"21",X"5E",X"21",X"42",X"22",X"41",X"23",X"5F",X"21",X"5D",X"3F",X"5E",X"3E",X"5F", + X"22",X"5F",X"22",X"42",X"20",X"44",X"01",X"44",X"00",X"C0",X"1C",X"41",X"3D",X"41",X"3D",X"5F", + X"20",X"5E",X"21",X"42",X"22",X"5F",X"23",X"5E",X"20",X"5D",X"3E",X"5E",X"3E",X"40",X"22",X"5F", + X"22",X"41",X"22",X"44",X"02",X"43",X"00",X"C0",X"1D",X"42",X"3D",X"43",X"3D",X"40",X"3F",X"5E", + X"22",X"41",X"22",X"5F",X"22",X"5D",X"3E",X"5D",X"3E",X"5F",X"3E",X"41",X"21",X"5E",X"23",X"40", + X"23",X"43",X"03",X"42",X"00",X"C0",X"1E",X"43",X"3E",X"44",X"3E",X"41",X"3E",X"5F",X"22",X"40", + X"22",X"5E",X"20",X"5D",X"3D",X"5E",X"3E",X"41",X"3F",X"40",X"20",X"5E",X"23",X"5F",X"23",X"43", + X"04",X"5F",X"00",X"C0",X"1F",X"44",X"20",X"44",X"3E",X"42",X"3E",X"5F",X"22",X"5F",X"21",X"5E", + X"3F",X"5D",X"3D",X"5F",X"3E",X"41",X"3F",X"42",X"3F",X"5E",X"22",X"5E",X"24",X"40",X"04",X"5F", + X"00",X"C0",X"1F",X"44",X"23",X"43",X"3F",X"43",X"3E",X"40",X"20",X"5F",X"21",X"5E",X"3E",X"5D", + X"3D",X"40",X"3E",X"42",X"20",X"42",X"3F",X"5E",X"21",X"5E",X"24",X"5E",X"03",X"5E",X"00",X"C0", + X"1E",X"43",X"3D",X"45",X"3F",X"44",X"02",X"54",X"3C",X"43",X"3C",X"5E",X"09",X"5C",X"3A",X"41", + X"3D",X"5C",X"0C",X"40",X"0C",X"40",X"3D",X"44",X"3A",X"5F",X"01",X"43",X"24",X"43",X"24",X"5E", + X"16",X"42",X"23",X"45",X"21",X"44",X"1A",X"54",X"00",X"C0",X"1F",X"44",X"3F",X"45",X"21",X"44", + X"1D",X"55",X"3E",X"44",X"3B",X"40",X"07",X"58",X"3B",X"44",X"3C",X"5F",X"0B",X"59",X"0B",X"5C", + X"3F",X"45",X"3A",X"41",X"02",X"42",X"25",X"42",X"22",X"5C",X"18",X"46",X"25",X"43",X"22",X"44", + X"16",X"57",X"00",X"C0",X"1F",X"44",X"23",X"45",X"22",X"44",X"19",X"56",X"3F",X"45",X"3C",X"41", + X"04",X"57",X"3C",X"45",X"3B",X"5F",X"09",X"58",X"08",X"57",X"21",X"45",X"3B",X"44",X"03",X"41", + X"25",X"5F",X"21",X"5C",X"1B",X"49",X"25",X"41",X"24",X"42",X"13",X"5C",X"00",X"C0",X"02",X"43", + X"23",X"45",X"24",X"42",X"15",X"5A",X"22",X"45",X"3C",X"42",X"00",X"57",X"3F",X"46",X"3B",X"41", + X"04",X"55",X"05",X"55",X"23",X"44",X"3C",X"45",X"04",X"40",X"24",X"5E",X"20",X"5B",X"1E",X"4C", + X"25",X"5D",X"24",X"43",X"13",X"5F",X"00",X"C0",X"03",X"42",X"25",X"43",X"24",X"41",X"14",X"5E", + X"23",X"44",X"3C",X"44",X"1E",X"57",X"21",X"46",X"3C",X"43",X"00",X"54",X"00",X"54",X"24",X"43", + X"3F",X"46",X"03",X"5F",X"23",X"5C",X"3E",X"5C",X"02",X"4A",X"25",X"5D",X"24",X"5F",X"14",X"46", + X"00",X"C0",X"04",X"41",X"25",X"41",X"24",X"5F",X"15",X"43",X"24",X"42",X"20",X"45",X"18",X"59", + X"24",X"45",X"3D",X"44",X"1B",X"55",X"1C",X"55",X"25",X"41",X"21",X"46",X"02",X"5E",X"22",X"5B", + X"3C",X"5E",X"06",X"48",X"23",X"5B",X"24",X"5E",X"17",X"4A",X"00",X"C0",X"04",X"41",X"25",X"5D", + X"24",X"5E",X"16",X"47",X"25",X"41",X"21",X"44",X"17",X"5C",X"25",X"44",X"3F",X"45",X"18",X"57", + X"17",X"58",X"25",X"5F",X"24",X"45",X"01",X"5D",X"3F",X"5B",X"3C",X"5F",X"07",X"45",X"23",X"5B", + X"22",X"5C",X"1C",X"4D",X"00",X"C0",X"03",X"5E",X"25",X"5D",X"22",X"5C",X"1A",X"4B",X"25",X"5E", + X"22",X"44",X"17",X"40",X"26",X"41",X"21",X"45",X"15",X"5C",X"15",X"5B",X"24",X"5D",X"25",X"44", + X"00",X"5C",X"3E",X"5C",X"3B",X"40",X"0A",X"42",X"3F",X"5B",X"21",X"5C",X"01",X"4D",X"00",X"C0", + X"02",X"5D",X"23",X"5B",X"21",X"5C",X"1E",X"4C",X"24",X"5D",X"24",X"44",X"17",X"42",X"26",X"5F", + X"23",X"44",X"14",X"40",X"14",X"40",X"23",X"5C",X"26",X"41",X"1F",X"5D",X"3C",X"5D",X"3C",X"42", + X"0A",X"5E",X"3D",X"5B",X"3F",X"5C",X"06",X"4C",X"00",X"C0",X"1F",X"5C",X"23",X"5B",X"3D",X"5C", + X"05",X"4B",X"22",X"5C",X"25",X"40",X"19",X"48",X"25",X"5C",X"24",X"43",X"15",X"45",X"15",X"44", + X"21",X"5B",X"26",X"5F",X"1E",X"5E",X"3B",X"5E",X"3E",X"44",X"08",X"5A",X"3B",X"5D",X"3E",X"5C", + X"0A",X"49",X"00",X"C0",X"1F",X"5C",X"3F",X"5B",X"3E",X"5C",X"07",X"4A",X"21",X"5B",X"24",X"5F", + X"1C",X"49",X"24",X"5B",X"25",X"41",X"17",X"48",X"18",X"49",X"3F",X"5B",X"25",X"5C",X"1D",X"5F", + X"3B",X"41",X"3F",X"44",X"05",X"59",X"3B",X"5D",X"3C",X"5E",X"0D",X"44",X"00",X"C0",X"1E",X"5D", + X"3D",X"5B",X"3C",X"5E",X"0B",X"46",X"3E",X"5B",X"24",X"5E",X"00",X"49",X"21",X"5A",X"25",X"5F", + X"1C",X"4B",X"19",X"4B",X"3F",X"5C",X"24",X"5B",X"1C",X"40",X"3C",X"42",X"20",X"45",X"02",X"56", + X"3B",X"41",X"3C",X"5F",X"0D",X"5F",X"00",X"C0",X"1D",X"5E",X"3B",X"5D",X"3C",X"5F",X"0C",X"42", + X"3D",X"5C",X"22",X"5C",X"04",X"49",X"3F",X"5A",X"24",X"5D",X"00",X"4C",X"00",X"4C",X"3C",X"5D", + X"21",X"5A",X"1D",X"41",X"3D",X"44",X"22",X"44",X"1E",X"56",X"3B",X"43",X"3C",X"41",X"0C",X"5A", + X"00",X"C0",X"1C",X"41",X"3B",X"5D",X"3C",X"43",X"0B",X"5B",X"3C",X"5E",X"20",X"5B",X"08",X"47", + X"3C",X"5B",X"21",X"5C",X"07",X"4B",X"04",X"4B",X"3B",X"5F",X"3F",X"5A",X"1E",X"42",X"3E",X"45", + X"24",X"42",X"1A",X"58",X"3D",X"45",X"3C",X"42",X"09",X"56",X"00",X"C0",X"1C",X"41",X"3B",X"41", + X"3C",X"42",X"0A",X"59",X"3B",X"5F",X"3F",X"5C",X"09",X"44",X"3B",X"5C",X"21",X"5B",X"08",X"49", + X"09",X"48",X"3B",X"41",X"3C",X"5B",X"1F",X"43",X"21",X"45",X"24",X"41",X"17",X"5B",X"3F",X"45", + X"3E",X"44",X"04",X"53",X"00",X"C0",X"1D",X"42",X"3B",X"43",X"3E",X"44",X"06",X"55",X"3B",X"42", + X"3E",X"5C",X"09",X"40",X"3A",X"5F",X"3F",X"5B",X"0B",X"44",X"0B",X"47",X"3C",X"41",X"3B",X"5C", + X"00",X"44",X"22",X"44",X"25",X"40",X"14",X"5E",X"23",X"45",X"3D",X"44",X"01",X"53",X"00",X"C0", + X"1E",X"43",X"3B",X"43",X"3E",X"44",X"05",X"56",X"3B",X"5F",X"3E",X"5C",X"08",X"42",X"3B",X"5D", + X"3E",X"5B",X"0A",X"40",X"0A",X"40",X"3E",X"45",X"3B",X"43",X"08",X"5E",X"3E",X"44",X"3B",X"41", + X"1E",X"43",X"25",X"43",X"22",X"44",X"17",X"56",X"00",X"C0",X"1F",X"44",X"3D",X"44",X"20",X"45", + X"00",X"55",X"3B",X"41",X"3D",X"5D",X"08",X"5E",X"3A",X"40",X"3D",X"5C",X"09",X"5C",X"09",X"5C", + X"20",X"45",X"3D",X"45",X"06",X"5B",X"20",X"45",X"3C",X"42",X"1F",X"44",X"26",X"41",X"23",X"43", + X"14",X"5A",X"00",X"C0",X"1F",X"44",X"20",X"45",X"20",X"44",X"1E",X"56",X"3C",X"43",X"3C",X"5E", + X"07",X"5C",X"3A",X"41",X"3B",X"40",X"07",X"57",X"07",X"59",X"22",X"45",X"3F",X"46",X"04",X"59", + X"22",X"44",X"3D",X"44",X"01",X"44",X"25",X"40",X"24",X"40",X"13",X"5F",X"00",X"C0",X"02",X"43", + X"21",X"46",X"23",X"43",X"18",X"58",X"3E",X"44",X"3B",X"40",X"05",X"5A",X"3B",X"43",X"3B",X"40", + X"04",X"57",X"04",X"57",X"24",X"43",X"20",X"46",X"02",X"58",X"23",X"43",X"3F",X"45",X"02",X"45", + X"24",X"5B",X"25",X"40",X"13",X"44",X"00",X"C0",X"03",X"42",X"23",X"45",X"24",X"42",X"16",X"5B", + X"3F",X"45",X"3C",X"42",X"02",X"58",X"3D",X"45",X"3B",X"42",X"00",X"56",X"00",X"56",X"25",X"42", + X"23",X"45",X"1E",X"58",X"24",X"42",X"21",X"45",X"03",X"42",X"23",X"5B",X"24",X"5E",X"16",X"49", + X"00",X"C0",X"04",X"41",X"24",X"43",X"25",X"40",X"15",X"40",X"21",X"45",X"3D",X"43",X"1E",X"58", + X"20",X"46",X"3C",X"43",X"1C",X"57",X"1C",X"57",X"25",X"40",X"25",X"43",X"1B",X"5A",X"25",X"40", + X"22",X"44",X"04",X"41",X"21",X"5A",X"23",X"5D",X"1A",X"4C",X"00",X"C0",X"04",X"41",X"25",X"40", + X"24",X"40",X"16",X"42",X"23",X"44",X"3E",X"44",X"1C",X"59",X"21",X"46",X"3E",X"45",X"19",X"59", + X"19",X"59",X"25",X"5E",X"26",X"41",X"19",X"5C",X"24",X"5E",X"24",X"43",X"02",X"5F",X"20",X"5B", + X"20",X"5C",X"01",X"4D",X"00",X"C0",X"03",X"5E",X"26",X"5F",X"23",X"5D",X"18",X"48",X"24",X"42", + X"20",X"45",X"1A",X"5B",X"23",X"45",X"20",X"45",X"17",X"5C",X"17",X"5C",X"23",X"5C",X"26",X"40", + X"18",X"5E",X"23",X"5D",X"25",X"41",X"03",X"5E",X"3D",X"5C",X"20",X"5B",X"04",X"4D",X"00",X"C0", + X"02",X"5D",X"25",X"5D",X"22",X"5C",X"1B",X"4A",X"25",X"41",X"22",X"44",X"18",X"5E",X"25",X"43", + X"22",X"45",X"16",X"40",X"16",X"40",X"22",X"5B",X"25",X"5D",X"18",X"42",X"22",X"5C",X"25",X"5F", + X"02",X"5D",X"3B",X"5D",X"3E",X"5C",X"09",X"4A",X"00",X"C0",X"1F",X"5C",X"25",X"5C",X"20",X"5B", + X"00",X"4B",X"25",X"5F",X"23",X"43",X"18",X"42",X"26",X"40",X"23",X"44",X"17",X"44",X"17",X"44", + X"20",X"5B",X"23",X"5B",X"1A",X"45",X"20",X"5B",X"24",X"5E",X"01",X"5C",X"3A",X"5F",X"3D",X"5D", + X"0C",X"46",X"00",X"C0",X"1F",X"5C",X"20",X"5B",X"20",X"5C",X"04",X"4A",X"24",X"5D",X"24",X"42", + X"19",X"44",X"26",X"5F",X"25",X"42",X"19",X"47",X"17",X"47",X"20",X"5B",X"21",X"5A",X"1C",X"47", + X"3E",X"5C",X"23",X"5C",X"1F",X"5E",X"3B",X"40",X"3C",X"40",X"0D",X"5F",X"00",X"C0",X"1E",X"5D", + X"3F",X"5A",X"3D",X"5D",X"08",X"48",X"22",X"5C",X"25",X"40",X"1B",X"46",X"25",X"5D",X"25",X"40", + X"1C",X"49",X"1C",X"49",X"3C",X"5D",X"20",X"5A",X"1E",X"48",X"3D",X"5D",X"21",X"5B",X"1E",X"5D", + X"3C",X"43",X"3B",X"40",X"0D",X"5C",X"00",X"C0",X"1D",X"5E",X"3D",X"5B",X"3C",X"5E",X"0A",X"45", + X"3F",X"5B",X"26",X"5E",X"1E",X"48",X"23",X"5B",X"25",X"5E",X"00",X"4A",X"00",X"4A",X"3B",X"5E", + X"3D",X"5B",X"02",X"48",X"3C",X"5E",X"3F",X"5B",X"1D",X"5E",X"3D",X"45",X"3C",X"42",X"0A",X"57", + X"00",X"C0",X"1C",X"41",X"3C",X"5B",X"3B",X"40",X"0B",X"40",X"3F",X"5B",X"23",X"5D",X"02",X"48", + X"20",X"5A",X"24",X"5D",X"04",X"49",X"04",X"49",X"3B",X"40",X"3B",X"5D",X"05",X"46",X"3B",X"40", + X"3E",X"5C",X"1C",X"5F",X"3F",X"46",X"3D",X"43",X"06",X"54",X"00",X"C0",X"1C",X"41",X"3B",X"40", + X"3C",X"40",X"0A",X"5C",X"3D",X"5C",X"22",X"5C",X"04",X"47",X"3F",X"5A",X"20",X"5B",X"09",X"47", + X"07",X"49",X"3B",X"40",X"3A",X"5F",X"07",X"44",X"3C",X"42",X"3C",X"5D",X"1C",X"41",X"20",X"45", + X"20",X"44",X"01",X"53",X"00",X"C0",X"1D",X"42",X"3A",X"41",X"3D",X"43",X"08",X"58",X"3C",X"5E", + X"20",X"5B",X"06",X"45",X"3D",X"5B",X"20",X"5B",X"09",X"44",X"09",X"44",X"3D",X"44",X"3A",X"40", + X"08",X"42",X"3D",X"43",X"3B",X"5F",X"1B",X"42",X"25",X"44",X"20",X"45",X"1C",X"53",X"00",X"C0", + X"1E",X"43",X"3A",X"41",X"3E",X"44",X"06",X"58",X"3C",X"5D",X"3E",X"5C",X"07",X"44",X"3C",X"5C", + X"3F",X"5B",X"08",X"40",X"08",X"40",X"3F",X"45",X"3C",X"44",X"07",X"5C",X"3E",X"44",X"3C",X"43", + X"1E",X"43",X"26",X"41",X"22",X"44",X"16",X"58",X"00",X"C0",X"1F",X"44",X"3B",X"43",X"20",X"44", + X"02",X"57",X"3B",X"5E",X"3D",X"5D",X"08",X"41",X"3B",X"5E",X"3D",X"5C",X"07",X"5D",X"08",X"5D", + X"21",X"45",X"3E",X"45",X"05",X"5A",X"3F",X"44",X"3E",X"44",X"1F",X"44",X"26",X"5F",X"23",X"43", + X"14",X"5C",X"00",X"C0",X"1F",X"44",X"3E",X"44",X"22",X"45",X"1E",X"56",X"3B",X"41",X"3C",X"5E"); +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/BlackWidow_MiST/rtl/roms/bwidow_vec_rom4.vhd b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/roms/bwidow_vec_rom4.vhd new file mode 100644 index 00000000..8c2b0bdd --- /dev/null +++ b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/roms/bwidow_vec_rom4.vhd @@ -0,0 +1,278 @@ +library ieee; +use ieee.std_logic_1164.all,ieee.numeric_std.all; + +entity bwidow_vec_rom4 is +port ( + clk : in std_logic; + addr : in std_logic_vector(11 downto 0); + data : out std_logic_vector(7 downto 0) +); +end entity; + +architecture prom of bwidow_vec_rom4 is + type rom is array(0 to 4095) of std_logic_vector(7 downto 0); + signal rom_data: rom := ( + X"08",X"5E",X"3A",X"40",X"3C",X"5D",X"06",X"5B",X"05",X"5A",X"23",X"44",X"20",X"46",X"02",X"58", + X"22",X"44",X"3F",X"45",X"01",X"44",X"24",X"5C",X"25",X"42",X"13",X"41",X"00",X"C0",X"02",X"43", + X"3D",X"46",X"25",X"43",X"1A",X"58",X"3C",X"42",X"3C",X"41",X"06",X"5B",X"3B",X"42",X"3B",X"5F", + X"03",X"58",X"03",X"59",X"24",X"43",X"22",X"45",X"1F",X"58",X"23",X"43",X"22",X"45",X"02",X"45", + X"23",X"59",X"24",X"40",X"15",X"46",X"00",X"C0",X"03",X"42",X"21",X"46",X"24",X"42",X"18",X"5A", + X"3D",X"44",X"3C",X"42",X"04",X"59",X"3C",X"44",X"3B",X"41",X"00",X"58",X"00",X"58",X"25",X"41", + X"24",X"44",X"1C",X"59",X"24",X"42",X"23",X"44",X"03",X"42",X"21",X"5A",X"24",X"5E",X"18",X"4A", + X"00",X"C0",X"04",X"41",X"23",X"45",X"24",X"40",X"17",X"5E",X"3E",X"45",X"3D",X"43",X"01",X"58", + X"3E",X"45",X"3C",X"43",X"1D",X"59",X"1D",X"58",X"25",X"5F",X"25",X"42",X"1A",X"5B",X"24",X"41", + X"24",X"42",X"04",X"41",X"3D",X"5A",X"25",X"5D",X"1C",X"4C",X"00",X"C0",X"04",X"41",X"24",X"42", + X"25",X"5E",X"16",X"42",X"21",X"45",X"3E",X"44",X"1E",X"58",X"20",X"46",X"3D",X"44",X"1B",X"5A", + X"1A",X"5B",X"24",X"5D",X"26",X"40",X"18",X"5E",X"24",X"5E",X"25",X"41",X"02",X"5F",X"3E",X"5C", + X"22",X"5B",X"01",X"4D",X"00",X"C0",X"03",X"5E",X"26",X"43",X"23",X"5B",X"18",X"46",X"22",X"44", + X"21",X"44",X"1B",X"5A",X"22",X"45",X"3F",X"45",X"18",X"5D",X"19",X"5D",X"23",X"5C",X"25",X"5E", + X"18",X"41",X"23",X"5D",X"25",X"5E",X"03",X"5E",X"3B",X"5D",X"20",X"5C",X"06",X"4B",X"00",X"C0", + X"02",X"5D",X"26",X"5F",X"22",X"5C",X"1A",X"48",X"24",X"43",X"22",X"44",X"19",X"5C",X"24",X"44", + X"21",X"45",X"18",X"40",X"18",X"40",X"21",X"5B",X"24",X"5C",X"19",X"44",X"22",X"5C",X"24",X"5D", + X"02",X"5D",X"3A",X"5F",X"3E",X"5C",X"0A",X"48",X"00",X"C0",X"1F",X"5C",X"27",X"5D",X"20",X"5C", + X"1E",X"49",X"25",X"42",X"23",X"43",X"18",X"5F",X"25",X"42",X"23",X"44",X"19",X"43",X"18",X"43", + X"3F",X"5B",X"22",X"5B",X"1B",X"46",X"21",X"5C",X"22",X"5C",X"01",X"5C",X"3A",X"43",X"3D",X"5B", + X"0C",X"44",X"00",X"C0",X"1F",X"5C",X"24",X"5C",X"3E",X"5B",X"02",X"4A",X"25",X"5F",X"24",X"42", + X"18",X"42",X"26",X"40",X"24",X"43",X"1A",X"45",X"1B",X"46",X"3D",X"5C",X"20",X"5A",X"1E",X"48", + X"3E",X"5C",X"21",X"5B",X"1F",X"5E",X"3C",X"42",X"3B",X"5E",X"0D",X"5F",X"00",X"C0",X"1E",X"5D", + X"21",X"5A",X"3D",X"5D",X"06",X"48",X"24",X"5E",X"24",X"5F",X"1A",X"45",X"25",X"5E",X"25",X"41", + X"1D",X"48",X"1D",X"47",X"3C",X"5D",X"3E",X"5B",X"01",X"48",X"3D",X"5D",X"3E",X"5B",X"1E",X"5D", + X"3D",X"45",X"3C",X"40",X"0B",X"5A",X"00",X"C0",X"1D",X"5E",X"3F",X"5A",X"3C",X"5E",X"08",X"46", + X"23",X"5C",X"24",X"5E",X"1C",X"47",X"24",X"5C",X"25",X"5F",X"00",X"48",X"00",X"48",X"3B",X"5F", + X"3C",X"5C",X"04",X"47",X"3C",X"5E",X"3D",X"5C",X"1D",X"5E",X"3F",X"46",X"3C",X"42",X"08",X"56", + X"00",X"C0",X"1C",X"41",X"3D",X"59",X"3C",X"40",X"09",X"42",X"22",X"5B",X"23",X"5D",X"1F",X"48", + X"22",X"5B",X"24",X"5D",X"03",X"47",X"03",X"48",X"3B",X"41",X"3B",X"5E",X"06",X"45",X"3C",X"5F", + X"3C",X"5E",X"1C",X"5F",X"21",X"46",X"3D",X"43",X"04",X"54",X"00",X"C0",X"1C",X"41",X"3C",X"5C", + X"3B",X"42",X"0A",X"5E",X"3F",X"5B",X"22",X"5C",X"02",X"48",X"20",X"5A",X"23",X"5C",X"05",X"46", + X"06",X"45",X"3C",X"43",X"3A",X"40",X"08",X"42",X"3C",X"42",X"3B",X"5F",X"1C",X"41",X"24",X"44", + X"3E",X"45",X"1F",X"53",X"00",X"C0",X"1D",X"42",X"3A",X"5F",X"3D",X"43",X"08",X"5A",X"3E",X"5C", + X"3F",X"5C",X"05",X"46",X"3E",X"5B",X"21",X"5B",X"08",X"43",X"07",X"43",X"3D",X"44",X"3B",X"42", + X"08",X"5F",X"3D",X"43",X"3B",X"42",X"1B",X"42",X"27",X"43",X"20",X"44",X"1A",X"55",X"00",X"C0", + X"1E",X"43",X"36",X"57",X"3F",X"5C",X"27",X"5E",X"26",X"4C",X"26",X"54",X"27",X"42",X"3F",X"44", + X"36",X"49",X"1E",X"5D",X"00",X"C0",X"1F",X"44",X"34",X"5D",X"3D",X"5B",X"26",X"5B",X"2A",X"49", + X"3F",X"53",X"29",X"5F",X"21",X"44",X"3A",X"4C",X"1D",X"5E",X"00",X"C0",X"1F",X"44",X"34",X"40", + X"3D",X"5E",X"23",X"5A",X"2D",X"44",X"3C",X"53",X"26",X"5D",X"22",X"43",X"20",X"4E",X"1C",X"5F", + X"00",X"C0",X"02",X"43",X"34",X"46",X"3C",X"5F",X"21",X"59",X"2D",X"5F",X"37",X"56",X"25",X"5A", + X"23",X"43",X"25",X"4E",X"1C",X"5F",X"00",X"C0",X"03",X"42",X"37",X"4A",X"3C",X"41",X"3E",X"59", + X"2C",X"5A",X"34",X"5A",X"22",X"59",X"24",X"41",X"29",X"4A",X"1D",X"42",X"00",X"C0",X"04",X"41", + X"3B",X"4C",X"3D",X"43",X"3B",X"5A",X"29",X"56",X"33",X"41",X"3F",X"57",X"24",X"5F",X"2C",X"46", + X"1E",X"43",X"00",X"C0",X"04",X"41",X"20",X"4C",X"3E",X"43",X"3A",X"5D",X"24",X"53",X"33",X"44", + X"3D",X"5A",X"23",X"5E",X"2C",X"40",X"01",X"44",X"00",X"C0",X"03",X"5E",X"26",X"4C",X"3F",X"44", + X"37",X"5F",X"21",X"53",X"36",X"49",X"3A",X"5B",X"23",X"5D",X"2C",X"5B",X"01",X"44",X"00",X"C0", + X"02",X"5D",X"2A",X"49",X"21",X"44",X"39",X"42",X"3A",X"54",X"3A",X"4C",X"39",X"5E",X"21",X"5C", + X"2A",X"57",X"02",X"43",X"00",X"C0",X"1F",X"5C",X"2E",X"45",X"23",X"43",X"3A",X"45",X"36",X"57", + X"3F",X"4D",X"39",X"41",X"3F",X"5C",X"26",X"54",X"03",X"42",X"00",X"C0",X"1F",X"5C",X"2E",X"40", + X"23",X"42",X"3D",X"46",X"33",X"5C",X"24",X"4D",X"3A",X"43",X"3E",X"5D",X"20",X"54",X"04",X"5F", + X"00",X"C0",X"1E",X"5D",X"2C",X"5A",X"24",X"41",X"3F",X"49",X"33",X"5F",X"29",X"4A",X"3B",X"46", + X"3B",X"5D",X"3D",X"54",X"04",X"5F",X"00",X"C0",X"1D",X"5E",X"29",X"56",X"24",X"5F",X"22",X"47", + X"34",X"46",X"2C",X"46",X"3E",X"47",X"3C",X"5F",X"37",X"56",X"03",X"5E",X"00",X"C0",X"1C",X"41", + X"23",X"52",X"25",X"5D",X"25",X"46",X"37",X"4A",X"2D",X"41",X"21",X"47",X"3C",X"41",X"34",X"5A", + X"02",X"5D",X"00",X"C0",X"1C",X"41",X"20",X"52",X"22",X"5D",X"26",X"43",X"3C",X"4D",X"2D",X"5C", + X"23",X"46",X"3D",X"42",X"32",X"40",X"01",X"5C",X"00",X"C0",X"1D",X"42",X"3A",X"54",X"21",X"5C", + X"27",X"41",X"21",X"4D",X"2A",X"57",X"26",X"45",X"3D",X"45",X"32",X"43",X"01",X"5C",X"00",X"C0", + X"1E",X"43",X"34",X"5A",X"3F",X"5C",X"27",X"5E",X"28",X"49",X"28",X"57",X"27",X"42",X"3F",X"44", + X"34",X"46",X"1E",X"5D",X"00",X"C0",X"1F",X"44",X"33",X"5F",X"3D",X"5E",X"26",X"5A",X"2B",X"45", + X"24",X"55",X"27",X"5F",X"21",X"44",X"37",X"4A",X"1D",X"5E",X"00",X"C0",X"1F",X"44",X"35",X"44", + X"3C",X"5E",X"24",X"5B",X"2C",X"5F",X"3F",X"54",X"27",X"5C",X"22",X"44",X"3C",X"4D",X"1C",X"5F", + X"00",X"C0",X"02",X"43",X"36",X"49",X"3C",X"5F",X"21",X"59",X"2B",X"5C",X"3B",X"55",X"24",X"5A", + X"24",X"43",X"21",X"4F",X"1C",X"5F",X"00",X"C0",X"03",X"42",X"3A",X"4C",X"3C",X"41",X"3E",X"59", + X"29",X"58",X"37",X"58",X"22",X"59",X"24",X"41",X"26",X"4C",X"1D",X"42",X"00",X"C0",X"04",X"41", + X"3F",X"4D",X"3C",X"43",X"3C",X"5A",X"25",X"55",X"35",X"5C",X"3F",X"59",X"24",X"5F",X"2A",X"49", + X"1E",X"43",X"00",X"C0",X"04",X"41",X"24",X"4B",X"3E",X"44",X"39",X"5C",X"21",X"54",X"34",X"41", + X"3C",X"59",X"24",X"5E",X"2B",X"44",X"01",X"44",X"00",X"C0",X"03",X"5E",X"29",X"4A",X"3F",X"44", + X"39",X"5F",X"3C",X"55",X"35",X"45",X"3A",X"5C",X"23",X"5C",X"2D",X"5F",X"01",X"44",X"00",X"C0", + X"02",X"5D",X"2C",X"46",X"21",X"44",X"39",X"42",X"38",X"57",X"38",X"49",X"39",X"5E",X"21",X"5C", + X"2C",X"5A",X"02",X"43",X"00",X"C0",X"1F",X"5C",X"2F",X"41",X"23",X"44",X"3A",X"44",X"35",X"5B", + X"3C",X"4B",X"39",X"41",X"3F",X"5C",X"29",X"56",X"03",X"42",X"00",X"C0",X"1F",X"5C",X"2D",X"5C", + X"24",X"42",X"3C",X"47",X"34",X"5F",X"3F",X"4C",X"3B",X"44",X"3E",X"5C",X"24",X"55",X"04",X"5F", + X"00",X"C0",X"1E",X"5D",X"2A",X"57",X"24",X"41",X"3F",X"47",X"35",X"44",X"25",X"4B",X"3A",X"46", + X"3E",X"5D",X"3F",X"53",X"04",X"5F",X"00",X"C0",X"1D",X"5E",X"26",X"54",X"24",X"5F",X"22",X"47", + X"37",X"48",X"29",X"48",X"3E",X"47",X"3C",X"5F",X"3A",X"54",X"03",X"5E",X"00",X"C0",X"1C",X"41", + X"21",X"51",X"22",X"5D",X"26",X"46",X"3B",X"4B",X"2B",X"44",X"21",X"47",X"3C",X"41",X"36",X"57", + X"02",X"5D",X"00",X"C0",X"1C",X"41",X"3C",X"53",X"22",X"5C",X"25",X"44",X"21",X"4C",X"2C",X"41", + X"24",X"45",X"3C",X"42",X"33",X"5C",X"01",X"5C",X"00",X"C0",X"1D",X"42",X"37",X"56",X"21",X"5C", + X"27",X"41",X"24",X"4B",X"2B",X"5B",X"26",X"46",X"3D",X"42",X"31",X"41",X"01",X"5C",X"00",X"C0", + X"1E",X"43",X"33",X"5D",X"3E",X"5C",X"26",X"5D",X"2B",X"47",X"2B",X"59",X"26",X"43",X"3E",X"44", + X"33",X"43",X"1E",X"5D",X"00",X"C0",X"1F",X"44",X"33",X"42",X"3D",X"5D",X"24",X"5B",X"2D",X"42", + X"27",X"55",X"27",X"41",X"20",X"44",X"35",X"48",X"1D",X"5E",X"00",X"C0",X"FE",X"00",X"1F",X"44", + X"36",X"47",X"3C",X"5E",X"22",X"5A",X"2D",X"5D",X"23",X"53",X"26",X"5E",X"22",X"44",X"39",X"4C", + X"1C",X"5F",X"00",X"C0",X"02",X"43",X"38",X"4B",X"3C",X"40",X"3F",X"59",X"2B",X"59",X"3E",X"53", + X"25",X"5C",X"23",X"43",X"3E",X"4F",X"1C",X"5F",X"00",X"C0",X"03",X"42",X"3D",X"4D",X"3C",X"42", + X"3D",X"5A",X"27",X"55",X"39",X"55",X"23",X"5A",X"24",X"42",X"23",X"4D",X"1D",X"42",X"00",X"C0", + X"04",X"41",X"22",X"4D",X"3D",X"43",X"3B",X"5C",X"22",X"53",X"35",X"59",X"21",X"59",X"24",X"40", + X"28",X"4B",X"1E",X"43",X"00",X"C0",X"04",X"41",X"27",X"4A",X"3E",X"44",X"3A",X"5E",X"3D",X"53", + X"33",X"5D",X"3E",X"5A",X"24",X"5E",X"2A",X"47",X"01",X"44",X"00",X"C0",X"03",X"5E",X"2B",X"48", + X"20",X"44",X"39",X"41",X"39",X"55",X"33",X"42",X"3C",X"5B",X"23",X"5D",X"2D",X"42",X"01",X"44", + X"00",X"C0",X"02",X"5D",X"2D",X"43",X"22",X"44",X"3A",X"43",X"35",X"59",X"35",X"47",X"3A",X"5D", + X"22",X"5C",X"2D",X"5D",X"02",X"43",X"00",X"C0",X"1F",X"5C",X"2F",X"5E",X"23",X"43",X"3C",X"45", + X"33",X"5E",X"39",X"4B",X"39",X"5F",X"20",X"5C",X"2B",X"58",X"03",X"42",X"00",X"C0",X"1F",X"5C", + X"2C",X"59",X"24",X"42",X"3E",X"46",X"33",X"43",X"3D",X"4D",X"3A",X"42",X"3E",X"5C",X"27",X"56", + X"04",X"5F",X"00",X"C0",X"1E",X"5D",X"28",X"55",X"24",X"40",X"21",X"47",X"35",X"47",X"22",X"4D", + X"3B",X"44",X"3D",X"5D",X"22",X"53",X"04",X"5F",X"00",X"C0",X"1D",X"5E",X"23",X"53",X"24",X"5E", + X"23",X"46",X"39",X"4B",X"27",X"4B",X"3D",X"46",X"3C",X"5E",X"3D",X"53",X"03",X"5E",X"00",X"C0", + X"1C",X"41",X"3E",X"51",X"23",X"5D",X"25",X"44",X"3E",X"4D",X"2B",X"47",X"3F",X"47",X"3C",X"40", + X"38",X"55",X"02",X"5D",X"00",X"C0",X"1C",X"41",X"39",X"54",X"22",X"5C",X"26",X"42",X"23",X"4D", + X"2D",X"43",X"22",X"46",X"3C",X"42",X"34",X"59",X"01",X"5C",X"00",X"C0",X"1D",X"42",X"35",X"58", + X"20",X"5C",X"27",X"5F",X"27",X"4B",X"2D",X"5E",X"24",X"45",X"3D",X"43",X"31",X"5E",X"01",X"5C", + X"00",X"C0",X"A0",X"A7",X"60",X"A7",X"39",X"BB",X"8B",X"BB",X"E3",X"BB",X"39",X"BC",X"AE",X"BC", + X"4D",X"BD",X"00",X"60",X"3F",X"5F",X"C4",X"60",X"24",X"40",X"22",X"5F",X"21",X"5E",X"20",X"5F", + X"3B",X"5E",X"3B",X"42",X"20",X"41",X"21",X"42",X"22",X"41",X"87",X"60",X"3D",X"40",X"3D",X"5F", + X"3F",X"5F",X"39",X"40",X"3C",X"43",X"20",X"42",X"C4",X"60",X"29",X"45",X"29",X"40",X"22",X"5F", + X"22",X"41",X"29",X"40",X"29",X"5B",X"87",X"60",X"20",X"5E",X"3C",X"5D",X"35",X"40",X"00",X"60", + X"3B",X"4F",X"C4",X"60",X"37",X"BD",X"C4",X"60",X"24",X"44",X"23",X"41",X"00",X"60",X"3F",X"5E", + X"C4",X"60",X"3F",X"40",X"3B",X"5D",X"00",X"60",X"D6",X"1F",X"F8",X"3F",X"C2",X"60",X"3F",X"41", + X"3F",X"5F",X"3F",X"40",X"3E",X"43",X"3F",X"40",X"3F",X"5F",X"00",X"60",X"22",X"5E",X"C2",X"60", + X"21",X"5F",X"21",X"40",X"00",X"60",X"33",X"4C",X"C2",X"60",X"21",X"40",X"21",X"5E",X"23",X"40", + X"21",X"42",X"3B",X"40",X"00",X"60",X"25",X"40",X"87",X"60",X"2F",X"40",X"C2",X"60",X"21",X"5E", + X"23",X"40",X"21",X"42",X"3B",X"40",X"00",X"60",X"25",X"40",X"87",X"60",X"2E",X"40",X"00",X"60", + X"FC",X"1F",X"D8",X"3F",X"00",X"C0",X"00",X"60",X"20",X"4C",X"C4",X"60",X"21",X"43",X"22",X"43", + X"22",X"40",X"00",X"60",X"3F",X"5E",X"C4",X"60",X"3F",X"40",X"3D",X"5C",X"37",X"BD",X"00",X"60", + X"EC",X"1F",X"28",X"20",X"C4",X"60",X"3C",X"43",X"38",X"44",X"3D",X"40",X"3D",X"5F",X"3E",X"5E", + X"3E",X"42",X"3D",X"41",X"3D",X"40",X"38",X"5C",X"3C",X"5D",X"87",X"60",X"2F",X"43",X"25",X"5E", + X"25",X"42",X"2F",X"5D",X"00",X"60",X"34",X"5A",X"C2",X"60",X"21",X"41",X"20",X"41",X"3F",X"41", + X"3E",X"40",X"3F",X"5F",X"00",X"60",X"36",X"40",X"C2",X"60",X"3F",X"41",X"3E",X"40",X"3F",X"5F", + X"20",X"5F",X"21",X"5F",X"00",X"60",X"34",X"46",X"87",X"60",X"20",X"5E",X"28",X"5C",X"24",X"40", + X"24",X"42",X"00",X"60",X"28",X"40",X"87",X"60",X"24",X"5E",X"24",X"40",X"28",X"44",X"20",X"42", + X"00",X"60",X"F8",X"1F",X"E0",X"3F",X"C4",X"60",X"21",X"5E",X"20",X"5F",X"3B",X"5E",X"3B",X"42", + X"20",X"41",X"21",X"42",X"22",X"41",X"24",X"40",X"22",X"5F",X"00",X"60",X"3E",X"59",X"C2",X"60", + X"3F",X"40",X"3F",X"5F",X"3F",X"40",X"3D",X"42",X"3E",X"5F",X"00",X"60",X"22",X"5F",X"C2",X"60", + X"21",X"5F",X"22",X"40",X"00",X"C0",X"00",X"60",X"20",X"4C",X"C4",X"60",X"20",X"43",X"22",X"43", + X"22",X"41",X"00",X"60",X"3F",X"5D",X"C4",X"60",X"3E",X"5F",X"3F",X"5D",X"37",X"BD",X"00",X"60", + X"20",X"5A",X"C4",X"60",X"23",X"43",X"25",X"40",X"28",X"5C",X"24",X"5D",X"87",X"60",X"34",X"45", + X"3B",X"40",X"3D",X"5E",X"3D",X"42",X"3B",X"40",X"34",X"5B",X"C4",X"60",X"24",X"43",X"28",X"44", + X"25",X"40",X"23",X"5D",X"00",X"60",X"25",X"57",X"C2",X"60",X"20",X"41",X"21",X"41",X"22",X"40", + X"21",X"5E",X"3F",X"5F",X"00",X"60",X"33",X"41",X"C2",X"60",X"20",X"41",X"3F",X"41",X"3E",X"40", + X"3F",X"5E",X"21",X"5F",X"00",X"60",X"23",X"41",X"87",X"60",X"3C",X"5E",X"3D",X"40",X"3D",X"41", + X"3B",X"44",X"20",X"42",X"00",X"60",X"00",X"00",X"50",X"20",X"87",X"60",X"20",X"5E",X"3B",X"5C", + X"3D",X"5F",X"3D",X"40",X"3C",X"42",X"C4",X"60",X"20",X"5E",X"3B",X"5E",X"3B",X"42",X"20",X"42", + X"22",X"42",X"26",X"40",X"22",X"5E",X"00",X"60",X"20",X"59",X"C2",X"60",X"3E",X"5F",X"3D",X"41", + X"3D",X"5F",X"3E",X"41",X"00",X"60",X"23",X"5E",X"C2",X"60",X"24",X"40",X"00",X"60",X"3E",X"4C", + X"00",X"C0",X"00",X"60",X"20",X"4F",X"C4",X"60",X"20",X"44",X"21",X"43",X"00",X"60",X"21",X"5E", + X"C4",X"60",X"3F",X"5E",X"3F",X"5D",X"23",X"40",X"27",X"5D",X"25",X"5D",X"26",X"5A",X"21",X"5D", + X"22",X"41",X"00",X"60",X"3E",X"5F",X"C4",X"60",X"20",X"5E",X"3B",X"59",X"32",X"5A",X"3A",X"40", + X"32",X"46",X"3B",X"47",X"20",X"42",X"3E",X"41",X"00",X"60",X"22",X"5F",X"C4",X"60",X"21",X"43", + X"26",X"46",X"25",X"43",X"27",X"43",X"23",X"40",X"00",X"60",X"20",X"5D",X"87",X"60",X"3E",X"41", + X"3E",X"40",X"3B",X"5E",X"39",X"5A",X"3E",X"5D",X"20",X"5D",X"23",X"5E",X"23",X"5E",X"22",X"40", + X"25",X"41",X"00",X"60",X"2A",X"40",X"87",X"60",X"25",X"5F",X"22",X"40",X"23",X"42",X"23",X"42", + X"20",X"43",X"3E",X"43",X"39",X"46",X"3B",X"42",X"3E",X"40",X"3E",X"5F",X"00",X"60",X"23",X"53", + X"C2",X"60",X"21",X"41",X"22",X"40",X"21",X"5F",X"20",X"5E",X"3E",X"5F",X"3F",X"41",X"00",X"60", + X"38",X"40",X"C2",X"60",X"3F",X"5F",X"3E",X"41",X"20",X"42",X"21",X"41",X"22",X"40",X"21",X"5F", + X"C4",X"60",X"22",X"42",X"22",X"40",X"22",X"5E",X"21",X"5F",X"20",X"5D",X"3C",X"5E",X"3C",X"42", + X"20",X"43",X"21",X"41",X"00",X"60",X"3F",X"57",X"C2",X"60",X"23",X"41",X"22",X"40",X"23",X"5F", + X"20",X"5F",X"3D",X"5E",X"3E",X"40",X"3D",X"42",X"20",X"41",X"00",X"60",X"21",X"5E",X"C4",X"60", + X"21",X"41",X"21",X"40",X"21",X"5F",X"21",X"41",X"21",X"40",X"21",X"5F",X"00",X"60",X"21",X"5F", + X"3E",X"5F",X"3C",X"40",X"3E",X"41",X"00",X"60",X"24",X"4D",X"00",X"C0",X"00",X"60",X"26",X"00", + X"00",X"20",X"C4",X"60",X"3F",X"48",X"00",X"60",X"22",X"5E",X"C4",X"60",X"3F",X"5A",X"21",X"40", + X"24",X"5F",X"24",X"5D",X"2A",X"52",X"21",X"5E",X"24",X"42",X"00",X"60",X"3C",X"5E",X"C4",X"60", + X"20",X"5D",X"3C",X"59",X"35",X"59",X"3C",X"5E",X"3E",X"40",X"3C",X"42",X"35",X"47",X"3C",X"47", + X"20",X"43",X"3C",X"42",X"00",X"60",X"24",X"5E",X"C4",X"60",X"21",X"42",X"2A",X"4E",X"24",X"43", + X"24",X"41",X"21",X"40",X"00",X"60",X"3F",X"5F",X"87",X"60",X"21",X"5F",X"21",X"41",X"00",X"60", + X"3F",X"5C",X"87",X"60",X"3E",X"42",X"3E",X"40",X"3D",X"5E",X"3B",X"57",X"3E",X"5B",X"20",X"5C", + X"23",X"5C",X"22",X"40",X"27",X"44",X"00",X"60",X"24",X"40",X"87",X"60",X"27",X"5C",X"22",X"40", + X"23",X"44",X"20",X"44",X"3E",X"45",X"3B",X"49",X"3D",X"42",X"3E",X"40",X"3E",X"5E",X"00",X"60", + X"DC",X"1F",X"04",X"20",X"C2",X"60",X"20",X"42",X"21",X"41",X"21",X"40",X"21",X"5F",X"20",X"5E", + X"3F",X"5F",X"00",X"60",X"22",X"5F",X"C5",X"60",X"22",X"42",X"20",X"43",X"3D",X"43",X"3E",X"40", + X"3E",X"5E",X"00",X"60",X"3E",X"40",X"C5",X"60",X"3E",X"42",X"3E",X"40",X"3D",X"5D",X"20",X"5D", + X"22",X"5E",X"00",X"60",X"22",X"41",X"C2",X"60",X"3F",X"41",X"20",X"42",X"21",X"41",X"21",X"40", + X"21",X"5F",X"20",X"5E",X"C4",X"60",X"21",X"44",X"21",X"41",X"21",X"5F",X"21",X"5C",X"20",X"5D", + X"3E",X"5D",X"3E",X"43",X"20",X"43",X"00",X"60",X"21",X"5A",X"C2",X"60",X"22",X"40",X"24",X"5B", + X"20",X"5F",X"3E",X"40",X"3E",X"41",X"3E",X"40",X"3E",X"5F",X"3E",X"40",X"20",X"41",X"24",X"45", + X"00",X"60",X"3E",X"5A",X"C4",X"60",X"3F",X"41",X"21",X"42",X"22",X"40",X"21",X"5F",X"21",X"41", + X"22",X"40",X"21",X"5E",X"3F",X"5F",X"00",X"60",X"20",X"00",X"FA",X"3F",X"00",X"C0",X"25",X"40", + X"26",X"5E",X"27",X"5C",X"23",X"5E",X"24",X"5B",X"20",X"5E",X"3D",X"5D",X"39",X"5C",X"3B",X"5E", + X"3B",X"5F",X"36",X"40",X"3B",X"41",X"3B",X"42",X"39",X"44",X"3D",X"43",X"20",X"42",X"24",X"45", + X"23",X"42",X"27",X"44",X"26",X"42",X"25",X"40",X"00",X"C0",X"00",X"60",X"02",X"00",X"D0",X"3F", + X"C4",X"60",X"36",X"5C",X"DA",X"1F",X"16",X"20",X"3F",X"40",X"26",X"00",X"E2",X"3F",X"21",X"43", + X"2A",X"44",X"24",X"5D",X"00",X"60",X"3C",X"43",X"C4",X"60",X"3F",X"41",X"37",X"44",X"DA",X"1F", + X"EA",X"3F",X"3F",X"40",X"2C",X"00",X"12",X"20",X"23",X"42",X"27",X"5D",X"20",X"5E",X"22",X"5C", + X"00",X"60",X"3E",X"46",X"C4",X"60",X"20",X"41",X"21",X"42",X"3C",X"45",X"E4",X"1F",X"DE",X"3F", + X"3F",X"40",X"24",X"00",X"24",X"20",X"23",X"40",X"25",X"5A",X"3D",X"5D",X"00",X"60",X"23",X"43", + X"C4",X"60",X"23",X"43",X"2A",X"45",X"29",X"42",X"2A",X"40",X"29",X"5E",X"2A",X"5B",X"26",X"5A", + X"00",X"60",X"3D",X"43",X"C4",X"60",X"25",X"46",X"23",X"40",X"DC",X"1F",X"24",X"20",X"3F",X"40", + X"1C",X"00",X"DE",X"3F",X"3C",X"5B",X"21",X"5E",X"20",X"5F",X"00",X"60",X"3E",X"5A",X"C4",X"60", + X"22",X"44",X"20",X"42",X"27",X"43",X"23",X"5E",X"D4",X"1F",X"12",X"20",X"3F",X"40",X"26",X"00", + X"EA",X"3F",X"37",X"5C",X"3F",X"5F",X"3C",X"5D",X"00",X"60",X"24",X"43",X"C4",X"60",X"2A",X"5C", + X"21",X"5D",X"DA",X"1F",X"E2",X"3F",X"3F",X"40",X"26",X"00",X"16",X"20",X"36",X"44",X"00",X"60", + X"FE",X"1F",X"D0",X"3F",X"00",X"C0",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"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"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"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"20",X"48",X"24",X"44",X"24",X"5C",X"20",X"58",X"18",X"44",X"28",X"40",X"04",X"5C",X"00",X"C0", + X"20",X"4C",X"26",X"40",X"22",X"5E",X"20",X"5E",X"3E",X"5E",X"3A",X"40",X"06",X"40",X"22",X"5E", + X"20",X"5E",X"3E",X"5E",X"3A",X"40",X"52",X"FE",X"20",X"4C",X"28",X"40",X"18",X"54",X"95",X"FE", + X"20",X"4C",X"24",X"40",X"24",X"5C",X"20",X"5C",X"3C",X"5C",X"3C",X"40",X"52",X"FE",X"28",X"40", + X"18",X"40",X"20",X"4C",X"28",X"40",X"1E",X"5A",X"3A",X"40",X"0C",X"5A",X"00",X"C0",X"20",X"4C", + X"28",X"40",X"20",X"5C",X"1C",X"5C",X"24",X"40",X"20",X"5C",X"51",X"FE",X"20",X"4C",X"00",X"5A", + X"28",X"40",X"00",X"46",X"AE",X"FE",X"28",X"40",X"18",X"4C",X"28",X"40",X"1C",X"40",X"20",X"54", + X"08",X"40",X"00",X"C0",X"00",X"44",X"24",X"5C",X"24",X"40",X"73",X"FE",X"20",X"4C",X"06",X"40", + X"3A",X"5A",X"26",X"5A",X"06",X"40",X"00",X"C0",X"00",X"4C",X"20",X"54",X"95",X"FE",X"20",X"4C", + X"24",X"5C",X"24",X"44",X"AE",X"FE",X"20",X"4C",X"28",X"54",X"73",X"FE",X"20",X"4C",X"28",X"40", + X"20",X"54",X"38",X"40",X"0C",X"40",X"00",X"C0",X"20",X"4C",X"28",X"40",X"20",X"5A",X"38",X"40", + X"25",X"FE",X"20",X"4C",X"28",X"40",X"20",X"58",X"3C",X"5C",X"3C",X"40",X"04",X"44",X"24",X"5C", + X"96",X"FE",X"20",X"4C",X"28",X"40",X"20",X"5A",X"38",X"40",X"02",X"40",X"26",X"5A",X"96",X"FE", + X"28",X"40",X"20",X"46",X"38",X"40",X"20",X"46",X"28",X"40",X"74",X"FE",X"00",X"4C",X"35",X"FE", + X"00",X"4C",X"20",X"54",X"28",X"40",X"20",X"4C",X"04",X"54",X"00",X"C0",X"00",X"4C",X"24",X"54", + X"24",X"4C",X"74",X"FE",X"00",X"4C",X"20",X"54",X"24",X"44",X"24",X"5C",X"73",X"FE",X"28",X"4C", + X"18",X"40",X"28",X"54",X"AF",X"FE",X"04",X"40",X"20",X"48",X"3C",X"44",X"08",X"40",X"3C",X"5C", + X"08",X"58",X"00",X"C0",X"00",X"4C",X"28",X"40",X"38",X"54",X"95",X"FE",X"04",X"4C",X"37",X"FE", + X"00",X"4C",X"28",X"40",X"20",X"5A",X"38",X"40",X"20",X"5A",X"28",X"40",X"04",X"40",X"00",X"C0", + X"00",X"4C",X"28",X"40",X"20",X"54",X"38",X"40",X"00",X"46",X"28",X"40",X"04",X"5A",X"00",X"C0", + X"00",X"4C",X"20",X"5A",X"28",X"40",X"00",X"46",X"AE",X"FE",X"00",X"46",X"28",X"40",X"20",X"5A", + X"38",X"40",X"20",X"4C",X"0C",X"54",X"00",X"C0",X"00",X"4C",X"28",X"40",X"20",X"54",X"04",X"40", + X"00",X"C0",X"20",X"4C",X"99",X"FE",X"08",X"46",X"38",X"40",X"20",X"46",X"AD",X"FE",X"A9",X"FF", + X"95",X"FE",X"05",X"00",X"02",X"00",X"21",X"43",X"3E",X"42",X"23",X"40",X"05",X"00",X"02",X"20", + X"FB",X"1F",X"02",X"20",X"23",X"40",X"3E",X"5E",X"21",X"5D",X"03",X"00",X"FA",X"3F",X"FD",X"1F", + X"FA",X"3F",X"FB",X"1F",X"0E",X"00",X"04",X"40",X"00",X"C0",X"00",X"42",X"20",X"48",X"22",X"42", + X"24",X"40",X"22",X"5E",X"20",X"58",X"3E",X"5E",X"3C",X"40",X"3E",X"42",X"06",X"42",X"3C",X"40", + X"20",X"44",X"24",X"40",X"06",X"58",X"00",X"C0",X"00",X"46",X"28",X"46",X"20",X"54",X"38",X"46", + X"0C",X"5A",X"00",X"C0",X"52",X"BE",X"4E",X"BE",X"8E",X"BE",X"90",X"BE",X"98",X"BE",X"A0",X"BE", + X"68",X"BE",X"A5",X"BE",X"AC",X"BE",X"B1",X"BE",X"B3",X"BE",X"00",X"BE",X"08",X"BE",X"14",X"BE", + X"18",X"BE",X"1F",X"BE",X"21",X"BE",X"27",X"BE",X"2E",X"BE",X"33",X"BE",X"3A",X"BE",X"3E",X"BE", + X"44",X"BE",X"47",X"BE",X"4B",X"BE",X"4E",X"BE",X"54",X"BE",X"59",X"BE",X"61",X"BE",X"68",X"BE", + X"6E",X"BE",X"70",X"BE",X"76",X"BE",X"7A",X"BE",X"7F",X"BE",X"83",X"BE",X"8A",X"BE",X"B9",X"BE", + X"B8",X"BE",X"B7",X"BE",X"CD",X"BE",X"DC",X"BE",X"00",X"C0",X"40",X"80",X"00",X"71",X"00",X"C0", + X"0D",X"BF",X"5E",X"1E",X"3E",X"1E",X"00",X"00",X"84",X"23",X"48",X"03",X"00",X"20",X"00",X"00", + X"7C",X"3C",X"B8",X"1C",X"00",X"20",X"00",X"C0",X"5E",X"1E",X"3E",X"1E",X"48",X"03",X"48",X"23", + X"C4",X"1F",X"3C",X"20",X"F4",X"1C",X"F4",X"3C",X"78",X"00",X"88",X"3F",X"D0",X"02",X"D0",X"22", + X"4C",X"1F",X"B4",X"20",X"6C",X"1D",X"6C",X"3D",X"F0",X"00",X"10",X"3F",X"58",X"02",X"58",X"22", + X"D4",X"1E",X"2C",X"21",X"E4",X"1D",X"E4",X"3D",X"68",X"01",X"98",X"3E",X"E0",X"01",X"E0",X"21", + X"5C",X"1E",X"A4",X"21",X"5C",X"1E",X"5C",X"3E",X"E0",X"01",X"20",X"3E",X"68",X"01",X"68",X"21", + X"E4",X"1D",X"1C",X"22",X"D4",X"1E",X"D4",X"3E",X"58",X"02",X"A8",X"3D",X"F0",X"00",X"F0",X"20", + X"6C",X"1D",X"94",X"22",X"4C",X"1F",X"4C",X"3F",X"D0",X"02",X"30",X"3D",X"78",X"00",X"78",X"20", + X"F4",X"1C",X"0C",X"23",X"C4",X"1F",X"C4",X"3F",X"48",X"03",X"B8",X"3C",X"01",X"1E",X"00",X"00", + X"14",X"71",X"E2",X"FE",X"10",X"00",X"00",X"1F",X"00",X"C0",X"00",X"00",X"00",X"E1",X"5A",X"BF", + X"00",X"00",X"00",X"C1",X"5A",X"BF",X"00",X"00",X"00",X"A1",X"5A",X"BF",X"00",X"00",X"00",X"81", + X"5A",X"BF",X"00",X"00",X"00",X"61",X"5A",X"BF",X"00",X"00",X"00",X"41",X"00",X"C0",X"17",X"60", + X"00",X"00",X"40",X"40",X"10",X"00",X"C0",X"1E",X"00",X"00",X"00",X"21",X"00",X"C0",X"B8",X"1C", + X"00",X"20",X"40",X"80",X"00",X"C0",X"00",X"00",X"84",X"23",X"40",X"80",X"00",X"C0",X"C7",X"60", + X"40",X"80",X"1C",X"FF",X"99",X"BF",X"00",X"70",X"C0",X"00",X"00",X"00",X"99",X"BF",X"25",X"40", + X"99",X"BF",X"40",X"1F",X"00",X"00",X"99",X"BF",X"25",X"40",X"99",X"BF",X"00",X"00",X"00",X"01", + X"99",X"BF",X"20",X"45",X"99",X"BF",X"00",X"00",X"00",X"1F",X"99",X"BF",X"20",X"45",X"40",X"80", + X"00",X"C0",X"87",X"60",X"40",X"80",X"40",X"80",X"00",X"C0",X"00",X"00",X"84",X"23",X"00",X"5F", + X"00",X"00",X"7C",X"3C",X"00",X"C0",X"40",X"80",X"00",X"71",X"87",X"60",X"20",X"00",X"3E",X"1E", + X"00",X"C0",X"04",X"4C",X"20",X"5B",X"04",X"5F",X"38",X"40",X"01",X"5F",X"26",X"40",X"FB",X"1F", + X"00",X"20",X"3A",X"40",X"FB",X"1F",X"00",X"20",X"26",X"40",X"05",X"40",X"00",X"C0",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"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"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"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/BlackWidow_MiST/rtl/roms/make_rom.bat b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/roms/make_rom.bat new file mode 100644 index 00000000..09f11b07 --- /dev/null +++ b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/roms/make_rom.bat @@ -0,0 +1,18 @@ +//copy /b 136017-101.d1 + 136017-102.ef1 + 136017-103.h1 + 136017-104.j1 + 136017-105.kl1 + 136017-106.m1 BWIDOW.ROM +//copy /b 136017-107.l7 + 136017-107.l7 + 136017-108.mn7 + 136017-109.np7 + 136017-110.r7 vec.rom +//make_vhdl_prom.exe BWIDOW.ROM bwidow_prog_rom.vhd +//make_vhdl_prom.exe vec.rom bwidow_vec_rom.vhd + +make_vhdl_prom.exe 136017-101.d1 bwidow_pgm_rom1.vhd +make_vhdl_prom.exe 136017-102.ef1 bwidow_pgm_rom2.vhd +make_vhdl_prom.exe 136017-103.h1 bwidow_pgm_rom3.vhd +make_vhdl_prom.exe 136017-104.j1 bwidow_pgm_rom4.vhd +make_vhdl_prom.exe 136017-105.kl1 bwidow_pgm_rom5.vhd +make_vhdl_prom.exe 136017-106.m1 bwidow_pgm_rom6.vhd + +make_vhdl_prom.exe 136017-107.l7 bwidow_vec_rom1.vhd +make_vhdl_prom.exe 136017-108.mn7 bwidow_vec_rom2.vhd +make_vhdl_prom.exe 136017-109.np7 bwidow_vec_rom3.vhd +make_vhdl_prom.exe 136017-110.r7 bwidow_vec_rom4.vhd + +pause \ No newline at end of file diff --git a/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/vecrom.vhd b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/vecrom.vhd new file mode 100644 index 00000000..e54dc2ac --- /dev/null +++ b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/vecrom.vhd @@ -0,0 +1,81 @@ +--Vector rom. Warning: roma is smaller and mirrored once. + +-- Black Widow arcade hardware implemented in an FPGA +-- (C) 2012 Jeroen Domburg (jeroen AT spritesmods.com) +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + + +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_ARITH.ALL; +use IEEE.STD_LOGIC_UNSIGNED.ALL; + +entity vecrom is + Port ( addr : in STD_LOGIC_VECTOR (13 downto 0); + data : out STD_LOGIC_VECTOR (7 downto 0); + clk : in STD_LOGIC + ); +end vecrom; + +architecture Behavioral of vecrom is + signal dataa: std_logic_vector(7 downto 0); + signal datab: std_logic_vector(7 downto 0); + signal datac: std_logic_vector(7 downto 0); + signal datad: std_logic_vector(7 downto 0); + +begin + +--136017-107.l7 2048 24576 0110 000000000000 +--blank 2048 26624 0110 100000000000 +--136017-108.mn7 4096 28672 0111 000000000000 +--136017-109.np7 4096 32768 1000 000000000000 +--136017-110.r7 4096 36864 1001 000000000000 + +roma: entity work.bwidow_vec_rom1 + port map ( + clk => clk, + addr => addr(10 downto 0), + data => dataa + ); + +romb: entity work.bwidow_vec_rom2 + port map ( + clk => clk, + addr => addr(11 downto 0), + data => datab + ); + +romc: entity work.bwidow_vec_rom3 + port map ( + clk => clk, + addr => addr(11 downto 0), + data => datac + ); + +romd: entity work.bwidow_vec_rom4 + port map ( + clk => clk, + addr => addr(11 downto 0), + data => datad + ); + +--Watch the weird inversion of romd and romb! + data <= dataa when addr(13 downto 12)="00" else --Mirrors once. + datab when addr(13 downto 12)="01" else + datac when addr(13 downto 12)="10" else + datad when addr(13 downto 12)="11" + else "00000000"; +end Behavioral; + diff --git a/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/vector_drawer.vhd b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/vector_drawer.vhd new file mode 100644 index 00000000..f25a6534 --- /dev/null +++ b/Arcade_MiST/Atari Vector/BlackWidow_MiST/rtl/vector_drawer.vhd @@ -0,0 +1,118 @@ +-- Draws vectors. Gets relative x and y directions and scale, and use these +-- to draw a vector from the starting point. It's supposed to be a workalike +-- for the Atari AVGs analog stuff plus timers plus normalizer, but this +-- implementation differs from it quite a bit. If anything it means the timing +-- probably is way off... hope the software doesn't mind. + +-- ToDo: implement something that's a bit closer to reality... +-- ToDo: blank when not actively moving + + +-- Black Widow arcade hardware implemented in an FPGA +-- (C) 2012 Jeroen Domburg (jeroen AT spritesmods.com) +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + + +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_ARITH.ALL; +use IEEE.STD_LOGIC_UNSIGNED.ALL; + +--use ieee_proposed.math_utility_pkg.all; +--use ieee_proposed.fixed_pkg.all; + + +entity vector_drawer is + Port ( clk : in STD_LOGIC; + clk_ena: in STD_LOGIC; + scale : in STD_LOGIC_VECTOR (12 downto 0); + rel_x : in STD_LOGIC_VECTOR (12 downto 0); + rel_y : in STD_LOGIC_VECTOR (12 downto 0); + zero: in STD_LOGIC; + draw : in STD_LOGIC; + done : out STD_LOGIC; + xout : out STD_LOGIC_VECTOR (9 downto 0); + yout : out STD_LOGIC_VECTOR (9 downto 0) + ); +end vector_drawer; + +architecture Behavioral of vector_drawer is + signal xpos: STD_LOGIC_VECTOR(25 downto 0); + signal ypos: STD_LOGIC_VECTOR(25 downto 0); + signal normrel_x : STD_LOGIC_VECTOR (12 downto 0); + signal normrel_y : STD_LOGIC_VECTOR (12 downto 0); + signal normscale : STD_LOGIC_VECTOR (12 downto 0); + signal itsdone: std_logic; + signal normsteps: STD_LOGIC_VECTOR(3 downto 0); + signal timer: STD_LOGIC_VECTOR(16 downto 0); +begin + process(clk) + begin + if clk'event and clk='1' then + if zero='1' then + xpos<=(others=>'0'); + ypos<=(others=>'0'); +-- itsdone<='1'; + --Remain at (0,0) for a while to give the beam a chance to actually zero out. + --Implemented by drawing a line with dx=dy=0. + normsteps<="0000"; + normrel_x<=(others=>'0'); + normrel_y<=(others=>'0'); + timer<=(others=>'0'); + normscale<="0000010000000"; + itsdone<='0'; + elsif itsdone='1' then + if draw='1' then + --restart drawing the vector + itsdone<='0'; + normsteps<="1111"; + normrel_x<=rel_x; + normrel_y<=rel_y; + normscale<=scale; + timer<=(others=>'0'); + end if; + elsif normsteps/="0000" then + --Normalize. + if normrel_x(12)=normrel_x(11) and normrel_y(12)=normrel_y(11) then --and normscale(0)='0' then + normsteps<=normsteps-"0001"; + normrel_x(12 downto 1)<=normrel_x(11 downto 0); + normrel_x(0)<='0'; + normrel_y(12 downto 1)<=normrel_y(11 downto 0); + normrel_y(0)<='0'; + normscale(11 downto 0)<=normscale(12 downto 1); + normscale(12)<='0'; + else + normsteps<="0000"; + end if; + else + if timer(16 downto 4)>=normscale then + itsdone<='1'; + else + xpos<=xpos+sxt(normrel_x, xpos'length); + ypos<=ypos+sxt(normrel_y, ypos'length); + --timer<=timer+"00000000000000001"; + --timer<=timer+"00000000000000010"; + timer<=timer+"00000000000000100"; + end if; + end if; + end if; + end process; + done <= itsdone; +-- xout <= xpos(23 downto 14); +-- yout <= ypos(23 downto 14); + xout <= xpos(22 downto 13); + yout <= ypos(22 downto 13); +end Behavioral; +