From e03b1a04f1769aaf2a287082c5c0073b34ea6b73 Mon Sep 17 00:00:00 2001 From: Gyorgy Szombathelyi Date: Mon, 17 Oct 2022 00:38:36 +0200 Subject: [PATCH 1/4] MissileCommand: some final polishing --- Arcade_MiST/Atari MissileCommand/MissileC.qsf | 32 +- Arcade_MiST/Atari MissileCommand/MissileC.rbf | Bin 255640 -> 0 bytes Arcade_MiST/Atari MissileCommand/MissileC.sdc | 126 ++++++++ .../rtl/MissileCommand_MiST.sv | 149 +++++++--- .../Atari MissileCommand/rtl/missile.v | 102 +++---- .../Atari MissileCommand/rtl/rom/rom1.vhd | 278 ------------------ .../Atari MissileCommand/rtl/rom/rom2.vhd | 278 ------------------ .../Atari MissileCommand/rtl/rom/rom3.vhd | 278 ------------------ 8 files changed, 284 insertions(+), 959 deletions(-) delete mode 100644 Arcade_MiST/Atari MissileCommand/MissileC.rbf create mode 100644 Arcade_MiST/Atari MissileCommand/MissileC.sdc delete mode 100644 Arcade_MiST/Atari MissileCommand/rtl/rom/rom1.vhd delete mode 100644 Arcade_MiST/Atari MissileCommand/rtl/rom/rom2.vhd delete mode 100644 Arcade_MiST/Atari MissileCommand/rtl/rom/rom3.vhd 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 984312f9d2a398e7e876edd446fdb76b21d34402..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 255640 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

&bcS6yBqJw&fsNCb~o;7?e=h2CQw7?&eoyn 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 i{#lRxi4pd%}Pv0FNa=&`pS(<9yH;7 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 EAL$Lv<^TWy 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; From 34cc39fc872355dbe9cc08a089a078121eae2bab Mon Sep 17 00:00:00 2001 From: Gyorgy Szombathelyi Date: Tue, 18 Oct 2022 11:51:25 +0200 Subject: [PATCH 2/4] PIA6821: run through VHDLformatter --- common/IO/pia6821.vhd | 984 +++++++++++++++++++++--------------------- 1 file changed, 491 insertions(+), 493 deletions(-) diff --git a/common/IO/pia6821.vhd b/common/IO/pia6821.vhd index d565ae36..49152452 100644 --- a/common/IO/pia6821.vhd +++ b/common/IO/pia6821.vhd @@ -1,34 +1,34 @@ --===========================================================================-- -- --- 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) -- --===========================================================================---- @@ -41,513 +41,511 @@ -- 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 + 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'; -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; From efa81db65b1ab5d96b4e69d3e126ec19ed15d969 Mon Sep 17 00:00:00 2001 From: Gyorgy Szombathelyi Date: Tue, 18 Oct 2022 12:51:20 +0200 Subject: [PATCH 3/4] PIA6821: always read the input for port A Feedback of the output can be applied externally --- common/IO/pia6821.vhd | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/common/IO/pia6821.vhd b/common/IO/pia6821.vhd index 49152452..7c3787b9 100644 --- a/common/IO/pia6821.vhd +++ b/common/IO/pia6821.vhd @@ -31,6 +31,14 @@ -- 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 @@ -134,11 +142,7 @@ BEGIN 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; + data_out(count) <= pa_i(count); porta_read <= cs; END IF; END LOOP; From d27f0370c07815882a329e48e05ccda729c32121 Mon Sep 17 00:00:00 2001 From: Gyorgy Szombathelyi Date: Tue, 18 Oct 2022 18:27:51 +0200 Subject: [PATCH 4/4] Williams2: fix the PIA for Inferno sound ...instead of a hack --- .../Williams 6809 rev.2 Hardware/rtl/tshoot_sound_board.vhd | 6 ++---- Arcade_MiST/Williams 6809 rev.2 Hardware/rtl/williams2.vhd | 1 - 2 files changed, 2 insertions(+), 5 deletions(-) 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,