1
0
mirror of https://github.com/Gehstock/Mist_FPGA.git synced 2026-03-25 01:36:08 +00:00

add BlackWidow Project files

This commit is contained in:
Gehstock
2019-12-26 18:03:26 +01:00
parent 63e9d957d3
commit aa6795987b
29 changed files with 6325 additions and 0 deletions

View File

@@ -0,0 +1,6 @@
DATE = "19:48:06 May 24, 2017"
QUARTUS_VERSION = "16.0.2"
# Revisions
PROJECT_REVISION = "BlackWidow"

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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 <http://www.gnu.org/licenses/>.
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;

View File

@@ -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

View File

@@ -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 <http://www.gnu.org/licenses/>.
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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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 <http://www.gnu.org/licenses/>.
--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;

View File

@@ -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;

View File

@@ -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

View File

@@ -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 <http://www.gnu.org/licenses/>.
--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;

View File

@@ -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 <http://www.gnu.org/licenses/>.
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;

View File

@@ -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

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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

View File

@@ -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 <http://www.gnu.org/licenses/>.
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;

View File

@@ -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 <http://www.gnu.org/licenses/>.
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;