diff --git a/Arcade_MiST/Atari MissileCommand/MissileC.qsf b/Arcade_MiST/Atari MissileCommand/MissileC.qsf index 10152d3c..86ca6aaa 100644 --- a/Arcade_MiST/Atari MissileCommand/MissileC.qsf +++ b/Arcade_MiST/Atari MissileCommand/MissileC.qsf @@ -45,24 +45,6 @@ set_global_assignment -name LAST_QUARTUS_VERSION 13.1 set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files set_global_assignment -name SMART_RECOMPILE ON set_global_assignment -name PRE_FLOW_SCRIPT_FILE "quartus_sh:rtl/build_id.tcl" -set_global_assignment -name SYSTEMVERILOG_FILE rtl/MissileCommand_MiST.sv -set_global_assignment -name VERILOG_FILE rtl/missile.v -set_global_assignment -name VERILOG_FILE rtl/micro.v -set_global_assignment -name VERILOG_FILE rtl/trackball.v -set_global_assignment -name VERILOG_FILE rtl/dpram.v -set_global_assignment -name VERILOG_FILE rtl/sync.v -set_global_assignment -name VERILOG_FILE rtl/dpvram.v -set_global_assignment -name VERILOG_FILE rtl/spram.v -set_global_assignment -name VERILOG_FILE rtl/ls42.v -set_global_assignment -name VERILOG_FILE rtl/pll_mist.v -set_global_assignment -name QIP_FILE "D:/GitHub/Mist_FPGA/common/Sound/Pokey/Pokey.qip" -set_global_assignment -name QIP_FILE "D:/GitHub/Mist_FPGA/common/mist/mist.qip" -set_global_assignment -name QIP_FILE "D:/GitHub/Mist_FPGA/common/CPU/bc6502/BC6502.qip" -set_global_assignment -name QIP_FILE "D:/GitHub/Mist_FPGA/common/CPU/T80/T80.qip" -set_global_assignment -name VHDL_FILE rtl/rom/L6.vhd -set_global_assignment -name VHDL_FILE rtl/rom/rom1.vhd -set_global_assignment -name VHDL_FILE rtl/rom/rom2.vhd -set_global_assignment -name VHDL_FILE rtl/rom/rom3.vhd # Pin & Location Assignments # ========================== @@ -240,4 +222,18 @@ set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" - # end ENTITY(MissileCommand_MiST) # ------------------------------- +set_global_assignment -name SYSTEMVERILOG_FILE rtl/MissileCommand_MiST.sv +set_global_assignment -name VERILOG_FILE rtl/missile.v +set_global_assignment -name VERILOG_FILE rtl/micro.v +set_global_assignment -name VERILOG_FILE rtl/trackball.v +set_global_assignment -name VERILOG_FILE rtl/dpram.v +set_global_assignment -name VERILOG_FILE rtl/sync.v +set_global_assignment -name VERILOG_FILE rtl/dpvram.v +set_global_assignment -name VERILOG_FILE rtl/spram.v +set_global_assignment -name VERILOG_FILE rtl/ls42.v +set_global_assignment -name VERILOG_FILE rtl/pll_mist.v +set_global_assignment -name VHDL_FILE rtl/rom/L6.vhd +set_global_assignment -name QIP_FILE ../../common/mist/mist.qip +set_global_assignment -name QIP_FILE ../../common/Sound/Pokey/Pokey.qip +set_global_assignment -name QIP_FILE ../../common/CPU/bc6502/BC6502.qip set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top \ No newline at end of file diff --git a/Arcade_MiST/Atari MissileCommand/MissileC.rbf b/Arcade_MiST/Atari MissileCommand/MissileC.rbf deleted file mode 100644 index 984312f9..00000000 Binary files a/Arcade_MiST/Atari MissileCommand/MissileC.rbf and /dev/null differ diff --git a/Arcade_MiST/Atari MissileCommand/MissileC.sdc b/Arcade_MiST/Atari MissileCommand/MissileC.sdc new file mode 100644 index 00000000..a7a318d4 --- /dev/null +++ b/Arcade_MiST/Atari MissileCommand/MissileC.sdc @@ -0,0 +1,126 @@ +## Generated SDC file "vectrex_MiST.out.sdc" + +## 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. + + +## VENDOR "Altera" +## PROGRAM "Quartus II" +## VERSION "Version 13.1.0 Build 162 10/23/2013 SJ Web Edition" + +## DATE "Sun Jun 24 12:53:00 2018" + +## +## DEVICE "EP3C25E144C8" +## + +# Clock constraints + +# Automatically constrain PLL and other generated clocks +derive_pll_clocks -create_base_clocks + +# Automatically calculate clock uncertainty to jitter and other effects. +derive_clock_uncertainty + +# tsu/th constraints + +# tco constraints + +# tpd constraints + +#************************************************************** +# Time Information +#************************************************************** + +set_time_format -unit ns -decimal_places 3 + + + +#************************************************************** +# Create Clock +#************************************************************** + +create_clock -name {SPI_SCK} -period 41.666 -waveform { 20.8 41.666 } [get_ports {SPI_SCK}] + +#************************************************************** +# Create Generated Clock +#************************************************************** + + +#************************************************************** +# Set Clock Latency +#************************************************************** + + + +#************************************************************** +# Set Clock Uncertainty +#************************************************************** + +#************************************************************** +# Set Input Delay +#************************************************************** + +set_input_delay -add_delay -clock_fall -clock [get_clocks {CLOCK_27}] 1.000 [get_ports {CLOCK_27}] +set_input_delay -add_delay -clock_fall -clock [get_clocks {SPI_SCK}] 1.000 [get_ports {CONF_DATA0}] +set_input_delay -add_delay -clock_fall -clock [get_clocks {SPI_SCK}] 1.000 [get_ports {SPI_DI}] +set_input_delay -add_delay -clock_fall -clock [get_clocks {SPI_SCK}] 1.000 [get_ports {SPI_SCK}] +set_input_delay -add_delay -clock_fall -clock [get_clocks {SPI_SCK}] 1.000 [get_ports {SPI_SS2}] +set_input_delay -add_delay -clock_fall -clock [get_clocks {SPI_SCK}] 1.000 [get_ports {SPI_SS3}] + +#************************************************************** +# Set Output Delay +#************************************************************** + +set_output_delay -add_delay -clock_fall -clock [get_clocks {SPI_SCK}] 1.000 [get_ports {SPI_DO}] +set_output_delay -add_delay -clock_fall -clock [get_clocks {pll|altpll_component|auto_generated|pll1|clk[1]}] 1.000 [get_ports {AUDIO_L}] +set_output_delay -add_delay -clock_fall -clock [get_clocks {pll|altpll_component|auto_generated|pll1|clk[1]}] 1.000 [get_ports {AUDIO_R}] +set_output_delay -add_delay -clock_fall -clock [get_clocks {pll|altpll_component|auto_generated|pll1|clk[1]}] 1.000 [get_ports {LED}] +set_output_delay -add_delay -clock_fall -clock [get_clocks {pll|altpll_component|auto_generated|pll1|clk[0]}] 1.000 [get_ports {VGA_*}] + +#************************************************************** +# Set Clock Groups +#************************************************************** + +set_clock_groups -asynchronous -group [get_clocks {SPI_SCK}] -group [get_clocks {pll|altpll_component|auto_generated|pll1|clk[*]}] + +#************************************************************** +# Set False Path +#************************************************************** + + + +#************************************************************** +# Set Multicycle Path +#************************************************************** + +set_multicycle_path -to {VGA_*[*]} -setup 2 +set_multicycle_path -to {VGA_*[*]} -hold 1 + +#************************************************************** +# Set Maximum Delay +#************************************************************** + + + +#************************************************************** +# Set Minimum Delay +#************************************************************** + + + +#************************************************************** +# Set Input Transition +#************************************************************** + diff --git a/Arcade_MiST/Atari MissileCommand/rtl/MissileCommand_MiST.sv b/Arcade_MiST/Atari MissileCommand/rtl/MissileCommand_MiST.sv index e4444b4e..872acc21 100644 --- a/Arcade_MiST/Atari MissileCommand/rtl/MissileCommand_MiST.sv +++ b/Arcade_MiST/Atari MissileCommand/rtl/MissileCommand_MiST.sv @@ -20,38 +20,48 @@ module MissileCommand_MiST( `include "rtl/build_id.v" localparam CONF_STR = { - "MissileC;rom;", + "MISSILE;;", + "O34,Scanlines,Off,25%,50%,75%;", "O1,Pause,Off,On;", + + "P1,Switches;", + "P1O89,Coinage,1C_1C,2C_1C,Free_Play,1C_2C;", + "P1OA,Service,Off,On;", + "P1OBC,Language,English,French,German,Spanish;", + "P1ODE,Cities,6,4,5,7;", + "P1OF,Bonus Credit for 4 Coins,Off,On;", - "O45,Coinage ,1C_1C,2C_1C,Free_Play,1C_2C;", - "O6,Service,Off,On;", - "O78,Language ,English,French,German,Spanish;", - "O9A,Cities ,6,4,5,7;", - "OB,Bonus Credit for 4 Coins,On,Off;", + "P1OG,Trackball Size,Large,Mini;", + "P1OHJ,Bonus City,None,8000,20000,18000,15000,14000,12000,10000;", + "P1OK,Cabinet,Upright,Cocktail;", - "OC,Trackbal Size,Mini,Large;", - "ODE,Bonus City,None,8000,20000,18000,15000,14000,12000,10000;", - "OF,Cabinet,Upright,Cocktail;", - - "OGH,Mouse/trackball speed,25%,50%,100%,200%;", - "OIJ,Button order,LMR,LRM,MRL;", - "O3,Joystick mode,Digital,Analog;", - "O2,Joystick speed,Low,High;", + "OOP,Mouse/trackball speed,25%,50%,100%,200%;", + "OQR,Button order,LMR,LRM,MRL,MLR;", + "OS,Joystick mode,Digital,Analog;", + "OT,Joystick speed,Low,High;", "T0,Reset;", "V,v1.0.",`BUILD_DATE }; -wire pause = status[1]; -//wire blend = status[3]; -wire service = status[6]; -wire [1:0] coinage = status[5:4]; -wire [1:0] language = status[8:7]; -wire [1:0] cities = status[10:9]; -wire bonus = status[11]; -wire size = status[12]; -wire [2:0] bonuscity = status[15:13]; -wire cabinet = status[16]; +wire pause = status[1]; +wire [1:0] scanlines = status[4:3]; +wire blend = 0; +wire service = status[10]; + +wire dip_cocktail = ~status[20]; // 1= Upright, 0=Cocktail (enable flip) +wire [1:0] dip_language = status[12:11]; +wire dip_centrecoin = 1'b0; // Coin multipliers are unnecessary +wire [1:0] dip_rightcoin = 2'b00; // Coin multipliers are unnecessary +wire [1:0] dip_coinage = status[9:8]; +wire [1:0] dip_cities = status[14:13]; +wire dip_bonuscredit = status[15]; // Not useful +wire [2:0] dip_bonuscity = ~status[19:17]; +wire dip_trackballspeed = status[16]; + +wire [7:0] in2 = { 1'b0, dip_language, dip_centrecoin, dip_rightcoin, dip_coinage }; +wire [7:0] dip_switches = { dip_cocktail, dip_bonuscity, dip_trackballspeed, dip_bonuscredit, dip_cities }; + assign LED = ~ioctl_downl; assign AUDIO_R = AUDIO_L; assign SDRAM_CKE = 0; @@ -65,9 +75,9 @@ pll_mist pll( .c1(clk_core),//10 .locked(pll_locked) ); - -reg clk_vid = 1'b0; -always @(posedge clk_core) clk_vid <= !clk_vid; + +reg ce_vid = 1'b0; +always @(posedge clk_core) ce_vid <= !ce_vid; wire ioctl_downl; wire [7:0] ioctl_index; @@ -76,7 +86,7 @@ wire [24:0] ioctl_addr; wire [7:0] ioctl_dout; data_io data_io( - .clk_sys ( clk_sys ), + .clk_sys ( clk_core ), .SPI_SCK ( SPI_SCK ), .SPI_SS2 ( SPI_SS2 ), .SPI_DI ( SPI_DI ), @@ -100,11 +110,16 @@ wire no_csync; wire key_pressed; wire [7:0] key_code; wire key_strobe; +wire [8:0] mouse_x; +wire [8:0] mouse_y; +wire [7:0] mouse_flags; // YOvfl, XOvfl, dy8, dx8, 1, mbtn, rbtn, lbtn +wire mouse_strobe; + user_io #( .STRLEN(($size(CONF_STR)>>3))) user_io( - .clk_sys (clk_sys ), + .clk_sys (clk_core ), .conf_str (CONF_STR ), .SPI_CLK (SPI_SCK ), .SPI_SS_IO (CONF_DATA0 ), @@ -118,6 +133,10 @@ user_io( .key_strobe (key_strobe ), .key_pressed (key_pressed ), .key_code (key_code ), + .mouse_strobe (mouse_strobe ), + .mouse_x (mouse_x ), + .mouse_y (mouse_y ), + .mouse_flags (mouse_flags ), .joystick_0 (joystick_0 ), .joystick_1 (joystick_1 ), .joystick_analog_0(joystick_analog_0), @@ -125,14 +144,49 @@ user_io( .status (status ) ); +reg mouse_left, mouse_right, mouse_center; +wire [24:0] ps2_mouse = { mouse_strobe_level, mouse_y[7:0], mouse_x[7:0], mouse_flags }; +reg mouse_strobe_level; +always @(posedge clk_core) if (mouse_strobe) mouse_strobe_level <= ~mouse_strobe_level; + +always @(posedge clk_core) +begin + case(status[27:26]) + 2'd0: // LMR + begin + mouse_left <= ps2_mouse[0]; + mouse_center <= ps2_mouse[2]; + mouse_right <= ps2_mouse[1]; + end + 2'd1: // LRM + begin + mouse_left <= ps2_mouse[0]; + mouse_center <= ps2_mouse[1]; + mouse_right <= ps2_mouse[2]; + end + 2'd2: // MRL + begin + mouse_left <= ps2_mouse[2]; + mouse_center <= ps2_mouse[1]; + mouse_right <= ps2_mouse[0]; + end + 2'd3: // MLR + begin + mouse_left <= ps2_mouse[2]; + mouse_center <= ps2_mouse[0]; + mouse_right <= ps2_mouse[1]; + end + endcase +end + wire [5:0] audio; wire hs, vs, hb, vb; wire blankn = ~(hb | vb); wire g, r, b; missile missile_inst( - .clk_10M (clk_core), - .ce_5M (clk_vid), + .clk_10M (clk_core), + .ce_5M (ce_vid), .reset (status[0] | buttons[1]), .pause (pause), .vtb_dir1 (vtb_dir1), @@ -145,16 +199,16 @@ missile missile_inst( .p1_start (m_one_player), .p2_start (m_two_players), - .p1_fire_l (m_fireA), - .p1_fire_c (m_fireB), - .p1_fire_r (m_fireC), + .p1_fire_l (m_fireA | mouse_left), + .p1_fire_c (m_fireB | mouse_center), + .p1_fire_r (m_fireC | mouse_right), - .p2_fire_l (m_fire2A), - .p2_fire_c (m_fire2B), - .p2_fire_r (m_fire2C), - - .in2 ({1'b0,language,1'b0,2'b00,coinage}), - .switches ({cabinet,bonuscity,bonuscity,bonuscity,size,bonus,cities,cities}), + .p2_fire_l (m_fire2A | mouse_left), + .p2_fire_c (m_fire2B | mouse_center), + .p2_fire_r (m_fire2C | mouse_right), + + .in2 (in2), + .switches (dip_switches), .self_test (service), .slam (m_tilt), .flip (flip), @@ -179,16 +233,16 @@ wire vtb_dir1; wire vtb_clk1; wire htb_dir1; wire htb_clk1; -wire [24:0] ps2_mouse; + trackball trackball ( .clk(clk_core), .flip(flip), .joystick({m_up, m_down, m_left, m_right}), - .joystick_mode(status[3]), + .joystick_mode(status[28]), .joystick_analog(joystick_analog_0 !=0 ? joystick_analog_0 : joystick_analog_1), - .joystick_sensitivity(status[13]), - .mouse_speed(status[15:14]), + .joystick_sensitivity(status[29]), + .mouse_speed(status[25:24]), .ps2_mouse(ps2_mouse), .v_dir(vtb_dir1), .v_clk(vtb_clk1), @@ -196,9 +250,10 @@ trackball trackball .h_clk(htb_clk1) ); - mist_video #(.COLOR_DEPTH(1), .SD_HCNT_WIDTH(10)) mist_video( .clk_sys ( clk_sys ), + .scanlines ( scanlines ), + .blend ( blend ), .SPI_SCK ( SPI_SCK ), .SPI_SS3 ( SPI_SS3 ), .SPI_DI ( SPI_DI ), @@ -219,7 +274,7 @@ mist_video #(.COLOR_DEPTH(1), .SD_HCNT_WIDTH(10)) mist_video( dac #( .C_bits(6)) dac_l( - .clk_i(clk_sys), + .clk_i(clk_core), .res_n_i(1), .dac_i(audio), .dac_o(AUDIO_L) @@ -230,7 +285,7 @@ wire m_up2, m_down2, m_left2, m_right2, m_fire2A, m_fire2B, m_fire2C, m_fire2D, wire m_tilt, m_coin1, m_coin2, m_coin3, m_coin4, m_one_player, m_two_players, m_three_players, m_four_players; arcade_inputs inputs ( - .clk ( clk_sys ), + .clk ( clk_core ), .key_strobe ( key_strobe ), .key_pressed ( key_pressed ), .key_code ( key_code ), diff --git a/Arcade_MiST/Atari MissileCommand/rtl/missile.v b/Arcade_MiST/Atari MissileCommand/rtl/missile.v index 4c544e81..38c27b0e 100644 --- a/Arcade_MiST/Atari MissileCommand/rtl/missile.v +++ b/Arcade_MiST/Atari MissileCommand/rtl/missile.v @@ -233,73 +233,55 @@ wire debug_data/*verilator public_flat*/; ///// PROGRAM MEMORY CIRCUIT ///// ////////////////////////////////// -//dpram #(12,8) pgrom0 -//( -// .clock(clk_10M), -// -// .enable_a(dn_pgrom0_we), -// .wren_a(dn_pgrom0_we), -// .address_a(dn_addr[11:0]), -// .data_a(dn_data), -// .q_a(), -// -// .enable_b(1'b1), -// .wren_b(1'b0), -// .address_b(s_addr[11:0]), -// .data_b(), -// .q_b(s_pgrom0_out) -//); +dpram #(12,8) pgrom0 +( + .clock(clk_10M), -rom1 rom1( - .clk(clk_10M), - .addr(s_addr[11:0]), - .data(s_pgrom0_out) + .enable_a(dn_pgrom0_we), + .wren_a(dn_pgrom0_we), + .address_a(dn_addr[11:0]), + .data_a(dn_data), + .q_a(), + + .enable_b(1'b1), + .wren_b(1'b0), + .address_b(s_addr[11:0]), + .data_b(), + .q_b(s_pgrom0_out) ); -//dpram #(12,8) pgrom1 -//( -// .clock(clk_10M), -// -// .enable_a(dn_pgrom1_we), -// .wren_a(dn_pgrom1_we), -// .address_a(dn_addr[11:0]), -// .data_a(dn_data), -// .q_a(), -// -// .enable_b(1'b1), -// .wren_b(1'b0), -// .address_b(s_addr[11:0]), -// .data_b(), -// .q_b(s_pgrom1_out) -//); +dpram #(12,8) pgrom1 +( + .clock(clk_10M), -rom2 rom2( - .clk(clk_10M), - .addr(s_addr[11:0]), - .data(s_pgrom1_out) + .enable_a(dn_pgrom1_we), + .wren_a(dn_pgrom1_we), + .address_a(dn_addr[11:0]), + .data_a(dn_data), + .q_a(), + + .enable_b(1'b1), + .wren_b(1'b0), + .address_b(s_addr[11:0]), + .data_b(), + .q_b(s_pgrom1_out) ); -//dpram #(12,8) pgrom2 -//( -// .clock(clk_10M), -// -// .enable_a(dn_pgrom2_we), -// .wren_a(dn_pgrom2_we), -// .address_a(dn_addr[11:0]), -// .data_a(dn_data), -// .q_a(), -// -// .enable_b(1'b1), -// .wren_b(1'b0), -// .address_b(s_addr[11:0]), -// .data_b(), -// .q_b(s_pgrom2_out) -//); +dpram #(12,8) pgrom2 +( + .clock(clk_10M), -rom3 rom3( - .clk(clk_10M), - .addr(s_addr[11:0]), - .data(s_pgrom2_out) + .enable_a(dn_pgrom2_we), + .wren_a(dn_pgrom2_we), + .address_a(dn_addr[11:0]), + .data_a(dn_data), + .q_a(), + + .enable_b(1'b1), + .wren_b(1'b0), + .address_b(s_addr[11:0]), + .data_b(), + .q_b(s_pgrom2_out) ); //////////////// diff --git a/Arcade_MiST/Atari MissileCommand/rtl/rom/rom1.vhd b/Arcade_MiST/Atari MissileCommand/rtl/rom/rom1.vhd deleted file mode 100644 index 799136c1..00000000 --- a/Arcade_MiST/Atari MissileCommand/rtl/rom/rom1.vhd +++ /dev/null @@ -1,278 +0,0 @@ -library ieee; -use ieee.std_logic_1164.all,ieee.numeric_std.all; - -entity rom1 is -port ( - clk : in std_logic; - addr : in std_logic_vector(11 downto 0); - data : out std_logic_vector(7 downto 0) -); -end entity; - -architecture prom of rom1 is - type rom is array(0 to 4095) of std_logic_vector(7 downto 0); - signal rom_data: rom := ( - X"29",X"58",X"20",X"E1",X"74",X"20",X"2F",X"67",X"20",X"0C",X"7B",X"A9",X"14",X"85",X"91",X"46", - X"9F",X"90",X"FC",X"A9",X"00",X"85",X"9F",X"20",X"3E",X"50",X"20",X"A6",X"50",X"A5",X"F2",X"29", - X"40",X"D0",X"EC",X"4C",X"4B",X"7B",X"20",X"FB",X"55",X"20",X"5A",X"52",X"20",X"46",X"61",X"20", - X"D0",X"53",X"20",X"21",X"53",X"20",X"58",X"54",X"20",X"32",X"51",X"4C",X"EE",X"59",X"A6",X"91", - X"BD",X"4A",X"50",X"48",X"BD",X"49",X"50",X"48",X"60",X"D0",X"5A",X"0F",X"5B",X"25",X"50",X"6C", - X"5D",X"E9",X"5B",X"1F",X"5C",X"81",X"5C",X"A9",X"5C",X"0B",X"5D",X"A1",X"5D",X"81",X"5A",X"B8", - X"5A",X"3E",X"75",X"44",X"76",X"FF",X"76",X"85",X"77",X"9E",X"77",X"6C",X"50",X"A5",X"CA",X"29", - X"03",X"D0",X"30",X"A4",X"AF",X"F0",X"02",X"C6",X"AF",X"D0",X"28",X"A5",X"92",X"85",X"91",X"C9", - X"04",X"D0",X"20",X"A5",X"93",X"F0",X"1C",X"A9",X"00",X"20",X"49",X"6A",X"A9",X"06",X"20",X"49", - X"6A",X"A9",X"1E",X"20",X"49",X"6A",X"A9",X"15",X"20",X"49",X"6A",X"A9",X"00",X"85",X"FA",X"85", - X"95",X"85",X"94",X"4C",X"32",X"51",X"A5",X"93",X"D0",X"55",X"20",X"5D",X"5F",X"A5",X"66",X"F0", - X"32",X"A0",X"00",X"C9",X"02",X"A5",X"F1",X"49",X"FF",X"29",X"18",X"F0",X"23",X"B0",X"05",X"29", - X"10",X"B8",X"50",X"05",X"C8",X"C6",X"66",X"29",X"08",X"F0",X"03",X"C6",X"66",X"C8",X"98",X"85", - X"AE",X"F0",X"0D",X"A0",X"FF",X"84",X"93",X"C8",X"84",X"68",X"A9",X"00",X"85",X"91",X"C6",X"AE", - X"B8",X"50",X"12",X"A5",X"67",X"F0",X"0E",X"A5",X"91",X"C9",X"20",X"F0",X"08",X"C9",X"12",X"F0", - X"04",X"A9",X"1E",X"85",X"91",X"A5",X"F3",X"29",X"03",X"D0",X"04",X"A9",X"02",X"85",X"66",X"E6", - X"CA",X"A5",X"9F",X"D0",X"1C",X"A5",X"D4",X"F0",X"05",X"A4",X"B9",X"20",X"FC",X"5F",X"A5",X"D8", - X"D0",X"0F",X"20",X"52",X"5A",X"A5",X"D7",X"49",X"01",X"85",X"D7",X"AA",X"BD",X"30",X"51",X"85", - X"D8",X"A5",X"5F",X"F0",X"04",X"A9",X"F0",X"85",X"E0",X"A5",X"E0",X"F0",X"02",X"C6",X"E0",X"60", - X"0A",X"32",X"A5",X"A6",X"F0",X"1E",X"A5",X"93",X"D0",X"06",X"20",X"55",X"51",X"B8",X"50",X"0E", - X"A0",X"00",X"A5",X"95",X"84",X"95",X"85",X"B1",X"A5",X"94",X"84",X"94",X"85",X"B0",X"20",X"39", - X"52",X"20",X"D3",X"64",X"60",X"A9",X"00",X"85",X"B1",X"85",X"B0",X"A6",X"D0",X"BD",X"65",X"01", - X"D0",X"03",X"20",X"E7",X"51",X"A6",X"D0",X"BD",X"65",X"01",X"C5",X"A6",X"B0",X"05",X"A9",X"FE", - X"B8",X"50",X"12",X"38",X"E5",X"A6",X"C9",X"0E",X"D0",X"05",X"A9",X"00",X"B8",X"50",X"06",X"A9", - X"02",X"B0",X"02",X"A9",X"FE",X"85",X"B1",X"BD",X"18",X"06",X"85",X"98",X"BD",X"08",X"06",X"46", - X"98",X"6A",X"46",X"98",X"6A",X"46",X"98",X"6A",X"46",X"98",X"6A",X"18",X"7D",X"30",X"01",X"C5", - X"A5",X"B0",X"05",X"A9",X"FE",X"B8",X"50",X"09",X"D0",X"05",X"A9",X"00",X"B8",X"50",X"02",X"A9", - X"02",X"85",X"B0",X"05",X"B1",X"D0",X"2F",X"A5",X"BC",X"C9",X"02",X"B0",X"29",X"A2",X"02",X"A5", - X"A5",X"C9",X"60",X"B0",X"05",X"A2",X"00",X"B8",X"50",X"06",X"C9",X"A0",X"B0",X"02",X"A2",X"01", - X"A5",X"BC",X"18",X"65",X"8E",X"C5",X"8C",X"B0",X"0D",X"20",X"BD",X"52",X"A0",X"00",X"84",X"B0", - X"88",X"84",X"B1",X"20",X"E7",X"51",X"60",X"A6",X"D0",X"CA",X"10",X"02",X"A2",X"07",X"E4",X"D0", - X"D0",X"01",X"60",X"BD",X"65",X"01",X"F0",X"F1",X"86",X"D0",X"60",X"A0",X"00",X"B5",X"B0",X"10", - X"01",X"88",X"94",X"9D",X"A0",X"06",X"A5",X"FC",X"0A",X"A5",X"F4",X"29",X"08",X"6A",X"25",X"93", - X"F0",X"01",X"C8",X"16",X"B0",X"36",X"9D",X"88",X"10",X"F9",X"B5",X"A3",X"18",X"75",X"B0",X"95", - X"A3",X"B5",X"A5",X"75",X"9D",X"D5",X"A5",X"F0",X"0F",X"B4",X"9D",X"10",X"07",X"90",X"02",X"A9", - X"00",X"B8",X"50",X"04",X"B0",X"02",X"A9",X"FF",X"60",X"A2",X"00",X"20",X"40",X"52",X"A2",X"01", - X"20",X"FB",X"51",X"DD",X"56",X"52",X"B0",X"03",X"BD",X"56",X"52",X"DD",X"58",X"52",X"90",X"03", - X"BD",X"58",X"52",X"95",X"A5",X"60",X"08",X"2D",X"F7",X"CE",X"A5",X"93",X"F0",X"57",X"A5",X"8D", - X"05",X"8C",X"05",X"DB",X"05",X"DA",X"0D",X"6D",X"01",X"F0",X"47",X"A5",X"8F",X"18",X"65",X"BC", - X"C9",X"10",X"B0",X"10",X"65",X"8C",X"18",X"65",X"DA",X"18",X"AE",X"6D",X"01",X"F0",X"01",X"38", - X"65",X"90",X"C9",X"14",X"B0",X"1E",X"A2",X"02",X"A5",X"FA",X"3D",X"BA",X"52",X"F0",X"0F",X"B5", - X"A0",X"F0",X"06",X"20",X"BD",X"52",X"B8",X"50",X"05",X"A9",X"80",X"20",X"EC",X"79",X"CA",X"10", - X"E7",X"B8",X"50",X"0B",X"A5",X"FA",X"29",X"07",X"F0",X"05",X"A9",X"80",X"20",X"EC",X"79",X"B8", - X"50",X"03",X"20",X"72",X"65",X"A9",X"00",X"85",X"FA",X"60",X"04",X"02",X"01",X"A0",X"07",X"B9", - X"5D",X"01",X"D0",X"59",X"84",X"97",X"A9",X"00",X"99",X"4D",X"01",X"99",X"18",X"01",X"BD",X"E8", - X"60",X"99",X"82",X"01",X"99",X"28",X"01",X"BD",X"F4",X"60",X"99",X"92",X"01",X"99",X"5D",X"01", - X"A5",X"A5",X"99",X"A2",X"01",X"A5",X"A6",X"99",X"B2",X"01",X"20",X"7C",X"65",X"20",X"F6",X"58", - X"A5",X"93",X"F0",X"14",X"B5",X"A0",X"C9",X"04",X"D0",X"09",X"8A",X"20",X"24",X"68",X"A9",X"01", - X"B8",X"50",X"02",X"A9",X"04",X"20",X"EC",X"79",X"D6",X"A0",X"D0",X"08",X"A5",X"93",X"F0",X"04", - X"8A",X"20",X"36",X"68",X"8A",X"A8",X"20",X"D1",X"67",X"98",X"AA",X"A0",X"00",X"88",X"10",X"9F", - X"60",X"A5",X"B3",X"F0",X"05",X"C6",X"B3",X"B8",X"50",X"4E",X"A5",X"B2",X"18",X"65",X"B7",X"85", - X"B2",X"A5",X"B3",X"65",X"B8",X"85",X"B3",X"A2",X"07",X"86",X"DC",X"A9",X"FF",X"85",X"BD",X"85", - X"C2",X"A9",X"00",X"85",X"8C",X"85",X"DA",X"85",X"BE",X"A6",X"DC",X"BD",X"65",X"01",X"F0",X"1A", - X"8A",X"18",X"69",X"08",X"85",X"97",X"BD",X"65",X"01",X"C5",X"BD",X"B0",X"02",X"85",X"BD",X"C5", - X"BE",X"90",X"02",X"85",X"BE",X"25",X"93",X"20",X"79",X"53",X"C6",X"DC",X"10",X"DB",X"A4",X"8E", - X"C0",X"0C",X"90",X"04",X"A9",X"FF",X"85",X"C2",X"60",X"A8",X"A5",X"D9",X"3D",X"F7",X"60",X"D0", - X"13",X"C0",X"80",X"90",X"06",X"C0",X"A0",X"B0",X"02",X"86",X"C2",X"20",X"F7",X"66",X"20",X"11", - X"54",X"B8",X"50",X"06",X"20",X"AC",X"77",X"20",X"0D",X"63",X"A6",X"DC",X"90",X"1D",X"A5",X"D9", - X"3D",X"F7",X"60",X"F0",X"06",X"20",X"E9",X"7A",X"B8",X"50",X"07",X"A6",X"97",X"20",X"86",X"66", - X"A6",X"DC",X"20",X"6B",X"58",X"20",X"9F",X"55",X"B8",X"50",X"14",X"A5",X"D9",X"3D",X"F7",X"60", - X"D0",X"08",X"20",X"F0",X"66",X"E6",X"8C",X"B8",X"50",X"05",X"20",X"A8",X"77",X"E6",X"DA",X"60", - X"A9",X"00",X"85",X"BC",X"A2",X"07",X"BD",X"5D",X"01",X"F0",X"32",X"86",X"97",X"A0",X"02",X"BD", - X"82",X"01",X"C9",X"7B",X"D0",X"02",X"A0",X"06",X"84",X"D5",X"20",X"F7",X"66",X"20",X"11",X"54", - X"90",X"0D",X"20",X"92",X"65",X"20",X"86",X"66",X"20",X"6B",X"58",X"A9",X"00",X"85",X"D5",X"C6", - X"D5",X"10",X"E7",X"BD",X"5D",X"01",X"F0",X"05",X"20",X"F0",X"66",X"E6",X"BC",X"CA",X"10",X"C6", - X"60",X"A4",X"97",X"B9",X"18",X"01",X"18",X"79",X"00",X"06",X"99",X"18",X"01",X"B9",X"28",X"01", - X"79",X"10",X"06",X"99",X"28",X"01",X"B9",X"4D",X"01",X"18",X"79",X"20",X"06",X"99",X"4D",X"01", - X"B9",X"5D",X"01",X"79",X"30",X"06",X"99",X"5D",X"01",X"D9",X"B2",X"01",X"F0",X"08",X"6A",X"59", - X"30",X"06",X"10",X"02",X"38",X"60",X"B9",X"28",X"01",X"D9",X"A2",X"01",X"F0",X"08",X"6A",X"59", - X"10",X"06",X"10",X"02",X"38",X"60",X"18",X"60",X"A4",X"B4",X"88",X"10",X"02",X"A0",X"04",X"84", - X"B4",X"A5",X"8E",X"F0",X"4B",X"BE",X"B2",X"54",X"BD",X"6E",X"01",X"F0",X"3A",X"85",X"9C",X"FE", - X"C2",X"01",X"BD",X"C2",X"01",X"29",X"7F",X"A8",X"C9",X"1B",X"90",X"16",X"BD",X"C2",X"01",X"30", - X"05",X"C6",X"8F",X"B8",X"50",X"02",X"C6",X"90",X"C6",X"8E",X"A9",X"00",X"9D",X"6E",X"01",X"B8", - X"50",X"15",X"BD",X"39",X"01",X"85",X"9B",X"B9",X"B7",X"54",X"85",X"B5",X"B9",X"B8",X"54",X"85", - X"9A",X"20",X"71",X"5E",X"20",X"D4",X"54",X"CA",X"A4",X"B4",X"8A",X"D9",X"B1",X"54",X"D0",X"B8", - X"60",X"FF",X"03",X"07",X"0B",X"0F",X"13",X"00",X"00",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"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"8A",X"48",X"A5",X"9A",X"85",X"D5",X"A0",X"08",X"A5",X"9C",X"C9",X"21", - X"90",X"5E",X"B9",X"65",X"01",X"F0",X"56",X"85",X"9E",X"B9",X"30",X"01",X"85",X"9D",X"C0",X"08", - X"D0",X"05",X"A9",X"06",X"B8",X"50",X"0E",X"A5",X"D9",X"39",X"F7",X"60",X"D0",X"05",X"A9",X"01", - X"B8",X"50",X"02",X"A9",X"03",X"18",X"65",X"D5",X"85",X"9A",X"20",X"AB",X"58",X"B0",X"2E",X"98", - X"48",X"18",X"69",X"08",X"85",X"97",X"C4",X"C2",X"D0",X"04",X"A9",X"FF",X"85",X"C2",X"C0",X"08", - X"90",X"06",X"20",X"43",X"55",X"B8",X"50",X"10",X"A5",X"D9",X"39",X"F7",X"60",X"D0",X"06",X"20", - X"50",X"55",X"B8",X"50",X"03",X"20",X"66",X"55",X"20",X"6B",X"58",X"68",X"A8",X"88",X"10",X"A2", - X"68",X"AA",X"60",X"20",X"F8",X"7A",X"A9",X"00",X"85",X"C9",X"85",X"E3",X"A2",X"03",X"D0",X"20", - X"C6",X"8C",X"20",X"7B",X"55",X"A6",X"97",X"20",X"86",X"66",X"A2",X"00",X"A4",X"97",X"B9",X"5D", - X"01",X"C9",X"21",X"B0",X"0B",X"60",X"C6",X"DA",X"20",X"7B",X"55",X"20",X"E9",X"7A",X"A2",X"04", - X"20",X"9F",X"5F",X"A4",X"B9",X"20",X"13",X"60",X"4C",X"EA",X"79",X"A4",X"97",X"B9",X"A2",X"01", - X"48",X"A9",X"00",X"99",X"A2",X"01",X"68",X"A0",X"07",X"D9",X"AA",X"01",X"D0",X"01",X"60",X"88", - X"10",X"F7",X"A0",X"09",X"88",X"D9",X"E2",X"60",X"D0",X"FA",X"A9",X"00",X"4C",X"47",X"58",X"A4", - X"97",X"B9",X"A2",X"01",X"A0",X"09",X"88",X"D9",X"E2",X"60",X"D0",X"FA",X"A9",X"00",X"20",X"47", - X"58",X"C0",X"06",X"90",X"21",X"A9",X"00",X"99",X"9A",X"00",X"B9",X"F1",X"60",X"49",X"E0",X"25", - X"CD",X"C5",X"CD",X"F0",X"0E",X"85",X"CD",X"A9",X"02",X"20",X"EC",X"79",X"98",X"38",X"E9",X"06", - X"20",X"36",X"68",X"B8",X"50",X"24",X"B9",X"F7",X"60",X"49",X"FC",X"A4",X"B9",X"39",X"C5",X"00", - X"D9",X"C5",X"00",X"F0",X"15",X"99",X"C5",X"00",X"B9",X"C0",X"00",X"F0",X"06",X"38",X"E9",X"01", - X"99",X"C0",X"00",X"E6",X"CF",X"A9",X"02",X"20",X"EC",X"79",X"60",X"A5",X"8D",X"05",X"DB",X"F0", - X"76",X"A5",X"A7",X"0A",X"49",X"FF",X"38",X"69",X"CA",X"C9",X"B4",X"B0",X"02",X"A9",X"B4",X"C5", - X"BE",X"90",X"64",X"A9",X"07",X"38",X"AE",X"6D",X"01",X"F0",X"01",X"18",X"E5",X"90",X"38",X"E5", - X"8C",X"38",X"E5",X"DA",X"30",X"0B",X"85",X"DE",X"18",X"69",X"0C",X"38",X"E5",X"8F",X"38",X"E5", - X"BC",X"30",X"44",X"C5",X"DE",X"B0",X"02",X"85",X"DE",X"20",X"FF",X"60",X"A5",X"DE",X"30",X"37", - X"A5",X"DB",X"D0",X"06",X"20",X"78",X"56",X"B8",X"50",X"2D",X"A5",X"DA",X"C9",X"03",X"B0",X"24", - X"18",X"65",X"8C",X"C9",X"05",X"B0",X"1A",X"A5",X"8D",X"D0",X"06",X"20",X"17",X"57",X"B8",X"50", - X"10",X"AD",X"0A",X"40",X"29",X"03",X"D0",X"06",X"20",X"17",X"57",X"B8",X"50",X"03",X"20",X"78", - X"56",X"B8",X"50",X"03",X"20",X"78",X"56",X"60",X"A2",X"FF",X"A5",X"8D",X"F0",X"2A",X"38",X"AD", - X"6D",X"01",X"F0",X"01",X"18",X"A9",X"07",X"E5",X"DA",X"38",X"E5",X"DA",X"38",X"E5",X"8C",X"30", - X"17",X"AA",X"E8",X"E0",X"04",X"90",X"02",X"A2",X"04",X"E4",X"8D",X"90",X"02",X"A6",X"8D",X"E6", - X"DE",X"E4",X"DE",X"90",X"02",X"A6",X"DE",X"CA",X"86",X"DE",X"A6",X"DE",X"30",X"33",X"A5",X"A7", - X"C9",X"02",X"90",X"1D",X"AD",X"6D",X"01",X"F0",X"18",X"A5",X"C9",X"C5",X"E1",X"90",X"12",X"AD", - X"38",X"01",X"C9",X"30",X"90",X"0B",X"C9",X"D0",X"B0",X"07",X"A9",X"00",X"85",X"C9",X"4C",X"39", - X"57",X"A5",X"A7",X"C9",X"01",X"90",X"07",X"A4",X"C2",X"30",X"03",X"4C",X"3B",X"57",X"4C",X"31", - X"57",X"60",X"86",X"AC",X"20",X"82",X"57",X"A6",X"97",X"30",X"29",X"A9",X"DE",X"9D",X"65",X"01", - X"9D",X"9A",X"01",X"AD",X"0A",X"40",X"A2",X"07",X"DD",X"8A",X"01",X"D0",X"05",X"AD",X"0A",X"40", - X"A2",X"08",X"CA",X"10",X"F3",X"A6",X"97",X"9D",X"8A",X"01",X"9D",X"30",X"01",X"20",X"91",X"57", - X"A9",X"FF",X"85",X"BE",X"A6",X"AC",X"60",X"20",X"E2",X"56",X"A6",X"97",X"30",X"12",X"20",X"D1", - X"7A",X"E6",X"DA",X"C6",X"DB",X"E6",X"8D",X"C6",X"8C",X"A5",X"D9",X"1D",X"EF",X"60",X"85",X"D9", - X"60",X"20",X"E2",X"56",X"C6",X"DE",X"10",X"F9",X"60",X"A0",X"08",X"A5",X"DE",X"C9",X"02",X"90", - X"02",X"A9",X"02",X"85",X"DE",X"84",X"AC",X"20",X"82",X"57",X"A6",X"97",X"30",X"31",X"A4",X"AC", - X"A9",X"00",X"C0",X"09",X"D0",X"0B",X"A5",X"C8",X"10",X"05",X"A9",X"FC",X"B8",X"50",X"02",X"A9", - X"04",X"24",X"FC",X"50",X"02",X"49",X"FF",X"18",X"79",X"30",X"01",X"9D",X"30",X"01",X"9D",X"8A", - X"01",X"B9",X"65",X"01",X"9D",X"65",X"01",X"9D",X"9A",X"01",X"20",X"91",X"57",X"C6",X"DE",X"10", - X"C6",X"60",X"A2",X"07",X"BD",X"65",X"01",X"D0",X"04",X"86",X"97",X"A2",X"00",X"CA",X"10",X"F4", - X"60",X"A6",X"B9",X"B5",X"C5",X"45",X"CB",X"35",X"C5",X"85",X"98",X"A5",X"CD",X"45",X"CC",X"25", - X"CD",X"85",X"99",X"A4",X"CF",X"A5",X"CB",X"35",X"C5",X"10",X"01",X"C8",X"0A",X"D0",X"FA",X"C0", - X"03",X"B0",X"1E",X"A0",X"00",X"A5",X"98",X"F0",X"06",X"20",X"1D",X"58",X"B8",X"50",X"0F",X"A0", - X"06",X"A5",X"99",X"F0",X"06",X"20",X"1D",X"58",X"B8",X"50",X"03",X"20",X"0C",X"58",X"B8",X"50", - X"0F",X"A0",X"06",X"A5",X"99",X"F0",X"06",X"20",X"1D",X"58",X"B8",X"50",X"03",X"20",X"17",X"58", - X"A9",X"FF",X"20",X"47",X"58",X"A6",X"97",X"B9",X"E2",X"60",X"9D",X"AA",X"01",X"B9",X"EB",X"60", - X"9D",X"BA",X"01",X"A9",X"00",X"9D",X"20",X"01",X"9D",X"55",X"01",X"BD",X"F7",X"60",X"49",X"FF", - X"25",X"D9",X"85",X"D9",X"20",X"FA",X"58",X"C6",X"8D",X"E6",X"8C",X"60",X"AD",X"0A",X"40",X"4A", - X"29",X"07",X"A8",X"90",X"01",X"C8",X"60",X"A0",X"00",X"A5",X"98",X"49",X"FF",X"48",X"A2",X"00", - X"29",X"FF",X"10",X"01",X"E8",X"0A",X"D0",X"F8",X"86",X"98",X"AD",X"0A",X"40",X"3D",X"3E",X"58", - X"C5",X"98",X"B0",X"F6",X"AA",X"68",X"88",X"0A",X"C8",X"90",X"FC",X"CA",X"10",X"F9",X"60",X"00", - X"01",X"03",X"03",X"07",X"07",X"07",X"07",X"85",X"98",X"84",X"99",X"A2",X"00",X"98",X"C9",X"06", - X"90",X"06",X"38",X"E9",X"06",X"A8",X"A2",X"01",X"B9",X"F7",X"60",X"49",X"FF",X"35",X"CB",X"24", - X"98",X"10",X"03",X"19",X"F7",X"60",X"95",X"CB",X"A4",X"99",X"60",X"86",X"AB",X"A6",X"97",X"BD", - X"5D",X"01",X"C9",X"D2",X"B0",X"2A",X"A4",X"96",X"C6",X"96",X"10",X"04",X"A9",X"13",X"85",X"96", - X"E6",X"8E",X"BD",X"28",X"01",X"99",X"39",X"01",X"BD",X"5D",X"01",X"99",X"6E",X"01",X"E0",X"08", - X"90",X"07",X"E6",X"90",X"A9",X"80",X"B8",X"50",X"04",X"E6",X"8F",X"A9",X"00",X"99",X"C2",X"01", - X"A9",X"00",X"9D",X"5D",X"01",X"9D",X"28",X"01",X"A6",X"AB",X"60",X"A5",X"9E",X"C5",X"9C",X"90", - X"05",X"E5",X"9C",X"B8",X"50",X"05",X"A5",X"9C",X"38",X"E5",X"9E",X"C5",X"9A",X"B0",X"36",X"85", - X"B1",X"A5",X"9D",X"C5",X"9B",X"90",X"05",X"E5",X"9B",X"B8",X"50",X"05",X"A5",X"9B",X"38",X"E5", - X"9D",X"C5",X"9A",X"B0",X"20",X"C5",X"B1",X"B0",X"09",X"85",X"98",X"A5",X"B1",X"85",X"99",X"B8", - X"50",X"06",X"85",X"99",X"A5",X"B1",X"85",X"98",X"A5",X"98",X"4A",X"18",X"65",X"98",X"4A",X"4A", - X"18",X"65",X"99",X"C5",X"9A",X"60",X"84",X"97",X"10",X"06",X"8A",X"18",X"69",X"08",X"85",X"97", - X"8A",X"48",X"98",X"48",X"A6",X"97",X"BD",X"B2",X"01",X"DD",X"5D",X"01",X"90",X"06",X"FD",X"5D", - X"01",X"B8",X"50",X"07",X"BD",X"5D",X"01",X"38",X"FD",X"B2",X"01",X"85",X"B1",X"BD",X"A2",X"01", - X"DD",X"28",X"01",X"90",X"06",X"FD",X"28",X"01",X"B8",X"50",X"07",X"BD",X"28",X"01",X"38",X"FD", - X"A2",X"01",X"85",X"B0",X"A5",X"B0",X"C5",X"B1",X"B0",X"09",X"85",X"98",X"A5",X"B1",X"85",X"99", - X"B8",X"50",X"06",X"85",X"99",X"A5",X"B1",X"85",X"98",X"A5",X"98",X"4A",X"18",X"65",X"98",X"4A", - X"4A",X"18",X"65",X"99",X"90",X"02",X"A9",X"FF",X"85",X"98",X"A4",X"98",X"A5",X"B1",X"20",X"BB", - X"59",X"A5",X"A9",X"9D",X"30",X"06",X"A5",X"AA",X"9D",X"20",X"06",X"A4",X"98",X"A5",X"B0",X"20", - X"BB",X"59",X"A5",X"A9",X"9D",X"10",X"06",X"A5",X"AA",X"9D",X"00",X"06",X"BD",X"B2",X"01",X"DD", - X"5D",X"01",X"B0",X"15",X"BD",X"20",X"06",X"49",X"FF",X"18",X"69",X"01",X"9D",X"20",X"06",X"BD", - X"30",X"06",X"49",X"FF",X"69",X"00",X"9D",X"30",X"06",X"BD",X"A2",X"01",X"DD",X"28",X"01",X"B0", - X"15",X"BD",X"00",X"06",X"49",X"FF",X"18",X"69",X"01",X"9D",X"00",X"06",X"BD",X"10",X"06",X"49", - X"FF",X"69",X"00",X"9D",X"10",X"06",X"68",X"A8",X"68",X"AA",X"60",X"84",X"AD",X"86",X"AB",X"20", - X"D0",X"59",X"86",X"A9",X"A2",X"00",X"86",X"A8",X"20",X"D4",X"59",X"86",X"AA",X"A6",X"AB",X"60", - X"85",X"A8",X"A9",X"00",X"A0",X"07",X"26",X"A8",X"2A",X"90",X"05",X"E5",X"AD",X"38",X"B0",X"06", - X"C5",X"AD",X"90",X"02",X"E5",X"AD",X"88",X"10",X"ED",X"26",X"A8",X"A6",X"A8",X"60",X"A4",X"B9", - X"A5",X"A0",X"05",X"A1",X"05",X"A2",X"85",X"99",X"D0",X"24",X"B9",X"C5",X"00",X"F0",X"08",X"A5", - X"CF",X"C9",X"03",X"90",X"02",X"A9",X"00",X"D0",X"15",X"A9",X"00",X"85",X"C9",X"85",X"8D",X"85", - X"DB",X"AD",X"6D",X"01",X"05",X"BC",X"05",X"8E",X"D0",X"04",X"A9",X"08",X"85",X"91",X"A5",X"BC", - X"05",X"8E",X"05",X"99",X"D0",X"04",X"A9",X"FF",X"85",X"BF",X"A5",X"BF",X"F0",X"0D",X"A9",X"00", - X"85",X"C7",X"85",X"B3",X"85",X"B8",X"85",X"B7",X"20",X"72",X"65",X"A5",X"8D",X"05",X"BC",X"05", - X"DB",X"05",X"8C",X"05",X"DA",X"0D",X"6D",X"01",X"05",X"8E",X"D0",X"04",X"A9",X"08",X"85",X"91", - X"60",X"4D",X"A5",X"93",X"F0",X"03",X"4C",X"F0",X"65",X"A5",X"91",X"C9",X"04",X"D0",X"22",X"A0", - X"00",X"A5",X"D7",X"D0",X"02",X"A0",X"40",X"84",X"B6",X"A2",X"05",X"86",X"AB",X"A5",X"B6",X"85", - X"0B",X"A0",X"24",X"BD",X"E2",X"60",X"AA",X"A9",X"1C",X"20",X"00",X"66",X"A6",X"AB",X"CA",X"10", - X"EA",X"60",X"A9",X"10",X"85",X"B3",X"A9",X"40",X"85",X"B2",X"A9",X"00",X"85",X"93",X"85",X"EC", - X"A2",X"07",X"A9",X"0E",X"95",X"E4",X"CA",X"10",X"FB",X"20",X"86",X"69",X"A9",X"1C",X"20",X"51", - X"6A",X"A9",X"1D",X"20",X"51",X"6A",X"A9",X"06",X"85",X"EA",X"A9",X"00",X"A2",X"13",X"9D",X"6E", - X"01",X"CA",X"10",X"FA",X"A9",X"16",X"85",X"91",X"60",X"A5",X"B2",X"F0",X"05",X"C6",X"B2",X"B8", - X"50",X"0E",X"C6",X"B3",X"D0",X"07",X"A9",X"00",X"85",X"91",X"B8",X"50",X"03",X"20",X"B3",X"62", - X"60",X"20",X"2F",X"67",X"A9",X"40",X"85",X"CE",X"A5",X"93",X"F0",X"03",X"20",X"D6",X"5F",X"A9", - X"00",X"85",X"DF",X"85",X"C1",X"85",X"C6",X"85",X"C3",X"85",X"C4",X"A9",X"01",X"85",X"A7",X"A6", - X"AE",X"A5",X"F4",X"29",X"03",X"A8",X"B9",X"08",X"5B",X"95",X"C0",X"B9",X"0C",X"5B",X"95",X"C5", - X"CA",X"10",X"F3",X"A9",X"02",X"85",X"91",X"60",X"06",X"04",X"05",X"07",X"FC",X"E8",X"F8",X"FC", - X"A5",X"DF",X"85",X"B9",X"20",X"0C",X"7B",X"A9",X"10",X"20",X"EC",X"79",X"A5",X"93",X"D0",X"09", - X"A0",X"01",X"84",X"A7",X"A9",X"12",X"B8",X"50",X"0B",X"A4",X"A7",X"C0",X"13",X"90",X"02",X"A0", - X"13",X"B9",X"8F",X"60",X"85",X"8D",X"BE",X"C0",X"60",X"86",X"DB",X"A9",X"30",X"85",X"EC",X"20", - X"1A",X"67",X"20",X"9E",X"5B",X"A9",X"FF",X"85",X"C2",X"A9",X"00",X"85",X"BF",X"85",X"96",X"85", - X"8E",X"85",X"90",X"85",X"8F",X"85",X"DA",X"85",X"C9",X"85",X"D9",X"85",X"8C",X"85",X"D0",X"85", - X"FA",X"85",X"B4",X"85",X"CC",X"85",X"CB",X"85",X"B3",X"85",X"CF",X"A2",X"AA",X"9D",X"17",X"01", - X"CA",X"D0",X"FA",X"A9",X"E0",X"85",X"CD",X"A5",X"93",X"F0",X"03",X"20",X"CE",X"65",X"20",X"16", - X"5F",X"A0",X"02",X"A9",X"0A",X"99",X"A0",X"00",X"20",X"6A",X"68",X"88",X"10",X"F5",X"20",X"5C", - X"65",X"A9",X"04",X"85",X"92",X"A9",X"22",X"85",X"91",X"A9",X"1E",X"85",X"AF",X"60",X"A9",X"00", - X"85",X"BA",X"85",X"BB",X"A5",X"A7",X"18",X"69",X"01",X"4A",X"C9",X"06",X"90",X"02",X"A9",X"06", - X"85",X"DD",X"AA",X"F8",X"A5",X"BA",X"18",X"69",X"25",X"85",X"BA",X"A5",X"BB",X"69",X"00",X"85", - X"BB",X"D8",X"CA",X"D0",X"EE",X"A4",X"A7",X"C0",X"0F",X"90",X"02",X"A0",X"0F",X"B9",X"A2",X"60", - X"85",X"B7",X"B9",X"B1",X"60",X"85",X"B8",X"C0",X"08",X"90",X"02",X"A0",X"08",X"B9",X"D2",X"60", - X"85",X"E1",X"B9",X"D9",X"60",X"85",X"E2",X"85",X"E3",X"60",X"20",X"37",X"5E",X"20",X"72",X"65", - X"20",X"96",X"5F",X"A9",X"00",X"85",X"97",X"A2",X"10",X"A5",X"93",X"F0",X"20",X"A5",X"A0",X"05", - X"A1",X"05",X"A2",X"F0",X"0A",X"A9",X"07",X"20",X"55",X"6A",X"A2",X"0A",X"B8",X"50",X"0E",X"A4", - X"B9",X"B9",X"C5",X"00",X"F0",X"07",X"A9",X"07",X"20",X"55",X"6A",X"A2",X"0C",X"86",X"91",X"60", - X"C6",X"B4",X"10",X"5D",X"A0",X"02",X"B9",X"A0",X"00",X"F0",X"3B",X"38",X"E9",X"01",X"99",X"A0", - X"00",X"20",X"D1",X"67",X"20",X"BB",X"5F",X"A2",X"40",X"A0",X"80",X"A9",X"40",X"20",X"F6",X"6A", - X"A9",X"82",X"49",X"FF",X"85",X"07",X"A5",X"97",X"0A",X"0A",X"18",X"69",X"7A",X"24",X"FC",X"50", - X"02",X"49",X"FF",X"85",X"06",X"A9",X"E0",X"20",X"ED",X"67",X"E6",X"97",X"A9",X"05",X"85",X"B4", - X"A9",X"08",X"20",X"EC",X"79",X"60",X"88",X"10",X"BD",X"A9",X"0C",X"85",X"92",X"A2",X"0F",X"A4", - X"B9",X"B9",X"C5",X"00",X"F0",X"02",X"A2",X"00",X"86",X"AF",X"20",X"13",X"60",X"A9",X"22",X"85", - X"91",X"60",X"A9",X"10",X"85",X"91",X"A4",X"B9",X"B9",X"C5",X"00",X"25",X"93",X"F0",X"0B",X"A2", - X"00",X"0A",X"90",X"01",X"E8",X"C9",X"00",X"D0",X"F8",X"8A",X"F0",X"0D",X"86",X"97",X"A9",X"00", - X"85",X"8D",X"A9",X"0E",X"85",X"91",X"20",X"96",X"5F",X"60",X"C6",X"B4",X"10",X"5D",X"A4",X"B9", - X"B9",X"C5",X"00",X"85",X"98",X"A6",X"97",X"A0",X"06",X"88",X"A5",X"98",X"39",X"F7",X"60",X"F0", - X"01",X"CA",X"E0",X"00",X"D0",X"F3",X"20",X"53",X"67",X"A2",X"03",X"20",X"A2",X"5F",X"A2",X"40", - X"A0",X"60",X"A9",X"40",X"20",X"F6",X"6A",X"A5",X"8D",X"E6",X"8D",X"0A",X"0A",X"0A",X"0A",X"18", - X"65",X"8D",X"18",X"69",X"80",X"AA",X"A0",X"60",X"A9",X"E4",X"20",X"95",X"67",X"A9",X"08",X"20", - X"EC",X"79",X"A9",X"0A",X"85",X"B4",X"C6",X"97",X"D0",X"11",X"A9",X"10",X"85",X"92",X"A9",X"22", - X"85",X"91",X"A9",X"0F",X"85",X"AF",X"A4",X"B9",X"20",X"13",X"60",X"60",X"A9",X"02",X"85",X"92", - X"A9",X"00",X"85",X"AF",X"A9",X"22",X"85",X"91",X"20",X"ED",X"5D",X"A5",X"C0",X"05",X"C1",X"25", - X"93",X"D0",X"07",X"A9",X"18",X"85",X"91",X"B8",X"50",X"42",X"A4",X"AE",X"F0",X"1D",X"A4",X"B9", - X"B9",X"C0",X"00",X"D0",X"16",X"A9",X"07",X"20",X"49",X"6A",X"A9",X"09",X"20",X"49",X"6A",X"A9", - X"0E",X"20",X"55",X"6A",X"20",X"48",X"5F",X"A9",X"0F",X"85",X"AF",X"A5",X"B9",X"85",X"DF",X"A4", - X"AE",X"F0",X"10",X"C4",X"DF",X"D0",X"07",X"C6",X"DF",X"E6",X"A7",X"B8",X"50",X"02",X"E6",X"DF", - X"B8",X"50",X"02",X"E6",X"A7",X"A4",X"DF",X"B9",X"C0",X"00",X"F0",X"E3",X"60",X"A2",X"1C",X"A5", - X"93",X"F0",X"1E",X"A9",X"06",X"85",X"E4",X"85",X"E5",X"85",X"E6",X"85",X"E7",X"85",X"E9",X"85", - X"EA",X"85",X"EB",X"A9",X"80",X"85",X"CE",X"20",X"E1",X"5F",X"A9",X"20",X"20",X"EC",X"79",X"A2", - X"12",X"86",X"91",X"A0",X"00",X"8C",X"C3",X"01",X"84",X"AE",X"84",X"93",X"A0",X"01",X"8C",X"C2", - X"01",X"60",X"AD",X"C2",X"01",X"85",X"B5",X"F0",X"3C",X"C9",X"6D",X"90",X"05",X"A9",X"6C",X"B8", - X"50",X"1B",X"CD",X"C3",X"01",X"B0",X"06",X"38",X"E9",X"01",X"B8",X"50",X"10",X"18",X"69",X"01", - X"48",X"C9",X"62",X"D0",X"05",X"A9",X"08",X"20",X"55",X"6A",X"C6",X"B5",X"68",X"8D",X"C2",X"01", - X"85",X"9A",X"A4",X"B5",X"8C",X"C3",X"01",X"A9",X"80",X"85",X"9B",X"A9",X"73",X"85",X"9C",X"20", - X"71",X"5E",X"B8",X"50",X"07",X"A9",X"1C",X"85",X"91",X"20",X"0C",X"7B",X"60",X"A5",X"93",X"F0", - X"45",X"20",X"40",X"60",X"A4",X"B9",X"B6",X"C0",X"E0",X"06",X"90",X"02",X"A2",X"06",X"B9",X"C5", - X"00",X"85",X"98",X"0A",X"90",X"01",X"CA",X"A8",X"D0",X"F9",X"8A",X"F0",X"29",X"86",X"DC",X"A4", - X"B9",X"B9",X"C5",X"00",X"49",X"FC",X"A0",X"00",X"20",X"1D",X"58",X"A6",X"B9",X"B5",X"C5",X"19", - X"F7",X"60",X"95",X"C5",X"C6",X"DC",X"D0",X"E7",X"A9",X"40",X"20",X"EC",X"79",X"A9",X"05",X"20", - X"55",X"6A",X"A9",X"2D",X"85",X"AF",X"60",X"A5",X"8C",X"05",X"DA",X"F0",X"2C",X"A2",X"07",X"86", - X"DC",X"A6",X"DC",X"BD",X"65",X"01",X"F0",X"1D",X"8A",X"18",X"69",X"08",X"85",X"97",X"A5",X"D9", - X"3D",X"F7",X"60",X"D0",X"06",X"20",X"86",X"66",X"B8",X"50",X"0A",X"20",X"AC",X"77",X"A9",X"00", - X"85",X"DA",X"20",X"E9",X"7A",X"C6",X"DC",X"10",X"D8",X"20",X"0C",X"7B",X"A9",X"0F",X"4C",X"49", - X"6A",X"86",X"AC",X"A5",X"9A",X"C5",X"B5",X"F0",X"23",X"B0",X"12",X"A9",X"00",X"85",X"B6",X"20", - X"9F",X"5E",X"A5",X"B5",X"C6",X"B5",X"C5",X"9A",X"D0",X"F5",X"B8",X"50",X"0F",X"A9",X"80",X"85", - X"B6",X"20",X"9F",X"5E",X"A5",X"B5",X"C5",X"9A",X"E6",X"B5",X"90",X"F5",X"A6",X"AC",X"60",X"A6", - X"B5",X"86",X"9D",X"A2",X"00",X"86",X"9E",X"20",X"CD",X"5E",X"A6",X"9D",X"A5",X"9E",X"86",X"9E", - X"85",X"9D",X"20",X"CD",X"5E",X"E6",X"9D",X"A5",X"9D",X"85",X"9E",X"4A",X"18",X"65",X"9E",X"4A", - X"4A",X"49",X"FF",X"38",X"65",X"B5",X"85",X"9D",X"C5",X"9E",X"B0",X"DB",X"60",X"A2",X"00",X"A5", - X"9B",X"18",X"65",X"9D",X"85",X"B0",X"85",X"98",X"A5",X"9C",X"18",X"65",X"9E",X"49",X"FF",X"85", - X"B1",X"A1",X"B0",X"29",X"20",X"05",X"B6",X"81",X"B0",X"A5",X"9B",X"38",X"E5",X"9D",X"85",X"B0", - X"A1",X"B0",X"29",X"20",X"05",X"B6",X"81",X"B0",X"A5",X"9C",X"38",X"E5",X"9E",X"49",X"FF",X"85", - X"B1",X"A1",X"B0",X"29",X"20",X"05",X"B6",X"81",X"B0",X"A5",X"98",X"85",X"B0",X"A1",X"B0",X"29", - X"20",X"05",X"B6",X"81",X"B0",X"60",X"A5",X"93",X"F0",X"1D",X"20",X"48",X"5F",X"A9",X"06",X"20", - X"55",X"6A",X"A5",X"DD",X"A2",X"40",X"86",X"0B",X"A2",X"58",X"A0",X"70",X"20",X"9D",X"6A",X"A9", - X"1E",X"20",X"55",X"6A",X"B8",X"50",X"03",X"20",X"33",X"6C",X"A5",X"A7",X"C9",X"04",X"B0",X"05", - X"A9",X"15",X"20",X"51",X"6A",X"4C",X"23",X"75",X"A9",X"00",X"20",X"55",X"6A",X"A5",X"B9",X"18", - X"69",X"01",X"A2",X"40",X"86",X"0B",X"A2",X"9C",X"A0",X"90",X"4C",X"9D",X"6A",X"A5",X"CA",X"4A", - X"B0",X"03",X"20",X"66",X"5F",X"60",X"20",X"8C",X"6B",X"A2",X"00",X"8A",X"29",X"3F",X"C9",X"3E", - X"D0",X"08",X"38",X"7E",X"01",X"04",X"38",X"B8",X"50",X"0B",X"BD",X"03",X"04",X"4A",X"7E",X"01", - X"04",X"BD",X"03",X"05",X"4A",X"7E",X"01",X"05",X"8A",X"18",X"69",X"40",X"AA",X"90",X"DC",X"E8", - X"E8",X"E0",X"40",X"90",X"D6",X"60",X"A9",X"00",X"85",X"D1",X"85",X"D2",X"85",X"D3",X"60",X"20", - X"96",X"5F",X"F8",X"A5",X"BA",X"18",X"65",X"D1",X"85",X"D1",X"A5",X"D2",X"65",X"BB",X"85",X"D2", - X"A5",X"D3",X"69",X"00",X"85",X"D3",X"CA",X"10",X"EA",X"D8",X"60",X"A6",X"DD",X"F8",X"A9",X"05", - X"18",X"65",X"D1",X"85",X"D1",X"A9",X"00",X"65",X"D2",X"85",X"D2",X"A5",X"D3",X"69",X"00",X"85", - X"D3",X"CA",X"D0",X"EA",X"D8",X"60",X"A9",X"00",X"A2",X"05",X"9D",X"D6",X"01",X"CA",X"10",X"FA", - X"60",X"A5",X"93",X"D0",X"0C",X"AD",X"D7",X"01",X"0D",X"D9",X"01",X"0D",X"DB",X"01",X"B8",X"50", - X"02",X"A5",X"AE",X"F0",X"05",X"A0",X"01",X"20",X"FC",X"5F",X"A0",X"00",X"20",X"96",X"5F",X"20"); -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/Atari MissileCommand/rtl/rom/rom2.vhd b/Arcade_MiST/Atari MissileCommand/rtl/rom/rom2.vhd deleted file mode 100644 index f78bf45b..00000000 --- a/Arcade_MiST/Atari MissileCommand/rtl/rom/rom2.vhd +++ /dev/null @@ -1,278 +0,0 @@ -library ieee; -use ieee.std_logic_1164.all,ieee.numeric_std.all; - -entity rom2 is -port ( - clk : in std_logic; - addr : in std_logic_vector(11 downto 0); - data : out std_logic_vector(7 downto 0) -); -end entity; - -architecture prom of rom2 is - type rom is array(0 to 4095) of std_logic_vector(7 downto 0); - signal rom_data: rom := ( - X"13",X"60",X"B9",X"11",X"60",X"AA",X"A9",X"00",X"85",X"D4",X"A0",X"E2",X"A5",X"CE",X"4C",X"F6", - X"6A",X"1D",X"B0",X"A5",X"93",X"D0",X"03",X"20",X"96",X"5F",X"F8",X"A5",X"D1",X"18",X"79",X"D6", - X"01",X"99",X"D6",X"01",X"85",X"D1",X"B9",X"D8",X"01",X"65",X"D2",X"99",X"D8",X"01",X"85",X"D2", - X"B9",X"DA",X"01",X"65",X"D3",X"99",X"DA",X"01",X"85",X"D3",X"A9",X"FF",X"85",X"D4",X"D8",X"60", - X"A5",X"F4",X"29",X"70",X"4A",X"4A",X"4A",X"4A",X"A8",X"B9",X"7B",X"60",X"85",X"99",X"F0",X"EF", - X"A6",X"B9",X"BD",X"D8",X"01",X"4A",X"4A",X"4A",X"4A",X"85",X"98",X"BD",X"DA",X"01",X"0A",X"0A", - X"0A",X"0A",X"05",X"98",X"F8",X"38",X"F5",X"C3",X"38",X"E5",X"99",X"90",X"D1",X"F6",X"C0",X"48", - X"B5",X"C3",X"18",X"65",X"99",X"95",X"C3",X"68",X"4C",X"68",X"60",X"10",X"12",X"14",X"15",X"18", - X"20",X"08",X"00",X"01",X"20",X"01",X"40",X"01",X"50",X"01",X"80",X"01",X"00",X"02",X"80",X"00", - X"0C",X"0F",X"12",X"0C",X"10",X"0E",X"11",X"0A",X"0D",X"10",X"13",X"0C",X"0E",X"10",X"12",X"0E", - X"11",X"13",X"16",X"D0",X"E0",X"C0",X"08",X"A0",X"60",X"40",X"20",X"10",X"0A",X"06",X"04",X"02", - X"01",X"00",X"04",X"02",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"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"02",X"03",X"04",X"04",X"05",X"05",X"06",X"06", - X"07",X"07",X"07",X"07",X"80",X"60",X"40",X"30",X"20",X"20",X"10",X"F0",X"A0",X"80",X"80",X"60", - X"40",X"20",X"5F",X"B4",X"94",X"2C",X"47",X"D0",X"14",X"7B",X"F0",X"10",X"15",X"12",X"12",X"11", - X"11",X"16",X"16",X"16",X"18",X"18",X"18",X"80",X"40",X"20",X"10",X"08",X"04",X"02",X"01",X"A5", - X"8D",X"F0",X"42",X"AD",X"6D",X"01",X"D0",X"3D",X"A4",X"A7",X"C0",X"02",X"90",X"37",X"A5",X"E3", - X"C5",X"E2",X"90",X"31",X"A2",X"00",X"86",X"C7",X"86",X"C9",X"AD",X"0A",X"40",X"10",X"01",X"CA", - X"86",X"C8",X"8E",X"38",X"01",X"29",X"01",X"85",X"D6",X"AD",X"0A",X"40",X"4A",X"4A",X"4A",X"69", - X"64",X"C0",X"06",X"B0",X"02",X"69",X"20",X"C0",X"04",X"B0",X"02",X"69",X"10",X"8D",X"6D",X"01", - X"20",X"DC",X"7A",X"C6",X"DE",X"60",X"E6",X"E3",X"D0",X"02",X"C6",X"E3",X"AD",X"6D",X"01",X"F0", - X"29",X"85",X"B1",X"C6",X"C7",X"10",X"23",X"E6",X"C9",X"A4",X"D6",X"B9",X"7B",X"61",X"85",X"C7", - X"AD",X"38",X"01",X"20",X"7D",X"61",X"D0",X"0F",X"A9",X"00",X"8D",X"6D",X"01",X"85",X"C9",X"85", - X"E3",X"20",X"F8",X"7A",X"B8",X"50",X"03",X"8D",X"38",X"01",X"60",X"01",X"02",X"84",X"AB",X"84", - X"99",X"85",X"B0",X"A5",X"C8",X"30",X"05",X"E6",X"B0",X"B8",X"50",X"02",X"C6",X"B0",X"B9",X"ED", - X"61",X"85",X"99",X"A6",X"99",X"BD",X"F5",X"61",X"85",X"98",X"BD",X"FB",X"61",X"85",X"B6",X"BC", - X"EF",X"61",X"A6",X"99",X"B9",X"63",X"62",X"18",X"65",X"B1",X"49",X"FF",X"85",X"07",X"B9",X"13", - X"62",X"45",X"C8",X"10",X"0A",X"18",X"65",X"B0",X"C5",X"B0",X"B0",X"1C",X"B8",X"50",X"07",X"18", - X"65",X"B0",X"C5",X"B0",X"90",X"12",X"DD",X"01",X"62",X"90",X"0D",X"DD",X"07",X"62",X"B0",X"08", - X"85",X"06",X"A2",X"00",X"A5",X"B6",X"81",X"06",X"C8",X"C6",X"98",X"10",X"C5",X"A4",X"99",X"C6", - X"99",X"B9",X"0D",X"62",X"10",X"AD",X"A5",X"B0",X"F0",X"02",X"C9",X"FF",X"60",X"03",X"05",X"00", - X"17",X"2C",X"30",X"36",X"43",X"16",X"14",X"03",X"05",X"0C",X"0C",X"40",X"00",X"80",X"E0",X"40", - X"00",X"08",X"08",X"08",X"08",X"09",X"09",X"F8",X"F8",X"F8",X"F8",X"F7",X"F7",X"FF",X"00",X"00", - X"00",X"FF",X"00",X"03",X"03",X"04",X"04",X"04",X"03",X"03",X"01",X"01",X"05",X"04",X"04",X"05", - X"FB",X"FC",X"FC",X"FB",X"00",X"00",X"00",X"FC",X"FC",X"FC",X"05",X"04",X"03",X"03",X"04",X"05", - X"FE",X"FE",X"F9",X"FA",X"FB",X"FC",X"FC",X"FB",X"FB",X"FB",X"FC",X"FC",X"FB",X"FA",X"F9",X"06", - X"06",X"FA",X"FA",X"02",X"02",X"02",X"FE",X"FE",X"FE",X"07",X"05",X"03",X"FF",X"FE",X"FD",X"00", - X"FF",X"FE",X"FD",X"FC",X"F9",X"FA",X"FB",X"FC",X"FC",X"F8",X"F8",X"F8",X"F7",X"FA",X"FB",X"FB", - X"FA",X"FA",X"F9",X"03",X"02",X"01",X"00",X"FF",X"FE",X"FD",X"04",X"FC",X"05",X"04",X"FC",X"FB", - X"05",X"04",X"FC",X"FB",X"01",X"00",X"FF",X"01",X"00",X"FF",X"06",X"05",X"04",X"FC",X"FB",X"FA", - X"04",X"FC",X"06",X"05",X"04",X"03",X"02",X"01",X"00",X"FF",X"FE",X"FD",X"FC",X"FB",X"FA",X"06", - X"FA",X"06",X"FA",X"01",X"00",X"FF",X"01",X"00",X"FF",X"00",X"01",X"02",X"03",X"04",X"05",X"FF", - X"FE",X"FD",X"FC",X"FB",X"04",X"03",X"05",X"04",X"03",X"04",X"03",X"02",X"01",X"00",X"FF",X"FE", - X"FD",X"FC",X"FB",X"A2",X"13",X"A9",X"00",X"85",X"9A",X"BD",X"6E",X"01",X"F0",X"06",X"BD",X"C2", - X"01",X"20",X"F1",X"62",X"A9",X"FC",X"85",X"EC",X"AD",X"0A",X"40",X"29",X"07",X"09",X"04",X"9D", - X"C2",X"01",X"85",X"9A",X"AD",X"0A",X"40",X"9D",X"39",X"01",X"AD",X"0A",X"40",X"C9",X"D0",X"B0", - X"F9",X"C9",X"38",X"90",X"F5",X"9D",X"6E",X"01",X"A9",X"00",X"20",X"F1",X"62",X"CA",X"10",X"C5", - X"60",X"85",X"B5",X"BD",X"6E",X"01",X"85",X"9C",X"BD",X"39",X"01",X"85",X"9B",X"4C",X"71",X"5E", - X"A5",X"A7",X"C9",X"28",X"90",X"02",X"A9",X"14",X"85",X"A7",X"4C",X"86",X"69",X"20",X"4D",X"63", - X"A5",X"D5",X"D0",X"06",X"20",X"11",X"54",X"B8",X"50",X"32",X"C9",X"FF",X"D0",X"06",X"20",X"11", - X"54",X"B8",X"50",X"28",X"20",X"8C",X"63",X"A5",X"D5",X"A4",X"A7",X"C0",X"09",X"B0",X"02",X"09", - X"01",X"85",X"D5",X"20",X"00",X"64",X"D0",X"06",X"20",X"5D",X"64",X"B8",X"50",X"0E",X"20",X"2D", - X"64",X"D0",X"06",X"20",X"5D",X"64",X"B8",X"50",X"03",X"20",X"11",X"54",X"60",X"A9",X"00",X"85", - X"D5",X"86",X"AC",X"A0",X"07",X"A6",X"97",X"BD",X"5D",X"01",X"18",X"79",X"82",X"63",X"49",X"FF", - X"85",X"B1",X"BD",X"28",X"01",X"18",X"79",X"84",X"63",X"85",X"B0",X"A2",X"00",X"A1",X"B0",X"29", - X"C0",X"C9",X"80",X"D0",X"07",X"A5",X"D5",X"19",X"F8",X"63",X"85",X"D5",X"88",X"10",X"D6",X"A6", - X"AC",X"60",X"08",X"06",X"00",X"FA",X"F8",X"FA",X"00",X"06",X"08",X"06",X"A4",X"97",X"20",X"F6", - X"58",X"A4",X"B0",X"A5",X"B1",X"D0",X"05",X"A9",X"04",X"B8",X"50",X"16",X"20",X"BB",X"59",X"A0", - X"04",X"A5",X"A9",X"D9",X"DE",X"63",X"D0",X"05",X"A5",X"AA",X"D9",X"E3",X"63",X"88",X"90",X"F1", - X"C8",X"98",X"85",X"98",X"A6",X"97",X"BD",X"10",X"06",X"5D",X"30",X"06",X"10",X"07",X"A9",X"04", - X"38",X"E5",X"98",X"85",X"98",X"BD",X"10",X"06",X"2A",X"BD",X"30",X"06",X"2A",X"2A",X"29",X"03", - X"A8",X"B9",X"DA",X"63",X"18",X"65",X"98",X"85",X"D0",X"60",X"0C",X"08",X"00",X"04",X"00",X"00", - X"00",X"01",X"05",X"00",X"32",X"AB",X"7F",X"06",X"83",X"87",X"07",X"0F",X"0E",X"1E",X"1C",X"3C", - X"38",X"78",X"70",X"F0",X"E0",X"E1",X"C1",X"C3",X"01",X"02",X"04",X"08",X"10",X"20",X"40",X"80", - X"A4",X"D0",X"A6",X"D0",X"A9",X"08",X"85",X"98",X"A5",X"D5",X"39",X"E8",X"63",X"D0",X"01",X"60", - X"A5",X"D5",X"3D",X"E8",X"63",X"D0",X"05",X"8A",X"A8",X"A9",X"00",X"60",X"88",X"10",X"02",X"A0", - X"0F",X"E8",X"E0",X"10",X"90",X"02",X"A2",X"00",X"C6",X"98",X"10",X"DC",X"60",X"A5",X"D0",X"4A", - X"A8",X"AA",X"A9",X"04",X"85",X"98",X"A5",X"D5",X"39",X"F8",X"63",X"F0",X"09",X"A5",X"D5",X"3D", - X"F8",X"63",X"D0",X"08",X"8A",X"A8",X"98",X"0A",X"A8",X"A9",X"00",X"60",X"88",X"10",X"02",X"A0", - X"07",X"E8",X"E0",X"08",X"90",X"02",X"A2",X"00",X"C6",X"98",X"10",X"DA",X"60",X"A6",X"97",X"BD", - X"28",X"01",X"C9",X"F7",X"B0",X"19",X"C9",X"08",X"90",X"15",X"BD",X"5D",X"01",X"C9",X"CE",X"B0", - X"0E",X"C9",X"2D",X"90",X"0A",X"20",X"82",X"64",X"A4",X"97",X"20",X"F6",X"58",X"18",X"60",X"4C", - X"11",X"54",X"A6",X"97",X"B9",X"AF",X"64",X"18",X"7D",X"18",X"01",X"9D",X"18",X"01",X"B9",X"C3", - X"64",X"7D",X"28",X"01",X"9D",X"28",X"01",X"B9",X"AB",X"64",X"18",X"7D",X"4D",X"01",X"9D",X"4D", - X"01",X"B9",X"BF",X"64",X"7D",X"5D",X"01",X"9D",X"5D",X"01",X"60",X"00",X"EC",X"B4",X"62",X"00", - X"9E",X"4C",X"14",X"00",X"14",X"4C",X"9E",X"00",X"62",X"B4",X"EC",X"00",X"EC",X"B4",X"62",X"01", - X"00",X"00",X"00",X"00",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"00",X"00",X"00",X"00",X"01", - X"00",X"00",X"00",X"A9",X"E0",X"4C",X"DA",X"64",X"A9",X"00",X"85",X"98",X"A5",X"0A",X"C9",X"18", - X"90",X"78",X"18",X"69",X"03",X"49",X"FF",X"85",X"07",X"A5",X"09",X"85",X"06",X"38",X"E9",X"03", - X"85",X"03",X"A5",X"0A",X"49",X"FF",X"85",X"04",X"A5",X"A6",X"C9",X"18",X"90",X"5C",X"85",X"0A", - X"18",X"69",X"03",X"49",X"FF",X"85",X"01",X"A5",X"A5",X"85",X"09",X"85",X"00",X"38",X"E9",X"03", - X"85",X"0D",X"A5",X"A6",X"49",X"FF",X"85",X"0E",X"A0",X"06",X"A2",X"00",X"A1",X"03",X"29",X"E0", - X"C9",X"E0",X"D0",X"05",X"B9",X"16",X"00",X"81",X"03",X"A1",X"06",X"29",X"E0",X"C9",X"E0",X"D0", - X"05",X"B9",X"0F",X"00",X"81",X"06",X"E6",X"03",X"E6",X"07",X"88",X"10",X"DF",X"A0",X"06",X"A2", - X"00",X"A1",X"00",X"99",X"0F",X"00",X"A5",X"98",X"81",X"00",X"E6",X"01",X"A1",X"0D",X"99",X"16", - X"00",X"A5",X"98",X"81",X"0D",X"E6",X"0D",X"88",X"10",X"E7",X"60",X"16",X"A9",X"80",X"85",X"09", - X"85",X"A5",X"A9",X"50",X"85",X"0A",X"85",X"A6",X"A9",X"00",X"A2",X"0D",X"95",X"0F",X"CA",X"10", - X"FB",X"60",X"20",X"D8",X"64",X"A9",X"00",X"85",X"A6",X"85",X"0A",X"60",X"86",X"23",X"A9",X"80", - X"85",X"0B",X"A5",X"A6",X"49",X"FF",X"38",X"E9",X"02",X"85",X"07",X"85",X"01",X"A5",X"A5",X"4C", - X"A9",X"65",X"86",X"23",X"A9",X"00",X"85",X"0B",X"A6",X"97",X"BD",X"B2",X"01",X"49",X"FF",X"38", - X"E9",X"02",X"85",X"07",X"85",X"01",X"BD",X"A2",X"01",X"18",X"69",X"02",X"85",X"06",X"38",X"E9", - X"04",X"85",X"00",X"A2",X"00",X"A9",X"04",X"85",X"98",X"A5",X"0B",X"81",X"06",X"81",X"00",X"E6", - X"07",X"C6",X"06",X"E6",X"01",X"E6",X"00",X"C6",X"98",X"10",X"F0",X"A6",X"23",X"60",X"A0",X"E0", - X"A5",X"B9",X"20",X"DB",X"65",X"A0",X"00",X"A5",X"B9",X"49",X"01",X"84",X"0B",X"AA",X"BD",X"EC", - X"65",X"48",X"BD",X"EE",X"65",X"AA",X"A0",X"E2",X"68",X"4C",X"00",X"66",X"21",X"22",X"4D",X"A8", - X"A5",X"D7",X"D0",X"06",X"20",X"CE",X"65",X"B8",X"50",X"05",X"A0",X"00",X"20",X"D0",X"65",X"60", - X"85",X"0D",X"86",X"00",X"84",X"01",X"A9",X"00",X"85",X"0E",X"A9",X"FF",X"85",X"08",X"06",X"0D", - X"26",X"0E",X"06",X"0D",X"26",X"0E",X"06",X"0D",X"26",X"0E",X"A9",X"62",X"18",X"65",X"0D",X"85", - X"0D",X"A9",X"73",X"65",X"0E",X"85",X"0E",X"A9",X"01",X"85",X"22",X"85",X"21",X"A0",X"07",X"A5", - X"01",X"18",X"69",X"04",X"49",X"FF",X"85",X"07",X"A5",X"21",X"85",X"04",X"A5",X"00",X"38",X"E9", - X"04",X"24",X"FC",X"50",X"02",X"49",X"FF",X"85",X"06",X"A2",X"00",X"A9",X"07",X"85",X"98",X"B1", - X"0D",X"0A",X"48",X"A5",X"22",X"85",X"03",X"A5",X"0B",X"B0",X"0B",X"A5",X"08",X"10",X"05",X"A1", - X"06",X"B8",X"50",X"02",X"A5",X"0C",X"81",X"06",X"24",X"FC",X"50",X"05",X"C6",X"06",X"B8",X"50", - X"02",X"E6",X"06",X"C6",X"03",X"D0",X"EF",X"68",X"C6",X"98",X"10",X"D5",X"E6",X"07",X"C6",X"04", - X"D0",X"BA",X"88",X"10",X"B3",X"60",X"86",X"23",X"84",X"24",X"A4",X"97",X"A9",X"00",X"85",X"98", - X"A9",X"FF",X"85",X"99",X"B9",X"92",X"01",X"49",X"FF",X"85",X"07",X"B9",X"82",X"01",X"85",X"06", - X"B9",X"00",X"06",X"85",X"03",X"B9",X"20",X"06",X"85",X"04",X"B9",X"10",X"06",X"85",X"00",X"B9", - X"30",X"06",X"85",X"01",X"B9",X"5D",X"01",X"49",X"FF",X"85",X"02",X"C5",X"07",X"F0",X"2C",X"A2", - X"00",X"A9",X"00",X"81",X"06",X"A5",X"98",X"18",X"65",X"03",X"85",X"98",X"A5",X"06",X"65",X"00", - X"85",X"06",X"A5",X"99",X"38",X"E5",X"04",X"85",X"99",X"A5",X"07",X"E5",X"01",X"85",X"07",X"C9", - X"18",X"90",X"08",X"C5",X"02",X"D0",X"DA",X"A9",X"00",X"81",X"06",X"A6",X"23",X"A4",X"24",X"60", - X"A4",X"97",X"A9",X"80",X"4C",X"01",X"67",X"A9",X"E0",X"A4",X"97",X"C0",X"08",X"90",X"02",X"A9", - X"40",X"85",X"0B",X"86",X"98",X"B9",X"28",X"01",X"85",X"06",X"B9",X"5D",X"01",X"49",X"FF",X"85", - X"07",X"A5",X"0B",X"A2",X"00",X"81",X"06",X"A6",X"98",X"60",X"A2",X"07",X"A9",X"0E",X"95",X"E4", - X"CA",X"10",X"FB",X"20",X"00",X"63",X"20",X"7C",X"68",X"20",X"5E",X"67",X"20",X"21",X"69",X"A5", - X"F3",X"4A",X"4A",X"4A",X"4A",X"29",X"06",X"A8",X"B9",X"95",X"6A",X"85",X"2A",X"B9",X"96",X"6A", - X"85",X"2B",X"A9",X"00",X"A4",X"F4",X"10",X"08",X"09",X"80",X"A4",X"B9",X"F0",X"02",X"09",X"7F", - X"85",X"FC",X"60",X"BE",X"E2",X"60",X"B9",X"EB",X"60",X"A8",X"A9",X"00",X"F0",X"21",X"A0",X"05", - X"84",X"99",X"A4",X"B9",X"B9",X"C5",X"00",X"A4",X"99",X"39",X"F7",X"60",X"F0",X"0C",X"BE",X"E2", - X"60",X"B9",X"EB",X"60",X"A8",X"A9",X"E6",X"20",X"7F",X"67",X"C6",X"99",X"10",X"E4",X"60",X"48", - X"A5",X"FC",X"29",X"BF",X"85",X"FC",X"68",X"20",X"95",X"67",X"A5",X"FC",X"29",X"3F",X"F0",X"04", - X"09",X"C0",X"85",X"FC",X"60",X"86",X"1D",X"84",X"1E",X"85",X"1F",X"0A",X"0A",X"0A",X"0A",X"85", - X"20",X"A2",X"03",X"86",X"05",X"A6",X"05",X"BC",X"C5",X"67",X"B9",X"1F",X"00",X"85",X"0B",X"A4", - X"1E",X"BD",X"C9",X"67",X"48",X"A5",X"1D",X"18",X"7D",X"CD",X"67",X"AA",X"68",X"20",X"00",X"66", - X"C6",X"05",X"10",X"E1",X"60",X"01",X"00",X"01",X"00",X"1E",X"1D",X"20",X"1F",X"FC",X"FC",X"04", - X"04",X"BE",X"A0",X"00",X"E8",X"A9",X"20",X"18",X"48",X"B9",X"E8",X"60",X"7D",X"19",X"68",X"85", - X"06",X"18",X"B9",X"F1",X"60",X"7D",X"0F",X"68",X"49",X"FF",X"85",X"07",X"68",X"A2",X"00",X"81", - X"06",X"E6",X"07",X"81",X"06",X"E6",X"07",X"81",X"06",X"E6",X"07",X"81",X"06",X"C6",X"06",X"81", - X"06",X"E6",X"07",X"81",X"06",X"E6",X"06",X"E6",X"06",X"81",X"06",X"C6",X"07",X"81",X"06",X"60", - X"02",X"FF",X"FF",X"FC",X"FC",X"FC",X"F9",X"F9",X"F9",X"F9",X"00",X"FD",X"03",X"FA",X"00",X"06", - X"FD",X"03",X"F7",X"09",X"86",X"23",X"84",X"24",X"AA",X"BD",X"61",X"68",X"24",X"FC",X"50",X"03", - X"BD",X"67",X"68",X"4C",X"56",X"68",X"85",X"02",X"86",X"23",X"84",X"24",X"AA",X"BD",X"61",X"68", - X"24",X"FC",X"50",X"03",X"BD",X"67",X"68",X"20",X"4D",X"6A",X"A6",X"02",X"BD",X"5E",X"68",X"24", - X"FC",X"50",X"03",X"BD",X"64",X"68",X"20",X"55",X"6A",X"A6",X"23",X"A4",X"24",X"60",X"0F",X"10", - X"11",X"16",X"17",X"18",X"11",X"10",X"0F",X"18",X"17",X"16",X"BE",X"A0",X"00",X"F0",X"0C",X"86", - X"02",X"A9",X"E0",X"20",X"D7",X"67",X"A6",X"02",X"CA",X"D0",X"F4",X"60",X"A2",X"00",X"A0",X"00", - X"A9",X"E6",X"85",X"07",X"B9",X"AB",X"68",X"85",X"06",X"C8",X"A9",X"20",X"81",X"06",X"A5",X"06", - X"D9",X"AB",X"68",X"E6",X"06",X"90",X"F3",X"C8",X"B9",X"AB",X"68",X"C9",X"FF",X"D0",X"09",X"C8", - X"C0",X"74",X"90",X"02",X"A0",X"73",X"E6",X"07",X"D0",X"DA",X"60",X"0C",X"0D",X"1D",X"1E",X"75", - X"76",X"81",X"82",X"E9",X"EA",X"FA",X"FB",X"FF",X"0B",X"0E",X"1C",X"1F",X"75",X"77",X"80",X"83", - X"E7",X"EA",X"F9",X"FC",X"FF",X"0A",X"20",X"74",X"84",X"E6",X"FD",X"FF",X"09",X"21",X"73",X"84", - X"E6",X"FE",X"FF",X"08",X"22",X"73",X"85",X"E5",X"FE",X"FF",X"06",X"23",X"72",X"85",X"E4",X"FE", - X"FF",X"05",X"23",X"71",X"86",X"AC",X"BB",X"E3",X"FE",X"FF",X"04",X"24",X"38",X"39",X"70",X"87", - X"AB",X"BC",X"E2",X"FE",X"FF",X"03",X"25",X"37",X"3A",X"6F",X"87",X"AA",X"BD",X"E1",X"FF",X"FF", - X"01",X"26",X"32",X"3B",X"6B",X"98",X"A8",X"BD",X"DF",X"FF",X"FF",X"00",X"3C",X"49",X"58",X"67", - X"C0",X"DE",X"FE",X"FF",X"00",X"5A",X"65",X"FF",X"FF",X"00",X"5C",X"64",X"FF",X"FF",X"00",X"FF", - X"FF",X"A5",X"A7",X"38",X"E9",X"01",X"4A",X"C9",X"0A",X"90",X"03",X"38",X"E9",X"0A",X"C9",X"0A", - X"B0",X"F5",X"AA",X"BC",X"4E",X"69",X"A2",X"06",X"B9",X"4E",X"69",X"29",X"0F",X"95",X"E5",X"B9", - X"4E",X"69",X"4A",X"4A",X"4A",X"4A",X"95",X"E4",X"88",X"CA",X"CA",X"10",X"EB",X"60",X"19",X"1D", - X"21",X"15",X"25",X"2D",X"31",X"0D",X"11",X"29",X"2A",X"E0",X"E2",X"66",X"06",X"42",X"40",X"AA", - X"E6",X"22",X"0A",X"CC",X"E2",X"68",X"6E",X"CC",X"E2",X"A8",X"AE",X"CC",X"EC",X"62",X"64",X"AA", - X"C2",X"64",X"6C",X"EE",X"62",X"EA",X"E6",X"CC",X"82",X"6E",X"68",X"CC",X"4A",X"EE",X"48",X"22", - X"A9",X"06",X"A2",X"28",X"D0",X"04",X"A2",X"3D",X"A9",X"02",X"85",X"07",X"A0",X"00",X"84",X"06", - X"A9",X"00",X"91",X"06",X"C8",X"D0",X"FB",X"E6",X"07",X"CA",X"10",X"F6",X"60",X"29",X"7F",X"C9", - X"41",X"90",X"07",X"29",X"3F",X"A2",X"02",X"B8",X"50",X"18",X"C9",X"3A",X"90",X"06",X"20",X"D3", - X"69",X"B8",X"50",X"0E",X"C9",X"30",X"B0",X"06",X"20",X"D3",X"69",X"B8",X"50",X"04",X"29",X"0F", - X"A2",X"00",X"0A",X"0A",X"0A",X"18",X"7D",X"1E",X"6A",X"85",X"0D",X"BD",X"1F",X"6A",X"69",X"00", - X"85",X"0E",X"60",X"A2",X"06",X"DD",X"E8",X"69",X"D0",X"06",X"BD",X"EF",X"69",X"A2",X"06",X"60", - X"CA",X"10",X"F2",X"A9",X"00",X"A2",X"04",X"60",X"20",X"40",X"3A",X"3F",X"23",X"24",X"25",X"00", - X"08",X"09",X"0A",X"0B",X"0C",X"0D",X"A0",X"00",X"B1",X"1D",X"85",X"05",X"20",X"9D",X"69",X"A5", - X"1F",X"85",X"00",X"A5",X"20",X"85",X"01",X"98",X"48",X"20",X"2D",X"66",X"A5",X"22",X"0A",X"0A", - X"0A",X"18",X"65",X"1F",X"85",X"1F",X"68",X"A8",X"C8",X"A5",X"05",X"10",X"DB",X"60",X"1A",X"73", - X"62",X"73",X"12",X"73",X"3A",X"74",X"B1",X"2A",X"C0",X"54",X"90",X"10",X"B9",X"12",X"6E",X"85", - X"1F",X"B9",X"13",X"6E",X"85",X"1D",X"B9",X"14",X"6E",X"B8",X"50",X"0A",X"85",X"1F",X"C8",X"B1", - X"2A",X"85",X"1D",X"C8",X"B1",X"2A",X"85",X"1E",X"60",X"A0",X"A0",X"30",X"0A",X"A0",X"80",X"30", - X"06",X"A0",X"00",X"10",X"02",X"A0",X"FF",X"84",X"08",X"A8",X"B9",X"C5",X"6C",X"29",X"0F",X"85", - X"21",X"B9",X"C5",X"6C",X"4A",X"4A",X"4A",X"4A",X"85",X"22",X"B9",X"ED",X"6C",X"85",X"20",X"98", - X"85",X"1F",X"0A",X"18",X"65",X"1F",X"A8",X"20",X"26",X"6A",X"A9",X"E0",X"85",X"0B",X"A9",X"00", - X"85",X"0C",X"A5",X"08",X"C9",X"80",X"D0",X"03",X"4C",X"38",X"6B",X"C9",X"A0",X"D0",X"03",X"4C", - X"30",X"6B",X"4C",X"F6",X"69",X"12",X"6E",X"16",X"6D",X"6A",X"6D",X"BE",X"6D",X"86",X"1F",X"84", - X"20",X"86",X"23",X"84",X"24",X"85",X"02",X"C9",X"13",X"B0",X"13",X"C9",X"0A",X"90",X"0A",X"38", - X"E9",X"0A",X"85",X"02",X"A9",X"01",X"20",X"C8",X"6A",X"A5",X"02",X"B8",X"50",X"02",X"A9",X"FF", - X"20",X"C8",X"6A",X"A6",X"23",X"A4",X"24",X"60",X"18",X"69",X"01",X"0A",X"0A",X"0A",X"18",X"6D", - X"22",X"6A",X"85",X"0D",X"AD",X"23",X"6A",X"69",X"00",X"85",X"0E",X"A5",X"1F",X"85",X"00",X"A5", - X"20",X"85",X"01",X"A9",X"00",X"85",X"0C",X"A9",X"00",X"85",X"08",X"20",X"27",X"66",X"A5",X"1F", - X"18",X"69",X"08",X"85",X"1F",X"60",X"86",X"1F",X"84",X"20",X"85",X"0B",X"A2",X"02",X"A0",X"00", - X"84",X"05",X"B5",X"D1",X"4A",X"4A",X"4A",X"4A",X"20",X"1E",X"6B",X"B5",X"D1",X"E0",X"00",X"D0", - X"04",X"A0",X"FF",X"84",X"05",X"29",X"0F",X"20",X"1E",X"6B",X"CA",X"10",X"E5",X"60",X"F0",X"05", - X"85",X"05",X"B8",X"50",X"08",X"A9",X"00",X"A4",X"05",X"D0",X"02",X"A9",X"FF",X"4C",X"A1",X"6A", - X"A9",X"04",X"85",X"1F",X"A0",X"20",X"D0",X"08",X"A0",X"FF",X"C8",X"B1",X"1D",X"10",X"FB",X"C8", - X"84",X"99",X"06",X"99",X"C6",X"99",X"A5",X"1F",X"38",X"E9",X"04",X"24",X"FC",X"50",X"02",X"49", - X"FF",X"85",X"1F",X"A5",X"20",X"49",X"FF",X"38",X"E9",X"04",X"85",X"20",X"A9",X"07",X"85",X"98", - X"46",X"20",X"66",X"1F",X"46",X"20",X"66",X"1F",X"24",X"FC",X"50",X"07",X"A5",X"1F",X"38",X"E5", - X"99",X"85",X"1F",X"A4",X"99",X"A9",X"00",X"91",X"1F",X"88",X"10",X"F9",X"A5",X"1F",X"18",X"69", - X"40",X"85",X"1F",X"90",X"02",X"E6",X"20",X"C6",X"98",X"10",X"E8",X"60",X"A9",X"00",X"85",X"B9", - X"A5",X"FC",X"29",X"80",X"85",X"FC",X"A5",X"66",X"C9",X"28",X"90",X"04",X"A9",X"28",X"85",X"66", - X"F8",X"85",X"99",X"A9",X"00",X"85",X"98",X"A0",X"07",X"06",X"99",X"A5",X"98",X"65",X"98",X"85", - X"98",X"88",X"10",X"F5",X"D8",X"A5",X"98",X"C5",X"29",X"F0",X"22",X"85",X"29",X"A5",X"66",X"F0", - X"05",X"A2",X"00",X"B8",X"50",X"0C",X"A5",X"F3",X"29",X"03",X"AA",X"BD",X"2F",X"6C",X"85",X"28", - X"A2",X"05",X"86",X"25",X"20",X"B6",X"6C",X"A9",X"00",X"85",X"27",X"85",X"26",X"A5",X"27",X"F0", - X"05",X"C6",X"27",X"B8",X"50",X"48",X"A6",X"25",X"BD",X"42",X"6C",X"C9",X"00",X"D0",X"09",X"BD", - X"38",X"6C",X"20",X"7F",X"6C",X"B8",X"50",X"1B",X"BD",X"38",X"6C",X"85",X"06",X"A0",X"00",X"84", - X"07",X"B1",X"06",X"BC",X"42",X"6C",X"C0",X"02",X"D0",X"06",X"20",X"7F",X"6C",X"B8",X"50",X"03", - X"20",X"56",X"6C",X"A5",X"27",X"C9",X"FF",X"D0",X"15",X"A6",X"25",X"BD",X"4C",X"6C",X"85",X"27", - X"E8",X"BD",X"42",X"6C",X"C9",X"03",X"D0",X"04",X"BD",X"38",X"6C",X"AA",X"86",X"25",X"60",X"25", - X"0A",X"0B",X"0C",X"A9",X"FF",X"85",X"29",X"60",X"03",X"0D",X"29",X"1E",X"00",X"0E",X"04",X"28", - X"1E",X"05",X"00",X"00",X"01",X"00",X"03",X"00",X"00",X"02",X"00",X"03",X"20",X"08",X"20",X"20", - X"20",X"20",X"20",X"20",X"20",X"20",X"A4",X"26",X"F0",X"0A",X"A0",X"FF",X"84",X"27",X"C8",X"84", - X"26",X"B8",X"50",X"0E",X"A0",X"07",X"84",X"27",X"E6",X"26",X"4A",X"4A",X"4A",X"4A",X"D0",X"02", - X"A9",X"FF",X"29",X"0F",X"C9",X"0A",X"B0",X"06",X"18",X"69",X"30",X"20",X"9C",X"6C",X"60",X"85", - X"1D",X"0A",X"18",X"65",X"1D",X"A8",X"20",X"26",X"6A",X"A4",X"26",X"E6",X"26",X"A9",X"07",X"85", - X"27",X"B1",X"1D",X"10",X"07",X"A0",X"FF",X"84",X"27",X"C8",X"84",X"26",X"20",X"9D",X"69",X"A9", - X"FC",X"85",X"00",X"A9",X"03",X"85",X"01",X"A9",X"00",X"85",X"08",X"A9",X"00",X"85",X"0B",X"A9", - X"20",X"85",X"0C",X"4C",X"27",X"66",X"A0",X"00",X"A9",X"FF",X"99",X"01",X"04",X"99",X"01",X"05", - X"C8",X"C8",X"D0",X"F6",X"60",X"11",X"11",X"11",X"11",X"11",X"11",X"11",X"11",X"3A",X"21",X"11", - X"11",X"11",X"11",X"11",X"11",X"11",X"11",X"11",X"11",X"11",X"11",X"11",X"11",X"11",X"11",X"11", - X"11",X"44",X"44",X"11",X"11",X"11",X"11",X"11",X"11",X"11",X"11",X"11",X"11",X"90",X"D0",X"03", - X"03",X"03",X"40",X"70",X"A0",X"A0",X"80",X"40",X"40",X"40",X"03",X"A0",X"03",X"03",X"03",X"70", - X"60",X"50",X"38",X"03",X"03",X"03",X"58",X"58",X"58",X"A0",X"70",X"03",X"70",X"90",X"70",X"90", - X"80",X"80",X"40",X"34",X"80",X"95",X"60",X"D2",X"6F",X"40",X"BB",X"70",X"06",X"D8",X"6F",X"90", - X"E5",X"6F",X"78",X"F6",X"6F",X"5C",X"0B",X"70",X"68",X"22",X"70",X"50",X"16",X"70",X"60",X"2A", - X"70",X"10",X"5F",X"70",X"40",X"2D",X"70",X"40",X"3E",X"70",X"40",X"4E",X"70",X"B0",X"F6",X"6E", - X"54",X"D8",X"6F",X"04",X"E1",X"70",X"70",X"E1",X"70",X"E4",X"E1",X"70",X"24",X"6E",X"70",X"04", - X"86",X"70",X"04",X"A1",X"70",X"34",X"CB",X"70",X"0C",X"DE",X"70",X"74",X"DE",X"70",X"E8",X"DE", - X"70",X"88",X"E5",X"70",X"C8",X"24",X"70",X"28",X"0B",X"70",X"54",X"E6",X"70",X"50",X"D0",X"71", - X"06",X"ED",X"70",X"90",X"F6",X"70",X"78",X"09",X"71",X"5C",X"17",X"71",X"68",X"2C",X"71",X"58", - X"21",X"71",X"54",X"34",X"71",X"14",X"6E",X"71",X"40",X"38",X"71",X"40",X"47",X"71",X"40",X"56", - X"71",X"B0",X"66",X"71",X"58",X"ED",X"70",X"04",X"F7",X"71",X"70",X"F7",X"71",X"E4",X"F7",X"71", - X"14",X"7C",X"71",X"04",X"98",X"71",X"04",X"B7",X"71",X"30",X"DC",X"71",X"04",X"F2",X"71",X"6C", - X"F2",X"71",X"DC",X"F2",X"71",X"70",X"FB",X"71",X"C8",X"2E",X"71",X"18",X"17",X"71",X"5C",X"FF", - X"71",X"64",X"EB",X"72",X"06",X"06",X"72",X"90",X"15",X"72",X"78",X"21",X"72",X"5C",X"2F",X"72", - X"68",X"51",X"72",X"30",X"3B",X"72",X"60",X"2A",X"70",X"24",X"94",X"72",X"40",X"59",X"72",X"40", - X"6A",X"72",X"40",X"7A",X"72",X"B0",X"8B",X"72",X"48",X"06",X"72",X"0C",X"0B",X"73",X"74",X"0B", - X"73",X"E8",X"0B",X"73",X"38",X"A0",X"72",X"04",X"B3",X"72",X"04",X"D3",X"72",X"30",X"F2",X"72", - X"04",X"07",X"73",X"70",X"07",X"73",X"E4",X"07",X"73",X"70",X"0E",X"73",X"C8",X"53",X"72",X"08", - X"2F",X"72",X"60",X"8A",X"6E",X"54",X"78",X"6F",X"06",X"90",X"6E",X"90",X"99",X"6E",X"78",X"A4", - X"6E",X"5C",X"B0",X"6E",X"68",X"22",X"70",X"50",X"BA",X"6E",X"36",X"C6",X"6E",X"2C",X"20",X"6F", - X"40",X"CD",X"6E",X"40",X"DB",X"6E",X"40",X"E8",X"6E",X"B0",X"F6",X"6E",X"5C",X"90",X"6E",X"0C", - X"A6",X"6F",X"74",X"A6",X"6F",X"E8",X"A6",X"6F",X"38",X"2B",X"6F",X"04",X"3E",X"6F",X"04",X"59", - X"6F",X"38",X"83",X"6F",X"0C",X"96",X"6F",X"74",X"96",X"6F",X"E8",X"96",X"6F",X"68",X"C4",X"6F", - X"C8",X"24",X"70",X"10",X"B0",X"6E",X"20",X"B6",X"6F",X"20",X"BD",X"6F",X"50",X"A9",X"6F",X"5C", - X"FE",X"6E",X"5C",X"04",X"6F",X"5C",X"0A",X"6F",X"5C",X"11",X"6F",X"5C",X"9F",X"6F",X"5C",X"99", - X"6F",X"40",X"C9",X"6F",X"50",X"90",X"6F",X"10",X"18",X"6F",X"50",X"4C",X"41",X"59",X"45",X"D2", - X"47",X"41",X"4D",X"45",X"20",X"4F",X"56",X"45",X"D2",X"50",X"52",X"45",X"53",X"53",X"20",X"53", - X"54",X"41",X"52",X"D4",X"49",X"4E",X"53",X"45",X"52",X"54",X"20",X"43",X"4F",X"49",X"4E",X"D3", - X"42",X"4F",X"4E",X"55",X"53",X"20",X"43",X"49",X"54",X"D9",X"42",X"4F",X"4E",X"55",X"53",X"20", - X"50",X"4F",X"49",X"4E",X"54",X"D3",X"54",X"48",X"45",X"20",X"45",X"4E",X"C4",X"31",X"20",X"43", - X"4F",X"49",X"4E",X"20",X"32",X"20",X"50",X"4C",X"41",X"59",X"D3",X"31",X"20",X"43",X"4F",X"49", - X"4E",X"20",X"31",X"20",X"50",X"4C",X"41",X"D9",X"32",X"20",X"43",X"4F",X"49",X"4E",X"53",X"20", - X"31",X"20",X"50",X"4C",X"41",X"D9",X"43",X"52",X"45",X"44",X"49",X"54",X"53",X"BA",X"52",X"41", - X"4D",X"20",X"4F",X"CB",X"52",X"4F",X"4D",X"20",X"4F",X"CB",X"42",X"41",X"44",X"20",X"52",X"41", - X"CD",X"42",X"41",X"44",X"20",X"52",X"4F",X"CD",X"42",X"41",X"44",X"20",X"43",X"48",X"49",X"D0", - X"47",X"52",X"45",X"41",X"54",X"20",X"53",X"43",X"4F",X"52",X"C5",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"D3",X"53",X"50", - X"49",X"4E",X"20",X"42",X"41",X"4C",X"4C",X"20",X"54",X"4F",X"20",X"43",X"48",X"41",X"4E",X"47", - X"45",X"20",X"4C",X"45",X"54",X"54",X"45",X"52",X"D3",X"50",X"52",X"45",X"53",X"53",X"20",X"41", - X"4E",X"59",X"20",X"46",X"49",X"52",X"45",X"20",X"53",X"57",X"49",X"54",X"43",X"48",X"20",X"54", - X"4F",X"20",X"53",X"45",X"4C",X"45",X"43",X"D4",X"48",X"49",X"47",X"48",X"20",X"53",X"43",X"4F", - X"52",X"45",X"D3",X"44",X"45",X"46",X"45",X"4E",X"44",X"20",X"20",X"20",X"20",X"20",X"20",X"20", - X"43",X"49",X"54",X"49",X"45",X"D3",X"4C",X"4F",X"D7",X"4D",X"41",X"50",X"20",X"4F",X"CB",X"42", - X"41",X"44",X"20",X"4D",X"41",X"D0",X"4F",X"55",X"D4",X"41",X"54",X"41",X"52",X"49",X"20",X"40", - X"3F",X"20",X"31",X"39",X"38",X"B0",X"4D",X"49",X"53",X"53",X"49",X"4C",X"C5",X"43",X"4F",X"4D", - X"4D",X"41",X"4E",X"C4",X"45",X"56",X"45",X"52",X"D9",X"46",X"52",X"45",X"45",X"20",X"50",X"4C", - X"41",X"D9",X"4A",X"4F",X"55",X"45",X"55",X"D2",X"46",X"49",X"4E",X"20",X"44",X"45",X"20",X"50", - X"41",X"52",X"54",X"49",X"C5",X"41",X"50",X"50",X"55",X"59",X"45",X"5A",X"20",X"53",X"55",X"52", - X"20",X"53",X"54",X"41",X"52",X"D4",X"49",X"4E",X"54",X"52",X"4F",X"44",X"55",X"49",X"52",X"45"); -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/Atari MissileCommand/rtl/rom/rom3.vhd b/Arcade_MiST/Atari MissileCommand/rtl/rom/rom3.vhd deleted file mode 100644 index e15a8725..00000000 --- a/Arcade_MiST/Atari MissileCommand/rtl/rom/rom3.vhd +++ /dev/null @@ -1,278 +0,0 @@ -library ieee; -use ieee.std_logic_1164.all,ieee.numeric_std.all; - -entity rom3 is -port ( - clk : in std_logic; - addr : in std_logic_vector(11 downto 0); - data : out std_logic_vector(7 downto 0) -); -end entity; - -architecture prom of rom3 is - type rom is array(0 to 4095) of std_logic_vector(7 downto 0); - signal rom_data: rom := ( - X"20",X"4C",X"45",X"53",X"20",X"50",X"49",X"45",X"43",X"45",X"D3",X"42",X"4F",X"4E",X"55",X"53", - X"20",X"56",X"49",X"4C",X"4C",X"C5",X"42",X"4F",X"4E",X"55",X"53",X"20",X"50",X"4F",X"49",X"4E", - X"54",X"D3",X"58",X"20",X"50",X"4F",X"49",X"4E",X"54",X"D3",X"46",X"49",X"CE",X"31",X"20",X"50", - X"49",X"45",X"43",X"45",X"20",X"32",X"20",X"4A",X"4F",X"55",X"45",X"55",X"52",X"D3",X"31",X"20", - X"50",X"49",X"45",X"43",X"45",X"20",X"31",X"20",X"4A",X"4F",X"55",X"45",X"55",X"D2",X"32",X"20", - X"50",X"49",X"45",X"43",X"45",X"53",X"20",X"31",X"20",X"4A",X"4F",X"55",X"45",X"55",X"D2",X"53", - X"50",X"4C",X"45",X"4E",X"44",X"49",X"44",X"45",X"20",X"53",X"43",X"4F",X"52",X"C5",X"53",X"56", - X"50",X"20",X"45",X"4E",X"54",X"52",X"45",X"5A",X"20",X"56",X"4F",X"53",X"20",X"49",X"4E",X"49", - X"54",X"49",X"41",X"4C",X"45",X"D3",X"54",X"4F",X"55",X"52",X"4E",X"45",X"5A",X"20",X"42",X"4F", - X"55",X"4C",X"45",X"20",X"50",X"4F",X"55",X"52",X"20",X"49",X"4E",X"49",X"54",X"49",X"41",X"4C", - X"C5",X"50",X"4F",X"55",X"53",X"53",X"45",X"5A",X"20",X"46",X"45",X"55",X"20",X"51",X"55",X"41", - X"4E",X"44",X"20",X"43",X"4F",X"52",X"52",X"45",X"43",X"54",X"C5",X"4D",X"45",X"49",X"4C",X"4C", - X"45",X"55",X"52",X"53",X"20",X"53",X"43",X"4F",X"52",X"45",X"D3",X"44",X"45",X"46",X"45",X"4E", - X"53",X"45",X"5A",X"20",X"20",X"20",X"20",X"20",X"56",X"49",X"4C",X"4C",X"45",X"D3",X"42",X"41", - X"D3",X"56",X"49",X"44",X"C5",X"C1",X"53",X"50",X"49",X"45",X"4C",X"45",X"D2",X"53",X"50",X"49", - X"45",X"4C",X"45",X"4E",X"44",X"C5",X"53",X"54",X"41",X"52",X"54",X"4B",X"4E",X"24",X"50",X"46", - X"45",X"20",X"44",X"52",X"25",X"43",X"4B",X"45",X"CE",X"47",X"45",X"4C",X"44",X"20",X"45",X"49", - X"4E",X"57",X"45",X"52",X"46",X"45",X"CE",X"42",X"4F",X"4E",X"55",X"53",X"53",X"54",X"41",X"44", - X"D4",X"42",X"4F",X"4E",X"55",X"53",X"50",X"55",X"4E",X"4B",X"54",X"C5",X"58",X"20",X"50",X"55", - X"4E",X"4B",X"54",X"C5",X"45",X"4E",X"44",X"C5",X"31",X"20",X"4D",X"25",X"4E",X"5A",X"20",X"32", - X"20",X"53",X"50",X"49",X"45",X"4C",X"C5",X"31",X"20",X"4D",X"25",X"4E",X"5A",X"45",X"20",X"31", - X"20",X"53",X"50",X"49",X"45",X"CC",X"32",X"20",X"4D",X"25",X"4E",X"5A",X"45",X"4E",X"20",X"31", - X"20",X"53",X"50",X"49",X"45",X"CC",X"4B",X"52",X"45",X"44",X"49",X"54",X"45",X"BA",X"50",X"52", - X"49",X"4D",X"41",X"20",X"45",X"52",X"47",X"45",X"42",X"4E",X"49",X"D3",X"47",X"45",X"42",X"45", - X"4E",X"20",X"53",X"49",X"45",X"20",X"49",X"48",X"52",X"45",X"20",X"49",X"4E",X"49",X"54",X"49", - X"41",X"4C",X"45",X"4E",X"20",X"45",X"49",X"CE",X"42",X"41",X"4C",X"4C",X"20",X"44",X"52",X"45", - X"48",X"45",X"4E",X"20",X"46",X"25",X"52",X"20",X"41",X"4C",X"4C",X"45",X"20",X"42",X"55",X"43", - X"48",X"53",X"54",X"41",X"42",X"45",X"CE",X"46",X"49",X"52",X"45",X"20",X"44",X"52",X"25",X"43", - X"4B",X"45",X"4E",X"20",X"57",X"45",X"4E",X"4E",X"20",X"52",X"49",X"43",X"48",X"54",X"49",X"C7", - X"48",X"24",X"43",X"48",X"53",X"54",X"5A",X"41",X"48",X"4C",X"45",X"CE",X"53",X"54",X"23",X"44", - X"54",X"45",X"20",X"20",X"20",X"20",X"20",X"56",X"45",X"52",X"54",X"45",X"49",X"44",X"49",X"47", - X"45",X"CE",X"57",X"45",X"4E",X"49",X"C7",X"4C",X"45",X"45",X"D2",X"4A",X"45",X"44",X"C5",X"4A", - X"55",X"47",X"41",X"44",X"4F",X"D2",X"4A",X"55",X"45",X"47",X"4F",X"20",X"54",X"45",X"52",X"4D", - X"49",X"4E",X"41",X"44",X"CF",X"50",X"55",X"4C",X"53",X"41",X"52",X"20",X"53",X"54",X"41",X"52", - X"D4",X"49",X"4E",X"53",X"45",X"52",X"54",X"45",X"20",X"46",X"49",X"43",X"48",X"41",X"D3",X"43", - X"49",X"55",X"44",X"41",X"44",X"20",X"45",X"58",X"54",X"52",X"C1",X"42",X"4F",X"4E",X"49",X"46", - X"49",X"43",X"41",X"43",X"49",X"4F",X"4E",X"20",X"44",X"45",X"20",X"50",X"55",X"4E",X"54",X"4F", - X"D3",X"58",X"20",X"50",X"55",X"4E",X"54",X"4F",X"D3",X"31",X"20",X"4D",X"4F",X"4E",X"45",X"44", - X"41",X"20",X"32",X"20",X"4A",X"55",X"45",X"47",X"4F",X"D3",X"31",X"20",X"4D",X"4F",X"4E",X"45", - X"44",X"41",X"20",X"31",X"20",X"4A",X"55",X"45",X"47",X"CF",X"32",X"20",X"4D",X"4F",X"4E",X"45", - X"44",X"41",X"53",X"20",X"31",X"20",X"4A",X"55",X"45",X"47",X"CF",X"43",X"52",X"45",X"44",X"49", - X"54",X"4F",X"53",X"BA",X"47",X"52",X"41",X"4E",X"20",X"50",X"55",X"4E",X"54",X"41",X"4A",X"C5", - X"45",X"4E",X"54",X"52",X"45",X"20",X"53",X"55",X"53",X"20",X"49",X"4E",X"49",X"43",X"49",X"41", - X"4C",X"45",X"D3",X"47",X"49",X"52",X"45",X"20",X"4C",X"41",X"20",X"42",X"4F",X"4C",X"41",X"20", - X"50",X"41",X"52",X"41",X"20",X"43",X"41",X"4D",X"42",X"49",X"41",X"52",X"20",X"4C",X"45",X"54", - X"52",X"41",X"D3",X"4F",X"50",X"52",X"49",X"4D",X"41",X"20",X"46",X"49",X"52",X"45",X"20",X"50", - X"4F",X"52",X"20",X"4C",X"41",X"20",X"4C",X"45",X"54",X"52",X"C1",X"52",X"45",X"43",X"4F",X"52", - X"44",X"D3",X"44",X"45",X"46",X"49",X"45",X"4E",X"44",X"41",X"20",X"20",X"20",X"20",X"20",X"43", - X"49",X"55",X"44",X"41",X"44",X"45",X"D3",X"50",X"4F",X"43",X"CF",X"53",X"49",X"CE",X"43",X"41", - X"44",X"C1",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"38",X"44",X"C6",X"C6",X"C6",X"44", - X"38",X"00",X"FC",X"30",X"30",X"30",X"30",X"70",X"30",X"00",X"FE",X"E0",X"78",X"3C",X"0E",X"C6", - X"7C",X"00",X"7C",X"C6",X"06",X"3C",X"18",X"0C",X"7E",X"00",X"0C",X"0C",X"FE",X"CC",X"6C",X"3C", - X"1C",X"00",X"7C",X"C6",X"06",X"06",X"FC",X"C0",X"FC",X"00",X"7C",X"C6",X"C6",X"FC",X"C0",X"60", - X"3C",X"00",X"30",X"30",X"30",X"18",X"0C",X"C6",X"FE",X"00",X"7C",X"86",X"9E",X"78",X"E4",X"C4", - X"78",X"00",X"78",X"0C",X"06",X"7E",X"C6",X"C6",X"7C",X"00",X"C6",X"C6",X"FE",X"C6",X"C6",X"6C", - X"38",X"00",X"FC",X"C6",X"C6",X"FC",X"C6",X"C6",X"FC",X"00",X"3C",X"66",X"C0",X"C0",X"C0",X"66", - X"3C",X"00",X"F8",X"CC",X"C6",X"C6",X"C6",X"CC",X"F8",X"00",X"FC",X"C0",X"C0",X"F8",X"C0",X"C0", - X"FC",X"00",X"C0",X"C0",X"C0",X"FC",X"C0",X"C0",X"FE",X"00",X"3E",X"66",X"C6",X"CE",X"C0",X"60", - X"3E",X"00",X"C6",X"C6",X"C6",X"FE",X"C6",X"C6",X"C6",X"00",X"FC",X"30",X"30",X"30",X"30",X"30", - X"FC",X"00",X"7C",X"C6",X"06",X"06",X"06",X"06",X"06",X"00",X"CE",X"DC",X"F8",X"F0",X"D8",X"CC", - X"C6",X"00",X"FC",X"C0",X"C0",X"C0",X"C0",X"C0",X"C0",X"00",X"C6",X"C6",X"D6",X"FE",X"FE",X"EE", - X"C6",X"00",X"C6",X"CE",X"DE",X"FE",X"F6",X"E6",X"C6",X"00",X"7C",X"C6",X"C6",X"C6",X"C6",X"C6", - X"7C",X"00",X"C0",X"C0",X"FC",X"C6",X"C6",X"C6",X"FC",X"00",X"7A",X"CC",X"DE",X"C6",X"C6",X"C6", - X"7C",X"00",X"CE",X"DC",X"F8",X"CE",X"C6",X"C6",X"FC",X"00",X"7C",X"C6",X"06",X"7C",X"C0",X"C6", - X"7C",X"00",X"30",X"30",X"30",X"30",X"30",X"30",X"FC",X"00",X"7C",X"C6",X"C6",X"C6",X"C6",X"C6", - X"C6",X"00",X"10",X"38",X"6C",X"EE",X"C6",X"C6",X"C6",X"00",X"C6",X"EE",X"FE",X"FE",X"D6",X"C6", - X"C6",X"00",X"C6",X"EE",X"7C",X"38",X"7C",X"EE",X"C6",X"00",X"30",X"30",X"30",X"78",X"CC",X"CC", - X"CC",X"00",X"FE",X"E0",X"70",X"38",X"1C",X"0E",X"FE",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"18",X"3C",X"7E",X"FF",X"FF",X"BD",X"3C",X"3C",X"7F",X"FF",X"7F",X"7E",X"34",X"30", - X"20",X"00",X"7C",X"37",X"25",X"00",X"00",X"00",X"00",X"00",X"FE",X"FF",X"FE",X"FE",X"FA",X"50", - X"10",X"10",X"3E",X"6C",X"C8",X"C0",X"80",X"00",X"00",X"00",X"1C",X"38",X"7F",X"FF",X"FF",X"7F", - X"38",X"1C",X"38",X"1C",X"FE",X"FF",X"FF",X"FE",X"1C",X"38",X"3C",X"42",X"99",X"91",X"99",X"42", - X"3C",X"00",X"30",X"30",X"00",X"30",X"30",X"00",X"00",X"00",X"3C",X"52",X"9D",X"95",X"9D",X"42", - X"3C",X"00",X"C6",X"FE",X"C6",X"6C",X"38",X"10",X"44",X"00",X"7C",X"C6",X"C6",X"C6",X"7C",X"00", - X"28",X"00",X"7C",X"C6",X"C6",X"C6",X"C6",X"00",X"28",X"00",X"A5",X"F4",X"29",X"70",X"C9",X"70", - X"F0",X"2E",X"A9",X"1B",X"20",X"51",X"6A",X"A9",X"19",X"20",X"51",X"6A",X"A9",X"1A",X"20",X"51", - X"6A",X"A9",X"00",X"85",X"D1",X"A5",X"F4",X"29",X"70",X"4A",X"4A",X"4A",X"AA",X"BD",X"82",X"60", - X"85",X"D2",X"BD",X"83",X"60",X"85",X"D3",X"A2",X"90",X"A0",X"58",X"A9",X"40",X"20",X"F6",X"6A", - X"60",X"A2",X"17",X"BD",X"F3",X"74",X"9D",X"2C",X"00",X"BD",X"0B",X"75",X"9D",X"44",X"00",X"CA", - X"10",X"F1",X"60",X"47",X"4A",X"4C",X"44",X"45",X"57",X"4A",X"45",X"44",X"4D",X"4A",X"50",X"52", - X"44",X"41",X"53",X"52",X"43",X"44",X"4C",X"53",X"44",X"46",X"D4",X"50",X"69",X"00",X"05",X"70", - X"00",X"50",X"71",X"00",X"00",X"72",X"00",X"50",X"72",X"00",X"30",X"73",X"00",X"95",X"74",X"00", - X"00",X"75",X"00",X"AD",X"59",X"00",X"85",X"D1",X"AD",X"5A",X"00",X"85",X"D2",X"AD",X"5B",X"00", - X"85",X"D3",X"A2",X"64",X"A0",X"E2",X"A9",X"40",X"20",X"F6",X"6A",X"4C",X"E1",X"5F",X"22",X"20", - X"E4",X"76",X"A5",X"93",X"D0",X"07",X"A0",X"1C",X"84",X"91",X"B8",X"50",X"3D",X"A2",X"01",X"86", - X"8D",X"A0",X"15",X"B9",X"46",X"00",X"DD",X"DA",X"01",X"D0",X"0E",X"B9",X"45",X"00",X"DD",X"D8", - X"01",X"D0",X"06",X"B9",X"44",X"00",X"DD",X"D6",X"01",X"B0",X"03",X"20",X"8B",X"75",X"88",X"88", - X"88",X"10",X"E0",X"CA",X"10",X"DB",X"20",X"33",X"6C",X"A5",X"8D",X"10",X"09",X"20",X"21",X"69", - X"20",X"E4",X"75",X"B8",X"50",X"04",X"A0",X"06",X"84",X"91",X"60",X"84",X"98",X"A0",X"00",X"C4", - X"98",X"D0",X"27",X"BD",X"DA",X"01",X"99",X"46",X"00",X"BD",X"D8",X"01",X"99",X"45",X"00",X"BD", - X"D6",X"01",X"99",X"44",X"00",X"E8",X"8A",X"CA",X"99",X"2C",X"00",X"A9",X"5B",X"99",X"2D",X"00", - X"99",X"2E",X"00",X"A0",X"00",X"A9",X"FF",X"85",X"8D",X"60",X"B9",X"49",X"00",X"99",X"46",X"00", - X"B9",X"48",X"00",X"99",X"45",X"00",X"B9",X"47",X"00",X"99",X"44",X"00",X"B9",X"31",X"00",X"99", - X"2E",X"00",X"B9",X"30",X"00",X"99",X"2D",X"00",X"B9",X"2F",X"00",X"99",X"2C",X"00",X"C8",X"C8", - X"C8",X"10",X"AC",X"60",X"A0",X"15",X"B9",X"2C",X"00",X"F0",X"40",X"C9",X"03",X"B0",X"3C",X"85", - X"B9",X"C6",X"B9",X"84",X"16",X"20",X"80",X"69",X"20",X"2F",X"67",X"20",X"48",X"5F",X"20",X"CE", - X"65",X"20",X"23",X"75",X"A9",X"09",X"20",X"51",X"6A",X"A9",X"12",X"20",X"51",X"6A",X"A9",X"13", - X"20",X"51",X"6A",X"A9",X"14",X"20",X"51",X"6A",X"A9",X"FF",X"85",X"0F",X"A2",X"00",X"86",X"A5", - X"86",X"FA",X"A9",X"02",X"85",X"0A",X"A9",X"1A",X"85",X"91",X"60",X"88",X"88",X"88",X"10",X"B6", - X"20",X"80",X"69",X"A9",X"00",X"85",X"B9",X"A5",X"FC",X"29",X"80",X"85",X"FC",X"A9",X"1C",X"85", - X"91",X"60",X"82",X"78",X"6E",X"A5",X"F1",X"49",X"FF",X"29",X"18",X"D0",X"E3",X"A5",X"CA",X"29", - X"0F",X"D0",X"07",X"C6",X"0F",X"D0",X"03",X"4C",X"30",X"76",X"A2",X"00",X"A5",X"94",X"86",X"94", - X"18",X"65",X"95",X"86",X"95",X"0A",X"0A",X"10",X"02",X"C6",X"A5",X"18",X"65",X"A3",X"85",X"A3", - X"A9",X"00",X"65",X"A5",X"10",X"05",X"A9",X"1A",X"B8",X"50",X"06",X"C9",X"1B",X"90",X"02",X"A9", - X"00",X"85",X"A5",X"A4",X"0A",X"B9",X"42",X"76",X"85",X"1D",X"A9",X"B0",X"85",X"1E",X"A5",X"A5", - X"18",X"69",X"41",X"20",X"BA",X"76",X"A5",X"FA",X"29",X"07",X"F0",X"1D",X"A5",X"A5",X"18",X"69", - X"41",X"A4",X"16",X"99",X"2C",X"00",X"E6",X"16",X"A9",X"84",X"85",X"0F",X"A2",X"00",X"86",X"FA", - X"86",X"A5",X"C6",X"0A",X"10",X"03",X"20",X"E4",X"75",X"60",X"84",X"24",X"86",X"23",X"20",X"9D", - X"69",X"A5",X"1D",X"85",X"00",X"A5",X"1E",X"85",X"01",X"A9",X"00",X"85",X"08",X"A9",X"40",X"85", - X"0B",X"A9",X"00",X"85",X"0C",X"20",X"27",X"66",X"A5",X"1D",X"18",X"69",X"0A",X"85",X"1D",X"A6", - X"23",X"A4",X"24",X"60",X"A0",X"15",X"B9",X"2C",X"00",X"F0",X"0F",X"C9",X"03",X"B0",X"0B",X"A9", - X"5B",X"99",X"2C",X"00",X"99",X"2D",X"00",X"99",X"2E",X"00",X"88",X"88",X"88",X"10",X"E7",X"60", - X"20",X"80",X"69",X"A9",X"00",X"85",X"B9",X"85",X"93",X"85",X"AE",X"A5",X"FC",X"29",X"80",X"85", - X"FC",X"20",X"23",X"75",X"A9",X"01",X"20",X"51",X"6A",X"A9",X"C0",X"85",X"20",X"20",X"21",X"69", - X"20",X"E4",X"76",X"A0",X"15",X"B9",X"46",X"00",X"19",X"45",X"00",X"19",X"44",X"00",X"D0",X"04", - X"A8",X"B8",X"50",X"3D",X"B9",X"46",X"00",X"85",X"D3",X"B9",X"45",X"00",X"85",X"D2",X"B9",X"44", - X"00",X"85",X"D1",X"98",X"48",X"A9",X"40",X"A2",X"80",X"A4",X"20",X"20",X"F6",X"6A",X"68",X"A8", - X"A9",X"50",X"85",X"1D",X"A5",X"20",X"85",X"1E",X"B9",X"2C",X"00",X"20",X"BA",X"76",X"B9",X"2D", - X"00",X"20",X"BA",X"76",X"B9",X"2E",X"00",X"20",X"BA",X"76",X"A5",X"20",X"38",X"E9",X"0A",X"85", - X"20",X"88",X"88",X"88",X"10",X"AF",X"20",X"AA",X"74",X"A9",X"14",X"85",X"92",X"A9",X"22",X"85", - X"91",X"A9",X"FF",X"85",X"AF",X"60",X"20",X"33",X"6C",X"20",X"2F",X"67",X"20",X"86",X"69",X"A9", - X"01",X"85",X"A7",X"20",X"21",X"69",X"A9",X"0C",X"20",X"51",X"6A",X"A9",X"20",X"85",X"91",X"A5", - X"66",X"F0",X"04",X"A9",X"14",X"85",X"91",X"60",X"A9",X"FF",X"D0",X"02",X"A9",X"00",X"85",X"98", - X"A0",X"0C",X"A6",X"97",X"BD",X"5D",X"01",X"18",X"79",X"E2",X"77",X"49",X"FF",X"85",X"07",X"BD", - X"28",X"01",X"18",X"79",X"D5",X"77",X"85",X"06",X"B9",X"EF",X"77",X"A2",X"00",X"25",X"98",X"81", - X"06",X"88",X"10",X"DE",X"60",X"00",X"FF",X"00",X"01",X"FE",X"FF",X"00",X"01",X"02",X"FF",X"00", - X"01",X"00",X"02",X"01",X"01",X"01",X"00",X"00",X"00",X"00",X"00",X"FF",X"FF",X"FF",X"FE",X"40", - X"40",X"80",X"40",X"40",X"80",X"00",X"80",X"40",X"40",X"80",X"40",X"40",X"A2",X"02",X"AD",X"ED", - X"00",X"E0",X"01",X"F0",X"03",X"B0",X"02",X"0A",X"0A",X"0A",X"B5",X"5C",X"29",X"1F",X"B0",X"37", - X"F0",X"10",X"C9",X"1B",X"B0",X"0A",X"A8",X"A5",X"FB",X"29",X"07",X"C9",X"07",X"98",X"90",X"02", - X"E9",X"01",X"95",X"5C",X"AD",X"EE",X"00",X"29",X"20",X"D0",X"04",X"A9",X"F0",X"85",X"5F",X"A5", - X"5F",X"F0",X"08",X"C6",X"5F",X"A9",X"00",X"95",X"5C",X"95",X"60",X"18",X"B5",X"60",X"F0",X"23", - X"D6",X"60",X"D0",X"1F",X"38",X"B0",X"1C",X"C9",X"1B",X"B0",X"09",X"B5",X"5C",X"69",X"20",X"90", - X"D1",X"F0",X"01",X"18",X"A9",X"1F",X"B0",X"CA",X"95",X"5C",X"B5",X"60",X"F0",X"01",X"38",X"A9", - X"78",X"95",X"60",X"B0",X"03",X"4C",X"A3",X"78",X"A9",X"00",X"E0",X"01",X"90",X"16",X"F0",X"0C", - X"A5",X"F3",X"29",X"0C",X"4A",X"4A",X"F0",X"0C",X"69",X"02",X"D0",X"08",X"A5",X"F3",X"29",X"10", - X"F0",X"02",X"A9",X"01",X"38",X"A8",X"65",X"67",X"85",X"67",X"A5",X"F4",X"29",X"04",X"F0",X"11", - X"98",X"38",X"65",X"68",X"C9",X"04",X"90",X"07",X"38",X"E9",X"04",X"E6",X"66",X"D0",X"F5",X"85", - X"68",X"F6",X"63",X"CA",X"30",X"03",X"4C",X"FE",X"77",X"A5",X"F3",X"29",X"03",X"A8",X"F0",X"12", - X"4A",X"69",X"00",X"49",X"FF",X"38",X"65",X"67",X"90",X"0A",X"C0",X"02",X"B0",X"02",X"E6",X"66", - X"E6",X"66",X"85",X"67",X"A5",X"FB",X"4A",X"B0",X"27",X"A0",X"00",X"A2",X"02",X"B5",X"63",X"F0", - X"09",X"C9",X"10",X"90",X"05",X"69",X"EF",X"C8",X"95",X"63",X"CA",X"10",X"F0",X"98",X"D0",X"10", - X"A2",X"02",X"B5",X"63",X"F0",X"07",X"18",X"69",X"EF",X"95",X"63",X"30",X"03",X"CA",X"10",X"F2", - X"60",X"00",X"00",X"00",X"00",X"00",X"00",X"7D",X"83",X"01",X"07",X"0D",X"13",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"19",X"33",X"00",X"00",X"41",X"47",X"00",X"00",X"00",X"00",X"00", - X"00",X"5D",X"77",X"00",X"00",X"00",X"00",X"00",X"00",X"91",X"97",X"9D",X"A3",X"00",X"00",X"00", - X"00",X"4D",X"53",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"A9", - X"B3",X"00",X"A0",X"10",X"04",X"10",X"00",X"00",X"86",X"40",X"FE",X"04",X"00",X"00",X"C0",X"10", - X"04",X"10",X"00",X"00",X"86",X"40",X"FE",X"04",X"00",X"00",X"60",X"10",X"00",X"01",X"50",X"10", - X"F8",X"01",X"48",X"10",X"18",X"01",X"60",X"18",X"F0",X"01",X"60",X"10",X"F8",X"01",X"60",X"10", - X"08",X"10",X"00",X"00",X"82",X"20",X"02",X"01",X"84",X"10",X"00",X"04",X"84",X"38",X"FF",X"04", - X"00",X"00",X"10",X"04",X"00",X"01",X"00",X"00",X"2F",X"04",X"0F",X"01",X"00",X"00",X"18",X"18", - X"00",X"18",X"00",X"00",X"A4",X"18",X"00",X"18",X"A0",X"10",X"00",X"02",X"00",X"00",X"10",X"02", - X"01",X"20",X"10",X"02",X"01",X"20",X"10",X"02",X"01",X"20",X"10",X"02",X"01",X"20",X"10",X"02", - X"01",X"20",X"10",X"02",X"01",X"20",X"00",X"00",X"A4",X"02",X"00",X"C0",X"00",X"00",X"20",X"80", - X"00",X"03",X"00",X"00",X"A3",X"40",X"FD",X"02",X"A3",X"40",X"FD",X"02",X"A3",X"40",X"FD",X"02", - X"00",X"00",X"40",X"FF",X"02",X"08",X"00",X"00",X"88",X"FF",X"FF",X"08",X"00",X"00",X"C0",X"FF", - X"02",X"08",X"00",X"00",X"88",X"FF",X"FF",X"08",X"00",X"00",X"18",X"02",X"FF",X"10",X"08",X"20", - X"00",X"01",X"00",X"00",X"A4",X"10",X"FF",X"04",X"00",X"00",X"A9",X"02",X"2C",X"93",X"00",X"10", - X"3A",X"8D",X"02",X"00",X"85",X"69",X"8E",X"98",X"00",X"8C",X"99",X"00",X"AA",X"F0",X"08",X"A2", - X"08",X"0E",X"02",X"00",X"CA",X"90",X"FA",X"8A",X"0A",X"0A",X"0A",X"69",X"07",X"A8",X"C0",X"47", - X"B0",X"13",X"A2",X"07",X"B9",X"F1",X"78",X"F0",X"08",X"95",X"6A",X"A9",X"01",X"95",X"7A",X"95", - X"82",X"88",X"CA",X"10",X"EF",X"AE",X"98",X"00",X"AC",X"99",X"00",X"60",X"A9",X"18",X"A0",X"AF", - X"8D",X"00",X"40",X"8C",X"01",X"40",X"60",X"AD",X"E0",X"00",X"D0",X"F0",X"A2",X"07",X"D6",X"7A", - X"D0",X"56",X"B4",X"6A",X"F0",X"52",X"D6",X"82",X"D0",X"30",X"B9",X"31",X"79",X"95",X"72",X"B9", - X"32",X"79",X"95",X"7A",X"D0",X"15",X"95",X"6A",X"8A",X"D0",X"3D",X"A9",X"00",X"95",X"72",X"9D", - X"00",X"40",X"A9",X"00",X"95",X"6A",X"CA",X"10",X"D5",X"30",X"35",X"B9",X"34",X"79",X"95",X"82", - X"B5",X"6A",X"18",X"69",X"04",X"95",X"6A",X"4C",X"98",X"7A",X"B9",X"2E",X"79",X"95",X"7A",X"B5", - X"72",X"18",X"79",X"2F",X"79",X"24",X"69",X"50",X"0D",X"E0",X"01",X"F0",X"09",X"AD",X"0A",X"40", - X"29",X"1E",X"D0",X"02",X"A9",X"1E",X"95",X"72",X"B5",X"72",X"9D",X"00",X"40",X"CA",X"10",X"9E", - X"A5",X"70",X"D0",X"26",X"A5",X"8A",X"F0",X"22",X"2A",X"2A",X"2A",X"29",X"03",X"AA",X"A5",X"8B", - X"DD",X"CA",X"7A",X"D0",X"06",X"BD",X"CD",X"7A",X"B8",X"50",X"03",X"38",X"E9",X"02",X"8D",X"06", - X"40",X"85",X"8B",X"A9",X"A4",X"8D",X"07",X"40",X"85",X"79",X"60",X"30",X"00",X"00",X"70",X"30", - X"30",X"A9",X"30",X"85",X"8B",X"A5",X"8A",X"09",X"80",X"85",X"8A",X"60",X"A5",X"8A",X"09",X"40", - X"85",X"8A",X"30",X"04",X"A9",X"70",X"85",X"8B",X"60",X"AD",X"DA",X"00",X"D0",X"1D",X"A5",X"8A", - X"29",X"7F",X"85",X"8A",X"24",X"8A",X"70",X"E4",X"A5",X"8A",X"29",X"BF",X"85",X"8A",X"AD",X"DA", - X"00",X"D0",X"08",X"85",X"8A",X"8D",X"06",X"40",X"8D",X"07",X"40",X"60",X"A9",X"00",X"8D",X"0F", - X"40",X"A9",X"03",X"8D",X"0F",X"40",X"A2",X"07",X"A9",X"00",X"9D",X"00",X"40",X"95",X"6A",X"95", - X"72",X"CA",X"10",X"F6",X"A9",X"20",X"8D",X"08",X"40",X"60",X"48",X"8A",X"48",X"98",X"48",X"D8", - X"BA",X"E0",X"E0",X"90",X"16",X"BD",X"04",X"01",X"29",X"10",X"D0",X"0F",X"BD",X"06",X"01",X"C9", - X"50",X"90",X"08",X"C9",X"80",X"B0",X"04",X"A5",X"9F",X"10",X"1F",X"A2",X"FF",X"9A",X"D8",X"E8", - X"8A",X"78",X"95",X"00",X"9D",X"00",X"01",X"CA",X"D0",X"F8",X"A9",X"40",X"8D",X"00",X"48",X"2C", - X"00",X"49",X"50",X"03",X"4C",X"01",X"50",X"4C",X"82",X"7C",X"8D",X"00",X"4C",X"E6",X"FB",X"AD", - X"00",X"49",X"10",X"34",X"E6",X"9F",X"A5",X"D8",X"F0",X"02",X"C6",X"D8",X"A5",X"EC",X"85",X"F3", - X"A2",X"07",X"06",X"F3",X"90",X"02",X"F6",X"E4",X"B5",X"E4",X"9D",X"00",X"4B",X"CA",X"10",X"F2", - X"AD",X"00",X"4A",X"49",X"02",X"85",X"F3",X"A5",X"F5",X"29",X"BF",X"A8",X"A5",X"FC",X"29",X"3E", - X"D0",X"04",X"98",X"09",X"40",X"A8",X"84",X"F5",X"AE",X"00",X"49",X"86",X"EE",X"A5",X"F5",X"29", - X"FE",X"A8",X"AE",X"00",X"48",X"86",X"F6",X"8C",X"00",X"48",X"AE",X"00",X"48",X"86",X"ED",X"09", - X"01",X"8D",X"00",X"48",X"AE",X"00",X"48",X"86",X"F8",X"A5",X"F6",X"38",X"E5",X"F7",X"29",X"0F", - X"C9",X"08",X"90",X"02",X"09",X"F0",X"18",X"65",X"94",X"85",X"94",X"A5",X"F6",X"38",X"09",X"0F", - X"E5",X"F7",X"4A",X"4A",X"4A",X"4A",X"C9",X"08",X"90",X"02",X"09",X"F0",X"18",X"65",X"95",X"85", - X"95",X"A5",X"F8",X"85",X"F7",X"A9",X"07",X"8D",X"0F",X"40",X"8D",X"0B",X"40",X"AD",X"08",X"40", - X"49",X"7F",X"85",X"F4",X"24",X"F2",X"50",X"06",X"20",X"37",X"7A",X"20",X"FC",X"77",X"A2",X"01", - X"B4",X"ED",X"B5",X"EF",X"94",X"EF",X"A8",X"35",X"EF",X"15",X"F1",X"95",X"F1",X"98",X"15",X"EF", - X"35",X"F1",X"95",X"F1",X"CA",X"10",X"E9",X"A4",X"F2",X"A5",X"FC",X"29",X"3E",X"F0",X"02",X"A4", - X"F1",X"98",X"49",X"FF",X"25",X"F9",X"45",X"FA",X"85",X"FA",X"84",X"F9",X"A5",X"F5",X"29",X"40", - X"09",X"06",X"A6",X"AE",X"E8",X"A4",X"93",X"D0",X"10",X"A2",X"00",X"A4",X"FB",X"C0",X"40",X"90", - X"08",X"A6",X"66",X"E0",X"02",X"90",X"02",X"A2",X"03",X"3D",X"7E",X"7C",X"A4",X"63",X"10",X"02", - X"09",X"20",X"A4",X"64",X"10",X"02",X"09",X"10",X"A4",X"65",X"10",X"02",X"09",X"08",X"85",X"F5", - X"2C",X"00",X"49",X"30",X"FB",X"8D",X"00",X"4D",X"68",X"A8",X"68",X"AA",X"68",X"40",X"FF",X"FD", - X"FB",X"F9",X"A9",X"00",X"8D",X"0F",X"40",X"8D",X"05",X"40",X"8D",X"07",X"40",X"8D",X"08",X"40", - X"A9",X"03",X"8D",X"0F",X"40",X"A9",X"08",X"8D",X"03",X"40",X"A9",X"C0",X"8D",X"02",X"40",X"A9", - X"44",X"8D",X"00",X"48",X"A0",X"60",X"2C",X"00",X"49",X"30",X"FB",X"2C",X"00",X"49",X"10",X"FB", - X"8D",X"00",X"4C",X"88",X"10",X"F0",X"A9",X"A2",X"8D",X"03",X"40",X"A0",X"00",X"A2",X"00",X"94", - X"00",X"C8",X"98",X"9D",X"00",X"01",X"E8",X"D0",X"F6",X"8D",X"00",X"4C",X"98",X"55",X"00",X"95", - X"00",X"D0",X"1D",X"C8",X"98",X"5D",X"00",X"01",X"9D",X"00",X"01",X"D0",X"13",X"E8",X"D0",X"EC", - X"C8",X"D0",X"DA",X"A9",X"40",X"8D",X"02",X"40",X"A9",X"42",X"8D",X"00",X"48",X"4C",X"39",X"7D", - X"A2",X"07",X"A0",X"00",X"8C",X"03",X"40",X"9A",X"BA",X"2A",X"A0",X"A0",X"90",X"02",X"A0",X"10", - X"8C",X"00",X"40",X"A0",X"A8",X"8C",X"01",X"40",X"A0",X"20",X"2C",X"00",X"49",X"30",X"FB",X"2C", - X"00",X"49",X"10",X"FB",X"8D",X"00",X"4C",X"88",X"10",X"F0",X"A0",X"00",X"8C",X"01",X"40",X"A0", - X"14",X"2C",X"00",X"49",X"30",X"FB",X"2C",X"00",X"49",X"10",X"FB",X"8D",X"00",X"4C",X"88",X"10", - X"F0",X"BA",X"CA",X"9A",X"10",X"C2",X"4C",X"4B",X"7B",X"A2",X"00",X"86",X"06",X"86",X"8D",X"9A", - X"A9",X"50",X"85",X"07",X"A2",X"2F",X"A9",X"12",X"85",X"99",X"A0",X"00",X"8E",X"00",X"4C",X"51", - X"06",X"C8",X"D0",X"FB",X"A8",X"8A",X"29",X"07",X"C9",X"01",X"98",X"B0",X"18",X"F0",X"10",X"48", - X"8A",X"48",X"4A",X"4A",X"4A",X"AA",X"BD",X"F9",X"60",X"05",X"8D",X"85",X"8D",X"68",X"AA",X"A5", - X"99",X"69",X"22",X"85",X"99",X"E6",X"07",X"CA",X"10",X"D0",X"58",X"20",X"86",X"69",X"20",X"2F", - X"67",X"A9",X"00",X"85",X"EA",X"A9",X"0E",X"85",X"E4",X"85",X"93",X"A9",X"22",X"BA",X"D0",X"02", - X"A9",X"20",X"A2",X"FF",X"9A",X"20",X"3B",X"7F",X"A9",X"80",X"85",X"00",X"85",X"01",X"A2",X"00", - X"A9",X"C0",X"81",X"00",X"A0",X"24",X"AD",X"20",X"20",X"29",X"11",X"C9",X"11",X"F0",X"02",X"A0", - X"23",X"98",X"20",X"51",X"6A",X"AD",X"0A",X"40",X"85",X"FD",X"A0",X"10",X"AD",X"0A",X"40",X"C5", - X"FD",X"D0",X"0A",X"85",X"FD",X"88",X"10",X"F4",X"A9",X"27",X"20",X"51",X"6A",X"A9",X"1F",X"20", - X"51",X"6A",X"A9",X"02",X"85",X"AE",X"A9",X"00",X"85",X"B9",X"20",X"5C",X"65",X"A5",X"F3",X"49", - X"FF",X"85",X"FD",X"A9",X"01",X"85",X"FF",X"8D",X"08",X"40",X"46",X"9F",X"90",X"FC",X"A5",X"F2", - X"29",X"24",X"D0",X"05",X"85",X"FF",X"20",X"7F",X"7F",X"A5",X"F2",X"29",X"21",X"D0",X"05",X"85", - X"FF",X"20",X"62",X"7F",X"A9",X"00",X"8D",X"01",X"40",X"8D",X"03",X"40",X"A5",X"F2",X"29",X"22", - X"D0",X"05",X"85",X"FF",X"20",X"EB",X"7E",X"20",X"32",X"51",X"A5",X"F1",X"49",X"FF",X"8D",X"00", - X"40",X"F0",X"07",X"A9",X"A8",X"8D",X"01",X"40",X"E6",X"E4",X"A5",X"F2",X"49",X"FF",X"29",X"27", - X"8D",X"02",X"40",X"F0",X"07",X"A9",X"A8",X"8D",X"03",X"40",X"E6",X"E4",X"A5",X"FA",X"29",X"07", - X"F0",X"17",X"A5",X"B9",X"49",X"01",X"85",X"B9",X"A9",X"00",X"85",X"FA",X"20",X"86",X"69",X"A5", - X"FD",X"49",X"FF",X"85",X"FD",X"A9",X"01",X"85",X"FF",X"20",X"6B",X"7E",X"24",X"F2",X"50",X"8A", - X"4C",X"4B",X"7B",X"11",X"14",X"15",X"16",X"21",X"24",X"25",X"26",X"A5",X"FF",X"F0",X"7B",X"A5", - X"F3",X"C5",X"FD",X"85",X"FD",X"D0",X"06",X"A5",X"F4",X"C5",X"FE",X"85",X"FE",X"F0",X"6B",X"A9", - X"25",X"20",X"49",X"6A",X"A9",X"1B",X"20",X"49",X"6A",X"20",X"2F",X"67",X"A5",X"F3",X"29",X"03", - X"AA",X"BD",X"2F",X"6C",X"20",X"51",X"6A",X"A5",X"F3",X"29",X"1C",X"4A",X"4A",X"AA",X"BD",X"63", - X"7E",X"48",X"4A",X"4A",X"4A",X"4A",X"A2",X"40",X"A0",X"28",X"20",X"9D",X"6A",X"68",X"29",X"07", - X"A2",X"50",X"20",X"9D",X"6A",X"A9",X"70",X"85",X"1D",X"A9",X"28",X"85",X"1E",X"A5",X"F4",X"29", - X"08",X"F0",X"02",X"A9",X"46",X"20",X"BA",X"76",X"A5",X"F4",X"29",X"04",X"F0",X"02",X"A9",X"58", - X"20",X"BA",X"76",X"A5",X"F4",X"29",X"03",X"AA",X"BD",X"08",X"5B",X"A2",X"40",X"A0",X"34",X"20", - X"9D",X"6A",X"A9",X"26",X"20",X"51",X"6A",X"20",X"AA",X"74",X"60",X"20",X"62",X"7F",X"20",X"86", - X"69",X"78",X"A9",X"00",X"85",X"8D",X"A9",X"1F",X"85",X"99",X"A9",X"02",X"85",X"07",X"A9",X"AA", - X"91",X"06",X"C8",X"B1",X"06",X"F0",X"03",X"20",X"32",X"7F",X"C8",X"D0",X"F6",X"B1",X"06",X"C9", - X"AA",X"F0",X"03",X"20",X"30",X"7F",X"A9",X"00",X"91",X"06",X"85",X"9F",X"8D",X"00",X"4C",X"E6", - X"06",X"D0",X"DB",X"E6",X"07",X"A5",X"07",X"C9",X"3F",X"D0",X"D3",X"A5",X"99",X"4C",X"3B",X"7F", - X"49",X"AA",X"05",X"8D",X"85",X"8D",X"A9",X"21",X"85",X"99",X"60",X"58",X"20",X"51",X"6A",X"A5", - X"8D",X"A2",X"08",X"0A",X"90",X"18",X"48",X"86",X"C5",X"A9",X"E0",X"85",X"0B",X"8A",X"0A",X"0A", - X"0A",X"18",X"69",X"88",X"A8",X"8A",X"A2",X"A0",X"20",X"9D",X"6A",X"A6",X"C5",X"68",X"CA",X"D0", - X"E2",X"60",X"A2",X"07",X"8A",X"0A",X"95",X"E4",X"CA",X"10",X"F9",X"E8",X"86",X"06",X"A0",X"18", - X"84",X"07",X"A5",X"06",X"81",X"06",X"E6",X"07",X"D0",X"F8",X"E6",X"06",X"D0",X"F0",X"60",X"A9", - X"0E",X"A2",X"07",X"95",X"E4",X"CA",X"10",X"FB",X"A9",X"00",X"85",X"E6",X"20",X"86",X"69",X"A2", - X"00",X"A0",X"05",X"A9",X"19",X"85",X"07",X"B9",X"E2",X"7F",X"85",X"06",X"A9",X"40",X"81",X"06", - X"E6",X"07",X"D0",X"FA",X"88",X"10",X"EC",X"A0",X"05",X"B9",X"E8",X"7F",X"85",X"07",X"86",X"06", - X"A9",X"40",X"81",X"06",X"E6",X"06",X"D0",X"FA",X"88",X"10",X"EE",X"A0",X"04",X"B9",X"E2",X"7F", - X"18",X"79",X"E3",X"7F",X"6A",X"85",X"06",X"84",X"98",X"A0",X"04",X"B9",X"E8",X"7F",X"18",X"79", - X"E9",X"7F",X"6A",X"85",X"07",X"A9",X"40",X"81",X"06",X"88",X"10",X"EF",X"A4",X"98",X"88",X"10", - X"DC",X"60",X"00",X"33",X"66",X"99",X"CC",X"FF",X"19",X"46",X"74",X"A2",X"D0",X"FF",X"D8",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"4B",X"7B",X"4B",X"7B",X"2A",X"7B"); -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/Williams 6809 rev.2 Hardware/rtl/tshoot_sound_board.vhd b/Arcade_MiST/Williams 6809 rev.2 Hardware/rtl/tshoot_sound_board.vhd index 55520f4b..906118f2 100644 --- a/Arcade_MiST/Williams 6809 rev.2 Hardware/rtl/tshoot_sound_board.vhd +++ b/Arcade_MiST/Williams 6809 rev.2 Hardware/rtl/tshoot_sound_board.vhd @@ -33,7 +33,6 @@ entity tshoot_sound_board is port( clock_12 : in std_logic; reset : in std_logic; - hwsel : in std_logic_vector(1 downto 0); sound_select : in std_logic_vector(7 downto 0); sound_trig : in std_logic; sound_ack : out std_logic; @@ -128,13 +127,12 @@ end process; -- write enables wram_we <= '1' when cpu_rw_n = '0' and cpu_clock = '1' and wram_cs = '1' else '0'; -pia_rw_n <= '0' when cpu_rw_n = '0' and pia_cs = '1' else '1'; +pia_rw_n <= '0' when cpu_rw_n = '0' and pia_cs = '1' else '1'; -- mux cpu in data between roms/io/wram cpu_di <= wram_do when wram_cs = '1' else - sound_select when pia_cs = '1' and hwsel = HW_INFERNO else - pia_do when pia_cs = '1' and hwsel /= HW_INFERNO else + pia_do when pia_cs = '1' else rom_do when rom_cs = '1' else X"55"; -- pia irqs to cpu diff --git a/Arcade_MiST/Williams 6809 rev.2 Hardware/rtl/williams2.vhd b/Arcade_MiST/Williams 6809 rev.2 Hardware/rtl/williams2.vhd index 430afa26..9e2dff46 100644 --- a/Arcade_MiST/Williams 6809 rev.2 Hardware/rtl/williams2.vhd +++ b/Arcade_MiST/Williams 6809 rev.2 Hardware/rtl/williams2.vhd @@ -1171,7 +1171,6 @@ tshoot_sound_board : entity work.tshoot_sound_board port map( clock_12 => clock_12, reset => reset, - hwsel => hwsel, sound_select => sound_select, sound_trig => sound_trig, sound_ack => sound_ack, diff --git a/common/IO/pia6821.vhd b/common/IO/pia6821.vhd index d565ae36..7c3787b9 100644 --- a/common/IO/pia6821.vhd +++ b/common/IO/pia6821.vhd @@ -1,36 +1,44 @@ --===========================================================================-- -- --- S Y N T H E Z I A B L E I/O Port C O R E +-- S Y N T H E Z I A B L E I/O Port C O R E -- --- www.OpenCores.Org - May 2004 --- This core adheres to the GNU public license +-- www.OpenCores.Org - May 2004 +-- This core adheres to the GNU public license -- --- File name : pia6821.vhd +-- File name : pia6821.vhd -- --- Purpose : Implements 2 x 8 bit parallel I/O ports --- with programmable data direction registers --- --- Dependencies : ieee.Std_Logic_1164 --- ieee.std_logic_unsigned +-- Purpose : Implements 2 x 8 bit parallel I/O ports +-- with programmable data direction registers +-- +-- Dependencies : ieee.Std_Logic_1164 +-- ieee.std_logic_unsigned -- --- Author : John E. Kent +-- Author : John E. Kent -- --===========================================================================---- -- -- Revision History: -- --- Date: Revision Author --- 1 May 2004 0.0 John Kent +-- Date: Revision Author +-- 1 May 2004 0.0 John Kent -- Initial version developed from ioport.vhd -- -- --- Unkown date 0.0.1 found at Pacedev repository +-- Unkown date 0.0.1 found at Pacedev repository -- remove High Z output and and oe signal -- --- 18 October 2017 0.0.2 DarFpga --- Set output to low level when in data is in input mode +-- 18 October 2017 0.0.2 DarFpga +-- Set output to low level when in data is in input mode -- (to avoid infered latch warning) -- +-- 18 October 2022 0.0.3 Slingshot +-- Run through VHDLFormatter. +-- Port A always read the input data. +-- Feedback of output can be applied externally if required, as: +-- pa_i <= (pa_o and pa_oe) or (pa_input and not pa_oe); +-- In some applications, the input is stronger than the output, +-- and the feedback is suppressed. +-- --===========================================================================---- -- -- Memory Map @@ -41,513 +49,507 @@ -- IO + $03 - Port B Control Register -- -library ieee; -use ieee.std_logic_1164.all; -use ieee.std_logic_unsigned.all; +LIBRARY ieee; +USE ieee.std_logic_1164.ALL; +USE ieee.std_logic_unsigned.ALL; -entity pia6821 is - port ( - clk : in std_logic; - rst : in std_logic; - cs : in std_logic; - rw : in std_logic; - addr : in std_logic_vector(1 downto 0); - data_in : in std_logic_vector(7 downto 0); - data_out : out std_logic_vector(7 downto 0); - irqa : out std_logic; - irqb : out std_logic; - pa_i : in std_logic_vector(7 downto 0); - pa_o : out std_logic_vector(7 downto 0); - pa_oe : out std_logic_vector(7 downto 0); - ca1 : in std_logic; - ca2_i : in std_logic; - ca2_o : out std_logic; - ca2_oe : out std_logic; - pb_i : in std_logic_vector(7 downto 0); - pb_o : out std_logic_vector(7 downto 0); - pb_oe : out std_logic_vector(7 downto 0); - cb1 : in std_logic; - cb2_i : in std_logic; - cb2_o : out std_logic; - cb2_oe : out std_logic - ); -end; +ENTITY pia6821 IS + PORT ( + clk : IN std_logic; + rst : IN std_logic; + cs : IN std_logic; + rw : IN std_logic; + addr : IN std_logic_vector(1 DOWNTO 0); + data_in : IN std_logic_vector(7 DOWNTO 0); + data_out : OUT std_logic_vector(7 DOWNTO 0); + irqa : OUT std_logic; + irqb : OUT std_logic; + pa_i : IN std_logic_vector(7 DOWNTO 0); + pa_o : OUT std_logic_vector(7 DOWNTO 0); + pa_oe : OUT std_logic_vector(7 DOWNTO 0); + ca1 : IN std_logic; + ca2_i : IN std_logic; + ca2_o : OUT std_logic; + ca2_oe : OUT std_logic; + pb_i : IN std_logic_vector(7 DOWNTO 0); + pb_o : OUT std_logic_vector(7 DOWNTO 0); + pb_oe : OUT std_logic_vector(7 DOWNTO 0); + cb1 : IN std_logic; + cb2_i : IN std_logic; + cb2_o : OUT std_logic; + cb2_oe : OUT std_logic + ); +END; -architecture pia_arch of pia6821 is +ARCHITECTURE pia_arch OF pia6821 IS -signal porta_ddr : std_logic_vector(7 downto 0); -signal porta_data : std_logic_vector(7 downto 0); -signal porta_ctrl : std_logic_vector(5 downto 0); -signal porta_read : std_logic; + SIGNAL porta_ddr : std_logic_vector(7 DOWNTO 0); + SIGNAL porta_data : std_logic_vector(7 DOWNTO 0); + SIGNAL porta_ctrl : std_logic_vector(5 DOWNTO 0); + SIGNAL porta_read : std_logic; -signal portb_ddr : std_logic_vector(7 downto 0); -signal portb_data : std_logic_vector(7 downto 0); -signal portb_ctrl : std_logic_vector(5 downto 0); -signal portb_read : std_logic; -signal portb_write : std_logic; + SIGNAL portb_ddr : std_logic_vector(7 DOWNTO 0); + SIGNAL portb_data : std_logic_vector(7 DOWNTO 0); + SIGNAL portb_ctrl : std_logic_vector(5 DOWNTO 0); + SIGNAL portb_read : std_logic; + SIGNAL portb_write : std_logic; -signal ca1_del : std_logic; -signal ca1_rise : std_logic; -signal ca1_fall : std_logic; -signal ca1_edge : std_logic; -signal irqa1 : std_logic; + SIGNAL ca1_del : std_logic; + SIGNAL ca1_rise : std_logic; + SIGNAL ca1_fall : std_logic; + SIGNAL ca1_edge : std_logic; + SIGNAL irqa1 : std_logic; -signal ca2_del : std_logic; -signal ca2_rise : std_logic; -signal ca2_fall : std_logic; -signal ca2_edge : std_logic; -signal irqa2 : std_logic; -signal ca2_out : std_logic; + SIGNAL ca2_del : std_logic; + SIGNAL ca2_rise : std_logic; + SIGNAL ca2_fall : std_logic; + SIGNAL ca2_edge : std_logic; + SIGNAL irqa2 : std_logic; + SIGNAL ca2_out : std_logic; -signal cb1_del : std_logic; -signal cb1_rise : std_logic; -signal cb1_fall : std_logic; -signal cb1_edge : std_logic; -signal irqb1 : std_logic; + SIGNAL cb1_del : std_logic; + SIGNAL cb1_rise : std_logic; + SIGNAL cb1_fall : std_logic; + SIGNAL cb1_edge : std_logic; + SIGNAL irqb1 : std_logic; -signal cb2_del : std_logic; -signal cb2_rise : std_logic; -signal cb2_fall : std_logic; -signal cb2_edge : std_logic; -signal irqb2 : std_logic; -signal cb2_out : std_logic; + SIGNAL cb2_del : std_logic; + SIGNAL cb2_rise : std_logic; + SIGNAL cb2_fall : std_logic; + SIGNAL cb2_edge : std_logic; + SIGNAL irqb2 : std_logic; + SIGNAL cb2_out : std_logic; -begin +BEGIN + -------------------------------- + -- + -- read I/O port + -- + -------------------------------- --------------------------------- --- --- read I/O port --- --------------------------------- + pia_read : PROCESS (addr, cs, + irqa1, irqa2, irqb1, irqb2, + porta_ddr, portb_ddr, + porta_data, portb_data, + porta_ctrl, portb_ctrl, + pa_i, pb_i) + VARIABLE count : INTEGER; + BEGIN + CASE addr IS + WHEN "00" => + FOR count IN 0 TO 7 LOOP + IF porta_ctrl(2) = '0' THEN + data_out(count) <= porta_ddr(count); + porta_read <= '0'; + ELSE + data_out(count) <= pa_i(count); + porta_read <= cs; + END IF; + END LOOP; + portb_read <= '0'; -pia_read : process( addr, cs, - irqa1, irqa2, irqb1, irqb2, - porta_ddr, portb_ddr, - porta_data, portb_data, - porta_ctrl, portb_ctrl, - pa_i, pb_i ) -variable count : integer; -begin - case addr is - when "00" => - for count in 0 to 7 loop - if porta_ctrl(2) = '0' then - data_out(count) <= porta_ddr(count); - porta_read <= '0'; - else - if porta_ddr(count) = '1' then - data_out(count) <= porta_data(count); - else - data_out(count) <= pa_i(count); - end if; - porta_read <= cs; - end if; - end loop; - portb_read <= '0'; + WHEN "01" => + data_out <= irqa1 & irqa2 & porta_ctrl; + porta_read <= '0'; + portb_read <= '0'; - when "01" => - data_out <= irqa1 & irqa2 & porta_ctrl; - porta_read <= '0'; - portb_read <= '0'; + WHEN "10" => + FOR count IN 0 TO 7 LOOP + IF portb_ctrl(2) = '0' THEN + data_out(count) <= portb_ddr(count); + portb_read <= '0'; + ELSE + IF portb_ddr(count) = '1' THEN + data_out(count) <= portb_data(count); + ELSE + data_out(count) <= pb_i(count); + END IF; + portb_read <= cs; + END IF; + END LOOP; + porta_read <= '0'; - when "10" => - for count in 0 to 7 loop - if portb_ctrl(2) = '0' then - data_out(count) <= portb_ddr(count); - portb_read <= '0'; - else - if portb_ddr(count) = '1' then - data_out(count) <= portb_data(count); - else - data_out(count) <= pb_i(count); - end if; - portb_read <= cs; - end if; - end loop; - porta_read <= '0'; + WHEN "11" => + data_out <= irqb1 & irqb2 & portb_ctrl; + porta_read <= '0'; + portb_read <= '0'; - when "11" => - data_out <= irqb1 & irqb2 & portb_ctrl; - porta_read <= '0'; - portb_read <= '0'; + WHEN OTHERS => + data_out <= "00000000"; + porta_read <= '0'; + portb_read <= '0'; - when others => - data_out <= "00000000"; - porta_read <= '0'; - portb_read <= '0'; + END CASE; + END PROCESS; - end case; -end process; + --------------------------------- + -- + -- Write I/O ports + -- + --------------------------------- ---------------------------------- --- --- Write I/O ports --- ---------------------------------- + pia_write : PROCESS (clk, rst, addr, cs, rw, data_in, + porta_ctrl, portb_ctrl, + porta_data, portb_data, + porta_ddr, portb_ddr) + BEGIN + IF rst = '1' THEN + porta_ddr <= "00000000"; + porta_data <= "00000000"; + porta_ctrl <= "000000"; + portb_ddr <= "00000000"; + portb_data <= "00000000"; + portb_ctrl <= "000000"; + portb_write <= '0'; + ELSIF clk'EVENT AND clk = '1' THEN + IF cs = '1' AND rw = '0' THEN + CASE addr IS + WHEN "00" => + IF porta_ctrl(2) = '0' THEN + porta_ddr <= data_in; + porta_data <= porta_data; + ELSE + porta_ddr <= porta_ddr; + porta_data <= data_in; + END IF; + porta_ctrl <= porta_ctrl; + portb_ddr <= portb_ddr; + portb_data <= portb_data; + portb_ctrl <= portb_ctrl; + portb_write <= '0'; + WHEN "01" => + porta_ddr <= porta_ddr; + porta_data <= porta_data; + porta_ctrl <= data_in(5 DOWNTO 0); + portb_ddr <= portb_ddr; + portb_data <= portb_data; + portb_ctrl <= portb_ctrl; + portb_write <= '0'; + WHEN "10" => + porta_ddr <= porta_ddr; + porta_data <= porta_data; + porta_ctrl <= porta_ctrl; + IF portb_ctrl(2) = '0' THEN + portb_ddr <= data_in; + portb_data <= portb_data; + portb_write <= '0'; + ELSE + portb_ddr <= portb_ddr; + portb_data <= data_in; + portb_write <= '1'; + END IF; + portb_ctrl <= portb_ctrl; + WHEN "11" => + porta_ddr <= porta_ddr; + porta_data <= porta_data; + porta_ctrl <= porta_ctrl; + portb_ddr <= portb_ddr; + portb_data <= portb_data; + portb_ctrl <= data_in(5 DOWNTO 0); + portb_write <= '0'; + WHEN OTHERS => + porta_ddr <= porta_ddr; + porta_data <= porta_data; + porta_ctrl <= porta_ctrl; + portb_ddr <= portb_ddr; + portb_data <= portb_data; + portb_ctrl <= portb_ctrl; + portb_write <= '0'; + END CASE; + ELSE + porta_ddr <= porta_ddr; + porta_data <= porta_data; + porta_ctrl <= porta_ctrl; + portb_data <= portb_data; + portb_ddr <= portb_ddr; + portb_ctrl <= portb_ctrl; + portb_write <= '0'; + END IF; + END IF; + END PROCESS; -pia_write : process( clk, rst, addr, cs, rw, data_in, - porta_ctrl, portb_ctrl, - porta_data, portb_data, - porta_ddr, portb_ddr ) -begin - if rst = '1' then - porta_ddr <= "00000000"; - porta_data <= "00000000"; - porta_ctrl <= "000000"; - portb_ddr <= "00000000"; - portb_data <= "00000000"; - portb_ctrl <= "000000"; - portb_write <= '0'; - elsif clk'event and clk = '1' then - if cs = '1' and rw = '0' then - case addr is - when "00" => - if porta_ctrl(2) = '0' then - porta_ddr <= data_in; - porta_data <= porta_data; - else - porta_ddr <= porta_ddr; - porta_data <= data_in; - end if; - porta_ctrl <= porta_ctrl; - portb_ddr <= portb_ddr; - portb_data <= portb_data; - portb_ctrl <= portb_ctrl; - portb_write <= '0'; - when "01" => - porta_ddr <= porta_ddr; - porta_data <= porta_data; - porta_ctrl <= data_in(5 downto 0); - portb_ddr <= portb_ddr; - portb_data <= portb_data; - portb_ctrl <= portb_ctrl; - portb_write <= '0'; - when "10" => - porta_ddr <= porta_ddr; - porta_data <= porta_data; - porta_ctrl <= porta_ctrl; - if portb_ctrl(2) = '0' then - portb_ddr <= data_in; - portb_data <= portb_data; - portb_write <= '0'; - else - portb_ddr <= portb_ddr; - portb_data <= data_in; - portb_write <= '1'; - end if; - portb_ctrl <= portb_ctrl; - when "11" => - porta_ddr <= porta_ddr; - porta_data <= porta_data; - porta_ctrl <= porta_ctrl; - portb_ddr <= portb_ddr; - portb_data <= portb_data; - portb_ctrl <= data_in(5 downto 0); - portb_write <= '0'; - when others => - porta_ddr <= porta_ddr; - porta_data <= porta_data; - porta_ctrl <= porta_ctrl; - portb_ddr <= portb_ddr; - portb_data <= portb_data; - portb_ctrl <= portb_ctrl; - portb_write <= '0'; - end case; - else - porta_ddr <= porta_ddr; - porta_data <= porta_data; - porta_ctrl <= porta_ctrl; - portb_data <= portb_data; - portb_ddr <= portb_ddr; - portb_ctrl <= portb_ctrl; - portb_write <= '0'; - end if; - end if; -end process; + --------------------------------- + -- + -- direction control port a + -- + --------------------------------- + porta_direction : PROCESS (porta_data, porta_ddr) + VARIABLE count : INTEGER; + BEGIN + FOR count IN 0 TO 7 LOOP + IF porta_ddr(count) = '1' THEN + pa_o(count) <= porta_data(count); + pa_oe(count) <= '1'; + ELSE + pa_o(count) <= '0'; + pa_oe(count) <= '0'; + END IF; + END LOOP; + END PROCESS; ---------------------------------- --- --- direction control port a --- ---------------------------------- -porta_direction : process ( porta_data, porta_ddr ) -variable count : integer; -begin - for count in 0 to 7 loop - if porta_ddr(count) = '1' then - pa_o(count) <= porta_data(count); - pa_oe(count) <= '1'; - else - pa_o(count) <= '0'; - pa_oe(count) <= '0'; - end if; - end loop; -end process; + --------------------------------- + -- + -- CA1 Edge detect + -- + --------------------------------- + ca1_input : PROCESS (clk, rst, ca1, ca1_del, + ca1_rise, ca1_fall, ca1_edge, + irqa1, porta_ctrl, porta_read) + BEGIN + IF rst = '1' THEN + ca1_del <= '0'; + ca1_rise <= '0'; + ca1_fall <= '0'; + ca1_edge <= '0'; + irqa1 <= '0'; + ELSIF clk'EVENT AND clk = '0' THEN + ca1_del <= ca1; + ca1_rise <= (NOT ca1_del) AND ca1; + ca1_fall <= ca1_del AND (NOT ca1); + IF ca1_edge = '1' THEN + irqa1 <= '1'; + ELSIF porta_read = '1' THEN + irqa1 <= '0'; + ELSE + irqa1 <= irqa1; + END IF; + END IF; ---------------------------------- --- --- CA1 Edge detect --- ---------------------------------- -ca1_input : process( clk, rst, ca1, ca1_del, - ca1_rise, ca1_fall, ca1_edge, - irqa1, porta_ctrl, porta_read ) -begin - if rst = '1' then - ca1_del <= '0'; - ca1_rise <= '0'; - ca1_fall <= '0'; - ca1_edge <= '0'; - irqa1 <= '0'; - elsif clk'event and clk = '0' then - ca1_del <= ca1; - ca1_rise <= (not ca1_del) and ca1; - ca1_fall <= ca1_del and (not ca1); - if ca1_edge = '1' then - irqa1 <= '1'; - elsif porta_read = '1' then - irqa1 <= '0'; - else - irqa1 <= irqa1; - end if; - end if; + IF porta_ctrl(1) = '0' THEN + ca1_edge <= ca1_fall; + ELSE + ca1_edge <= ca1_rise; + END IF; + END PROCESS; - if porta_ctrl(1) = '0' then - ca1_edge <= ca1_fall; - else - ca1_edge <= ca1_rise; - end if; -end process; + --------------------------------- + -- + -- CA2 Edge detect + -- + --------------------------------- + ca2_input : PROCESS (clk, rst, ca2_i, ca2_del, + ca2_rise, ca2_fall, ca2_edge, + irqa2, porta_ctrl, porta_read) + BEGIN + IF rst = '1' THEN + ca2_del <= '0'; + ca2_rise <= '0'; + ca2_fall <= '0'; + ca2_edge <= '0'; + irqa2 <= '0'; + ELSIF clk'EVENT AND clk = '0' THEN + ca2_del <= ca2_i; + ca2_rise <= (NOT ca2_del) AND ca2_i; + ca2_fall <= ca2_del AND (NOT ca2_i); + IF porta_ctrl(5) = '0' AND ca2_edge = '1' THEN + irqa2 <= '1'; + ELSIF porta_read = '1' THEN + irqa2 <= '0'; + ELSE + irqa2 <= irqa2; + END IF; + END IF; ---------------------------------- --- --- CA2 Edge detect --- ---------------------------------- -ca2_input : process( clk, rst, ca2_i, ca2_del, - ca2_rise, ca2_fall, ca2_edge, - irqa2, porta_ctrl, porta_read ) -begin - if rst = '1' then - ca2_del <= '0'; - ca2_rise <= '0'; - ca2_fall <= '0'; - ca2_edge <= '0'; - irqa2 <= '0'; - elsif clk'event and clk = '0' then - ca2_del <= ca2_i; - ca2_rise <= (not ca2_del) and ca2_i; - ca2_fall <= ca2_del and (not ca2_i); - if porta_ctrl(5) = '0' and ca2_edge = '1' then - irqa2 <= '1'; - elsif porta_read = '1' then - irqa2 <= '0'; - else - irqa2 <= irqa2; - end if; - end if; + IF porta_ctrl(4) = '0' THEN + ca2_edge <= ca2_fall; + ELSE + ca2_edge <= ca2_rise; + END IF; + END PROCESS; - if porta_ctrl(4) = '0' then - ca2_edge <= ca2_fall; - else - ca2_edge <= ca2_rise; - end if; -end process; + --------------------------------- + -- + -- CA2 output control + -- + --------------------------------- + ca2_output : PROCESS (clk, rst, porta_ctrl, porta_read, ca1_edge, ca2_out) + BEGIN + IF rst = '1' THEN + ca2_out <= '0'; + ELSIF clk'EVENT AND clk = '0' THEN + CASE porta_ctrl(5 DOWNTO 3) IS + WHEN "100" => -- read PA clears, CA1 edge sets + IF porta_read = '1' THEN + ca2_out <= '0'; + ELSIF ca1_edge = '1' THEN + ca2_out <= '1'; + ELSE + ca2_out <= ca2_out; + END IF; + WHEN "101" => -- read PA clears, E sets + ca2_out <= NOT porta_read; + WHEN "110" => -- set low + ca2_out <= '0'; + WHEN "111" => -- set high + ca2_out <= '1'; + WHEN OTHERS => -- no change + ca2_out <= ca2_out; + END CASE; + END IF; + END PROCESS; ---------------------------------- --- --- CA2 output control --- ---------------------------------- -ca2_output : process( clk, rst, porta_ctrl, porta_read, ca1_edge, ca2_out ) -begin - if rst='1' then - ca2_out <= '0'; - elsif clk'event and clk='0' then - case porta_ctrl(5 downto 3) is - when "100" => -- read PA clears, CA1 edge sets - if porta_read = '1' then - ca2_out <= '0'; - elsif ca1_edge = '1' then - ca2_out <= '1'; - else - ca2_out <= ca2_out; - end if; - when "101" => -- read PA clears, E sets - ca2_out <= not porta_read; - when "110" => -- set low - ca2_out <= '0'; - when "111" => -- set high - ca2_out <= '1'; - when others => -- no change - ca2_out <= ca2_out; - end case; - end if; -end process; + --------------------------------- + -- + -- CA2 direction control + -- + --------------------------------- + ca2_direction : PROCESS (porta_ctrl, ca2_out) + BEGIN + IF porta_ctrl(5) = '0' THEN + ca2_oe <= '0'; + ca2_o <= '0'; + ELSE + ca2_o <= ca2_out; + ca2_oe <= '1'; + END IF; + END PROCESS; ---------------------------------- --- --- CA2 direction control --- ---------------------------------- -ca2_direction : process( porta_ctrl, ca2_out ) -begin - if porta_ctrl(5) = '0' then - ca2_oe <= '0'; - ca2_o <= '0'; - else - ca2_o <= ca2_out; - ca2_oe <= '1'; - end if; -end process; + --------------------------------- + -- + -- direction control port b + -- + --------------------------------- + portb_direction : PROCESS (portb_data, portb_ddr) + VARIABLE count : INTEGER; + BEGIN + FOR count IN 0 TO 7 LOOP + IF portb_ddr(count) = '1' THEN + pb_o(count) <= portb_data(count); + pb_oe(count) <= '1'; + ELSE + pb_o(count) <= '0'; + pb_oe(count) <= '0'; + END IF; + END LOOP; + END PROCESS; ---------------------------------- --- --- direction control port b --- ---------------------------------- -portb_direction : process ( portb_data, portb_ddr ) -variable count : integer; -begin - for count in 0 to 7 loop - if portb_ddr(count) = '1' then - pb_o(count) <= portb_data(count); - pb_oe(count) <= '1'; - else - pb_o(count) <= '0'; - pb_oe(count) <= '0'; - end if; - end loop; -end process; + --------------------------------- + -- + -- CB1 Edge detect + -- + --------------------------------- + cb1_input : PROCESS (clk, rst, cb1, cb1_del, + cb1_rise, cb1_fall, cb1_edge, + irqb1, portb_ctrl, portb_read) + BEGIN + IF rst = '1' THEN + cb1_del <= '0'; + cb1_rise <= '0'; + cb1_fall <= '0'; + cb1_edge <= '0'; + irqb1 <= '0'; + ELSIF clk'EVENT AND clk = '0' THEN + cb1_del <= cb1; + cb1_rise <= (NOT cb1_del) AND cb1; + cb1_fall <= cb1_del AND (NOT cb1); + IF cb1_edge = '1' THEN + irqb1 <= '1'; + ELSIF portb_read = '1' THEN + irqb1 <= '0'; + ELSE + irqb1 <= irqb1; + END IF; + END IF; + + IF portb_ctrl(1) = '0' THEN + cb1_edge <= cb1_fall; + ELSE + cb1_edge <= cb1_rise; + END IF; + END PROCESS; ---------------------------------- --- --- CB1 Edge detect --- ---------------------------------- -cb1_input : process( clk, rst, cb1, cb1_del, - cb1_rise, cb1_fall, cb1_edge, - irqb1, portb_ctrl, portb_read ) -begin - if rst = '1' then - cb1_del <= '0'; - cb1_rise <= '0'; - cb1_fall <= '0'; - cb1_edge <= '0'; - irqb1 <= '0'; - elsif clk'event and clk = '0' then - cb1_del <= cb1; - cb1_rise <= (not cb1_del) and cb1; - cb1_fall <= cb1_del and (not cb1); - if cb1_edge = '1' then - irqb1 <= '1'; - elsif portb_read = '1' then - irqb1 <= '0'; - else - irqb1 <= irqb1; - end if; - end if; - - if portb_ctrl(1) = '0' then - cb1_edge <= cb1_fall; - else - cb1_edge <= cb1_rise; - end if; -end process; + --------------------------------- + -- + -- CB2 Edge detect + -- + --------------------------------- + cb2_input : PROCESS (clk, rst, cb2_i, cb2_del, + cb2_rise, cb2_fall, cb2_edge, + irqb2, portb_ctrl, portb_read) + BEGIN + IF rst = '1' THEN + cb2_del <= '0'; + cb2_rise <= '0'; + cb2_fall <= '0'; + cb2_edge <= '0'; + irqb2 <= '0'; + ELSIF clk'EVENT AND clk = '0' THEN + cb2_del <= cb2_i; + cb2_rise <= (NOT cb2_del) AND cb2_i; + cb2_fall <= cb2_del AND (NOT cb2_i); + IF portb_ctrl(5) = '0' AND cb2_edge = '1' THEN + irqb2 <= '1'; + ELSIF portb_read = '1' THEN + irqb2 <= '0'; + ELSE + irqb2 <= irqb2; + END IF; + END IF; + + IF portb_ctrl(4) = '0' THEN + cb2_edge <= cb2_fall; + ELSE + cb2_edge <= cb2_rise; + END IF; ---------------------------------- --- --- CB2 Edge detect --- ---------------------------------- -cb2_input : process( clk, rst, cb2_i, cb2_del, - cb2_rise, cb2_fall, cb2_edge, - irqb2, portb_ctrl, portb_read ) -begin - if rst = '1' then - cb2_del <= '0'; - cb2_rise <= '0'; - cb2_fall <= '0'; - cb2_edge <= '0'; - irqb2 <= '0'; - elsif clk'event and clk = '0' then - cb2_del <= cb2_i; - cb2_rise <= (not cb2_del) and cb2_i; - cb2_fall <= cb2_del and (not cb2_i); - if portb_ctrl(5) = '0' and cb2_edge = '1' then - irqb2 <= '1'; - elsif portb_read = '1' then - irqb2 <= '0'; - else - irqb2 <= irqb2; - end if; - end if; - - if portb_ctrl(4) = '0' then - cb2_edge <= cb2_fall; - else - cb2_edge <= cb2_rise; - end if; + END PROCESS; -end process; + --------------------------------- + -- + -- CB2 output control + -- + --------------------------------- + cb2_output : PROCESS (clk, rst, portb_ctrl, portb_write, cb1_edge, cb2_out) + BEGIN + IF rst = '1' THEN + cb2_out <= '0'; + ELSIF clk'EVENT AND clk = '0' THEN + CASE portb_ctrl(5 DOWNTO 3) IS + WHEN "100" => -- write PB clears, CA1 edge sets + IF portb_write = '1' THEN + cb2_out <= '0'; + ELSIF cb1_edge = '1' THEN + cb2_out <= '1'; + ELSE + cb2_out <= cb2_out; + END IF; + WHEN "101" => -- write PB clears, E sets + cb2_out <= NOT portb_write; + WHEN "110" => -- set low + cb2_out <= '0'; + WHEN "111" => -- set high + cb2_out <= '1'; + WHEN OTHERS => -- no change + cb2_out <= cb2_out; + END CASE; + END IF; + END PROCESS; ---------------------------------- --- --- CB2 output control --- ---------------------------------- -cb2_output : process( clk, rst, portb_ctrl, portb_write, cb1_edge, cb2_out ) -begin - if rst='1' then - cb2_out <= '0'; - elsif clk'event and clk='0' then - case portb_ctrl(5 downto 3) is - when "100" => -- write PB clears, CA1 edge sets - if portb_write = '1' then - cb2_out <= '0'; - elsif cb1_edge = '1' then - cb2_out <= '1'; - else - cb2_out <= cb2_out; - end if; - when "101" => -- write PB clears, E sets - cb2_out <= not portb_write; - when "110" => -- set low - cb2_out <= '0'; - when "111" => -- set high - cb2_out <= '1'; - when others => -- no change - cb2_out <= cb2_out; - end case; - end if; -end process; + --------------------------------- + -- + -- CB2 direction control + -- + --------------------------------- + cb2_direction : PROCESS (portb_ctrl, cb2_out) + BEGIN + IF portb_ctrl(5) = '0' THEN + cb2_oe <= '0'; + cb2_o <= '0'; + ELSE + cb2_o <= cb2_out; + cb2_oe <= '1'; + END IF; + END PROCESS; ---------------------------------- --- --- CB2 direction control --- ---------------------------------- -cb2_direction : process( portb_ctrl, cb2_out ) -begin - if portb_ctrl(5) = '0' then - cb2_oe <= '0'; - cb2_o <= '0'; - else - cb2_o <= cb2_out; - cb2_oe <= '1'; - end if; -end process; + --------------------------------- + -- + -- IRQ control + -- + --------------------------------- + pia_irq : PROCESS (irqa1, irqa2, irqb1, irqb2, porta_ctrl, portb_ctrl) + BEGIN + irqa <= (irqa1 AND porta_ctrl(0)) OR (irqa2 AND porta_ctrl(3)); + irqb <= (irqb1 AND portb_ctrl(0)) OR (irqb2 AND portb_ctrl(3)); + END PROCESS; ---------------------------------- --- --- IRQ control --- ---------------------------------- -pia_irq : process( irqa1, irqa2, irqb1, irqb2, porta_ctrl, portb_ctrl ) -begin - irqa <= (irqa1 and porta_ctrl(0)) or (irqa2 and porta_ctrl(3)); - irqb <= (irqb1 and portb_ctrl(0)) or (irqb2 and portb_ctrl(3)); -end process; - -end pia_arch; - +END pia_arch;