From 2eb88954e537a8549ef21b10e4e51de48d5a3498 Mon Sep 17 00:00:00 2001 From: Marcel Date: Fri, 17 May 2019 16:10:42 +0200 Subject: [PATCH] New Core - Birdiy --- .../Frenzy_MiST/rtl/build_id.v | 4 +- .../CrazyKong_MiST/CrazyKong.qws | Bin 1748 -> 0 bytes .../Burger_Time_MiST/rtl/pll.ppf | 12 - .../MoonPatrol_MIST/src/Clock.ppf | 12 - .../Time_Pilot_MiST/rtl/pll.ppf | 13 - Arcade_MiST/Pacman Hardware/Birdiy.jpg | Bin 172818 -> 76483 bytes .../Pacman Hardware/Birdiy_MiST/Birdiy.qpf | 31 + .../Pacman Hardware/Birdiy_MiST/Birdiy.qsf | 176 ++ .../Pacman Hardware/Birdiy_MiST/Birdiy.srf | 51 + .../Pacman Hardware/Birdiy_MiST/README.txt | 23 + .../Birdiy_MiST/Release/Birdiy.rbf | Bin 0 -> 277427 bytes .../Pacman Hardware/Birdiy_MiST/clean.bat | 37 + .../Pacman Hardware/Birdiy_MiST/rtl/Birdiy.sv | 192 ++ .../Birdiy_MiST/rtl/ROM/GFX1.vhd | 534 +++++ .../Birdiy_MiST/rtl/ROM/PROM1_DST.vhd | 38 + .../Birdiy_MiST/rtl/ROM/PROM3_DST.vhd | 38 + .../Birdiy_MiST/rtl/ROM/PROM4_DST.vhd | 38 + .../Birdiy_MiST/rtl/ROM/PROM7_DST.vhd | 24 + .../Birdiy_MiST/rtl/ROM/ROM_PGM_0.vhd | 1046 +++++++++ .../Birdiy_MiST/rtl/build_id.tcl | 35 + .../Birdiy_MiST/rtl/build_id.v | 2 + .../Birdiy_MiST/rtl/cpu/T80.vhd | 1080 +++++++++ .../Birdiy_MiST/rtl/cpu/T80_ALU.vhd | 371 ++++ .../Birdiy_MiST/rtl/cpu/T80_MCode.vhd | 1944 +++++++++++++++++ .../Birdiy_MiST/rtl/cpu/T80_Pack.vhd | 217 ++ .../Birdiy_MiST/rtl/cpu/T80_Reg.vhd | 105 + .../Birdiy_MiST/rtl/cpu/T80sed.vhd | 179 ++ .../Pacman Hardware/Birdiy_MiST/rtl/dac.vhd | 48 + .../Pacman Hardware/Birdiy_MiST/rtl/dpram.vhd | 58 + .../Pacman Hardware/Birdiy_MiST/rtl/hq2x.sv | 454 ++++ .../Pacman Hardware/Birdiy_MiST/rtl/mist_io.v | 530 +++++ .../Pacman Hardware/Birdiy_MiST/rtl/osd.v | 194 ++ .../Birdiy_MiST/rtl/pacman.vhd | 669 ++++++ .../Birdiy_MiST/rtl/pacman_audio.vhd | 209 ++ .../Birdiy_MiST/rtl/pacman_video.vhd | 360 +++ .../Birdiy_MiST/rtl/pacman_vram_addr.vhd | 273 +++ .../Pacman Hardware/Birdiy_MiST/rtl/pll.qip | 4 + .../Pacman Hardware/Birdiy_MiST/rtl/pll.v | 320 +++ .../Birdiy_MiST/rtl/scandoubler.v | 183 ++ .../Birdiy_MiST/rtl/video_mixer.sv | 243 +++ .../Phoenix Hardware/Capitol_MIST/rtl/pll.ppf | 11 - .../Phoenix Hardware/Phoenix_MIST/rtl/pll.ppf | 11 - Arcade_MiST/README.txt | 1 + 43 files changed, 9709 insertions(+), 61 deletions(-) delete mode 100644 Arcade_MiST/Custom Hardware/CrazyKong_MiST/CrazyKong.qws delete mode 100644 Arcade_MiST/Data East Burger Time Hardware/Burger_Time_MiST/rtl/pll.ppf delete mode 100644 Arcade_MiST/IremM52 Hardware/MoonPatrol_MIST/src/Clock.ppf delete mode 100644 Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/pll.ppf create mode 100644 Arcade_MiST/Pacman Hardware/Birdiy_MiST/Birdiy.qpf create mode 100644 Arcade_MiST/Pacman Hardware/Birdiy_MiST/Birdiy.qsf create mode 100644 Arcade_MiST/Pacman Hardware/Birdiy_MiST/Birdiy.srf create mode 100644 Arcade_MiST/Pacman Hardware/Birdiy_MiST/README.txt create mode 100644 Arcade_MiST/Pacman Hardware/Birdiy_MiST/Release/Birdiy.rbf create mode 100644 Arcade_MiST/Pacman Hardware/Birdiy_MiST/clean.bat create mode 100644 Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/Birdiy.sv create mode 100644 Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/ROM/GFX1.vhd create mode 100644 Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/ROM/PROM1_DST.vhd create mode 100644 Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/ROM/PROM3_DST.vhd create mode 100644 Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/ROM/PROM4_DST.vhd create mode 100644 Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/ROM/PROM7_DST.vhd create mode 100644 Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/ROM/ROM_PGM_0.vhd create mode 100644 Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/build_id.tcl create mode 100644 Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/build_id.v create mode 100644 Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/cpu/T80.vhd create mode 100644 Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/cpu/T80_ALU.vhd create mode 100644 Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/cpu/T80_MCode.vhd create mode 100644 Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/cpu/T80_Pack.vhd create mode 100644 Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/cpu/T80_Reg.vhd create mode 100644 Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/cpu/T80sed.vhd create mode 100644 Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/dac.vhd create mode 100644 Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/dpram.vhd create mode 100644 Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/hq2x.sv create mode 100644 Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/mist_io.v create mode 100644 Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/osd.v create mode 100644 Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/pacman.vhd create mode 100644 Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/pacman_audio.vhd create mode 100644 Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/pacman_video.vhd create mode 100644 Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/pacman_vram_addr.vhd create mode 100644 Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/pll.qip create mode 100644 Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/pll.v create mode 100644 Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/scandoubler.v create mode 100644 Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/video_mixer.sv delete mode 100644 Arcade_MiST/Phoenix Hardware/Capitol_MIST/rtl/pll.ppf delete mode 100644 Arcade_MiST/Phoenix Hardware/Phoenix_MIST/rtl/pll.ppf diff --git a/Arcade_MiST/Berzerk Hardware/Frenzy_MiST/rtl/build_id.v b/Arcade_MiST/Berzerk Hardware/Frenzy_MiST/rtl/build_id.v index 5d824151..0dcc2df0 100644 --- a/Arcade_MiST/Berzerk Hardware/Frenzy_MiST/rtl/build_id.v +++ b/Arcade_MiST/Berzerk Hardware/Frenzy_MiST/rtl/build_id.v @@ -1,2 +1,2 @@ -`define BUILD_DATE "190410" -`define BUILD_TIME "234817" +`define BUILD_DATE "190513" +`define BUILD_TIME "152214" diff --git a/Arcade_MiST/Custom Hardware/CrazyKong_MiST/CrazyKong.qws b/Arcade_MiST/Custom Hardware/CrazyKong_MiST/CrazyKong.qws deleted file mode 100644 index fa76c76c4818914376a06cd51d0622725bef3717..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1748 zcmeH`xlRK?42J&@3Q8&}kSGvBNC`=}0u^UKB1i}jEef0E5J%8*gLna+fHLnxLrV*< z!S&h67OW5j4InWq&)6P&_8eHJ~}| z5Vx%pZD1{8HS$VYVs8@PB>4fkRdUxoVnwU?r^&I{n)cPLc_JcW&U_7hKSICMg%*f8 z(AJ0Sh|E2r0+IrkKdx4#Z!7F^rhvQfjbuE0OYEep&cYp9IdfpTa=8ded> zXp9_-%VW1kJ(Thz|`iW|^qQugM-uB#dusGj(Ri-+d zbiG?sFz48rbAYu<|7&nzgGxk3O}#N}ZH{)8NDV2Wg+Q3kf*cwNeOiV^TXg9gf3ky3 zdK}c@*H9f@0%`||q0ar^vjDcY#rrdG$y=pynZKWM)Ch|o(ig?CQOj8mzyLty%;v~xe diff --git a/Arcade_MiST/Data East Burger Time Hardware/Burger_Time_MiST/rtl/pll.ppf b/Arcade_MiST/Data East Burger Time Hardware/Burger_Time_MiST/rtl/pll.ppf deleted file mode 100644 index 519b60f2..00000000 --- a/Arcade_MiST/Data East Burger Time Hardware/Burger_Time_MiST/rtl/pll.ppf +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/Arcade_MiST/IremM52 Hardware/MoonPatrol_MIST/src/Clock.ppf b/Arcade_MiST/IremM52 Hardware/MoonPatrol_MIST/src/Clock.ppf deleted file mode 100644 index 687c8db6..00000000 --- a/Arcade_MiST/IremM52 Hardware/MoonPatrol_MIST/src/Clock.ppf +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/pll.ppf b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/pll.ppf deleted file mode 100644 index 53102b77..00000000 --- a/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/pll.ppf +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/Arcade_MiST/Pacman Hardware/Birdiy.jpg b/Arcade_MiST/Pacman Hardware/Birdiy.jpg index 1978f89bf90741b61087245c206f69d61759d2df..8a37bc7d9718c1070f23c93695314016065c6bdb 100644 GIT binary patch literal 76483 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

~+ZeCAP{VySVu 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

O}ZZWXTc7#UbEO(2|FSj8C1SqO7E0tuM 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 +mist_io( + .clk_sys (clk_sys ), + .conf_str (CONF_STR ), + .SPI_SCK (SPI_SCK ), + .CONF_DATA0 (CONF_DATA0 ), + .SPI_SS2 (SPI_SS2 ), + .SPI_DO (SPI_DO ), + .SPI_DI (SPI_DI ), + .buttons (buttons ), + .switches (switches ), + .scandoublerD (scandoublerD ), + .ypbpr (ypbpr ), + .ps2_key (ps2_key ), + .joystick_0 (joystick_0 ), + .joystick_1 (joystick_1 ), + .status (status ) + ); + +dac #( + .C_bits(15)) +dac( + .clk_i(clk_sys), + .res_n_i(1), + .dac_i({audio,audio}), + .dac_o(AUDIO_L) + ); + +// Rotated Normal +wire m_up = ~status[2] ? btn_left | joystick_0[1] | joystick_1[1] : btn_up | joystick_0[3] | joystick_1[3]; +wire m_down = ~status[2] ? btn_right | joystick_0[0] | joystick_1[0] : btn_down | joystick_0[2] | joystick_1[2]; +wire m_left = ~status[2] ? btn_down | joystick_0[2] | joystick_1[2] : btn_left | joystick_0[1] | joystick_1[1]; +wire m_right = ~status[2] ? btn_up | joystick_0[3] | joystick_1[3] : btn_right | joystick_0[0] | joystick_1[0]; +wire m_fire = btn_fire1 | joystick_0[4] | joystick_1[4]; + +reg btn_one_player = 0; +reg btn_two_players = 0; +reg btn_left = 0; +reg btn_right = 0; +reg btn_down = 0; +reg btn_up = 0; +reg btn_fire1 = 0; + +reg btn_coin = 0; +wire pressed = ps2_key[9]; +wire [7:0] code = ps2_key[7:0]; + +always @(posedge clk_sys) begin + reg old_state; + old_state <= ps2_key[10]; + if(old_state != ps2_key[10]) begin + case(code) + 'h75: btn_up <= pressed; // up + 'h72: btn_down <= pressed; // down + 'h6B: btn_left <= pressed; // left + 'h74: btn_right <= pressed; // right + 'h76: btn_coin <= pressed; // ESC + 'h05: btn_one_player <= pressed; // F1 + 'h06: btn_two_players <= pressed; // F2 + 'h29: btn_fire1 <= pressed; // Space + endcase + end +end + +endmodule diff --git a/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/ROM/GFX1.vhd b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/ROM/GFX1.vhd new file mode 100644 index 00000000..a12bfaf7 --- /dev/null +++ b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/ROM/GFX1.vhd @@ -0,0 +1,534 @@ +library ieee; +use ieee.std_logic_1164.all,ieee.numeric_std.all; + +entity GFX1 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 GFX1 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"CC",X"FF",X"FF",X"00",X"00",X"00",X"00",X"EE",X"FF",X"FF",X"FF", + X"CC",X"EE",X"EE",X"EE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"77",X"22",X"88",X"CC",X"FF",X"FF",X"77",X"11",X"CC",X"FF",X"FF",X"FF", + X"88",X"CC",X"EE",X"EE",X"EE",X"EE",X"CC",X"88",X"33",X"77",X"DF",X"BF",X"BF",X"FF",X"77",X"33", + X"FF",X"BF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"33",X"67",X"CF",X"9F",X"FF",X"FF",X"77",X"33", + X"22",X"88",X"CC",X"CC",X"EE",X"EE",X"FF",X"FF",X"EE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"77",X"33",X"11",X"11",X"00",X"00",X"33",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"CC",X"EE",X"FF",X"FF",X"FF",X"FF",X"FF",X"77",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"00", + X"3F",X"7F",X"FF",X"FF",X"EE",X"FF",X"FF",X"FF",X"33",X"33",X"33",X"77",X"77",X"77",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"EE",X"CC",X"00",X"CC",X"FF",X"FF",X"FF",X"FF",X"77",X"00",X"EE",X"FF", + X"00",X"00",X"00",X"00",X"88",X"FF",X"9F",X"3F",X"00",X"00",X"00",X"00",X"11",X"11",X"11",X"11", + X"00",X"88",X"CC",X"EE",X"EE",X"FF",X"FF",X"FF",X"00",X"FF",X"33",X"11",X"11",X"FF",X"3F",X"FF", + X"CC",X"EE",X"FF",X"FF",X"FF",X"FF",X"FF",X"77",X"BF",X"BF",X"FF",X"77",X"77",X"33",X"11",X"00", + X"FF",X"FF",X"FF",X"EE",X"EE",X"CC",X"88",X"00",X"33",X"77",X"FF",X"FF",X"FF",X"FF",X"FF",X"EE", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"CC",X"CC",X"FF",X"FF",X"FF",X"FF",X"77",X"77",X"DF",X"DF", + X"88",X"EE",X"EE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"77",X"33", + X"FF",X"FF",X"FF",X"FF",X"EE",X"EE",X"CC",X"00",X"FF",X"FF",X"FF",X"FF",X"77",X"77",X"33",X"00", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"23",X"47",X"57",X"57",X"9F",X"BF",X"BF",X"FF", + X"00",X"00",X"00",X"00",X"33",X"FF",X"9F",X"BF",X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"33", + X"EE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"77",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"33",X"00", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"77",X"77",X"77",X"33",X"BB",X"99",X"DD",X"CC",X"EE",X"FF", + X"00",X"00",X"00",X"00",X"00",X"88",X"FF",X"FF",X"00",X"00",X"88",X"88",X"CC",X"DD",X"CC",X"EE", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"EE", + X"11",X"33",X"77",X"77",X"77",X"33",X"33",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"88",X"FF", + X"FF",X"FF",X"FF",X"33",X"11",X"11",X"11",X"00",X"FF",X"FF",X"FF",X"CC",X"88",X"88",X"88",X"00", + X"00",X"00",X"00",X"FF",X"FF",X"FF",X"FF",X"FF",X"00",X"00",X"00",X"FF",X"BF",X"7F",X"FF",X"FF", + X"FF",X"FF",X"77",X"00",X"00",X"00",X"00",X"00",X"FF",X"33",X"00",X"00",X"00",X"00",X"00",X"00", + X"FF",X"33",X"88",X"FF",X"FF",X"FF",X"FF",X"FF",X"00",X"CC",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"00",X"00",X"88",X"88",X"CC",X"CC",X"EE",X"EE",X"CC",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"77", + X"00",X"00",X"00",X"00",X"33",X"67",X"47",X"DF",X"00",X"00",X"00",X"00",X"CC",X"EE",X"EE",X"EE", + X"FF",X"FF",X"FF",X"FF",X"FF",X"33",X"00",X"00",X"FF",X"FF",X"FF",X"FF",X"11",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"BB",X"BB",X"00",X"00",X"00",X"00",X"00",X"66",X"FF",X"FF",X"66",X"00",X"00", + X"FF",X"FF",X"FF",X"77",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"33",X"CC",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",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"00",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"EE",X"FF",X"FF",X"FF",X"FF", + X"99",X"55",X"55",X"33",X"88",X"44",X"22",X"11",X"88",X"55",X"33",X"11",X"00",X"FF",X"88",X"00", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"CC",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"33",X"CC",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"CC",X"FF",X"FF",X"FF", + X"FF",X"CC",X"77",X"FF",X"CC",X"77",X"FF",X"FF",X"FF",X"FF",X"EE",X"BB",X"FF",X"EE",X"DD",X"FF", + X"FF",X"FF",X"44",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"33",X"EE",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"BB",X"FF",X"EE",X"EE",X"77",X"BB",X"FF",X"FF",X"FF",X"FF",X"33",X"CC",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"11",X"FF",X"FF", + X"00",X"00",X"EE",X"DD",X"DD",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"05",X"0A",X"05",X"0A",X"05",X"0A",X"05",X"0A",X"8D",X"8A",X"8D",X"8A",X"8D",X"8A",X"8D",X"8A", + X"00",X"00",X"00",X"66",X"66",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"EE",X"DD",X"DD",X"00",X"00",X"00", + X"88",X"CC",X"22",X"22",X"66",X"CC",X"88",X"00",X"33",X"77",X"CC",X"88",X"88",X"77",X"33",X"00", + X"22",X"22",X"EE",X"EE",X"22",X"22",X"00",X"00",X"00",X"00",X"FF",X"FF",X"44",X"00",X"00",X"00", + X"22",X"22",X"AA",X"AA",X"EE",X"EE",X"66",X"00",X"66",X"FF",X"BB",X"99",X"99",X"CC",X"44",X"00", + X"CC",X"EE",X"22",X"22",X"22",X"66",X"44",X"00",X"88",X"DD",X"FF",X"BB",X"99",X"88",X"00",X"00", + X"88",X"EE",X"EE",X"88",X"88",X"88",X"88",X"00",X"00",X"FF",X"FF",X"CC",X"66",X"33",X"11",X"00", + X"CC",X"EE",X"22",X"22",X"22",X"66",X"44",X"00",X"11",X"BB",X"AA",X"AA",X"AA",X"EE",X"EE",X"00", + X"CC",X"EE",X"22",X"22",X"22",X"EE",X"CC",X"00",X"00",X"99",X"99",X"99",X"DD",X"77",X"33",X"00", + X"00",X"00",X"00",X"EE",X"EE",X"00",X"00",X"00",X"CC",X"EE",X"BB",X"99",X"88",X"CC",X"CC",X"00", + X"CC",X"EE",X"AA",X"AA",X"22",X"22",X"CC",X"00",X"00",X"66",X"99",X"99",X"BB",X"FF",X"66",X"00", + X"88",X"CC",X"66",X"22",X"22",X"22",X"00",X"00",X"77",X"FF",X"99",X"99",X"99",X"FF",X"66",X"00", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"DD",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"33",X"FF", + X"77",X"99",X"EE",X"FF",X"77",X"FF",X"FF",X"FF",X"FF",X"77",X"BB",X"CC",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"00",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",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"00",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"66",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"00",X"FF",X"FF",X"FF", + X"C0",X"C8",X"D5",X"FF",X"FF",X"D9",X"C0",X"80",X"30",X"71",X"F0",X"F3",X"F4",X"F0",X"71",X"30", + X"CC",X"22",X"11",X"55",X"55",X"99",X"22",X"CC",X"33",X"44",X"88",X"AA",X"AA",X"99",X"44",X"33", + X"EE",X"EE",X"88",X"88",X"88",X"EE",X"EE",X"00",X"33",X"77",X"CC",X"88",X"CC",X"77",X"33",X"00", + X"CC",X"EE",X"22",X"22",X"22",X"EE",X"EE",X"00",X"66",X"FF",X"99",X"99",X"99",X"FF",X"FF",X"00", + X"44",X"66",X"22",X"22",X"66",X"CC",X"88",X"00",X"44",X"CC",X"88",X"88",X"CC",X"77",X"33",X"00", + X"88",X"CC",X"66",X"22",X"22",X"EE",X"EE",X"00",X"33",X"77",X"CC",X"88",X"88",X"FF",X"FF",X"00", + X"22",X"22",X"22",X"22",X"EE",X"EE",X"00",X"00",X"88",X"99",X"99",X"99",X"FF",X"FF",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"EE",X"EE",X"00",X"88",X"99",X"99",X"99",X"99",X"FF",X"FF",X"00", + X"EE",X"EE",X"22",X"22",X"66",X"CC",X"88",X"00",X"99",X"99",X"99",X"88",X"CC",X"77",X"33",X"00", + X"EE",X"EE",X"00",X"00",X"00",X"EE",X"EE",X"00",X"FF",X"FF",X"11",X"11",X"11",X"FF",X"FF",X"00", + X"22",X"22",X"EE",X"EE",X"22",X"22",X"00",X"00",X"88",X"88",X"FF",X"FF",X"88",X"88",X"00",X"00", + X"CC",X"EE",X"22",X"22",X"22",X"66",X"44",X"00",X"FF",X"FF",X"00",X"00",X"00",X"00",X"00",X"00", + X"22",X"66",X"EE",X"CC",X"88",X"EE",X"EE",X"00",X"88",X"CC",X"66",X"33",X"11",X"FF",X"FF",X"00", + X"22",X"22",X"22",X"22",X"EE",X"EE",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"FF",X"00",X"00", + X"EE",X"EE",X"00",X"88",X"00",X"EE",X"EE",X"00",X"FF",X"FF",X"77",X"33",X"77",X"FF",X"FF",X"00", + X"EE",X"EE",X"CC",X"88",X"00",X"EE",X"EE",X"00",X"FF",X"FF",X"11",X"33",X"77",X"FF",X"FF",X"00", + X"CC",X"EE",X"22",X"22",X"22",X"EE",X"CC",X"00",X"77",X"FF",X"88",X"88",X"88",X"FF",X"77",X"00", + X"00",X"88",X"88",X"88",X"88",X"EE",X"EE",X"00",X"77",X"FF",X"88",X"88",X"88",X"FF",X"FF",X"00", + X"AA",X"CC",X"EE",X"AA",X"22",X"EE",X"CC",X"00",X"77",X"FF",X"88",X"88",X"88",X"FF",X"77",X"00", + X"22",X"66",X"EE",X"CC",X"88",X"EE",X"EE",X"00",X"77",X"FF",X"99",X"88",X"88",X"FF",X"FF",X"00", + X"CC",X"EE",X"22",X"22",X"22",X"66",X"44",X"00",X"00",X"55",X"DD",X"99",X"99",X"FF",X"66",X"00", + X"00",X"00",X"EE",X"EE",X"00",X"00",X"00",X"00",X"88",X"88",X"FF",X"FF",X"88",X"88",X"00",X"00", + X"CC",X"EE",X"22",X"22",X"22",X"EE",X"CC",X"00",X"FF",X"FF",X"00",X"00",X"00",X"FF",X"FF",X"00", + X"00",X"88",X"CC",X"EE",X"CC",X"88",X"00",X"00",X"FF",X"FF",X"11",X"00",X"11",X"FF",X"FF",X"00", + X"EE",X"EE",X"CC",X"88",X"CC",X"EE",X"EE",X"00",X"FF",X"FF",X"11",X"33",X"11",X"FF",X"FF",X"00", + X"66",X"EE",X"CC",X"88",X"CC",X"EE",X"66",X"00",X"CC",X"EE",X"77",X"33",X"77",X"EE",X"CC",X"00", + X"00",X"00",X"EE",X"EE",X"00",X"00",X"00",X"00",X"EE",X"FF",X"11",X"11",X"FF",X"EE",X"00",X"00", + X"22",X"22",X"22",X"AA",X"EE",X"EE",X"66",X"00",X"CC",X"EE",X"FF",X"BB",X"99",X"88",X"88",X"00", + X"77",X"DD",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"88",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"00",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"CC",X"FF",X"00",X"FF",X"FF",X"FF", + X"EE",X"11",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"88",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"DD",X"BB",X"FF",X"FF",X"FF",X"FF",X"77",X"FF",X"FF",X"FF",X"CC",X"FF",X"FF",X"FF", + X"01",X"03",X"05",X"0E",X"05",X"0A",X"05",X"0A",X"88",X"88",X"88",X"88",X"89",X"8B",X"8D",X"8E", + X"00",X"00",X"00",X"0C",X"1F",X"3F",X"7F",X"FF",X"00",X"00",X"01",X"01",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"1F",X"3F",X"7F",X"FF",X"00",X"00",X"00",X"00",X"03",X"01",X"00",X"00", + X"00",X"00",X"00",X"00",X"CC",X"CC",X"EE",X"6E",X"04",X"04",X"06",X"3F",X"FF",X"FF",X"FF",X"CF", + X"00",X"00",X"00",X"00",X"CC",X"CC",X"EE",X"6E",X"01",X"03",X"06",X"3F",X"FF",X"FF",X"FF",X"CF", + X"6E",X"EE",X"EE",X"EE",X"EE",X"CC",X"88",X"08",X"8F",X"0F",X"0F",X"0F",X"8F",X"8F",X"CF",X"01", + X"6E",X"EE",X"EE",X"EE",X"EE",X"CC",X"88",X"00",X"8F",X"0F",X"0F",X"0F",X"1F",X"3F",X"7F",X"00", + X"DD",X"FF",X"FF",X"77",X"33",X"11",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"DD",X"FF",X"EF",X"67",X"23",X"01",X"01",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"11",X"33",X"77",X"FF",X"FF",X"DD",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"01",X"01",X"01",X"23",X"67",X"EF",X"FF",X"DD",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"08",X"88",X"CC",X"EE",X"EE",X"EE",X"EE",X"6E",X"01",X"CF",X"8F",X"8F",X"0F",X"0F",X"0F",X"8F", + X"00",X"88",X"CC",X"EE",X"EE",X"EE",X"EE",X"6E",X"00",X"7F",X"3F",X"1F",X"0F",X"0F",X"0F",X"8F", + X"6E",X"EE",X"CC",X"CC",X"00",X"00",X"00",X"00",X"CF",X"FF",X"FF",X"FF",X"3F",X"06",X"04",X"04", + X"6E",X"EE",X"CC",X"CC",X"00",X"00",X"00",X"00",X"CF",X"FF",X"FF",X"FF",X"3F",X"06",X"03",X"01", + X"FF",X"7F",X"3F",X"1F",X"0C",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"00",X"00", + X"FF",X"7F",X"3F",X"1F",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"03",X"00",X"00",X"00",X"00", + X"80",X"C0",X"C0",X"C0",X"C0",X"80",X"A6",X"84",X"76",X"54",X"F0",X"F0",X"D4",X"F6",X"F0",X"78", + X"C0",X"E0",X"E0",X"E0",X"E0",X"C0",X"D3",X"86",X"00",X"30",X"76",X"54",X"70",X"70",X"54",X"76", + X"1F",X"0E",X"0E",X"0E",X"0F",X"0F",X"0F",X"06",X"0F",X"07",X"07",X"07",X"03",X"03",X"01",X"00", + X"1F",X"0F",X"0F",X"0E",X"0E",X"0E",X"0C",X"08",X"01",X"01",X"01",X"03",X"07",X"0F",X"0F",X"07", + X"06",X"0F",X"0F",X"0F",X"0E",X"0E",X"0E",X"1F",X"00",X"01",X"03",X"03",X"07",X"07",X"07",X"0F", + X"08",X"0C",X"0E",X"0E",X"0E",X"0F",X"0F",X"1F",X"07",X"0F",X"0F",X"07",X"03",X"01",X"01",X"01", + X"84",X"A6",X"80",X"C0",X"C0",X"C0",X"C0",X"80",X"78",X"F0",X"F6",X"D4",X"F0",X"F0",X"54",X"76", + X"86",X"D3",X"C0",X"E0",X"E0",X"E0",X"E0",X"C0",X"76",X"54",X"70",X"70",X"54",X"76",X"30",X"00", + X"F0",X"98",X"AE",X"8E",X"9F",X"8E",X"8E",X"06",X"31",X"22",X"EE",X"E2",X"22",X"22",X"EE",X"F1", + X"F0",X"98",X"AE",X"8E",X"9F",X"8E",X"8E",X"06",X"F1",X"EE",X"22",X"22",X"E2",X"EE",X"22",X"31", + X"06",X"06",X"1F",X"0E",X"3A",X"F8",X"70",X"F0",X"F0",X"F0",X"E0",X"C1",X"83",X"83",X"83",X"C0", + X"06",X"06",X"06",X"0E",X"0E",X"1C",X"7C",X"70",X"F0",X"F0",X"90",X"06",X"07",X"8F",X"07",X"A2", + X"F0",X"70",X"F8",X"3A",X"0E",X"1F",X"06",X"06",X"C0",X"83",X"83",X"83",X"C1",X"E0",X"F0",X"F0", + X"70",X"7C",X"1C",X"0E",X"0E",X"06",X"06",X"06",X"A2",X"07",X"8F",X"07",X"06",X"90",X"F0",X"F0", + X"06",X"8E",X"8E",X"9F",X"8E",X"AE",X"98",X"F0",X"F1",X"EE",X"22",X"22",X"E2",X"EE",X"22",X"31", + X"06",X"8E",X"8E",X"9F",X"8E",X"AE",X"98",X"F0",X"31",X"22",X"EE",X"E2",X"22",X"22",X"EE",X"F1", + X"10",X"0E",X"0F",X"0F",X"8F",X"A2",X"F0",X"F0",X"C0",X"83",X"07",X"07",X"06",X"32",X"F0",X"F0", + X"F0",X"F0",X"A2",X"8F",X"0F",X"0F",X"0E",X"10",X"F0",X"F0",X"32",X"06",X"07",X"07",X"83",X"C0", + X"72",X"55",X"DD",X"D5",X"55",X"55",X"DD",X"72",X"E0",X"E0",X"75",X"1C",X"0E",X"0E",X"17",X"80", + X"72",X"DD",X"55",X"55",X"D5",X"DD",X"55",X"72",X"80",X"17",X"0E",X"0E",X"1C",X"75",X"E0",X"E0", + X"22",X"88",X"44",X"88",X"22",X"88",X"44",X"88",X"DD",X"EE",X"BB",X"EE",X"DD",X"EE",X"BB",X"EE", + X"00",X"00",X"00",X"00",X"08",X"0C",X"06",X"0B",X"08",X"0C",X"06",X"0B",X"05",X"0A",X"05",X"0A", + X"07",X"0A",X"0C",X"08",X"00",X"00",X"00",X"00",X"05",X"0A",X"05",X"0A",X"07",X"0A",X"0C",X"08", + X"07",X"0C",X"00",X"00",X"00",X"00",X"00",X"00",X"05",X"0A",X"07",X"0C",X"08",X"0C",X"06",X"0B", + X"00",X"00",X"00",X"00",X"01",X"13",X"37",X"36",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"03",X"1F",X"93",X"93",X"D3",X"80",X"00",X"00",X"00",X"00",X"03",X"17",X"9B",X"9B",X"CA",X"80", + X"80",X"C4",X"0A",X"D6",X"32",X"FC",X"B6",X"7C",X"93",X"82",X"93",X"C7",X"39",X"57",X"33",X"03", + X"B4",X"B2",X"54",X"BE",X"7A",X"54",X"FA",X"BA",X"37",X"13",X"56",X"36",X"33",X"57",X"32",X"32", + X"7C",X"B6",X"FC",X"32",X"D6",X"0A",X"C4",X"80",X"03",X"33",X"57",X"39",X"C7",X"93",X"82",X"93", + X"00",X"00",X"80",X"D3",X"93",X"93",X"1F",X"03",X"80",X"CA",X"9B",X"9B",X"17",X"03",X"00",X"00", + X"36",X"37",X"13",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"DD",X"EA",X"55",X"6A",X"BE",X"5C",X"3A",X"37",X"01",X"01",X"01",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"01",X"03",X"17",X"3F",X"3F",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"08",X"0C",X"8E",X"CE",X"CE",X"CE",X"00",X"00",X"07",X"3F",X"FF",X"FF",X"FF",X"FF", + X"CE",X"CE",X"CE",X"8E",X"0C",X"08",X"00",X"00",X"FF",X"FF",X"FF",X"FF",X"3F",X"07",X"00",X"00", + X"3F",X"3F",X"17",X"03",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"05",X"0A",X"05",X"0A",X"85",X"C2",X"E1",X"F0",X"05",X"0A",X"05",X"0A",X"14",X"38",X"70",X"F0", + X"F0",X"E0",X"C1",X"82",X"05",X"0A",X"05",X"0A",X"F0",X"78",X"34",X"1A",X"05",X"0A",X"05",X"0A", + X"14",X"1A",X"34",X"38",X"34",X"78",X"70",X"78",X"05",X"0A",X"05",X"0A",X"05",X"0A",X"05",X"0A", + X"70",X"78",X"70",X"38",X"34",X"38",X"14",X"1A",X"05",X"0A",X"05",X"0A",X"05",X"0A",X"05",X"0A", + X"05",X"0A",X"05",X"0A",X"05",X"0A",X"05",X"0A",X"85",X"82",X"C1",X"C2",X"C1",X"E0",X"E1",X"E0", + X"05",X"0A",X"05",X"0A",X"05",X"0A",X"05",X"0A",X"E1",X"E0",X"E1",X"C2",X"C1",X"C2",X"85",X"82", + X"14",X"38",X"70",X"F0",X"F0",X"78",X"34",X"1A",X"05",X"0A",X"05",X"0A",X"05",X"0A",X"05",X"0A", + X"05",X"0A",X"05",X"0A",X"05",X"0A",X"05",X"0A",X"85",X"C2",X"E1",X"F0",X"F0",X"E0",X"C1",X"82", + X"05",X"0A",X"05",X"0A",X"05",X"78",X"F0",X"F0",X"05",X"0A",X"05",X"0A",X"05",X"0A",X"34",X"F0", + X"05",X"0A",X"05",X"0A",X"05",X"0A",X"C1",X"F0",X"05",X"0A",X"05",X"0A",X"05",X"E0",X"F0",X"F0", + X"F0",X"F0",X"70",X"0A",X"05",X"0A",X"05",X"0A",X"F0",X"38",X"05",X"0A",X"05",X"0A",X"05",X"0A", + X"F0",X"C2",X"05",X"0A",X"05",X"0A",X"05",X"0A",X"F0",X"F0",X"E1",X"0A",X"05",X"0A",X"05",X"0A", + X"05",X"1B",X"37",X"7F",X"77",X"FF",X"FF",X"FF",X"05",X"0A",X"05",X"0A",X"05",X"0A",X"37",X"7F", + X"FF",X"CC",X"33",X"FF",X"EF",X"8A",X"05",X"0A",X"FF",X"FF",X"FF",X"DD",X"BB",X"FF",X"EF",X"8A", + X"EF",X"8A",X"05",X"0A",X"05",X"0A",X"05",X"0A",X"11",X"FF",X"EF",X"8A",X"05",X"0A",X"05",X"0A", + X"15",X"1B",X"37",X"B3",X"F7",X"7F",X"FF",X"FF",X"85",X"C2",X"F0",X"F0",X"F0",X"F0",X"C1",X"82", + X"EF",X"CE",X"8D",X"82",X"C1",X"C2",X"E1",X"F0",X"FF",X"FF",X"DD",X"BB",X"76",X"FC",X"F8",X"F0", + X"FE",X"DC",X"BC",X"38",X"34",X"78",X"70",X"78",X"15",X"1B",X"37",X"3B",X"67",X"4E",X"8D",X"0A", + X"05",X"0A",X"8D",X"EE",X"77",X"99",X"EE",X"FF",X"8D",X"EE",X"BB",X"DD",X"EE",X"FF",X"FF",X"FF", + X"FF",X"FF",X"77",X"F7",X"B7",X"3B",X"15",X"1B",X"85",X"C2",X"F0",X"F0",X"F0",X"F0",X"C1",X"82", + X"F0",X"E0",X"C1",X"C2",X"85",X"8A",X"CD",X"EE",X"F0",X"F8",X"FC",X"76",X"BB",X"DD",X"FF",X"FF", + X"77",X"BB",X"FF",X"EE",X"77",X"3B",X"15",X"0A",X"77",X"3B",X"15",X"0A",X"05",X"0A",X"05",X"0A", + X"05",X"0A",X"05",X"0A",X"05",X"0A",X"8D",X"EE",X"05",X"0A",X"05",X"0A",X"8D",X"EE",X"77",X"11", + X"05",X"0A",X"05",X"0A",X"0D",X"06",X"03",X"01",X"0D",X"06",X"03",X"01",X"00",X"00",X"00",X"00", + X"C7",X"1F",X"93",X"93",X"13",X"00",X"00",X"00",X"CF",X"E4",X"E7",X"97",X"0A",X"00",X"00",X"00", + X"00",X"00",X"00",X"13",X"93",X"93",X"1F",X"C7",X"00",X"00",X"00",X"0A",X"97",X"E7",X"E4",X"CF", + X"93",X"82",X"93",X"82",X"D9",X"E8",X"D9",X"E8",X"11",X"11",X"11",X"11",X"01",X"01",X"01",X"01", + X"37",X"3A",X"5C",X"BE",X"6A",X"55",X"EA",X"DD",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"01", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"15",X"1B",X"37",X"3B",X"77",X"7F",X"FF",X"FF", + X"FE",X"DC",X"BC",X"38",X"34",X"78",X"70",X"78",X"FF",X"FF",X"FF",X"FF",X"EF",X"CE",X"8D",X"0A", + X"15",X"1B",X"37",X"3B",X"77",X"7F",X"FF",X"FF",X"05",X"0A",X"05",X"0A",X"05",X"0A",X"05",X"0A", + X"FE",X"FE",X"FC",X"FC",X"BC",X"F8",X"70",X"78",X"15",X"1B",X"37",X"3B",X"77",X"7F",X"FF",X"FF", + X"70",X"78",X"70",X"38",X"34",X"38",X"14",X"1A",X"EF",X"EE",X"CD",X"CE",X"8D",X"8A",X"05",X"0A", + X"EF",X"EE",X"CD",X"CE",X"8D",X"8A",X"05",X"0A",X"15",X"1B",X"37",X"3B",X"77",X"7F",X"FF",X"FF", + X"05",X"0A",X"05",X"0A",X"05",X"0A",X"05",X"0A",X"EF",X"EE",X"CD",X"CE",X"8D",X"8A",X"05",X"0A", + X"05",X"0A",X"05",X"0A",X"05",X"0A",X"05",X"0A",X"05",X"0A",X"8D",X"8A",X"CD",X"CE",X"EF",X"EE", + X"05",X"0A",X"8D",X"8A",X"CD",X"CE",X"EF",X"EE",X"FF",X"FF",X"77",X"7F",X"37",X"3B",X"15",X"1B", + X"FF",X"FF",X"77",X"7F",X"37",X"3B",X"15",X"1B",X"05",X"0A",X"05",X"0A",X"05",X"0A",X"05",X"0A", + X"05",X"0A",X"05",X"0A",X"05",X"8A",X"CD",X"EE",X"05",X"8A",X"CD",X"EE",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"77",X"7F",X"37",X"3B",X"15",X"1B", + X"70",X"78",X"70",X"38",X"34",X"B8",X"DC",X"FE",X"05",X"8A",X"CD",X"66",X"BB",X"DD",X"FF",X"FF", + X"14",X"1A",X"34",X"38",X"34",X"78",X"70",X"78",X"05",X"0A",X"8D",X"8A",X"CD",X"CE",X"EF",X"EE", + X"70",X"78",X"F8",X"B8",X"FC",X"FC",X"FE",X"FE",X"FF",X"FF",X"77",X"7F",X"37",X"3B",X"15",X"1B", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"88",X"88",X"88",X"88",X"88",X"88",X"88",X"88", + X"00",X"00",X"00",X"00",X"80",X"C0",X"E0",X"F0",X"00",X"00",X"00",X"00",X"10",X"30",X"70",X"F0", + X"F0",X"E0",X"C0",X"80",X"00",X"00",X"00",X"00",X"F0",X"70",X"30",X"10",X"00",X"00",X"00",X"00", + X"10",X"10",X"30",X"30",X"30",X"70",X"70",X"70",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"70",X"70",X"70",X"30",X"30",X"30",X"10",X"10",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"80",X"C0",X"C0",X"C0",X"E0",X"E0",X"E0", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"E0",X"E0",X"E0",X"C0",X"C0",X"C0",X"80",X"80", + X"10",X"30",X"70",X"F0",X"F0",X"70",X"30",X"10",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"01",X"03",X"07",X"0F",X"0F",X"07",X"03",X"01",X"88",X"88",X"88",X"88",X"88",X"88",X"88",X"88", + X"00",X"00",X"00",X"00",X"00",X"70",X"F0",X"F0",X"00",X"00",X"00",X"00",X"00",X"00",X"30",X"F0", + X"00",X"00",X"00",X"00",X"00",X"00",X"C0",X"F0",X"00",X"00",X"00",X"00",X"00",X"E0",X"F0",X"F0", + X"F0",X"F0",X"70",X"00",X"00",X"00",X"00",X"00",X"F0",X"30",X"00",X"00",X"00",X"00",X"00",X"00", + X"F0",X"C0",X"00",X"00",X"00",X"00",X"00",X"00",X"F0",X"F0",X"E0",X"00",X"00",X"00",X"00",X"00", + X"0F",X"0F",X"0F",X"0F",X"0F",X"8F",X"CF",X"EF",X"0F",X"8F",X"CF",X"EF",X"FF",X"FF",X"FF",X"FF", + X"11",X"33",X"77",X"FF",X"FF",X"FF",X"FF",X"FF",X"00",X"00",X"00",X"00",X"11",X"33",X"77",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"77",X"33",X"11",X"FF",X"77",X"33",X"11",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"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"11",X"00",X"00",X"00",X"00",X"00",X"77",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"77",X"33",X"11",X"FF",X"FF",X"FF",X"77",X"11",X"00",X"00",X"00", + X"CC",X"EE",X"FF",X"FF",X"FF",X"66",X"33",X"11",X"FF",X"77",X"33",X"11",X"00",X"00",X"00",X"00", + X"77",X"DD",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"88",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"11",X"FF",X"FF",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"77", + X"11",X"33",X"77",X"EE",X"DD",X"BB",X"FF",X"FF",X"00",X"00",X"00",X"11",X"77",X"FF",X"FF",X"FF", + X"11",X"33",X"77",X"FF",X"FF",X"FF",X"BB",X"77",X"00",X"00",X"00",X"00",X"11",X"33",X"77",X"FF", + X"FF",X"FF",X"77",X"CC",X"FF",X"77",X"CC",X"FF",X"FF",X"DD",X"EE",X"FF",X"BB",X"EE",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"44",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"EE",X"33",X"FF", + X"FF",X"BB",X"77",X"EE",X"EE",X"FF",X"BB",X"FF",X"FF",X"FF",X"FF",X"CC",X"33",X"FF",X"FF",X"FF", + X"14",X"38",X"F0",X"F0",X"F0",X"F0",X"34",X"1A",X"8D",X"8A",X"CD",X"56",X"76",X"66",X"77",X"33", + X"05",X"8A",X"8D",X"CE",X"CD",X"66",X"67",X"BB",X"BB",X"DD",X"DD",X"EE",X"66",X"BB",X"FF",X"FF", + X"FF",X"FF",X"EE",X"FF",X"F7",X"F3",X"F1",X"F0",X"77",X"3B",X"15",X"1A",X"34",X"38",X"70",X"F0", + X"14",X"38",X"F0",X"F0",X"F0",X"F8",X"FC",X"FE",X"05",X"8A",X"CD",X"76",X"BB",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"3B",X"05",X"0A",X"05",X"0A",X"F7",X"B3",X"C1",X"C2",X"C1",X"E0",X"E1",X"E0", + X"F0",X"F0",X"70",X"0A",X"05",X"8A",X"CD",X"2A",X"F0",X"B8",X"CD",X"EE",X"FF",X"3B",X"05",X"0A", + X"EE",X"88",X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"FF",X"EE",X"88",X"00",X"00",X"00",X"00", + X"FF",X"CC",X"33",X"FF",X"EE",X"88",X"00",X"00",X"FF",X"FF",X"FF",X"DD",X"BB",X"FF",X"EE",X"88", + X"11",X"33",X"77",X"FF",X"77",X"FF",X"FF",X"FF",X"00",X"00",X"00",X"00",X"11",X"22",X"77",X"FF", + X"EE",X"CC",X"88",X"80",X"C0",X"C0",X"E0",X"F0",X"FF",X"FF",X"DD",X"BB",X"76",X"FC",X"F8",X"F0", + X"11",X"11",X"33",X"B3",X"F7",X"77",X"FF",X"FF",X"80",X"C0",X"F0",X"F0",X"F0",X"F0",X"C0",X"80", + X"FE",X"DC",X"B8",X"30",X"30",X"70",X"70",X"70",X"11",X"11",X"33",X"33",X"66",X"44",X"88",X"00", + X"70",X"70",X"70",X"30",X"30",X"B8",X"DC",X"FE",X"00",X"88",X"44",X"66",X"33",X"33",X"11",X"11", + X"FF",X"FF",X"77",X"F7",X"B3",X"33",X"11",X"11",X"80",X"C0",X"F0",X"F0",X"F0",X"F0",X"C0",X"80", + X"F0",X"E0",X"C0",X"C0",X"80",X"88",X"CC",X"EE",X"F0",X"F8",X"FC",X"76",X"BB",X"DD",X"FF",X"FF", + X"77",X"BB",X"FF",X"EE",X"FF",X"77",X"33",X"11",X"FF",X"77",X"33",X"11",X"00",X"00",X"00",X"00", + X"00",X"00",X"88",X"EE",X"77",X"99",X"EE",X"FF",X"88",X"EE",X"BB",X"DD",X"EE",X"FF",X"FF",X"FF", + X"00",X"00",X"00",X"00",X"00",X"00",X"88",X"EE",X"00",X"00",X"00",X"00",X"88",X"EE",X"77",X"11", + X"00",X"00",X"00",X"00",X"88",X"EE",X"FF",X"FF",X"88",X"88",X"CC",X"66",X"77",X"33",X"99",X"CC", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"88",X"00",X"00",X"00",X"00",X"00",X"00",X"CC",X"FF", + X"99",X"77",X"FF",X"CC",X"00",X"00",X"00",X"00",X"FF",X"FF",X"AA",X"77",X"77",X"EE",X"CC",X"88", + X"EE",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"FF",X"88",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"88",X"FF",X"BF",X"FF",X"FF",X"FF",X"00",X"00",X"33",X"77",X"CF",X"9F",X"BF",X"BF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"EE",X"CC",X"00",X"FF",X"77",X"11",X"11",X"77",X"FF",X"FF",X"FF", + X"FF",X"FF",X"EE",X"CC",X"00",X"CC",X"EE",X"FF",X"FF",X"FF",X"FF",X"FF",X"00",X"77",X"77",X"00", + X"CC",X"EE",X"FF",X"FF",X"FF",X"FF",X"77",X"11",X"77",X"77",X"33",X"33",X"11",X"00",X"00",X"00", + X"33",X"33",X"99",X"DD",X"CC",X"EE",X"EE",X"FF",X"FF",X"00",X"77",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"77",X"77",X"33",X"BB",X"99",X"88",X"CC",X"EE",X"EE",X"FF",X"FF",X"FF",X"FF",X"77",X"77", + X"07",X"0A",X"0C",X"08",X"00",X"00",X"00",X"00",X"8D",X"8A",X"8D",X"8A",X"8F",X"8A",X"8C",X"88", + X"00",X"00",X"00",X"00",X"08",X"0C",X"06",X"0B",X"88",X"8C",X"8E",X"8B",X"8D",X"8A",X"8D",X"8A", + X"00",X"00",X"00",X"00",X"80",X"C0",X"60",X"B0",X"80",X"C0",X"60",X"B0",X"50",X"A0",X"50",X"A0", + X"70",X"A0",X"C0",X"80",X"00",X"00",X"00",X"00",X"50",X"A0",X"50",X"A0",X"70",X"A0",X"C0",X"80", + X"01",X"03",X"05",X"0E",X"05",X"0A",X"05",X"0A",X"00",X"00",X"00",X"00",X"01",X"03",X"05",X"0E", + X"05",X"0A",X"05",X"0A",X"05",X"0A",X"05",X"0A",X"05",X"0A",X"05",X"0A",X"05",X"0A",X"05",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"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F", + X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",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"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"08",X"0C",X"0E",X"0E",X"0E",X"0E",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"01",X"03",X"07",X"0F",X"0F",X"00",X"00",X"07",X"0F",X"0F",X"0F",X"0F",X"0F", + X"0E",X"0E",X"0E",X"0E",X"0C",X"08",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"0F",X"0F",X"07",X"03",X"01",X"00",X"00",X"00",X"0F",X"0F",X"0F",X"0F",X"0F",X"07",X"00",X"00", + X"00",X"00",X"08",X"0C",X"0E",X"0E",X"0E",X"0E",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"01",X"03",X"07",X"0F",X"05",X"00",X"00",X"07",X"0F",X"0F",X"0F",X"0F",X"0F", + X"0E",X"0E",X"0E",X"0E",X"0C",X"08",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"0A",X"0F",X"07",X"03",X"01",X"00",X"00",X"00",X"0F",X"07",X"0F",X"0F",X"0F",X"07",X"00",X"00", + X"00",X"00",X"08",X"0C",X"06",X"0E",X"0E",X"0E",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"01",X"03",X"07",X"0F",X"05",X"00",X"00",X"07",X"0F",X"0F",X"0C",X"0B",X"05", + X"0E",X"0E",X"06",X"0E",X"0C",X"08",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"0A",X"0F",X"07",X"03",X"01",X"00",X"00",X"00",X"0E",X"06",X"0F",X"0F",X"0F",X"07",X"00",X"00", + X"00",X"00",X"08",X"0C",X"06",X"0E",X"0E",X"0E",X"00",X"01",X"00",X"08",X"00",X"04",X"00",X"02", + X"0A",X"08",X"04",X"01",X"E0",X"F0",X"70",X"70",X"00",X"00",X"07",X"0F",X"87",X"C0",X"C3",X"C1", + X"0E",X"0E",X"06",X"0E",X"0C",X"08",X"00",X"00",X"04",X"02",X"00",X"00",X"00",X"00",X"00",X"00", + X"5A",X"0F",X"06",X"03",X"01",X"00",X"00",X"00",X"0E",X"06",X"0F",X"0F",X"0F",X"07",X"00",X"00", + X"02",X"06",X"0A",X"0D",X"07",X"0E",X"0E",X"06",X"00",X"00",X"00",X"70",X"30",X"10",X"10",X"00", + X"01",X"02",X"01",X"F0",X"F0",X"F0",X"F1",X"F3",X"08",X"00",X"07",X"0F",X"CF",X"BF",X"FF",X"FF", + X"0A",X"0E",X"06",X"0E",X"0C",X"08",X"00",X"00",X"00",X"01",X"00",X"00",X"02",X"00",X"00",X"00", + X"F7",X"5D",X"3F",X"03",X"14",X"10",X"34",X"08",X"FF",X"DF",X"E9",X"E1",X"C3",X"87",X"04",X"0D", + X"0D",X"0B",X"01",X"84",X"0F",X"8E",X"8E",X"8F",X"00",X"00",X"00",X"78",X"34",X"03",X"01",X"00", + X"09",X"00",X"03",X"F0",X"F0",X"F0",X"78",X"1E",X"09",X"0C",X"0C",X"F0",X"F0",X"E1",X"C3",X"97", + X"8E",X"8B",X"CD",X"00",X"CD",X"0B",X"07",X"0A",X"00",X"00",X"00",X"00",X"01",X"00",X"00",X"00", + X"CF",X"EF",X"BB",X"77",X"33",X"08",X"01",X"03",X"7F",X"FF",X"FF",X"FF",X"FF",X"0E",X"0E",X"0C", + X"00",X"08",X"0C",X"4A",X"FD",X"F0",X"FD",X"FB",X"00",X"00",X"00",X"00",X"00",X"00",X"10",X"70", + X"00",X"00",X"11",X"22",X"75",X"F8",X"F0",X"F0",X"00",X"03",X"89",X"EE",X"FF",X"FF",X"F3",X"F0", + X"F7",X"FB",X"FD",X"F0",X"FD",X"4A",X"0C",X"08",X"F0",X"70",X"10",X"00",X"00",X"00",X"00",X"00", + X"F0",X"F0",X"F0",X"F8",X"75",X"22",X"11",X"00",X"F0",X"F0",X"F3",X"FF",X"FF",X"EE",X"89",X"03", + X"00",X"07",X"0E",X"0C",X"FE",X"FC",X"FE",X"FF",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"11", + X"00",X"00",X"11",X"22",X"77",X"DE",X"DE",X"9E",X"00",X"00",X"CC",X"EF",X"FF",X"FF",X"7F",X"7F", + X"FF",X"FF",X"FE",X"FC",X"FE",X"0C",X"0E",X"07",X"11",X"11",X"00",X"00",X"00",X"00",X"00",X"00", + X"9E",X"9E",X"DE",X"DE",X"77",X"22",X"11",X"00",X"7F",X"7F",X"7F",X"FF",X"FF",X"EF",X"CC",X"00", + X"00",X"88",X"CC",X"EE",X"2E",X"0E",X"0E",X"0E",X"60",X"10",X"70",X"10",X"60",X"00",X"00",X"03", + X"00",X"32",X"F1",X"33",X"76",X"77",X"3F",X"1F",X"FF",X"FC",X"F3",X"F5",X"FD",X"CF",X"EF",X"FD", + X"8E",X"8B",X"03",X"01",X"01",X"00",X"00",X"00",X"0F",X"00",X"00",X"00",X"06",X"0F",X"0F",X"06", + X"1F",X"01",X"05",X"01",X"09",X"09",X"01",X"01",X"F8",X"FD",X"7F",X"0E",X"0C",X"08",X"08",X"00", + X"40",X"40",X"E0",X"80",X"FE",X"FE",X"F9",X"FD",X"00",X"00",X"03",X"01",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"0E",X"0F",X"03",X"01",X"01",X"20",X"10",X"00",X"77",X"FF",X"FF",X"FF",X"FF", + X"FA",X"FF",X"7F",X"2E",X"0C",X"0C",X"0E",X"0E",X"0F",X"03",X"00",X"00",X"00",X"00",X"00",X"00", + X"0F",X"1F",X"3F",X"11",X"00",X"00",X"00",X"00",X"EF",X"EB",X"E1",X"EB",X"CF",X"03",X"01",X"00", + X"40",X"50",X"20",X"B8",X"E6",X"FB",X"F1",X"FB",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"08",X"0C",X"0E",X"07",X"07",X"13",X"17",X"00",X"00",X"00",X"77",X"FF",X"FF",X"FC",X"FF", + X"F5",X"FF",X"7F",X"2E",X"4C",X"00",X"00",X"00",X"01",X"07",X"0F",X"00",X"00",X"00",X"00",X"00", + X"3F",X"7E",X"FC",X"76",X"33",X"00",X"01",X"07",X"BE",X"8F",X"87",X"8F",X"0F",X"0F",X"0E",X"0C", + X"00",X"00",X"00",X"00",X"88",X"CC",X"EE",X"EE",X"00",X"07",X"00",X"80",X"40",X"F0",X"73",X"B3", + X"00",X"0E",X"0F",X"33",X"FF",X"FF",X"FF",X"FF",X"00",X"00",X"0C",X"FF",X"FF",X"FF",X"FF",X"FF", + X"EE",X"EE",X"CC",X"88",X"00",X"00",X"00",X"00",X"B3",X"73",X"F0",X"40",X"80",X"00",X"07",X"00", + X"FF",X"FF",X"FF",X"FF",X"33",X"0F",X"0E",X"00",X"FF",X"FF",X"FF",X"FF",X"FF",X"0C",X"00",X"00", + X"0E",X"4A",X"2C",X"F0",X"AC",X"C8",X"88",X"88",X"33",X"33",X"33",X"11",X"00",X"00",X"00",X"00", + X"BC",X"BC",X"DA",X"69",X"1F",X"27",X"01",X"00",X"A7",X"A7",X"7F",X"FF",X"FF",X"FF",X"7F",X"37", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"3F",X"6E",X"4C",X"08",X"00",X"00",X"00",X"00", + X"0C",X"0C",X"0C",X"48",X"B8",X"20",X"50",X"00",X"77",X"77",X"77",X"23",X"01",X"00",X"00",X"00", + X"AD",X"AD",X"A5",X"D3",X"3F",X"5F",X"13",X"01",X"CF",X"CF",X"EF",X"FF",X"FB",X"FD",X"EE",X"EE", + X"00",X"00",X"00",X"08",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"6E",X"7F",X"17",X"01",X"00",X"00",X"00",X"00", + X"0E",X"0E",X"1E",X"AC",X"BC",X"A8",X"98",X"00",X"33",X"33",X"33",X"11",X"00",X"00",X"00",X"00", + X"BC",X"BC",X"DA",X"69",X"1F",X"27",X"01",X"13",X"A7",X"A7",X"7F",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"01",X"00",X"00",X"00", + X"13",X"13",X"37",X"3F",X"6E",X"00",X"00",X"00",X"FF",X"FF",X"CC",X"00",X"00",X"00",X"00",X"00", + X"08",X"08",X"08",X"80",X"60",X"40",X"A0",X"00",X"FF",X"FF",X"FE",X"56",X"03",X"01",X"00",X"00", + X"5B",X"5B",X"5B",X"B7",X"7F",X"BF",X"37",X"37",X"8F",X"8F",X"CF",X"EF",X"F7",X"EA",X"CC",X"CC", + X"00",X"00",X"00",X"00",X"08",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"13",X"13",X"01",X"00",X"00",X"00",X"00",X"00",X"CC",X"EE",X"7F",X"17",X"01",X"00",X"00",X"00", + X"00",X"88",X"88",X"CC",X"CC",X"EE",X"EE",X"EE",X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"11", + X"01",X"03",X"56",X"76",X"EF",X"CF",X"DE",X"FE",X"08",X"3E",X"B6",X"F6",X"7E",X"3E",X"B6",X"F6", + X"EE",X"EE",X"EE",X"CE",X"CE",X"8E",X"0E",X"0C",X"11",X"11",X"00",X"00",X"00",X"00",X"00",X"00", + X"FF",X"FF",X"FF",X"FF",X"77",X"33",X"11",X"00",X"FE",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"01", + X"00",X"00",X"10",X"10",X"F0",X"1C",X"1C",X"0C",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"01", + X"0F",X"77",X"33",X"11",X"33",X"37",X"3F",X"3F",X"00",X"88",X"CC",X"FF",X"CF",X"8F",X"0F",X"0F", + X"0C",X"0C",X"0C",X"80",X"00",X"00",X"00",X"00",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"01", + X"3F",X"3F",X"37",X"32",X"11",X"33",X"77",X"0F",X"87",X"4B",X"AD",X"F0",X"EC",X"C8",X"80",X"00", + X"0C",X"EE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"00",X"10",X"00",X"00",X"30",X"00",X"00",X"10", + X"01",X"00",X"80",X"40",X"F0",X"40",X"80",X"00",X"0F",X"13",X"17",X"1F",X"3F",X"3F",X"37",X"37", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"EE",X"0C",X"10",X"00",X"00",X"30",X"00",X"00",X"10",X"00", + X"00",X"80",X"40",X"F0",X"40",X"80",X"00",X"00",X"37",X"37",X"3F",X"3F",X"1F",X"17",X"13",X"0F", + X"22",X"26",X"B7",X"3F",X"5F",X"5F",X"CE",X"8C",X"00",X"00",X"00",X"00",X"00",X"13",X"17",X"3F", + X"00",X"00",X"00",X"11",X"11",X"99",X"BA",X"BB",X"30",X"27",X"4F",X"5A",X"D2",X"5E",X"C7",X"EF", + X"8C",X"8E",X"CE",X"DF",X"DF",X"5F",X"5F",X"14",X"3F",X"3F",X"1F",X"1F",X"07",X"03",X"00",X"00", + X"CC",X"CC",X"CC",X"EE",X"FF",X"7F",X"0F",X"07",X"6F",X"EF",X"67",X"75",X"FC",X"DE",X"0C",X"00", + X"00",X"00",X"00",X"08",X"4C",X"4E",X"2E",X"C3",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"01",X"32",X"23",X"23",X"74",X"77",X"60",X"4E",X"9F",X"A7",X"A7",X"BF",X"9F",X"DF", + X"8C",X"C2",X"2E",X"CE",X"8C",X"88",X"00",X"00",X"33",X"77",X"EF",X"DF",X"8F",X"CF",X"77",X"33", + X"89",X"EE",X"3F",X"CF",X"4C",X"6E",X"EE",X"CC",X"CF",X"EF",X"EF",X"EF",X"7F",X"37",X"00",X"00", + X"C1",X"DB",X"5B",X"B7",X"5E",X"4E",X"9E",X"BC",X"00",X"00",X"00",X"03",X"07",X"0F",X"1F",X"1F", + X"00",X"00",X"00",X"4C",X"EE",X"EE",X"EE",X"EE",X"00",X"01",X"13",X"74",X"56",X"57",X"F9",X"FF", + X"2D",X"D3",X"3F",X"CE",X"0C",X"00",X"00",X"00",X"3F",X"3F",X"1F",X"17",X"17",X"03",X"01",X"00", + X"DF",X"9F",X"9F",X"DF",X"FF",X"7F",X"0F",X"00",X"1E",X"CF",X"EF",X"9F",X"CF",X"7F",X"0E",X"00", + X"00",X"00",X"08",X"0C",X"0C",X"0C",X"86",X"4A",X"00",X"00",X"01",X"03",X"12",X"01",X"07",X"07", + X"00",X"0C",X"0E",X"87",X"4B",X"0F",X"0F",X"0F",X"04",X"04",X"0D",X"4B",X"87",X"0F",X"0F",X"C3", + X"0C",X"0E",X"0E",X"86",X"0E",X"0C",X"08",X"00",X"07",X"07",X"16",X"03",X"03",X"01",X"00",X"00", + X"1E",X"2D",X"1E",X"87",X"4B",X"09",X"01",X"00",X"2D",X"1E",X"1E",X"0F",X"1E",X"2D",X"0D",X"00", + X"00",X"0C",X"C0",X"C0",X"00",X"0C",X"C0",X"C0",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"11",X"33",X"77",X"7F",X"7F",X"7F",X"02",X"25",X"AD",X"AD",X"AD",X"2D",X"2D",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"7F",X"7F",X"7F",X"77",X"77",X"33",X"11",X"00",X"08",X"08",X"08",X"FF",X"FF",X"EE",X"EE",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"11",X"11",X"11",X"11",X"11",X"11",X"77",X"FF",X"EE",X"CC",X"CC",X"CC",X"88",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"60",X"61",X"07",X"01",X"61",X"61",X"07",X"00", + X"19",X"95",X"B7",X"B7",X"B7",X"A6",X"84",X"08",X"00",X"88",X"CC",X"88",X"88",X"00",X"00",X"00", + X"00",X"0C",X"C0",X"C0",X"00",X"0C",X"C0",X"C0",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"11",X"33",X"33",X"77",X"77",X"77",X"02",X"25",X"AD",X"AD",X"AD",X"AD",X"25",X"EE", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"7F",X"7F",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"FF",X"77",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"7F",X"7F",X"00",X"00",X"00",X"00",X"00",X"77",X"FF",X"FF", + X"C0",X"C0",X"0C",X"00",X"C0",X"C0",X"0C",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"77",X"77",X"77",X"33",X"33",X"11",X"00",X"00",X"CE",X"25",X"AD",X"AD",X"AD",X"AD",X"25",X"02", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"76",X"76",X"F0",X"F0",X"F6",X"FE",X"F8",X"BC",X"80",X"C0",X"C0",X"C0",X"C0",X"88",X"88",X"88", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"8F",X"8F",X"8F",X"0F",X"0F",X"07",X"07",X"03",X"88",X"88",X"88",X"08",X"0C",X"0C",X"0C",X"0C", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"01",X"03",X"03",X"07",X"07",X"07",X"07",X"0E",X"0E",X"0E",X"0C",X"0C",X"0C",X"08",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"34",X"70",X"76",X"F6",X"F0",X"F0",X"73",X"33",X"00",X"80",X"C0",X"C0",X"C0",X"C0",X"80",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"30",X"43",X"07",X"07",X"00",X"00",X"00",X"00",X"80",X"0C",X"0C",X"0C", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"8F",X"8F",X"00",X"00",X"00",X"00",X"00",X"00",X"0C",X"0C",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"FB",X"FB",X"00",X"00",X"00",X"00",X"00",X"00",X"84",X"C0", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"70",X"70",X"73",X"33",X"00",X"00",X"00",X"00",X"C0",X"C0",X"C0",X"80",X"00",X"00",X"00",X"00", + X"00",X"40",X"60",X"20",X"38",X"78",X"1C",X"0C",X"00",X"00",X"00",X"10",X"12",X"47",X"EF",X"FF", + X"08",X"08",X"05",X"D7",X"B7",X"3F",X"7F",X"EF",X"08",X"08",X"CC",X"CF",X"CF",X"CF",X"EF",X"FF", + X"1C",X"1C",X"1C",X"78",X"28",X"A8",X"C8",X"00",X"FF",X"FF",X"FF",X"77",X"77",X"33",X"11",X"00", + X"EF",X"EF",X"DF",X"DF",X"DF",X"DF",X"DF",X"03",X"FD",X"FD",X"FD",X"FB",X"FD",X"FD",X"FE",X"1F", + X"00",X"00",X"00",X"00",X"28",X"18",X"1C",X"1C",X"00",X"00",X"00",X"10",X"12",X"47",X"EF",X"FF", + X"05",X"05",X"05",X"D7",X"B7",X"3F",X"7F",X"EF",X"00",X"00",X"8C",X"8F",X"CF",X"CF",X"EF",X"FF", + X"3C",X"1C",X"1C",X"08",X"08",X"88",X"88",X"00",X"FF",X"FF",X"FF",X"77",X"77",X"33",X"11",X"00", + X"EF",X"DF",X"DF",X"BF",X"BF",X"BF",X"BF",X"03",X"FD",X"FD",X"FD",X"FB",X"FB",X"FD",X"FE",X"0F", + X"00",X"00",X"10",X"98",X"F8",X"9C",X"9C",X"8C",X"01",X"00",X"11",X"33",X"77",X"77",X"FF",X"FF", + X"0F",X"7F",X"EF",X"CF",X"CF",X"EF",X"FF",X"FF",X"0F",X"CC",X"7F",X"3F",X"D3",X"A5",X"AD",X"AD", + X"8C",X"9C",X"9C",X"F8",X"98",X"10",X"00",X"00",X"FF",X"FF",X"77",X"77",X"33",X"11",X"00",X"01", + X"FF",X"FF",X"EF",X"CF",X"CF",X"EF",X"7F",X"0F",X"AD",X"AD",X"A5",X"D3",X"3F",X"7F",X"CC",X"0F", + X"00",X"00",X"18",X"D0",X"F0",X"5C",X"DE",X"CF",X"07",X"11",X"00",X"11",X"33",X"BB",X"FF",X"FF", + X"0F",X"FF",X"F1",X"FF",X"FF",X"FF",X"FF",X"FF",X"08",X"8C",X"EF",X"CF",X"CF",X"EF",X"FF",X"FF", + X"CF",X"DE",X"5C",X"F0",X"D0",X"18",X"00",X"00",X"FF",X"FF",X"BB",X"33",X"11",X"00",X"11",X"07", + X"FF",X"FF",X"FF",X"FF",X"FF",X"F1",X"FF",X"0F",X"FF",X"FF",X"EF",X"CF",X"CF",X"EF",X"8C",X"08", + X"0C",X"0C",X"0C",X"48",X"40",X"40",X"E0",X"50",X"FF",X"FF",X"EF",X"47",X"03",X"01",X"00",X"00", + X"78",X"78",X"A5",X"D3",X"2F",X"5F",X"13",X"37",X"4F",X"6F",X"FF",X"FF",X"FB",X"EC",X"EE",X"FE", + X"40",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"00",X"00",X"00",X"00", + X"7F",X"7F",X"FF",X"FF",X"7F",X"7F",X"17",X"01",X"EE",X"CC",X"CC",X"88",X"88",X"CC",X"EE",X"0E", + X"0C",X"0C",X"0C",X"48",X"40",X"30",X"20",X"50",X"FF",X"FF",X"EF",X"47",X"03",X"01",X"00",X"00", + X"AD",X"AD",X"A5",X"D3",X"2F",X"5F",X"13",X"01",X"CF",X"EF",X"FF",X"FF",X"FB",X"EC",X"EE",X"FF", + X"40",X"00",X"88",X"88",X"CC",X"EE",X"FF",X"0F",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"01",X"13",X"13",X"13",X"01",X"00",X"00",X"00",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"07",X"00", + X"FF",X"FF",X"DD",X"CC",X"C8",X"A8",X"30",X"30",X"3F",X"37",X"23",X"30",X"30",X"01",X"00",X"00", + X"FF",X"FF",X"7F",X"3F",X"3F",X"7F",X"13",X"17",X"FF",X"FF",X"FF",X"FF",X"FF",X"F8",X"FF",X"EE", + X"30",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"13",X"13",X"37",X"37",X"7F",X"0F", + X"7F",X"FF",X"FF",X"FF",X"FF",X"EE",X"CC",X"00",X"CC",X"CC",X"88",X"88",X"00",X"00",X"00",X"00", + X"FF",X"FF",X"DD",X"CC",X"D8",X"B8",X"10",X"10",X"3F",X"37",X"23",X"30",X"30",X"01",X"00",X"00", + X"FF",X"FF",X"7F",X"3F",X"3F",X"7F",X"13",X"13",X"FF",X"FF",X"FF",X"FF",X"FF",X"F8",X"FF",X"EE", + X"10",X"00",X"00",X"88",X"CC",X"CC",X"EE",X"0E",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"13",X"01",X"01",X"01",X"00",X"00",X"00",X"00",X"EE",X"FF",X"FF",X"FF",X"7F",X"7F",X"37",X"03", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"08",X"0C",X"0C",X"0E",X"00",X"00",X"00",X"10",X"12",X"47",X"EF",X"FF", + X"08",X"08",X"05",X"D7",X"B7",X"3F",X"7F",X"FF",X"08",X"08",X"CC",X"CF",X"CF",X"CF",X"EF",X"FF", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"08",X"0C",X"0C",X"0E",X"00",X"00",X"00",X"10",X"12",X"47",X"EF",X"FF", + X"05",X"05",X"05",X"D7",X"B7",X"3F",X"7F",X"FF",X"00",X"00",X"8C",X"8F",X"CF",X"CF",X"EF",X"FF", + X"0E",X"0E",X"0C",X"48",X"28",X"A8",X"B8",X"70",X"FF",X"FF",X"FF",X"77",X"77",X"33",X"11",X"00", + X"FF",X"EF",X"DF",X"DF",X"DF",X"DF",X"BF",X"37",X"FF",X"FF",X"FF",X"FF",X"FF",X"FD",X"FE",X"FF", + X"50",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"13",X"37",X"0F", + X"37",X"7F",X"7F",X"FF",X"FF",X"FF",X"FF",X"4C",X"FF",X"FF",X"EE",X"EE",X"CC",X"CC",X"00",X"00", + X"0E",X"0E",X"0E",X"2C",X"28",X"A8",X"B8",X"30",X"FF",X"FF",X"FF",X"77",X"77",X"33",X"11",X"00", + X"FF",X"FF",X"FF",X"DF",X"DF",X"DF",X"DF",X"13",X"FF",X"FF",X"FF",X"FF",X"FB",X"FD",X"FE",X"EE", + X"60",X"00",X"00",X"00",X"88",X"88",X"CC",X"0C",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"37",X"37",X"13",X"13",X"13",X"01",X"00",X"00",X"EE",X"EE",X"FF",X"FF",X"FF",X"FF",X"7F",X"0F", + X"00",X"00",X"10",X"10",X"78",X"1C",X"2C",X"0C",X"00",X"00",X"01",X"03",X"56",X"FE",X"FF",X"FF", + X"0F",X"37",X"5F",X"2F",X"B7",X"F5",X"78",X"78",X"0F",X"EE",X"EC",X"FB",X"FF",X"FF",X"6F",X"4F", + X"0C",X"1C",X"1C",X"78",X"10",X"20",X"88",X"0C",X"FF",X"FF",X"EF",X"47",X"12",X"10",X"00",X"00", + X"78",X"78",X"7D",X"3F",X"A7",X"D7",X"13",X"03",X"4F",X"6F",X"FF",X"FF",X"FB",X"EC",X"FF",X"0F", + X"00",X"00",X"10",X"10",X"78",X"1C",X"1C",X"0C",X"0B",X"11",X"01",X"30",X"74",X"EF",X"FF",X"FF", + X"0F",X"FF",X"7F",X"3F",X"3F",X"7D",X"78",X"78",X"0C",X"CC",X"CC",X"FB",X"FF",X"FF",X"6F",X"4F", + X"0C",X"0C",X"0C",X"48",X"20",X"70",X"A0",X"28",X"FF",X"FF",X"EF",X"47",X"0B",X"01",X"04",X"00", + X"78",X"78",X"7D",X"F3",X"E3",X"5F",X"13",X"07",X"4F",X"6F",X"FF",X"FF",X"FB",X"EC",X"FF",X"0F", + X"0C",X"0C",X"0C",X"48",X"40",X"40",X"E0",X"50",X"FF",X"FF",X"EF",X"47",X"03",X"01",X"00",X"00", + X"78",X"78",X"A5",X"D3",X"2F",X"5F",X"13",X"37",X"4F",X"6F",X"FF",X"FF",X"FB",X"EC",X"EE",X"FE", + X"40",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"13",X"13",X"37",X"0F", + X"7F",X"7F",X"FF",X"FF",X"FF",X"FF",X"EE",X"0C",X"EE",X"CC",X"CC",X"88",X"88",X"00",X"00",X"00", + X"0C",X"0C",X"0C",X"48",X"40",X"30",X"20",X"50",X"0F",X"0F",X"1E",X"07",X"03",X"10",X"0C",X"08", + X"2D",X"2D",X"2D",X"C3",X"C3",X"2D",X"03",X"01",X"0F",X"0F",X"0F",X"0F",X"4B",X"2C",X"0E",X"0F", + X"40",X"00",X"08",X"08",X"0C",X"0E",X"0F",X"0F",X"01",X"02",X"00",X"08",X"01",X"02",X"00",X"00", + X"01",X"03",X"03",X"03",X"01",X"00",X"00",X"00",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"07",X"00", + X"00",X"88",X"88",X"CC",X"CC",X"EE",X"EE",X"EE",X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"11", + X"10",X"12",X"47",X"67",X"FE",X"DE",X"CF",X"EF",X"80",X"B6",X"3E",X"7E",X"F6",X"B6",X"3E",X"7E", + X"EE",X"EE",X"EE",X"CE",X"CF",X"8F",X"01",X"01",X"11",X"11",X"00",X"00",X"00",X"00",X"00",X"00", + X"FF",X"FF",X"FF",X"FF",X"77",X"33",X"11",X"00",X"FE",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"00", + X"00",X"88",X"88",X"CC",X"CC",X"EE",X"EE",X"EE",X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"11", + X"01",X"03",X"56",X"76",X"EF",X"CF",X"DE",X"FE",X"08",X"3E",X"B6",X"F6",X"7E",X"3E",X"B6",X"F6", + X"EE",X"EE",X"EE",X"CE",X"CE",X"8E",X"0E",X"0C",X"11",X"11",X"00",X"00",X"00",X"00",X"00",X"00", + X"FF",X"FF",X"FF",X"FF",X"77",X"33",X"11",X"00",X"FE",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"01", + X"00",X"00",X"00",X"00",X"88",X"88",X"8C",X"8E",X"00",X"11",X"33",X"17",X"C3",X"C3",X"17",X"77", + X"77",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"88",X"EE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"8E",X"8F",X"8B",X"89",X"01",X"02",X"00",X"00",X"77",X"17",X"C3",X"C3",X"17",X"33",X"11",X"00", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"77",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"EE",X"88", + X"00",X"00",X"00",X"00",X"88",X"88",X"8E",X"8E",X"00",X"00",X"11",X"17",X"C3",X"C3",X"17",X"77", + X"00",X"77",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"00",X"88",X"EE",X"FF",X"FF",X"FF",X"FF",X"FF", + X"8F",X"8F",X"89",X"88",X"00",X"00",X"00",X"00",X"77",X"17",X"C3",X"C3",X"17",X"11",X"00",X"00", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"77",X"00",X"FF",X"FF",X"FF",X"FF",X"FF",X"EE",X"88",X"00", + X"00",X"88",X"88",X"C4",X"C4",X"2E",X"2E",X"A6",X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"11", + X"00",X"31",X"56",X"56",X"AD",X"AD",X"1E",X"1E",X"00",X"FA",X"96",X"87",X"4B",X"5A",X"96",X"87", + X"A6",X"2E",X"2E",X"C4",X"4C",X"4C",X"8F",X"06",X"11",X"11",X"00",X"00",X"00",X"00",X"00",X"00", + X"2D",X"0F",X"8F",X"8F",X"47",X"23",X"11",X"00",X"4B",X"1E",X"1E",X"0F",X"0F",X"0F",X"FF",X"00", + X"00",X"88",X"88",X"4C",X"4C",X"2E",X"A6",X"A6",X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"11", + X"00",X"31",X"56",X"56",X"AD",X"AD",X"1E",X"1E",X"00",X"FA",X"96",X"96",X"5A",X"5A",X"96",X"87", + X"A6",X"A6",X"A6",X"4E",X"4E",X"8E",X"0C",X"08",X"11",X"11",X"00",X"00",X"00",X"00",X"00",X"00", + X"2D",X"0F",X"8F",X"8F",X"47",X"23",X"11",X"00",X"4B",X"0F",X"0F",X"0F",X"0F",X"0F",X"FF",X"01", + X"00",X"00",X"00",X"00",X"00",X"88",X"4C",X"2E",X"00",X"00",X"00",X"00",X"00",X"33",X"43",X"74", + X"00",X"00",X"00",X"33",X"CF",X"0F",X"C3",X"3C",X"00",X"00",X"00",X"CC",X"3F",X"0F",X"87",X"0F", + X"2E",X"2E",X"2E",X"2E",X"2F",X"CF",X"03",X"02",X"74",X"43",X"47",X"61",X"76",X"11",X"00",X"00", + X"3C",X"C3",X"0F",X"69",X"96",X"8F",X"77",X"00",X"0F",X"87",X"0F",X"69",X"96",X"1F",X"EE",X"00", + X"00",X"00",X"00",X"00",X"00",X"88",X"4C",X"2E",X"00",X"00",X"00",X"00",X"00",X"33",X"43",X"74", + X"00",X"00",X"00",X"33",X"CF",X"0F",X"C3",X"3C",X"00",X"00",X"00",X"CC",X"3F",X"0F",X"87",X"0F", + X"2E",X"2E",X"2E",X"2F",X"4F",X"8E",X"0C",X"00",X"74",X"43",X"47",X"70",X"67",X"11",X"00",X"00", + X"3C",X"C3",X"0F",X"E1",X"3C",X"8F",X"77",X"00",X"0F",X"87",X"0F",X"0F",X"E1",X"1F",X"EF",X"00", + X"00",X"00",X"88",X"88",X"88",X"88",X"88",X"88",X"00",X"00",X"33",X"22",X"22",X"22",X"22",X"22", + X"00",X"00",X"FF",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"00",X"00",X"00",X"00",X"00", + X"88",X"88",X"88",X"88",X"88",X"00",X"00",X"00",X"22",X"22",X"22",X"22",X"33",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"FF",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"00",X"00",X"00", + X"CC",X"22",X"22",X"EE",X"00",X"EE",X"44",X"88",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"22",X"22",X"33",X"00",X"33",X"00",X"00", + X"00",X"EE",X"00",X"22",X"AA",X"AA",X"EE",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"33",X"00",X"22",X"22",X"22",X"33",X"00", + X"00",X"44",X"44",X"66",X"66",X"EE",X"EE",X"EE",X"00",X"00",X"11",X"11",X"11",X"33",X"33",X"33", + X"60",X"69",X"0F",X"9F",X"F9",X"69",X"0F",X"9F",X"00",X"88",X"88",X"88",X"88",X"88",X"88",X"CC", + X"EE",X"EE",X"EE",X"CE",X"CE",X"8E",X"06",X"0C",X"33",X"33",X"11",X"11",X"00",X"00",X"00",X"00", + X"FF",X"FF",X"FF",X"FF",X"FF",X"77",X"11",X"00",X"CC",X"DD",X"DD",X"DD",X"FF",X"FF",X"FF",X"00", + X"00",X"88",X"88",X"CC",X"CC",X"EE",X"EE",X"EE",X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"11", + X"10",X"12",X"47",X"67",X"FE",X"DE",X"CF",X"EF",X"80",X"B6",X"3E",X"7E",X"F6",X"B6",X"3E",X"7E", + X"EE",X"EE",X"EE",X"CE",X"CE",X"8E",X"06",X"0C",X"11",X"11",X"00",X"00",X"00",X"00",X"00",X"00", + X"FF",X"FF",X"FF",X"FF",X"77",X"33",X"11",X"00",X"FE",X"FE",X"FE",X"FE",X"FF",X"FF",X"FF",X"00", + X"00",X"00",X"00",X"88",X"CC",X"CC",X"EE",X"EE",X"17",X"C3",X"C3",X"17",X"77",X"11",X"00",X"00", + X"9F",X"C3",X"C3",X"9F",X"FF",X"FF",X"77",X"11",X"88",X"EE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"EE",X"EE",X"66",X"EE",X"CD",X"8F",X"0E",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"33",X"00", + X"00",X"00",X"00",X"00",X"00",X"33",X"FF",X"00",X"77",X"11",X"00",X"11",X"77",X"FF",X"EF",X"00", + X"00",X"00",X"00",X"00",X"88",X"CC",X"CC",X"EE",X"00",X"00",X"17",X"C3",X"C3",X"17",X"77",X"00", + X"00",X"77",X"9F",X"C3",X"C3",X"9F",X"FF",X"FF",X"00",X"00",X"CC",X"FF",X"FF",X"FF",X"FF",X"FF", + X"EE",X"EE",X"EE",X"EE",X"CD",X"8F",X"0E",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"33",X"00", + X"11",X"00",X"00",X"00",X"11",X"FF",X"FF",X"00",X"FF",X"33",X"00",X"33",X"FF",X"FF",X"EF",X"00", + X"00",X"00",X"00",X"00",X"88",X"CC",X"CC",X"EE",X"00",X"00",X"00",X"33",X"17",X"C3",X"C3",X"17", + X"00",X"00",X"77",X"FF",X"9F",X"C3",X"C3",X"9F",X"00",X"00",X"CC",X"FF",X"FF",X"FF",X"FF",X"FF", + X"EE",X"EE",X"EE",X"EE",X"CD",X"8F",X"0E",X"00",X"77",X"00",X"00",X"00",X"00",X"77",X"11",X"00", + X"FF",X"11",X"00",X"00",X"77",X"FF",X"FF",X"00",X"FF",X"FF",X"00",X"77",X"FF",X"FF",X"EF",X"00", + X"00",X"00",X"00",X"88",X"CC",X"CC",X"EE",X"EE",X"00",X"00",X"00",X"11",X"33",X"77",X"17",X"C3", + X"00",X"00",X"77",X"FF",X"FF",X"FF",X"9F",X"C3",X"00",X"00",X"EE",X"FF",X"FF",X"FF",X"FF",X"FF", + X"EE",X"EE",X"EE",X"EE",X"CD",X"8F",X"0E",X"00",X"C3",X"17",X"77",X"70",X"77",X"11",X"00",X"00", + X"C3",X"9F",X"FF",X"F0",X"FF",X"FF",X"77",X"00",X"FF",X"FF",X"FF",X"F0",X"FF",X"FF",X"EF",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/Pacman Hardware/Birdiy_MiST/rtl/ROM/PROM1_DST.vhd b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/ROM/PROM1_DST.vhd new file mode 100644 index 00000000..0450232c --- /dev/null +++ b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/ROM/PROM1_DST.vhd @@ -0,0 +1,38 @@ +library ieee; +use ieee.std_logic_1164.all,ieee.numeric_std.all; + +entity PROM1_DST is +port ( + clk : in std_logic; + addr : in std_logic_vector(7 downto 0); + data : out std_logic_vector(7 downto 0) +); +end entity; + +architecture prom of PROM1_DST is + type rom is array(0 to 255) of std_logic_vector(7 downto 0); + signal rom_data: rom := ( + X"07",X"09",X"0A",X"0B",X"0C",X"0D",X"0D",X"0E",X"0E",X"0E",X"0D",X"0D",X"0C",X"0B",X"0A",X"09", + X"07",X"05",X"04",X"03",X"02",X"01",X"01",X"00",X"00",X"00",X"01",X"01",X"02",X"03",X"04",X"05", + X"07",X"0C",X"0E",X"0E",X"0D",X"0B",X"09",X"0A",X"0B",X"0B",X"0A",X"09",X"06",X"04",X"03",X"05", + X"07",X"09",X"0B",X"0A",X"08",X"05",X"04",X"03",X"03",X"04",X"05",X"03",X"01",X"00",X"00",X"02", + X"07",X"0A",X"0C",X"0D",X"0E",X"0D",X"0C",X"0A",X"07",X"04",X"02",X"01",X"00",X"01",X"02",X"04", + X"07",X"0B",X"0D",X"0E",X"0D",X"0B",X"07",X"03",X"01",X"00",X"01",X"03",X"07",X"0E",X"07",X"00", + X"07",X"0D",X"0B",X"08",X"0B",X"0D",X"09",X"06",X"0B",X"0E",X"0C",X"07",X"09",X"0A",X"06",X"02", + X"07",X"0C",X"08",X"04",X"05",X"07",X"02",X"00",X"03",X"08",X"05",X"01",X"03",X"06",X"03",X"01", + X"00",X"08",X"0F",X"07",X"01",X"08",X"0E",X"07",X"02",X"08",X"0D",X"07",X"03",X"08",X"0C",X"07", + X"04",X"08",X"0B",X"07",X"05",X"08",X"0A",X"07",X"06",X"08",X"09",X"07",X"07",X"08",X"08",X"07", + X"07",X"08",X"06",X"09",X"05",X"0A",X"04",X"0B",X"03",X"0C",X"02",X"0D",X"01",X"0E",X"00",X"0F", + X"00",X"0F",X"01",X"0E",X"02",X"0D",X"03",X"0C",X"04",X"0B",X"05",X"0A",X"06",X"09",X"07",X"08", + X"00",X"01",X"02",X"03",X"04",X"05",X"06",X"07",X"08",X"09",X"0A",X"0B",X"0C",X"0D",X"0E",X"0F", + X"0F",X"0E",X"0D",X"0C",X"0B",X"0A",X"09",X"08",X"07",X"06",X"05",X"04",X"03",X"02",X"01",X"00", + X"00",X"01",X"02",X"03",X"04",X"05",X"06",X"07",X"08",X"09",X"0A",X"0B",X"0C",X"0D",X"0E",X"0F", + X"00",X"01",X"02",X"03",X"04",X"05",X"06",X"07",X"08",X"09",X"0A",X"0B",X"0C",X"0D",X"0E",X"0F"); +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/Pacman Hardware/Birdiy_MiST/rtl/ROM/PROM3_DST.vhd b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/ROM/PROM3_DST.vhd new file mode 100644 index 00000000..eef49093 --- /dev/null +++ b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/ROM/PROM3_DST.vhd @@ -0,0 +1,38 @@ +library ieee; +use ieee.std_logic_1164.all,ieee.numeric_std.all; + +entity C:\Users\hp\Desktop\Birdiy_MiST\rtl\ROM\PROM3_DST is +port ( + clk : in std_logic; + addr : in std_logic_vector(7 downto 0); + data : out std_logic_vector(7 downto 0) +); +end entity; + +architecture prom of C:\Users\hp\Desktop\Birdiy_MiST\rtl\ROM\PROM3_DST is + type rom is array(0 to 255) of std_logic_vector(7 downto 0); + signal rom_data: rom := ( + X"0F",X"0D",X"0F",X"0F",X"0F",X"0D",X"0F",X"0F",X"0F",X"0D",X"0F",X"0F",X"0F",X"0D",X"0F",X"0F", + X"0F",X"0D",X"0F",X"0F",X"0F",X"0D",X"0F",X"0F",X"0F",X"0D",X"0F",X"0F",X"0F",X"0D",X"0F",X"0F", + X"0F",X"0D",X"0F",X"0F",X"0F",X"0D",X"0F",X"0F",X"0F",X"0D",X"0F",X"0F",X"0F",X"0D",X"0F",X"0F", + X"0F",X"0D",X"0F",X"0F",X"0F",X"0D",X"0F",X"0F",X"0F",X"0D",X"0F",X"0F",X"0F",X"0D",X"0F",X"0F", + X"07",X"0F",X"0E",X"0D",X"0F",X"0F",X"0E",X"0D",X"0F",X"0F",X"0E",X"0D",X"0F",X"0F",X"0E",X"0D", + X"0F",X"0F",X"0E",X"0D",X"0F",X"0F",X"0F",X"0B",X"07",X"0F",X"0E",X"0D",X"0F",X"0F",X"0E",X"0D", + X"0F",X"0F",X"0E",X"0D",X"0F",X"0F",X"0E",X"0D",X"0F",X"0F",X"0F",X"0B",X"07",X"0F",X"0E",X"0D", + X"0F",X"0F",X"0E",X"0D",X"0F",X"0F",X"0E",X"0D",X"0F",X"0F",X"0E",X"0D",X"0F",X"0F",X"0F",X"0B", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",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/Pacman Hardware/Birdiy_MiST/rtl/ROM/PROM4_DST.vhd b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/ROM/PROM4_DST.vhd new file mode 100644 index 00000000..dd5ebf26 --- /dev/null +++ b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/ROM/PROM4_DST.vhd @@ -0,0 +1,38 @@ +library ieee; +use ieee.std_logic_1164.all,ieee.numeric_std.all; + +entity PROM4_DST is +port ( + clk : in std_logic; + addr : in std_logic_vector(7 downto 0); + data : out std_logic_vector(7 downto 0) +); +end entity; + +architecture prom of PROM4_DST is + type rom is array(0 to 255) of std_logic_vector(7 downto 0); + signal rom_data: rom := ( + X"00",X"00",X"00",X"00",X"00",X"0F",X"0B",X"01",X"00",X"0F",X"0B",X"03",X"00",X"0F",X"0B",X"0F", + X"00",X"0F",X"0B",X"07",X"00",X"0F",X"0B",X"05",X"00",X"0F",X"0B",X"0C",X"00",X"0F",X"0B",X"09", + X"00",X"05",X"0B",X"07",X"00",X"0B",X"01",X"09",X"00",X"05",X"0B",X"01",X"00",X"02",X"05",X"01", + X"00",X"02",X"0B",X"01",X"00",X"05",X"0B",X"09",X"00",X"0C",X"01",X"07",X"00",X"01",X"0C",X"0F", + X"00",X"0F",X"00",X"0B",X"00",X"0C",X"05",X"0F",X"00",X"0F",X"0B",X"0E",X"00",X"0F",X"0B",X"0D", + X"00",X"01",X"09",X"0F",X"00",X"09",X"0C",X"09",X"00",X"09",X"05",X"0F",X"00",X"05",X"0C",X"0F", + X"00",X"01",X"07",X"0B",X"00",X"0F",X"0B",X"00",X"00",X"0F",X"00",X"0B",X"00",X"0B",X"05",X"09", + X"00",X"0B",X"0C",X"02",X"00",X"0B",X"07",X"09",X"00",X"02",X"0B",X"00",X"00",X"02",X"0B",X"07", + X"00",X"00",X"00",X"00",X"00",X"0F",X"0B",X"01",X"00",X"0F",X"0B",X"03",X"00",X"0F",X"0B",X"0F", + X"00",X"0F",X"0B",X"07",X"00",X"0F",X"0B",X"05",X"00",X"0F",X"0B",X"0C",X"00",X"0F",X"0B",X"09", + X"00",X"05",X"0B",X"07",X"00",X"0B",X"01",X"09",X"00",X"05",X"0B",X"01",X"00",X"02",X"05",X"01", + X"00",X"02",X"0B",X"01",X"00",X"05",X"0B",X"09",X"00",X"0C",X"01",X"07",X"00",X"01",X"0C",X"0F", + X"00",X"0F",X"00",X"0B",X"00",X"0C",X"05",X"0F",X"00",X"0F",X"0B",X"0E",X"00",X"0F",X"0B",X"0D", + X"00",X"01",X"09",X"0F",X"00",X"09",X"0C",X"09",X"00",X"09",X"05",X"0F",X"00",X"05",X"0C",X"0F", + X"00",X"01",X"07",X"0B",X"00",X"0F",X"0B",X"00",X"00",X"0F",X"00",X"0B",X"00",X"0B",X"05",X"09", + X"00",X"0B",X"0C",X"0F",X"00",X"0B",X"07",X"09",X"00",X"02",X"0B",X"00",X"00",X"02",X"0B",X"07"); +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/Pacman Hardware/Birdiy_MiST/rtl/ROM/PROM7_DST.vhd b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/ROM/PROM7_DST.vhd new file mode 100644 index 00000000..962fe9ed --- /dev/null +++ b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/ROM/PROM7_DST.vhd @@ -0,0 +1,24 @@ +library ieee; +use ieee.std_logic_1164.all,ieee.numeric_std.all; + +entity PROM7_DST is +port ( + clk : in std_logic; + addr : in std_logic_vector(4 downto 0); + data : out std_logic_vector(7 downto 0) +); +end entity; + +architecture prom of PROM7_DST is + type rom is array(0 to 31) of std_logic_vector(7 downto 0); + signal rom_data: rom := ( + X"00",X"07",X"66",X"EF",X"00",X"F8",X"EA",X"6F",X"00",X"3F",X"00",X"C9",X"38",X"AA",X"AF",X"F6", + X"00",X"07",X"66",X"EF",X"00",X"F8",X"EA",X"6F",X"00",X"3F",X"00",X"C9",X"38",X"AA",X"AF",X"F6"); +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/Pacman Hardware/Birdiy_MiST/rtl/ROM/ROM_PGM_0.vhd b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/ROM/ROM_PGM_0.vhd new file mode 100644 index 00000000..03d1933f --- /dev/null +++ b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/ROM/ROM_PGM_0.vhd @@ -0,0 +1,1046 @@ +library ieee; +use ieee.std_logic_1164.all,ieee.numeric_std.all; + +entity ROM_PGM_0 is +port ( + clk : in std_logic; + addr : in std_logic_vector(13 downto 0); + data : out std_logic_vector(7 downto 0) +); +end entity; + +architecture prom of ROM_PGM_0 is + type rom is array(0 to 16383) of std_logic_vector(7 downto 0); + signal rom_data: rom := ( + X"31",X"B0",X"4F",X"ED",X"56",X"C3",X"81",X"00",X"DF",X"DF",X"DF",X"DF",X"DF",X"DF",X"DF",X"DF", + X"0F",X"0F",X"0F",X"0F",X"C9",X"DF",X"DF",X"DF",X"E1",X"D1",X"C1",X"00",X"00",X"C7",X"DF",X"DF", + X"E1",X"07",X"16",X"00",X"5F",X"19",X"5E",X"23",X"56",X"EB",X"E9",X"EB",X"E9",X"DF",X"DF",X"DF", + X"E1",X"22",X"5A",X"4C",X"C9",X"DF",X"DF",X"DF",X"F5",X"C5",X"D5",X"E5",X"DD",X"E5",X"FD",X"E5", + X"D9",X"C5",X"D5",X"E5",X"08",X"F5",X"21",X"01",X"50",X"36",X"00",X"32",X"C0",X"50",X"2E",X"07", + X"36",X"01",X"CD",X"4D",X"06",X"CD",X"63",X"05",X"CD",X"60",X"04",X"CD",X"E8",X"03",X"CD",X"00", + X"20",X"CD",X"F2",X"05",X"CD",X"E0",X"03",X"3E",X"FF",X"32",X"22",X"4C",X"21",X"01",X"50",X"36", + X"01",X"F1",X"08",X"E1",X"D1",X"C1",X"D9",X"FD",X"E1",X"DD",X"E1",X"E1",X"D1",X"C1",X"F1",X"FB", + X"C9",X"21",X"07",X"50",X"36",X"00",X"2B",X"7C",X"FE",X"3F",X"32",X"C0",X"50",X"20",X"F5",X"16", + X"00",X"D9",X"21",X"00",X"40",X"36",X"00",X"23",X"7C",X"32",X"C0",X"50",X"FE",X"51",X"20",X"F5", + X"21",X"00",X"40",X"55",X"5D",X"DD",X"21",X"AC",X"00",X"C3",X"0B",X"01",X"21",X"00",X"44",X"DD", + X"21",X"B6",X"00",X"C3",X"0B",X"01",X"21",X"00",X"4C",X"DD",X"21",X"C0",X"00",X"C3",X"0B",X"01", + X"21",X"00",X"40",X"36",X"40",X"23",X"7C",X"FE",X"44",X"20",X"F8",X"36",X"03",X"23",X"7C",X"FE", + X"48",X"20",X"F8",X"7A",X"B3",X"CA",X"67",X"01",X"01",X"E0",X"FF",X"21",X"A6",X"42",X"36",X"42", + X"09",X"36",X"41",X"09",X"36",X"44",X"09",X"36",X"40",X"09",X"36",X"52",X"09",X"36",X"41",X"09", + X"36",X"4D",X"09",X"36",X"40",X"DD",X"21",X"FC",X"00",X"C3",X"4A",X"01",X"09",X"41",X"DD",X"21", + X"05",X"01",X"C3",X"4A",X"01",X"16",X"FF",X"D9",X"C3",X"67",X"01",X"7E",X"B7",X"FD",X"21",X"13", + X"01",X"20",X"2E",X"3E",X"01",X"47",X"77",X"AE",X"FD",X"21",X"1E",X"01",X"20",X"23",X"78",X"37", + X"8F",X"32",X"C0",X"50",X"30",X"EF",X"23",X"7D",X"06",X"4F",X"32",X"07",X"50",X"10",X"FB",X"B7", + X"20",X"D9",X"7C",X"FE",X"44",X"28",X"08",X"FE",X"48",X"28",X"04",X"FE",X"50",X"20",X"CC",X"DD", + X"E9",X"B3",X"5F",X"7A",X"B7",X"20",X"01",X"54",X"FD",X"E9",X"09",X"7A",X"0F",X"0F",X"0F",X"0F", + X"E6",X"0F",X"FE",X"0A",X"38",X"02",X"C6",X"37",X"77",X"09",X"7A",X"E6",X"0F",X"FE",X"0A",X"38", + X"02",X"C6",X"37",X"77",X"09",X"DD",X"E9",X"21",X"00",X"00",X"11",X"08",X"01",X"01",X"00",X"08", + X"3E",X"FF",X"AE",X"32",X"07",X"50",X"32",X"C0",X"50",X"23",X"0D",X"20",X"F5",X"10",X"F3",X"B7", + X"FD",X"21",X"86",X"01",X"00",X"00",X"14",X"1D",X"20",X"E3",X"CB",X"7A",X"20",X"08",X"D9",X"7A", + X"B7",X"20",X"03",X"C3",X"22",X"02",X"21",X"00",X"20",X"10",X"FE",X"32",X"C0",X"50",X"2D",X"20", + X"F8",X"D9",X"21",X"BA",X"42",X"01",X"E0",X"FF",X"36",X"44",X"09",X"36",X"49",X"09",X"36",X"50", + X"09",X"09",X"36",X"53",X"09",X"36",X"57",X"09",X"3A",X"00",X"50",X"57",X"DD",X"21",X"C3",X"01", + X"C3",X"4A",X"01",X"3A",X"40",X"50",X"57",X"DD",X"21",X"CD",X"01",X"18",X"F3",X"3A",X"80",X"50", + X"57",X"DD",X"21",X"D7",X"01",X"18",X"E9",X"D9",X"25",X"20",X"BE",X"C7",X"25",X"20",X"BA",X"C7", + X"08",X"7A",X"87",X"CB",X"FA",X"E6",X"3F",X"D9",X"21",X"A8",X"42",X"85",X"6F",X"30",X"01",X"24", + X"01",X"E0",X"FF",X"36",X"42",X"09",X"36",X"41",X"09",X"36",X"44",X"09",X"09",X"36",X"50",X"09", + X"36",X"52",X"09",X"36",X"4F",X"09",X"36",X"4D",X"09",X"D9",X"7A",X"D9",X"E6",X"0F",X"57",X"DD", + X"21",X"16",X"02",X"C3",X"4A",X"01",X"08",X"57",X"DD",X"21",X"1F",X"02",X"C3",X"4A",X"01",X"D9", + X"FD",X"E9",X"18",X"16",X"C3",X"B6",X"02",X"C3",X"80",X"03",X"C3",X"B3",X"03",X"C3",X"C6",X"03", + X"C3",X"CB",X"03",X"C3",X"D8",X"05",X"6D",X"06",X"8D",X"06",X"21",X"00",X"4C",X"36",X"00",X"11", + X"01",X"4C",X"01",X"FF",X"03",X"ED",X"B0",X"CD",X"80",X"03",X"3A",X"00",X"50",X"32",X"12",X"4C", + X"3A",X"C0",X"50",X"A7",X"20",X"02",X"3E",X"FF",X"32",X"13",X"4C",X"FB",X"3E",X"01",X"32",X"01", + X"50",X"3A",X"00",X"50",X"CB",X"67",X"C2",X"0C",X"07",X"CD",X"C6",X"03",X"A4",X"42",X"41",X"44", + X"44",X"52",X"45",X"53",X"53",X"20",X"20",X"44",X"41",X"54",X"41",X"24",X"CD",X"C6",X"03",X"66", + X"42",X"30",X"30",X"30",X"30",X"24",X"11",X"00",X"00",X"0E",X"00",X"CD",X"33",X"03",X"3A",X"00", + X"50",X"CB",X"47",X"28",X"41",X"CB",X"5F",X"28",X"41",X"CB",X"4F",X"28",X"70",X"CB",X"57",X"28", + X"7C",X"3A",X"40",X"50",X"CB",X"6F",X"28",X"1C",X"CB",X"77",X"28",X"1E",X"06",X"14",X"CD",X"B6", + X"02",X"10",X"FB",X"C3",X"8E",X"02",X"AF",X"32",X"22",X"4C",X"3A",X"22",X"4C",X"B7",X"32",X"C0", + X"50",X"28",X"F7",X"C9",X"3A",X"FF",X"4F",X"12",X"18",X"E2",X"C5",X"D5",X"21",X"D2",X"02",X"E5", + X"D5",X"C9",X"D1",X"C1",X"18",X"D6",X"06",X"01",X"18",X"02",X"06",X"FF",X"CB",X"59",X"20",X"1F", + X"CB",X"49",X"20",X"09",X"7A",X"CD",X"51",X"03",X"57",X"2E",X"66",X"18",X"07",X"7B",X"CD",X"51", + X"03",X"5F",X"2E",X"26",X"26",X"42",X"CD",X"64",X"03",X"ED",X"53",X"F0",X"4F",X"18",X"A2",X"3A", + X"FF",X"4F",X"CD",X"51",X"03",X"32",X"FF",X"4F",X"CD",X"66",X"06",X"18",X"94",X"0D",X"F2",X"15", + X"03",X"0E",X"09",X"18",X"18",X"CB",X"51",X"28",X"14",X"0E",X"03",X"18",X"10",X"0C",X"CB",X"51", + X"28",X"04",X"0E",X"08",X"18",X"07",X"79",X"FE",X"0A",X"38",X"02",X"0E",X"00",X"CD",X"33",X"03", + X"C3",X"A1",X"02",X"C5",X"D5",X"79",X"32",X"FE",X"4F",X"0C",X"21",X"47",X"41",X"11",X"20",X"00", + X"06",X"0A",X"79",X"B8",X"3E",X"FF",X"28",X"02",X"3E",X"20",X"77",X"19",X"10",X"F4",X"D1",X"C1", + X"C9",X"CB",X"41",X"20",X"01",X"D7",X"F5",X"80",X"E6",X"0F",X"47",X"F1",X"E6",X"F0",X"B0",X"CB", + X"41",X"C0",X"D7",X"C9",X"C5",X"47",X"D7",X"CD",X"74",X"03",X"78",X"01",X"E0",X"FF",X"09",X"CD", + X"74",X"03",X"C1",X"C9",X"E6",X"0F",X"C6",X"30",X"FE",X"3A",X"38",X"02",X"C6",X"07",X"77",X"C9", + X"AF",X"32",X"00",X"50",X"CD",X"B3",X"03",X"00",X"80",X"50",X"30",X"01",X"CD",X"B3",X"03",X"00", + X"D0",X"4F",X"30",X"01",X"CD",X"B3",X"03",X"FC",X"00",X"40",X"00",X"04",X"CD",X"B3",X"03",X"03", + X"00",X"44",X"00",X"04",X"21",X"01",X"4C",X"CB",X"86",X"21",X"00",X"00",X"22",X"06",X"4D",X"22", + X"08",X"4D",X"C9",X"E1",X"7E",X"23",X"5E",X"23",X"56",X"23",X"46",X"23",X"4E",X"12",X"13",X"10", + X"FC",X"0D",X"20",X"F9",X"23",X"E9",X"01",X"E0",X"FF",X"18",X"03",X"01",X"FF",X"FF",X"E1",X"5E", + X"23",X"56",X"23",X"EB",X"1A",X"13",X"FE",X"24",X"28",X"04",X"77",X"09",X"18",X"F6",X"EB",X"E9", + X"21",X"10",X"4C",X"34",X"C0",X"23",X"34",X"C9",X"3A",X"01",X"4C",X"0F",X"D0",X"3A",X"16",X"4C", + X"0E",X"1F",X"FE",X"06",X"30",X"07",X"0E",X"0F",X"3D",X"20",X"02",X"0E",X"07",X"3A",X"10",X"4C", + X"A1",X"C0",X"2A",X"48",X"4C",X"5E",X"23",X"7E",X"23",X"A7",X"28",X"3A",X"57",X"1A",X"FE",X"F0", + X"30",X"F3",X"EE",X"01",X"12",X"3A",X"16",X"4C",X"A7",X"28",X"EA",X"FE",X"06",X"30",X"E6",X"E5", + X"21",X"00",X"04",X"19",X"7E",X"FE",X"0F",X"28",X"08",X"FE",X"15",X"20",X"08",X"36",X"0F",X"18", + X"12",X"36",X"15",X"18",X"0E",X"FE",X"16",X"28",X"08",X"FE",X"14",X"20",X"06",X"36",X"16",X"18", + X"02",X"36",X"14",X"E1",X"18",X"BF",X"2A",X"06",X"4D",X"7C",X"A7",X"C8",X"0E",X"2E",X"CD",X"56", + X"04",X"2A",X"08",X"4D",X"0E",X"03",X"7E",X"FE",X"FC",X"79",X"28",X"02",X"3E",X"FC",X"77",X"C9", + X"3A",X"1D",X"4C",X"A7",X"C8",X"3A",X"00",X"4C",X"FE",X"50",X"D0",X"E6",X"F0",X"FE",X"40",X"CA", + X"FA",X"04",X"CD",X"80",X"03",X"AF",X"32",X"04",X"50",X"CD",X"03",X"07",X"4C",X"44",X"1C",X"02", + X"CD",X"03",X"07",X"51",X"44",X"1C",X"07",X"CD",X"03",X"07",X"58",X"44",X"1C",X"05",X"CD",X"B3", + X"03",X"00",X"23",X"4C",X"06",X"01",X"CD",X"00",X"07",X"06",X"CD",X"C6",X"03",X"0C",X"43",X"50", + X"55",X"53",X"48",X"20",X"53",X"54",X"41",X"52",X"54",X"20",X"42",X"55",X"54",X"54",X"4F",X"4E", + X"2E",X"24",X"21",X"86",X"90",X"22",X"E6",X"4F",X"21",X"88",X"13",X"22",X"D6",X"4F",X"CD",X"C6", + X"03",X"98",X"43",X"41",X"44",X"44",X"49",X"54",X"49",X"4F",X"4E",X"41",X"4C",X"20",X"2A",X"2A", + X"20",X"41",X"54",X"20",X"31",X"30",X"30",X"30",X"30",X"20",X"50",X"54",X"53",X"2E",X"24",X"21", + X"60",X"62",X"22",X"17",X"42",X"21",X"66",X"64",X"22",X"37",X"42",X"21",X"02",X"02",X"22",X"17", + X"46",X"22",X"37",X"46",X"21",X"40",X"00",X"22",X"00",X"4C",X"3A",X"10",X"4C",X"E6",X"0F",X"20", + X"07",X"21",X"D6",X"4F",X"7E",X"EE",X"04",X"77",X"3A",X"1D",X"4C",X"3D",X"20",X"18",X"CD",X"C6", + X"03",X"D1",X"42",X"31",X"20",X"50",X"4C",X"41",X"59",X"45",X"52",X"20",X"4F",X"4E",X"4C",X"59", + X"24",X"3A",X"40",X"50",X"18",X"25",X"CD",X"C6",X"03",X"D1",X"42",X"31",X"20",X"4F",X"52",X"20", + X"32",X"20",X"50",X"4C",X"41",X"59",X"45",X"52",X"53",X"24",X"3A",X"40",X"50",X"CB",X"77",X"20", + X"0A",X"3A",X"1D",X"4C",X"D6",X"02",X"11",X"50",X"80",X"18",X"0B",X"E6",X"20",X"C0",X"3A",X"1D", + X"4C",X"D6",X"01",X"11",X"50",X"00",X"27",X"32",X"1D",X"4C",X"ED",X"53",X"00",X"4C",X"CD",X"06", + X"07",X"18",X"75",X"3A",X"80",X"50",X"E6",X"03",X"20",X"07",X"3E",X"99",X"32",X"1D",X"4C",X"18", + X"67",X"3A",X"00",X"50",X"CB",X"77",X"21",X"1F",X"4C",X"CD",X"8F",X"05",X"3A",X"00",X"50",X"CB", + X"6F",X"21",X"1E",X"4C",X"CD",X"8F",X"05",X"3A",X"00",X"50",X"CB",X"7F",X"21",X"1E",X"4C",X"7E", + X"28",X"05",X"E6",X"0F",X"C8",X"35",X"C9",X"E6",X"0F",X"CB",X"D6",X"CB",X"8E",X"C0",X"3A",X"80", + X"50",X"E6",X"03",X"47",X"3A",X"1D",X"4C",X"05",X"28",X"18",X"05",X"20",X"03",X"3C",X"18",X"12", + X"7E",X"C6",X"80",X"77",X"21",X"33",X"40",X"38",X"04",X"36",X"25",X"18",X"0F",X"36",X"20",X"3A", + X"1D",X"4C",X"C6",X"01",X"27",X"30",X"02",X"3E",X"99",X"32",X"1D",X"4C",X"3A",X"00",X"4C",X"FE", + X"50",X"30",X"05",X"3E",X"01",X"32",X"4A",X"4C",X"11",X"1D",X"4C",X"1A",X"21",X"34",X"40",X"E6", + X"0F",X"C6",X"30",X"77",X"1A",X"D7",X"23",X"E6",X"0F",X"28",X"04",X"C6",X"30",X"77",X"C9",X"36", + X"20",X"C9",X"3A",X"01",X"4C",X"E6",X"20",X"20",X"17",X"21",X"D2",X"4F",X"11",X"F2",X"4F",X"01", + X"0C",X"00",X"ED",X"B0",X"21",X"E2",X"4F",X"11",X"A2",X"50",X"01",X"0C",X"00",X"ED",X"B0",X"C9", + X"DD",X"21",X"D2",X"4F",X"FD",X"21",X"33",X"50",X"01",X"02",X"06",X"26",X"0C",X"11",X"02",X"00", + X"DD",X"7E",X"00",X"EE",X"03",X"FD",X"77",X"BF",X"DD",X"7E",X"01",X"FD",X"77",X"C0",X"DD",X"7E", + X"10",X"ED",X"44",X"84",X"FD",X"77",X"6F",X"DD",X"7E",X"11",X"ED",X"44",X"C6",X"10",X"FD",X"77", + X"70",X"0D",X"20",X"02",X"26",X"0E",X"DD",X"19",X"FD",X"19",X"10",X"D4",X"C9",X"3A",X"00",X"50", + X"CB",X"67",X"C0",X"3A",X"FE",X"4F",X"CB",X"5F",X"28",X"05",X"3A",X"FF",X"4F",X"18",X"07",X"2A", + X"F0",X"4F",X"7E",X"32",X"FF",X"4F",X"21",X"66",X"41",X"CD",X"64",X"03",X"C9",X"ED",X"41",X"EE", + X"41",X"0D",X"42",X"0E",X"42",X"DF",X"40",X"BF",X"40",X"5F",X"41",X"3F",X"41",X"DF",X"42",X"BF", + X"42",X"5F",X"43",X"3F",X"43",X"BF",X"41",X"DF",X"41",X"3F",X"42",X"5F",X"42",X"82",X"40",X"83", + X"40",X"93",X"40",X"94",X"40",X"A5",X"40",X"C5",X"40",X"A8",X"40",X"A9",X"40",X"B6",X"40",X"D6", + X"40",X"CC",X"40",X"EC",X"40",X"0A",X"41",X"2A",X"41",X"26",X"41",X"27",X"41",X"41",X"41",X"42", + X"41",X"C3",X"41",X"C4",X"41",X"E1",X"41",X"01",X"42",X"C3",X"42",X"E3",X"42",X"41",X"43",X"42", + X"43",X"05",X"43",X"25",X"43",X"C7",X"42",X"C8",X"42",X"49",X"43",X"4A",X"43",X"0D",X"43",X"2D", + X"43",X"73",X"43",X"74",X"43",X"36",X"43",X"56",X"43",X"B4",X"41",X"B5",X"41",X"77",X"41",X"97", + X"41",X"55",X"42",X"56",X"42",X"78",X"42",X"98",X"42",X"00",X"00",X"72",X"CB",X"68",X"3E",X"DC", + X"28",X"02",X"3E",X"78",X"77",X"18",X"67",X"18",X"71",X"CD",X"52",X"1D",X"CD",X"60",X"2D",X"CD", + X"C3",X"44",X"0A",X"C3",X"3F",X"0F",X"C3",X"1C",X"0A",X"C3",X"7D",X"09",X"C3",X"12",X"07",X"C3", + X"86",X"0E",X"3A",X"80",X"50",X"0F",X"0F",X"E6",X"03",X"3C",X"32",X"1A",X"4C",X"21",X"80",X"50", + X"CB",X"6E",X"28",X"11",X"11",X"29",X"4C",X"06",X"05",X"C5",X"21",X"3C",X"07",X"01",X"06",X"00", + X"ED",X"B0",X"C1",X"10",X"F4",X"3E",X"01",X"32",X"03",X"50",X"18",X"06",X"00",X"05",X"00",X"4D", + X"54",X"50",X"3A",X"00",X"4C",X"D7",X"E6",X"0F",X"28",X"0C",X"CB",X"57",X"20",X"12",X"3D",X"20", + X"0A",X"CD",X"7A",X"07",X"18",X"1F",X"CD",X"0C",X"27",X"18",X"1A",X"CD",X"0F",X"27",X"18",X"15", + X"E6",X"03",X"28",X"05",X"CD",X"7A",X"07",X"18",X"0C",X"21",X"00",X"4C",X"CB",X"5E",X"20",X"05", + X"CB",X"DE",X"CD",X"C6",X"0A",X"CD",X"24",X"02",X"18",X"C8",X"3A",X"01",X"4C",X"0F",X"DA",X"0B", + X"08",X"21",X"00",X"4C",X"CB",X"76",X"20",X"05",X"CD",X"06",X"07",X"18",X"70",X"CD",X"27",X"02", + X"CD",X"C6",X"0A",X"21",X"01",X"4C",X"CB",X"AE",X"11",X"78",X"4C",X"3E",X"31",X"CB",X"76",X"28", + X"11",X"3A",X"80",X"50",X"E6",X"10",X"28",X"07",X"CB",X"EE",X"3E",X"01",X"32",X"00",X"50",X"3E", + X"32",X"13",X"32",X"8B",X"41",X"1A",X"A7",X"20",X"04",X"CB",X"9E",X"18",X"02",X"CB",X"DE",X"CD", + X"29",X"0B",X"CD",X"2D",X"02",X"6B",X"42",X"50",X"4C",X"41",X"59",X"45",X"52",X"24",X"CD",X"2D", + X"02",X"2E",X"42",X"52",X"45",X"41",X"44",X"59",X"24",X"21",X"01",X"4C",X"CB",X"7E",X"20",X"0C", + X"AF",X"21",X"C5",X"47",X"77",X"23",X"77",X"23",X"77",X"32",X"E3",X"47",X"06",X"64",X"CD",X"24", + X"02",X"10",X"FB",X"3E",X"02",X"32",X"4C",X"4C",X"3E",X"09",X"32",X"4A",X"4C",X"CD",X"CB",X"0B", + X"2A",X"36",X"02",X"22",X"48",X"4C",X"21",X"01",X"4C",X"CB",X"C6",X"3A",X"00",X"4C",X"E6",X"07", + X"E7",X"21",X"08",X"AE",X"08",X"B6",X"08",X"03",X"09",X"4C",X"09",X"51",X"09",X"56",X"09",X"06", + X"27",X"21",X"00",X"05",X"22",X"18",X"4C",X"3A",X"80",X"50",X"CB",X"6F",X"20",X"05",X"3E",X"01", + X"32",X"16",X"4C",X"AF",X"32",X"20",X"4C",X"21",X"1B",X"4C",X"3A",X"01",X"4C",X"E6",X"40",X"28", + X"01",X"23",X"35",X"21",X"01",X"4C",X"28",X"04",X"CB",X"A6",X"18",X"02",X"CB",X"E6",X"CD",X"7D", + X"09",X"3A",X"7A",X"4C",X"A7",X"4F",X"28",X"0C",X"E6",X"E0",X"3E",X"06",X"20",X"06",X"79",X"0F", + X"0F",X"E6",X"07",X"3C",X"4F",X"5F",X"16",X"00",X"21",X"84",X"08",X"19",X"7E",X"32",X"14",X"4C", + X"79",X"07",X"07",X"81",X"5F",X"21",X"8B",X"08",X"19",X"11",X"7B",X"4C",X"01",X"05",X"00",X"ED", + X"B0",X"C3",X"58",X"09",X"00",X"02",X"00",X"05",X"02",X"84",X"FF",X"05",X"09",X"07",X"10",X"15", + X"07",X"12",X"09",X"13",X"20",X"09",X"16",X"13",X"18",X"27",X"12",X"22",X"17",X"24",X"36",X"15", + X"27",X"21",X"30",X"45",X"20",X"36",X"28",X"40",X"60",X"25",X"45",X"35",X"50",X"75",X"CD",X"B4", + X"09",X"CD",X"00",X"10",X"18",X"30",X"3A",X"7A",X"4C",X"E6",X"FC",X"28",X"06",X"CD",X"0C",X"10", + X"CD",X"06",X"10",X"CD",X"0C",X"10",X"CD",X"06",X"10",X"3A",X"14",X"4C",X"4F",X"A7",X"28",X"19", + X"21",X"15",X"4C",X"07",X"79",X"30",X"08",X"35",X"20",X"09",X"E6",X"7F",X"77",X"18",X"0A",X"35", + X"20",X"07",X"77",X"CD",X"0C",X"10",X"CD",X"06",X"10",X"21",X"20",X"4C",X"7E",X"A7",X"28",X"6C", + X"35",X"20",X"69",X"CD",X"03",X"07",X"AA",X"41",X"07",X"FB",X"CD",X"03",X"07",X"AA",X"45",X"07", + X"1C",X"18",X"59",X"21",X"00",X"4C",X"CB",X"5E",X"20",X"08",X"CB",X"DE",X"21",X"00",X"00",X"22", + X"10",X"4C",X"3A",X"10",X"4C",X"47",X"E6",X"0F",X"20",X"42",X"CB",X"60",X"28",X"14",X"CD",X"C9", + X"0E",X"CD",X"B3",X"0B",X"3A",X"10",X"4C",X"FE",X"80",X"38",X"31",X"21",X"00",X"4C",X"CB",X"9E", + X"18",X"26",X"3E",X"0C",X"32",X"4A",X"4C",X"CD",X"2A",X"02",X"03",X"40",X"44",X"80",X"04",X"21", + X"D3",X"4F",X"01",X"03",X"06",X"71",X"23",X"23",X"10",X"FB",X"18",X"10",X"CD",X"00",X"27",X"18", + X"0B",X"CD",X"03",X"27",X"18",X"06",X"18",X"00",X"21",X"00",X"4C",X"34",X"3A",X"00",X"4C",X"CB", + X"77",X"C8",X"3A",X"10",X"4C",X"E6",X"0F",X"C0",X"3A",X"01",X"4C",X"21",X"C5",X"47",X"CB",X"77", + X"20",X"02",X"2E",X"D8",X"7E",X"EE",X"03",X"77",X"23",X"77",X"23",X"77",X"C9",X"11",X"1B",X"4C", + X"3A",X"01",X"4C",X"CB",X"77",X"28",X"01",X"13",X"21",X"90",X"91",X"01",X"93",X"92",X"1A",X"A7", + X"C8",X"22",X"CF",X"41",X"ED",X"43",X"EF",X"41",X"3D",X"C8",X"22",X"0F",X"42",X"ED",X"43",X"2F", + X"42",X"3D",X"C8",X"22",X"8F",X"41",X"ED",X"43",X"AF",X"41",X"3D",X"C8",X"22",X"4F",X"42",X"ED", + X"43",X"6F",X"42",X"C9",X"21",X"00",X"4C",X"CB",X"5E",X"20",X"1B",X"CB",X"DE",X"3E",X"03",X"32", + X"18",X"4C",X"21",X"00",X"00",X"22",X"10",X"4C",X"21",X"86",X"98",X"01",X"04",X"02",X"22",X"E4", + X"4F",X"ED",X"43",X"D4",X"4F",X"C9",X"3A",X"10",X"4C",X"E6",X"0F",X"C0",X"21",X"D4",X"4F",X"7E", + X"FE",X"20",X"28",X"04",X"C6",X"04",X"77",X"C9",X"D6",X"04",X"77",X"21",X"18",X"4C",X"35",X"C0", + X"21",X"00",X"00",X"22",X"E4",X"4F",X"22",X"D4",X"4F",X"21",X"60",X"62",X"22",X"ED",X"41",X"21", + X"66",X"64",X"22",X"0D",X"42",X"21",X"00",X"4C",X"7E",X"E6",X"F0",X"F6",X"02",X"77",X"3E",X"03", + X"32",X"08",X"4C",X"3E",X"01",X"32",X"0D",X"4C",X"32",X"04",X"4C",X"C9",X"3A",X"1A",X"4C",X"67", + X"6F",X"22",X"1B",X"4C",X"21",X"00",X"00",X"22",X"78",X"4C",X"AF",X"32",X"7A",X"4C",X"21",X"29", + X"4C",X"11",X"03",X"4D",X"01",X"03",X"00",X"ED",X"B0",X"21",X"0A",X"4D",X"06",X"08",X"36",X"00", + X"23",X"10",X"FB",X"C9",X"E1",X"7E",X"23",X"E5",X"06",X"1C",X"21",X"43",X"44",X"11",X"20",X"00", + X"E5",X"C5",X"06",X"07",X"77",X"23",X"10",X"FC",X"C1",X"E1",X"19",X"10",X"F3",X"CD",X"2D",X"02", + X"E3",X"42",X"10",X"FF",X"FF",X"11",X"12",X"24",X"CD",X"2D",X"02",X"C4",X"42",X"13",X"18",X"19", + X"1A",X"24",X"CD",X"2D",X"02",X"E5",X"42",X"1B",X"1C",X"FF",X"FF",X"1E",X"03",X"20",X"20",X"20", + X"20",X"1B",X"F0",X"03",X"24",X"CD",X"2D",X"02",X"E6",X"42",X"1F",X"00",X"20",X"19",X"1A",X"04", + X"06",X"08",X"0A",X"0C",X"0E",X"00",X"04",X"1B",X"F0",X"04",X"17",X"24",X"CD",X"2D",X"02",X"07", + X"43",X"10",X"FF",X"FF",X"FF",X"01",X"02",X"05",X"07",X"09",X"0B",X"0D",X"0F",X"F1",X"05",X"F2", + X"F4",X"14",X"1D",X"24",X"CD",X"2D",X"02",X"48",X"41",X"F3",X"F5",X"15",X"24",X"CD",X"2D",X"02", + X"49",X"41",X"0D",X"0F",X"16",X"24",X"CD",X"30",X"02",X"DA",X"43",X"31",X"55",X"50",X"20",X"20", + X"20",X"48",X"49",X"47",X"48",X"20",X"53",X"43",X"4F",X"52",X"45",X"20",X"20",X"20",X"32",X"55", + X"50",X"24",X"3E",X"30",X"32",X"F7",X"43",X"32",X"ED",X"43",X"32",X"E3",X"43",X"21",X"FD",X"43", + X"11",X"25",X"4C",X"CD",X"09",X"10",X"2E",X"E9",X"11",X"28",X"4C",X"CD",X"09",X"10",X"2E",X"F3", + X"11",X"05",X"4D",X"CD",X"09",X"10",X"CD",X"30",X"02",X"3C",X"40",X"43",X"52",X"45",X"44",X"49", + X"54",X"20",X"20",X"30",X"20",X"20",X"20",X"40",X"4D",X"41",X"4D",X"41",X"20",X"54",X"4F",X"50", + X"20",X"31",X"39",X"38",X"33",X"24",X"C3",X"33",X"02",X"32",X"7A",X"4C",X"F5",X"3E",X"FC",X"06", + X"0A",X"21",X"3C",X"40",X"77",X"2B",X"10",X"FC",X"F1",X"F5",X"0F",X"0F",X"E6",X"07",X"16",X"00", + X"5F",X"21",X"AE",X"0B",X"19",X"7E",X"21",X"13",X"44",X"11",X"33",X"44",X"06",X"08",X"77",X"12", + X"23",X"13",X"10",X"FA",X"CD",X"30",X"02",X"1D",X"40",X"41",X"43",X"54",X"24",X"F1",X"F5",X"4F", + X"E6",X"1F",X"FE",X"0A",X"79",X"38",X"02",X"C6",X"06",X"C6",X"01",X"27",X"4F",X"E6",X"0F",X"C6", + X"30",X"32",X"3B",X"40",X"79",X"D7",X"E6",X"0F",X"28",X"04",X"C6",X"30",X"18",X"02",X"3E",X"20", + X"32",X"3C",X"40",X"F1",X"21",X"60",X"66",X"11",X"62",X"64",X"22",X"19",X"40",X"ED",X"53",X"39", + X"40",X"E6",X"03",X"C8",X"22",X"17",X"40",X"ED",X"53",X"37",X"40",X"3D",X"C8",X"22",X"15",X"40", + X"ED",X"53",X"35",X"40",X"3D",X"C8",X"22",X"13",X"40",X"ED",X"53",X"33",X"40",X"C9",X"02",X"07", + X"04",X"01",X"06",X"3E",X"07",X"32",X"D3",X"4F",X"3E",X"13",X"32",X"D7",X"4F",X"32",X"D9",X"4F", + X"3E",X"01",X"32",X"DB",X"4F",X"3E",X"05",X"32",X"DD",X"4F",X"C9",X"CD",X"B3",X"0B",X"21",X"68", + X"88",X"22",X"02",X"4C",X"21",X"30",X"00",X"22",X"06",X"4C",X"2E",X"A0",X"22",X"0B",X"4C",X"3E", + X"02",X"32",X"08",X"4C",X"AF",X"32",X"0D",X"4C",X"32",X"04",X"4C",X"32",X"00",X"4D",X"3D",X"32", + X"14",X"4D",X"3E",X"20",X"32",X"E3",X"4F",X"21",X"01",X"00",X"22",X"10",X"4C",X"CD",X"2A",X"02", + X"FC",X"40",X"40",X"80",X"04",X"CD",X"2D",X"02",X"5F",X"43",X"72",X"70",X"FC",X"FC",X"77",X"75", + X"FC",X"FC",X"72",X"70",X"FC",X"FC",X"76",X"74",X"FC",X"FC",X"73",X"71",X"FC",X"FC",X"76",X"74", + X"24",X"CD",X"03",X"07",X"5E",X"40",X"1C",X"84",X"CD",X"03",X"07",X"72",X"40",X"1A",X"2D",X"3E", + X"FB",X"21",X"40",X"40",X"06",X"0D",X"C5",X"CD",X"2F",X"0F",X"C1",X"23",X"10",X"F8",X"11",X"40", + X"40",X"CD",X"86",X"0E",X"FF",X"22",X"FF",X"FF",X"23",X"FF",X"24",X"FF",X"FF",X"26",X"FF",X"FF", + X"27",X"FF",X"28",X"29",X"2A",X"2B",X"00",X"11",X"52",X"40",X"CD",X"B5",X"0E",X"11",X"A0",X"43", + X"CD",X"86",X"0E",X"FF",X"FF",X"FF",X"22",X"24",X"FF",X"D7",X"D8",X"D9",X"D3",X"FF",X"3C",X"24", + X"FF",X"D7",X"D8",X"D9",X"D3",X"FF",X"22",X"FF",X"00",X"11",X"B5",X"43",X"CD",X"A7",X"0E",X"11", + X"F2",X"41",X"CD",X"86",X"0E",X"3B",X"22",X"3C",X"00",X"11",X"F5",X"41",X"CD",X"A7",X"0E",X"11", + X"12",X"42",X"CD",X"B5",X"0E",X"21",X"EC",X"ED",X"22",X"D2",X"41",X"21",X"EE",X"EF",X"22",X"32", + X"42",X"11",X"7B",X"40",X"CD",X"70",X"0E",X"11",X"BB",X"41",X"CD",X"7B",X"0E",X"11",X"3B",X"42", + X"CD",X"70",X"0E",X"11",X"7B",X"43",X"CD",X"7B",X"0E",X"11",X"72",X"40",X"CD",X"2E",X"0E",X"11", + X"53",X"41",X"CD",X"4F",X"0E",X"11",X"34",X"42",X"CD",X"2E",X"0E",X"11",X"12",X"43",X"CD",X"4F", + X"0E",X"3E",X"C7",X"32",X"92",X"40",X"32",X"72",X"43",X"11",X"60",X"40",X"CD",X"86",X"0E",X"02", + X"9C",X"9D",X"01",X"A0",X"A1",X"A2",X"02",X"87",X"FC",X"E2",X"FF",X"FF",X"E1",X"E0",X"3F",X"20", + X"01",X"9A",X"81",X"83",X"A3",X"A4",X"02",X"9C",X"9D",X"85",X"E2",X"FF",X"E1",X"E0",X"20",X"02", + X"9E",X"9F",X"A5",X"7C",X"98",X"9A",X"80",X"82",X"A3",X"FF",X"E3",X"20",X"04",X"97",X"7E",X"99", + X"01",X"9E",X"9F",X"B0",X"B1",X"78",X"C4",X"20",X"05",X"95",X"03",X"B2",X"A4",X"97",X"7A",X"C5", + X"20",X"06",X"9C",X"9D",X"01",X"B3",X"7C",X"98",X"C1",X"FC",X"20",X"01",X"9C",X"9D",X"02",X"9A", + X"81",X"83",X"A3",X"B4",X"7E",X"99",X"85",X"20",X"DA",X"80",X"82",X"9B",X"02",X"9E",X"9F",X"B5", + X"01",X"95",X"02",X"85",X"20",X"DB",X"9E",X"9F",X"05",X"B6",X"04",X"87",X"20",X"FF",X"B7",X"0B", + X"85",X"20",X"A9",X"DB",X"01",X"9C",X"9D",X"08",X"86",X"20",X"01",X"DC",X"DD",X"81",X"83",X"9B", + X"06",X"86",X"FC",X"20",X"96",X"79",X"DE",X"DF",X"9F",X"07",X"85",X"20",X"97",X"7B",X"99",X"09", + X"87",X"20",X"01",X"95",X"0A",X"85",X"FC",X"20",X"0D",X"85",X"20",X"0D",X"87",X"20",X"09",X"B7", + X"03",X"85",X"20",X"03",X"94",X"03",X"9C",X"9D",X"B8",X"03",X"FB",X"85",X"FC",X"FC",X"3F",X"20", + X"02",X"BD",X"78",X"98",X"01",X"9A",X"81",X"83",X"A7",X"B7",X"02",X"FB",X"FB",X"20",X"02",X"BE", + X"7A",X"99",X"94",X"01",X"9E",X"9F",X"01",X"B8",X"02",X"94",X"FB",X"85",X"20",X"02",X"B9",X"A8", + X"96",X"78",X"98",X"03",X"B9",X"BA",X"96",X"78",X"98",X"87",X"20",X"00",X"11",X"20",X"43",X"CD", + X"0B",X"0E",X"11",X"28",X"43",X"CD",X"0B",X"0E",X"11",X"2E",X"43",X"CD",X"86",X"0E",X"01",X"85", + X"20",X"FB",X"FB",X"FC",X"3F",X"20",X"02",X"85",X"3F",X"20",X"03",X"EB",X"00",X"CD",X"2D",X"02", + X"6E",X"42",X"8F",X"AE",X"AE",X"FC",X"FC",X"AE",X"AE",X"AF",X"24",X"CD",X"03",X"07",X"91",X"41", + X"08",X"8B",X"11",X"6E",X"41",X"CD",X"86",X"0E",X"88",X"89",X"AC",X"8A",X"00",X"11",X"8E",X"42", + X"CD",X"86",X"0E",X"8E",X"8D",X"AD",X"8C",X"00",X"C3",X"C6",X"0E",X"CD",X"86",X"0E",X"01",X"9C", + X"9D",X"BB",X"BC",X"7A",X"99",X"20",X"9A",X"80",X"82",X"A7",X"FF",X"A8",X"20",X"01",X"9E",X"9F", + X"01",X"A9",X"FF",X"A6",X"AA",X"20",X"05",X"A9",X"FF",X"FF",X"A6",X"AA",X"00",X"C9",X"CD",X"86", + X"0E",X"01",X"C8",X"C9",X"01",X"E2",X"E1",X"E0",X"20",X"C6",X"81",X"83",X"E4",X"E3",X"20",X"01", + X"CA",X"CB",X"E5",X"7D",X"C4",X"20",X"03",X"C3",X"7F",X"C5",X"20",X"04",X"C1",X"00",X"C9",X"CD", + X"86",X"0E",X"04",X"C0",X"20",X"03",X"C2",X"79",X"C4",X"20",X"01",X"C8",X"C9",X"E6",X"7B",X"C5", + X"20",X"C6",X"80",X"82",X"E7",X"E8",X"20",X"01",X"CA",X"CB",X"01",X"E9",X"EA",X"EB",X"00",X"C9", + X"CD",X"86",X"0E",X"D0",X"D1",X"2A",X"20",X"02",X"D2",X"00",X"C9",X"CD",X"86",X"0E",X"02",X"D6", + X"20",X"D4",X"D5",X"D9",X"00",X"C9",X"E1",X"D5",X"7E",X"23",X"A7",X"20",X"02",X"D1",X"E9",X"47", + X"FE",X"20",X"28",X"0B",X"38",X"04",X"12",X"13",X"18",X"EE",X"13",X"10",X"FD",X"18",X"E9",X"E3", + X"11",X"20",X"00",X"19",X"EB",X"18",X"DF",X"CD",X"86",X"0E",X"3D",X"24",X"FF",X"3E",X"5B",X"5C", + X"5D",X"5E",X"D9",X"00",X"C9",X"CD",X"86",X"0E",X"FF",X"FF",X"26",X"FF",X"FF",X"2B",X"26",X"3A", + X"FF",X"FF",X"FF",X"FF",X"00",X"C9",X"CD",X"00",X"30",X"CD",X"2A",X"02",X"1C",X"40",X"44",X"80", + X"04",X"CD",X"03",X"07",X"72",X"44",X"0B",X"0E",X"CD",X"03",X"07",X"52",X"46",X"0B",X"0E",X"21", + X"5E",X"44",X"3E",X"1F",X"CD",X"2F",X"0F",X"23",X"3E",X"16",X"CD",X"2F",X"0F",X"2A",X"38",X"02", + X"5E",X"23",X"7E",X"23",X"A7",X"28",X"08",X"C6",X"04",X"57",X"3E",X"0F",X"12",X"18",X"F1",X"3E", + X"12",X"06",X"04",X"21",X"6E",X"45",X"C5",X"CD",X"33",X"0F",X"23",X"C1",X"10",X"F8",X"11",X"2B", + X"0F",X"06",X"04",X"21",X"8F",X"45",X"1A",X"13",X"D5",X"CD",X"4C",X"0F",X"19",X"D1",X"10",X"F6", + X"3E",X"02",X"21",X"ED",X"45",X"CD",X"4C",X"0F",X"C3",X"03",X"30",X"04",X"05",X"07",X"06",X"06", + X"1C",X"18",X"02",X"06",X"0A",X"E5",X"11",X"20",X"00",X"77",X"19",X"10",X"FC",X"E1",X"C9",X"E1", + X"5E",X"23",X"56",X"23",X"46",X"23",X"7E",X"23",X"E5",X"EB",X"18",X"E9",X"77",X"23",X"77",X"11", + X"20",X"00",X"19",X"77",X"2B",X"77",X"C9",X"10",X"F4",X"C9",X"7B",X"E6",X"0F",X"DD",X"77",X"05", + X"7B",X"D7",X"E6",X"0F",X"DD",X"77",X"06",X"7A",X"E6",X"0F",X"DD",X"77",X"07",X"7A",X"D7",X"E6", + X"0F",X"DD",X"77",X"08",X"C9",X"AF",X"06",X"0C",X"DD",X"E5",X"E1",X"77",X"23",X"10",X"FC",X"C9", + X"27",X"3F",X"44",X"18",X"25",X"4A",X"89",X"91",X"1F",X"00",X"20",X"3F",X"40",X"56",X"1F",X"5C", + X"1F",X"00",X"27",X"3E",X"40",X"56",X"16",X"30",X"14",X"20",X"3F",X"16",X"30",X"12",X"27",X"3E", + X"40",X"56",X"16",X"30",X"14",X"20",X"3F",X"16",X"00",X"27",X"3F",X"4C",X"18",X"30",X"18",X"26", + X"4F",X"9A",X"1F",X"1F",X"00",X"3F",X"61",X"99",X"18",X"00",X"00",X"00",X"00",X"00",X"00",X"C0", + X"18",X"C2",X"18",X"C4",X"18",X"C5",X"18",X"C7",X"18",X"C9",X"18",X"CB",X"18",X"D0",X"18",X"00", + X"00",X"00",X"4F",X"9A",X"1F",X"1F",X"00",X"3F",X"61",X"99",X"18",X"00",X"00",X"00",X"00",X"00", + X"00",X"C0",X"18",X"C2",X"18",X"C4",X"18",X"C5",X"18",X"C7",X"18",X"C9",X"18",X"CB",X"18",X"D0", + X"18",X"00",X"00",X"00",X"50",X"CB",X"7F",X"7E",X"28",X"05",X"E6",X"0F",X"C8",X"35",X"C9",X"67", + X"C3",X"B8",X"10",X"C3",X"BB",X"10",X"C3",X"59",X"15",X"C3",X"57",X"1A",X"C3",X"12",X"10",X"C3", + X"85",X"19",X"3A",X"7A",X"4C",X"CB",X"4F",X"C4",X"00",X"1C",X"2A",X"02",X"4C",X"11",X"00",X"00", + X"7C",X"FE",X"68",X"38",X"30",X"FE",X"B0",X"30",X"2C",X"7D",X"FE",X"38",X"38",X"27",X"FE",X"98", + X"30",X"23",X"FE",X"68",X"38",X"03",X"11",X"08",X"08",X"3A",X"ED",X"41",X"01",X"01",X"01",X"0F", + X"38",X"03",X"01",X"00",X"00",X"21",X"60",X"62",X"09",X"19",X"22",X"ED",X"41",X"21",X"66",X"64", + X"09",X"19",X"22",X"0D",X"42",X"3A",X"19",X"4C",X"FE",X"02",X"28",X"0F",X"30",X"37",X"CD",X"59", + X"15",X"3E",X"01",X"32",X"4C",X"4C",X"CD",X"A5",X"10",X"18",X"21",X"3A",X"18",X"4C",X"CB",X"67", + X"20",X"08",X"CD",X"A5",X"10",X"21",X"02",X"02",X"18",X"15",X"CD",X"2D",X"02",X"2C",X"42",X"46", + X"45",X"45",X"44",X"21",X"24",X"CD",X"03",X"07",X"AC",X"45",X"05",X"05",X"21",X"0D",X"0D",X"22", + X"ED",X"45",X"22",X"0D",X"46",X"21",X"18",X"4C",X"35",X"20",X"1D",X"23",X"35",X"20",X"19",X"CD", + X"09",X"27",X"C3",X"44",X"18",X"CD",X"2D",X"02",X"2C",X"42",X"85",X"87",X"85",X"86",X"FB",X"24", + X"CD",X"03",X"07",X"AC",X"45",X"05",X"1C",X"C9",X"AF",X"18",X"02",X"3E",X"FF",X"21",X"05",X"4C", + X"34",X"2B",X"CB",X"46",X"CA",X"CB",X"13",X"CB",X"7E",X"28",X"0B",X"CB",X"4E",X"11",X"BA",X"B8", + X"CA",X"F8",X"13",X"C3",X"06",X"1C",X"A7",X"C2",X"B7",X"12",X"3A",X"00",X"4C",X"CB",X"77",X"C2", + X"75",X"12",X"3A",X"10",X"4C",X"E6",X"07",X"C2",X"B7",X"12",X"CD",X"85",X"19",X"E6",X"07",X"06", + X"FF",X"20",X"09",X"3A",X"03",X"4C",X"FE",X"10",X"38",X"02",X"06",X"00",X"78",X"32",X"14",X"4D", + X"DD",X"21",X"06",X"4C",X"CD",X"61",X"11",X"DD",X"21",X"0B",X"4C",X"CD",X"61",X"11",X"21",X"04", + X"4C",X"CB",X"66",X"28",X"0C",X"11",X"68",X"78",X"21",X"00",X"00",X"22",X"84",X"4C",X"C3",X"C7", + X"11",X"ED",X"5B",X"84",X"4C",X"7B",X"B2",X"C2",X"C7",X"11",X"CD",X"85",X"19",X"3A",X"12",X"4C", + X"E6",X"3E",X"4F",X"06",X"20",X"C5",X"06",X"00",X"21",X"35",X"12",X"09",X"56",X"23",X"5E",X"D5", + X"EB",X"11",X"07",X"07",X"19",X"CD",X"33",X"15",X"D1",X"C1",X"38",X"08",X"79",X"C6",X"02",X"E6", + X"3E",X"4F",X"10",X"E1",X"7A",X"FE",X"ED",X"20",X"02",X"16",X"00",X"ED",X"53",X"84",X"4C",X"18", + X"66",X"DD",X"46",X"02",X"78",X"E6",X"F8",X"C8",X"FE",X"08",X"20",X"3E",X"CB",X"40",X"C0",X"DD", + X"7E",X"00",X"FE",X"60",X"28",X"2C",X"FE",X"70",X"28",X"28",X"A7",X"3A",X"02",X"4C",X"06",X"88", + X"28",X"06",X"4F",X"3E",X"D0",X"91",X"06",X"80",X"FE",X"38",X"D0",X"4F",X"3A",X"03",X"4C",X"DD", + X"96",X"01",X"D0",X"ED",X"44",X"81",X"4F",X"DD",X"7E",X"01",X"B8",X"30",X"19",X"81",X"B8",X"D0", + X"18",X"14",X"DD",X"7E",X"01",X"FE",X"20",X"D8",X"18",X"0C",X"CB",X"60",X"C8",X"CB",X"68",X"28", + X"05",X"78",X"0F",X"A8",X"0F",X"D0",X"21",X"00",X"00",X"22",X"84",X"4C",X"DD",X"5E",X"00",X"DD", + X"56",X"01",X"AF",X"32",X"14",X"4D",X"E1",X"0E",X"00",X"3A",X"03",X"4C",X"A7",X"20",X"02",X"CB", + X"D9",X"92",X"30",X"04",X"CB",X"C9",X"ED",X"44",X"FE",X"05",X"30",X"02",X"CB",X"C1",X"47",X"3A", + X"02",X"4C",X"93",X"30",X"04",X"CB",X"E9",X"ED",X"44",X"FE",X"05",X"30",X"02",X"CB",X"E1",X"B8", + X"30",X"03",X"CB",X"F1",X"3F",X"1F",X"B8",X"38",X"02",X"CB",X"F9",X"3A",X"04",X"4C",X"47",X"79", + X"E6",X"11",X"28",X"12",X"FE",X"10",X"28",X"1A",X"38",X"1D",X"CB",X"59",X"28",X"04",X"06",X"01", + X"18",X"1D",X"78",X"2F",X"18",X"08",X"79",X"07",X"38",X"0D",X"07",X"38",X"05",X"78",X"E6",X"04", + X"20",X"05",X"79",X"E6",X"02",X"18",X"06",X"79",X"D7",X"E6",X"02",X"F6",X"04",X"3C",X"47",X"21", + X"04",X"4C",X"C3",X"A4",X"12",X"40",X"54",X"A8",X"9C",X"ED",X"98",X"90",X"30",X"C8",X"5C",X"30", + X"B8",X"B0",X"34",X"ED",X"18",X"30",X"18",X"38",X"7C",X"78",X"B0",X"20",X"88",X"ED",X"38",X"80", + X"20",X"98",X"BC",X"28",X"48",X"48",X"0C",X"ED",X"B8",X"A0",X"14",X"48",X"C4",X"D8",X"3C",X"B8", + X"B0",X"B8",X"18",X"C8",X"A0",X"D8",X"68",X"D0",X"0C",X"D8",X"BC",X"40",X"54",X"A8",X"9C",X"90", + X"30",X"C8",X"5C",X"30",X"B8",X"CD",X"1D",X"15",X"47",X"3A",X"03",X"4C",X"FE",X"10",X"78",X"30", + X"02",X"3E",X"FF",X"32",X"14",X"4D",X"78",X"21",X"04",X"4C",X"0F",X"30",X"0D",X"0F",X"30",X"0E", + X"0F",X"30",X"0F",X"0F",X"38",X"21",X"06",X"01",X"18",X"0A",X"06",X"03",X"18",X"06",X"06",X"07", + X"18",X"02",X"06",X"05",X"7E",X"E6",X"07",X"B8",X"28",X"0D",X"3E",X"01",X"32",X"05",X"4C",X"7E", + X"E6",X"F8",X"B0",X"77",X"CD",X"85",X"19",X"46",X"E5",X"3A",X"14",X"4D",X"07",X"D2",X"A2",X"13", + X"2A",X"02",X"4C",X"CB",X"58",X"C2",X"67",X"13",X"CB",X"50",X"20",X"1C",X"7D",X"C6",X"07",X"6F", + X"7C",X"C6",X"07",X"CB",X"48",X"28",X"02",X"C6",X"08",X"67",X"CD",X"33",X"15",X"38",X"1B",X"2C", + X"CD",X"33",X"15",X"38",X"15",X"C3",X"A2",X"13",X"7C",X"C6",X"0A",X"67",X"CB",X"48",X"28",X"04", + X"7D",X"C6",X"0F",X"6F",X"CD",X"33",X"15",X"D2",X"A2",X"13",X"CB",X"60",X"20",X"16",X"FE",X"70", + X"DA",X"A2",X"13",X"47",X"3E",X"FE",X"CD",X"F3",X"14",X"3A",X"7B",X"4C",X"47",X"3E",X"01",X"0E", + X"10",X"C3",X"90",X"13",X"FE",X"70",X"D2",X"A2",X"13",X"AF",X"32",X"D4",X"4F",X"21",X"18",X"4C", + X"77",X"3A",X"7A",X"4C",X"E6",X"02",X"3E",X"05",X"20",X"01",X"3D",X"23",X"77",X"C5",X"CD",X"A5", + X"10",X"C1",X"21",X"02",X"02",X"22",X"ED",X"45",X"22",X"0D",X"46",X"3E",X"02",X"32",X"4C",X"4C", + X"0E",X"03",X"CD",X"1D",X"19",X"3A",X"7C",X"4C",X"CB",X"68",X"28",X"03",X"3A",X"7E",X"4C",X"CD", + X"97",X"19",X"E1",X"7E",X"E6",X"CF",X"77",X"EB",X"21",X"16",X"4C",X"35",X"EB",X"20",X"44",X"21", + X"01",X"4C",X"0E",X"03",X"C3",X"99",X"18",X"78",X"E6",X"36",X"20",X"36",X"CB",X"70",X"28",X"32", + X"3A",X"05",X"4C",X"E6",X"E0",X"28",X"2B",X"26",X"F4",X"7D",X"C6",X"07",X"6F",X"CD",X"33",X"15", + X"30",X"20",X"47",X"3E",X"FC",X"CD",X"F3",X"14",X"3A",X"7D",X"4C",X"47",X"3E",X"16",X"0E",X"30", + X"32",X"D5",X"4F",X"78",X"CD",X"97",X"19",X"E1",X"7E",X"B1",X"77",X"0E",X"02",X"CD",X"1D",X"19", + X"18",X"01",X"E1",X"11",X"02",X"4C",X"0E",X"D0",X"CB",X"5E",X"C2",X"3E",X"14",X"CB",X"56",X"20", + X"03",X"13",X"0E",X"D8",X"1A",X"CB",X"4E",X"28",X"06",X"B9",X"30",X"0F",X"3C",X"18",X"0B",X"A7", + X"20",X"07",X"CB",X"56",X"CA",X"28",X"14",X"18",X"02",X"3D",X"12",X"7E",X"0F",X"E6",X"03",X"28", + X"0B",X"3D",X"28",X"1C",X"3D",X"28",X"1E",X"11",X"AA",X"A2",X"18",X"1C",X"11",X"92",X"90",X"3A", + X"14",X"4D",X"07",X"38",X"13",X"11",X"9B",X"99",X"E5",X"21",X"03",X"4C",X"35",X"E1",X"18",X"08", + X"11",X"9A",X"98",X"18",X"03",X"11",X"A0",X"A8",X"CB",X"76",X"28",X"07",X"E5",X"21",X"04",X"04", + X"19",X"EB",X"E1",X"CD",X"D3",X"14",X"7A",X"32",X"D6",X"4F",X"7B",X"32",X"D8",X"4F",X"3A",X"02", + X"4C",X"C6",X"17",X"32",X"E8",X"4F",X"C6",X"10",X"32",X"E6",X"4F",X"3A",X"03",X"4C",X"C6",X"20", + X"32",X"E9",X"4F",X"32",X"E7",X"4F",X"18",X"5C",X"7E",X"C6",X"08",X"77",X"AF",X"32",X"D8",X"4F", + X"3C",X"32",X"05",X"4C",X"3A",X"02",X"4C",X"C6",X"1F",X"32",X"E6",X"4F",X"18",X"2A",X"CB",X"56", + X"28",X"21",X"23",X"34",X"CB",X"86",X"2B",X"1A",X"CB",X"4E",X"28",X"08",X"B9",X"0E",X"82",X"28", + X"0F",X"3C",X"18",X"06",X"0E",X"80",X"A7",X"28",X"07",X"3D",X"12",X"C6",X"1F",X"32",X"E6",X"4F", + X"79",X"18",X"15",X"CB",X"4E",X"C2",X"EC",X"14",X"CB",X"66",X"28",X"0A",X"3E",X"B0",X"CB",X"76", + X"28",X"0C",X"C6",X"02",X"18",X"08",X"3E",X"88",X"CB",X"76",X"28",X"02",X"C6",X"04",X"32",X"D6", + X"4F",X"CD",X"D3",X"14",X"CB",X"66",X"C8",X"46",X"EB",X"2A",X"02",X"4C",X"CB",X"50",X"20",X"1C", + X"0E",X"60",X"CB",X"48",X"28",X"08",X"7C",X"C6",X"08",X"67",X"0E",X"64",X"18",X"1D",X"3A",X"14", + X"4D",X"07",X"38",X"17",X"7C",X"D6",X"08",X"67",X"0E",X"65",X"18",X"0F",X"7D",X"D6",X"08",X"6F", + X"0E",X"68",X"CB",X"48",X"28",X"05",X"C6",X"10",X"6F",X"0E",X"6C",X"7D",X"C6",X"1E",X"32",X"E4", + X"4F",X"7C",X"C6",X"20",X"32",X"E5",X"4F",X"EB",X"79",X"CB",X"6E",X"28",X"02",X"C6",X"10",X"32", + X"D4",X"4F",X"C9",X"06",X"0F",X"3A",X"14",X"4D",X"07",X"38",X"07",X"7E",X"E6",X"06",X"28",X"02", + X"06",X"03",X"3A",X"05",X"4C",X"A0",X"C0",X"7E",X"EE",X"40",X"77",X"C9",X"7E",X"EE",X"08",X"77", + X"C3",X"CB",X"13",X"ED",X"53",X"12",X"4D",X"12",X"CB",X"78",X"20",X"13",X"CB",X"48",X"01",X"20", + X"00",X"28",X"03",X"01",X"E0",X"FF",X"EB",X"09",X"77",X"EB",X"CB",X"48",X"C8",X"18",X"09",X"CB", + X"48",X"20",X"03",X"13",X"12",X"C9",X"1B",X"12",X"ED",X"53",X"12",X"4D",X"C9",X"3A",X"40",X"50", + X"21",X"01",X"4C",X"CB",X"76",X"C0",X"07",X"07",X"07",X"E6",X"80",X"47",X"3A",X"00",X"50",X"E6", + X"7F",X"B0",X"C9",X"E5",X"3E",X"EF",X"94",X"0F",X"0F",X"0F",X"E6",X"1F",X"5F",X"7D",X"07",X"07", + X"57",X"E6",X"E0",X"B3",X"5F",X"7A",X"E6",X"03",X"57",X"21",X"40",X"40",X"19",X"EB",X"1A",X"E1", + X"FE",X"60",X"30",X"02",X"3F",X"C9",X"FE",X"84",X"C9",X"DD",X"21",X"06",X"4C",X"21",X"DA",X"4F", + X"CD",X"6A",X"15",X"DD",X"21",X"0B",X"4C",X"21",X"DC",X"4F",X"DD",X"34",X"04",X"DD",X"CB",X"02", + X"76",X"C2",X"CF",X"18",X"E5",X"21",X"82",X"4C",X"36",X"00",X"3A",X"02",X"4C",X"DD",X"96",X"00", + X"30",X"04",X"CB",X"CE",X"ED",X"44",X"47",X"5F",X"3A",X"03",X"4C",X"DD",X"96",X"01",X"30",X"04", + X"CB",X"C6",X"ED",X"44",X"6F",X"4F",X"AF",X"67",X"57",X"19",X"22",X"80",X"4C",X"E1",X"3A",X"14", + X"4D",X"07",X"38",X"0B",X"79",X"FE",X"09",X"30",X"06",X"78",X"FE",X"11",X"DA",X"A4",X"18",X"DD", + X"7E",X"02",X"D7",X"E6",X"0F",X"28",X"0C",X"3D",X"CA",X"98",X"17",X"3D",X"CA",X"29",X"18",X"3D", + X"CA",X"FA",X"16",X"DD",X"7E",X"02",X"CB",X"5F",X"C2",X"1F",X"16",X"0F",X"30",X"3E",X"0F",X"30", + X"1F",X"CD",X"32",X"19",X"30",X"09",X"3A",X"02",X"4C",X"DD",X"BE",X"00",X"D2",X"B4",X"16",X"DD", + X"7E",X"00",X"FE",X"D0",X"30",X"32",X"CD",X"3F",X"19",X"38",X"2D",X"DD",X"34",X"00",X"18",X"1C", + X"CD",X"32",X"19",X"30",X"09",X"3A",X"02",X"4C",X"DD",X"BE",X"00",X"DA",X"AD",X"16",X"DD",X"7E", + X"00",X"A7",X"28",X"14",X"CD",X"3F",X"19",X"38",X"0F",X"DD",X"35",X"00",X"DD",X"46",X"02",X"78", + X"E6",X"06",X"C6",X"C0",X"77",X"C3",X"FE",X"18",X"DD",X"36",X"02",X"08",X"C3",X"BB",X"16",X"DD", + X"7E",X"00",X"A7",X"20",X"0D",X"DD",X"7E",X"01",X"FE",X"88",X"20",X"17",X"CD",X"49",X"19",X"DA", + X"EA",X"16",X"FE",X"D0",X"20",X"0D",X"DD",X"7E",X"01",X"FE",X"80",X"20",X"06",X"CD",X"49",X"19", + X"DA",X"F0",X"16",X"DD",X"46",X"02",X"CB",X"40",X"20",X"37",X"CD",X"32",X"19",X"30",X"08",X"3A", + X"03",X"4C",X"DD",X"BE",X"01",X"30",X"24",X"DD",X"7E",X"01",X"FE",X"58",X"20",X"0D",X"DD",X"7E", + X"00",X"FE",X"60",X"CA",X"79",X"17",X"FE",X"70",X"CA",X"7F",X"17",X"DD",X"7E",X"01",X"CB",X"48", + X"20",X"49",X"FE",X"E0",X"30",X"05",X"DD",X"34",X"01",X"18",X"40",X"DD",X"36",X"02",X"09",X"18", + X"3A",X"CD",X"32",X"19",X"30",X"08",X"3A",X"03",X"4C",X"DD",X"BE",X"01",X"38",X"8A",X"DD",X"7E", + X"01",X"A7",X"28",X"0A",X"DD",X"35",X"01",X"28",X"05",X"DD",X"35",X"01",X"20",X"1D",X"DD",X"7E", + X"00",X"A7",X"28",X"09",X"FE",X"D0",X"28",X"0C",X"CD",X"85",X"19",X"38",X"07",X"DD",X"36",X"02", + X"03",X"C3",X"0C",X"16",X"DD",X"36",X"02",X"01",X"C3",X"0C",X"16",X"DD",X"46",X"02",X"78",X"0F", + X"E6",X"03",X"E5",X"21",X"E6",X"16",X"16",X"00",X"5F",X"19",X"56",X"78",X"E6",X"01",X"82",X"E1", + X"77",X"DD",X"7E",X"04",X"E6",X"07",X"C2",X"0B",X"19",X"78",X"C6",X"02",X"E6",X"07",X"C6",X"08", + X"DD",X"77",X"02",X"C3",X"0B",X"19",X"C8",X"CC",X"CE",X"CA",X"DD",X"36",X"02",X"32",X"18",X"04", + X"DD",X"36",X"02",X"31",X"DD",X"36",X"03",X"00",X"18",X"61",X"DD",X"7E",X"02",X"CB",X"4F",X"20", + X"1E",X"CD",X"32",X"19",X"30",X"08",X"3A",X"02",X"4C",X"DD",X"BE",X"00",X"38",X"45",X"DD",X"7E", + X"00",X"A7",X"CA",X"7B",X"16",X"FE",X"90",X"CA",X"85",X"17",X"DD",X"35",X"00",X"18",X"1D",X"CD", + X"32",X"19",X"30",X"08",X"3A",X"02",X"4C",X"DD",X"BE",X"00",X"30",X"27",X"DD",X"7E",X"00",X"FE", + X"D0",X"CA",X"7B",X"16",X"FE",X"40",X"CA",X"8B",X"17",X"DD",X"34",X"00",X"DD",X"7E",X"02",X"CB", + X"5F",X"28",X"18",X"47",X"0F",X"A8",X"0F",X"38",X"05",X"DD",X"35",X"01",X"18",X"0D",X"DD",X"34", + X"01",X"18",X"08",X"DD",X"7E",X"02",X"EE",X"02",X"DD",X"77",X"02",X"DD",X"7E",X"02",X"E6",X"06", + X"C6",X"C0",X"77",X"DD",X"7E",X"02",X"EE",X"08",X"47",X"DD",X"7E",X"04",X"E6",X"07",X"78",X"20", + X"02",X"EE",X"04",X"DD",X"77",X"02",X"C3",X"0B",X"19",X"DD",X"36",X"02",X"10",X"18",X"10",X"DD", + X"36",X"02",X"12",X"18",X"0A",X"DD",X"36",X"02",X"11",X"18",X"04",X"DD",X"36",X"02",X"13",X"DD", + X"36",X"03",X"00",X"0E",X"50",X"CD",X"21",X"19",X"DD",X"7E",X"02",X"E6",X"03",X"07",X"5F",X"16", + X"00",X"E5",X"21",X"D7",X"17",X"19",X"5E",X"23",X"56",X"EB",X"DD",X"5E",X"03",X"DD",X"34",X"03", + X"16",X"00",X"19",X"7E",X"E1",X"A7",X"CA",X"07",X"18",X"DD",X"77",X"00",X"DD",X"7E",X"01",X"C6", + X"04",X"DD",X"CB",X"02",X"46",X"28",X"02",X"D6",X"08",X"DD",X"77",X"01",X"DD",X"7E",X"02",X"E6", + X"03",X"C6",X"F0",X"77",X"C3",X"0B",X"19",X"DF",X"17",X"FC",X"17",X"E7",X"17",X"EF",X"17",X"60", + X"60",X"61",X"63",X"65",X"67",X"68",X"00",X"70",X"70",X"6F",X"6D",X"6B",X"69",X"68",X"00",X"48", + X"50",X"56",X"58",X"5B",X"5E",X"60",X"62",X"64",X"66",X"67",X"68",X"00",X"88",X"7E",X"78",X"74", + X"70",X"6D",X"6B",X"6A",X"69",X"68",X"00",X"DD",X"7E",X"02",X"E6",X"03",X"F6",X"20",X"DD",X"77", + X"02",X"DD",X"36",X"03",X"00",X"3A",X"04",X"4C",X"E6",X"70",X"F6",X"81",X"32",X"04",X"4C",X"3E", + X"FF",X"32",X"14",X"4D",X"0E",X"70",X"C3",X"21",X"19",X"DD",X"34",X"03",X"DD",X"7E",X"03",X"E6", + X"0F",X"C0",X"DD",X"7E",X"02",X"C6",X"04",X"CB",X"67",X"20",X"09",X"DD",X"77",X"02",X"E6",X"0F", + X"C6",X"F0",X"77",X"C9",X"21",X"FC",X"FC",X"22",X"ED",X"41",X"22",X"0D",X"42",X"21",X"01",X"4C", + X"CB",X"66",X"28",X"17",X"CD",X"2D",X"02",X"8B",X"42",X"47",X"41",X"4D",X"45",X"20",X"20",X"4F", + X"56",X"45",X"52",X"24",X"CD",X"03",X"07",X"6B",X"45",X"0A",X"01",X"06",X"64",X"CD",X"24",X"02", + X"10",X"FB",X"CD",X"06",X"30",X"21",X"00",X"4C",X"CB",X"76",X"20",X"07",X"21",X"20",X"00",X"22", + X"00",X"4C",X"C9",X"23",X"CB",X"66",X"C2",X"06",X"27",X"CB",X"7E",X"28",X"08",X"CB",X"56",X"20", + X"04",X"7E",X"EE",X"40",X"77",X"0E",X"00",X"CB",X"86",X"2B",X"7E",X"E6",X"F0",X"B1",X"77",X"AF", + X"32",X"14",X"4C",X"C9",X"DD",X"7E",X"01",X"FE",X"08",X"38",X"0B",X"0E",X"40",X"CD",X"21",X"19", + X"3A",X"7F",X"4C",X"CD",X"97",X"19",X"06",X"49",X"DD",X"7E",X"00",X"FE",X"68",X"30",X"02",X"06", + X"4B",X"DD",X"70",X"02",X"DD",X"7E",X"01",X"0F",X"E6",X"7F",X"C6",X"50",X"DD",X"77",X"03",X"DD", + X"46",X"02",X"CB",X"58",X"28",X"17",X"DD",X"7E",X"01",X"D6",X"04",X"38",X"05",X"DD",X"77",X"01", + X"18",X"18",X"AF",X"DD",X"77",X"01",X"78",X"EE",X"09",X"DD",X"77",X"02",X"47",X"DD",X"35",X"03", + X"20",X"08",X"CB",X"48",X"CA",X"B4",X"16",X"C3",X"AD",X"16",X"78",X"F6",X"D0",X"77",X"3A",X"10", + X"4C",X"E6",X"07",X"20",X"06",X"78",X"EE",X"04",X"DD",X"77",X"02",X"11",X"10",X"00",X"19",X"DD", + X"7E",X"00",X"C6",X"1F",X"77",X"DD",X"7E",X"01",X"23",X"C6",X"20",X"77",X"C9",X"16",X"F0",X"18", + X"02",X"16",X"0F",X"3A",X"00",X"4C",X"FE",X"50",X"D8",X"3A",X"4A",X"4C",X"A2",X"B1",X"32",X"4A", + X"4C",X"C9",X"3A",X"81",X"4C",X"A7",X"C0",X"3A",X"80",X"4C",X"FE",X"48",X"D0",X"18",X"46",X"FE", + X"60",X"28",X"06",X"FE",X"70",X"28",X"02",X"A7",X"C9",X"3A",X"7A",X"4C",X"E6",X"FC",X"20",X"12", + X"3A",X"01",X"4C",X"E6",X"08",X"28",X"2E",X"CD",X"85",X"19",X"CD",X"85",X"19",X"E6",X"03",X"C8", + X"37",X"C9",X"3A",X"81",X"4C",X"A7",X"37",X"C0",X"3A",X"80",X"4C",X"FE",X"78",X"3F",X"D8",X"FE", + X"48",X"30",X"E4",X"3A",X"04",X"4C",X"4F",X"3A",X"82",X"4C",X"CB",X"51",X"20",X"01",X"07",X"A9", + X"E6",X"02",X"C0",X"37",X"C9",X"E5",X"21",X"13",X"4C",X"7E",X"07",X"2B",X"AE",X"0F",X"7E",X"17", + X"77",X"23",X"7E",X"17",X"77",X"E1",X"C9",X"E5",X"57",X"E6",X"0F",X"C6",X"30",X"32",X"4A",X"42", + X"7A",X"D7",X"E6",X"0F",X"20",X"02",X"3E",X"F0",X"C6",X"30",X"32",X"6A",X"42",X"C5",X"D5",X"CD", + X"03",X"07",X"AA",X"45",X"07",X"07",X"CD",X"2D",X"02",X"2A",X"42",X"30",X"20",X"50",X"54",X"53", + X"24",X"3E",X"32",X"32",X"20",X"4C",X"D1",X"C1",X"7A",X"21",X"00",X"4C",X"CB",X"76",X"CA",X"55", + X"1A",X"23",X"CB",X"76",X"21",X"24",X"4C",X"28",X"03",X"21",X"27",X"4C",X"56",X"E5",X"2B",X"06", + X"03",X"86",X"27",X"77",X"30",X"06",X"23",X"7E",X"C6",X"01",X"10",X"F6",X"21",X"01",X"4C",X"CB", + X"76",X"21",X"FD",X"43",X"28",X"02",X"2E",X"E9",X"7A",X"D1",X"E6",X"F0",X"20",X"2A",X"1A",X"E6", + X"F0",X"28",X"25",X"13",X"1A",X"A7",X"20",X"21",X"1B",X"E5",X"21",X"1B",X"4C",X"3A",X"01",X"4C", + X"E6",X"40",X"28",X"01",X"23",X"34",X"D5",X"C5",X"CD",X"09",X"07",X"0E",X"60",X"CD",X"21",X"19", + X"21",X"01",X"4C",X"CB",X"A6",X"C1",X"D1",X"E1",X"13",X"D5",X"CD",X"57",X"1A",X"E1",X"E5",X"11", + X"05",X"4D",X"06",X"03",X"1A",X"BE",X"38",X"09",X"20",X"04",X"2B",X"1B",X"10",X"F6",X"E1",X"18", + X"14",X"E1",X"11",X"05",X"4D",X"C5",X"01",X"03",X"00",X"ED",X"B8",X"C1",X"11",X"05",X"4D",X"21", + X"F3",X"43",X"CD",X"57",X"1A",X"E1",X"C9",X"C5",X"01",X"00",X"03",X"1A",X"D7",X"CD",X"69",X"1A", + X"1A",X"CD",X"69",X"1A",X"1B",X"10",X"F4",X"C1",X"C9",X"E6",X"0F",X"20",X"08",X"CB",X"41",X"20", + X"06",X"3E",X"20",X"18",X"04",X"CB",X"C1",X"C6",X"30",X"77",X"2B",X"C9",X"18",X"4C",X"69",X"88", + X"86",X"84",X"88",X"0A",X"82",X"80",X"86",X"D1",X"0A",X"80",X"C4",X"C6",X"82",X"02",X"88",X"82", + X"86",X"C0",X"02",X"C2",X"C1",X"C6",X"12",X"C6",X"42",X"02",X"4A",X"CA",X"82",X"42",X"82",X"8A", + X"22",X"02",X"20",X"10",X"80",X"12",X"20",X"00",X"08",X"10",X"00",X"08",X"50",X"20",X"08",X"08", + X"00",X"40",X"00",X"00",X"08",X"00",X"40",X"40",X"80",X"00",X"80",X"28",X"28",X"02",X"42",X"50", + X"85",X"17",X"85",X"14",X"05",X"23",X"05",X"07",X"13",X"01",X"25",X"05",X"24",X"24",X"81",X"05", + X"00",X"23",X"05",X"05",X"05",X"05",X"04",X"14",X"85",X"85",X"0E",X"05",X"15",X"8F",X"AC",X"AE", + X"08",X"00",X"00",X"40",X"00",X"00",X"00",X"04",X"00",X"00",X"00",X"00",X"01",X"08",X"00",X"20", + X"00",X"00",X"00",X"10",X"20",X"00",X"40",X"00",X"20",X"18",X"20",X"00",X"08",X"44",X"01",X"70", + X"8F",X"86",X"83",X"D6",X"86",X"C7",X"02",X"82",X"82",X"83",X"CA",X"42",X"08",X"82",X"82",X"82", + X"8A",X"87",X"03",X"C6",X"82",X"43",X"CB",X"83",X"86",X"20",X"83",X"06",X"80",X"98",X"80",X"C2", + X"40",X"80",X"00",X"30",X"40",X"02",X"00",X"00",X"98",X"00",X"20",X"00",X"00",X"08",X"10",X"00", + X"40",X"00",X"00",X"E0",X"5A",X"00",X"80",X"00",X"02",X"08",X"58",X"C0",X"00",X"00",X"00",X"02", + X"07",X"05",X"05",X"50",X"57",X"07",X"0C",X"B0",X"05",X"05",X"45",X"17",X"A5",X"04",X"21",X"85", + X"07",X"27",X"A5",X"0D",X"25",X"2D",X"26",X"20",X"01",X"06",X"87",X"84",X"85",X"8C",X"03",X"37", + X"48",X"08",X"00",X"20",X"08",X"00",X"00",X"00",X"00",X"28",X"08",X"00",X"01",X"00",X"00",X"30", + X"20",X"08",X"00",X"00",X"04",X"08",X"00",X"00",X"00",X"08",X"00",X"00",X"53",X"20",X"40",X"48", + X"86",X"CA",X"86",X"EC",X"98",X"83",X"00",X"CE",X"81",X"80",X"9E",X"C2",X"03",X"02",X"8A",X"26", + X"C2",X"96",X"CA",X"06",X"A3",X"C2",X"01",X"82",X"82",X"02",X"82",X"82",X"86",X"83",X"02",X"C2", + X"40",X"08",X"82",X"28",X"00",X"20",X"08",X"10",X"20",X"00",X"C8",X"00",X"08",X"02",X"08",X"48", + X"00",X"08",X"08",X"00",X"60",X"20",X"40",X"00",X"40",X"88",X"42",X"00",X"00",X"00",X"08",X"04", + X"24",X"05",X"05",X"10",X"B5",X"11",X"A1",X"01",X"05",X"01",X"85",X"15",X"05",X"74",X"31",X"35", + X"04",X"0C",X"44",X"07",X"07",X"8C",X"0D",X"0C",X"61",X"A5",X"04",X"15",X"1D",X"A7",X"27",X"05", + X"00",X"08",X"40",X"20",X"00",X"12",X"00",X"20",X"08",X"09",X"80",X"00",X"00",X"20",X"00",X"00", + X"00",X"00",X"00",X"40",X"10",X"20",X"00",X"08",X"00",X"3C",X"00",X"02",X"88",X"20",X"04",X"40", + X"C3",X"09",X"1C",X"C3",X"0E",X"1D",X"C3",X"5B",X"1E",X"DD",X"21",X"00",X"4D",X"DD",X"CB",X"00", + X"46",X"20",X"3C",X"3A",X"04",X"4C",X"07",X"D8",X"0E",X"3F",X"3A",X"16",X"4C",X"CB",X"67",X"20", + X"0C",X"0E",X"0F",X"CB",X"5F",X"20",X"06",X"0E",X"03",X"CB",X"57",X"28",X"05",X"CD",X"0F",X"10", + X"A1",X"C0",X"3A",X"02",X"4C",X"FE",X"68",X"21",X"50",X"01",X"3E",X"DF",X"38",X"05",X"21",X"52", + X"03",X"3E",X"F1",X"DD",X"74",X"00",X"26",X"07",X"22",X"D2",X"4F",X"DD",X"77",X"01",X"C9",X"DD", + X"CB",X"00",X"7E",X"28",X"1C",X"DD",X"35",X"02",X"C0",X"2A",X"D0",X"4F",X"22",X"D4",X"4F",X"2A", + X"E0",X"4F",X"22",X"E4",X"4F",X"DD",X"CB",X"00",X"BE",X"21",X"D2",X"4F",X"CB",X"9E",X"C3",X"ED", + X"1C",X"3A",X"03",X"4C",X"FE",X"08",X"30",X"63",X"DD",X"7E",X"01",X"FE",X"D1",X"30",X"5C",X"3A", + X"02",X"4C",X"01",X"58",X"81",X"DD",X"96",X"01",X"30",X"05",X"ED",X"44",X"01",X"5A",X"83",X"FE", + X"14",X"30",X"48",X"DD",X"70",X"00",X"79",X"32",X"D2",X"4F",X"2A",X"D4",X"4F",X"22",X"D0",X"4F", + X"2A",X"E4",X"4F",X"22",X"E0",X"4F",X"E6",X"02",X"F6",X"5C",X"6F",X"26",X"03",X"22",X"D4",X"4F", + X"3A",X"02",X"4C",X"C6",X"1E",X"6F",X"26",X"20",X"22",X"E4",X"4F",X"DD",X"36",X"02",X"08",X"21", + X"4A",X"4C",X"7E",X"E6",X"F0",X"F6",X"0D",X"77",X"AF",X"32",X"05",X"4C",X"3A",X"04",X"4C",X"E6", + X"30",X"F6",X"83",X"32",X"04",X"4C",X"AF",X"32",X"03",X"4C",X"C9",X"DD",X"34",X"02",X"DD",X"7E", + X"02",X"E6",X"07",X"20",X"08",X"3A",X"D2",X"4F",X"EE",X"04",X"32",X"D2",X"4F",X"DD",X"7E",X"01", + X"C6",X"02",X"DD",X"CB",X"00",X"4E",X"20",X"02",X"D6",X"04",X"DD",X"77",X"01",X"4F",X"C6",X"1E", + X"32",X"E2",X"4F",X"79",X"E6",X"F0",X"FE",X"E0",X"C0",X"DD",X"36",X"00",X"00",X"C9",X"D9",X"21", + X"01",X"4C",X"CB",X"86",X"CD",X"2A",X"02",X"FC",X"40",X"40",X"80",X"04",X"AF",X"32",X"07",X"4D", + X"CD",X"2A",X"02",X"00",X"C0",X"4F",X"40",X"01",X"CD",X"03",X"07",X"48",X"44",X"1C",X"05",X"CD", + X"03",X"07",X"4B",X"44",X"1C",X"05",X"CD",X"03",X"07",X"4E",X"44",X"1C",X"02",X"CD",X"03",X"07", + X"4E",X"46",X"05",X"07",X"21",X"68",X"1D",X"01",X"E0",X"FF",X"7E",X"23",X"A7",X"20",X"06",X"5E", + X"23",X"56",X"23",X"18",X"08",X"FE",X"24",X"28",X"2F",X"12",X"EB",X"09",X"EB",X"C5",X"06",X"06", + X"CD",X"24",X"02",X"10",X"FB",X"C1",X"18",X"E2",X"00",X"48",X"42",X"42",X"45",X"57",X"41",X"52", + X"45",X"00",X"0B",X"42",X"4F",X"46",X"00",X"CE",X"42",X"53",X"4B",X"55",X"4E",X"4B",X"2F",X"53", + X"20",X"53",X"50",X"52",X"41",X"59",X"21",X"24",X"21",X"68",X"60",X"22",X"02",X"4C",X"3E",X"01", + X"32",X"04",X"4C",X"3E",X"FF",X"32",X"14",X"4D",X"3E",X"13",X"32",X"D7",X"4F",X"32",X"D9",X"4F", + X"3E",X"07",X"32",X"D3",X"4F",X"CD",X"03",X"07",X"5E",X"44",X"1C",X"1F",X"CD",X"03",X"07",X"5E", + X"40",X"1C",X"84",X"CD",X"03",X"07",X"5F",X"44",X"1C",X"16",X"CD",X"2D",X"02",X"5F",X"43",X"72", + X"70",X"FC",X"FC",X"77",X"75",X"FC",X"FC",X"72",X"70",X"FC",X"FC",X"76",X"74",X"FC",X"FC",X"73", + X"71",X"FC",X"FC",X"76",X"74",X"24",X"3E",X"1D",X"32",X"16",X"4C",X"21",X"01",X"4C",X"CB",X"C6", + X"21",X"E8",X"1D",X"22",X"48",X"4C",X"18",X"1A",X"BF",X"40",X"DF",X"40",X"3F",X"41",X"5F",X"41", + X"BF",X"41",X"DF",X"41",X"3F",X"42",X"5F",X"42",X"BF",X"42",X"DF",X"42",X"3F",X"43",X"5F",X"43", + X"00",X"00",X"06",X"20",X"CD",X"52",X"1E",X"10",X"FB",X"3E",X"05",X"32",X"04",X"4C",X"06",X"20", + X"CD",X"52",X"1E",X"10",X"FB",X"3E",X"01",X"32",X"04",X"4C",X"3A",X"03",X"4C",X"FE",X"08",X"38", + X"05",X"CD",X"52",X"1E",X"18",X"F4",X"AF",X"32",X"00",X"4D",X"32",X"16",X"4C",X"4F",X"3E",X"20", + X"32",X"E3",X"4F",X"3A",X"04",X"4C",X"07",X"38",X"06",X"CB",X"41",X"20",X"0E",X"18",X"02",X"0E", + X"FF",X"C5",X"CD",X"09",X"1C",X"CD",X"52",X"1E",X"C1",X"18",X"E8",X"21",X"01",X"4C",X"CB",X"86", + X"D9",X"C9",X"C5",X"CD",X"03",X"10",X"CD",X"24",X"02",X"C1",X"C9",X"3A",X"05",X"4C",X"0F",X"0F", + X"0F",X"E6",X"0F",X"4F",X"06",X"00",X"21",X"C1",X"1E",X"09",X"7E",X"A7",X"28",X"48",X"32",X"D6", + X"4F",X"AF",X"32",X"D8",X"4F",X"2A",X"02",X"4C",X"7C",X"C6",X"20",X"67",X"7D",X"C6",X"1F",X"6F", + X"22",X"E6",X"4F",X"3A",X"04",X"4C",X"CB",X"67",X"C8",X"3A",X"D0",X"4F",X"E6",X"F0",X"47",X"79", + X"A7",X"C8",X"FE",X"04",X"38",X"17",X"20",X"0C",X"7C",X"C6",X"05",X"67",X"78",X"F6",X"06",X"32", + X"D4",X"4F",X"18",X"0D",X"FE",X"08",X"30",X"05",X"AF",X"32",X"D4",X"4F",X"C9",X"78",X"32",X"D4", + X"4F",X"2D",X"22",X"E4",X"4F",X"C9",X"3A",X"04",X"4C",X"E6",X"30",X"F6",X"09",X"32",X"04",X"4C", + X"C9",X"B4",X"B6",X"B4",X"B6",X"48",X"4C",X"4C",X"4C",X"B0",X"B2",X"00",X"05",X"20",X"0C",X"01", + X"01",X"05",X"15",X"21",X"2D",X"00",X"41",X"04",X"20",X"01",X"04",X"01",X"69",X"76",X"65",X"0D", + X"00",X"84",X"08",X"21",X"00",X"25",X"10",X"11",X"00",X"3D",X"30",X"10",X"4D",X"10",X"21",X"19", + X"01",X"24",X"3C",X"54",X"01",X"00",X"41",X"05",X"2D",X"9C",X"20",X"80",X"47",X"7F",X"5C",X"75", + X"9A",X"C0",X"AA",X"8A",X"82",X"D2",X"02",X"A0",X"DA",X"40",X"80",X"02",X"5A",X"0A",X"92",X"42", + X"86",X"A2",X"E2",X"0A",X"82",X"82",X"80",X"C8",X"02",X"00",X"82",X"42",X"42",X"22",X"0A",X"C0", + X"E0",X"D4",X"D6",X"0A",X"92",X"82",X"80",X"80",X"80",X"22",X"28",X"02",X"12",X"08",X"A0",X"B2", + X"12",X"40",X"80",X"9A",X"F0",X"82",X"42",X"8A",X"40",X"82",X"12",X"A0",X"22",X"10",X"82",X"82", + X"81",X"45",X"0C",X"21",X"21",X"01",X"21",X"04",X"05",X"00",X"61",X"0C",X"20",X"00",X"04",X"04", + X"0C",X"51",X"21",X"25",X"45",X"09",X"28",X"15",X"29",X"04",X"05",X"0C",X"19",X"01",X"34",X"76", + X"12",X"09",X"19",X"02",X"21",X"2C",X"01",X"01",X"01",X"05",X"31",X"00",X"00",X"25",X"01",X"05", + X"30",X"01",X"24",X"01",X"00",X"00",X"25",X"11",X"05",X"00",X"85",X"60",X"55",X"75",X"75",X"4D", + X"88",X"92",X"80",X"08",X"28",X"A8",X"00",X"58",X"DA",X"02",X"EA",X"02",X"02",X"00",X"42",X"00", + X"02",X"50",X"42",X"40",X"42",X"80",X"C8",X"00",X"02",X"4A",X"C6",X"02",X"92",X"02",X"32",X"10", + X"9A",X"80",X"D3",X"24",X"80",X"C0",X"C2",X"C8",X"0A",X"00",X"8A",X"A3",X"23",X"D8",X"88",X"D0", + X"82",X"12",X"82",X"A0",X"92",X"D0",X"02",X"02",X"E8",X"E2",X"92",X"A2",X"02",X"F2",X"7B",X"40", + X"40",X"05",X"05",X"00",X"04",X"3D",X"01",X"05",X"01",X"09",X"24",X"60",X"75",X"11",X"27",X"81", + X"1C",X"15",X"25",X"05",X"01",X"65",X"2D",X"45",X"01",X"01",X"00",X"A9",X"29",X"65",X"65",X"6D", + X"70",X"27",X"39",X"39",X"15",X"09",X"05",X"01",X"05",X"08",X"0D",X"25",X"21",X"14",X"05",X"0F", + X"04",X"60",X"14",X"04",X"25",X"11",X"23",X"25",X"19",X"C1",X"08",X"60",X"DF",X"53",X"65",X"59", + X"3A",X"4A",X"4C",X"CD",X"32",X"20",X"3A",X"4A",X"4C",X"D7",X"CD",X"32",X"20",X"AF",X"32",X"4A", + X"4C",X"DD",X"21",X"50",X"4C",X"FD",X"21",X"81",X"50",X"CD",X"FD",X"20",X"DD",X"21",X"5C",X"4C", + X"FD",X"21",X"86",X"50",X"CD",X"FD",X"20",X"DD",X"21",X"68",X"4C",X"FD",X"21",X"8B",X"50",X"C3", + X"FD",X"20",X"E6",X"0F",X"C8",X"E7",X"5F",X"22",X"56",X"20",X"5B",X"20",X"60",X"20",X"65",X"20", + X"77",X"20",X"7C",X"20",X"89",X"20",X"9C",X"20",X"A5",X"20",X"C0",X"20",X"C9",X"20",X"CE",X"20", + X"72",X"20",X"AE",X"20",X"B7",X"20",X"11",X"B0",X"22",X"18",X"0D",X"11",X"B9",X"22",X"18",X"08", + X"11",X"B9",X"22",X"18",X"03",X"11",X"C4",X"22",X"DD",X"21",X"5C",X"4C",X"FD",X"21",X"86",X"50", + X"18",X"67",X"11",X"95",X"24",X"18",X"08",X"11",X"D2",X"22",X"18",X"03",X"11",X"D7",X"22",X"DD", + X"21",X"68",X"4C",X"FD",X"21",X"8B",X"50",X"18",X"50",X"11",X"F8",X"22",X"CD",X"7F",X"20",X"11", + X"EC",X"22",X"DD",X"21",X"50",X"4C",X"FD",X"21",X"81",X"50",X"18",X"3D",X"CD",X"E5",X"20",X"02", + X"23",X"28",X"23",X"58",X"23",X"CD",X"E5",X"20",X"87",X"23",X"BE",X"23",X"EA",X"23",X"CD",X"E5", + X"20",X"B8",X"24",X"E4",X"24",X"08",X"25",X"CD",X"E5",X"20",X"00",X"00",X"00",X"00",X"00",X"00", + X"CD",X"E5",X"20",X"00",X"00",X"00",X"00",X"64",X"24",X"11",X"7B",X"24",X"18",X"B1",X"11",X"88", + X"24",X"CD",X"68",X"20",X"11",X"00",X"00",X"18",X"B9",X"CD",X"7B",X"22",X"DD",X"73",X"00",X"DD", + X"72",X"01",X"C3",X"77",X"21",X"E1",X"5E",X"23",X"56",X"23",X"E5",X"CD",X"92",X"20",X"E1",X"5E", + X"23",X"56",X"23",X"E5",X"CD",X"68",X"20",X"E1",X"5E",X"23",X"56",X"18",X"82",X"DD",X"7E",X"02", + X"A7",X"C8",X"DD",X"7E",X"09",X"A7",X"28",X"27",X"3D",X"47",X"E6",X"0F",X"20",X"1E",X"DD",X"7E", + X"04",X"CB",X"78",X"20",X"0B",X"E6",X"0F",X"FE",X"0F",X"28",X"0B",X"DD",X"34",X"04",X"18",X"06", + X"A7",X"28",X"03",X"DD",X"35",X"04",X"78",X"D7",X"E6",X"07",X"B0",X"47",X"DD",X"70",X"09",X"DD", + X"7E",X"0A",X"A7",X"28",X"3C",X"3D",X"47",X"E6",X"0F",X"20",X"33",X"DD",X"5E",X"05",X"DD",X"7E", + X"06",X"D7",X"B3",X"5F",X"DD",X"56",X"07",X"DD",X"7E",X"08",X"D7",X"B2",X"57",X"62",X"6B",X"CB", + X"78",X"20",X"04",X"CB",X"23",X"CB",X"12",X"CB",X"23",X"CB",X"12",X"19",X"EB",X"CB",X"2A",X"CB", + X"1B",X"CB",X"2A",X"CB",X"1B",X"CD",X"60",X"22",X"78",X"D7",X"E6",X"07",X"B0",X"47",X"DD",X"70", + X"0A",X"DD",X"35",X"02",X"C2",X"3B",X"22",X"DD",X"6E",X"00",X"DD",X"66",X"01",X"7E",X"23",X"47", + X"D7",X"E6",X"0F",X"20",X"1B",X"78",X"E6",X"0F",X"20",X"06",X"CD",X"7B",X"22",X"C3",X"3B",X"22", + X"3D",X"20",X"05",X"7E",X"23",X"66",X"6F",X"E9",X"78",X"E6",X"01",X"DD",X"77",X"0B",X"18",X"DD", + X"3D",X"20",X"1D",X"78",X"E6",X"0F",X"47",X"3A",X"4C",X"4C",X"DD",X"AE",X"0B",X"E6",X"03",X"FE", + X"03",X"20",X"02",X"CB",X"00",X"DD",X"70",X"02",X"DD",X"75",X"00",X"DD",X"74",X"01",X"18",X"7B", + X"CB",X"78",X"20",X"11",X"E5",X"DD",X"E5",X"E1",X"23",X"23",X"16",X"00",X"5F",X"19",X"78",X"E6", + X"0F",X"77",X"E1",X"18",X"A8",X"CB",X"70",X"20",X"28",X"78",X"E6",X"0F",X"D7",X"4F",X"CB",X"68", + X"20",X"13",X"78",X"E6",X"07",X"B1",X"CB",X"60",X"20",X"05",X"DD",X"77",X"09",X"18",X"8E",X"DD", + X"77",X"0A",X"C3",X"7D",X"21",X"DD",X"7E",X"0B",X"E6",X"0F",X"B1",X"DD",X"77",X"0B",X"C3",X"7D", + X"21",X"E5",X"21",X"2F",X"22",X"78",X"E6",X"0F",X"5F",X"16",X"00",X"19",X"5E",X"16",X"00",X"78", + X"D7",X"E6",X"03",X"28",X"07",X"47",X"CB",X"23",X"CB",X"12",X"10",X"FA",X"CD",X"60",X"22",X"E1", + X"DD",X"7E",X"0B",X"D7",X"E6",X"0F",X"CA",X"7D",X"21",X"DD",X"77",X"04",X"C3",X"7D",X"21",X"78", + X"80",X"87",X"90",X"96",X"A0",X"AA",X"B4",X"C0",X"C8",X"D8",X"E1",X"DD",X"7E",X"03",X"FD",X"77", + X"04",X"DD",X"7E",X"04",X"FD",X"77",X"14",X"DD",X"E5",X"D1",X"7B",X"FE",X"50",X"20",X"02",X"FD", + X"2B",X"06",X"04",X"DD",X"7E",X"08",X"FD",X"77",X"13",X"DD",X"2B",X"FD",X"2B",X"10",X"F4",X"C9", + X"7B",X"E6",X"0F",X"DD",X"77",X"05",X"7B",X"D7",X"E6",X"0F",X"DD",X"77",X"06",X"7A",X"E6",X"0F", + X"DD",X"77",X"07",X"7A",X"D7",X"E6",X"0F",X"DD",X"77",X"08",X"C9",X"AF",X"06",X"0C",X"DD",X"E5", + X"E1",X"77",X"23",X"10",X"FC",X"C9",X"AF",X"32",X"4F",X"4C",X"21",X"14",X"24",X"22",X"50",X"4C", + X"C3",X"77",X"21",X"21",X"4F",X"4C",X"7E",X"34",X"07",X"5F",X"16",X"00",X"21",X"AA",X"22",X"19", + X"5E",X"23",X"56",X"ED",X"53",X"50",X"4C",X"C3",X"77",X"21",X"24",X"24",X"33",X"24",X"42",X"24", + X"27",X"3F",X"51",X"18",X"25",X"89",X"91",X"1F",X"00",X"3F",X"61",X"99",X"16",X"30",X"12",X"61", + X"91",X"3F",X"1A",X"00",X"27",X"3F",X"58",X"99",X"16",X"30",X"12",X"26",X"3F",X"68",X"9A",X"1F", + X"1F",X"00",X"3F",X"6D",X"99",X"18",X"00",X"52",X"89",X"25",X"3C",X"1C",X"24",X"3C",X"1C",X"25", + X"3C",X"1C",X"24",X"3C",X"1C",X"25",X"3C",X"1C",X"24",X"3C",X"1C",X"00",X"25",X"38",X"6A",X"9A", + X"18",X"18",X"6A",X"50",X"40",X"18",X"18",X"00",X"27",X"3F",X"4E",X"14",X"24",X"40",X"54",X"91", + X"1F",X"00",X"03",X"22",X"89",X"AB",X"E7",X"14",X"E7",X"1C",X"E7",X"14",X"E9",X"1C",X"EB",X"18", + X"30",X"14",X"E7",X"14",X"F0",X"14",X"EB",X"18",X"E7",X"14",X"E7",X"14",X"E2",X"18",X"E0",X"14", + X"E2",X"14",X"E6",X"1C",X"E7",X"18",X"18",X"00",X"03",X"27",X"89",X"AC",X"C7",X"14",X"C5",X"14", + X"30",X"14",X"C4",X"14",X"C7",X"14",X"C9",X"14",X"CB",X"14",X"D0",X"14",X"CB",X"14",X"D2",X"14", + X"30",X"14",X"D4",X"14",X"C7",X"14",X"D2",X"18",X"D7",X"14",X"DB",X"18",X"E0",X"18",X"DB",X"14", + X"D9",X"14",X"30",X"18",X"D7",X"18",X"18",X"00",X"03",X"89",X"AC",X"C4",X"14",X"C2",X"14",X"30", + X"14",X"C0",X"14",X"C7",X"14",X"C5",X"14",X"C2",X"14",X"C0",X"14",X"C2",X"14",X"C2",X"14",X"30", + X"14",X"C4",X"14",X"C4",X"14",X"CB",X"18",X"D0",X"14",X"D2",X"18",X"D4",X"18",X"C7",X"14",X"C7", + X"14",X"30",X"18",X"C7",X"18",X"18",X"00",X"03",X"22",X"89",X"AB",X"F0",X"14",X"F0",X"14",X"E7", + X"14",X"E7",X"14",X"F0",X"1C",X"F2",X"14",X"F4",X"14",X"F2",X"14",X"F0",X"14",X"EA",X"14",X"E7", + X"18",X"E7",X"13",X"E5",X"12",X"E4",X"13",X"E7",X"14",X"EB",X"14",X"F2",X"14",X"30",X"14",X"E9", + X"18",X"E2",X"18",X"E4",X"14",X"E7",X"14",X"F0",X"18",X"18",X"18",X"01",X"86",X"22",X"03",X"21", + X"AC",X"D7",X"14",X"D5",X"14",X"D4",X"14",X"D2",X"14",X"D4",X"1C",X"D5",X"14",X"D7",X"14",X"D9", + X"14",X"30",X"14",X"D7",X"18",X"E0",X"14",X"30",X"18",X"E2",X"1C",X"E4",X"14",X"E5",X"18",X"30", + X"14",X"EB",X"14",X"F0",X"18",X"18",X"30",X"18",X"18",X"00",X"03",X"27",X"8A",X"AC",X"D0",X"14", + X"CA",X"14",X"30",X"18",X"C7",X"1C",X"CA",X"14",X"D2",X"14",X"D2",X"14",X"30",X"14",X"C7",X"18", + X"CA",X"14",X"D0",X"14",X"30",X"14",X"C7",X"14",X"C9",X"14",X"CB",X"14",X"C5",X"18",X"CB",X"18", + X"D0",X"18",X"18",X"00",X"03",X"8A",X"A9",X"23",X"E0",X"18",X"E0",X"18",X"F0",X"14",X"E7",X"14", + X"18",X"01",X"93",X"22",X"30",X"14",X"E5",X"14",X"E6",X"14",X"E7",X"14",X"EA",X"18",X"EA",X"18", + X"01",X"8A",X"22",X"30",X"14",X"F4",X"14",X"F2",X"14",X"F0",X"14",X"EA",X"18",X"F0",X"18",X"01", + X"8A",X"22",X"30",X"14",X"EA",X"14",X"E9",X"14",X"E7",X"14",X"E5",X"14",X"E7",X"14",X"E4",X"14", + X"E0",X"14",X"E0",X"14",X"E4",X"18",X"E5",X"1C",X"E7",X"1C",X"EB",X"18",X"F4",X"14",X"F0",X"18", + X"18",X"01",X"86",X"22",X"26",X"3F",X"6B",X"99",X"18",X"6A",X"58",X"18",X"6A",X"50",X"18",X"69", + X"58",X"18",X"69",X"50",X"18",X"68",X"58",X"18",X"68",X"18",X"00",X"26",X"3F",X"58",X"99",X"89", + X"18",X"24",X"3F",X"58",X"80",X"92",X"18",X"00",X"27",X"AF",X"91",X"89",X"C0",X"18",X"D0",X"18", + X"E0",X"18",X"F0",X"18",X"00",X"27",X"3F",X"52",X"92",X"18",X"24",X"1C",X"00",X"21",X"B8",X"24", + X"22",X"50",X"4C",X"C3",X"77",X"21",X"21",X"E4",X"24",X"22",X"5C",X"4C",X"C3",X"77",X"21",X"21", + X"08",X"25",X"22",X"68",X"4C",X"C3",X"77",X"21",X"03",X"22",X"89",X"AA",X"F0",X"14",X"F0",X"14", + X"30",X"18",X"18",X"E0",X"18",X"E4",X"14",X"E5",X"14",X"8A",X"E7",X"18",X"18",X"18",X"89",X"F0", + X"14",X"F0",X"14",X"30",X"18",X"18",X"E0",X"18",X"E7",X"14",X"F0",X"14",X"8A",X"F7",X"18",X"18", + X"18",X"01",X"9D",X"24",X"03",X"89",X"AC",X"E0",X"14",X"DB",X"14",X"D9",X"14",X"D7",X"1C",X"18", + X"E0",X"18",X"E0",X"18",X"18",X"18",X"E7",X"14",X"E4",X"14",X"E0",X"14",X"D7",X"1C",X"18",X"E7", + X"18",X"E7",X"18",X"18",X"18",X"01",X"A6",X"24",X"03",X"26",X"89",X"AF",X"99",X"14",X"C0",X"14", + X"18",X"18",X"C0",X"18",X"C0",X"18",X"18",X"18",X"14",X"C0",X"14",X"01",X"AF",X"24",X"C2",X"80", + X"80",X"00",X"80",X"24",X"00",X"40",X"10",X"00",X"00",X"00",X"42",X"12",X"00",X"82",X"00",X"B0", + X"90",X"00",X"28",X"00",X"00",X"80",X"82",X"A2",X"00",X"08",X"00",X"12",X"00",X"00",X"10",X"10", + X"08",X"05",X"04",X"0F",X"04",X"45",X"05",X"01",X"05",X"0D",X"45",X"49",X"04",X"19",X"05",X"01", + X"11",X"05",X"A5",X"05",X"05",X"0C",X"85",X"5D",X"09",X"49",X"05",X"05",X"05",X"07",X"97",X"5C", + X"00",X"01",X"00",X"01",X"21",X"04",X"01",X"10",X"01",X"00",X"00",X"40",X"01",X"01",X"48",X"00", + X"00",X"00",X"1C",X"00",X"00",X"04",X"00",X"04",X"00",X"04",X"10",X"00",X"44",X"45",X"50",X"44", + X"83",X"A2",X"92",X"AA",X"A2",X"86",X"82",X"B0",X"AA",X"E0",X"A6",X"90",X"92",X"02",X"22",X"92", + X"80",X"02",X"82",X"81",X"C2",X"42",X"02",X"86",X"92",X"00",X"86",X"A2",X"40",X"42",X"80",X"92", + X"A0",X"A2",X"A0",X"22",X"00",X"00",X"00",X"02",X"82",X"30",X"20",X"00",X"10",X"00",X"10",X"20", + X"00",X"22",X"00",X"A0",X"80",X"00",X"02",X"00",X"00",X"02",X"00",X"A2",X"92",X"A0",X"00",X"10", + X"01",X"01",X"04",X"20",X"04",X"E5",X"26",X"04",X"05",X"05",X"05",X"05",X"25",X"0C",X"C0",X"0D", + X"05",X"05",X"04",X"06",X"05",X"00",X"44",X"41",X"11",X"05",X"08",X"84",X"91",X"CF",X"8D",X"DD", + X"00",X"04",X"00",X"00",X"01",X"00",X"01",X"41",X"0C",X"40",X"48",X"00",X"00",X"00",X"00",X"01", + X"00",X"01",X"01",X"04",X"00",X"09",X"09",X"40",X"00",X"00",X"85",X"01",X"01",X"4C",X"0E",X"49", + X"82",X"50",X"32",X"BA",X"A2",X"82",X"B0",X"B2",X"D2",X"80",X"82",X"B1",X"92",X"88",X"D2",X"C2", + X"1A",X"02",X"8B",X"82",X"68",X"C2",X"8A",X"8A",X"A6",X"82",X"82",X"02",X"82",X"B2",X"6A",X"96", + X"A8",X"68",X"00",X"01",X"10",X"00",X"02",X"00",X"90",X"10",X"00",X"40",X"A2",X"10",X"00",X"22", + X"00",X"00",X"00",X"00",X"00",X"88",X"00",X"00",X"02",X"00",X"10",X"08",X"60",X"08",X"18",X"00", + X"14",X"3D",X"C5",X"8C",X"01",X"05",X"54",X"01",X"47",X"05",X"89",X"11",X"03",X"06",X"05",X"0C", + X"07",X"05",X"05",X"01",X"11",X"25",X"05",X"85",X"B4",X"09",X"21",X"85",X"4D",X"37",X"13",X"0C", + X"29",X"40",X"00",X"08",X"40",X"00",X"01",X"00",X"41",X"00",X"00",X"00",X"01",X"00",X"21",X"00", + X"04",X"00",X"08",X"01",X"28",X"01",X"04",X"01",X"00",X"01",X"00",X"04",X"01",X"04",X"08",X"04", + X"E3",X"83",X"A2",X"8A",X"B2",X"2A",X"98",X"C2",X"A2",X"9A",X"CE",X"02",X"82",X"A2",X"83",X"82", + X"82",X"22",X"92",X"82",X"83",X"80",X"E0",X"82",X"92",X"8A",X"82",X"92",X"12",X"80",X"B2",X"82", + X"14",X"B0",X"02",X"30",X"20",X"80",X"02",X"00",X"00",X"C2",X"22",X"00",X"82",X"30",X"00",X"A2", + X"00",X"00",X"00",X"02",X"10",X"82",X"00",X"00",X"00",X"10",X"80",X"00",X"00",X"10",X"00",X"08", + X"01",X"15",X"05",X"25",X"14",X"80",X"04",X"09",X"15",X"25",X"5D",X"35",X"40",X"4B",X"25",X"00", + X"04",X"0C",X"5D",X"45",X"25",X"09",X"0D",X"05",X"45",X"05",X"40",X"14",X"17",X"94",X"11",X"81", + X"08",X"08",X"00",X"01",X"40",X"00",X"14",X"00",X"01",X"00",X"00",X"00",X"30",X"00",X"04",X"18", + X"00",X"40",X"08",X"04",X"00",X"00",X"00",X"05",X"08",X"04",X"00",X"44",X"05",X"09",X"08",X"08", + X"C3",X"F7",X"29",X"C3",X"91",X"2A",X"C3",X"7D",X"2B",X"C3",X"E0",X"2A",X"C3",X"33",X"27",X"21", + X"00",X"4C",X"CB",X"5E",X"20",X"10",X"CB",X"DE",X"21",X"00",X"00",X"22",X"10",X"4C",X"CD",X"58", + X"2E",X"CD",X"00",X"07",X"04",X"C9",X"3A",X"11",X"4C",X"FE",X"02",X"C0",X"21",X"00",X"00",X"22", + X"00",X"4C",X"C9",X"3A",X"00",X"4C",X"E6",X"07",X"E7",X"43",X"27",X"AE",X"27",X"C6",X"27",X"2A", + X"28",X"0C",X"30",X"CD",X"27",X"02",X"3E",X"1D",X"32",X"16",X"4C",X"3E",X"FF",X"32",X"14",X"4D", + X"CD",X"00",X"07",X"00",X"21",X"00",X"00",X"22",X"10",X"4C",X"21",X"E0",X"B8",X"22",X"02",X"4C", + X"21",X"0D",X"00",X"22",X"04",X"4C",X"3E",X"08",X"32",X"D7",X"4F",X"32",X"D9",X"4F",X"3E",X"06", + X"32",X"DB",X"4F",X"32",X"DD",X"4F",X"3E",X"D8",X"21",X"E7",X"4F",X"06",X"04",X"77",X"23",X"23", + X"10",X"FB",X"CD",X"03",X"07",X"4C",X"44",X"1C",X"06",X"CD",X"03",X"07",X"4F",X"44",X"1C",X"06", + X"CD",X"03",X"07",X"52",X"44",X"1C",X"07",X"CD",X"03",X"07",X"55",X"44",X"1C",X"07",X"CD",X"03", + X"07",X"58",X"44",X"1C",X"05",X"CD",X"03",X"07",X"5B",X"44",X"1C",X"05",X"18",X"13",X"CD",X"03", + X"10",X"CD",X"14",X"28",X"C6",X"EF",X"32",X"EA",X"4F",X"FE",X"87",X"C0",X"3E",X"05",X"32",X"04", + X"4C",X"21",X"00",X"4C",X"34",X"C9",X"CD",X"03",X"10",X"CD",X"14",X"28",X"20",X"04",X"21",X"02", + X"4C",X"35",X"C6",X"E7",X"32",X"EA",X"4F",X"C6",X"10",X"32",X"EC",X"4F",X"FE",X"0F",X"28",X"E1", + X"3A",X"02",X"4C",X"FE",X"18",X"D8",X"47",X"07",X"D8",X"E6",X"0E",X"C0",X"CD",X"F7",X"27",X"3A", + X"02",X"4C",X"ED",X"44",X"C6",X"C8",X"47",X"78",X"07",X"07",X"57",X"E6",X"E0",X"5F",X"7A",X"E6", + X"03",X"57",X"21",X"63",X"44",X"19",X"78",X"0F",X"0F",X"0F",X"E6",X"07",X"3C",X"06",X"07",X"77", + X"23",X"10",X"FC",X"C9",X"3A",X"D6",X"4F",X"EE",X"02",X"32",X"DA",X"4F",X"3A",X"D8",X"4F",X"EE", + X"02",X"32",X"DC",X"4F",X"3A",X"02",X"4C",X"ED",X"44",X"C9",X"3A",X"01",X"4C",X"CB",X"47",X"20", + X"15",X"21",X"9C",X"29",X"22",X"48",X"4C",X"3C",X"32",X"01",X"4C",X"21",X"D6",X"4F",X"06",X"08", + X"0E",X"00",X"71",X"23",X"10",X"FC",X"CB",X"67",X"C2",X"28",X"29",X"47",X"E6",X"0E",X"4F",X"0F", + X"81",X"4F",X"78",X"0F",X"E6",X"07",X"E7",X"65",X"28",X"81",X"28",X"9B",X"28",X"AC",X"28",X"BD", + X"28",X"F3",X"28",X"6E",X"29",X"21",X"90",X"13",X"22",X"D6",X"4F",X"2E",X"92",X"22",X"D8",X"4F", + X"21",X"C7",X"A8",X"22",X"E6",X"4F",X"2E",X"B7",X"22",X"E8",X"4F",X"21",X"AE",X"29",X"C3",X"15", + X"29",X"21",X"60",X"62",X"22",X"CE",X"42",X"21",X"66",X"64",X"22",X"EE",X"42",X"21",X"02",X"02", + X"22",X"CE",X"46",X"22",X"EE",X"46",X"21",X"BA",X"29",X"18",X"7A",X"21",X"C0",X"01",X"22",X"DA", + X"4F",X"21",X"BF",X"78",X"22",X"EA",X"4F",X"21",X"C4",X"29",X"18",X"69",X"21",X"C0",X"05",X"22", + X"DC",X"4F",X"21",X"BF",X"60",X"22",X"EC",X"4F",X"21",X"D2",X"29",X"18",X"58",X"C5",X"CD",X"2D", + X"02",X"F7",X"42",X"C3",X"C2",X"24",X"CD",X"2D",X"02",X"18",X"43",X"C1",X"7A",X"78",X"C0",X"24", + X"CD",X"2D",X"02",X"F9",X"42",X"C5",X"C4",X"24",X"CD",X"03",X"07",X"D7",X"46",X"02",X"0F",X"CD", + X"03",X"07",X"D9",X"46",X"02",X"0F",X"CD",X"03",X"07",X"B8",X"46",X"04",X"0F",X"C1",X"21",X"E0", + X"29",X"18",X"22",X"C5",X"CD",X"2D",X"02",X"FB",X"42",X"72",X"70",X"24",X"CD",X"03",X"07",X"DB", + X"46",X"02",X"16",X"CD",X"03",X"07",X"BA",X"42",X"04",X"84",X"CD",X"03",X"07",X"BA",X"46",X"04", + X"1F",X"C1",X"21",X"EC",X"29",X"22",X"02",X"4C",X"21",X"01",X"4C",X"CB",X"E6",X"21",X"2C",X"42", + X"06",X"00",X"09",X"22",X"04",X"4C",X"18",X"2D",X"3A",X"10",X"4C",X"E6",X"03",X"C0",X"2A",X"02", + X"4C",X"7E",X"FE",X"24",X"28",X"11",X"23",X"22",X"02",X"4C",X"2A",X"04",X"4C",X"77",X"11",X"E0", + X"FF",X"19",X"22",X"04",X"4C",X"18",X"0E",X"3A",X"01",X"4C",X"E6",X"EF",X"C6",X"02",X"32",X"01", + X"4C",X"FE",X"0D",X"30",X"14",X"3A",X"10",X"4C",X"E6",X"0F",X"C0",X"21",X"D6",X"4F",X"06",X"04", + X"7E",X"EE",X"04",X"77",X"23",X"23",X"10",X"F8",X"C9",X"3E",X"60",X"32",X"02",X"4C",X"3A",X"10", + X"4C",X"E6",X"03",X"C0",X"11",X"20",X"00",X"06",X"12",X"21",X"E3",X"44",X"C5",X"06",X"07",X"E5", + X"7E",X"E6",X"07",X"3C",X"77",X"23",X"10",X"FC",X"E1",X"19",X"C1",X"10",X"EF",X"CD",X"55",X"29", + X"21",X"02",X"4C",X"35",X"C0",X"21",X"04",X"00",X"22",X"00",X"4C",X"C9",X"CE",X"42",X"CF",X"42", + X"EE",X"42",X"EF",X"42",X"D8",X"42",X"DB",X"42",X"F8",X"42",X"FB",X"42",X"00",X"00",X"42",X"49", + X"52",X"44",X"49",X"59",X"20",X"4D",X"41",X"4D",X"41",X"24",X"42",X"41",X"42",X"59",X"20",X"42", + X"49",X"52",X"44",X"24",X"4D",X"4F",X"4E",X"53",X"54",X"45",X"52",X"20",X"52",X"41",X"54",X"20", + X"41",X"24",X"4D",X"4F",X"4E",X"53",X"54",X"45",X"52",X"20",X"52",X"41",X"54",X"20",X"42",X"24", + X"43",X"41",X"54",X"45",X"52",X"50",X"49",X"4C",X"4C",X"45",X"52",X"24",X"45",X"41",X"52",X"54", + X"48",X"20",X"57",X"4F",X"52",X"4D",X"24",X"21",X"00",X"4C",X"CB",X"5E",X"20",X"36",X"CB",X"DE", + X"21",X"FC",X"FC",X"22",X"ED",X"41",X"22",X"0D",X"42",X"21",X"87",X"98",X"22",X"E6",X"4F",X"2E", + X"7F",X"22",X"E8",X"4F",X"3E",X"02",X"32",X"D7",X"4F",X"32",X"D9",X"4F",X"3E",X"1C",X"32",X"D6", + X"4F",X"AF",X"32",X"D8",X"4F",X"32",X"18",X"4C",X"21",X"00",X"00",X"22",X"10",X"4C",X"3E",X"08", + X"32",X"4A",X"4C",X"C9",X"3A",X"10",X"4C",X"E6",X"0F",X"C0",X"21",X"18",X"4C",X"7E",X"34",X"FE", + X"0D",X"28",X"36",X"5F",X"16",X"00",X"21",X"80",X"2A",X"19",X"7E",X"32",X"D6",X"4F",X"FE",X"34", + X"D8",X"20",X"08",X"3E",X"8F",X"32",X"E6",X"4F",X"7E",X"18",X"18",X"47",X"7B",X"FE",X"06",X"38", + X"11",X"D6",X"06",X"0F",X"38",X"0C",X"5F",X"21",X"8D",X"2A",X"19",X"7E",X"32",X"D7",X"4F",X"32", + X"D9",X"4F",X"78",X"C6",X"02",X"32",X"D8",X"4F",X"C9",X"21",X"00",X"4C",X"CB",X"9E",X"34",X"C9", + X"20",X"34",X"38",X"3C",X"40",X"3C",X"40",X"94",X"90",X"94",X"90",X"94",X"90",X"04",X"07",X"06", + X"13",X"3A",X"00",X"4C",X"FE",X"50",X"30",X"07",X"21",X"20",X"00",X"22",X"00",X"4C",X"C9",X"21", + X"1B",X"4C",X"11",X"78",X"4C",X"DD",X"21",X"0A",X"4D",X"3A",X"01",X"4C",X"E6",X"40",X"28",X"06", + X"23",X"13",X"DD",X"21",X"0E",X"4D",X"AF",X"06",X"04",X"DD",X"77",X"00",X"DD",X"23",X"10",X"F9", + X"34",X"1A",X"3C",X"47",X"E6",X"1C",X"FE",X"14",X"38",X"04",X"78",X"C6",X"0C",X"47",X"78",X"12", + X"E6",X"03",X"FE",X"02",X"CC",X"03",X"1C",X"21",X"00",X"4C",X"36",X"50",X"23",X"CB",X"86",X"C9", + X"3A",X"00",X"4C",X"FE",X"50",X"38",X"05",X"3E",X"0A",X"32",X"4A",X"4C",X"3E",X"02",X"32",X"4C", + X"4C",X"CD",X"2D",X"02",X"6B",X"42",X"54",X"49",X"4D",X"45",X"20",X"4F",X"55",X"54",X"24",X"CD", + X"03",X"07",X"8B",X"45",X"08",X"05",X"21",X"FC",X"FC",X"22",X"ED",X"41",X"22",X"0D",X"42",X"21", + X"28",X"0D",X"22",X"DC",X"4F",X"21",X"86",X"98",X"22",X"EC",X"4F",X"21",X"04",X"4C",X"7E",X"E6", + X"30",X"F6",X"81",X"77",X"21",X"DC",X"4F",X"06",X"08",X"C5",X"06",X"10",X"CD",X"72",X"2B",X"10", + X"FB",X"7E",X"EE",X"04",X"77",X"C1",X"10",X"F1",X"3E",X"24",X"32",X"DC",X"4F",X"3E",X"97",X"32", + X"ED",X"4F",X"06",X"20",X"CD",X"72",X"2B",X"10",X"FB",X"3E",X"30",X"32",X"DC",X"4F",X"0E",X"94", + X"79",X"32",X"ED",X"4F",X"FE",X"20",X"38",X"08",X"D6",X"04",X"4F",X"CD",X"72",X"2B",X"18",X"F0", + X"3E",X"24",X"32",X"DC",X"4F",X"3E",X"0B",X"32",X"4A",X"4C",X"06",X"64",X"CD",X"72",X"2B",X"10", + X"FB",X"C9",X"E5",X"C5",X"CD",X"03",X"10",X"CD",X"24",X"02",X"C1",X"E1",X"C9",X"11",X"25",X"4C", + X"21",X"01",X"4C",X"CB",X"76",X"28",X"03",X"11",X"28",X"4C",X"21",X"43",X"4C",X"06",X"05",X"D5", + X"E5",X"1A",X"BE",X"38",X"1A",X"20",X"0E",X"1B",X"2B",X"1A",X"BE",X"38",X"12",X"20",X"06",X"1B", + X"2B",X"1A",X"BE",X"38",X"0A",X"E1",X"11",X"FA",X"FF",X"19",X"D1",X"10",X"E2",X"18",X"02",X"E1", + X"D1",X"78",X"FE",X"05",X"CA",X"51",X"2D",X"32",X"02",X"4C",X"D5",X"E5",X"ED",X"44",X"C6",X"04", + X"28",X"0F",X"07",X"4F",X"07",X"81",X"4F",X"06",X"00",X"21",X"40",X"4C",X"11",X"46",X"4C",X"ED", + X"B8",X"E1",X"11",X"07",X"00",X"19",X"22",X"06",X"4C",X"2B",X"D1",X"D5",X"EB",X"01",X"03",X"00", + X"ED",X"B8",X"2A",X"06",X"4C",X"36",X"59",X"23",X"36",X"4F",X"23",X"36",X"55",X"CD",X"58",X"2E", + X"D1",X"21",X"C9",X"42",X"CD",X"17",X"2F",X"CD",X"03",X"07",X"42",X"44",X"1C",X"05",X"CD",X"03", + X"07",X"44",X"44",X"1C",X"05",X"CD",X"03",X"07",X"47",X"44",X"1C",X"03",X"CD",X"03",X"07",X"09", + X"45",X"03",X"07",X"CD",X"03",X"07",X"09",X"46",X"07",X"02",X"CD",X"03",X"07",X"EB",X"45",X"07", + X"04",X"21",X"10",X"10",X"22",X"07",X"45",X"22",X"27",X"45",X"22",X"47",X"45",X"22",X"0A",X"45", + X"22",X"2A",X"45",X"22",X"4A",X"45",X"CD",X"2D",X"02",X"22",X"43",X"45",X"4E",X"54",X"45",X"52", + X"20",X"59",X"4F",X"55",X"52",X"20",X"49",X"4E",X"49",X"54",X"49",X"41",X"4C",X"53",X"2E",X"24", + X"CD",X"2D",X"02",X"84",X"43",X"53",X"45",X"4C",X"45",X"43",X"54",X"20",X"57",X"49",X"54",X"48", + X"20",X"54",X"48",X"45",X"20",X"4A",X"4F",X"59",X"20",X"53",X"54",X"49",X"43",X"4B",X"2E",X"24", + X"CD",X"2D",X"02",X"E7",X"42",X"59",X"4F",X"55",X"52",X"20",X"53",X"43",X"4F",X"52",X"45",X"24", + X"CD",X"2D",X"02",X"49",X"41",X"59",X"4F",X"55",X"24",X"CD",X"2D",X"02",X"AB",X"42",X"54",X"49", + X"4D",X"45",X"20",X"34",X"30",X"24",X"21",X"E4",X"07",X"22",X"D4",X"4F",X"21",X"3F",X"C0",X"22", + X"E4",X"4F",X"21",X"E0",X"03",X"22",X"D2",X"4F",X"3E",X"BC",X"32",X"E3",X"4F",X"3E",X"20",X"32", + X"03",X"4C",X"CD",X"BE",X"2D",X"3E",X"40",X"32",X"05",X"4C",X"3E",X"02",X"32",X"4C",X"4C",X"3E", + X"0E",X"32",X"4A",X"4C",X"06",X"03",X"C5",X"21",X"01",X"4C",X"3A",X"00",X"50",X"CB",X"76",X"28", + X"03",X"3A",X"40",X"50",X"0F",X"D4",X"6E",X"2D",X"0F",X"D4",X"BE",X"2D",X"0F",X"D4",X"D0",X"2D", + X"0F",X"D4",X"83",X"2D",X"3A",X"02",X"4C",X"07",X"5F",X"16",X"00",X"21",X"14",X"45",X"19",X"11", + X"20",X"00",X"06",X"13",X"7E",X"FE",X"01",X"0E",X"01",X"20",X"02",X"0E",X"03",X"71",X"19",X"10", + X"FC",X"3A",X"03",X"4C",X"C6",X"09",X"6F",X"26",X"45",X"71",X"06",X"14",X"CD",X"24",X"02",X"10", + X"FB",X"C1",X"10",X"B2",X"3A",X"05",X"4C",X"D6",X"01",X"28",X"27",X"27",X"32",X"05",X"4C",X"4F", + X"FE",X"10",X"20",X"06",X"3E",X"01",X"32",X"4C",X"4C",X"79",X"E6",X"0F",X"C6",X"30",X"32",X"EB", + X"41",X"79",X"D7",X"E6",X"0F",X"20",X"04",X"3E",X"20",X"18",X"02",X"C6",X"30",X"32",X"0B",X"42", + X"18",X"82",X"3E",X"0F",X"32",X"4A",X"4C",X"CD",X"1E",X"27",X"06",X"00",X"CD",X"24",X"02",X"10", + X"FB",X"3A",X"01",X"4C",X"CB",X"7F",X"28",X"0F",X"CB",X"57",X"20",X"0B",X"21",X"50",X"C4",X"CB", + X"77",X"28",X"07",X"26",X"84",X"18",X"03",X"21",X"00",X"00",X"22",X"00",X"4C",X"C9",X"F5",X"3A", + X"03",X"4C",X"C6",X"07",X"5F",X"16",X"41",X"06",X"05",X"1A",X"CD",X"16",X"2E",X"12",X"13",X"10", + X"F8",X"18",X"13",X"F5",X"3A",X"03",X"4C",X"C6",X"07",X"5F",X"16",X"41",X"06",X"05",X"1A",X"CD", + X"2C",X"2E",X"12",X"13",X"10",X"F8",X"3A",X"03",X"4C",X"C6",X"09",X"5F",X"16",X"41",X"3A",X"02", + X"4C",X"07",X"83",X"C6",X"0B",X"6F",X"62",X"1A",X"77",X"7B",X"07",X"07",X"07",X"E6",X"03",X"ED", + X"44",X"C6",X"02",X"4F",X"06",X"00",X"2A",X"06",X"4C",X"09",X"1A",X"77",X"F1",X"C9",X"F5",X"3A", + X"03",X"4C",X"FE",X"40",X"28",X"4E",X"CD",X"42",X"2E",X"3A",X"03",X"4C",X"C6",X"20",X"18",X"1B", + X"F5",X"3A",X"03",X"4C",X"A7",X"20",X"0C",X"3E",X"43",X"32",X"E2",X"4F",X"3E",X"01",X"32",X"05", + X"4C",X"18",X"31",X"CD",X"42",X"2E",X"3A",X"03",X"4C",X"D6",X"20",X"32",X"03",X"4C",X"5F",X"0F", + X"0F",X"C6",X"4B",X"32",X"E2",X"4F",X"7B",X"C6",X"09",X"5F",X"16",X"41",X"1A",X"D5",X"CD",X"16", + X"2E",X"1B",X"12",X"CD",X"16",X"2E",X"1B",X"12",X"D1",X"1A",X"CD",X"2C",X"2E",X"13",X"12",X"CD", + X"2C",X"2E",X"13",X"12",X"F1",X"C9",X"FE",X"41",X"0E",X"2C",X"28",X"0E",X"FE",X"2C",X"0E",X"2E", + X"28",X"08",X"FE",X"2E",X"0E",X"5A",X"28",X"02",X"3D",X"4F",X"79",X"C9",X"FE",X"5A",X"0E",X"2E", + X"28",X"0E",X"FE",X"2E",X"0E",X"2C",X"28",X"08",X"FE",X"2C",X"0E",X"41",X"28",X"02",X"3C",X"4F", + X"79",X"C9",X"C6",X"07",X"6F",X"26",X"41",X"3E",X"FC",X"77",X"23",X"77",X"23",X"26",X"45",X"36", + X"07",X"26",X"41",X"23",X"77",X"23",X"77",X"C9",X"21",X"01",X"4C",X"CB",X"86",X"CD",X"2A",X"02", + X"FC",X"40",X"40",X"80",X"04",X"CD",X"2A",X"02",X"00",X"D0",X"4F",X"20",X"01",X"CD",X"2A",X"02", + X"07",X"00",X"45",X"60",X"01",X"CD",X"2A",X"02",X"05",X"00",X"46",X"E0",X"01",X"CD",X"2A",X"02", + X"02",X"00",X"47",X"60",X"01",X"CD",X"03",X"07",X"4D",X"44",X"1C",X"06",X"CD",X"03",X"07",X"51", + X"44",X"1C",X"03",X"CD",X"2D",X"02",X"91",X"42",X"53",X"43",X"4F",X"52",X"45",X"20",X"20",X"20", + X"20",X"20",X"4E",X"41",X"4D",X"45",X"24",X"CD",X"2D",X"02",X"CD",X"42",X"54",X"4F",X"44",X"41", + X"59",X"2F",X"53",X"20",X"42",X"45",X"53",X"54",X"20",X"35",X"24",X"21",X"54",X"43",X"06",X"05", + X"DD",X"21",X"29",X"4C",X"E5",X"78",X"C5",X"01",X"E0",X"FF",X"ED",X"44",X"C6",X"05",X"5F",X"C6", + X"31",X"77",X"09",X"E5",X"7B",X"07",X"5F",X"16",X"00",X"21",X"0D",X"2F",X"19",X"EB",X"E1",X"1A", + X"77",X"13",X"09",X"1A",X"77",X"09",X"09",X"DD",X"E5",X"D1",X"13",X"13",X"CD",X"17",X"2F",X"11", + X"40",X"FF",X"19",X"DD",X"7E",X"03",X"77",X"09",X"DD",X"7E",X"04",X"77",X"09",X"DD",X"7E",X"05", + X"77",X"01",X"06",X"00",X"DD",X"09",X"C1",X"E1",X"23",X"23",X"10",X"B8",X"C9",X"53",X"54",X"4E", + X"44",X"52",X"44",X"54",X"48",X"54",X"48",X"C5",X"01",X"00",X"03",X"1A",X"D7",X"CD",X"2B",X"2F", + X"1A",X"CD",X"2B",X"2F",X"1B",X"10",X"F4",X"36",X"30",X"C1",X"C9",X"D5",X"E6",X"0F",X"5F",X"B1", + X"3E",X"20",X"28",X"05",X"0E",X"FF",X"7B",X"C6",X"30",X"77",X"11",X"E0",X"FF",X"19",X"D1",X"C9", + X"80",X"45",X"0C",X"21",X"20",X"01",X"21",X"40",X"05",X"00",X"41",X"2C",X"20",X"01",X"44",X"04", + X"4C",X"51",X"21",X"20",X"45",X"09",X"08",X"1D",X"28",X"04",X"85",X"04",X"19",X"00",X"30",X"76", + X"12",X"09",X"09",X"02",X"21",X"2C",X"01",X"01",X"01",X"05",X"31",X"08",X"00",X"25",X"01",X"05", + X"10",X"05",X"24",X"01",X"00",X"02",X"25",X"10",X"05",X"00",X"A5",X"60",X"54",X"75",X"75",X"4D", + X"88",X"92",X"80",X"08",X"20",X"A8",X"00",X"1A",X"DA",X"02",X"EA",X"02",X"02",X"00",X"42",X"00", + X"02",X"50",X"42",X"00",X"C2",X"80",X"C8",X"00",X"02",X"4A",X"C6",X"02",X"90",X"00",X"32",X"10", + X"9A",X"80",X"D3",X"A4",X"82",X"C0",X"C2",X"C8",X"00",X"02",X"80",X"23",X"23",X"D8",X"08",X"D0", + X"82",X"12",X"82",X"20",X"42",X"70",X"02",X"02",X"E8",X"E2",X"90",X"A2",X"02",X"E2",X"22",X"40", + X"60",X"05",X"0D",X"00",X"08",X"1D",X"01",X"05",X"01",X"09",X"24",X"60",X"75",X"11",X"27",X"81", + X"1C",X"15",X"25",X"05",X"00",X"65",X"25",X"45",X"01",X"11",X"00",X"E9",X"09",X"65",X"25",X"2D", + X"50",X"03",X"19",X"3B",X"15",X"08",X"05",X"01",X"05",X"08",X"1D",X"21",X"21",X"14",X"09",X"0D", + X"00",X"60",X"04",X"04",X"25",X"11",X"33",X"25",X"19",X"C0",X"00",X"40",X"9F",X"13",X"65",X"59", + X"C3",X"16",X"30",X"C3",X"8C",X"30",X"C3",X"CE",X"30",X"C3",X"18",X"31",X"C3",X"0F",X"30",X"21", + X"10",X"00",X"22",X"00",X"4C",X"C9",X"21",X"16",X"4C",X"36",X"1D",X"3A",X"00",X"4C",X"E6",X"40", + X"C4",X"18",X"31",X"CD",X"03",X"07",X"B2",X"40",X"09",X"BF",X"CD",X"03",X"07",X"52",X"42",X"09", + X"BF",X"3E",X"BF",X"32",X"72",X"40",X"32",X"92",X"43",X"3A",X"7A",X"4C",X"E6",X"02",X"C0",X"11", + X"8D",X"40",X"CD",X"0F",X"07",X"02",X"FC",X"CD",X"FF",X"20",X"FC",X"FC",X"CD",X"FF",X"FF",X"20", + X"01",X"FC",X"CC",X"CF",X"FF",X"20",X"01",X"FC",X"FD",X"CC",X"FF",X"20",X"FC",X"FC",X"FD",X"FD", + X"FF",X"20",X"2E",X"FF",X"CC",X"FD",X"CF",X"20",X"01",X"FC",X"FC",X"CE",X"FF",X"00",X"21",X"2D", + X"41",X"22",X"06",X"4D",X"2E",X"0D",X"22",X"08",X"4D",X"11",X"D0",X"42",X"CD",X"0F",X"07",X"CD", + X"FF",X"20",X"CC",X"FF",X"20",X"FD",X"FF",X"20",X"CE",X"CF",X"00",X"C9",X"3A",X"7A",X"4C",X"E6", + X"02",X"C0",X"11",X"8D",X"44",X"CD",X"0F",X"07",X"03",X"85",X"85",X"20",X"02",X"85",X"85",X"85", + X"20",X"02",X"8A",X"85",X"85",X"20",X"02",X"8F",X"8A",X"85",X"20",X"83",X"01",X"8F",X"8F",X"87", + X"20",X"83",X"83",X"8F",X"8F",X"87",X"20",X"03",X"81",X"87",X"00",X"11",X"D0",X"46",X"CD",X"0F", + X"07",X"86",X"86",X"20",X"91",X"86",X"20",X"83",X"98",X"20",X"83",X"98",X"00",X"C9",X"21",X"7E", + X"31",X"11",X"0A",X"4D",X"3A",X"01",X"4C",X"CB",X"77",X"28",X"03",X"11",X"0E",X"4D",X"06",X"04", + X"C5",X"06",X"08",X"0E",X"01",X"AF",X"12",X"C5",X"4E",X"23",X"7E",X"23",X"A7",X"28",X"1F",X"47", + X"0A",X"FE",X"F0",X"38",X"19",X"3A",X"04",X"4C",X"E6",X"30",X"28",X"0C",X"3A",X"12",X"4D",X"B9", + X"20",X"06",X"3A",X"13",X"4D",X"B8",X"28",X"06",X"C1",X"1A",X"B1",X"12",X"18",X"01",X"C1",X"CB", + X"01",X"10",X"D4",X"13",X"C1",X"10",X"C9",X"C9",X"21",X"7E",X"31",X"11",X"0A",X"4D",X"3A",X"01", + X"4C",X"CB",X"77",X"28",X"03",X"11",X"0E",X"4D",X"DD",X"21",X"BE",X"31",X"3A",X"7A",X"4C",X"0F", + X"30",X"04",X"DD",X"21",X"C2",X"31",X"06",X"04",X"C5",X"06",X"08",X"1A",X"13",X"DD",X"4E",X"00", + X"DD",X"23",X"B1",X"C5",X"F5",X"4E",X"23",X"7E",X"23",X"A7",X"20",X"03",X"F1",X"18",X"28",X"47", + X"F1",X"0F",X"30",X"23",X"F5",X"E5",X"0A",X"67",X"79",X"E6",X"1F",X"FE",X"1F",X"3E",X"FE",X"20", + X"02",X"3E",X"FC",X"02",X"CB",X"7C",X"20",X"07",X"21",X"20",X"00",X"09",X"77",X"18",X"02",X"03", + X"02",X"21",X"16",X"4C",X"35",X"E1",X"F1",X"C1",X"10",X"C9",X"C1",X"10",X"BB",X"C9",X"BF",X"40", + X"3F",X"41",X"BF",X"42",X"3F",X"43",X"BF",X"41",X"3F",X"42",X"82",X"40",X"93",X"40",X"A5",X"40", + X"A8",X"40",X"B6",X"40",X"CC",X"40",X"0A",X"41",X"26",X"41",X"41",X"41",X"C3",X"41",X"E1",X"41", + X"C3",X"42",X"41",X"43",X"05",X"43",X"C7",X"42",X"49",X"43",X"0D",X"43",X"73",X"43",X"36",X"43", + X"B4",X"41",X"77",X"41",X"55",X"42",X"78",X"42",X"00",X"00",X"00",X"00",X"00",X"00",X"49",X"68", + X"16",X"00",X"00",X"16",X"C9",X"12",X"00",X"02",X"00",X"00",X"20",X"C0",X"12",X"10",X"00",X"40", + X"00",X"22",X"90",X"32",X"00",X"20",X"00",X"30",X"80",X"80",X"00",X"00",X"92",X"02",X"00",X"80", + X"A3",X"3E",X"C2",X"A2",X"82",X"9B",X"A2",X"32",X"9A",X"BA",X"AA",X"B0",X"A2",X"8A",X"AA",X"82", + X"82",X"92",X"F6",X"92",X"A2",X"32",X"92",X"A2",X"82",X"82",X"00",X"92",X"B2",X"B3",X"F2",X"F6", + X"50",X"08",X"40",X"55",X"00",X"00",X"00",X"49",X"00",X"04",X"08",X"44",X"04",X"48",X"0C",X"00", + X"08",X"01",X"08",X"00",X"00",X"00",X"41",X"40",X"00",X"00",X"44",X"40",X"40",X"0C",X"04",X"44", + X"5D",X"7D",X"47",X"EB",X"4D",X"CD",X"CD",X"25",X"47",X"4F",X"0D",X"4D",X"4D",X"05",X"4D",X"5D", + X"0D",X"0D",X"05",X"5D",X"4D",X"1D",X"6D",X"4D",X"0D",X"0D",X"C5",X"81",X"44",X"4D",X"0D",X"69", + X"02",X"20",X"00",X"92",X"80",X"00",X"00",X"00",X"00",X"00",X"02",X"00",X"80",X"00",X"20",X"00", + X"20",X"28",X"A0",X"10",X"10",X"00",X"20",X"00",X"02",X"90",X"82",X"02",X"72",X"22",X"40",X"A0", + X"82",X"C2",X"D6",X"82",X"A0",X"92",X"82",X"82",X"82",X"82",X"A7",X"B2",X"9E",X"F2",X"B2",X"E2", + X"B0",X"8A",X"32",X"9A",X"32",X"86",X"91",X"B2",X"AA",X"B3",X"86",X"B2",X"B6",X"B2",X"D3",X"A6", + X"0D",X"0C",X"61",X"05",X"00",X"00",X"04",X"00",X"40",X"21",X"40",X"04",X"01",X"04",X"00",X"00", + X"00",X"44",X"40",X"41",X"40",X"40",X"49",X"00",X"08",X"41",X"01",X"40",X"44",X"48",X"00",X"24", + X"0F",X"6D",X"2D",X"57",X"0D",X"1D",X"9D",X"05",X"45",X"4F",X"4D",X"8D",X"05",X"5D",X"65",X"C5", + X"45",X"4D",X"4F",X"05",X"05",X"85",X"2D",X"5D",X"1F",X"45",X"45",X"4D",X"5D",X"D5",X"6D",X"1D", + X"00",X"00",X"00",X"00",X"02",X"00",X"22",X"B8",X"02",X"02",X"02",X"00",X"00",X"02",X"12",X"10", + X"02",X"00",X"20",X"00",X"C2",X"00",X"00",X"20",X"20",X"82",X"20",X"20",X"A2",X"60",X"82",X"80", + X"A2",X"92",X"A0",X"9A",X"A2",X"92",X"B6",X"AA",X"D3",X"B2",X"92",X"BA",X"B2",X"F8",X"F2",X"B2", + X"82",X"A2",X"EA",X"E2",X"E2",X"B2",X"98",X"80",X"B0",X"82",X"A2",X"B2",X"F2",X"A9",X"B2",X"B2", + X"01",X"15",X"00",X"40",X"00",X"00",X"01",X"08",X"00",X"09",X"08",X"04",X"49",X"41",X"00",X"08", + X"20",X"00",X"44",X"08",X"04",X"64",X"40",X"44",X"00",X"00",X"00",X"04",X"40",X"00",X"00",X"00", + X"7D",X"6D",X"6F",X"6D",X"05",X"0D",X"44",X"4D",X"45",X"05",X"55",X"45",X"2D",X"0D",X"65",X"4C", + X"75",X"55",X"4C",X"25",X"5D",X"05",X"45",X"1D",X"1D",X"B6",X"75",X"15",X"6D",X"45",X"85",X"5D", + X"00",X"00",X"00",X"02",X"80",X"00",X"00",X"12",X"00",X"40",X"22",X"00",X"10",X"B0",X"02",X"00", + X"80",X"10",X"80",X"00",X"C0",X"02",X"00",X"90",X"00",X"20",X"00",X"82",X"9A",X"12",X"20",X"22", + X"DE",X"89",X"92",X"8A",X"9A",X"94",X"A2",X"92",X"A2",X"A2",X"A2",X"92",X"22",X"B3",X"B2",X"86", + X"BA",X"92",X"82",X"A2",X"82",X"20",X"B6",X"82",X"BA",X"B2",X"A0",X"A3",X"A6",X"EE",X"B6",X"12", + X"0D",X"0D",X"04",X"08",X"18",X"00",X"04",X"00",X"00",X"00",X"45",X"04",X"28",X"10",X"48",X"00", + X"00",X"00",X"40",X"05",X"40",X"41",X"40",X"00",X"44",X"00",X"0C",X"11",X"45",X"44",X"04",X"00", + X"4D",X"6D",X"65",X"05",X"7D",X"45",X"55",X"4D",X"07",X"65",X"06",X"2D",X"44",X"4D",X"0D",X"0D", + X"DD",X"4C",X"4D",X"C7",X"45",X"4D",X"A5",X"15",X"4D",X"8D",X"05",X"05",X"25",X"25",X"45",X"05", + X"80",X"28",X"00",X"E0",X"00",X"00",X"02",X"00",X"00",X"02",X"30",X"A2",X"20",X"90",X"42",X"40", + X"80",X"02",X"10",X"20",X"00",X"00",X"88",X"A0",X"00",X"02",X"20",X"10",X"00",X"9A",X"30",X"00", + X"92",X"82",X"A2",X"A2",X"B2",X"92",X"8A",X"12",X"B2",X"92",X"92",X"83",X"82",X"92",X"9A",X"B4", + X"B2",X"B2",X"BA",X"B2",X"A2",X"F8",X"B2",X"B2",X"D2",X"82",X"B1",X"B2",X"B6",X"A3",X"B6",X"EE", + X"EA",X"80",X"8A",X"10",X"92",X"80",X"82",X"02",X"80",X"A2",X"8C",X"16",X"02",X"F2",X"A2",X"80", + X"82",X"8A",X"80",X"92",X"A3",X"02",X"02",X"A2",X"30",X"0A",X"DA",X"9A",X"9A",X"82",X"80",X"C2", + X"42",X"22",X"B2",X"90",X"00",X"00",X"08",X"90",X"80",X"10",X"00",X"90",X"00",X"70",X"1A",X"10", + X"00",X"40",X"08",X"80",X"A0",X"02",X"10",X"82",X"00",X"12",X"00",X"00",X"80",X"80",X"A0",X"00", + X"25",X"05",X"05",X"05",X"11",X"05",X"27",X"05",X"15",X"05",X"05",X"41",X"07",X"75",X"35",X"24", + X"24",X"01",X"87",X"0D",X"08",X"45",X"41",X"06",X"0D",X"0C",X"05",X"08",X"95",X"45",X"DC",X"2B", + X"04",X"00",X"00",X"04",X"00",X"04",X"01",X"20",X"00",X"00",X"40",X"01",X"84",X"09",X"0D",X"00", + X"01",X"01",X"05",X"08",X"44",X"04",X"00",X"04",X"01",X"04",X"04",X"24",X"41",X"00",X"44",X"42", + X"A3",X"93",X"A2",X"82",X"04",X"D2",X"A2",X"C0",X"82",X"12",X"A2",X"86",X"8A",X"A2",X"82",X"82", + X"B2",X"AE",X"F2",X"9A",X"82",X"82",X"8A",X"D1",X"CA",X"00",X"82",X"92",X"02",X"A2",X"06",X"92", + X"82",X"E0",X"00",X"80",X"10",X"80",X"22",X"90",X"20",X"00",X"80",X"80",X"00",X"40",X"10",X"1A", + X"C0",X"00",X"80",X"40",X"00",X"90",X"80",X"80",X"00",X"00",X"02",X"00",X"02",X"00",X"00",X"80", + X"0C",X"2D",X"05",X"0D",X"B1",X"14",X"21",X"45",X"04",X"45",X"24",X"00",X"05",X"31",X"6C",X"35", + X"05",X"25",X"79",X"45",X"04",X"05",X"45",X"45",X"25",X"85",X"05",X"04",X"65",X"09",X"2D",X"25", + X"00",X"01",X"00",X"0D",X"04",X"08",X"05",X"01",X"00",X"04",X"08",X"04",X"01",X"20",X"20",X"05", + X"00",X"04",X"10",X"00",X"44",X"01",X"05",X"04",X"24",X"04",X"00",X"8C",X"48",X"49",X"4C",X"45", + X"8A",X"B6",X"82",X"88",X"82",X"82",X"82",X"8A",X"A2",X"32",X"A2",X"88",X"A0",X"C2",X"B2",X"C2", + X"90",X"98",X"A2",X"C0",X"06",X"82",X"22",X"40",X"A2",X"C6",X"C2",X"C1",X"82",X"31",X"C2",X"80", + X"80",X"10",X"80",X"30",X"00",X"40",X"10",X"00",X"00",X"00",X"42",X"10",X"20",X"82",X"00",X"B0", + X"90",X"00",X"28",X"00",X"00",X"00",X"82",X"A2",X"00",X"08",X"00",X"12",X"00",X"02",X"10",X"90", + X"0C",X"05",X"04",X"0D",X"04",X"45",X"05",X"05",X"05",X"0D",X"45",X"4D",X"04",X"19",X"05",X"05", + X"11",X"05",X"A5",X"05",X"05",X"1D",X"85",X"5D",X"09",X"49",X"05",X"05",X"05",X"07",X"9F",X"DC", + X"01",X"41",X"40",X"01",X"21",X"04",X"01",X"00",X"01",X"00",X"00",X"40",X"01",X"01",X"48",X"00", + X"00",X"00",X"1C",X"00",X"00",X"04",X"00",X"04",X"00",X"04",X"00",X"00",X"44",X"44",X"40",X"44", + X"83",X"A2",X"92",X"8A",X"A2",X"82",X"82",X"B0",X"AA",X"E0",X"A6",X"90",X"92",X"02",X"22",X"92", + X"80",X"02",X"82",X"81",X"C2",X"42",X"82",X"86",X"92",X"80",X"86",X"A2",X"00",X"42",X"80",X"92", + X"A1",X"A2",X"A0",X"22",X"00",X"00",X"80",X"02",X"82",X"30",X"20",X"00",X"10",X"00",X"10",X"20", + X"00",X"20",X"00",X"A0",X"80",X"00",X"82",X"00",X"00",X"12",X"00",X"A2",X"92",X"80",X"00",X"10", + X"01",X"01",X"05",X"00",X"04",X"25",X"26",X"04",X"05",X"05",X"05",X"05",X"25",X"4C",X"C4",X"4D", + X"05",X"05",X"04",X"07",X"05",X"80",X"44",X"01",X"1D",X"05",X"09",X"04",X"91",X"CF",X"8D",X"DD", + X"00",X"04",X"00",X"00",X"01",X"00",X"01",X"01",X"0C",X"40",X"48",X"00",X"00",X"00",X"01",X"01", + X"00",X"01",X"01",X"05",X"00",X"09",X"09",X"40",X"00",X"00",X"85",X"01",X"01",X"4C",X"0E",X"48", + X"82",X"D2",X"92",X"BA",X"A2",X"82",X"B0",X"B2",X"D2",X"80",X"82",X"B1",X"92",X"88",X"D2",X"EA", + X"1A",X"02",X"8B",X"82",X"68",X"C2",X"8A",X"8A",X"A6",X"82",X"82",X"02",X"82",X"B2",X"6A",X"96", + X"A8",X"6A",X"00",X"01",X"10",X"00",X"02",X"00",X"90",X"10",X"00",X"40",X"A2",X"10",X"00",X"22", + X"00",X"00",X"00",X"00",X"00",X"88",X"00",X"00",X"02",X"20",X"10",X"08",X"40",X"08",X"18",X"00", + X"14",X"3D",X"C5",X"8C",X"01",X"05",X"54",X"01",X"47",X"05",X"89",X"11",X"07",X"06",X"05",X"0C", + X"07",X"05",X"05",X"01",X"11",X"25",X"05",X"05",X"14",X"09",X"21",X"85",X"4D",X"37",X"13",X"4C", + X"29",X"40",X"00",X"08",X"40",X"00",X"01",X"00",X"61",X"00",X"00",X"00",X"01",X"00",X"21",X"00", + X"04",X"00",X"08",X"01",X"28",X"01",X"04",X"01",X"00",X"01",X"00",X"04",X"01",X"0C",X"08",X"04", + X"E3",X"83",X"A2",X"8A",X"B2",X"22",X"98",X"C6",X"A2",X"9A",X"CE",X"02",X"82",X"A2",X"83",X"82", + X"8A",X"22",X"92",X"82",X"83",X"80",X"E2",X"82",X"92",X"8A",X"82",X"92",X"92",X"80",X"B2",X"82", + X"14",X"A0",X"02",X"32",X"20",X"00",X"02",X"00",X"00",X"C2",X"22",X"00",X"82",X"30",X"00",X"A2", + X"00",X"00",X"00",X"02",X"10",X"02",X"00",X"00",X"00",X"10",X"80",X"00",X"10",X"10",X"00",X"08", + X"01",X"15",X"05",X"25",X"14",X"80",X"04",X"0D",X"15",X"65",X"5D",X"25",X"40",X"49",X"25",X"00", + X"04",X"0C",X"5D",X"45",X"25",X"09",X"0D",X"05",X"45",X"05",X"40",X"14",X"17",X"94",X"35",X"91", + X"00",X"08",X"00",X"01",X"40",X"00",X"14",X"00",X"01",X"00",X"00",X"00",X"30",X"00",X"04",X"18", + X"00",X"40",X"08",X"04",X"00",X"00",X"00",X"05",X"08",X"00",X"00",X"44",X"05",X"09",X"08",X"08", + X"A2",X"82",X"AA",X"30",X"A2",X"82",X"92",X"A2",X"02",X"02",X"CA",X"82",X"88",X"87",X"82",X"38", + X"C3",X"92",X"B8",X"B2",X"90",X"02",X"80",X"C2",X"00",X"02",X"53",X"C2",X"C2",X"92",X"8A",X"A3", + X"82",X"22",X"A0",X"12",X"00",X"06",X"00",X"00",X"80",X"08",X"00",X"20",X"20",X"00",X"42",X"00", + X"08",X"02",X"80",X"00",X"80",X"40",X"00",X"10",X"02",X"10",X"10",X"00",X"30",X"00",X"80",X"00", + X"55",X"01",X"04",X"48",X"1D",X"09",X"00",X"05",X"09",X"45",X"05",X"0C",X"05",X"25",X"0C",X"14", + X"14",X"00",X"09",X"07",X"64",X"41",X"7C",X"84",X"81",X"05",X"05",X"05",X"6D",X"47",X"26",X"45", + X"00",X"00",X"00",X"45",X"00",X"00",X"08",X"0C",X"00",X"00",X"00",X"00",X"09",X"00",X"00",X"00", + X"48",X"01",X"01",X"04",X"04",X"05",X"00",X"0C",X"00",X"00",X"08",X"40",X"4C",X"00",X"09",X"00", + X"9E",X"A1",X"92",X"F0",X"02",X"82",X"12",X"90",X"8A",X"9A",X"02",X"A1",X"82",X"02",X"82",X"A4", + X"90",X"82",X"02",X"02",X"D0",X"42",X"22",X"A0",X"42",X"92",X"82",X"B2",X"E2",X"B2",X"90",X"92", + X"90",X"84",X"28",X"30",X"80",X"A0",X"10",X"00",X"00",X"80",X"00",X"00",X"80",X"00",X"02",X"00", + X"02",X"10",X"80",X"A0",X"00",X"00",X"20",X"10",X"80",X"02",X"00",X"80",X"00",X"10",X"20",X"00", + X"25",X"01",X"04",X"04",X"45",X"45",X"05",X"85",X"09",X"05",X"29",X"45",X"05",X"25",X"05",X"05", + X"15",X"41",X"0C",X"00",X"1D",X"04",X"45",X"07",X"91",X"C4",X"41",X"0D",X"1E",X"04",X"61",X"1F", + X"19",X"01",X"0C",X"08",X"6C",X"05",X"00",X"04",X"01",X"00",X"01",X"0D",X"08",X"00",X"04",X"41", + X"0C",X"14",X"08",X"00",X"00",X"00",X"0C",X"01",X"00",X"04",X"40",X"00",X"41",X"41",X"45",X"4D", + X"9A",X"02",X"8C",X"02",X"02",X"84",X"80",X"00",X"A2",X"42",X"82",X"E2",X"80",X"0E",X"84",X"02", + X"80",X"02",X"C0",X"0A",X"82",X"86",X"82",X"CF",X"00",X"C2",X"42",X"88",X"40",X"42",X"82",X"80", + X"40",X"10",X"08",X"00",X"00",X"10",X"04",X"40",X"00",X"40",X"00",X"02",X"60",X"00",X"12",X"00", + X"C0",X"00",X"00",X"58",X"10",X"40",X"08",X"10",X"10",X"00",X"82",X"40",X"00",X"00",X"00",X"80", + X"02",X"20",X"01",X"05",X"01",X"07",X"05",X"11",X"00",X"25",X"05",X"05",X"05",X"05",X"05",X"00", + X"05",X"05",X"00",X"07",X"04",X"04",X"00",X"05",X"21",X"20",X"05",X"09",X"0D",X"00",X"05",X"35", + X"30",X"10",X"80",X"18",X"00",X"24",X"40",X"08",X"10",X"01",X"08",X"20",X"10",X"00",X"43",X"08", + X"40",X"20",X"00",X"14",X"20",X"10",X"20",X"00",X"00",X"09",X"00",X"00",X"00",X"68",X"28",X"09", + X"0A",X"B6",X"CA",X"02",X"82",X"0A",X"83",X"00",X"83",X"42",X"82",X"C2",X"88",X"40",X"00",X"20", + X"C0",X"03",X"86",X"42",X"9B",X"8A",X"8A",X"02",X"82",X"46",X"02",X"82",X"86",X"02",X"8A",X"04", + X"00",X"50",X"40",X"20",X"00",X"02",X"22",X"00",X"20",X"80",X"28",X"00",X"02",X"42",X"00",X"20", + X"00",X"02",X"00",X"20",X"00",X"00",X"02",X"12",X"08",X"00",X"00",X"48",X"01",X"02",X"40",X"00", + X"04",X"00",X"04",X"85",X"05",X"85",X"05",X"11",X"15",X"80",X"0D",X"84",X"05",X"11",X"85",X"00", + X"05",X"05",X"05",X"05",X"05",X"02",X"00",X"07",X"01",X"80",X"25",X"94",X"05",X"49",X"05",X"8D", + X"00",X"00",X"40",X"00",X"00",X"60",X"20",X"18",X"60",X"00",X"00",X"00",X"00",X"08",X"00",X"00", + X"00",X"01",X"00",X"00",X"00",X"20",X"20",X"00",X"00",X"20",X"00",X"20",X"4C",X"61",X"08",X"50", + X"C5",X"3B",X"82",X"85",X"90",X"06",X"80",X"82",X"83",X"97",X"82",X"02",X"04",X"02",X"0A",X"C0", + X"C2",X"96",X"02",X"C7",X"02",X"86",X"82",X"E3",X"8A",X"02",X"43",X"42",X"82",X"47",X"D2",X"22", + X"0A",X"30",X"60",X"40",X"00",X"40",X"10",X"80",X"00",X"40",X"00",X"08",X"00",X"00",X"48",X"20", + X"E0",X"28",X"00",X"08",X"00",X"00",X"12",X"00",X"00",X"00",X"00",X"00",X"10",X"00",X"28",X"08", + X"02",X"05",X"07",X"00",X"84",X"45",X"1D",X"02",X"01",X"55",X"05",X"81",X"20",X"23",X"0C",X"B5", + X"00",X"60",X"05",X"04",X"01",X"01",X"15",X"02",X"05",X"22",X"01",X"07",X"85",X"07",X"75",X"0D", + X"00",X"08",X"00",X"08",X"04",X"00",X"00",X"00",X"04",X"11",X"40",X"00",X"00",X"00",X"04",X"00", + X"04",X"08",X"10",X"00",X"05",X"08",X"00",X"09",X"20",X"40",X"2C",X"00",X"40",X"30",X"08",X"10", + X"00",X"84",X"E6",X"82",X"84",X"82",X"83",X"04",X"81",X"90",X"82",X"00",X"02",X"80",X"82",X"80", + X"88",X"44",X"82",X"12",X"80",X"8A",X"82",X"62",X"56",X"46",X"05",X"32",X"CA",X"1A",X"04",X"50", + X"52",X"F0",X"40",X"40",X"00",X"08",X"00",X"00",X"00",X"00",X"50",X"00",X"20",X"00",X"00",X"00", + X"48",X"00",X"00",X"02",X"00",X"00",X"40",X"22",X"00",X"20",X"00",X"00",X"00",X"0A",X"08",X"00", + X"27",X"0D",X"01",X"2E",X"05",X"00",X"25",X"05",X"00",X"01",X"01",X"01",X"01",X"25",X"0D",X"2D", + X"04",X"45",X"89",X"04",X"05",X"95",X"07",X"05",X"27",X"11",X"14",X"11",X"A5",X"65",X"91",X"03", + X"00",X"48",X"00",X"00",X"28",X"48",X"00",X"01",X"05",X"00",X"08",X"00",X"00",X"00",X"08",X"00", + X"10",X"10",X"40",X"08",X"10",X"01",X"01",X"10",X"00",X"30",X"00",X"38",X"49",X"60",X"40",X"20", + X"82",X"83",X"8A",X"82",X"82",X"12",X"92",X"8A",X"80",X"42",X"00",X"C2",X"02",X"84",X"07",X"03", + X"C2",X"0A",X"86",X"82",X"82",X"06",X"4A",X"02",X"06",X"82",X"42",X"83",X"06",X"02",X"A2",X"08", + X"02",X"98",X"08",X"00",X"04",X"00",X"00",X"20",X"00",X"00",X"52",X"00",X"20",X"00",X"50",X"40", + X"00",X"40",X"22",X"00",X"00",X"00",X"A0",X"40",X"40",X"08",X"82",X"00",X"54",X"00",X"00",X"08", + X"00",X"05",X"45",X"09",X"21",X"04",X"87",X"24",X"05",X"01",X"00",X"01",X"84",X"04",X"09",X"05", + X"05",X"84",X"04",X"24",X"05",X"04",X"A4",X"14",X"23",X"11",X"00",X"01",X"24",X"07",X"05",X"E5", + X"24",X"60",X"40",X"00",X"08",X"80",X"34",X"40",X"01",X"84",X"20",X"04",X"00",X"00",X"00",X"00", + X"00",X"00",X"08",X"00",X"08",X"00",X"49",X"00",X"04",X"08",X"04",X"04",X"10",X"4C",X"69",X"88", + X"86",X"84",X"00",X"0A",X"82",X"80",X"86",X"D1",X"08",X"80",X"84",X"84",X"82",X"00",X"88",X"82", + X"86",X"00",X"02",X"06",X"C1",X"C4",X"02",X"86",X"42",X"02",X"0A",X"C8",X"02",X"02",X"82",X"0A", + X"22",X"02",X"20",X"10",X"C0",X"12",X"20",X"00",X"08",X"10",X"00",X"08",X"00",X"20",X"00",X"08", + X"00",X"00",X"00",X"00",X"08",X"00",X"00",X"40",X"80",X"00",X"A0",X"28",X"20",X"02",X"02",X"50", + X"85",X"17",X"8D",X"14",X"05",X"23",X"05",X"07",X"13",X"01",X"05",X"00",X"04",X"24",X"01",X"25", + X"00",X"23",X"05",X"05",X"05",X"05",X"04",X"16",X"84",X"84",X"04",X"05",X"05",X"0F",X"AC",X"8C", + X"08",X"00",X"00",X"40",X"08",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"00",X"00",X"20", + X"00",X"00",X"00",X"10",X"20",X"00",X"40",X"00",X"20",X"08",X"00",X"00",X"08",X"04",X"01",X"70", + X"8F",X"04",X"83",X"47",X"86",X"C7",X"42",X"82",X"82",X"83",X"C8",X"42",X"08",X"02",X"82",X"82", + X"8A",X"87",X"01",X"42",X"82",X"43",X"8A",X"82",X"02",X"00",X"83",X"06",X"00",X"10",X"80",X"42", + X"40",X"80",X"00",X"30",X"00",X"02",X"00",X"10",X"98",X"00",X"20",X"04",X"00",X"08",X"10",X"00", + X"40",X"00",X"00",X"E0",X"52",X"00",X"80",X"00",X"02",X"08",X"58",X"C0",X"00",X"00",X"00",X"02", + X"07",X"05",X"04",X"50",X"57",X"07",X"0C",X"B0",X"05",X"05",X"45",X"17",X"A5",X"04",X"21",X"05", + X"06",X"05",X"A1",X"09",X"25",X"24",X"22",X"20",X"01",X"02",X"05",X"84",X"80",X"8C",X"03",X"37", + X"48",X"28",X"00",X"20",X"08",X"00",X"00",X"00",X"00",X"28",X"08",X"00",X"01",X"00",X"00",X"30", + X"20",X"00",X"00",X"00",X"20",X"00",X"00",X"00",X"00",X"08",X"00",X"00",X"53",X"20",X"40",X"48", + X"82",X"CA",X"82",X"E5",X"90",X"02",X"00",X"C6",X"81",X"80",X"92",X"86",X"03",X"02",X"0A",X"26", + X"80",X"96",X"0B",X"06",X"A3",X"C2",X"01",X"82",X"82",X"06",X"82",X"82",X"84",X"83",X"02",X"C2", + X"40",X"08",X"82",X"28",X"00",X"28",X"08",X"10",X"00",X"00",X"D8",X"00",X"08",X"0A",X"08",X"40", + X"00",X"00",X"08",X"04",X"60",X"20",X"00",X"00",X"40",X"80",X"42",X"00",X"00",X"00",X"08",X"04", + X"20",X"04",X"15",X"10",X"B5",X"11",X"A0",X"11",X"05",X"01",X"85",X"05",X"05",X"6C",X"31",X"21", + X"04",X"0C",X"04",X"07",X"07",X"84",X"0D",X"04",X"01",X"85",X"00",X"15",X"0D",X"84",X"27",X"25", + X"00",X"08",X"00",X"00",X"00",X"12",X"00",X"20",X"08",X"09",X"80",X"00",X"00",X"00",X"20",X"00", + X"00",X"00",X"00",X"00",X"10",X"20",X"00",X"08",X"00",X"18",X"00",X"00",X"0C",X"08",X"04",X"44", + X"20",X"4A",X"22",X"06",X"80",X"02",X"1C",X"00",X"50",X"CA",X"02",X"DA",X"10",X"00",X"C2",X"4A", + X"80",X"C2",X"02",X"8A",X"20",X"02",X"43",X"50",X"08",X"82",X"80",X"00",X"82",X"22",X"C2",X"82", + X"22",X"A7",X"52",X"06",X"0B",X"00",X"82",X"C2",X"A2",X"02",X"22",X"A2",X"10",X"88",X"C0",X"E0", + X"8A",X"02",X"82",X"8A",X"82",X"CA",X"0A",X"A0",X"CA",X"22",X"82",X"8E",X"80",X"A2",X"02",X"0A", + X"01",X"05",X"21",X"00",X"21",X"24",X"08",X"0C",X"04",X"00",X"24",X"11",X"04",X"0D",X"00",X"04", + X"35",X"10",X"30",X"01",X"05",X"34",X"40",X"00",X"0D",X"01",X"00",X"21",X"05",X"8C",X"2E",X"44", + X"00",X"01",X"42",X"75",X"40",X"24",X"41",X"15",X"04",X"10",X"05",X"10",X"17",X"47",X"01",X"05", + X"01",X"05",X"04",X"3D",X"61",X"24",X"04",X"05",X"01",X"00",X"25",X"00",X"51",X"32",X"94",X"85", + X"02",X"82",X"B4",X"2A",X"82",X"82",X"00",X"08",X"CA",X"02",X"4E",X"92",X"C2",X"B2",X"82",X"82", + X"E2",X"42",X"CA",X"00",X"62",X"02",X"82",X"C0",X"82",X"80",X"C2",X"02",X"A0",X"02",X"82",X"62", + X"92",X"63",X"02",X"18",X"08",X"02",X"02",X"38",X"80",X"0E",X"02",X"C2",X"00",X"40",X"D2",X"00", + X"B2",X"52",X"1A",X"98",X"02",X"00",X"92",X"8A",X"00",X"0A",X"92",X"92",X"A2",X"44",X"80",X"42", + X"00",X"00",X"10",X"01",X"25",X"05",X"34",X"01",X"0D",X"4C",X"45",X"11",X"10",X"11",X"01",X"21", + X"35",X"01",X"2C",X"45",X"45",X"64",X"05",X"41",X"25",X"15",X"05",X"28",X"85",X"35",X"25",X"04", + X"00",X"6D",X"24",X"51",X"40",X"24",X"04",X"05",X"24",X"01",X"21",X"30",X"10",X"25",X"09",X"85", + X"41",X"71",X"01",X"01",X"00",X"05",X"01",X"21",X"25",X"21",X"00",X"21",X"30",X"0C",X"65",X"5D", + X"0A",X"C8",X"EA",X"08",X"02",X"24",X"28",X"30",X"C2",X"68",X"80",X"02",X"90",X"02",X"92",X"82", + X"80",X"42",X"00",X"42",X"42",X"22",X"0A",X"02",X"CA",X"0A",X"62",X"00",X"40",X"00",X"90",X"C2", + X"92",X"9A",X"06",X"90",X"13",X"92",X"12",X"20",X"18",X"48",X"82",X"20",X"02",X"82",X"90",X"00", + X"10",X"82",X"02",X"00",X"12",X"00",X"80",X"A0",X"10",X"00",X"A8",X"82",X"10",X"00",X"82",X"08", + X"28",X"2C",X"25",X"05",X"05",X"A1",X"01",X"01",X"00",X"00",X"1C",X"20",X"14",X"B0",X"21",X"15", + X"04",X"29",X"31",X"05",X"55",X"11",X"05",X"25",X"34",X"01",X"2D",X"30",X"4D",X"05",X"75",X"45", + X"41",X"0D",X"01",X"45",X"40",X"05",X"05",X"14",X"05",X"00",X"25",X"25",X"86",X"41",X"00",X"05", + X"04",X"01",X"01",X"30",X"29",X"21",X"81",X"05",X"11",X"05",X"08",X"05",X"42",X"49",X"51",X"86", + X"B0",X"B2",X"92",X"92",X"C8",X"12",X"00",X"C2",X"0E",X"48",X"00",X"48",X"0A",X"D0",X"88",X"82", + X"02",X"00",X"80",X"00",X"8A",X"42",X"00",X"02",X"AA",X"46",X"02",X"42",X"00",X"3A",X"00",X"D0", + X"42",X"50",X"FF",X"E3",X"80",X"02",X"02",X"92",X"22",X"82",X"02",X"8A",X"00",X"82",X"00",X"C4", + X"92",X"10",X"00",X"00",X"40",X"C8",X"30",X"2A",X"02",X"92",X"0A",X"00",X"82",X"52",X"00",X"8A", + X"31",X"0D",X"05",X"60",X"04",X"01",X"00",X"00",X"25",X"11",X"00",X"00",X"01",X"04",X"40",X"01", + X"40",X"05",X"04",X"01",X"35",X"08",X"10",X"00",X"00",X"09",X"00",X"15",X"27",X"3D",X"49",X"1D", + X"10",X"01",X"64",X"C5",X"55",X"80",X"00",X"0C",X"05",X"05",X"2C",X"06",X"05",X"09",X"08",X"09", + X"18",X"14",X"25",X"04",X"24",X"55",X"04",X"01",X"21",X"20",X"05",X"81",X"C5",X"4C",X"5D",X"1D", + X"A8",X"08",X"C8",X"48",X"84",X"80",X"82",X"82",X"80",X"02",X"63",X"C0",X"02",X"82",X"4A",X"02", + X"82",X"80",X"8A",X"C2",X"86",X"E0",X"82",X"B2",X"83",X"02",X"E2",X"A2",X"80",X"C2",X"82",X"42", + X"92",X"02",X"2A",X"62",X"02",X"02",X"C0",X"0A",X"40",X"02",X"C2",X"00",X"06",X"43",X"D2",X"80", + X"02",X"8A",X"06",X"DA",X"02",X"02",X"22",X"22",X"80",X"02",X"02",X"82",X"8A",X"10",X"58",X"47", + X"44",X"40",X"00",X"0D",X"00",X"15",X"15",X"00",X"50",X"01",X"01",X"04",X"14",X"00",X"20",X"11", + X"05",X"01",X"40",X"05",X"21",X"10",X"01",X"15",X"60",X"00",X"15",X"04",X"15",X"ED",X"24",X"15", + X"16",X"05",X"15",X"02",X"04",X"69",X"10",X"01",X"00",X"05",X"25",X"04",X"15",X"22",X"05",X"41", + X"01",X"51",X"00",X"14",X"24",X"00",X"11",X"10",X"01",X"15",X"11",X"0C",X"45",X"10",X"3C",X"A6", + X"F0",X"80",X"88",X"1A",X"82",X"82",X"C0",X"08",X"88",X"80",X"CA",X"CC",X"4A",X"80",X"8A",X"80", + X"02",X"02",X"02",X"82",X"88",X"8A",X"A2",X"80",X"C0",X"8A",X"02",X"B0",X"83",X"A2",X"00",X"82", + X"02",X"48",X"02",X"82",X"00",X"92",X"08",X"8A",X"42",X"90",X"80",X"48",X"42",X"C2",X"00",X"C2", + X"07",X"32",X"22",X"00",X"40",X"80",X"05",X"E8",X"40",X"08",X"A3",X"C2",X"06",X"02",X"4A",X"0A", + X"21",X"05",X"00",X"05",X"40",X"05",X"04",X"05",X"14",X"15",X"10",X"05",X"01",X"20",X"04",X"01", + X"01",X"05",X"05",X"01",X"2D",X"00",X"41",X"04",X"20",X"01",X"04",X"01",X"61",X"72",X"65",X"0D", + X"00",X"80",X"0A",X"21",X"00",X"25",X"10",X"13",X"40",X"34",X"30",X"10",X"4D",X"10",X"20",X"18", + X"01",X"24",X"3C",X"54",X"01",X"00",X"41",X"05",X"04",X"1C",X"20",X"80",X"17",X"5B",X"5C",X"35", + X"9A",X"C0",X"AA",X"8A",X"82",X"D2",X"02",X"A0",X"CA",X"40",X"80",X"04",X"5A",X"0A",X"90",X"02", + X"86",X"A2",X"E2",X"0A",X"84",X"82",X"80",X"C8",X"12",X"08",X"82",X"02",X"02",X"22",X"0A",X"C0", + X"E0",X"D4",X"D7",X"08",X"92",X"80",X"00",X"00",X"80",X"22",X"20",X"06",X"12",X"00",X"A0",X"32", + X"12",X"50",X"00",X"82",X"F0",X"82",X"42",X"8A",X"40",X"02",X"1A",X"A0",X"20",X"00",X"C0",X"82", + X"80",X"45",X"0C",X"21",X"20",X"01",X"21",X"00",X"05",X"00",X"41",X"0C",X"20",X"00",X"44",X"0C", + X"0C",X"51",X"21",X"21",X"45",X"09",X"08",X"15",X"29",X"04",X"85",X"0C",X"19",X"00",X"30",X"76", + X"12",X"09",X"09",X"02",X"21",X"2C",X"01",X"01",X"01",X"05",X"21",X"00",X"00",X"25",X"01",X"05", + X"10",X"05",X"24",X"01",X"00",X"02",X"25",X"10",X"05",X"00",X"A5",X"60",X"55",X"75",X"75",X"4D", + X"88",X"92",X"80",X"08",X"20",X"A8",X"00",X"1A",X"DA",X"02",X"EA",X"02",X"02",X"00",X"42",X"00", + X"02",X"50",X"42",X"40",X"C2",X"80",X"C8",X"00",X"02",X"4A",X"C6",X"02",X"90",X"00",X"32",X"10", + X"9A",X"80",X"D3",X"A4",X"80",X"C0",X"C2",X"C8",X"00",X"02",X"8A",X"23",X"23",X"D8",X"08",X"D0", + X"82",X"12",X"82",X"20",X"92",X"F0",X"02",X"02",X"E8",X"E2",X"90",X"A2",X"02",X"E0",X"22",X"40", + X"60",X"05",X"0D",X"00",X"04",X"1D",X"01",X"05",X"01",X"09",X"24",X"60",X"75",X"11",X"27",X"81", + X"1C",X"15",X"25",X"05",X"00",X"25",X"25",X"45",X"01",X"11",X"00",X"E9",X"09",X"65",X"25",X"2D", + X"50",X"07",X"19",X"3B",X"15",X"00",X"05",X"01",X"05",X"08",X"1D",X"21",X"21",X"14",X"0D",X"0D", + X"04",X"60",X"04",X"04",X"25",X"11",X"23",X"25",X"19",X"C0",X"00",X"40",X"9F",X"13",X"65",X"59"); +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/Pacman Hardware/Birdiy_MiST/rtl/build_id.tcl b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/build_id.tcl new file mode 100644 index 00000000..938515d8 --- /dev/null +++ b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/build_id.tcl @@ -0,0 +1,35 @@ +# ================================================================================ +# +# Build ID Verilog Module Script +# Jeff Wiencrot - 8/1/2011 +# +# Generates a Verilog module that contains a timestamp, +# from the current build. These values are available from the build_date, build_time, +# physical_address, and host_name output ports of the build_id module in the build_id.v +# Verilog source file. +# +# ================================================================================ + +proc generateBuildID_Verilog {} { + + # Get the timestamp (see: http://www.altera.com/support/examples/tcl/tcl-date-time-stamp.html) + set buildDate [ clock format [ clock seconds ] -format %y%m%d ] + set buildTime [ clock format [ clock seconds ] -format %H%M%S ] + + # Create a Verilog file for output + set outputFileName "rtl/build_id.v" + set outputFile [open $outputFileName "w"] + + # Output the Verilog source + puts $outputFile "`define BUILD_DATE \"$buildDate\"" + puts $outputFile "`define BUILD_TIME \"$buildTime\"" + close $outputFile + + # Send confirmation message to the Messages window + post_message "Generated build identification Verilog module: [pwd]/$outputFileName" + post_message "Date: $buildDate" + post_message "Time: $buildTime" +} + +# Comment out this line to prevent the process from automatically executing when the file is sourced: +generateBuildID_Verilog \ No newline at end of file diff --git a/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/build_id.v b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/build_id.v new file mode 100644 index 00000000..031c4b1e --- /dev/null +++ b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/build_id.v @@ -0,0 +1,2 @@ +`define BUILD_DATE "190517" +`define BUILD_TIME "155807" diff --git a/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/cpu/T80.vhd b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/cpu/T80.vhd new file mode 100644 index 00000000..da01f6b4 --- /dev/null +++ b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/cpu/T80.vhd @@ -0,0 +1,1080 @@ +-- **** +-- T80(b) core. In an effort to merge and maintain bug fixes .... +-- +-- +-- Ver 300 started tidyup. Rmoved some auto_wait bits from 0247 which caused problems +-- +-- MikeJ March 2005 +-- Latest version from www.fpgaarcade.com (original www.opencores.org) +-- +-- **** +-- +-- Z80 compatible microprocessor core +-- +-- Version : 0247 +-- +-- Copyright (c) 2001-2002 Daniel Wallner (jesus@opencores.org) +-- +-- All rights reserved +-- +-- Redistribution and use in source and synthezised forms, with or without +-- modification, are permitted provided that the following conditions are met: +-- +-- Redistributions of source code must retain the above copyright notice, +-- this list of conditions and the following disclaimer. +-- +-- Redistributions in synthesized form must reproduce the above copyright +-- notice, this list of conditions and the following disclaimer in the +-- documentation and/or other materials provided with the distribution. +-- +-- Neither the name of the author nor the names of other contributors may +-- be used to endorse or promote products derived from this software without +-- specific prior written permission. +-- +-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +-- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +-- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +-- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE +-- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +-- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +-- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +-- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +-- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +-- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +-- POSSIBILITY OF SUCH DAMAGE. +-- +-- Please report bugs to the author, but before you do so, please +-- make sure that this is not a derivative work and that +-- you have the latest version of this file. +-- +-- The latest version of this file can be found at: +-- http://www.opencores.org/cvsweb.shtml/t80/ +-- +-- Limitations : +-- +-- File history : +-- +-- 0208 : First complete release +-- +-- 0210 : Fixed wait and halt +-- +-- 0211 : Fixed Refresh addition and IM 1 +-- +-- 0214 : Fixed mostly flags, only the block instructions now fail the zex regression test +-- +-- 0232 : Removed refresh address output for Mode > 1 and added DJNZ M1_n fix by Mike Johnson +-- +-- 0235 : Added clock enable and IM 2 fix by Mike Johnson +-- +-- 0237 : Changed 8080 I/O address output, added IntE output +-- +-- 0238 : Fixed (IX/IY+d) timing and 16 bit ADC and SBC zero flag +-- +-- 0240 : Added interrupt ack fix by Mike Johnson, changed (IX/IY+d) timing and changed flags in GB mode +-- +-- 0242 : Added I/O wait, fixed refresh address, moved some registers to RAM +-- +-- 0247 : Fixed bus req/ack cycle +-- + +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.numeric_std.all; +use work.T80_Pack.all; + +entity T80 is + generic( + Mode : integer := 0; -- 0 => Z80, 1 => Fast Z80, 2 => 8080, 3 => GB + IOWait : integer := 0; -- 1 => Single cycle I/O, 1 => Std I/O cycle + Flag_C : integer := 0; + Flag_N : integer := 1; + Flag_P : integer := 2; + Flag_X : integer := 3; + Flag_H : integer := 4; + Flag_Y : integer := 5; + Flag_Z : integer := 6; + Flag_S : integer := 7 + ); + port( + RESET_n : in std_logic; + CLK_n : in std_logic; + CEN : in std_logic; + WAIT_n : in std_logic; + INT_n : in std_logic; + NMI_n : in std_logic; + BUSRQ_n : in std_logic; + M1_n : out std_logic; + IORQ : out std_logic; + NoRead : out std_logic; + Write : out std_logic; + RFSH_n : out std_logic; + HALT_n : out std_logic; + BUSAK_n : out std_logic; + A : out std_logic_vector(15 downto 0); + DInst : in std_logic_vector(7 downto 0); + DI : in std_logic_vector(7 downto 0); + DO : out std_logic_vector(7 downto 0); + MC : out std_logic_vector(2 downto 0); + TS : out std_logic_vector(2 downto 0); + IntCycle_n : out std_logic; + IntE : out std_logic; + Stop : out std_logic + ); +end T80; + +architecture rtl of T80 is + + constant aNone : std_logic_vector(2 downto 0) := "111"; + constant aBC : std_logic_vector(2 downto 0) := "000"; + constant aDE : std_logic_vector(2 downto 0) := "001"; + constant aXY : std_logic_vector(2 downto 0) := "010"; + constant aIOA : std_logic_vector(2 downto 0) := "100"; + constant aSP : std_logic_vector(2 downto 0) := "101"; + constant aZI : std_logic_vector(2 downto 0) := "110"; + + -- Registers + signal ACC, F : std_logic_vector(7 downto 0); + signal Ap, Fp : std_logic_vector(7 downto 0); + signal I : std_logic_vector(7 downto 0); + signal R : unsigned(7 downto 0); + signal SP, PC : unsigned(15 downto 0); + + signal RegDIH : std_logic_vector(7 downto 0); + signal RegDIL : std_logic_vector(7 downto 0); + signal RegBusA : std_logic_vector(15 downto 0); + signal RegBusB : std_logic_vector(15 downto 0); + signal RegBusC : std_logic_vector(15 downto 0); + signal RegAddrA_r : std_logic_vector(2 downto 0); + signal RegAddrA : std_logic_vector(2 downto 0); + signal RegAddrB_r : std_logic_vector(2 downto 0); + signal RegAddrB : std_logic_vector(2 downto 0); + signal RegAddrC : std_logic_vector(2 downto 0); + signal RegWEH : std_logic; + signal RegWEL : std_logic; + signal Alternate : std_logic; + + -- Help Registers + signal TmpAddr : std_logic_vector(15 downto 0); -- Temporary address register + signal IR : std_logic_vector(7 downto 0); -- Instruction register + signal ISet : std_logic_vector(1 downto 0); -- Instruction set selector + signal RegBusA_r : std_logic_vector(15 downto 0); + + signal ID16 : signed(15 downto 0); + signal Save_Mux : std_logic_vector(7 downto 0); + + signal TState : unsigned(2 downto 0); + signal MCycle : std_logic_vector(2 downto 0); + signal IntE_FF1 : std_logic; + signal IntE_FF2 : std_logic; + signal Halt_FF : std_logic; + signal BusReq_s : std_logic; + signal BusAck : std_logic; + signal ClkEn : std_logic; + signal NMI_s : std_logic; + signal INT_s : std_logic; + signal IStatus : std_logic_vector(1 downto 0); + + signal DI_Reg : std_logic_vector(7 downto 0); + signal T_Res : std_logic; + signal XY_State : std_logic_vector(1 downto 0); + signal Pre_XY_F_M : std_logic_vector(2 downto 0); + signal NextIs_XY_Fetch : std_logic; + signal XY_Ind : std_logic; + signal No_BTR : std_logic; + signal BTR_r : std_logic; + signal Auto_Wait : std_logic; + signal Auto_Wait_t1 : std_logic; + signal Auto_Wait_t2 : std_logic; + signal IncDecZ : std_logic; + + -- ALU signals + signal BusB : std_logic_vector(7 downto 0); + signal BusA : std_logic_vector(7 downto 0); + signal ALU_Q : std_logic_vector(7 downto 0); + signal F_Out : std_logic_vector(7 downto 0); + + -- Registered micro code outputs + signal Read_To_Reg_r : std_logic_vector(4 downto 0); + signal Arith16_r : std_logic; + signal Z16_r : std_logic; + signal ALU_Op_r : std_logic_vector(3 downto 0); + signal Save_ALU_r : std_logic; + signal PreserveC_r : std_logic; + signal MCycles : std_logic_vector(2 downto 0); + + -- Micro code outputs + signal MCycles_d : std_logic_vector(2 downto 0); + signal TStates : std_logic_vector(2 downto 0); + signal IntCycle : std_logic; + signal NMICycle : std_logic; + signal Inc_PC : std_logic; + signal Inc_WZ : std_logic; + signal IncDec_16 : std_logic_vector(3 downto 0); + signal Prefix : std_logic_vector(1 downto 0); + signal Read_To_Acc : std_logic; + signal Read_To_Reg : std_logic; + signal Set_BusB_To : std_logic_vector(3 downto 0); + signal Set_BusA_To : std_logic_vector(3 downto 0); + signal ALU_Op : std_logic_vector(3 downto 0); + signal Save_ALU : std_logic; + signal PreserveC : std_logic; + signal Arith16 : std_logic; + signal Set_Addr_To : std_logic_vector(2 downto 0); + signal Jump : std_logic; + signal JumpE : std_logic; + signal JumpXY : std_logic; + signal Call : std_logic; + signal RstP : std_logic; + signal LDZ : std_logic; + signal LDW : std_logic; + signal LDSPHL : std_logic; + signal IORQ_i : std_logic; + signal Special_LD : std_logic_vector(2 downto 0); + signal ExchangeDH : std_logic; + signal ExchangeRp : std_logic; + signal ExchangeAF : std_logic; + signal ExchangeRS : std_logic; + signal I_DJNZ : std_logic; + signal I_CPL : std_logic; + signal I_CCF : std_logic; + signal I_SCF : std_logic; + signal I_RETN : std_logic; + signal I_BT : std_logic; + signal I_BC : std_logic; + signal I_BTR : std_logic; + signal I_RLD : std_logic; + signal I_RRD : std_logic; + signal I_INRC : std_logic; + signal SetDI : std_logic; + signal SetEI : std_logic; + signal IMode : std_logic_vector(1 downto 0); + signal Halt : std_logic; + +begin + + mcode : T80_MCode + generic map( + Mode => Mode, + Flag_C => Flag_C, + Flag_N => Flag_N, + Flag_P => Flag_P, + Flag_X => Flag_X, + Flag_H => Flag_H, + Flag_Y => Flag_Y, + Flag_Z => Flag_Z, + Flag_S => Flag_S) + port map( + IR => IR, + ISet => ISet, + MCycle => MCycle, + F => F, + NMICycle => NMICycle, + IntCycle => IntCycle, + MCycles => MCycles_d, + TStates => TStates, + Prefix => Prefix, + Inc_PC => Inc_PC, + Inc_WZ => Inc_WZ, + IncDec_16 => IncDec_16, + Read_To_Acc => Read_To_Acc, + Read_To_Reg => Read_To_Reg, + Set_BusB_To => Set_BusB_To, + Set_BusA_To => Set_BusA_To, + ALU_Op => ALU_Op, + Save_ALU => Save_ALU, + PreserveC => PreserveC, + Arith16 => Arith16, + Set_Addr_To => Set_Addr_To, + IORQ => IORQ_i, + Jump => Jump, + JumpE => JumpE, + JumpXY => JumpXY, + Call => Call, + RstP => RstP, + LDZ => LDZ, + LDW => LDW, + LDSPHL => LDSPHL, + Special_LD => Special_LD, + ExchangeDH => ExchangeDH, + ExchangeRp => ExchangeRp, + ExchangeAF => ExchangeAF, + ExchangeRS => ExchangeRS, + I_DJNZ => I_DJNZ, + I_CPL => I_CPL, + I_CCF => I_CCF, + I_SCF => I_SCF, + I_RETN => I_RETN, + I_BT => I_BT, + I_BC => I_BC, + I_BTR => I_BTR, + I_RLD => I_RLD, + I_RRD => I_RRD, + I_INRC => I_INRC, + SetDI => SetDI, + SetEI => SetEI, + IMode => IMode, + Halt => Halt, + NoRead => NoRead, + Write => Write); + + alu : T80_ALU + generic map( + Mode => Mode, + Flag_C => Flag_C, + Flag_N => Flag_N, + Flag_P => Flag_P, + Flag_X => Flag_X, + Flag_H => Flag_H, + Flag_Y => Flag_Y, + Flag_Z => Flag_Z, + Flag_S => Flag_S) + port map( + Arith16 => Arith16_r, + Z16 => Z16_r, + ALU_Op => ALU_Op_r, + IR => IR(5 downto 0), + ISet => ISet, + BusA => BusA, + BusB => BusB, + F_In => F, + Q => ALU_Q, + F_Out => F_Out); + + ClkEn <= CEN and not BusAck; + + T_Res <= '1' when TState = unsigned(TStates) else '0'; + + NextIs_XY_Fetch <= '1' when XY_State /= "00" and XY_Ind = '0' and + ((Set_Addr_To = aXY) or + (MCycle = "001" and IR = "11001011") or + (MCycle = "001" and IR = "00110110")) else '0'; + + Save_Mux <= BusB when ExchangeRp = '1' else + DI_Reg when Save_ALU_r = '0' else + ALU_Q; + + process (RESET_n, CLK_n) + begin + if RESET_n = '0' then + PC <= (others => '0'); -- Program Counter + A <= (others => '0'); + TmpAddr <= (others => '0'); + IR <= "00000000"; + ISet <= "00"; + XY_State <= "00"; + IStatus <= "00"; + MCycles <= "000"; + DO <= "00000000"; + + ACC <= (others => '1'); + F <= (others => '1'); + Ap <= (others => '1'); + Fp <= (others => '1'); + I <= (others => '0'); + R <= (others => '0'); + SP <= (others => '1'); + Alternate <= '0'; + + Read_To_Reg_r <= "00000"; + F <= (others => '1'); + Arith16_r <= '0'; + BTR_r <= '0'; + Z16_r <= '0'; + ALU_Op_r <= "0000"; + Save_ALU_r <= '0'; + PreserveC_r <= '0'; + XY_Ind <= '0'; + + elsif CLK_n'event and CLK_n = '1' then + + if ClkEn = '1' then + + ALU_Op_r <= "0000"; + Save_ALU_r <= '0'; + Read_To_Reg_r <= "00000"; + + MCycles <= MCycles_d; + + if IMode /= "11" then + IStatus <= IMode; + end if; + + Arith16_r <= Arith16; + PreserveC_r <= PreserveC; + if ISet = "10" and ALU_OP(2) = '0' and ALU_OP(0) = '1' and MCycle = "011" then + Z16_r <= '1'; + else + Z16_r <= '0'; + end if; + + if MCycle = "001" and TState(2) = '0' then + -- MCycle = 1 and TState = 1, 2, or 3 + + if TState = 2 and Wait_n = '1' then + if Mode < 2 then + A(7 downto 0) <= std_logic_vector(R); + A(15 downto 8) <= I; + R(6 downto 0) <= R(6 downto 0) + 1; + end if; + + if Jump = '0' and Call = '0' and NMICycle = '0' and IntCycle = '0' and not (Halt_FF = '1' or Halt = '1') then + PC <= PC + 1; + end if; + + if IntCycle = '1' and IStatus = "01" then + IR <= "11111111"; + elsif Halt_FF = '1' or (IntCycle = '1' and IStatus = "10") or NMICycle = '1' then + IR <= "00000000"; + else + IR <= DInst; + end if; + + ISet <= "00"; + if Prefix /= "00" then + if Prefix = "11" then + if IR(5) = '1' then + XY_State <= "10"; + else + XY_State <= "01"; + end if; + else + if Prefix = "10" then + XY_State <= "00"; + XY_Ind <= '0'; + end if; + ISet <= Prefix; + end if; + else + XY_State <= "00"; + XY_Ind <= '0'; + end if; + end if; + + else + -- either (MCycle > 1) OR (MCycle = 1 AND TState > 3) + + if MCycle = "110" then + XY_Ind <= '1'; + if Prefix = "01" then + ISet <= "01"; + end if; + end if; + + if T_Res = '1' then + BTR_r <= (I_BT or I_BC or I_BTR) and not No_BTR; + if Jump = '1' then + A(15 downto 8) <= DI_Reg; + A(7 downto 0) <= TmpAddr(7 downto 0); + PC(15 downto 8) <= unsigned(DI_Reg); + PC(7 downto 0) <= unsigned(TmpAddr(7 downto 0)); + elsif JumpXY = '1' then + A <= RegBusC; + PC <= unsigned(RegBusC); + elsif Call = '1' or RstP = '1' then + A <= TmpAddr; + PC <= unsigned(TmpAddr); + elsif MCycle = MCycles and NMICycle = '1' then + A <= "0000000001100110"; + PC <= "0000000001100110"; + elsif MCycle = "011" and IntCycle = '1' and IStatus = "10" then + A(15 downto 8) <= I; + A(7 downto 0) <= TmpAddr(7 downto 0); + PC(15 downto 8) <= unsigned(I); + PC(7 downto 0) <= unsigned(TmpAddr(7 downto 0)); + else + case Set_Addr_To is + when aXY => + if XY_State = "00" then + A <= RegBusC; + else + if NextIs_XY_Fetch = '1' then + A <= std_logic_vector(PC); + else + A <= TmpAddr; + end if; + end if; + when aIOA => + if Mode = 3 then + -- Memory map I/O on GBZ80 + A(15 downto 8) <= (others => '1'); + elsif Mode = 2 then + -- Duplicate I/O address on 8080 + A(15 downto 8) <= DI_Reg; + else + A(15 downto 8) <= ACC; + end if; + A(7 downto 0) <= DI_Reg; + when aSP => + A <= std_logic_vector(SP); + when aBC => + if Mode = 3 and IORQ_i = '1' then + -- Memory map I/O on GBZ80 + A(15 downto 8) <= (others => '1'); + A(7 downto 0) <= RegBusC(7 downto 0); + else + A <= RegBusC; + end if; + when aDE => + A <= RegBusC; + when aZI => + if Inc_WZ = '1' then + A <= std_logic_vector(unsigned(TmpAddr) + 1); + else + A(15 downto 8) <= DI_Reg; + A(7 downto 0) <= TmpAddr(7 downto 0); + end if; + when others => + A <= std_logic_vector(PC); + end case; + end if; + + Save_ALU_r <= Save_ALU; + ALU_Op_r <= ALU_Op; + + if I_CPL = '1' then + -- CPL + ACC <= not ACC; + F(Flag_Y) <= not ACC(5); + F(Flag_H) <= '1'; + F(Flag_X) <= not ACC(3); + F(Flag_N) <= '1'; + end if; + if I_CCF = '1' then + -- CCF + F(Flag_C) <= not F(Flag_C); + F(Flag_Y) <= ACC(5); + F(Flag_H) <= F(Flag_C); + F(Flag_X) <= ACC(3); + F(Flag_N) <= '0'; + end if; + if I_SCF = '1' then + -- SCF + F(Flag_C) <= '1'; + F(Flag_Y) <= ACC(5); + F(Flag_H) <= '0'; + F(Flag_X) <= ACC(3); + F(Flag_N) <= '0'; + end if; + end if; + + if TState = 2 and Wait_n = '1' then + if ISet = "01" and MCycle = "111" then + IR <= DInst; + end if; + if JumpE = '1' then + PC <= unsigned(signed(PC) + signed(DI_Reg)); + elsif Inc_PC = '1' then + PC <= PC + 1; + end if; + if BTR_r = '1' then + PC <= PC - 2; + end if; + if RstP = '1' then + TmpAddr <= (others =>'0'); + TmpAddr(5 downto 3) <= IR(5 downto 3); + end if; + end if; + if TState = 3 and MCycle = "110" then + TmpAddr <= std_logic_vector(signed(RegBusC) + signed(DI_Reg)); + end if; + + if (TState = 2 and Wait_n = '1') or (TState = 4 and MCycle = "001") then + if IncDec_16(2 downto 0) = "111" then + if IncDec_16(3) = '1' then + SP <= SP - 1; + else + SP <= SP + 1; + end if; + end if; + end if; + + if LDSPHL = '1' then + SP <= unsigned(RegBusC); + end if; + if ExchangeAF = '1' then + Ap <= ACC; + ACC <= Ap; + Fp <= F; + F <= Fp; + end if; + if ExchangeRS = '1' then + Alternate <= not Alternate; + end if; + end if; + + if TState = 3 then + if LDZ = '1' then + TmpAddr(7 downto 0) <= DI_Reg; + end if; + if LDW = '1' then + TmpAddr(15 downto 8) <= DI_Reg; + end if; + + if Special_LD(2) = '1' then + case Special_LD(1 downto 0) is + when "00" => + ACC <= I; + F(Flag_P) <= IntE_FF2; + when "01" => + ACC <= std_logic_vector(R); + F(Flag_P) <= IntE_FF2; + when "10" => + I <= ACC; + when others => + R <= unsigned(ACC); + end case; + end if; + end if; + + if (I_DJNZ = '0' and Save_ALU_r = '1') or ALU_Op_r = "1001" then + if Mode = 3 then + F(6) <= F_Out(6); + F(5) <= F_Out(5); + F(7) <= F_Out(7); + if PreserveC_r = '0' then + F(4) <= F_Out(4); + end if; + else + F(7 downto 1) <= F_Out(7 downto 1); + if PreserveC_r = '0' then + F(Flag_C) <= F_Out(0); + end if; + end if; + end if; + if T_Res = '1' and I_INRC = '1' then + F(Flag_H) <= '0'; + F(Flag_N) <= '0'; + if DI_Reg(7 downto 0) = "00000000" then + F(Flag_Z) <= '1'; + else + F(Flag_Z) <= '0'; + end if; + F(Flag_S) <= DI_Reg(7); + F(Flag_P) <= not (DI_Reg(0) xor DI_Reg(1) xor DI_Reg(2) xor DI_Reg(3) xor + DI_Reg(4) xor DI_Reg(5) xor DI_Reg(6) xor DI_Reg(7)); + end if; + + if TState = 1 then + DO <= BusB; + if I_RLD = '1' then + DO(3 downto 0) <= BusA(3 downto 0); + DO(7 downto 4) <= BusB(3 downto 0); + end if; + if I_RRD = '1' then + DO(3 downto 0) <= BusB(7 downto 4); + DO(7 downto 4) <= BusA(3 downto 0); + end if; + end if; + + if T_Res = '1' then + Read_To_Reg_r(3 downto 0) <= Set_BusA_To; + Read_To_Reg_r(4) <= Read_To_Reg; + if Read_To_Acc = '1' then + Read_To_Reg_r(3 downto 0) <= "0111"; + Read_To_Reg_r(4) <= '1'; + end if; + end if; + + if TState = 1 and I_BT = '1' then + F(Flag_X) <= ALU_Q(3); + F(Flag_Y) <= ALU_Q(1); + F(Flag_H) <= '0'; + F(Flag_N) <= '0'; + end if; + if I_BC = '1' or I_BT = '1' then + F(Flag_P) <= IncDecZ; + end if; + + if (TState = 1 and Save_ALU_r = '0') or + (Save_ALU_r = '1' and ALU_OP_r /= "0111") then + case Read_To_Reg_r is + when "10111" => + ACC <= Save_Mux; + when "10110" => + DO <= Save_Mux; + when "11000" => + SP(7 downto 0) <= unsigned(Save_Mux); + when "11001" => + SP(15 downto 8) <= unsigned(Save_Mux); + when "11011" => + F <= Save_Mux; + when others => + end case; + end if; + + end if; + + end if; + + end process; + +--------------------------------------------------------------------------- +-- +-- BC('), DE('), HL('), IX and IY +-- +--------------------------------------------------------------------------- + process (CLK_n) + begin + if CLK_n'event and CLK_n = '1' then + if ClkEn = '1' then + -- Bus A / Write + RegAddrA_r <= Alternate & Set_BusA_To(2 downto 1); + if XY_Ind = '0' and XY_State /= "00" and Set_BusA_To(2 downto 1) = "10" then + RegAddrA_r <= XY_State(1) & "11"; + end if; + + -- Bus B + RegAddrB_r <= Alternate & Set_BusB_To(2 downto 1); + if XY_Ind = '0' and XY_State /= "00" and Set_BusB_To(2 downto 1) = "10" then + RegAddrB_r <= XY_State(1) & "11"; + end if; + + -- Address from register + RegAddrC <= Alternate & Set_Addr_To(1 downto 0); + -- Jump (HL), LD SP,HL + if (JumpXY = '1' or LDSPHL = '1') then + RegAddrC <= Alternate & "10"; + end if; + if ((JumpXY = '1' or LDSPHL = '1') and XY_State /= "00") or (MCycle = "110") then + RegAddrC <= XY_State(1) & "11"; + end if; + + if I_DJNZ = '1' and Save_ALU_r = '1' and Mode < 2 then + IncDecZ <= F_Out(Flag_Z); + end if; + if (TState = 2 or (TState = 3 and MCycle = "001")) and IncDec_16(2 downto 0) = "100" then + if ID16 = 0 then + IncDecZ <= '0'; + else + IncDecZ <= '1'; + end if; + end if; + + RegBusA_r <= RegBusA; + end if; + end if; + end process; + + RegAddrA <= + -- 16 bit increment/decrement + Alternate & IncDec_16(1 downto 0) when (TState = 2 or + (TState = 3 and MCycle = "001" and IncDec_16(2) = '1')) and XY_State = "00" else + XY_State(1) & "11" when (TState = 2 or + (TState = 3 and MCycle = "001" and IncDec_16(2) = '1')) and IncDec_16(1 downto 0) = "10" else + -- EX HL,DL + Alternate & "10" when ExchangeDH = '1' and TState = 3 else + Alternate & "01" when ExchangeDH = '1' and TState = 4 else + -- Bus A / Write + RegAddrA_r; + + RegAddrB <= + -- EX HL,DL + Alternate & "01" when ExchangeDH = '1' and TState = 3 else + -- Bus B + RegAddrB_r; + + ID16 <= signed(RegBusA) - 1 when IncDec_16(3) = '1' else + signed(RegBusA) + 1; + + process (Save_ALU_r, Auto_Wait_t1, ALU_OP_r, Read_To_Reg_r, + ExchangeDH, IncDec_16, MCycle, TState, Wait_n) + begin + RegWEH <= '0'; + RegWEL <= '0'; + if (TState = 1 and Save_ALU_r = '0') or + (Save_ALU_r = '1' and ALU_OP_r /= "0111") then + case Read_To_Reg_r is + when "10000" | "10001" | "10010" | "10011" | "10100" | "10101" => + RegWEH <= not Read_To_Reg_r(0); + RegWEL <= Read_To_Reg_r(0); + when others => + end case; + end if; + + if ExchangeDH = '1' and (TState = 3 or TState = 4) then + RegWEH <= '1'; + RegWEL <= '1'; + end if; + + if IncDec_16(2) = '1' and ((TState = 2 and Wait_n = '1' and MCycle /= "001") or (TState = 3 and MCycle = "001")) then + case IncDec_16(1 downto 0) is + when "00" | "01" | "10" => + RegWEH <= '1'; + RegWEL <= '1'; + when others => + end case; + end if; + end process; + + process (Save_Mux, RegBusB, RegBusA_r, ID16, + ExchangeDH, IncDec_16, MCycle, TState, Wait_n) + begin + RegDIH <= Save_Mux; + RegDIL <= Save_Mux; + + if ExchangeDH = '1' and TState = 3 then + RegDIH <= RegBusB(15 downto 8); + RegDIL <= RegBusB(7 downto 0); + end if; + if ExchangeDH = '1' and TState = 4 then + RegDIH <= RegBusA_r(15 downto 8); + RegDIL <= RegBusA_r(7 downto 0); + end if; + + if IncDec_16(2) = '1' and ((TState = 2 and MCycle /= "001") or (TState = 3 and MCycle = "001")) then + RegDIH <= std_logic_vector(ID16(15 downto 8)); + RegDIL <= std_logic_vector(ID16(7 downto 0)); + end if; + end process; + + Regs : T80_Reg + port map( + Clk => CLK_n, + CEN => ClkEn, + WEH => RegWEH, + WEL => RegWEL, + AddrA => RegAddrA, + AddrB => RegAddrB, + AddrC => RegAddrC, + DIH => RegDIH, + DIL => RegDIL, + DOAH => RegBusA(15 downto 8), + DOAL => RegBusA(7 downto 0), + DOBH => RegBusB(15 downto 8), + DOBL => RegBusB(7 downto 0), + DOCH => RegBusC(15 downto 8), + DOCL => RegBusC(7 downto 0)); + +--------------------------------------------------------------------------- +-- +-- Buses +-- +--------------------------------------------------------------------------- + process (CLK_n) + begin + if CLK_n'event and CLK_n = '1' then + if ClkEn = '1' then + case Set_BusB_To is + when "0111" => + BusB <= ACC; + when "0000" | "0001" | "0010" | "0011" | "0100" | "0101" => + if Set_BusB_To(0) = '1' then + BusB <= RegBusB(7 downto 0); + else + BusB <= RegBusB(15 downto 8); + end if; + when "0110" => + BusB <= DI_Reg; + when "1000" => + BusB <= std_logic_vector(SP(7 downto 0)); + when "1001" => + BusB <= std_logic_vector(SP(15 downto 8)); + when "1010" => + BusB <= "00000001"; + when "1011" => + BusB <= F; + when "1100" => + BusB <= std_logic_vector(PC(7 downto 0)); + when "1101" => + BusB <= std_logic_vector(PC(15 downto 8)); + when "1110" => + BusB <= "00000000"; + when others => + BusB <= "--------"; + end case; + + case Set_BusA_To is + when "0111" => + BusA <= ACC; + when "0000" | "0001" | "0010" | "0011" | "0100" | "0101" => + if Set_BusA_To(0) = '1' then + BusA <= RegBusA(7 downto 0); + else + BusA <= RegBusA(15 downto 8); + end if; + when "0110" => + BusA <= DI_Reg; + when "1000" => + BusA <= std_logic_vector(SP(7 downto 0)); + when "1001" => + BusA <= std_logic_vector(SP(15 downto 8)); + when "1010" => + BusA <= "00000000"; + when others => + BusB <= "--------"; + end case; + end if; + end if; + end process; + +--------------------------------------------------------------------------- +-- +-- Generate external control signals +-- +--------------------------------------------------------------------------- + process (RESET_n,CLK_n) + begin + if RESET_n = '0' then + RFSH_n <= '1'; + elsif CLK_n'event and CLK_n = '1' then + if CEN = '1' then + if MCycle = "001" and ((TState = 2 and Wait_n = '1') or TState = 3) then + RFSH_n <= '0'; + else + RFSH_n <= '1'; + end if; + end if; + end if; + end process; + + MC <= std_logic_vector(MCycle); + TS <= std_logic_vector(TState); + DI_Reg <= DI; + HALT_n <= not Halt_FF; + BUSAK_n <= not BusAck; + IntCycle_n <= not IntCycle; + IntE <= IntE_FF1; + IORQ <= IORQ_i; + Stop <= I_DJNZ; + +------------------------------------------------------------------------- +-- +-- Syncronise inputs +-- +------------------------------------------------------------------------- + process (RESET_n, CLK_n) + variable OldNMI_n : std_logic; + begin + if RESET_n = '0' then + BusReq_s <= '0'; + INT_s <= '0'; + NMI_s <= '0'; + OldNMI_n := '0'; + elsif CLK_n'event and CLK_n = '1' then + if CEN = '1' then + BusReq_s <= not BUSRQ_n; + INT_s <= not INT_n; + if NMICycle = '1' then + NMI_s <= '0'; + elsif NMI_n = '0' and OldNMI_n = '1' then + NMI_s <= '1'; + end if; + OldNMI_n := NMI_n; + end if; + end if; + end process; + +------------------------------------------------------------------------- +-- +-- Main state machine +-- +------------------------------------------------------------------------- + process (RESET_n, CLK_n) + begin + if RESET_n = '0' then + MCycle <= "001"; + TState <= "000"; + Pre_XY_F_M <= "000"; + Halt_FF <= '0'; + BusAck <= '0'; + NMICycle <= '0'; + IntCycle <= '0'; + IntE_FF1 <= '0'; + IntE_FF2 <= '0'; + No_BTR <= '0'; + Auto_Wait_t1 <= '0'; + Auto_Wait_t2 <= '0'; + M1_n <= '1'; + elsif CLK_n'event and CLK_n = '1' then + if CEN = '1' then + Auto_Wait_t1 <= Auto_Wait; + Auto_Wait_t2 <= Auto_Wait_t1; + No_BTR <= (I_BT and (not IR(4) or not F(Flag_P))) or + (I_BC and (not IR(4) or F(Flag_Z) or not F(Flag_P))) or + (I_BTR and (not IR(4) or F(Flag_Z))); + if TState = 2 then + if SetEI = '1' then + IntE_FF1 <= '1'; + IntE_FF2 <= '1'; + end if; + if I_RETN = '1' then + IntE_FF1 <= IntE_FF2; + end if; + end if; + if TState = 3 then + if SetDI = '1' then + IntE_FF1 <= '0'; + IntE_FF2 <= '0'; + end if; + end if; + if IntCycle = '1' or NMICycle = '1' then + Halt_FF <= '0'; + end if; + if MCycle = "001" and TState = 2 and Wait_n = '1' then + M1_n <= '1'; + end if; + if BusReq_s = '1' and BusAck = '1' then + else + BusAck <= '0'; + if TState = 2 and Wait_n = '0' then + elsif T_Res = '1' then + if Halt = '1' then + Halt_FF <= '1'; + end if; + if BusReq_s = '1' then + BusAck <= '1'; + else + TState <= "001"; + if NextIs_XY_Fetch = '1' then + MCycle <= "110"; + Pre_XY_F_M <= MCycle; + if IR = "00110110" and Mode = 0 then + Pre_XY_F_M <= "010"; + end if; + elsif (MCycle = "111") or + (MCycle = "110" and Mode = 1 and ISet /= "01") then + MCycle <= std_logic_vector(unsigned(Pre_XY_F_M) + 1); + elsif (MCycle = MCycles) or + No_BTR = '1' or + (MCycle = "010" and I_DJNZ = '1' and IncDecZ = '1') then + M1_n <= '0'; + MCycle <= "001"; + IntCycle <= '0'; + NMICycle <= '0'; + if NMI_s = '1' and Prefix = "00" then + NMICycle <= '1'; + IntE_FF1 <= '0'; + elsif (IntE_FF1 = '1' and INT_s = '1') and Prefix = "00" and SetEI = '0' then + IntCycle <= '1'; + IntE_FF1 <= '0'; + IntE_FF2 <= '0'; + end if; + else + MCycle <= std_logic_vector(unsigned(MCycle) + 1); + end if; + end if; + else + if Auto_Wait = '1' nand Auto_Wait_t2 = '0' then + + TState <= TState + 1; + end if; + end if; + end if; + if TState = 0 then + M1_n <= '0'; + end if; + end if; + end if; + end process; + + process (IntCycle, NMICycle, MCycle) + begin + Auto_Wait <= '0'; + if IntCycle = '1' or NMICycle = '1' then + if MCycle = "001" then + Auto_Wait <= '1'; + end if; + end if; + end process; + +end; diff --git a/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/cpu/T80_ALU.vhd b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/cpu/T80_ALU.vhd new file mode 100644 index 00000000..95c98dab --- /dev/null +++ b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/cpu/T80_ALU.vhd @@ -0,0 +1,371 @@ +-- **** +-- T80(b) core. In an effort to merge and maintain bug fixes .... +-- +-- +-- Ver 301 parity flag is just parity for 8080, also overflow for Z80, by Sean Riddle +-- Ver 300 started tidyup +-- MikeJ March 2005 +-- Latest version from www.fpgaarcade.com (original www.opencores.org) +-- +-- **** +-- +-- Z80 compatible microprocessor core +-- +-- Version : 0247 +-- +-- Copyright (c) 2001-2002 Daniel Wallner (jesus@opencores.org) +-- +-- All rights reserved +-- +-- Redistribution and use in source and synthezised forms, with or without +-- modification, are permitted provided that the following conditions are met: +-- +-- Redistributions of source code must retain the above copyright notice, +-- this list of conditions and the following disclaimer. +-- +-- Redistributions in synthesized form must reproduce the above copyright +-- notice, this list of conditions and the following disclaimer in the +-- documentation and/or other materials provided with the distribution. +-- +-- Neither the name of the author nor the names of other contributors may +-- be used to endorse or promote products derived from this software without +-- specific prior written permission. +-- +-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +-- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +-- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +-- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE +-- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +-- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +-- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +-- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +-- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +-- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +-- POSSIBILITY OF SUCH DAMAGE. +-- +-- Please report bugs to the author, but before you do so, please +-- make sure that this is not a derivative work and that +-- you have the latest version of this file. +-- +-- The latest version of this file can be found at: +-- http://www.opencores.org/cvsweb.shtml/t80/ +-- +-- Limitations : +-- +-- File history : +-- +-- 0214 : Fixed mostly flags, only the block instructions now fail the zex regression test +-- +-- 0238 : Fixed zero flag for 16 bit SBC and ADC +-- +-- 0240 : Added GB operations +-- +-- 0242 : Cleanup +-- +-- 0247 : Cleanup +-- + +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.numeric_std.all; + +entity T80_ALU is + generic( + Mode : integer := 0; + Flag_C : integer := 0; + Flag_N : integer := 1; + Flag_P : integer := 2; + Flag_X : integer := 3; + Flag_H : integer := 4; + Flag_Y : integer := 5; + Flag_Z : integer := 6; + Flag_S : integer := 7 + ); + port( + Arith16 : in std_logic; + Z16 : in std_logic; + ALU_Op : in std_logic_vector(3 downto 0); + IR : in std_logic_vector(5 downto 0); + ISet : in std_logic_vector(1 downto 0); + BusA : in std_logic_vector(7 downto 0); + BusB : in std_logic_vector(7 downto 0); + F_In : in std_logic_vector(7 downto 0); + Q : out std_logic_vector(7 downto 0); + F_Out : out std_logic_vector(7 downto 0) + ); +end T80_ALU; + +architecture rtl of T80_ALU is + + procedure AddSub(A : std_logic_vector; + B : std_logic_vector; + Sub : std_logic; + Carry_In : std_logic; + signal Res : out std_logic_vector; + signal Carry : out std_logic) is + + variable B_i : unsigned(A'length - 1 downto 0); + variable Res_i : unsigned(A'length + 1 downto 0); + begin + if Sub = '1' then + B_i := not unsigned(B); + else + B_i := unsigned(B); + end if; + + Res_i := unsigned("0" & A & Carry_In) + unsigned("0" & B_i & "1"); + Carry <= Res_i(A'length + 1); + Res <= std_logic_vector(Res_i(A'length downto 1)); + end; + + -- AddSub variables (temporary signals) + signal UseCarry : std_logic; + signal Carry7_v : std_logic; + signal Overflow_v : std_logic; + signal HalfCarry_v : std_logic; + signal Carry_v : std_logic; + signal Q_v : std_logic_vector(7 downto 0); + + signal BitMask : std_logic_vector(7 downto 0); + +begin + + with IR(5 downto 3) select BitMask <= "00000001" when "000", + "00000010" when "001", + "00000100" when "010", + "00001000" when "011", + "00010000" when "100", + "00100000" when "101", + "01000000" when "110", + "10000000" when others; + + UseCarry <= not ALU_Op(2) and ALU_Op(0); + AddSub(BusA(3 downto 0), BusB(3 downto 0), ALU_Op(1), ALU_Op(1) xor (UseCarry and F_In(Flag_C)), Q_v(3 downto 0), HalfCarry_v); + AddSub(BusA(6 downto 4), BusB(6 downto 4), ALU_Op(1), HalfCarry_v, Q_v(6 downto 4), Carry7_v); + AddSub(BusA(7 downto 7), BusB(7 downto 7), ALU_Op(1), Carry7_v, Q_v(7 downto 7), Carry_v); + + -- bug fix - parity flag is just parity for 8080, also overflow for Z80 + process (Carry_v, Carry7_v, Q_v) + begin + if(Mode=2) then + OverFlow_v <= not (Q_v(0) xor Q_v(1) xor Q_v(2) xor Q_v(3) xor + Q_v(4) xor Q_v(5) xor Q_v(6) xor Q_v(7)); else + OverFlow_v <= Carry_v xor Carry7_v; + end if; + end process; + + process (Arith16, ALU_OP, F_In, BusA, BusB, IR, Q_v, Carry_v, HalfCarry_v, OverFlow_v, BitMask, ISet, Z16) + variable Q_t : std_logic_vector(7 downto 0); + variable DAA_Q : unsigned(8 downto 0); + begin + Q_t := "--------"; + F_Out <= F_In; + DAA_Q := "---------"; + case ALU_Op is + when "0000" | "0001" | "0010" | "0011" | "0100" | "0101" | "0110" | "0111" => + F_Out(Flag_N) <= '0'; + F_Out(Flag_C) <= '0'; + case ALU_OP(2 downto 0) is + when "000" | "001" => -- ADD, ADC + Q_t := Q_v; + F_Out(Flag_C) <= Carry_v; + F_Out(Flag_H) <= HalfCarry_v; + F_Out(Flag_P) <= OverFlow_v; + when "010" | "011" | "111" => -- SUB, SBC, CP + Q_t := Q_v; + F_Out(Flag_N) <= '1'; + F_Out(Flag_C) <= not Carry_v; + F_Out(Flag_H) <= not HalfCarry_v; + F_Out(Flag_P) <= OverFlow_v; + when "100" => -- AND + Q_t(7 downto 0) := BusA and BusB; + F_Out(Flag_H) <= '1'; + when "101" => -- XOR + Q_t(7 downto 0) := BusA xor BusB; + F_Out(Flag_H) <= '0'; + when others => -- OR "110" + Q_t(7 downto 0) := BusA or BusB; + F_Out(Flag_H) <= '0'; + end case; + if ALU_Op(2 downto 0) = "111" then -- CP + F_Out(Flag_X) <= BusB(3); + F_Out(Flag_Y) <= BusB(5); + else + F_Out(Flag_X) <= Q_t(3); + F_Out(Flag_Y) <= Q_t(5); + end if; + if Q_t(7 downto 0) = "00000000" then + F_Out(Flag_Z) <= '1'; + if Z16 = '1' then + F_Out(Flag_Z) <= F_In(Flag_Z); -- 16 bit ADC,SBC + end if; + else + F_Out(Flag_Z) <= '0'; + end if; + F_Out(Flag_S) <= Q_t(7); + case ALU_Op(2 downto 0) is + when "000" | "001" | "010" | "011" | "111" => -- ADD, ADC, SUB, SBC, CP + when others => + F_Out(Flag_P) <= not (Q_t(0) xor Q_t(1) xor Q_t(2) xor Q_t(3) xor + Q_t(4) xor Q_t(5) xor Q_t(6) xor Q_t(7)); + end case; + if Arith16 = '1' then + F_Out(Flag_S) <= F_In(Flag_S); + F_Out(Flag_Z) <= F_In(Flag_Z); + F_Out(Flag_P) <= F_In(Flag_P); + end if; + when "1100" => + -- DAA + F_Out(Flag_H) <= F_In(Flag_H); + F_Out(Flag_C) <= F_In(Flag_C); + DAA_Q(7 downto 0) := unsigned(BusA); + DAA_Q(8) := '0'; + if F_In(Flag_N) = '0' then + -- After addition + -- Alow > 9 or H = 1 + if DAA_Q(3 downto 0) > 9 or F_In(Flag_H) = '1' then + if (DAA_Q(3 downto 0) > 9) then + F_Out(Flag_H) <= '1'; + else + F_Out(Flag_H) <= '0'; + end if; + DAA_Q := DAA_Q + 6; + end if; + -- new Ahigh > 9 or C = 1 + if DAA_Q(8 downto 4) > 9 or F_In(Flag_C) = '1' then + DAA_Q := DAA_Q + 96; -- 0x60 + end if; + else + -- After subtraction + if DAA_Q(3 downto 0) > 9 or F_In(Flag_H) = '1' then + if DAA_Q(3 downto 0) > 5 then + F_Out(Flag_H) <= '0'; + end if; + DAA_Q(7 downto 0) := DAA_Q(7 downto 0) - 6; + end if; + if unsigned(BusA) > 153 or F_In(Flag_C) = '1' then + DAA_Q := DAA_Q - 352; -- 0x160 + end if; + end if; + F_Out(Flag_X) <= DAA_Q(3); + F_Out(Flag_Y) <= DAA_Q(5); + F_Out(Flag_C) <= F_In(Flag_C) or DAA_Q(8); + Q_t := std_logic_vector(DAA_Q(7 downto 0)); + if DAA_Q(7 downto 0) = "00000000" then + F_Out(Flag_Z) <= '1'; + else + F_Out(Flag_Z) <= '0'; + end if; + F_Out(Flag_S) <= DAA_Q(7); + F_Out(Flag_P) <= not (DAA_Q(0) xor DAA_Q(1) xor DAA_Q(2) xor DAA_Q(3) xor + DAA_Q(4) xor DAA_Q(5) xor DAA_Q(6) xor DAA_Q(7)); + when "1101" | "1110" => + -- RLD, RRD + Q_t(7 downto 4) := BusA(7 downto 4); + if ALU_Op(0) = '1' then + Q_t(3 downto 0) := BusB(7 downto 4); + else + Q_t(3 downto 0) := BusB(3 downto 0); + end if; + F_Out(Flag_H) <= '0'; + F_Out(Flag_N) <= '0'; + F_Out(Flag_X) <= Q_t(3); + F_Out(Flag_Y) <= Q_t(5); + if Q_t(7 downto 0) = "00000000" then + F_Out(Flag_Z) <= '1'; + else + F_Out(Flag_Z) <= '0'; + end if; + F_Out(Flag_S) <= Q_t(7); + F_Out(Flag_P) <= not (Q_t(0) xor Q_t(1) xor Q_t(2) xor Q_t(3) xor + Q_t(4) xor Q_t(5) xor Q_t(6) xor Q_t(7)); + when "1001" => + -- BIT + Q_t(7 downto 0) := BusB and BitMask; + F_Out(Flag_S) <= Q_t(7); + if Q_t(7 downto 0) = "00000000" then + F_Out(Flag_Z) <= '1'; + F_Out(Flag_P) <= '1'; + else + F_Out(Flag_Z) <= '0'; + F_Out(Flag_P) <= '0'; + end if; + F_Out(Flag_H) <= '1'; + F_Out(Flag_N) <= '0'; + F_Out(Flag_X) <= '0'; + F_Out(Flag_Y) <= '0'; + if IR(2 downto 0) /= "110" then + F_Out(Flag_X) <= BusB(3); + F_Out(Flag_Y) <= BusB(5); + end if; + when "1010" => + -- SET + Q_t(7 downto 0) := BusB or BitMask; + when "1011" => + -- RES + Q_t(7 downto 0) := BusB and not BitMask; + when "1000" => + -- ROT + case IR(5 downto 3) is + when "000" => -- RLC + Q_t(7 downto 1) := BusA(6 downto 0); + Q_t(0) := BusA(7); + F_Out(Flag_C) <= BusA(7); + when "010" => -- RL + Q_t(7 downto 1) := BusA(6 downto 0); + Q_t(0) := F_In(Flag_C); + F_Out(Flag_C) <= BusA(7); + when "001" => -- RRC + Q_t(6 downto 0) := BusA(7 downto 1); + Q_t(7) := BusA(0); + F_Out(Flag_C) <= BusA(0); + when "011" => -- RR + Q_t(6 downto 0) := BusA(7 downto 1); + Q_t(7) := F_In(Flag_C); + F_Out(Flag_C) <= BusA(0); + when "100" => -- SLA + Q_t(7 downto 1) := BusA(6 downto 0); + Q_t(0) := '0'; + F_Out(Flag_C) <= BusA(7); + when "110" => -- SLL (Undocumented) / SWAP + if Mode = 3 then + Q_t(7 downto 4) := BusA(3 downto 0); + Q_t(3 downto 0) := BusA(7 downto 4); + F_Out(Flag_C) <= '0'; + else + Q_t(7 downto 1) := BusA(6 downto 0); + Q_t(0) := '1'; + F_Out(Flag_C) <= BusA(7); + end if; + when "101" => -- SRA + Q_t(6 downto 0) := BusA(7 downto 1); + Q_t(7) := BusA(7); + F_Out(Flag_C) <= BusA(0); + when others => -- SRL + Q_t(6 downto 0) := BusA(7 downto 1); + Q_t(7) := '0'; + F_Out(Flag_C) <= BusA(0); + end case; + F_Out(Flag_H) <= '0'; + F_Out(Flag_N) <= '0'; + F_Out(Flag_X) <= Q_t(3); + F_Out(Flag_Y) <= Q_t(5); + F_Out(Flag_S) <= Q_t(7); + if Q_t(7 downto 0) = "00000000" then + F_Out(Flag_Z) <= '1'; + else + F_Out(Flag_Z) <= '0'; + end if; + F_Out(Flag_P) <= not (Q_t(0) xor Q_t(1) xor Q_t(2) xor Q_t(3) xor + Q_t(4) xor Q_t(5) xor Q_t(6) xor Q_t(7)); + if ISet = "00" then + F_Out(Flag_P) <= F_In(Flag_P); + F_Out(Flag_S) <= F_In(Flag_S); + F_Out(Flag_Z) <= F_In(Flag_Z); + end if; + when others => + null; + end case; + Q <= Q_t; + end process; +end; diff --git a/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/cpu/T80_MCode.vhd b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/cpu/T80_MCode.vhd new file mode 100644 index 00000000..43cea1b5 --- /dev/null +++ b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/cpu/T80_MCode.vhd @@ -0,0 +1,1944 @@ +-- **** +-- T80(b) core. In an effort to merge and maintain bug fixes .... +-- +-- +-- Ver 300 started tidyup +-- MikeJ March 2005 +-- Latest version from www.fpgaarcade.com (original www.opencores.org) +-- +-- **** +-- +-- Z80 compatible microprocessor core +-- +-- Version : 0242 +-- +-- Copyright (c) 2001-2002 Daniel Wallner (jesus@opencores.org) +-- +-- All rights reserved +-- +-- Redistribution and use in source and synthezised forms, with or without +-- modification, are permitted provided that the following conditions are met: +-- +-- Redistributions of source code must retain the above copyright notice, +-- this list of conditions and the following disclaimer. +-- +-- Redistributions in synthesized form must reproduce the above copyright +-- notice, this list of conditions and the following disclaimer in the +-- documentation and/or other materials provided with the distribution. +-- +-- Neither the name of the author nor the names of other contributors may +-- be used to endorse or promote products derived from this software without +-- specific prior written permission. +-- +-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +-- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +-- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +-- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE +-- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +-- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +-- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +-- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +-- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +-- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +-- POSSIBILITY OF SUCH DAMAGE. +-- +-- Please report bugs to the author, but before you do so, please +-- make sure that this is not a derivative work and that +-- you have the latest version of this file. +-- +-- The latest version of this file can be found at: +-- http://www.opencores.org/cvsweb.shtml/t80/ +-- +-- Limitations : +-- +-- File history : +-- +-- 0208 : First complete release +-- +-- 0211 : Fixed IM 1 +-- +-- 0214 : Fixed mostly flags, only the block instructions now fail the zex regression test +-- +-- 0235 : Added IM 2 fix by Mike Johnson +-- +-- 0238 : Added NoRead signal +-- +-- 0238b: Fixed instruction timing for POP and DJNZ +-- +-- 0240 : Added (IX/IY+d) states, removed op-codes from mode 2 and added all remaining mode 3 op-codes + +-- 0240mj1 fix for HL inc/dec for INI, IND, INIR, INDR, OUTI, OUTD, OTIR, OTDR +-- +-- 0242 : Fixed I/O instruction timing, cleanup +-- + +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.numeric_std.all; +use work.T80_Pack.all; + +entity T80_MCode is + generic( + Mode : integer := 0; + Flag_C : integer := 0; + Flag_N : integer := 1; + Flag_P : integer := 2; + Flag_X : integer := 3; + Flag_H : integer := 4; + Flag_Y : integer := 5; + Flag_Z : integer := 6; + Flag_S : integer := 7 + ); + port( + IR : in std_logic_vector(7 downto 0); + ISet : in std_logic_vector(1 downto 0); + MCycle : in std_logic_vector(2 downto 0); + F : in std_logic_vector(7 downto 0); + NMICycle : in std_logic; + IntCycle : in std_logic; + MCycles : out std_logic_vector(2 downto 0); + TStates : out std_logic_vector(2 downto 0); + Prefix : out std_logic_vector(1 downto 0); -- None,BC,ED,DD/FD + Inc_PC : out std_logic; + Inc_WZ : out std_logic; + IncDec_16 : out std_logic_vector(3 downto 0); -- BC,DE,HL,SP 0 is inc + Read_To_Reg : out std_logic; + Read_To_Acc : out std_logic; + Set_BusA_To : out std_logic_vector(3 downto 0); -- B,C,D,E,H,L,DI/DB,A,SP(L),SP(M),0,F + Set_BusB_To : out std_logic_vector(3 downto 0); -- B,C,D,E,H,L,DI,A,SP(L),SP(M),1,F,PC(L),PC(M),0 + ALU_Op : out std_logic_vector(3 downto 0); + -- ADD, ADC, SUB, SBC, AND, XOR, OR, CP, ROT, BIT, SET, RES, DAA, RLD, RRD, None + Save_ALU : out std_logic; + PreserveC : out std_logic; + Arith16 : out std_logic; + Set_Addr_To : out std_logic_vector(2 downto 0); -- aNone,aXY,aIOA,aSP,aBC,aDE,aZI + IORQ : out std_logic; + Jump : out std_logic; + JumpE : out std_logic; + JumpXY : out std_logic; + Call : out std_logic; + RstP : out std_logic; + LDZ : out std_logic; + LDW : out std_logic; + LDSPHL : out std_logic; + Special_LD : out std_logic_vector(2 downto 0); -- A,I;A,R;I,A;R,A;None + ExchangeDH : out std_logic; + ExchangeRp : out std_logic; + ExchangeAF : out std_logic; + ExchangeRS : out std_logic; + I_DJNZ : out std_logic; + I_CPL : out std_logic; + I_CCF : out std_logic; + I_SCF : out std_logic; + I_RETN : out std_logic; + I_BT : out std_logic; + I_BC : out std_logic; + I_BTR : out std_logic; + I_RLD : out std_logic; + I_RRD : out std_logic; + I_INRC : out std_logic; + SetDI : out std_logic; + SetEI : out std_logic; + IMode : out std_logic_vector(1 downto 0); + Halt : out std_logic; + NoRead : out std_logic; + Write : out std_logic + ); +end T80_MCode; + +architecture rtl of T80_MCode is + + constant aNone : std_logic_vector(2 downto 0) := "111"; + constant aBC : std_logic_vector(2 downto 0) := "000"; + constant aDE : std_logic_vector(2 downto 0) := "001"; + constant aXY : std_logic_vector(2 downto 0) := "010"; + constant aIOA : std_logic_vector(2 downto 0) := "100"; + constant aSP : std_logic_vector(2 downto 0) := "101"; + constant aZI : std_logic_vector(2 downto 0) := "110"; + + function is_cc_true( + F : std_logic_vector(7 downto 0); + cc : bit_vector(2 downto 0) + ) return boolean is + begin + if Mode = 3 then + case cc is + when "000" => return F(7) = '0'; -- NZ + when "001" => return F(7) = '1'; -- Z + when "010" => return F(4) = '0'; -- NC + when "011" => return F(4) = '1'; -- C + when "100" => return false; + when "101" => return false; + when "110" => return false; + when "111" => return false; + end case; + else + case cc is + when "000" => return F(6) = '0'; -- NZ + when "001" => return F(6) = '1'; -- Z + when "010" => return F(0) = '0'; -- NC + when "011" => return F(0) = '1'; -- C + when "100" => return F(2) = '0'; -- PO + when "101" => return F(2) = '1'; -- PE + when "110" => return F(7) = '0'; -- P + when "111" => return F(7) = '1'; -- M + end case; + end if; + end; + +begin + + process (IR, ISet, MCycle, F, NMICycle, IntCycle) + variable DDD : std_logic_vector(2 downto 0); + variable SSS : std_logic_vector(2 downto 0); + variable DPair : std_logic_vector(1 downto 0); + variable IRB : bit_vector(7 downto 0); + begin + DDD := IR(5 downto 3); + SSS := IR(2 downto 0); + DPair := IR(5 downto 4); + IRB := to_bitvector(IR); + + MCycles <= "001"; + if MCycle = "001" then + TStates <= "100"; + else + TStates <= "011"; + end if; + Prefix <= "00"; + Inc_PC <= '0'; + Inc_WZ <= '0'; + IncDec_16 <= "0000"; + Read_To_Acc <= '0'; + Read_To_Reg <= '0'; + Set_BusB_To <= "0000"; + Set_BusA_To <= "0000"; + ALU_Op <= "0" & IR(5 downto 3); + Save_ALU <= '0'; + PreserveC <= '0'; + Arith16 <= '0'; + IORQ <= '0'; + Set_Addr_To <= aNone; + Jump <= '0'; + JumpE <= '0'; + JumpXY <= '0'; + Call <= '0'; + RstP <= '0'; + LDZ <= '0'; + LDW <= '0'; + LDSPHL <= '0'; + Special_LD <= "000"; + ExchangeDH <= '0'; + ExchangeRp <= '0'; + ExchangeAF <= '0'; + ExchangeRS <= '0'; + I_DJNZ <= '0'; + I_CPL <= '0'; + I_CCF <= '0'; + I_SCF <= '0'; + I_RETN <= '0'; + I_BT <= '0'; + I_BC <= '0'; + I_BTR <= '0'; + I_RLD <= '0'; + I_RRD <= '0'; + I_INRC <= '0'; + SetDI <= '0'; + SetEI <= '0'; + IMode <= "11"; + Halt <= '0'; + NoRead <= '0'; + Write <= '0'; + + case ISet is + when "00" => + +------------------------------------------------------------------------------ +-- +-- Unprefixed instructions +-- +------------------------------------------------------------------------------ + + case IRB is +-- 8 BIT LOAD GROUP + when "01000000"|"01000001"|"01000010"|"01000011"|"01000100"|"01000101"|"01000111" + |"01001000"|"01001001"|"01001010"|"01001011"|"01001100"|"01001101"|"01001111" + |"01010000"|"01010001"|"01010010"|"01010011"|"01010100"|"01010101"|"01010111" + |"01011000"|"01011001"|"01011010"|"01011011"|"01011100"|"01011101"|"01011111" + |"01100000"|"01100001"|"01100010"|"01100011"|"01100100"|"01100101"|"01100111" + |"01101000"|"01101001"|"01101010"|"01101011"|"01101100"|"01101101"|"01101111" + |"01111000"|"01111001"|"01111010"|"01111011"|"01111100"|"01111101"|"01111111" => + -- LD r,r' + Set_BusB_To(2 downto 0) <= SSS; + ExchangeRp <= '1'; + Set_BusA_To(2 downto 0) <= DDD; + Read_To_Reg <= '1'; + when "00000110"|"00001110"|"00010110"|"00011110"|"00100110"|"00101110"|"00111110" => + -- LD r,n + MCycles <= "010"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + Set_BusA_To(2 downto 0) <= DDD; + Read_To_Reg <= '1'; + when others => null; + end case; + when "01000110"|"01001110"|"01010110"|"01011110"|"01100110"|"01101110"|"01111110" => + -- LD r,(HL) + MCycles <= "010"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aXY; + when 2 => + Set_BusA_To(2 downto 0) <= DDD; + Read_To_Reg <= '1'; + when others => null; + end case; + when "01110000"|"01110001"|"01110010"|"01110011"|"01110100"|"01110101"|"01110111" => + -- LD (HL),r + MCycles <= "010"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aXY; + Set_BusB_To(2 downto 0) <= SSS; + Set_BusB_To(3) <= '0'; + when 2 => + Write <= '1'; + when others => null; + end case; + when "00110110" => + -- LD (HL),n + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + Set_Addr_To <= aXY; + Set_BusB_To(2 downto 0) <= SSS; + Set_BusB_To(3) <= '0'; + when 3 => + Write <= '1'; + when others => null; + end case; + when "00001010" => + -- LD A,(BC) + MCycles <= "010"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aBC; + when 2 => + Read_To_Acc <= '1'; + when others => null; + end case; + when "00011010" => + -- LD A,(DE) + MCycles <= "010"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aDE; + when 2 => + Read_To_Acc <= '1'; + when others => null; + end case; + when "00111010" => + if Mode = 3 then + -- LDD A,(HL) + MCycles <= "010"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aXY; + when 2 => + Read_To_Acc <= '1'; + IncDec_16 <= "1110"; + when others => null; + end case; + else + -- LD A,(nn) + MCycles <= "100"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + LDZ <= '1'; + when 3 => + Set_Addr_To <= aZI; + Inc_PC <= '1'; + when 4 => + Read_To_Acc <= '1'; + when others => null; + end case; + end if; + when "00000010" => + -- LD (BC),A + MCycles <= "010"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aBC; + Set_BusB_To <= "0111"; + when 2 => + Write <= '1'; + when others => null; + end case; + when "00010010" => + -- LD (DE),A + MCycles <= "010"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aDE; + Set_BusB_To <= "0111"; + when 2 => + Write <= '1'; + when others => null; + end case; + when "00110010" => + if Mode = 3 then + -- LDD (HL),A + MCycles <= "010"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aXY; + Set_BusB_To <= "0111"; + when 2 => + Write <= '1'; + IncDec_16 <= "1110"; + when others => null; + end case; + else + -- LD (nn),A + MCycles <= "100"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + LDZ <= '1'; + when 3 => + Set_Addr_To <= aZI; + Inc_PC <= '1'; + Set_BusB_To <= "0111"; + when 4 => + Write <= '1'; + when others => null; + end case; + end if; + +-- 16 BIT LOAD GROUP + when "00000001"|"00010001"|"00100001"|"00110001" => + -- LD dd,nn + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + Read_To_Reg <= '1'; + if DPAIR = "11" then + Set_BusA_To(3 downto 0) <= "1000"; + else + Set_BusA_To(2 downto 1) <= DPAIR; + Set_BusA_To(0) <= '1'; + end if; + when 3 => + Inc_PC <= '1'; + Read_To_Reg <= '1'; + if DPAIR = "11" then + Set_BusA_To(3 downto 0) <= "1001"; + else + Set_BusA_To(2 downto 1) <= DPAIR; + Set_BusA_To(0) <= '0'; + end if; + when others => null; + end case; + when "00101010" => + if Mode = 3 then + -- LDI A,(HL) + MCycles <= "010"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aXY; + when 2 => + Read_To_Acc <= '1'; + IncDec_16 <= "0110"; + when others => null; + end case; + else + -- LD HL,(nn) + MCycles <= "101"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + LDZ <= '1'; + when 3 => + Set_Addr_To <= aZI; + Inc_PC <= '1'; + LDW <= '1'; + when 4 => + Set_BusA_To(2 downto 0) <= "101"; -- L + Read_To_Reg <= '1'; + Inc_WZ <= '1'; + Set_Addr_To <= aZI; + when 5 => + Set_BusA_To(2 downto 0) <= "100"; -- H + Read_To_Reg <= '1'; + when others => null; + end case; + end if; + when "00100010" => + if Mode = 3 then + -- LDI (HL),A + MCycles <= "010"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aXY; + Set_BusB_To <= "0111"; + when 2 => + Write <= '1'; + IncDec_16 <= "0110"; + when others => null; + end case; + else + -- LD (nn),HL + MCycles <= "101"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + LDZ <= '1'; + when 3 => + Set_Addr_To <= aZI; + Inc_PC <= '1'; + LDW <= '1'; + Set_BusB_To <= "0101"; -- L + when 4 => + Inc_WZ <= '1'; + Set_Addr_To <= aZI; + Write <= '1'; + Set_BusB_To <= "0100"; -- H + when 5 => + Write <= '1'; + when others => null; + end case; + end if; + when "11111001" => + -- LD SP,HL + TStates <= "110"; + LDSPHL <= '1'; + when "11000101"|"11010101"|"11100101"|"11110101" => + -- PUSH qq + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 1 => + TStates <= "101"; + IncDec_16 <= "1111"; + Set_Addr_TO <= aSP; + if DPAIR = "11" then + Set_BusB_To <= "0111"; + else + Set_BusB_To(2 downto 1) <= DPAIR; + Set_BusB_To(0) <= '0'; + Set_BusB_To(3) <= '0'; + end if; + when 2 => + IncDec_16 <= "1111"; + Set_Addr_To <= aSP; + if DPAIR = "11" then + Set_BusB_To <= "1011"; + else + Set_BusB_To(2 downto 1) <= DPAIR; + Set_BusB_To(0) <= '1'; + Set_BusB_To(3) <= '0'; + end if; + Write <= '1'; + when 3 => + Write <= '1'; + when others => null; + end case; + when "11000001"|"11010001"|"11100001"|"11110001" => + -- POP qq + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aSP; + when 2 => + IncDec_16 <= "0111"; + Set_Addr_To <= aSP; + Read_To_Reg <= '1'; + if DPAIR = "11" then + Set_BusA_To(3 downto 0) <= "1011"; + else + Set_BusA_To(2 downto 1) <= DPAIR; + Set_BusA_To(0) <= '1'; + end if; + when 3 => + IncDec_16 <= "0111"; + Read_To_Reg <= '1'; + if DPAIR = "11" then + Set_BusA_To(3 downto 0) <= "0111"; + else + Set_BusA_To(2 downto 1) <= DPAIR; + Set_BusA_To(0) <= '0'; + end if; + when others => null; + end case; + +-- EXCHANGE, BLOCK TRANSFER AND SEARCH GROUP + when "11101011" => + if Mode /= 3 then + -- EX DE,HL + ExchangeDH <= '1'; + end if; + when "00001000" => + if Mode = 3 then + -- LD (nn),SP + MCycles <= "101"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + LDZ <= '1'; + when 3 => + Set_Addr_To <= aZI; + Inc_PC <= '1'; + LDW <= '1'; + Set_BusB_To <= "1000"; + when 4 => + Inc_WZ <= '1'; + Set_Addr_To <= aZI; + Write <= '1'; + Set_BusB_To <= "1001"; + when 5 => + Write <= '1'; + when others => null; + end case; + elsif Mode < 2 then + -- EX AF,AF' + ExchangeAF <= '1'; + end if; + when "11011001" => + if Mode = 3 then + -- RETI + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_TO <= aSP; + when 2 => + IncDec_16 <= "0111"; + Set_Addr_To <= aSP; + LDZ <= '1'; + when 3 => + Jump <= '1'; + IncDec_16 <= "0111"; + I_RETN <= '1'; + SetEI <= '1'; + when others => null; + end case; + elsif Mode < 2 then + -- EXX + ExchangeRS <= '1'; + end if; + when "11100011" => + if Mode /= 3 then + -- EX (SP),HL + MCycles <= "101"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aSP; + when 2 => + Read_To_Reg <= '1'; + Set_BusA_To <= "0101"; + Set_BusB_To <= "0101"; + Set_Addr_To <= aSP; + when 3 => + IncDec_16 <= "0111"; + Set_Addr_To <= aSP; + TStates <= "100"; + Write <= '1'; + when 4 => + Read_To_Reg <= '1'; + Set_BusA_To <= "0100"; + Set_BusB_To <= "0100"; + Set_Addr_To <= aSP; + when 5 => + IncDec_16 <= "1111"; + TStates <= "101"; + Write <= '1'; + when others => null; + end case; + end if; + +-- 8 BIT ARITHMETIC AND LOGICAL GROUP + when "10000000"|"10000001"|"10000010"|"10000011"|"10000100"|"10000101"|"10000111" + |"10001000"|"10001001"|"10001010"|"10001011"|"10001100"|"10001101"|"10001111" + |"10010000"|"10010001"|"10010010"|"10010011"|"10010100"|"10010101"|"10010111" + |"10011000"|"10011001"|"10011010"|"10011011"|"10011100"|"10011101"|"10011111" + |"10100000"|"10100001"|"10100010"|"10100011"|"10100100"|"10100101"|"10100111" + |"10101000"|"10101001"|"10101010"|"10101011"|"10101100"|"10101101"|"10101111" + |"10110000"|"10110001"|"10110010"|"10110011"|"10110100"|"10110101"|"10110111" + |"10111000"|"10111001"|"10111010"|"10111011"|"10111100"|"10111101"|"10111111" => + -- ADD A,r + -- ADC A,r + -- SUB A,r + -- SBC A,r + -- AND A,r + -- OR A,r + -- XOR A,r + -- CP A,r + Set_BusB_To(2 downto 0) <= SSS; + Set_BusA_To(2 downto 0) <= "111"; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + when "10000110"|"10001110"|"10010110"|"10011110"|"10100110"|"10101110"|"10110110"|"10111110" => + -- ADD A,(HL) + -- ADC A,(HL) + -- SUB A,(HL) + -- SBC A,(HL) + -- AND A,(HL) + -- OR A,(HL) + -- XOR A,(HL) + -- CP A,(HL) + MCycles <= "010"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aXY; + when 2 => + Read_To_Reg <= '1'; + Save_ALU <= '1'; + Set_BusB_To(2 downto 0) <= SSS; + Set_BusA_To(2 downto 0) <= "111"; + when others => null; + end case; + when "11000110"|"11001110"|"11010110"|"11011110"|"11100110"|"11101110"|"11110110"|"11111110" => + -- ADD A,n + -- ADC A,n + -- SUB A,n + -- SBC A,n + -- AND A,n + -- OR A,n + -- XOR A,n + -- CP A,n + MCycles <= "010"; + if MCycle = "010" then + Inc_PC <= '1'; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + Set_BusB_To(2 downto 0) <= SSS; + Set_BusA_To(2 downto 0) <= "111"; + end if; + when "00000100"|"00001100"|"00010100"|"00011100"|"00100100"|"00101100"|"00111100" => + -- INC r + Set_BusB_To <= "1010"; + Set_BusA_To(2 downto 0) <= DDD; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + PreserveC <= '1'; + ALU_Op <= "0000"; + when "00110100" => + -- INC (HL) + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aXY; + when 2 => + TStates <= "100"; + Set_Addr_To <= aXY; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + PreserveC <= '1'; + ALU_Op <= "0000"; + Set_BusB_To <= "1010"; + Set_BusA_To(2 downto 0) <= DDD; + when 3 => + Write <= '1'; + when others => null; + end case; + when "00000101"|"00001101"|"00010101"|"00011101"|"00100101"|"00101101"|"00111101" => + -- DEC r + Set_BusB_To <= "1010"; + Set_BusA_To(2 downto 0) <= DDD; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + PreserveC <= '1'; + ALU_Op <= "0010"; + when "00110101" => + -- DEC (HL) + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aXY; + when 2 => + TStates <= "100"; + Set_Addr_To <= aXY; + ALU_Op <= "0010"; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + PreserveC <= '1'; + Set_BusB_To <= "1010"; + Set_BusA_To(2 downto 0) <= DDD; + when 3 => + Write <= '1'; + when others => null; + end case; + +-- GENERAL PURPOSE ARITHMETIC AND CPU CONTROL GROUPS + when "00100111" => + -- DAA + Set_BusA_To(2 downto 0) <= "111"; + Read_To_Reg <= '1'; + ALU_Op <= "1100"; + Save_ALU <= '1'; + when "00101111" => + -- CPL + I_CPL <= '1'; + when "00111111" => + -- CCF + I_CCF <= '1'; + when "00110111" => + -- SCF + I_SCF <= '1'; + when "00000000" => + if NMICycle = '1' then + -- NMI + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 1 => + TStates <= "101"; + IncDec_16 <= "1111"; + Set_Addr_To <= aSP; + Set_BusB_To <= "1101"; + when 2 => + TStates <= "100"; + Write <= '1'; + IncDec_16 <= "1111"; + Set_Addr_To <= aSP; + Set_BusB_To <= "1100"; + when 3 => + TStates <= "100"; + Write <= '1'; + when others => null; + end case; + elsif IntCycle = '1' then + -- INT (IM 2) + MCycles <= "101"; + case to_integer(unsigned(MCycle)) is + when 1 => + LDZ <= '1'; + TStates <= "101"; + IncDec_16 <= "1111"; + Set_Addr_To <= aSP; + Set_BusB_To <= "1101"; + when 2 => + TStates <= "100"; + Write <= '1'; + IncDec_16 <= "1111"; + Set_Addr_To <= aSP; + Set_BusB_To <= "1100"; + when 3 => + TStates <= "100"; + Write <= '1'; + when 4 => + Inc_PC <= '1'; + LDZ <= '1'; + when 5 => + Jump <= '1'; + when others => null; + end case; + else + -- NOP + end if; + when "01110110" => + -- HALT + Halt <= '1'; + when "11110011" => + -- DI + SetDI <= '1'; + when "11111011" => + -- EI + SetEI <= '1'; + +-- 16 BIT ARITHMETIC GROUP + when "00001001"|"00011001"|"00101001"|"00111001" => + -- ADD HL,ss + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 2 => + NoRead <= '1'; + ALU_Op <= "0000"; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + Set_BusA_To(2 downto 0) <= "101"; + case to_integer(unsigned(IR(5 downto 4))) is + when 0|1|2 => + Set_BusB_To(2 downto 1) <= IR(5 downto 4); + Set_BusB_To(0) <= '1'; + when others => + Set_BusB_To <= "1000"; + end case; + TStates <= "100"; + Arith16 <= '1'; + when 3 => + NoRead <= '1'; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + ALU_Op <= "0001"; + Set_BusA_To(2 downto 0) <= "100"; + case to_integer(unsigned(IR(5 downto 4))) is + when 0|1|2 => + Set_BusB_To(2 downto 1) <= IR(5 downto 4); + when others => + Set_BusB_To <= "1001"; + end case; + Arith16 <= '1'; + when others => + end case; + when "00000011"|"00010011"|"00100011"|"00110011" => + -- INC ss + TStates <= "110"; + IncDec_16(3 downto 2) <= "01"; + IncDec_16(1 downto 0) <= DPair; + when "00001011"|"00011011"|"00101011"|"00111011" => + -- DEC ss + TStates <= "110"; + IncDec_16(3 downto 2) <= "11"; + IncDec_16(1 downto 0) <= DPair; + +-- ROTATE AND SHIFT GROUP + when "00000111" + -- RLCA + |"00010111" + -- RLA + |"00001111" + -- RRCA + |"00011111" => + -- RRA + Set_BusA_To(2 downto 0) <= "111"; + ALU_Op <= "1000"; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + +-- JUMP GROUP + when "11000011" => + -- JP nn + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + LDZ <= '1'; + when 3 => + Inc_PC <= '1'; + Jump <= '1'; + when others => null; + end case; + when "11000010"|"11001010"|"11010010"|"11011010"|"11100010"|"11101010"|"11110010"|"11111010" => + if IR(5) = '1' and Mode = 3 then + case IRB(4 downto 3) is + when "00" => + -- LD ($FF00+C),A + MCycles <= "010"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aBC; + Set_BusB_To <= "0111"; + when 2 => + Write <= '1'; + IORQ <= '1'; + when others => + end case; + when "01" => + -- LD (nn),A + MCycles <= "100"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + LDZ <= '1'; + when 3 => + Set_Addr_To <= aZI; + Inc_PC <= '1'; + Set_BusB_To <= "0111"; + when 4 => + Write <= '1'; + when others => null; + end case; + when "10" => + -- LD A,($FF00+C) + MCycles <= "010"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aBC; + when 2 => + Read_To_Acc <= '1'; + IORQ <= '1'; + when others => + end case; + when "11" => + -- LD A,(nn) + MCycles <= "100"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + LDZ <= '1'; + when 3 => + Set_Addr_To <= aZI; + Inc_PC <= '1'; + when 4 => + Read_To_Acc <= '1'; + when others => null; + end case; + end case; + else + -- JP cc,nn + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + LDZ <= '1'; + when 3 => + Inc_PC <= '1'; + if is_cc_true(F, to_bitvector(IR(5 downto 3))) then + Jump <= '1'; + end if; + when others => null; + end case; + end if; + when "00011000" => + if Mode /= 2 then + -- JR e + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + when 3 => + NoRead <= '1'; + JumpE <= '1'; + TStates <= "101"; + when others => null; + end case; + end if; + when "00111000" => + if Mode /= 2 then + -- JR C,e + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + if F(Flag_C) = '0' then + MCycles <= "010"; + end if; + when 3 => + NoRead <= '1'; + JumpE <= '1'; + TStates <= "101"; + when others => null; + end case; + end if; + when "00110000" => + if Mode /= 2 then + -- JR NC,e + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + if F(Flag_C) = '1' then + MCycles <= "010"; + end if; + when 3 => + NoRead <= '1'; + JumpE <= '1'; + TStates <= "101"; + when others => null; + end case; + end if; + when "00101000" => + if Mode /= 2 then + -- JR Z,e + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + if F(Flag_Z) = '0' then + MCycles <= "010"; + end if; + when 3 => + NoRead <= '1'; + JumpE <= '1'; + TStates <= "101"; + when others => null; + end case; + end if; + when "00100000" => + if Mode /= 2 then + -- JR NZ,e + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + if F(Flag_Z) = '1' then + MCycles <= "010"; + end if; + when 3 => + NoRead <= '1'; + JumpE <= '1'; + TStates <= "101"; + when others => null; + end case; + end if; + when "11101001" => + -- JP (HL) + JumpXY <= '1'; + when "00010000" => + if Mode = 3 then + I_DJNZ <= '1'; + elsif Mode < 2 then + -- DJNZ,e + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 1 => + TStates <= "101"; + I_DJNZ <= '1'; + Set_BusB_To <= "1010"; + Set_BusA_To(2 downto 0) <= "000"; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + ALU_Op <= "0010"; + when 2 => + I_DJNZ <= '1'; + Inc_PC <= '1'; + when 3 => + NoRead <= '1'; + JumpE <= '1'; + TStates <= "101"; + when others => null; + end case; + end if; + +-- CALL AND RETURN GROUP + when "11001101" => + -- CALL nn + MCycles <= "101"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + LDZ <= '1'; + when 3 => + IncDec_16 <= "1111"; + Inc_PC <= '1'; + TStates <= "100"; + Set_Addr_To <= aSP; + LDW <= '1'; + Set_BusB_To <= "1101"; + when 4 => + Write <= '1'; + IncDec_16 <= "1111"; + Set_Addr_To <= aSP; + Set_BusB_To <= "1100"; + when 5 => + Write <= '1'; + Call <= '1'; + when others => null; + end case; + when "11000100"|"11001100"|"11010100"|"11011100"|"11100100"|"11101100"|"11110100"|"11111100" => + if IR(5) = '0' or Mode /= 3 then + -- CALL cc,nn + MCycles <= "101"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + LDZ <= '1'; + when 3 => + Inc_PC <= '1'; + LDW <= '1'; + if is_cc_true(F, to_bitvector(IR(5 downto 3))) then + IncDec_16 <= "1111"; + Set_Addr_TO <= aSP; + TStates <= "100"; + Set_BusB_To <= "1101"; + else + MCycles <= "011"; + end if; + when 4 => + Write <= '1'; + IncDec_16 <= "1111"; + Set_Addr_To <= aSP; + Set_BusB_To <= "1100"; + when 5 => + Write <= '1'; + Call <= '1'; + when others => null; + end case; + end if; + when "11001001" => + -- RET + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 1 => + TStates <= "101"; + Set_Addr_TO <= aSP; + when 2 => + IncDec_16 <= "0111"; + Set_Addr_To <= aSP; + LDZ <= '1'; + when 3 => + Jump <= '1'; + IncDec_16 <= "0111"; + when others => null; + end case; + when "11000000"|"11001000"|"11010000"|"11011000"|"11100000"|"11101000"|"11110000"|"11111000" => + if IR(5) = '1' and Mode = 3 then + case IRB(4 downto 3) is + when "00" => + -- LD ($FF00+nn),A + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + Set_Addr_To <= aIOA; + Set_BusB_To <= "0111"; + when 3 => + Write <= '1'; + when others => null; + end case; + when "01" => + -- ADD SP,n + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 2 => + ALU_Op <= "0000"; + Inc_PC <= '1'; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + Set_BusA_To <= "1000"; + Set_BusB_To <= "0110"; + when 3 => + NoRead <= '1'; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + ALU_Op <= "0001"; + Set_BusA_To <= "1001"; + Set_BusB_To <= "1110"; -- Incorrect unsigned !!!!!!!!!!!!!!!!!!!!! + when others => + end case; + when "10" => + -- LD A,($FF00+nn) + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + Set_Addr_To <= aIOA; + when 3 => + Read_To_Acc <= '1'; + when others => null; + end case; + when "11" => + -- LD HL,SP+n -- Not correct !!!!!!!!!!!!!!!!!!! + MCycles <= "101"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + LDZ <= '1'; + when 3 => + Set_Addr_To <= aZI; + Inc_PC <= '1'; + LDW <= '1'; + when 4 => + Set_BusA_To(2 downto 0) <= "101"; -- L + Read_To_Reg <= '1'; + Inc_WZ <= '1'; + Set_Addr_To <= aZI; + when 5 => + Set_BusA_To(2 downto 0) <= "100"; -- H + Read_To_Reg <= '1'; + when others => null; + end case; + end case; + else + -- RET cc + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 1 => + if is_cc_true(F, to_bitvector(IR(5 downto 3))) then + Set_Addr_TO <= aSP; + else + MCycles <= "001"; + end if; + TStates <= "101"; + when 2 => + IncDec_16 <= "0111"; + Set_Addr_To <= aSP; + LDZ <= '1'; + when 3 => + Jump <= '1'; + IncDec_16 <= "0111"; + when others => null; + end case; + end if; + when "11000111"|"11001111"|"11010111"|"11011111"|"11100111"|"11101111"|"11110111"|"11111111" => + -- RST p + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 1 => + TStates <= "101"; + IncDec_16 <= "1111"; + Set_Addr_To <= aSP; + Set_BusB_To <= "1101"; + when 2 => + Write <= '1'; + IncDec_16 <= "1111"; + Set_Addr_To <= aSP; + Set_BusB_To <= "1100"; + when 3 => + Write <= '1'; + RstP <= '1'; + when others => null; + end case; + +-- INPUT AND OUTPUT GROUP + when "11011011" => + if Mode /= 3 then + -- IN A,(n) + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + Set_Addr_To <= aIOA; + when 3 => + Read_To_Acc <= '1'; + IORQ <= '1'; + when others => null; + end case; + end if; + when "11010011" => + if Mode /= 3 then + -- OUT (n),A + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + Set_Addr_To <= aIOA; + Set_BusB_To <= "0111"; + when 3 => + Write <= '1'; + IORQ <= '1'; + when others => null; + end case; + end if; + +------------------------------------------------------------------------------ +------------------------------------------------------------------------------ +-- MULTIBYTE INSTRUCTIONS +------------------------------------------------------------------------------ +------------------------------------------------------------------------------ + + when "11001011" => + if Mode /= 2 then + Prefix <= "01"; + end if; + + when "11101101" => + if Mode < 2 then + Prefix <= "10"; + end if; + + when "11011101"|"11111101" => + if Mode < 2 then + Prefix <= "11"; + end if; + + end case; + + when "01" => + +------------------------------------------------------------------------------ +-- +-- CB prefixed instructions +-- +------------------------------------------------------------------------------ + + Set_BusA_To(2 downto 0) <= IR(2 downto 0); + Set_BusB_To(2 downto 0) <= IR(2 downto 0); + + case IRB is + when "00000000"|"00000001"|"00000010"|"00000011"|"00000100"|"00000101"|"00000111" + |"00010000"|"00010001"|"00010010"|"00010011"|"00010100"|"00010101"|"00010111" + |"00001000"|"00001001"|"00001010"|"00001011"|"00001100"|"00001101"|"00001111" + |"00011000"|"00011001"|"00011010"|"00011011"|"00011100"|"00011101"|"00011111" + |"00100000"|"00100001"|"00100010"|"00100011"|"00100100"|"00100101"|"00100111" + |"00101000"|"00101001"|"00101010"|"00101011"|"00101100"|"00101101"|"00101111" + |"00110000"|"00110001"|"00110010"|"00110011"|"00110100"|"00110101"|"00110111" + |"00111000"|"00111001"|"00111010"|"00111011"|"00111100"|"00111101"|"00111111" => + -- RLC r + -- RL r + -- RRC r + -- RR r + -- SLA r + -- SRA r + -- SRL r + -- SLL r (Undocumented) / SWAP r + if MCycle = "001" then + ALU_Op <= "1000"; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + end if; + when "00000110"|"00010110"|"00001110"|"00011110"|"00101110"|"00111110"|"00100110"|"00110110" => + -- RLC (HL) + -- RL (HL) + -- RRC (HL) + -- RR (HL) + -- SRA (HL) + -- SRL (HL) + -- SLA (HL) + -- SLL (HL) (Undocumented) / SWAP (HL) + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 1 | 7 => + Set_Addr_To <= aXY; + when 2 => + ALU_Op <= "1000"; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + Set_Addr_To <= aXY; + TStates <= "100"; + when 3 => + Write <= '1'; + when others => + end case; + when "01000000"|"01000001"|"01000010"|"01000011"|"01000100"|"01000101"|"01000111" + |"01001000"|"01001001"|"01001010"|"01001011"|"01001100"|"01001101"|"01001111" + |"01010000"|"01010001"|"01010010"|"01010011"|"01010100"|"01010101"|"01010111" + |"01011000"|"01011001"|"01011010"|"01011011"|"01011100"|"01011101"|"01011111" + |"01100000"|"01100001"|"01100010"|"01100011"|"01100100"|"01100101"|"01100111" + |"01101000"|"01101001"|"01101010"|"01101011"|"01101100"|"01101101"|"01101111" + |"01110000"|"01110001"|"01110010"|"01110011"|"01110100"|"01110101"|"01110111" + |"01111000"|"01111001"|"01111010"|"01111011"|"01111100"|"01111101"|"01111111" => + -- BIT b,r + if MCycle = "001" then + Set_BusB_To(2 downto 0) <= IR(2 downto 0); + ALU_Op <= "1001"; + end if; + when "01000110"|"01001110"|"01010110"|"01011110"|"01100110"|"01101110"|"01110110"|"01111110" => + -- BIT b,(HL) + MCycles <= "010"; + case to_integer(unsigned(MCycle)) is + when 1 | 7=> + Set_Addr_To <= aXY; + when 2 => + ALU_Op <= "1001"; + TStates <= "100"; + when others => null; + end case; + when "11000000"|"11000001"|"11000010"|"11000011"|"11000100"|"11000101"|"11000111" + |"11001000"|"11001001"|"11001010"|"11001011"|"11001100"|"11001101"|"11001111" + |"11010000"|"11010001"|"11010010"|"11010011"|"11010100"|"11010101"|"11010111" + |"11011000"|"11011001"|"11011010"|"11011011"|"11011100"|"11011101"|"11011111" + |"11100000"|"11100001"|"11100010"|"11100011"|"11100100"|"11100101"|"11100111" + |"11101000"|"11101001"|"11101010"|"11101011"|"11101100"|"11101101"|"11101111" + |"11110000"|"11110001"|"11110010"|"11110011"|"11110100"|"11110101"|"11110111" + |"11111000"|"11111001"|"11111010"|"11111011"|"11111100"|"11111101"|"11111111" => + -- SET b,r + if MCycle = "001" then + ALU_Op <= "1010"; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + end if; + when "11000110"|"11001110"|"11010110"|"11011110"|"11100110"|"11101110"|"11110110"|"11111110" => + -- SET b,(HL) + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 1 | 7=> + Set_Addr_To <= aXY; + when 2 => + ALU_Op <= "1010"; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + Set_Addr_To <= aXY; + TStates <= "100"; + when 3 => + Write <= '1'; + when others => null; + end case; + when "10000000"|"10000001"|"10000010"|"10000011"|"10000100"|"10000101"|"10000111" + |"10001000"|"10001001"|"10001010"|"10001011"|"10001100"|"10001101"|"10001111" + |"10010000"|"10010001"|"10010010"|"10010011"|"10010100"|"10010101"|"10010111" + |"10011000"|"10011001"|"10011010"|"10011011"|"10011100"|"10011101"|"10011111" + |"10100000"|"10100001"|"10100010"|"10100011"|"10100100"|"10100101"|"10100111" + |"10101000"|"10101001"|"10101010"|"10101011"|"10101100"|"10101101"|"10101111" + |"10110000"|"10110001"|"10110010"|"10110011"|"10110100"|"10110101"|"10110111" + |"10111000"|"10111001"|"10111010"|"10111011"|"10111100"|"10111101"|"10111111" => + -- RES b,r + if MCycle = "001" then + ALU_Op <= "1011"; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + end if; + when "10000110"|"10001110"|"10010110"|"10011110"|"10100110"|"10101110"|"10110110"|"10111110" => + -- RES b,(HL) + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 1 | 7 => + Set_Addr_To <= aXY; + when 2 => + ALU_Op <= "1011"; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + Set_Addr_To <= aXY; + TStates <= "100"; + when 3 => + Write <= '1'; + when others => null; + end case; + end case; + + when others => + +------------------------------------------------------------------------------ +-- +-- ED prefixed instructions +-- +------------------------------------------------------------------------------ + + case IRB is + when "00000000"|"00000001"|"00000010"|"00000011"|"00000100"|"00000101"|"00000110"|"00000111" + |"00001000"|"00001001"|"00001010"|"00001011"|"00001100"|"00001101"|"00001110"|"00001111" + |"00010000"|"00010001"|"00010010"|"00010011"|"00010100"|"00010101"|"00010110"|"00010111" + |"00011000"|"00011001"|"00011010"|"00011011"|"00011100"|"00011101"|"00011110"|"00011111" + |"00100000"|"00100001"|"00100010"|"00100011"|"00100100"|"00100101"|"00100110"|"00100111" + |"00101000"|"00101001"|"00101010"|"00101011"|"00101100"|"00101101"|"00101110"|"00101111" + |"00110000"|"00110001"|"00110010"|"00110011"|"00110100"|"00110101"|"00110110"|"00110111" + |"00111000"|"00111001"|"00111010"|"00111011"|"00111100"|"00111101"|"00111110"|"00111111" + + + |"10000000"|"10000001"|"10000010"|"10000011"|"10000100"|"10000101"|"10000110"|"10000111" + |"10001000"|"10001001"|"10001010"|"10001011"|"10001100"|"10001101"|"10001110"|"10001111" + |"10010000"|"10010001"|"10010010"|"10010011"|"10010100"|"10010101"|"10010110"|"10010111" + |"10011000"|"10011001"|"10011010"|"10011011"|"10011100"|"10011101"|"10011110"|"10011111" + | "10100100"|"10100101"|"10100110"|"10100111" + | "10101100"|"10101101"|"10101110"|"10101111" + | "10110100"|"10110101"|"10110110"|"10110111" + | "10111100"|"10111101"|"10111110"|"10111111" + |"11000000"|"11000001"|"11000010"|"11000011"|"11000100"|"11000101"|"11000110"|"11000111" + |"11001000"|"11001001"|"11001010"|"11001011"|"11001100"|"11001101"|"11001110"|"11001111" + |"11010000"|"11010001"|"11010010"|"11010011"|"11010100"|"11010101"|"11010110"|"11010111" + |"11011000"|"11011001"|"11011010"|"11011011"|"11011100"|"11011101"|"11011110"|"11011111" + |"11100000"|"11100001"|"11100010"|"11100011"|"11100100"|"11100101"|"11100110"|"11100111" + |"11101000"|"11101001"|"11101010"|"11101011"|"11101100"|"11101101"|"11101110"|"11101111" + |"11110000"|"11110001"|"11110010"|"11110011"|"11110100"|"11110101"|"11110110"|"11110111" + |"11111000"|"11111001"|"11111010"|"11111011"|"11111100"|"11111101"|"11111110"|"11111111" => + null; -- NOP, undocumented + when "01111110"|"01111111" => + -- NOP, undocumented + null; +-- 8 BIT LOAD GROUP + when "01010111" => + -- LD A,I + Special_LD <= "100"; + TStates <= "101"; + when "01011111" => + -- LD A,R + Special_LD <= "101"; + TStates <= "101"; + when "01000111" => + -- LD I,A + Special_LD <= "110"; + TStates <= "101"; + when "01001111" => + -- LD R,A + Special_LD <= "111"; + TStates <= "101"; +-- 16 BIT LOAD GROUP + when "01001011"|"01011011"|"01101011"|"01111011" => + -- LD dd,(nn) + MCycles <= "101"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + LDZ <= '1'; + when 3 => + Set_Addr_To <= aZI; + Inc_PC <= '1'; + LDW <= '1'; + when 4 => + Read_To_Reg <= '1'; + if IR(5 downto 4) = "11" then + Set_BusA_To <= "1000"; + else + Set_BusA_To(2 downto 1) <= IR(5 downto 4); + Set_BusA_To(0) <= '1'; + end if; + Inc_WZ <= '1'; + Set_Addr_To <= aZI; + when 5 => + Read_To_Reg <= '1'; + if IR(5 downto 4) = "11" then + Set_BusA_To <= "1001"; + else + Set_BusA_To(2 downto 1) <= IR(5 downto 4); + Set_BusA_To(0) <= '0'; + end if; + when others => null; + end case; + when "01000011"|"01010011"|"01100011"|"01110011" => + -- LD (nn),dd + MCycles <= "101"; + case to_integer(unsigned(MCycle)) is + when 2 => + Inc_PC <= '1'; + LDZ <= '1'; + when 3 => + Set_Addr_To <= aZI; + Inc_PC <= '1'; + LDW <= '1'; + if IR(5 downto 4) = "11" then + Set_BusB_To <= "1000"; + else + Set_BusB_To(2 downto 1) <= IR(5 downto 4); + Set_BusB_To(0) <= '1'; + Set_BusB_To(3) <= '0'; + end if; + when 4 => + Inc_WZ <= '1'; + Set_Addr_To <= aZI; + Write <= '1'; + if IR(5 downto 4) = "11" then + Set_BusB_To <= "1001"; + else + Set_BusB_To(2 downto 1) <= IR(5 downto 4); + Set_BusB_To(0) <= '0'; + Set_BusB_To(3) <= '0'; + end if; + when 5 => + Write <= '1'; + when others => null; + end case; + when "10100000" | "10101000" | "10110000" | "10111000" => + -- LDI, LDD, LDIR, LDDR + MCycles <= "100"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aXY; + IncDec_16 <= "1100"; -- BC + when 2 => + Set_BusB_To <= "0110"; + Set_BusA_To(2 downto 0) <= "111"; + ALU_Op <= "0000"; + Set_Addr_To <= aDE; + if IR(3) = '0' then + IncDec_16 <= "0110"; -- IX + else + IncDec_16 <= "1110"; + end if; + when 3 => + I_BT <= '1'; + TStates <= "101"; + Write <= '1'; + if IR(3) = '0' then + IncDec_16 <= "0101"; -- DE + else + IncDec_16 <= "1101"; + end if; + when 4 => + NoRead <= '1'; + TStates <= "101"; + when others => null; + end case; + when "10100001" | "10101001" | "10110001" | "10111001" => + -- CPI, CPD, CPIR, CPDR + MCycles <= "100"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aXY; + IncDec_16 <= "1100"; -- BC + when 2 => + Set_BusB_To <= "0110"; + Set_BusA_To(2 downto 0) <= "111"; + ALU_Op <= "0111"; + Save_ALU <= '1'; + PreserveC <= '1'; + if IR(3) = '0' then + IncDec_16 <= "0110"; + else + IncDec_16 <= "1110"; + end if; + when 3 => + NoRead <= '1'; + I_BC <= '1'; + TStates <= "101"; + when 4 => + NoRead <= '1'; + TStates <= "101"; + when others => null; + end case; + when "01000100"|"01001100"|"01010100"|"01011100"|"01100100"|"01101100"|"01110100"|"01111100" => + -- NEG + Alu_OP <= "0010"; + Set_BusB_To <= "0111"; + Set_BusA_To <= "1010"; + Read_To_Acc <= '1'; + Save_ALU <= '1'; + when "01000110"|"01001110"|"01100110"|"01101110" => + -- IM 0 + IMode <= "00"; + when "01010110"|"01110110" => + -- IM 1 + IMode <= "01"; + when "01011110"|"01110111" => + -- IM 2 + IMode <= "10"; +-- 16 bit arithmetic + when "01001010"|"01011010"|"01101010"|"01111010" => + -- ADC HL,ss + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 2 => + NoRead <= '1'; + ALU_Op <= "0001"; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + Set_BusA_To(2 downto 0) <= "101"; + case to_integer(unsigned(IR(5 downto 4))) is + when 0|1|2 => + Set_BusB_To(2 downto 1) <= IR(5 downto 4); + Set_BusB_To(0) <= '1'; + when others => + Set_BusB_To <= "1000"; + end case; + TStates <= "100"; + when 3 => + NoRead <= '1'; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + ALU_Op <= "0001"; + Set_BusA_To(2 downto 0) <= "100"; + case to_integer(unsigned(IR(5 downto 4))) is + when 0|1|2 => + Set_BusB_To(2 downto 1) <= IR(5 downto 4); + Set_BusB_To(0) <= '0'; + when others => + Set_BusB_To <= "1001"; + end case; + when others => + end case; + when "01000010"|"01010010"|"01100010"|"01110010" => + -- SBC HL,ss + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 2 => + NoRead <= '1'; + ALU_Op <= "0011"; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + Set_BusA_To(2 downto 0) <= "101"; + case to_integer(unsigned(IR(5 downto 4))) is + when 0|1|2 => + Set_BusB_To(2 downto 1) <= IR(5 downto 4); + Set_BusB_To(0) <= '1'; + when others => + Set_BusB_To <= "1000"; + end case; + TStates <= "100"; + when 3 => + NoRead <= '1'; + ALU_Op <= "0011"; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + Set_BusA_To(2 downto 0) <= "100"; + case to_integer(unsigned(IR(5 downto 4))) is + when 0|1|2 => + Set_BusB_To(2 downto 1) <= IR(5 downto 4); + when others => + Set_BusB_To <= "1001"; + end case; + when others => + end case; + when "01101111" => + -- RLD + MCycles <= "100"; + case to_integer(unsigned(MCycle)) is + when 2 => + NoRead <= '1'; + Set_Addr_To <= aXY; + when 3 => + Read_To_Reg <= '1'; + Set_BusB_To(2 downto 0) <= "110"; + Set_BusA_To(2 downto 0) <= "111"; + ALU_Op <= "1101"; + TStates <= "100"; + Set_Addr_To <= aXY; + Save_ALU <= '1'; + when 4 => + I_RLD <= '1'; + Write <= '1'; + when others => + end case; + when "01100111" => + -- RRD + MCycles <= "100"; + case to_integer(unsigned(MCycle)) is + when 2 => + Set_Addr_To <= aXY; + when 3 => + Read_To_Reg <= '1'; + Set_BusB_To(2 downto 0) <= "110"; + Set_BusA_To(2 downto 0) <= "111"; + ALU_Op <= "1110"; + TStates <= "100"; + Set_Addr_To <= aXY; + Save_ALU <= '1'; + when 4 => + I_RRD <= '1'; + Write <= '1'; + when others => + end case; + when "01000101"|"01001101"|"01010101"|"01011101"|"01100101"|"01101101"|"01110101"|"01111101" => + -- RETI, RETN + MCycles <= "011"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_TO <= aSP; + when 2 => + IncDec_16 <= "0111"; + Set_Addr_To <= aSP; + LDZ <= '1'; + when 3 => + Jump <= '1'; + IncDec_16 <= "0111"; + I_RETN <= '1'; + when others => null; + end case; + when "01000000"|"01001000"|"01010000"|"01011000"|"01100000"|"01101000"|"01110000"|"01111000" => + -- IN r,(C) + MCycles <= "010"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aBC; + when 2 => + IORQ <= '1'; + if IR(5 downto 3) /= "110" then + Read_To_Reg <= '1'; + Set_BusA_To(2 downto 0) <= IR(5 downto 3); + end if; + I_INRC <= '1'; + when others => + end case; + when "01000001"|"01001001"|"01010001"|"01011001"|"01100001"|"01101001"|"01110001"|"01111001" => + -- OUT (C),r + -- OUT (C),0 + MCycles <= "010"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aBC; + Set_BusB_To(2 downto 0) <= IR(5 downto 3); + if IR(5 downto 3) = "110" then + Set_BusB_To(3) <= '1'; + end if; + when 2 => + Write <= '1'; + IORQ <= '1'; + when others => + end case; + when "10100010" | "10101010" | "10110010" | "10111010" => + -- INI, IND, INIR, INDR + -- note B is decremented AFTER being put on the bus + MCycles <= "100"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= aBC; + Set_BusB_To <= "1010"; + Set_BusA_To <= "0000"; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + ALU_Op <= "0010"; + when 2 => + IORQ <= '1'; + Set_BusB_To <= "0110"; + Set_Addr_To <= aXY; + when 3 => + if IR(3) = '0' then + --IncDec_16 <= "0010"; + IncDec_16 <= "0110"; + else + --IncDec_16 <= "1010"; + IncDec_16 <= "1110"; + end if; + TStates <= "100"; + Write <= '1'; + I_BTR <= '1'; + when 4 => + NoRead <= '1'; + TStates <= "101"; + when others => null; + end case; + when "10100011" | "10101011" | "10110011" | "10111011" => + -- OUTI, OUTD, OTIR, OTDR + -- note B is decremented BEFORE being put on the bus. + -- mikej fix for hl inc + MCycles <= "100"; + case to_integer(unsigned(MCycle)) is + when 1 => + TStates <= "101"; + Set_Addr_To <= aXY; + Set_BusB_To <= "1010"; + Set_BusA_To <= "0000"; + Read_To_Reg <= '1'; + Save_ALU <= '1'; + ALU_Op <= "0010"; + when 2 => + Set_BusB_To <= "0110"; + Set_Addr_To <= aBC; + when 3 => + if IR(3) = '0' then + IncDec_16 <= "0110"; -- mikej + else + IncDec_16 <= "1110"; -- mikej + end if; + IORQ <= '1'; + Write <= '1'; + I_BTR <= '1'; + when 4 => + NoRead <= '1'; + TStates <= "101"; + when others => null; + end case; + end case; + + end case; + + if Mode = 1 then + if MCycle = "001" then +-- TStates <= "100"; + else + TStates <= "011"; + end if; + end if; + + if Mode = 3 then + if MCycle = "001" then +-- TStates <= "100"; + else + TStates <= "100"; + end if; + end if; + + if Mode < 2 then + if MCycle = "110" then + Inc_PC <= '1'; + if Mode = 1 then + Set_Addr_To <= aXY; + TStates <= "100"; + Set_BusB_To(2 downto 0) <= SSS; + Set_BusB_To(3) <= '0'; + end if; + if IRB = "00110110" or IRB = "11001011" then + Set_Addr_To <= aNone; + end if; + end if; + if MCycle = "111" then + if Mode = 0 then + TStates <= "101"; + end if; + if ISet /= "01" then + Set_Addr_To <= aXY; + end if; + Set_BusB_To(2 downto 0) <= SSS; + Set_BusB_To(3) <= '0'; + if IRB = "00110110" or ISet = "01" then + -- LD (HL),n + Inc_PC <= '1'; + else + NoRead <= '1'; + end if; + end if; + end if; + + end process; + +end; diff --git a/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/cpu/T80_Pack.vhd b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/cpu/T80_Pack.vhd new file mode 100644 index 00000000..42cf6105 --- /dev/null +++ b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/cpu/T80_Pack.vhd @@ -0,0 +1,217 @@ +-- **** +-- T80(b) core. In an effort to merge and maintain bug fixes .... +-- +-- +-- Ver 300 started tidyup +-- MikeJ March 2005 +-- Latest version from www.fpgaarcade.com (original www.opencores.org) +-- +-- **** +-- +-- Z80 compatible microprocessor core +-- +-- Version : 0242 +-- +-- Copyright (c) 2001-2002 Daniel Wallner (jesus@opencores.org) +-- +-- All rights reserved +-- +-- Redistribution and use in source and synthezised forms, with or without +-- modification, are permitted provided that the following conditions are met: +-- +-- Redistributions of source code must retain the above copyright notice, +-- this list of conditions and the following disclaimer. +-- +-- Redistributions in synthesized form must reproduce the above copyright +-- notice, this list of conditions and the following disclaimer in the +-- documentation and/or other materials provided with the distribution. +-- +-- Neither the name of the author nor the names of other contributors may +-- be used to endorse or promote products derived from this software without +-- specific prior written permission. +-- +-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +-- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +-- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +-- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE +-- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +-- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +-- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +-- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +-- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +-- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +-- POSSIBILITY OF SUCH DAMAGE. +-- +-- Please report bugs to the author, but before you do so, please +-- make sure that this is not a derivative work and that +-- you have the latest version of this file. +-- +-- The latest version of this file can be found at: +-- http://www.opencores.org/cvsweb.shtml/t80/ +-- +-- Limitations : +-- +-- File history : +-- + +library IEEE; +use IEEE.std_logic_1164.all; + +package T80_Pack is + + component T80 + generic( + Mode : integer := 0; -- 0 => Z80, 1 => Fast Z80, 2 => 8080, 3 => GB + IOWait : integer := 0; -- 1 => Single cycle I/O, 1 => Std I/O cycle + Flag_C : integer := 0; + Flag_N : integer := 1; + Flag_P : integer := 2; + Flag_X : integer := 3; + Flag_H : integer := 4; + Flag_Y : integer := 5; + Flag_Z : integer := 6; + Flag_S : integer := 7 + ); + port( + RESET_n : in std_logic; + CLK_n : in std_logic; + CEN : in std_logic; + WAIT_n : in std_logic; + INT_n : in std_logic; + NMI_n : in std_logic; + BUSRQ_n : in std_logic; + M1_n : out std_logic; + IORQ : out std_logic; + NoRead : out std_logic; + Write : out std_logic; + RFSH_n : out std_logic; + HALT_n : out std_logic; + BUSAK_n : out std_logic; + A : out std_logic_vector(15 downto 0); + DInst : in std_logic_vector(7 downto 0); + DI : in std_logic_vector(7 downto 0); + DO : out std_logic_vector(7 downto 0); + MC : out std_logic_vector(2 downto 0); + TS : out std_logic_vector(2 downto 0); + IntCycle_n : out std_logic; + IntE : out std_logic; + Stop : out std_logic + ); + end component; + + component T80_Reg + port( + Clk : in std_logic; + CEN : in std_logic; + WEH : in std_logic; + WEL : in std_logic; + AddrA : in std_logic_vector(2 downto 0); + AddrB : in std_logic_vector(2 downto 0); + AddrC : in std_logic_vector(2 downto 0); + DIH : in std_logic_vector(7 downto 0); + DIL : in std_logic_vector(7 downto 0); + DOAH : out std_logic_vector(7 downto 0); + DOAL : out std_logic_vector(7 downto 0); + DOBH : out std_logic_vector(7 downto 0); + DOBL : out std_logic_vector(7 downto 0); + DOCH : out std_logic_vector(7 downto 0); + DOCL : out std_logic_vector(7 downto 0) + ); + end component; + + component T80_MCode + generic( + Mode : integer := 0; + Flag_C : integer := 0; + Flag_N : integer := 1; + Flag_P : integer := 2; + Flag_X : integer := 3; + Flag_H : integer := 4; + Flag_Y : integer := 5; + Flag_Z : integer := 6; + Flag_S : integer := 7 + ); + port( + IR : in std_logic_vector(7 downto 0); + ISet : in std_logic_vector(1 downto 0); + MCycle : in std_logic_vector(2 downto 0); + F : in std_logic_vector(7 downto 0); + NMICycle : in std_logic; + IntCycle : in std_logic; + MCycles : out std_logic_vector(2 downto 0); + TStates : out std_logic_vector(2 downto 0); + Prefix : out std_logic_vector(1 downto 0); -- None,BC,ED,DD/FD + Inc_PC : out std_logic; + Inc_WZ : out std_logic; + IncDec_16 : out std_logic_vector(3 downto 0); -- BC,DE,HL,SP 0 is inc + Read_To_Reg : out std_logic; + Read_To_Acc : out std_logic; + Set_BusA_To : out std_logic_vector(3 downto 0); -- B,C,D,E,H,L,DI/DB,A,SP(L),SP(M),0,F + Set_BusB_To : out std_logic_vector(3 downto 0); -- B,C,D,E,H,L,DI,A,SP(L),SP(M),1,F,PC(L),PC(M),0 + ALU_Op : out std_logic_vector(3 downto 0); + -- ADD, ADC, SUB, SBC, AND, XOR, OR, CP, ROT, BIT, SET, RES, DAA, RLD, RRD, None + Save_ALU : out std_logic; + PreserveC : out std_logic; + Arith16 : out std_logic; + Set_Addr_To : out std_logic_vector(2 downto 0); -- aNone,aXY,aIOA,aSP,aBC,aDE,aZI + IORQ : out std_logic; + Jump : out std_logic; + JumpE : out std_logic; + JumpXY : out std_logic; + Call : out std_logic; + RstP : out std_logic; + LDZ : out std_logic; + LDW : out std_logic; + LDSPHL : out std_logic; + Special_LD : out std_logic_vector(2 downto 0); -- A,I;A,R;I,A;R,A;None + ExchangeDH : out std_logic; + ExchangeRp : out std_logic; + ExchangeAF : out std_logic; + ExchangeRS : out std_logic; + I_DJNZ : out std_logic; + I_CPL : out std_logic; + I_CCF : out std_logic; + I_SCF : out std_logic; + I_RETN : out std_logic; + I_BT : out std_logic; + I_BC : out std_logic; + I_BTR : out std_logic; + I_RLD : out std_logic; + I_RRD : out std_logic; + I_INRC : out std_logic; + SetDI : out std_logic; + SetEI : out std_logic; + IMode : out std_logic_vector(1 downto 0); + Halt : out std_logic; + NoRead : out std_logic; + Write : out std_logic + ); + end component; + + component T80_ALU + generic( + Mode : integer := 0; + Flag_C : integer := 0; + Flag_N : integer := 1; + Flag_P : integer := 2; + Flag_X : integer := 3; + Flag_H : integer := 4; + Flag_Y : integer := 5; + Flag_Z : integer := 6; + Flag_S : integer := 7 + ); + port( + Arith16 : in std_logic; + Z16 : in std_logic; + ALU_Op : in std_logic_vector(3 downto 0); + IR : in std_logic_vector(5 downto 0); + ISet : in std_logic_vector(1 downto 0); + BusA : in std_logic_vector(7 downto 0); + BusB : in std_logic_vector(7 downto 0); + F_In : in std_logic_vector(7 downto 0); + Q : out std_logic_vector(7 downto 0); + F_Out : out std_logic_vector(7 downto 0) + ); + end component; + +end; diff --git a/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/cpu/T80_Reg.vhd b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/cpu/T80_Reg.vhd new file mode 100644 index 00000000..828485fb --- /dev/null +++ b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/cpu/T80_Reg.vhd @@ -0,0 +1,105 @@ +-- +-- T80 Registers, technology independent +-- +-- Version : 0244 +-- +-- Copyright (c) 2002 Daniel Wallner (jesus@opencores.org) +-- +-- All rights reserved +-- +-- Redistribution and use in source and synthezised forms, with or without +-- modification, are permitted provided that the following conditions are met: +-- +-- Redistributions of source code must retain the above copyright notice, +-- this list of conditions and the following disclaimer. +-- +-- Redistributions in synthesized form must reproduce the above copyright +-- notice, this list of conditions and the following disclaimer in the +-- documentation and/or other materials provided with the distribution. +-- +-- Neither the name of the author nor the names of other contributors may +-- be used to endorse or promote products derived from this software without +-- specific prior written permission. +-- +-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +-- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +-- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +-- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE +-- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +-- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +-- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +-- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +-- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +-- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +-- POSSIBILITY OF SUCH DAMAGE. +-- +-- Please report bugs to the author, but before you do so, please +-- make sure that this is not a derivative work and that +-- you have the latest version of this file. +-- +-- The latest version of this file can be found at: +-- http://www.opencores.org/cvsweb.shtml/t51/ +-- +-- Limitations : +-- +-- File history : +-- +-- 0242 : Initial release +-- +-- 0244 : Changed to single register file +-- + +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.numeric_std.all; + +entity T80_Reg is + port( + Clk : in std_logic; + CEN : in std_logic; + WEH : in std_logic; + WEL : in std_logic; + AddrA : in std_logic_vector(2 downto 0); + AddrB : in std_logic_vector(2 downto 0); + AddrC : in std_logic_vector(2 downto 0); + DIH : in std_logic_vector(7 downto 0); + DIL : in std_logic_vector(7 downto 0); + DOAH : out std_logic_vector(7 downto 0); + DOAL : out std_logic_vector(7 downto 0); + DOBH : out std_logic_vector(7 downto 0); + DOBL : out std_logic_vector(7 downto 0); + DOCH : out std_logic_vector(7 downto 0); + DOCL : out std_logic_vector(7 downto 0) + ); +end T80_Reg; + +architecture rtl of T80_Reg is + + type Register_Image is array (natural range <>) of std_logic_vector(7 downto 0); + signal RegsH : Register_Image(0 to 7); + signal RegsL : Register_Image(0 to 7); + +begin + + process (Clk) + begin + if Clk'event and Clk = '1' then + if CEN = '1' then + if WEH = '1' then + RegsH(to_integer(unsigned(AddrA))) <= DIH; + end if; + if WEL = '1' then + RegsL(to_integer(unsigned(AddrA))) <= DIL; + end if; + end if; + end if; + end process; + + DOAH <= RegsH(to_integer(unsigned(AddrA))); + DOAL <= RegsL(to_integer(unsigned(AddrA))); + DOBH <= RegsH(to_integer(unsigned(AddrB))); + DOBL <= RegsL(to_integer(unsigned(AddrB))); + DOCH <= RegsH(to_integer(unsigned(AddrC))); + DOCL <= RegsL(to_integer(unsigned(AddrC))); + +end; diff --git a/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/cpu/T80sed.vhd b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/cpu/T80sed.vhd new file mode 100644 index 00000000..0c28ec21 --- /dev/null +++ b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/cpu/T80sed.vhd @@ -0,0 +1,179 @@ +-- **** +-- T80(b) core. In an effort to merge and maintain bug fixes .... +-- +-- +-- Ver 300 started tidyup +-- MikeJ March 2005 +-- Latest version from www.fpgaarcade.com (original www.opencores.org) +-- +-- **** +-- ** CUSTOM 2 CLOCK MEMORY ACCESS FOR PACMAN, MIKEJ ** +-- +-- Z80 compatible microprocessor core, synchronous top level with clock enable +-- Different timing than the original z80 +-- Inputs needs to be synchronous and outputs may glitch +-- +-- Version : 0238 +-- +-- Copyright (c) 2001-2002 Daniel Wallner (jesus@opencores.org) +-- +-- All rights reserved +-- +-- Redistribution and use in source and synthezised forms, with or without +-- modification, are permitted provided that the following conditions are met: +-- +-- Redistributions of source code must retain the above copyright notice, +-- this list of conditions and the following disclaimer. +-- +-- Redistributions in synthesized form must reproduce the above copyright +-- notice, this list of conditions and the following disclaimer in the +-- documentation and/or other materials provided with the distribution. +-- +-- Neither the name of the author nor the names of other contributors may +-- be used to endorse or promote products derived from this software without +-- specific prior written permission. +-- +-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +-- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +-- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +-- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE +-- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +-- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +-- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +-- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +-- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +-- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +-- POSSIBILITY OF SUCH DAMAGE. +-- +-- Please report bugs to the author, but before you do so, please +-- make sure that this is not a derivative work and that +-- you have the latest version of this file. +-- +-- The latest version of this file can be found at: +-- http://www.opencores.org/cvsweb.shtml/t80/ +-- +-- Limitations : +-- +-- File history : +-- +-- 0235 : First release +-- +-- 0236 : Added T2Write generic +-- +-- 0237 : Fixed T2Write with wait state +-- +-- 0238 : Updated for T80 interface change +-- +-- 0242 : Updated for T80 interface change +-- + +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.numeric_std.all; +use work.T80_Pack.all; + +entity T80sed is + port( + RESET_n : in std_logic; + CLK_n : in std_logic; + CLKEN : in std_logic; + WAIT_n : in std_logic; + INT_n : in std_logic; + NMI_n : in std_logic; + BUSRQ_n : in std_logic; + M1_n : out std_logic; + MREQ_n : out std_logic; + IORQ_n : out std_logic; + RD_n : out std_logic; + WR_n : out std_logic; + RFSH_n : out std_logic; + HALT_n : out std_logic; + BUSAK_n : out std_logic; + A : out std_logic_vector(15 downto 0); + DI : in std_logic_vector(7 downto 0); + DO : out std_logic_vector(7 downto 0) + ); +end T80sed; + +architecture rtl of T80sed is + + signal IntCycle_n : std_logic; + signal NoRead : std_logic; + signal Write : std_logic; + signal IORQ : std_logic; + signal DI_Reg : std_logic_vector(7 downto 0); + signal MCycle : std_logic_vector(2 downto 0); + signal TState : std_logic_vector(2 downto 0); + +begin + + u0 : T80 + generic map( + Mode => 0, + IOWait => 1) + port map( + CEN => CLKEN, + M1_n => M1_n, + IORQ => IORQ, + NoRead => NoRead, + Write => Write, + RFSH_n => RFSH_n, + HALT_n => HALT_n, + WAIT_n => Wait_n, + INT_n => INT_n, + NMI_n => NMI_n, + RESET_n => RESET_n, + BUSRQ_n => BUSRQ_n, + BUSAK_n => BUSAK_n, + CLK_n => CLK_n, + A => A, + DInst => DI, + DI => DI_Reg, + DO => DO, + MC => MCycle, + TS => TState, + IntCycle_n => IntCycle_n); + + process (RESET_n, CLK_n) + begin + if RESET_n = '0' then + RD_n <= '1'; + WR_n <= '1'; + IORQ_n <= '1'; + MREQ_n <= '1'; + DI_Reg <= "00000000"; + elsif CLK_n'event and CLK_n = '1' then + if CLKEN = '1' then + RD_n <= '1'; + WR_n <= '1'; + IORQ_n <= '1'; + MREQ_n <= '1'; + if MCycle = "001" then + if TState = "001" or (TState = "010" and Wait_n = '0') then + RD_n <= not IntCycle_n; + MREQ_n <= not IntCycle_n; + IORQ_n <= IntCycle_n; + end if; + if TState = "011" then + MREQ_n <= '0'; + end if; + else + if (TState = "001" or TState = "010") and NoRead = '0' and Write = '0' then + RD_n <= '0'; + IORQ_n <= not IORQ; + MREQ_n <= IORQ; + end if; + if ((TState = "001") or (TState = "010")) and Write = '1' then + WR_n <= '0'; + IORQ_n <= not IORQ; + MREQ_n <= IORQ; + end if; + end if; + if TState = "010" and Wait_n = '1' then + DI_Reg <= DI; + end if; + end if; + end if; + end process; + +end; diff --git a/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/dac.vhd b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/dac.vhd new file mode 100644 index 00000000..47b2185e --- /dev/null +++ b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/dac.vhd @@ -0,0 +1,48 @@ +------------------------------------------------------------------------------- +-- +-- Delta-Sigma DAC +-- +-- Refer to Xilinx Application Note XAPP154. +-- +-- This DAC requires an external RC low-pass filter: +-- +-- dac_o 0---XXXXX---+---0 analog audio +-- 3k3 | +-- === 4n7 +-- | +-- GND +-- +------------------------------------------------------------------------------- + +library ieee; + use ieee.std_logic_1164.all; + use ieee.numeric_std.all; + +entity dac is + generic ( + C_bits : integer := 10 + ); + port ( + clk_i : in std_logic; + res_n_i : in std_logic; + dac_i : in std_logic_vector(C_bits-1 downto 0); + dac_o : out std_logic + ); +end dac; + +architecture rtl of dac is + signal sig_in: unsigned(C_bits downto 0); +begin + seq: process(clk_i, res_n_i) + begin + if res_n_i = '0' then + sig_in <= to_unsigned(2**C_bits, sig_in'length); + dac_o <= '0'; + elsif rising_edge(clk_i) then + -- not dac_i(C_bits-1) effectively adds 0x8..0 to dac_i + --sig_in <= sig_in + unsigned(sig_in(C_bits) & (not dac_i(C_bits-1)) & dac_i(C_bits-2 downto 0)); + sig_in <= sig_in + unsigned(sig_in(C_bits) & dac_i); + dac_o <= sig_in(C_bits); + end if; + end process seq; +end rtl; diff --git a/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/dpram.vhd b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/dpram.vhd new file mode 100644 index 00000000..78823ec4 --- /dev/null +++ b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/dpram.vhd @@ -0,0 +1,58 @@ +------------------------------------------------------------------------------- +-- $Id: dpram.vhd,v 1.1 2006/02/23 21:46:45 arnim Exp $ +------------------------------------------------------------------------------- + +library ieee; +use ieee.std_logic_1164.all; + +entity dpram is + +generic ( + addr_width_g : integer := 8; + data_width_g : integer := 8 +); +port ( + clk_a_i : in std_logic; + en_a_i : in std_logic; + we_i : in std_logic; + addr_a_i : in std_logic_vector(addr_width_g-1 downto 0); + data_a_i : in std_logic_vector(data_width_g-1 downto 0); + data_a_o : out std_logic_vector(data_width_g-1 downto 0); + clk_b_i : in std_logic; + addr_b_i : in std_logic_vector(addr_width_g-1 downto 0); + data_b_o : out std_logic_vector(data_width_g-1 downto 0) +); + +end dpram; + + +library ieee; +use ieee.numeric_std.all; + +architecture rtl of dpram is + + type ram_t is array (natural range 2**addr_width_g-1 downto 0) of std_logic_vector(data_width_g-1 downto 0); + signal ram_q : ram_t; + +begin + + mem_a: process (clk_a_i) + begin + if rising_edge(clk_a_i) then + if we_i = '1' and en_a_i = '1' then + ram_q(to_integer(unsigned(addr_a_i))) <= data_a_i; + data_a_o <= data_a_i; + else + data_a_o <= ram_q(to_integer(unsigned(addr_a_i))); + end if; + end if; + end process mem_a; + + mem_b: process (clk_b_i) + begin + if rising_edge(clk_b_i) then + data_b_o <= ram_q(to_integer(unsigned(addr_b_i))); + end if; + end process mem_b; + +end rtl; diff --git a/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/hq2x.sv b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/hq2x.sv new file mode 100644 index 00000000..f17732b6 --- /dev/null +++ b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/hq2x.sv @@ -0,0 +1,454 @@ +// +// +// Copyright (c) 2012-2013 Ludvig Strigeus +// Copyright (c) 2017 Sorgelig +// +// This program is GPL Licensed. See COPYING for the full license. +// +// +//////////////////////////////////////////////////////////////////////////////////////////////////////// + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on + +`define BITS_TO_FIT(N) ( \ + N <= 2 ? 0 : \ + N <= 4 ? 1 : \ + N <= 8 ? 2 : \ + N <= 16 ? 3 : \ + N <= 32 ? 4 : \ + N <= 64 ? 5 : \ + N <= 128 ? 6 : \ + N <= 256 ? 7 : \ + N <= 512 ? 8 : \ + N <=1024 ? 9 : 10 ) + +module hq2x_in #(parameter LENGTH, parameter DWIDTH) +( + input clk, + + input [AWIDTH:0] rdaddr, + input rdbuf, + output[DWIDTH:0] q, + + input [AWIDTH:0] wraddr, + input wrbuf, + input [DWIDTH:0] data, + input wren +); + + localparam AWIDTH = `BITS_TO_FIT(LENGTH); + wire [DWIDTH:0] out[2]; + assign q = out[rdbuf]; + + hq2x_buf #(.NUMWORDS(LENGTH), .AWIDTH(AWIDTH), .DWIDTH(DWIDTH)) buf0(clk,data,rdaddr,wraddr,wren && (wrbuf == 0),out[0]); + hq2x_buf #(.NUMWORDS(LENGTH), .AWIDTH(AWIDTH), .DWIDTH(DWIDTH)) buf1(clk,data,rdaddr,wraddr,wren && (wrbuf == 1),out[1]); +endmodule + + +module hq2x_out #(parameter LENGTH, parameter DWIDTH) +( + input clk, + + input [AWIDTH:0] rdaddr, + input [1:0] rdbuf, + output[DWIDTH:0] q, + + input [AWIDTH:0] wraddr, + input [1:0] wrbuf, + input [DWIDTH:0] data, + input wren +); + + localparam AWIDTH = `BITS_TO_FIT(LENGTH*2); + wire [DWIDTH:0] out[4]; + assign q = out[rdbuf]; + + hq2x_buf #(.NUMWORDS(LENGTH*2), .AWIDTH(AWIDTH), .DWIDTH(DWIDTH)) buf0(clk,data,rdaddr,wraddr,wren && (wrbuf == 0),out[0]); + hq2x_buf #(.NUMWORDS(LENGTH*2), .AWIDTH(AWIDTH), .DWIDTH(DWIDTH)) buf1(clk,data,rdaddr,wraddr,wren && (wrbuf == 1),out[1]); + hq2x_buf #(.NUMWORDS(LENGTH*2), .AWIDTH(AWIDTH), .DWIDTH(DWIDTH)) buf2(clk,data,rdaddr,wraddr,wren && (wrbuf == 2),out[2]); + hq2x_buf #(.NUMWORDS(LENGTH*2), .AWIDTH(AWIDTH), .DWIDTH(DWIDTH)) buf3(clk,data,rdaddr,wraddr,wren && (wrbuf == 3),out[3]); +endmodule + + +module hq2x_buf #(parameter NUMWORDS, parameter AWIDTH, parameter DWIDTH) +( + input clock, + input [DWIDTH:0] data, + input [AWIDTH:0] rdaddress, + input [AWIDTH:0] wraddress, + input wren, + output [DWIDTH:0] q +); + + altsyncram altsyncram_component ( + .address_a (wraddress), + .clock0 (clock), + .data_a (data), + .wren_a (wren), + .address_b (rdaddress), + .q_b(q), + .aclr0 (1'b0), + .aclr1 (1'b0), + .addressstall_a (1'b0), + .addressstall_b (1'b0), + .byteena_a (1'b1), + .byteena_b (1'b1), + .clock1 (1'b1), + .clocken0 (1'b1), + .clocken1 (1'b1), + .clocken2 (1'b1), + .clocken3 (1'b1), + .data_b ({(DWIDTH+1){1'b1}}), + .eccstatus (), + .q_a (), + .rden_a (1'b1), + .rden_b (1'b1), + .wren_b (1'b0)); + defparam + altsyncram_component.address_aclr_b = "NONE", + altsyncram_component.address_reg_b = "CLOCK0", + altsyncram_component.clock_enable_input_a = "BYPASS", + altsyncram_component.clock_enable_input_b = "BYPASS", + altsyncram_component.clock_enable_output_b = "BYPASS", + altsyncram_component.intended_device_family = "Cyclone III", + altsyncram_component.lpm_type = "altsyncram", + altsyncram_component.numwords_a = NUMWORDS, + altsyncram_component.numwords_b = NUMWORDS, + altsyncram_component.operation_mode = "DUAL_PORT", + altsyncram_component.outdata_aclr_b = "NONE", + altsyncram_component.outdata_reg_b = "UNREGISTERED", + altsyncram_component.power_up_uninitialized = "FALSE", + altsyncram_component.read_during_write_mode_mixed_ports = "DONT_CARE", + altsyncram_component.widthad_a = AWIDTH+1, + altsyncram_component.widthad_b = AWIDTH+1, + altsyncram_component.width_a = DWIDTH+1, + altsyncram_component.width_b = DWIDTH+1, + altsyncram_component.width_byteena_a = 1; + +endmodule + +//////////////////////////////////////////////////////////////////////////////////////////////////////// + +module DiffCheck +( + input [17:0] rgb1, + input [17:0] rgb2, + output result +); + + wire [5:0] r = rgb1[5:1] - rgb2[5:1]; + wire [5:0] g = rgb1[11:7] - rgb2[11:7]; + wire [5:0] b = rgb1[17:13] - rgb2[17:13]; + wire [6:0] t = $signed(r) + $signed(b); + wire [6:0] gx = {g[5], g}; + wire [7:0] y = $signed(t) + $signed(gx); + wire [6:0] u = $signed(r) - $signed(b); + wire [7:0] v = $signed({g, 1'b0}) - $signed(t); + + // if y is inside (-24..24) + wire y_inside = (y < 8'h18 || y >= 8'he8); + + // if u is inside (-4, 4) + wire u_inside = (u < 7'h4 || u >= 7'h7c); + + // if v is inside (-6, 6) + wire v_inside = (v < 8'h6 || v >= 8'hfA); + assign result = !(y_inside && u_inside && v_inside); +endmodule + +module InnerBlend +( + input [8:0] Op, + input [5:0] A, + input [5:0] B, + input [5:0] C, + output [5:0] O +); + + function [8:0] mul6x3; + input [5:0] op1; + input [2:0] op2; + begin + mul6x3 = 9'd0; + if(op2[0]) mul6x3 = mul6x3 + op1; + if(op2[1]) mul6x3 = mul6x3 + {op1, 1'b0}; + if(op2[2]) mul6x3 = mul6x3 + {op1, 2'b00}; + end + endfunction + + wire OpOnes = Op[4]; + wire [8:0] Amul = mul6x3(A, Op[7:5]); + wire [8:0] Bmul = mul6x3(B, {Op[3:2], 1'b0}); + wire [8:0] Cmul = mul6x3(C, {Op[1:0], 1'b0}); + wire [8:0] At = Amul; + wire [8:0] Bt = (OpOnes == 0) ? Bmul : {3'b0, B}; + wire [8:0] Ct = (OpOnes == 0) ? Cmul : {3'b0, C}; + wire [9:0] Res = {At, 1'b0} + Bt + Ct; + assign O = Op[8] ? A : Res[9:4]; +endmodule + +module Blend +( + input [5:0] rule, + input disable_hq2x, + input [17:0] E, + input [17:0] A, + input [17:0] B, + input [17:0] D, + input [17:0] F, + input [17:0] H, + output [17:0] Result +); + + reg [1:0] input_ctrl; + reg [8:0] op; + localparam BLEND0 = 9'b1_xxx_x_xx_xx; // 0: A + localparam BLEND1 = 9'b0_110_0_10_00; // 1: (A * 12 + B * 4) >> 4 + localparam BLEND2 = 9'b0_100_0_10_10; // 2: (A * 8 + B * 4 + C * 4) >> 4 + localparam BLEND3 = 9'b0_101_0_10_01; // 3: (A * 10 + B * 4 + C * 2) >> 4 + localparam BLEND4 = 9'b0_110_0_01_01; // 4: (A * 12 + B * 2 + C * 2) >> 4 + localparam BLEND5 = 9'b0_010_0_11_11; // 5: (A * 4 + (B + C) * 6) >> 4 + localparam BLEND6 = 9'b0_111_1_xx_xx; // 6: (A * 14 + B + C) >> 4 + localparam AB = 2'b00; + localparam AD = 2'b01; + localparam DB = 2'b10; + localparam BD = 2'b11; + wire is_diff; + DiffCheck diff_checker(rule[1] ? B : H, rule[0] ? D : F, is_diff); + + always @* begin + case({!is_diff, rule[5:2]}) + 1,17: {op, input_ctrl} = {BLEND1, AB}; + 2,18: {op, input_ctrl} = {BLEND1, DB}; + 3,19: {op, input_ctrl} = {BLEND1, BD}; + 4,20: {op, input_ctrl} = {BLEND2, DB}; + 5,21: {op, input_ctrl} = {BLEND2, AB}; + 6,22: {op, input_ctrl} = {BLEND2, AD}; + + 8: {op, input_ctrl} = {BLEND0, 2'bxx}; + 9: {op, input_ctrl} = {BLEND0, 2'bxx}; + 10: {op, input_ctrl} = {BLEND0, 2'bxx}; + 11: {op, input_ctrl} = {BLEND1, AB}; + 12: {op, input_ctrl} = {BLEND1, AB}; + 13: {op, input_ctrl} = {BLEND1, AB}; + 14: {op, input_ctrl} = {BLEND1, DB}; + 15: {op, input_ctrl} = {BLEND1, BD}; + + 24: {op, input_ctrl} = {BLEND2, DB}; + 25: {op, input_ctrl} = {BLEND5, DB}; + 26: {op, input_ctrl} = {BLEND6, DB}; + 27: {op, input_ctrl} = {BLEND2, DB}; + 28: {op, input_ctrl} = {BLEND4, DB}; + 29: {op, input_ctrl} = {BLEND5, DB}; + 30: {op, input_ctrl} = {BLEND3, BD}; + 31: {op, input_ctrl} = {BLEND3, DB}; + default: {op, input_ctrl} = 11'bx; + endcase + + // Setting op[8] effectively disables HQ2X because blend will always return E. + if (disable_hq2x) op[8] = 1; + end + + // Generate inputs to the inner blender. Valid combinations. + // 00: E A B + // 01: E A D + // 10: E D B + // 11: E B D + wire [17:0] Input1 = E; + wire [17:0] Input2 = !input_ctrl[1] ? A : + !input_ctrl[0] ? D : B; + + wire [17:0] Input3 = !input_ctrl[0] ? B : D; + InnerBlend inner_blend1(op, Input1[5:0], Input2[5:0], Input3[5:0], Result[5:0]); + InnerBlend inner_blend2(op, Input1[11:6], Input2[11:6], Input3[11:6], Result[11:6]); + InnerBlend inner_blend3(op, Input1[17:12], Input2[17:12], Input3[17:12], Result[17:12]); +endmodule + + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +module Hq2x #(parameter LENGTH, parameter HALF_DEPTH) +( + input clk, + input ce_x4, + input [DWIDTH:0] inputpixel, + input mono, + input disable_hq2x, + input reset_frame, + input reset_line, + input [1:0] read_y, + input [AWIDTH+1:0] read_x, + output [DWIDTH:0] outpixel +); + + +localparam AWIDTH = `BITS_TO_FIT(LENGTH); +localparam DWIDTH = HALF_DEPTH ? 8 : 17; + +wire [5:0] hqTable[256] = '{ + 19, 19, 26, 11, 19, 19, 26, 11, 23, 15, 47, 35, 23, 15, 55, 39, + 19, 19, 26, 58, 19, 19, 26, 58, 23, 15, 35, 35, 23, 15, 7, 35, + 19, 19, 26, 11, 19, 19, 26, 11, 23, 15, 55, 39, 23, 15, 51, 43, + 19, 19, 26, 58, 19, 19, 26, 58, 23, 15, 51, 35, 23, 15, 7, 43, + 19, 19, 26, 11, 19, 19, 26, 11, 23, 61, 35, 35, 23, 61, 51, 35, + 19, 19, 26, 11, 19, 19, 26, 11, 23, 15, 51, 35, 23, 15, 51, 35, + 19, 19, 26, 11, 19, 19, 26, 11, 23, 61, 7, 35, 23, 61, 7, 43, + 19, 19, 26, 11, 19, 19, 26, 58, 23, 15, 51, 35, 23, 61, 7, 43, + 19, 19, 26, 11, 19, 19, 26, 11, 23, 15, 47, 35, 23, 15, 55, 39, + 19, 19, 26, 11, 19, 19, 26, 11, 23, 15, 51, 35, 23, 15, 51, 35, + 19, 19, 26, 11, 19, 19, 26, 11, 23, 15, 55, 39, 23, 15, 51, 43, + 19, 19, 26, 11, 19, 19, 26, 11, 23, 15, 51, 39, 23, 15, 7, 43, + 19, 19, 26, 11, 19, 19, 26, 11, 23, 15, 51, 35, 23, 15, 51, 39, + 19, 19, 26, 11, 19, 19, 26, 11, 23, 15, 51, 35, 23, 15, 7, 35, + 19, 19, 26, 11, 19, 19, 26, 11, 23, 15, 51, 35, 23, 15, 7, 43, + 19, 19, 26, 11, 19, 19, 26, 11, 23, 15, 7, 35, 23, 15, 7, 43 +}; + +reg [17:0] Prev0, Prev1, Prev2, Curr0, Curr1, Next0, Next1, Next2; +reg [17:0] A, B, D, F, G, H; +reg [7:0] pattern, nextpatt; +reg [1:0] i; +reg [7:0] y; + +wire curbuf = y[0]; +reg prevbuf = 0; +wire iobuf = !curbuf; + +wire diff0, diff1; +DiffCheck diffcheck0(Curr1, (i == 0) ? Prev0 : (i == 1) ? Curr0 : (i == 2) ? Prev2 : Next1, diff0); +DiffCheck diffcheck1(Curr1, (i == 0) ? Prev1 : (i == 1) ? Next0 : (i == 2) ? Curr2 : Next2, diff1); + +wire [7:0] new_pattern = {diff1, diff0, pattern[7:2]}; + +wire [17:0] X = (i == 0) ? A : (i == 1) ? Prev1 : (i == 2) ? Next1 : G; +wire [17:0] blend_result; +Blend blender(hqTable[nextpatt], disable_hq2x, Curr0, X, B, D, F, H, blend_result); + +reg Curr2_addr1; +reg [AWIDTH:0] Curr2_addr2; +wire [17:0] Curr2 = HALF_DEPTH ? h2rgb(Curr2tmp) : Curr2tmp; +wire [DWIDTH:0] Curr2tmp; + +reg [AWIDTH:0] wrin_addr2; +reg [DWIDTH:0] wrpix; +reg wrin_en; + +function [17:0] h2rgb; + input [8:0] v; +begin + h2rgb = mono ? {v[5:3],v[2:0], v[5:3],v[2:0], v[5:3],v[2:0]} : {v[8:6],v[8:6],v[5:3],v[5:3],v[2:0],v[2:0]}; +end +endfunction + +function [8:0] rgb2h; + input [17:0] v; +begin + rgb2h = mono ? {3'b000, v[17:15], v[14:12]} : {v[17:15], v[11:9], v[5:3]}; +end +endfunction + +hq2x_in #(.LENGTH(LENGTH), .DWIDTH(DWIDTH)) hq2x_in +( + .clk(clk), + + .rdaddr(Curr2_addr2), + .rdbuf(Curr2_addr1), + .q(Curr2tmp), + + .wraddr(wrin_addr2), + .wrbuf(iobuf), + .data(wrpix), + .wren(wrin_en) +); + +reg [1:0] wrout_addr1; +reg [AWIDTH+1:0] wrout_addr2; +reg wrout_en; +reg [DWIDTH:0] wrdata; + +hq2x_out #(.LENGTH(LENGTH), .DWIDTH(DWIDTH)) hq2x_out +( + .clk(clk), + + .rdaddr(read_x), + .rdbuf(read_y), + .q(outpixel), + + .wraddr(wrout_addr2), + .wrbuf(wrout_addr1), + .data(wrdata), + .wren(wrout_en) +); + +always @(posedge clk) begin + reg [AWIDTH:0] offs; + reg old_reset_line; + reg old_reset_frame; + + wrout_en <= 0; + wrin_en <= 0; + + if(ce_x4) begin + + pattern <= new_pattern; + + if(~&offs) begin + if (i == 0) begin + Curr2_addr1 <= prevbuf; + Curr2_addr2 <= offs; + end + if (i == 1) begin + Prev2 <= Curr2; + Curr2_addr1 <= curbuf; + Curr2_addr2 <= offs; + end + if (i == 2) begin + Next2 <= HALF_DEPTH ? h2rgb(inputpixel) : inputpixel; + wrpix <= inputpixel; + wrin_addr2 <= offs; + wrin_en <= 1; + end + if (i == 3) begin + offs <= offs + 1'd1; + end + + if(HALF_DEPTH) wrdata <= rgb2h(blend_result); + else wrdata <= blend_result; + + wrout_addr1 <= {curbuf, i[1]}; + wrout_addr2 <= {offs, i[1]^i[0]}; + wrout_en <= 1; + end + + if(i==3) begin + nextpatt <= {new_pattern[7:6], new_pattern[3], new_pattern[5], new_pattern[2], new_pattern[4], new_pattern[1:0]}; + {A, G} <= {Prev0, Next0}; + {B, F, H, D} <= {Prev1, Curr2, Next1, Curr0}; + {Prev0, Prev1} <= {Prev1, Prev2}; + {Curr0, Curr1} <= {Curr1, Curr2}; + {Next0, Next1} <= {Next1, Next2}; + end else begin + nextpatt <= {nextpatt[5], nextpatt[3], nextpatt[0], nextpatt[6], nextpatt[1], nextpatt[7], nextpatt[4], nextpatt[2]}; + {B, F, H, D} <= {F, H, D, B}; + end + + i <= i + 1'b1; + if(old_reset_line && ~reset_line) begin + old_reset_frame <= reset_frame; + offs <= 0; + i <= 0; + y <= y + 1'd1; + prevbuf <= curbuf; + if(old_reset_frame & ~reset_frame) begin + y <= 0; + prevbuf <= 0; + end + end + + old_reset_line <= reset_line; + end +end + +endmodule // Hq2x diff --git a/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/mist_io.v b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/mist_io.v new file mode 100644 index 00000000..2f41221f --- /dev/null +++ b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/mist_io.v @@ -0,0 +1,530 @@ +// +// mist_io.v +// +// mist_io for the MiST board +// http://code.google.com/p/mist-board/ +// +// Copyright (c) 2014 Till Harbaum +// Copyright (c) 2015-2017 Sorgelig +// +// This source file is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published +// by the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This source file is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// +/////////////////////////////////////////////////////////////////////// + +// +// Use buffer to access SD card. It's time-critical part. +// Made module synchroneous with 2 clock domains: clk_sys and SPI_SCK +// (Sorgelig) +// +// for synchronous projects default value for PS2DIV is fine for any frequency of system clock. +// clk_ps2 = clk_sys/(PS2DIV*2) +// + +module mist_io #(parameter STRLEN=0, parameter PS2DIV=100) +( + + // parameter STRLEN and the actual length of conf_str have to match + input [(8*STRLEN)-1:0] conf_str, + + // Global clock. It should be around 100MHz (higher is better). + input clk_sys, + + // Global SPI clock from ARM. 24MHz + input SPI_SCK, + + input CONF_DATA0, + input SPI_SS2, + output SPI_DO, + input SPI_DI, + + output reg [7:0] joystick_0, + output reg [7:0] joystick_1, +// output reg [31:0] joystick_2, +// output reg [31:0] joystick_3, +// output reg [31:0] joystick_4, + output reg [15:0] joystick_analog_0, + output reg [15:0] joystick_analog_1, + output [1:0] buttons, + output [1:0] switches, + output scandoublerD, + output ypbpr, + + output reg [31:0] status, + + // SD config + input sd_conf, + input sd_sdhc, + output [1:0] img_mounted, // signaling that new image has been mounted + output reg [31:0] img_size, // size of image in bytes + + // SD block level access + input [31:0] sd_lba, + input [1:0] sd_rd, + input [1:0] sd_wr, + output reg sd_ack, + output reg sd_ack_conf, + + // SD byte level access. Signals for 2-PORT altsyncram. + output reg [8:0] sd_buff_addr, + output reg [7:0] sd_buff_dout, + input [7:0] sd_buff_din, + output reg sd_buff_wr, + + // ps2 keyboard emulation + output ps2_kbd_clk, + output reg ps2_kbd_data, + output ps2_mouse_clk, + output reg ps2_mouse_data, + + // ps2 alternative interface. + + // [8] - extended, [9] - pressed, [10] - toggles with every press/release + output reg [10:0] ps2_key = 0, + + // [24] - toggles with every event + output reg [24:0] ps2_mouse = 0, + + // ARM -> FPGA download + input ioctl_ce, + output reg ioctl_download = 0, // signal indicating an active download + output reg [7:0] ioctl_index, // menu index used to upload the file + output reg ioctl_wr = 0, + output reg [24:0] ioctl_addr, + output reg [7:0] ioctl_dout +); + +reg [7:0] but_sw; +reg [2:0] stick_idx; + +reg [1:0] mount_strobe = 0; +assign img_mounted = mount_strobe; + +assign buttons = but_sw[1:0]; +assign switches = but_sw[3:2]; +assign scandoublerD = but_sw[4]; +assign ypbpr = but_sw[5]; + +// this variant of user_io is for 8 bit cores (type == a4) only +wire [7:0] core_type = 8'ha4; + +// command byte read by the io controller +wire drive_sel = sd_rd[1] | sd_wr[1]; +wire [7:0] sd_cmd = { 4'h6, sd_conf, sd_sdhc, sd_wr[drive_sel], sd_rd[drive_sel] }; + +reg [7:0] cmd; +reg [2:0] bit_cnt; // counts bits 0-7 0-7 ... +reg [9:0] byte_cnt; // counts bytes + +reg spi_do; +assign SPI_DO = CONF_DATA0 ? 1'bZ : spi_do; + +reg [7:0] spi_data_out; + +// SPI transmitter +always@(negedge SPI_SCK) spi_do <= spi_data_out[~bit_cnt]; + +reg [7:0] spi_data_in; +reg spi_data_ready = 0; + +// SPI receiver +always@(posedge SPI_SCK or posedge CONF_DATA0) begin + reg [6:0] sbuf; + reg [31:0] sd_lba_r; + reg drive_sel_r; + + if(CONF_DATA0) begin + bit_cnt <= 0; + byte_cnt <= 0; + spi_data_out <= core_type; + end + else + begin + bit_cnt <= bit_cnt + 1'd1; + sbuf <= {sbuf[5:0], SPI_DI}; + + // finished reading command byte + if(bit_cnt == 7) begin + if(!byte_cnt) cmd <= {sbuf, SPI_DI}; + + spi_data_in <= {sbuf, SPI_DI}; + spi_data_ready <= ~spi_data_ready; + if(~&byte_cnt) byte_cnt <= byte_cnt + 8'd1; + + spi_data_out <= 0; + case({(!byte_cnt) ? {sbuf, SPI_DI} : cmd}) + // reading config string + 8'h14: if(byte_cnt < STRLEN) spi_data_out <= conf_str[(STRLEN - byte_cnt - 1)<<3 +:8]; + + // reading sd card status + 8'h16: if(byte_cnt == 0) begin + spi_data_out <= sd_cmd; + sd_lba_r <= sd_lba; + drive_sel_r <= drive_sel; + end else if (byte_cnt == 1) begin + spi_data_out <= drive_sel_r; + end else if(byte_cnt < 6) spi_data_out <= sd_lba_r[(5-byte_cnt)<<3 +:8]; + + // reading sd card write data + 8'h18: spi_data_out <= sd_buff_din; + endcase + end + end +end + +reg [31:0] ps2_key_raw = 0; +wire pressed = (ps2_key_raw[15:8] != 8'hf0); +wire extended = (~pressed ? (ps2_key_raw[23:16] == 8'he0) : (ps2_key_raw[15:8] == 8'he0)); + +// transfer to clk_sys domain +always@(posedge clk_sys) begin + reg old_ss1, old_ss2; + reg old_ready1, old_ready2; + reg [2:0] b_wr; + reg got_ps2 = 0; + + old_ss1 <= CONF_DATA0; + old_ss2 <= old_ss1; + old_ready1 <= spi_data_ready; + old_ready2 <= old_ready1; + + sd_buff_wr <= b_wr[0]; + if(b_wr[2] && (~&sd_buff_addr)) sd_buff_addr <= sd_buff_addr + 1'b1; + b_wr <= (b_wr<<1); + + if(old_ss2) begin + got_ps2 <= 0; + sd_ack <= 0; + sd_ack_conf <= 0; + sd_buff_addr <= 0; + if(got_ps2) begin + if(cmd == 4) ps2_mouse[24] <= ~ps2_mouse[24]; + if(cmd == 5) begin + ps2_key <= {~ps2_key[10], pressed, extended, ps2_key_raw[7:0]}; + if(ps2_key_raw == 'hE012E07C) ps2_key[9:0] <= 'h37C; // prnscr pressed + if(ps2_key_raw == 'h7CE0F012) ps2_key[9:0] <= 'h17C; // prnscr released + if(ps2_key_raw == 'hF014F077) ps2_key[9:0] <= 'h377; // pause pressed + end + end + end + else + if(old_ready2 ^ old_ready1) begin + + if(cmd == 8'h18 && ~&sd_buff_addr) sd_buff_addr <= sd_buff_addr + 1'b1; + + if(byte_cnt < 2) begin + + if (cmd == 8'h19) sd_ack_conf <= 1; + if((cmd == 8'h17) || (cmd == 8'h18)) sd_ack <= 1; + mount_strobe <= 0; + + if(cmd == 5) ps2_key_raw <= 0; + end else begin + + case(cmd) + // buttons and switches + 8'h01: but_sw <= spi_data_in; + 8'h02: joystick_0 <= spi_data_in; + 8'h03: joystick_1 <= spi_data_in; +// 8'h60: if (byte_cnt < 5) joystick_0[(byte_cnt-1)<<3 +:8] <= spi_data_in; +// 8'h61: if (byte_cnt < 5) joystick_1[(byte_cnt-1)<<3 +:8] <= spi_data_in; +// 8'h62: if (byte_cnt < 5) joystick_2[(byte_cnt-1)<<3 +:8] <= spi_data_in; +// 8'h63: if (byte_cnt < 5) joystick_3[(byte_cnt-1)<<3 +:8] <= spi_data_in; +// 8'h64: if (byte_cnt < 5) joystick_4[(byte_cnt-1)<<3 +:8] <= spi_data_in; + // store incoming ps2 mouse bytes + 8'h04: begin + got_ps2 <= 1; + case(byte_cnt) + 2: ps2_mouse[7:0] <= spi_data_in; + 3: ps2_mouse[15:8] <= spi_data_in; + 4: ps2_mouse[23:16] <= spi_data_in; + endcase + ps2_mouse_fifo[ps2_mouse_wptr] <= spi_data_in; + ps2_mouse_wptr <= ps2_mouse_wptr + 1'd1; + end + + // store incoming ps2 keyboard bytes + 8'h05: begin + got_ps2 <= 1; + ps2_key_raw[31:0] <= {ps2_key_raw[23:0], spi_data_in}; + ps2_kbd_fifo[ps2_kbd_wptr] <= spi_data_in; + ps2_kbd_wptr <= ps2_kbd_wptr + 1'd1; + end + + 8'h15: status[7:0] <= spi_data_in; + + // send SD config IO -> FPGA + // flag that download begins + // sd card knows data is config if sd_dout_strobe is asserted + // with sd_ack still being inactive (low) + 8'h19, + // send sector IO -> FPGA + // flag that download begins + 8'h17: begin + sd_buff_dout <= spi_data_in; + b_wr <= 1; + end + + // joystick analog + 8'h1a: begin + // first byte is joystick index + if(byte_cnt == 2) stick_idx <= spi_data_in[2:0]; + else if(byte_cnt == 3) begin + // second byte is x axis + if(stick_idx == 0) joystick_analog_0[15:8] <= spi_data_in; + else if(stick_idx == 1) joystick_analog_1[15:8] <= spi_data_in; + end else if(byte_cnt == 4) begin + // third byte is y axis + if(stick_idx == 0) joystick_analog_0[7:0] <= spi_data_in; + else if(stick_idx == 1) joystick_analog_1[7:0] <= spi_data_in; + end + end + + // notify image selection + 8'h1c: mount_strobe[spi_data_in[0]] <= 1; + + // send image info + 8'h1d: if(byte_cnt<6) img_size[(byte_cnt-2)<<3 +:8] <= spi_data_in; + + // status, 32bit version + 8'h1e: if(byte_cnt<6) status[(byte_cnt-2)<<3 +:8] <= spi_data_in; + default: ; + endcase + end + end +end + + +/////////////////////////////// PS2 /////////////////////////////// +// 8 byte fifos to store ps2 bytes +localparam PS2_FIFO_BITS = 3; + +reg clk_ps2; +always @(negedge clk_sys) begin + integer cnt; + cnt <= cnt + 1'd1; + if(cnt == PS2DIV) begin + clk_ps2 <= ~clk_ps2; + cnt <= 0; + end +end + +// keyboard +reg [7:0] ps2_kbd_fifo[1<= 1)&&(ps2_kbd_tx_state < 9)) begin + ps2_kbd_data <= ps2_kbd_tx_byte[0]; // data bits + ps2_kbd_tx_byte[6:0] <= ps2_kbd_tx_byte[7:1]; // shift down + if(ps2_kbd_tx_byte[0]) + ps2_kbd_parity <= !ps2_kbd_parity; + end + + // transmission of parity + if(ps2_kbd_tx_state == 9) ps2_kbd_data <= ps2_kbd_parity; + + // transmission of stop bit + if(ps2_kbd_tx_state == 10) ps2_kbd_data <= 1; // stop bit is 1 + + // advance state machine + if(ps2_kbd_tx_state < 11) ps2_kbd_tx_state <= ps2_kbd_tx_state + 1'd1; + else ps2_kbd_tx_state <= 0; + end + end +end + +// mouse +reg [7:0] ps2_mouse_fifo[1<= 1)&&(ps2_mouse_tx_state < 9)) begin + ps2_mouse_data <= ps2_mouse_tx_byte[0]; // data bits + ps2_mouse_tx_byte[6:0] <= ps2_mouse_tx_byte[7:1]; // shift down + if(ps2_mouse_tx_byte[0]) + ps2_mouse_parity <= !ps2_mouse_parity; + end + + // transmission of parity + if(ps2_mouse_tx_state == 9) ps2_mouse_data <= ps2_mouse_parity; + + // transmission of stop bit + if(ps2_mouse_tx_state == 10) ps2_mouse_data <= 1; // stop bit is 1 + + // advance state machine + if(ps2_mouse_tx_state < 11) ps2_mouse_tx_state <= ps2_mouse_tx_state + 1'd1; + else ps2_mouse_tx_state <= 0; + end + end +end + + +/////////////////////////////// DOWNLOADING /////////////////////////////// + +reg [7:0] data_w; +reg [24:0] addr_w; +reg rclk = 0; + +localparam UIO_FILE_TX = 8'h53; +localparam UIO_FILE_TX_DAT = 8'h54; +localparam UIO_FILE_INDEX = 8'h55; + +reg rdownload = 0; + +// data_io has its own SPI interface to the io controller +always@(posedge SPI_SCK, posedge SPI_SS2) begin + reg [6:0] sbuf; + reg [7:0] cmd; + reg [4:0] cnt; + reg [24:0] addr; + + if(SPI_SS2) cnt <= 0; + else begin + // don't shift in last bit. It is evaluated directly + // when writing to ram + if(cnt != 15) sbuf <= { sbuf[5:0], SPI_DI}; + + // count 0-7 8-15 8-15 ... + if(cnt < 15) cnt <= cnt + 1'd1; + else cnt <= 8; + + // finished command byte + if(cnt == 7) cmd <= {sbuf, SPI_DI}; + + // prepare/end transmission + if((cmd == UIO_FILE_TX) && (cnt == 15)) begin + // prepare + if(SPI_DI) begin + case(ioctl_index[4:0]) + 1: addr <= 25'h200000; // TRD buffer at 2MB + 2: addr <= 25'h400000; // tape buffer at 4MB + default: addr <= 25'h150000; // boot rom + endcase + rdownload <= 1; + end else begin + addr_w <= addr; + rdownload <= 0; + end + end + + // command 0x54: UIO_FILE_TX + if((cmd == UIO_FILE_TX_DAT) && (cnt == 15)) begin + addr_w <= addr; + data_w <= {sbuf, SPI_DI}; + addr <= addr + 1'd1; + rclk <= ~rclk; + end + + // expose file (menu) index + if((cmd == UIO_FILE_INDEX) && (cnt == 15)) ioctl_index <= {sbuf, SPI_DI}; + end +end + +// transfer to ioctl_clk domain. +// ioctl_index is set before ioctl_download, so it's stable already +always@(posedge clk_sys) begin + reg rclkD, rclkD2; + + if(ioctl_ce) begin + ioctl_download <= rdownload; + + rclkD <= rclk; + rclkD2 <= rclkD; + ioctl_wr <= 0; + + if(rclkD != rclkD2) begin + ioctl_dout <= data_w; + ioctl_addr <= addr_w; + ioctl_wr <= 1; + end + end +end + +endmodule \ No newline at end of file diff --git a/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/osd.v b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/osd.v new file mode 100644 index 00000000..b9181763 --- /dev/null +++ b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/osd.v @@ -0,0 +1,194 @@ +// A simple OSD implementation. Can be hooked up between a cores +// VGA output and the physical VGA pins + +module osd ( + // OSDs pixel clock, should be synchronous to cores pixel clock to + // avoid jitter. + input clk_sys, + + // SPI interface + input SPI_SCK, + input SPI_SS3, + input SPI_DI, + + input [1:0] rotate, //[0] - rotate [1] - left or right + + // VGA signals coming from core + input [5:0] R_in, + input [5:0] G_in, + input [5:0] B_in, + input HSync, + input VSync, + + // VGA signals going to video connector + output [5:0] R_out, + output [5:0] G_out, + output [5:0] B_out +); + +parameter OSD_X_OFFSET = 10'd0; +parameter OSD_Y_OFFSET = 10'd0; +parameter OSD_COLOR = 3'd0; + +localparam OSD_WIDTH = 10'd256; +localparam OSD_HEIGHT = 10'd128; + +// ********************************************************************************* +// spi client +// ********************************************************************************* + +// this core supports only the display related OSD commands +// of the minimig +reg osd_enable; +(* ramstyle = "no_rw_check" *) reg [7:0] osd_buffer[2047:0]; // the OSD buffer itself + +// the OSD has its own SPI interface to the io controller +always@(posedge SPI_SCK, posedge SPI_SS3) begin + reg [4:0] cnt; + reg [10:0] bcnt; + reg [7:0] sbuf; + reg [7:0] cmd; + + if(SPI_SS3) begin + cnt <= 0; + bcnt <= 0; + end else begin + sbuf <= {sbuf[6:0], SPI_DI}; + + // 0:7 is command, rest payload + if(cnt < 15) cnt <= cnt + 1'd1; + else cnt <= 8; + + if(cnt == 7) begin + cmd <= {sbuf[6:0], SPI_DI}; + + // lower three command bits are line address + bcnt <= {sbuf[1:0], SPI_DI, 8'h00}; + + // command 0x40: OSDCMDENABLE, OSDCMDDISABLE + if(sbuf[6:3] == 4'b0100) osd_enable <= SPI_DI; + end + + // command 0x20: OSDCMDWRITE + if((cmd[7:3] == 5'b00100) && (cnt == 15)) begin + osd_buffer[bcnt] <= {sbuf[6:0], SPI_DI}; + bcnt <= bcnt + 1'd1; + end + end +end + +// ********************************************************************************* +// video timing and sync polarity anaylsis +// ********************************************************************************* + +// horizontal counter +reg [9:0] h_cnt; +reg [9:0] hs_low, hs_high; +wire hs_pol = hs_high < hs_low; +wire [9:0] dsp_width = hs_pol ? hs_low : hs_high; + +// vertical counter +reg [9:0] v_cnt; +reg [9:0] vs_low, vs_high; +wire vs_pol = vs_high < vs_low; +wire [9:0] dsp_height = vs_pol ? vs_low : vs_high; + +wire doublescan = (dsp_height>350); + +reg ce_pix; +always @(negedge clk_sys) begin + integer cnt = 0; + integer pixsz, pixcnt; + reg hs; + + cnt <= cnt + 1; + hs <= HSync; + + pixcnt <= pixcnt + 1; + if(pixcnt == pixsz) pixcnt <= 0; + ce_pix <= !pixcnt; + + if(hs && ~HSync) begin + cnt <= 0; + pixsz <= (cnt >> 9) - 1; + pixcnt <= 0; + ce_pix <= 1; + end +end + +always @(posedge clk_sys) begin + reg hsD, hsD2; + reg vsD, vsD2; + + if(ce_pix) begin + // bring hsync into local clock domain + hsD <= HSync; + hsD2 <= hsD; + + // falling edge of HSync + if(!hsD && hsD2) begin + h_cnt <= 0; + hs_high <= h_cnt; + end + + // rising edge of HSync + else if(hsD && !hsD2) begin + h_cnt <= 0; + hs_low <= h_cnt; + v_cnt <= v_cnt + 1'd1; + end else begin + h_cnt <= h_cnt + 1'd1; + end + + vsD <= VSync; + vsD2 <= vsD; + + // falling edge of VSync + if(!vsD && vsD2) begin + v_cnt <= 0; + vs_high <= v_cnt; + end + + // rising edge of VSync + else if(vsD && !vsD2) begin + v_cnt <= 0; + vs_low <= v_cnt; + end + end +end + +// area in which OSD is being displayed +wire [9:0] h_osd_start = ((dsp_width - OSD_WIDTH)>> 1) + OSD_X_OFFSET; +wire [9:0] h_osd_end = h_osd_start + OSD_WIDTH; +wire [9:0] v_osd_start = ((dsp_height- (OSD_HEIGHT<> 1) + OSD_Y_OFFSET; +wire [9:0] v_osd_end = v_osd_start + (OSD_HEIGHT<= h_osd_start) && (h_cnt < h_osd_end) && + (VSync != vs_pol) && (v_cnt >= v_osd_start) && (v_cnt < v_osd_end); + +reg [10:0] osd_buffer_addr; +wire [7:0] osd_byte = osd_buffer[osd_buffer_addr]; +reg osd_pixel; + +always @(posedge clk_sys) begin + if(ce_pix) begin + osd_buffer_addr <= rotate[0] ? {rotate[1] ? osd_hcnt_next2[7:5] : ~osd_hcnt_next2[7:5], + rotate[1] ? (doublescan ? ~osd_vcnt[7:0] : ~{osd_vcnt[6:0], 1'b0}) : + (doublescan ? osd_vcnt[7:0] : {osd_vcnt[6:0], 1'b0})} : + {doublescan ? osd_vcnt[7:5] : osd_vcnt[6:4], osd_hcnt_next2[7:0]}; + + osd_pixel <= rotate[0] ? osd_byte[rotate[1] ? osd_hcnt_next[4:2] : ~osd_hcnt_next[4:2]] : + osd_byte[doublescan ? osd_vcnt[4:2] : osd_vcnt[3:1]]; + end +end + +assign R_out = !osd_de ? R_in : {osd_pixel, osd_pixel, OSD_COLOR[2], R_in[5:3]}; +assign G_out = !osd_de ? G_in : {osd_pixel, osd_pixel, OSD_COLOR[1], G_in[5:3]}; +assign B_out = !osd_de ? B_in : {osd_pixel, osd_pixel, OSD_COLOR[0], B_in[5:3]}; + +endmodule diff --git a/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/pacman.vhd b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/pacman.vhd new file mode 100644 index 00000000..e66a67b8 --- /dev/null +++ b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/pacman.vhd @@ -0,0 +1,669 @@ +-- +-- A simulation model of Pacman hardware +-- Copyright (c) MikeJ - January 2006 +-- +-- All rights reserved +-- +-- Redistribution and use in source and synthezised forms, with or without +-- modification, are permitted provided that the following conditions are met: +-- +-- Redistributions of source code must retain the above copyright notice, +-- this list of conditions and the following disclaimer. +-- +-- Redistributions in synthesized form must reproduce the above copyright +-- notice, this list of conditions and the following disclaimer in the +-- documentation and/or other materials provided with the distribution. +-- +-- Neither the name of the author nor the names of other contributors may +-- be used to endorse or promote products derived from this software without +-- specific prior written permission. +-- +-- THIS CODE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +-- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +-- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +-- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE +-- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +-- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +-- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +-- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +-- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +-- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +-- POSSIBILITY OF SUCH DAMAGE. +-- +-- You are responsible for any legal issues arising from your use of this code. +-- +-- The latest version of this file can be found at: www.fpgaarcade.com +-- +-- Email pacman@fpgaarcade.com +-- +-- Revision list +-- +-- version 005 Papilio release by Jack Gassett +-- version 004 spartan3e release +-- version 003 Jan 2006 release, general tidy up +-- version 002 optional vga scan doubler +-- version 001 initial release +-- +library ieee; + use ieee.std_logic_1164.all; + use ieee.std_logic_unsigned.all; + use ieee.numeric_std.all; + +entity pacmant is + port ( + O_VIDEO_R : out std_logic_vector(2 downto 0); + O_VIDEO_G : out std_logic_vector(2 downto 0); + O_VIDEO_B : out std_logic_vector(1 downto 0); + O_HSYNC : out std_logic; + O_VSYNC : out std_logic; + O_HBLANK : out std_logic; + O_VBLANK : out std_logic; + -- + O_AUDIO : out std_logic_vector(7 downto 0); + -- + I_JOYSTICK_A : in std_logic_vector(4 downto 0); + I_JOYSTICK_B : in std_logic_vector(4 downto 0); + + I_SW : in std_logic_vector(3 downto 0); -- active high + -- + RESET : in std_logic; + CLK : in std_logic; + ENA_6 : in std_logic + ); +end; + +architecture RTL of pacmant is + + + -- timing + signal hcnt : std_logic_vector(8 downto 0) := "010000000"; -- 80 + signal vcnt : std_logic_vector(8 downto 0) := "011111000"; -- 0F8 + + signal do_hsync : boolean; + signal hsync : std_logic; + signal vsync : std_logic; + signal hblank : std_logic; + signal vblank : std_logic := '1'; + + -- cpu + signal cpu_ena : std_logic; + signal cpu_m1_l : std_logic; + signal cpu_mreq_l : std_logic; + signal cpu_iorq_l : std_logic; + signal cpu_rd_l : std_logic; + signal cpu_rfsh_l : std_logic; + signal cpu_wait_l : std_logic; + signal cpu_int_l : std_logic; + signal cpu_nmi_l : std_logic; + signal cpu_busrq_l : std_logic; + signal cpu_addr : std_logic_vector(15 downto 0); + signal cpu_data_out : std_logic_vector(7 downto 0); + signal cpu_data_in : std_logic_vector(7 downto 0); + + signal program_rom_dinl : std_logic_vector(7 downto 0); + signal sync_bus_cs_l : std_logic; + + signal control_reg : std_logic_vector(7 downto 0); + -- + signal vram_addr_ab : std_logic_vector(11 downto 0); + signal ab : std_logic_vector(11 downto 0); + + signal sync_bus_db : std_logic_vector(7 downto 0); + signal sync_bus_r_w_l : std_logic; + signal sync_bus_wreq_l : std_logic; + signal sync_bus_stb : std_logic; + + signal cpu_vec_reg : std_logic_vector(7 downto 0); + signal sync_bus_reg : std_logic_vector(7 downto 0); + + signal vram_l : std_logic; + signal rams_data_out : std_logic_vector(7 downto 0); + -- more decode + signal wr0_l : std_logic; + signal wr1_l : std_logic; + signal wr2_l : std_logic; + signal iodec_out_l : std_logic; + signal iodec_wdr_l : std_logic; + signal iodec_in0_l : std_logic; + signal iodec_in1_l : std_logic; + signal iodec_dipsw_l : std_logic; + + -- watchdog + signal watchdog_cnt : std_logic_vector(3 downto 0); + signal watchdog_reset_l : std_logic; + signal freeze : std_logic; + + -- ip registers + signal button_in : std_logic_vector(13 downto 0); + signal button_debounced : std_logic_vector(13 downto 0); + signal in0_reg : std_logic_vector(7 downto 0); + signal in1_reg : std_logic_vector(7 downto 0); + signal dipsw_reg : std_logic_vector(7 downto 0); + signal joystick_reg : std_logic_vector(4 downto 0); + signal joystick_reg2 : std_logic_vector(4 downto 0); + + +begin + joystick_reg <= I_JOYSTICK_A; + joystick_reg2 <= I_JOYSTICK_B; + + -- + -- video timing + -- + p_hvcnt : process + variable hcarry,vcarry : boolean; + begin + wait until rising_edge(clk); + if (ena_6 = '1') then + hcarry := (hcnt = "111111111"); + if hcarry then + hcnt <= "010000000"; -- 080 + else + hcnt <= hcnt +"1"; + end if; + -- hcnt 8 on circuit is 256H_L + vcarry := (vcnt = "111111111"); + if do_hsync then + if vcarry then + vcnt <= "011111000"; -- 0F8 + else + vcnt <= vcnt +"1"; + end if; + end if; + end if; + end process; + + p_sync_comb : process(hcnt, vcnt) + begin + vsync <= not vcnt(8); + do_hsync <= (hcnt = "010101111"); -- 0AF + end process; + + p_sync : process + begin + wait until rising_edge(clk); + if (ena_6 = '1') then + -- Timing hardware is coded differently to the real hw + -- to avoid the use of multiple clocks. Result is identical. + + if (hcnt = "010010111") then -- 097 + O_HBLANK <= '1'; + elsif (hcnt = "010001111") then -- 08F + hblank <= '1'; + elsif (hcnt = "011101111") then + hblank <= '0'; -- 0EF + O_HBLANK <= '0'; + end if; + + if do_hsync then + hsync <= '1'; + elsif (hcnt = "011001111") then -- 0CF + hsync <= '0'; + end if; + + if do_hsync then + if (vcnt = "111101111") then -- 1EF + vblank <= '1'; + elsif (vcnt = "100001111") then -- 10F + vblank <= '0'; + end if; + end if; + end if; + end process; + + -- + -- cpu + -- + p_cpu_wait_comb : process(freeze, sync_bus_wreq_l) + begin + cpu_wait_l <= '1'; + if (freeze = '1') or (sync_bus_wreq_l = '0') then + cpu_wait_l <= '0'; + end if; + end process; + + p_irq_req_watchdog : process + variable rising_vblank : boolean; + begin + wait until rising_edge(clk); + if (ena_6 = '1') then + rising_vblank := do_hsync and (vcnt = "111101111"); -- 1EF + --rising_vblank := do_hsync; -- debug + -- interrupt 8c + + if (control_reg(1) = '0') then + cpu_int_l <= '1'; + elsif rising_vblank then -- 1EF + cpu_int_l <= '0'; + end if; + + -- watchdog 8c + -- note sync reset + if (reset = '1') then + watchdog_cnt <= "1111"; + elsif (iodec_wdr_l = '0') then + watchdog_cnt <= "0000"; + elsif rising_vblank and (freeze = '0') then + watchdog_cnt <= watchdog_cnt + "1"; + end if; + + + watchdog_reset_l <= '1'; + if (watchdog_cnt = "1111") then + watchdog_reset_l <= '0'; + end if; + + -- simulation + -- pragma translate_off + -- synopsys translate_off + watchdog_reset_l <= not reset; -- watchdog disable + -- synopsys translate_on + -- pragma translate_on + end if; + end process; + + -- other cpu signals + cpu_busrq_l <= '1'; + cpu_nmi_l <= '1'; + + p_cpu_ena : process(hcnt, ena_6) + begin + cpu_ena <= '0'; + if (ena_6 = '1') then + cpu_ena <= hcnt(0); + end if; + end process; + + u_cpu : entity work.T80sed + port map ( + RESET_n => watchdog_reset_l, + CLK_n => clk, + CLKEN => cpu_ena, + WAIT_n => cpu_wait_l, + INT_n => cpu_int_l, + NMI_n => cpu_nmi_l, + BUSRQ_n => cpu_busrq_l, + M1_n => cpu_m1_l, + MREQ_n => cpu_mreq_l, + IORQ_n => cpu_iorq_l, + RD_n => cpu_rd_l, + WR_n => open, + RFSH_n => cpu_rfsh_l, + HALT_n => open, + BUSAK_n => open, + A => cpu_addr, + DI => cpu_data_in, + DO => cpu_data_out + ); + -- + -- primary addr decode + -- + p_mem_decode_comb : process(cpu_rfsh_l, cpu_rd_l, cpu_mreq_l, cpu_addr) + begin + -- rom 0x0000 - 0x3FFF + -- syncbus 0x4000 - 0x7FFF + + -- 7M + -- 7N + sync_bus_cs_l <= '1'; +-- program_rom_cs_l <= '1'; + + if (cpu_mreq_l = '0') and (cpu_rfsh_l = '1') then + +-- if (cpu_addr(14) = '0') and (cpu_rd_l = '0') then +-- program_rom_cs_l <= '0'; +-- end if; + + if (cpu_addr(14) = '1') then + sync_bus_cs_l <= '0'; + end if; + + end if; + end process; + -- + -- sync bus custom ic + -- + p_sync_bus_reg : process + begin + wait until rising_edge(clk); + if (ena_6 = '1') then + -- register on sync bus module that is used to store interrupt vector + if (cpu_iorq_l = '0') and (cpu_m1_l = '1') then + cpu_vec_reg <= cpu_data_out; + end if; + + -- read holding reg + if (hcnt(1 downto 0) = "01") then + sync_bus_reg <= cpu_data_in; + end if; + end if; + end process; + + p_sync_bus_comb : process(cpu_rd_l, sync_bus_cs_l, hcnt) + begin + -- sync_bus_stb is now an active low clock enable signal + sync_bus_stb <= '1'; + sync_bus_r_w_l <= '1'; + + if (sync_bus_cs_l = '0') and (hcnt(1) = '0') then + if (cpu_rd_l = '1') then + sync_bus_r_w_l <= '0'; + end if; + sync_bus_stb <= '0'; + end if; + + sync_bus_wreq_l <= '1'; + if (sync_bus_cs_l = '0') and (hcnt(1) = '1') and (cpu_rd_l = '0') then + sync_bus_wreq_l <= '0'; + end if; + end process; + -- + -- vram addr custom ic + -- + u_vram_addr : entity work.PACMAN_VRAM_ADDR + port map ( + AB => vram_addr_ab, + H256_L => hcnt(8), + H128 => hcnt(7), + H64 => hcnt(6), + H32 => hcnt(5), + H16 => hcnt(4), + H8 => hcnt(3), + H4 => hcnt(2), + H2 => hcnt(1), + H1 => hcnt(0), + V128 => vcnt(7), + V64 => vcnt(6), + V32 => vcnt(5), + V16 => vcnt(4), + V8 => vcnt(3), + V4 => vcnt(2), + V2 => vcnt(1), + V1 => vcnt(0), + FLIP => '0'--control_reg(3) + ); + + p_ab_mux_comb : process(hcnt, cpu_addr, vram_addr_ab) + begin + --When 2H is low, the CPU controls the bus. + if (hcnt(1) = '0') then + ab <= cpu_addr(11 downto 0); + else + ab <= vram_addr_ab; + end if; + end process; + + p_vram_comb : process(hcnt, cpu_addr, sync_bus_stb) + variable a,b : std_logic; + begin + + a := not (cpu_addr(12) or sync_bus_stb); + b := hcnt(1) and hcnt(0); + vram_l <= not (a or b); + end process; + + p_io_decode_comb : process(sync_bus_r_w_l, sync_bus_stb, ab, cpu_addr) + variable sel : std_logic_vector(2 downto 0); + variable dec : std_logic_vector(7 downto 0); + variable selb : std_logic_vector(1 downto 0); + variable decb : std_logic_vector(3 downto 0); + begin + -- WRITE + + -- out_l 0x5000 - 0x503F control space + + -- 0x5040 - unused + -- 0x5050 - unused + -- 0x5060 - 0x506F sprite + + -- wr0_l 0x5080 - 0x508F sound 010100 00 10 000000 + -- wr1_l 0x5090 - 0x509F sound + -- wr2_l 0x50A0 - 0x50AF sprite 010100 00 10 100000 + -- wdr_l 0x50C0 - 0x50FF watchdog reset + + -- READ + + -- in0_l 0x5000 - 0x503F in port 0 + -- in1_l 0x5040 - 0x507F in port 1 + -- dipsw_l 0x5080 - 0x50BF dip switches + + -- 7J + dec := "11111111"; + sel := sync_bus_r_w_l & ab(7) & ab(6); + if (cpu_addr(12) = '1') and ( sync_bus_stb = '0') then + case sel is-- # + when "000" => dec := "11111110";-- + when "001" => dec := "11111101"; + when "010" => dec := "11111011";-- + when "011" => dec := "11110111"; + when "100" => dec := "11101111"; + when "101" => dec := "11011111"; + when "110" => dec := "10111111"; + when "111" => dec := "01111111"; + when others => null; + end case; + end if; + iodec_out_l <= dec(0); + iodec_wdr_l <= dec(3); + iodec_in0_l <= dec(4); + iodec_in1_l <= dec(5); + iodec_dipsw_l <= dec(6); + + -- 7M + decb := "1111"; + selb := ab(5) & ab(4); + if (dec(2) = '0') then + case selb is + when "00" => decb := "1110"; + when "01" => decb := "1101"; + when "10" => decb := "1011"; + when "11" => decb := "0111"; + when others => null; + end case; + end if; + wr0_l <= decb(0);--101000 00 100000 1010000 10 000000 + wr1_l <= decb(1); + wr2_l <= decb(2); + end process; + + p_control_reg : process + variable ena : std_logic_vector(7 downto 0); + begin + -- 8 bit addressable latch 7K + -- (made into register) + + -- 0 not used + -- 1 interrupt ena + -- 2 not used + -- 3 flip + -- 4 1 player start lamp + -- 5 2 player start lamp + -- 6 coin lockout + -- 7 coin counter + + wait until rising_edge(clk); + if (ena_6 = '1') then + ena := "00000000"; + if (iodec_out_l = '0') then + case ab(2 downto 0) is + when "000" => ena := "00000001"; + when "001" => ena := "00000010"; + when "010" => ena := "00000100"; + when "011" => ena := "00001000"; + when "100" => ena := "00010000"; + when "101" => ena := "00100000"; + when "110" => ena := "01000000"; + when "111" => ena := "10000000"; + when others => null; + end case; + end if; + + if (watchdog_reset_l = '0') then + control_reg <= (others => '0'); + else + for i in 0 to 7 loop + if (ena(i) = '1') then + control_reg(i) <= cpu_data_out(0); + end if; + end loop; + end if; + end if; + end process; + + p_db_mux_comb : process(hcnt, cpu_data_out, rams_data_out) + begin + -- simplified data source for video subsystem + -- only cpu or ram are sources of interest + if (hcnt(1) = '0') then + sync_bus_db <= cpu_data_out; + else + sync_bus_db <= rams_data_out; + end if; + end process; + + p_cpu_data_in_mux_comb : process(cpu_addr, cpu_iorq_l, cpu_m1_l, sync_bus_wreq_l, + iodec_in0_l, iodec_in1_l, iodec_dipsw_l, cpu_vec_reg, sync_bus_reg, program_rom_dinl, + rams_data_out, in0_reg, in1_reg, dipsw_reg) + begin + -- simplifed again + if (cpu_iorq_l = '0') and (cpu_m1_l = '0') then + cpu_data_in <= cpu_vec_reg; + elsif (sync_bus_wreq_l = '0') then + cpu_data_in <= sync_bus_reg; + else + if (cpu_addr(15 downto 14) = "00") then -- ROM at 0000 - 3fff + cpu_data_in <= program_rom_dinl; + elsif (cpu_addr(15 downto 13) = "100") then -- ROM at 8000 - 9fff + cpu_data_in <= X"00"; + else + cpu_data_in <= rams_data_out; + if (iodec_in0_l = '0') then cpu_data_in <= in0_reg; end if; + if (iodec_in1_l = '0') then cpu_data_in <= in1_reg; end if; + if (iodec_dipsw_l = '0') then cpu_data_in <= dipsw_reg; end if; + end if; + end if; + end process; + + u_rams : work.dpram generic map (12,8) + port map + ( + clk_a_i => clk, + en_a_i => ena_6, + we_i => not sync_bus_r_w_l and not vram_l, + addr_a_i => ab(11 downto 0), + data_a_i => cpu_data_out, -- cpu only source of ram data + + clk_b_i => clk, + addr_b_i => ab(11 downto 0), + data_b_o => rams_data_out + ); + + -- example of internal program rom, if you have a big enough device + u_program_rom : entity work.ROM_PGM_0 + port map ( + CLK => clk, + ADDR => cpu_addr(13 downto 0), + DATA => program_rom_dinl + ); + + -- + -- video subsystem + -- + u_video : entity work.PACMAN_VIDEO + port map ( + I_HCNT => hcnt, + I_VCNT => vcnt, + -- + I_AB => ab, + I_DB => sync_bus_db, + -- + I_HBLANK => hblank, + I_VBLANK => vblank, + I_FLIP => '0',--control_reg(3), + I_WR2_L => wr2_l, + -- + O_RED => O_VIDEO_R, + O_GREEN => O_VIDEO_G, + O_BLUE => O_VIDEO_B, + -- + ENA_6 => ena_6, + CLK => clk + ); + + O_HSYNC <= hSync; + O_VSYNC <= vSync; + + --O_HBLANK <= hblank; + O_VBLANK <= vblank; + + -- + -- + -- audio subsystem + -- + u_audio : entity work.PACMAN_AUDIO + port map ( + I_HCNT => hcnt, + -- + I_AB => ab, + I_DB => sync_bus_db, + -- + I_WR1_L => wr1_l, + I_WR0_L => wr0_l, + I_SOUND_ON => '1',--control_reg(1), + -- + O_AUDIO => O_AUDIO, + ENA_6 => ena_6, + CLK => clk + ); + + button_in(8 downto 5) <= I_SW(3 downto 0); + button_in(4 downto 0) <= joystick_reg(4 downto 0); + button_in(13 downto 9) <= joystick_reg2(4 downto 0); + + button_debounced <= button_in; + +--button_debounced Arcade MegaWing Location +-- 8 RIGHT PushButton +-- 7 DOWN PushButton +-- 6 UP PushButton +-- 5 LEFT PushButton +-- 4 Fire Joystick +-- 3 RIGHT Joystick +-- 2 LEFT Joystick +-- 1 DOWN Joystick +-- 0 UP Joystick + + p_input_registers : process + begin + wait until rising_edge(clk); + if (ena_6 = '1') then + -- on is low + in0_reg(7) <= not button_debounced(6); -- credit SERVICE + in0_reg(6) <= '1'; -- coin2 + in0_reg(5) <= not button_debounced(7); -- coin1 + in0_reg(4) <= '1'; -- test_l dipswitch (rack advance) CHEAT + in0_reg(3) <= button_debounced(1); -- p1 down + in0_reg(2) <= button_debounced(3); -- p1 right + in0_reg(1) <= button_debounced(2); -- p1 left + in0_reg(0) <= button_debounced(0); -- p1 up + + in1_reg(7) <= '1'; -- UNUSED + in1_reg(6) <= not button_debounced(8); -- start2 + in1_reg(5) <= not button_debounced(5); -- start1 + in1_reg(4) <= button_debounced(13); -- test and fire + in1_reg(3) <= button_debounced(10); -- p2 down + in1_reg(2) <= button_debounced(12); -- p2 right + in1_reg(1) <= button_debounced(11); -- p2 left + in1_reg(0) <= button_debounced(9); -- p2 up + + -- on is low + freeze <= '0'; + dipsw_reg(7) <= '1'; -- character set ? + dipsw_reg(6) <= '1'; -- difficulty ? + dipsw_reg(5 downto 4) <= "00"; -- bonus pacman at 10K + dipsw_reg(3 downto 2) <= "11"; -- pacman (3) + dipsw_reg(1 downto 0) <= "01"; -- cost (1 coin, 1 play) + end if; + end process; + +end RTL; diff --git a/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/pacman_audio.vhd b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/pacman_audio.vhd new file mode 100644 index 00000000..39619ea0 --- /dev/null +++ b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/pacman_audio.vhd @@ -0,0 +1,209 @@ +-- +-- A simulation model of Pacman hardware +-- Copyright (c) MikeJ - January 2006 +-- +-- All rights reserved +-- +-- Redistribution and use in source and synthezised forms, with or without +-- modification, are permitted provided that the following conditions are met: +-- +-- Redistributions of source code must retain the above copyright notice, +-- this list of conditions and the following disclaimer. +-- +-- Redistributions in synthesized form must reproduce the above copyright +-- notice, this list of conditions and the following disclaimer in the +-- documentation and/or other materials provided with the distribution. +-- +-- Neither the name of the author nor the names of other contributors may +-- be used to endorse or promote products derived from this software without +-- specific prior written permission. +-- +-- THIS CODE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +-- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +-- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +-- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE +-- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +-- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +-- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +-- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +-- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +-- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +-- POSSIBILITY OF SUCH DAMAGE. +-- +-- You are responsible for any legal issues arising from your use of this code. +-- +-- The latest version of this file can be found at: www.fpgaarcade.com +-- +-- Email pacman@fpgaarcade.com +-- +-- Revision list +-- +-- version 003 Jan 2006 release, general tidy up +-- version 002 added volume multiplier +-- version 001 initial release +-- +library ieee; + use ieee.std_logic_1164.all; + use ieee.std_logic_unsigned.all; + use ieee.numeric_std.all; + +library UNISIM; + +entity PACMAN_AUDIO is + port ( + I_HCNT : in std_logic_vector(8 downto 0); + -- + I_AB : in std_logic_vector(11 downto 0); + I_DB : in std_logic_vector( 7 downto 0); + -- + I_WR1_L : in std_logic; + I_WR0_L : in std_logic; + I_SOUND_ON : in std_logic; + -- + O_AUDIO : out std_logic_vector(7 downto 0); + ENA_6 : in std_logic; + CLK : in std_logic + ); +end; + +architecture RTL of PACMAN_AUDIO is + + signal addr : std_logic_vector(3 downto 0); + signal data : std_logic_vector(3 downto 0); + signal vol_ram_dout : std_logic_vector(3 downto 0); + signal frq_ram_dout : std_logic_vector(3 downto 0); + + signal sum : std_logic_vector(5 downto 0); + signal accum_reg : std_logic_vector(5 downto 0); + signal rom3m_n : std_logic_vector(15 downto 0); + signal rom3m_w : std_logic_vector(3 downto 0); + signal rom3m : std_logic_vector(3 downto 0); + + signal rom1m_addr : std_logic_vector(7 downto 0); + signal rom1m_data : std_logic_vector(7 downto 0); + +begin + p_sel_com : process(I_HCNT, I_AB, I_DB, accum_reg) + begin + if (I_HCNT(1) = '0') then -- 2h, + addr <= I_AB(3 downto 0); + data <= I_DB(3 downto 0); -- removed invert + else + addr <= I_HCNT(5 downto 2); + data <= accum_reg(4 downto 1); + end if; + end process; + + vol_ram : work.dpram generic map (4,4) + port map + ( + clk_a_i => CLK, + en_a_i => ENA_6, + we_i => not I_WR1_L, + addr_a_i => addr(3 downto 0), + data_a_i => data, + + clk_b_i => CLK, + addr_b_i => addr(3 downto 0), + data_b_o => vol_ram_dout + ); + + frq_ram : work.dpram generic map (4,4) + port map + ( + clk_a_i => CLK, + en_a_i => ENA_6, + we_i => rom3m(1), + addr_a_i => addr(3 downto 0), + data_a_i => data, + + clk_b_i => CLK, + addr_b_i => addr(3 downto 0), + data_b_o => frq_ram_dout + ); + + p_control_rom_comb : process(I_HCNT) + begin + rom3m_n <= x"0000"; rom3m_w <= x"0"; -- default assign + case I_HCNT(3 downto 0) is + when x"0" => rom3m_n <= x"0008"; rom3m_w <= x"0"; + when x"1" => rom3m_n <= x"0000"; rom3m_w <= x"2"; + when x"2" => rom3m_n <= x"1111"; rom3m_w <= x"0"; + when x"3" => rom3m_n <= x"2222"; rom3m_w <= x"0"; + when x"4" => rom3m_n <= x"0000"; rom3m_w <= x"0"; + when x"5" => rom3m_n <= x"0000"; rom3m_w <= x"2"; + when x"6" => rom3m_n <= x"1101"; rom3m_w <= x"0"; + when x"7" => rom3m_n <= x"2242"; rom3m_w <= x"0"; + when x"8" => rom3m_n <= x"0080"; rom3m_w <= x"0"; + when x"9" => rom3m_n <= x"0000"; rom3m_w <= x"2"; + when x"A" => rom3m_n <= x"1011"; rom3m_w <= x"0"; + when x"B" => rom3m_n <= x"2422"; rom3m_w <= x"0"; + when x"C" => rom3m_n <= x"0800"; rom3m_w <= x"0"; + when x"D" => rom3m_n <= x"0000"; rom3m_w <= x"2"; + when x"E" => rom3m_n <= x"0111"; rom3m_w <= x"0"; + when x"F" => rom3m_n <= x"4222"; rom3m_w <= x"0"; + when others => null; + end case; + end process; + + p_control_rom_op_comb : process(I_HCNT, I_WR0_L, rom3m_n, rom3m_w) + begin + rom3m <= rom3m_w; + if (I_WR0_L = '1') then + case I_HCNT(5 downto 4) is + when "00" => rom3m <= rom3m_n( 3 downto 0); + when "01" => rom3m <= rom3m_n( 7 downto 4); + when "10" => rom3m <= rom3m_n(11 downto 8); + when "11" => rom3m <= rom3m_n(15 downto 12); + when others => null; + end case; + end if; + end process; + + p_adder : process(vol_ram_dout, frq_ram_dout, accum_reg) + begin + -- 1K 4 bit adder + sum <= ('0' & vol_ram_dout & '1') + ('0' & frq_ram_dout & accum_reg(5)); + end process; + + p_accum_reg : process + begin + -- 1L + wait until rising_edge(CLK); + if (ENA_6 = '1') then + if (rom3m(3) = '1') then -- clear + accum_reg <= "000000"; + elsif (rom3m(0) = '1') then -- rising edge clk + accum_reg <= sum(5 downto 1) & accum_reg(4); + end if; + end if; + end process; + + p_rom_1m_addr_comb : process(accum_reg, frq_ram_dout) + begin + rom1m_addr(7 downto 5) <= frq_ram_dout(2 downto 0); + rom1m_addr(4 downto 0) <= accum_reg(4 downto 0); + + end process; + + audio_rom_1m : entity work.PROM1_DST + port map( + CLK => CLK, + ADDR => rom1m_addr, + DATA => rom1m_data + ); + + p_original_output_reg : process + begin + -- 2m used to use async clear + wait until rising_edge(CLK); + if (ENA_6 = '1') then + if (I_SOUND_ON = '0') then + O_AUDIO <= "00000000"; + elsif (rom3m(2) = '1') then + O_AUDIO <= vol_ram_dout(3 downto 0) * rom1m_data(3 downto 0); + end if; + end if; + end process; + +end architecture RTL; diff --git a/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/pacman_video.vhd b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/pacman_video.vhd new file mode 100644 index 00000000..11424dd4 --- /dev/null +++ b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/pacman_video.vhd @@ -0,0 +1,360 @@ +-- +-- A simulation model of Pacman hardware +-- Copyright (c) MikeJ - January 2006 +-- +-- All rights reserved +-- +-- Redistribution and use in source and synthezised forms, with or without +-- modification, are permitted provided that the following conditions are met: +-- +-- Redistributions of source code must retain the above copyright notice, +-- this list of conditions and the following disclaimer. +-- +-- Redistributions in synthesized form must reproduce the above copyright +-- notice, this list of conditions and the following disclaimer in the +-- documentation and/or other materials provided with the distribution. +-- +-- Neither the name of the author nor the names of other contributors may +-- be used to endorse or promote products derived from this software without +-- specific prior written permission. +-- +-- THIS CODE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +-- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +-- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +-- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE +-- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +-- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +-- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +-- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +-- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +-- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +-- POSSIBILITY OF SUCH DAMAGE. +-- +-- You are responsible for any legal issues arising from your use of this code. +-- +-- The latest version of this file can be found at: www.fpgaarcade.com +-- +-- Email pacman@fpgaarcade.com +-- +-- Revision list +-- +-- version 003 Jan 2006 release, general tidy up +-- version 001 initial release +-- +library ieee; + use ieee.std_logic_1164.all; + use ieee.std_logic_unsigned.all; + use ieee.numeric_std.all; + +library UNISIM; + +entity PACMAN_VIDEO is + port ( + I_HCNT : in std_logic_vector(8 downto 0); + I_VCNT : in std_logic_vector(8 downto 0); + -- + I_AB : in std_logic_vector(11 downto 0); + I_DB : in std_logic_vector( 7 downto 0); + -- + I_HBLANK : in std_logic; + I_VBLANK : in std_logic; + I_FLIP : in std_logic; + I_WR2_L : in std_logic; + -- + O_RED : out std_logic_vector(2 downto 0); + O_GREEN : out std_logic_vector(2 downto 0); + O_BLUE : out std_logic_vector(1 downto 0); + ENA_6 : in std_logic; + CLK : in std_logic + ); +end; + +architecture RTL of PACMAN_VIDEO is + + signal sprite_xy_ram_temp : std_logic_vector(7 downto 0); + signal dr : std_logic_vector(7 downto 0); + + signal char_reg : std_logic_vector(7 downto 0); + signal char_sum_reg : std_logic_vector(3 downto 0); + signal char_match_reg : std_logic; + signal char_hblank_reg : std_logic; + signal char_hblank_reg_t1 : std_logic; + signal db_reg : std_logic_vector(7 downto 0); + + signal xflip : std_logic; + signal yflip : std_logic; + signal obj_on : std_logic; + + signal ca : std_logic_vector(12 downto 0); + signal char_rom_5ef_dout : std_logic_vector(7 downto 0); + + signal shift_regl : std_logic_vector(3 downto 0); + signal shift_regu : std_logic_vector(3 downto 0); + signal shift_op : std_logic_vector(1 downto 0); + signal shift_sel : std_logic_vector(1 downto 0); + + signal vout_obj_on : std_logic; + signal vout_yflip : std_logic; + signal vout_hblank : std_logic; + signal vout_db : std_logic_vector(4 downto 0); + + signal cntr_ld : std_logic; + signal ra : std_logic_vector(7 downto 0); + signal sprite_ram_ip : std_logic_vector(3 downto 0); + signal sprite_ram_op : std_logic_vector(3 downto 0); + signal sprite_ram_addr : std_logic_vector(7 downto 0); + signal sprite_ram_addr_t1 : std_logic_vector(7 downto 0); + signal vout_obj_on_t1 : std_logic; + signal col_rom_addr : std_logic_vector(7 downto 0); + + signal lut_4a : std_logic_vector(7 downto 0); + signal lut_4a_t1 : std_logic_vector(7 downto 0); + signal vout_hblank_t1 : std_logic; + signal sprite_ram_reg : std_logic_vector(4 downto 0); + + signal video_out : std_logic_vector(7 downto 0); + signal video_op_sel : std_logic; + signal final_col : std_logic_vector(4 downto 0); + +begin + + -- ram enable is low when HBLANK_L is 0 (for sprite access) or + -- 2H is low (for cpu writes) + -- we can simplify this + dr <= not sprite_xy_ram_temp when I_HBLANK = '1' else "11111111"; -- pull ups on board + + sprite_xy_ram : work.dpram generic map (4,8) + port map + ( + clk_a_i => CLK, + en_a_i => ENA_6, + we_i => not I_WR2_L, + addr_a_i => I_AB(3 downto 0), + data_a_i => I_DB, + + clk_b_i => CLK, + addr_b_i => I_AB(3 downto 0), + data_b_o => sprite_xy_ram_temp + ); + + p_char_regs : process + variable inc : std_logic; + variable sum : std_logic_vector(8 downto 0); + variable match : std_logic; + begin + wait until rising_edge (CLK); + if (I_HCNT(2 downto 0) = "011") and (ENA_6 = '1') then -- rising 4h + inc := (not I_HBLANK); + + -- 1f, 2f + sum := (I_VCNT(7 downto 0) & '1') + (dr & inc); + + -- 3e + match := '0'; + + if (sum(8 downto 5) = "1111") then + match := '1'; + end if; + + -- 1h + char_sum_reg <= sum(4 downto 1); + char_match_reg <= match; + char_hblank_reg <= I_HBLANK; + + -- 4d + db_reg <= I_DB; -- character reg + end if; + end process; + + p_flip_comb : process(char_hblank_reg, I_FLIP, db_reg) + begin + if (char_hblank_reg = '0') then + xflip <= I_FLIP; + yflip <= I_FLIP; + else + xflip <= db_reg(1); + yflip <= db_reg(0); + end if; + end process; + + p_char_addr_comb : process(db_reg, I_HCNT, + char_match_reg, char_sum_reg, char_hblank_reg, + xflip, yflip) + begin + -- 2h, 4e + obj_on <= char_match_reg or I_HCNT(8); -- 256h not 256h_l + + ca(12) <= char_hblank_reg; + ca(11 downto 6) <= db_reg(7 downto 2); + + if (char_hblank_reg = '0') then + ca(5) <= db_reg(1); + ca(4) <= db_reg(0); + else + ca(5) <= char_sum_reg(3) xor xflip; + ca(4) <= I_HCNT(3); + end if; + + ca(3) <= I_HCNT(2) xor yflip; + ca(2) <= char_sum_reg(2) xor xflip; + ca(1) <= char_sum_reg(1) xor xflip; + ca(0) <= char_sum_reg(0) xor xflip; + end process; + + -- char roms + char_rom_5ef : entity work.GFX1 + port map ( + CLK => CLK, + ADDR => ca, + DATA => char_rom_5ef_dout + ); + + p_char_shift : process + begin + -- 4 bit shift req + wait until rising_edge (CLK); + if (ENA_6 = '1') then + case shift_sel is + when "00" => null; + + when "01" => shift_regu <= '0' & shift_regu(3 downto 1); + shift_regl <= '0' & shift_regl(3 downto 1); + + when "10" => shift_regu <= shift_regu(2 downto 0) & '0'; + shift_regl <= shift_regl(2 downto 0) & '0'; + + when "11" => shift_regu <= char_rom_5ef_dout(7 downto 4); -- load + shift_regl <= char_rom_5ef_dout(3 downto 0); + when others => null; + end case; + end if; + end process; + + p_char_shift_comb : process(I_HCNT, vout_yflip, shift_regu, shift_regl) + variable ip : std_logic; + begin + ip := I_HCNT(0) and I_HCNT(1); + if (vout_yflip = '0') then + + shift_sel(0) <= ip; + shift_sel(1) <= '1'; + shift_op(0) <= shift_regl(3); + shift_op(1) <= shift_regu(3); + else + + shift_sel(0) <= '1'; + shift_sel(1) <= ip; + shift_op(0) <= shift_regl(0); + shift_op(1) <= shift_regu(0); + end if; + end process; + + p_video_out_reg : process + begin + wait until rising_edge (CLK); + if (ENA_6 = '1') then + if (I_HCNT(2 downto 0) = "111") then + vout_obj_on <= obj_on; + vout_yflip <= yflip; + vout_hblank <= I_HBLANK; + vout_db(4 downto 0) <= I_DB(4 downto 0); -- colour reg + end if; + end if; + end process; + + p_lut_4a_comb : process(vout_db, shift_op) + begin + col_rom_addr <= '0' & vout_db(4 downto 0) & shift_op(1 downto 0); + end process; + + col_rom_4a : entity work.PROM4_DST + port map ( + CLK => CLK, + ADDR => col_rom_addr, + DATA => lut_4a + ); + + cntr_ld <= '1' when (I_HCNT(3 downto 0) = "0111") and (vout_hblank='1' or vout_obj_on='0') else '0'; + + p_ra_cnt : process + begin + wait until rising_edge (CLK); + if (ENA_6 = '1') then + if (cntr_ld = '1') then + ra <= dr; + else + ra <= ra + "1"; + end if; + end if; + end process; + + sprite_ram_addr <= ra; + + u_sprite_ram : work.dpram generic map (8,4) + port map + ( + clk_a_i => CLK, + en_a_i => ENA_6, + we_i => vout_obj_on, + addr_a_i => sprite_ram_addr, + data_a_i => sprite_ram_ip, + + clk_b_i => CLK, + addr_b_i => sprite_ram_addr, + data_b_o => sprite_ram_op + ); + + sprite_ram_reg <= '0' & sprite_ram_op when vout_obj_on_t1 = '1' else "00000"; + video_op_sel <= '1' when not (sprite_ram_reg = "00000") else '0'; + + p_sprite_ram_ip_reg : process + begin + wait until rising_edge (CLK); + if (ENA_6 = '1') then + vout_obj_on_t1 <= vout_obj_on; + vout_hblank_t1 <= vout_hblank; + lut_4a_t1 <= lut_4a; + end if; + end process; + + p_sprite_ram_ip_comb : process(vout_hblank_t1, video_op_sel, sprite_ram_reg, lut_4a_t1) + begin + -- 3a + if (vout_hblank_t1 = '0') then + sprite_ram_ip <= (others => '0'); + else + if (video_op_sel = '1') then + sprite_ram_ip <= sprite_ram_reg(3 downto 0); + else + sprite_ram_ip <= lut_4a_t1(3 downto 0); + end if; + end if; + end process; + + p_video_op_comb : process(vout_hblank, I_VBLANK, video_op_sel, sprite_ram_reg, lut_4a) + begin + -- 3b + if (vout_hblank = '1') or (I_VBLANK = '1') then + final_col <= (others => '0'); + else + if (video_op_sel = '1') then + final_col <= sprite_ram_reg; -- sprite + else + final_col <= lut_4a(4 downto 0); + end if; + end if; + end process; + + col_rom_7f : entity work.PROM7_DST + port map ( + CLK => CLK, + ADDR => final_col, + DATA => video_out + ); + + -- assign outputs + O_BLUE (1 downto 0) <= video_out(7 downto 6); + O_GREEN(2 downto 0) <= video_out(5 downto 3); + O_RED (2 downto 0) <= video_out(2 downto 0); + +end architecture; diff --git a/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/pacman_vram_addr.vhd b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/pacman_vram_addr.vhd new file mode 100644 index 00000000..b26824c4 --- /dev/null +++ b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/pacman_vram_addr.vhd @@ -0,0 +1,273 @@ +-- +-- A simulation model of Pacman hardware +-- Copyright (c) MikeJ & CarlW - January 2006 +-- +-- All rights reserved +-- +-- Redistribution and use in source and synthezised forms, with or without +-- modification, are permitted provided that the following conditions are met: +-- +-- Redistributions of source code must retain the above copyright notice, +-- this list of conditions and the following disclaimer. +-- +-- Redistributions in synthesized form must reproduce the above copyright +-- notice, this list of conditions and the following disclaimer in the +-- documentation and/or other materials provided with the distribution. +-- +-- Neither the name of the author nor the names of other contributors may +-- be used to endorse or promote products derived from this software without +-- specific prior written permission. +-- +-- THIS CODE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +-- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +-- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +-- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE +-- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +-- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +-- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +-- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +-- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +-- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +-- POSSIBILITY OF SUCH DAMAGE. +-- +-- You are responsible for any legal issues arising from your use of this code. +-- +-- The latest version of this file can be found at: www.fpgaarcade.com +-- +-- Email pacman@fpgaarcade.com +-- +-- Revision list +-- +-- version 003 Jan 2006 release, general tidy up +-- version 001 initial release +-- +library ieee; + use ieee.std_logic_1164.all; + use ieee.std_logic_unsigned.all; + use ieee.numeric_std.all; + +entity X74_157 is + port ( + Y : out std_logic_vector (3 downto 0); + B : in std_logic_vector (3 downto 0); + A : in std_logic_vector (3 downto 0); + G : in std_logic; + S : in std_logic + ); +end; + +architecture RTL of X74_157 is +begin + p_y_comb : process(S,G,A,B) + begin + for i in 0 to 3 loop + -- quad 2 line to 1 line mux (true logic) + if (G = '1') then + Y(i) <= '0'; + else + if (S = '0') then + Y(i) <= A(i); + else + Y(i) <= B(i); + end if; + end if; + end loop; + end process; +end RTL; + +library ieee; + use ieee.std_logic_1164.all; + use ieee.std_logic_arith.all; + use ieee.std_logic_unsigned.all; + +entity X74_257 is + port ( + Y : out std_logic_vector (3 downto 0); + B : in std_logic_vector (3 downto 0); + A : in std_logic_vector (3 downto 0); + S : in std_logic + ); +end; + +architecture RTL of X74_257 is +signal ab : std_logic_vector (3 downto 0); +begin + + Y <= ab; -- no tristate + p_ab : process(S,A,B) + begin + for i in 0 to 3 loop + if (S = '0') then + AB(i) <= A(i); + else + AB(i) <= B(i); + end if; + end loop; + end process; +end RTL; + +library ieee; + use ieee.std_logic_1164.all; + use ieee.std_logic_unsigned.all; + use ieee.numeric_std.all; + +entity PACMAN_VRAM_ADDR is + port ( + AB : out std_logic_vector (11 downto 0); + H256_L : in std_logic; + H128 : in std_logic; + H64 : in std_logic; + H32 : in std_logic; + H16 : in std_logic; + H8 : in std_logic; + H4 : in std_logic; + H2 : in std_logic; + H1 : in std_logic; + V128 : in std_logic; + V64 : in std_logic; + V32 : in std_logic; + V16 : in std_logic; + V8 : in std_logic; + V4 : in std_logic; + V2 : in std_logic; + V1 : in std_logic; + FLIP : in std_logic + ); +end; + +architecture RTL of PACMAN_VRAM_ADDR is + +signal v128p : std_logic; +signal v64p : std_logic; +signal v32p : std_logic; +signal v16p : std_logic; +signal v8p : std_logic; +signal h128p : std_logic; +signal h64p : std_logic; +signal h32p : std_logic; +signal h16p : std_logic; +signal h8p : std_logic; +signal sel : std_logic; +signal y157 : std_logic_vector (11 downto 0); + +component X74_157 + port ( + Y : out std_logic_vector (3 downto 0); + B : in std_logic_vector (3 downto 0); + A : in std_logic_vector (3 downto 0); + G : in std_logic; + S : in std_logic + ); +end component; + +component X74_257 + port ( + Y : out std_logic_vector (3 downto 0); + B : in std_logic_vector (3 downto 0); + A : in std_logic_vector (3 downto 0); + S : in std_logic + ); +end component; + +begin + p_vp_comb : process(FLIP, V8, V16, V32, V64, V128) + begin + v128p <= FLIP xor V128; + v64p <= FLIP xor V64; + v32p <= FLIP xor V32; + v16p <= FLIP xor V16; + v8p <= FLIP xor V8; + end process; + + p_hp_comb : process(FLIP, H8, H16, H32, H64, H128) + begin + H128P <= FLIP xor H128; + H64P <= FLIP xor H64; + H32P <= FLIP xor H32; + H16P <= FLIP xor H16; + H8P <= FLIP xor H8; + end process; + + p_sel : process(H16, H32, H64) + begin + sel <= not((H32 xor H16) or (H32 xor H64)); + end process; + + --p_oe257 : process(H2) + --begin + -- oe <= not(H2); + --end process; + + U6 : X74_157 + port map( + Y => y157(11 downto 8), + B(3) => '0', + B(2) => H4, + B(1) => h64p, + B(0) => h64p, + A => "1111", + G => '0', + S => sel + ); + + U5 : X74_157 + port map( + Y => y157(7 downto 4), + B(3) => h64p, + B(2) => h64p, + B(1) => h8p, + B(0) => v128p, + A => "1111", + G => '0', + S => sel + ); + + U4 : X74_157 + port map( + Y => y157(3 downto 0), + B(3) => v64p, + B(2) => v32p, + B(1) => v16p, + B(0) => v8p, + A(3) => H64, + A(2) => H32, + A(1) => H16, + A(0) => H4, + G => '0', + S => sel + ); + + U3 : X74_257 + port map( + Y => AB(11 downto 8), + B(3) => '0', + B(2) => H4, + B(1) => v128p, + B(0) => v64p, + A => y157(11 downto 8), + S => H256_L + ); + + U2 : X74_257 + port map( + Y => AB(7 downto 4), + B(3) => v32p, + B(2) => v16p, + B(1) => v8p, + B(0) => h128p, + A => y157(7 downto 4), + S => H256_L + ); + + U1 : X74_257 + port map( + Y => AB(3 downto 0), + B(3) => h64p, + B(2) => h32p, + B(1) => h16p, + B(0) => h8p, + A => y157(3 downto 0), + S => H256_L + ); + +end RTL; diff --git a/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/pll.qip b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/pll.qip new file mode 100644 index 00000000..afd958be --- /dev/null +++ b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/pll.qip @@ -0,0 +1,4 @@ +set_global_assignment -name IP_TOOL_NAME "ALTPLL" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "pll.v"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "pll.ppf"] diff --git a/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/pll.v b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/pll.v new file mode 100644 index 00000000..60297687 --- /dev/null +++ b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/pll.v @@ -0,0 +1,320 @@ +// megafunction wizard: %ALTPLL% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: altpll + +// ============================================================ +// File Name: pll.v +// Megafunction Name(s): +// altpll +// +// Simulation Library Files(s): +// altera_mf +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module pll ( + areset, + inclk0, + c0, + locked); + + input areset; + input inclk0; + output c0; + output locked; +`ifndef ALTERA_RESERVED_QIS +// synopsys translate_off +`endif + tri0 areset; +`ifndef ALTERA_RESERVED_QIS +// synopsys translate_on +`endif + + wire sub_wire0; + wire [4:0] sub_wire1; + wire [0:0] sub_wire5 = 1'h0; + wire locked = sub_wire0; + wire [0:0] sub_wire2 = sub_wire1[0:0]; + wire c0 = sub_wire2; + wire sub_wire3 = inclk0; + wire [1:0] sub_wire4 = {sub_wire5, sub_wire3}; + + altpll altpll_component ( + .areset (areset), + .inclk (sub_wire4), + .locked (sub_wire0), + .clk (sub_wire1), + .activeclock (), + .clkbad (), + .clkena ({6{1'b1}}), + .clkloss (), + .clkswitch (1'b0), + .configupdate (1'b0), + .enable0 (), + .enable1 (), + .extclk (), + .extclkena ({4{1'b1}}), + .fbin (1'b1), + .fbmimicbidir (), + .fbout (), + .fref (), + .icdrclk (), + .pfdena (1'b1), + .phasecounterselect ({4{1'b1}}), + .phasedone (), + .phasestep (1'b1), + .phaseupdown (1'b1), + .pllena (1'b1), + .scanaclr (1'b0), + .scanclk (1'b0), + .scanclkena (1'b1), + .scandata (1'b0), + .scandataout (), + .scandone (), + .scanread (1'b0), + .scanwrite (1'b0), + .sclkout0 (), + .sclkout1 (), + .vcooverrange (), + .vcounderrange ()); + defparam + altpll_component.bandwidth_type = "AUTO", + altpll_component.clk0_divide_by = 9, + altpll_component.clk0_duty_cycle = 50, + altpll_component.clk0_multiply_by = 8, + altpll_component.clk0_phase_shift = "0", + altpll_component.compensate_clock = "CLK0", + altpll_component.inclk0_input_frequency = 37037, + altpll_component.intended_device_family = "Cyclone III", + altpll_component.lpm_hint = "CBX_MODULE_PREFIX=pll", + altpll_component.lpm_type = "altpll", + altpll_component.operation_mode = "NORMAL", + altpll_component.pll_type = "AUTO", + altpll_component.port_activeclock = "PORT_UNUSED", + altpll_component.port_areset = "PORT_USED", + altpll_component.port_clkbad0 = "PORT_UNUSED", + altpll_component.port_clkbad1 = "PORT_UNUSED", + altpll_component.port_clkloss = "PORT_UNUSED", + altpll_component.port_clkswitch = "PORT_UNUSED", + altpll_component.port_configupdate = "PORT_UNUSED", + altpll_component.port_fbin = "PORT_UNUSED", + altpll_component.port_inclk0 = "PORT_USED", + altpll_component.port_inclk1 = "PORT_UNUSED", + altpll_component.port_locked = "PORT_USED", + altpll_component.port_pfdena = "PORT_UNUSED", + altpll_component.port_phasecounterselect = "PORT_UNUSED", + altpll_component.port_phasedone = "PORT_UNUSED", + altpll_component.port_phasestep = "PORT_UNUSED", + altpll_component.port_phaseupdown = "PORT_UNUSED", + altpll_component.port_pllena = "PORT_UNUSED", + altpll_component.port_scanaclr = "PORT_UNUSED", + altpll_component.port_scanclk = "PORT_UNUSED", + altpll_component.port_scanclkena = "PORT_UNUSED", + altpll_component.port_scandata = "PORT_UNUSED", + altpll_component.port_scandataout = "PORT_UNUSED", + altpll_component.port_scandone = "PORT_UNUSED", + altpll_component.port_scanread = "PORT_UNUSED", + altpll_component.port_scanwrite = "PORT_UNUSED", + altpll_component.port_clk0 = "PORT_USED", + altpll_component.port_clk1 = "PORT_UNUSED", + altpll_component.port_clk2 = "PORT_UNUSED", + altpll_component.port_clk3 = "PORT_UNUSED", + altpll_component.port_clk4 = "PORT_UNUSED", + altpll_component.port_clk5 = "PORT_UNUSED", + altpll_component.port_clkena0 = "PORT_UNUSED", + altpll_component.port_clkena1 = "PORT_UNUSED", + altpll_component.port_clkena2 = "PORT_UNUSED", + altpll_component.port_clkena3 = "PORT_UNUSED", + altpll_component.port_clkena4 = "PORT_UNUSED", + altpll_component.port_clkena5 = "PORT_UNUSED", + altpll_component.port_extclk0 = "PORT_UNUSED", + altpll_component.port_extclk1 = "PORT_UNUSED", + altpll_component.port_extclk2 = "PORT_UNUSED", + altpll_component.port_extclk3 = "PORT_UNUSED", + altpll_component.self_reset_on_loss_lock = "OFF", + altpll_component.width_clock = 5; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: ACTIVECLK_CHECK STRING "0" +// Retrieval info: PRIVATE: BANDWIDTH STRING "1.000" +// Retrieval info: PRIVATE: BANDWIDTH_FEATURE_ENABLED STRING "1" +// Retrieval info: PRIVATE: BANDWIDTH_FREQ_UNIT STRING "MHz" +// Retrieval info: PRIVATE: BANDWIDTH_PRESET STRING "Low" +// Retrieval info: PRIVATE: BANDWIDTH_USE_AUTO STRING "1" +// Retrieval info: PRIVATE: BANDWIDTH_USE_PRESET STRING "0" +// Retrieval info: PRIVATE: CLKBAD_SWITCHOVER_CHECK STRING "0" +// Retrieval info: PRIVATE: CLKLOSS_CHECK STRING "0" +// Retrieval info: PRIVATE: CLKSWITCH_CHECK STRING "0" +// Retrieval info: PRIVATE: CNX_NO_COMPENSATE_RADIO STRING "0" +// Retrieval info: PRIVATE: CREATE_CLKBAD_CHECK STRING "0" +// Retrieval info: PRIVATE: CREATE_INCLK1_CHECK STRING "0" +// Retrieval info: PRIVATE: CUR_DEDICATED_CLK STRING "c0" +// Retrieval info: PRIVATE: CUR_FBIN_CLK STRING "c0" +// Retrieval info: PRIVATE: DEVICE_SPEED_GRADE STRING "8" +// Retrieval info: PRIVATE: DIV_FACTOR0 NUMERIC "9" +// Retrieval info: PRIVATE: DUTY_CYCLE0 STRING "50.00000000" +// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE0 STRING "24.000000" +// Retrieval info: PRIVATE: EXPLICIT_SWITCHOVER_COUNTER STRING "0" +// Retrieval info: PRIVATE: EXT_FEEDBACK_RADIO STRING "0" +// Retrieval info: PRIVATE: GLOCKED_COUNTER_EDIT_CHANGED STRING "1" +// Retrieval info: PRIVATE: GLOCKED_FEATURE_ENABLED STRING "0" +// Retrieval info: PRIVATE: GLOCKED_MODE_CHECK STRING "0" +// Retrieval info: PRIVATE: GLOCK_COUNTER_EDIT NUMERIC "1048575" +// Retrieval info: PRIVATE: HAS_MANUAL_SWITCHOVER STRING "1" +// Retrieval info: PRIVATE: INCLK0_FREQ_EDIT STRING "27.000" +// Retrieval info: PRIVATE: INCLK0_FREQ_UNIT_COMBO STRING "MHz" +// Retrieval info: PRIVATE: INCLK1_FREQ_EDIT STRING "100.000" +// Retrieval info: PRIVATE: INCLK1_FREQ_EDIT_CHANGED STRING "1" +// Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_CHANGED STRING "1" +// Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_COMBO STRING "MHz" +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: PRIVATE: INT_FEEDBACK__MODE_RADIO STRING "1" +// Retrieval info: PRIVATE: LOCKED_OUTPUT_CHECK STRING "1" +// Retrieval info: PRIVATE: LONG_SCAN_RADIO STRING "1" +// Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE STRING "Not Available" +// Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE_DIRTY NUMERIC "0" +// Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT0 STRING "deg" +// Retrieval info: PRIVATE: MIG_DEVICE_SPEED_GRADE STRING "Any" +// Retrieval info: PRIVATE: MIRROR_CLK0 STRING "0" +// Retrieval info: PRIVATE: MULT_FACTOR0 NUMERIC "8" +// Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "1" +// Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "24.00000000" +// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE0 STRING "0" +// Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT0 STRING "MHz" +// Retrieval info: PRIVATE: PHASE_RECONFIG_FEATURE_ENABLED STRING "1" +// Retrieval info: PRIVATE: PHASE_RECONFIG_INPUTS_CHECK STRING "0" +// Retrieval info: PRIVATE: PHASE_SHIFT0 STRING "0.00000000" +// Retrieval info: PRIVATE: PHASE_SHIFT_STEP_ENABLED_CHECK STRING "0" +// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT0 STRING "deg" +// Retrieval info: PRIVATE: PLL_ADVANCED_PARAM_CHECK STRING "0" +// Retrieval info: PRIVATE: PLL_ARESET_CHECK STRING "1" +// Retrieval info: PRIVATE: PLL_AUTOPLL_CHECK NUMERIC "1" +// Retrieval info: PRIVATE: PLL_ENHPLL_CHECK NUMERIC "0" +// Retrieval info: PRIVATE: PLL_FASTPLL_CHECK NUMERIC "0" +// Retrieval info: PRIVATE: PLL_FBMIMIC_CHECK STRING "0" +// Retrieval info: PRIVATE: PLL_LVDS_PLL_CHECK NUMERIC "0" +// Retrieval info: PRIVATE: PLL_PFDENA_CHECK STRING "0" +// Retrieval info: PRIVATE: PLL_TARGET_HARCOPY_CHECK NUMERIC "0" +// Retrieval info: PRIVATE: PRIMARY_CLK_COMBO STRING "inclk0" +// Retrieval info: PRIVATE: RECONFIG_FILE STRING "pll.mif" +// Retrieval info: PRIVATE: SACN_INPUTS_CHECK STRING "0" +// Retrieval info: PRIVATE: SCAN_FEATURE_ENABLED STRING "1" +// Retrieval info: PRIVATE: SELF_RESET_LOCK_LOSS STRING "0" +// Retrieval info: PRIVATE: SHORT_SCAN_RADIO STRING "0" +// Retrieval info: PRIVATE: SPREAD_FEATURE_ENABLED STRING "0" +// Retrieval info: PRIVATE: SPREAD_FREQ STRING "50.000" +// Retrieval info: PRIVATE: SPREAD_FREQ_UNIT STRING "KHz" +// Retrieval info: PRIVATE: SPREAD_PERCENT STRING "0.500" +// Retrieval info: PRIVATE: SPREAD_USE STRING "0" +// Retrieval info: PRIVATE: SRC_SYNCH_COMP_RADIO STRING "0" +// Retrieval info: PRIVATE: STICKY_CLK0 STRING "1" +// Retrieval info: PRIVATE: SWITCHOVER_COUNT_EDIT NUMERIC "1" +// Retrieval info: PRIVATE: SWITCHOVER_FEATURE_ENABLED STRING "1" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: USE_CLK0 STRING "1" +// Retrieval info: PRIVATE: USE_CLKENA0 STRING "0" +// Retrieval info: PRIVATE: USE_MIL_SPEED_GRADE NUMERIC "0" +// Retrieval info: PRIVATE: ZERO_DELAY_RADIO STRING "0" +// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +// Retrieval info: CONSTANT: BANDWIDTH_TYPE STRING "AUTO" +// Retrieval info: CONSTANT: CLK0_DIVIDE_BY NUMERIC "9" +// Retrieval info: CONSTANT: CLK0_DUTY_CYCLE NUMERIC "50" +// Retrieval info: CONSTANT: CLK0_MULTIPLY_BY NUMERIC "8" +// Retrieval info: CONSTANT: CLK0_PHASE_SHIFT STRING "0" +// Retrieval info: CONSTANT: COMPENSATE_CLOCK STRING "CLK0" +// Retrieval info: CONSTANT: INCLK0_INPUT_FREQUENCY NUMERIC "37037" +// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: CONSTANT: LPM_TYPE STRING "altpll" +// Retrieval info: CONSTANT: OPERATION_MODE STRING "NORMAL" +// Retrieval info: CONSTANT: PLL_TYPE STRING "AUTO" +// Retrieval info: CONSTANT: PORT_ACTIVECLOCK STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_ARESET STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_CLKBAD0 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CLKBAD1 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CLKLOSS STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CLKSWITCH STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CONFIGUPDATE STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_FBIN STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_INCLK0 STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_INCLK1 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_LOCKED STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_PFDENA STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PHASECOUNTERSELECT STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PHASEDONE STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PHASESTEP STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PHASEUPDOWN STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PLLENA STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANACLR STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANCLK STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANCLKENA STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANDATA STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANDATAOUT STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANDONE STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANREAD STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANWRITE STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clk0 STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_clk1 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clk2 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clk3 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clk4 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clk5 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena0 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena1 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena2 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena3 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena4 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena5 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_extclk0 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_extclk1 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_extclk2 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_extclk3 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: SELF_RESET_ON_LOSS_LOCK STRING "OFF" +// Retrieval info: CONSTANT: WIDTH_CLOCK NUMERIC "5" +// Retrieval info: USED_PORT: @clk 0 0 5 0 OUTPUT_CLK_EXT VCC "@clk[4..0]" +// Retrieval info: USED_PORT: areset 0 0 0 0 INPUT GND "areset" +// Retrieval info: USED_PORT: c0 0 0 0 0 OUTPUT_CLK_EXT VCC "c0" +// Retrieval info: USED_PORT: inclk0 0 0 0 0 INPUT_CLK_EXT GND "inclk0" +// Retrieval info: USED_PORT: locked 0 0 0 0 OUTPUT GND "locked" +// Retrieval info: CONNECT: @areset 0 0 0 0 areset 0 0 0 0 +// Retrieval info: CONNECT: @inclk 0 0 1 1 GND 0 0 0 0 +// Retrieval info: CONNECT: @inclk 0 0 1 0 inclk0 0 0 0 0 +// Retrieval info: CONNECT: c0 0 0 0 0 @clk 0 0 1 0 +// Retrieval info: CONNECT: locked 0 0 0 0 @locked 0 0 0 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL pll.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL pll.ppf TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL pll.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL pll.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL pll.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL pll_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL pll_bb.v FALSE +// Retrieval info: LIB_FILE: altera_mf +// Retrieval info: CBX_MODULE_PREFIX: ON diff --git a/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/scandoubler.v b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/scandoubler.v new file mode 100644 index 00000000..e85cba43 --- /dev/null +++ b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/scandoubler.v @@ -0,0 +1,183 @@ +// +// scandoubler.v +// +// Copyright (c) 2015 Till Harbaum +// Copyright (c) 2017 Sorgelig +// +// This source file is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published +// by the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This source file is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +// TODO: Delay vsync one line + +module scandoubler #(parameter LENGTH, parameter HALF_DEPTH) +( + // system interface + input clk_sys, + input ce_pix, + input ce_pix_actual, + + input hq2x, + + // shifter video interface + input hs_in, + input vs_in, + input line_start, + + input [DWIDTH:0] r_in, + input [DWIDTH:0] g_in, + input [DWIDTH:0] b_in, + input mono, + + // output interface + output reg hs_out, + output vs_out, + output [DWIDTH:0] r_out, + output [DWIDTH:0] g_out, + output [DWIDTH:0] b_out +); + + +localparam DWIDTH = HALF_DEPTH ? 2 : 5; + +assign vs_out = vs_in; + +reg [2:0] phase; +reg [2:0] ce_div; +reg [7:0] pix_len = 0; +wire [7:0] pl = pix_len + 1'b1; + +reg ce_x1, ce_x4; +reg req_line_reset; +wire ls_in = hs_in | line_start; +always @(negedge clk_sys) begin + reg old_ce; + reg [2:0] ce_cnt; + + reg [7:0] pixsz2, pixsz4 = 0; + + old_ce <= ce_pix; + if(~&pix_len) pix_len <= pix_len + 1'd1; + + ce_x4 <= 0; + ce_x1 <= 0; + + // use such odd comparison to place c_x4 evenly if master clock isn't multiple 4. + if((pl == pixsz4) || (pl == pixsz2) || (pl == (pixsz2+pixsz4))) begin + phase <= phase + 1'd1; + ce_x4 <= 1; + end + + if(~old_ce & ce_pix) begin + pixsz2 <= {1'b0, pl[7:1]}; + pixsz4 <= {2'b00, pl[7:2]}; + ce_x1 <= 1; + ce_x4 <= 1; + pix_len <= 0; + phase <= phase + 1'd1; + + ce_cnt <= ce_cnt + 1'd1; + if(ce_pix_actual) begin + phase <= 0; + ce_div <= ce_cnt + 1'd1; + ce_cnt <= 0; + req_line_reset <= 0; + end + + if(ls_in) req_line_reset <= 1; + end +end + +reg ce_sd; +always @(*) begin + case(ce_div) + 2: ce_sd = !phase[0]; + 4: ce_sd = !phase[1:0]; + default: ce_sd <= 1; + endcase +end + +localparam AWIDTH = `BITS_TO_FIT(LENGTH); +Hq2x #(.LENGTH(LENGTH), .HALF_DEPTH(HALF_DEPTH)) Hq2x +( + .clk(clk_sys), + .ce_x4(ce_x4 & ce_sd), + .inputpixel({b_in,g_in,r_in}), + .mono(mono), + .disable_hq2x(~hq2x), + .reset_frame(vs_in), + .reset_line(req_line_reset), + .read_y(sd_line), + .read_x(sd_h_actual), + .outpixel({b_out,g_out,r_out}) +); + +reg [10:0] sd_h_actual; +always @(*) begin + case(ce_div) + 2: sd_h_actual = sd_h[10:1]; + 4: sd_h_actual = sd_h[10:2]; + default: sd_h_actual = sd_h; + endcase +end + +reg [10:0] sd_h; +reg [1:0] sd_line; +always @(posedge clk_sys) begin + + reg [11:0] hs_max,hs_rise,hs_ls; + reg [10:0] hcnt; + reg [11:0] sd_hcnt; + + reg hs, hs2, vs, ls; + + if(ce_x1) begin + hs <= hs_in; + ls <= ls_in; + + if(ls && !ls_in) hs_ls <= {hcnt,1'b1}; + + // falling edge of hsync indicates start of line + if(hs && !hs_in) begin + hs_max <= {hcnt,1'b1}; + hcnt <= 0; + if(ls && !ls_in) hs_ls <= {10'd0,1'b1}; + end else begin + hcnt <= hcnt + 1'd1; + end + + // save position of rising edge + if(!hs && hs_in) hs_rise <= {hcnt,1'b1}; + + vs <= vs_in; + if(vs && ~vs_in) sd_line <= 0; + end + + if(ce_x4) begin + hs2 <= hs_in; + + // output counter synchronous to input and at twice the rate + sd_hcnt <= sd_hcnt + 1'd1; + sd_h <= sd_h + 1'd1; + if(hs2 && !hs_in) sd_hcnt <= hs_max; + if(sd_hcnt == hs_max) sd_hcnt <= 0; + + // replicate horizontal sync at twice the speed + if(sd_hcnt == hs_max) hs_out <= 0; + if(sd_hcnt == hs_rise) hs_out <= 1; + + if(sd_hcnt == hs_ls) sd_h <= 0; + if(sd_hcnt == hs_ls) sd_line <= sd_line + 1'd1; + end +end + +endmodule diff --git a/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/video_mixer.sv b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/video_mixer.sv new file mode 100644 index 00000000..79d8ca03 --- /dev/null +++ b/Arcade_MiST/Pacman Hardware/Birdiy_MiST/rtl/video_mixer.sv @@ -0,0 +1,243 @@ +// +// +// Copyright (c) 2017 Sorgelig +// +// This program is GPL Licensed. See COPYING for the full license. +// +// +//////////////////////////////////////////////////////////////////////////////////////////////////////// + +`timescale 1ns / 1ps + +// +// LINE_LENGTH: Length of display line in pixels +// Usually it's length from HSync to HSync. +// May be less if line_start is used. +// +// HALF_DEPTH: If =1 then color dept is 3 bits per component +// For half depth 6 bits monochrome is available with +// mono signal enabled and color = {G, R} + +module video_mixer +#( + parameter LINE_LENGTH = 480, + parameter HALF_DEPTH = 1, + + parameter OSD_COLOR = 3'd4, + parameter OSD_X_OFFSET = 10'd0, + parameter OSD_Y_OFFSET = 10'd0 +) +( + // master clock + // it should be multiple by (ce_pix*4). + input clk_sys, + + // Pixel clock or clock_enable (both are accepted). + input ce_pix, + + // Some systems have multiple resolutions. + // ce_pix_actual should match ce_pix where every second or fourth pulse is enabled, + // thus half or qurter resolutions can be used without brake video sync while switching resolutions. + // For fixed single resolution (or when video sync stability isn't required) ce_pix_actual = ce_pix. + input ce_pix_actual, + + // OSD SPI interface + input SPI_SCK, + input SPI_SS3, + input SPI_DI, + + // scanlines (00-none 01-25% 10-50% 11-75%) + input [1:0] scanlines, + + // 0 = HVSync 31KHz, 1 = CSync 15KHz + input scandoublerD, + + // High quality 2x scaling + input hq2x, + + // YPbPr always uses composite sync + input ypbpr, + + // 0 = 16-240 range. 1 = 0-255 range. (only for YPbPr color space) + input ypbpr_full, + input [1:0] rotate, //[0] - rotate [1] - left or right + // color + input [DWIDTH:0] R, + input [DWIDTH:0] G, + input [DWIDTH:0] B, + + // Monochrome mode (for HALF_DEPTH only) + input mono, + + // interlace sync. Positive pulses. + input HSync, + input VSync, + + // Falling of this signal means start of informative part of line. + // It can be horizontal blank signal. + // This signal can be used to reduce amount of required FPGA RAM for HQ2x scan doubler + // If FPGA RAM is not an issue, then simply set it to 0 for whole line processing. + // Keep in mind: due to algo first and last pixels of line should be black to avoid side artefacts. + // Thus, if blank signal is used to reduce the line, make sure to feed at least one black (or paper) pixel + // before first informative pixel. + input line_start, + + // MiST video output signals + output [5:0] VGA_R, + output [5:0] VGA_G, + output [5:0] VGA_B, + output VGA_VS, + output VGA_HS +); + +localparam DWIDTH = HALF_DEPTH ? 2 : 5; + +wire [DWIDTH:0] R_sd; +wire [DWIDTH:0] G_sd; +wire [DWIDTH:0] B_sd; +wire hs_sd, vs_sd; + +scandoubler #(.LENGTH(LINE_LENGTH), .HALF_DEPTH(HALF_DEPTH)) scandoubler +( + .*, + .hs_in(HSync), + .vs_in(VSync), + .r_in(R), + .g_in(G), + .b_in(B), + + .hs_out(hs_sd), + .vs_out(vs_sd), + .r_out(R_sd), + .g_out(G_sd), + .b_out(B_sd) +); + +wire [DWIDTH:0] rt = (scandoublerD ? R : R_sd); +wire [DWIDTH:0] gt = (scandoublerD ? G : G_sd); +wire [DWIDTH:0] bt = (scandoublerD ? B : B_sd); + +generate + if(HALF_DEPTH) begin + wire [5:0] r = mono ? {gt,rt} : {rt,rt}; + wire [5:0] g = mono ? {gt,rt} : {gt,gt}; + wire [5:0] b = mono ? {gt,rt} : {bt,bt}; + end else begin + wire [5:0] r = rt; + wire [5:0] g = gt; + wire [5:0] b = bt; + end +endgenerate + +wire hs = (scandoublerD ? HSync : hs_sd); +wire vs = (scandoublerD ? VSync : vs_sd); + +reg scanline = 0; +always @(posedge clk_sys) begin + reg old_hs, old_vs; + + old_hs <= hs; + old_vs <= vs; + + if(old_hs && ~hs) scanline <= ~scanline; + if(old_vs && ~vs) scanline <= 0; +end + +wire [5:0] r_out, g_out, b_out; +always @(*) begin + case(scanlines & {scanline, scanline}) + 1: begin // reduce 25% = 1/2 + 1/4 + r_out = {1'b0, r[5:1]} + {2'b00, r[5:2]}; + g_out = {1'b0, g[5:1]} + {2'b00, g[5:2]}; + b_out = {1'b0, b[5:1]} + {2'b00, b[5:2]}; + end + + 2: begin // reduce 50% = 1/2 + r_out = {1'b0, r[5:1]}; + g_out = {1'b0, g[5:1]}; + b_out = {1'b0, b[5:1]}; + end + + 3: begin // reduce 75% = 1/4 + r_out = {2'b00, r[5:2]}; + g_out = {2'b00, g[5:2]}; + b_out = {2'b00, b[5:2]}; + end + + default: begin + r_out = r; + g_out = g; + b_out = b; + end + endcase +end + +wire [5:0] red, green, blue; +osd #(OSD_X_OFFSET, OSD_Y_OFFSET, OSD_COLOR) osd +( + .*, + + .R_in(r_out), + .G_in(g_out), + .B_in(b_out), + .HSync(hs), + .VSync(vs), + .rotate(rotate), + + .R_out(red), + .G_out(green), + .B_out(blue) +); + +wire [5:0] yuv_full[225] = '{ + 6'd0, 6'd0, 6'd0, 6'd0, 6'd1, 6'd1, 6'd1, 6'd1, + 6'd2, 6'd2, 6'd2, 6'd3, 6'd3, 6'd3, 6'd3, 6'd4, + 6'd4, 6'd4, 6'd5, 6'd5, 6'd5, 6'd5, 6'd6, 6'd6, + 6'd6, 6'd7, 6'd7, 6'd7, 6'd7, 6'd8, 6'd8, 6'd8, + 6'd9, 6'd9, 6'd9, 6'd9, 6'd10, 6'd10, 6'd10, 6'd11, + 6'd11, 6'd11, 6'd11, 6'd12, 6'd12, 6'd12, 6'd13, 6'd13, + 6'd13, 6'd13, 6'd14, 6'd14, 6'd14, 6'd15, 6'd15, 6'd15, + 6'd15, 6'd16, 6'd16, 6'd16, 6'd17, 6'd17, 6'd17, 6'd17, + 6'd18, 6'd18, 6'd18, 6'd19, 6'd19, 6'd19, 6'd19, 6'd20, + 6'd20, 6'd20, 6'd21, 6'd21, 6'd21, 6'd21, 6'd22, 6'd22, + 6'd22, 6'd23, 6'd23, 6'd23, 6'd23, 6'd24, 6'd24, 6'd24, + 6'd25, 6'd25, 6'd25, 6'd25, 6'd26, 6'd26, 6'd26, 6'd27, + 6'd27, 6'd27, 6'd27, 6'd28, 6'd28, 6'd28, 6'd29, 6'd29, + 6'd29, 6'd29, 6'd30, 6'd30, 6'd30, 6'd31, 6'd31, 6'd31, + 6'd31, 6'd32, 6'd32, 6'd32, 6'd33, 6'd33, 6'd33, 6'd33, + 6'd34, 6'd34, 6'd34, 6'd35, 6'd35, 6'd35, 6'd35, 6'd36, + 6'd36, 6'd36, 6'd36, 6'd37, 6'd37, 6'd37, 6'd38, 6'd38, + 6'd38, 6'd38, 6'd39, 6'd39, 6'd39, 6'd40, 6'd40, 6'd40, + 6'd40, 6'd41, 6'd41, 6'd41, 6'd42, 6'd42, 6'd42, 6'd42, + 6'd43, 6'd43, 6'd43, 6'd44, 6'd44, 6'd44, 6'd44, 6'd45, + 6'd45, 6'd45, 6'd46, 6'd46, 6'd46, 6'd46, 6'd47, 6'd47, + 6'd47, 6'd48, 6'd48, 6'd48, 6'd48, 6'd49, 6'd49, 6'd49, + 6'd50, 6'd50, 6'd50, 6'd50, 6'd51, 6'd51, 6'd51, 6'd52, + 6'd52, 6'd52, 6'd52, 6'd53, 6'd53, 6'd53, 6'd54, 6'd54, + 6'd54, 6'd54, 6'd55, 6'd55, 6'd55, 6'd56, 6'd56, 6'd56, + 6'd56, 6'd57, 6'd57, 6'd57, 6'd58, 6'd58, 6'd58, 6'd58, + 6'd59, 6'd59, 6'd59, 6'd60, 6'd60, 6'd60, 6'd60, 6'd61, + 6'd61, 6'd61, 6'd62, 6'd62, 6'd62, 6'd62, 6'd63, 6'd63, + 6'd63 +}; + +// http://marsee101.blog19.fc2.com/blog-entry-2311.html +// Y = 16 + 0.257*R + 0.504*G + 0.098*B (Y = 0.299*R + 0.587*G + 0.114*B) +// Pb = 128 - 0.148*R - 0.291*G + 0.439*B (Pb = -0.169*R - 0.331*G + 0.500*B) +// Pr = 128 + 0.439*R - 0.368*G - 0.071*B (Pr = 0.500*R - 0.419*G - 0.081*B) + +wire [18:0] y_8 = 19'd04096 + ({red, 8'd0} + {red, 3'd0}) + ({green, 9'd0} + {green, 2'd0}) + ({blue, 6'd0} + {blue, 5'd0} + {blue, 2'd0}); +wire [18:0] pb_8 = 19'd32768 - ({red, 7'd0} + {red, 4'd0} + {red, 3'd0}) - ({green, 8'd0} + {green, 5'd0} + {green, 3'd0}) + ({blue, 8'd0} + {blue, 7'd0} + {blue, 6'd0}); +wire [18:0] pr_8 = 19'd32768 + ({red, 8'd0} + {red, 7'd0} + {red, 6'd0}) - ({green, 8'd0} + {green, 6'd0} + {green, 5'd0} + {green, 4'd0} + {green, 3'd0}) - ({blue, 6'd0} + {blue , 3'd0}); + +wire [7:0] y = ( y_8[17:8] < 16) ? 8'd16 : ( y_8[17:8] > 235) ? 8'd235 : y_8[15:8]; +wire [7:0] pb = (pb_8[17:8] < 16) ? 8'd16 : (pb_8[17:8] > 240) ? 8'd240 : pb_8[15:8]; +wire [7:0] pr = (pr_8[17:8] < 16) ? 8'd16 : (pr_8[17:8] > 240) ? 8'd240 : pr_8[15:8]; + +assign VGA_R = ypbpr ? (ypbpr_full ? yuv_full[pr-8'd16] : pr[7:2]) : red; +assign VGA_G = ypbpr ? (ypbpr_full ? yuv_full[y -8'd16] : y[7:2]) : green; +assign VGA_B = ypbpr ? (ypbpr_full ? yuv_full[pb-8'd16] : pb[7:2]) : blue; +assign VGA_VS = (scandoublerD | ypbpr) ? 1'b1 : ~vs_sd; +assign VGA_HS = scandoublerD ? ~(HSync ^ VSync) : ypbpr ? ~(hs_sd ^ vs_sd) : ~hs_sd; + +endmodule diff --git a/Arcade_MiST/Phoenix Hardware/Capitol_MIST/rtl/pll.ppf b/Arcade_MiST/Phoenix Hardware/Capitol_MIST/rtl/pll.ppf deleted file mode 100644 index 2dc9dced..00000000 --- a/Arcade_MiST/Phoenix Hardware/Capitol_MIST/rtl/pll.ppf +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/Arcade_MiST/Phoenix Hardware/Phoenix_MIST/rtl/pll.ppf b/Arcade_MiST/Phoenix Hardware/Phoenix_MIST/rtl/pll.ppf deleted file mode 100644 index 2dc9dced..00000000 --- a/Arcade_MiST/Phoenix Hardware/Phoenix_MIST/rtl/pll.ppf +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/Arcade_MiST/README.txt b/Arcade_MiST/README.txt index de3a3206..0c72c5a1 100644 --- a/Arcade_MiST/README.txt +++ b/Arcade_MiST/README.txt @@ -87,6 +87,7 @@ Aviable Arcade Cores #Pacman Hardware Ali Baba and 40 Thieves + Birdiy Crush Roller Dream Shopper Eeekk