Initial import

git-svn-id: http://moon:8086/svn/vhdl/trunk@5 cc03376c-175c-47c8-b038-4cd826a8556b
This commit is contained in:
2008-08-23 08:20:30 +00:00
parent bfbeba5129
commit d3bd08bb52
160 changed files with 56260 additions and 0 deletions
+546
View File
@@ -0,0 +1,546 @@
--------------------------------------------------------------------------------
-- Company:
-- Engineer:
--
-- Create Date: 11:25:45 10/15/05
-- Design Name:
-- Module Name: char_gen - Behavioral
-- Project Name:
-- Target Device:
-- Tool versions:
-- Description:
--
-- Dependencies:
--
-- Revision:
-- Revision 0.01 - File Created
-- Additional Comments:
--
--------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
use work.vga_types.all;
entity char_gen is
Generic
(
tsvga : vga_timespec_t := ts_vga_800_600_72;
-- User supplied parameters
CHARACTER_SCALE : natural := 1;
CHAR_ROM_SIZE_X : natural := 8; -- Pixels
CHAR_ROM_SIZE_Y : natural := 16; -- Pixels
CHAR_ROM_DEPTH : natural := 256; -- Chars
MAX_CHAR_PER_LINE : natural := 32; -- Chars
MAX_LINE_PER_FRAME : natural := 16; -- Chars
CHAR_SPACING_X : natural := 0; -- Pixels
CHAR_SPACING_Y : natural := 0; -- Pixels
SCREEN_OFFSET_X : natural := 16; -- Pixels
SCREEN_OFFSET_Y : natural := 16 -- Pixels
);
Port
(
-- System signals
rst : in std_logic;
vga_clk : in std_logic;
sys_clk : in std_logic;
ce : in std_logic;
frame_pulse : in std_logic;
-- Host Signals
clr_screen : in std_logic;
clr_line : in std_logic;
ascii_data : in unsigned(7 downto 0);
ascii_data_we : in std_logic;
ascii_posy_we : in std_logic;
ascii_posx_we : in std_logic;
ready : out std_logic;
-- Control signals
pos_x : in natural range 0 to tsvga.ts_h.ncyc_scan-1;
pos_y : in natural range 0 to tsvga.ts_v.ncyc_scan-1;
-- Output
char_draw_en : out std_logic
);
end char_gen;
architecture Behavioral of char_gen is
constant A_RAM_ADDR_WIDTH : integer := 12;
constant A_RAM_DATA_WIDTH : integer := 8;
type offset_rom_t is array (0 to MAX_LINE_PER_FRAME-1) of unsigned(A_RAM_ADDR_WIDTH-1 downto 0);
function gen_offset_rom(num_char_per_line, num_lines : natural) return offset_rom_t is
variable result : offset_rom_t;
variable offset : unsigned(A_RAM_ADDR_WIDTH-1 downto 0) := (others => '0');
begin
for i in 0 to num_lines-1 loop
result(i) := offset;
offset := offset + to_unsigned(num_char_per_line, A_RAM_ADDR_WIDTH-1);
end loop;
return result;
end gen_offset_rom;
constant offset_rom : offset_rom_t := gen_offset_rom(MAX_CHAR_PER_LINE, MAX_LINE_PER_FRAME);
-- Calculated parameters
type cg_state_t is (cg_init, cg_ready, cg_clr_line, cg_clr_screen);
signal s, sn : cg_state_t;
constant CELL_SIZE_X : natural := (CHAR_ROM_SIZE_X+CHAR_SPACING_X)*CHARACTER_SCALE;
constant CELL_SIZE_Y : natural := (CHAR_ROM_SIZE_Y+CHAR_SPACING_Y)*CHARACTER_SCALE;
constant CHAR_SIZE_X : natural := CHAR_ROM_SIZE_X*CHARACTER_SCALE;
constant CHAR_SIZE_Y : natural := CHAR_ROM_SIZE_Y*CHARACTER_SCALE;
signal line_offset : natural range 0 to MAX_LINE_PER_FRAME-1;
signal cell_x_cnt : natural range 0 to MAX_CHAR_PER_LINE-1;
signal cell_y_cnt : natural range 0 to MAX_LINE_PER_FRAME-1;
signal char_x_cnt : natural range 0 to CELL_SIZE_X-1;
signal char_y_cnt : natural range 0 to CELL_SIZE_Y-1;
signal char_rom_row : unsigned(NextExpBaseTwo(CHAR_SIZE_Y)-1 downto 0);
signal char_rom_addr : unsigned(NextExpBaseTwo(CHAR_ROM_DEPTH*CHAR_ROM_SIZE_Y)-1 downto 0);
signal char_rom_data : unsigned(CHAR_ROM_SIZE_X-1 downto 0);
signal char_reg : unsigned((CHARACTER_SCALE*CHAR_ROM_SIZE_X)-1 downto 0);
signal a_addr_rd : unsigned(A_RAM_ADDR_WIDTH-1 downto 0);
signal a_addr_wr : unsigned(A_RAM_ADDR_WIDTH-1 downto 0);
signal a_data_rd : unsigned(A_RAM_DATA_WIDTH-1 downto 0);
signal a_data_wr : unsigned(A_RAM_DATA_WIDTH-1 downto 0);
signal a_ram_we : std_logic;
signal a_cnt : natural range 0 to 2**A_RAM_ADDR_WIDTH-1;
signal a_cnt_rst : std_logic;
signal a_cnt_en : std_logic;
signal csr_posx_reg : natural range 0 to MAX_CHAR_PER_LINE-1;
signal csr_posy_reg : natural range 0 to MAX_LINE_PER_FRAME-1;
signal a_data_reg : unsigned(A_RAM_DATA_WIDTH-1 downto 0);
signal a_data_we : std_logic;
signal csr_posx_overflow : std_logic;
signal csr_posx_cnt_din : natural range 0 to MAX_CHAR_PER_LINE-1;
signal csr_posx_cnt_set : std_logic;
signal csr_posx_cnt_en : std_logic;
signal csr_posy_overflow : std_logic;
signal csr_posy_cnt_din : natural range 0 to MAX_LINE_PER_FRAME-1;
signal csr_posy_cnt_set : std_logic;
signal csr_posy_cnt_en : std_logic;
signal line_addr : unsigned(A_RAM_ADDR_WIDTH-1 downto 0);
signal char_addr : unsigned(A_RAM_ADDR_WIDTH-1 downto 0);
-- Visible Cursor
constant CURSOR_BLINK_INTERVAL : natural := tsvga.nfps/2;
type cursor_rom_t is array (0 to 2*CHAR_ROM_SIZE_Y-1) of unsigned (CHAR_ROM_SIZE_X-1 downto 0);
constant cursor_rom : cursor_rom_t :=
(
-- Cursor off
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"11111111",
"11111111",
"11111111",
-- Cursor on
"00000000",
"00000000",
"11111111",
"11111111",
"11111111",
"11111111",
"11111111",
"11111111",
"11111111",
"11111111",
"11111111",
"11111111",
"11111111",
"00000000",
"00000000",
"00000000"
);
signal cursor_rom_addr : unsigned(NextExpBaseTwo(2*CHAR_ROM_SIZE_Y)-1 downto 0);
signal cursor_rom_data : unsigned(CHAR_ROM_SIZE_X-1 downto 0);
signal cursor_visible : std_logic;
signal cursor_cnt : natural range 0 to CURSOR_BLINK_INTERVAL-1;
signal csr_posx_synced : natural range 0 to MAX_CHAR_PER_LINE-1;
signal csr_posy_synced : natural range 0 to MAX_LINE_PER_FRAME-1;
-- Scrolling
signal scroll_offset : natural range 0 to MAX_CHAR_PER_LINE-1;
signal scroll_active : std_logic;
begin
a_addr_rd <= to_unsigned(cell_x_cnt, a_addr_rd'length) + offset_rom(line_offset);
line_addr <= offset_rom(csr_posy_reg);
char_addr <= to_unsigned(csr_posx_reg, char_addr'length);
char_rom_addr <= a_data_rd & char_rom_row(NextExpBaseTwo(CHAR_SIZE_Y)-1 downto (CHARACTER_SCALE-1));
cursor_rom_addr <= cursor_visible & char_rom_row(NextExpBaseTwo(CHAR_SIZE_Y)-1 downto (CHARACTER_SCALE-1));
inst_char_rom : entity work.char_rom
PORT MAP
(
CLK => vga_clk,
ADDR => char_rom_addr,
DATA => char_rom_data
);
inst_ascii_ram: entity work.dpram
GENERIC MAP (
addr_width => A_RAM_ADDR_WIDTH,
data_width => A_RAM_DATA_WIDTH
)
PORT MAP(
clka => sys_clk,
clkb => vga_clk,
en_a => '1',
en_b => '1',
we_a => a_ram_we,
addr_a => a_addr_wr,
addr_b => a_addr_rd,
din_a => a_data_wr,
dout_b => a_data_rd
);
---------------------------------------------------------------------------------------------
--- ASCII RAM control
---------------------------------------------------------------------------------------------
asci_ram_fsm:
process (s, a_cnt, clr_line, clr_screen, a_data_we, a_data_reg, char_addr, line_addr)
begin
sn <= s;
a_cnt_rst <= '0';
a_cnt_en <= '0';
a_ram_we <= '0';
a_data_wr <= a_data_reg;
a_addr_wr <= char_addr + line_addr;
ready <= '0';
case s is
when cg_init =>
sn <= cg_clr_screen;
a_cnt_rst <= '1';
when cg_ready =>
ready <= '1';
a_ram_we <= a_data_we;
if clr_screen = '1' then
a_cnt_rst <= '1';
sn <= cg_clr_screen;
elsif clr_line = '1' then
a_cnt_rst <= '1';
sn <= cg_clr_line;
end if;
when cg_clr_line =>
a_ram_we <= '1';
a_cnt_en <= '1';
a_data_wr <= to_unsigned(0, A_RAM_DATA_WIDTH);
a_addr_wr <= to_unsigned(a_cnt + to_integer(line_addr), A_RAM_ADDR_WIDTH);
if a_cnt = MAX_CHAR_PER_LINE-1 then
sn <= cg_ready;
end if;
when cg_clr_screen =>
a_ram_we <= '1';
a_cnt_en <= '1';
a_data_wr <= to_unsigned(0, A_RAM_DATA_WIDTH);
a_addr_wr <= to_unsigned(a_cnt, A_RAM_ADDR_WIDTH);
if a_cnt = (2**A_RAM_ADDR_WIDTH-1) then
sn <= cg_ready;
end if;
when others =>
sn <= cg_ready;
end case;
end process;
asci_ram_fsm_next: process (rst, sys_clk)
begin
if rst = '1' then
s <= cg_init;
elsif rising_edge(sys_clk) then
s <= sn;
end if;
end process;
---------------------------------------------------------------------------------------------
asci_ram_cnt: process (rst, sys_clk)
begin
if rst = '1' then
a_cnt <= 0;
elsif rising_edge(sys_clk) then
if a_cnt_rst = '1' then
a_cnt <= 0;
elsif a_cnt_en = '1' then
if a_cnt < (2**A_RAM_ADDR_WIDTH-1) then
a_cnt <= a_cnt + 1;
end if;
end if;
end if;
end process;
---------------------------------------------------------------------------------------------
asci_addr_reg: process (rst, sys_clk)
begin
if rst = '1' then
csr_posx_cnt_en <= '0';
csr_posx_cnt_set <= '0';
csr_posy_cnt_en <= '0';
csr_posy_cnt_set <= '0';
a_data_reg <= (others => '0');
a_data_we <= '0';
elsif rising_edge(sys_clk) then
a_data_we <= '0';
csr_posx_cnt_en <= '0';
csr_posx_cnt_set <= '0';
csr_posy_cnt_en <= '0';
csr_posy_cnt_set <= '0';
if ascii_posy_we = '1' then
csr_posy_cnt_din <= to_integer(ascii_data);
csr_posy_cnt_set <= '1';
elsif ascii_posx_we = '1' then
csr_posx_cnt_din <= to_integer(ascii_data);
csr_posx_cnt_set <= '1';
elsif ascii_data_we = '1' then
if ascii_data < X"20" then
if ascii_data = X"0D" then
csr_posx_cnt_din <= 0;
csr_posx_cnt_set <= '1';
elsif ascii_data = X"0A" then
csr_posy_cnt_en <= '1';
end if;
else
a_data_reg <= ascii_data - X"20";
a_data_we <= '1';
csr_posx_cnt_en <= '1';
end if;
end if;
end if;
end process;
asci_csr_posx_counter:
process (rst, sys_clk)
begin
if rst = '1' then
csr_posx_reg <= 0;
csr_posx_overflow <= '0';
elsif rising_edge(sys_clk) then
csr_posx_overflow <= '0';
if csr_posx_cnt_set = '1' then
csr_posx_reg <= csr_posx_cnt_din;
elsif csr_posx_cnt_en = '1' then
if csr_posx_reg < MAX_CHAR_PER_LINE-1 then
csr_posx_reg <= csr_posx_reg + 1;
else
csr_posx_reg <= 0;
csr_posx_overflow <= '1';
end if;
end if;
end if;
end process;
asci_csr_posy_counter:
process (rst, sys_clk)
begin
if rst = '1' then
csr_posy_reg <= 0;
csr_posy_overflow <= '0';
elsif rising_edge(sys_clk) then
csr_posy_overflow <= '0';
if csr_posy_cnt_set = '1' then
csr_posy_reg <= csr_posy_cnt_din;
elsif csr_posy_cnt_en = '1' or csr_posx_overflow = '1' then
if csr_posy_reg < MAX_LINE_PER_FRAME-1 then
csr_posy_reg <= csr_posy_reg + 1;
else
csr_posy_reg <= 0;
csr_posy_overflow <= '1';
end if;
end if;
end if;
end process;
scroll_gen: process (rst, sys_clk)
begin
if rst = '1' then
scroll_offset <= 0;
scroll_active <= '0';
elsif rising_edge(sys_clk) then
if clr_screen = '1' then
scroll_offset <= 0;
scroll_active <= '0';
elsif csr_posy_overflow = '1' then
scroll_active <= '1';
scroll_offset <= 1;
end if;
if (csr_posy_cnt_en = '1' or csr_posx_overflow = '1') and scroll_active = '1' then
scroll_offset <= scroll_offset + 1;
end if;
end if;
end process;
---------------------------------------------------------------------------------------------
--- Cursor generator
---------------------------------------------------------------------------------------------
proc_sync_csr_posx:
process(vga_clk)
variable p1, p2 : natural range 0 to MAX_CHAR_PER_LINE-1;
begin
if rising_edge(vga_clk) then
csr_posx_synced <= p2;
p2 := p1;
p1 := csr_posx_reg;
end if;
end process;
proc_sync_csr_posy:
process(vga_clk)
variable p1, p2 : natural range 0 to MAX_LINE_PER_FRAME-1;
begin
if rising_edge(vga_clk) then
csr_posy_synced <= p2;
p2 := p1;
p1 := csr_posy_reg;
end if;
end process;
csr_blink_cnt: process (rst, vga_clk)
begin
if rst = '1' then
cursor_cnt <= 0;
cursor_visible <= '0';
elsif rising_edge(vga_clk) then
if frame_pulse = '1' then
if cursor_cnt < CURSOR_BLINK_INTERVAL-1 then
cursor_cnt <= cursor_cnt + 1;
else
cursor_cnt <= 0;
cursor_visible <= not cursor_visible;
end if;
end if;
end if;
end process;
cursor_rom_read: process (vga_clk)
begin
if rising_edge(vga_clk) then
cursor_rom_data <= (others => '0');
if (cell_x_cnt = csr_posx_synced) and (line_offset = csr_posy_synced) then
cursor_rom_data <= cursor_rom(to_integer(cursor_rom_addr));
end if;
end if;
end process;
---------------------------------------------------------------------------------------------
--- Character generator
---------------------------------------------------------------------------------------------
char_rom_ctrl: process (vga_clk)
begin
if rising_edge(vga_clk) then
char_rom_row <= to_unsigned(char_y_cnt, char_rom_row'length);
end if;
end process;
---------------------------------------------------------------------------------------------
char_reg_ctrl: process (vga_clk)
begin
if rising_edge(vga_clk) and ce = '1' then
if char_x_cnt = 2 then -- +2 delay for ASCII-RAM access and CHAR-ROM access
for i in 0 to CHAR_ROM_SIZE_X-1 loop
for j in 0 to CHARACTER_SCALE-1 loop
char_reg(i*CHARACTER_SCALE + j) <= char_rom_data(i) xor cursor_rom_data(i);
end loop;
end loop;
else
char_reg <= char_reg(char_reg'left-1 downto 0) & '0';
end if;
end if;
end process;
---------------------------------------------------------------------------------------------
cg_ctrl: process (rst, vga_clk)
variable enable_x : std_logic;
variable enable_y : std_logic;
variable char_en : std_logic;
variable char_en2 : std_logic;
begin
if (rst = '1') then
enable_x := '0';
enable_y := '0';
line_offset <= 0;
cell_x_cnt <= 0;
cell_y_cnt <= 0;
char_x_cnt <= 0;
char_y_cnt <= 0;
char_en := '0';
elsif rising_edge(vga_clk) and ce = '1' then
char_draw_en <= char_en2 and char_reg(char_reg'left);
char_en2 := char_en;
char_en := '0';
if pos_y = SCREEN_OFFSET_Y then
enable_y := '1';
cell_y_cnt <= 0;
char_x_cnt <= 0;
line_offset <= scroll_offset;
end if;
if pos_x = SCREEN_OFFSET_X and enable_y = '1' then
enable_x := '1';
cell_x_cnt <= 0;
char_x_cnt <= 0;
elsif enable_x = '1' and enable_y = '1' then
if char_x_cnt < CELL_SIZE_X-1 then
char_x_cnt <= char_x_cnt + 1;
else
char_x_cnt <= 0;
if cell_x_cnt < MAX_CHAR_PER_LINE-1 then
cell_x_cnt <= cell_x_cnt + 1;
else
enable_x := '0';
if char_y_cnt < CELL_SIZE_Y-1 then
char_y_cnt <= char_y_cnt + 1;
else
char_y_cnt <= 0;
if cell_y_cnt < MAX_LINE_PER_FRAME-1 then
cell_y_cnt <= cell_y_cnt + 1;
else
enable_y := '0';
end if;
if line_offset < MAX_LINE_PER_FRAME-1 then
line_offset <= line_offset + 1;
else
line_offset <= 0;
end if;
end if;
end if;
end if;
if (char_x_cnt < CHAR_SIZE_X) and (char_y_cnt < CHAR_SIZE_Y) then
char_en := '1';
end if;
end if;
end if;
end process;
---------------------------------------------------------------------------------------------
end Behavioral;
+105
View File
@@ -0,0 +1,105 @@
--------------------------------------------------------------------------------
-- Company:
-- Engineer:
--
-- Create Date: 11:25:45 10/15/05
-- Design Name:
-- Module Name: vga_ctrl_core - Behavioral
-- Project Name:
-- Target Device:
-- Tool versions:
-- Description:
--
-- Dependencies:
--
-- Revision:
-- Revision 0.01 - File Created
-- Additional Comments:
--
--------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
use work.vga_types.all;
---- Uncomment the following library declaration if instantiating
---- any Xilinx primitives in this code.
Library UNISIM;
use UNISIM.vcomponents.all;
entity clkgen is
Generic
(
sys_freq : integer := 100E6;
tsvga : vga_timespec_t := ts_vga_800_600_72
);
Port
(
rst : in std_logic;
clk : in std_logic;
vga_clk : out std_logic;
dcm_locked : out std_logic
);
end clkgen;
architecture tech of clkgen is
signal vga_clk0 : std_logic;
signal dcm_clk0 : std_logic;
signal dcm_clk_fb : std_logic;
begin
-- Compnent instantiation
DCM_VGA_CLK_inst : DCM_BASE
generic map (
CLKDV_DIVIDE => 2.0, -- Divide by: 1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5
-- 7.0,7.5,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0 or 16.0
CLKFX_DIVIDE => DCM_FREQ_D(sys_freq, tsvga.f_pxl_clk), -- Can be any interger from 1 to 32
CLKFX_MULTIPLY => DCM_FREQ_M(sys_freq, tsvga.f_pxl_clk), -- Can be any integer from 2 to 32
CLKIN_DIVIDE_BY_2 => FALSE, -- TRUE/FALSE to enable CLKIN divide by two feature
CLKIN_PERIOD => DCM_PERIOD(sys_freq), -- Specify period of input clock in ns from 1.25 to 1000.00
CLKOUT_PHASE_SHIFT => "NONE", -- Specify phase shift mode of NONE or FIXED
CLK_FEEDBACK => "1X", -- Specify clock feedback of NONE or 1X
DCM_PERFORMANCE_MODE => "MAX_SPEED", -- Can be MAX_SPEED or MAX_RANGE
DESKEW_ADJUST => "SYSTEM_SYNCHRONOUS", -- SOURCE_SYNCHRONOUS, SYSTEM_SYNCHRONOUS or
-- an integer from 0 to 15
DFS_FREQUENCY_MODE => "LOW", -- LOW or HIGH frequency mode for frequency synthesis
DLL_FREQUENCY_MODE => "LOW", -- LOW, HIGH, or HIGH_SER frequency mode for DLL
DUTY_CYCLE_CORRECTION => TRUE, -- Duty cycle correction, TRUE or FALSE
FACTORY_JF => X"F0F0", -- FACTORY JF Values Suggested to be set to X"F0F0"
PHASE_SHIFT => 0, -- Amount of fixed phase shift from -255 to 1023
STARTUP_WAIT => FALSE) -- Delay configuration DONE until DCM LOCK, TRUE/FALSE
port map (
CLK0 => dcm_clk0, -- 0 degree DCM CLK ouptput
CLK180 => open, -- 180 degree DCM CLK output
CLK270 => open, -- 270 degree DCM CLK output
CLK2X => open, -- 2X DCM CLK output
CLK2X180 => open, -- 2X, 180 degree DCM CLK out
CLK90 => open, -- 90 degree DCM CLK output
CLKDV => open, -- Divided DCM CLK out (CLKDV_DIVIDE)
CLKFX => vga_clk0, -- DCM CLK synthesis out (M/D)
CLKFX180 => open, -- 180 degree CLK synthesis out
LOCKED => dcm_locked, -- DCM LOCK status output
CLKFB => dcm_clk_fb, -- DCM clock feedback
CLKIN => clk, -- Clock input (from IBUFG, BUFG or DCM)
RST => rst -- DCM asynchronous reset input
);
BUFG_dcm_clk_fb : BUFG
port map
(
O => dcm_clk_fb, -- Clock buffer output
I => dcm_clk0 -- Clock buffer input
);
BUFG_vga_clk : BUFG
port map
(
O => vga_clk, -- Clock buffer output
I => vga_clk0 -- Clock buffer input
);
end tech;
+79
View File
@@ -0,0 +1,79 @@
-------------------------------------------------------------------------
-- Project: JCPU, a portable 8-bit RISC CPU written in VHDL
-- This file: Dual-ported register file with asynchrous read
-- Copyright (C) 2007 J. Ahrensfeld
-- This library is free software; you can redistribute it and/or
-- modify it under the terms of the GNU Lesser General Public
-- License as published by the Free Software Foundation; either
-- version 2.1 of the License, or (at your option) any later version.
-- This library 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
-- Lesser General Public License for more details.
-- You should have received a copy of the GNU Lesser General Public
-- License along with this library; if not, write to the Free Software
-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-- For questions and ideas, please contact the author at jens@jayfield.org
-----------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.NUMERIC_STD.ALL;
entity dpram is
Generic
(
addr_width : integer := 3;
data_width : integer := 8
);
Port
(
clka : in STD_LOGIC;
clkb : in STD_LOGIC;
en_a : in STD_LOGIC;
en_b : in STD_LOGIC;
we_a : in STD_LOGIC;
addr_a : in unsigned (addr_width-1 downto 0);
addr_b : in unsigned (addr_width-1 downto 0);
din_a : in unsigned (data_width-1 downto 0);
dout_b : out unsigned (data_width-1 downto 0)
);
end dpram;
architecture Behavioral of dpram is
constant depth : integer := 2**addr_width;
type RAMtype is array (0 to depth-1) of unsigned (data_width-1 downto 0);
signal RAM : RAMtype;
begin
process (clka)
begin
if clka'event and clka = '1' then
if en_a = '1' then
if we_a = '1' then
RAM(to_integer(addr_a)) <= din_a;
end if;
end if;
end if;
end process;
process (clkb)
begin
if clkb'event and clkb = '1' then
if en_b = '1' then
dout_b <= RAM(to_integer(addr_b));
end if;
end if;
end process;
end Behavioral;
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+540
View File
@@ -0,0 +1,540 @@
-- generated with romgen v3.0 by MikeJ
library ieee;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
entity char_rom is
port (
CLK : in std_logic;
ADDR : in unsigned(11 downto 0);
DATA : out unsigned(7 downto 0)
);
end;
architecture RTL of char_rom is
type ROM_ARRAY is array(0 to 4095) of unsigned(7 downto 0);
constant ROM : ROM_ARRAY := (
x"3C",x"66",x"6E",x"6E",x"60",x"62",x"3C",x"00", -- 0x0000
x"18",x"3C",x"66",x"7E",x"66",x"66",x"66",x"00", -- 0x0008
x"7C",x"66",x"66",x"7C",x"66",x"66",x"7C",x"00", -- 0x0010
x"3C",x"66",x"60",x"60",x"60",x"66",x"3C",x"00", -- 0x0018
x"78",x"6C",x"66",x"66",x"66",x"6C",x"78",x"00", -- 0x0020
x"7E",x"60",x"60",x"78",x"60",x"60",x"7E",x"00", -- 0x0028
x"7E",x"60",x"60",x"78",x"60",x"60",x"60",x"00", -- 0x0030
x"3C",x"66",x"60",x"6E",x"66",x"66",x"3C",x"00", -- 0x0038
x"66",x"66",x"66",x"7E",x"66",x"66",x"66",x"00", -- 0x0040
x"3C",x"18",x"18",x"18",x"18",x"18",x"3C",x"00", -- 0x0048
x"1E",x"0C",x"0C",x"0C",x"0C",x"6C",x"38",x"00", -- 0x0050
x"66",x"6C",x"78",x"70",x"78",x"6C",x"66",x"00", -- 0x0058
x"60",x"60",x"60",x"60",x"60",x"60",x"7E",x"00", -- 0x0060
x"63",x"77",x"7F",x"6B",x"63",x"63",x"63",x"00", -- 0x0068
x"66",x"76",x"7E",x"7E",x"6E",x"66",x"66",x"00", -- 0x0070
x"3C",x"66",x"66",x"66",x"66",x"66",x"3C",x"00", -- 0x0078
x"7C",x"66",x"66",x"7C",x"60",x"60",x"60",x"00", -- 0x0080
x"3C",x"66",x"66",x"66",x"66",x"3C",x"0E",x"00", -- 0x0088
x"7C",x"66",x"66",x"7C",x"78",x"6C",x"66",x"00", -- 0x0090
x"3C",x"66",x"60",x"3C",x"06",x"66",x"3C",x"00", -- 0x0098
x"7E",x"18",x"18",x"18",x"18",x"18",x"18",x"00", -- 0x00A0
x"66",x"66",x"66",x"66",x"66",x"66",x"3C",x"00", -- 0x00A8
x"66",x"66",x"66",x"66",x"66",x"3C",x"18",x"00", -- 0x00B0
x"63",x"63",x"63",x"6B",x"7F",x"77",x"63",x"00", -- 0x00B8
x"66",x"66",x"3C",x"18",x"3C",x"66",x"66",x"00", -- 0x00C0
x"66",x"66",x"66",x"3C",x"18",x"18",x"18",x"00", -- 0x00C8
x"7E",x"06",x"0C",x"18",x"30",x"60",x"7E",x"00", -- 0x00D0
x"3C",x"30",x"30",x"30",x"30",x"30",x"3C",x"00", -- 0x00D8
x"0C",x"12",x"30",x"7C",x"30",x"62",x"FC",x"00", -- 0x00E0
x"3C",x"0C",x"0C",x"0C",x"0C",x"0C",x"3C",x"00", -- 0x00E8
x"00",x"18",x"3C",x"7E",x"18",x"18",x"18",x"18", -- 0x00F0
x"00",x"10",x"30",x"7F",x"7F",x"30",x"10",x"00", -- 0x00F8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0100
x"18",x"18",x"18",x"18",x"00",x"00",x"18",x"00", -- 0x0108
x"66",x"66",x"66",x"00",x"00",x"00",x"00",x"00", -- 0x0110
x"66",x"66",x"FF",x"66",x"FF",x"66",x"66",x"00", -- 0x0118
x"18",x"3E",x"60",x"3C",x"06",x"7C",x"18",x"00", -- 0x0120
x"62",x"66",x"0C",x"18",x"30",x"66",x"46",x"00", -- 0x0128
x"3C",x"66",x"3C",x"38",x"67",x"66",x"3F",x"00", -- 0x0130
x"06",x"0C",x"18",x"00",x"00",x"00",x"00",x"00", -- 0x0138
x"0C",x"18",x"30",x"30",x"30",x"18",x"0C",x"00", -- 0x0140
x"30",x"18",x"0C",x"0C",x"0C",x"18",x"30",x"00", -- 0x0148
x"00",x"66",x"3C",x"FF",x"3C",x"66",x"00",x"00", -- 0x0150
x"00",x"18",x"18",x"7E",x"18",x"18",x"00",x"00", -- 0x0158
x"00",x"00",x"00",x"00",x"00",x"18",x"18",x"30", -- 0x0160
x"00",x"00",x"00",x"7E",x"00",x"00",x"00",x"00", -- 0x0168
x"00",x"00",x"00",x"00",x"00",x"18",x"18",x"00", -- 0x0170
x"00",x"03",x"06",x"0C",x"18",x"30",x"60",x"00", -- 0x0178
x"3C",x"66",x"6E",x"76",x"66",x"66",x"3C",x"00", -- 0x0180
x"18",x"18",x"38",x"18",x"18",x"18",x"7E",x"00", -- 0x0188
x"3C",x"66",x"06",x"0C",x"30",x"60",x"7E",x"00", -- 0x0190
x"3C",x"66",x"06",x"1C",x"06",x"66",x"3C",x"00", -- 0x0198
x"06",x"0E",x"1E",x"66",x"7F",x"06",x"06",x"00", -- 0x01A0
x"7E",x"60",x"7C",x"06",x"06",x"66",x"3C",x"00", -- 0x01A8
x"3C",x"66",x"60",x"7C",x"66",x"66",x"3C",x"00", -- 0x01B0
x"7E",x"66",x"0C",x"18",x"18",x"18",x"18",x"00", -- 0x01B8
x"3C",x"66",x"66",x"3C",x"66",x"66",x"3C",x"00", -- 0x01C0
x"3C",x"66",x"66",x"3E",x"06",x"66",x"3C",x"00", -- 0x01C8
x"00",x"00",x"18",x"00",x"00",x"18",x"00",x"00", -- 0x01D0
x"00",x"00",x"18",x"00",x"00",x"18",x"18",x"30", -- 0x01D8
x"0E",x"18",x"30",x"60",x"30",x"18",x"0E",x"00", -- 0x01E0
x"00",x"00",x"7E",x"00",x"7E",x"00",x"00",x"00", -- 0x01E8
x"70",x"18",x"0C",x"06",x"0C",x"18",x"70",x"00", -- 0x01F0
x"3C",x"66",x"06",x"0C",x"18",x"00",x"18",x"00", -- 0x01F8
x"00",x"00",x"00",x"FF",x"FF",x"00",x"00",x"00", -- 0x0200
x"08",x"1C",x"3E",x"7F",x"7F",x"1C",x"3E",x"00", -- 0x0208
x"18",x"18",x"18",x"18",x"18",x"18",x"18",x"18", -- 0x0210
x"00",x"00",x"00",x"FF",x"FF",x"00",x"00",x"00", -- 0x0218
x"00",x"00",x"FF",x"FF",x"00",x"00",x"00",x"00", -- 0x0220
x"00",x"FF",x"FF",x"00",x"00",x"00",x"00",x"00", -- 0x0228
x"00",x"00",x"00",x"00",x"FF",x"FF",x"00",x"00", -- 0x0230
x"30",x"30",x"30",x"30",x"30",x"30",x"30",x"30", -- 0x0238
x"0C",x"0C",x"0C",x"0C",x"0C",x"0C",x"0C",x"0C", -- 0x0240
x"00",x"00",x"00",x"E0",x"F0",x"38",x"18",x"18", -- 0x0248
x"18",x"18",x"1C",x"0F",x"07",x"00",x"00",x"00", -- 0x0250
x"18",x"18",x"38",x"F0",x"E0",x"00",x"00",x"00", -- 0x0258
x"C0",x"C0",x"C0",x"C0",x"C0",x"C0",x"FF",x"FF", -- 0x0260
x"C0",x"E0",x"70",x"38",x"1C",x"0E",x"07",x"03", -- 0x0268
x"03",x"07",x"0E",x"1C",x"38",x"70",x"E0",x"C0", -- 0x0270
x"FF",x"FF",x"C0",x"C0",x"C0",x"C0",x"C0",x"C0", -- 0x0278
x"FF",x"FF",x"03",x"03",x"03",x"03",x"03",x"03", -- 0x0280
x"00",x"3C",x"7E",x"7E",x"7E",x"7E",x"3C",x"00", -- 0x0288
x"00",x"00",x"00",x"00",x"00",x"FF",x"FF",x"00", -- 0x0290
x"36",x"7F",x"7F",x"7F",x"3E",x"1C",x"08",x"00", -- 0x0298
x"60",x"60",x"60",x"60",x"60",x"60",x"60",x"60", -- 0x02A0
x"00",x"00",x"00",x"07",x"0F",x"1C",x"18",x"18", -- 0x02A8
x"C3",x"E7",x"7E",x"3C",x"3C",x"7E",x"E7",x"C3", -- 0x02B0
x"00",x"3C",x"7E",x"66",x"66",x"7E",x"3C",x"00", -- 0x02B8
x"18",x"18",x"66",x"66",x"18",x"18",x"3C",x"00", -- 0x02C0
x"06",x"06",x"06",x"06",x"06",x"06",x"06",x"06", -- 0x02C8
x"08",x"1C",x"3E",x"7F",x"3E",x"1C",x"08",x"00", -- 0x02D0
x"18",x"18",x"18",x"FF",x"FF",x"18",x"18",x"18", -- 0x02D8
x"C0",x"C0",x"30",x"30",x"C0",x"C0",x"30",x"30", -- 0x02E0
x"18",x"18",x"18",x"18",x"18",x"18",x"18",x"18", -- 0x02E8
x"00",x"00",x"03",x"3E",x"76",x"36",x"36",x"00", -- 0x02F0
x"FF",x"7F",x"3F",x"1F",x"0F",x"07",x"03",x"01", -- 0x02F8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0300
x"F0",x"F0",x"F0",x"F0",x"F0",x"F0",x"F0",x"F0", -- 0x0308
x"00",x"00",x"00",x"00",x"FF",x"FF",x"FF",x"FF", -- 0x0310
x"FF",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0318
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"FF", -- 0x0320
x"C0",x"C0",x"C0",x"C0",x"C0",x"C0",x"C0",x"C0", -- 0x0328
x"CC",x"CC",x"33",x"33",x"CC",x"CC",x"33",x"33", -- 0x0330
x"03",x"03",x"03",x"03",x"03",x"03",x"03",x"03", -- 0x0338
x"00",x"00",x"00",x"00",x"CC",x"CC",x"33",x"33", -- 0x0340
x"FF",x"FE",x"FC",x"F8",x"F0",x"E0",x"C0",x"80", -- 0x0348
x"03",x"03",x"03",x"03",x"03",x"03",x"03",x"03", -- 0x0350
x"18",x"18",x"18",x"1F",x"1F",x"18",x"18",x"18", -- 0x0358
x"00",x"00",x"00",x"00",x"0F",x"0F",x"0F",x"0F", -- 0x0360
x"18",x"18",x"18",x"1F",x"1F",x"00",x"00",x"00", -- 0x0368
x"00",x"00",x"00",x"F8",x"F8",x"18",x"18",x"18", -- 0x0370
x"00",x"00",x"00",x"00",x"00",x"00",x"FF",x"FF", -- 0x0378
x"00",x"00",x"00",x"1F",x"1F",x"18",x"18",x"18", -- 0x0380
x"18",x"18",x"18",x"FF",x"FF",x"00",x"00",x"00", -- 0x0388
x"00",x"00",x"00",x"FF",x"FF",x"18",x"18",x"18", -- 0x0390
x"18",x"18",x"18",x"F8",x"F8",x"18",x"18",x"18", -- 0x0398
x"C0",x"C0",x"C0",x"C0",x"C0",x"C0",x"C0",x"C0", -- 0x03A0
x"E0",x"E0",x"E0",x"E0",x"E0",x"E0",x"E0",x"E0", -- 0x03A8
x"07",x"07",x"07",x"07",x"07",x"07",x"07",x"07", -- 0x03B0
x"FF",x"FF",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x03B8
x"FF",x"FF",x"FF",x"00",x"00",x"00",x"00",x"00", -- 0x03C0
x"00",x"00",x"00",x"00",x"00",x"FF",x"FF",x"FF", -- 0x03C8
x"03",x"03",x"03",x"03",x"03",x"03",x"FF",x"FF", -- 0x03D0
x"00",x"00",x"00",x"00",x"F0",x"F0",x"F0",x"F0", -- 0x03D8
x"0F",x"0F",x"0F",x"0F",x"00",x"00",x"00",x"00", -- 0x03E0
x"18",x"18",x"18",x"F8",x"F8",x"00",x"00",x"00", -- 0x03E8
x"F0",x"F0",x"F0",x"F0",x"00",x"00",x"00",x"00", -- 0x03F0
x"F0",x"F0",x"F0",x"F0",x"0F",x"0F",x"0F",x"0F", -- 0x03F8
x"C3",x"99",x"91",x"91",x"9F",x"99",x"C3",x"FF", -- 0x0400
x"E7",x"C3",x"99",x"81",x"99",x"99",x"99",x"FF", -- 0x0408
x"83",x"99",x"99",x"83",x"99",x"99",x"83",x"FF", -- 0x0410
x"C3",x"99",x"9F",x"9F",x"9F",x"99",x"C3",x"FF", -- 0x0418
x"87",x"93",x"99",x"99",x"99",x"93",x"87",x"FF", -- 0x0420
x"81",x"9F",x"9F",x"87",x"9F",x"9F",x"81",x"FF", -- 0x0428
x"81",x"9F",x"9F",x"87",x"9F",x"9F",x"9F",x"FF", -- 0x0430
x"C3",x"99",x"9F",x"91",x"99",x"99",x"C3",x"FF", -- 0x0438
x"99",x"99",x"99",x"81",x"99",x"99",x"99",x"FF", -- 0x0440
x"C3",x"E7",x"E7",x"E7",x"E7",x"E7",x"C3",x"FF", -- 0x0448
x"E1",x"F3",x"F3",x"F3",x"F3",x"93",x"C7",x"FF", -- 0x0450
x"99",x"93",x"87",x"8F",x"87",x"93",x"99",x"FF", -- 0x0458
x"9F",x"9F",x"9F",x"9F",x"9F",x"9F",x"81",x"FF", -- 0x0460
x"9C",x"88",x"80",x"94",x"9C",x"9C",x"9C",x"FF", -- 0x0468
x"99",x"89",x"81",x"81",x"91",x"99",x"99",x"FF", -- 0x0470
x"C3",x"99",x"99",x"99",x"99",x"99",x"C3",x"FF", -- 0x0478
x"83",x"99",x"99",x"83",x"9F",x"9F",x"9F",x"FF", -- 0x0480
x"C3",x"99",x"99",x"99",x"99",x"C3",x"F1",x"FF", -- 0x0488
x"83",x"99",x"99",x"83",x"87",x"93",x"99",x"FF", -- 0x0490
x"C3",x"99",x"9F",x"C3",x"F9",x"99",x"C3",x"FF", -- 0x0498
x"81",x"E7",x"E7",x"E7",x"E7",x"E7",x"E7",x"FF", -- 0x04A0
x"99",x"99",x"99",x"99",x"99",x"99",x"C3",x"FF", -- 0x04A8
x"99",x"99",x"99",x"99",x"99",x"C3",x"E7",x"FF", -- 0x04B0
x"9C",x"9C",x"9C",x"94",x"80",x"88",x"9C",x"FF", -- 0x04B8
x"99",x"99",x"C3",x"E7",x"C3",x"99",x"99",x"FF", -- 0x04C0
x"99",x"99",x"99",x"C3",x"E7",x"E7",x"E7",x"FF", -- 0x04C8
x"81",x"F9",x"F3",x"E7",x"CF",x"9F",x"81",x"FF", -- 0x04D0
x"C3",x"CF",x"CF",x"CF",x"CF",x"CF",x"C3",x"FF", -- 0x04D8
x"F3",x"ED",x"CF",x"83",x"CF",x"9D",x"03",x"FF", -- 0x04E0
x"C3",x"F3",x"F3",x"F3",x"F3",x"F3",x"C3",x"FF", -- 0x04E8
x"FF",x"E7",x"C3",x"81",x"E7",x"E7",x"E7",x"E7", -- 0x04F0
x"FF",x"EF",x"CF",x"80",x"80",x"CF",x"EF",x"FF", -- 0x04F8
x"FF",x"FF",x"FF",x"FF",x"FF",x"FF",x"FF",x"FF", -- 0x0500
x"E7",x"E7",x"E7",x"E7",x"FF",x"FF",x"E7",x"FF", -- 0x0508
x"99",x"99",x"99",x"FF",x"FF",x"FF",x"FF",x"FF", -- 0x0510
x"99",x"99",x"00",x"99",x"00",x"99",x"99",x"FF", -- 0x0518
x"E7",x"C1",x"9F",x"C3",x"F9",x"83",x"E7",x"FF", -- 0x0520
x"9D",x"99",x"F3",x"E7",x"CF",x"99",x"B9",x"FF", -- 0x0528
x"C3",x"99",x"C3",x"C7",x"98",x"99",x"C0",x"FF", -- 0x0530
x"F9",x"F3",x"E7",x"FF",x"FF",x"FF",x"FF",x"FF", -- 0x0538
x"F3",x"E7",x"CF",x"CF",x"CF",x"E7",x"F3",x"FF", -- 0x0540
x"CF",x"E7",x"F3",x"F3",x"F3",x"E7",x"CF",x"FF", -- 0x0548
x"FF",x"99",x"C3",x"00",x"C3",x"99",x"FF",x"FF", -- 0x0550
x"FF",x"E7",x"E7",x"81",x"E7",x"E7",x"FF",x"FF", -- 0x0558
x"FF",x"FF",x"FF",x"FF",x"FF",x"E7",x"E7",x"CF", -- 0x0560
x"FF",x"FF",x"FF",x"81",x"FF",x"FF",x"FF",x"FF", -- 0x0568
x"FF",x"FF",x"FF",x"FF",x"FF",x"E7",x"E7",x"FF", -- 0x0570
x"FF",x"FC",x"F9",x"F3",x"E7",x"CF",x"9F",x"FF", -- 0x0578
x"C3",x"99",x"91",x"89",x"99",x"99",x"C3",x"FF", -- 0x0580
x"E7",x"E7",x"C7",x"E7",x"E7",x"E7",x"81",x"FF", -- 0x0588
x"C3",x"99",x"F9",x"F3",x"CF",x"9F",x"81",x"FF", -- 0x0590
x"C3",x"99",x"F9",x"E3",x"F9",x"99",x"C3",x"FF", -- 0x0598
x"F9",x"F1",x"E1",x"99",x"80",x"F9",x"F9",x"FF", -- 0x05A0
x"81",x"9F",x"83",x"F9",x"F9",x"99",x"C3",x"FF", -- 0x05A8
x"C3",x"99",x"9F",x"83",x"99",x"99",x"C3",x"FF", -- 0x05B0
x"81",x"99",x"F3",x"E7",x"E7",x"E7",x"E7",x"FF", -- 0x05B8
x"C3",x"99",x"99",x"C3",x"99",x"99",x"C3",x"FF", -- 0x05C0
x"C3",x"99",x"99",x"C1",x"F9",x"99",x"C3",x"FF", -- 0x05C8
x"FF",x"FF",x"E7",x"FF",x"FF",x"E7",x"FF",x"FF", -- 0x05D0
x"FF",x"FF",x"E7",x"FF",x"FF",x"E7",x"E7",x"CF", -- 0x05D8
x"F1",x"E7",x"CF",x"9F",x"CF",x"E7",x"F1",x"FF", -- 0x05E0
x"FF",x"FF",x"81",x"FF",x"81",x"FF",x"FF",x"FF", -- 0x05E8
x"8F",x"E7",x"F3",x"F9",x"F3",x"E7",x"8F",x"FF", -- 0x05F0
x"C3",x"99",x"F9",x"F3",x"E7",x"FF",x"E7",x"FF", -- 0x05F8
x"FF",x"FF",x"FF",x"00",x"00",x"FF",x"FF",x"FF", -- 0x0600
x"F7",x"E3",x"C1",x"80",x"80",x"E3",x"C1",x"FF", -- 0x0608
x"E7",x"E7",x"E7",x"E7",x"E7",x"E7",x"E7",x"E7", -- 0x0610
x"FF",x"FF",x"FF",x"00",x"00",x"FF",x"FF",x"FF", -- 0x0618
x"FF",x"FF",x"00",x"00",x"FF",x"FF",x"FF",x"FF", -- 0x0620
x"FF",x"00",x"00",x"FF",x"FF",x"FF",x"FF",x"FF", -- 0x0628
x"FF",x"FF",x"FF",x"FF",x"00",x"00",x"FF",x"FF", -- 0x0630
x"CF",x"CF",x"CF",x"CF",x"CF",x"CF",x"CF",x"CF", -- 0x0638
x"F3",x"F3",x"F3",x"F3",x"F3",x"F3",x"F3",x"F3", -- 0x0640
x"FF",x"FF",x"FF",x"1F",x"0F",x"C7",x"E7",x"E7", -- 0x0648
x"E7",x"E7",x"E3",x"F0",x"F8",x"FF",x"FF",x"FF", -- 0x0650
x"E7",x"E7",x"C7",x"0F",x"1F",x"FF",x"FF",x"FF", -- 0x0658
x"3F",x"3F",x"3F",x"3F",x"3F",x"3F",x"00",x"00", -- 0x0660
x"3F",x"1F",x"8F",x"C7",x"E3",x"F1",x"F8",x"FC", -- 0x0668
x"FC",x"F8",x"F1",x"E3",x"C7",x"8F",x"1F",x"3F", -- 0x0670
x"00",x"00",x"3F",x"3F",x"3F",x"3F",x"3F",x"3F", -- 0x0678
x"00",x"00",x"FC",x"FC",x"FC",x"FC",x"FC",x"FC", -- 0x0680
x"FF",x"C3",x"81",x"81",x"81",x"81",x"C3",x"FF", -- 0x0688
x"FF",x"FF",x"FF",x"FF",x"FF",x"00",x"00",x"FF", -- 0x0690
x"C9",x"80",x"80",x"80",x"C1",x"E3",x"F7",x"FF", -- 0x0698
x"9F",x"9F",x"9F",x"9F",x"9F",x"9F",x"9F",x"9F", -- 0x06A0
x"FF",x"FF",x"FF",x"F8",x"F0",x"E3",x"E7",x"E7", -- 0x06A8
x"3C",x"18",x"81",x"C3",x"C3",x"81",x"18",x"3C", -- 0x06B0
x"FF",x"C3",x"81",x"99",x"99",x"81",x"C3",x"FF", -- 0x06B8
x"E7",x"E7",x"99",x"99",x"E7",x"E7",x"C3",x"FF", -- 0x06C0
x"F9",x"F9",x"F9",x"F9",x"F9",x"F9",x"F9",x"F9", -- 0x06C8
x"F7",x"E3",x"C1",x"80",x"C1",x"E3",x"F7",x"FF", -- 0x06D0
x"E7",x"E7",x"E7",x"00",x"00",x"E7",x"E7",x"E7", -- 0x06D8
x"3F",x"3F",x"CF",x"CF",x"3F",x"3F",x"CF",x"CF", -- 0x06E0
x"E7",x"E7",x"E7",x"E7",x"E7",x"E7",x"E7",x"E7", -- 0x06E8
x"FF",x"FF",x"FC",x"C1",x"89",x"C9",x"C9",x"FF", -- 0x06F0
x"00",x"80",x"C0",x"E0",x"F0",x"F8",x"FC",x"FE", -- 0x06F8
x"FF",x"FF",x"FF",x"FF",x"FF",x"FF",x"FF",x"FF", -- 0x0700
x"0F",x"0F",x"0F",x"0F",x"0F",x"0F",x"0F",x"0F", -- 0x0708
x"FF",x"FF",x"FF",x"FF",x"00",x"00",x"00",x"00", -- 0x0710
x"00",x"FF",x"FF",x"FF",x"FF",x"FF",x"FF",x"FF", -- 0x0718
x"FF",x"FF",x"FF",x"FF",x"FF",x"FF",x"FF",x"00", -- 0x0720
x"3F",x"3F",x"3F",x"3F",x"3F",x"3F",x"3F",x"3F", -- 0x0728
x"33",x"33",x"CC",x"CC",x"33",x"33",x"CC",x"CC", -- 0x0730
x"FC",x"FC",x"FC",x"FC",x"FC",x"FC",x"FC",x"FC", -- 0x0738
x"FF",x"FF",x"FF",x"FF",x"33",x"33",x"CC",x"CC", -- 0x0740
x"00",x"01",x"03",x"07",x"0F",x"1F",x"3F",x"7F", -- 0x0748
x"FC",x"FC",x"FC",x"FC",x"FC",x"FC",x"FC",x"FC", -- 0x0750
x"E7",x"E7",x"E7",x"E0",x"E0",x"E7",x"E7",x"E7", -- 0x0758
x"FF",x"FF",x"FF",x"FF",x"F0",x"F0",x"F0",x"F0", -- 0x0760
x"E7",x"E7",x"E7",x"E0",x"E0",x"FF",x"FF",x"FF", -- 0x0768
x"FF",x"FF",x"FF",x"07",x"07",x"E7",x"E7",x"E7", -- 0x0770
x"FF",x"FF",x"FF",x"FF",x"FF",x"FF",x"00",x"00", -- 0x0778
x"FF",x"FF",x"FF",x"E0",x"E0",x"E7",x"E7",x"E7", -- 0x0780
x"E7",x"E7",x"E7",x"00",x"00",x"FF",x"FF",x"FF", -- 0x0788
x"FF",x"FF",x"FF",x"00",x"00",x"E7",x"E7",x"E7", -- 0x0790
x"E7",x"E7",x"E7",x"07",x"07",x"E7",x"E7",x"E7", -- 0x0798
x"3F",x"3F",x"3F",x"3F",x"3F",x"3F",x"3F",x"3F", -- 0x07A0
x"1F",x"1F",x"1F",x"1F",x"1F",x"1F",x"1F",x"1F", -- 0x07A8
x"F8",x"F8",x"F8",x"F8",x"F8",x"F8",x"F8",x"F8", -- 0x07B0
x"00",x"00",x"FF",x"FF",x"FF",x"FF",x"FF",x"FF", -- 0x07B8
x"00",x"00",x"00",x"FF",x"FF",x"FF",x"FF",x"FF", -- 0x07C0
x"FF",x"FF",x"FF",x"FF",x"FF",x"00",x"00",x"00", -- 0x07C8
x"FC",x"FC",x"FC",x"FC",x"FC",x"FC",x"00",x"00", -- 0x07D0
x"FF",x"FF",x"FF",x"FF",x"0F",x"0F",x"0F",x"0F", -- 0x07D8
x"F0",x"F0",x"F0",x"F0",x"FF",x"FF",x"FF",x"FF", -- 0x07E0
x"E7",x"E7",x"E7",x"07",x"07",x"FF",x"FF",x"FF", -- 0x07E8
x"0F",x"0F",x"0F",x"0F",x"FF",x"FF",x"FF",x"FF", -- 0x07F0
x"0F",x"0F",x"0F",x"0F",x"F0",x"F0",x"F0",x"F0", -- 0x07F8
x"3C",x"66",x"6E",x"6E",x"60",x"62",x"3C",x"00", -- 0x0800
x"00",x"00",x"3C",x"06",x"3E",x"66",x"3E",x"00", -- 0x0808
x"00",x"60",x"60",x"7C",x"66",x"66",x"7C",x"00", -- 0x0810
x"00",x"00",x"3C",x"60",x"60",x"60",x"3C",x"00", -- 0x0818
x"00",x"06",x"06",x"3E",x"66",x"66",x"3E",x"00", -- 0x0820
x"00",x"00",x"3C",x"66",x"7E",x"60",x"3C",x"00", -- 0x0828
x"00",x"0E",x"18",x"3E",x"18",x"18",x"18",x"00", -- 0x0830
x"00",x"00",x"3E",x"66",x"66",x"3E",x"06",x"7C", -- 0x0838
x"00",x"60",x"60",x"7C",x"66",x"66",x"66",x"00", -- 0x0840
x"00",x"18",x"00",x"38",x"18",x"18",x"3C",x"00", -- 0x0848
x"00",x"06",x"00",x"06",x"06",x"06",x"06",x"3C", -- 0x0850
x"00",x"60",x"60",x"6C",x"78",x"6C",x"66",x"00", -- 0x0858
x"00",x"38",x"18",x"18",x"18",x"18",x"3C",x"00", -- 0x0860
x"00",x"00",x"66",x"7F",x"7F",x"6B",x"63",x"00", -- 0x0868
x"00",x"00",x"7C",x"66",x"66",x"66",x"66",x"00", -- 0x0870
x"00",x"00",x"3C",x"66",x"66",x"66",x"3C",x"00", -- 0x0878
x"00",x"00",x"7C",x"66",x"66",x"7C",x"60",x"60", -- 0x0880
x"00",x"00",x"3E",x"66",x"66",x"3E",x"06",x"06", -- 0x0888
x"00",x"00",x"7C",x"66",x"60",x"60",x"60",x"00", -- 0x0890
x"00",x"00",x"3E",x"60",x"3C",x"06",x"7C",x"00", -- 0x0898
x"00",x"18",x"7E",x"18",x"18",x"18",x"0E",x"00", -- 0x08A0
x"00",x"00",x"66",x"66",x"66",x"66",x"3E",x"00", -- 0x08A8
x"00",x"00",x"66",x"66",x"66",x"3C",x"18",x"00", -- 0x08B0
x"00",x"00",x"63",x"6B",x"7F",x"3E",x"36",x"00", -- 0x08B8
x"00",x"00",x"66",x"3C",x"18",x"3C",x"66",x"00", -- 0x08C0
x"00",x"00",x"66",x"66",x"66",x"3E",x"0C",x"78", -- 0x08C8
x"00",x"00",x"7E",x"0C",x"18",x"30",x"7E",x"00", -- 0x08D0
x"3C",x"30",x"30",x"30",x"30",x"30",x"3C",x"00", -- 0x08D8
x"0C",x"12",x"30",x"7C",x"30",x"62",x"FC",x"00", -- 0x08E0
x"3C",x"0C",x"0C",x"0C",x"0C",x"0C",x"3C",x"00", -- 0x08E8
x"00",x"18",x"3C",x"7E",x"18",x"18",x"18",x"18", -- 0x08F0
x"00",x"10",x"30",x"7F",x"7F",x"30",x"10",x"00", -- 0x08F8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0900
x"18",x"18",x"18",x"18",x"00",x"00",x"18",x"00", -- 0x0908
x"66",x"66",x"66",x"00",x"00",x"00",x"00",x"00", -- 0x0910
x"66",x"66",x"FF",x"66",x"FF",x"66",x"66",x"00", -- 0x0918
x"18",x"3E",x"60",x"3C",x"06",x"7C",x"18",x"00", -- 0x0920
x"62",x"66",x"0C",x"18",x"30",x"66",x"46",x"00", -- 0x0928
x"3C",x"66",x"3C",x"38",x"67",x"66",x"3F",x"00", -- 0x0930
x"06",x"0C",x"18",x"00",x"00",x"00",x"00",x"00", -- 0x0938
x"0C",x"18",x"30",x"30",x"30",x"18",x"0C",x"00", -- 0x0940
x"30",x"18",x"0C",x"0C",x"0C",x"18",x"30",x"00", -- 0x0948
x"00",x"66",x"3C",x"FF",x"3C",x"66",x"00",x"00", -- 0x0950
x"00",x"18",x"18",x"7E",x"18",x"18",x"00",x"00", -- 0x0958
x"00",x"00",x"00",x"00",x"00",x"18",x"18",x"30", -- 0x0960
x"00",x"00",x"00",x"7E",x"00",x"00",x"00",x"00", -- 0x0968
x"00",x"00",x"00",x"00",x"00",x"18",x"18",x"00", -- 0x0970
x"00",x"03",x"06",x"0C",x"18",x"30",x"60",x"00", -- 0x0978
x"3C",x"66",x"6E",x"76",x"66",x"66",x"3C",x"00", -- 0x0980
x"18",x"18",x"38",x"18",x"18",x"18",x"7E",x"00", -- 0x0988
x"3C",x"66",x"06",x"0C",x"30",x"60",x"7E",x"00", -- 0x0990
x"3C",x"66",x"06",x"1C",x"06",x"66",x"3C",x"00", -- 0x0998
x"06",x"0E",x"1E",x"66",x"7F",x"06",x"06",x"00", -- 0x09A0
x"7E",x"60",x"7C",x"06",x"06",x"66",x"3C",x"00", -- 0x09A8
x"3C",x"66",x"60",x"7C",x"66",x"66",x"3C",x"00", -- 0x09B0
x"7E",x"66",x"0C",x"18",x"18",x"18",x"18",x"00", -- 0x09B8
x"3C",x"66",x"66",x"3C",x"66",x"66",x"3C",x"00", -- 0x09C0
x"3C",x"66",x"66",x"3E",x"06",x"66",x"3C",x"00", -- 0x09C8
x"00",x"00",x"18",x"00",x"00",x"18",x"00",x"00", -- 0x09D0
x"00",x"00",x"18",x"00",x"00",x"18",x"18",x"30", -- 0x09D8
x"0E",x"18",x"30",x"60",x"30",x"18",x"0E",x"00", -- 0x09E0
x"00",x"00",x"7E",x"00",x"7E",x"00",x"00",x"00", -- 0x09E8
x"70",x"18",x"0C",x"06",x"0C",x"18",x"70",x"00", -- 0x09F0
x"3C",x"66",x"06",x"0C",x"18",x"00",x"18",x"00", -- 0x09F8
x"00",x"00",x"00",x"FF",x"FF",x"00",x"00",x"00", -- 0x0A00
x"18",x"3C",x"66",x"7E",x"66",x"66",x"66",x"00", -- 0x0A08
x"7C",x"66",x"66",x"7C",x"66",x"66",x"7C",x"00", -- 0x0A10
x"3C",x"66",x"60",x"60",x"60",x"66",x"3C",x"00", -- 0x0A18
x"78",x"6C",x"66",x"66",x"66",x"6C",x"78",x"00", -- 0x0A20
x"7E",x"60",x"60",x"78",x"60",x"60",x"7E",x"00", -- 0x0A28
x"7E",x"60",x"60",x"78",x"60",x"60",x"60",x"00", -- 0x0A30
x"3C",x"66",x"60",x"6E",x"66",x"66",x"3C",x"00", -- 0x0A38
x"66",x"66",x"66",x"7E",x"66",x"66",x"66",x"00", -- 0x0A40
x"3C",x"18",x"18",x"18",x"18",x"18",x"3C",x"00", -- 0x0A48
x"1E",x"0C",x"0C",x"0C",x"0C",x"6C",x"38",x"00", -- 0x0A50
x"66",x"6C",x"78",x"70",x"78",x"6C",x"66",x"00", -- 0x0A58
x"60",x"60",x"60",x"60",x"60",x"60",x"7E",x"00", -- 0x0A60
x"63",x"77",x"7F",x"6B",x"63",x"63",x"63",x"00", -- 0x0A68
x"66",x"76",x"7E",x"7E",x"6E",x"66",x"66",x"00", -- 0x0A70
x"3C",x"66",x"66",x"66",x"66",x"66",x"3C",x"00", -- 0x0A78
x"7C",x"66",x"66",x"7C",x"60",x"60",x"60",x"00", -- 0x0A80
x"3C",x"66",x"66",x"66",x"66",x"3C",x"0E",x"00", -- 0x0A88
x"7C",x"66",x"66",x"7C",x"78",x"6C",x"66",x"00", -- 0x0A90
x"3C",x"66",x"60",x"3C",x"06",x"66",x"3C",x"00", -- 0x0A98
x"7E",x"18",x"18",x"18",x"18",x"18",x"18",x"00", -- 0x0AA0
x"66",x"66",x"66",x"66",x"66",x"66",x"3C",x"00", -- 0x0AA8
x"66",x"66",x"66",x"66",x"66",x"3C",x"18",x"00", -- 0x0AB0
x"63",x"63",x"63",x"6B",x"7F",x"77",x"63",x"00", -- 0x0AB8
x"66",x"66",x"3C",x"18",x"3C",x"66",x"66",x"00", -- 0x0AC0
x"66",x"66",x"66",x"3C",x"18",x"18",x"18",x"00", -- 0x0AC8
x"7E",x"06",x"0C",x"18",x"30",x"60",x"7E",x"00", -- 0x0AD0
x"18",x"18",x"18",x"FF",x"FF",x"18",x"18",x"18", -- 0x0AD8
x"C0",x"C0",x"30",x"30",x"C0",x"C0",x"30",x"30", -- 0x0AE0
x"18",x"18",x"18",x"18",x"18",x"18",x"18",x"18", -- 0x0AE8
x"33",x"33",x"CC",x"CC",x"33",x"33",x"CC",x"CC", -- 0x0AF0
x"33",x"99",x"CC",x"66",x"33",x"99",x"CC",x"66", -- 0x0AF8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B00
x"F0",x"F0",x"F0",x"F0",x"F0",x"F0",x"F0",x"F0", -- 0x0B08
x"00",x"00",x"00",x"00",x"FF",x"FF",x"FF",x"FF", -- 0x0B10
x"FF",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B18
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"FF", -- 0x0B20
x"C0",x"C0",x"C0",x"C0",x"C0",x"C0",x"C0",x"C0", -- 0x0B28
x"CC",x"CC",x"33",x"33",x"CC",x"CC",x"33",x"33", -- 0x0B30
x"03",x"03",x"03",x"03",x"03",x"03",x"03",x"03", -- 0x0B38
x"00",x"00",x"00",x"00",x"CC",x"CC",x"33",x"33", -- 0x0B40
x"CC",x"99",x"33",x"66",x"CC",x"99",x"33",x"66", -- 0x0B48
x"03",x"03",x"03",x"03",x"03",x"03",x"03",x"03", -- 0x0B50
x"18",x"18",x"18",x"1F",x"1F",x"18",x"18",x"18", -- 0x0B58
x"00",x"00",x"00",x"00",x"0F",x"0F",x"0F",x"0F", -- 0x0B60
x"18",x"18",x"18",x"1F",x"1F",x"00",x"00",x"00", -- 0x0B68
x"00",x"00",x"00",x"F8",x"F8",x"18",x"18",x"18", -- 0x0B70
x"00",x"00",x"00",x"00",x"00",x"00",x"FF",x"FF", -- 0x0B78
x"00",x"00",x"00",x"1F",x"1F",x"18",x"18",x"18", -- 0x0B80
x"18",x"18",x"18",x"FF",x"FF",x"00",x"00",x"00", -- 0x0B88
x"00",x"00",x"00",x"FF",x"FF",x"18",x"18",x"18", -- 0x0B90
x"18",x"18",x"18",x"F8",x"F8",x"18",x"18",x"18", -- 0x0B98
x"C0",x"C0",x"C0",x"C0",x"C0",x"C0",x"C0",x"C0", -- 0x0BA0
x"E0",x"E0",x"E0",x"E0",x"E0",x"E0",x"E0",x"E0", -- 0x0BA8
x"07",x"07",x"07",x"07",x"07",x"07",x"07",x"07", -- 0x0BB0
x"FF",x"FF",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BB8
x"FF",x"FF",x"FF",x"00",x"00",x"00",x"00",x"00", -- 0x0BC0
x"00",x"00",x"00",x"00",x"00",x"FF",x"FF",x"FF", -- 0x0BC8
x"01",x"03",x"06",x"6C",x"78",x"70",x"60",x"00", -- 0x0BD0
x"00",x"00",x"00",x"00",x"F0",x"F0",x"F0",x"F0", -- 0x0BD8
x"0F",x"0F",x"0F",x"0F",x"00",x"00",x"00",x"00", -- 0x0BE0
x"18",x"18",x"18",x"F8",x"F8",x"00",x"00",x"00", -- 0x0BE8
x"F0",x"F0",x"F0",x"F0",x"00",x"00",x"00",x"00", -- 0x0BF0
x"F0",x"F0",x"F0",x"F0",x"0F",x"0F",x"0F",x"0F", -- 0x0BF8
x"C3",x"99",x"91",x"91",x"9F",x"99",x"C3",x"FF", -- 0x0C00
x"FF",x"FF",x"C3",x"F9",x"C1",x"99",x"C1",x"FF", -- 0x0C08
x"FF",x"9F",x"9F",x"83",x"99",x"99",x"83",x"FF", -- 0x0C10
x"FF",x"FF",x"C3",x"9F",x"9F",x"9F",x"C3",x"FF", -- 0x0C18
x"FF",x"F9",x"F9",x"C1",x"99",x"99",x"C1",x"FF", -- 0x0C20
x"FF",x"FF",x"C3",x"99",x"81",x"9F",x"C3",x"FF", -- 0x0C28
x"FF",x"F1",x"E7",x"C1",x"E7",x"E7",x"E7",x"FF", -- 0x0C30
x"FF",x"FF",x"C1",x"99",x"99",x"C1",x"F9",x"83", -- 0x0C38
x"FF",x"9F",x"9F",x"83",x"99",x"99",x"99",x"FF", -- 0x0C40
x"FF",x"E7",x"FF",x"C7",x"E7",x"E7",x"C3",x"FF", -- 0x0C48
x"FF",x"F9",x"FF",x"F9",x"F9",x"F9",x"F9",x"C3", -- 0x0C50
x"FF",x"9F",x"9F",x"93",x"87",x"93",x"99",x"FF", -- 0x0C58
x"FF",x"C7",x"E7",x"E7",x"E7",x"E7",x"C3",x"FF", -- 0x0C60
x"FF",x"FF",x"99",x"80",x"80",x"94",x"9C",x"FF", -- 0x0C68
x"FF",x"FF",x"83",x"99",x"99",x"99",x"99",x"FF", -- 0x0C70
x"FF",x"FF",x"C3",x"99",x"99",x"99",x"C3",x"FF", -- 0x0C78
x"FF",x"FF",x"83",x"99",x"99",x"83",x"9F",x"9F", -- 0x0C80
x"FF",x"FF",x"C1",x"99",x"99",x"C1",x"F9",x"F9", -- 0x0C88
x"FF",x"FF",x"83",x"99",x"9F",x"9F",x"9F",x"FF", -- 0x0C90
x"FF",x"FF",x"C1",x"9F",x"C3",x"F9",x"83",x"FF", -- 0x0C98
x"FF",x"E7",x"81",x"E7",x"E7",x"E7",x"F1",x"FF", -- 0x0CA0
x"FF",x"FF",x"99",x"99",x"99",x"99",x"C1",x"FF", -- 0x0CA8
x"FF",x"FF",x"99",x"99",x"99",x"C3",x"E7",x"FF", -- 0x0CB0
x"FF",x"FF",x"9C",x"94",x"80",x"C1",x"C9",x"FF", -- 0x0CB8
x"FF",x"FF",x"99",x"C3",x"E7",x"C3",x"99",x"FF", -- 0x0CC0
x"FF",x"FF",x"99",x"99",x"99",x"C1",x"F3",x"87", -- 0x0CC8
x"FF",x"FF",x"81",x"F3",x"E7",x"CF",x"81",x"FF", -- 0x0CD0
x"C3",x"CF",x"CF",x"CF",x"CF",x"CF",x"C3",x"FF", -- 0x0CD8
x"F3",x"ED",x"CF",x"83",x"CF",x"9D",x"03",x"FF", -- 0x0CE0
x"C3",x"F3",x"F3",x"F3",x"F3",x"F3",x"C3",x"FF", -- 0x0CE8
x"FF",x"E7",x"C3",x"81",x"E7",x"E7",x"E7",x"E7", -- 0x0CF0
x"FF",x"EF",x"CF",x"80",x"80",x"CF",x"EF",x"FF", -- 0x0CF8
x"FF",x"FF",x"FF",x"FF",x"FF",x"FF",x"FF",x"FF", -- 0x0D00
x"E7",x"E7",x"E7",x"E7",x"FF",x"FF",x"E7",x"FF", -- 0x0D08
x"99",x"99",x"99",x"FF",x"FF",x"FF",x"FF",x"FF", -- 0x0D10
x"99",x"99",x"00",x"99",x"00",x"99",x"99",x"FF", -- 0x0D18
x"E7",x"C1",x"9F",x"C3",x"F9",x"83",x"E7",x"FF", -- 0x0D20
x"9D",x"99",x"F3",x"E7",x"CF",x"99",x"B9",x"FF", -- 0x0D28
x"C3",x"99",x"C3",x"C7",x"98",x"99",x"C0",x"FF", -- 0x0D30
x"F9",x"F3",x"E7",x"FF",x"FF",x"FF",x"FF",x"FF", -- 0x0D38
x"F3",x"E7",x"CF",x"CF",x"CF",x"E7",x"F3",x"FF", -- 0x0D40
x"CF",x"E7",x"F3",x"F3",x"F3",x"E7",x"CF",x"FF", -- 0x0D48
x"FF",x"99",x"C3",x"00",x"C3",x"99",x"FF",x"FF", -- 0x0D50
x"FF",x"E7",x"E7",x"81",x"E7",x"E7",x"FF",x"FF", -- 0x0D58
x"FF",x"FF",x"FF",x"FF",x"FF",x"E7",x"E7",x"CF", -- 0x0D60
x"FF",x"FF",x"FF",x"81",x"FF",x"FF",x"FF",x"FF", -- 0x0D68
x"FF",x"FF",x"FF",x"FF",x"FF",x"E7",x"E7",x"FF", -- 0x0D70
x"FF",x"FC",x"F9",x"F3",x"E7",x"CF",x"9F",x"FF", -- 0x0D78
x"C3",x"99",x"91",x"89",x"99",x"99",x"C3",x"FF", -- 0x0D80
x"E7",x"E7",x"C7",x"E7",x"E7",x"E7",x"81",x"FF", -- 0x0D88
x"C3",x"99",x"F9",x"F3",x"CF",x"9F",x"81",x"FF", -- 0x0D90
x"C3",x"99",x"F9",x"E3",x"F9",x"99",x"C3",x"FF", -- 0x0D98
x"F9",x"F1",x"E1",x"99",x"80",x"F9",x"F9",x"FF", -- 0x0DA0
x"81",x"9F",x"83",x"F9",x"F9",x"99",x"C3",x"FF", -- 0x0DA8
x"C3",x"99",x"9F",x"83",x"99",x"99",x"C3",x"FF", -- 0x0DB0
x"81",x"99",x"F3",x"E7",x"E7",x"E7",x"E7",x"FF", -- 0x0DB8
x"C3",x"99",x"99",x"C3",x"99",x"99",x"C3",x"FF", -- 0x0DC0
x"C3",x"99",x"99",x"C1",x"F9",x"99",x"C3",x"FF", -- 0x0DC8
x"FF",x"FF",x"E7",x"FF",x"FF",x"E7",x"FF",x"FF", -- 0x0DD0
x"FF",x"FF",x"E7",x"FF",x"FF",x"E7",x"E7",x"CF", -- 0x0DD8
x"F1",x"E7",x"CF",x"9F",x"CF",x"E7",x"F1",x"FF", -- 0x0DE0
x"FF",x"FF",x"81",x"FF",x"81",x"FF",x"FF",x"FF", -- 0x0DE8
x"8F",x"E7",x"F3",x"F9",x"F3",x"E7",x"8F",x"FF", -- 0x0DF0
x"C3",x"99",x"F9",x"F3",x"E7",x"FF",x"E7",x"FF", -- 0x0DF8
x"FF",x"FF",x"FF",x"00",x"00",x"FF",x"FF",x"FF", -- 0x0E00
x"E7",x"C3",x"99",x"81",x"99",x"99",x"99",x"FF", -- 0x0E08
x"83",x"99",x"99",x"83",x"99",x"99",x"83",x"FF", -- 0x0E10
x"C3",x"99",x"9F",x"9F",x"9F",x"99",x"C3",x"FF", -- 0x0E18
x"87",x"93",x"99",x"99",x"99",x"93",x"87",x"FF", -- 0x0E20
x"81",x"9F",x"9F",x"87",x"9F",x"9F",x"81",x"FF", -- 0x0E28
x"81",x"9F",x"9F",x"87",x"9F",x"9F",x"9F",x"FF", -- 0x0E30
x"C3",x"99",x"9F",x"91",x"99",x"99",x"C3",x"FF", -- 0x0E38
x"99",x"99",x"99",x"81",x"99",x"99",x"99",x"FF", -- 0x0E40
x"C3",x"E7",x"E7",x"E7",x"E7",x"E7",x"C3",x"FF", -- 0x0E48
x"E1",x"F3",x"F3",x"F3",x"F3",x"93",x"C7",x"FF", -- 0x0E50
x"99",x"93",x"87",x"8F",x"87",x"93",x"99",x"FF", -- 0x0E58
x"9F",x"9F",x"9F",x"9F",x"9F",x"9F",x"81",x"FF", -- 0x0E60
x"9C",x"88",x"80",x"94",x"9C",x"9C",x"9C",x"FF", -- 0x0E68
x"99",x"89",x"81",x"81",x"91",x"99",x"99",x"FF", -- 0x0E70
x"C3",x"99",x"99",x"99",x"99",x"99",x"C3",x"FF", -- 0x0E78
x"83",x"99",x"99",x"83",x"9F",x"9F",x"9F",x"FF", -- 0x0E80
x"C3",x"99",x"99",x"99",x"99",x"C3",x"F1",x"FF", -- 0x0E88
x"83",x"99",x"99",x"83",x"87",x"93",x"99",x"FF", -- 0x0E90
x"C3",x"99",x"9F",x"C3",x"F9",x"99",x"C3",x"FF", -- 0x0E98
x"81",x"E7",x"E7",x"E7",x"E7",x"E7",x"E7",x"FF", -- 0x0EA0
x"99",x"99",x"99",x"99",x"99",x"99",x"C3",x"FF", -- 0x0EA8
x"99",x"99",x"99",x"99",x"99",x"C3",x"E7",x"FF", -- 0x0EB0
x"9C",x"9C",x"9C",x"94",x"80",x"88",x"9C",x"FF", -- 0x0EB8
x"99",x"99",x"C3",x"E7",x"C3",x"99",x"99",x"FF", -- 0x0EC0
x"99",x"99",x"99",x"C3",x"E7",x"E7",x"E7",x"FF", -- 0x0EC8
x"81",x"F9",x"F3",x"E7",x"CF",x"9F",x"81",x"FF", -- 0x0ED0
x"E7",x"E7",x"E7",x"00",x"00",x"E7",x"E7",x"E7", -- 0x0ED8
x"3F",x"3F",x"CF",x"CF",x"3F",x"3F",x"CF",x"CF", -- 0x0EE0
x"E7",x"E7",x"E7",x"E7",x"E7",x"E7",x"E7",x"E7", -- 0x0EE8
x"CC",x"CC",x"33",x"33",x"CC",x"CC",x"33",x"33", -- 0x0EF0
x"CC",x"66",x"33",x"99",x"CC",x"66",x"33",x"99", -- 0x0EF8
x"FF",x"FF",x"FF",x"FF",x"FF",x"FF",x"FF",x"FF", -- 0x0F00
x"0F",x"0F",x"0F",x"0F",x"0F",x"0F",x"0F",x"0F", -- 0x0F08
x"FF",x"FF",x"FF",x"FF",x"00",x"00",x"00",x"00", -- 0x0F10
x"00",x"FF",x"FF",x"FF",x"FF",x"FF",x"FF",x"FF", -- 0x0F18
x"FF",x"FF",x"FF",x"FF",x"FF",x"FF",x"FF",x"00", -- 0x0F20
x"3F",x"3F",x"3F",x"3F",x"3F",x"3F",x"3F",x"3F", -- 0x0F28
x"33",x"33",x"CC",x"CC",x"33",x"33",x"CC",x"CC", -- 0x0F30
x"FC",x"FC",x"FC",x"FC",x"FC",x"FC",x"FC",x"FC", -- 0x0F38
x"FF",x"FF",x"FF",x"FF",x"33",x"33",x"CC",x"CC", -- 0x0F40
x"33",x"66",x"CC",x"99",x"33",x"66",x"CC",x"99", -- 0x0F48
x"FC",x"FC",x"FC",x"FC",x"FC",x"FC",x"FC",x"FC", -- 0x0F50
x"E7",x"E7",x"E7",x"E0",x"E0",x"E7",x"E7",x"E7", -- 0x0F58
x"FF",x"FF",x"FF",x"FF",x"F0",x"F0",x"F0",x"F0", -- 0x0F60
x"E7",x"E7",x"E7",x"E0",x"E0",x"FF",x"FF",x"FF", -- 0x0F68
x"FF",x"FF",x"FF",x"07",x"07",x"E7",x"E7",x"E7", -- 0x0F70
x"FF",x"FF",x"FF",x"FF",x"FF",x"FF",x"00",x"00", -- 0x0F78
x"FF",x"FF",x"FF",x"E0",x"E0",x"E7",x"E7",x"E7", -- 0x0F80
x"E7",x"E7",x"E7",x"00",x"00",x"FF",x"FF",x"FF", -- 0x0F88
x"FF",x"FF",x"FF",x"00",x"00",x"E7",x"E7",x"E7", -- 0x0F90
x"E7",x"E7",x"E7",x"07",x"07",x"E7",x"E7",x"E7", -- 0x0F98
x"3F",x"3F",x"3F",x"3F",x"3F",x"3F",x"3F",x"3F", -- 0x0FA0
x"1F",x"1F",x"1F",x"1F",x"1F",x"1F",x"1F",x"1F", -- 0x0FA8
x"F8",x"F8",x"F8",x"F8",x"F8",x"F8",x"F8",x"F8", -- 0x0FB0
x"00",x"00",x"FF",x"FF",x"FF",x"FF",x"FF",x"FF", -- 0x0FB8
x"00",x"00",x"00",x"FF",x"FF",x"FF",x"FF",x"FF", -- 0x0FC0
x"FF",x"FF",x"FF",x"FF",x"FF",x"00",x"00",x"00", -- 0x0FC8
x"FE",x"FC",x"F9",x"93",x"87",x"8F",x"9F",x"FF", -- 0x0FD0
x"FF",x"FF",x"FF",x"FF",x"0F",x"0F",x"0F",x"0F", -- 0x0FD8
x"F0",x"F0",x"F0",x"F0",x"FF",x"FF",x"FF",x"FF", -- 0x0FE0
x"E7",x"E7",x"E7",x"07",x"07",x"FF",x"FF",x"FF", -- 0x0FE8
x"0F",x"0F",x"0F",x"0F",x"FF",x"FF",x"FF",x"FF", -- 0x0FF0
x"0F",x"0F",x"0F",x"0F",x"F0",x"F0",x"F0",x"F0" -- 0x0FF8
);
begin
p_rom : process
begin
wait until rising_edge(CLK);
DATA <= ROM(to_integer(unsigned(ADDR)));
end process;
end RTL;
+539
View File
@@ -0,0 +1,539 @@
library ieee;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
entity char_rom is
port (
CLK : in std_logic;
ADDR : in unsigned(11 downto 0);
DATA : out unsigned(7 downto 0)
);
end;
architecture RTL of char_rom is
type ROM_ARRAY is array(0 to 4095) of unsigned(7 downto 0);
constant ROM : ROM_ARRAY := (
x"7C",x"40",x"7C",x"44",x"7C",x"0C",x"0C",x"7C", -- 0x0000
x"3C",x"24",x"7E",x"62",x"62",x"62",x"62",x"00", -- 0x0008
x"7C",x"24",x"3E",x"32",x"32",x"32",x"7E",x"00", -- 0x0010
x"7E",x"42",x"40",x"60",x"60",x"62",x"7E",x"00", -- 0x0018
x"7E",x"22",x"22",x"32",x"32",x"32",x"7E",x"00", -- 0x0020
x"7E",x"40",x"40",x"78",x"60",x"60",x"7E",x"00", -- 0x0028
x"7E",x"40",x"40",x"78",x"60",x"60",x"60",x"00", -- 0x0030
x"7E",x"42",x"40",x"6E",x"62",x"62",x"7E",x"00", -- 0x0038
x"42",x"42",x"42",x"7E",x"62",x"62",x"62",x"00", -- 0x0040
x"10",x"10",x"10",x"18",x"18",x"18",x"18",x"00", -- 0x0048
x"02",x"02",x"02",x"06",x"06",x"46",x"3C",x"00", -- 0x0050
x"42",x"44",x"48",x"7E",x"62",x"62",x"62",x"00", -- 0x0058
x"40",x"40",x"40",x"60",x"60",x"60",x"7E",x"00", -- 0x0060
x"66",x"5A",x"42",x"62",x"62",x"62",x"62",x"00", -- 0x0068
x"72",x"4A",x"4A",x"6A",x"6A",x"6A",x"66",x"00", -- 0x0070
x"7E",x"42",x"42",x"62",x"62",x"62",x"7E",x"00", -- 0x0078
x"7E",x"42",x"42",x"7E",x"60",x"60",x"60",x"00", -- 0x0080
x"7E",x"42",x"42",x"62",x"6A",x"64",x"7A",x"00", -- 0x0088
x"7E",x"42",x"42",x"7E",x"64",x"62",x"62",x"00", -- 0x0090
x"7E",x"42",x"40",x"7E",x"06",x"46",x"7E",x"00", -- 0x0098
x"7C",x"10",x"10",x"18",x"18",x"18",x"18",x"00", -- 0x00A0
x"42",x"42",x"42",x"62",x"62",x"62",x"7E",x"00", -- 0x00A8
x"42",x"42",x"42",x"24",x"24",x"18",x"18",x"00", -- 0x00B0
x"62",x"62",x"62",x"62",x"42",x"5A",x"66",x"00", -- 0x00B8
x"42",x"24",x"18",x"7C",x"62",x"62",x"62",x"00", -- 0x00C0
x"42",x"42",x"42",x"3C",x"18",x"18",x"18",x"00", -- 0x00C8
x"7E",x"02",x"1C",x"60",x"60",x"60",x"7E",x"00", -- 0x00D0
x"3C",x"20",x"20",x"30",x"30",x"30",x"3C",x"00", -- 0x00D8
x"18",x"20",x"20",x"78",x"60",x"60",x"7C",x"00", -- 0x00E0
x"3C",x"04",x"04",x"0C",x"0C",x"0C",x"3C",x"00", -- 0x00E8
x"08",x"1C",x"2A",x"08",x"08",x"08",x"08",x"00", -- 0x00F0
x"00",x"20",x"40",x"FE",x"40",x"20",x"00",x"00", -- 0x00F8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0100
x"18",x"18",x"1C",x"1C",x"1C",x"00",x"1C",x"00", -- 0x0108
x"36",x"36",x"12",x"12",x"00",x"00",x"00",x"00", -- 0x0110
x"24",x"24",x"7E",x"34",x"7E",x"34",x"34",x"00", -- 0x0118
x"08",x"3E",x"28",x"3E",x"1A",x"3E",x"18",x"00", -- 0x0120
x"70",x"52",x"74",x"08",x"1E",x"2A",x"4E",x"00", -- 0x0128
x"78",x"48",x"30",x"70",x"6A",x"64",x"7A",x"00", -- 0x0130
x"38",x"38",x"08",x"08",x"00",x"00",x"00",x"00", -- 0x0138
x"0C",x"10",x"20",x"30",x"30",x"10",x"0C",x"00", -- 0x0140
x"30",x"08",x"04",x"0C",x"0C",x"08",x"30",x"00", -- 0x0148
x"08",x"2A",x"1C",x"3E",x"1C",x"2A",x"08",x"00", -- 0x0150
x"00",x"08",x"08",x"3E",x"3E",x"0C",x"0C",x"00", -- 0x0158
x"00",x"00",x"00",x"00",x"1C",x"1C",x"04",x"04", -- 0x0160
x"00",x"00",x"00",x"7E",x"7E",x"00",x"00",x"00", -- 0x0168
x"00",x"00",x"00",x"00",x"00",x"18",x"18",x"00", -- 0x0170
x"00",x"02",x"04",x"08",x"10",x"20",x"40",x"00", -- 0x0178
x"7E",x"42",x"46",x"6A",x"72",x"62",x"7E",x"00", -- 0x0180
x"38",x"08",x"08",x"18",x"18",x"18",x"3C",x"00", -- 0x0188
x"7E",x"42",x"02",x"7E",x"60",x"60",x"7E",x"00", -- 0x0190
x"3E",x"02",x"02",x"1E",x"06",x"06",x"7E",x"00", -- 0x0198
x"40",x"40",x"44",x"44",x"7E",x"0C",x"0C",x"00", -- 0x01A0
x"3E",x"20",x"20",x"3E",x"06",x"46",x"7E",x"00", -- 0x01A8
x"7E",x"40",x"40",x"7E",x"62",x"62",x"7E",x"00", -- 0x01B0
x"7E",x"42",x"04",x"08",x"18",x"18",x"18",x"00", -- 0x01B8
x"3C",x"24",x"24",x"7E",x"62",x"62",x"7E",x"00", -- 0x01C0
x"7E",x"42",x"42",x"7E",x"06",x"06",x"7E",x"00", -- 0x01C8
x"00",x"00",x"18",x"00",x"18",x"18",x"00",x"00", -- 0x01D0
x"00",x"00",x"1C",x"00",x"1C",x"1C",x"04",x"04", -- 0x01D8
x"0E",x"18",x"30",x"60",x"30",x"18",x"0E",x"00", -- 0x01E0
x"00",x"00",x"7E",x"00",x"7E",x"7E",x"00",x"00", -- 0x01E8
x"70",x"18",x"0C",x"06",x"0C",x"18",x"70",x"00", -- 0x01F0
x"7E",x"42",x"02",x"3E",x"30",x"00",x"30",x"00", -- 0x01F8
x"00",x"00",x"00",x"00",x"FF",x"00",x"00",x"00", -- 0x0200
x"18",x"3C",x"7E",x"7E",x"18",x"18",x"7E",x"00", -- 0x0208
x"10",x"10",x"10",x"10",x"10",x"10",x"10",x"10", -- 0x0210
x"00",x"00",x"00",x"FF",x"00",x"00",x"00",x"00", -- 0x0218
x"00",x"00",x"FF",x"00",x"00",x"00",x"00",x"00", -- 0x0220
x"00",x"FF",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0228
x"00",x"00",x"00",x"00",x"00",x"FF",x"00",x"00", -- 0x0230
x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20", -- 0x0238
x"04",x"04",x"04",x"04",x"04",x"04",x"04",x"04", -- 0x0240
x"00",x"00",x"00",x"C0",x"30",x"10",x"08",x"08", -- 0x0248
x"10",x"10",x"08",x"0C",x"03",x"00",x"00",x"00", -- 0x0250
x"08",x"08",x"10",x"30",x"C0",x"00",x"00",x"00", -- 0x0258
x"80",x"80",x"80",x"80",x"80",x"80",x"80",x"FF", -- 0x0260
x"80",x"40",x"20",x"10",x"08",x"04",x"02",x"01", -- 0x0268
x"01",x"02",x"04",x"08",x"10",x"20",x"40",x"80", -- 0x0270
x"FF",x"80",x"80",x"80",x"80",x"80",x"80",x"80", -- 0x0278
x"FF",x"01",x"01",x"01",x"01",x"01",x"01",x"01", -- 0x0280
x"3C",x"7E",x"7E",x"7E",x"7E",x"7E",x"3C",x"00", -- 0x0288
x"00",x"00",x"00",x"00",x"00",x"00",x"FF",x"00", -- 0x0290
x"24",x"7E",x"7E",x"7E",x"3C",x"18",x"18",x"00", -- 0x0298
x"40",x"40",x"40",x"40",x"40",x"40",x"40",x"40", -- 0x02A0
x"00",x"00",x"00",x"03",x"0C",x"08",x"10",x"10", -- 0x02A8
x"81",x"42",x"24",x"18",x"18",x"24",x"42",x"81", -- 0x02B0
x"3C",x"7E",x"66",x"42",x"66",x"7E",x"3C",x"00", -- 0x02B8
x"18",x"18",x"7E",x"7E",x"18",x"18",x"7E",x"00", -- 0x02C0
x"02",x"02",x"02",x"02",x"02",x"02",x"02",x"02", -- 0x02C8
x"00",x"18",x"3C",x"7E",x"7E",x"3C",x"18",x"00", -- 0x02D0
x"08",x"08",x"08",x"FF",x"08",x"08",x"08",x"08", -- 0x02D8
x"C0",x"30",x"C0",x"30",x"C0",x"30",x"C0",x"30", -- 0x02E0
x"08",x"08",x"08",x"08",x"08",x"08",x"08",x"08", -- 0x02E8
x"00",x"00",x"7C",x"24",x"64",x"64",x"66",x"00", -- 0x02F0
x"FF",x"7F",x"3F",x"1F",x"0F",x"07",x"03",x"01", -- 0x02F8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0300
x"F0",x"F0",x"F0",x"F0",x"F0",x"F0",x"F0",x"F0", -- 0x0308
x"00",x"00",x"00",x"00",x"FF",x"FF",x"FF",x"FF", -- 0x0310
x"FF",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0318
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"FF", -- 0x0320
x"80",x"80",x"80",x"80",x"80",x"80",x"80",x"80", -- 0x0328
x"CC",x"33",x"CC",x"33",x"CC",x"33",x"CC",x"33", -- 0x0330
x"01",x"01",x"01",x"01",x"01",x"01",x"01",x"01", -- 0x0338
x"00",x"00",x"00",x"00",x"CC",x"33",x"CC",x"33", -- 0x0340
x"FF",x"FE",x"FC",x"F8",x"F0",x"E0",x"C0",x"80", -- 0x0348
x"03",x"03",x"03",x"03",x"03",x"03",x"03",x"03", -- 0x0350
x"08",x"08",x"08",x"0F",x"08",x"08",x"08",x"08", -- 0x0358
x"00",x"00",x"00",x"00",x"0F",x"0F",x"0F",x"0F", -- 0x0360
x"08",x"08",x"08",x"0F",x"00",x"00",x"00",x"00", -- 0x0368
x"00",x"00",x"00",x"F8",x"08",x"08",x"08",x"08", -- 0x0370
x"00",x"00",x"00",x"00",x"00",x"00",x"FF",x"FF", -- 0x0378
x"00",x"00",x"00",x"0F",x"08",x"08",x"08",x"08", -- 0x0380
x"08",x"08",x"08",x"FF",x"00",x"00",x"00",x"00", -- 0x0388
x"00",x"00",x"00",x"FF",x"08",x"08",x"08",x"08", -- 0x0390
x"08",x"08",x"08",x"F8",x"08",x"08",x"08",x"08", -- 0x0398
x"C0",x"C0",x"C0",x"C0",x"C0",x"C0",x"C0",x"C0", -- 0x03A0
x"E0",x"E0",x"E0",x"E0",x"E0",x"E0",x"E0",x"E0", -- 0x03A8
x"07",x"07",x"07",x"07",x"07",x"07",x"07",x"07", -- 0x03B0
x"FF",x"FF",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x03B8
x"FF",x"FF",x"FF",x"00",x"00",x"00",x"00",x"00", -- 0x03C0
x"00",x"00",x"00",x"00",x"00",x"FF",x"FF",x"FF", -- 0x03C8
x"01",x"01",x"01",x"01",x"01",x"01",x"01",x"FF", -- 0x03D0
x"00",x"00",x"00",x"00",x"F0",x"F0",x"F0",x"F0", -- 0x03D8
x"0F",x"0F",x"0F",x"0F",x"00",x"00",x"00",x"00", -- 0x03E0
x"08",x"08",x"08",x"F8",x"00",x"00",x"00",x"00", -- 0x03E8
x"F0",x"F0",x"F0",x"F0",x"00",x"00",x"00",x"00", -- 0x03F0
x"F0",x"F0",x"F0",x"F0",x"0F",x"0F",x"0F",x"0F", -- 0x03F8
x"83",x"BF",x"83",x"BB",x"83",x"F3",x"F3",x"83", -- 0x0400
x"C3",x"DB",x"81",x"9D",x"9D",x"9D",x"9D",x"FF", -- 0x0408
x"83",x"DB",x"C1",x"CD",x"CD",x"CD",x"81",x"FF", -- 0x0410
x"81",x"BD",x"BF",x"9F",x"9F",x"9D",x"81",x"FF", -- 0x0418
x"81",x"DD",x"DD",x"CD",x"CD",x"CD",x"81",x"FF", -- 0x0420
x"81",x"BF",x"BF",x"87",x"9F",x"9F",x"81",x"FF", -- 0x0428
x"81",x"BF",x"BF",x"87",x"9F",x"9F",x"9F",x"FF", -- 0x0430
x"81",x"BD",x"BF",x"91",x"9D",x"9D",x"81",x"FF", -- 0x0438
x"BD",x"BD",x"BD",x"81",x"9D",x"9D",x"9D",x"FF", -- 0x0440
x"EF",x"EF",x"EF",x"E7",x"E7",x"E7",x"E7",x"FF", -- 0x0448
x"FD",x"FD",x"FD",x"F9",x"F9",x"B9",x"C3",x"FF", -- 0x0450
x"BD",x"BB",x"B7",x"81",x"9D",x"9D",x"9D",x"FF", -- 0x0458
x"BF",x"BF",x"BF",x"9F",x"9F",x"9F",x"81",x"FF", -- 0x0460
x"99",x"A5",x"BD",x"9D",x"9D",x"9D",x"9D",x"FF", -- 0x0468
x"8D",x"B5",x"B5",x"95",x"95",x"95",x"99",x"FF", -- 0x0470
x"81",x"BD",x"BD",x"9D",x"9D",x"9D",x"81",x"FF", -- 0x0478
x"81",x"BD",x"BD",x"81",x"9F",x"9F",x"9F",x"FF", -- 0x0480
x"81",x"BD",x"BD",x"9D",x"95",x"9B",x"85",x"FF", -- 0x0488
x"81",x"BD",x"BD",x"81",x"9B",x"9D",x"9D",x"FF", -- 0x0490
x"81",x"BD",x"BF",x"81",x"F9",x"B9",x"81",x"FF", -- 0x0498
x"83",x"EF",x"EF",x"E7",x"E7",x"E7",x"E7",x"FF", -- 0x04A0
x"BD",x"BD",x"BD",x"9D",x"9D",x"9D",x"81",x"FF", -- 0x04A8
x"BD",x"BD",x"BD",x"DB",x"DB",x"E7",x"E7",x"FF", -- 0x04B0
x"9D",x"9D",x"9D",x"9D",x"BD",x"A5",x"99",x"FF", -- 0x04B8
x"BD",x"DB",x"E7",x"83",x"9D",x"9D",x"9D",x"FF", -- 0x04C0
x"BD",x"BD",x"BD",x"C3",x"E7",x"E7",x"E7",x"FF", -- 0x04C8
x"81",x"FD",x"E3",x"9F",x"9F",x"9F",x"81",x"FF", -- 0x04D0
x"C3",x"DF",x"DF",x"CF",x"CF",x"CF",x"C3",x"FF", -- 0x04D8
x"E7",x"DF",x"DF",x"87",x"9F",x"9F",x"83",x"FF", -- 0x04E0
x"C3",x"FB",x"FB",x"F3",x"F3",x"F3",x"C3",x"FF", -- 0x04E8
x"F7",x"E3",x"D5",x"F7",x"F7",x"F7",x"F7",x"FF", -- 0x04F0
x"FF",x"DF",x"BF",x"01",x"BF",x"DF",x"FF",x"FF", -- 0x04F8
x"FF",x"FF",x"FF",x"FF",x"FF",x"FF",x"FF",x"FF", -- 0x0500
x"E7",x"E7",x"E3",x"E3",x"E3",x"FF",x"E3",x"FF", -- 0x0508
x"C9",x"C9",x"ED",x"ED",x"FF",x"FF",x"FF",x"FF", -- 0x0510
x"DB",x"DB",x"81",x"CB",x"81",x"CB",x"CB",x"FF", -- 0x0518
x"F7",x"C1",x"D7",x"C1",x"E5",x"C1",x"E7",x"FF", -- 0x0520
x"8F",x"AD",x"8B",x"F7",x"E1",x"D5",x"B1",x"FF", -- 0x0528
x"87",x"B7",x"CF",x"8F",x"95",x"9B",x"85",x"FF", -- 0x0530
x"C7",x"C7",x"F7",x"F7",x"FF",x"FF",x"FF",x"FF", -- 0x0538
x"F3",x"EF",x"DF",x"CF",x"CF",x"EF",x"F3",x"FF", -- 0x0540
x"CF",x"F7",x"FB",x"F3",x"F3",x"F7",x"CF",x"FF", -- 0x0548
x"F7",x"D5",x"E3",x"C1",x"E3",x"D5",x"F7",x"FF", -- 0x0550
x"FF",x"F7",x"F7",x"C1",x"C1",x"F3",x"F3",x"FF", -- 0x0558
x"FF",x"FF",x"FF",x"FF",x"E3",x"E3",x"FB",x"FB", -- 0x0560
x"FF",x"FF",x"FF",x"81",x"81",x"FF",x"FF",x"FF", -- 0x0568
x"FF",x"FF",x"FF",x"FF",x"FF",x"E7",x"E7",x"FF", -- 0x0570
x"FF",x"FD",x"FB",x"F7",x"EF",x"DF",x"BF",x"FF", -- 0x0578
x"81",x"BD",x"B9",x"95",x"8D",x"9D",x"81",x"FF", -- 0x0580
x"C7",x"F7",x"F7",x"E7",x"E7",x"E7",x"C3",x"FF", -- 0x0588
x"81",x"BD",x"FD",x"81",x"9F",x"9F",x"81",x"FF", -- 0x0590
x"C1",x"FD",x"FD",x"E1",x"F9",x"F9",x"81",x"FF", -- 0x0598
x"BF",x"BF",x"BB",x"BB",x"81",x"F3",x"F3",x"FF", -- 0x05A0
x"C1",x"DF",x"DF",x"C1",x"F9",x"B9",x"81",x"FF", -- 0x05A8
x"81",x"BF",x"BF",x"81",x"9D",x"9D",x"81",x"FF", -- 0x05B0
x"81",x"BD",x"FB",x"F7",x"E7",x"E7",x"E7",x"FF", -- 0x05B8
x"C3",x"DB",x"DB",x"81",x"9D",x"9D",x"81",x"FF", -- 0x05C0
x"81",x"BD",x"BD",x"81",x"F9",x"F9",x"81",x"FF", -- 0x05C8
x"FF",x"FF",x"E7",x"FF",x"E7",x"E7",x"FF",x"FF", -- 0x05D0
x"FF",x"FF",x"E3",x"FF",x"E3",x"E3",x"FB",x"FB", -- 0x05D8
x"F1",x"E7",x"CF",x"9F",x"CF",x"E7",x"F1",x"FF", -- 0x05E0
x"FF",x"FF",x"81",x"FF",x"81",x"81",x"FF",x"FF", -- 0x05E8
x"8F",x"E7",x"F3",x"F9",x"F3",x"E7",x"8F",x"FF", -- 0x05F0
x"81",x"BD",x"FD",x"C1",x"CF",x"FF",x"CF",x"FF", -- 0x05F8
x"FF",x"FF",x"FF",x"FF",x"00",x"FF",x"FF",x"FF", -- 0x0600
x"E7",x"C3",x"81",x"81",x"E7",x"E7",x"81",x"FF", -- 0x0608
x"EF",x"EF",x"EF",x"EF",x"EF",x"EF",x"EF",x"EF", -- 0x0610
x"FF",x"FF",x"FF",x"00",x"FF",x"FF",x"FF",x"FF", -- 0x0618
x"FF",x"FF",x"00",x"FF",x"FF",x"FF",x"FF",x"FF", -- 0x0620
x"FF",x"00",x"FF",x"FF",x"FF",x"FF",x"FF",x"FF", -- 0x0628
x"FF",x"FF",x"FF",x"FF",x"FF",x"00",x"FF",x"FF", -- 0x0630
x"DF",x"DF",x"DF",x"DF",x"DF",x"DF",x"DF",x"DF", -- 0x0638
x"FB",x"FB",x"FB",x"FB",x"FB",x"FB",x"FB",x"FB", -- 0x0640
x"FF",x"FF",x"FF",x"3F",x"CF",x"EF",x"F7",x"F7", -- 0x0648
x"EF",x"EF",x"F7",x"F3",x"FC",x"FF",x"FF",x"FF", -- 0x0650
x"F7",x"F7",x"EF",x"CF",x"3F",x"FF",x"FF",x"FF", -- 0x0658
x"7F",x"7F",x"7F",x"7F",x"7F",x"7F",x"7F",x"00", -- 0x0660
x"7F",x"BF",x"DF",x"EF",x"F7",x"FB",x"FD",x"FE", -- 0x0668
x"FE",x"FD",x"FB",x"F7",x"EF",x"DF",x"BF",x"7F", -- 0x0670
x"00",x"7F",x"7F",x"7F",x"7F",x"7F",x"7F",x"7F", -- 0x0678
x"00",x"FE",x"FE",x"FE",x"FE",x"FE",x"FE",x"FE", -- 0x0680
x"C3",x"81",x"81",x"81",x"81",x"81",x"C3",x"FF", -- 0x0688
x"FF",x"FF",x"FF",x"FF",x"FF",x"FF",x"00",x"FF", -- 0x0690
x"DB",x"81",x"81",x"81",x"C3",x"E7",x"E7",x"FF", -- 0x0698
x"BF",x"BF",x"BF",x"BF",x"BF",x"BF",x"BF",x"BF", -- 0x06A0
x"FF",x"FF",x"FF",x"FC",x"F3",x"F7",x"EF",x"EF", -- 0x06A8
x"7E",x"BD",x"DB",x"E7",x"E7",x"DB",x"BD",x"7E", -- 0x06B0
x"C3",x"81",x"99",x"BD",x"99",x"81",x"C3",x"FF", -- 0x06B8
x"E7",x"E7",x"81",x"81",x"E7",x"E7",x"81",x"FF", -- 0x06C0
x"FD",x"FD",x"FD",x"FD",x"FD",x"FD",x"FD",x"FD", -- 0x06C8
x"FF",x"E7",x"C3",x"81",x"81",x"C3",x"E7",x"FF", -- 0x06D0
x"F7",x"F7",x"F7",x"00",x"F7",x"F7",x"F7",x"F7", -- 0x06D8
x"3F",x"CF",x"3F",x"CF",x"3F",x"CF",x"3F",x"CF", -- 0x06E0
x"F7",x"F7",x"F7",x"F7",x"F7",x"F7",x"F7",x"F7", -- 0x06E8
x"FF",x"FF",x"83",x"DB",x"9B",x"9B",x"99",x"FF", -- 0x06F0
x"00",x"80",x"C0",x"E0",x"F0",x"F8",x"FC",x"FE", -- 0x06F8
x"FF",x"FF",x"FF",x"FF",x"FF",x"FF",x"FF",x"FF", -- 0x0700
x"0F",x"0F",x"0F",x"0F",x"0F",x"0F",x"0F",x"0F", -- 0x0708
x"FF",x"FF",x"FF",x"FF",x"00",x"00",x"00",x"00", -- 0x0710
x"00",x"FF",x"FF",x"FF",x"FF",x"FF",x"FF",x"FF", -- 0x0718
x"FF",x"FF",x"FF",x"FF",x"FF",x"FF",x"FF",x"00", -- 0x0720
x"7F",x"7F",x"7F",x"7F",x"7F",x"7F",x"7F",x"7F", -- 0x0728
x"33",x"CC",x"33",x"CC",x"33",x"CC",x"33",x"CC", -- 0x0730
x"FE",x"FE",x"FE",x"FE",x"FE",x"FE",x"FE",x"FE", -- 0x0738
x"FF",x"FF",x"FF",x"FF",x"33",x"CC",x"33",x"CC", -- 0x0740
x"00",x"01",x"03",x"07",x"0F",x"1F",x"3F",x"7F", -- 0x0748
x"FC",x"FC",x"FC",x"FC",x"FC",x"FC",x"FC",x"FC", -- 0x0750
x"F7",x"F7",x"F7",x"F0",x"F7",x"F7",x"F7",x"F7", -- 0x0758
x"FF",x"FF",x"FF",x"FF",x"F0",x"F0",x"F0",x"F0", -- 0x0760
x"F7",x"F7",x"F7",x"F0",x"FF",x"FF",x"FF",x"FF", -- 0x0768
x"FF",x"FF",x"FF",x"07",x"F7",x"F7",x"F7",x"F7", -- 0x0770
x"FF",x"FF",x"FF",x"FF",x"FF",x"FF",x"00",x"00", -- 0x0778
x"FF",x"FF",x"FF",x"F0",x"F7",x"F7",x"F7",x"F7", -- 0x0780
x"F7",x"F7",x"F7",x"00",x"FF",x"FF",x"FF",x"FF", -- 0x0788
x"FF",x"FF",x"FF",x"00",x"F7",x"F7",x"F7",x"F7", -- 0x0790
x"F7",x"F7",x"F7",x"07",x"F7",x"F7",x"F7",x"F7", -- 0x0798
x"3F",x"3F",x"3F",x"3F",x"3F",x"3F",x"3F",x"3F", -- 0x07A0
x"1F",x"1F",x"1F",x"1F",x"1F",x"1F",x"1F",x"1F", -- 0x07A8
x"F8",x"F8",x"F8",x"F8",x"F8",x"F8",x"F8",x"F8", -- 0x07B0
x"00",x"00",x"FF",x"FF",x"FF",x"FF",x"FF",x"FF", -- 0x07B8
x"00",x"00",x"00",x"FF",x"FF",x"FF",x"FF",x"FF", -- 0x07C0
x"FF",x"FF",x"FF",x"FF",x"FF",x"00",x"00",x"00", -- 0x07C8
x"FE",x"FE",x"FE",x"FE",x"FE",x"FE",x"FE",x"00", -- 0x07D0
x"FF",x"FF",x"FF",x"FF",x"0F",x"0F",x"0F",x"0F", -- 0x07D8
x"F0",x"F0",x"F0",x"F0",x"FF",x"FF",x"FF",x"FF", -- 0x07E0
x"F7",x"F7",x"F7",x"07",x"FF",x"FF",x"FF",x"FF", -- 0x07E8
x"0F",x"0F",x"0F",x"0F",x"FF",x"FF",x"FF",x"FF", -- 0x07F0
x"0F",x"0F",x"0F",x"0F",x"F0",x"F0",x"F0",x"00", -- 0x07F8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0800
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0808
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0810
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0818
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0820
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0828
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0830
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0838
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0840
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0848
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0850
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0858
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0860
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0868
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0870
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0878
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0880
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0888
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0890
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0898
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08A0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08A8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08B0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08B8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08C0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08C8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08D0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08D8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08E0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08E8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08F0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08F8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0900
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0908
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0910
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0918
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0920
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0928
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0930
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0938
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0940
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0948
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0950
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0958
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0960
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0968
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0970
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0978
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0980
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0988
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0990
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0998
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09A0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09A8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09B0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09B8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09C0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09C8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09D0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09D8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09E0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09E8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09F0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09F8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A00
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A08
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A10
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A18
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A20
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A28
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A30
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A38
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A40
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A48
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A50
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A58
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A60
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A68
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A70
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A78
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A80
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A88
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A90
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A98
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AA0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AA8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AB0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AB8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AC0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AC8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AD0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AD8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AE0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AE8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AF0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AF8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B00
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B08
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B10
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B18
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B20
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B28
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B30
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B38
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B40
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B48
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B50
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B58
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B60
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B68
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B70
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B78
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B80
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B88
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B90
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B98
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BA0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BA8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BB0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BB8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BC0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BC8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BD0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BD8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BE0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BE8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BF0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BF8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C00
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C08
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C10
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C18
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C20
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C28
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C30
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C38
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C40
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C48
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C50
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C58
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C60
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C68
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C70
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C78
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C80
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C88
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C90
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C98
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CA0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CA8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CB0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CB8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CC0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CC8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CD0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CD8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CE0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CE8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CF0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CF8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D00
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D08
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D10
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D18
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D20
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D28
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D30
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D38
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D40
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D48
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D50
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D58
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D60
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D68
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D70
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D78
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D80
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D88
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D90
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D98
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DA0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DA8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DB0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DB8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DC0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DC8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DD0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DD8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DE0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DE8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DF0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DF8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E00
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E08
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E10
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E18
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E20
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E28
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E30
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E38
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E40
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E48
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E50
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E58
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E60
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E68
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E70
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E78
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E80
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E88
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E90
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E98
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0EA0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0EA8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0EB0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0EB8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0EC0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0EC8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0ED0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0ED8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0EE0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0EE8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0EF0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0EF8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F00
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F08
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F10
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F18
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F20
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F28
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F30
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F38
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F40
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F48
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F50
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F58
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F60
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F68
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F70
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F78
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F80
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F88
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F90
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F98
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FA0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FA8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FB0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FB8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FC0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FC8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FD0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FD8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FE0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FE8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FF0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00" -- 0x0FF8
);
begin
p_rom : process
begin
wait until rising_edge(CLK);
DATA <= ROM(to_integer(unsigned(ADDR)));
end process;
end RTL;
@@ -0,0 +1,539 @@
library ieee;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
entity char_rom is
port (
CLK : in std_logic;
ADDR : in unsigned(11 downto 0);
DATA : out unsigned(7 downto 0)
);
end;
architecture RTL of char_rom is
type ROM_ARRAY is array(0 to 4095) of unsigned(7 downto 0);
constant ROM : ROM_ARRAY := (
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0000
x"08",x"14",x"14",x"22",x"3E",x"41",x"41",x"80", -- 0x0008
x"FC",x"42",x"42",x"7C",x"42",x"42",x"42",x"FC", -- 0x0010
x"3C",x"46",x"40",x"40",x"40",x"40",x"46",x"3C", -- 0x0018
x"FC",x"42",x"42",x"42",x"42",x"42",x"42",x"FC", -- 0x0020
x"FC",x"46",x"50",x"70",x"50",x"40",x"46",x"FC", -- 0x0028
x"FC",x"46",x"50",x"70",x"50",x"40",x"40",x"E0", -- 0x0030
x"3C",x"46",x"40",x"4E",x"44",x"44",x"44",x"3C", -- 0x0038
x"EE",x"44",x"44",x"7C",x"44",x"44",x"44",x"EE", -- 0x0040
x"1C",x"08",x"08",x"08",x"08",x"08",x"08",x"1C", -- 0x0048
x"1C",x"08",x"08",x"08",x"08",x"08",x"C8",x"70", -- 0x0050
x"E6",x"48",x"50",x"60",x"50",x"48",x"44",x"EE", -- 0x0058
x"E0",x"40",x"40",x"40",x"40",x"40",x"46",x"FC", -- 0x0060
x"C6",x"6C",x"6C",x"54",x"54",x"44",x"44",x"EE", -- 0x0068
x"CE",x"64",x"64",x"54",x"54",x"4C",x"4C",x"E6", -- 0x0070
x"3C",x"42",x"42",x"42",x"42",x"42",x"42",x"3C", -- 0x0078
x"FC",x"42",x"42",x"7C",x"40",x"40",x"40",x"E0", -- 0x0080
x"3C",x"42",x"42",x"42",x"42",x"4A",x"46",x"3D", -- 0x0088
x"FC",x"42",x"42",x"7C",x"50",x"48",x"44",x"EE", -- 0x0090
x"3C",x"42",x"40",x"20",x"1C",x"02",x"C2",x"7C", -- 0x0098
x"FE",x"92",x"10",x"10",x"10",x"10",x"10",x"38", -- 0x00A0
x"E7",x"42",x"42",x"42",x"42",x"42",x"42",x"3C", -- 0x00A8
x"E7",x"42",x"42",x"42",x"42",x"42",x"24",x"18", -- 0x00B0
x"C3",x"41",x"5D",x"49",x"49",x"55",x"63",x"41", -- 0x00B8
x"EE",x"44",x"28",x"10",x"10",x"28",x"44",x"EE", -- 0x00C0
x"EE",x"44",x"44",x"28",x"10",x"10",x"10",x"38", -- 0x00C8
x"FE",x"84",x"08",x"7C",x"24",x"40",x"82",x"FE", -- 0x00D0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x00D8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x00E0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x00E8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x00F0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x00F8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0100
x"10",x"10",x"10",x"10",x"10",x"00",x"10",x"10", -- 0x0108
x"CC",x"44",x"44",x"22",x"00",x"00",x"00",x"00", -- 0x0110
x"77",x"22",x"FF",x"22",x"22",x"FF",x"22",x"77", -- 0x0118
x"10",x"3E",x"50",x"3C",x"12",x"12",x"7C",x"10", -- 0x0120
x"87",x"42",x"04",x"08",x"10",x"20",x"44",x"E2", -- 0x0128
x"3C",x"66",x"3C",x"38",x"67",x"66",x"3F",x"00", -- 0x0130
x"1E",x"08",x"3C",x"00",x"00",x"00",x"00",x"00", -- 0x0138
x"0E",x"12",x"60",x"40",x"40",x"60",x"12",x"0E", -- 0x0140
x"70",x"48",x"06",x"02",x"02",x"06",x"48",x"70", -- 0x0148
x"42",x"24",x"99",x"7E",x"99",x"24",x"42",x"00", -- 0x0150
x"08",x"08",x"08",x"7F",x"08",x"08",x"08",x"00", -- 0x0158
x"00",x"00",x"00",x"00",x"00",x"18",x"18",x"30", -- 0x0160
x"00",x"00",x"00",x"7E",x"00",x"00",x"00",x"00", -- 0x0168
x"00",x"00",x"00",x"00",x"00",x"18",x"18",x"00", -- 0x0170
x"00",x"03",x"06",x"0C",x"18",x"30",x"60",x"00", -- 0x0178
x"7C",x"82",x"82",x"82",x"82",x"82",x"82",x"7C", -- 0x0180
x"10",x"30",x"50",x"10",x"10",x"10",x"10",x"7C", -- 0x0188
x"7C",x"C2",x"02",x"1C",x"60",x"80",x"86",x"FC", -- 0x0190
x"7C",x"C2",x"02",x"1C",x"02",x"02",x"C2",x"7C", -- 0x0198
x"08",x"18",x"28",x"48",x"FE",x"08",x"08",x"3E", -- 0x01A0
x"FE",x"80",x"80",x"FC",x"02",x"02",x"C2",x"7C", -- 0x01A8
x"7C",x"86",x"80",x"FC",x"82",x"82",x"82",x"7C", -- 0x01B0
x"7E",x"C2",x"04",x"08",x"10",x"10",x"10",x"7C", -- 0x01B8
x"7C",x"82",x"82",x"7C",x"82",x"82",x"82",x"7C", -- 0x01C0
x"7C",x"82",x"82",x"7E",x"02",x"02",x"C2",x"7C", -- 0x01C8
x"00",x"00",x"18",x"00",x"00",x"18",x"00",x"00", -- 0x01D0
x"00",x"00",x"18",x"00",x"00",x"18",x"18",x"30", -- 0x01D8
x"0E",x"18",x"30",x"60",x"30",x"18",x"0E",x"00", -- 0x01E0
x"00",x"00",x"7E",x"00",x"7E",x"00",x"00",x"00", -- 0x01E8
x"70",x"18",x"0C",x"06",x"0C",x"18",x"70",x"00", -- 0x01F0
x"3C",x"62",x"02",x"04",x"08",x"08",x"00",x"08", -- 0x01F8
x"3C",x"66",x"6E",x"6E",x"60",x"62",x"3C",x"00", -- 0x0200
x"FE",x"FE",x"C6",x"FE",x"C6",x"C6",x"C6",x"C6", -- 0x0208
x"FE",x"FE",x"C6",x"FC",x"C6",x"C6",x"FE",x"FE", -- 0x0210
x"FE",x"FE",x"C0",x"C0",x"C0",x"C0",x"FE",x"FE", -- 0x0218
x"FE",x"FE",x"C6",x"C6",x"C6",x"C6",x"FE",x"FE", -- 0x0220
x"FE",x"FE",x"C0",x"FE",x"C0",x"C0",x"FE",x"FE", -- 0x0228
x"FE",x"FE",x"C0",x"FE",x"C0",x"C0",x"C0",x"C0", -- 0x0230
x"FE",x"FE",x"C0",x"DE",x"C6",x"C6",x"FE",x"FE", -- 0x0238
x"C6",x"C6",x"C6",x"FE",x"C6",x"C6",x"C6",x"C6", -- 0x0240
x"18",x"18",x"18",x"18",x"18",x"18",x"18",x"18", -- 0x0248
x"18",x"18",x"18",x"18",x"18",x"18",x"78",x"78", -- 0x0250
x"C6",x"C6",x"DC",x"F0",x"D8",x"CC",x"C6",x"C6", -- 0x0258
x"C0",x"C0",x"C0",x"C0",x"C0",x"C0",x"FE",x"FE", -- 0x0260
x"FE",x"FE",x"D6",x"D6",x"D6",x"D6",x"D6",x"D6", -- 0x0268
x"E6",x"E6",x"F6",x"D6",x"D6",x"DE",x"CE",x"CE", -- 0x0270
x"FE",x"FE",x"C6",x"C6",x"C6",x"C6",x"FE",x"FE", -- 0x0278
x"FE",x"FE",x"C6",x"FE",x"C0",x"C0",x"C0",x"C0", -- 0x0280
x"FE",x"FE",x"C6",x"C6",x"C6",x"CE",x"FE",x"FF", -- 0x0288
x"FE",x"FE",x"C6",x"FE",x"D8",x"D8",x"C6",x"C6", -- 0x0290
x"FE",x"FE",x"C0",x"FE",x"06",x"06",x"FE",x"FE", -- 0x0298
x"FE",x"FE",x"18",x"18",x"18",x"18",x"18",x"18", -- 0x02A0
x"C6",x"C6",x"C6",x"C6",x"C6",x"C6",x"FE",x"FE", -- 0x02A8
x"C6",x"C6",x"C6",x"C6",x"C6",x"C6",x"FE",x"7C", -- 0x02B0
x"D6",x"D6",x"D6",x"D6",x"D6",x"D6",x"FE",x"FE", -- 0x02B8
x"C6",x"C6",x"6C",x"38",x"38",x"6C",x"C6",x"C6", -- 0x02C0
x"C6",x"C6",x"C6",x"FE",x"06",x"06",x"FE",x"FE", -- 0x02C8
x"FE",x"FE",x"0E",x"18",x"30",x"E0",x"FE",x"FE", -- 0x02D0
x"3C",x"30",x"30",x"30",x"30",x"30",x"3C",x"00", -- 0x02D8
x"0C",x"12",x"30",x"7C",x"30",x"62",x"FC",x"00", -- 0x02E0
x"3C",x"0C",x"0C",x"0C",x"0C",x"0C",x"3C",x"00", -- 0x02E8
x"00",x"18",x"3C",x"7E",x"18",x"18",x"18",x"18", -- 0x02F0
x"00",x"10",x"30",x"7F",x"7F",x"30",x"10",x"00", -- 0x02F8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0300
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0308
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0310
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0318
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0320
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0328
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0330
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0338
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0340
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0348
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0350
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0358
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0360
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0368
x"00",x"00",x"00",x"07",x"1F",x"3F",x"3F",x"7F", -- 0x0370
x"00",x"00",x"00",x"E0",x"E0",x"E0",x"E0",x"E0", -- 0x0378
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0380
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0388
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0390
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0398
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x03A0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x03A8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x03B0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x03B8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x03C0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x03C8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x03D0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x03D8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x03E0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x03E8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x03F0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x03F8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0400
x"03",x"1F",x"7F",x"7F",x"7F",x"7F",x"7F",x"7F", -- 0x0408
x"FC",x"FF",x"FF",x"FF",x"FF",x"FF",x"FF",x"0F", -- 0x0410
x"00",x"80",x"E0",x"F8",x"F8",x"FE",x"FE",x"FE", -- 0x0418
x"00",x"00",x"00",x"00",x"00",x"00",x"07",x"07", -- 0x0420
x"00",x"00",x"00",x"00",x"00",x"00",x"F8",x"FE", -- 0x0428
x"3F",x"3F",x"3F",x"3F",x"3F",x"3F",x"3F",x"3F", -- 0x0430
x"00",x"00",x"00",x"00",x"00",x"00",x"F0",x"F0", -- 0x0438
x"00",x"00",x"00",x"00",x"00",x"00",x"7F",x"7F", -- 0x0440
x"00",x"00",x"00",x"00",x"00",x"00",x"80",x"E0", -- 0x0448
x"00",x"00",x"00",x"00",x"00",x"00",x"0F",x"3F", -- 0x0450
x"00",x"00",x"00",x"00",x"00",x"00",x"C0",x"C0", -- 0x0458
x"00",x"00",x"00",x"00",x"00",x"00",x"1F",x"7F", -- 0x0460
x"00",x"00",x"00",x"00",x"00",x"00",x"E0",x"F8", -- 0x0468
x"7E",x"7E",x"7E",x"7E",x"7E",x"7E",x"7F",x"7F", -- 0x0470
x"0F",x"0F",x"0F",x"0F",x"0F",x"0F",x"FF",x"FF", -- 0x0478
x"C0",x"C0",x"C0",x"C0",x"C0",x"C0",x"FC",x"FC", -- 0x0480
x"07",x"07",x"07",x"07",x"07",x"07",x"07",x"07", -- 0x0488
x"F0",x"F0",x"F0",x"F0",x"F0",x"F0",x"F0",x"F1", -- 0x0490
x"00",x"00",x"00",x"00",x"00",x"00",x"7F",x"FF", -- 0x0498
x"00",x"00",x"00",x"00",x"00",x"00",x"80",x"E0", -- 0x04A0
x"00",x"00",x"00",x"00",x"00",x"00",x"0F",x"3F", -- 0x04A8
x"00",x"00",x"00",x"00",x"00",x"00",x"F0",x"F0", -- 0x04B0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x04B8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x04C0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x04C8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x04D0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x04D8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x04E0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x04E8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x04F0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x04F8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0500
x"7F",x"7F",x"7F",x"7F",x"7F",x"7F",x"7F",x"7F", -- 0x0508
x"03",x"01",x"01",x"01",x"01",x"01",x"01",x"01", -- 0x0510
x"FE",x"FE",x"FE",x"FE",x"FE",x"FE",x"FE",x"FE", -- 0x0518
x"07",x"07",x"07",x"00",x"00",x"07",x"0F",x"3F", -- 0x0520
x"FE",x"FF",x"FF",x"7F",x"3F",x"FF",x"FF",x"FF", -- 0x0528
x"3F",x"3F",x"3F",x"3F",x"3F",x"3F",x"3F",x"3F", -- 0x0530
x"F0",x"F0",x"F0",x"00",x"00",x"00",x"00",x"03", -- 0x0538
x"7F",x"7F",x"7F",x"07",x"03",x"7F",x"FF",x"FF", -- 0x0540
x"E0",x"F0",x"F1",x"F1",x"F3",x"F3",x"F3",x"F1", -- 0x0548
x"7F",x"FF",x"FF",x"FC",x"F0",x"F0",x"F0",x"F8", -- 0x0550
x"C0",x"C1",x"C1",x"03",x"03",x"03",x"03",x"03", -- 0x0558
x"FF",x"FF",x"FF",x"FF",x"F8",x"F0",x"F0",x"F0", -- 0x0560
x"FC",x"FE",x"FE",x"FF",x"7F",x"3F",x"3F",x"3F", -- 0x0568
x"7F",x"7F",x"7F",x"7E",x"7E",x"7E",x"7E",x"7E", -- 0x0570
x"FF",x"FF",x"FF",x"0F",x"0F",x"0F",x"0F",x"0F", -- 0x0578
x"FC",x"FC",x"FC",x"C0",x"C0",x"C0",x"C0",x"C0", -- 0x0580
x"07",x"07",x"07",x"07",x"07",x"07",x"07",x"07", -- 0x0588
x"F3",x"F3",x"F3",x"F3",x"F3",x"F3",x"F3",x"F3", -- 0x0590
x"FF",x"FF",x"FF",x"F3",x"F1",x"F1",x"F1",x"F1", -- 0x0598
x"F0",x"F0",x"F8",x"F9",x"F9",x"F9",x"F9",x"F9", -- 0x05A0
x"7F",x"FF",x"FF",x"FC",x"F8",x"F8",x"F8",x"F8", -- 0x05A8
x"F0",x"F0",x"F0",x"00",x"00",x"00",x"00",x"00", -- 0x05B0
x"3C",x"42",x"B9",x"A5",x"B9",x"A9",x"A5",x"42", -- 0x05B8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x05C0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x05C8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x05D0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x05D8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x05E0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x05E8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x05F0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x05F8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0600
x"7F",x"7F",x"7F",x"7F",x"7F",x"7F",x"7F",x"7F", -- 0x0608
x"01",x"01",x"03",x"0F",x"7F",x"7F",x"7F",x"7F", -- 0x0610
x"FE",x"FE",x"FE",x"FE",x"FE",x"FE",x"FC",x"FC", -- 0x0618
x"3F",x"7F",x"7E",x"7C",x"7E",x"7F",x"3F",x"3F", -- 0x0620
x"FF",x"FF",x"3F",x"3F",x"3F",x"BF",x"BF",x"BF", -- 0x0628
x"3F",x"3F",x"3F",x"3F",x"3F",x"3F",x"3F",x"1F", -- 0x0630
x"03",x"07",x"07",x"07",x"07",x"F7",x"F3",x"F3", -- 0x0638
x"FF",x"FF",x"E3",x"C3",x"E3",x"FB",x"FB",x"FB", -- 0x0640
x"F1",x"F0",x"F0",x"F0",x"F0",x"F0",x"F0",x"F0", -- 0x0648
x"FC",x"FE",x"7F",x"3F",x"1F",x"0F",x"07",x"03", -- 0x0650
x"03",x"03",x"83",x"C3",x"E3",x"F1",x"F1",x"F0", -- 0x0658
x"F0",x"F0",x"F0",x"F0",x"F8",x"FF",x"FF",x"FF", -- 0x0660
x"3F",x"3F",x"3F",x"3F",x"7F",x"FE",x"FE",x"FC", -- 0x0668
x"7E",x"7E",x"7E",x"7E",x"7E",x"7E",x"7E",x"7E", -- 0x0670
x"0F",x"0F",x"0F",x"0F",x"0F",x"0F",x"0F",x"07", -- 0x0678
x"C0",x"C0",x"C0",x"C0",x"C0",x"FC",x"FC",x"FC", -- 0x0680
x"07",x"07",x"07",x"07",x"07",x"07",x"07",x"07", -- 0x0688
x"F3",x"F3",x"F3",x"F3",x"F3",x"F3",x"F3",x"F3", -- 0x0690
x"F1",x"F1",x"F1",x"F1",x"F1",x"F1",x"F1",x"F1", -- 0x0698
x"F9",x"F9",x"F9",x"F9",x"F9",x"F8",x"F8",x"F8", -- 0x06A0
x"F8",x"F8",x"F8",x"F8",x"FC",x"FF",x"FF",x"7F", -- 0x06A8
x"00",x"00",x"00",x"00",x"00",x"FC",x"FC",x"FC", -- 0x06B0
x"3C",x"00",x"00",x"00",x"78",x"FC",x"FC",x"FC", -- 0x06B8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x06C0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x06C8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x06D0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x06D8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x06E0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x06E8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x06F0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x06F8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0700
x"7F",x"7F",x"7F",x"00",x"00",x"00",x"00",x"00", -- 0x0708
x"7F",x"7F",x"7F",x"00",x"00",x"00",x"00",x"00", -- 0x0710
x"F0",x"E0",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0718
x"0F",x"07",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0720
x"BF",x"BF",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0728
x"1F",x"07",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0730
x"F0",x"F0",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0738
x"FB",x"7B",x"03",x"01",x"00",x"00",x"00",x"00", -- 0x0740
x"F0",x"F8",x"FE",x"FF",x"FF",x"FF",x"3F",x"07", -- 0x0748
x"03",x"07",x"1F",x"FF",x"FF",x"FF",x"FE",x"F0", -- 0x0750
x"F0",x"F0",x"E0",x"E0",x"C0",x"80",x"00",x"00", -- 0x0758
x"7F",x"1F",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0760
x"F8",x"E0",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0768
x"7E",x"7E",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0770
x"07",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0778
x"FC",x"FC",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0780
x"07",x"07",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0788
x"F3",x"F3",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0790
x"F1",x"F1",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0798
x"F8",x"F8",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x07A0
x"3F",x"0F",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x07A8
x"FC",x"FC",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x07B0
x"FC",x"78",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x07B8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x07C0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x07C8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x07D0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x07D8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x07E0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x07E8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x07F0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x07F8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0800
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0808
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0810
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0818
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0820
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0828
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0830
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0838
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0840
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0848
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0850
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0858
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0860
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0868
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0870
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0878
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0880
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0888
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0890
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0898
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08A0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08A8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08B0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08B8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08C0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08C8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08D0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08D8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08E0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08E8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08F0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08F8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0900
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0908
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0910
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0918
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0920
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0928
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0930
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0938
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0940
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0948
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0950
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0958
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0960
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0968
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0970
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0978
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0980
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0988
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0990
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0998
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09A0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09A8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09B0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09B8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09C0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09C8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09D0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09D8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09E0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09E8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09F0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09F8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A00
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A08
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A10
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A18
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A20
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A28
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A30
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A38
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A40
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A48
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A50
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A58
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A60
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A68
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A70
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A78
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A80
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A88
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A90
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A98
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AA0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AA8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AB0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AB8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AC0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AC8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AD0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AD8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AE0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AE8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AF0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AF8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B00
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B08
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B10
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B18
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B20
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B28
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B30
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B38
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B40
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B48
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B50
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B58
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B60
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B68
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B70
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B78
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B80
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B88
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B90
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B98
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BA0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BA8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BB0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BB8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BC0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BC8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BD0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BD8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BE0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BE8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BF0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BF8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C00
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C08
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C10
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C18
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C20
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C28
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C30
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C38
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C40
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C48
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C50
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C58
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C60
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C68
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C70
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C78
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C80
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C88
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C90
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C98
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CA0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CA8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CB0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CB8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CC0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CC8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CD0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CD8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CE0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CE8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CF0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CF8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D00
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D08
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D10
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D18
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D20
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D28
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D30
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D38
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D40
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D48
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D50
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D58
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D60
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D68
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D70
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D78
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D80
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D88
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D90
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D98
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DA0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DA8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DB0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DB8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DC0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DC8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DD0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DD8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DE0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DE8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DF0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DF8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E00
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E08
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E10
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E18
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E20
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E28
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E30
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E38
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E40
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E48
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E50
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E58
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E60
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E68
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E70
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E78
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E80
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E88
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E90
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E98
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0EA0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0EA8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0EB0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0EB8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0EC0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0EC8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0ED0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0ED8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0EE0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0EE8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0EF0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0EF8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F00
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F08
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F10
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F18
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F20
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F28
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F30
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F38
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F40
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F48
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F50
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F58
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F60
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F68
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F70
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F78
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F80
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F88
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F90
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F98
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FA0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FA8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FB0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FB8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FC0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FC8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FD0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FD8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FE0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FE8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FF0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00" -- 0x0FF8
);
begin
p_rom : process
begin
wait until rising_edge(CLK);
DATA <= ROM(to_integer(unsigned(ADDR)));
end process;
end RTL;
@@ -0,0 +1,539 @@
library ieee;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
entity char_rom is
port (
CLK : in std_logic;
ADDR : in unsigned(11 downto 0);
DATA : out unsigned(7 downto 0)
);
end;
architecture RTL of char_rom is
type ROM_ARRAY is array(0 to 4095) of unsigned(7 downto 0);
constant ROM : ROM_ARRAY := (
x"3C",x"66",x"6E",x"6A",x"6E",x"60",x"3C",x"00", -- 0x0000
x"00",x"00",x"3C",x"06",x"3E",x"66",x"3E",x"00", -- 0x0008
x"60",x"60",x"7C",x"66",x"66",x"66",x"7C",x"00", -- 0x0010
x"00",x"00",x"3C",x"66",x"60",x"66",x"3C",x"00", -- 0x0018
x"06",x"06",x"3E",x"66",x"66",x"66",x"3E",x"00", -- 0x0020
x"00",x"00",x"3C",x"66",x"7E",x"60",x"3C",x"00", -- 0x0028
x"1C",x"30",x"30",x"7C",x"30",x"30",x"30",x"00", -- 0x0030
x"00",x"00",x"3E",x"66",x"66",x"3E",x"06",x"3C", -- 0x0038
x"60",x"60",x"7C",x"66",x"66",x"66",x"66",x"00", -- 0x0040
x"18",x"00",x"38",x"18",x"18",x"18",x"3C",x"00", -- 0x0048
x"18",x"00",x"38",x"18",x"18",x"18",x"18",x"70", -- 0x0050
x"60",x"60",x"66",x"6C",x"78",x"6C",x"66",x"00", -- 0x0058
x"38",x"18",x"18",x"18",x"18",x"18",x"3C",x"00", -- 0x0060
x"00",x"00",x"36",x"7F",x"6B",x"6B",x"63",x"00", -- 0x0068
x"00",x"00",x"7C",x"66",x"66",x"66",x"66",x"00", -- 0x0070
x"00",x"00",x"3C",x"66",x"66",x"66",x"3C",x"00", -- 0x0078
x"00",x"00",x"7C",x"66",x"66",x"7C",x"60",x"60", -- 0x0080
x"00",x"00",x"3E",x"66",x"66",x"3E",x"06",x"07", -- 0x0088
x"00",x"00",x"6C",x"76",x"60",x"60",x"60",x"00", -- 0x0090
x"00",x"00",x"3E",x"60",x"3C",x"06",x"7C",x"00", -- 0x0098
x"30",x"30",x"7C",x"30",x"30",x"30",x"1C",x"00", -- 0x00A0
x"00",x"00",x"66",x"66",x"66",x"66",x"3E",x"00", -- 0x00A8
x"00",x"00",x"66",x"66",x"66",x"3C",x"18",x"00", -- 0x00B0
x"00",x"00",x"63",x"6B",x"6B",x"7F",x"36",x"00", -- 0x00B8
x"00",x"00",x"66",x"3C",x"18",x"3C",x"66",x"00", -- 0x00C0
x"00",x"00",x"66",x"66",x"66",x"3E",x"06",x"3C", -- 0x00C8
x"00",x"00",x"7E",x"0C",x"18",x"30",x"7E",x"00", -- 0x00D0
x"7C",x"60",x"60",x"60",x"60",x"60",x"7C",x"00", -- 0x00D8
x"1C",x"36",x"30",x"7C",x"30",x"30",x"7E",x"00", -- 0x00E0
x"3E",x"06",x"06",x"06",x"06",x"06",x"3E",x"00", -- 0x00E8
x"00",x"18",x"3C",x"7E",x"18",x"18",x"18",x"18", -- 0x00F0
x"00",x"10",x"30",x"7F",x"7F",x"30",x"10",x"00", -- 0x00F8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0100
x"18",x"18",x"18",x"18",x"18",x"00",x"18",x"00", -- 0x0108
x"6C",x"6C",x"6C",x"00",x"00",x"00",x"00",x"00", -- 0x0110
x"36",x"36",x"7F",x"36",x"7F",x"36",x"36",x"00", -- 0x0118
x"0C",x"3F",x"68",x"3E",x"0B",x"7E",x"18",x"00", -- 0x0120
x"60",x"66",x"0C",x"18",x"30",x"66",x"06",x"00", -- 0x0128
x"38",x"6C",x"6C",x"38",x"6D",x"66",x"3B",x"00", -- 0x0130
x"0C",x"18",x"30",x"00",x"00",x"00",x"00",x"00", -- 0x0138
x"0C",x"18",x"30",x"30",x"30",x"18",x"0C",x"00", -- 0x0140
x"30",x"18",x"0C",x"0C",x"0C",x"18",x"30",x"00", -- 0x0148
x"00",x"18",x"7E",x"3C",x"7E",x"18",x"00",x"00", -- 0x0150
x"00",x"18",x"18",x"7E",x"18",x"18",x"00",x"00", -- 0x0158
x"00",x"00",x"00",x"00",x"00",x"18",x"18",x"30", -- 0x0160
x"00",x"00",x"00",x"7E",x"00",x"00",x"00",x"00", -- 0x0168
x"00",x"00",x"00",x"00",x"00",x"18",x"18",x"00", -- 0x0170
x"00",x"06",x"0C",x"18",x"30",x"60",x"00",x"00", -- 0x0178
x"3C",x"66",x"6E",x"7E",x"76",x"66",x"3C",x"00", -- 0x0180
x"18",x"38",x"18",x"18",x"18",x"18",x"7E",x"00", -- 0x0188
x"3C",x"66",x"06",x"0C",x"18",x"30",x"7E",x"00", -- 0x0190
x"3C",x"66",x"06",x"1C",x"06",x"66",x"3C",x"00", -- 0x0198
x"0C",x"1C",x"3C",x"6C",x"7E",x"0C",x"0C",x"00", -- 0x01A0
x"7E",x"60",x"7C",x"06",x"06",x"66",x"3C",x"00", -- 0x01A8
x"1C",x"30",x"60",x"7C",x"66",x"66",x"3C",x"00", -- 0x01B0
x"7E",x"06",x"0C",x"18",x"30",x"30",x"30",x"00", -- 0x01B8
x"3C",x"66",x"66",x"3C",x"66",x"66",x"3C",x"00", -- 0x01C0
x"3C",x"66",x"66",x"3E",x"06",x"0C",x"38",x"00", -- 0x01C8
x"00",x"00",x"18",x"18",x"00",x"18",x"18",x"00", -- 0x01D0
x"00",x"00",x"18",x"18",x"00",x"18",x"18",x"30", -- 0x01D8
x"0C",x"18",x"30",x"60",x"30",x"18",x"0C",x"00", -- 0x01E0
x"00",x"00",x"7E",x"00",x"7E",x"00",x"00",x"00", -- 0x01E8
x"30",x"18",x"0C",x"06",x"0C",x"18",x"30",x"00", -- 0x01F0
x"3C",x"66",x"0C",x"18",x"18",x"00",x"18",x"00", -- 0x01F8
x"00",x"00",x"00",x"FF",x"FF",x"00",x"00",x"00", -- 0x0200
x"3C",x"66",x"66",x"7E",x"66",x"66",x"66",x"00", -- 0x0208
x"7C",x"66",x"66",x"7C",x"66",x"66",x"7C",x"00", -- 0x0210
x"3C",x"66",x"60",x"60",x"60",x"66",x"3C",x"00", -- 0x0218
x"78",x"6C",x"66",x"66",x"66",x"6C",x"78",x"00", -- 0x0220
x"7E",x"60",x"60",x"7C",x"60",x"60",x"7E",x"00", -- 0x0228
x"7E",x"60",x"60",x"7C",x"60",x"60",x"60",x"00", -- 0x0230
x"3C",x"66",x"60",x"6E",x"66",x"66",x"3C",x"00", -- 0x0238
x"66",x"66",x"66",x"7E",x"66",x"66",x"66",x"00", -- 0x0240
x"7E",x"18",x"18",x"18",x"18",x"18",x"7E",x"00", -- 0x0248
x"3E",x"0C",x"0C",x"0C",x"0C",x"6C",x"38",x"00", -- 0x0250
x"66",x"6C",x"78",x"70",x"78",x"6C",x"66",x"00", -- 0x0258
x"60",x"60",x"60",x"60",x"60",x"60",x"7E",x"00", -- 0x0260
x"63",x"77",x"7F",x"6B",x"6B",x"63",x"63",x"00", -- 0x0268
x"66",x"66",x"76",x"7E",x"6E",x"66",x"66",x"00", -- 0x0270
x"3C",x"66",x"66",x"66",x"66",x"66",x"3C",x"00", -- 0x0278
x"7C",x"66",x"66",x"7C",x"60",x"60",x"60",x"00", -- 0x0280
x"3C",x"66",x"66",x"66",x"6A",x"6C",x"36",x"00", -- 0x0288
x"7C",x"66",x"66",x"7C",x"6C",x"66",x"66",x"00", -- 0x0290
x"3C",x"66",x"60",x"3C",x"06",x"66",x"3C",x"00", -- 0x0298
x"7E",x"18",x"18",x"18",x"18",x"18",x"18",x"00", -- 0x02A0
x"66",x"66",x"66",x"66",x"66",x"66",x"3C",x"00", -- 0x02A8
x"66",x"66",x"66",x"66",x"66",x"3C",x"18",x"00", -- 0x02B0
x"63",x"63",x"6B",x"00",x"00",x"00",x"00",x"00", -- 0x02B8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x02C0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x02C8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x02D0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x02D8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x02E0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x02E8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x02F0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x02F8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0300
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0308
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0310
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0318
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0320
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0328
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0330
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0338
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0340
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0348
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0350
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0358
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0360
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0368
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0370
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0378
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0380
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0388
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0390
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0398
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x03A0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x03A8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x03B0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x03B8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x03C0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x03C8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x03D0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x03D8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x03E0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x03E8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x03F0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x03F8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0400
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0408
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0410
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0418
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0420
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0428
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0430
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0438
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0440
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0448
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0450
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0458
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0460
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0468
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0470
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0478
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0480
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0488
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0490
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0498
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x04A0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x04A8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x04B0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x04B8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x04C0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x04C8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x04D0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x04D8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x04E0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x04E8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x04F0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x04F8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0500
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0508
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0510
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0518
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0520
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0528
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0530
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0538
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0540
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0548
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0550
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0558
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0560
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0568
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0570
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0578
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0580
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0588
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0590
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0598
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x05A0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x05A8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x05B0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x05B8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x05C0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x05C8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x05D0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x05D8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x05E0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x05E8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x05F0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x05F8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0600
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0608
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0610
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0618
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0620
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0628
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0630
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0638
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0640
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0648
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0650
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0658
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0660
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0668
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0670
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0678
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0680
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0688
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0690
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0698
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x06A0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x06A8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x06B0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x06B8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x06C0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x06C8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x06D0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x06D8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x06E0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x06E8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x06F0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x06F8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0700
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0708
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0710
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0718
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0720
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0728
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0730
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0738
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0740
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0748
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0750
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0758
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0760
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0768
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0770
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0778
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0780
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0788
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0790
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0798
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x07A0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x07A8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x07B0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x07B8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x07C0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x07C8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x07D0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x07D8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x07E0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x07E8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x07F0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x07F8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0800
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0808
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0810
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0818
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0820
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0828
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0830
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0838
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0840
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0848
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0850
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0858
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0860
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0868
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0870
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0878
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0880
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0888
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0890
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0898
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08A0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08A8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08B0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08B8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08C0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08C8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08D0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08D8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08E0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08E8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08F0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08F8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0900
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0908
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0910
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0918
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0920
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0928
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0930
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0938
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0940
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0948
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0950
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0958
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0960
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0968
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0970
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0978
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0980
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0988
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0990
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0998
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09A0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09A8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09B0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09B8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09C0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09C8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09D0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09D8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09E0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09E8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09F0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09F8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A00
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A08
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A10
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A18
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A20
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A28
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A30
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A38
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A40
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A48
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A50
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A58
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A60
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A68
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A70
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A78
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A80
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A88
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A90
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A98
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AA0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AA8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AB0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AB8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AC0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AC8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AD0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AD8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AE0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AE8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AF0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AF8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B00
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B08
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B10
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B18
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B20
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B28
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B30
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B38
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B40
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B48
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B50
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B58
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B60
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B68
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B70
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B78
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B80
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B88
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B90
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B98
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BA0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BA8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BB0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BB8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BC0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BC8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BD0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BD8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BE0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BE8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BF0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BF8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C00
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C08
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C10
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C18
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C20
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C28
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C30
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C38
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C40
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C48
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C50
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C58
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C60
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C68
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C70
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C78
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C80
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C88
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C90
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C98
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CA0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CA8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CB0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CB8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CC0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CC8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CD0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CD8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CE0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CE8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CF0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CF8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D00
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D08
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D10
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D18
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D20
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D28
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D30
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D38
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D40
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D48
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D50
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D58
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D60
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D68
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D70
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D78
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D80
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D88
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D90
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D98
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DA0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DA8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DB0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DB8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DC0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DC8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DD0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DD8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DE0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DE8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DF0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DF8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E00
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E08
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E10
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E18
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E20
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E28
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E30
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E38
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E40
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E48
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E50
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E58
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E60
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E68
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E70
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E78
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E80
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E88
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E90
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E98
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0EA0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0EA8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0EB0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0EB8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0EC0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0EC8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0ED0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0ED8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0EE0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0EE8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0EF0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0EF8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F00
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F08
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F10
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F18
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F20
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F28
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F30
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F38
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F40
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F48
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F50
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F58
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F60
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F68
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F70
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F78
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F80
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F88
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F90
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F98
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FA0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FA8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FB0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FB8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FC0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FC8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FD0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FD8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FE0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FE8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FF0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00" -- 0x0FF8
);
begin
p_rom : process
begin
wait until rising_edge(CLK);
DATA <= ROM(to_integer(unsigned(ADDR)));
end process;
end RTL;
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,539 @@
library ieee;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
entity char_rom is
port (
CLK : in std_logic;
ADDR : in unsigned(11 downto 0);
DATA : out unsigned(7 downto 0)
);
end;
architecture RTL of char_rom is
type ROM_ARRAY is array(0 to 4095) of unsigned(7 downto 0);
constant ROM : ROM_ARRAY := (
x"00",x"00",x"01",x"03",x"07",x"0F",x"0F",x"0F", -- 0x0000
x"00",x"00",x"FF",x"FF",x"FF",x"FF",x"FF",x"FF", -- 0x0008
x"00",x"00",x"E0",x"F0",x"F8",x"FC",x"FC",x"FC", -- 0x0010
x"00",x"00",x"01",x"07",x"1F",x"3F",x"7F",x"7F", -- 0x0018
x"00",x"00",x"FF",x"FF",x"FF",x"FF",x"FF",x"FF", -- 0x0020
x"00",x"00",x"E0",x"F0",x"F8",x"F8",x"F8",x"F8", -- 0x0028
x"00",x"00",x"07",x"1F",x"7F",x"FF",x"FF",x"FF", -- 0x0030
x"00",x"00",x"FF",x"FF",x"FF",x"FF",x"FF",x"8F", -- 0x0038
x"00",x"00",x"C3",x"E3",x"F1",x"F1",x"F1",x"F1", -- 0x0040
x"00",x"00",x"F8",x"FC",x"FE",x"FE",x"FE",x"FE", -- 0x0048
x"00",x"00",x"1F",x"1F",x"0F",x"0F",x"0F",x"0F", -- 0x0050
x"00",x"00",x"81",x"C3",x"E2",x"E2",x"E2",x"E2", -- 0x0058
x"00",x"00",x"FC",x"06",x"FA",x"72",x"DA",x"FA", -- 0x0060
x"00",x"00",x"03",x"0F",x"3F",x"7F",x"7F",x"7F", -- 0x0068
x"00",x"00",x"FF",x"FF",x"FF",x"FF",x"FF",x"C7", -- 0x0070
x"00",x"00",x"E0",x"F0",x"F8",x"F8",x"F8",x"F8", -- 0x0078
x"00",x"00",x"07",x"1F",x"7F",x"FF",x"FF",x"FF", -- 0x0080
x"00",x"00",x"FF",x"FF",x"FF",x"FF",x"FF",x"FF", -- 0x0088
x"00",x"00",x"80",x"C0",x"C0",x"E0",x"E0",x"F0", -- 0x0090
x"00",x"00",x"3F",x"3F",x"06",x"06",x"06",x"06", -- 0x0098
x"00",x"00",x"D8",x"D8",x"18",x"1F",x"1F",x"18", -- 0x00A0
x"00",x"00",x"DF",x"DF",x"D8",x"DE",x"DE",x"D8", -- 0x00A8
x"00",x"00",x"80",x"80",x"00",x"00",x"00",x"00", -- 0x00B0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x00B8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x00C0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x00C8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x00D0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x00D8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x00E0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x00E8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x00F0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x00F8
x"1F",x"1F",x"1F",x"1F",x"1F",x"1F",x"1F",x"3F", -- 0x0100
x"C1",x"C0",x"C0",x"C0",x"C0",x"C0",x"C0",x"80", -- 0x0108
x"FC",x"F8",x"F0",x"00",x"00",x"00",x"00",x"00", -- 0x0110
x"7F",x"7F",x"7F",x"7F",x"7F",x"7F",x"7F",x"7F", -- 0x0118
x"FF",x"C3",x"03",x"03",x"03",x"03",x"03",x"03", -- 0x0120
x"F8",x"F8",x"F8",x"F8",x"F8",x"F8",x"F8",x"F8", -- 0x0128
x"FF",x"FE",x"FE",x"FE",x"FE",x"FE",x"FE",x"FE", -- 0x0130
x"07",x"07",x"07",x"07",x"07",x"07",x"07",x"07", -- 0x0138
x"F1",x"F1",x"F1",x"F1",x"F1",x"F1",x"F1",x"F1", -- 0x0140
x"FF",x"FF",x"FF",x"FF",x"FF",x"FF",x"FF",x"FF", -- 0x0148
x"0F",x"0F",x"0F",x"8F",x"8F",x"8F",x"DF",x"FF", -- 0x0150
x"E3",x"E3",x"E1",x"E0",x"E1",x"E1",x"E1",x"E3", -- 0x0158
x"56",x"8E",x"FC",x"00",x"FF",x"FE",x"FE",x"FC", -- 0x0160
x"7F",x"7F",x"7F",x"7F",x"7F",x"7F",x"7F",x"7F", -- 0x0168
x"83",x"03",x"03",x"0F",x"3F",x"FF",x"FF",x"FC", -- 0x0170
x"F8",x"F8",x"F8",x"F8",x"F0",x"C0",x"00",x"00", -- 0x0178
x"FF",x"FF",x"FE",x"FE",x"FE",x"FE",x"FE",x"FE", -- 0x0180
x"E7",x"87",x"07",x"07",x"07",x"00",x"00",x"FF", -- 0x0188
x"F0",x"F0",x"F0",x"E0",x"80",x"00",x"00",x"80", -- 0x0190
x"06",x"06",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0198
x"18",x"18",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x01A0
x"DF",x"DF",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x01A8
x"80",x"80",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x01B0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x01B8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x01C0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x01C8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x01D0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x01D8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x01E0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x01E8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x01F0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x01F8
x"3F",x"3F",x"3F",x"3F",x"3F",x"3F",x"7F",x"7F", -- 0x0200
x"80",x"80",x"80",x"83",x"87",x"87",x"07",x"06", -- 0x0208
x"00",x"1C",x"7C",x"FC",x"FC",x"FC",x"F0",x"F0", -- 0x0210
x"7F",x"7F",x"7F",x"7F",x"7F",x"7F",x"7F",x"7F", -- 0x0218
x"03",x"03",x"03",x"03",x"03",x"03",x"03",x"03", -- 0x0220
x"F8",x"F8",x"F8",x"F8",x"F8",x"F8",x"F8",x"F8", -- 0x0228
x"FE",x"FE",x"FE",x"FE",x"FE",x"FE",x"FE",x"FE", -- 0x0230
x"07",x"07",x"07",x"07",x"07",x"07",x"07",x"0F", -- 0x0238
x"F1",x"F1",x"F1",x"F1",x"F1",x"F1",x"F1",x"F1", -- 0x0240
x"FF",x"FF",x"FF",x"FF",x"FE",x"FC",x"FC",x"FC", -- 0x0248
x"FF",x"FF",x"FF",x"FF",x"FF",x"7F",x"7F",x"7F", -- 0x0250
x"E3",x"E3",x"E3",x"E3",x"E3",x"E3",x"E3",x"E3", -- 0x0258
x"FC",x"FC",x"FC",x"FC",x"FC",x"FC",x"FC",x"FC", -- 0x0260
x"7F",x"7F",x"7F",x"7F",x"7F",x"7F",x"7F",x"7F", -- 0x0268
x"F0",x"C0",x"03",x"07",x"07",x"07",x"03",x"01", -- 0x0270
x"18",x"F8",x"F8",x"F8",x"F8",x"F8",x"F8",x"F8", -- 0x0278
x"FF",x"FF",x"FF",x"FC",x"E0",x"06",x"1E",x"FE", -- 0x0280
x"FF",x"FF",x"FF",x"0F",x"07",x"07",x"07",x"07", -- 0x0288
x"C0",x"C0",x"E0",x"E0",x"F0",x"F0",x"F0",x"F0", -- 0x0290
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0298
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x02A0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x02A8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x02B0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x02B8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x02C0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x02C8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x02D0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x02D8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x02E0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x02E8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x02F0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x02F8
x"7F",x"7F",x"7F",x"7F",x"7F",x"3F",x"1F",x"0F", -- 0x0300
x"00",x"00",x"00",x"80",x"FF",x"FF",x"FF",x"FF", -- 0x0308
x"F0",x"78",x"7C",x"FC",x"FC",x"F8",x"F0",x"E0", -- 0x0310
x"7F",x"7F",x"7F",x"7F",x"3F",x"1F",x"0F",x"07", -- 0x0318
x"8F",x"FF",x"FF",x"FF",x"FF",x"FF",x"FF",x"FF", -- 0x0320
x"F8",x"F8",x"F8",x"F8",x"F8",x"F0",x"E0",x"C0", -- 0x0328
x"FF",x"FF",x"FF",x"FF",x"FF",x"FF",x"7F",x"3F", -- 0x0330
x"1F",x"FF",x"FF",x"FF",x"FF",x"FF",x"FF",x"FF", -- 0x0338
x"F1",x"F1",x"F1",x"F1",x"E1",x"C1",x"81",x"03", -- 0x0340
x"FC",x"FC",x"FC",x"FC",x"FC",x"FC",x"FE",x"FF", -- 0x0348
x"7F",x"3F",x"3F",x"3F",x"3F",x"1F",x"1F",x"1F", -- 0x0350
x"E3",x"E3",x"E3",x"E3",x"E3",x"E3",x"E3",x"C7", -- 0x0358
x"FC",x"FC",x"FC",x"FC",x"FC",x"FC",x"F8",x"F0", -- 0x0360
x"7F",x"7F",x"7F",x"7F",x"7F",x"7F",x"7F",x"7F", -- 0x0368
x"01",x"03",x"07",x"FF",x"FF",x"FF",x"FF",x"FF", -- 0x0370
x"F8",x"F8",x"F8",x"F8",x"F8",x"F8",x"F8",x"F8", -- 0x0378
x"FE",x"FE",x"FE",x"FF",x"FF",x"7F",x"1F",x"07", -- 0x0380
x"07",x"07",x"0F",x"FF",x"FF",x"FF",x"FF",x"FF", -- 0x0388
x"F0",x"F0",x"F0",x"F0",x"FF",x"EF",x"C3",x"83", -- 0x0390
x"00",x"00",x"00",x"00",x"DB",x"DF",x"1F",x"1B", -- 0x0398
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x03A0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x03A8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x03B0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x03B8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x03C0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x03C8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x03D0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x03D8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x03E0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x03E8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x03F0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x03F8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0400
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0408
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0410
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0418
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0420
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0428
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0430
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0438
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0440
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0448
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0450
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0458
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0460
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0468
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0470
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0478
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0480
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0488
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0490
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0498
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x04A0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x04A8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x04B0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x04B8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x04C0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x04C8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x04D0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x04D8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x04E0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x04E8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x04F0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x04F8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0500
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0508
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0510
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0518
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0520
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0528
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0530
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0538
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0540
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0548
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0550
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0558
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0560
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0568
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0570
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0578
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0580
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0588
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0590
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0598
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x05A0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x05A8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x05B0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x05B8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x05C0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x05C8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x05D0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x05D8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x05E0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x05E8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x05F0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x05F8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0600
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0608
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0610
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0618
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0620
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0628
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0630
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0638
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0640
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0648
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0650
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0658
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0660
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0668
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0670
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0678
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0680
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0688
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0690
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0698
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x06A0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x06A8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x06B0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x06B8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x06C0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x06C8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x06D0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x06D8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x06E0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x06E8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x06F0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x06F8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0700
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0708
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0710
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0718
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0720
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0728
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0730
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0738
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0740
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0748
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0750
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0758
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0760
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0768
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0770
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0778
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0780
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0788
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0790
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0798
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x07A0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x07A8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x07B0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x07B8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x07C0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x07C8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x07D0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x07D8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x07E0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x07E8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x07F0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x07F8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0800
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0808
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0810
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0818
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0820
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0828
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0830
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0838
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0840
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0848
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0850
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0858
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0860
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0868
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0870
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0878
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0880
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0888
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0890
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0898
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08A0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08A8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08B0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08B8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08C0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08C8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08D0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08D8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08E0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08E8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08F0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x08F8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0900
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0908
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0910
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0918
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0920
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0928
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0930
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0938
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0940
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0948
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0950
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0958
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0960
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0968
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0970
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0978
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0980
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0988
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0990
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0998
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09A0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09A8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09B0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09B8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09C0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09C8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09D0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09D8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09E0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09E8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09F0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x09F8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A00
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A08
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A10
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A18
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A20
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A28
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A30
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A38
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A40
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A48
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A50
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A58
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A60
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A68
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A70
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A78
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A80
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A88
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A90
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0A98
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AA0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AA8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AB0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AB8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AC0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AC8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AD0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AD8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AE0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AE8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AF0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0AF8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B00
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B08
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B10
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B18
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B20
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B28
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B30
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B38
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B40
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B48
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B50
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B58
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B60
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B68
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B70
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B78
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B80
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B88
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B90
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0B98
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BA0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BA8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BB0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BB8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BC0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BC8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BD0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BD8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BE0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BE8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BF0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0BF8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C00
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C08
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C10
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C18
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C20
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C28
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C30
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C38
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C40
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C48
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C50
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C58
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C60
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C68
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C70
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C78
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C80
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C88
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C90
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0C98
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CA0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CA8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CB0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CB8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CC0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CC8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CD0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CD8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CE0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CE8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CF0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0CF8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D00
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D08
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D10
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D18
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D20
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D28
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D30
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D38
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D40
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D48
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D50
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D58
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D60
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D68
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D70
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D78
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D80
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D88
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D90
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0D98
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DA0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DA8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DB0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DB8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DC0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DC8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DD0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DD8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DE0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DE8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DF0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0DF8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E00
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E08
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E10
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E18
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E20
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E28
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E30
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E38
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E40
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E48
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E50
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E58
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E60
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E68
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E70
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E78
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E80
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E88
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E90
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0E98
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0EA0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0EA8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0EB0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0EB8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0EC0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0EC8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0ED0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0ED8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0EE0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0EE8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0EF0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0EF8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F00
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F08
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F10
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F18
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F20
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F28
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F30
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F38
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F40
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F48
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F50
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F58
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F60
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F68
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F70
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F78
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F80
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F88
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F90
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0F98
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FA0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FA8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FB0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FB8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FC0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FC8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FD0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FD8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FE0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FE8
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x0FF0
x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00" -- 0x0FF8
);
begin
p_rom : process
begin
wait until rising_edge(CLK);
DATA <= ROM(to_integer(unsigned(ADDR)));
end process;
end RTL;
+6
View File
@@ -0,0 +1,6 @@
@echo off
bff2rom fixedsys_8x15.bff y >char_rom_fixedsys_8x15.vhd
bff2rom fixedsys_8x16.bff y >char_rom_fixedsys_8x16.vhd
bff2rom fixedsys_9x16.bff y >char_rom_fixedsys_9x16.vhd
bff2rom System_16x16.bff y >char_rom_system_16x16.vhd
+121
View File
@@ -0,0 +1,121 @@
-------------------------------------------------------------------------
-- Project: JCPU, a portable 8-bit RISC CPU written in VHDL
-- This file: Dual-ported register file with asynchrous read
-- Copyright (C) 2007 J. Ahrensfeld
-- This library is free software; you can redistribute it and/or
-- modify it under the terms of the GNU Lesser General Public
-- License as published by the Free Software Foundation; either
-- version 2.1 of the License, or (at your option) any later version.
-- This library 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
-- Lesser General Public License for more details.
-- You should have received a copy of the GNU Lesser General Public
-- License along with this library; if not, write to the Free Software
-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-- For questions and ideas, please contact the author at jens@jayfield.org
-----------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.NUMERIC_STD.ALL;
use work.vga_types.all;
entity linefifo is
Generic
(
depth : natural := 64;
almost_full_thresh : natural := 60;
almost_empty_thresh : natural := 4
);
Port
(
rst : in STD_LOGIC;
clk_w : in STD_LOGIC;
clk_r : in STD_LOGIC;
we_w : in STD_LOGIC;
re_r : in STD_LOGIC;
fifo_full : out STD_LOGIC;
fifo_empty : out STD_LOGIC;
fifo_afull : out STD_LOGIC;
fifo_aempty : out STD_LOGIC;
color_w : in color_t;
color_r : out color_t
);
end linefifo;
architecture Behavioral of linefifo is
constant data_width : integer := 8;
constant addr_width : integer := NextExpBaseTwo(depth);
signal buf_we_w : STD_LOGIC;
signal ptr_w : unsigned (ADDR_WIDTH-1 downto 0);
signal ptr_r : unsigned (ADDR_WIDTH-1 downto 0);
signal full : STD_LOGIC;
signal empty : STD_LOGIC;
signal almost_full : STD_LOGIC;
signal almost_empty : STD_LOGIC;
begin
buf_we_w <= we_w;
fifo_full <= full;
fifo_empty <= empty;
fifo_afull <= almost_full;
fifo_aempty <= almost_empty;
gen_line:
for c in color_range_t generate
begin
inst_dpram: entity work.dpram
GENERIC MAP
(
addr_width => addr_width,
data_width => data_width
)
PORT MAP(
clka => clk_w,
clkb => clk_r,
en_a => '1',
en_b => '1',
we_a => buf_we_w,
addr_a => ptr_w,
addr_b => ptr_r,
din_a => color_w(c),
dout_b => color_r(c)
);
end generate;
inst_fifo_ctrl: entity work.async_fifo_ctrl
GENERIC MAP
(
addr_width => ADDR_WIDTH,
almost_full_thresh => almost_full_thresh,
almost_empty_thresh => almost_empty_thresh
)
PORT MAP
(
rst => rst,
clk_w => clk_w,
clk_r => clk_r,
we => we_w,
re => re_r,
ptr_w => ptr_w,
ptr_r => ptr_r,
fifo_full => full,
fifo_empty => empty,
fifo_afull => almost_full,
fifo_aempty => almost_empty
);
end Behavioral;
+223
View File
@@ -0,0 +1,223 @@
--------------------------------------------------------------------------------
-- Company:
-- Engineer:
--
-- Create Date: 11:25:45 10/15/05
-- Design Name:
-- Module Name: vga_backend - Behavioral
-- Project Name:
-- Target Device:
-- Tool versions:
-- Description:
--
-- Dependencies:
--
-- Revision:
-- Revision 0.01 - File Created
-- Additional Comments:
--
--------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
use work.vga_types.all;
entity vga_backend is
Generic
(
sys_freq : integer := 100E6;
fifo_depth : integer := 2048;
fifo_almost_full_thresh : natural := 2000;
fifo_almost_empty_thresh : natural := 48;
tsvga : vga_timespec_t := ts_vga_800_600_72
);
Port
(
-- System signals
sys_rst : in std_logic;
sys_clk : in std_logic;
vga_ready : out std_logic;
-- Buffered channel (Graphics plane)
color_in : in color_t;
color_fifo_we : in std_logic;
color_fifo_full : out std_logic;
color_fifo_afull : out std_logic;
-- Direct channel (Character plane)
direct_color_in : in color_t;
direct_draw_en : in std_logic;
-- Status signals
stat_hsync : out std_logic;
stat_vsync : out std_logic;
stat_hready : out std_logic;
stat_vready : out std_logic;
stat_hscan : out std_logic;
stat_vscan : out std_logic;
stat_hpos : out natural range 0 to tsvga.ts_h.ncyc_scan-1;
stat_vpos : out natural range 0 to tsvga.ts_v.ncyc_scan-1;
-- VGA domain signals
vga_clk_out : out std_logic;
vga_color_out : out color_t;
vga_blank_n : out std_logic;
vga_sync_n : out std_logic;
vga_hsync : out std_logic;
vga_vsync : out std_logic
);
end vga_backend;
architecture Behavioral of vga_backend is
signal scan_enable : std_logic;
signal fifo_full : std_logic;
signal fifo_empty : std_logic;
signal fifo_almost_empty : std_logic;
signal fifo_almost_full : std_logic;
signal is_scan : std_logic;
signal is_hscan : std_logic;
signal is_vscan : std_logic;
signal hsync : std_logic;
signal vsync : std_logic;
signal hready : std_logic;
signal vready : std_logic;
signal color : color_t;
signal vga_clk : std_logic;
signal dcm_locked : std_logic;
signal rst : std_logic;
begin
vga_clk_out <= vga_clk;
vga_ready <= dcm_locked;
inst_clkgen: entity work.clkgen
GENERIC MAP
(
sys_freq => sys_freq,
tsvga => tsvga
)
PORT MAP
(
rst => sys_rst,
clk => sys_clk,
vga_clk => vga_clk,
dcm_locked => dcm_locked
);
inst_vga_timing: entity work.vga_timing
GENERIC MAP
(
tsvga => tsvga
)
PORT MAP
(
sys_rst => sys_rst,
vga_clk => vga_clk,
vga_ce => dcm_locked,
sync_h => hsync,
sync_v => vsync,
scan_pos_h => stat_hpos,
scan_pos_v => stat_vpos,
is_scan_h => is_hscan,
is_scan_v => is_vscan,
scan_rdy_h => hready,
scan_rdy_v => vready
);
inst_linefifo: entity work.linefifo
GENERIC MAP
(
depth => fifo_depth,
almost_full_thresh => fifo_almost_full_thresh,
almost_empty_thresh => fifo_almost_empty_thresh
)
PORT MAP(
rst => sys_rst,
clk_w => sys_clk,
clk_r => vga_clk,
we_w => color_fifo_we,
re_r => is_scan,
color_w => color_in,
color_r => color,
fifo_full => fifo_full,
fifo_empty => fifo_empty,
fifo_afull => fifo_almost_full,
fifo_aempty => fifo_almost_empty
);
---------------------------------------------------------------------------------------------
rst <= not dcm_locked;
stat_hsync <= hsync;
stat_vsync <= vsync;
stat_hscan <= is_hscan;
stat_vscan <= is_vscan;
stat_hready <= hready;
stat_vready <= vready;
vga_blank_n <= '1';
vga_sync_n <= '0';
is_scan <= is_hscan and is_vscan and scan_enable;
color_fifo_full <= fifo_full;
color_fifo_afull <= fifo_almost_full;
---------------------------------------------------------------------------------------------
proc_vga_start:
process (rst, vga_clk)
begin
if rst = '1' then
scan_enable <= '0';
elsif rising_edge(vga_clk) then
if vsync = '1' then
if fifo_empty = '0' then
scan_enable <= '1';
else
scan_enable <= '0';
end if;
end if;
end if;
end process;
proc_vga_color_out:
process (rst, vga_clk)
variable do_scan : std_logic;
begin
if rst = '1' then
do_scan := '0';
elsif rising_edge(vga_clk) then
vga_color_out <= (X"00", X"00", X"00");
if do_scan = '1' then
if direct_draw_en = '1' then
vga_color_out <= direct_color_in;
else
vga_color_out <= color;
end if;
end if;
do_scan := is_scan;
end if;
end process;
---------------------------------------------------------------------------------------------
proc_vga_sync_out:
process (rst, vga_clk)
variable hsync_r : std_logic;
variable vsync_r : std_logic;
begin
if rst = '1' then
vga_hsync <= tsvga.ts_h.sync_polarity;
vga_vsync <= tsvga.ts_v.sync_polarity;
hsync_r := tsvga.ts_h.sync_polarity;
vsync_r := tsvga.ts_v.sync_polarity;
elsif rising_edge(vga_clk) then
vga_hsync <= hsync_r;
vga_vsync <= vsync_r;
hsync_r := hsync xor (not tsvga.ts_h.sync_polarity);
vsync_r := vsync xor (not tsvga.ts_v.sync_polarity);
end if;
end process;
end Behavioral;
+127
View File
@@ -0,0 +1,127 @@
--------------------------------------------------------------------------------
-- Company:
-- Engineer:
--
-- Create Date: 11:15:39 10/21/05
-- Design Name:
-- Module Name: fsm_scan - Behavioral
-- Project Name:
-- Target Device:
-- Tool versions:
-- Description:
--
-- Dependencies:
--
-- Revision:
-- Revision 0.01 - File Created
-- Additional Comments:
--
--------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
use work.vga_types.all;
entity vga_sync is
Generic
(
ts : scan_timespec_t := (4,2,1,3,'0')
);
Port
(
rst : in std_logic;
clk : in std_logic;
ce : in std_logic;
pos : out natural range 0 to ts.ncyc_scan-1;
sync : out std_logic;
is_scan : out std_logic;
rdy_scan : out std_logic
);
end vga_sync;
architecture Behavioral of vga_sync is
type timing_state_t is (st_init, st_scan, st_front, st_sync, st_back);
-- Counter
signal state, next_state : timing_state_t;
signal count_srst : std_logic;
signal count : natural range 0 to ts.ncyc_scan-1;
begin
pos <= count;
---------------------------------------------------------------------------------------------
counter:
process (clk)
begin
if rising_edge(clk) then
if ce = '1' then
if count_srst = '1' then
count <= 0;
else
count <= count + 1;
end if;
end if;
end if;
end process;
---------------------------------------------------------------------------------------------
SYNC_TIMING:
process (state, count)
begin
count_srst <= '0';
rdy_scan <= '0';
is_scan <= '0';
sync <= '0';
next_state <= state; --default is to stay in current state
case (state) is
when st_init =>
count_srst <= '1';
next_state <= st_front;
when st_front =>
if count = ts.ncyc_porch_front - 1 then
count_srst <= '1';
next_state <= st_sync;
end if;
when st_sync =>
sync <= '1';
if count = ts.ncyc_sync_pulse - 1 then
count_srst <= '1';
next_state <= st_back;
end if;
when st_back =>
if count = ts.ncyc_porch_back - 1 then
count_srst <= '1';
next_state <= st_scan;
end if;
when st_scan =>
is_scan <= '1';
if count = ts.ncyc_scan - 1 then
count_srst <= '1';
rdy_scan <= '1';
next_state <= st_front;
end if;
when others =>
next_state <= st_init;
end case;
end process;
SYNC_TIMING_NEXT:
process (rst, clk)
begin
if rst = '1' then
state <= st_init;
elsif rising_edge(clk) and ce = '1' then
state <= next_state;
end if;
end process;
---------------------------------------------------------------------------------------------
end Behavioral;
+102
View File
@@ -0,0 +1,102 @@
--------------------------------------------------------------------------------
-- Company:
-- Engineer:
--
-- Create Date: 11:25:45 10/15/05
-- Design Name:
-- Module Name: vga_ctrl_core - Behavioral
-- Project Name:
-- Target Device:
-- Tool versions:
-- Description:
--
-- Dependencies:
--
-- Revision:
-- Revision 0.01 - File Created
-- Additional Comments:
--
--------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
use work.vga_types.all;
entity vga_timing is
Generic
(
tsvga : vga_timespec_t := ts_vga_800_600_72
);
Port
(
sys_rst : in std_logic;
vga_clk : in std_logic;
vga_ce : in std_logic;
sync_h : out std_logic;
sync_v : out std_logic;
scan_pos_h : out natural range 0 to tsvga.ts_h.ncyc_scan-1;
scan_pos_v : out natural range 0 to tsvga.ts_v.ncyc_scan-1;
is_scan_h : out std_logic;
is_scan_v : out std_logic;
scan_rdy_h : out std_logic;
scan_rdy_v : out std_logic
);
end vga_timing;
architecture Behavioral of vga_timing is
---------------------------------------------------------------------------------------------
signal is_scan_h_i : std_logic;
signal is_scan_v_i : std_logic;
signal scan_rdy_h_i : std_logic;
signal scan_rdy_v_i : std_logic;
signal sync_h_i : std_logic;
signal sync_v_i : std_logic;
---------------------------------------------------------------------------------------------
begin
is_scan_h <= is_scan_h_i;
is_scan_v <= is_scan_v_i;
scan_rdy_h <= scan_rdy_h_i;
scan_rdy_v <= scan_rdy_v_i;
sync_h <= sync_h_i;
sync_v <= sync_v_i;
---------------------------------------------------------------------------------------------
inst_vga_sync_h: entity work.vga_sync
GENERIC MAP
(
ts => tsvga.ts_h
)
PORT MAP
(
rst => sys_rst,
clk => vga_clk,
ce => vga_ce,
pos => scan_pos_h,
sync => sync_h_i,
is_scan => is_scan_h_i,
rdy_scan => scan_rdy_h_i
);
inst_vga_sync_v: entity work.vga_sync
GENERIC MAP
(
ts => tsvga.ts_v
)
PORT MAP
(
rst => sys_rst,
clk => vga_clk,
ce => scan_rdy_h_i,
pos => scan_pos_v,
sync => sync_v_i,
is_scan => is_scan_v_i,
rdy_scan => scan_rdy_v_i
);
---------------------------------------------------------------------------------------------
end Behavioral;
+213
View File
@@ -0,0 +1,213 @@
-- Package File Template
--
-- Purpose: This package defines supplemental types, subtypes,
-- constants, and functions
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
use IEEE.MATH_REAL.ALL;
package vga_types is
-- Constants
-- Types
type color_range_t is (r, g, b);
type color_t is array (color_range_t) of unsigned(7 downto 0);
type scan_timespec_t is
record
ncyc_scan : integer;
ncyc_porch_front : integer;
ncyc_sync_pulse : integer;
ncyc_porch_back : integer;
sync_polarity : std_logic;
end record;
type vga_timespec_t is
record
f_pxl_clk : integer;
nfps : integer;
ts_h : scan_timespec_t;
ts_v : scan_timespec_t;
end record;
-----------------------------------------------------------------------
-- Common timimg specifications
-----------------------------------------------------------------------
-- For test bench (not for H/W use)
constant ts_vga_testbench : vga_timespec_t :=
(
f_pxl_clk => 100E6,
nfps => 6,
ts_h => (8,5,2,3,'0'),
ts_v => (6,4,2,3,'0')
);
-- 640 x 480 @ 60 Hz (not recommended)
constant ts_vga_640_480_60 : vga_timespec_t :=
(
f_pxl_clk => 25175000,
nfps => 60,
ts_h => (640,16,96,48,'0'),
ts_v => (480,11,2,31,'0')
);
-- 640 x 480 @ 72 Hz (not recommended)
constant ts_vga_640_480_72 : vga_timespec_t :=
(
f_pxl_clk => 31500000,
nfps => 72,
ts_h => (640,24,40,128,'0'),
ts_v => (480,9,3,28,'0')
);
-- 800 x 600 @ 60 Hz (OK)
constant ts_vga_800_600_60 : vga_timespec_t :=
(
f_pxl_clk => 40000000,
nfps => 60,
ts_h => (800,40,128,88,'0'),
ts_v => (600,1,4,23,'0')
);
-- 800 x 600 @ 72 Hz (OK)
constant ts_vga_800_600_72 : vga_timespec_t :=
(
f_pxl_clk => 50000000,
nfps => 72,
ts_h => (800,56,120,64,'0'),
ts_v => (600,37,6,23,'0')
);
-- 1024 x 768 @ 60 Hz (Noisy)
constant ts_vga_1024_768_60 : vga_timespec_t :=
(
f_pxl_clk => 65000000,
nfps => 60,
ts_h => (1024,24,136,160,'0'),
ts_v => (768,3,6,29,'0')
);
-- 1024 x 768 @ 70 Hz (OK)
constant ts_vga_1024_768_70 : vga_timespec_t :=
(
f_pxl_clk => 75000000,
nfps => 70,
ts_h => (1024,24,136,144,'0'),
ts_v => (768,3,6,29,'0')
);
-- 1280 x 1024 @ 70 Hz (Noisy)
constant ts_vga_1280_1024_70 : vga_timespec_t :=
(
f_pxl_clk => 125000000,
nfps => 70,
ts_h => (1280,16,176,192,'0'),
ts_v => (1024,3,3,42,'0')
);
-- 1280 x 1024 @ 72 Hz (OK)
constant ts_vga_1280_1024_72 : vga_timespec_t :=
(
f_pxl_clk => 130000000,
nfps => 72,
ts_h => (1280,32,160,224,'0'),
ts_v => (1024,2,2,33,'0')
);
-- Functions
function NextPowerOfTwo(x : natural) return natural;
function NextExpBaseTwo(x : natural) return natural;
function GCD(a, b : natural) return natural;
function LCM(a, b : natural) return natural;
function DCM_PERIOD(f_sys_hz : natural) return real;
function DCM_FREQ_M(f_sys_hz, f_vga_hz : natural) return natural;
function DCM_FREQ_D(f_sys_hz, f_vga_hz : natural) return natural;
end vga_types;
package body vga_types is
function NextExpBaseTwo(x : natural) return natural is
begin
return natural(ceil(log2(real(x))));
end NextExpBaseTwo;
function NextPowerOfTwo(x : natural) return natural is
begin
return 2**NextExpBaseTwo(x);
end NextPowerOfTwo;
function GCD(a, b : natural) return natural is
variable aa : natural;
variable bb : natural;
begin
aa := a;
bb := b;
while bb /= 0 loop
if aa > bb then
aa := aa - bb;
else
bb := bb - aa;
end if;
end loop;
return aa;
end GCD;
function LCM(a, b : natural) return natural is
begin
return (a * b)/GCD(a, b);
end LCM;
function DCM_FREQ_M(f_sys_hz, f_vga_hz : natural) return natural is
variable f_sys_mhz : natural;
variable f_vga_mhz : natural;
variable m : natural;
begin
f_sys_mhz := f_sys_hz/1E6;
f_vga_mhz := f_vga_hz/1E6;
m := f_vga_mhz/GCD(f_sys_mhz, f_vga_mhz);
if m = 1 then
m := 2;
end if;
return m;
end DCM_FREQ_M;
function DCM_FREQ_D(f_sys_hz, f_vga_hz : natural) return natural is
variable f_sys_mhz : natural;
variable f_vga_mhz : natural;
variable m : natural;
variable d : natural;
begin
m := DCM_FREQ_M(f_sys_hz, f_vga_hz);
f_sys_mhz := f_sys_hz/1E6;
f_vga_mhz := f_vga_hz/1E6;
d := m*f_sys_mhz/f_vga_mhz;
return d;
end DCM_FREQ_D;
function DCM_PERIOD(f_sys_hz : natural) return real is
begin
return 1.0E9/real(f_sys_hz);
end DCM_PERIOD;
end vga_types;