From c10abc4c59da49184c84cffe1db956d8d3bbd8dc Mon Sep 17 00:00:00 2001 From: Gyorgy Szombathelyi Date: Sat, 4 Jan 2020 01:35:43 +0100 Subject: [PATCH] Journey: works now --- .../Midway MCR 2/Journey_MiST/Journey.qsf | 8 +- .../Midway MCR 2/Journey_MiST/README.txt | 11 +- .../Journey_MiST/rtl/Journey_MiST.sv | 59 +- .../Journey_MiST/rtl/cmos_ram.vhd | 260 ++++---- .../Journey_MiST/rtl/ctc_controler.vhd | 44 +- .../Journey_MiST/rtl/ctc_counter.vhd | 38 +- .../Midway MCR 2/Journey_MiST/rtl/dpram.vhd | 81 +++ .../Midway MCR 2/Journey_MiST/rtl/journey.vhd | 615 ++++++++++-------- .../Journey_MiST/rtl/pll_mist.qip | 4 - .../rtl/rom/journey_bg_bits_1.vhd | 534 --------------- .../rtl/rom/journey_bg_bits_2.vhd | 534 --------------- .../Midway MCR 2/Journey_MiST/rtl/sdram.sv | 15 +- .../Journey_MiST/rtl/z80ctc_top.vhd | 185 ++++++ 13 files changed, 830 insertions(+), 1558 deletions(-) create mode 100644 Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/dpram.vhd delete mode 100644 Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/pll_mist.qip delete mode 100644 Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/rom/journey_bg_bits_1.vhd delete mode 100644 Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/rom/journey_bg_bits_2.vhd create mode 100644 Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/z80ctc_top.vhd diff --git a/Arcade_MiST/Midway MCR 2/Journey_MiST/Journey.qsf b/Arcade_MiST/Midway MCR 2/Journey_MiST/Journey.qsf index 2b2373dc..4702c417 100644 --- a/Arcade_MiST/Midway MCR 2/Journey_MiST/Journey.qsf +++ b/Arcade_MiST/Midway MCR 2/Journey_MiST/Journey.qsf @@ -41,7 +41,7 @@ # ======================== set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files set_global_assignment -name NUM_PARALLEL_PROCESSORS ALL -set_global_assignment -name LAST_QUARTUS_VERSION 13.1 +set_global_assignment -name LAST_QUARTUS_VERSION "13.1 SP4.26" set_global_assignment -name PRE_FLOW_SCRIPT_FILE "quartus_sh:rtl/build_id.tcl" # Pin & Location Assignments @@ -180,17 +180,19 @@ set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" - set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top +set_global_assignment -name ENABLE_SIGNALTAP OFF +set_global_assignment -name USE_SIGNALTAP_FILE output_files/jo.stp set_global_assignment -name SYSTEMVERILOG_FILE rtl/Journey_MiST.sv set_global_assignment -name VHDL_FILE rtl/journey.vhd +set_global_assignment -name VHDL_FILE rtl/z80ctc_top.vhd set_global_assignment -name VHDL_FILE rtl/satans_hollow_sound_board.vhd set_global_assignment -name VHDL_FILE rtl/YM2149_linmix_sep.vhd set_global_assignment -name VHDL_FILE rtl/ctc_counter.vhd set_global_assignment -name VHDL_FILE rtl/ctc_controler.vhd +set_global_assignment -name VHDL_FILE rtl/dpram.vhd set_global_assignment -name VHDL_FILE rtl/gen_ram.vhd set_global_assignment -name VHDL_FILE rtl/cmos_ram.vhd set_global_assignment -name VHDL_FILE rtl/rom/midssio_82s123.vhd -set_global_assignment -name VHDL_FILE rtl/rom/journey_bg_bits_2.vhd -set_global_assignment -name VHDL_FILE rtl/rom/journey_bg_bits_1.vhd set_global_assignment -name SYSTEMVERILOG_FILE rtl/sdram.sv set_global_assignment -name VHDL_FILE rtl/pll_mist.vhd set_global_assignment -name QIP_FILE ../../../common/CPU/T80/T80.qip diff --git a/Arcade_MiST/Midway MCR 2/Journey_MiST/README.txt b/Arcade_MiST/Midway MCR 2/Journey_MiST/README.txt index 09b9ca8f..a3d4e32e 100644 --- a/Arcade_MiST/Midway MCR 2/Journey_MiST/README.txt +++ b/Arcade_MiST/Midway MCR 2/Journey_MiST/README.txt @@ -1,10 +1,13 @@ --------------------------------------------------------------------------------- -- --- Arcade: Journey port to MiST by Gehstock --- 10 November 2019 +-- Arcade: Journey port to MiST by Slingshot +-- 03 January 2020 -- --- VGA Only - +-- TV 15kHz interlaced / VGA +-- JOURNEY.ROM required +-- cat d2 d3 d4 d5 d6 a b c d g3 g4 a7 a8 a5 a6 a3 a4 a1 a2 > JOURNEY.ROM +-- +-- Based on Kickman/Timber by Dar --------------------------------------------------------------------------------- -- DE10_lite Top level for Kick (Midway MCR) by Dar (darfpga@aol.fr) (19/10/2019) -- http://darfpga.blogspot.fr diff --git a/Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/Journey_MiST.sv b/Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/Journey_MiST.sv index 36f873d0..7bef26c6 100644 --- a/Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/Journey_MiST.sv +++ b/Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/Journey_MiST.sv @@ -50,7 +50,6 @@ module Journey_MiST( localparam CONF_STR = { "JOURNEY;;", "O2,Rotate Controls,Off,On;", - "O34,Scanlines,Off,25%,50%,75%;", "O5,Blend,Off,On;", "O6,Service,Off,On;", "T0,Reset;", @@ -79,7 +78,7 @@ wire [7:0] joystick_1; wire scandoublerD; wire ypbpr; wire [15:0] audio_l, audio_r; -wire hs, vs; +wire hs, vs, cs; wire blankn; wire [2:0] g, r, b; wire [15:0] rom_addr; @@ -94,6 +93,13 @@ wire ioctl_wr; wire [24:0] ioctl_addr; wire [7:0] ioctl_dout; +/* +ROM Structure +00000-09FFF Main CPU 40k d2+d3+d4+d5+d6 +0A000-0DFFF Snd CPU 16k a+b+c+d +0E000-11FFF Gfx1 16k g3+g4 +12000- Gfx2 64k a7+a8+a5+a6+a3+a4+a1+a2 +*/ data_io data_io( .clk_sys ( clk_sys ), .SPI_SCK ( SPI_SCK ), @@ -106,8 +112,7 @@ data_io data_io( .ioctl_dout ( ioctl_dout ) ); -//wire [24:0] sp_ioctl_addr = ioctl_addr - 17'h12000; //SP ROM offset: 0x12000 -wire [24:0] sp_ioctl_addr = ioctl_addr - 16'he000; //SP ROM offset: 0x12000 +wire [24:0] sp_ioctl_addr = ioctl_addr - 17'h12000; //SP ROM offset: 0x12000 reg port1_req, port2_req; sdram sdram( @@ -132,8 +137,8 @@ sdram sdram( // port2 for sprite graphics .port2_req ( port2_req ), .port2_ack ( ), - .port2_a ( {sp_ioctl_addr[14:0], sp_ioctl_addr[16]} ), // merge sprite roms to 32-bit wide words - .port2_ds ( {sp_ioctl_addr[15], ~sp_ioctl_addr[15]} ), + .port2_a ( {sp_ioctl_addr[23:16], sp_ioctl_addr[13:0], sp_ioctl_addr[15]} ), // merge sprite roms to 32-bit wide words + .port2_ds ( {sp_ioctl_addr[14], ~sp_ioctl_addr[14]} ), .port2_we ( ioctl_downl ), .port2_d ( {ioctl_dout, ioctl_dout} ), .port2_q ( ), @@ -175,12 +180,14 @@ end journey journey( .clock_40(clk_sys), .reset(reset), + .tv15Khz_mode(scandoublerD), .video_r(r), .video_g(g), .video_b(b), .video_blankn(blankn), .video_hs(hs), .video_vs(vs), + .video_csync(cs), .separate_audio(1'b0), .audio_out_l(audio_l), .audio_out_r(audio_r), @@ -201,7 +208,6 @@ journey journey( .down2(m_down2), .fire2(m_fire2), - .cocktail(0), .coin_meters(1), .service(status[6]), @@ -210,9 +216,17 @@ journey journey( .snd_rom_addr ( snd_addr ), .snd_rom_do ( snd_addr[0] ? snd_do[15:8] : snd_do[7:0] ), .sp_addr ( sp_addr ), - .sp_graphx32_do ( sp_do ) + .sp_graphx32_do ( sp_do ), + .dl_addr ( ioctl_addr[16:0]), + .dl_data ( ioctl_dout ), + .dl_wr ( ioctl_wr ) ); +wire vs_out; +wire hs_out; +assign VGA_VS = scandoublerD | vs_out; +assign VGA_HS = scandoublerD ? cs : hs_out; + mist_video #(.COLOR_DEPTH(3), .SD_HCNT_WIDTH(10)) mist_video( .clk_sys ( clk_sys ), .SPI_SCK ( SPI_SCK ), @@ -226,13 +240,14 @@ mist_video #(.COLOR_DEPTH(3), .SD_HCNT_WIDTH(10)) mist_video( .VGA_R ( VGA_R ), .VGA_G ( VGA_G ), .VGA_B ( VGA_B ), - .VGA_VS ( VGA_VS ), - .VGA_HS ( VGA_HS ), + .VGA_VS ( vs_out ), + .VGA_HS ( hs_out ), .rotate ( {1'b1,status[2]} ), - .ce_divider ( 1 ), + .ce_divider ( 1'b1 ), .blend ( status[5] ), .scandoubler_disable(1),//scandoublerD ), - .scanlines ( status[4:3] ), + .no_csync ( 1'b1 ), + .scanlines ( ), .ypbpr ( ypbpr ) ); @@ -276,17 +291,17 @@ dac_r( ); // Rotated Normal -wire m_up1 = ~status[2] ? btn_left | joystick_1[1] : btn_up | joystick_1[3]; -wire m_down1 = ~status[2] ? btn_right | joystick_1[0] : btn_down | joystick_1[2]; -wire m_left1 = ~status[2] ? btn_down | joystick_1[2] : btn_left | joystick_1[1]; -wire m_right1 = ~status[2] ? btn_up | joystick_1[3] : btn_right | joystick_1[0]; -wire m_fire1 = btn_fire1 | joystick_1[4]; +wire m_up1 = ~status[2] ? btn_left | joystick_0[1] | joystick_1[1] : btn_up | joystick_1[3] | joystick_1[3]; +wire m_down1 = ~status[2] ? btn_right | joystick_0[0] | joystick_1[0] : btn_down | joystick_1[2] | joystick_1[2]; +wire m_left1 = ~status[2] ? btn_down | joystick_0[2] | joystick_1[2] : btn_left | joystick_1[1] | joystick_1[1]; +wire m_right1 = ~status[2] ? btn_up | joystick_0[3] | joystick_1[3] : btn_right | joystick_1[0] | joystick_1[0]; +wire m_fire1 = btn_fire1 | joystick_0[4] | joystick_1[4]; -wire m_up2 = ~status[2] ? joystick_0[1] : joystick_0[3]; -wire m_down2 = ~status[2] ? joystick_0[0] : joystick_0[2]; -wire m_left2 = ~status[2] ? joystick_0[2] : joystick_0[1]; -wire m_right2 = ~status[2] ? joystick_0[3] : joystick_0[0]; -wire m_fire2 = joystick_0[4]; +wire m_up2 = m_up1; +wire m_down2 = m_down1; +wire m_left2 = m_left1; +wire m_right2 = m_right1; +wire m_fire2 = m_fire1; reg btn_one_player = 0; reg btn_two_players = 0; diff --git a/Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/cmos_ram.vhd b/Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/cmos_ram.vhd index 767b7255..c5e34893 100644 --- a/Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/cmos_ram.vhd +++ b/Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/cmos_ram.vhd @@ -180,143 +180,143 @@ architecture rtl of cmos_ram is X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", --7F0-7FF + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF" --7F0-7FF - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", --800-80F - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", --8F0-8FF - -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", --900-90F -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", --9F0-9FF +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", --800-80F +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", --8F0-8FF -- -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", --A00-A0F -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", --AF0-AFF +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", --900-90F +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", --9F0-9FF -- -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", --B00-B0F -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", --BF0-BFF +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", --A00-A0F +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", --AF0-AFF -- -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", --C00-C0F -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", --CF0-CFF +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", --B00-B0F +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", --BF0-BFF -- -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", --D00-D0F -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", --DF0-DFF +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", --C00-C0F +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", --CF0-CFF -- -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", --E00-E0F -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", --EF0-EFF +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", --D00-D0F +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", --DF0-DFF -- -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", --F00-F0F -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", -X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF" --FF0-FFF +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", --E00-E0F +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", --EF0-EFF +-- +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", --F00-F0F +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", +-- X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF" --FF0-FFF ); signal rAddrReg : std_logic_vector((aWidth-1) downto 0); diff --git a/Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/ctc_controler.vhd b/Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/ctc_controler.vhd index dce16149..d978650b 100644 --- a/Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/ctc_controler.vhd +++ b/Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/ctc_controler.vhd @@ -12,11 +12,12 @@ port( clock : in std_logic; clock_ena : in std_logic; reset : in std_logic; - + d_in : in std_logic_vector( 7 downto 0); load_data : in std_logic; int_ack : in std_logic; - + int_end : in std_logic; -- RETI detected + int_pulse_0 : in std_logic; int_pulse_1 : in std_logic; int_pulse_2 : in std_logic; @@ -24,7 +25,6 @@ port( d_out : out std_logic_vector( 7 downto 0); int_n : out std_logic - ); end ctc_controler; @@ -39,11 +39,14 @@ architecture struct of ctc_controler is signal int_reg_1 : std_logic; signal int_reg_2 : std_logic; signal int_reg_3 : std_logic; + + signal int_in_service : std_logic_vector(3 downto 0); signal int_ack_r : std_logic; + signal int_end_r : std_logic; begin - + int_n <= '0' when (int_reg_0 or int_reg_1 or int_reg_2 or int_reg_3) = '1' else '1'; d_out <= int_vector & "000" when int_reg_0 = '1' else @@ -60,6 +63,7 @@ begin int_reg_1 <= '0'; int_reg_2 <= '0'; int_reg_3 <= '0'; + int_in_service <= (others => '0'); load_data_r <= '0'; int_vector <= (others => '0'); else @@ -68,6 +72,7 @@ begin load_data_r <= load_data; int_ack_r <= int_ack; + int_end_r <= int_end; if load_data = '1' and load_data_r = '0' then @@ -85,19 +90,28 @@ begin end if; end if; - - if int_pulse_0 = '1' then int_reg_0 <= '1'; end if; - if int_pulse_1 = '1' then int_reg_1 <= '1'; end if; - if int_pulse_2 = '1' then int_reg_2 <= '1'; end if; - if int_pulse_3 = '1' then int_reg_3 <= '1'; end if; - if int_ack_r = '1' and int_ack = '0' then - if int_reg_0 = '1' then int_reg_0 <= '0'; - elsif int_reg_1 = '1' then int_reg_1 <= '0'; - elsif int_reg_2 = '1' then int_reg_2 <= '0'; - elsif int_reg_3 = '1' then int_reg_3 <= '0'; end if; + if int_pulse_0 = '1' and int_in_service(0) = '0' then int_reg_0 <= '1'; end if; + if int_pulse_1 = '1' and int_in_service(1 downto 0) = "00" then int_reg_1 <= '1'; end if; + if int_pulse_2 = '1' and int_in_service(2 downto 0) = "000" then int_reg_2 <= '1'; end if; + if int_pulse_3 = '1' and int_in_service(3 downto 0) = "0000" then int_reg_3 <= '1'; end if; + + if int_ack_r = '0' and int_ack = '1' then + if int_reg_0 = '1' then int_reg_0 <= '0'; int_in_service(0) <= '1'; + elsif int_reg_1 = '1' then int_reg_1 <= '0'; int_in_service(1) <= '1'; + elsif int_reg_2 = '1' then int_reg_2 <= '0'; int_in_service(2) <= '1'; + elsif int_reg_3 = '1' then int_reg_3 <= '0'; int_in_service(3) <= '1'; + end if; end if; - + + if int_end_r = '0' and int_end = '1' then + if int_in_service(0) = '1' then int_in_service(0) <= '0'; + elsif int_in_service(1) = '1' then int_in_service(1) <= '0'; + elsif int_in_service(2) = '1' then int_in_service(2) <= '0'; + elsif int_in_service(3) = '1' then int_in_service(3) <= '0'; + end if; + end if; + end if; end if; end if; diff --git a/Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/ctc_counter.vhd b/Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/ctc_counter.vhd index c6eb69e6..6ae72b76 100644 --- a/Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/ctc_counter.vhd +++ b/Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/ctc_counter.vhd @@ -35,9 +35,10 @@ architecture struct of ctc_counter is signal prescale_max : std_logic_vector(7 downto 0); signal prescale_in : std_logic_vector(7 downto 0) := (others => '0'); - signal count_max : std_logic_vector(8 downto 0); - signal count_in : std_logic_vector(8 downto 0) := (others => '0'); + signal count_max : std_logic_vector(7 downto 0); + signal count_in : std_logic_vector(7 downto 0) := (others => '0'); signal zc_to_in : std_logic; + signal clk_trg_in : std_logic; signal clk_trg_r : std_logic; signal trigger : std_logic; signal count_ena : std_logic; @@ -49,16 +50,15 @@ prescale_max <= (others => '0') when control_word(6) = '1' else -- counter mode (prescale max = 0) X"0F" when control_word(6 downto 5) = "00" else -- timer mode prescale 16 X"FF"; -- timer mode prescale 256 - -trigger <= - '1' when (clk_trg = '0' and clk_trg_r = '1' and control_word(4) = '0') or -- falling edge - (clk_trg = '1' and clk_trg_r = '0' and control_word(4) = '1') else '0'; -- rising edge - + +clk_trg_in <= clk_trg xor control_word(4); +trigger <= '1' when clk_trg_in = '0' and clk_trg_r = '1' else '0'; + d_out <= count_in(7 downto 0); zc_to <= zc_to_in; int_pulse <= zc_to_in when control_word(7) = '1' else '0'; - + process (reset, clock) begin @@ -75,7 +75,7 @@ begin if rising_edge(clock) then if clock_ena = '1' then - clk_trg_r <= clk_trg; + clk_trg_r <= clk_trg_in; load_data_r <= load_data; if (restart_on_next_trigger = '1' and trigger = '1') or (restart_on_next_clock = '1') then @@ -91,13 +91,8 @@ begin if wait_for_time_constant = '1' then wait_for_time_constant <= '0'; time_constant_loaded <= '1'; - - if d_in = X"00" then - count_max <= '1'&X"00"; - else - count_max <= '0'&d_in; - end if; - + count_max <= d_in; + if control_word(6) = '0' and count_ena = '0' then -- in timer mode, if count was stooped if control_word(3) = '0' then -- auto start when time_constant loaded restart_on_next_clock <= '1'; @@ -105,9 +100,13 @@ begin restart_on_next_trigger <= '1'; end if; end if; - + if control_word(6) = '1' then -- in trigger mode reload the counter immediately, + -- otherwise the first period will undefined + prescale_in <= (others => '0'); + count_in <= d_in; + end if; else -- not waiting for time constant - + if d_in(0) = '1' then -- check if its a control world control_word <= d_in; wait_for_time_constant <= d_in(2); @@ -133,8 +132,7 @@ begin (control_word(6) = '0' and count_ena = '1') ) and time_constant_loaded = '1' then if prescale_in = 0 then prescale_in <= prescale_max; --- prescale_in <= '0'&prescale_max(7 downto 1); -- test divide by 2 ! - if count_in = 0 then + if count_in = 1 then zc_to_in <= '1'; count_in <= count_max; else diff --git a/Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/dpram.vhd b/Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/dpram.vhd new file mode 100644 index 00000000..284194c5 --- /dev/null +++ b/Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/dpram.vhd @@ -0,0 +1,81 @@ +-- ----------------------------------------------------------------------- +-- +-- Syntiac's generic VHDL support files. +-- +-- ----------------------------------------------------------------------- +-- Copyright 2005-2008 by Peter Wendrich (pwsoft@syntiac.com) +-- http://www.syntiac.com/fpga64.html +-- +-- Modified April 2016 by Dar (darfpga@aol.fr) +-- http://darfpga.blogspot.fr +-- Remove address register when writing +-- +-- ----------------------------------------------------------------------- +-- +-- dpram.vhd +-- +-- ----------------------------------------------------------------------- +-- +-- generic ram. +-- +-- ----------------------------------------------------------------------- + +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.numeric_std.ALL; + +-- ----------------------------------------------------------------------- + +entity dpram is + generic ( + dWidth : integer := 8; + aWidth : integer := 10 + ); + port ( + clk_a : in std_logic; + we_a : in std_logic := '0'; + addr_a : in std_logic_vector((aWidth-1) downto 0); + d_a : in std_logic_vector((dWidth-1) downto 0) := (others => '0'); + q_a : out std_logic_vector((dWidth-1) downto 0); + + clk_b : in std_logic; + we_b : in std_logic := '0'; + addr_b : in std_logic_vector((aWidth-1) downto 0); + d_b : in std_logic_vector((dWidth-1) downto 0) := (others => '0'); + q_b : out std_logic_vector((dWidth-1) downto 0) + ); +end entity; + +-- ----------------------------------------------------------------------- + +architecture rtl of dpram is + subtype addressRange is integer range 0 to ((2**aWidth)-1); + type ramDef is array(addressRange) of std_logic_vector((dWidth-1) downto 0); + signal ram: ramDef; + signal addr_a_reg: std_logic_vector((aWidth-1) downto 0); + signal addr_b_reg: std_logic_vector((aWidth-1) downto 0); +begin + +-- ----------------------------------------------------------------------- + process(clk_a) + begin + if rising_edge(clk_a) then + if we_a = '1' then + ram(to_integer(unsigned(addr_a))) <= d_a; + end if; + q_a <= ram(to_integer(unsigned(addr_a))); + end if; + end process; + + process(clk_b) + begin + if rising_edge(clk_b) then + if we_b = '1' then + ram(to_integer(unsigned(addr_b))) <= d_b; + end if; + q_b <= ram(to_integer(unsigned(addr_b))); + end if; + end process; + +end architecture; + diff --git a/Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/journey.vhd b/Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/journey.vhd index 6cfe6498..c0294ea6 100644 --- a/Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/journey.vhd +++ b/Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/journey.vhd @@ -1,14 +1,7 @@ --------------------------------------------------------------------------------- --- Journey by Dar (darfpga@aol.fr) (09/11/2019) +-- Satans Hollow by Dar (darfpga@aol.fr) (09/11/2019) -- http://darfpga.blogspot.fr --------------------------------------------------------------------------------- --- --- release 01 : improve ssio read input (fix mirror addressing) --- improve memory access (fix mirror addressing) --- --- release 00 : initial release --- ---------------------------------------------------------------------------------- -- gen_ram.vhd & io_ps2_keyboard -------------------------------- -- Copyright 2005-2008 by Peter Wendrich (pwsoft@syntiac.com) @@ -27,18 +20,27 @@ -- Do not redistribute roms whatever the form -- Use at your own risk --------------------------------------------------------------------------------- - +-- +-- release rev 02 : add TV 15kHz mode +-- (22/11/2019) use merged sprite 8bits roms (make it easier to externalize) +-- +-- release rev 01 : improve ssio read input (fix mirror addressing) +-- improve memory access (fix mirror addressing) +-- +-- release rev 00 : initial release +-- +-- -- Features : --- Video : 31Khz/60Hz +-- Video : VGA 31Khz/60Hz and TV 15kHz -- Coctail mode : NO -- Sound : OK --- Use with MAME roms from tron.zip +-- Use with MAME roms from shollow.zip -- --- Use make_tron_hollow_proms.bat to build vhd file from binaries +-- Use make_satans_hollow_proms.bat to build vhd file from binaries -- (CRC list included) --- Tron (midway mcr) Hardware caracteristics : +-- Satans hollow (midway mcr) Hardware caracteristics : -- -- VIDEO : 1xZ80@3MHz CPU accessing its program rom, working ram, -- sprite data ram, I/O, sound board register and trigger. @@ -58,7 +60,7 @@ -- Sprites line buffer rams : 1 scan line delay flip/flop 2x256x8bits -- --- SOUND : see tron_hollow_sound_board.vhd +-- SOUND : see satans_hollow_sound_board.vhd --------------------------------------------------------------------------------- -- Schematics remarks : @@ -134,49 +136,60 @@ use ieee.numeric_std.all; entity journey is port( - clock_40 : in std_logic; - reset : in std_logic; - --tv15Khz_mode : in std_logic; - video_r : out std_logic_vector(2 downto 0); - video_g : out std_logic_vector(2 downto 0); - video_b : out std_logic_vector(2 downto 0); - video_clk : out std_logic; - --video_csync : out std_logic; - video_blankn : out std_logic; - video_hs : out std_logic; - video_vs : out std_logic; + clock_40 : in std_logic; + reset : in std_logic; + tv15Khz_mode : in std_logic; + video_r : out std_logic_vector(2 downto 0); + video_g : out std_logic_vector(2 downto 0); + video_b : out std_logic_vector(2 downto 0); + video_clk : out std_logic; + video_csync : out std_logic; + video_blankn : out std_logic; + video_hs : out std_logic; + video_vs : out std_logic; - separate_audio : in std_logic; - audio_out_l : out std_logic_vector(15 downto 0); - audio_out_r : out std_logic_vector(15 downto 0); - - coin1 : in std_logic; - coin2 : in std_logic; - start1 : in std_logic; - start2 : in std_logic; - - left1 : in std_logic; - right1 : in std_logic; - up1 : in std_logic; - down1 : in std_logic; - fire1 : in std_logic; - - left2 : in std_logic; - right2 : in std_logic; - up2 : in std_logic; - down2 : in std_logic; - fire2 : in std_logic; + separate_audio : in std_logic; + audio_out_l : out std_logic_vector(15 downto 0); + audio_out_r : out std_logic_vector(15 downto 0); - cocktail : in std_logic; - coin_meters : in std_logic; + coin1 : in std_logic; + coin2 : in std_logic; + start1 : in std_logic; + start2 : in std_logic; - service : in std_logic; - cpu_rom_addr : out std_logic_vector(15 downto 0); - cpu_rom_do : in std_logic_vector(7 downto 0); - snd_rom_addr : out std_logic_vector(13 downto 0); - snd_rom_do : in std_logic_vector(7 downto 0); - sp_addr : out std_logic_vector(14 downto 0); - sp_graphx32_do : in std_logic_vector(31 downto 0) + left1 : in std_logic; + right1 : in std_logic; + up1 : in std_logic; + down1 : in std_logic; + fire1 : in std_logic; + + left2 : in std_logic; + right2 : in std_logic; + up2 : in std_logic; + down2 : in std_logic; + fire2 : in std_logic; + + cocktail : in std_logic; + coin_meters : in std_logic; + + service : in std_logic; + + cpu_rom_addr : out std_logic_vector(15 downto 0); + cpu_rom_do : in std_logic_vector(7 downto 0); + cpu_rom_rd : out std_logic; + + snd_rom_addr : out std_logic_vector(13 downto 0); + snd_rom_do : in std_logic_vector(7 downto 0); + + sp_addr : out std_logic_vector(14 downto 0); +-- sp_graphx_do : in std_logic_vector(7 downto 0); + sp_graphx32_do : in std_logic_vector(31 downto 0); + + dl_addr : in std_logic_vector(16 downto 0); + dl_data : in std_logic_vector( 7 downto 0); + dl_wr : in std_logic; + + dbg_cpu_addr : out std_logic_vector(15 downto 0) ); end journey; @@ -188,14 +201,15 @@ architecture struct of journey is signal clock_cnt : std_logic_vector(3 downto 0) := "0000"; signal hcnt : std_logic_vector(9 downto 0) := (others=>'0'); -- horizontal counter - signal hflip : std_logic_vector(9 downto 0) := (others=>'0'); -- horizontal counter flip signal vcnt : std_logic_vector(9 downto 0) := (others=>'0'); -- vertical counter signal vflip : std_logic_vector(9 downto 0) := (others=>'0'); -- vertical counter flip + signal hflip : std_logic_vector(9 downto 0) := (others=>'0'); -- horizontal counter flip - signal frame : std_logic_vector(9 downto 0) := (others=>'0'); -- frame counter dbg + signal hs_cnt, vs_cnt :std_logic_vector(9 downto 0) ; + signal hsync0, hsync1, hsync2, hsync3, hsync4 : std_logic; + signal top_frame : std_logic := '0'; signal pix_ena : std_logic; - signal pix_ena_r : std_logic; signal cpu_ena : std_logic; signal cpu_addr : std_logic_vector(15 downto 0); @@ -207,39 +221,28 @@ architecture struct of journey is signal cpu_ioreq_n : std_logic; signal cpu_irq_n : std_logic; signal cpu_m1_n : std_logic; + signal cpu_int_ack_n : std_logic; signal ctc_controler_we : std_logic; signal ctc_controler_do : std_logic_vector(7 downto 0); signal ctc_int_ack : std_logic; + signal ctc_int_ack_phase : std_logic_vector(1 downto 0); - signal ctc_counter_0_we : std_logic; --- signal ctc_counter_0_trg : std_logic; - signal ctc_counter_0_do : std_logic_vector(7 downto 0); - signal ctc_counter_0_int : std_logic; - - signal ctc_counter_1_we : std_logic; --- signal ctc_counter_1_trg : std_logic; - signal ctc_counter_1_do : std_logic_vector(7 downto 0); - signal ctc_counter_1_int : std_logic; - - signal ctc_counter_2_we : std_logic; --- signal ctc_counter_2_trg : std_logic; - signal ctc_counter_2_do : std_logic_vector(7 downto 0); - signal ctc_counter_2_int : std_logic; - - signal ctc_counter_3_we : std_logic; + signal ctc_counter_1_trg : std_logic; signal ctc_counter_3_trg : std_logic; - signal ctc_counter_3_do : std_logic_vector(7 downto 0); - signal ctc_counter_3_int : std_logic; + + signal ctc_ce : std_logic; + signal ctc_do : std_logic_vector(7 downto 0); + +-- signal cpu_rom_do : std_logic_vector( 7 downto 0); signal wram_we : std_logic; signal wram_do : std_logic_vector( 7 downto 0); signal bg_ram_addr: std_logic_vector(10 downto 0); signal bg_ram_we : std_logic; - signal bg_ram_cpu_access : std_logic; signal bg_ram_do : std_logic_vector(7 downto 0); - signal bg_ram_do_r: std_logic_vector(7 downto 0); -- registred data for cpu + signal bg_ram_do_r: std_logic_vector(7 downto 0); -- registred ram data for cpu signal bg_code : std_logic_vector(7 downto 0); signal bg_code_r : std_logic_vector(7 downto 0); @@ -249,18 +252,18 @@ architecture struct of journey is signal bg_graphx1_do : std_logic_vector( 7 downto 0); signal bg_graphx2_do : std_logic_vector( 7 downto 0); signal bg_palette_addr : std_logic_vector( 5 downto 0); - + signal sp_ram_cache_addr : std_logic_vector(8 downto 0); signal sp_ram_cache_we : std_logic; - signal sp_ram_cache_cpu_access : std_logic; signal sp_ram_cache_do : std_logic_vector(7 downto 0); + signal sp_ram_cache_do_r : std_logic_vector(7 downto 0);-- registred ram data for cpu signal move_buf : std_logic; signal sp_ram_addr : std_logic_vector(8 downto 0); signal sp_ram_we : std_logic; signal sp_ram_do : std_logic_vector(7 downto 0); - signal sp_cnt : std_logic_vector(6 downto 0); + signal sp_cnt : std_logic_vector( 6 downto 0); signal sp_code : std_logic_vector( 7 downto 0); signal sp_attr : std_logic_vector( 7 downto 0); signal sp_input_phase : std_logic_vector( 5 downto 0); @@ -272,7 +275,7 @@ architecture struct of journey is signal sp_on_line : std_logic; signal sp_on_line_r : std_logic; signal sp_byte_cnt : std_logic_vector( 1 downto 0); - signal sp_code_line : std_logic_vector(14 downto 0); + signal sp_code_line_mux: std_logic_vector(16 downto 0); signal sp_hflip : std_logic_vector( 1 downto 0); signal sp_vflip : std_logic_vector( 4 downto 0); @@ -280,6 +283,7 @@ architecture struct of journey is signal sp_graphx32_do_r: std_logic_vector(31 downto 0); signal sp_graphx_mux : std_logic_vector( 7 downto 0); signal sp_mux_roms : std_logic_vector( 1 downto 0); + signal sp_graphx_a : std_logic_vector( 3 downto 0); signal sp_graphx_b : std_logic_vector( 3 downto 0); signal sp_graphx_a_ok : std_logic; @@ -302,32 +306,42 @@ architecture struct of journey is signal sp_buffer_ram2a_do : std_logic_vector( 7 downto 0); signal sp_buffer_ram2b_do : std_logic_vector( 7 downto 0); signal sp_buffer_ram2_do_r : std_logic_vector(15 downto 0); - - signal sp_vid_a : std_logic_vector(3 downto 0); - signal sp_col : std_logic_vector(3 downto 0); + signal sp_buffer_sel : std_logic; + signal sp_vid : std_logic_vector(3 downto 0); + signal sp_col : std_logic_vector(3 downto 0); + signal sp_palette_addr : std_logic_vector(5 downto 0); signal palette_addr : std_logic_vector(5 downto 0); signal palette_we : std_logic; signal palette_do : std_logic_vector(8 downto 0); - signal ssio_iowe : std_logic; - signal ssio_do : std_logic_vector(7 downto 0); + signal ssio_iowe : std_logic; + signal ssio_do : std_logic_vector(7 downto 0); - signal input_0 : std_logic_vector(7 downto 0); - signal input_1 : std_logic_vector(7 downto 0); - signal input_2 : std_logic_vector(7 downto 0); - signal input_3 : std_logic_vector(7 downto 0); - signal input_4 : std_logic_vector(7 downto 0); - signal output_4 : std_logic_vector(7 downto 0); + signal input_0 : std_logic_vector(7 downto 0); + signal input_1 : std_logic_vector(7 downto 0); + signal input_2 : std_logic_vector(7 downto 0); + signal input_3 : std_logic_vector(7 downto 0); + signal input_4 : std_logic_vector(7 downto 0); + signal bg_graphics_1_we : std_logic; + signal bg_graphics_2_we : std_logic; begin clock_vid <= clock_40; clock_vidn <= not clock_40; reset_n <= not reset; +-- debug +process (reset, clock_vid) +begin + if rising_edge(clock_vid) and cpu_ena ='1' and cpu_mreq_n ='0' then + dbg_cpu_addr<= "000000000000000"&service; --cpu_addr; + end if; +end process; + -- make enables clock from clock_vid process (clock_vid, reset) begin @@ -345,10 +359,12 @@ begin end process; -- cpu_ena <= '1' when clock_cnt = "1111" else '0'; -- (2.5MHz) -pix_ena <= clock_cnt(0); -- (20MHz) + +pix_ena <= '1' when (clock_cnt(1 downto 0) = "11" and tv15Khz_mode = '1') or -- (10MHz) + (clock_cnt(0) = '1' and tv15Khz_mode = '0') else '0'; -- (20MHz) ----------------------------------- --- Video scanner 635x525 @20Mhz -- +-- Video scanner 634x525 @20Mhz -- -- display 512x480 -- ----------------------------------- process (reset, clock_vid) @@ -356,31 +372,99 @@ begin if reset='1' then hcnt <= (others=>'0'); vcnt <= (others=>'0'); - frame <= (others=>'0'); - else - if rising_edge(clock_vid) then - if pix_ena = '1' then - - hcnt <= hcnt + 1; - if hcnt = 634 then - hcnt <= (others=>'0'); - vcnt <= vcnt + 1; - if vcnt = 524 then - vcnt <= (others=>'0'); - frame <= frame + 1; - end if; + top_frame <= '0'; + elsif rising_edge(clock_vid) then + if pix_ena = '1' then + + hcnt <= hcnt + 1; + if hcnt = 633 then + hcnt <= (others=>'0'); + vcnt <= vcnt + 1; + if (vcnt = 524 and tv15Khz_mode = '0') or (vcnt = 263 and tv15Khz_mode = '1') then + vcnt <= (others=>'0'); + top_frame <= not top_frame; end if; - + end if; + + if tv15Khz_mode = '0' then + -- progessive mode + if vcnt = 490-1 then video_vs <= '0'; end if; -- front porch 10 if vcnt = 492-1 then video_vs <= '1'; end if; -- sync pulse 2 - -- back porch 33 - - if hcnt = 512+30 then video_hs <= '0'; end if; -- front porch 16/25*20 = 13 + -- back porch 33 + + if hcnt = 512+13+9 then video_hs <= '0'; end if; -- front porch 16/25*20 = 13 if hcnt = 512+90+9 then video_hs <= '1'; end if; -- sync pulse 96/25*20 = 77 -- back porch 48/25*20 = 38 video_blankn <= '0'; if hcnt >= 2+16 and hcnt < 514+16 and vcnt >= 2 and vcnt < 481 then video_blankn <= '1';end if; + + else -- interlaced mode + + if hcnt = 530+18 then + hs_cnt <= (others => '0'); + if (vcnt = 240) then + vs_cnt <= (others => '0'); + else + vs_cnt <= vs_cnt +1; + end if; + else + hs_cnt <= hs_cnt + 1; + end if; + + if vcnt = 260 then video_vs <= '0'; end if; + if vcnt = 262 then video_vs <= '1'; end if; + + video_blankn <= '0'; + if hcnt >= 2+16 and hcnt < 514+16 and + vcnt >= 1 and vcnt < 241 then video_blankn <= '1';end if; + + + if hs_cnt = 0 then hsync0 <= '0'; video_hs <= '0'; + elsif hs_cnt = 47 then hsync0 <= '1'; video_hs <= '1'; + end if; + + if hs_cnt = 0 then hsync1 <= '0'; + elsif hs_cnt = 23 then hsync1 <= '1'; + elsif hs_cnt = 317+ 0 then hsync1 <= '0'; + elsif hs_cnt = 317+23 then hsync1 <= '1'; + end if; + + if hs_cnt = 0 then hsync2 <= '0'; + elsif hs_cnt = 317-47 then hsync2 <= '1'; + elsif hs_cnt = 317 then hsync2 <= '0'; + elsif hs_cnt = 634-47 then hsync2 <= '1'; + end if; + + if hs_cnt = 0 then hsync3 <= '0'; + elsif hs_cnt = 23 then hsync3 <= '1'; + elsif hs_cnt = 317 then hsync3 <= '0'; + elsif hs_cnt = 634-47 then hsync3 <= '1'; + end if; + + if hs_cnt = 0 then hsync4 <= '0'; + elsif hs_cnt = 317-47 then hsync4 <= '1'; + elsif hs_cnt = 317 then hsync4 <= '0'; + elsif hs_cnt = 317+23 then hsync4 <= '1'; + end if; + + if vs_cnt = 1 then video_csync <= hsync1; + elsif vs_cnt = 2 then video_csync <= hsync1; + elsif vs_cnt = 3 then video_csync <= hsync1; + elsif vs_cnt = 4 and top_frame = '1' then video_csync <= hsync3; + elsif vs_cnt = 4 and top_frame = '0' then video_csync <= hsync1; + elsif vs_cnt = 5 then video_csync <= hsync2; + elsif vs_cnt = 6 then video_csync <= hsync2; + elsif vs_cnt = 7 and top_frame = '1' then video_csync <= hsync4; + elsif vs_cnt = 7 and top_frame = '0' then video_csync <= hsync2; + elsif vs_cnt = 8 then video_csync <= hsync1; + elsif vs_cnt = 9 then video_csync <= hsync1; + elsif vs_cnt = 10 then video_csync <= hsync1; + elsif vs_cnt = 11 then video_csync <= hsync0; + else video_csync <= hsync0; + end if; + end if; end if; end if; @@ -389,47 +473,37 @@ end process; -------------------- -- players inputs -- -------------------- --- "11" for test & tilt & unused +-- "111" for test & tilt & unused input_0 <= not service & "11" & not fire1 & not start2 & not start1 & not coin2 & not coin1; -input_1 <= "1111" & not down1 & not up1 & not right1 & not left1; -input_2 <= "111" & not fire2 & not down2 & not up2 & not right2 & not left2; +input_1 <= "1111" & not down1 & not up1 & not right1 & not left1; +input_2 <= "111" & not fire2 & not down2 & not up2 & not right2 & not left2; input_3 <= "111111" & cocktail & coin_meters; input_4 <= x"FF"; ------------------------------------------ -- cpu data input with address decoding -- ------------------------------------------ -cpu_di <= cpu_rom_do when cpu_mreq_n = '0' and cpu_addr(15 downto 12) < X"A" else -- 0000-9FFF - wram_do when cpu_mreq_n = '0' and (cpu_addr and X"E000") = x"C000" else -- C000-C7FF + mirroring 1800 - sp_ram_cache_do when cpu_mreq_n = '0' and (cpu_addr and x"E800") = x"E000" else -- sprite ram E000-E1FF + mirroring 1600 - bg_ram_do_r when cpu_mreq_n = '0' and (cpu_addr and x"E800") = x"E800" else -- video ram E800-EFFF + mirroring 1000 - ctc_controler_do when cpu_ioreq_n = '0' and cpu_m1_n = '0' else -- ctc ctrl (interrupt vector) +cpu_di <= cpu_rom_do when cpu_mreq_n = '0' and cpu_addr(15 downto 12) < X"C" else -- 0000-BFFF + wram_do when cpu_mreq_n = '0' and (cpu_addr and X"E000") = x"C000" else -- C000-C7FF + mirroring 1800 + sp_ram_cache_do_r when cpu_mreq_n = '0' and (cpu_addr and x"E800") = x"E000" else -- sprite ram E000-E1FF + mirroring 1600 + bg_ram_do_r when cpu_mreq_n = '0' and (cpu_addr and x"E800") = x"E800" else -- video ram E800-EFFF + mirroring 1000 + ctc_do when cpu_int_ack_n = '0' or ctc_ce = '1' else -- ctc (interrupt vector or counter data) ssio_do when cpu_ioreq_n = '0' and cpu_addr(7 downto 5) = "000" else -- 0x00-0x1F - ctc_counter_3_do when cpu_ioreq_n = '0' and cpu_addr(7 downto 0) = X"F3" else - ctc_counter_2_do when cpu_ioreq_n = '0' and cpu_addr(7 downto 0) = X"F2" else - ctc_counter_1_do when cpu_ioreq_n = '0' and cpu_addr(7 downto 0) = X"F1" else - ctc_counter_0_do when cpu_ioreq_n = '0' and cpu_addr(7 downto 0) = X"F0" else X"FF"; - + ------------------------------------------------------------------------ --- Misc registers : ctc write enable / interrupt acknowledge +-- Misc registers : ctc enable / interrupt acknowledge ------------------------------------------------------------------------ -ctc_counter_3_trg <= '1' when vcnt = 493 else '0'; -ctc_counter_3_we <= '1' when cpu_wr_n = '0' and cpu_ioreq_n = '0' and cpu_addr(7 downto 0) = X"F3" else '0'; -ctc_counter_2_we <= '1' when cpu_wr_n = '0' and cpu_ioreq_n = '0' and cpu_addr(7 downto 0) = X"F2" else '0'; -ctc_counter_1_we <= '1' when cpu_wr_n = '0' and cpu_ioreq_n = '0' and cpu_addr(7 downto 0) = X"F1" else '0'; -ctc_counter_0_we <= '1' when cpu_wr_n = '0' and cpu_ioreq_n = '0' and cpu_addr(7 downto 0) = X"F0" else '0'; -ctc_controler_we <= '1' when cpu_wr_n = '0' and cpu_ioreq_n = '0' and cpu_addr(7 downto 0) = X"F0" else '0'; -- only channel 0 receive int vector -ctc_int_ack <= '1' when cpu_ioreq_n = '0' and cpu_m1_n = '0' else '0'; +ctc_counter_3_trg <= '1' when top_frame = '1' and ((vcnt = 246 and tv15Khz_mode = '1') or (vcnt = 493 and tv15Khz_mode = '0')) else '0'; +cpu_int_ack_n <= cpu_ioreq_n or cpu_m1_n; +ctc_ce <= '1' when cpu_ioreq_n = '0' and cpu_addr(7 downto 4) = x"F" else '0'; ------------------------------------------ -- write enable / ram access from CPU -- ------------------------------------------ -wram_we <= '1' when cpu_mreq_n = '0' and cpu_wr_n = '0' and (cpu_addr and x"E000") = x"C000" else '0'; -sp_ram_cache_we <= '1' when cpu_mreq_n = '0' and cpu_wr_n = '0' and (cpu_addr and x"E800") = x"E000" else '0'; -sp_ram_cache_cpu_access <= '1' when cpu_mreq_n = '0' and (cpu_wr_n = '0' or cpu_rd_n = '0') and (cpu_addr and x"E800") = x"E000" else '0'; -bg_ram_cpu_access <= '1' when cpu_mreq_n = '0' and (cpu_wr_n = '0' or cpu_rd_n = '0') and (cpu_addr and x"E800") = x"E800" and hcnt(0) = '0' else '0'; -bg_ram_we <= '1' when bg_ram_cpu_access = '1' and cpu_wr_n = '0' else '0'; +wram_we <= '1' when cpu_mreq_n = '0' and cpu_wr_n = '0' and (cpu_addr and x"E000") = x"C000" else '0'; +sp_ram_cache_we <= '1' when cpu_mreq_n = '0' and cpu_wr_n = '0' and (cpu_addr and x"E800") = x"E000" and hcnt(0) = '0' else '0'; +bg_ram_we <= '1' when cpu_mreq_n = '0' and cpu_wr_n = '0' and (cpu_addr and x"E800") = x"E800" and hcnt(0) = '0' else '0'; ssio_iowe <= '1' when cpu_wr_n = '0' and cpu_ioreq_n = '0' else '0'; @@ -440,14 +514,22 @@ ssio_iowe <= '1' when cpu_wr_n = '0' and cpu_ioreq_n = '0' else '0'; --hflip <= not(hcnt); -- apply mirror horizontal flip hflip <= hcnt; -- do not apply mirror horizontal flip ---vflip <= 480-vcnt; -- apply mirror vertical flip -vflip <= vcnt; -- do not apply mirror vertical flip +vflip <= vcnt(8 downto 0) & not top_frame when tv15Khz_mode = '1' else vcnt; -- do not apply mirror flip + +sp_buffer_sel <= vflip(1) when tv15Khz_mode = '1' else vflip(0); process (clock_vid) begin if rising_edge(clock_vid) then - +-- debug -- max sprite counter +-- if vcnt = 0 and hcnt = 0 and pix_ena = '1' then +-- max_sprite_r <= (others => '0'); +-- if max_sprite_r > max_sprite_rr then +-- max_sprite_rr <= max_sprite_r; +-- end if; +-- end if; + if hcnt = 0 then sp_cnt <= (others => '0'); sp_input_phase <= (others => '0'); @@ -458,13 +540,14 @@ begin -- max_sprite_r <= max_sprite; -- end if; end if; - + if sp_done = '0' then sp_input_phase <= sp_input_phase + 1 ; - sp_hcnt <= sp_hcnt + 1; + if sp_input_phase >= 10 then sp_hcnt <= sp_hcnt + 1; end if; + case sp_input_phase is when "000000" => - if sp_vcnt(8 downto 5) = x"F" and sp_ram_do > x"10" then + if sp_vcnt(8 downto 5) = x"F" then -- and sp_ram_do > x"10" then sp_line <= sp_vcnt(4 downto 0); else sp_input_phase <= (others => '0'); @@ -474,18 +557,20 @@ begin sp_byte_cnt <= (others => '0'); when "000001" => sp_attr <= sp_ram_do; --- max_sprite <= max_sprite + 1; when "000010" => sp_code <= sp_ram_do; sp_addr <= sp_ram_do(7 downto 0) & (sp_line xor sp_vflip) & (sp_byte_cnt xor sp_hflip); -- graphics rom addr when "000011" => sp_hcnt <= sp_ram_do & '0'; - sp_on_line <= '1'; - when "001010"|"010010"|"011010" => - sp_byte_cnt <= sp_byte_cnt + 1; + when "001010" => -- 10 sp_graphx32_do_r <= sp_graphx32_do; -- latch incoming sprite data sp_addr <= sp_code(7 downto 0) & (sp_line xor sp_vflip) & (sp_byte_cnt+1 xor sp_hflip); -- advance graphics rom addr - when "100010" => + sp_on_line <= '1'; + when "010010"|"011010"|"100010" => -- 18,26,34 + sp_graphx32_do_r <= sp_graphx32_do; -- latch incoming sprite data + sp_addr <= sp_code(7 downto 0) & (sp_line xor sp_vflip) & (sp_byte_cnt+2 xor sp_hflip); -- advance graphics rom addr + sp_byte_cnt <= sp_byte_cnt + 1; + when "101010" => -- 42 sp_on_line <= '0'; sp_input_phase <= (others => '0'); sp_cnt <= sp_cnt + 1; @@ -495,7 +580,7 @@ begin end case; sp_mux_roms <= sp_input_phase(2 downto 1); end if; - + if pix_ena = '1' then if hcnt(0) = '0' then sp_buffer_ram1_do_r <= sp_buffer_ram1b_do & sp_buffer_ram1a_do; @@ -511,7 +596,7 @@ end process; sp_ram_cache_addr <= cpu_addr(8 downto 0) when hcnt(0) = '0' else sp_ram_addr; -move_buf <= '1' when vcnt(8 downto 1) = 250 else '0'; -- line 500-501 +move_buf <= '1' when (vcnt(8 downto 1) = 250 and tv15Khz_mode = '0') or (vcnt(7 downto 1) = 125 and tv15Khz_mode = '1') else '0'; -- line 500-501 sp_ram_addr <= vcnt(0) & hcnt(8 downto 1) when move_buf = '1' else sp_cnt & sp_input_phase(1 downto 0); sp_ram_we <= hcnt(0) when move_buf = '1' else '0'; @@ -520,65 +605,66 @@ sp_vcnt <= vflip + (sp_ram_do & '0') -1 ; -- valid when sp_input_phase = 0 sp_hflip <= (others => sp_attr(4)); sp_vflip <= (others => sp_attr(5)); -sp_code_line <= sp_code(7 downto 0) & (sp_line xor sp_vflip) & (sp_byte_cnt xor sp_hflip); -- sprite graphics roms addr - sp_graphx_do <= sp_graphx32_do_r( 7 downto 0) when (sp_hflip(0) = '0' and sp_mux_roms = "01") or (sp_hflip(0) = '1' and sp_mux_roms = "00") else sp_graphx32_do_r(15 downto 8) when (sp_hflip(0) = '0' and sp_mux_roms = "10") or (sp_hflip(0) = '1' and sp_mux_roms = "11") else - sp_graphx32_do_r(23 downto 16) when (sp_hflip(0) = '0' and sp_mux_roms = "11") or (sp_hflip(0) = '1' and sp_mux_roms = "10") else - sp_graphx32_do_r(31 downto 24);-- when (sp_hflip(0) = '0' and sp_mux_roms = "00") or (sp_hflip(0) = '1' and sp_mux_roms = "01") ; - -sp_graphx_a <= sp_graphx_mux(7 downto 4) when sp_hflip(0) = '1' else sp_graphx_mux(3 downto 0); -sp_graphx_b <= sp_graphx_mux(3 downto 0) when sp_hflip(0) = '1' else sp_graphx_mux(7 downto 4); + sp_graphx32_do_r(23 downto 16) when (sp_hflip(0) = '0' and sp_mux_roms = "11") or (sp_hflip(0) = '1' and sp_mux_roms = "10") else + sp_graphx32_do_r(31 downto 24);-- when (sp_hflip(0) = '0' and sp_mux_roms = "00") or (sp_hflip(0) = '1' and sp_mux_roms = "01") ; + +sp_graphx_a <= sp_graphx_do(7 downto 4) when sp_hflip(0) = '1' else sp_graphx_do(3 downto 0); +sp_graphx_b <= sp_graphx_do(3 downto 0) when sp_hflip(0) = '1' else sp_graphx_do(7 downto 4); sp_graphx_a_ok <= '1' when sp_graphx_a /= x"0" else '0'; sp_graphx_b_ok <= '1' when sp_graphx_b /= x"0" else '0'; -sp_buffer_ram1a_di <= sp_attr(3 downto 0) & sp_graphx_a when vflip(0) = '1' else x"00"; -sp_buffer_ram1b_di <= sp_attr(3 downto 0) & sp_graphx_b when vflip(0) = '1' else x"00"; -sp_buffer_ram1_addr <= sp_hcnt(8 downto 1) when vflip(0) = '1' else hflip(8 downto 1) + x"0C"; -sp_buffer_ram1a_we <= not sp_hcnt(0) and sp_on_line and sp_graphx_a_ok when vflip(0) = '1' else hcnt(0); -sp_buffer_ram1b_we <= not sp_hcnt(0) and sp_on_line and sp_graphx_b_ok when vflip(0) = '1' else hcnt(0); +sp_buffer_ram1a_di <= sp_attr(3 downto 0) & sp_graphx_a when sp_buffer_sel = '1' else x"00"; +sp_buffer_ram1b_di <= sp_attr(3 downto 0) & sp_graphx_b when sp_buffer_sel = '1' else x"00"; +sp_buffer_ram1_addr <= sp_hcnt(8 downto 1) when sp_buffer_sel = '1' else hflip(8 downto 1) - x"04"; +sp_buffer_ram1a_we <= not sp_hcnt(0) and sp_on_line and sp_graphx_a_ok when sp_buffer_sel = '1' else hcnt(0); +sp_buffer_ram1b_we <= not sp_hcnt(0) and sp_on_line and sp_graphx_b_ok when sp_buffer_sel = '1' else hcnt(0); -sp_buffer_ram2a_di <= sp_attr(3 downto 0) & sp_graphx_a when vflip(0) = '0' else x"00"; -sp_buffer_ram2b_di <= sp_attr(3 downto 0) & sp_graphx_b when vflip(0) = '0' else x"00"; -sp_buffer_ram2_addr <= sp_hcnt(8 downto 1) when vflip(0) = '0' else hflip(8 downto 1) + x"0C"; -sp_buffer_ram2a_we <= not sp_hcnt(0) and sp_on_line and sp_graphx_a_ok when vflip(0) = '0' else hcnt(0); -sp_buffer_ram2b_we <= not sp_hcnt(0) and sp_on_line and sp_graphx_b_ok when vflip(0) = '0' else hcnt(0); +sp_buffer_ram2a_di <= sp_attr(3 downto 0) & sp_graphx_a when sp_buffer_sel = '0' else x"00"; +sp_buffer_ram2b_di <= sp_attr(3 downto 0) & sp_graphx_b when sp_buffer_sel = '0' else x"00"; +sp_buffer_ram2_addr <= sp_hcnt(8 downto 1) when sp_buffer_sel = '0' else hflip(8 downto 1) - x"04"; +sp_buffer_ram2a_we <= not sp_hcnt(0) and sp_on_line and sp_graphx_a_ok when sp_buffer_sel = '0' else hcnt(0); +sp_buffer_ram2b_we <= not sp_hcnt(0) and sp_on_line and sp_graphx_b_ok when sp_buffer_sel = '0' else hcnt(0); -sp_vid <= sp_buffer_ram1_do_r(11 downto 8) when (vflip(0) = '0') and (hflip(0) = '1') else - sp_buffer_ram1_do_r( 3 downto 0) when (vflip(0) = '0') and (hflip(0) = '0') else - sp_buffer_ram2_do_r(11 downto 8) when (vflip(0) = '1') and (hflip(0) = '1') else - sp_buffer_ram2_do_r( 3 downto 0) when (vflip(0) = '1') and (hflip(0) = '0'); +sp_vid <= sp_buffer_ram1_do_r(11 downto 8) when (sp_buffer_sel = '0') and (hflip(0) = '1') else + sp_buffer_ram1_do_r( 3 downto 0) when (sp_buffer_sel = '0') and (hflip(0) = '0') else + sp_buffer_ram2_do_r(11 downto 8) when (sp_buffer_sel = '1') and (hflip(0) = '1') else + sp_buffer_ram2_do_r( 3 downto 0);-- when (sp_buffer_sel = '1') and (hflip(0) = '0'); -sp_col <= sp_buffer_ram1_do_r(15 downto 12) when (vflip(0) = '0') and (hflip(0) = '1') else - sp_buffer_ram1_do_r( 7 downto 4) when (vflip(0) = '0') and (hflip(0) = '0') else - sp_buffer_ram2_do_r(15 downto 12) when (vflip(0) = '1') and (hflip(0) = '1') else - sp_buffer_ram2_do_r( 7 downto 4) when (vflip(0) = '1') and (hflip(0) = '0'); - +sp_col <= sp_buffer_ram1_do_r(15 downto 12) when (sp_buffer_sel = '0') and (hflip(0) = '1') else + sp_buffer_ram1_do_r( 7 downto 4) when (sp_buffer_sel = '0') and (hflip(0) = '0') else + sp_buffer_ram2_do_r(15 downto 12) when (sp_buffer_sel = '1') and (hflip(0) = '1') else + sp_buffer_ram2_do_r( 7 downto 4);-- when (sp_buffer_sel = '1') and (hflip(0) = '0'); -------------------- --- char machine --- -------------------- -bg_ram_addr <= cpu_addr(10 downto 0) when bg_ram_cpu_access = '1' else vflip(8 downto 4) & hcnt(8 downto 4) & hcnt(1); +bg_ram_addr <= cpu_addr(10 downto 0) when hcnt(0) = '0' else vflip(8 downto 4) & hcnt(8 downto 4) & hcnt(1); bg_code_line <= bg_attr(0) & bg_code_r & (vflip(3 downto 1) xor (bg_attr(2) & bg_attr(2) & bg_attr(2) ) ) & (hcnt(3) xor bg_attr(1)); process (clock_vid) begin if rising_edge(clock_vid) then - - if hcnt(0) = '0' then bg_ram_do_r <= bg_ram_do; end if; + + -- catch ram data for cpu + if hcnt(0) = '0' then + bg_ram_do_r <= bg_ram_do; + sp_ram_cache_do_r <= sp_ram_cache_do; + end if; if pix_ena = '1' then - + if hcnt(0) = '1' then case hcnt(3 downto 1) is when "110" => bg_code <= bg_ram_do; when "111" => bg_attr <= bg_ram_do; - bg_code_r <= bg_code; + bg_code_r <= bg_code; when others => null; end case; - + case hcnt(2 downto 1) xor (bg_attr(1) & bg_attr(1)) is when "00" => bg_palette_addr <= bg_attr(4 downto 3) & bg_graphx2_do(7 downto 6) & bg_graphx1_do(7 downto 6); when "01" => bg_palette_addr <= bg_attr(4 downto 3) & bg_graphx2_do(5 downto 4) & bg_graphx1_do(5 downto 4); @@ -586,35 +672,38 @@ begin when others => bg_palette_addr <= bg_attr(4 downto 3) & bg_graphx2_do(1 downto 0) & bg_graphx1_do(1 downto 0); end case; end if; - end if; - end if; end process; - + --------------------------- -- mux char/sprite video -- --------------------------- palette_we <= '1' when cpu_mreq_n = '0' and cpu_wr_n = '0' and cpu_addr(15 downto 7) = X"FF"&'1' else '0'; -- 0xFF80-FFFF -palette_addr <= cpu_addr(6 downto 1) when palette_we = '1' else bg_palette_addr when sp_vid(2 downto 0) = "000" else bg_attr(7 downto 6) & sp_vid; +palette_addr <= cpu_addr(6 downto 1) when palette_we = '1' else bg_palette_addr when sp_vid(2 downto 0) = "000" else not sp_col(1 downto 0) & sp_vid; process (clock_vid) begin if rising_edge(clock_vid) then - video_g <= palette_do(2 downto 0); - video_b <= palette_do(5 downto 3); - video_r <= palette_do(8 downto 6); + if bg_palette_addr(5 downto 4) = "11" then + video_g <= palette_do(2 downto 1) & '1'; + video_b <= palette_do(5 downto 4) & '1'; + video_r <= palette_do(8 downto 7) & '1'; + else + video_g <= palette_do(2 downto 0); + video_b <= palette_do(5 downto 3); + video_r <= palette_do(8 downto 6); + end if; end if; end process; - + ------------------------------ -- components & sound board -- ------------------------------ -- microprocessor Z80 cpu : entity work.T80se -generic map(Mode => 0, T2Write => 1, IOWait => 1) port map( RESET_n => reset_n, CLK_n => clock_vid, @@ -636,96 +725,32 @@ port map( DO => cpu_do ); --- CTC interrupt controler Z80-CTC (MK3882) -ctc_controler : entity work.ctc_controler -port map( - clock => clock_vid, - clock_ena => cpu_ena, - reset => reset, - - d_in => cpu_do, - load_data => ctc_controler_we, - int_ack => ctc_int_ack, - - int_pulse_0 => ctc_counter_0_int, - int_pulse_1 => ctc_counter_1_int, - int_pulse_2 => ctc_counter_2_int, - int_pulse_3 => ctc_counter_3_int, - - d_out => ctc_controler_do, - int_n => cpu_irq_n +-- Z80-CTC (MK3882) +z80ctc : entity work.z80ctc_top +port map ( + clock => clock_vid, + clock_ena => cpu_ena, + reset => reset, + din => cpu_do, + cpu_din => cpu_di, + dout => ctc_do, + ce_n => not ctc_ce, + cs => cpu_addr(1 downto 0), + m1_n => cpu_m1_n, + iorq_n => cpu_ioreq_n, + rd_n => cpu_rd_n, + int_n => cpu_irq_n, + trg0 => '0', + to0 => ctc_counter_1_trg, + trg1 => ctc_counter_1_trg, + to1 => open, + trg2 => '0', + to2 => open, + trg3 => ctc_counter_3_trg ); -ctc_counter_0 : entity work.ctc_counter -port map( - clock => clock_vid, - clock_ena => cpu_ena, - reset => reset, - - d_in => cpu_do, - load_data => ctc_counter_0_we, - - clk_trg => '0', - - d_out => ctc_counter_0_do, - zc_to => open, -- zc/to #0 (pin 7) connected to clk_trg #1 (pin 22) on schematics (seems to be not used) - int_pulse => ctc_counter_0_int - -); - -ctc_counter_1 : entity work.ctc_counter -port map( - clock => clock_vid, - clock_ena => cpu_ena, - reset => reset, - - d_in => cpu_do, - load_data => ctc_counter_1_we, - - clk_trg => '0', - - d_out => ctc_counter_1_do, - zc_to => open, - int_pulse => ctc_counter_1_int - -); - -ctc_counter_2 : entity work.ctc_counter -port map( - clock => clock_vid, - clock_ena => cpu_ena, - reset => reset, - - d_in => cpu_do, - load_data => ctc_counter_2_we, - - clk_trg => '0', - - d_out => ctc_counter_2_do, - zc_to => open, - int_pulse => ctc_counter_2_int - -); - -ctc_counter_3 : entity work.ctc_counter -port map( - clock => clock_vid, - clock_ena => cpu_ena, - reset => reset, - - d_in => cpu_do, - load_data => ctc_counter_3_we, - - clk_trg => ctc_counter_3_trg, - - d_out => ctc_counter_3_do, - zc_to => open, - int_pulse => ctc_counter_3_int - -); - --- cpu program ROM 0x0000-0x9FFF cpu_rom_addr <= cpu_addr(15 downto 0); +cpu_rom_rd <= '1' when cpu_mreq_n = '0' and cpu_rd_n = '0' and cpu_addr(15 downto 12) < X"C" else '0'; -- working RAM 0xC000-0xC7FF + mirroring adresses wram : entity work.cmos_ram @@ -760,7 +785,7 @@ port map( q => sp_ram_do ); --- sprite RAM 0xE000-0xE1FF + mirroring adresses +-- sprite RAM 0xE800-0xE9FF + mirroring adresses sprites_ram_cache : entity work.gen_ram generic map( dWidth => 8, aWidth => 9) port map( @@ -816,20 +841,32 @@ port map( ); -- background graphics ROM G3 -bg_graphics_1 : entity work.journey_bg_bits_1 +bg_graphics_1 : entity work.dpram +generic map( dWidth => 8, aWidth => 13) port map( - clk => clock_vidn, - addr => bg_code_line, - data => bg_graphx1_do + clk_a => clock_vidn, + addr_a => bg_code_line, + q_a => bg_graphx1_do, + clk_b => clock_vid, + addr_b => dl_addr(12 downto 0), + we_b => bg_graphics_1_we, + d_b => dl_data ); +bg_graphics_1_we <= '1' when dl_wr = '1' and dl_addr(16 downto 13) = "0111" else '0'; -- 0E000-0FFFF -- background graphics ROM G4 -bg_graphics_2 : entity work.journey_bg_bits_2 +bg_graphics_2 : entity work.dpram +generic map( dWidth => 8, aWidth => 13) port map( - clk => clock_vidn, - addr => bg_code_line, - data => bg_graphx2_do + clk_a => clock_vidn, + addr_a => bg_code_line, + q_a => bg_graphx2_do, + clk_b => clock_vid, + addr_b => dl_addr(12 downto 0), + we_b => bg_graphics_2_we, + d_b => dl_data ); +bg_graphics_2_we <= '1' when dl_wr = '1' and dl_addr(16 downto 13) = "1000" else '0'; -- 10000-11FFF --satans_hollow_sound_board sound_board : entity work.satans_hollow_sound_board @@ -847,10 +884,12 @@ port map( input_1 => input_1, input_2 => input_2, input_3 => input_3, - input_4 => input_4, + input_4 => input_4, + separate_audio => separate_audio, audio_out_l => audio_out_l, audio_out_r => audio_out_r, + cpu_rom_addr => snd_rom_addr, cpu_rom_do => snd_rom_do ); diff --git a/Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/pll_mist.qip b/Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/pll_mist.qip deleted file mode 100644 index d4720390..00000000 --- a/Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/pll_mist.qip +++ /dev/null @@ -1,4 +0,0 @@ -set_global_assignment -name IP_TOOL_NAME "ALTPLL" -set_global_assignment -name IP_TOOL_VERSION "13.1" -set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "pll_mist.vhd"] -set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "pll_mist.ppf"] diff --git a/Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/rom/journey_bg_bits_1.vhd b/Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/rom/journey_bg_bits_1.vhd deleted file mode 100644 index 9297857d..00000000 --- a/Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/rom/journey_bg_bits_1.vhd +++ /dev/null @@ -1,534 +0,0 @@ -library ieee; -use ieee.std_logic_1164.all,ieee.numeric_std.all; - -entity journey_bg_bits_1 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 journey_bg_bits_1 is - type rom is array(0 to 8191) of std_logic_vector(7 downto 0); - signal rom_data: rom := ( - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"F0",X"15",X"BC",X"15",X"AC",X"15",X"AC",X"15",X"AB",X"15",X"FF",X"D5",X"FF",X"D5",X"55",X"D5", - X"00",X"15",X"00",X"15",X"00",X"15",X"00",X"15",X"00",X"15",X"C0",X"15",X"C0",X"15",X"F0",X"15", - X"00",X"15",X"00",X"15",X"00",X"15",X"00",X"15",X"00",X"15",X"00",X"15",X"00",X"15",X"00",X"15", - X"00",X"05",X"00",X"05",X"00",X"05",X"00",X"05",X"00",X"05",X"00",X"05",X"00",X"15",X"00",X"15", - X"00",X"01",X"00",X"01",X"00",X"01",X"00",X"01",X"00",X"01",X"00",X"01",X"00",X"01",X"00",X"01", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"FF",X"5F",X"FF",X"57",X"FF",X"7F",X"FD", - X"FD",X"FF",X"FD",X"FF",X"FD",X"FF",X"FD",X"FF",X"FD",X"FF",X"FD",X"FF",X"FD",X"FF",X"FD",X"FF", - X"D7",X"DF",X"DF",X"DF",X"DF",X"FF",X"FF",X"FF",X"FD",X"FF",X"FD",X"FF",X"FD",X"FF",X"FD",X"FF", - X"FA",X"AA",X"FA",X"AA",X"FA",X"AA",X"FA",X"AA",X"FA",X"AB",X"FA",X"BF",X"FA",X"FF",X"FF",X"D5", - X"FA",X"B0",X"FA",X"BC",X"FA",X"BC",X"FA",X"AF",X"FA",X"AF",X"FA",X"AB",X"FA",X"AB",X"FA",X"AA", - X"B0",X"00",X"BC",X"00",X"BC",X"00",X"BF",X"00",X"BF",X"00",X"BF",X"C0",X"FA",X"C0",X"FA",X"F0", - X"F0",X"00",X"C0",X"00",X"80",X"00",X"80",X"00",X"80",X"00",X"80",X"00",X"80",X"00",X"B0",X"00", - X"C0",X"00",X"C0",X"00",X"C0",X"00",X"C0",X"00",X"C0",X"00",X"F0",X"00",X"F0",X"00",X"F0",X"00", - X"C0",X"00",X"C0",X"00",X"C0",X"00",X"C0",X"00",X"C0",X"00",X"C0",X"00",X"C0",X"00",X"C0",X"00", - X"F1",X"D5",X"F1",X"50",X"F1",X"00",X"F0",X"00",X"F0",X"00",X"F0",X"00",X"F0",X"00",X"F0",X"00", - X"F1",X"DD",X"F1",X"DD",X"F1",X"DD",X"F1",X"DD",X"F1",X"DD",X"F1",X"DD",X"F1",X"D5",X"F1",X"D5", - X"AA",X"FF",X"A7",X"FF",X"BF",X"FF",X"FD",X"FF",X"7F",X"FF",X"FF",X"DF",X"FF",X"57",X"F5",X"55", - X"FE",X"AA",X"FA",X"AA",X"EA",X"AB",X"6A",X"AB",X"AA",X"AF",X"AA",X"AF",X"AA",X"BF",X"AA",X"BF", - X"55",X"AA",X"75",X"AA",X"F5",X"AA",X"F5",X"AA",X"F5",X"AA",X"D5",X"AA",X"56",X"AA",X"56",X"AA", - X"F7",X"FF",X"55",X"FF",X"55",X"AA",X"01",X"AA",X"01",X"AA",X"01",X"AA",X"05",X"AA",X"15",X"AA", - X"F5",X"57",X"FD",X"55",X"FD",X"55",X"FD",X"55",X"FD",X"57",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"5F",X"FF",X"57",X"FF",X"57",X"FF",X"55",X"FF",X"D5",X"7F",X"D5",X"7F",X"F5",X"5F",X"F5",X"5F", - X"FF",X"FD",X"FF",X"FD",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"FF",X"7F",X"FF",X"5F",X"FF", - X"DF",X"7D",X"DF",X"7D",X"FF",X"7D",X"FF",X"7D",X"FF",X"7D",X"FF",X"FD",X"FF",X"FD",X"FF",X"FD", - X"DF",X"7D",X"DF",X"7D",X"DF",X"7D",X"DF",X"7D",X"DF",X"7D",X"DF",X"7D",X"DF",X"7D",X"DF",X"7D", - X"FF",X"FF",X"FF",X"FF",X"7F",X"FF",X"55",X"4F",X"55",X"0D",X"00",X"0D",X"00",X"3D",X"C0",X"7D", - X"FD",X"DA",X"7F",X"FA",X"7F",X"FE",X"7F",X"DF",X"5F",X"FD",X"D7",X"FF",X"FF",X"FF",X"FF",X"FF", - X"F5",X"FF",X"D7",X"FF",X"1F",X"FF",X"0F",X"55",X"0D",X"55",X"05",X"7E",X"F5",X"FA",X"F5",X"DA", - X"00",X"00",X"00",X"01",X"00",X"05",X"01",X"55",X"55",X"55",X"FF",X"FF",X"FF",X"55",X"FD",X"55", - X"FF",X"FF",X"FF",X"FF",X"5F",X"F5",X"55",X"55",X"50",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"AA",X"FF",X"AB",X"FF",X"AF",X"FF",X"BF",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"FF",X"FF",X"FF",X"FD",X"FF",X"A9",X"FF",X"A9",X"FE",X"AF",X"FA",X"AF",X"EA",X"BF",X"AA",X"BF", - X"FD",X"5F",X"FD",X"57",X"FF",X"57",X"FF",X"D5",X"FF",X"D5",X"FF",X"F5",X"FF",X"F5",X"FF",X"F5", - X"57",X"FF",X"57",X"FF",X"D7",X"FF",X"15",X"FF",X"15",X"FF",X"D5",X"7F",X"F5",X"7F",X"FD",X"5F", - X"FF",X"F7",X"FF",X"F7",X"FF",X"F7",X"FF",X"F7",X"7F",X"F7",X"7F",X"FF",X"5F",X"FF",X"5F",X"FF", - X"7D",X"47",X"FD",X"05",X"FD",X"05",X"FD",X"01",X"FD",X"C0",X"FD",X"F0",X"FD",X"F4",X"FD",X"F7", - X"FF",X"FF",X"FF",X"FD",X"FF",X"F5",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"AF",X"55",X"AF",X"55",X"AF",X"55",X"A5",X"55",X"57",X"FD",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"00",X"03",X"00",X"00",X"00",X"00",X"2F",X"00",X"AF",X"C0",X"AF",X"FC",X"AF",X"FF",X"AF",X"D5", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"55",X"55",X"FF",X"FF",X"C0",X"3F",X"00",X"0F", - X"BF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"D5",X"FD",X"55",X"55",X"50",X"50",X"00",X"00",X"00", - X"FF",X"FA",X"FF",X"EA",X"FF",X"AA",X"FA",X"AA",X"EA",X"AA",X"AA",X"AA",X"AA",X"BF",X"AB",X"FF", - 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"03",X"00",X"0F", - X"00",X"D7",X"00",X"17",X"00",X"15",X"00",X"15",X"00",X"05",X"00",X"0D",X"00",X"01",X"00",X"01", - X"01",X"FF",X"01",X"FF",X"01",X"7F",X"01",X"7F",X"01",X"7F",X"03",X"5F",X"00",X"5F",X"00",X"5F", - X"FF",X"FF",X"0F",X"FF",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"0A",X"AA",X"28",X"02",X"20",X"02",X"20",X"02",X"20",X"02",X"22",X"AA",X"22",X"AA",X"00",X"00", - X"00",X"00",X"00",X"02",X"2A",X"AA",X"2A",X"AA",X"20",X"02",X"00",X"00",X"00",X"00",X"00",X"00", - X"22",X"82",X"22",X"82",X"20",X"82",X"20",X"82",X"20",X"82",X"20",X"AA",X"20",X"AA",X"00",X"00", - X"22",X"AA",X"20",X"82",X"20",X"82",X"20",X"82",X"20",X"02",X"20",X"0A",X"20",X"0A",X"00",X"00", - X"00",X"80",X"2A",X"AA",X"00",X"80",X"00",X"80",X"00",X"80",X"0A",X"80",X"0A",X"80",X"00",X"00", - X"20",X"AA",X"20",X"82",X"20",X"82",X"20",X"82",X"20",X"82",X"22",X"8A",X"22",X"8A",X"00",X"00", - X"20",X"AA",X"20",X"82",X"20",X"82",X"20",X"82",X"20",X"82",X"22",X"AA",X"22",X"AA",X"00",X"00", - X"28",X"00",X"22",X"00",X"22",X"80",X"20",X"AA",X"20",X"2A",X"20",X"00",X"20",X"00",X"00",X"00", - X"2A",X"AA",X"20",X"82",X"20",X"82",X"20",X"82",X"20",X"82",X"22",X"AA",X"22",X"AA",X"00",X"00", - X"2A",X"AA",X"2A",X"AA",X"20",X"80",X"20",X"80",X"20",X"80",X"20",X"80",X"22",X"80",X"00",X"00", - X"FF",X"F5",X"FF",X"F5",X"FF",X"F5",X"FF",X"F5",X"FF",X"F5",X"FF",X"F5",X"FF",X"F7",X"FF",X"CF", - X"F5",X"40",X"F4",X"00",X"F0",X"00",X"C0",X"00",X"00",X"01",X"00",X"15",X"03",X"D5",X"0F",X"D5", - X"55",X"44",X"55",X"50",X"D5",X"40",X"D5",X"40",X"D5",X"55",X"F5",X"5F",X"F5",X"5F",X"F5",X"5C", - X"AA",X"AA",X"AA",X"AB",X"AA",X"BF",X"AF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"D5",X"55",X"55", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FA",X"FE",X"AA",X"EA",X"AA", - X"00",X"3F",X"0F",X"FF",X"3F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"57",X"FF",X"55",X"7F",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"2A",X"AA",X"2A",X"AA",X"20",X"80",X"20",X"80",X"20",X"80",X"22",X"AA",X"22",X"AA",X"00",X"00", - X"2A",X"2A",X"22",X"A2",X"20",X"82",X"20",X"82",X"20",X"82",X"22",X"AA",X"22",X"AA",X"00",X"00", - X"20",X"0A",X"20",X"0A",X"20",X"0A",X"20",X"0A",X"20",X"0A",X"22",X"AA",X"22",X"A8",X"00",X"00", - X"0A",X"A8",X"28",X"0A",X"20",X"02",X"20",X"02",X"20",X"02",X"22",X"AA",X"22",X"AA",X"00",X"00", - X"20",X"02",X"20",X"02",X"20",X"82",X"20",X"82",X"20",X"82",X"22",X"AA",X"22",X"AA",X"00",X"00", - X"20",X"00",X"20",X"00",X"20",X"80",X"20",X"80",X"20",X"80",X"22",X"AA",X"22",X"AA",X"00",X"00", - X"20",X"AA",X"20",X"82",X"20",X"82",X"20",X"02",X"20",X"02",X"22",X"AA",X"22",X"A8",X"00",X"00", - X"2A",X"AA",X"00",X"80",X"00",X"80",X"00",X"80",X"00",X"80",X"0A",X"AA",X"0A",X"AA",X"00",X"00", - X"00",X"00",X"00",X"00",X"20",X"02",X"2A",X"AA",X"2A",X"AA",X"20",X"02",X"00",X"00",X"00",X"00", - X"00",X"00",X"0A",X"AA",X"0A",X"AA",X"00",X"02",X"00",X"02",X"00",X"0A",X"00",X"0A",X"00",X"00", - X"28",X"02",X"0A",X"0A",X"02",X"A8",X"00",X"A0",X"00",X"20",X"0A",X"AA",X"0A",X"AA",X"00",X"00", - X"00",X"0A",X"00",X"0A",X"00",X"02",X"00",X"02",X"00",X"02",X"0A",X"AA",X"0A",X"AA",X"00",X"00", - X"2A",X"AA",X"0A",X"00",X"02",X"A0",X"02",X"A0",X"0A",X"00",X"2A",X"AA",X"2A",X"AA",X"00",X"00", - X"2A",X"AA",X"00",X"2A",X"02",X"A0",X"2A",X"00",X"20",X"00",X"22",X"AA",X"22",X"AA",X"00",X"00", - X"2A",X"AA",X"20",X"02",X"20",X"02",X"20",X"02",X"20",X"02",X"22",X"AA",X"22",X"AA",X"00",X"00", - X"2A",X"80",X"20",X"80",X"20",X"80",X"20",X"80",X"20",X"80",X"22",X"AA",X"22",X"AA",X"00",X"00", - X"2A",X"AA",X"20",X"28",X"20",X"2A",X"20",X"02",X"20",X"02",X"22",X"AA",X"22",X"AA",X"00",X"00", - X"2A",X"8A",X"20",X"AA",X"20",X"A0",X"20",X"80",X"20",X"80",X"22",X"AA",X"22",X"AA",X"00",X"00", - X"20",X"AA",X"20",X"AA",X"20",X"82",X"20",X"82",X"20",X"82",X"22",X"8A",X"22",X"8A",X"00",X"00", - X"00",X"00",X"20",X"00",X"20",X"00",X"2A",X"AA",X"2A",X"AA",X"20",X"00",X"20",X"00",X"00",X"00", - X"2A",X"AA",X"00",X"02",X"00",X"02",X"00",X"02",X"00",X"02",X"0A",X"AA",X"0A",X"AA",X"00",X"00", - X"2A",X"A0",X"00",X"28",X"00",X"0A",X"00",X"2A",X"00",X"A8",X"0A",X"A0",X"0A",X"80",X"00",X"00", - X"2A",X"AA",X"00",X"28",X"02",X"A0",X"02",X"A0",X"00",X"28",X"0A",X"AA",X"0A",X"AA",X"00",X"00", - X"28",X"0A",X"0A",X"28",X"02",X"A0",X"00",X"80",X"02",X"A0",X"0A",X"28",X"00",X"0A",X"00",X"00", - X"28",X"00",X"0A",X"00",X"02",X"80",X"00",X"AA",X"02",X"AA",X"0A",X"80",X"0A",X"00",X"00",X"00", - X"20",X"02",X"22",X"02",X"22",X"82",X"20",X"82",X"20",X"A2",X"20",X"2A",X"20",X"0A",X"00",X"00", - X"FC",X"00",X"F0",X"0F",X"C0",X"3F",X"00",X"FF",X"0F",X"FF",X"1F",X"FF",X"5F",X"FF",X"5F",X"FF", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"F0",X"FF",X"C0",X"FF",X"00", - X"FF",X"55",X"55",X"55",X"55",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"FF",X"FF",X"FF",X"EA",X"FA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"BF",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"3F",X"0F",X"FF",X"FF",X"FF",X"FF",X"FF", - X"54",X"00",X"50",X"00",X"40",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"55",X"50",X"55",X"50",X"55",X"50",X"55",X"50",X"55",X"50",X"55",X"40",X"55",X"40",X"55",X"00", - X"00",X"00",X"00",X"00",X"55",X"00",X"55",X"40",X"55",X"40",X"55",X"50",X"55",X"50",X"55",X"50", - X"FF",X"F0",X"FF",X"F0",X"FF",X"F0",X"FF",X"F0",X"FF",X"F0",X"FF",X"C0",X"3F",X"C0",X"03",X"C0", - X"FF",X"01",X"FF",X"D5",X"FF",X"D5",X"FD",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FC",X"FF",X"F0",X"FF",X"C0",X"FF",X"C1", - X"FF",X"FF",X"FF",X"FD",X"FD",X"55",X"55",X"57",X"57",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"AA",X"AA",X"AA",X"AA",X"AA",X"AB",X"FF", - X"FE",X"00",X"FA",X"00",X"F8",X"00",X"E8",X"00",X"A0",X"00",X"80",X"00",X"00",X"0F",X"FF",X"FF", - X"BF",X"F9",X"BF",X"F9",X"BF",X"E9",X"EF",X"E5",X"FF",X"E4",X"FF",X"A0",X"FF",X"80",X"FE",X"80", - X"FE",X"95",X"FF",X"95",X"FF",X"95",X"BF",X"A5",X"BF",X"E5",X"BF",X"E5",X"BF",X"E5",X"BF",X"E9", - X"00",X"00",X"00",X"00",X"95",X"55",X"A5",X"55",X"E9",X"55",X"F9",X"55",X"FA",X"55",X"FE",X"55", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"F0",X"00",X"00",X"00", - X"55",X"FF",X"55",X"7F",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"FF",X"5F",X"FF",X"57",X"FF", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"D5",X"55",X"55",X"55",X"55",X"5F",X"5F",X"FF",X"5F",X"FF", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"FF",X"FE",X"FF",X"FF", - X"FE",X"FE",X"BF",X"FA",X"BF",X"EA",X"AA",X"AA",X"AA",X"AB",X"FA",X"AF",X"BF",X"FF",X"BF",X"FF", - X"EA",X"AF",X"AA",X"AB",X"AF",X"EA",X"BF",X"FA",X"BF",X"FE",X"BE",X"FE",X"FB",X"BE",X"FB",X"BE", - X"FF",X"FA",X"FF",X"FE",X"FF",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"F0", - X"FD",X"55",X"D5",X"55",X"55",X"7F",X"55",X"FF",X"57",X"FF",X"57",X"FF",X"57",X"FF",X"55",X"FF", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"AA",X"AA", - X"3F",X"FE",X"FF",X"FE",X"FF",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"03",X"FF",X"03",X"FF",X"03",X"FF",X"0F",X"FF",X"0F",X"FE",X"0F",X"FE",X"3F",X"FE",X"3F",X"FE", - X"00",X"0F",X"00",X"0F",X"00",X"3F",X"00",X"3F",X"00",X"3F",X"00",X"3F",X"00",X"FF",X"00",X"FF", - X"00",X"0F",X"00",X"0F",X"00",X"0F",X"00",X"0F",X"00",X"0F",X"00",X"0F",X"00",X"0F",X"00",X"0F", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FD",X"FF",X"D5",X"F5",X"55",X"D5",X"55",X"55",X"7F",X"FF",X"F5", - X"BF",X"FF",X"BF",X"FF",X"AB",X"FF",X"AA",X"FF",X"AA",X"BF",X"AA",X"AF",X"AA",X"AA",X"AA",X"AA", - X"00",X"3F",X"00",X"FF",X"03",X"FF",X"0F",X"FF",X"3F",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"03",X"00",X"03",X"00",X"0F",X"00",X"0F",X"00",X"3F", - X"15",X"40",X"55",X"40",X"55",X"40",X"55",X"00",X"55",X"00",X"54",X"00",X"54",X"00",X"54",X"00", - X"00",X"54",X"01",X"54",X"01",X"50",X"01",X"50",X"01",X"50",X"01",X"50",X"05",X"50",X"15",X"50", - X"FF",X"FF",X"55",X"5F",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FD",X"FF",X"F5", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"00",X"FF",X"03",X"FF",X"2B",X"FF",X"2A",X"FF",X"AA",X"BF",X"AA",X"AF",X"AA",X"AB",X"AA",X"AA", - X"55",X"40",X"55",X"00",X"54",X"00",X"50",X"00",X"40",X"00",X"00",X"00",X"00",X"03",X"00",X"0F", - X"40",X"00",X"50",X"00",X"50",X"00",X"55",X"00",X"55",X"00",X"55",X"40",X"55",X"50",X"55",X"54", - X"01",X"55",X"00",X"55",X"00",X"55",X"00",X"15",X"00",X"15",X"00",X"05",X"00",X"01",X"00",X"00", - X"15",X"40",X"15",X"40",X"15",X"50",X"05",X"50",X"05",X"50",X"05",X"54",X"05",X"54",X"01",X"55", - X"55",X"00",X"55",X"00",X"55",X"00",X"55",X"00",X"55",X"00",X"55",X"00",X"55",X"00",X"15",X"00", - X"FF",X"FF",X"FF",X"FF",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"FF",X"FA",X"AA",X"AA", - X"15",X"55",X"05",X"55",X"00",X"55",X"00",X"15",X"00",X"01",X"00",X"00",X"00",X"00",X"00",X"00", - X"40",X"01",X"40",X"00",X"50",X"00",X"54",X"00",X"55",X"00",X"55",X"40",X"55",X"50",X"55",X"55", - X"15",X"56",X"05",X"55",X"05",X"55",X"01",X"55",X"01",X"55",X"00",X"55",X"00",X"15",X"00",X"05", - X"55",X"6A",X"55",X"6A",X"55",X"6A",X"55",X"6A",X"55",X"6A",X"15",X"6A",X"15",X"5A",X"15",X"5A", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"05",X"55",X"00",X"00",X"00",X"00", - X"55",X"55",X"15",X"55",X"01",X"55",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"AA",X"FF",X"AA",X"AA",X"6A",X"AA",X"5A",X"AA",X"55",X"AA",X"55",X"55",X"55",X"55",X"55",X"55", - X"FA",X"FF",X"FA",X"FF",X"FE",X"BF",X"FE",X"BF",X"BF",X"AF",X"BF",X"AA",X"AF",X"EA",X"AB",X"FF", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"57",X"FF",X"55",X"7F", - X"FA",X"AA",X"FF",X"AA",X"FF",X"FA",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"55",X"55",X"55",X"55",X"05",X"55",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"FF",X"7F",X"FF",X"5F",X"FF",X"55",X"FF",X"55",X"55",X"55",X"55",X"55",X"55", - X"AA",X"AA",X"AA",X"AA",X"EA",X"AA",X"FE",X"AA",X"FF",X"AA",X"FF",X"EA",X"FF",X"FA",X"FF",X"FF", - X"01",X"55",X"00",X"15",X"00",X"00",X"00",X"00",X"00",X"00",X"A0",X"00",X"AA",X"00",X"AA",X"A0", - X"40",X"00",X"50",X"00",X"55",X"00",X"55",X"54",X"55",X"55",X"55",X"55",X"55",X"55",X"15",X"55", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"FF",X"57",X"FF",X"55",X"FF",X"55",X"7F", - X"FF",X"FA",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"A8",X"00",X"AA",X"00",X"AA",X"A0",X"EA",X"A8",X"FA",X"AA",X"FE",X"AA",X"FF",X"AA",X"FF",X"EA", - X"55",X"55",X"15",X"55",X"05",X"55",X"01",X"55",X"00",X"55",X"00",X"15",X"00",X"01",X"A0",X"00", - X"55",X"7F",X"55",X"5F",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"FF",X"FF",X"FF",X"FF",X"7F",X"FF",X"7F",X"FF",X"5F",X"FF",X"5F",X"FF",X"55",X"FF",X"55",X"7F", - X"E8",X"00",X"EA",X"00",X"FA",X"80",X"FA",X"A0",X"FE",X"A0",X"FF",X"A8",X"FF",X"AA",X"FF",X"EA", - X"01",X"55",X"01",X"55",X"00",X"55",X"00",X"55",X"80",X"15",X"80",X"05",X"A0",X"05",X"A0",X"01", - X"55",X"40",X"55",X"40",X"55",X"50",X"55",X"50",X"55",X"54",X"15",X"54",X"15",X"55",X"05",X"55", - X"50",X"00",X"50",X"00",X"54",X"00",X"54",X"00",X"54",X"00",X"55",X"00",X"55",X"00",X"55",X"40", - X"50",X"00",X"50",X"00",X"50",X"00",X"50",X"00",X"50",X"00",X"50",X"00",X"50",X"00",X"50",X"00", - X"57",X"FF",X"57",X"FF",X"55",X"FF",X"55",X"FF",X"55",X"7F",X"55",X"7F",X"55",X"5F",X"55",X"5F", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"FF",X"7F",X"FF",X"7F",X"FF",X"5F",X"FF", - X"FF",X"F8",X"FF",X"F8",X"FF",X"FA",X"FF",X"FA",X"FF",X"FE",X"FF",X"FE",X"FF",X"FF",X"FF",X"FF", - X"FF",X"81",X"FF",X"81",X"FF",X"E1",X"FF",X"E0",X"FF",X"E0",X"FF",X"E0",X"FF",X"E0",X"FF",X"E8", - X"FC",X"15",X"FF",X"15",X"FF",X"15",X"FF",X"15",X"FF",X"05",X"FF",X"85",X"FF",X"85",X"FF",X"81", - X"F0",X"15",X"FC",X"15",X"FC",X"15",X"FC",X"15",X"FC",X"15",X"FC",X"15",X"FC",X"15",X"FC",X"15", - X"55",X"57",X"55",X"57",X"55",X"57",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"55",X"7F",X"55",X"7F",X"55",X"7F",X"55",X"7F",X"55",X"5F",X"55",X"5F",X"55",X"5F",X"55",X"5F", - X"55",X"FF",X"55",X"FF",X"55",X"FF",X"55",X"FF",X"55",X"FF",X"55",X"FF",X"55",X"7F",X"55",X"7F", - X"57",X"FF",X"57",X"FF",X"57",X"FF",X"57",X"FF",X"57",X"FF",X"57",X"FF",X"57",X"FF",X"57",X"FF", - X"5F",X"FF",X"5F",X"FF",X"5F",X"FF",X"5F",X"FF",X"5F",X"FF",X"5F",X"FF",X"5F",X"FF",X"5F",X"FF", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"FF",X"FF",X"FF",X"FF",X"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"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"FF",X"FF",X"FF",X"FF",X"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"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"FF",X"FF",X"FF",X"FF",X"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"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"2A",X"A8",X"A0",X"0A",X"88",X"22",X"88",X"22",X"88",X"22",X"8A",X"A2",X"A0",X"0A",X"2A",X"A8", - X"5A",X"AA",X"DA",X"AA",X"DA",X"AA",X"DA",X"AA",X"FA",X"AA",X"FA",X"AA",X"FA",X"EA",X"FA",X"AA", - X"5A",X"AA",X"5A",X"AA",X"5A",X"AA",X"5A",X"AA",X"5A",X"AA",X"5A",X"AA",X"5A",X"AA",X"5A",X"AA", - X"6A",X"AA",X"6A",X"AA",X"6A",X"AA",X"6A",X"AA",X"5A",X"AA",X"5A",X"AA",X"5A",X"AA",X"5A",X"AA", - X"6A",X"AA",X"6A",X"AA",X"6A",X"AA",X"6A",X"AA",X"6A",X"AA",X"6A",X"AA",X"6A",X"AA",X"6A",X"AA", - X"FF",X"F5",X"FF",X"F5",X"FF",X"FD",X"FF",X"FD",X"FF",X"FD",X"FF",X"FD",X"FF",X"FF",X"FF",X"FF", - X"FF",X"55",X"FF",X"55",X"FF",X"55",X"FF",X"D5",X"FF",X"D5",X"FF",X"D5",X"FF",X"D5",X"FF",X"F5", - X"F5",X"55",X"F5",X"55",X"F5",X"55",X"F5",X"55",X"FD",X"55",X"FD",X"55",X"FD",X"55",X"FD",X"55", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"D5",X"55",X"D5",X"55",X"D5",X"55", - X"FF",X"D5",X"FF",X"D5",X"FF",X"D5",X"FF",X"D5",X"FF",X"D5",X"FF",X"D5",X"FF",X"D5",X"FF",X"D5", - X"FF",X"55",X"FF",X"55",X"FF",X"55",X"FF",X"55",X"FF",X"55",X"FF",X"55",X"FF",X"55",X"FF",X"55", - X"FD",X"55",X"FD",X"55",X"FD",X"55",X"FD",X"55",X"FD",X"55",X"FD",X"55",X"FD",X"55",X"FD",X"55", - X"FF",X"15",X"FF",X"D5",X"FF",X"D5",X"FF",X"55",X"FF",X"55",X"FF",X"55",X"FF",X"55",X"FF",X"55", - X"FF",X"F5",X"FF",X"F5",X"FF",X"F5",X"FF",X"D5",X"FF",X"D5",X"FF",X"D5",X"FF",X"D5",X"FF",X"D5", - X"F5",X"55",X"F5",X"55",X"F5",X"55",X"D5",X"55",X"D5",X"55",X"D5",X"55",X"D5",X"55",X"D5",X"55", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FD",X"FF",X"FD",X"FF",X"FD", - X"55",X"55",X"55",X"56",X"55",X"5A",X"55",X"6A",X"55",X"6A",X"55",X"AA",X"55",X"AA",X"56",X"AA", - X"56",X"AA",X"5A",X"AA",X"5A",X"AA",X"5A",X"AA",X"5A",X"AA",X"5A",X"AA",X"6A",X"AA",X"6A",X"AA", - X"55",X"6A",X"55",X"6A",X"55",X"AA",X"55",X"AA",X"55",X"AA",X"55",X"AA",X"56",X"AA",X"56",X"AA", - X"55",X"5A",X"55",X"5A",X"55",X"5A",X"55",X"6A",X"55",X"6A",X"55",X"6A",X"55",X"6A",X"55",X"6A", - X"55",X"56",X"55",X"56",X"55",X"5A",X"55",X"5A",X"55",X"5A",X"55",X"5A",X"55",X"5A",X"55",X"5A", - X"55",X"56",X"55",X"56",X"55",X"56",X"55",X"56",X"55",X"56",X"55",X"56",X"55",X"56",X"55",X"56", - X"55",X"55",X"59",X"55",X"59",X"55",X"59",X"55",X"59",X"55",X"59",X"55",X"59",X"55",X"59",X"55", - X"AA",X"55",X"AA",X"95",X"AA",X"95",X"AA",X"95",X"AA",X"95",X"AA",X"95",X"AA",X"95",X"AA",X"A6", - X"95",X"56",X"95",X"56",X"95",X"56",X"95",X"5A",X"95",X"5A",X"94",X"5A",X"95",X"5A",X"95",X"5A", - X"95",X"6A",X"95",X"6A",X"95",X"6A",X"95",X"6A",X"95",X"6A",X"95",X"6A",X"95",X"6A",X"95",X"6A", - X"95",X"AA",X"95",X"AA",X"95",X"AA",X"95",X"AA",X"95",X"AA",X"95",X"AA",X"95",X"AA",X"95",X"AA", - X"96",X"AA",X"96",X"AA",X"A6",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"00",X"00",X"C0",X"00",X"F0",X"00",X"FC",X"00",X"F0",X"00",X"FF",X"00",X"FF",X"C0",X"FF",X"FF", - X"00",X"03",X"00",X"0F",X"00",X"3F",X"00",X"0F",X"03",X"CF",X"0F",X"FF",X"3F",X"FF",X"FF",X"FF", - X"55",X"55",X"85",X"55",X"00",X"55",X"0C",X"95",X"00",X"05",X"00",X"C1",X"00",X"01",X"00",X"00", - X"D5",X"F7",X"F7",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"55",X"57",X"55",X"5F",X"55",X"7F",X"55",X"FF",X"55",X"7F",X"55",X"7F",X"57",X"FF",X"7F",X"FF", - X"FF",X"FF",X"7F",X"FF",X"5F",X"FF",X"57",X"FF",X"5F",X"FF",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF", - X"FF",X"FF",X"5F",X"FF",X"57",X"FF",X"5F",X"FF",X"7F",X"FF",X"FF",X"FF",X"7F",X"FF",X"7F",X"FF", - X"FF",X"FF",X"7F",X"FF",X"5F",X"FF",X"5F",X"FF",X"57",X"FF",X"55",X"FF",X"55",X"5F",X"55",X"57", - X"FF",X"FE",X"EF",X"E7",X"FF",X"BE",X"FD",X"FB",X"FA",X"EE",X"6F",X"6F",X"FE",X"FB",X"EF",X"AE", - X"55",X"7F",X"55",X"FF",X"55",X"FF",X"57",X"FF",X"5F",X"FF",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF", - X"57",X"FF",X"57",X"FF",X"57",X"FF",X"57",X"FF",X"57",X"FF",X"57",X"FF",X"57",X"FF",X"57",X"FF", - X"55",X"FF",X"55",X"FF",X"55",X"FF",X"55",X"FF",X"57",X"FF",X"57",X"FF",X"57",X"FF",X"57",X"FF", - X"55",X"5F",X"55",X"5F",X"55",X"5F",X"55",X"5F",X"55",X"5F",X"55",X"5F",X"55",X"7F",X"55",X"7F", - X"55",X"57",X"55",X"57",X"55",X"57",X"55",X"57",X"55",X"57",X"55",X"57",X"55",X"57",X"55",X"57", - X"55",X"5F",X"55",X"5F",X"55",X"57",X"55",X"57",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"55",X"5F",X"55",X"5F",X"55",X"7F",X"55",X"7F",X"55",X"7F",X"55",X"7F",X"55",X"7F",X"55",X"5F", - X"55",X"57",X"55",X"D7",X"55",X"57",X"55",X"57",X"55",X"5F",X"55",X"5F",X"55",X"5F",X"55",X"5F", - X"55",X"57",X"55",X"57",X"55",X"57",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"57",X"FF",X"55",X"FF",X"55",X"FF",X"55",X"7F",X"55",X"7F",X"55",X"5F",X"55",X"5F",X"55",X"57", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"FF",X"5F",X"FF", - X"55",X"7F",X"55",X"7F",X"55",X"7F",X"55",X"7F",X"55",X"7F",X"55",X"7F",X"55",X"7F",X"55",X"7F", - X"5F",X"FF",X"5F",X"FF",X"5F",X"FF",X"57",X"FF",X"57",X"FF",X"57",X"FF",X"57",X"FF",X"57",X"FF", - X"57",X"FF",X"5F",X"FF",X"5F",X"FF",X"7F",X"FF",X"7F",X"FF",X"5F",X"FF",X"5F",X"FF",X"5F",X"FF", - X"55",X"7F",X"55",X"7F",X"55",X"7F",X"55",X"7F",X"55",X"7F",X"55",X"7F",X"55",X"7F",X"55",X"7F", - X"55",X"5F",X"55",X"5F",X"55",X"5F",X"55",X"5F",X"55",X"5F",X"55",X"5F",X"55",X"5F",X"55",X"5F", - X"5F",X"FF",X"5F",X"FF",X"5F",X"FF",X"57",X"FF",X"57",X"FF",X"57",X"FF",X"55",X"FF",X"55",X"7F", - X"55",X"5F",X"55",X"5F",X"55",X"5F",X"55",X"5F",X"55",X"7F",X"55",X"7F",X"55",X"FF",X"55",X"FF", - X"FF",X"FF",X"FF",X"FF",X"3F",X"FF",X"3F",X"FF",X"3F",X"FF",X"3F",X"FF",X"3F",X"FF",X"3F",X"FF", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"CF",X"FF",X"CF",X"FF",X"FF",X"FF",X"7F",X"FF", - X"73",X"FF",X"73",X"FF",X"73",X"FF",X"7C",X"FF",X"5C",X"FF",X"5C",X"FF",X"5F",X"3F",X"57",X"3F", - X"57",X"0F",X"57",X"0F",X"57",X"CF",X"55",X"C3",X"55",X"F0",X"55",X"70",X"55",X"7C",X"55",X"5C", - X"55",X"5F",X"55",X"57",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"FF",X"FF",X"FE",X"FF",X"FF",X"FB",X"FC",X"FF",X"FF",X"BF",X"FF",X"2E",X"FF",X"FF",X"FD",X"D3", - X"FF",X"39",X"FF",X"FF",X"FE",X"F3",X"FF",X"FE",X"FF",X"FC",X"FF",X"FF",X"FF",X"EF",X"FF",X"FF", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"3F",X"FF",X"3F",X"FF", - X"0F",X"FF",X"CF",X"FF",X"F0",X"FF",X"70",X"3F",X"7C",X"0F",X"5F",X"03",X"57",X"C0",X"55",X"F0", - X"7F",X"FF",X"FF",X"FE",X"3F",X"BF",X"CD",X"F3",X"FC",X"FF",X"7B",X"7F",X"E3",X"CF",X"37",X"FD", - X"FF",X"1B",X"73",X"F1",X"FF",X"7F",X"FF",X"ED",X"FB",X"FF",X"FF",X"FB",X"FF",X"FF",X"FF",X"FF", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"BF", - X"ED",X"DC",X"FC",X"7F",X"DF",X"CF",X"3D",X"F7",X"F3",X"FF",X"DF",X"8F",X"36",X"7F",X"BF",X"3F", - X"73",X"1F",X"2F",X"FF",X"FB",X"FF",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"55",X"7C",X"55",X"5F",X"55",X"57",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"00",X"FF",X"00",X"03",X"F0",X"00",X"7C",X"00",X"5F",X"C0",X"55",X"FF",X"55",X"57",X"55",X"55", - X"FF",X"FF",X"FF",X"FF",X"03",X"FF",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"00",X"5F",X"FF", - X"57",X"FF",X"5F",X"FF",X"5F",X"FF",X"5F",X"FF",X"7F",X"FF",X"7F",X"FF",X"7F",X"FF",X"7F",X"FF", - X"55",X"5F",X"55",X"7F",X"55",X"7F",X"55",X"FF",X"55",X"FF",X"57",X"FF",X"57",X"FF",X"57",X"FF", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"57",X"55",X"5F", - X"55",X"FF",X"57",X"FF",X"5F",X"FF",X"7F",X"FF",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"57",X"55",X"5F",X"55",X"7F", - X"55",X"55",X"55",X"5F",X"55",X"FF",X"5F",X"FF",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"57",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"AA",X"AD",X"AA",X"AB",X"AA",X"AB",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"AA",X"B5",X"AA",X"B5",X"AA",X"B5",X"AA",X"B5",X"AA",X"B5",X"AA",X"AD",X"AA",X"AD",X"AA",X"AD", - X"AA",X"D5",X"AA",X"D5",X"AA",X"D5",X"AA",X"D5",X"AA",X"D5",X"AA",X"D5",X"AA",X"D5",X"AA",X"B5", - X"AD",X"7A",X"AD",X"7A",X"AB",X"7A",X"AB",X"EA",X"AA",X"AB",X"AA",X"AB",X"AA",X"AB",X"AA",X"AB", - X"B5",X"57",X"B5",X"57",X"B5",X"D7",X"B5",X"5E",X"B7",X"5E",X"B5",X"5E",X"B5",X"5E",X"AD",X"7A", - X"B5",X"55",X"B5",X"55",X"B5",X"D5",X"B5",X"55",X"B7",X"55",X"B5",X"55",X"B5",X"55",X"B5",X"55", - X"AB",X"55",X"AD",X"55",X"AD",X"75",X"AD",X"55",X"AD",X"D5",X"AD",X"55",X"AD",X"55",X"B5",X"55", - X"AA",X"D5",X"AA",X"D5",X"AA",X"D5",X"AA",X"D5",X"AB",X"75",X"AB",X"55",X"AB",X"55",X"AB",X"55", - X"AA",X"AB",X"AA",X"AB",X"AA",X"AD",X"AA",X"AD",X"AA",X"AD",X"AA",X"B5",X"AA",X"B5",X"AA",X"B5", - X"55",X"55",X"55",X"55",X"55",X"55",X"D5",X"55",X"B5",X"55",X"AF",X"55",X"AA",X"FF",X"AA",X"AA", - X"B5",X"56",X"D5",X"55",X"DD",X"55",X"D5",X"55",X"75",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"AA",X"D6",X"AA",X"D6",X"AB",X"56",X"AB",X"56",X"AB",X"56",X"AD",X"56",X"AD",X"56",X"AD",X"56", - X"5E",X"AA",X"5E",X"AB",X"7A",X"AB",X"7A",X"AB",X"7A",X"AE",X"7A",X"AE",X"EA",X"B6",X"EA",X"B6", - X"55",X"5B",X"55",X"5D",X"5D",X"79",X"55",X"79",X"75",X"E9",X"55",X"E9",X"57",X"A9",X"57",X"A9", - X"AD",X"55",X"AD",X"55",X"B5",X"75",X"B5",X"55",X"D7",X"55",X"D5",X"55",X"D5",X"55",X"55",X"55", - X"AA",X"AD",X"AA",X"B5",X"AA",X"B5",X"AA",X"D5",X"AA",X"D5",X"AB",X"75",X"AB",X"55",X"AD",X"55", - X"57",X"AA",X"5E",X"AA",X"7A",X"AA",X"7A",X"AA",X"EA",X"AA",X"EA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"55",X"55",X"55",X"57",X"5D",X"57",X"55",X"5E",X"75",X"7A",X"55",X"7A",X"55",X"EA",X"55",X"EA", - X"55",X"6A",X"55",X"6A",X"5D",X"6A",X"55",X"5A",X"75",X"5A",X"55",X"5A",X"55",X"56",X"55",X"56", - X"55",X"AA",X"55",X"AA",X"5D",X"AA",X"55",X"AA",X"75",X"AA",X"55",X"AA",X"55",X"AA",X"55",X"AA", - X"59",X"AA",X"59",X"AA",X"5D",X"AA",X"56",X"AA",X"76",X"AA",X"56",X"AA",X"56",X"AA",X"56",X"AA", - X"A1",X"AA",X"A1",X"AA",X"AD",X"AA",X"A1",X"AA",X"B1",X"AA",X"69",X"AA",X"69",X"AA",X"59",X"AA", - X"81",X"AA",X"81",X"AA",X"AD",X"AA",X"A1",X"AA",X"B1",X"AA",X"A1",X"AA",X"A1",X"AA",X"A1",X"AA", - X"E0",X"6A",X"A0",X"6A",X"AC",X"6A",X"80",X"6A",X"B0",X"6A",X"81",X"AA",X"81",X"AA",X"81",X"AA", - X"57",X"D6",X"57",X"1A",X"57",X"1A",X"5C",X"1A",X"5C",X"1A",X"5C",X"1A",X"70",X"1A",X"70",X"5A", - X"AB",X"F5",X"AF",X"F7",X"B7",X"F5",X"B7",X"FF",X"77",X"FF",X"D7",X"FF",X"D7",X"FE",X"D7",X"F6", - X"AA",X"A5",X"AA",X"AA",X"AE",X"AA",X"AA",X"AA",X"B8",X"AB",X"A8",X"AB",X"A8",X"2F",X"A8",X"FD", - X"6A",X"54",X"6D",X"54",X"69",X"54",X"75",X"54",X"65",X"54",X"A9",X"54",X"AA",X"54",X"AA",X"94", - X"56",X"A8",X"56",X"A0",X"5E",X"A0",X"5A",X"A0",X"7A",X"94",X"5A",X"94",X"5A",X"94",X"6A",X"54", - X"AB",X"5A",X"AD",X"6A",X"AD",X"6A",X"B5",X"7A",X"B5",X"AA",X"D7",X"AA",X"D5",X"AA",X"55",X"A8", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AE",X"AA",X"BA",X"AA",X"DA", - X"AA",X"55",X"AA",X"95",X"AA",X"95",X"AA",X"A5",X"AA",X"A9",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"D5",X"55",X"55",X"55",X"95",X"55",X"95",X"55",X"A5",X"55",X"A5",X"55",X"A9",X"55",X"AA",X"55", - X"AA",X"D5",X"AA",X"D5",X"AB",X"55",X"AD",X"55",X"AD",X"55",X"B5",X"55",X"B5",X"55",X"D5",X"55", - X"AA",X"AA",X"AA",X"AA",X"AE",X"AA",X"AA",X"AB",X"BA",X"AB",X"AA",X"AD",X"AA",X"B5",X"AA",X"B5", - X"AA",X"D5",X"AA",X"D5",X"AA",X"55",X"AA",X"95",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"7F",X"FF",X"7F",X"FF",X"7F",X"FF",X"EB",X"FF",X"AB",X"FD",X"AB",X"FD",X"AA",X"F5",X"AA",X"F5", - X"00",X"00",X"00",X"00",X"FF",X"C0",X"FF",X"F0",X"57",X"F0",X"77",X"FC",X"57",X"FC",X"5F",X"FF", - X"02",X"00",X"0A",X"00",X"08",X"00",X"08",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"0A",X"A0",X"0A",X"A0",X"0A",X"A0",X"0A",X"80",X"0A",X"80",X"02",X"80",X"02",X"00",X"02",X"00", - X"00",X"00",X"00",X"00",X"00",X"2A",X"02",X"AA",X"0A",X"AA",X"AA",X"AA",X"0A",X"A8",X"0A",X"A8", - X"AA",X"00",X"AA",X"00",X"A8",X"00",X"A8",X"00",X"A0",X"00",X"A0",X"00",X"80",X"00",X"80",X"00", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"A8",X"AA",X"A0",X"AA",X"A0",X"AA",X"80",X"AA",X"80", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"54",X"55",X"50",X"15",X"42",X"05",X"0A", - X"75",X"55",X"D5",X"55",X"D5",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"AA",X"AA",X"AA",X"AA",X"AE",X"AB",X"AA",X"AD",X"BA",X"B5",X"AA",X"D5",X"AB",X"55",X"AD",X"55", - X"AA",X"95",X"AA",X"95",X"AE",X"95",X"AA",X"A5",X"BA",X"A5",X"AA",X"A5",X"AA",X"A9",X"AA",X"AA", - X"55",X"40",X"55",X"50",X"55",X"54",X"A5",X"54",X"A9",X"55",X"A9",X"55",X"AA",X"55",X"AA",X"55", - X"00",X"00",X"C0",X"00",X"C0",X"00",X"50",X"00",X"54",X"00",X"54",X"00",X"55",X"00",X"55",X"40", - X"00",X"00",X"00",X"00",X"A0",X"00",X"80",X"00",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"A8",X"00",X"A0",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"A8",X"AA",X"A0",X"AA",X"80",X"AA",X"00", - X"43",X"AA",X"43",X"AA",X"03",X"AA",X"0E",X"AA",X"3A",X"AA",X"EA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"50",X"3A",X"50",X"3A",X"50",X"3A",X"50",X"3A",X"50",X"3A",X"50",X"3A",X"40",X"EA",X"40",X"EA", - X"54",X"0E",X"54",X"0E",X"54",X"0E",X"50",X"0E",X"50",X"0E",X"50",X"3E",X"50",X"3A",X"50",X"3A", - X"55",X"03",X"55",X"03",X"55",X"03",X"54",X"0F",X"54",X"0E",X"54",X"0E",X"54",X"0E",X"54",X"0E", - X"D5",X"50",X"D5",X"40",X"55",X"40",X"55",X"40",X"55",X"40",X"55",X"40",X"55",X"40",X"55",X"03", - X"AA",X"AA",X"AA",X"AB",X"AE",X"AD",X"AA",X"B4",X"BA",X"D4",X"AB",X"50",X"AD",X"50",X"B5",X"50", - X"AB",X"EB",X"AA",X"AF",X"AE",X"AA",X"AA",X"AA",X"BA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"5E",X"AE",X"5E",X"BE",X"5E",X"BE",X"5E",X"BA",X"5E",X"FA",X"5E",X"FA",X"7E",X"FA",X"7A",X"EB", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"40",X"00",X"54",X"00",X"57",X"80", - X"AA",X"00",X"A8",X"00",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"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AF",X"AA",X"80", - X"02",X"AA",X"06",X"AA",X"0A",X"AA",X"1A",X"AA",X"2A",X"AA",X"2A",X"AA",X"AA",X"AA",X"AA",X"AA", - X"AA",X"05",X"AA",X"15",X"A8",X"15",X"A8",X"17",X"A0",X"67",X"A0",X"AB",X"81",X"AA",X"82",X"AA", - X"AA",X"80",X"AA",X"80",X"AA",X"80",X"AA",X"01",X"AA",X"01",X"AA",X"01",X"AA",X"05",X"AA",X"05", - X"3E",X"A8",X"3A",X"A8",X"3A",X"A0",X"FA",X"A0",X"EA",X"A0",X"EA",X"A0",X"EA",X"80",X"EA",X"80", - X"C0",X"3E",X"00",X"3E",X"00",X"FA",X"00",X"FA",X"03",X"EA",X"03",X"AA",X"0F",X"AA",X"0E",X"A8", - X"AF",X"BF",X"BE",X"BE",X"AA",X"D5",X"AB",X"54",X"AD",X"43",X"AD",X"0F",X"B4",X"3F",X"C0",X"3F", - X"AA",X"BA",X"BA",X"FF",X"BA",X"FB",X"FA",X"EB",X"FB",X"EB",X"EB",X"EB",X"EB",X"AF",X"EB",X"AF", - X"00",X"EA",X"00",X"EA",X"00",X"EA",X"00",X"EA",X"00",X"EA",X"00",X"FA",X"00",X"3A",X"00",X"3A", - X"00",X"EA",X"00",X"EA",X"00",X"EA",X"00",X"EA",X"00",X"EA",X"00",X"EA",X"00",X"EA",X"00",X"EA", - X"00",X"0C",X"00",X"0D",X"00",X"0A",X"00",X"3A",X"00",X"3A",X"00",X"3A",X"00",X"FA",X"00",X"EA", - X"00",X"0C",X"00",X"0C",X"00",X"0C",X"00",X"0C",X"00",X"0C",X"00",X"0C",X"00",X"0C",X"00",X"0C", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"00",X"03",X"00",X"03",X"00",X"0F", - X"00",X"C0",X"00",X"C0",X"00",X"C0",X"00",X"C0",X"03",X"C0",X"03",X"00",X"0F",X"FC",X"3F",X"0C", - X"0F",X"00",X"03",X"00",X"03",X"C0",X"00",X"C0",X"00",X"C0",X"00",X"C0",X"00",X"C0",X"00",X"C0", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"A8",X"FE",X"C0",X"32",X"3C",X"02", - X"AF",X"EA",X"AB",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"5D",X"A9",X"7F",X"A5",X"FF",X"A5",X"FF",X"E5",X"FF",X"E5",X"FF",X"FC",X"FF",X"FF",X"BF",X"EA", - X"2A",X"6A",X"2A",X"6A",X"E9",X"6A",X"E9",X"AA",X"F9",X"A9",X"79",X"A9",X"7D",X"A9",X"5D",X"A9", - X"05",X"6A",X"05",X"6A",X"15",X"6A",X"16",X"6A",X"1A",X"6A",X"1A",X"6A",X"2A",X"6A",X"2A",X"6A", - X"81",X"55",X"81",X"55",X"81",X"55",X"01",X"55",X"01",X"55",X"05",X"56",X"05",X"5A",X"05",X"6A", - X"BF",X"EF",X"BF",X"AF",X"FE",X"BF",X"FA",X"17",X"E8",X"17",X"A8",X"57",X"A0",X"55",X"A0",X"55", - X"83",X"AF",X"F3",X"FF",X"F3",X"FF",X"EF",X"FF",X"EF",X"FF",X"EF",X"FF",X"AF",X"FF",X"BF",X"FB", - X"0E",X"AF",X"0E",X"AF",X"0E",X"AF",X"0E",X"AF",X"0E",X"AF",X"0E",X"AF",X"0E",X"AF",X"0E",X"AF", - X"02",X"AA",X"42",X"A5",X"56",X"57",X"81",X"6B",X"83",X"AB",X"83",X"AB",X"03",X"AF",X"0E",X"AF", - X"00",X"FE",X"02",X"FE",X"02",X"EA",X"02",X"AA",X"02",X"AA",X"02",X"AA",X"0A",X"AA",X"0A",X"AA", - X"C0",X"FE",X"C0",X"FE",X"C0",X"FE",X"C0",X"FE",X"C0",X"FE",X"00",X"FE",X"00",X"FE",X"00",X"FE", - X"F0",X"FE",X"F0",X"FE",X"C0",X"FE",X"C0",X"FE",X"C0",X"FE",X"C0",X"FE",X"C0",X"FE",X"C0",X"FE", - X"30",X"0A",X"30",X"0A",X"30",X"0A",X"30",X"0A",X"30",X"2A",X"30",X"FE",X"30",X"FE",X"30",X"FE", - X"03",X"FA",X"03",X"FA",X"00",X"FA",X"C0",X"2A",X"C0",X"0A",X"F0",X"0A",X"30",X"0A",X"30",X"0A", - X"3F",X"EA",X"3F",X"FA",X"3F",X"FA",X"3F",X"FA",X"0F",X"FA",X"0F",X"FA",X"0F",X"FA",X"03",X"FA", - X"AA",X"A0",X"AA",X"A8",X"2A",X"AA",X"3E",X"AA",X"3F",X"AA",X"3F",X"AA",X"3F",X"EA",X"3F",X"EA", - X"AA",X"AA",X"AA",X"BE",X"AA",X"FE",X"AB",X"F2",X"AF",X"E0",X"AA",X"A0",X"AA",X"A0",X"AA",X"A0", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"40",X"AA",X"02",X"AA",X"02",X"AA",X"02",X"AA",X"0E",X"AA",X"3E",X"AA",X"FA",X"AA",X"AA",X"AA", - X"40",X"AA",X"40",X"AA",X"40",X"AA",X"40",X"AA",X"40",X"AA",X"40",X"AA",X"40",X"AA",X"40",X"AA", - X"40",X"AA",X"50",X"AA",X"90",X"AA",X"90",X"AA",X"90",X"AA",X"90",X"AA",X"90",X"AA",X"50",X"AA", - X"FE",X"AA",X"FE",X"AA",X"7E",X"AA",X"7E",X"AA",X"7E",X"AA",X"4F",X"AA",X"43",X"AA",X"40",X"AA", - X"FF",X"FF",X"EA",X"FF",X"EA",X"AF",X"FA",X"AB",X"FA",X"AB",X"FE",X"AA",X"FE",X"AA",X"FE",X"AA", - X"55",X"EA",X"55",X"F9",X"57",X"F9",X"5F",X"FE",X"5F",X"FE",X"7F",X"FF",X"7F",X"FF",X"FF",X"FF", - X"4E",X"9A",X"4F",X"9A",X"57",X"5A",X"57",X"5A",X"57",X"6A",X"57",X"6A",X"57",X"6A",X"57",X"EA", - X"E1",X"55",X"E1",X"55",X"E1",X"55",X"E2",X"55",X"8A",X"95",X"8A",X"99",X"8A",X"9A",X"4A",X"9A", - X"5A",X"15",X"78",X"15",X"F8",X"15",X"F8",X"55",X"E8",X"55",X"E8",X"55",X"E8",X"55",X"E1",X"55", - X"AA",X"A0",X"AA",X"A0",X"AA",X"83",X"AA",X"83",X"AA",X"8F",X"AA",X"87",X"AA",X"05",X"AA",X"05", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"A8",X"AA",X"A8",X"AA",X"A8",X"AA",X"A0",X"AA",X"A0", - X"AA",X"AF",X"AA",X"AF",X"AA",X"AF",X"AA",X"AF",X"AA",X"AB",X"AA",X"AB",X"AA",X"AB",X"AA",X"AA", - X"AA",X"A0",X"AA",X"82",X"AA",X"82",X"AA",X"82",X"AA",X"82",X"AA",X"8F",X"AA",X"BF",X"AA",X"BF", - X"AB",X"F2",X"AA",X"FF",X"AA",X"FF",X"AA",X"BF",X"AA",X"BC",X"AA",X"A0",X"AA",X"A0",X"AA",X"A0", - X"80",X"EA",X"83",X"FC",X"83",X"F2",X"8E",X"B2",X"AE",X"82",X"AF",X"82",X"AF",X"82",X"AB",X"C2", - X"00",X"AA",X"02",X"2A",X"08",X"2A",X"28",X"2A",X"A0",X"AA",X"A0",X"AA",X"80",X"AA",X"80",X"AA", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"2A",X"AA",X"0A",X"AA", - X"FE",X"AA",X"EA",X"AA",X"EA",X"AA",X"EA",X"AA",X"EA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"68",X"02",X"68",X"02",X"A8",X"0A",X"A0",X"2A",X"A0",X"2A",X"80",X"AA",X"C0",X"AA",X"C2",X"AA", - X"9A",X"02",X"9A",X"02",X"9A",X"02",X"9A",X"02",X"58",X"02",X"68",X"02",X"68",X"02",X"68",X"02", - X"55",X"FE",X"55",X"FE",X"55",X"FE",X"55",X"FE",X"55",X"FE",X"55",X"FE",X"55",X"FE",X"99",X"3E", - X"5F",X"EA",X"5F",X"FA",X"5F",X"FA",X"57",X"FA",X"57",X"FA",X"57",X"FA",X"57",X"FE",X"55",X"FE", - X"AA",X"AA",X"AA",X"AA",X"FA",X"AA",X"FF",X"AA",X"FF",X"AA",X"FF",X"AA",X"FF",X"EA",X"7F",X"EA", - X"C2",X"AA",X"02",X"AA",X"0A",X"AA",X"0A",X"AA",X"2A",X"AA",X"2A",X"AA",X"2A",X"AA",X"AA",X"AA", - X"FF",X"CA",X"FF",X"2A",X"FF",X"2A",X"FC",X"2A",X"FC",X"AA",X"F0",X"AA",X"F0",X"AA",X"C2",X"AA", - X"FC",X"AA",X"F2",X"AA",X"A2",X"AA",X"A2",X"AA",X"A2",X"AA",X"A2",X"AA",X"A2",X"8A",X"EF",X"CA", - X"AA",X"AA",X"CA",X"AA",X"CA",X"AA",X"2A",X"AA",X"2A",X"AA",X"2A",X"AA",X"AA",X"AA",X"EB",X"AA", - X"55",X"55",X"55",X"55",X"5D",X"55",X"55",X"55",X"75",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"AA",X"AA",X"AA",X"AA",X"AE",X"AA",X"AA",X"AA",X"BA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"55",X"6A",X"55",X"6A",X"55",X"AA",X"55",X"AA",X"56",X"AA",X"5A",X"AA",X"6A",X"AA",X"AA",X"AA", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"56",X"55",X"56",X"55",X"5A", - X"AA",X"BF",X"AA",X"BF",X"AA",X"FF",X"AA",X"FF",X"AB",X"FF",X"AF",X"FF",X"BF",X"FF",X"FF",X"FF", - X"6A",X"AA",X"6A",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AB",X"AA",X"AB",X"AA",X"AF", - X"5A",X"AA",X"5A",X"AA",X"5A",X"AA",X"5A",X"AA",X"5A",X"AA",X"5A",X"AA",X"5A",X"AA",X"6A",X"AA", - X"AA",X"AA",X"6A",X"AA",X"6A",X"AA",X"6A",X"AA",X"5A",X"AA",X"5A",X"AA",X"5A",X"AA",X"5A",X"AA", - X"BF",X"FF",X"BF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"AF",X"FF",X"AF",X"FF",X"AF",X"FF",X"AF",X"FF",X"AF",X"FF",X"AF",X"FF",X"BF",X"FF",X"BF",X"FF", - X"FF",X"FF",X"BF",X"FF",X"BF",X"FF",X"BF",X"FF",X"AF",X"FF",X"AF",X"FF",X"AF",X"FF",X"AF",X"FF", - X"FA",X"AA",X"FA",X"AA",X"FA",X"AA",X"FA",X"AA",X"EA",X"AA",X"EA",X"AA",X"EA",X"AA",X"AA",X"AA", - X"FE",X"AA",X"FE",X"AA",X"FE",X"AA",X"FE",X"AA",X"FE",X"AA",X"FE",X"AA",X"FE",X"AA",X"FE",X"AA", - X"55",X"AA",X"55",X"6A",X"55",X"5A",X"55",X"56",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"6A",X"FF",X"5A",X"FF",X"5A",X"FF",X"5A",X"BF",X"56",X"BF",X"56",X"AF",X"56",X"AF",X"55",X"AB", - X"AF",X"FF",X"AB",X"FF",X"6B",X"FF",X"6B",X"FF",X"6B",X"FF",X"6B",X"FF",X"6B",X"FF",X"6B",X"FF", - X"AF",X"FF",X"AF",X"FF",X"AF",X"FF",X"AF",X"FF",X"AF",X"FF",X"AF",X"FF",X"AF",X"FF",X"AF",X"FF", - X"55",X"55",X"55",X"55",X"6D",X"55",X"AF",X"55",X"AF",X"D5",X"AF",X"F5",X"AF",X"FD",X"AF",X"FF", - X"FF",X"FF",X"FF",X"FF",X"BF",X"FF",X"AF",X"FF",X"AB",X"FF",X"6A",X"FF",X"5A",X"BF",X"56",X"AA", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"A9",X"55",X"A9",X"55",X"A9",X"55",X"A9",X"55",X"A9",X"55",X"A9",X"55",X"A9",X"55",X"A9",X"55", - X"56",X"A5",X"56",X"A5",X"56",X"A5",X"DA",X"A5",X"5A",X"A5",X"6A",X"95",X"6A",X"95",X"AA",X"55", - X"55",X"6A",X"55",X"6A",X"55",X"AA",X"55",X"A9",X"55",X"A9",X"55",X"A9",X"55",X"A9",X"55",X"A9", - X"55",X"AB",X"55",X"AB",X"55",X"AB",X"56",X"AB",X"56",X"AB",X"56",X"AF",X"5A",X"AF",X"5A",X"AF", - X"55",X"6A",X"55",X"6A",X"55",X"6A",X"55",X"6A",X"55",X"6A",X"55",X"6A",X"55",X"AB",X"55",X"AB", - X"FF",X"FD",X"FF",X"F5",X"FF",X"D5",X"FF",X"55",X"FD",X"55",X"F5",X"55",X"D5",X"55",X"55",X"55", - X"FF",X"FD",X"FF",X"F5",X"FF",X"D5",X"FF",X"55",X"FD",X"55",X"F5",X"55",X"D5",X"55",X"55",X"55", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"FF",X"AA",X"FF",X"AA",X"FF",X"AA",X"FF",X"AA",X"FF",X"AA",X"FF",X"AA",X"FF",X"AA",X"FF",X"AA", - X"AA",X"AA",X"AA",X"A9",X"AA",X"A5",X"AA",X"95",X"AA",X"55",X"A9",X"55",X"A5",X"55",X"95",X"55", - X"FF",X"AA",X"FF",X"AA",X"FE",X"AA",X"FE",X"AA",X"FA",X"AA",X"FA",X"AA",X"EA",X"AA",X"AA",X"AA", - X"FF",X"EA",X"FF",X"EA",X"FF",X"EA",X"FF",X"EA",X"FF",X"EA",X"FF",X"AA",X"FF",X"AA",X"FF",X"AA", - X"FF",X"FA",X"FF",X"FA",X"FF",X"FA",X"FF",X"FA",X"FF",X"FA",X"FF",X"FA",X"FF",X"FA",X"FF",X"FA", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"51",X"55",X"55",X"55",X"55",X"55", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"75",X"55",X"55",X"55", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"54",X"55",X"55",X"55",X"55",X"55", - X"AA",X"FF",X"AB",X"FF",X"AB",X"FF",X"AB",X"FF",X"AF",X"FF",X"AF",X"FF",X"BF",X"FF",X"FF",X"FF", - X"AA",X"BF",X"AA",X"BF",X"AA",X"BF",X"AA",X"BF",X"AA",X"BF",X"AA",X"FF",X"AA",X"FF",X"AA",X"FF", - X"AA",X"AF",X"AA",X"AF",X"AA",X"AF",X"AA",X"AF",X"AA",X"AF",X"AA",X"AF",X"AA",X"AF",X"AA",X"AF", - X"FF",X"AA",X"FE",X"AA",X"FE",X"AA",X"FE",X"AA",X"FA",X"AA",X"FA",X"AA",X"EA",X"AA",X"AA",X"AA", - X"AA",X"AA",X"AA",X"AA",X"FF",X"EA",X"FF",X"EA",X"FF",X"EA",X"FF",X"AA",X"FF",X"AA",X"FF",X"AA", - X"55",X"5A",X"55",X"5A",X"55",X"5A",X"55",X"5A",X"55",X"5A",X"55",X"5A",X"55",X"5A",X"55",X"5A", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"AA",X"AA",X"AA",X"AA", - X"55",X"5A",X"55",X"5A",X"55",X"5A",X"55",X"5A",X"55",X"5A",X"55",X"5A",X"55",X"5A",X"55",X"5A", - X"FF",X"FA",X"FF",X"FA",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"FF",X"A5",X"FF",X"A5",X"FF",X"A5",X"FF",X"A5",X"FF",X"A5",X"FF",X"A5",X"FF",X"A5",X"FF",X"A5", - X"AA",X"AA",X"AA",X"AA",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"2A",X"AA",X"2A",X"AA",X"2A",X"AA",X"0A",X"AA", - X"BF",X"77",X"AB",X"DF",X"AF",X"FF",X"83",X"FF",X"A0",X"00",X"00",X"00",X"A8",X"00",X"AA",X"FF", - X"EA",X"AA",X"FE",X"AA",X"AA",X"AA",X"2A",X"AA",X"02",X"AA",X"2A",X"AA",X"AA",X"A8",X"FA",X"A8", - X"00",X"00",X"00",X"00",X"00",X"00",X"40",X"00",X"50",X"00",X"50",X"00",X"54",X"00",X"55",X"00", - X"02",X"AA",X"00",X"AA",X"00",X"2A",X"00",X"0A",X"00",X"02",X"00",X"00",X"00",X"00",X"00",X"00", - X"AF",X"FF",X"BF",X"FF",X"AF",X"FF",X"A8",X"00",X"AA",X"00",X"2A",X"82",X"02",X"A2",X"00",X"00", - X"FE",X"A8",X"FA",X"A0",X"EA",X"A0",X"AA",X"80",X"AA",X"80",X"A8",X"00",X"80",X"00",X"00",X"00", - X"55",X"50",X"55",X"54",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"00",X"00",X"00",X"00",X"00",X"00",X"40",X"00",X"54",X"00",X"55",X"40",X"55",X"50",X"55",X"55", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"50",X"05", - X"55",X"55",X"55",X"55",X"55",X"55",X"15",X"55",X"05",X"55",X"05",X"55",X"01",X"55",X"00",X"55", - X"00",X"05",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"55",X"55",X"55",X"55",X"55",X"55",X"15",X"55",X"01",X"55",X"00",X"15",X"00",X"05",X"00",X"00", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"05",X"50", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"55",X"65",X"55",X"59",X"55",X"56",X"55",X"56",X"55",X"56",X"55",X"56",X"55",X"56",X"55",X"56", - X"59",X"55",X"59",X"55",X"59",X"55",X"59",X"55",X"59",X"55",X"59",X"55",X"59",X"55",X"59",X"55", - X"55",X"55",X"55",X"55",X"55",X"55",X"56",X"55",X"59",X"55",X"59",X"55",X"59",X"55",X"59",X"55", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"59",X"55",X"59",X"55",X"59",X"55",X"59",X"55",X"59",X"55",X"59",X"55",X"59",X"55",X"59",X"55", - X"55",X"65",X"55",X"65",X"55",X"65",X"55",X"65",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"56",X"55",X"56",X"55",X"56",X"55",X"56", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"59",X"55",X"65",X"55",X"65",X"55",X"65", - X"55",X"55",X"55",X"65",X"59",X"55",X"59",X"55",X"59",X"55",X"59",X"55",X"59",X"55",X"59",X"55", - X"95",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"59",X"56",X"55", - X"55",X"56",X"55",X"56",X"55",X"56",X"55",X"56",X"55",X"95",X"65",X"55",X"55",X"55",X"55",X"55", - X"59",X"55",X"59",X"55",X"59",X"55",X"59",X"55",X"59",X"55",X"59",X"55",X"59",X"55",X"59",X"55", - X"55",X"95",X"55",X"95",X"55",X"95",X"55",X"95",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"55",X"55",X"55",X"95",X"55",X"95",X"55",X"95",X"55",X"95",X"55",X"95",X"55",X"95",X"55",X"95", - X"55",X"56",X"55",X"56",X"55",X"56",X"55",X"56",X"55",X"56",X"55",X"56",X"55",X"56",X"55",X"56", - X"03",X"0C",X"21",X"2C",X"89",X"A0",X"AD",X"80",X"89",X"A0",X"21",X"2C",X"03",X"0C",X"00",X"00", - X"FF",X"FF",X"D5",X"55",X"D5",X"55",X"D5",X"55",X"D5",X"55",X"D5",X"55",X"D5",X"55",X"D5",X"55", - X"55",X"D5",X"55",X"F5",X"55",X"75",X"55",X"7D",X"55",X"5D",X"55",X"5F",X"55",X"55",X"55",X"55", - X"5D",X"55",X"5D",X"55",X"5D",X"55",X"5D",X"55",X"5F",X"55",X"57",X"55",X"57",X"55",X"57",X"D5", - X"55",X"F5",X"55",X"D5",X"55",X"D5",X"55",X"D5",X"55",X"D5",X"D7",X"D5",X"FF",X"55",X"55",X"55", - X"55",X"75",X"55",X"75",X"55",X"75",X"55",X"75",X"55",X"75",X"55",X"75",X"55",X"75",X"55",X"75", - X"FF",X"FF",X"FF",X"FF",X"FF",X"C0",X"00",X"F0",X"00",X"30",X"00",X"30",X"00",X"FF",X"FF",X"F5", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"FF",X"F3",X"FC",X"7B",X"FE",X"CC",X"FF",X"FF",X"FF",X"FC",X"FF",X"F7",X"FF",X"CF",X"FF",X"FF", - X"CF",X"FF",X"FD",X"F7",X"CC",X"DF",X"FF",X"BD",X"FF",X"FF",X"F7",X"7B",X"FC",X"CF",X"FF",X"FF", - X"CF",X"FF",X"DF",X"FF",X"3C",X"CF",X"F7",X"BF",X"EF",X"DF",X"73",X"FF",X"FE",X"CF",X"5F",X"FF", - X"FF",X"FF",X"CF",X"FF",X"FF",X"FF",X"B7",X"FF",X"CF",X"FF",X"BC",X"FF",X"DF",X"7F",X"FF",X"3F", - X"3F",X"FF",X"FF",X"FF",X"BF",X"F3",X"DF",X"FF",X"FF",X"FF",X"FF",X"FE",X"B3",X"F3",X"FF",X"FF", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"F3",X"FF",X"FF",X"FF",X"FF",X"FF",X"F3", - X"FF",X"FF",X"FC",X"FF",X"FF",X"FF",X"FD",X"DF",X"FF",X"F3",X"FF",X"DF",X"FF",X"FF",X"FF",X"FB", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"DF",X"FD",X"FF",X"FF",X"FF", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"04",X"55",X"C0",X"55",X"F0",X"45",X"FC",X"01",X"F0",X"01",X"FF",X"00",X"FF",X"C0",X"FF",X"FF", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"51",X"55",X"40",X"55",X"41",X"55",X"15",X"55", - X"51",X"43",X"51",X"0F",X"40",X"3F",X"00",X"0F",X"03",X"CF",X"0F",X"FF",X"3F",X"FF",X"FF",X"FF", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"45",X"55",X"41",X"55",X"11",X"55",X"00", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"59",X"55",X"59",X"55",X"59",X"55",X"59",X"55", - X"55",X"55",X"55",X"55",X"56",X"55",X"56",X"55",X"56",X"55",X"56",X"55",X"56",X"55",X"59",X"55", - X"55",X"56",X"55",X"56",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00"); -begin -process(clk) -begin - if rising_edge(clk) then - data <= rom_data(to_integer(unsigned(addr))); - end if; -end process; -end architecture; diff --git a/Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/rom/journey_bg_bits_2.vhd b/Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/rom/journey_bg_bits_2.vhd deleted file mode 100644 index 1f1a7117..00000000 --- a/Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/rom/journey_bg_bits_2.vhd +++ /dev/null @@ -1,534 +0,0 @@ -library ieee; -use ieee.std_logic_1164.all,ieee.numeric_std.all; - -entity journey_bg_bits_2 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 journey_bg_bits_2 is - type rom is array(0 to 8191) of std_logic_vector(7 downto 0); - signal rom_data: rom := ( - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"0A",X"AA",X"42",X"AA",X"52",X"AA",X"52",X"AA",X"54",X"AA",X"00",X"2A",X"00",X"2A",X"AA",X"2A", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"2A",X"AA",X"2A",X"AA",X"0A",X"AA", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"56",X"AA",X"56",X"AA",X"5A",X"AA",X"6A",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"55",X"56",X"55",X"56",X"55",X"56",X"55",X"5A",X"55",X"5A",X"55",X"6A",X"55",X"6A",X"55",X"AA", - X"80",X"0A",X"A0",X"0A",X"A8",X"2A",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"82",X"0A",X"82",X"0A",X"82",X"0A",X"82",X"0A",X"82",X"0A",X"82",X"0A",X"82",X"0A",X"82",X"0A", - X"A8",X"2A",X"A0",X"2A",X"A0",X"0A",X"80",X"0A",X"82",X"0A",X"82",X"0A",X"82",X"0A",X"82",X"0A", - X"C5",X"55",X"C5",X"55",X"C5",X"55",X"C5",X"55",X"C5",X"54",X"05",X"40",X"05",X"00",X"00",X"2A", - X"05",X"4A",X"05",X"42",X"C5",X"42",X"C5",X"50",X"C5",X"50",X"C5",X"54",X"C5",X"54",X"C5",X"55", - X"0A",X"AA",X"02",X"AA",X"02",X"AA",X"00",X"AA",X"00",X"AA",X"00",X"2A",X"05",X"2A",X"05",X"0A", - X"5A",X"AA",X"6A",X"AA",X"2A",X"AA",X"2A",X"AA",X"2A",X"AA",X"2A",X"AA",X"2A",X"AA",X"0A",X"AA", - X"D5",X"AA",X"D5",X"AA",X"D6",X"AA",X"5A",X"AA",X"6A",X"AA",X"5A",X"AA",X"5A",X"AA",X"5A",X"AA", - X"D5",X"55",X"D5",X"55",X"D5",X"55",X"D5",X"55",X"D5",X"55",X"D5",X"56",X"D5",X"5A",X"D5",X"6A", - X"F6",X"6A",X"F6",X"A5",X"F6",X"55",X"F5",X"55",X"F5",X"55",X"F5",X"55",X"F5",X"55",X"F5",X"55", - X"F6",X"66",X"F6",X"66",X"F6",X"66",X"F6",X"66",X"F6",X"66",X"F6",X"66",X"F6",X"6A",X"F6",X"6A", - X"00",X"4F",X"01",X"43",X"35",X"43",X"D6",X"43",X"95",X"40",X"55",X"60",X"55",X"A8",X"5A",X"AA", - X"00",X"00",X"00",X"00",X"00",X"00",X"40",X"00",X"00",X"03",X"00",X"03",X"00",X"0F",X"00",X"0F", - X"AA",X"00",X"8A",X"00",X"0A",X"00",X"0A",X"00",X"0A",X"00",X"2A",X"00",X"58",X"00",X"58",X"00", - X"0B",X"55",X"AA",X"D5",X"AA",X"00",X"56",X"00",X"56",X"00",X"56",X"00",X"5A",X"00",X"6A",X"00", - X"05",X"57",X"05",X"55",X"01",X"55",X"01",X"55",X"01",X"55",X"01",X"55",X"01",X"55",X"01",X"55", - X"5F",X"FF",X"57",X"FF",X"57",X"FF",X"55",X"FF",X"55",X"7F",X"15",X"7F",X"15",X"5F",X"05",X"5F", - X"FF",X"FE",X"FF",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"FF",X"7F",X"FF",X"5F",X"FF", - X"65",X"96",X"E5",X"96",X"F5",X"96",X"FD",X"96",X"FF",X"96",X"FF",X"D6",X"FF",X"D6",X"FF",X"F6", - X"65",X"96",X"65",X"96",X"65",X"96",X"65",X"96",X"65",X"96",X"65",X"96",X"65",X"96",X"65",X"96", - X"55",X"55",X"55",X"55",X"15",X"55",X"00",X"25",X"00",X"A2",X"AA",X"A6",X"AA",X"96",X"6A",X"96", - X"56",X"C0",X"95",X"F0",X"95",X"7C",X"95",X"6F",X"A5",X"56",X"E9",X"55",X"FD",X"55",X"FF",X"D5", - X"05",X"00",X"14",X"00",X"50",X"00",X"50",X"55",X"51",X"55",X"55",X"BC",X"55",X"F0",X"55",X"C0", - X"55",X"55",X"55",X"56",X"55",X"5A",X"56",X"AA",X"AA",X"AA",X"00",X"00",X"00",X"55",X"01",X"55", - X"00",X"00",X"00",X"00",X"A0",X"0A",X"AA",X"AA",X"A5",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"55",X"00",X"54",X"00",X"50",X"00",X"40",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"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"01",X"00",X"55",X"00",X"55",X"01",X"50",X"05",X"50",X"15",X"40",X"55",X"40", - X"01",X"5F",X"01",X"57",X"00",X"57",X"00",X"55",X"00",X"15",X"00",X"15",X"00",X"05",X"00",X"05", - X"57",X"FF",X"57",X"FF",X"57",X"FF",X"56",X"FF",X"55",X"FF",X"15",X"7F",X"05",X"7F",X"05",X"6F", - X"FF",X"59",X"FF",X"59",X"FF",X"D9",X"FF",X"D9",X"7F",X"F9",X"7F",X"FD",X"6F",X"FD",X"5F",X"FF", - X"96",X"A1",X"D6",X"A0",X"D6",X"A0",X"F6",X"A8",X"F6",X"6A",X"FE",X"5A",X"FE",X"5A",X"FE",X"59", - X"FF",X"FF",X"55",X"56",X"55",X"5A",X"55",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"5F",X"AA",X"5F",X"AA",X"5F",X"AA",X"5A",X"AA",X"A9",X"56",X"55",X"FF",X"57",X"FF",X"7F",X"FF", - X"55",X"54",X"55",X"55",X"55",X"55",X"5F",X"55",X"5F",X"D5",X"5F",X"FD",X"5F",X"FF",X"5F",X"EA", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"AA",X"AA",X"00",X"00",X"15",X"40",X"55",X"50", - X"40",X"00",X"00",X"00",X"00",X"00",X"00",X"2A",X"02",X"AA",X"AA",X"A5",X"A5",X"55",X"55",X"55", - X"00",X"05",X"00",X"15",X"00",X"55",X"05",X"55",X"15",X"55",X"55",X"55",X"55",X"40",X"54",X"00", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"54",X"55",X"50", - X"55",X"57",X"55",X"57",X"55",X"56",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"55",X"FF",X"55",X"FF",X"55",X"7F",X"55",X"7F",X"55",X"7F",X"55",X"6F",X"55",X"5F",X"55",X"5F", - X"FF",X"57",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"05",X"55",X"14",X"01",X"10",X"01",X"10",X"01",X"10",X"01",X"11",X"55",X"11",X"55",X"00",X"00", - X"00",X"00",X"00",X"01",X"15",X"55",X"15",X"55",X"10",X"01",X"00",X"00",X"00",X"00",X"00",X"00", - X"11",X"41",X"11",X"41",X"10",X"41",X"10",X"41",X"10",X"41",X"10",X"55",X"10",X"55",X"00",X"00", - X"11",X"55",X"10",X"41",X"10",X"41",X"10",X"41",X"10",X"01",X"10",X"05",X"10",X"05",X"00",X"00", - X"00",X"40",X"15",X"55",X"00",X"40",X"00",X"40",X"00",X"40",X"05",X"40",X"05",X"40",X"00",X"00", - X"10",X"55",X"10",X"41",X"10",X"41",X"10",X"41",X"10",X"41",X"11",X"45",X"11",X"45",X"00",X"00", - X"10",X"55",X"10",X"41",X"10",X"41",X"10",X"41",X"10",X"41",X"11",X"55",X"11",X"55",X"00",X"00", - X"14",X"00",X"11",X"00",X"11",X"40",X"10",X"55",X"10",X"15",X"10",X"00",X"10",X"00",X"00",X"00", - X"15",X"55",X"10",X"41",X"10",X"41",X"10",X"41",X"10",X"41",X"11",X"55",X"11",X"55",X"00",X"00", - X"15",X"55",X"15",X"55",X"10",X"40",X"10",X"40",X"10",X"40",X"10",X"40",X"11",X"40",X"00",X"00", - X"FF",X"FA",X"FF",X"FA",X"FF",X"FA",X"FF",X"FA",X"FF",X"FA",X"FF",X"FA",X"FF",X"F9",X"FF",X"D5", - X"FA",X"95",X"F9",X"55",X"F5",X"55",X"D5",X"55",X"55",X"56",X"55",X"6A",X"57",X"EA",X"5F",X"EA", - X"AA",X"99",X"AA",X"A5",X"EA",X"95",X"EA",X"95",X"EA",X"AA",X"FA",X"A0",X"FA",X"A0",X"FA",X"A1", - X"55",X"55",X"55",X"54",X"55",X"40",X"50",X"00",X"00",X"00",X"00",X"00",X"00",X"2A",X"AA",X"AA", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"05",X"01",X"55",X"15",X"55", - X"55",X"40",X"50",X"00",X"40",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"55",X"55",X"95",X"55",X"A5",X"55",X"A9",X"55",X"AA",X"95",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"15",X"55",X"15",X"55",X"10",X"40",X"10",X"40",X"10",X"40",X"11",X"55",X"11",X"55",X"00",X"00", - X"15",X"15",X"11",X"51",X"10",X"41",X"10",X"41",X"10",X"41",X"11",X"55",X"11",X"55",X"00",X"00", - X"10",X"05",X"10",X"05",X"10",X"05",X"10",X"05",X"10",X"05",X"11",X"55",X"11",X"54",X"00",X"00", - X"05",X"54",X"14",X"05",X"10",X"01",X"10",X"01",X"10",X"01",X"11",X"55",X"11",X"55",X"00",X"00", - X"10",X"01",X"10",X"01",X"10",X"41",X"10",X"41",X"10",X"41",X"11",X"55",X"11",X"55",X"00",X"00", - X"10",X"00",X"10",X"00",X"10",X"40",X"10",X"40",X"10",X"40",X"11",X"55",X"11",X"55",X"00",X"00", - X"10",X"55",X"10",X"41",X"10",X"41",X"10",X"01",X"10",X"01",X"11",X"55",X"11",X"54",X"00",X"00", - X"15",X"55",X"00",X"40",X"00",X"40",X"00",X"40",X"00",X"40",X"05",X"55",X"05",X"55",X"00",X"00", - X"00",X"00",X"00",X"00",X"10",X"01",X"15",X"55",X"15",X"55",X"10",X"01",X"00",X"00",X"00",X"00", - X"00",X"00",X"05",X"55",X"05",X"55",X"00",X"01",X"00",X"01",X"00",X"05",X"00",X"05",X"00",X"00", - X"14",X"01",X"05",X"05",X"01",X"54",X"00",X"50",X"00",X"10",X"05",X"55",X"05",X"55",X"00",X"00", - X"00",X"05",X"00",X"05",X"00",X"01",X"00",X"01",X"00",X"01",X"05",X"55",X"05",X"55",X"00",X"00", - X"15",X"55",X"05",X"00",X"01",X"50",X"01",X"50",X"05",X"00",X"15",X"55",X"15",X"55",X"00",X"00", - X"15",X"55",X"00",X"15",X"01",X"50",X"15",X"00",X"10",X"00",X"11",X"55",X"11",X"55",X"00",X"00", - X"15",X"55",X"10",X"01",X"10",X"01",X"10",X"01",X"10",X"01",X"11",X"55",X"11",X"55",X"00",X"00", - X"15",X"40",X"10",X"40",X"10",X"40",X"10",X"40",X"10",X"40",X"11",X"55",X"11",X"55",X"00",X"00", - X"15",X"55",X"10",X"14",X"10",X"15",X"10",X"01",X"10",X"01",X"11",X"55",X"11",X"55",X"00",X"00", - X"15",X"45",X"10",X"55",X"10",X"50",X"10",X"40",X"10",X"40",X"11",X"55",X"11",X"55",X"00",X"00", - X"10",X"55",X"10",X"55",X"10",X"41",X"10",X"41",X"10",X"41",X"11",X"45",X"11",X"45",X"00",X"00", - X"00",X"00",X"10",X"00",X"10",X"00",X"15",X"55",X"15",X"55",X"10",X"00",X"10",X"00",X"00",X"00", - X"15",X"55",X"00",X"01",X"00",X"01",X"00",X"01",X"00",X"01",X"05",X"55",X"05",X"55",X"00",X"00", - X"15",X"50",X"00",X"14",X"00",X"05",X"00",X"15",X"00",X"54",X"05",X"50",X"05",X"40",X"00",X"00", - X"15",X"55",X"00",X"14",X"01",X"50",X"01",X"50",X"00",X"14",X"05",X"55",X"05",X"55",X"00",X"00", - X"14",X"05",X"05",X"14",X"01",X"50",X"00",X"40",X"01",X"50",X"05",X"14",X"00",X"05",X"00",X"00", - X"14",X"00",X"05",X"00",X"01",X"40",X"00",X"55",X"01",X"55",X"05",X"40",X"05",X"00",X"00",X"00", - X"10",X"01",X"11",X"01",X"11",X"41",X"10",X"41",X"10",X"51",X"10",X"15",X"10",X"05",X"00",X"00", - X"FD",X"55",X"F5",X"5F",X"D5",X"7F",X"55",X"5F",X"55",X"5F",X"65",X"7F",X"A5",X"7F",X"95",X"5F", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"F5",X"FF",X"D5",X"FF",X"55", - X"00",X"AA",X"AA",X"AA",X"AA",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"15",X"05",X"55",X"55",X"55",X"55",X"55",X"55",X"40",X"00",X"00",X"00",X"00", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"40",X"50",X"00",X"00",X"00",X"00",X"00", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"00",X"05",X"00",X"05",X"00",X"05",X"00",X"05",X"00",X"05",X"00",X"15",X"40",X"15",X"54",X"15", - X"55",X"56",X"00",X"16",X"00",X"1A",X"01",X"5A",X"55",X"AA",X"56",X"AA",X"AA",X"AA",X"AA",X"AA", - X"57",X"FF",X"55",X"FF",X"55",X"7F",X"55",X"5F",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"56", - X"00",X"00",X"00",X"02",X"02",X"AA",X"AA",X"AB",X"AB",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"55",X"55",X"55",X"55",X"55",X"54",X"00", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"50",X"00",X"00", - X"75",X"55",X"75",X"55",X"75",X"55",X"D5",X"55",X"D5",X"55",X"D5",X"55",X"55",X"55",X"55",X"55", - X"D5",X"55",X"D5",X"55",X"F5",X"55",X"75",X"55",X"75",X"55",X"75",X"55",X"75",X"55",X"75",X"55", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"05",X"55",X"55",X"55", - X"95",X"00",X"A5",X"40",X"A9",X"55",X"AA",X"55",X"AA",X"95",X"AA",X"A5",X"AA",X"AA",X"AA",X"AA", - X"55",X"55",X"55",X"55",X"15",X"55",X"05",X"55",X"01",X"55",X"40",X"55",X"50",X"15",X"94",X"05", - X"0F",X"FF",X"3F",X"FF",X"3F",X"FF",X"57",X"FF",X"55",X"FF",X"55",X"5F",X"55",X"57",X"55",X"55", - X"00",X"00",X"00",X"00",X"00",X"00",X"2A",X"AA",X"AA",X"AA",X"AA",X"AF",X"AF",X"FF",X"5F",X"FF", - X"01",X"54",X"00",X"50",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"5F",X"FF",X"57",X"FD",X"55",X"F5",X"55",X"55",X"55",X"55",X"15",X"55",X"15",X"55",X"05",X"55", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"57",X"F5",X"5F",X"7F",X"FF",X"7F",X"FF", - X"55",X"5F",X"55",X"57",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"57",X"55",X"57",X"55", - X"00",X"55",X"01",X"55",X"05",X"55",X"15",X"D5",X"57",X"F5",X"5F",X"FD",X"5F",X"FF",X"7F",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"15", - X"02",X"A9",X"2A",X"55",X"A9",X"41",X"A5",X"01",X"A4",X"01",X"94",X"00",X"54",X"00",X"55",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"55",X"55", - X"40",X"15",X"00",X"15",X"00",X"15",X"00",X"15",X"00",X"15",X"00",X"15",X"00",X"15",X"00",X"05", - X"54",X"05",X"54",X"05",X"54",X"15",X"50",X"15",X"50",X"15",X"50",X"15",X"40",X"15",X"40",X"15", - X"55",X"50",X"55",X"50",X"55",X"40",X"55",X"40",X"55",X"40",X"55",X"40",X"55",X"01",X"55",X"01", - X"55",X"50",X"55",X"50",X"55",X"50",X"55",X"50",X"55",X"50",X"55",X"50",X"55",X"50",X"55",X"50", - X"00",X"00",X"00",X"00",X"00",X"02",X"00",X"2A",X"0A",X"AA",X"2A",X"AA",X"AA",X"80",X"00",X"0A", - X"40",X"00",X"40",X"00",X"54",X"00",X"55",X"00",X"55",X"40",X"55",X"50",X"55",X"55",X"55",X"55", - X"55",X"40",X"55",X"00",X"54",X"00",X"50",X"00",X"40",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"54",X"55",X"54",X"55",X"50",X"55",X"50",X"55",X"40", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"00",X"00",X"AA",X"A0",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"02",X"00",X"0A", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"55",X"00",X"54",X"00",X"54",X"00",X"55",X"00",X"55",X"40",X"55",X"50",X"55",X"54",X"55",X"55", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"54",X"55",X"50", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"00",X"00",X"00",X"00",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - 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"05",X"55",X"55", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"55",X"5F",X"55",X"57",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"A8",X"00",X"AA",X"80", - X"05",X"55",X"00",X"55",X"00",X"05",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"00",X"00",X"00",X"00",X"80",X"00",X"A0",X"00",X"AA",X"00",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"55",X"55",X"55",X"55",X"15",X"55",X"01",X"55",X"00",X"55",X"00",X"15",X"00",X"05",X"00",X"00", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"00",X"A8",X"00",X"AA",X"00",X"AA",X"80", - X"00",X"05",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"55",X"55",X"55",X"55",X"55",X"55",X"15",X"55",X"05",X"55",X"01",X"55",X"00",X"55",X"00",X"15", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"AA",X"80",X"AA",X"A0",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"00",X"00",X"00",X"00",X"80",X"00",X"80",X"00",X"A0",X"00",X"A0",X"00",X"AA",X"00",X"AA",X"80", - X"15",X"55",X"15",X"55",X"05",X"55",X"05",X"55",X"01",X"55",X"00",X"55",X"00",X"55",X"00",X"15", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"A8",X"00",X"A8",X"00",X"AA",X"00",X"AA",X"00",X"AA",X"80",X"AA",X"80",X"AA",X"A0",X"AA",X"A0", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"00",X"80",X"00",X"80",X"00",X"A0",X"00", - X"00",X"05",X"00",X"05",X"00",X"05",X"00",X"05",X"00",X"01",X"00",X"01",X"00",X"00",X"00",X"00", - X"00",X"55",X"00",X"55",X"00",X"15",X"00",X"15",X"00",X"15",X"00",X"15",X"00",X"15",X"00",X"15", - X"01",X"55",X"00",X"55",X"00",X"55",X"00",X"55",X"00",X"55",X"00",X"55",X"00",X"55",X"00",X"55", - X"05",X"55",X"01",X"55",X"01",X"55",X"01",X"55",X"01",X"55",X"01",X"55",X"01",X"55",X"01",X"55", - X"AA",X"A8",X"AA",X"A8",X"AA",X"A8",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"AA",X"80",X"AA",X"80",X"AA",X"80",X"AA",X"80",X"AA",X"A0",X"AA",X"A0",X"AA",X"A0",X"AA",X"A0", - X"AA",X"00",X"AA",X"00",X"AA",X"00",X"AA",X"00",X"AA",X"00",X"AA",X"00",X"AA",X"80",X"AA",X"80", - X"A8",X"00",X"A8",X"00",X"A8",X"00",X"A8",X"00",X"A8",X"00",X"A8",X"00",X"A8",X"00",X"A8",X"00", - X"A0",X"00",X"A0",X"00",X"A0",X"00",X"A0",X"00",X"A0",X"00",X"A0",X"00",X"A0",X"00",X"A0",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"15",X"54",X"50",X"05",X"44",X"11",X"44",X"11",X"44",X"11",X"45",X"51",X"50",X"05",X"15",X"54", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"55",X"55",X"D5",X"55",X"B5",X"55",X"AD",X"55",X"B5",X"55",X"AF",X"55",X"AA",X"D5",X"AA",X"BF", - X"55",X"57",X"55",X"5E",X"55",X"7A",X"55",X"5E",X"57",X"DE",X"5E",X"BA",X"7A",X"A2",X"EA",X"AA", - X"AA",X"AA",X"5A",X"AA",X"55",X"AA",X"55",X"6A",X"55",X"5A",X"55",X"56",X"55",X"56",X"55",X"55", - X"EA",X"FB",X"BB",X"AE",X"AE",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"AA",X"AB",X"AA",X"AE",X"AA",X"BA",X"AA",X"EA",X"AA",X"BA",X"AA",X"BA",X"AB",X"EA",X"BE",X"AA", - X"EA",X"AA",X"BA",X"AA",X"AE",X"AA",X"AB",X"AA",X"AE",X"AA",X"BA",X"AA",X"EA",X"AA",X"EA",X"AA", - X"EA",X"AA",X"AE",X"AA",X"AB",X"AA",X"AE",X"AA",X"BA",X"AA",X"EA",X"AA",X"BA",X"AA",X"BA",X"AA", - X"EA",X"AA",X"BA",X"AA",X"AA",X"AA",X"AE",X"AA",X"AB",X"AA",X"AA",X"EA",X"AA",X"AE",X"AA",X"AB", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"AA",X"90",X"AA",X"40",X"AA",X"40",X"A9",X"00",X"A4",X"00",X"90",X"00",X"40",X"00",X"40",X"00", - X"A9",X"00",X"A9",X"00",X"A9",X"00",X"A9",X"00",X"A9",X"00",X"A9",X"00",X"A9",X"00",X"A9",X"00", - X"AA",X"40",X"AA",X"40",X"AA",X"40",X"AA",X"40",X"A9",X"00",X"A9",X"00",X"A9",X"00",X"A9",X"00", - X"AA",X"A4",X"AA",X"A4",X"AA",X"A4",X"AA",X"A4",X"AA",X"A4",X"AA",X"A4",X"AA",X"90",X"AA",X"90", - X"AA",X"A9",X"AA",X"A9",X"AA",X"A9",X"AA",X"A9",X"AA",X"A9",X"AA",X"A9",X"AA",X"A9",X"AA",X"A9", - X"AA",X"A4",X"AA",X"A4",X"AA",X"A9",X"AA",X"A9",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"AA",X"A4",X"AA",X"A4",X"AA",X"90",X"AA",X"90",X"AA",X"90",X"AA",X"90",X"AA",X"90",X"AA",X"A4", - X"AA",X"A9",X"AA",X"A9",X"AA",X"A9",X"AA",X"A9",X"AA",X"A4",X"AA",X"A4",X"AA",X"A4",X"AA",X"A4", - X"AA",X"A9",X"AA",X"A9",X"AA",X"A9",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"A9",X"00",X"AA",X"40",X"AA",X"40",X"AA",X"90",X"AA",X"90",X"AA",X"A4",X"AA",X"A4",X"AA",X"A9", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"40",X"00",X"90",X"00",X"A4",X"00", - X"AA",X"90",X"AA",X"90",X"AA",X"90",X"AA",X"90",X"AA",X"90",X"AA",X"90",X"AA",X"90",X"AA",X"90", - X"A4",X"00",X"A4",X"00",X"A4",X"00",X"A9",X"00",X"A9",X"00",X"A9",X"00",X"A9",X"00",X"A9",X"00", - X"A9",X"00",X"A4",X"00",X"A4",X"00",X"90",X"00",X"90",X"00",X"A4",X"00",X"A4",X"00",X"A4",X"00", - X"AA",X"90",X"AA",X"90",X"AA",X"90",X"AA",X"90",X"AA",X"90",X"AA",X"90",X"AA",X"90",X"AA",X"90", - X"AA",X"A4",X"AA",X"A4",X"AA",X"A4",X"AA",X"A4",X"AA",X"A4",X"AA",X"A4",X"AA",X"A4",X"AA",X"A4", - X"A4",X"00",X"A4",X"00",X"A4",X"00",X"A9",X"00",X"A9",X"00",X"A9",X"00",X"AA",X"40",X"AA",X"90", - X"AA",X"A4",X"AA",X"A4",X"AA",X"A4",X"AA",X"A4",X"AA",X"90",X"AA",X"90",X"AA",X"40",X"AA",X"40", - X"00",X"00",X"00",X"00",X"80",X"00",X"80",X"00",X"80",X"00",X"80",X"00",X"80",X"00",X"80",X"00", - X"C0",X"00",X"C0",X"00",X"C0",X"00",X"C0",X"00",X"E0",X"00",X"E0",X"00",X"F0",X"00",X"B0",X"00", - X"B8",X"00",X"B8",X"00",X"B8",X"00",X"BE",X"00",X"AE",X"00",X"AE",X"00",X"AF",X"80",X"AB",X"80", - X"AB",X"A0",X"AB",X"A0",X"AB",X"E0",X"AA",X"E8",X"AA",X"FA",X"AA",X"BA",X"AA",X"BE",X"AA",X"AE", - X"AA",X"AF",X"AA",X"AB",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"00",X"00",X"05",X"00",X"01",X"04",X"05",X"40",X"01",X"40",X"01",X"51",X"01",X"10",X"01",X"55", - X"00",X"55",X"00",X"44",X"01",X"17",X"00",X"01",X"00",X"05",X"00",X"01",X"00",X"10",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"80",X"00",X"80",X"00", - X"A0",X"00",X"E0",X"00",X"FA",X"00",X"BA",X"80",X"BE",X"A0",X"AF",X"A8",X"AB",X"EA",X"AA",X"FA", - X"40",X"00",X"40",X"01",X"50",X"40",X"55",X"05",X"11",X"45",X"45",X"50",X"54",X"55",X"54",X"D1", - X"45",X"54",X"55",X"05",X"04",X"45",X"00",X"51",X"04",X"00",X"00",X"04",X"00",X"00",X"00",X"00", - X"01",X"DF",X"00",X"77",X"01",X"1D",X"01",X"47",X"00",X"11",X"00",X"44",X"00",X"00",X"00",X"43", - X"11",X"55",X"05",X"51",X"51",X"14",X"55",X"74",X"C5",X"10",X"54",X"54",X"45",X"40",X"4C",X"50", - X"55",X"50",X"54",X"40",X"04",X"00",X"41",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"AA",X"BE",X"AA",X"AF",X"AA",X"AB",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"AA",X"00",X"AA",X"A8",X"FA",X"AA",X"BE",X"AA",X"AF",X"EA",X"AA",X"FF",X"AA",X"AB",X"AA",X"AA", - X"00",X"00",X"00",X"00",X"A8",X"00",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"FF",X"AA",X"AF",X"FF", - X"A8",X"00",X"A0",X"00",X"A0",X"00",X"A0",X"00",X"80",X"00",X"80",X"00",X"80",X"00",X"80",X"00", - X"AA",X"A0",X"AA",X"80",X"AA",X"80",X"AA",X"00",X"AA",X"00",X"A8",X"00",X"A8",X"00",X"A8",X"00", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"A8",X"AA",X"A0", - X"AA",X"00",X"A8",X"00",X"A0",X"00",X"80",X"00",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"A8",X"AA",X"A0",X"AA",X"80", - X"AA",X"AA",X"AA",X"A0",X"AA",X"00",X"A0",X"00",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"A8",X"00",X"00",X"00",X"00",X"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"00",X"03",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"30",X"00",X"30",X"00",X"30",X"00",X"30",X"00",X"30",X"00",X"0C",X"00",X"0C",X"00",X"0C", - X"00",X"C0",X"00",X"C0",X"00",X"C0",X"00",X"C0",X"00",X"C0",X"00",X"C0",X"00",X"C0",X"00",X"30", - X"0C",X"30",X"0C",X"30",X"03",X"30",X"03",X"C0",X"00",X"03",X"00",X"03",X"00",X"03",X"00",X"03", - X"30",X"03",X"30",X"03",X"30",X"C3",X"30",X"0C",X"33",X"0C",X"30",X"0C",X"30",X"0C",X"0C",X"30", - X"30",X"00",X"30",X"00",X"30",X"C0",X"30",X"00",X"33",X"00",X"30",X"00",X"30",X"00",X"30",X"00", - X"03",X"00",X"0C",X"00",X"0C",X"30",X"0C",X"00",X"0C",X"C0",X"0C",X"00",X"0C",X"00",X"30",X"00", - X"00",X"C0",X"00",X"C0",X"00",X"C0",X"00",X"C0",X"03",X"30",X"03",X"00",X"03",X"00",X"03",X"00", - X"00",X"03",X"00",X"03",X"00",X"0C",X"00",X"0C",X"00",X"0C",X"00",X"30",X"00",X"30",X"00",X"30", - X"00",X"00",X"00",X"00",X"00",X"00",X"C0",X"00",X"30",X"00",X"0F",X"00",X"00",X"FF",X"00",X"00", - X"30",X"03",X"C0",X"00",X"CC",X"00",X"C0",X"00",X"30",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"C3",X"00",X"C3",X"03",X"03",X"03",X"03",X"03",X"03",X"0C",X"03",X"0C",X"03",X"0C",X"03", - X"0C",X"00",X"0C",X"03",X"30",X"03",X"30",X"03",X"30",X"0F",X"30",X"0F",X"C0",X"33",X"C0",X"33", - X"00",X"03",X"00",X"0F",X"0C",X"33",X"00",X"33",X"30",X"C3",X"00",X"C3",X"03",X"03",X"03",X"03", - X"0C",X"00",X"0C",X"00",X"30",X"30",X"30",X"00",X"C3",X"00",X"C0",X"00",X"C0",X"00",X"00",X"00", - X"00",X"0C",X"00",X"30",X"00",X"30",X"00",X"C0",X"00",X"C0",X"03",X"30",X"03",X"00",X"0C",X"00", - X"03",X"00",X"0C",X"00",X"30",X"00",X"30",X"00",X"C0",X"00",X"C0",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"03",X"0C",X"03",X"00",X"0C",X"30",X"30",X"00",X"30",X"00",X"C0",X"00",X"C0", - X"00",X"3F",X"00",X"3F",X"0C",X"3F",X"00",X"0F",X"30",X"0F",X"00",X"0F",X"00",X"03",X"00",X"03", - X"00",X"FF",X"00",X"FF",X"0C",X"FF",X"00",X"FF",X"30",X"FF",X"00",X"FF",X"00",X"FF",X"00",X"FF", - X"0D",X"FF",X"0D",X"FF",X"0D",X"FF",X"03",X"FF",X"33",X"FF",X"03",X"FF",X"03",X"FF",X"03",X"FF", - X"F5",X"FF",X"F5",X"FF",X"FD",X"FF",X"F5",X"FF",X"F5",X"FF",X"3D",X"FF",X"3D",X"FF",X"0D",X"FF", - X"D5",X"FF",X"D5",X"FF",X"FD",X"FF",X"F5",X"FF",X"F5",X"FF",X"F5",X"FF",X"F5",X"FF",X"F5",X"FF", - X"F5",X"7F",X"F5",X"7F",X"FD",X"7F",X"D5",X"7F",X"F5",X"7F",X"D5",X"FF",X"D5",X"FF",X"D5",X"FF", - X"FC",X"D7",X"FF",X"5F",X"FF",X"5F",X"FD",X"5F",X"FD",X"5F",X"FD",X"5F",X"F5",X"5F",X"F5",X"5F", - X"FF",X"1A",X"FC",X"09",X"FC",X"0A",X"FC",X"05",X"3C",X"01",X"FC",X"01",X"FC",X"0F",X"FC",X"37", - X"F5",X"55",X"FD",X"55",X"FD",X"55",X"FD",X"55",X"FD",X"55",X"FD",X"55",X"FD",X"55",X"FD",X"D6", - X"3F",X"55",X"3D",X"55",X"3D",X"55",X"35",X"55",X"35",X"55",X"D5",X"55",X"D5",X"55",X"F5",X"55", - X"03",X"FD",X"03",X"F5",X"0F",X"F5",X"0F",X"F5",X"3F",X"D5",X"0F",X"D5",X"0F",X"D5",X"3F",X"55", - X"03",X"0F",X"0C",X"3F",X"0C",X"3F",X"30",X"3F",X"30",X"FF",X"C3",X"FF",X"C0",X"FF",X"00",X"FD", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"00",X"03",X"00",X"0F",X"00",X"3F",X"00",X"CF", - X"00",X"FF",X"00",X"3F",X"00",X"3F",X"00",X"0F",X"00",X"03",X"00",X"00",X"00",X"00",X"00",X"00", - X"FF",X"FF",X"FF",X"FF",X"3F",X"FF",X"3F",X"FF",X"0F",X"FF",X"0F",X"FF",X"03",X"FF",X"00",X"FF", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"FF",X"15",X"FF",X"15",X"FF",X"55",X"FF",X"D5",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"94",X"00",X"90",X"00",X"90",X"00",X"7C",X"00",X"FC",X"01",X"FC",X"01",X"FF",X"05",X"FF",X"05", - X"55",X"AA",X"55",X"AA",X"55",X"6A",X"55",X"4A",X"A9",X"4A",X"99",X"42",X"A9",X"02",X"A4",X"00", - X"56",X"AA",X"5A",X"AA",X"5A",X"AA",X"5A",X"AA",X"5A",X"AA",X"5A",X"AA",X"56",X"AA",X"56",X"AA", - X"5A",X"AA",X"5A",X"AA",X"5A",X"AA",X"5A",X"AA",X"5A",X"AA",X"56",X"AA",X"56",X"AA",X"56",X"AA", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"EA",X"AA",X"5A",X"AA",X"5A",X"AA", - X"00",X"AA",X"00",X"AA",X"02",X"AA",X"02",X"AA",X"0A",X"AA",X"0A",X"AA",X"2A",X"AA",X"2A",X"AA", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"02",X"00",X"0A",X"00",X"0A",X"00",X"2A",X"00",X"2A", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"3F",X"FC",X"0F",X"F0", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"FF",X"D5",X"FF",X"D5",X"FF",X"D5",X"FF",X"F5",X"FF",X"F5",X"FF",X"F5",X"FF",X"FD",X"FF",X"FF", - X"55",X"6A",X"55",X"5A",X"55",X"56",X"F5",X"56",X"FD",X"55",X"FD",X"55",X"FF",X"55",X"FF",X"55", - X"AA",X"AA",X"2A",X"AA",X"2A",X"AA",X"5A",X"AA",X"56",X"AA",X"56",X"AA",X"55",X"AA",X"55",X"6A", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"02",X"AA",X"0A",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"02",X"00",X"0A",X"00",X"2A",X"00",X"AA", - X"FE",X"A0",X"FE",X"A0",X"FE",X"80",X"FA",X"00",X"E8",X"00",X"80",X"00",X"00",X"00",X"00",X"00", - X"FF",X"EA",X"FF",X"EA",X"FF",X"EA",X"FF",X"EA",X"FF",X"EA",X"FF",X"EA",X"FF",X"AA",X"FF",X"A8", - X"FF",X"FA",X"FF",X"FA",X"FF",X"FA",X"FF",X"FA",X"FF",X"FA",X"FF",X"EA",X"FF",X"EA",X"FF",X"EA", - X"FF",X"FE",X"FF",X"FE",X"FF",X"FE",X"FF",X"FA",X"FF",X"FA",X"FF",X"FA",X"FF",X"FA",X"FF",X"FA", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"F7",X"D7",X"FF",X"DF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"5D",X"5D",X"5D",X"7D",X"5D",X"7D",X"5D",X"75",X"5D",X"F5",X"5D",X"F5",X"7D",X"F5",X"75",X"D7", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"6A",X"AA",X"56",X"AA",X"57",X"6A", - X"00",X"AA",X"02",X"AA",X"2A",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"0A",X"00",X"2A", - X"FC",X"00",X"F8",X"00",X"F0",X"00",X"E0",X"00",X"C0",X"00",X"C0",X"00",X"00",X"00",X"00",X"00", - X"AA",X"FA",X"AA",X"EA",X"AB",X"EA",X"AB",X"E8",X"AF",X"88",X"AF",X"00",X"BE",X"00",X"BC",X"00", - X"AA",X"BF",X"AA",X"BF",X"AA",X"BF",X"AA",X"FE",X"AA",X"FE",X"AA",X"FE",X"AA",X"FA",X"AA",X"FA", - X"EA",X"AB",X"EA",X"AB",X"EA",X"AF",X"AA",X"AF",X"AA",X"AF",X"AA",X"AF",X"AA",X"BF",X"AA",X"BF", - X"FF",X"EA",X"FF",X"EA",X"FF",X"AA",X"FF",X"AA",X"FE",X"AA",X"FE",X"AA",X"FA",X"AA",X"FA",X"AB", - X"5F",X"7F",X"7D",X"7D",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"FF",X"FA",X"FF",X"EA",X"FF",X"EA", - X"55",X"6A",X"75",X"FA",X"75",X"F7",X"F5",X"D7",X"F7",X"D7",X"D7",X"D7",X"D7",X"5F",X"D7",X"5F", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"AA",X"AB",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"AA",X"AB",X"AA",X"AB",X"AA",X"AB",X"AA",X"AB",X"AA",X"AB",X"AA",X"AB",X"AA",X"AB",X"AA",X"AB", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"AA",X"BF",X"AA",X"BF",X"AA",X"BF",X"AA",X"BF",X"AA",X"BF",X"AA",X"FF",X"AA",X"AB",X"AA",X"AB", - X"AA",X"FF",X"AA",X"FF",X"AA",X"BF",X"AA",X"BF",X"AA",X"BF",X"AA",X"BF",X"AA",X"BF",X"AA",X"BF", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"0A",X"03",X"FE",X"BF",X"FE",X"AB",X"FE", - X"01",X"55",X"01",X"55",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"AE",X"FE",X"8F",X"FA",X"03",X"FA",X"03",X"FA",X"00",X"FA",X"00",X"FD",X"00",X"5F",X"00",X"55", - X"FF",X"BF",X"FF",X"BF",X"FE",X"BF",X"FE",X"FF",X"FE",X"FE",X"BE",X"FE",X"BE",X"FE",X"AE",X"FE", - X"FE",X"BF",X"FF",X"BF",X"FF",X"BF",X"FF",X"BF",X"FF",X"BF",X"FF",X"BF",X"FF",X"BF",X"FF",X"BF", - X"BF",X"FE",X"BF",X"FE",X"BF",X"FE",X"FF",X"FE",X"FF",X"FF",X"FA",X"FF",X"FA",X"FF",X"FE",X"FF", - X"55",X"A0",X"5A",X"A0",X"AA",X"80",X"AA",X"E8",X"AB",X"E8",X"AB",X"F8",X"AF",X"FA",X"AF",X"FA", - X"BF",X"A5",X"AF",X"55",X"ED",X"55",X"D5",X"55",X"D5",X"55",X"D5",X"55",X"55",X"55",X"55",X"59", - X"FE",X"AA",X"FE",X"AA",X"FE",X"AA",X"FE",X"AA",X"FE",X"AA",X"FE",X"AA",X"FE",X"AA",X"FE",X"AA", - X"FE",X"AA",X"BE",X"AA",X"AA",X"AA",X"BE",X"AA",X"BF",X"AA",X"BF",X"AA",X"FF",X"AA",X"FE",X"AA", - X"FF",X"F6",X"FE",X"56",X"FE",X"6A",X"FE",X"AA",X"FE",X"AA",X"FE",X"AA",X"FA",X"AA",X"FA",X"AA", - X"BF",X"F6",X"BF",X"F6",X"BF",X"F6",X"BF",X"F6",X"BF",X"F6",X"FF",X"F6",X"FF",X"F6",X"FF",X"F6", - X"AF",X"F6",X"AF",X"F6",X"BF",X"F6",X"BF",X"F6",X"BF",X"F6",X"BF",X"F6",X"BF",X"F6",X"BF",X"F6", - X"AF",X"FA",X"AF",X"FA",X"AF",X"FA",X"AF",X"FA",X"AF",X"EA",X"AF",X"F6",X"AF",X"F6",X"AF",X"F6", - X"FF",X"DA",X"FF",X"DA",X"FF",X"DA",X"BF",X"EA",X"BF",X"FA",X"AF",X"FA",X"AF",X"FA",X"AF",X"FA", - X"FF",X"6A",X"FF",X"5A",X"FF",X"DA",X"FF",X"DA",X"FF",X"DA",X"FF",X"DA",X"FF",X"DA",X"FF",X"DA", - X"AA",X"95",X"AA",X"95",X"EA",X"A5",X"D6",X"A5",X"F5",X"A9",X"FD",X"A9",X"FD",X"69",X"FF",X"69", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"04",X"A0",X"15",X"A5",X"55",X"A5",X"55",X"A9",X"55", - X"54",X"00",X"50",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"95",X"00",X"54",X"00",X"54",X"00",X"54",X"00",X"5C",X"00",X"7C",X"00",X"F4",X"00",X"54",X"00", - X"95",X"00",X"95",X"00",X"95",X"00",X"95",X"00",X"95",X"00",X"95",X"00",X"95",X"00",X"95",X"00", - X"95",X"00",X"A5",X"00",X"E5",X"00",X"E5",X"00",X"E5",X"00",X"E5",X"00",X"E5",X"00",X"A5",X"00", - X"00",X"00",X"00",X"00",X"80",X"00",X"80",X"00",X"80",X"00",X"90",X"00",X"94",X"00",X"95",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"00",X"00",X"00", - X"AA",X"FF",X"AA",X"FE",X"A8",X"3E",X"A0",X"3F",X"A0",X"0F",X"80",X"0F",X"80",X"03",X"00",X"00", - X"5F",X"EF",X"5F",X"EF",X"6B",X"AF",X"6B",X"AF",X"6B",X"BF",X"6B",X"BF",X"AB",X"BF",X"AB",X"FF", - X"97",X"AF",X"97",X"EF",X"97",X"EF",X"97",X"EF",X"5F",X"EF",X"5F",X"EF",X"5F",X"EF",X"5F",X"EF", - X"A5",X"7B",X"A5",X"7A",X"A5",X"7E",X"A5",X"FE",X"95",X"FE",X"95",X"FF",X"95",X"FF",X"96",X"BF", - X"A9",X"55",X"A9",X"55",X"A9",X"54",X"A9",X"54",X"A9",X"50",X"A9",X"5C",X"A5",X"5F",X"A5",X"5B", - X"AA",X"55",X"AA",X"55",X"AA",X"55",X"A9",X"55",X"A9",X"55",X"A9",X"55",X"A9",X"55",X"A9",X"55", - X"AA",X"50",X"AA",X"50",X"AA",X"50",X"AA",X"50",X"AA",X"54",X"AA",X"54",X"AA",X"54",X"AA",X"55", - X"AA",X"55",X"AA",X"55",X"AA",X"55",X"AA",X"55",X"AA",X"55",X"AA",X"50",X"AA",X"40",X"AA",X"40", - X"A4",X"04",X"A5",X"00",X"A9",X"00",X"A9",X"40",X"A9",X"41",X"AA",X"55",X"AA",X"55",X"AA",X"55", - X"55",X"00",X"54",X"01",X"54",X"04",X"51",X"44",X"51",X"54",X"90",X"54",X"90",X"54",X"A4",X"14", - X"55",X"50",X"55",X"40",X"55",X"40",X"55",X"40",X"55",X"00",X"55",X"00",X"55",X"00",X"55",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"40",X"00",X"50",X"00", - X"55",X"00",X"55",X"00",X"55",X"00",X"55",X"00",X"54",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"BD",X"54",X"BD",X"54",X"FD",X"50",X"F5",X"40",X"F5",X"40",X"D5",X"00",X"D5",X"00",X"D5",X"00", - X"EF",X"54",X"EF",X"54",X"EF",X"54",X"EF",X"54",X"AD",X"54",X"BD",X"54",X"BD",X"54",X"BD",X"54", - X"AF",X"00",X"EF",X"00",X"EF",X"00",X"EF",X"00",X"EF",X"00",X"EF",X"00",X"EF",X"00",X"EF",X"40", - X"F0",X"00",X"F0",X"00",X"F0",X"00",X"FC",X"00",X"BC",X"00",X"BC",X"00",X"BC",X"00",X"BF",X"00", - X"00",X"00",X"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"14",X"00",X"54",X"00",X"50",X"00",X"50",X"00",X"40",X"00",X"40",X"00",X"40",X"00",X"00",X"00", - X"00",X"10",X"00",X"40",X"00",X"40",X"01",X"40",X"01",X"00",X"05",X"00",X"05",X"00",X"14",X"00", - X"01",X"00",X"04",X"00",X"54",X"00",X"54",X"00",X"54",X"00",X"54",X"00",X"54",X"10",X"10",X"10", - X"00",X"00",X"10",X"00",X"10",X"00",X"40",X"00",X"40",X"00",X"40",X"00",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"30",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"FF",X"FF",X"FF",X"FF",X"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"2A",X"00",X"0A",X"00",X"0A",X"00",X"02",X"00",X"02",X"00",X"00",X"00",X"00",X"00",X"00", - X"0A",X"AA",X"0A",X"AA",X"02",X"AA",X"02",X"AA",X"02",X"AA",X"00",X"AA",X"00",X"AA",X"00",X"2A", - X"2A",X"AA",X"2A",X"AA",X"2A",X"AA",X"2A",X"AA",X"2A",X"AA",X"2A",X"AA",X"0A",X"AA",X"0A",X"AA", - X"0A",X"AA",X"02",X"AA",X"02",X"AA",X"00",X"AA",X"00",X"2A",X"00",X"0A",X"00",X"02",X"00",X"00", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"2A",X"AA",X"2A",X"AA", - X"2A",X"AA",X"0A",X"AA",X"02",X"AA",X"00",X"2A",X"00",X"0A",X"00",X"02",X"00",X"00",X"00",X"00", - X"0A",X"AA",X"02",X"AA",X"00",X"AA",X"00",X"2A",X"00",X"0A",X"00",X"00",X"00",X"00",X"00",X"00", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"0A",X"AA",X"00",X"AA", - X"AA",X"80",X"AA",X"80",X"AA",X"00",X"AA",X"00",X"A8",X"00",X"A0",X"00",X"80",X"00",X"00",X"00", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"A8",X"AA",X"A8",X"AA",X"A0", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"80",X"00",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"A0",X"00",X"A0",X"00",X"A0",X"00",X"A0",X"00",X"A0",X"00",X"A0",X"00",X"A0",X"00",X"80",X"00", - X"00",X"00",X"80",X"00",X"80",X"00",X"80",X"00",X"A0",X"00",X"A0",X"00",X"A0",X"00",X"A0",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"0A",X"AA",X"0A",X"AA",X"0A",X"AA",X"0A",X"AA",X"2A",X"AA",X"2A",X"AA",X"2A",X"AA",X"AA",X"AA", - X"02",X"AA",X"02",X"AA",X"02",X"AA",X"02",X"AA",X"02",X"AA",X"02",X"AA",X"02",X"AA",X"02",X"AA", - X"AA",X"00",X"AA",X"80",X"AA",X"A0",X"AA",X"A8",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"80",X"00",X"A0",X"00",X"A0",X"00",X"A0",X"00",X"A8",X"00",X"A8",X"00",X"A8",X"00",X"AA",X"00", - X"00",X"00",X"00",X"00",X"80",X"00",X"80",X"00",X"80",X"00",X"80",X"00",X"80",X"00",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"AA",X"AA",X"AA",X"AA",X"82",X"AA",X"00",X"AA",X"00",X"2A",X"00",X"0A",X"00",X"02",X"00",X"00", - X"00",X"02",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"00",X"A0",X"00",X"A8",X"00", - X"02",X"AA",X"02",X"AA",X"02",X"AA",X"02",X"AA",X"00",X"AA",X"00",X"AA",X"00",X"2A",X"00",X"0A", - X"0A",X"AA",X"0A",X"AA",X"0A",X"AA",X"0A",X"AA",X"0A",X"AA",X"0A",X"AA",X"0A",X"AA",X"0A",X"AA", - X"02",X"AA",X"02",X"AA",X"02",X"AA",X"02",X"AA",X"02",X"AA",X"02",X"AA",X"02",X"AA",X"02",X"AA", - X"A8",X"0A",X"A8",X"0A",X"A8",X"0A",X"A0",X"0A",X"A0",X"0A",X"80",X"2A",X"80",X"2A",X"00",X"AA", - X"AA",X"80",X"AA",X"80",X"AA",X"00",X"AA",X"02",X"AA",X"02",X"AA",X"02",X"AA",X"02",X"AA",X"02", - X"AA",X"02",X"AA",X"02",X"AA",X"02",X"A8",X"02",X"A8",X"02",X"A8",X"0A",X"A0",X"0A",X"A0",X"0A", - X"AA",X"80",X"AA",X"80",X"AA",X"80",X"AA",X"80",X"AA",X"80",X"AA",X"80",X"AA",X"02",X"AA",X"02", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"AA",X"02",X"AA",X"0A",X"AA",X"2A",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"A8",X"AA",X"A0",X"AA",X"80",X"AA",X"00", - X"A8",X"00",X"A0",X"00",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"02",X"00",X"0A",X"00",X"2A",X"00",X"AA",X"02",X"AA",X"0A",X"AA",X"2A",X"AA", - X"AA",X"00",X"AA",X"00",X"A8",X"00",X"A8",X"00",X"A0",X"00",X"A0",X"00",X"80",X"00",X"00",X"00", - X"AA",X"80",X"AA",X"80",X"AA",X"80",X"AA",X"80",X"AA",X"80",X"AA",X"00",X"AA",X"00",X"AA",X"00", - X"AA",X"A0",X"AA",X"A0",X"AA",X"A0",X"AA",X"A0",X"AA",X"A0",X"AA",X"A0",X"AA",X"A0",X"AA",X"A0", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AE",X"AA",X"AA",X"AA",X"AA",X"AA", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"BA",X"AA",X"AA",X"AA", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"AA",X"02",X"AA",X"02",X"AA",X"02",X"AA",X"0A",X"AA",X"0A",X"AA",X"2A",X"AA",X"AA",X"AA", - X"00",X"2A",X"00",X"2A",X"00",X"2A",X"00",X"2A",X"00",X"2A",X"00",X"AA",X"00",X"AA",X"00",X"AA", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"00",X"00",X"00",X"00", - X"AA",X"A0",X"AA",X"A0",X"AA",X"A0",X"AA",X"A0",X"AA",X"A0",X"AA",X"A0",X"AA",X"A0",X"AA",X"A0", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"0A",X"00",X"0A",X"00",X"0A",X"00",X"0A",X"00",X"0A",X"00",X"0A",X"00",X"0A",X"00",X"0A", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"55",X"95",X"55",X"95",X"55",X"95",X"55",X"A5",X"55", - X"7F",X"33",X"57",X"CF",X"5F",X"FF",X"6B",X"FF",X"5A",X"AA",X"AA",X"AA",X"56",X"AA",X"55",X"FF", - X"D5",X"55",X"FD",X"55",X"55",X"55",X"95",X"55",X"A9",X"55",X"95",X"55",X"55",X"56",X"F5",X"56", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"2A",X"AA",X"0A",X"AA",X"0A",X"AA",X"02",X"AA",X"00",X"AA", - X"A9",X"55",X"AA",X"55",X"AA",X"95",X"AA",X"A5",X"AA",X"A9",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"5F",X"FF",X"7F",X"FF",X"5F",X"FF",X"56",X"AA",X"55",X"AA",X"95",X"69",X"A9",X"59",X"AA",X"AA", - X"FD",X"56",X"F5",X"5A",X"D5",X"5A",X"55",X"6A",X"55",X"6A",X"56",X"AA",X"6A",X"AA",X"AA",X"AA", - X"00",X"0A",X"00",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"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"2A",X"AA",X"02",X"AA",X"00",X"2A",X"00",X"0A",X"00",X"00", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"0A",X"A0", - X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"00",X"A0",X"00",X"A0",X"00",X"A8",X"00",X"AA",X"00", - X"AA",X"A0",X"AA",X"A8",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"00",X"A8",X"00",X"AA",X"80",X"AA",X"A0",X"AA",X"AA", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"A0",X"0A", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"FF",X"CA",X"FF",X"F2",X"FF",X"FC",X"FF",X"FC",X"AA",X"FC",X"AA",X"BC",X"AA",X"BC",X"AA",X"BC", - X"F2",X"AA",X"F2",X"AA",X"F2",X"AA",X"F2",X"AA",X"F2",X"AA",X"F2",X"BF",X"B2",X"BF",X"A2",X"BF", - X"AF",X"FF",X"BF",X"FF",X"FF",X"FF",X"FC",X"AA",X"F2",X"AA",X"F2",X"AA",X"F2",X"AA",X"F2",X"AA", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"BF",X"AA",X"BF",X"AA",X"BF",X"AA",X"BF", - X"F2",X"AA",X"F2",X"AA",X"F2",X"AA",X"F2",X"AA",X"F2",X"BF",X"F2",X"BF",X"F2",X"BF",X"F2",X"BF", - X"AF",X"CA",X"AF",X"CA",X"AF",X"CA",X"AF",X"CA",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"FF",X"FC",X"FF",X"FC",X"FF",X"FC",X"FF",X"FC", - X"FA",X"AF",X"FE",X"BF",X"FF",X"FF",X"FF",X"FF",X"AF",X"F2",X"AF",X"CA",X"AF",X"CA",X"AF",X"CA", - X"FF",X"FF",X"FF",X"CA",X"F2",X"AA",X"F2",X"AA",X"F2",X"BF",X"F2",X"BF",X"F2",X"BF",X"F2",X"BF", - X"2A",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"AA",X"AA",X"AA",X"AA",X"AA",X"BF",X"AF",X"FF", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"AF",X"FF",X"FF",X"FF",X"FF",X"F2",X"FC",X"AA", - X"FF",X"FC",X"FF",X"FC",X"FF",X"FC",X"FF",X"FC",X"FF",X"2A",X"CA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"F2",X"AA",X"F2",X"AA",X"F2",X"AA",X"F2",X"AA",X"F2",X"AA",X"F2",X"AA",X"F2",X"AA",X"F2",X"AA", - X"AF",X"2A",X"AF",X"2A",X"AF",X"2A",X"AF",X"2A",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"AA",X"AA",X"AF",X"2A",X"AF",X"2A",X"AF",X"2A",X"AF",X"2A",X"AF",X"2A",X"AF",X"2A",X"AF",X"2A", - X"AA",X"BC",X"AA",X"BC",X"AA",X"BC",X"AA",X"BC",X"AA",X"BC",X"AA",X"BC",X"AA",X"BC",X"AA",X"BC", - X"02",X"04",X"23",X"14",X"FB",X"50",X"EB",X"40",X"FB",X"50",X"23",X"14",X"02",X"04",X"00",X"00", - X"FF",X"FF",X"EA",X"AA",X"EA",X"AA",X"EA",X"AA",X"EA",X"AA",X"EA",X"AA",X"EA",X"AA",X"EA",X"AA", - X"AA",X"EA",X"AA",X"FA",X"AA",X"BA",X"AA",X"BE",X"AA",X"AE",X"AA",X"AF",X"AA",X"AA",X"AA",X"AA", - X"AE",X"AA",X"AE",X"AA",X"AE",X"AA",X"AE",X"AA",X"AF",X"AA",X"AB",X"AA",X"AB",X"AA",X"AB",X"EA", - X"AA",X"FA",X"AA",X"EA",X"AA",X"EA",X"AA",X"EA",X"AA",X"EA",X"EB",X"EA",X"FF",X"AA",X"AA",X"AA", - X"AA",X"BA",X"AA",X"BA",X"AA",X"BA",X"AA",X"BA",X"AA",X"BA",X"AA",X"BA",X"AA",X"BA",X"AA",X"BA", - X"00",X"C0",X"00",X"C0",X"00",X"EA",X"AA",X"FA",X"AA",X"BA",X"AA",X"BA",X"AA",X"FF",X"FF",X"FA", - X"0C",X"00",X"0F",X"00",X"03",X"00",X"03",X"00",X"03",X"00",X"03",X"00",X"03",X"C0",X"00",X"C0", - X"30",X"04",X"31",X"44",X"31",X"11",X"30",X"10",X"30",X"71",X"30",X"04",X"3C",X"10",X"0C",X"00", - X"10",X"00",X"01",X"04",X"11",X"10",X"00",X"41",X"C4",X"30",X"C4",X"44",X"C1",X"10",X"F0",X"00", - X"10",X"0F",X"10",X"43",X"41",X"13",X"04",X"43",X"13",X"13",X"44",X"03",X"01",X"10",X"50",X"00", - X"00",X"C1",X"10",X"F0",X"00",X"30",X"44",X"30",X"13",X"3C",X"41",X"0C",X"10",X"4C",X"00",X"4C", - X"4F",X"01",X"0F",X"C0",X"43",X"C4",X"13",X"C0",X"03",X"CC",X"10",X"C1",X"44",X"C4",X"00",X"C0", - X"00",X"00",X"3C",X"30",X"3C",X"00",X"3C",X"00",X"3F",X"04",X"3F",X"30",X"0F",X"00",X"0F",X"04", - X"30",X"00",X"31",X"30",X"30",X"00",X"31",X"10",X"30",X"04",X"03",X"10",X"00",X"00",X"00",X"04", - X"3C",X"00",X"30",X"00",X"30",X"00",X"30",X"00",X"30",X"00",X"30",X"10",X"31",X"00",X"30",X"00", - X"0C",X"00",X"0C",X"00",X"0C",X"00",X"0C",X"00",X"0C",X"00",X"0C",X"00",X"0C",X"00",X"0C",X"00", - X"59",X"AA",X"D5",X"AA",X"B5",X"9A",X"AD",X"56",X"B5",X"56",X"AF",X"55",X"AA",X"D5",X"AA",X"BF", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"A6",X"AA",X"95",X"AA",X"96",X"AA",X"6A",X"AA", - X"A6",X"97",X"A6",X"5E",X"95",X"7A",X"55",X"5E",X"57",X"DE",X"5E",X"BA",X"7A",X"AA",X"EA",X"AA", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"9A",X"AA",X"96",X"AA",X"66",X"AA",X"55", - X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"F2",X"FF",X"F2",X"FF",X"F2",X"FF",X"F2",X"FF", - X"AF",X"FF",X"BF",X"FF",X"BC",X"AA",X"FC",X"AA",X"FC",X"AA",X"FC",X"AA",X"FC",X"AA",X"F2",X"AA", - X"FF",X"FC",X"FF",X"FC",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA",X"AA", - X"A0",X"00",X"A0",X"00",X"A0",X"00",X"A0",X"00",X"A0",X"00",X"A0",X"00",X"A0",X"00",X"A0",X"00", - X"80",X"00",X"80",X"00",X"80",X"00",X"80",X"00",X"80",X"00",X"80",X"00",X"80",X"00",X"80",X"00", - X"02",X"80",X"02",X"80",X"02",X"80",X"02",X"80",X"02",X"80",X"02",X"80",X"02",X"80",X"02",X"80"); -begin -process(clk) -begin - if rising_edge(clk) then - data <= rom_data(to_integer(unsigned(addr))); - end if; -end process; -end architecture; diff --git a/Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/sdram.sv b/Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/sdram.sv index 49ea563d..80e2db48 100644 --- a/Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/sdram.sv +++ b/Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/sdram.sv @@ -63,6 +63,8 @@ module sdram ( output reg [31:0] sp_q ); +parameter MHZ = 16'd80; // 80 MHz default clock, set it to proper value to calculate refresh rate + localparam RASCAS_DELAY = 3'd2; // tRCD=20ns -> 2 cycles@<100MHz localparam BURST_LENGTH = 3'b001; // 000=1, 001=2, 010=4, 011=8 localparam ACCESS_TYPE = 1'b0; // 0=sequential, 1=interleaved @@ -73,7 +75,7 @@ localparam NO_WRITE_BURST = 1'b1; // 0= write burst enabled, 1=only single acc localparam MODE = { 3'b000, NO_WRITE_BURST, OP_MODE, CAS_LATENCY, ACCESS_TYPE, BURST_LENGTH}; // 64ms/8192 rows = 7.8us -> 842 cycles@108MHz -localparam RFRSH_CYCLES = 10'd842; +localparam RFRSH_CYCLES = 16'd78*MHZ/4'd10; // --------------------------------------------------------------------- // ------------------------ cycle state machine ------------------------ @@ -81,7 +83,7 @@ localparam RFRSH_CYCLES = 10'd842; /* SDRAM state machine for 2 bank interleaved access - 1 word burst, CL2 + 2 words burst, CL2 cmd issued registered 0 RAS0 cas1 - data0 read burst terminated 1 ras0 @@ -159,6 +161,9 @@ reg [1:0] oe_latch; reg [1:0] we_latch; reg [1:0] ds[2]; +reg port1_state; +reg port2_state; + localparam PORT_NONE = 2'd0; localparam PORT_CPU1 = 2'd1; localparam PORT_CPU2 = 2'd2; @@ -177,7 +182,7 @@ always @(*) begin if (refresh) begin next_port[0] = PORT_NONE; addr_latch_next[0] = addr_latch[0]; - end else if (port1_req ^ port1_ack) begin + end else if (port1_req ^ port1_state) begin next_port[0] = PORT_REQ; addr_latch_next[0] = { 1'b0, port1_a }; end else if (cpu1_addr != addr_last[PORT_CPU1]) begin @@ -194,7 +199,7 @@ end // PORT1: bank 2,3 always @(*) begin - if (port2_req ^ port2_ack) begin + if (port2_req ^ port2_state) begin next_port[1] = PORT_REQ; addr_latch_next[1] = { 1'b1, port2_a }; end else if (sp_addr != addr_last2[PORT_SP]) begin @@ -251,6 +256,7 @@ always @(posedge clk) begin { oe_latch[0], we_latch[0] } <= { ~port1_we, port1_we }; ds[0] <= port1_ds; din_latch[0] <= port1_d; + port1_state <= port1_req; end else begin { oe_latch[0], we_latch[0] } <= 2'b10; ds[0] <= 2'b11; @@ -274,6 +280,7 @@ always @(posedge clk) begin { oe_latch[1], we_latch[1] } <= { ~port1_we, port1_we }; ds[1] <= port2_ds; din_latch[1] <= port2_d; + port2_state <= port2_req; end else begin { oe_latch[1], we_latch[1] } <= 2'b10; ds[1] <= 2'b11; diff --git a/Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/z80ctc_top.vhd b/Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/z80ctc_top.vhd new file mode 100644 index 00000000..b9efaca9 --- /dev/null +++ b/Arcade_MiST/Midway MCR 2/Journey_MiST/rtl/z80ctc_top.vhd @@ -0,0 +1,185 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; +use ieee.numeric_std.all; + +-- Z80-CTC (MK3882) top-level +entity z80ctc_top is +port( + clock : in std_logic; + clock_ena : in std_logic; + reset : in std_logic; + + din : in std_logic_vector(7 downto 0); + dout : out std_logic_vector(7 downto 0); + cpu_din : in std_logic_vector(7 downto 0); -- mirror the input to the cpu, for RETI detection + + ce_n : in std_logic; + cs : in std_logic_vector(1 downto 0); + m1_n : in std_logic; + iorq_n : in std_logic; + rd_n : in std_logic; + int_n : out std_logic; + + trg0 : in std_logic; + to0 : out std_logic; + + trg1 : in std_logic; + to1 : out std_logic; + + trg2 : in std_logic; + to2 : out std_logic; + + trg3 : in std_logic + ); +end z80ctc_top; + +architecture struct of z80ctc_top is + + signal cpu_int_ack_n : std_logic; + + signal ctc_controler_we : std_logic; + signal ctc_controler_do : std_logic_vector(7 downto 0); + signal ctc_int_ack : std_logic; + signal ctc_int_ack_phase : std_logic_vector(1 downto 0); + + signal ctc_counter_0_we : std_logic; + signal ctc_counter_0_do : std_logic_vector(7 downto 0); + signal ctc_counter_0_int : std_logic; + + signal ctc_counter_1_we : std_logic; + signal ctc_counter_1_do : std_logic_vector(7 downto 0); + signal ctc_counter_1_int : std_logic; + + signal ctc_counter_2_we : std_logic; + signal ctc_counter_2_do : std_logic_vector(7 downto 0); + signal ctc_counter_2_int : std_logic; + + signal ctc_counter_3_we : std_logic; + signal ctc_counter_3_do : std_logic_vector(7 downto 0); + signal ctc_counter_3_int : std_logic; + +begin + +process (clock, reset) +begin + if reset = '1' then + ctc_int_ack_phase <= "00"; + elsif rising_edge(clock) then + -- decode ED4D (reti) + if clock_ena = '1' and rd_n = '0' and m1_n = '0' then + case ctc_int_ack_phase is + when "00" => if cpu_din = x"ED" then ctc_int_ack_phase <= "01"; end if; + when "01" => if cpu_din = x"4D" then ctc_int_ack_phase <= "11"; elsif cpu_din /= x"ED" then ctc_int_ack_phase <= "00"; end if; + when "11" => if cpu_din = x"ED" then ctc_int_ack_phase <= "01"; elsif cpu_din /= x"4D" then ctc_int_ack_phase <= "00"; end if; + when others => ctc_int_ack_phase <= "00"; + end case; + end if; + end if; +end process; + +ctc_int_ack <= '1' when ctc_int_ack_phase = "11" else '0'; +cpu_int_ack_n <= iorq_n or m1_n; + +ctc_controler_we <= '1' when ce_n = '0' and iorq_n = '0' and m1_n = '1' and rd_n = '1' and cs = "00" else '0'; +ctc_counter_0_we <= '1' when ce_n = '0' and iorq_n = '0' and m1_n = '1' and rd_n = '1' and cs = "00" else '0'; +ctc_counter_1_we <= '1' when ce_n = '0' and iorq_n = '0' and m1_n = '1' and rd_n = '1' and cs = "01" else '0'; +ctc_counter_2_we <= '1' when ce_n = '0' and iorq_n = '0' and m1_n = '1' and rd_n = '1' and cs = "10" else '0'; +ctc_counter_3_we <= '1' when ce_n = '0' and iorq_n = '0' and m1_n = '1' and rd_n = '1' and cs = "11" else '0'; + +dout <= ctc_controler_do when cpu_int_ack_n = '0' else + ctc_counter_0_do when iorq_n = '0' and m1_n = '1' and rd_n = '0' and cs = "00" else + ctc_counter_1_do when iorq_n = '0' and m1_n = '1' and rd_n = '0' and cs = "01" else + ctc_counter_2_do when iorq_n = '0' and m1_n = '1' and rd_n = '0' and cs = "10" else + ctc_counter_3_do when iorq_n = '0' and m1_n = '1' and rd_n = '0' and cs = "11" else + x"FF"; + +-- CTC interrupt controler Z80-CTC (MK3882) +ctc_controler : entity work.ctc_controler +port map( + clock => clock, + clock_ena => clock_ena, + reset => reset, + + d_in => din, + load_data => ctc_controler_we, + int_ack => cpu_int_ack_n, + int_end => ctc_int_ack, + + int_pulse_0 => ctc_counter_0_int, + int_pulse_1 => ctc_counter_1_int, + int_pulse_2 => ctc_counter_2_int, + int_pulse_3 => ctc_counter_3_int, + + d_out => ctc_controler_do, + int_n => int_n +); + +ctc_counter_0 : entity work.ctc_counter +port map( + clock => clock, + clock_ena => clock_ena, + reset => reset, + + d_in => din, + load_data => ctc_counter_0_we, + + clk_trg => trg0, + + d_out => ctc_counter_0_do, + zc_to => to0, + int_pulse => ctc_counter_0_int + +); + +ctc_counter_1 : entity work.ctc_counter +port map( + clock => clock, + clock_ena => clock_ena, + reset => reset, + + d_in => din, + load_data => ctc_counter_1_we, + + clk_trg => trg1, + + d_out => ctc_counter_1_do, + zc_to => to1, + int_pulse => ctc_counter_1_int + +); + +ctc_counter_2 : entity work.ctc_counter +port map( + clock => clock, + clock_ena => clock_ena, + reset => reset, + + d_in => din, + load_data => ctc_counter_2_we, + + clk_trg => trg2, + + d_out => ctc_counter_2_do, + zc_to => to2, + int_pulse => ctc_counter_2_int + +); + +ctc_counter_3 : entity work.ctc_counter +port map( + clock => clock, + clock_ena => clock_ena, + reset => reset, + + d_in => din, + load_data => ctc_counter_3_we, + + clk_trg => trg3, + + d_out => ctc_counter_3_do, + zc_to => open, + int_pulse => ctc_counter_3_int + +); +end struct;