Load ROM from SD

This commit is contained in:
sorgelig
2017-11-25 02:43:24 +08:00
parent 33060ba244
commit 06eb2a4339
21 changed files with 251 additions and 4167 deletions

View File

@@ -362,17 +362,14 @@ set_global_assignment -name VHDL_FILE cpu/T80_Pack.vhd
set_global_assignment -name VHDL_FILE cpu/T80_MCode.vhd
set_global_assignment -name VHDL_FILE cpu/T80_ALU.vhd
set_global_assignment -name VHDL_FILE cpu/T80.vhd
set_global_assignment -name VHDL_FILE ROM/time_pilot_palette_green_red.vhd
set_global_assignment -name VHDL_FILE ROM/time_pilot_palette_blue_green.vhd
set_global_assignment -name VHDL_FILE ROM/time_pilot_sprite_grphx.vhd
set_global_assignment -name VHDL_FILE ROM/time_pilot_sprite_color_lut.vhd
set_global_assignment -name VHDL_FILE ROM/time_pilot_sound_prog.vhd
set_global_assignment -name VHDL_FILE ROM/time_pilot_prog.vhd
set_global_assignment -name VHDL_FILE ROM/time_pilot_char_grphx.vhd
set_global_assignment -name VHDL_FILE ROM/time_pilot_char_color_lut.vhd
set_global_assignment -name VHDL_FILE dpram.vhd
set_global_assignment -name VHDL_FILE gen_ram.vhd
set_global_assignment -name VERILOG_FILE screen_rotate.v
set_global_assignment -name VHDL_FILE YM2149_linmix_sep.vhd
set_global_assignment -name VHDL_FILE time_pilot_sprite_color_lut.vhd
set_global_assignment -name VHDL_FILE time_pilot_palette_green_red.vhd
set_global_assignment -name VHDL_FILE time_pilot_palette_blue_green.vhd
set_global_assignment -name VHDL_FILE time_pilot_char_color_lut.vhd
set_global_assignment -name VHDL_FILE time_pilot_sound_board.vhd
set_global_assignment -name VHDL_FILE time_pilot.vhd
set_global_assignment -name SYSTEMVERILOG_FILE "Arcade-TimePilot.sv"

View File

@@ -360,17 +360,14 @@ set_global_assignment -name VHDL_FILE cpu/T80_Pack.vhd
set_global_assignment -name VHDL_FILE cpu/T80_MCode.vhd
set_global_assignment -name VHDL_FILE cpu/T80_ALU.vhd
set_global_assignment -name VHDL_FILE cpu/T80.vhd
set_global_assignment -name VHDL_FILE ROM/time_pilot_palette_green_red.vhd
set_global_assignment -name VHDL_FILE ROM/time_pilot_palette_blue_green.vhd
set_global_assignment -name VHDL_FILE ROM/time_pilot_sprite_grphx.vhd
set_global_assignment -name VHDL_FILE ROM/time_pilot_sprite_color_lut.vhd
set_global_assignment -name VHDL_FILE ROM/time_pilot_sound_prog.vhd
set_global_assignment -name VHDL_FILE ROM/time_pilot_prog.vhd
set_global_assignment -name VHDL_FILE ROM/time_pilot_char_grphx.vhd
set_global_assignment -name VHDL_FILE ROM/time_pilot_char_color_lut.vhd
set_global_assignment -name VHDL_FILE dpram.vhd
set_global_assignment -name VHDL_FILE gen_ram.vhd
set_global_assignment -name VERILOG_FILE screen_rotate.v
set_global_assignment -name VHDL_FILE YM2149_linmix_sep.vhd
set_global_assignment -name VHDL_FILE time_pilot_sprite_color_lut.vhd
set_global_assignment -name VHDL_FILE time_pilot_palette_green_red.vhd
set_global_assignment -name VHDL_FILE time_pilot_palette_blue_green.vhd
set_global_assignment -name VHDL_FILE time_pilot_char_color_lut.vhd
set_global_assignment -name VHDL_FILE time_pilot_sound_board.vhd
set_global_assignment -name VHDL_FILE time_pilot.vhd
set_global_assignment -name SYSTEMVERILOG_FILE "Arcade-TimePilot.sv"

View File

@@ -113,7 +113,7 @@ assign {DDRAM_CLK, DDRAM_BURSTCNT, DDRAM_ADDR, DDRAM_DIN, DDRAM_BE, DDRAM_RD, DD
assign {SD_SCK, SD_MOSI, SD_CS} = 'Z;
assign {SDRAM_DQ, SDRAM_A, SDRAM_BA, SDRAM_CLK, SDRAM_CKE, SDRAM_DQML, SDRAM_DQMH, SDRAM_nWE, SDRAM_nCAS, SDRAM_nRAS, SDRAM_nCS} = 'Z;
assign LED_USER = 0;
assign LED_USER = ioctl_download;
assign LED_DISK = 0;
assign LED_POWER = 0;
@@ -129,7 +129,7 @@ localparam CONF_STR = {
"-;",
"T6,Reset;",
"J,Fire,Start 1P,Start 2P;",
"V,v1.50.",`BUILD_DATE
"V,v2.00.",`BUILD_DATE
};
//////////////////// CLOCKS ///////////////////
@@ -151,6 +151,11 @@ pll pll
wire [31:0] status;
wire [1:0] buttons;
wire ioctl_download;
wire ioctl_wr;
wire [24:0] ioctl_addr;
wire [7:0] ioctl_dout;
wire [64:0] ps2_key;
wire [15:0] joystick_0, joystick_1;
@@ -166,6 +171,11 @@ hps_io #(.STRLEN($size(CONF_STR)>>3)) hps_io
.buttons(buttons),
.status(status),
.ioctl_download(ioctl_download),
.ioctl_wr(ioctl_wr),
.ioctl_addr(ioctl_addr),
.ioctl_dout(ioctl_dout),
.joystick_0(joystick_0),
.joystick_1(joystick_1),
.ps2_key(ps2_key)
@@ -260,7 +270,11 @@ time_pilot time_pilot
(
.clock_12(clk_sys),
.clock_14(clk_snd),
.reset(RESET | status[0] | status[6] | buttons[1]),
.reset(RESET | status[0] | status[6] | buttons[1] | ioctl_download),
.dn_addr(ioctl_addr[15:0]),
.dn_data(ioctl_dout),
.dn_wr(ioctl_wr),
.video_clk(ce_vid),

View File

@@ -36,3 +36,22 @@
--
--
---------------------------------------------------------------------------------
*** Attention ***
ROM is not included. In order to use this arcade, you need to provide a correct ROM file.
1) Put bat and 7za.exe files from releases folder into the same folder on PC.
2) Execute bat file - it will show the name of zip file containing required files.
3) Find this zip file somewhere. You need to find the file exactly as required.
Do not rename other zip files even if they also replresent the same game - they are not compatible!
The name of zip is taken from M.A.M.E. project, so you can get more info about
hashes and contained files there.
4) Put required zip into the same folder and execute the bat again.
5) If everything will go without errors or warnings, then you will get the rom file.
6) Place the rom file into root of SD card.

View File

@@ -1,534 +0,0 @@
library ieee;
use ieee.std_logic_1164.all,ieee.numeric_std.all;
entity time_pilot_char_grphx is
port (
clk : in std_logic;
addr : in std_logic_vector(12 downto 0);
data : out std_logic_vector(7 downto 0)
);
end entity;
architecture prom of time_pilot_char_grphx is
type rom is array(0 to 8191) of std_logic_vector(7 downto 0);
signal rom_data: rom := (
X"88",X"99",X"99",X"99",X"99",X"FF",X"FF",X"00",X"00",X"00",X"00",X"00",X"00",X"EE",X"EE",X"00",
X"70",X"30",X"10",X"32",X"32",X"32",X"30",X"1E",X"00",X"80",X"C4",X"C4",X"C4",X"C4",X"80",X"0E",
X"CC",X"EE",X"BB",X"99",X"88",X"CC",X"CC",X"00",X"00",X"00",X"00",X"EE",X"EE",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"0C",X"04",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"4C",X"4C",X"0C",X"04",
X"00",X"00",X"00",X"00",X"10",X"10",X"00",X"00",X"00",X"00",X"00",X"00",X"62",X"40",X"C0",X"00",
X"00",X"00",X"67",X"23",X"03",X"03",X"01",X"77",X"00",X"00",X"68",X"68",X"68",X"2C",X"C0",X"F7",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"00",X"00",X"00",X"11",X"00",X"00",X"07",X"1F",
X"00",X"00",X"01",X"CF",X"16",X"96",X"3C",X"8F",X"00",X"00",X"80",X"C4",X"00",X"00",X"80",X"08",
X"0F",X"30",X"00",X"00",X"00",X"00",X"00",X"00",X"7F",X"F1",X"70",X"00",X"00",X"11",X"00",X"00",
X"CF",X"F8",X"E1",X"87",X"43",X"ED",X"10",X"00",X"0C",X"80",X"80",X"00",X"00",X"C4",X"80",X"00",
X"FF",X"FF",X"00",X"00",X"00",X"FF",X"FF",X"00",X"CC",X"EE",X"22",X"22",X"22",X"EE",X"CC",X"00",
X"FF",X"FF",X"11",X"00",X"11",X"FF",X"FF",X"00",X"00",X"88",X"CC",X"EE",X"CC",X"88",X"00",X"00",
X"FF",X"FF",X"11",X"33",X"11",X"FF",X"FF",X"00",X"EE",X"EE",X"CC",X"88",X"CC",X"EE",X"EE",X"00",
X"00",X"11",X"11",X"11",X"11",X"11",X"11",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"66",X"66",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"33",X"77",X"CC",X"88",X"88",X"77",X"33",X"00",X"88",X"CC",X"22",X"22",X"66",X"CC",X"88",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"88",X"99",X"99",X"99",X"99",X"FF",X"FF",X"00",X"00",X"00",X"00",X"00",X"00",X"EE",X"EE",X"00",
X"00",X"66",X"99",X"99",X"BB",X"FF",X"66",X"00",X"CC",X"EE",X"AA",X"AA",X"22",X"22",X"CC",X"00",
X"00",X"00",X"00",X"0F",X"FC",X"4B",X"FB",X"3C",X"00",X"00",X"00",X"0C",X"E6",X"4B",X"FB",X"87",
X"00",X"00",X"00",X"00",X"00",X"10",X"A9",X"5A",X"00",X"00",X"00",X"00",X"00",X"80",X"48",X"A4",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"66",X"66",X"00",X"00",X"00",
X"33",X"23",X"01",X"91",X"91",X"81",X"81",X"93",X"00",X"88",X"88",X"08",X"08",X"0C",X"5D",X"5D",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"03",X"00",X"00",X"00",X"00",X"00",X"00",
X"CC",X"EE",X"77",X"33",X"77",X"EE",X"CC",X"00",X"66",X"EE",X"CC",X"88",X"CC",X"EE",X"66",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"FF",X"FF",X"00",X"00",X"00",X"00",X"00",X"00",X"CC",X"EE",X"22",X"22",X"22",X"66",X"44",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"11",X"33",X"33",X"33",X"33",X"33",X"00",X"FF",X"FF",X"F8",X"F7",X"F7",X"F8",X"FF",
X"00",X"88",X"CC",X"E2",X"FD",X"FD",X"F3",X"FF",X"00",X"00",X"00",X"00",X"00",X"88",X"CC",X"CC",
X"33",X"33",X"33",X"33",X"33",X"11",X"00",X"00",X"F9",X"F6",X"F6",X"F6",X"F6",X"FF",X"FF",X"00",
X"F3",X"FD",X"FD",X"FD",X"EC",X"CC",X"88",X"00",X"CC",X"CC",X"88",X"00",X"00",X"00",X"00",X"00",
X"00",X"FF",X"FF",X"CC",X"66",X"33",X"11",X"00",X"88",X"EE",X"EE",X"88",X"88",X"88",X"88",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"CC",X"88",X"88",X"FF",X"FF",X"00",X"00",X"00",X"66",X"22",X"22",X"EE",X"EE",X"00",X"66",X"66",
X"00",X"00",X"CC",X"CC",X"22",X"11",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"66",X"66",X"00",X"00",X"00",
X"1E",X"0F",X"0F",X"07",X"16",X"3C",X"07",X"03",X"F7",X"F6",X"F4",X"E5",X"E5",X"E5",X"E5",X"F0",
X"F3",X"F3",X"79",X"79",X"79",X"3C",X"3C",X"16",X"E9",X"E9",X"C3",X"C3",X"C2",X"86",X"86",X"0C",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"77",X"FF",X"88",X"88",X"88",X"FF",X"77",X"00",X"AA",X"CC",X"EE",X"AA",X"22",X"EE",X"CC",X"00",
X"33",X"44",X"88",X"AA",X"AA",X"99",X"44",X"33",X"CC",X"22",X"11",X"55",X"55",X"99",X"22",X"CC",
X"00",X"00",X"00",X"00",X"03",X"03",X"01",X"77",X"00",X"00",X"00",X"00",X"68",X"2C",X"C0",X"F7",
X"00",X"00",X"00",X"00",X"01",X"00",X"00",X"00",X"00",X"00",X"07",X"5A",X"5A",X"78",X"07",X"00",
X"00",X"11",X"0F",X"C3",X"5B",X"4B",X"0F",X"11",X"00",X"EE",X"0C",X"0C",X"EE",X"0C",X"0C",X"EE",
X"88",X"99",X"99",X"99",X"FF",X"FF",X"00",X"00",X"22",X"22",X"22",X"22",X"EE",X"EE",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"07",X"01",X"00",X"00",X"00",X"00",X"00",X"01",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"C0",X"00",
X"67",X"67",X"67",X"23",X"03",X"03",X"01",X"77",X"68",X"68",X"68",X"68",X"68",X"2C",X"C0",X"F7",
X"FF",X"FF",X"77",X"33",X"77",X"FF",X"FF",X"00",X"EE",X"EE",X"00",X"88",X"00",X"EE",X"EE",X"00",
X"99",X"99",X"99",X"88",X"CC",X"77",X"33",X"00",X"EE",X"EE",X"22",X"22",X"66",X"CC",X"88",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"FF",X"FF",X"11",X"33",X"77",X"FF",X"FF",X"00",X"EE",X"EE",X"CC",X"88",X"00",X"EE",X"EE",X"00",
X"33",X"44",X"88",X"AA",X"AA",X"99",X"44",X"33",X"CC",X"22",X"11",X"55",X"55",X"99",X"22",X"CC",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"33",X"44",X"88",X"00",X"00",X"00",X"00",X"00",X"88",X"44",X"22",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"FE",X"00",X"00",X"00",X"00",X"00",X"00",X"C0",X"EE",
X"00",X"99",X"99",X"99",X"DD",X"77",X"33",X"00",X"CC",X"EE",X"22",X"22",X"22",X"EE",X"CC",X"00",
X"11",X"11",X"11",X"FF",X"11",X"11",X"11",X"00",X"00",X"00",X"00",X"EE",X"00",X"00",X"00",X"00",
X"FF",X"FF",X"00",X"00",X"00",X"FF",X"FF",X"00",X"CC",X"EE",X"22",X"22",X"22",X"EE",X"CC",X"00",
X"0F",X"84",X"08",X"08",X"00",X"00",X"08",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"01",X"01",X"01",X"01",X"08",X"08",X"08",X"08",X"08",X"08",X"0C",X"86",
X"00",X"00",X"01",X"91",X"91",X"81",X"81",X"93",X"00",X"00",X"88",X"08",X"08",X"0C",X"5D",X"5D",
X"03",X"01",X"01",X"00",X"00",X"00",X"00",X"00",X"84",X"0C",X"08",X"08",X"08",X"08",X"08",X"08",
X"00",X"00",X"FF",X"FF",X"44",X"00",X"00",X"00",X"22",X"22",X"EE",X"EE",X"22",X"22",X"00",X"00",
X"00",X"00",X"44",X"AA",X"99",X"AA",X"44",X"00",X"22",X"44",X"44",X"AA",X"22",X"AA",X"44",X"00",
X"00",X"00",X"74",X"30",X"10",X"10",X"00",X"00",X"00",X"00",X"F3",X"62",X"62",X"40",X"C0",X"00",
X"00",X"89",X"8B",X"9B",X"EF",X"8B",X"03",X"FE",X"5A",X"5A",X"7E",X"DA",X"5A",X"78",X"C0",X"EE",
X"16",X"16",X"16",X"12",X"03",X"03",X"03",X"01",X"0C",X"0C",X"0C",X"08",X"08",X"08",X"08",X"00",
X"00",X"33",X"44",X"55",X"55",X"44",X"33",X"00",X"00",X"CC",X"22",X"AA",X"AA",X"22",X"CC",X"00",
X"00",X"00",X"16",X"16",X"03",X"01",X"01",X"01",X"00",X"88",X"88",X"C8",X"C0",X"2C",X"2C",X"3C",
X"FF",X"FF",X"11",X"11",X"11",X"FF",X"FF",X"00",X"EE",X"EE",X"00",X"00",X"00",X"EE",X"EE",X"00",
X"08",X"08",X"0C",X"86",X"E1",X"0F",X"0C",X"08",X"00",X"00",X"00",X"00",X"0C",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"77",X"FF",X"88",X"88",X"88",X"FF",X"77",X"00",X"CC",X"EE",X"22",X"22",X"22",X"EE",X"CC",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"FF",X"88",X"88",X"88",X"88",X"88",X"88",X"88",X"FF",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"FF",X"FF",X"00",X"00",X"22",X"22",X"22",X"22",X"EE",X"EE",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"CC",X"EE",X"FF",X"BB",X"99",X"88",X"88",X"00",X"22",X"22",X"22",X"AA",X"EE",X"EE",X"66",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"61",X"00",X"00",X"00",X"00",X"00",X"00",X"2C",X"2C",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"88",X"99",X"99",X"99",X"FF",X"FF",X"00",X"00",X"22",X"22",X"22",X"22",X"EE",X"EE",X"00",X"00",
X"77",X"FF",X"99",X"99",X"99",X"FF",X"66",X"00",X"88",X"CC",X"66",X"22",X"22",X"22",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"08",X"08",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"77",X"FF",X"99",X"88",X"88",X"FF",X"FF",X"00",X"22",X"66",X"EE",X"CC",X"88",X"EE",X"EE",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"00",X"00",X"00",
X"16",X"3C",X"3C",X"79",X"79",X"79",X"F3",X"F3",X"0C",X"86",X"86",X"C2",X"C3",X"C3",X"E9",X"E9",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"3C",X"3C",X"16",X"03",X"03",X"03",X"07",X"0F",X"CB",X"CA",X"C2",X"C2",X"C3",X"E1",X"87",X"87",
X"88",X"DD",X"FF",X"BB",X"99",X"88",X"00",X"00",X"CC",X"EE",X"22",X"22",X"22",X"66",X"44",X"00",
X"00",X"99",X"99",X"99",X"DD",X"77",X"33",X"00",X"CC",X"EE",X"22",X"22",X"22",X"EE",X"CC",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"88",X"88",X"FF",X"FF",X"88",X"88",X"00",X"00",X"22",X"22",X"EE",X"EE",X"22",X"22",X"00",X"00",
X"77",X"FF",X"88",X"88",X"88",X"FF",X"77",X"00",X"CC",X"EE",X"22",X"22",X"22",X"EE",X"CC",X"00",
X"3C",X"79",X"3C",X"1E",X"16",X"70",X"35",X"1E",X"F8",X"FC",X"ED",X"EF",X"E5",X"E9",X"F8",X"FC",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"88",X"88",X"FF",X"FF",X"88",X"88",X"00",X"00",X"00",X"00",X"EE",X"EE",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"03",X"01",X"01",X"00",X"00",X"00",X"00",
X"FF",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"11",X"11",X"11",X"11",X"11",X"11",X"11",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"EF",X"8B",X"03",X"FE",X"00",X"00",X"00",X"00",X"5A",X"78",X"C0",X"EE",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"33",X"77",X"CC",X"88",X"CC",X"77",X"33",X"00",X"EE",X"EE",X"88",X"88",X"88",X"EE",X"EE",X"00",
X"00",X"00",X"00",X"00",X"16",X"03",X"03",X"61",X"00",X"00",X"00",X"00",X"48",X"48",X"2C",X"2C",
X"00",X"00",X"EE",X"00",X"00",X"EE",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"44",X"CC",X"88",X"88",X"CC",X"77",X"33",X"00",X"44",X"66",X"22",X"22",X"66",X"CC",X"88",X"00",
X"00",X"FF",X"BF",X"17",X"13",X"03",X"21",X"30",X"00",X"00",X"BE",X"1F",X"1F",X"1F",X"3E",X"BE",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"88",X"CC",X"66",X"33",X"11",X"FF",X"FF",X"00",X"22",X"66",X"EE",X"CC",X"88",X"EE",X"EE",X"00",
X"30",X"10",X"01",X"01",X"00",X"00",X"00",X"00",X"BE",X"8C",X"4C",X"4C",X"4C",X"4C",X"0C",X"04",
X"88",X"CC",X"66",X"33",X"11",X"FF",X"FF",X"00",X"22",X"66",X"EE",X"CC",X"88",X"EE",X"EE",X"00",
X"99",X"99",X"99",X"88",X"CC",X"77",X"33",X"00",X"EE",X"EE",X"22",X"22",X"66",X"CC",X"88",X"00",
X"00",X"33",X"77",X"CC",X"88",X"CC",X"77",X"33",X"00",X"EE",X"EE",X"88",X"88",X"88",X"EE",X"EE",
X"11",X"BB",X"AA",X"AA",X"AA",X"EE",X"EE",X"00",X"CC",X"EE",X"22",X"22",X"22",X"66",X"44",X"00",
X"77",X"FF",X"88",X"88",X"88",X"FF",X"FF",X"00",X"00",X"88",X"88",X"88",X"88",X"EE",X"EE",X"00",
X"0C",X"08",X"08",X"08",X"0C",X"0C",X"0C",X"C3",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"0E",X"08",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"FF",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"11",X"11",X"11",X"11",X"11",X"11",X"11",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"11",X"11",X"11",X"11",X"11",X"11",X"11",X"FF",
X"00",X"00",X"1E",X"1E",X"16",X"03",X"03",X"61",X"00",X"00",X"80",X"48",X"48",X"48",X"2C",X"2C",
X"77",X"FF",X"99",X"99",X"99",X"FF",X"66",X"00",X"88",X"CC",X"66",X"22",X"22",X"22",X"00",X"00",
X"33",X"77",X"CC",X"88",X"88",X"FF",X"FF",X"00",X"88",X"CC",X"66",X"22",X"22",X"EE",X"EE",X"00",
X"77",X"FF",X"88",X"88",X"88",X"FF",X"FF",X"00",X"00",X"88",X"88",X"88",X"88",X"EE",X"EE",X"00",
X"EE",X"FF",X"11",X"11",X"FF",X"EE",X"00",X"00",X"00",X"00",X"EE",X"EE",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"00",X"01",X"00",X"00",X"00",X"01",X"07",X"1E",X"0F",
X"00",X"00",X"00",X"FF",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"AA",X"00",X"00",X"00",X"00",
X"66",X"FF",X"99",X"99",X"99",X"FF",X"FF",X"00",X"CC",X"EE",X"22",X"22",X"22",X"EE",X"EE",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"2C",X"3C",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"66",X"66",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"FF",X"88",X"88",X"88",X"88",X"88",X"88",X"88",X"FF",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"DA",X"29",X"10",X"00",X"00",X"00",X"00",X"00",X"A4",X"48",X"80",X"00",X"00",X"00",X"00",X"00",
X"01",X"03",X"0B",X"0F",X"2D",X"34",X"16",X"16",X"86",X"86",X"87",X"C3",X"C3",X"E1",X"8F",X"CB",
X"FC",X"74",X"74",X"30",X"10",X"10",X"00",X"00",X"73",X"73",X"F3",X"62",X"62",X"40",X"C0",X"00",
X"88",X"44",X"22",X"11",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"88",X"44",X"22",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"08",X"08",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"FF",X"FF",X"44",X"00",X"00",X"00",X"22",X"22",X"EE",X"EE",X"22",X"22",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"01",X"00",X"00",X"00",X"00",X"01",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"88",X"44",X"33",X"00",X"00",X"00",X"00",X"00",X"22",X"44",X"88",X"00",X"00",X"00",
X"66",X"FF",X"BB",X"99",X"99",X"CC",X"44",X"00",X"22",X"22",X"AA",X"AA",X"EE",X"EE",X"66",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"CC",X"CC",X"22",X"00",X"00",X"00",
X"FF",X"FF",X"00",X"00",X"00",X"00",X"00",X"00",X"CC",X"EE",X"22",X"22",X"22",X"66",X"44",X"00",
X"00",X"55",X"DD",X"99",X"99",X"FF",X"66",X"00",X"CC",X"EE",X"22",X"22",X"22",X"66",X"44",X"00",
X"00",X"00",X"00",X"00",X"91",X"81",X"81",X"93",X"00",X"00",X"00",X"00",X"08",X"0C",X"5D",X"5D",
X"01",X"01",X"03",X"07",X"1E",X"16",X"16",X"3C",X"87",X"87",X"87",X"C3",X"C3",X"CB",X"E9",X"F8",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"EE",X"EE",X"EE",X"EE",X"EE",X"EE",X"EE",X"EE",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"33",X"77",X"CC",X"88",X"CC",X"77",X"33",X"00",X"EE",X"EE",X"88",X"88",X"88",X"EE",X"EE",X"00",
X"00",X"00",X"8B",X"9B",X"EF",X"8B",X"03",X"FE",X"00",X"00",X"7E",X"DA",X"5A",X"78",X"C0",X"EE",
X"00",X"61",X"1E",X"1E",X"12",X"03",X"03",X"61",X"00",X"00",X"80",X"48",X"48",X"48",X"2C",X"2C",
X"66",X"FF",X"BB",X"99",X"99",X"CC",X"44",X"00",X"22",X"22",X"AA",X"AA",X"EE",X"EE",X"66",X"00",
X"CC",X"EE",X"FF",X"BB",X"99",X"88",X"88",X"00",X"22",X"22",X"22",X"AA",X"EE",X"EE",X"66",X"00",
X"08",X"00",X"00",X"08",X"0E",X"C3",X"E1",X"0F",X"00",X"00",X"00",X"00",X"00",X"00",X"0F",X"08",
X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"77",X"00",X"00",X"00",X"00",X"00",X"00",X"C0",X"F7",
X"00",X"01",X"01",X"12",X"34",X"34",X"7C",X"FC",X"0C",X"04",X"86",X"42",X"63",X"63",X"F3",X"73",
X"77",X"FF",X"88",X"88",X"88",X"FF",X"77",X"00",X"AA",X"CC",X"EE",X"AA",X"22",X"EE",X"CC",X"00",
X"11",X"BB",X"AA",X"AA",X"AA",X"EE",X"EE",X"00",X"CC",X"EE",X"22",X"22",X"22",X"66",X"44",X"00",
X"00",X"55",X"55",X"FF",X"55",X"55",X"22",X"00",X"88",X"44",X"44",X"EE",X"44",X"44",X"00",X"00",
X"CC",X"EE",X"BB",X"99",X"88",X"CC",X"CC",X"00",X"00",X"00",X"00",X"EE",X"EE",X"00",X"00",X"00",
X"66",X"FF",X"99",X"99",X"99",X"FF",X"FF",X"00",X"CC",X"EE",X"22",X"22",X"22",X"EE",X"EE",X"00",
X"01",X"03",X"03",X"03",X"12",X"16",X"16",X"16",X"00",X"08",X"08",X"08",X"08",X"0C",X"0C",X"0C",
X"00",X"00",X"00",X"00",X"00",X"00",X"81",X"93",X"00",X"00",X"00",X"00",X"00",X"00",X"5D",X"5D",
X"3C",X"1E",X"1E",X"1E",X"3C",X"3C",X"F3",X"F1",X"E9",X"CB",X"CB",X"CB",X"E9",X"FE",X"F8",X"CB",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"FF",X"FF",X"11",X"00",X"11",X"FF",X"FF",X"00",X"00",X"88",X"CC",X"EE",X"CC",X"88",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"BF",X"17",X"13",X"03",X"21",X"30",X"00",X"00",X"BE",X"1F",X"1F",X"1F",X"3E",X"BE",
X"08",X"00",X"00",X"00",X"08",X"0F",X"0E",X"84",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"CC",X"EE",X"77",X"33",X"77",X"EE",X"CC",X"00",X"66",X"EE",X"CC",X"88",X"CC",X"EE",X"66",X"00",
X"FF",X"FF",X"11",X"33",X"77",X"FF",X"FF",X"00",X"EE",X"EE",X"CC",X"88",X"00",X"EE",X"EE",X"00",
X"EE",X"FF",X"11",X"11",X"FF",X"EE",X"00",X"00",X"00",X"00",X"EE",X"EE",X"00",X"00",X"00",X"00",
X"88",X"88",X"88",X"88",X"88",X"88",X"88",X"FF",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",
X"00",X"00",X"00",X"00",X"00",X"00",X"90",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"CC",X"88",
X"00",X"00",X"01",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"4C",X"4C",X"4C",X"4C",X"0C",X"04",
X"03",X"03",X"03",X"16",X"16",X"1E",X"3C",X"3C",X"08",X"08",X"08",X"0C",X"0C",X"0E",X"86",X"86",
X"FF",X"FF",X"11",X"11",X"11",X"FF",X"FF",X"00",X"EE",X"EE",X"00",X"00",X"00",X"EE",X"EE",X"00",
X"00",X"00",X"00",X"00",X"FF",X"FF",X"00",X"00",X"22",X"22",X"22",X"22",X"EE",X"EE",X"00",X"00",
X"86",X"0C",X"08",X"08",X"08",X"0C",X"0C",X"0E",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"88",X"88",X"88",X"88",X"88",X"88",X"88",X"FF",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",
X"44",X"22",X"11",X"77",X"11",X"22",X"44",X"00",X"44",X"88",X"00",X"CC",X"00",X"88",X"44",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"03",X"01",X"01",X"03",X"07",X"09",X"00",X"00",X"78",X"78",X"E1",X"C3",X"87",X"87",X"0C",X"08",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"44",X"CC",X"88",X"88",X"CC",X"77",X"33",X"00",X"44",X"66",X"22",X"22",X"66",X"CC",X"88",X"00",
X"88",X"DD",X"FF",X"BB",X"99",X"88",X"00",X"00",X"CC",X"EE",X"22",X"22",X"22",X"66",X"44",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"44",X"54",X"54",
X"00",X"00",X"70",X"10",X"70",X"F0",X"F0",X"F0",X"00",X"00",X"80",X"80",X"C4",X"A2",X"A2",X"E6",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"76",X"45",X"45",X"44",X"00",X"00",X"00",X"00",
X"F0",X"3C",X"1E",X"1E",X"16",X"10",X"00",X"00",X"A2",X"A2",X"E6",X"A2",X"A2",X"C4",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"34",X"34",X"7C",X"FC",X"00",X"00",X"00",X"00",X"63",X"63",X"F3",X"73",
X"00",X"00",X"01",X"12",X"34",X"34",X"7C",X"FC",X"00",X"00",X"86",X"42",X"63",X"63",X"F3",X"73",
X"00",X"66",X"99",X"99",X"BB",X"FF",X"66",X"00",X"CC",X"EE",X"AA",X"AA",X"22",X"22",X"CC",X"00",
X"00",X"11",X"11",X"11",X"11",X"11",X"11",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"77",X"FF",X"99",X"88",X"88",X"FF",X"FF",X"00",X"22",X"66",X"EE",X"CC",X"88",X"EE",X"EE",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"93",X"57",X"93",X"A1",X"B0",X"90",X"90",X"80",X"FF",X"9D",X"1D",X"3F",X"1D",X"5D",X"CC",X"88",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"88",X"88",X"FF",X"FF",X"88",X"88",X"00",X"00",X"00",X"00",X"EE",X"EE",X"00",X"00",X"00",X"00",
X"03",X"01",X"01",X"01",X"01",X"01",X"01",X"00",X"08",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"21",X"30",X"00",X"00",X"00",X"00",X"00",X"00",X"3E",X"BE",
X"FD",X"5A",X"FA",X"5A",X"0F",X"00",X"00",X"00",X"F7",X"4B",X"FB",X"4A",X"0C",X"00",X"00",X"00",
X"08",X"00",X"00",X"00",X"00",X"00",X"0C",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"B0",X"90",X"90",X"80",X"00",X"00",X"00",X"00",X"1D",X"5D",X"CC",X"88",
X"00",X"00",X"00",X"00",X"03",X"01",X"01",X"01",X"00",X"00",X"00",X"00",X"C0",X"2C",X"2C",X"3C",
X"33",X"77",X"CC",X"88",X"88",X"77",X"33",X"00",X"88",X"CC",X"22",X"22",X"66",X"CC",X"88",X"00",
X"88",X"44",X"22",X"11",X"44",X"AA",X"44",X"00",X"44",X"AA",X"44",X"00",X"88",X"44",X"22",X"00",
X"08",X"08",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"03",X"03",
X"FF",X"FF",X"11",X"33",X"11",X"FF",X"FF",X"00",X"EE",X"EE",X"CC",X"88",X"CC",X"EE",X"EE",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"1E",X"3C",X"3C",X"3D",X"78",X"F2",X"F3",X"79",X"E9",X"E1",X"F4",X"FC",X"FE",X"FC",X"ED",X"E9",
X"00",X"01",X"01",X"01",X"01",X"01",X"01",X"03",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"08",
X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"03",X"00",X"00",X"08",X"08",X"0C",X"0C",X"86",X"87",
X"33",X"77",X"CC",X"88",X"88",X"FF",X"FF",X"00",X"88",X"CC",X"66",X"22",X"22",X"EE",X"EE",X"00",
X"00",X"55",X"DD",X"99",X"99",X"FF",X"66",X"00",X"CC",X"EE",X"22",X"22",X"22",X"66",X"44",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"7C",X"FC",X"00",X"00",X"00",X"00",X"00",X"00",X"F3",X"73",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"11",X"11",X"11",X"11",X"11",X"11",X"11",X"FF",
X"3C",X"3C",X"1E",X"16",X"16",X"03",X"03",X"03",X"86",X"86",X"0E",X"0C",X"0C",X"08",X"08",X"08",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"FF",X"FF",X"CC",X"66",X"33",X"11",X"00",X"88",X"EE",X"EE",X"88",X"88",X"88",X"88",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"0C",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"0F",X"01",X"00",X"00",X"00",X"00",X"01",X"07",X"0F",X"3C",X"07",X"03",
X"FF",X"FF",X"77",X"33",X"77",X"FF",X"FF",X"00",X"EE",X"EE",X"00",X"88",X"00",X"EE",X"EE",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"33",X"77",X"00",X"00",X"00",X"66",X"66",X"00",X"88",X"CC",
X"00",X"00",X"00",X"00",X"13",X"03",X"21",X"30",X"00",X"00",X"00",X"00",X"1F",X"1F",X"3E",X"BE",
X"00",X"00",X"93",X"A1",X"B0",X"90",X"90",X"80",X"00",X"00",X"1D",X"3F",X"1D",X"5D",X"CC",X"88",
X"00",X"00",X"16",X"16",X"03",X"01",X"01",X"01",X"00",X"00",X"88",X"C8",X"C0",X"2C",X"2C",X"3C",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"88",X"88",X"FF",X"FF",X"88",X"88",X"00",X"00",X"22",X"22",X"EE",X"EE",X"22",X"22",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"88",X"88",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"88",X"88",X"88",X"88",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"88",X"88",X"88",X"88",X"88",X"88",X"88",X"88",
X"11",X"11",X"11",X"11",X"11",X"11",X"11",X"11",X"88",X"88",X"88",X"88",X"88",X"88",X"88",X"88",
X"11",X"11",X"11",X"11",X"11",X"33",X"33",X"33",X"88",X"88",X"88",X"88",X"88",X"CC",X"CC",X"CC",
X"11",X"11",X"11",X"11",X"33",X"33",X"33",X"77",X"88",X"88",X"88",X"88",X"CC",X"CC",X"CC",X"EE",
X"11",X"11",X"33",X"33",X"33",X"77",X"77",X"77",X"88",X"88",X"CC",X"CC",X"CC",X"EE",X"EE",X"EE",
X"33",X"33",X"33",X"33",X"33",X"33",X"77",X"77",X"CC",X"CC",X"CC",X"CC",X"CC",X"CC",X"EE",X"EE",
X"33",X"33",X"33",X"33",X"33",X"77",X"77",X"FF",X"CC",X"CC",X"CC",X"CC",X"CC",X"EE",X"EE",X"FF",
X"33",X"33",X"33",X"33",X"77",X"77",X"FF",X"FF",X"CC",X"CC",X"CC",X"CC",X"EE",X"EE",X"FF",X"FF",
X"77",X"77",X"77",X"FF",X"FF",X"FF",X"FF",X"FF",X"EE",X"EE",X"EE",X"FF",X"FF",X"FF",X"FF",X"FF",
X"77",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"EE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"11",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"11",X"33",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"11",X"11",X"33",X"33",X"77",X"77",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"11",X"11",X"33",X"33",X"77",X"77",X"FF",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"88",X"88",X"88",X"88",X"88",X"88",X"88",X"88",
X"11",X"11",X"11",X"11",X"11",X"11",X"11",X"11",X"88",X"88",X"88",X"88",X"88",X"88",X"88",X"88",
X"33",X"33",X"33",X"33",X"33",X"33",X"33",X"33",X"CC",X"CC",X"CC",X"CC",X"CC",X"CC",X"CC",X"CC",
X"77",X"77",X"77",X"77",X"77",X"77",X"77",X"77",X"EE",X"EE",X"EE",X"EE",X"EE",X"EE",X"EE",X"EE",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"CC",X"CC",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"FF",X"EF",X"FC",X"FC",X"FC",X"FC",X"FC",X"FF",X"FF",X"7F",X"33",X"33",X"33",X"33",X"33",X"FF",
X"00",X"00",X"33",X"33",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"11",X"11",X"00",X"00",X"00",X"00",X"00",X"00",X"88",X"88",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"CC",X"CC",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"08",X"11",X"33",X"FF",X"FF",X"FF",X"CF",X"0F",X"FC",X"FC",X"FC",X"DA",X"AD",X"0E",X"0E",X"6C",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"66",X"66",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"11",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"CC",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"11",X"11",X"00",X"00",X"00",X"00",X"00",X"00",X"88",X"88",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"CC",X"CC",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"FE",X"ED",X"FC",X"FC",X"FE",X"FF",X"77",X"77",X"0F",X"86",X"80",X"00",X"33",X"FF",X"FF",X"EF",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"33",X"33",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"C0",X"C0",X"C0",X"C0",X"C0",X"C0",X"D1",X"FF",X"00",X"00",X"00",X"00",X"00",X"FC",X"FC",X"FC",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"66",X"66",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"FF",X"FF",X"0F",X"00",X"00",X"00",X"00",X"80",X"FC",X"FC",X"FC",X"96",X"43",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"FF",X"FF",X"33",X"11",X"00",X"00",X"00",X"0C",X"FC",X"FC",X"FC",X"FC",X"EC",X"EC",X"44",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",
X"FF",X"FF",X"FC",X"1E",X"0F",X"0F",X"0C",X"00",X"FC",X"FC",X"BC",X"1E",X"96",X"02",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"03",X"07",X"FF",X"FF",X"FF",X"FF",X"FF",X"CF",X"3F",X"0F",X"FF",X"FF",X"FF",X"8F",X"FF",X"FF",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"33",X"33",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"88",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"FF",X"FF",X"FF",X"EF",X"FC",X"0F",X"33",X"77",X"FF",X"FF",X"EF",X"0F",X"80",X"00",X"FC",X"FE",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"11",X"00",X"00",X"00",X"00",X"00",
X"0E",X"0F",X"1E",X"DE",X"FF",X"FF",X"33",X"11",X"42",X"96",X"1E",X"BC",X"FC",X"FC",X"FC",X"FC",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"33",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"CC",X"CC",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"CF",X"FF",X"FF",X"FF",X"FF",X"0E",X"1E",X"FD",X"CF",X"1E",X"BC",X"FC",X"EC",X"1E",X"BC",X"FC",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"03",X"01",X"00",X"00",X"00",X"00",X"44",X"EC",X"0F",X"0F",X"00",X"00",X"00",X"00",X"00",X"33",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"FF",X"FF",X"DF",X"CF",X"EF",X"77",X"11",X"00",X"8F",X"CF",X"FF",X"7F",X"7B",X"C0",X"80",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"77",X"FF",X"FF",X"FF",X"9F",X"0F",X"0E",X"00",X"00",X"88",X"CC",X"EC",X"EC",X"FC",X"FC",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FC",X"EC",X"44",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"11",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"66",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"EF",X"FF",X"FF",X"FF",X"FF",X"33",X"11",X"00",X"0F",X"CF",X"FF",X"FF",X"FF",X"CF",X"EF",X"FF",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"33",X"00",X"00",X"00",X"44",X"EC",X"EC",X"FC",X"FC",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"66",X"66",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"3F",X"FF",X"17",X"00",X"00",X"00",X"77",X"FF",X"EC",X"FC",X"FC",X"FC",X"FC",X"FC",X"FC",X"FC",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"77",X"EF",X"CF",X"DF",X"FF",X"FF",X"EF",X"ED",X"80",X"7B",X"7F",X"FF",X"CF",X"8F",X"0F",X"0F",
X"00",X"00",X"11",X"11",X"00",X"00",X"00",X"00",X"00",X"00",X"88",X"88",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"FF",X"FF",X"33",X"11",X"0C",X"0F",X"1E",X"FC",X"FC",X"FC",X"FC",X"FC",X"ED",X"C7",X"1E",X"BC",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"33",X"33",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"FC",X"FF",X"FF",X"EF",X"9F",X"3F",X"77",X"77",X"0C",X"80",X"D1",X"F7",X"FF",X"FF",X"EF",X"8F",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"CF",X"FF",X"FF",X"FC",X"FC",X"FC",X"FC",X"FC",X"0C",X"C0",X"C0",X"00",X"CF",X"FF",X"77",X"3F",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"11",
X"47",X"8F",X"EF",X"FF",X"FF",X"FC",X"ED",X"FF",X"3F",X"E0",X"E0",X"C0",X"80",X"0C",X"0F",X"0F",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"FF",X"FF",X"1F",X"00",X"00",X"00",X"00",X"00",X"FC",X"FC",X"FC",X"FC",X"0F",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"11",X"11",X"00",X"00",X"00",X"00",X"00",X"00",X"88",X"88",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"11",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"FF",X"FF",X"EF",X"FC",X"0F",X"00",X"00",X"00",X"FF",X"FF",X"0F",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"66",X"66",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"FF",X"FF",X"FF",X"EF",X"FC",X"9E",X"07",X"EC",X"FF",X"FF",X"8F",X"0F",X"08",X"00",X"00",X"33",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"08",X"1E",X"BC",X"FF",X"FF",X"7F",X"1F",X"8F",X"07",X"1E",X"FC",X"FC",X"FC",X"FC",X"FC",X"EC",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"0F",X"0F",X"FF",X"FF",X"FF",X"11",X"00",X"00",X"FC",X"FC",X"FC",X"FC",X"FC",X"FC",X"FC",X"EC",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"03",X"33",X"33",X"0F",X"FC",X"FC",X"E8",X"00",X"1E",X"FC",X"FC",X"FC",X"FC",X"FC",X"FC",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"CF",X"FF",X"FF",X"FF",X"EC",X"07",X"9E",X"FC",X"3F",X"FF",X"FF",X"FF",X"11",X"00",X"00",X"0C",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"FF",X"8F",X"0F",X"08",X"00",X"00",X"11",X"FF",X"FC",X"FC",X"9E",X"03",X"EC",X"FC",X"FC",X"FC",
X"07",X"9E",X"FC",X"EF",X"EF",X"FF",X"FF",X"FF",X"33",X"80",X"0C",X"0F",X"0F",X"8F",X"EF",X"FF");
begin
process(clk)
begin
if rising_edge(clk) then
data <= rom_data(to_integer(unsigned(addr)));
end if;
end process;
end architecture;

File diff suppressed because it is too large Load Diff

View File

@@ -1,278 +0,0 @@
library ieee;
use ieee.std_logic_1164.all,ieee.numeric_std.all;
entity time_pilot_sound_prog is
port (
clk : in std_logic;
addr : in std_logic_vector(11 downto 0);
data : out std_logic_vector(7 downto 0)
);
end entity;
architecture prom of time_pilot_sound_prog is
type rom is array(0 to 4095) of std_logic_vector(7 downto 0);
signal rom_data: rom := (
X"21",X"00",X"30",X"06",X"00",X"C3",X"9B",X"00",X"32",X"00",X"50",X"3A",X"00",X"40",X"C9",X"FF",
X"32",X"00",X"70",X"3A",X"00",X"60",X"C9",X"FF",X"32",X"00",X"50",X"79",X"32",X"00",X"40",X"C9",
X"32",X"00",X"70",X"79",X"32",X"00",X"60",X"C9",X"87",X"85",X"6F",X"7C",X"CE",X"00",X"67",X"7E",
X"23",X"66",X"6F",X"E9",X"FF",X"FF",X"FF",X"FF",X"D9",X"08",X"CD",X"40",X"00",X"08",X"D9",X"C9",
X"3E",X"0E",X"CF",X"B7",X"28",X"2F",X"57",X"E6",X"7F",X"FE",X"21",X"D0",X"CB",X"7A",X"20",X"42",
X"CD",X"80",X"00",X"20",X"1C",X"CD",X"80",X"00",X"20",X"16",X"21",X"00",X"30",X"1E",X"06",X"7E",
X"1D",X"28",X"08",X"2C",X"2C",X"BE",X"38",X"F8",X"C3",X"5F",X"00",X"BA",X"D0",X"CD",X"80",X"00",
X"72",X"2C",X"36",X"00",X"C9",X"21",X"00",X"30",X"06",X"0C",X"AF",X"77",X"2C",X"10",X"FC",X"C9",
X"21",X"00",X"30",X"06",X"06",X"0E",X"07",X"BE",X"28",X"05",X"2C",X"2C",X"10",X"F9",X"41",X"79",
X"90",X"C9",X"CD",X"80",X"00",X"C8",X"AF",X"77",X"2C",X"77",X"C9",X"70",X"23",X"7C",X"FE",X"34",
X"20",X"F9",X"F9",X"ED",X"56",X"21",X"00",X"80",X"22",X"0C",X"30",X"77",X"0E",X"00",X"16",X"06",
X"7A",X"CD",X"9C",X"01",X"15",X"20",X"F9",X"0E",X"38",X"3E",X"07",X"DF",X"3E",X"07",X"E7",X"FB",
X"3E",X"0F",X"CF",X"E6",X"F0",X"20",X"F9",X"F3",X"3E",X"01",X"32",X"0E",X"30",X"3A",X"01",X"30",
X"B7",X"3A",X"00",X"30",X"28",X"06",X"CD",X"7F",X"01",X"C3",X"DF",X"00",X"CD",X"69",X"01",X"FB",
X"00",X"00",X"F3",X"3E",X"02",X"32",X"0E",X"30",X"3A",X"03",X"30",X"B7",X"3A",X"02",X"30",X"28",
X"06",X"CD",X"7F",X"01",X"C3",X"FA",X"00",X"CD",X"69",X"01",X"FB",X"00",X"00",X"F3",X"3E",X"03",
X"32",X"0E",X"30",X"3A",X"05",X"30",X"B7",X"3A",X"04",X"30",X"28",X"06",X"CD",X"7F",X"01",X"C3",
X"15",X"01",X"CD",X"69",X"01",X"FB",X"00",X"00",X"F3",X"3E",X"04",X"32",X"0E",X"30",X"3A",X"07",
X"30",X"B7",X"3A",X"06",X"30",X"28",X"06",X"CD",X"7F",X"01",X"C3",X"30",X"01",X"CD",X"69",X"01",
X"FB",X"00",X"00",X"F3",X"3E",X"05",X"32",X"0E",X"30",X"3A",X"09",X"30",X"B7",X"3A",X"08",X"30",
X"28",X"06",X"CD",X"7F",X"01",X"C3",X"4B",X"01",X"CD",X"69",X"01",X"FB",X"00",X"00",X"F3",X"3E",
X"06",X"32",X"0E",X"30",X"3A",X"0B",X"30",X"B7",X"3A",X"0A",X"30",X"28",X"06",X"CD",X"7F",X"01",
X"C3",X"BF",X"00",X"CD",X"69",X"01",X"C3",X"BF",X"00",X"21",X"92",X"0A",X"EF",X"B7",X"20",X"17",
X"21",X"01",X"30",X"3A",X"0E",X"30",X"3D",X"87",X"5F",X"16",X"00",X"19",X"36",X"01",X"C9",X"B7",
X"C8",X"21",X"D4",X"0A",X"EF",X"B7",X"C8",X"21",X"00",X"30",X"3A",X"0E",X"30",X"3D",X"87",X"4F",
X"06",X"00",X"09",X"70",X"2C",X"70",X"C9",X"0E",X"00",X"3A",X"0E",X"30",X"FE",X"04",X"30",X"05",
X"C6",X"07",X"C3",X"18",X"00",X"C6",X"04",X"C3",X"20",X"00",X"3A",X"0E",X"30",X"FE",X"04",X"30",
X"0B",X"3D",X"87",X"47",X"4D",X"DF",X"78",X"3C",X"4C",X"C3",X"18",X"00",X"D6",X"04",X"87",X"47",
X"4D",X"E7",X"78",X"3C",X"4C",X"C3",X"20",X"00",X"01",X"FC",X"FF",X"21",X"00",X"00",X"1F",X"CB",
X"15",X"1F",X"CB",X"15",X"3A",X"0E",X"30",X"C6",X"02",X"FE",X"06",X"38",X"04",X"D6",X"06",X"28",
X"0A",X"87",X"29",X"37",X"CB",X"11",X"CB",X"10",X"3D",X"20",X"F7",X"EB",X"2A",X"0C",X"30",X"7D",
X"A1",X"B3",X"6F",X"7C",X"A0",X"B2",X"67",X"22",X"0C",X"30",X"77",X"C9",X"DD",X"35",X"01",X"C0",
X"DD",X"7E",X"08",X"DD",X"77",X"01",X"DD",X"35",X"00",X"28",X"15",X"DD",X"CB",X"00",X"46",X"C8",
X"DD",X"7E",X"09",X"B7",X"C8",X"DD",X"86",X"07",X"F8",X"DD",X"77",X"07",X"4F",X"C3",X"99",X"01",
X"DD",X"6E",X"02",X"DD",X"66",X"03",X"7E",X"57",X"E6",X"1F",X"28",X"24",X"FE",X"1F",X"28",X"37",
X"CD",X"50",X"02",X"7A",X"E6",X"1F",X"3D",X"07",X"4F",X"DD",X"6E",X"04",X"DD",X"66",X"05",X"09",
X"5E",X"23",X"56",X"EB",X"CD",X"AA",X"01",X"DD",X"4E",X"06",X"DD",X"71",X"07",X"C3",X"99",X"01",
X"23",X"DD",X"75",X"02",X"DD",X"74",X"03",X"7A",X"E6",X"E0",X"07",X"07",X"07",X"47",X"3E",X"80",
X"07",X"10",X"FD",X"DD",X"77",X"00",X"C9",X"7A",X"E6",X"E0",X"07",X"07",X"07",X"11",X"20",X"02",
X"D5",X"23",X"5D",X"54",X"23",X"DD",X"75",X"02",X"DD",X"74",X"03",X"21",X"81",X"02",X"C3",X"28",
X"00",X"91",X"02",X"A5",X"02",X"B5",X"02",X"BA",X"02",X"C9",X"02",X"C9",X"02",X"BF",X"02",X"C9",
X"02",X"EB",X"4E",X"CB",X"21",X"06",X"00",X"21",X"CE",X"02",X"09",X"5E",X"23",X"56",X"DD",X"73",
X"04",X"DD",X"72",X"05",X"C9",X"EB",X"4E",X"06",X"00",X"21",X"66",X"03",X"09",X"7E",X"DD",X"77",
X"08",X"DD",X"77",X"01",X"C9",X"1A",X"DD",X"77",X"06",X"C9",X"1A",X"DD",X"77",X"09",X"C9",X"1A",
X"DD",X"77",X"02",X"13",X"1A",X"DD",X"77",X"03",X"C9",X"E1",X"E1",X"3E",X"FF",X"C9",X"EE",X"02",
X"F2",X"02",X"F6",X"02",X"FA",X"02",X"FE",X"02",X"02",X"03",X"06",X"03",X"0A",X"03",X"0E",X"03",
X"12",X"03",X"16",X"03",X"1A",X"03",X"1E",X"03",X"22",X"03",X"26",X"03",X"2A",X"03",X"FF",X"0F",
X"F2",X"07",X"80",X"07",X"14",X"07",X"AE",X"06",X"4E",X"06",X"F3",X"05",X"9E",X"05",X"4E",X"05",
X"01",X"05",X"B9",X"04",X"76",X"04",X"36",X"04",X"F9",X"03",X"C0",X"03",X"8A",X"03",X"57",X"03",
X"27",X"03",X"FA",X"02",X"CF",X"02",X"A7",X"02",X"81",X"02",X"5D",X"02",X"3B",X"02",X"1B",X"02",
X"FD",X"01",X"E0",X"01",X"C5",X"01",X"AC",X"01",X"94",X"01",X"7D",X"01",X"68",X"01",X"53",X"01",
X"40",X"01",X"2E",X"01",X"1D",X"01",X"0D",X"01",X"FE",X"00",X"F0",X"00",X"E3",X"00",X"D6",X"00",
X"CA",X"00",X"BE",X"00",X"B4",X"00",X"AA",X"00",X"A0",X"00",X"97",X"00",X"8F",X"00",X"87",X"00",
X"7F",X"00",X"78",X"00",X"71",X"00",X"6B",X"00",X"65",X"00",X"5F",X"00",X"5A",X"00",X"55",X"00",
X"50",X"00",X"4C",X"00",X"07",X"00",X"3C",X"38",X"34",X"30",X"2C",X"28",X"24",X"20",X"1E",X"1C",
X"1A",X"18",X"16",X"14",X"12",X"10",X"0F",X"0E",X"0D",X"0C",X"0B",X"0A",X"09",X"08",X"21",X"B5",
X"03",X"11",X"0F",X"30",X"01",X"32",X"00",X"ED",X"B0",X"87",X"4F",X"87",X"87",X"81",X"4F",X"06",
X"00",X"21",X"6E",X"0B",X"09",X"11",X"11",X"30",X"ED",X"A0",X"ED",X"A0",X"1E",X"1B",X"ED",X"A0",
X"ED",X"A0",X"1E",X"25",X"ED",X"A0",X"ED",X"A0",X"1E",X"2F",X"ED",X"A0",X"ED",X"A0",X"1E",X"39",
X"ED",X"A0",X"ED",X"A0",X"C9",X"01",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"01",
X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"01",X"01",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"FF",X"01",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"01",X"01",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"AF",X"CD",X"C8",X"01",X"21",X"6B",X"00",X"CD",X"AA",
X"01",X"21",X"41",X"30",X"36",X"00",X"2C",X"36",X"47",X"2C",X"0E",X"09",X"71",X"CD",X"99",X"01",
X"AF",X"C9",X"21",X"41",X"30",X"35",X"7E",X"E6",X"03",X"20",X"18",X"2C",X"35",X"7E",X"28",X"1D",
X"E6",X"07",X"28",X"11",X"E6",X"03",X"3D",X"4F",X"06",X"00",X"21",X"2F",X"04",X"09",X"6E",X"60",
X"CD",X"AA",X"01",X"AF",X"C9",X"2C",X"35",X"4E",X"CD",X"99",X"01",X"AF",X"C9",X"3D",X"C9",X"47",
X"55",X"6B",X"AF",X"CD",X"C8",X"01",X"0E",X"0A",X"CD",X"99",X"01",X"3E",X"80",X"32",X"44",X"30",
X"21",X"04",X"00",X"22",X"45",X"30",X"CD",X"AA",X"01",X"AF",X"C9",X"21",X"44",X"30",X"35",X"7E",
X"28",X"0E",X"FE",X"6D",X"28",X"EA",X"2A",X"45",X"30",X"01",X"18",X"00",X"09",X"C3",X"43",X"04",
X"3D",X"C9",X"AF",X"CD",X"C8",X"01",X"21",X"C0",X"00",X"22",X"47",X"30",X"CD",X"AA",X"01",X"0E",
X"09",X"CD",X"99",X"01",X"AF",X"21",X"49",X"30",X"77",X"C9",X"21",X"49",X"30",X"35",X"7E",X"E6",
X"07",X"20",X"12",X"2A",X"47",X"30",X"01",X"40",X"00",X"09",X"7C",X"FE",X"0C",X"28",X"08",X"22",
X"47",X"30",X"CD",X"AA",X"01",X"AF",X"C9",X"3E",X"FF",X"C9",X"3E",X"01",X"CD",X"C8",X"01",X"21",
X"4A",X"30",X"36",X"00",X"2C",X"0E",X"0F",X"71",X"CD",X"99",X"01",X"21",X"60",X"00",X"22",X"4C",
X"30",X"AF",X"C9",X"21",X"4A",X"30",X"35",X"7E",X"E6",X"0F",X"28",X"16",X"2A",X"4C",X"30",X"FE",
X"0C",X"01",X"10",X"00",X"30",X"03",X"01",X"D0",X"FF",X"09",X"22",X"4C",X"30",X"CD",X"AA",X"01",
X"AF",X"C9",X"2C",X"35",X"4E",X"20",X"D1",X"3D",X"C9",X"AF",X"CD",X"C8",X"01",X"21",X"4E",X"30",
X"36",X"B0",X"2C",X"36",X"0D",X"35",X"4E",X"CD",X"99",X"01",X"2C",X"36",X"20",X"6E",X"26",X"00",
X"CD",X"AA",X"01",X"AF",X"C9",X"21",X"4E",X"30",X"35",X"7E",X"28",X"0C",X"2C",X"E6",X"0F",X"28",
X"E4",X"2C",X"34",X"C3",X"ED",X"04",X"AF",X"C9",X"3D",X"C9",X"AF",X"CD",X"C8",X"01",X"21",X"50",
X"00",X"CD",X"AA",X"01",X"21",X"51",X"30",X"36",X"40",X"2C",X"0E",X"05",X"71",X"CD",X"99",X"01",
X"2C",X"36",X"17",X"2C",X"36",X"50",X"AF",X"C9",X"21",X"51",X"30",X"35",X"28",X"E9",X"7E",X"2C",
X"E6",X"0F",X"20",X"05",X"34",X"4E",X"CD",X"99",X"01",X"2C",X"7E",X"C6",X"29",X"77",X"2C",X"AE",
X"E6",X"3F",X"C6",X"50",X"77",X"6F",X"26",X"00",X"CD",X"AA",X"01",X"AF",X"C9",X"AF",X"CD",X"C8",
X"01",X"21",X"56",X"30",X"36",X"08",X"2D",X"36",X"2C",X"2C",X"35",X"28",X"29",X"4E",X"CD",X"99",
X"01",X"21",X"00",X"00",X"22",X"57",X"30",X"CD",X"AA",X"01",X"AF",X"C9",X"21",X"55",X"30",X"35",
X"7E",X"28",X"E4",X"FE",X"16",X"28",X"EA",X"2A",X"57",X"30",X"01",X"10",X"00",X"09",X"22",X"57",
X"30",X"CD",X"AA",X"01",X"AF",X"C9",X"3D",X"C9",X"3E",X"01",X"CD",X"C8",X"01",X"21",X"5C",X"30",
X"36",X"0C",X"4E",X"CD",X"99",X"01",X"2D",X"36",X"00",X"21",X"80",X"00",X"22",X"59",X"30",X"CD",
X"AA",X"01",X"AF",X"C9",X"21",X"5B",X"30",X"34",X"7E",X"FE",X"59",X"28",X"0F",X"4F",X"06",X"00",
X"2A",X"59",X"30",X"09",X"22",X"59",X"30",X"CD",X"AA",X"01",X"AF",X"C9",X"2C",X"7E",X"D6",X"04",
X"28",X"04",X"77",X"C3",X"92",X"05",X"3D",X"C9",X"3E",X"01",X"CD",X"C8",X"01",X"21",X"5D",X"30",
X"36",X"00",X"2C",X"36",X"E0",X"2C",X"0E",X"0D",X"71",X"CD",X"99",X"01",X"2C",X"36",X"93",X"2C",
X"36",X"D5",X"21",X"C0",X"00",X"CD",X"AA",X"01",X"AF",X"C9",X"21",X"5D",X"30",X"35",X"CB",X"46",
X"20",X"25",X"2C",X"35",X"7E",X"28",X"22",X"FE",X"D0",X"28",X"DA",X"2C",X"E6",X"0F",X"20",X"05",
X"35",X"4E",X"CD",X"99",X"01",X"2C",X"7E",X"C6",X"53",X"77",X"2C",X"AE",X"77",X"6F",X"FE",X"E0",
X"38",X"01",X"AF",X"67",X"CD",X"AA",X"01",X"AF",X"C9",X"3D",X"C9",X"AF",X"CD",X"C8",X"01",X"21",
X"62",X"30",X"36",X"00",X"2C",X"36",X"C0",X"2C",X"36",X"0D",X"35",X"4E",X"CD",X"99",X"01",X"21",
X"20",X"00",X"22",X"65",X"30",X"CD",X"AA",X"01",X"AF",X"C9",X"21",X"62",X"30",X"35",X"7E",X"E6",
X"01",X"20",X"17",X"2C",X"35",X"7E",X"28",X"14",X"2C",X"E6",X"0F",X"28",X"DD",X"2A",X"65",X"30",
X"01",X"40",X"00",X"09",X"22",X"65",X"30",X"CD",X"AA",X"01",X"AF",X"C9",X"3D",X"C9",X"AF",X"CD",
X"C8",X"01",X"0E",X"0C",X"CD",X"99",X"01",X"21",X"67",X"30",X"36",X"B8",X"2C",X"36",X"1F",X"21",
X"1F",X"00",X"CD",X"AA",X"01",X"AF",X"C9",X"21",X"67",X"30",X"35",X"7E",X"28",X"15",X"FE",X"60",
X"28",X"EA",X"E6",X"03",X"20",X"0B",X"2C",X"7E",X"C6",X"20",X"77",X"6F",X"26",X"00",X"CD",X"AA",
X"01",X"AF",X"C9",X"3D",X"C9",X"3E",X"01",X"CD",X"C8",X"01",X"21",X"C0",X"00",X"CD",X"AA",X"01",
X"0E",X"0F",X"CD",X"99",X"01",X"AF",X"21",X"69",X"30",X"77",X"2C",X"36",X"53",X"2C",X"36",X"09",
X"2C",X"36",X"37",X"C9",X"21",X"69",X"30",X"35",X"56",X"2C",X"7E",X"C6",X"D5",X"77",X"2C",X"CB",
X"42",X"20",X"09",X"AE",X"77",X"E6",X"EF",X"4F",X"CD",X"99",X"01",X"79",X"2C",X"AE",X"77",X"F6",
X"80",X"6F",X"26",X"00",X"CD",X"AA",X"01",X"AF",X"C9",X"3E",X"01",X"CD",X"C8",X"01",X"21",X"6D",
X"30",X"36",X"28",X"2C",X"36",X"05",X"2C",X"36",X"30",X"21",X"00",X"06",X"CD",X"AA",X"01",X"0E",
X"08",X"CD",X"99",X"01",X"AF",X"C9",X"21",X"6D",X"30",X"35",X"28",X"E5",X"7E",X"E6",X"07",X"C6",
X"08",X"4F",X"CD",X"99",X"01",X"2C",X"7E",X"C6",X"B9",X"77",X"2C",X"AE",X"77",X"6F",X"26",X"06",
X"CD",X"AA",X"01",X"AF",X"C9",X"3E",X"01",X"CD",X"C8",X"01",X"21",X"00",X"01",X"CD",X"AA",X"01",
X"21",X"70",X"30",X"36",X"00",X"2C",X"0E",X"0F",X"71",X"CD",X"99",X"01",X"AF",X"2C",X"77",X"2C",
X"77",X"C9",X"21",X"70",X"30",X"35",X"7E",X"CB",X"47",X"23",X"20",X"0B",X"35",X"E6",X"10",X"20",
X"02",X"34",X"34",X"4E",X"CD",X"99",X"01",X"2C",X"7E",X"C6",X"D3",X"77",X"2C",X"AE",X"77",X"E6",
X"7F",X"C6",X"A8",X"6F",X"E6",X"07",X"67",X"CD",X"AA",X"01",X"AF",X"C9",X"3E",X"01",X"CD",X"C8",
X"01",X"21",X"00",X"01",X"CD",X"AA",X"01",X"0E",X"0C",X"CD",X"99",X"01",X"AF",X"21",X"74",X"30",
X"77",X"2C",X"77",X"C9",X"21",X"74",X"30",X"7E",X"C6",X"97",X"77",X"2C",X"AE",X"77",X"E6",X"7F",
X"C6",X"C0",X"6F",X"26",X"01",X"CD",X"AA",X"01",X"AF",X"C9",X"3E",X"01",X"CD",X"C8",X"01",X"0E",
X"0A",X"CD",X"99",X"01",X"21",X"76",X"30",X"36",X"30",X"2C",X"36",X"02",X"2C",X"3E",X"E0",X"77",
X"2C",X"77",X"6F",X"26",X"00",X"CD",X"AA",X"01",X"AF",X"C9",X"21",X"76",X"30",X"35",X"7E",X"28",
X"E6",X"2C",X"E6",X"0F",X"28",X"07",X"7E",X"2C",X"2C",X"86",X"C3",X"A1",X"07",X"34",X"34",X"2C",
X"7E",X"D6",X"20",X"C3",X"9F",X"07",X"3E",X"01",X"CD",X"C8",X"01",X"21",X"00",X"00",X"CD",X"AA",
X"01",X"21",X"7A",X"30",X"36",X"00",X"2C",X"0E",X"0F",X"71",X"CD",X"99",X"01",X"2C",X"36",X"45",
X"2C",X"36",X"99",X"AF",X"C9",X"21",X"7A",X"30",X"35",X"7E",X"CB",X"47",X"20",X"19",X"2C",X"E6",
X"3F",X"20",X"07",X"35",X"28",X"13",X"4E",X"CD",X"99",X"01",X"2C",X"7E",X"C6",X"D3",X"77",X"2C",
X"AE",X"77",X"6F",X"67",X"CD",X"AA",X"01",X"AF",X"C9",X"3D",X"C9",X"3E",X"01",X"CD",X"C8",X"01",
X"21",X"00",X"00",X"22",X"81",X"30",X"CD",X"AA",X"01",X"21",X"7E",X"30",X"36",X"00",X"2C",X"0E",
X"0F",X"71",X"CD",X"99",X"01",X"2C",X"AF",X"77",X"C9",X"21",X"7E",X"30",X"35",X"7E",X"57",X"2C",
X"E6",X"1F",X"20",X"07",X"35",X"28",X"1E",X"4E",X"CD",X"99",X"01",X"2C",X"7E",X"C6",X"C5",X"77",
X"2A",X"81",X"30",X"AA",X"AD",X"6F",X"67",X"FE",X"80",X"30",X"02",X"26",X"01",X"22",X"81",X"30",
X"CD",X"AA",X"01",X"AF",X"C9",X"3D",X"C9",X"3E",X"02",X"CD",X"C8",X"01",X"21",X"00",X"00",X"CD",
X"AA",X"01",X"21",X"83",X"30",X"0E",X"0F",X"71",X"CD",X"99",X"01",X"2C",X"36",X"30",X"2C",X"36",
X"95",X"2C",X"36",X"3D",X"21",X"70",X"00",X"22",X"87",X"30",X"22",X"89",X"30",X"AF",X"C9",X"21",
X"84",X"30",X"35",X"7E",X"28",X"28",X"FE",X"10",X"38",X"10",X"2C",X"7E",X"C6",X"C9",X"77",X"2C",
X"AE",X"77",X"6F",X"26",X"01",X"CD",X"AA",X"01",X"AF",X"C9",X"D6",X"10",X"ED",X"44",X"87",X"4F",
X"06",X"00",X"2A",X"89",X"30",X"09",X"22",X"89",X"30",X"CD",X"AA",X"01",X"AF",X"C9",X"2D",X"35",
X"28",X"1C",X"4E",X"CD",X"99",X"01",X"2C",X"3A",X"85",X"30",X"E6",X"3F",X"C6",X"30",X"77",X"2A",
X"87",X"30",X"01",X"60",X"00",X"09",X"22",X"87",X"30",X"22",X"89",X"30",X"AF",X"C9",X"3D",X"C9",
X"3E",X"02",X"CD",X"C8",X"01",X"21",X"00",X"00",X"CD",X"AA",X"01",X"21",X"8B",X"30",X"0E",X"0F",
X"71",X"CD",X"99",X"01",X"2C",X"36",X"30",X"2C",X"36",X"95",X"2C",X"36",X"3D",X"21",X"38",X"00",
X"22",X"8F",X"30",X"22",X"91",X"30",X"AF",X"C9",X"21",X"8C",X"30",X"35",X"7E",X"28",X"23",X"FE",
X"10",X"38",X"10",X"2C",X"7E",X"C6",X"D3",X"77",X"2C",X"AE",X"77",X"6F",X"26",X"01",X"CD",X"AA",
X"01",X"AF",X"C9",X"2A",X"91",X"30",X"01",X"30",X"00",X"09",X"22",X"91",X"30",X"CD",X"AA",X"01",
X"AF",X"C9",X"2D",X"35",X"28",X"1C",X"4E",X"CD",X"99",X"01",X"2C",X"3A",X"8D",X"30",X"E6",X"3F",
X"C6",X"30",X"77",X"2A",X"8F",X"30",X"01",X"06",X"00",X"09",X"22",X"8F",X"30",X"22",X"91",X"30",
X"AF",X"C9",X"3D",X"C9",X"3E",X"01",X"CD",X"C8",X"01",X"21",X"93",X"30",X"36",X"00",X"2C",X"36",
X"D0",X"2C",X"0E",X"0D",X"71",X"CD",X"99",X"01",X"2C",X"36",X"93",X"2C",X"36",X"D5",X"21",X"C0",
X"00",X"CD",X"AA",X"01",X"AF",X"C9",X"21",X"93",X"30",X"35",X"7E",X"E6",X"03",X"20",X"29",X"2C",
X"35",X"28",X"27",X"7E",X"FE",X"98",X"28",X"D9",X"FE",X"80",X"28",X"D5",X"2C",X"E6",X"0F",X"20",
X"05",X"35",X"4E",X"CD",X"99",X"01",X"2C",X"7E",X"C6",X"53",X"77",X"2C",X"AE",X"77",X"6F",X"FE",
X"E0",X"38",X"01",X"AF",X"67",X"CD",X"AA",X"01",X"AF",X"C9",X"3D",X"C9",X"AF",X"CD",X"C8",X"01",
X"0E",X"09",X"CD",X"99",X"01",X"21",X"99",X"30",X"3E",X"F6",X"D6",X"06",X"77",X"D6",X"7E",X"28",
X"1E",X"2D",X"36",X"30",X"21",X"30",X"00",X"CD",X"AA",X"01",X"AF",X"C9",X"21",X"98",X"30",X"7E",
X"C6",X"06",X"77",X"2C",X"BE",X"28",X"E3",X"6F",X"26",X"00",X"CD",X"AA",X"01",X"AF",X"C9",X"3D",
X"C9",X"3E",X"01",X"CD",X"C8",X"01",X"0E",X"0F",X"CD",X"99",X"01",X"21",X"9A",X"30",X"36",X"1D",
X"2C",X"2D",X"35",X"7E",X"28",X"1A",X"2C",X"77",X"87",X"6F",X"26",X"00",X"CD",X"AA",X"01",X"AF",
X"C9",X"21",X"9B",X"30",X"35",X"28",X"EA",X"6E",X"26",X"00",X"29",X"CD",X"AA",X"01",X"AF",X"C9",
X"3D",X"C9",X"AF",X"CD",X"C8",X"01",X"0E",X"0A",X"CD",X"99",X"01",X"3E",X"80",X"32",X"9E",X"30",
X"21",X"9C",X"30",X"36",X"00",X"2C",X"36",X"C0",X"21",X"C0",X"00",X"CD",X"AA",X"01",X"AF",X"C9",
X"21",X"9C",X"30",X"35",X"CB",X"46",X"23",X"7E",X"20",X"15",X"35",X"7E",X"FE",X"20",X"28",X"18",
X"2C",X"BE",X"3A",X"9D",X"30",X"20",X"09",X"7E",X"C6",X"05",X"77",X"2D",X"C3",X"16",X"0A",X"1F",
X"6F",X"26",X"00",X"CD",X"AA",X"01",X"AF",X"C9",X"3E",X"FF",X"C9",X"AF",X"CD",X"C8",X"01",X"21",
X"C0",X"00",X"CD",X"AA",X"01",X"0E",X"0F",X"CD",X"99",X"01",X"21",X"9F",X"30",X"36",X"00",X"2C",
X"36",X"10",X"2C",X"36",X"03",X"2C",X"36",X"05",X"AF",X"C9",X"21",X"9F",X"30",X"35",X"7E",X"2C",
X"E6",X"3F",X"20",X"03",X"35",X"28",X"19",X"E6",X"03",X"20",X"13",X"56",X"2C",X"7E",X"C6",X"05",
X"77",X"2C",X"AE",X"E6",X"0F",X"77",X"BA",X"38",X"01",X"AF",X"4F",X"CD",X"99",X"01",X"AF",X"C9",
X"3D",X"C9",X"97",X"01",X"E7",X"03",X"32",X"04",X"62",X"04",X"9A",X"04",X"D9",X"04",X"0A",X"05",
X"4D",X"05",X"88",X"05",X"C8",X"05",X"1B",X"06",X"5E",X"06",X"95",X"06",X"D9",X"06",X"15",X"07",
X"5C",X"07",X"8A",X"07",X"C6",X"07",X"0B",X"08",X"57",X"08",X"D0",X"08",X"44",X"09",X"9C",X"09",
X"D1",X"09",X"02",X"0A",X"4B",X"0A",X"16",X"0B",X"1A",X"0B",X"3B",X"0B",X"3B",X"0B",X"3B",X"0B",
X"3B",X"0B",X"3B",X"0B",X"00",X"00",X"02",X"04",X"4B",X"04",X"7A",X"04",X"B3",X"04",X"F5",X"04",
X"28",X"05",X"6C",X"05",X"A4",X"05",X"EA",X"05",X"3A",X"06",X"77",X"06",X"B4",X"06",X"F6",X"06",
X"32",X"07",X"74",X"07",X"AA",X"07",X"E5",X"07",X"29",X"08",X"7F",X"08",X"F8",X"08",X"66",X"09",
X"BC",X"09",X"F1",X"09",X"20",X"0A",X"6A",X"0A",X"00",X"00",X"00",X"00",X"41",X"0B",X"4A",X"0B",
X"53",X"0B",X"5C",X"0B",X"65",X"0B",X"AF",X"C3",X"1C",X"0B",X"3E",X"01",X"CD",X"7E",X"03",X"11",
X"00",X"30",X"21",X"2F",X"0B",X"01",X"0C",X"00",X"ED",X"B0",X"E1",X"E1",X"C3",X"BF",X"00",X"1C",
X"00",X"1D",X"00",X"1E",X"00",X"1F",X"00",X"20",X"00",X"00",X"00",X"AF",X"CD",X"C8",X"01",X"AF",
X"C9",X"DD",X"21",X"0F",X"30",X"CD",X"FC",X"01",X"AF",X"C9",X"DD",X"21",X"19",X"30",X"CD",X"FC",
X"01",X"AF",X"C9",X"DD",X"21",X"23",X"30",X"CD",X"FC",X"01",X"AF",X"C9",X"DD",X"21",X"2D",X"30",
X"CD",X"FC",X"01",X"AF",X"C9",X"DD",X"21",X"37",X"30",X"CD",X"FC",X"01",X"AF",X"C9",X"82",X"0B",
X"B2",X"0B",X"E2",X"0B",X"08",X"0C",X"2D",X"0C",X"2E",X"0C",X"70",X"0C",X"AD",X"0C",X"EB",X"0C",
X"04",X"0D",X"1F",X"0E",X"3F",X"16",X"5F",X"00",X"81",X"60",X"5F",X"08",X"66",X"A8",X"AD",X"92",
X"7F",X"00",X"B1",X"91",X"7F",X"FF",X"B1",X"B2",X"91",X"7F",X"00",X"D4",X"B4",X"7F",X"FF",X"B4",
X"60",X"74",X"3F",X"13",X"77",X"76",X"74",X"74",X"73",X"71",X"71",X"70",X"6D",X"6D",X"70",X"71",
X"AD",X"FF",X"1F",X"02",X"3F",X"16",X"5F",X"00",X"81",X"60",X"5F",X"08",X"66",X"A8",X"AD",X"92",
X"7F",X"00",X"B1",X"91",X"7F",X"FF",X"B1",X"B2",X"91",X"7F",X"00",X"D4",X"B4",X"7F",X"FF",X"B4",
X"60",X"74",X"3F",X"13",X"77",X"76",X"74",X"74",X"73",X"71",X"71",X"70",X"6D",X"6D",X"70",X"71",
X"AD",X"FF",X"1F",X"0E",X"3F",X"13",X"5F",X"08",X"8D",X"6D",X"8D",X"6D",X"8D",X"6D",X"8D",X"6D",
X"8D",X"6D",X"8D",X"6D",X"8D",X"6D",X"8D",X"6D",X"88",X"68",X"85",X"60",X"86",X"60",X"87",X"60",
X"7F",X"00",X"CB",X"7F",X"FF",X"AB",X"AD",X"FF",X"1F",X"02",X"3F",X"13",X"5F",X"08",X"8D",X"6D",
X"8D",X"6D",X"8D",X"6D",X"8D",X"6D",X"8D",X"6D",X"8D",X"6D",X"8D",X"6D",X"8D",X"6D",X"88",X"68",
X"85",X"60",X"86",X"60",X"87",X"60",X"7F",X"00",X"CB",X"7F",X"FF",X"AB",X"AD",X"FF",X"1F",X"0E",
X"3F",X"15",X"5F",X"00",X"81",X"5F",X"07",X"65",X"65",X"25",X"25",X"25",X"25",X"A5",X"85",X"65",
X"85",X"65",X"65",X"80",X"65",X"65",X"25",X"25",X"25",X"25",X"A5",X"85",X"65",X"61",X"68",X"6C",
X"6F",X"80",X"6A",X"6A",X"2A",X"2A",X"2A",X"2A",X"AA",X"8A",X"6A",X"8A",X"6A",X"6A",X"80",X"6A",
X"6A",X"2A",X"2A",X"2A",X"2A",X"AA",X"8A",X"68",X"68",X"68",X"6A",X"6A",X"80",X"DF",X"37",X"0C",
X"1F",X"0E",X"3F",X"15",X"5F",X"00",X"81",X"5F",X"07",X"68",X"68",X"28",X"28",X"28",X"28",X"A8",
X"88",X"68",X"88",X"68",X"68",X"80",X"68",X"68",X"28",X"28",X"28",X"28",X"A8",X"88",X"A8",X"60",
X"80",X"6D",X"6D",X"2D",X"2D",X"2D",X"2D",X"AD",X"8D",X"6D",X"8D",X"6D",X"6D",X"80",X"6D",X"6D",
X"2D",X"2D",X"2D",X"2D",X"AD",X"8D",X"6D",X"6D",X"6D",X"AD",X"DF",X"79",X"0C",X"1F",X"0E",X"3F",
X"15",X"5F",X"00",X"81",X"5F",X"07",X"6C",X"6C",X"2C",X"2C",X"2C",X"2C",X"AC",X"8C",X"6C",X"8C",
X"6C",X"6C",X"80",X"6C",X"6C",X"2C",X"2C",X"2C",X"2C",X"AC",X"8C",X"AC",X"60",X"80",X"72",X"72",
X"32",X"32",X"32",X"32",X"B2",X"92",X"72",X"92",X"72",X"72",X"80",X"72",X"72",X"32",X"32",X"32",
X"32",X"B2",X"92",X"72",X"72",X"72",X"92",X"80",X"DF",X"B6",X"0C",X"1F",X"0E",X"3F",X"15",X"5F",
X"00",X"E1",X"E0",X"E0",X"C0",X"A0",X"5F",X"07",X"78",X"74",X"79",X"76",X"E0",X"E0",X"E0",X"C0",
X"A0",X"DF",X"F8",X"0C",X"1F",X"02",X"3F",X"15",X"5F",X"07",X"8D",X"60",X"6D",X"88",X"60",X"6D",
X"60",X"6D",X"60",X"6D",X"28",X"28",X"28",X"28",X"88",X"60",X"8D",X"60",X"6D",X"88",X"60",X"6D",
X"60",X"6D",X"60",X"6D",X"88",X"6D",X"68",X"8F",X"60",X"6F",X"8A",X"60",X"6F",X"60",X"6F",X"60",
X"6F",X"2A",X"2A",X"2A",X"2A",X"8A",X"60",X"8F",X"60",X"6F",X"8A",X"60",X"8F",X"8F",X"6F",X"6A",
X"6F",X"6A",X"6E",X"DF",X"0A",X"0D",X"1F",X"0E",X"3F",X"16",X"5F",X"09",X"BF",X"B3",X"B2",X"A9",
X"B0",X"B9",X"BB",X"BA",X"AE",X"E2",X"B7",X"B3",X"B4",X"C1",X"B5",X"B9",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF");
begin
process(clk)
begin
if rising_edge(clk) then
data <= rom_data(to_integer(unsigned(addr)));
end if;
end process;
end architecture;

File diff suppressed because it is too large Load Diff

75
dpram.vhd Normal file
View File

@@ -0,0 +1,75 @@
LIBRARY ieee;
USE ieee.std_logic_1164.all;
LIBRARY altera_mf;
USE altera_mf.altera_mf_components.all;
entity dpram is
generic (
addr_width_g : integer := 8;
data_width_g : integer := 8
);
PORT
(
address_a : IN STD_LOGIC_VECTOR (addr_width_g-1 DOWNTO 0);
address_b : IN STD_LOGIC_VECTOR (addr_width_g-1 DOWNTO 0);
clock_a : IN STD_LOGIC := '1';
clock_b : IN STD_LOGIC ;
data_a : IN STD_LOGIC_VECTOR (data_width_g-1 DOWNTO 0);
data_b : IN STD_LOGIC_VECTOR (data_width_g-1 DOWNTO 0) := (others => '0');
enable_a : IN STD_LOGIC := '1';
enable_b : IN STD_LOGIC := '1';
wren_a : IN STD_LOGIC := '0';
wren_b : IN STD_LOGIC := '0';
q_a : OUT STD_LOGIC_VECTOR (data_width_g-1 DOWNTO 0);
q_b : OUT STD_LOGIC_VECTOR (data_width_g-1 DOWNTO 0)
);
END dpram;
ARCHITECTURE SYN OF dpram IS
BEGIN
altsyncram_component : altsyncram
GENERIC MAP (
address_reg_b => "CLOCK1",
clock_enable_input_a => "NORMAL",
clock_enable_input_b => "NORMAL",
clock_enable_output_a => "BYPASS",
clock_enable_output_b => "BYPASS",
indata_reg_b => "CLOCK1",
intended_device_family => "Cyclone V",
lpm_type => "altsyncram",
numwords_a => 2**addr_width_g,
numwords_b => 2**addr_width_g,
operation_mode => "BIDIR_DUAL_PORT",
outdata_aclr_a => "NONE",
outdata_aclr_b => "NONE",
outdata_reg_a => "UNREGISTERED",
outdata_reg_b => "UNREGISTERED",
power_up_uninitialized => "FALSE",
read_during_write_mode_port_a => "NEW_DATA_NO_NBE_READ",
read_during_write_mode_port_b => "NEW_DATA_NO_NBE_READ",
widthad_a => addr_width_g,
widthad_b => addr_width_g,
width_a => data_width_g,
width_b => data_width_g,
width_byteena_a => 1,
width_byteena_b => 1,
wrcontrol_wraddress_reg_b => "CLOCK1"
)
PORT MAP (
address_a => address_a,
address_b => address_b,
clock0 => clock_a,
clock1 => clock_b,
clocken0 => enable_a,
clocken1 => enable_b,
data_a => data_a,
data_b => data_b,
wren_a => wren_a,
wren_b => wren_b,
q_a => q_a,
q_b => q_b
);
END SYN;

BIN
releases/7za.exe Normal file

Binary file not shown.

View File

@@ -0,0 +1,40 @@
@echo off
set zip=timeplt.zip
set ifiles=tm1+tm2+tm3+tm6+tm4+tm5+tm7
set ofile=a.tmplt.rom
rem =====================================
setlocal ENABLEDELAYEDEXPANSION
set pwd=%~dp0
echo.
echo.
if EXIST %zip% (
!pwd!7za x -otmp %zip%
if !ERRORLEVEL! EQU 0 (
cd tmp
copy /b/y %ifiles% !pwd!%ofile%
if !ERRORLEVEL! EQU 0 (
echo.
echo ** done **
echo.
echo Copy "%ofile%" into root of SD card
)
cd !pwd!
rmdir /s /q tmp
)
) else (
echo Error: Cannot find "%zip%" file
echo.
echo Put "%zip%", "7za.exe" and "%~nx0" into the same directory
)
echo.
echo.
pause

View File

@@ -1,6 +1,6 @@
//============================================================================
//
// Screen 90 deg. rotation
// Screen +90/-90 deg. rotation
// Copyright (C) 2017 Sorgelig
//
// This program is free software; you can redistribute it and/or modify it
@@ -23,7 +23,7 @@
// The output is supposed to be send to VIP scaler input.
//
module screen_rotate #(parameter WIDTH=320, HEIGHT=240, DEPTH=8)
module screen_rotate #(parameter WIDTH=320, HEIGHT=240, DEPTH=8, MARGIN=8, CCW=0)
(
input clk_in,
input ce_in,
@@ -76,7 +76,7 @@ always @(posedge clk_in) begin
reg [aw-1:0] addr_row;
if(en_we) begin
addr_in <= addr_in+HEIGHT[aw-1:0];
addr_in <= CCW ? addr_in-HEIGHT[aw-1:0] : addr_in+HEIGHT[aw-1:0];
xpos <= xpos + 1;
end
@@ -85,17 +85,17 @@ always @(posedge clk_in) begin
if(~old_blank & blank) begin
xpos <= 0;
ypos <= ypos + 1;
addr_in <= addr_row - 1'd1;
addr_row <= addr_row - 1'd1;
addr_in <= CCW ? addr_row + 1'd1 : addr_row - 1'd1;
addr_row <= CCW ? addr_row + 1'd1 : addr_row - 1'd1;
end
if(~old_vblank & vblank) begin
if(buff) begin
addr_in <= HEIGHT[aw-1:0]-1'd1;
addr_row <= HEIGHT[aw-1:0]-1'd1;
addr_in <= CCW ? bufsize[aw-1:0]-HEIGHT[aw-1:0] : HEIGHT[aw-1:0]-1'd1;
addr_row <= CCW ? bufsize[aw-1:0]-HEIGHT[aw-1:0] : HEIGHT[aw-1:0]-1'd1;
end else begin
addr_in <= bufsize[aw-1:0]+HEIGHT[aw-1:0]-1'd1;
addr_row <= bufsize[aw-1:0]+HEIGHT[aw-1:0]-1'd1;
addr_in <= CCW ? bufsize[aw-1:0]+bufsize[aw-1:0]-HEIGHT[aw-1:0] : bufsize[aw-1:0]+HEIGHT[aw-1:0]-1'd1;
addr_row <= CCW ? bufsize[aw-1:0]+bufsize[aw-1:0]-HEIGHT[aw-1:0] : bufsize[aw-1:0]+HEIGHT[aw-1:0]-1'd1;
end
buff <= ~buff;
ypos <= 0;
@@ -125,9 +125,13 @@ always @(posedge clk_out) begin
if(~vsync) begin
vout <= out;
hs <= (xpos >= HEIGHT);
if(xpos < HEIGHT) addr_out <= addr_out + 1'd1;
if((ypos<MARGIN) || (ypos>=WIDTH+MARGIN)) begin
vout <= 0;
end else begin
vout <= out;
if(xpos < HEIGHT) addr_out <= addr_out + 1'd1;
end
xpos <= xpos + 1;
@@ -135,7 +139,7 @@ always @(posedge clk_out) begin
xpos <= 0;
ypos <= ypos + 1;
if(ypos >= (WIDTH-1)) vsync <= 1;
if(ypos >= (WIDTH+MARGIN+MARGIN-1)) vsync <= 1;
end
end
end

View File

@@ -20,6 +20,12 @@ derive_clock_uncertainty
#set_output_delay -max -clock SDRAM_CLK 1.6ns [get_ports {SDRAM_D* SDRAM_A* SDRAM_BA* SDRAM_n* SDRAM_CKE}]
#set_output_delay -min -clock SDRAM_CLK -0.9ns [get_ports {SDRAM_D* SDRAM_A* SDRAM_BA* SDRAM_n* SDRAM_CKE}]
set_clock_groups -asynchronous \
-group [get_clocks { emu|pll|pll_inst|altera_pll_i|general[*].gpll~PLL_OUTPUT_COUNTER|divclk}] \
-group [get_clocks { pll_hdmi|pll_hdmi_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk}] \
-group [get_clocks { vip|hps|fpga_interfaces|clocks_resets|h2f_user0_clk}] \
-group [get_clocks { FPGA_CLK1_50 FPGA_CLK2_50 FPGA_CLK3_50}]
set_false_path -from * -to [get_ports {LED_*}]
set_false_path -from * -to [get_ports {BTN_*}]
set_false_path -from * -to [get_ports {VGA_*}]

View File

@@ -1,695 +0,0 @@
//============================================================================
//
// DE10-nano HAL top module
// (c)2017 Sorgelig
//
// This program is free software; you can redistribute it and/or modify it
// under the terms of the GNU General Public License as published by the Free
// Software Foundation; either version 2 of the License, or (at your option)
// any later version.
//
// This program is distributed in the hope that it will be useful, but WITHOUT
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
// more details.
//
// You should have received a copy of the GNU General Public License along
// with this program; if not, write to the Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
//
//============================================================================
module sys_top
(
/////////// CLOCK //////////
input FPGA_CLK1_50,
input FPGA_CLK2_50,
input FPGA_CLK3_50,
//////////// VGA ///////////
output [5:0] VGA_R,
output [5:0] VGA_G,
output [5:0] VGA_B,
output VGA_HS,
output VGA_VS,
input VGA_EN,
/////////// AUDIO //////////
output AUDIO_L,
output AUDIO_R,
output AUDIO_SPDIF,
//////////// HDMI //////////
output HDMI_I2C_SCL,
inout HDMI_I2C_SDA,
output HDMI_MCLK,
output HDMI_SCLK,
output HDMI_LRCLK,
output HDMI_I2S,
output HDMI_TX_CLK,
output HDMI_TX_DE,
output [23:0] HDMI_TX_D,
output HDMI_TX_HS,
output HDMI_TX_VS,
//////////// SDR ///////////
output [12:0] SDRAM_A,
inout [15:0] SDRAM_DQ,
output SDRAM_DQML,
output SDRAM_DQMH,
output SDRAM_nWE,
output SDRAM_nCAS,
output SDRAM_nRAS,
output SDRAM_nCS,
output [1:0] SDRAM_BA,
output SDRAM_CLK,
output SDRAM_CKE,
//////////// I/O ///////////
output LED_USER,
output LED_HDD,
output LED_POWER,
input BTN_USER,
input BTN_OSD,
input BTN_RESET,
//////////// SDIO ///////////
inout [3:0] SDIO_DAT,
inout SDIO_CMD,
output SDIO_CLK,
input SDIO_CD,
////////// MB KEY ///////////
input [1:0] KEY,
////////// MB LED ///////////
output [7:0] LED
);
assign SDIO_DAT[2:1] = 2'bZZ;
////////////////////////// LEDs ///////////////////////////////////////
wire led_p = led_power[1] ? ~led_power[0] : 1'b0;
wire led_d = led_disk[1] ? ~led_disk[0] : ~(led_disk[0] | gp_out[29]);
wire led_u = ~led_user;
assign LED_POWER = led_p ? 1'bZ : 1'b0;
assign LED_HDD = led_d ? 1'bZ : 1'b0;
assign LED_USER = led_u ? 1'bZ : 1'b0;
//LEDs on main board
assign LED = {3'b000, ~led_p, 1'b0, ~led_d, 1'b0, ~led_u};
////////////////////////// Buttons ///////////////////////////////////
reg btn_user, btn_osd;
always @(posedge FPGA_CLK2_50) begin
integer div;
reg [7:0] deb_user;
reg [7:0] deb_osd;
div <= div + 1'b1;
if(div > 100000) div <= 0;
if(!div) begin
deb_user <= {deb_user[6:0], ~(BTN_USER & KEY[1])};
if(&deb_user) btn_user <= 1;
if(!deb_user) btn_user <= 0;
deb_osd <= {deb_osd[6:0], ~(BTN_OSD & KEY[0])};
if(&deb_osd) btn_osd <= 1;
if(!deb_osd) btn_osd <= 0;
end
end
reg btn_reset = 1;
always @(posedge FPGA_CLK2_50) btn_reset <= BTN_RESET;
///////////////////////// HPS I/O /////////////////////////////////////
// gp_in[31] = 0 - quick flag that FPGA is initialized (HPS reads 1 when FPGA is not in user mode)
// used to avoid lockups while JTAG loading
wire [31:0] gp_in = {1'b0, btn_user, btn_osd, 9'd0, io_ver, io_ack, io_wide, io_dout};
wire [31:0] gp_out;
wire [1:0] io_ver = 1; // 0 - standard MiST I/O (for quick porting of complex MiST cores). 1 - optimized HPS I/O. 2,3 - reserved for future.
wire io_wait;
wire io_wide;
wire [15:0] io_dout;
wire [15:0] io_din = gp_outr[15:0];
wire io_clk = gp_outr[17];
wire io_fpga = gp_outr[18];
wire io_osd = gp_outr[19];
wire io_uio = gp_outr[20];
//wire io_sdd = gp_outr[21]; // used only in ST core
reg io_ack;
reg rack;
wire io_strobe = ~rack & io_clk;
always @(posedge clk_sys) begin
if(~io_wait | io_strobe) begin
rack <= io_clk;
io_ack <= rack;
end
end
reg [31:0] gp_outr;
always @(posedge clk_sys) begin
reg [31:0] gp_outd;
gp_outr <= gp_outd;
gp_outd <= gp_out;
end
wire [7:0] core_type = 'hA4; // A4 - generic core.
// HPS will not communicate to core if magic is different
wire [31:0] core_magic = {24'h5CA623, core_type};
cyclonev_hps_interface_mpu_general_purpose h2f_gp
(
.gp_in({~gp_out[31] ? core_magic : gp_in}),
.gp_out(gp_out)
);
reg [15:0] cfg;
reg cfg_ready = 0;
wire audio_96k = cfg[6];
wire ypbpr_en = cfg[5];
wire csync = cfg[3];
`ifndef LITE
wire vga_scaler= cfg[2];
`endif
always@(posedge clk_sys) begin
reg [7:0] cmd;
reg has_cmd;
reg old_strobe;
old_strobe <= io_strobe;
if(~io_uio) has_cmd <= 0;
else
if(~old_strobe & io_strobe) begin
if(!has_cmd) begin
has_cmd <= 1;
cmd <= io_din[7:0];
end
else
if(cmd == 1) begin
cfg <= io_din;
cfg_ready <= 1;
end
end
end
/////////////////////////// RESET ///////////////////////////////////
reg reset_req = 0;
always @(posedge FPGA_CLK2_50) begin
reg [1:0] resetd, resetd2;
reg old_reset;
//latch the reset
old_reset <= reset;
if(~old_reset & reset) reset_req <= 1;
//special combination to set/clear the reset
//preventing of accidental reset control
if(resetd==1) reset_req <= 1;
if(resetd==2 && resetd2==0) reset_req <= 0;
resetd <= gp_out[31:30];
resetd2 <= resetd;
end
// 100MHz
wire ctl_clk;
///////////////////////// VIP version ///////////////////////////////
`ifndef LITE
wire reset;
vip vip
(
//Reset/Clock
.reset_reset_req(reset_req),
.reset_reset(reset),
//DE10-nano has no reset signal on GPIO, so core has to emulate cold reset button.
.reset_cold_req(~btn_reset),
.reset_warm_req(0),
//control
.ctl_address(ctl_address),
.ctl_write(ctl_write),
.ctl_writedata(ctl_writedata),
.ctl_waitrequest(ctl_waitrequest),
.ctl_clock(ctl_clk),
.ctl_reset(ctl_reset),
//64-bit DDR3 RAM access
.ramclk1_clk(ram_clk),
.ram1_address(ram_address),
.ram1_burstcount(ram_burstcount),
.ram1_waitrequest(ram_waitrequest),
.ram1_readdata(ram_readdata),
.ram1_readdatavalid(ram_readdatavalid),
.ram1_read(ram_read),
.ram1_writedata(ram_writedata),
.ram1_byteenable(ram_byteenable),
.ram1_write(ram_write),
//Spare 64-bit DDR3 RAM access
//currently unused
//can combine with ram1 to make a wider RAM bus (although will increase the latency)
.ramclk2_clk(0),
.ram2_address(0),
.ram2_burstcount(0),
.ram2_waitrequest(),
.ram2_readdata(),
.ram2_readdatavalid(),
.ram2_read(0),
.ram2_writedata(0),
.ram2_byteenable(0),
.ram2_write(0),
//Video input
.in_vid_clk(clk_hdmi),
.in_vid_data({hr_out, hg_out, hb_out}),
.in_vid_de(hde),
.in_vid_v_sync(hvs),
.in_vid_h_sync(hhs),
.in_vid_datavalid(ce_hpix),
.in_vid_locked(1),
.in_vid_f(0),
.in_vid_color_encoding(0),
.in_vid_bit_width(0),
//HDMI output
.hdmi_vid_clk(~HDMI_TX_CLK),
.hdmi_vid_data(hdmi_data),
.hdmi_vid_datavalid(HDMI_TX_DE),
.hdmi_vid_v_sync(HDMI_TX_VS),
.hdmi_vid_h_sync(HDMI_TX_HS)
);
wire [8:0] ctl_address;
wire ctl_write;
wire [31:0] ctl_writedata;
wire ctl_waitrequest;
wire ctl_reset;
wire [7:0] ARX, ARY;
vip_config vip_config
(
.clk(ctl_clk),
.reset(ctl_reset),
.ARX(ARX),
.ARY(ARY),
.address(ctl_address),
.write(ctl_write),
.writedata(ctl_writedata),
.waitrequest(ctl_waitrequest)
);
wire [7:0] hr_out, hg_out, hb_out;
wire hvs, hhs, hde;
wire clk_hdmi, ce_hpix;
`endif
///////////////////////// Lite version ////////////////////////////////
`ifdef LITE
wire INTERLACED = 0;
wire [11:0] V_TOTAL_0 = 750;
wire [11:0] V_FP_0 = 5;
wire [11:0] V_BP_0 = 20;
wire [11:0] V_SYNC_0 = 5;
wire [11:0] V_TOTAL_1 = 0;
wire [11:0] V_FP_1 = 0;
wire [11:0] V_BP_1 = 0;
wire [11:0] V_SYNC_1 = 0;
wire [11:0] H_TOTAL = 1650;
wire [11:0] H_FP = 110;
wire [11:0] H_BP = 220;
wire [11:0] H_SYNC = 40;
wire [11:0] HV_OFFSET_0 = 0;
wire [11:0] HV_OFFSET_1 = 0;
wire [11:0] x;
wire [12:0] y;
sync_vg #(.X_BITS(12), .Y_BITS(12)) sync_vg
(
.clk(HDMI_TX_CLK),
.reset(reset),
.interlaced(INTERLACED),
.clk_out(), // inverted output clock - unconnected
.v_total_0(V_TOTAL_0),
.v_fp_0(V_FP_0),
.v_bp_0(V_BP_0),
.v_sync_0(V_SYNC_0),
.v_total_1(V_TOTAL_1),
.v_fp_1(V_FP_1),
.v_bp_1(V_BP_1),
.v_sync_1(V_SYNC_1),
.h_total(H_TOTAL),
.h_fp(H_FP),
.h_bp(H_BP),
.h_sync(H_SYNC),
.hv_offset_0(HV_OFFSET_0),
.hv_offset_1(HV_OFFSET_1),
.vde_out(vde),
.hde_out(hde),
.vs_out(vs_hdmi),
.v_count_out(),
.h_count_out(),
.x_out(x),
.y_out(y),
.hs_out(hs_hdmi),
.field_out(field)
);
wire vde, hde;
wire vs_hdmi;
wire hs_hdmi;
wire field;
pattern_vg
#(
.B(8), // Bits per channel
.X_BITS(12),
.Y_BITS(12),
.FRACTIONAL_BITS(12) // Number of fractional bits for ramp pattern
)
pattern_vg
(
.reset(reset),
.clk_in(HDMI_TX_CLK),
.x(x),
.y(y[11:0]),
.vn_in(vs_hdmi),
.hn_in(hs_hdmi),
.dn_in(vde & hde),
.r_in(0),
.g_in(0),
.b_in(0),
.vn_out(HDMI_TX_VS),
.hn_out(HDMI_TX_HS),
.den_out(HDMI_TX_DE),
.r_out(hdmi_data[23:16]),
.g_out(hdmi_data[15:8]),
.b_out(hdmi_data[7:0]),
.total_active_pix(H_TOTAL - (H_FP + H_BP + H_SYNC)),
.total_active_lines(INTERLACED ? (V_TOTAL_0 - (V_FP_0 + V_BP_0 + V_SYNC_0)) + (V_TOTAL_1 - (V_FP_1 + V_BP_1 + V_SYNC_1)) : (V_TOTAL_0 - (V_FP_0 + V_BP_0 + V_SYNC_0))), // originally: 13'd480
.pattern(4),
.ramp_step(20'h0333)
);
wire reset;
sysmem_lite sysmem
(
//Reset/Clock
.reset_reset_req(reset_req),
.reset_reset(reset),
.ctl_clock(ctl_clk),
//DE10-nano has no reset signal on GPIO, so core has to emulate cold reset button.
.reset_cold_req(~btn_reset),
.reset_warm_req(0),
//64-bit DDR3 RAM access
.ramclk1_clk(ram_clk),
.ram1_address(ram_address),
.ram1_burstcount(ram_burstcount),
.ram1_waitrequest(ram_waitrequest),
.ram1_readdata(ram_readdata),
.ram1_readdatavalid(ram_readdatavalid),
.ram1_read(ram_read),
.ram1_writedata(ram_writedata),
.ram1_byteenable(ram_byteenable),
.ram1_write(ram_write),
//Spare 64-bit DDR3 RAM access
//currently unused
//can combine with ram1 to make a wider RAM bus (although will increase the latency)
.ramclk2_clk(0),
.ram2_address(0),
.ram2_burstcount(0),
.ram2_waitrequest(),
.ram2_readdata(),
.ram2_readdatavalid(),
.ram2_read(0),
.ram2_writedata(0),
.ram2_byteenable(0),
.ram2_write(0)
);
`endif
///////////////////////// HDMI output /////////////////////////////////
pll_hdmi pll_hdmi
(
.refclk(FPGA_CLK1_50),
.rst(reset),
.outclk_0(HDMI_TX_CLK)
);
hdmi_config hdmi_config
(
.iCLK(FPGA_CLK1_50),
.iRST_N(cfg_ready),
.I2C_SCL(HDMI_I2C_SCL),
.I2C_SDA(HDMI_I2C_SDA),
.audio_48k(~audio_96k),
.iRES(4), // 720p
.iAR(1) // Aspect Ratio
);
wire [23:0] hdmi_data;
osd hdmi_osd
(
.clk_sys(clk_sys),
.io_osd(io_osd),
.io_strobe(io_strobe),
.io_din(io_din[7:0]),
.clk_video(HDMI_TX_CLK),
.din(hdmi_data),
.dout(HDMI_TX_D),
.de(HDMI_TX_DE)
);
assign HDMI_MCLK = 0;
i2s i2s
(
.reset(~cfg_ready),
.clk_sys(FPGA_CLK1_50),
.half_rate(~audio_96k),
.sclk(HDMI_SCLK),
.lrclk(HDMI_LRCLK),
.sdata(HDMI_I2S),
//Could inverse the MSB but it will shift 0 level to -MAX level
.left_chan (audio_l >> !audio_s),
.right_chan(audio_r >> !audio_s)
);
///////////////////////// VGA output //////////////////////////////////
wire [23:0] vga_q;
osd vga_osd
(
.clk_sys(clk_sys),
.io_osd(io_osd),
.io_strobe(io_strobe),
.io_din(io_din[7:0]),
.clk_video(clk_vid),
.din(de ? {r_out, g_out, b_out} : 24'd0),
.dout(vga_q),
.de(de)
);
wire [23:0] vga_o;
vga_out vga_out
(
.ypbpr_full(1),
.ypbpr_en(ypbpr_en),
.dout(vga_o),
`ifdef LITE
.din(vga_q)
`else
.din(vga_scaler ? HDMI_TX_D : vga_q)
`endif
);
`ifdef LITE
wire vs1 = vs;
wire hs1 = hs;
`else
wire vs1 = vga_scaler ? HDMI_TX_VS : vs;
wire hs1 = vga_scaler ? HDMI_TX_HS : hs;
`endif
/*
assign VGA_VS = VGA_EN ? 1'bZ : csync ? 1'b1 : ~vs1;
assign VGA_HS = VGA_EN ? 1'bZ : csync ? ~(vs1 ^ hs1) : ~hs1;
assign VGA_R = VGA_EN ? 6'bZZZZZZ : vga_o[23:18];
assign VGA_G = VGA_EN ? 6'bZZZZZZ : vga_o[15:10];
assign VGA_B = VGA_EN ? 6'bZZZZZZ : vga_o[7:2];
*/
///////////////////////// Audio output ////////////////////////////////
sigma_delta_dac #(15) dac_l
(
.CLK(FPGA_CLK3_50),
.RESET(reset),
.DACin({audio_l[15] ^ audio_s, audio_l[14:0]}),
.DACout(AUDIO_L)
);
sigma_delta_dac #(15) dac_r
(
.CLK(FPGA_CLK3_50),
.RESET(reset),
.DACin({audio_r[15] ^ audio_s, audio_r[14:0]}),
.DACout(AUDIO_R)
);
spdif toslink
(
.clk_i(FPGA_CLK3_50),
.rst_i(reset),
.half_rate(0),
.audio_l(audio_l >> !audio_s),
.audio_r(audio_r >> !audio_s),
.spdif_o(AUDIO_SPDIF)
);
/////////////////// User module connection ////////////////////////////
wire [15:0] audio_l, audio_r;
wire audio_s;
wire [7:0] r_out, g_out, b_out;
wire vs, hs, de;
wire clk_sys, clk_vid, ce_pix;
wire ram_clk;
wire [28:0] ram_address;
wire [7:0] ram_burstcount;
wire ram_waitrequest;
wire [63:0] ram_readdata;
wire ram_readdatavalid;
wire ram_read;
wire [63:0] ram_writedata;
wire [7:0] ram_byteenable;
wire ram_write;
wire led_user;
wire [1:0] led_power;
wire [1:0] led_disk;
emu emu
(
.CLK_50M(FPGA_CLK3_50),
.RESET(reset),
.HPS_BUS({ctl_clk, clk_vid, ce_pix, de, hs, vs, io_wait, clk_sys, io_fpga, io_uio, io_strobe, io_wide, io_din, io_dout}),
.VGA_CLK(clk_vid),
.VGA_CE(ce_pix),
.VGA_R(VGA_R),
.VGA_G(VGA_G),
.VGA_B(VGA_B),
.VGA_HS(VGA_HS),
.VGA_VS(VGA_VS),
.VGA_DE(de),
`ifndef LITE
.HDMI_CLK(clk_hdmi),
.HDMI_CE(ce_hpix),
.HDMI_R(hr_out),
.HDMI_G(hg_out),
.HDMI_B(hb_out),
.HDMI_HS(hhs),
.HDMI_VS(hvs),
.HDMI_DE(hde),
.HDMI_ARX(ARX),
.HDMI_ARY(ARY),
`endif
.LED_USER(led_user),
.LED_POWER(led_power),
.LED_DISK(led_disk),
.AUDIO_L(audio_l),
.AUDIO_R(audio_r),
.AUDIO_S(audio_s),
.TAPE_IN(0),
// SCK -> CLK
// MOSI -> CMD
// MISO <- DAT0
// Z -> DAT1
// Z -> DAT2
// CS -> DAT3
.SD_SCK(SDIO_CLK),
.SD_MOSI(SDIO_CMD),
.SD_MISO(SDIO_DAT[0]),
.SD_CS(SDIO_DAT[3]),
.DDRAM_CLK(ram_clk),
.DDRAM_ADDR(ram_address),
.DDRAM_BURSTCNT(ram_burstcount),
.DDRAM_BUSY(ram_waitrequest),
.DDRAM_DOUT(ram_readdata),
.DDRAM_DOUT_READY(ram_readdatavalid),
.DDRAM_RD(ram_read),
.DDRAM_DIN(ram_writedata),
.DDRAM_BE(ram_byteenable),
.DDRAM_WE(ram_write),
.SDRAM_DQ(SDRAM_DQ),
.SDRAM_A(SDRAM_A),
.SDRAM_DQML(SDRAM_DQML),
.SDRAM_DQMH(SDRAM_DQMH),
.SDRAM_BA(SDRAM_BA),
.SDRAM_nCS(SDRAM_nCS),
.SDRAM_nWE(SDRAM_nWE),
.SDRAM_nRAS(SDRAM_nRAS),
.SDRAM_nCAS(SDRAM_nCAS),
.SDRAM_CLK(SDRAM_CLK),
.SDRAM_CKE(SDRAM_CKE)
);
endmodule

View File

@@ -85,7 +85,10 @@ port(
clock_14 : in std_logic;
reset : in std_logic;
-- tv15Khz_mode : in std_logic;
dn_addr : in std_logic_vector(15 downto 0);
dn_data : in std_logic_vector(7 downto 0);
dn_wr : in std_logic;
video_r : out std_logic_vector(4 downto 0);
video_g : out std_logic_vector(4 downto 0);
video_b : out std_logic_vector(4 downto 0);
@@ -216,6 +219,8 @@ architecture struct of time_pilot is
signal input_1 : std_logic_vector(7 downto 0);
signal input_2 : std_logic_vector(7 downto 0);
signal romp_cs,romsp_cs,romch_cs : std_logic;
begin
video_clk <= clock_6n;
@@ -666,12 +671,22 @@ port map(
DO => cpu_do
);
romp_cs <= '1' when dn_addr(15 downto 13) < "011" else '0';
romch_cs <= '1' when dn_addr(15 downto 13) = "011" else '0';
romsp_cs <= '1' when dn_addr(15 downto 14) = "10" else '0';
-- cpu1 program ROM
rom_cpu1 : entity work.time_pilot_prog
port map(
clk => clock_6n,
addr => cpu_addr(14 downto 0),
data => cpu_rom_do
rom_cpu1 : work.dpram generic map (15,8)
port map
(
clock_a => clock_12,
wren_a => dn_wr and romp_cs,
address_a => dn_addr(14 downto 0),
data_a => dn_data,
clock_b => clock_6n,
address_b => cpu_addr(14 downto 0),
q_b => cpu_rom_do
);
-- working/char RAM 0xA000-0xAFFF
@@ -730,14 +745,19 @@ port map(
);
-- char graphics ROM
char_graphics : entity work.time_pilot_char_grphx
port map(
clk => clock_6,
addr => ch_graphx_addr,
data => ch_graphx_do
char_graphics : work.dpram generic map (13,8)
port map
(
clock_a => clock_12,
wren_a => dn_wr and romch_cs,
address_a => dn_addr(12 downto 0),
data_a => dn_data,
clock_b => clock_6,
address_b => ch_graphx_addr,
q_b => ch_graphx_do
);
-- char palette ROM
ch_palette : entity work.time_pilot_char_color_lut
port map(
clk => clock_6,
@@ -746,14 +766,19 @@ port map(
);
-- sprite graphics ROM
sp_graphics : entity work.time_pilot_sprite_grphx
port map(
clk => clock_6,
addr => sp_graphx_addr,
data => sp_graphx_do
sp_graphics : work.dpram generic map (14,8)
port map
(
clock_a => clock_12,
wren_a => dn_wr and romsp_cs,
address_a => dn_addr(13 downto 0),
data_a => dn_data,
clock_b => clock_6,
address_b => sp_graphx_addr,
q_b => sp_graphx_do
);
-- sprite palette ROM
sp_palette : entity work.time_pilot_sprite_color_lut
port map(
clk => clock_6,
@@ -761,7 +786,6 @@ port map(
data => sp_palette_do
);
-- rgb palette ROM 1
rgb_palette_gb : entity work.time_pilot_palette_blue_green
port map(
clk => clock_6,
@@ -769,7 +793,6 @@ port map(
data => rgb_palette_bg_do
);
-- rgb palette ROM 2
rgb_palette_br : entity work.time_pilot_palette_green_red
port map(
clk => clock_6,
@@ -780,6 +803,7 @@ port map(
-- sound board
time_pilot_sound_board : entity work.time_pilot_sound_board
port map(
clock_12 => clock_12,
clock_14 => clock_14,
reset => reset,
@@ -788,6 +812,10 @@ port map(
audio_out => audio_out,
dn_addr => dn_addr,
dn_data => dn_data,
dn_wr => dn_wr,
dbg_cpu_addr => open
);

View File

@@ -28,6 +28,7 @@ use ieee.numeric_std.all;
entity time_pilot_sound_board is
port(
clock_12 : in std_logic;
clock_14 : in std_logic;
reset : in std_logic;
@@ -36,6 +37,10 @@ port(
audio_out : out std_logic_vector(10 downto 0);
dn_addr : in std_logic_vector(15 downto 0);
dn_data : in std_logic_vector(7 downto 0);
dn_wr : in std_logic;
dbg_cpu_addr : out std_logic_vector(15 downto 0)
);
end time_pilot_sound_board;
@@ -111,6 +116,8 @@ architecture struct of time_pilot_sound_board is
signal Vcn_a : integer range -1024*1024 to 1024*1024-1;
signal Vcn_b : integer range -1024*1024 to 1024*1024-1;
signal Vcn_c : integer range -256*1024 to 256*1024-1;
signal roms_cs : std_logic;
begin
@@ -339,12 +346,20 @@ port map(
DO => cpu_do
);
roms_cs <= '1' when dn_addr(15 downto 12) = "1100" else '0';
-- cpu1 program ROM
rom_cpu1 : entity work.time_pilot_sound_prog
port map(
clk => clock_14n,
addr => cpu_addr(11 downto 0),
data => cpu_rom_do
rom_cpu1 : work.dpram generic map (12,8)
port map
(
clock_a => clock_12,
wren_a => dn_wr and roms_cs,
address_a => dn_addr(11 downto 0),
data_a => dn_data,
clock_b => clock_14n,
address_b => cpu_addr(11 downto 0),
q_b => cpu_rom_do
);
-- working RAM