From 9b907e90d7b64d874b4e1a6678b75305f1945518 Mon Sep 17 00:00:00 2001 From: Gyorgy Szombathelyi Date: Wed, 7 Apr 2021 01:57:40 +0200 Subject: [PATCH] Enhance Centipede - Fully synchronous - High score saves - Millipede mod --- .../{Centipede.qpf => Centiped.qpf} | 2 +- .../{Centipede.qsf => Centiped.qsf} | 10 +- .../{Centipede.sdc => Centiped.sdc} | 12 +- .../Centipede_MiST/README.txt | 31 +- .../meta/Centipede (revision 4).mra | 38 + .../Centipede_MiST/meta/Centipede.mra | 37 + .../Centipede_MiST/meta/Millipede.mra | 33 + .../Centipede_MiST/rtl/Centipede_MiST.sv | 88 +- .../Centipede_MiST/rtl/centipede.v | 1011 ++++++++++------- .../Centipede_MiST/rtl/dpram.vhd | 5 + .../Centipede_MiST/rtl/pf_ram.v | 16 +- .../Centipede_MiST/rtl/roms/F7.vhd | 150 --- .../Centipede_MiST/rtl/roms/HJ7.vhd | 150 --- .../Centipede_MiST/rtl/roms/P4.vhd | 38 - .../Centipede_MiST/rtl/roms/PROG.vhd | 534 --------- 15 files changed, 791 insertions(+), 1364 deletions(-) rename Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/{Centipede.qpf => Centiped.qpf} (97%) rename Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/{Centipede.qsf => Centiped.qsf} (96%) rename Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/{Centipede.sdc => Centiped.sdc} (87%) create mode 100644 Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/meta/Centipede (revision 4).mra create mode 100644 Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/meta/Centipede.mra create mode 100644 Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/meta/Millipede.mra delete mode 100644 Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/rtl/roms/F7.vhd delete mode 100644 Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/rtl/roms/HJ7.vhd delete mode 100644 Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/rtl/roms/P4.vhd delete mode 100644 Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/rtl/roms/PROG.vhd diff --git a/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/Centipede.qpf b/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/Centiped.qpf similarity index 97% rename from Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/Centipede.qpf rename to Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/Centiped.qpf index bbd04726..81af7a3d 100644 --- a/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/Centipede.qpf +++ b/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/Centiped.qpf @@ -27,4 +27,4 @@ DATE = "14:59:16 November 16, 2017" # Revisions -PROJECT_REVISION = "Centipede" \ No newline at end of file +PROJECT_REVISION = "Centiped" \ No newline at end of file diff --git a/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/Centipede.qsf b/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/Centiped.qsf similarity index 96% rename from Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/Centipede.qsf rename to Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/Centiped.qsf index 6968eb00..41271f8d 100644 --- a/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/Centipede.qsf +++ b/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/Centiped.qsf @@ -145,21 +145,17 @@ set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" - set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top +set_global_assignment -name ENABLE_SIGNALTAP OFF +set_global_assignment -name USE_SIGNALTAP_FILE output_files/cent.stp set_global_assignment -name SYSTEMVERILOG_FILE rtl/Centipede_MiST.sv set_global_assignment -name VERILOG_FILE rtl/centipede.v set_global_assignment -name VERILOG_FILE rtl/pf_ram.v -set_global_assignment -name VHDL_FILE rtl/roms/F7.vhd -set_global_assignment -name VHDL_FILE rtl/roms/HJ7.vhd -set_global_assignment -name VHDL_FILE rtl/roms/PROG.vhd -set_global_assignment -name VHDL_FILE rtl/roms/P4.vhd set_global_assignment -name VHDL_FILE rtl/spram.vhd set_global_assignment -name VHDL_FILE rtl/dpram.vhd set_global_assignment -name VHDL_FILE rtl/pll.vhd -set_global_assignment -name QIP_FILE ../../../common/mist/mist.qip set_global_assignment -name SYSTEMVERILOG_FILE rtl/POKEY.sv set_global_assignment -name SYSTEMVERILOG_FILE rtl/matoro.sv +set_global_assignment -name QIP_FILE ../../../common/mist/mist.qip set_global_assignment -name QIP_FILE ../../../common/CPU/T65/T65.qip -set_global_assignment -name ENABLE_SIGNALTAP OFF -set_global_assignment -name USE_SIGNALTAP_FILE output_files/cent.stp set_global_assignment -name SIGNALTAP_FILE output_files/cent.stp set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top \ No newline at end of file diff --git a/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/Centipede.sdc b/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/Centiped.sdc similarity index 87% rename from Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/Centipede.sdc rename to Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/Centiped.sdc index 1d0f7c84..69dc312a 100644 --- a/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/Centipede.sdc +++ b/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/Centiped.sdc @@ -72,12 +72,12 @@ create_clock -name {SPI_SCK} -period 41.666 -waveform { 20.8 41.666 } [get_port # 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_input_delay -add_delay -clock [get_clocks {CLOCK_27}] 1.000 [get_ports {CLOCK_27}] +set_input_delay -add_delay -clock [get_clocks {SPI_SCK}] 1.000 [get_ports {CONF_DATA0}] +set_input_delay -add_delay -clock [get_clocks {SPI_SCK}] 1.000 [get_ports {SPI_DI}] +set_input_delay -add_delay -clock [get_clocks {SPI_SCK}] 1.000 [get_ports {SPI_SCK}] +set_input_delay -add_delay -clock [get_clocks {SPI_SCK}] 1.000 [get_ports {SPI_SS2}] +set_input_delay -add_delay -clock [get_clocks {SPI_SCK}] 1.000 [get_ports {SPI_SS3}] #************************************************************** # Set Output Delay diff --git a/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/README.txt b/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/README.txt index 126df0b2..be27738e 100644 --- a/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/README.txt +++ b/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/README.txt @@ -1,15 +1,28 @@ Arcade: Centipede port to MiST by Gehstock 24 November 2018 --- --- - Only controls and OSD are rotated on Video output. +Millipede added by Gyorgy Szombathelyi - Keyboard inputs : +April 2021 - ESC : Coin/Start Player --- - SPACE : Fire or Fire Button --- - ARROW KEYS : Movements \ No newline at end of file +-- +-- +-- Usage: +-- - Create ROM and ARC files from the MRA files using the MRA utility. +-- Example: mra -A -z /path/to/mame/roms Centipede.mra +-- - Copy the ROM files to the root of the SD Card +-- - Copy the RBF and ARC files to the same folder on the SD Card +-- +-- MRA utility: https://github.com/sebdel/mra-tools-c/ +-- + +-- Only controls and OSD are rotated on Video output. + +-- Keyboard inputs : + +-- ESC : Coin/Start Player +-- +-- CTRL : Fire or Fire Button +-- +-- ARROW KEYS : Movements \ No newline at end of file diff --git a/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/meta/Centipede (revision 4).mra b/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/meta/Centipede (revision 4).mra new file mode 100644 index 00000000..90f3d924 --- /dev/null +++ b/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/meta/Centipede (revision 4).mra @@ -0,0 +1,38 @@ + + Centipede (revision 4) + 0220 + centiped + 20200430141713 + 1980 + Atari + Maze / Bugs + Maze / Centipede + Maze / Spiders + centiped + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/meta/Centipede.mra b/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/meta/Centipede.mra new file mode 100644 index 00000000..9b7a0dcc --- /dev/null +++ b/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/meta/Centipede.mra @@ -0,0 +1,37 @@ + + Centipede (revision 3) + 0218 + centiped3 + 20200225084106 + 1980 + Atari + Maze / Bugs + Maze / Centipede + Maze / Spiders + centiped + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/meta/Millipede.mra b/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/meta/Millipede.mra new file mode 100644 index 00000000..52decf04 --- /dev/null +++ b/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/meta/Millipede.mra @@ -0,0 +1,33 @@ + + Millipede + 0218 + milliped + 20200225084106 + 1980 + Atari + Maze / Bugs + Maze / Centipede + Maze / Spiders + centiped + + + + + + + 1 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/rtl/Centipede_MiST.sv b/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/rtl/Centipede_MiST.sv index 8929dc6a..e4e2a64f 100644 --- a/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/rtl/Centipede_MiST.sv +++ b/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/rtl/Centipede_MiST.sv @@ -40,16 +40,13 @@ module Centipede_MiST `include "rtl\build_id.v" localparam CONF_STR = { - "Centipede;;", + "CENTIPED;;", "O2,Rotate Controls,Off,On;", "O34,Scanlines,Off,25%,50%,75%;", "O5,Blend,Off,On;", "O7,Test,Off,On;", - "O89,Language,English,German,French,Spanish;", - "OAB,Lives,2,3,4,5;", - "OCD,Bonus Life,10000,12000,15000,20000;", - "OE,Difficulty,Hard,Easy;", - "OF,Credit minimum,1,2;", + "DIP;", + "R64,Save highscores;", "T0,Reset;", "V,v1.50.",`BUILD_DATE }; @@ -60,11 +57,13 @@ wire blend = status[5]; wire joyswap = status[6]; wire service = status[7]; +wire milliped = core_mod[0]; + wire [15:0] dipsw; assign dipsw[ 7:0] = status[15:8]; assign dipsw[15:8] = 8'h01; -assign LED = 1; +assign LED = ~(ioctl_downl | ioctl_upl); assign AUDIO_R = AUDIO_L; wire clk_24, clk_12, clk_100mhz; @@ -76,29 +75,55 @@ pll pll( .c2(clk_12), .c4(clk_100mhz) ); - + wire [31:0] status; wire [1:0] buttons; wire [1:0] switches; wire [7:0] joystick_0; wire [7:0] joystick_1; wire scandoublerD; +wire [7:0] core_mod; wire ypbpr; wire no_csync; wire key_pressed; wire [7:0] key_code; wire key_strobe; -wire [7:0] RGB; +wire [7:0] RGB; wire hs, vs, vb, hb; -reg blankn; +wire blankn = ~(hb | vb); wire [3:0] audio; -always @(posedge clk_12) blankn <= ~(hb | vb); +wire ioctl_downl; +wire ioctl_upl; +wire [7:0] ioctl_index; +wire ioctl_wr; +wire [24:0] ioctl_addr; +wire [7:0] ioctl_dout; +wire [7:0] ioctl_din; + +data_io data_io( + .clk_sys ( clk_12 ), + .SPI_SCK ( SPI_SCK ), + .SPI_SS2 ( SPI_SS2 ), + .SPI_DI ( SPI_DI ), + .SPI_DO ( SPI_DO ), + .ioctl_download( ioctl_downl ), + .ioctl_upload ( ioctl_upl ), + .ioctl_index ( ioctl_index ), + .ioctl_wr ( ioctl_wr ), + .ioctl_addr ( ioctl_addr ), + .ioctl_dout ( ioctl_dout ), + .ioctl_din ( ioctl_din ) +); + +reg reset; +always @(posedge clk_12) reset <= status[0] | buttons[1] | ioctl_downl; centipede centipede( .clk_100mhz(clk_100mhz), .clk_12mhz(clk_12), - .reset(status[0] | buttons[1]), + .reset(reset), + .milli(milliped), .playerinput_i(~{ 1'b0, 1'b0, m_coin1, service, 1'b0, 1'b0, m_two_players, m_one_player, m_fireB, m_fireA }), .trakball_i(), .joystick_i(~{m_right , m_left, m_down, m_up, m_right , m_left, m_down, m_up}), @@ -109,17 +134,26 @@ centipede centipede( .vsync_o(vs), .hblank_o(hb), .vblank_o(vb), - .audio_o(audio) + .audio_o(audio), + // ROM download + .dl_addr(ioctl_addr[14:0]), + .dl_data(ioctl_dout), + .dl_we(ioctl_wr && ioctl_index == 0), + // High score table save-load + .hsram_addr(ioctl_addr[5:0]), + .hsram_dout(ioctl_din), + .hsram_din(ioctl_dout), + .hsram_we(ioctl_wr && ioctl_index == 8'hff) ); - + mist_video #(.COLOR_DEPTH(3), .SD_HCNT_WIDTH(10)) mist_video( .clk_sys ( clk_24 ), .SPI_SCK ( SPI_SCK ), .SPI_SS3 ( SPI_SS3 ), .SPI_DI ( SPI_DI ), - .R (blankn ? RGB[2:0] : 0), - .G (blankn ? RGB[5:3] : 0), - .B (blankn ? RGB[7:6] : 0), + .R (blankn ? RGB[2:0] : 0), + .G (blankn ? RGB[5:3] : 0), + .B (blankn ? RGB[7:6] : 0), .HSync ( hs ), .VSync ( vs ), .VGA_R ( VGA_R ), @@ -127,14 +161,15 @@ mist_video #(.COLOR_DEPTH(3), .SD_HCNT_WIDTH(10)) mist_video( .VGA_B ( VGA_B ), .VGA_VS ( VGA_VS ), .VGA_HS ( VGA_HS ), + .scanlines ( scanlines ), .rotate ( { 1'b0, rotate } ), .ce_divider ( 1'b1 ), .blend ( blend ), .scandoubler_disable(scandoublerD ), .no_csync ( no_csync ), .ypbpr ( ypbpr ) - ); - + ); + user_io #( .STRLEN(($size(CONF_STR)>>3))) user_io( @@ -146,17 +181,18 @@ user_io( .SPI_MOSI (SPI_DI ), .buttons (buttons ), .switches (switches ), - .scandoubler_disable (scandoublerD ), + .scandoubler_disable (scandoublerD ), .ypbpr (ypbpr ), .no_csync (no_csync ), + .core_mod (core_mod ), .key_strobe (key_strobe ), .key_pressed (key_pressed ), .key_code (key_code ), .joystick_0 (joystick_0 ), .joystick_1 (joystick_1 ), .status (status ) - ); - + ); + dac #( .C_bits(15)) dac ( @@ -165,7 +201,7 @@ dac ( .dac_i({2{audio,audio}}), .dac_o(AUDIO_L) ); - + wire m_up, m_down, m_left, m_right, m_fireA, m_fireB, m_fireC, m_fireD, m_fireE, m_fireF; wire m_up2, m_down2, m_left2, m_right2, m_fire2A, m_fire2B, m_fire2C, m_fire2D, m_fire2E, m_fire2F; wire m_tilt, m_coin1, m_coin2, m_coin3, m_coin4, m_one_player, m_two_players, m_three_players, m_four_players; @@ -178,12 +214,12 @@ arcade_inputs inputs ( .joystick_0 ( joystick_0 ), .joystick_1 ( joystick_1 ), .rotate ( rotate ), - .orientation ( 2'b01 ), + .orientation ( 2'b01 ), .joyswap ( joyswap ), - .oneplayer ( 1'b1 ), + .oneplayer ( 1'b1 ), .controls ( {m_tilt, m_coin4, m_coin3, m_coin2, m_coin1, m_four_players, m_three_players, m_two_players, m_one_player} ), .player1 ( {m_fireF, m_fireE, m_fireD, m_fireC, m_fireB, m_fireA, m_up, m_down, m_left, m_right} ), .player2 ( {m_fire2F, m_fire2E, m_fire2D, m_fire2C, m_fire2B, m_fire2A, m_up2, m_down2, m_left2, m_right2} ) -); +); endmodule diff --git a/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/rtl/centipede.v b/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/rtl/centipede.v index 541a2069..67f79219 100644 --- a/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/rtl/centipede.v +++ b/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/rtl/centipede.v @@ -14,11 +14,17 @@ // The game code also relies on the pokey's random number generation working correctly and caused me to // do some debugging of the pokey code I was using. // Edit: Changed 2018 Gehstock +// +// György Szombathelyi 04/2021 +// - Made it synchronous (still left some combinatorial async resets for an exercise to the reader) +// - Fixed the high score RAM +// - Added Millipede module centipede( input clk_100mhz, input clk_12mhz, input reset, + input milli, input [9:0] playerinput_i, input [7:0] trakball_i, input [7:0] joystick_i, @@ -31,7 +37,16 @@ module centipede( output vsync_o, output hblank_o, output vblank_o, - output [3:0] audio_o + output [3:0] audio_o, + + input [14:0] dl_addr, + input [7:0] dl_data, + input dl_we, + + input [5:0] hsram_addr, + output [7:0] hsram_dout, + input [7:0] hsram_din, + input hsram_we ); // @@ -44,16 +59,16 @@ module centipede( reg phi0a; // - wire rom_n; - wire ram0_n; - wire steerclr_n, watchdog_n, out0_n, irqres_n; - wire pokey_n, pokey2_n, swrd_n, pf_n; - wire coloram_n, ea_read_n, ea_ctrl_n, ea_addr_n; - wire in0_n, in1_n; + reg rom_n; + reg ram0_n; + reg steerclr_n, watchdog_n, out0_n, irqres_n; + reg pokey_n, pokey2_n, swrd_n, pf_n; + reg coloram_n, ea_read_n, ea_ctrl_n, ea_addr_n; + reg in0_n, in1_n; - wire pframrd_n; - wire pfwr3_n, pfwr2_n, pfwr1_n, pfwr0_n; - wire pfrd3_n, pfrd2_n, pfrd1_n, pfrd0_n; + reg pframrd_n; + reg pfwr3_n, pfwr2_n, pfwr1_n, pfwr0_n; + reg pfrd3_n, pfrd2_n, pfrd1_n, pfrd0_n; wire [9:0] adecode; wire pac_n; @@ -92,13 +107,13 @@ module centipede( wire s_4h_n_en; wire s_256hd_n; wire s_256h2d_n; - wire vblankd_n; + wire vblankd_n; wire s_6_12; - - reg s_256h2d; - reg s_256hd; - reg vblankd; - + + reg s_256h2d; + reg s_256hd; + reg vblankd; + wire pload_n; wire write_n; wire brw_n; @@ -125,15 +140,15 @@ module centipede( wire pf_addr_stamp; wire [31:0] pfd; - reg [29:16] pfd_hold; - reg [29:16] pfd_hold2; + reg [31:16] pfd_hold; + reg [31:16] pfd_hold2; reg [1:0] gry; wire [1:0] y; reg [1:0] mr; wire [7:0] line_ram_addr; - reg [1:0] line_ram[0:255]; + reg [3:0] line_ram[0:255]; reg [7:0] line_ram_ctr; wire line_ram_ctr_load; wire line_ram_ctr_clr; @@ -147,7 +162,7 @@ module centipede( wire [7:0] pf_rom1_out, pf_rom0_out; wire [7:0] pf_rom1_out_rev, pf_rom0_out_rev; - reg [7:0] pic; + reg [7:0] pic, picD; // @@ -160,22 +175,14 @@ module centipede( reg hs; wire hs_set; - wire hs_addr_clk; - wire hs_ctrl_clk; - // wire comp_sync; - reg [3:0] rgbi; - wire [3:0] coloram_out; - wire [3:0] coloram_rgbi; + reg [7:0] rgbi; + wire [7:0] coloram_out; + wire [7:0] coloram_rgbi; wire coloram_w_n; reg coloren; - wire [1:0] rama_sel; - wire [1:0] rama_hi; - wire [1:0] rama_lo; - wire [3:0] rama; - wire [3:0] audio; // wire mob_n; @@ -189,17 +196,19 @@ module centipede( wire [7:0] switch_out; wire flip; + wire cntrlsel; wire coin_ctr_r_drive, coin_ctr_c_drive, coin_ctr_l_drive; wire [7:0] playerin_out; wire [7:0] pokey_out; + wire [7:0] pokey2_out; reg [11:0] h_counter; reg [7:0] v_counter; wire v_counter_reset; initial h_counter = 0; - always @(posedge s_12mhz or posedge reset) + always @(posedge s_12mhz) if (reset) h_counter <= 0; else @@ -239,7 +248,7 @@ module centipede( assign v_counter_reset = reset | ~vreset == 0; - always @(posedge s_12mhz or posedge reset) + always @(posedge s_12mhz) if (reset) v_counter <= 0; else if (s_256h_n_en) @@ -254,77 +263,127 @@ module centipede( assign s_4v = v_counter[2]; assign s_8v = v_counter[3]; assign s_16v = v_counter[4]; - assign s_16v_en = s_256h_n_en & v_counter[4:0] == 5'b01111; + assign s_16v_en = s_256h_n_en & v_counter[4:0] == 5'b01111; assign s_32v = v_counter[5]; assign s_64v = v_counter[6]; assign s_128v = v_counter[7]; + assign mob_n = ~((s_256h_n & s_256hd) | (s_256h2d_n & s_256hd)) | milli; + + assign blank_clk = ~s_12mhz & (h_counter[3:0] == 4'b1111); + + always @(posedge s_12mhz) + if (reset) + begin + s_256h2d <= 1'b0; + s_256hd <= 1'b0; + vblankd <= 1'b0; + end + else if (h_counter[3:0] == 4'b1111) + begin + s_256h2d <= s_256hd; + s_256hd <= s_256h; + vblankd <= vblank; + end + + assign s_256h2d_n = ~s_256h2d; + assign s_256hd_n = ~s_256hd; + assign vblankd_n = ~vblankd; assign vprom_addr = {vblank, s_128v, s_64v, s_32v, s_8v, s_4v, s_2v, s_1v}; -P4 P4( - .clk(s_12mhz), - .addr(vprom_addr), - .data(vprom_out) - ); + dpram #( + .addr_width_g(8), + .data_width_g(4)) + P4( + .clk_a_i(s_12mhz), + .clk_b_i(s_12mhz), + .we_i(1'b0), + .addr_a_i(vprom_addr), + .data_a_o(vprom_out), + .data_a_i(), + .addr_b_i(dl_addr[7:0]), + .data_b_o(), + .data_b_i(dl_data[3:0]), + .we_b_i(dl_we && dl_addr[14:8] == 7'b1010000) + ); -always @(posedge s_12mhz or posedge reset) + always @(posedge s_12mhz) if (reset) vprom_reg <= 0; - else if (s_256h_n_en) - vprom_reg <= vprom_out; + else if (s_256h_n_en) + vprom_reg <= vprom_out; -assign vsync = vprom_reg[0]; -assign vreset = vprom_reg[2]; -assign hs_set = reset | ~s_256h_n; + assign vsync = vprom_reg[0]; + assign vreset = vprom_reg[2]; + assign hs_set = reset | ~s_256h_n; -always @(posedge s_12mhz or posedge hs_set) - if (hs_set) - hs <= 1; - else if (s_32h_en) - hs <= s_64h; + always @(posedge s_12mhz or posedge hs_set) + if (hs_set) + hs <= 1; + else if (s_32h_en) + hs <= s_64h; -assign hsync_reset = reset | hs; + assign hsync_reset = reset | hs; -always @(posedge s_12mhz or posedge hsync_reset) - if (hsync_reset) - hsync <= 0; - else if (s_8h_en) - hsync <= s_32h; + always @(posedge s_12mhz or posedge hsync_reset) + if (hsync_reset) + hsync <= 0; + else if (s_8h_en) + hsync <= s_32h; -always @(posedge s_12mhz) - if (reset) + always @(posedge s_12mhz) + if (reset) coloren <= 0; else if (s_6mhz_en) coloren <= s_256hd; -assign s_6_12 = ~(s_6mhz & s_12mhz); -reg xxx1; + assign s_6_12 = ~(s_6mhz & s_12mhz); + reg xxx1; -always @(posedge s_12mhz)//s_6_12) - if (reset) - xxx1 <= 0; - else if (s_6mhz_en) - xxx1 <= coloren; + always @(posedge s_12mhz)//s_6_12) + if (reset) + xxx1 <= 0; + else if (s_6mhz_en) + xxx1 <= coloren; -assign vblank = vprom_reg[3]; -assign hblank = ~(xxx1 | coloren); + reg hblank1_n; + always @(posedge s_12mhz) + if (reset) + hblank1_n <= 0; + else if (s_6mhz_n_en) + hblank1_n <= s_256hd; -PROG PROG ( - .clk(s_12mhz), - .addr(ab[12:0]), - .data(rom_out[7:0]) - ); - -spram #( - .addr_width_g(10), - .data_width_g(8)) -ram( - .address(ab[9:0]), - .clock(s_12mhz), - .wren(~write_n & ~ram0_n), - .data(db_out[7:0]), - .q(ram_out[7:0]) - ); + + assign vblank = vprom_reg[3]; + //assign hblank = ~(xxx1 | coloren); + assign hblank = ~hblank1_n; + + dpram #( + .addr_width_g(14), + .data_width_g(8)) + PROG( + .clk_a_i(s_12mhz), + .clk_b_i(s_12mhz), + .we_i(1'b0), + .addr_a_i(ab[13:0]), + .data_a_o(rom_out[7:0]), + .data_a_i(), + .addr_b_i(dl_addr[13:0]), + .data_b_o(), + .data_b_i(dl_data), + .we_b_i(dl_we && !dl_addr[14]) + ); + + spram #( + .addr_width_g(10), + .data_width_g(8)) + ram( + .address(ab[9:0]), + .clock(s_12mhz), + .wren(~write_n & ~ram0_n), + .data(db_out[7:0]), + .q(ram_out[7:0]) + ); wire irq_n; @@ -339,7 +398,7 @@ ram( assign irq_n = irq; - always @(posedge s_12mhz or posedge reset) + always @(posedge s_12mhz) if (reset) phi0a <= 1'b0; else if (s_1h_en) @@ -366,33 +425,30 @@ ram( end assign mpu_clk = s_6mhz; - assign mpu_reset_n = ~mpu_reset; - -assign phi2 = ~phi0; -T65 T65( - .Mode("00"), - .Res_n(mpu_reset_n), - .Enable(phi0_en), - .Clk(s_12mhz), - .Rdy(1'b1), - .Abort_n(1'b1), - .IRQ_n(irq_n), - .NMI_n(1'b1), - .SO_n(1'b1), - .R_W_n(rw_n), - .A(ab), - .DI(db_in[7:0]), - .DO(db_out[7:0]) - ); + assign mpu_reset_n = ~mpu_reset; + assign phi2 = ~phi0; + T65 T65( + .Mode("00"), + .Res_n(mpu_reset_n), + .Enable(phi0_en), + .Clk(s_12mhz), + .Rdy(1'b1), + .Abort_n(1'b1), + .IRQ_n(irq_n), + .NMI_n(1'b1), + .SO_n(1'b1), + .R_W_n(rw_n), + .A(ab), + .DI(db_in[7:0]), + .DO(db_out[7:0]) + ); // Address Decoder assign write_n = ~(phi2 & ~rw_n); assign brw_n = ~rw_n; - assign rom_n = brw_n | ~ab[13]; - assign adecode = (ab[13:10] == 4'b0000) ? 10'b1111111110 : (ab[13:10] == 4'b0001) ? 10'b1111111101 : @@ -406,74 +462,283 @@ T65 T65( (ab[13:10] == 4'b1001) ? 10'b0111111111 : 10'b1111111111; -// assign write2_n = ~(s_6mhz & ~write_n); - reg write2_n; - always @(posedge s_12mhz) - if (reset) - write2_n <= 0; - else if (s_6mhz_en) - write2_n <= write_n; - - assign steerclr_n = adecode[9] | write2_n; - assign watchdog_n = adecode[8] | write2_n; - assign out0_n = adecode[7] | write2_n; - assign irqres_n = (adecode[6] | write2_n) & mpu_reset_n; + wire write2_n = ~(s_6mhz & ~write_n); - assign coloram_n = (adecode[5] | ab[9])/* | pac_n*/; + // For millipede + wire mos_n = ab[14:12] != 3'b000; + wire io_n = ab[14:12] != 3'b010; + wire inputs_n = {io_n, ab[11:10]} != 3'b000; + wire outputs_n = {io_n, ab[11:10]} != 3'b001; - assign pokey_n = adecode[4]; - assign pokey2_n = adecode[3]; + always @(*) begin + if (milli) begin + rom_n = brw_n | ~ab[14]; - assign in0_n = adecode[3] | ab[1]; - assign in1_n = adecode[3] | ~ab[1]; + steerclr_n = 1;//adecode[9] | write2_n; + + in0_n = {inputs_n, ab[5:4]} != 3'b000; + in1_n = {inputs_n, ab[5:4]} != 3'b001; + ea_read_n = {inputs_n, ab[5:4]} != 3'b011; - assign swrd_n = adecode[2]; - assign pf_n = adecode[1]; - assign ram0_n = adecode[0]; + swrd_n = 1;//adecode[2]; + pf_n = ab[14:12] != 3'b001; // _scram + ram0_n = {mos_n, ab[11:10]} != 3'b000; + pokey_n = {mos_n, ab[11:10]} != 3'b001; + pokey2_n = {mos_n, ab[11:10]} != 3'b010; + + coloram_n = {outputs_n | write_n, ab[9:7]} != 4'b0001; + out0_n = {outputs_n | write_n, ab[9:7]} != 4'b0010; + irqres_n = {outputs_n | write_n, ab[9:7]} != 4'b0100 & mpu_reset_n; + watchdog_n = {outputs_n | write_n, ab[9:7]} != 4'b0101; + ea_ctrl_n = {outputs_n | write_n, ab[9:7]} != 4'b0110; + ea_addr_n = {outputs_n | write_n, ab[9:7]} != 4'b0111; - assign {ea_read_n, ea_ctrl_n, ea_addr_n} = - ({~ab[9]|adecode[5], ab[8:7]} == 3'b000) ? 3'b110 : - ({~ab[9]|adecode[5], ab[8:7]} == 3'b001) ? 3'b101 : - ({~ab[9]|adecode[5], ab[8:7]} == 3'b010) ? 3'b011 : - 3'b111; - assign pframrd_n = pf_n | brw_n; + pframrd_n = pf_n | brw_n; - assign {pfwr3_n, pfwr2_n, pfwr1_n, pfwr0_n} = + {pfwr3_n, pfwr2_n, pfwr1_n, pfwr0_n} = ({pf_n, write_n, ab[5:4]} == 4'b0000) ? 4'b1110 : ({pf_n, write_n, ab[5:4]} == 4'b0001) ? 4'b1101 : ({pf_n, write_n, ab[5:4]} == 4'b0010) ? 4'b1011 : ({pf_n, write_n, ab[5:4]} == 4'b0011) ? 4'b0111 : 4'b1111; - assign {pfrd3_n, pfrd2_n, pfrd1_n, pfrd0_n} = + {pfrd3_n, pfrd2_n, pfrd1_n, pfrd0_n} = (ab[5:4] == 2'b00) ? 4'b1110 : (ab[5:4] == 2'b01) ? 4'b1101 : (ab[5:4] == 2'b10) ? 4'b1011 : (ab[5:4] == 2'b11) ? 4'b0111 : 4'b1111; + end else begin + rom_n = brw_n | ~ab[13]; + + steerclr_n = adecode[9] | write2_n; + watchdog_n = adecode[8] | write2_n; + out0_n = adecode[7] | write2_n; + irqres_n = (adecode[6] | write2_n) & mpu_reset_n; + + coloram_n = (adecode[5] | ab[9])/* | pac_n*/; + + pokey_n = adecode[4]; + pokey2_n = 1;// adecode[3]; + + in0_n = adecode[3] | ab[1]; + in1_n = adecode[3] | ~ab[1]; + + swrd_n = adecode[2]; + pf_n = adecode[1]; + ram0_n = adecode[0]; + + {ea_read_n, ea_ctrl_n, ea_addr_n} = + ({~ab[9]|adecode[5], ab[8:7]} == 3'b000) ? 3'b110 : + ({~ab[9]|adecode[5], ab[8:7]} == 3'b001) ? 3'b101 : + ({~ab[9]|adecode[5], ab[8:7]} == 3'b010) ? 3'b011 : + 3'b111; + pframrd_n = pf_n | brw_n; + + {pfwr3_n, pfwr2_n, pfwr1_n, pfwr0_n} = + ({pf_n, write_n, ab[5:4]} == 4'b0000) ? 4'b1110 : + ({pf_n, write_n, ab[5:4]} == 4'b0001) ? 4'b1101 : + ({pf_n, write_n, ab[5:4]} == 4'b0010) ? 4'b1011 : + ({pf_n, write_n, ab[5:4]} == 4'b0011) ? 4'b0111 : + 4'b1111; + + {pfrd3_n, pfrd2_n, pfrd1_n, pfrd0_n} = + (ab[5:4] == 2'b00) ? 4'b1110 : + (ab[5:4] == 2'b01) ? 4'b1101 : + (ab[5:4] == 2'b10) ? 4'b1011 : + (ab[5:4] == 2'b11) ? 4'b0111 : + 4'b1111; + end + end // - assign mob_n = ~((s_256h_n & s_256hd) | (s_256h2d_n & s_256hd)); + assign db_in = + ~rom_n ? rom_out : + ~ram0_n ? ram_out : + ~coloram_n ? coloram_out : + ~pframrd_n ? pf_out[7:0] : + ~ea_read_n ? hs_out : + ~in0_n ? playerin_out : + ~in1_n ? joystick_out : + ~swrd_n ? switch_out : + ~pokey_n ? pokey_out : + ~pokey2_n ? pokey2_out : + 8'b0; + // + // High Score Memory Circuitry - assign blank_clk = ~s_12mhz & (h_counter[3:0] == 4'b1111); + wire hs_addr_en = ~ea_addr_n & ~write2_n; + wire hs_ctrl_en = ~ea_ctrl_n & ~write2_n; - always @(posedge blank_clk or posedge reset) + always @(posedge s_12mhz) begin + if (hs_addr_en) begin + hs_addr <= ab[5:0]; + hs_data <= db_out[7:0]; + end + if (hs_ctrl_en) hs_ctrl <= db_out[3:0]; + end + + dpram #( + .addr_width_g(6), + .data_width_g(8)) + hs_ram( + .clk_a_i(s_12mhz), + .clk_b_i(s_12mhz), + .we_i(hs_ctrl[1] & ~hs_ctrl[2]), + .addr_a_i(hs_addr), + .data_a_o(hs_out), + .data_a_i(hs_data), + .addr_b_i(hsram_addr), + .data_b_o(hsram_dout), + .data_b_i(hsram_din), + .we_b_i(hsram_we) + ); + + // Joystick Circuitry + wire js1_right, js1_left, js1_down, js1_up; + wire js2_right, js2_left, js2_down, js2_up; + + assign js1_right = joystick_i[7]; + assign js1_left = joystick_i[6]; + assign js1_down = joystick_i[5]; + assign js1_up = joystick_i[4]; + assign js2_right = joystick_i[3]; + assign js2_left = joystick_i[2]; + assign js2_down = joystick_i[1]; + assign js2_up = joystick_i[0]; + + wire [7:0] joystick_out_centi = ab[0] ? + { js1_right, js1_left, js1_down, js1_up, js2_right, js2_left, js2_down, js2_up } : + { dir2, 3'b0, trb }; + + wire [7:0] joystick_out_milli = { + ab[0] ? { self_test, 1'b0, cocktail, 1'b1 } : { coin_r, coin_l, coin_c, slam }, + cntrlsel ? { js2_down, js2_up, js2_right, js2_left } : { js1_up, js1_down, js1_left, js1_right } }; + + assign joystick_out = milli ? joystick_out_milli : joystick_out_centi; + + // Option Input Circuitry + + assign switch_out = ab[0] ? + sw2_i : + sw1_i; + + // Player Input Circuitry + wire coin_r, coin_c, coin_l, self_test; + wire cocktail, slam, start1, start2, fire2, fire1; + + assign coin_r = coin_ctr_r_drive ? coin_ctr_r_drive : playerinput_i[9]; + assign coin_c = coin_ctr_c_drive ? coin_ctr_c_drive : playerinput_i[8]; + assign coin_l = coin_ctr_l_drive ? coin_ctr_l_drive : playerinput_i[7]; + assign self_test = playerinput_i[6]; + assign cocktail = playerinput_i[5]; + assign slam = playerinput_i[4]; + assign start2 = playerinput_i[3]; + assign start1 = playerinput_i[2]; + assign fire2 = playerinput_i[1]; + assign fire1 = playerinput_i[0]; + + wire [7:0] playerin_out0; + wire [7:0] playerin_out1; + + assign playerin_out1 = milli ? + { dir2, 1'b0, start2, fire2, sw1_i[7:4] } : + { coin_r, coin_c, coin_l, slam, fire2, fire1, start2, start1 }; + + assign playerin_out0 = milli ? + { dir1, vblank, start1, fire1, sw1_i[3:0] } : + { dir1, vblank, self_test, cocktail, tra }; + + assign playerin_out = ab[0] ? playerin_out1 : playerin_out0; + + // Coin Counter Output + reg [7:0] cc_latch; + + always @(posedge s_12mhz) if (reset) - begin - s_256h2d <= 1'b0; - s_256hd <= 1'b0; - vblankd <= 1'b0; - end - else - begin - s_256h2d <= s_256hd; - s_256hd <= s_256h; - vblankd <= vblank; - end + cc_latch <= 0; + else if (s_6mhz_en) + if (~out0_n) + cc_latch[ ab[2:0] ] <= db_out[7]; - assign s_256h2d_n = ~s_256h2d; - assign s_256hd_n = ~s_256hd; - assign vblankd_n = ~vblankd; + assign flip = milli ? cc_latch[6] : cc_latch[7]; + assign cntrlsel = milli ? cc_latch[6] : 1'b0; + assign led_o[4] = milli ? 1'b0 : cc_latch[6]; + assign led_o[3] = milli ? 1'b0 : cc_latch[5]; + assign led_o[2] = cc_latch[4]; + assign led_o[1] = cc_latch[3]; + assign coin_ctr_r_drive = cc_latch[2]; + assign coin_ctr_c_drive = cc_latch[1]; + assign coin_ctr_l_drive = cc_latch[1]; + + // Mini-Trak Ball inputs + wire [3:0] tb_mux; + wire s_1_horiz_dir, s_1_horiz_ck, s_1_vert_dir, s_1_vert_ck; + wire s_2_horiz_dir, s_2_horiz_ck, s_2_vert_dir, s_2_vert_ck; + wire tb_h_dir, tb_h_ck, tb_v_dir, tb_v_ck; + reg tb_h_reg, tb_v_reg; + reg [3:0] tb_h_ctr, tb_v_ctr; + wire tb_h_ctr_clr, tb_v_ctr_clr; + + assign s_1_horiz_dir = trakball_i[7]; + assign s_2_horiz_dir = trakball_i[6]; + assign s_1_horiz_ck = trakball_i[5]; + assign s_2_horiz_ck = trakball_i[4]; + assign s_1_vert_dir = trakball_i[3]; + assign s_2_vert_dir = trakball_i[2]; + assign s_1_vert_ck = trakball_i[1]; + assign s_2_vert_ck = trakball_i[0]; + + assign tb_mux = flip ? + { s_1_horiz_dir, s_1_horiz_ck, s_1_vert_dir, s_1_vert_ck } : + { s_2_horiz_dir, s_2_horiz_ck, s_2_vert_dir, s_2_vert_ck }; + + assign tb_h_dir = tb_mux[3]; + assign tb_h_ck = tb_mux[2]; + assign tb_v_dir = tb_mux[1]; + assign tb_v_ck = tb_mux[0]; +/* + // H + always @(posedge tb_h_ck or posedge reset) + if (reset) + tb_h_reg <= 0; + else + tb_h_reg <= tb_h_dir; + + assign tb_h_ctr_clr = reset | ~steerclr_n; + + always @(posedge tb_h_ck or posedge tb_h_ctr_clr) + if (tb_h_ctr_clr) + tb_h_ctr <= 0; + else + if (tb_h_reg) + tb_h_ctr <= tb_h_ctr + 4'd1; + else + tb_h_ctr <= tb_h_ctr - 4'd1; + + // V + always @(posedge tb_v_ck or posedge reset) + if (reset) + tb_v_reg <= 0; + else + tb_v_reg <= tb_v_dir; + + assign tb_v_ctr_clr = reset | ~steerclr_n; + + always @(posedge tb_v_ck or posedge tb_v_ctr_clr) + if (tb_v_ctr_clr) + tb_v_ctr <= 0; + else + if (tb_v_reg) + tb_v_ctr <= tb_v_ctr + 4'd1; + else + tb_v_ctr <= tb_v_ctr - 4'd1; +*/ + assign tra = tb_h_ctr; + assign trb = tb_v_ctr; + assign dir1 = tb_h_reg; + assign dir2 = tb_v_reg; + // motion objects (vertical) @@ -520,12 +785,15 @@ T65 T65( // for debug only assign match_true = (~match_n & s_256h_n) && pfd != 0; + wire pic7 = milli ? !s_256h & pic[7] : pic[7]; - assign mga = { match_mux[3] ^ (pic[7] & s_256h_n), - match_mux[2] ^ pic[7], - match_mux[1] ^ pic[7], - match_mux[0] ^ pic[7] }; - + assign mga = { match_mux[3] ^ (pic7 & s_256h_n), + match_mux[2] ^ pic7, + match_mux[1] ^ pic7, + match_mux[0] ^ pic7 }; + + wire horrot = milli ? (!s_256h & pic[6]) : pic[6]; + wire mga10 = s_256h ? pic[6] : pic[0]; //--- // motion objects (horizontal) @@ -548,7 +816,7 @@ T65 T65( else /* posedge s_4h */ if (s_4h_en) - pfd_hold <= pfd[29:16]; + pfd_hold <= pfd[31:16]; // always @(posedge s_4h_n) // if (reset) @@ -562,7 +830,9 @@ T65 T65( /* posedge s_4h_n */ if (s_4h_n_en) pfd_hold2 <= pfd_hold; - + + reg [1:0] y_reg; + assign y[1] = // C7 (area == 2'b00) ? (s_256hd ? 1'b0 : gry[1]) : (area == 2'b01) ? (s_256hd ? 1'b0 : pfd_hold2[25]) : @@ -577,13 +847,16 @@ T65 T65( (area == 2'b11) ? (s_256hd ? 1'b0 : pfd_hold2[28]) : 1'b0; + assign mocbx[0] = (area == 2'b00) ? (s_256hd ? 1'b0 : mocb[0]) : pfd_hold2[30]; + assign mocbx[1] = (area == 2'b00) ? (s_256hd ? 1'b0 : mocb[1]) : pfd_hold2[31]; + assign line_ram_ctr_load = ~(pload_n | s_256h); assign line_ram_ctr_clr = ~(pload_n | ~(s_256h & s_256hd_n)); - always @(posedge s_6mhz) // A5-B5 + always @(posedge s_12mhz) // A5-B5 if (reset) line_ram_ctr <= 0; - else /*if (s_6mhz_en)*/ begin + else if (s_6mhz_en) begin if (line_ram_ctr_clr) line_ram_ctr <= 0; else if (line_ram_ctr_load) @@ -595,25 +868,26 @@ T65 T65( assign line_ram_addr = line_ram_ctr; always @(posedge s_12mhz) - if (~s_6mhz) line_ram[line_ram_addr] <= y; + if (~s_6mhz) line_ram[line_ram_addr] <= {mocbx, y}; - always @(posedge s_12mhz) - if (reset) + always @(negedge s_12mhz) + if (reset) begin mr <= 0; - else - mr <= line_ram[line_ram_addr]; + mocb_o <= 0; + end else + {mocb_o, mr} <= line_ram[line_ram_addr]; + reg [1:0] mocb, mocb_o; + wire [1:0] mocbx; - always @(posedge s_6mhz_n) - if (reset) - gry <= 0; - else - if (~mob_n) + always @(posedge s_12mhz, negedge mob_n) + if (~mob_n) gry <= 2'b00; - else/* if (s_6mhz_n_en)*/ + else if (s_6mhz_n_en) begin gry <= mr; - + mocb <= mocb_o; + end // playfield multiplexer // The playfield multiplexer receives playfield data from the pf memory @@ -634,26 +908,48 @@ T65 T65( // else // pic <= pf[7:0]; always @(posedge s_12mhz) - if (reset) - pic <= 0; - else if (s_4h_en) - pic <= pf[7:0]; - -F7 F7( - .clk(s_12mhz), - .addr(pf_rom0_addr), - .data(pf_rom0_out) - ); - -HJ7 HJ7( - .clk(s_12mhz), - .addr(pf_rom1_addr), - .data(pf_rom1_out) - ); + if (reset) + pic <= 0; + else if (s_4h_en) + pic <= pf[7:0]; + else if (s_4h_n_en) + picD <= pic; + + dpram #( + .addr_width_g(11), + .data_width_g(8)) + F7( + .clk_a_i(s_12mhz), + .clk_b_i(s_12mhz), + .we_i(1'b0), + .addr_a_i(pf_rom0_addr), + .data_a_o(pf_rom0_out), + .data_a_i(), + .addr_b_i(dl_addr[10:0]), + .data_b_o(), + .data_b_i(dl_data), + .we_b_i(dl_we && dl_addr[14:11] == 4'b1000) + ); + + dpram #( + .addr_width_g(11), + .data_width_g(8)) + HJ7( + .clk_a_i(s_12mhz), + .clk_b_i(s_12mhz), + .we_i(1'b0), + .addr_a_i(pf_rom1_addr), + .data_a_o(pf_rom1_out), + .data_a_i(), + .addr_b_i(dl_addr[10:0]), + .data_b_o(), + .data_b_i(dl_data), + .we_b_i(dl_we && dl_addr[14:11] == 4'b1001) + ); // a guess, based on millipede schematics wire pf_romx_haddr; - assign pf_romx_haddr = s_256h_n & pic[0]; + assign pf_romx_haddr = milli ? mga10 : s_256h_n & pic[0]; assign pf_rom1_addr = { pf_romx_haddr, s_256h, pic[5:1], mga }; assign pf_rom0_addr = { pf_romx_haddr, s_256h, pic[5:1], mga }; assign pf_rom0_out_rev = { pf_rom0_out[0], pf_rom0_out[1], pf_rom0_out[2], pf_rom0_out[3], @@ -662,8 +958,8 @@ HJ7 HJ7( assign pf_rom1_out_rev = { pf_rom1_out[0], pf_rom1_out[1], pf_rom1_out[2], pf_rom1_out[3], pf_rom1_out[4], pf_rom1_out[5], pf_rom1_out[6], pf_rom1_out[7] }; - assign pf_mux0 = match_n ? 8'b0 : (pic[6] ? pf_rom0_out_rev : pf_rom0_out); - assign pf_mux1 = match_n ? 8'b0 : (pic[6] ? pf_rom1_out_rev : pf_rom1_out); + assign pf_mux0 = match_n ? 8'b0 : (horrot ? pf_rom0_out_rev : pf_rom0_out); + assign pf_mux1 = match_n ? 8'b0 : (horrot ? pf_rom1_out_rev : pf_rom1_out); always @(posedge s_12mhz) if (reset) @@ -689,19 +985,6 @@ HJ7 HJ7( else if (s_6mhz_n_en) area <= { pf_shift1[7], pf_shift0[7] }; - // - assign db_in = - ~rom_n ? rom_out : - ~ram0_n ? ram_out : - ~coloram_n ? { 4'b0, coloram_out } : - ~pframrd_n ? pf_out[7:0] : - ~ea_read_n ? hs_out : - ~in0_n ? playerin_out : - ~in1_n ? joystick_out : - ~swrd_n ? switch_out : - ~pokey_n ? pokey_out : - 8'b0; - // we ignore the cpu, as pf ram is now dp and cpu has it's own port // assign pf_sel = mob_n ? { s_8v, s_128h } : 2'b00; @@ -732,209 +1015,27 @@ HJ7 HJ7( assign pfa = { pfa7654, pfa3210 }; wire pf_ce; - reg pf_ce_d; wire [3:0] pf_ce4_n; assign pf_ce = ~(s_1h & s_2h & s_4h & s_6mhz); - always @(posedge s_12mhz) - if (reset) - pf_ce_d <= 0; - else - pf_ce_d <= pf_ce; - -// assign pf_ce4_n = { pf_ce_d, pf_ce_d, pf_ce_d, pf_ce_d }; assign pf_ce4_n = 4'b0; - + pf_ram pf_ram( - .clk_a(s_12mhz), - .clk_b(s_12mhz), - .reset(reset), - // - .addr_a({ab[9:6], ab[3:0]}), - .din_a(db_out[7:0]), - .dout_a(pf_out), - .ce_a({pfrd3_n, pfrd2_n, pfrd1_n, pfrd0_n}), - .we_a({pfwr3_n, pfwr2_n, pfwr1_n, pfwr0_n}), - // - .addr_b(pfa), - .dout_b(pfd), - .ce_b(pf_ce4_n) - ); - - // High Score Memory Circuitry + .clk_a(s_12mhz), + .clk_b(s_12mhz), + .reset(reset), + // + .addr_a({ab[9:6], ab[3:0]}), + .din_a(db_out[7:0]), + .dout_a(pf_out), + .ce_a({pfrd3_n, pfrd2_n, pfrd1_n, pfrd0_n}), + .we_a({pfwr3_n, pfwr2_n, pfwr1_n, pfwr0_n}), + // + .addr_b(pfa), + .dout_b(pfd), + .ce_b(pf_ce4_n) + ); - assign hs_addr_clk = ~(~ea_addr_n & ~write2_n); - assign hs_ctrl_clk = ~(~ea_ctrl_n & ~write2_n); - always @(posedge hs_addr_clk) - hs_addr <= ab[5:0]; - - always @(posedge hs_ctrl_clk) - hs_ctrl <= db_out[3:0]; -/* -spram #( - .addr_width_g(6), - .data_width_g(8)) -hs_ram( - .address(hs_addr), - .clock(hs_ctrl[0] & ~hs_ctrl[3]), - .wren(~hs_ctrl[1] & hs_ctrl[2]), - .data(hs_data), - .q(hs_out) - ); */ -assign hs_out = 8'b0; - always @(posedge hs_addr_clk) - hs_data <= db_out[7:0]; - - // Joystick Circuitry - wire js1_right, js1_left, js1_down, js1_up; - wire js2_right, js2_left, js2_down, js2_up; - - assign js1_right = joystick_i[7]; - assign js1_left = joystick_i[6]; - assign js1_down = joystick_i[5]; - assign js1_up = joystick_i[4]; - assign js2_right = joystick_i[3]; - assign js2_left = joystick_i[2]; - assign js2_down = joystick_i[1]; - assign js2_up = joystick_i[0]; - - assign joystick_out = ab[0] ? - { js1_right, js1_left, js1_down, js1_up, js2_right, js2_left, js2_down, js2_up } : - { dir2, 3'b0, trb }; - - // Option Input Circuitry - - assign switch_out = ab[0] ? - sw2_i : - sw1_i; - - // Player Input Circuitry - wire coin_r, coin_c, coin_l, self_test; - wire cocktail, slam, start1, start2, fire2, fire1; - - assign coin_r = coin_ctr_r_drive ? coin_ctr_r_drive : playerinput_i[9]; - assign coin_c = coin_ctr_c_drive ? coin_ctr_c_drive : playerinput_i[8]; - assign coin_l = coin_ctr_l_drive ? coin_ctr_l_drive : playerinput_i[7]; - assign self_test = playerinput_i[6]; - assign cocktail = playerinput_i[5]; - assign slam = playerinput_i[4]; - assign start1 = playerinput_i[3]; - assign start2 = playerinput_i[2]; - assign fire2 = playerinput_i[1]; - assign fire1 = playerinput_i[0]; - - wire [7:0] playerin_out0; - wire [7:0] playerin_out1; - - assign playerin_out1 = { coin_r, coin_c, coin_l, slam, fire2, fire1, start1, start2 }; - assign playerin_out0 = { dir1, vblank, self_test, cocktail, tra }; - - assign playerin_out = ab[0] ? playerin_out1 : playerin_out0; - - // Coin Counter Output - reg [7:0] cc_latch; - - always @(posedge s_12mhz or posedge reset) - if (reset) - cc_latch <= 0; - else if (s_6mhz_en) - if (~out0_n) - cc_latch[ ab[2:0] ] <= db_out[7]; - - assign flip = cc_latch[7]; - assign led_o[4] = cc_latch[6]; - assign led_o[3] = cc_latch[5]; - assign led_o[2] = cc_latch[4]; - assign led_o[1] = cc_latch[3]; - assign coin_ctr_r_drive = cc_latch[2]; - assign coin_ctr_c_drive = cc_latch[1]; - assign coin_ctr_l_drive = cc_latch[1]; - - // Mini-Trak Ball inputs - wire [3:0] tb_mux; - wire s_1_horiz_dir, s_1_horiz_ck, s_1_vert_dir, s_1_vert_ck; - wire s_2_horiz_dir, s_2_horiz_ck, s_2_vert_dir, s_2_vert_ck; - wire tb_h_dir, tb_h_ck, tb_v_dir, tb_v_ck; - reg tb_h_reg, tb_v_reg; - reg [3:0] tb_h_ctr, tb_v_ctr; - wire tb_h_ctr_clr, tb_v_ctr_clr; - - assign s_1_horiz_dir = trakball_i[7]; - assign s_2_horiz_dir = trakball_i[6]; - assign s_1_horiz_ck = trakball_i[5]; - assign s_2_horiz_ck = trakball_i[4]; - assign s_1_vert_dir = trakball_i[3]; - assign s_2_vert_dir = trakball_i[2]; - assign s_1_vert_ck = trakball_i[1]; - assign s_2_vert_ck = trakball_i[0]; - - assign tb_mux = flip ? - { s_1_horiz_dir, s_1_horiz_ck, s_1_vert_dir, s_1_vert_ck } : - { s_2_horiz_dir, s_2_horiz_ck, s_2_vert_dir, s_2_vert_ck }; - - assign tb_h_dir = tb_mux[3]; - assign tb_h_ck = tb_mux[2]; - assign tb_v_dir = tb_mux[1]; - assign tb_v_ck = tb_mux[0]; - - // H - always @(posedge tb_h_ck or posedge reset) - if (reset) - tb_h_reg <= 0; - else - tb_h_reg <= tb_h_dir; - - assign tb_h_ctr_clr = reset | ~steerclr_n; - - always @(posedge tb_h_ck or posedge tb_h_ctr_clr) - if (tb_h_ctr_clr) - tb_h_ctr <= 0; - else - if (tb_h_reg) - tb_h_ctr <= tb_h_ctr + 4'd1; - else - tb_h_ctr <= tb_h_ctr - 4'd1; - - // V - always @(posedge tb_v_ck or posedge reset) - if (reset) - tb_v_reg <= 0; - else - tb_v_reg <= tb_v_dir; - - assign tb_v_ctr_clr = reset | ~steerclr_n; - - always @(posedge tb_v_ck or posedge tb_v_ctr_clr) - if (tb_v_ctr_clr) - tb_v_ctr <= 0; - else - if (tb_v_reg) - tb_v_ctr <= tb_v_ctr + 4'd1; - else - tb_v_ctr <= tb_v_ctr - 4'd1; - - assign tra = tb_h_ctr; - assign trb = tb_v_ctr; - assign dir1 = tb_h_reg; - assign dir2 = tb_v_reg; - - - // Audio output circuitry - - -POKEY POKEY( - .Din(db_out[7:0]), - .Dout(pokey_out), - .A(ab[3:0]), - .P(8'b0), - .phi2(phi2), - .readHighWriteLow(rw_n), - .cs0Bar(pokey_n), - .audio(audio), - .clk(clk_100mhz) - ); - - // Video output circuitry // The video output circuit receives motion object, playfield, address and data inputs @@ -955,7 +1056,7 @@ POKEY POKEY( wire gry0_or_1; assign gry0_or_1 = gry[1] | gry[0]; - assign rama_sel = { coloram_n, gry0_or_1 }; + //assign rama_sel = { coloram_n, gry0_or_1 }; // assign rama = // (rama_sel == 2'b00) ? { ab[3:0] } : @@ -964,42 +1065,50 @@ POKEY POKEY( // (rama_sel == 2'b11) ? { {gry0_or_1, 1'b1}, gry[1:0] } : // 4'b0; - assign rama = gry0_or_1 ? - { {gry0_or_1, 1'b1}, gry[1:0] } : - { {gry0_or_1, 1'b1}, area[1:0] }; + wire [3:0] rama_centi = gry0_or_1 ? + { {gry0_or_1, 1'b1}, gry[1:0] } : + { {gry0_or_1, 1'b1}, area[1:0] }; - -dpram #( - .addr_width_g(4), - .data_width_g(4)) -color_ram( - .clk_a_i(s_12mhz), - .clk_b_i(s_12mhz), - .we_i(~coloram_w_n), - .addr_a_i(ab[3:0]), - .data_a_o(coloram_out), - .data_a_i(db_out[3:0]), - .addr_b_i(rama), - .data_b_o(coloram_rgbi) - ); + wire rama_hi_sel = (gry0_or_1 & s_256h & s_256h2d); + wire [4:0] rama_milli = {rama_hi_sel, rama_hi_sel ? {mocb, gry} : {picD[7:6], area}}; - assign rgb_o = - rgbi == 4'b0000 ? 9'b111_111_111 : - rgbi == 4'b0001 ? 9'b111_111_011 : - rgbi == 4'b0010 ? 9'b111_011_111 : - rgbi == 4'b0011 ? 9'b111_011_011 : - rgbi == 4'b0100 ? 9'b011_111_111 : - rgbi == 4'b0101 ? 9'b011_111_011 : - rgbi == 4'b0110 ? 9'b011_011_111 : - rgbi == 4'b0111 ? 9'b011_011_011 : - rgbi == 4'b1000 ? 9'b111_111_111 : - rgbi == 4'b1001 ? 9'b111_111_000 : - rgbi == 4'b1010 ? 9'b111_000_111 : - rgbi == 4'b1011 ? 9'b111_000_000 : - rgbi == 4'b1100 ? 9'b000_111_111 : - rgbi == 4'b1101 ? 9'b000_111_000 : - rgbi == 4'b1110 ? 9'b000_000_111 : - rgbi == 4'b1111 ? 9'b000_000_000 : + wire [4:0] rama = milli ? rama_milli : {1'b0, rama_centi}; + wire [4:0] cram_a = milli ? ab[4:0] : {1'b0, ab[3:0]}; + + dpram #( + .addr_width_g(5), + .data_width_g(8)) + color_ram( + .clk_a_i(s_12mhz), + .clk_b_i(s_12mhz), + .we_i(~coloram_w_n), + .addr_a_i(cram_a), + .data_a_o(coloram_out), + .data_a_i(milli ? db_out : {db_out[3:0], db_out[3:0]}), + .addr_b_i(rama), + .data_b_o(coloram_rgbi) + ); + + assign rgb_o = milli ? rgb_o_milli : rgb_o_centi; + + wire [8:0] rgb_o_milli = ~{ rgbi[2:0], rgbi[4:3], 1'b1, rgbi[7:5] }; + wire [8:0] rgb_o_centi = + rgbi[3:0] == 4'b0000 ? 9'b111_111_111 : + rgbi[3:0] == 4'b0001 ? 9'b111_111_011 : + rgbi[3:0] == 4'b0010 ? 9'b111_011_111 : + rgbi[3:0] == 4'b0011 ? 9'b111_011_011 : + rgbi[3:0] == 4'b0100 ? 9'b011_111_111 : + rgbi[3:0] == 4'b0101 ? 9'b011_111_011 : + rgbi[3:0] == 4'b0110 ? 9'b011_011_111 : + rgbi[3:0] == 4'b0111 ? 9'b011_011_011 : + rgbi[3:0] == 4'b1000 ? 9'b111_111_111 : + rgbi[3:0] == 4'b1001 ? 9'b111_111_000 : + rgbi[3:0] == 4'b1010 ? 9'b111_000_111 : + rgbi[3:0] == 4'b1011 ? 9'b111_000_000 : + rgbi[3:0] == 4'b1100 ? 9'b000_111_111 : + rgbi[3:0] == 4'b1101 ? 9'b000_111_000 : + rgbi[3:0] == 4'b1110 ? 9'b000_000_111 : + rgbi[3:0] == 4'b1111 ? 9'b000_000_000 : 9'd0; @@ -1008,6 +1117,38 @@ color_ram( assign vsync_o = vsync; assign audio_o = audio; assign hblank_o = hblank; - assign vblank_o = vblank; + assign vblank_o = vblankd; + + // Audio output circuitry + + wire [3:0] pokey_audio; + POKEY POKEY( + .Din(db_out[7:0]), + .Dout(pokey_out), + .A(ab[3:0]), + .P(8'b0), + .phi2(phi2), + .readHighWriteLow(rw_n), + .cs0Bar(pokey_n), + .audio(pokey_audio), + .clk(clk_100mhz) + ); + + POKEY POKEY2( + .Din(db_out[7:0]), + .Dout(pokey2_out), + .A(ab[3:0]), + .P(8'b0), + .phi2(phi2), + .readHighWriteLow(rw_n), + .cs0Bar(pokey2_n), + .audio(pokey2_audio), + .clk(clk_100mhz) + ); + wire [3:0] pokey2_audio; + wire [4:0] pokey_mux = pokey_audio + pokey2_audio; + + assign audio = milli ? (pokey_mux[4] ? 4'hf : pokey_mux[3:0]) : pokey_audio; + endmodule diff --git a/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/rtl/dpram.vhd b/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/rtl/dpram.vhd index d867b5d2..e42e9194 100644 --- a/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/rtl/dpram.vhd +++ b/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/rtl/dpram.vhd @@ -18,7 +18,9 @@ entity dpram is data_a_i : in std_logic_vector(data_width_g-1 downto 0); data_a_o : out std_logic_vector(data_width_g-1 downto 0); clk_b_i : in std_logic; + we_b_i : in std_logic := '0'; addr_b_i : in std_logic_vector(addr_width_g-1 downto 0); + data_b_i : in std_logic_vector(data_width_g-1 downto 0); data_b_o : out std_logic_vector(data_width_g-1 downto 0) ); end entity; @@ -52,6 +54,9 @@ begin begin if rising_edge(clk_b_i) then read_addr_v := unsigned(addr_b_i); + if we_b_i = '1' then + ram_q(to_integer(read_addr_v)) <= data_b_i; + end if; data_b_o <= ram_q(to_integer(read_addr_v)); end if; end process mem_b; diff --git a/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/rtl/pf_ram.v b/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/rtl/pf_ram.v index aac899ac..c774f7bb 100644 --- a/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/rtl/pf_ram.v +++ b/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/rtl/pf_ram.v @@ -27,12 +27,12 @@ dpram #( .addr_width_g(8), .data_width_g(8)) ram0( - .clk_a_i(clk_a & ~ce_a[0]), + .clk_a_i(clk_a), .we_i(~we_a[0]), .addr_a_i(addr_a), .data_a_i(din_a), .data_a_o(d_a0), - .clk_b_i(clk_b & ~ce_b[0]), + .clk_b_i(clk_b), .addr_b_i(addr_b), .data_b_o(d_b0) ); @@ -41,12 +41,12 @@ dpram #( .addr_width_g(8), .data_width_g(8)) ram1( - .clk_a_i(clk_a & ~ce_a[1]), + .clk_a_i(clk_a), .we_i(~we_a[1]), .addr_a_i(addr_a), .data_a_i(din_a), .data_a_o(d_a1), - .clk_b_i(clk_b & ~ce_b[1]), + .clk_b_i(clk_b), .addr_b_i(addr_b), .data_b_o(d_b1) ); @@ -55,12 +55,12 @@ dpram #( .addr_width_g(8), .data_width_g(8)) ram2( - .clk_a_i(clk_a & ~ce_a[2]), + .clk_a_i(clk_a), .we_i(~we_a[2]), .addr_a_i(addr_a), .data_a_i(din_a), .data_a_o(d_a2), - .clk_b_i(clk_b & ~ce_b[2]), + .clk_b_i(clk_b), .addr_b_i(addr_b), .data_b_o(d_b2) ); @@ -69,12 +69,12 @@ dpram #( .addr_width_g(8), .data_width_g(8)) ram3( - .clk_a_i(clk_a & ~ce_a[3]), + .clk_a_i(clk_a), .we_i(~we_a[3]), .addr_a_i(addr_a), .data_a_i(din_a), .data_a_o(d_a3), - .clk_b_i(clk_b & ~ce_b[3]), + .clk_b_i(clk_b), .addr_b_i(addr_b), .data_b_o(d_b3) ); diff --git a/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/rtl/roms/F7.vhd b/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/rtl/roms/F7.vhd deleted file mode 100644 index 0af1e96f..00000000 --- a/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/rtl/roms/F7.vhd +++ /dev/null @@ -1,150 +0,0 @@ -library ieee; -use ieee.std_logic_1164.all,ieee.numeric_std.all; - -entity F7 is -port ( - clk : in std_logic; - addr : in std_logic_vector(10 downto 0); - data : out std_logic_vector(7 downto 0) -); -end entity; - -architecture prom of F7 is - type rom is array(0 to 2047) of std_logic_vector(7 downto 0); - signal rom_data: rom := ( - X"00",X"00",X"00",X"00",X"3C",X"18",X"18",X"FF",X"7E",X"3C",X"18",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"3C",X"18",X"18",X"7E",X"7E",X"BD",X"18",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"3C",X"18",X"18",X"FF",X"7E",X"3C",X"18",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"3C",X"99",X"18",X"7E",X"7E",X"3C",X"18",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"0A",X"4C",X"3E",X"3E",X"FE",X"7C",X"B8",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"0A",X"4C",X"3E",X"3E",X"FE",X"7C",X"B8",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"10",X"18",X"9C",X"FE",X"FE",X"9C",X"18",X"10",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"10",X"18",X"9C",X"FE",X"FE",X"9C",X"18",X"10",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"18",X"30",X"F2",X"FF",X"F2",X"30",X"18",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"44",X"22",X"11",X"22",X"44",X"68",X"A0",X"3C",X"A0",X"68",X"44",X"22",X"11",X"22",X"44",X"00", - X"90",X"48",X"24",X"24",X"44",X"68",X"E0",X"3C",X"A0",X"68",X"44",X"24",X"24",X"48",X"90",X"00", - X"90",X"48",X"24",X"24",X"44",X"68",X"A0",X"3C",X"A0",X"68",X"44",X"24",X"24",X"48",X"90",X"00", - X"10",X"88",X"44",X"33",X"44",X"68",X"E0",X"3C",X"A0",X"68",X"44",X"33",X"44",X"88",X"10",X"00", - X"00",X"00",X"00",X"18",X"18",X"98",X"7F",X"8F",X"7F",X"1E",X"7C",X"B8",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"18",X"18",X"18",X"6F",X"9F",X"2F",X"5E",X"BC",X"78",X"00",X"00",X"00",X"00", - X"22",X"55",X"BE",X"74",X"02",X"61",X"C2",X"74",X"36",X"43",X"E0",X"40",X"36",X"7D",X"AE",X"44", - X"14",X"94",X"42",X"F1",X"42",X"94",X"34",X"3C",X"3C",X"34",X"94",X"42",X"F1",X"42",X"94",X"14", - X"00",X"24",X"4A",X"34",X"34",X"0C",X"3E",X"75",X"6D",X"2A",X"1C",X"34",X"34",X"4A",X"24",X"00", - X"00",X"00",X"00",X"00",X"10",X"00",X"3C",X"1C",X"1C",X"1E",X"00",X"04",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"80",X"98",X"50",X"34",X"3C",X"3C",X"3C",X"3F",X"3E",X"3C",X"7C",X"BC",X"3C",X"7C",X"B8",X"98", - X"00",X"86",X"FC",X"05",X"0F",X"0F",X"0F",X"7F",X"8F",X"8F",X"0F",X"1F",X"EF",X"8F",X"0E",X"06", - X"01",X"06",X"0D",X"08",X"08",X"7C",X"FF",X"FC",X"F8",X"C8",X"CD",X"C6",X"C1",X"CC",X"E4",X"7C", - X"01",X"06",X"0D",X"08",X"7C",X"FF",X"FC",X"C8",X"CD",X"C6",X"E1",X"60",X"30",X"18",X"44",X"3C", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"F8",X"88",X"F8",X"00",X"F8",X"88",X"F8",X"00",X"F8",X"A8",X"A8",X"00",X"00", - X"00",X"00",X"00",X"F8",X"88",X"F8",X"00",X"F8",X"88",X"F8",X"00",X"E8",X"A8",X"F8",X"00",X"00", - X"00",X"00",X"00",X"00",X"08",X"B1",X"42",X"81",X"02",X"00",X"29",X"50",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"59",X"96",X"01",X"83",X"82",X"84",X"EA",X"31",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"7C",X"FE",X"7F",X"3E",X"7F",X"FE",X"7C",X"7E",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"3C",X"42",X"81",X"81",X"81",X"81",X"42",X"3C", - X"3C",X"42",X"81",X"81",X"81",X"81",X"42",X"3C",X"00",X"00",X"00",X"00",X"08",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"18",X"30",X"F2",X"FF",X"F2",X"30",X"18",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"0C",X"06",X"0F",X"03",X"0F",X"07",X"0E",X"0C",X"1C",X"0E",X"3F",X"0F",X"1F",X"0F",X"1E",X"0C", - X"1C",X"0E",X"3F",X"7F",X"3F",X"3F",X"1E",X"1C",X"1C",X"1E",X"FF",X"FF",X"FF",X"FF",X"1E",X"1C", - X"00",X"04",X"0E",X"02",X"0E",X"06",X"0C",X"00",X"00",X"0C",X"0E",X"0E",X"0E",X"0E",X"0C",X"00", - X"00",X"0C",X"0E",X"6E",X"2E",X"0E",X"0C",X"00",X"00",X"0C",X"0E",X"6E",X"6E",X"0E",X"0C",X"00", - X"00",X"00",X"00",X"00",X"3C",X"18",X"18",X"7E",X"FF",X"3C",X"18",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"3C",X"18",X"18",X"7E",X"FF",X"3C",X"18",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"3C",X"18",X"99",X"7E",X"7E",X"3C",X"18",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"3C",X"18",X"99",X"7E",X"7E",X"3C",X"18",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"08",X"4D",X"3E",X"3E",X"FE",X"7C",X"38",X"40",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"08",X"4D",X"3E",X"3E",X"FE",X"7C",X"38",X"40",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"04",X"18",X"9C",X"FE",X"FE",X"9C",X"18",X"04",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"40",X"18",X"9C",X"FE",X"FE",X"9C",X"18",X"40",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"44",X"22",X"22",X"22",X"44",X"68",X"A0",X"3C",X"E0",X"68",X"44",X"22",X"22",X"22",X"44",X"00", - X"40",X"20",X"90",X"88",X"68",X"68",X"E0",X"3C",X"E0",X"68",X"68",X"88",X"90",X"20",X"40",X"00", - X"44",X"22",X"22",X"22",X"44",X"68",X"A0",X"3C",X"E0",X"68",X"44",X"22",X"22",X"22",X"44",X"00", - X"20",X"10",X"88",X"64",X"47",X"68",X"E0",X"3C",X"E0",X"68",X"47",X"64",X"88",X"10",X"20",X"00", - X"00",X"00",X"00",X"18",X"18",X"D8",X"2F",X"9F",X"4F",X"3E",X"BC",X"78",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"18",X"18",X"18",X"7F",X"8F",X"3F",X"DE",X"3C",X"F8",X"00",X"00",X"00",X"00", - X"34",X"42",X"E9",X"42",X"34",X"1C",X"36",X"43",X"E9",X"42",X"34",X"34",X"42",X"E9",X"42",X"34", - X"28",X"66",X"DA",X"5D",X"BE",X"4C",X"7B",X"36",X"36",X"7B",X"4E",X"BE",X"1D",X"DA",X"66",X"14", - X"00",X"00",X"08",X"10",X"1C",X"3E",X"31",X"74",X"2E",X"1C",X"7C",X"38",X"08",X"10",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"08",X"30",X"38",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"8C",X"68",X"1A",X"1E",X"1E",X"1E",X"1F",X"7E",X"9E",X"9E",X"1E",X"FE",X"9E",X"9C",X"8C", - X"80",X"B0",X"A0",X"68",X"78",X"78",X"78",X"7E",X"7A",X"7A",X"FC",X"78",X"78",X"F8",X"F8",X"B0", - X"01",X"06",X"0D",X"18",X"10",X"7C",X"FF",X"FC",X"D0",X"D8",X"CD",X"C6",X"E1",X"7C",X"04",X"0C", - X"01",X"06",X"0D",X"08",X"7C",X"FF",X"FC",X"C8",X"CD",X"C6",X"C1",X"CC",X"D2",X"C4",X"CC",X"78", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"F8",X"88",X"F8",X"00",X"F8",X"88",X"F8",X"00",X"F8",X"A8",X"B8",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"14",X"E5",X"02",X"A2",X"85",X"20",X"63",X"04",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"36",X"DD",X"CF",X"67",X"46",X"FF",X"6E",X"A8",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"20",X"7E",X"FE",X"6C",X"3E",X"7C",X"78",X"A0",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00"); -begin -process(clk) -begin - if rising_edge(clk) then - data <= rom_data(to_integer(unsigned(addr))); - end if; -end process; -end architecture; diff --git a/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/rtl/roms/HJ7.vhd b/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/rtl/roms/HJ7.vhd deleted file mode 100644 index 3223a70a..00000000 --- a/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/rtl/roms/HJ7.vhd +++ /dev/null @@ -1,150 +0,0 @@ -library ieee; -use ieee.std_logic_1164.all,ieee.numeric_std.all; - -entity HJ7 is -port ( - clk : in std_logic; - addr : in std_logic_vector(10 downto 0); - data : out std_logic_vector(7 downto 0) -); -end entity; - -architecture prom of HJ7 is - type rom is array(0 to 2047) of std_logic_vector(7 downto 0); - signal rom_data: rom := ( - X"00",X"00",X"00",X"00",X"3C",X"7E",X"7E",X"7E",X"7E",X"3C",X"18",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"3C",X"7E",X"7E",X"7E",X"7E",X"3C",X"18",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"3C",X"7E",X"7E",X"7E",X"7E",X"3C",X"18",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"3C",X"7E",X"7E",X"7E",X"7E",X"3C",X"18",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"38",X"7C",X"FE",X"FE",X"FE",X"7C",X"38",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"38",X"7C",X"FE",X"FE",X"FE",X"7C",X"38",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"78",X"FC",X"FE",X"FE",X"FC",X"78",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"78",X"FC",X"FE",X"FE",X"FC",X"78",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"0C",X"0C",X"00",X"0C",X"0C",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"70",X"F8",X"FC",X"F8",X"70",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"70",X"F8",X"FC",X"F8",X"70",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"70",X"F8",X"FC",X"F8",X"70",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"70",X"F8",X"FC",X"F8",X"70",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"04",X"86",X"70",X"80",X"70",X"00",X"40",X"80",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"04",X"06",X"60",X"90",X"20",X"40",X"80",X"40",X"00",X"00",X"00",X"00", - X"22",X"77",X"EA",X"7C",X"3E",X"7F",X"BE",X"7C",X"3E",X"7F",X"BE",X"7C",X"1E",X"7F",X"EA",X"44", - X"5C",X"EC",X"7E",X"FF",X"7E",X"EC",X"5E",X"3B",X"3B",X"5E",X"EC",X"7E",X"FF",X"7E",X"EC",X"5C", - X"00",X"24",X"76",X"2C",X"3C",X"14",X"2E",X"5F",X"73",X"3E",X"04",X"3C",X"2C",X"76",X"24",X"00", - X"00",X"00",X"00",X"00",X"18",X"08",X"2C",X"12",X"24",X"1A",X"01",X"0C",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"18",X"1C",X"1C",X"0C",X"3C",X"3C",X"18",X"2C",X"18",X"34",X"2C",X"1C",X"3C",X"38",X"18", - X"00",X"06",X"07",X"07",X"0F",X"0F",X"0F",X"04",X"0D",X"0B",X"07",X"0F",X"0F",X"0F",X"0E",X"06", - X"00",X"00",X"00",X"00",X"02",X"03",X"00",X"03",X"02",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"02",X"03",X"00",X"03",X"02",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"4A",X"00",X"42",X"01",X"80",X"02",X"89",X"52",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"9D",X"B4",X"49",X"A6",X"C2",X"A1",X"6A",X"45",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"FE",X"7F",X"E7",X"67",X"FE",X"7F",X"2A",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"F8",X"FC",X"26",X"22",X"26",X"FC",X"F8",X"00", - X"FE",X"FE",X"92",X"92",X"92",X"FE",X"6C",X"00",X"38",X"7C",X"C6",X"82",X"82",X"C6",X"44",X"00", - X"FE",X"FE",X"82",X"82",X"C6",X"7C",X"38",X"00",X"FE",X"FE",X"92",X"92",X"92",X"82",X"80",X"00", - X"FE",X"FE",X"12",X"12",X"12",X"12",X"02",X"00",X"38",X"7C",X"C6",X"82",X"92",X"F2",X"F2",X"00", - X"FE",X"FE",X"10",X"10",X"10",X"FE",X"FE",X"00",X"82",X"82",X"FE",X"FE",X"82",X"82",X"00",X"00", - X"40",X"C0",X"80",X"80",X"80",X"FE",X"7E",X"00",X"FE",X"FE",X"30",X"78",X"EC",X"C6",X"82",X"00", - X"FE",X"FE",X"80",X"80",X"80",X"80",X"80",X"00",X"FE",X"FE",X"1C",X"38",X"1C",X"FE",X"FE",X"00", - X"FE",X"FE",X"1C",X"38",X"70",X"FE",X"FE",X"00",X"7C",X"FE",X"82",X"82",X"82",X"FE",X"7C",X"00", - X"FE",X"FE",X"22",X"22",X"22",X"3E",X"1C",X"00",X"7C",X"FE",X"82",X"A2",X"E2",X"7E",X"BC",X"00", - X"FE",X"FE",X"22",X"62",X"F2",X"DE",X"8C",X"00",X"4C",X"DE",X"92",X"92",X"96",X"F4",X"60",X"00", - X"02",X"02",X"FE",X"FE",X"02",X"02",X"00",X"00",X"7E",X"FE",X"80",X"80",X"80",X"FE",X"7E",X"00", - X"1E",X"3E",X"70",X"E0",X"70",X"3E",X"1E",X"00",X"FE",X"FE",X"70",X"38",X"70",X"FE",X"FE",X"00", - X"C6",X"EE",X"7C",X"38",X"7C",X"EE",X"C6",X"00",X"0E",X"1E",X"F0",X"F0",X"1E",X"0E",X"00",X"00", - X"C2",X"E2",X"F2",X"BA",X"9E",X"8E",X"86",X"00",X"3C",X"42",X"BD",X"C3",X"C3",X"A5",X"42",X"3C", - X"3C",X"42",X"FD",X"93",X"93",X"8D",X"42",X"3C",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"2E",X"10",X"08",X"94",X"CA",X"A8",X"90",X"00",X"18",X"3C",X"FE",X"FF",X"FE",X"3C",X"18",X"00", - X"38",X"7C",X"C2",X"82",X"86",X"7C",X"38",X"00",X"80",X"84",X"FE",X"FE",X"80",X"80",X"00",X"00", - X"C4",X"E6",X"F2",X"B2",X"BA",X"9E",X"8C",X"00",X"40",X"C2",X"92",X"9A",X"9E",X"F6",X"62",X"00", - X"30",X"38",X"2C",X"26",X"FE",X"FE",X"20",X"00",X"4E",X"CE",X"8A",X"8A",X"8A",X"FA",X"70",X"00", - X"78",X"FC",X"96",X"92",X"92",X"F2",X"60",X"00",X"06",X"06",X"E2",X"F2",X"1A",X"0E",X"06",X"00", - X"6C",X"9E",X"9A",X"B2",X"B2",X"EC",X"60",X"00",X"0C",X"9E",X"92",X"92",X"D2",X"7E",X"3C",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"00",X"00",X"00",X"66",X"66",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"04",X"0E",X"02",X"0E",X"06",X"0C",X"00",X"00",X"0C",X"0E",X"0E",X"0E",X"0E",X"0C",X"00", - X"00",X"0C",X"0E",X"6E",X"2E",X"0E",X"0C",X"00",X"00",X"0C",X"0E",X"6E",X"6E",X"0E",X"0C",X"00", - X"0C",X"02",X"01",X"01",X"01",X"01",X"02",X"0C",X"1C",X"02",X"31",X"01",X"11",X"01",X"12",X"0C", - X"1C",X"02",X"31",X"11",X"11",X"31",X"12",X"1C",X"1C",X"12",X"F1",X"91",X"91",X"F1",X"12",X"1C", - X"00",X"00",X"00",X"00",X"3C",X"7E",X"7E",X"7E",X"7E",X"3C",X"18",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"3C",X"7E",X"7E",X"7E",X"7E",X"3C",X"18",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"3C",X"7E",X"7E",X"7E",X"7E",X"3C",X"18",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"3C",X"7E",X"7E",X"7E",X"7E",X"3C",X"18",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"38",X"7C",X"FE",X"FE",X"FE",X"7C",X"38",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"38",X"7C",X"FE",X"FE",X"FE",X"7C",X"38",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"78",X"FC",X"FE",X"FE",X"FC",X"78",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"78",X"FC",X"FE",X"FE",X"FC",X"78",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FC",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"70",X"F8",X"FC",X"F8",X"70",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"70",X"F8",X"FC",X"F8",X"70",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"70",X"F8",X"FC",X"F8",X"70",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"70",X"F8",X"FC",X"F8",X"70",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"04",X"C6",X"20",X"90",X"40",X"20",X"80",X"40",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"04",X"06",X"70",X"80",X"30",X"C0",X"00",X"C0",X"00",X"00",X"00",X"00", - X"3C",X"7E",X"F7",X"7E",X"3C",X"1C",X"3E",X"7F",X"F7",X"7E",X"3C",X"3C",X"7E",X"F7",X"7E",X"3C", - X"28",X"7E",X"FE",X"37",X"EA",X"74",X"5F",X"6E",X"6E",X"5F",X"74",X"EA",X"37",X"FE",X"7E",X"14", - X"00",X"00",X"18",X"18",X"34",X"52",X"34",X"4A",X"52",X"2C",X"4A",X"2C",X"18",X"18",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"10",X"38",X"30",X"28",X"10",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"0C",X"0E",X"06",X"1E",X"1E",X"1E",X"08",X"0C",X"1A",X"16",X"0E",X"1E",X"1E",X"1C",X"0C", - X"00",X"30",X"38",X"38",X"58",X"78",X"58",X"50",X"58",X"38",X"78",X"70",X"68",X"18",X"78",X"30", - X"00",X"00",X"00",X"00",X"02",X"03",X"00",X"03",X"02",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"02",X"03",X"00",X"03",X"02",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"54",X"CB",X"50",X"A2",X"05",X"B2",X"4B",X"10",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"7E",X"7D",X"E6",X"63",X"67",X"FB",X"6E",X"2A",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"18",X"BC",X"7F",X"EF",X"7E",X"FD",X"14",X"A0",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", - X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00"); -begin -process(clk) -begin - if rising_edge(clk) then - data <= rom_data(to_integer(unsigned(addr))); - end if; -end process; -end architecture; diff --git a/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/rtl/roms/P4.vhd b/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/rtl/roms/P4.vhd deleted file mode 100644 index 06353288..00000000 --- a/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/rtl/roms/P4.vhd +++ /dev/null @@ -1,38 +0,0 @@ -library ieee; -use ieee.std_logic_1164.all,ieee.numeric_std.all; - -entity P4 is -port ( - clk : in std_logic; - addr : in std_logic_vector(7 downto 0); - data : out std_logic_vector(3 downto 0) -); -end entity; - -architecture prom of P4 is - type rom is array(0 to 255) of std_logic_vector(3 downto 0); - signal rom_data: rom := ( - "0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000", - "0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000", - "0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000", - "0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000", - "0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000", - "0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000", - "0000","0000","0000","0000","0000","0000","0000","0000","0010","0010","0010","0010","0010","0010","0010","0010", - "0010","0010","0010","0010","0010","0010","0010","0010","0010","0010","0010","0010","0010","0010","0010","1010", - "1010","1010","1010","1010","1010","1110","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000", - "0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000", - "0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000", - "0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000", - "0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000", - "0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000","0000", - "1010","1010","1010","1010","1010","1010","1010","1010","1010","1010","1010","1010","1010","1010","1010","1010", - "1010","1010","1011","1011","1011","1010","1010","1010","1010","1010","1010","1010","1010","1010","1010","1010"); -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 Centipede Hardware/Centipede_MiST/rtl/roms/PROG.vhd b/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/rtl/roms/PROG.vhd deleted file mode 100644 index 902078c2..00000000 --- a/Arcade_MiST/Atari Centipede Hardware/Centipede_MiST/rtl/roms/PROG.vhd +++ /dev/null @@ -1,534 +0,0 @@ -library ieee; -use ieee.std_logic_1164.all,ieee.numeric_std.all; - -entity PROG is -port ( - clk : in std_logic; - addr : in std_logic_vector(12 downto 0); - data : out std_logic_vector(7 downto 0) -); -end entity; - -architecture prom of PROG is - type rom is array(0 to 8191) of std_logic_vector(7 downto 0); - signal rom_data: rom := ( - X"4C",X"4B",X"3B",X"1B",X"31",X"39",X"38",X"30",X"20",X"41",X"54",X"41",X"52",X"C9",X"20",X"76", - X"28",X"58",X"20",X"60",X"2D",X"46",X"8A",X"90",X"FC",X"8D",X"00",X"20",X"AD",X"00",X"0C",X"29", - X"20",X"F0",X"FE",X"20",X"66",X"25",X"20",X"79",X"30",X"20",X"45",X"27",X"10",X"E7",X"20",X"07", - X"3B",X"20",X"19",X"21",X"20",X"27",X"33",X"20",X"55",X"29",X"20",X"01",X"27",X"20",X"D2",X"2A", - X"20",X"02",X"22",X"20",X"D7",X"2E",X"20",X"DD",X"2B",X"20",X"1C",X"2E",X"20",X"59",X"20",X"20", - X"DA",X"23",X"20",X"F3",X"2C",X"4C",X"15",X"20",X"55",X"A5",X"43",X"29",X"AF",X"D0",X"08",X"A5", - X"40",X"45",X"EF",X"C9",X"20",X"90",X"01",X"60",X"A5",X"70",X"45",X"F0",X"C9",X"F8",X"90",X"20", - X"A6",X"88",X"B5",X"9A",X"C9",X"0C",X"B0",X"6B",X"B5",X"AB",X"C9",X"02",X"A0",X"05",X"90",X"02", - X"A0",X"09",X"C9",X"12",X"90",X"05",X"4A",X"18",X"69",X"06",X"A8",X"98",X"D5",X"D7",X"90",X"53", - X"A5",X"00",X"29",X"03",X"D0",X"0F",X"E6",X"40",X"A5",X"40",X"18",X"69",X"01",X"29",X"03",X"09", - X"1C",X"45",X"EF",X"85",X"40",X"A5",X"60",X"85",X"8B",X"A5",X"70",X"A4",X"EF",X"F0",X"06",X"18", - X"65",X"80",X"4C",X"B8",X"20",X"38",X"E5",X"80",X"85",X"70",X"45",X"F0",X"C9",X"04",X"90",X"24", - X"A2",X"0C",X"20",X"9A",X"2C",X"90",X"1C",X"A5",X"00",X"29",X"03",X"D0",X"16",X"AD",X"0A",X"10", - X"29",X"03",X"D0",X"0F",X"A9",X"04",X"45",X"F3",X"18",X"65",X"70",X"A0",X"00",X"20",X"2F",X"2C", - X"20",X"AC",X"2B",X"60",X"20",X"E8",X"20",X"60",X"A9",X"1C",X"45",X"EF",X"85",X"40",X"A9",X"F8", - X"45",X"F0",X"85",X"70",X"AD",X"0A",X"10",X"29",X"F8",X"F0",X"F9",X"C9",X"10",X"90",X"F5",X"38", - X"E9",X"04",X"85",X"60",X"A0",X"03",X"A6",X"88",X"B5",X"AB",X"C9",X"06",X"B0",X"02",X"A0",X"02", - X"84",X"80",X"A9",X"00",X"85",X"50",X"85",X"B8",X"60",X"A5",X"86",X"10",X"6F",X"20",X"95",X"21", - X"A9",X"03",X"85",X"93",X"A9",X"20",X"85",X"94",X"A9",X"40",X"85",X"91",X"A9",X"05",X"85",X"92", - X"20",X"74",X"38",X"A5",X"00",X"D0",X"05",X"A9",X"84",X"20",X"24",X"38",X"A5",X"00",X"AE",X"00", - X"06",X"86",X"FF",X"29",X"80",X"D0",X"45",X"A5",X"43",X"29",X"AF",X"D0",X"30",X"A5",X"63",X"A0", - X"01",X"C9",X"1C",X"90",X"08",X"A0",X"FF",X"C9",X"E4",X"B0",X"02",X"A4",X"53",X"98",X"84",X"53", - X"18",X"20",X"EF",X"2A",X"A5",X"73",X"85",X"8D",X"A0",X"FF",X"C9",X"30",X"B0",X"08",X"A0",X"01", - X"C9",X"09",X"90",X"02",X"A4",X"83",X"98",X"84",X"83",X"18",X"20",X"28",X"2B",X"20",X"64",X"2B", - X"A2",X"13",X"A9",X"AB",X"5D",X"20",X"21",X"CA",X"10",X"FA",X"85",X"FE",X"60",X"02",X"BB",X"5A", - X"30",X"5F",X"EE",X"7D",X"A8",X"20",X"B3",X"21",X"85",X"AE",X"B9",X"C0",X"21",X"85",X"B0",X"A9", - X"06",X"20",X"24",X"38",X"A5",X"B0",X"20",X"AB",X"38",X"A5",X"AE",X"20",X"9E",X"38",X"A9",X"00", - X"4C",X"9E",X"38",X"A5",X"FD",X"29",X"30",X"4A",X"4A",X"4A",X"A8",X"B9",X"BF",X"21",X"60",X"00", - X"01",X"20",X"01",X"50",X"01",X"00",X"02",X"A6",X"88",X"A0",X"02",X"B5",X"AB",X"D0",X"0C",X"A5", - X"FD",X"29",X"40",X"09",X"10",X"D5",X"A9",X"90",X"02",X"A0",X"01",X"84",X"81",X"AD",X"0A",X"10", - X"29",X"04",X"F0",X"05",X"98",X"20",X"7C",X"38",X"A8",X"84",X"51",X"A9",X"60",X"45",X"F0",X"85", - X"71",X"A9",X"FF",X"85",X"61",X"A9",X"F8",X"85",X"41",X"A9",X"60",X"85",X"A1",X"A9",X"00",X"85", - X"B5",X"60",X"A5",X"43",X"29",X"AF",X"F0",X"01",X"60",X"A2",X"0D",X"A5",X"41",X"A8",X"29",X"20", - X"F0",X"07",X"C0",X"F8",X"90",X"F2",X"4C",X"FA",X"22",X"A5",X"00",X"29",X"03",X"D0",X"10",X"E6", - X"41",X"A5",X"41",X"45",X"F2",X"C9",X"1C",X"90",X"06",X"A9",X"14",X"45",X"F2",X"85",X"41",X"C6", - X"A1",X"D0",X"35",X"AD",X"0A",X"10",X"29",X"80",X"F0",X"18",X"A5",X"51",X"F0",X"10",X"A4",X"61", - X"C0",X"FB",X"B0",X"0E",X"C0",X"05",X"90",X"0A",X"85",X"BE",X"A9",X"00",X"F0",X"02",X"A5",X"BE", - X"85",X"51",X"A5",X"FD",X"29",X"40",X"09",X"20",X"2D",X"0A",X"10",X"F0",X"07",X"A5",X"81",X"20", - X"7C",X"38",X"85",X"81",X"A9",X"30",X"85",X"A1",X"A5",X"61",X"38",X"E5",X"51",X"85",X"61",X"85", - X"8B",X"A5",X"71",X"A4",X"EF",X"F0",X"06",X"18",X"65",X"81",X"4C",X"80",X"22",X"38",X"E5",X"81", - X"85",X"71",X"A0",X"00",X"20",X"2F",X"2C",X"F0",X"13",X"A0",X"00",X"B1",X"32",X"29",X"3F",X"C9", - X"38",X"90",X"09",X"A9",X"00",X"91",X"32",X"20",X"95",X"2B",X"A2",X"0D",X"A5",X"61",X"C9",X"FF", - X"B0",X"54",X"A5",X"71",X"45",X"F0",X"C9",X"09",X"B0",X"06",X"A5",X"81",X"10",X"3D",X"30",X"32", - X"A6",X"88",X"B5",X"AB",X"F8",X"38",X"E9",X"06",X"D8",X"10",X"02",X"A9",X"00",X"4A",X"C9",X"06", - X"90",X"02",X"A9",X"05",X"0A",X"0A",X"0A",X"85",X"8D",X"A9",X"60",X"45",X"F0",X"38",X"E5",X"8D", - X"A6",X"EF",X"F0",X"06",X"C5",X"71",X"90",X"0A",X"B0",X"04",X"C5",X"71",X"B0",X"04",X"A5",X"81", - X"30",X"09",X"A2",X"0D",X"20",X"6F",X"2C",X"90",X"07",X"A5",X"81",X"20",X"7C",X"38",X"85",X"81", - X"A2",X"0D",X"20",X"9A",X"2C",X"60",X"20",X"C7",X"21",X"60",X"C6",X"A1",X"D0",X"11",X"AD",X"0A", - X"10",X"29",X"2F",X"09",X"0F",X"85",X"A1",X"A9",X"14",X"85",X"B5",X"45",X"F2",X"85",X"41",X"60", - X"B5",X"54",X"85",X"8B",X"A0",X"FF",X"B5",X"44",X"30",X"02",X"A0",X"01",X"B5",X"64",X"60",X"A6", - X"88",X"B5",X"94",X"D0",X"20",X"B5",X"C2",X"09",X"80",X"95",X"C2",X"B5",X"9C",X"C9",X"03",X"90", - X"14",X"D6",X"9A",X"D0",X"04",X"A9",X"0C",X"95",X"9A",X"A9",X"02",X"B4",X"AB",X"C0",X"04",X"B0", - X"02",X"A9",X"01",X"95",X"9C",X"A9",X"03",X"85",X"34",X"B5",X"9C",X"85",X"74",X"A8",X"A5",X"00", - X"29",X"02",X"D0",X"05",X"98",X"20",X"7C",X"38",X"A8",X"84",X"44",X"A9",X"F8",X"45",X"F0",X"85", - X"64",X"A9",X"80",X"85",X"54",X"B5",X"9A",X"85",X"8B",X"C9",X"01",X"F0",X"35",X"A0",X"42",X"A2", - X"01",X"94",X"34",X"A9",X"F8",X"45",X"F0",X"95",X"64",X"B5",X"73",X"95",X"74",X"B5",X"43",X"95", - X"44",X"10",X"04",X"A9",X"08",X"D0",X"02",X"A9",X"F8",X"18",X"75",X"53",X"95",X"54",X"88",X"C0", - X"3F",X"D0",X"02",X"A0",X"47",X"E8",X"E4",X"8B",X"90",X"D7",X"A6",X"88",X"B5",X"9A",X"C9",X"0C", - X"F0",X"2D",X"A9",X"F8",X"45",X"F0",X"A6",X"8B",X"95",X"64",X"A9",X"00",X"95",X"34",X"A9",X"02", - X"A4",X"F4",X"F0",X"01",X"98",X"95",X"74",X"2C",X"0A",X"10",X"10",X"03",X"20",X"7C",X"38",X"95", - X"44",X"AD",X"0A",X"10",X"29",X"F8",X"95",X"54",X"B5",X"64",X"E8",X"E0",X"0C",X"90",X"D9",X"A9", - X"0C",X"A6",X"88",X"95",X"94",X"A5",X"FE",X"85",X"97",X"60",X"A5",X"86",X"30",X"38",X"AD",X"01", - X"08",X"29",X"1C",X"F0",X"31",X"A5",X"AB",X"05",X"AD",X"F0",X"1B",X"C6",X"A9",X"D0",X"27",X"A9", - X"3C",X"85",X"A9",X"F8",X"A5",X"AB",X"38",X"E9",X"01",X"D8",X"85",X"AB",X"10",X"18",X"C6",X"AD", - X"A9",X"59",X"85",X"AB",X"D0",X"10",X"A9",X"00",X"85",X"A5",X"20",X"BC",X"26",X"A5",X"43",X"29", - X"AF",X"D0",X"03",X"20",X"C8",X"2C",X"A5",X"87",X"D0",X"01",X"60",X"A5",X"DB",X"D0",X"FB",X"C6", - X"87",X"D0",X"F7",X"A5",X"D6",X"F0",X"0F",X"A9",X"80",X"20",X"24",X"38",X"A9",X"00",X"A8",X"91", - X"91",X"85",X"D6",X"4C",X"36",X"29",X"A5",X"43",X"29",X"AF",X"D0",X"03",X"4C",X"41",X"25",X"20", - X"36",X"29",X"A5",X"86",X"10",X"11",X"A5",X"01",X"10",X"0A",X"29",X"7F",X"85",X"01",X"20",X"FE", - X"31",X"20",X"60",X"2D",X"4C",X"3B",X"25",X"A5",X"A5",X"05",X"A6",X"D0",X"46",X"C6",X"86",X"20", - X"67",X"32",X"A5",X"EF",X"F0",X"18",X"A5",X"C2",X"10",X"14",X"A9",X"80",X"85",X"EE",X"20",X"45", - X"25",X"20",X"36",X"29",X"20",X"FE",X"31",X"A5",X"C1",X"10",X"03",X"20",X"60",X"2D",X"20",X"C7", - X"21",X"20",X"1F",X"23",X"20",X"E8",X"20",X"A9",X"01",X"85",X"00",X"A9",X"04",X"20",X"24",X"38", - X"A6",X"89",X"A9",X"FF",X"9D",X"02",X"1C",X"20",X"4F",X"3A",X"A9",X"3D",X"85",X"F9",X"A9",X"00", - X"85",X"FA",X"60",X"A6",X"89",X"CA",X"D0",X"03",X"4C",X"34",X"25",X"A6",X"88",X"B5",X"A4",X"D0", - X"24",X"A5",X"A7",X"D0",X"1E",X"E6",X"A7",X"A9",X"80",X"85",X"87",X"A9",X"F9",X"85",X"43",X"85", - X"42",X"A9",X"04",X"20",X"24",X"38",X"A9",X"00",X"20",X"24",X"38",X"A5",X"88",X"09",X"20",X"20", - X"85",X"38",X"60",X"C6",X"A7",X"A5",X"88",X"49",X"03",X"AA",X"B5",X"A4",X"F0",X"56",X"86",X"88", - X"A9",X"80",X"25",X"EE",X"05",X"88",X"85",X"EE",X"C9",X"82",X"D0",X"03",X"20",X"65",X"25",X"B5", - X"A1",X"85",X"A0",X"A6",X"88",X"E0",X"01",X"D0",X"03",X"20",X"45",X"25",X"20",X"FE",X"31",X"A6", - X"88",X"E0",X"02",X"D0",X"11",X"B5",X"A4",X"C5",X"A4",X"D0",X"0B",X"A5",X"AD",X"D0",X"07",X"A9", - X"0C",X"95",X"94",X"20",X"C3",X"28",X"B5",X"C2",X"09",X"40",X"95",X"C2",X"A9",X"A0",X"85",X"87", - X"A9",X"00",X"20",X"24",X"38",X"A5",X"88",X"09",X"20",X"20",X"85",X"38",X"A9",X"F9",X"85",X"43", - X"85",X"42",X"85",X"D6",X"A6",X"88",X"D6",X"A4",X"20",X"BC",X"26",X"20",X"C7",X"21",X"20",X"E8", - X"20",X"20",X"1F",X"23",X"60",X"A5",X"FE",X"85",X"BD",X"85",X"BF",X"8D",X"07",X"1C",X"8D",X"00", - X"24",X"85",X"F5",X"85",X"F7",X"85",X"F6",X"85",X"F0",X"85",X"EF",X"85",X"F1",X"85",X"F2",X"85", - X"F3",X"85",X"F4",X"85",X"F8",X"60",X"AD",X"01",X"08",X"29",X"E3",X"85",X"D3",X"29",X"03",X"85", - X"8D",X"D0",X"04",X"A9",X"02",X"85",X"C8",X"A5",X"FD",X"29",X"0C",X"4A",X"4A",X"69",X"02",X"85", - X"A4",X"A5",X"86",X"30",X"01",X"60",X"A5",X"8D",X"F0",X"03",X"20",X"24",X"38",X"A5",X"00",X"29", - X"20",X"0A",X"0A",X"85",X"8D",X"A5",X"C8",X"05",X"C9",X"F0",X"10",X"A6",X"DC",X"10",X"29",X"C9", - X"02",X"90",X"1E",X"A9",X"00",X"85",X"DC",X"A9",X"8A",X"D0",X"1A",X"A5",X"FD",X"29",X"80",X"85", - X"DC",X"49",X"8A",X"20",X"24",X"38",X"A2",X"FF",X"8E",X"03",X"1C",X"A2",X"FF",X"8E",X"04",X"1C", - X"60",X"A9",X"0A",X"05",X"8D",X"20",X"24",X"38",X"A9",X"09",X"20",X"24",X"38",X"A5",X"C8",X"C9", - X"0A",X"90",X"0A",X"A9",X"21",X"20",X"85",X"38",X"A5",X"C8",X"38",X"E9",X"0A",X"09",X"20",X"20", - X"85",X"38",X"A5",X"C9",X"F0",X"02",X"A9",X"1E",X"20",X"85",X"38",X"A6",X"C8",X"F0",X"CC",X"A5", - X"DC",X"30",X"C8",X"A5",X"8D",X"8D",X"03",X"1C",X"AD",X"01",X"0C",X"A6",X"FF",X"4A",X"B0",X"BB", - X"C6",X"C8",X"A9",X"FF",X"8D",X"03",X"1C",X"8D",X"04",X"1C",X"A9",X"00",X"85",X"FB",X"85",X"FC", - X"85",X"9A",X"85",X"CB",X"85",X"CA",X"86",X"89",X"9D",X"02",X"1C",X"A6",X"A4",X"CA",X"86",X"A5", - X"E6",X"86",X"20",X"A4",X"26",X"20",X"B3",X"21",X"85",X"AE",X"85",X"AF",X"B9",X"C0",X"21",X"85", - X"B0",X"85",X"B1",X"AD",X"00",X"0C",X"29",X"10",X"F0",X"07",X"A9",X"80",X"85",X"EE",X"20",X"45", - X"25",X"20",X"76",X"28",X"AD",X"01",X"08",X"29",X"1C",X"F0",X"0C",X"4A",X"4A",X"85",X"AD",X"A9", - X"00",X"85",X"AB",X"A9",X"3C",X"85",X"A9",X"4C",X"BC",X"26",X"BD",X"7A",X"26",X"48",X"BD",X"7B", - X"26",X"A8",X"BD",X"7C",X"26",X"AA",X"68",X"8E",X"0E",X"14",X"8E",X"06",X"14",X"8D",X"0F",X"14", - X"8D",X"05",X"14",X"8C",X"0D",X"14",X"8C",X"07",X"14",X"60",X"0D",X"00",X"0E",X"02",X"04",X"01", - X"0E",X"01",X"0C",X"04",X"01",X"0B",X"01",X"0C",X"0A",X"09",X"0B",X"04",X"0C",X"0D",X"0A",X"09", - X"0C",X"0E",X"0A",X"0E",X"01",X"0B",X"01",X"04",X"01",X"00",X"06",X"0D",X"0E",X"0A",X"0E",X"0C", - X"0B",X"00",X"0D",X"02",X"A9",X"FF",X"85",X"C1",X"85",X"C2",X"A2",X"08",X"B5",X"02",X"9D",X"78", - X"01",X"B5",X"1A",X"9D",X"81",X"01",X"CA",X"10",X"F3",X"4C",X"4F",X"3A",X"A9",X"06",X"85",X"8B", - X"A9",X"04",X"45",X"F7",X"29",X"06",X"85",X"92",X"A9",X"DF",X"45",X"F6",X"85",X"91",X"A6",X"A5", - X"A9",X"1F",X"CA",X"10",X"02",X"A9",X"00",X"20",X"85",X"38",X"C6",X"8B",X"D0",X"F2",X"A9",X"06", - X"45",X"F7",X"85",X"92",X"A9",X"5F",X"45",X"F6",X"85",X"91",X"A9",X"06",X"85",X"8B",X"38",X"E5", - X"A6",X"AA",X"A9",X"00",X"CA",X"10",X"02",X"A9",X"1F",X"20",X"85",X"38",X"C6",X"8B",X"D0",X"F2", - X"60",X"A2",X"0D",X"B4",X"34",X"C0",X"F9",X"90",X"18",X"C0",X"FA",X"90",X"04",X"D6",X"34",X"D0", - X"10",X"E0",X"0D",X"D0",X"0C",X"A5",X"43",X"29",X"AF",X"D0",X"06",X"A5",X"D7",X"45",X"EF",X"85", - X"41",X"CA",X"10",X"DF",X"A5",X"43",X"29",X"AF",X"F0",X"1A",X"A5",X"00",X"29",X"03",X"D0",X"14", - X"A5",X"43",X"C9",X"28",X"B0",X"0E",X"E6",X"43",X"C9",X"27",X"D0",X"08",X"A9",X"00",X"85",X"DA", - X"A9",X"04",X"85",X"DB",X"60",X"A5",X"C1",X"25",X"C2",X"10",X"01",X"60",X"A5",X"C2",X"30",X"18", - X"A5",X"EE",X"10",X"14",X"A5",X"EF",X"D0",X"10",X"A9",X"82",X"85",X"EE",X"20",X"65",X"25",X"20", - X"FE",X"31",X"20",X"27",X"33",X"20",X"36",X"29",X"A5",X"89",X"4A",X"F0",X"14",X"A9",X"00",X"20", - X"24",X"38",X"A0",X"02",X"A6",X"C2",X"10",X"01",X"88",X"84",X"88",X"98",X"09",X"20",X"20",X"85", - X"38",X"A9",X"08",X"20",X"24",X"38",X"A9",X"05",X"20",X"24",X"38",X"A9",X"89",X"45",X"F5",X"85", - X"91",X"A9",X"05",X"45",X"F7",X"85",X"92",X"A6",X"88",X"B4",X"C0",X"84",X"8D",X"98",X"18",X"65", - X"C0",X"85",X"8E",X"20",X"82",X"38",X"A4",X"8D",X"C8",X"20",X"82",X"38",X"A4",X"8D",X"C8",X"C8", - X"20",X"82",X"38",X"AD",X"01",X"0C",X"A6",X"EF",X"F0",X"01",X"4A",X"4A",X"4A",X"4A",X"26",X"9A", - X"A5",X"9A",X"29",X"1F",X"C9",X"18",X"D0",X"46",X"E6",X"C0",X"A5",X"C0",X"C9",X"03",X"90",X"32", - X"A6",X"88",X"A9",X"FF",X"95",X"C0",X"A5",X"EF",X"F0",X"1D",X"A9",X"80",X"85",X"EE",X"20",X"45", - X"25",X"20",X"FE",X"31",X"20",X"36",X"29",X"20",X"27",X"33",X"20",X"1F",X"23",X"20",X"C7",X"21", - X"20",X"E8",X"20",X"A5",X"C1",X"30",X"32",X"A5",X"C1",X"25",X"C2",X"30",X"17",X"A2",X"00",X"86", - X"C0",X"60",X"E6",X"8E",X"A6",X"8E",X"A9",X"F4",X"85",X"01",X"A9",X"01",X"95",X"1A",X"A5",X"01", - X"F0",X"BE",X"D0",X"2E",X"A9",X"88",X"20",X"24",X"38",X"A9",X"85",X"20",X"24",X"38",X"A9",X"00", - X"8D",X"89",X"05",X"8D",X"A9",X"05",X"8D",X"C9",X"05",X"20",X"A4",X"26",X"20",X"60",X"2D",X"A6", - X"89",X"86",X"01",X"CA",X"F0",X"C7",X"A9",X"80",X"20",X"24",X"38",X"A9",X"00",X"A8",X"91",X"91", - X"F0",X"BB",X"A5",X"00",X"29",X"07",X"D0",X"2B",X"A2",X"FF",X"A9",X"00",X"A4",X"B9",X"85",X"B9", - X"10",X"07",X"A2",X"01",X"98",X"20",X"7C",X"38",X"A8",X"C0",X"04",X"90",X"16",X"8A",X"45",X"F4", - X"A6",X"8E",X"18",X"75",X"1A",X"30",X"08",X"C9",X"1B",X"90",X"06",X"A9",X"00",X"F0",X"02",X"A9", - X"1A",X"95",X"1A",X"A9",X"00",X"60",X"A9",X"20",X"8D",X"08",X"10",X"A9",X"0C",X"85",X"9B",X"85", - X"9C",X"A5",X"FF",X"85",X"88",X"85",X"53",X"85",X"83",X"A9",X"02",X"85",X"9D",X"85",X"9E",X"A2", - X"06",X"A9",X"00",X"8D",X"0F",X"10",X"95",X"B2",X"CA",X"10",X"FB",X"A2",X"05",X"95",X"A8",X"CA", - X"10",X"FB",X"AD",X"0A",X"10",X"4D",X"0A",X"10",X"18",X"65",X"C8",X"85",X"C8",X"A9",X"03",X"8D", - X"0F",X"10",X"20",X"1F",X"23",X"A9",X"C0",X"85",X"A0",X"85",X"A2",X"85",X"A3",X"20",X"C7",X"21", - X"20",X"E8",X"20",X"A9",X"0F",X"8D",X"04",X"14",X"A6",X"88",X"A9",X"00",X"95",X"C2",X"AA",X"20", - X"5A",X"26",X"A2",X"00",X"8A",X"9D",X"00",X"04",X"9D",X"00",X"05",X"9D",X"00",X"06",X"9D",X"00", - X"07",X"E8",X"D0",X"F1",X"A6",X"88",X"95",X"D7",X"A2",X"1B",X"86",X"8B",X"A2",X"2D",X"AD",X"0A", - X"10",X"29",X"E0",X"05",X"8B",X"85",X"8D",X"AD",X"0A",X"10",X"29",X"03",X"09",X"04",X"85",X"8E", - X"86",X"8F",X"A0",X"00",X"A5",X"8D",X"29",X"1F",X"A6",X"EF",X"F0",X"06",X"C9",X"14",X"90",X"0E", - X"B0",X"04",X"C9",X"0C",X"B0",X"08",X"B1",X"8D",X"D0",X"04",X"A6",X"88",X"F6",X"D7",X"A9",X"3F", - X"45",X"EF",X"91",X"8D",X"A5",X"8B",X"38",X"E9",X"01",X"C9",X"02",X"B0",X"02",X"A9",X"1B",X"85", - X"8B",X"A6",X"8F",X"CA",X"10",X"B8",X"A9",X"10",X"45",X"F2",X"85",X"43",X"A9",X"80",X"85",X"63", - X"85",X"62",X"A9",X"08",X"45",X"F0",X"85",X"73",X"A9",X"0C",X"45",X"F1",X"85",X"72",X"A9",X"11", - X"45",X"F2",X"85",X"42",X"60",X"A5",X"87",X"F0",X"01",X"60",X"A2",X"0B",X"A5",X"00",X"29",X"0F", - X"D0",X"04",X"A9",X"07",X"85",X"B3",X"B5",X"34",X"10",X"03",X"4C",X"CB",X"2A",X"A5",X"00",X"29", - X"01",X"D0",X"09",X"B5",X"34",X"18",X"69",X"01",X"29",X"F7",X"95",X"34",X"A0",X"01",X"B5",X"64", - X"45",X"F0",X"C9",X"09",X"B0",X"0A",X"B5",X"34",X"C9",X"10",X"B0",X"02",X"84",X"97",X"B5",X"64", - X"29",X"07",X"D0",X"73",X"98",X"A4",X"88",X"D9",X"94",X"00",X"D0",X"14",X"A9",X"02",X"B4",X"44", - X"10",X"02",X"A9",X"FE",X"95",X"44",X"A9",X"02",X"B4",X"74",X"10",X"02",X"A9",X"FE",X"95",X"74", - X"B5",X"34",X"29",X"40",X"F0",X"0F",X"B5",X"63",X"38",X"F5",X"64",X"20",X"7A",X"38",X"C9",X"08", - X"B0",X"45",X"4C",X"96",X"2A",X"B5",X"34",X"29",X"20",X"D0",X"3C",X"B5",X"54",X"C9",X"F0",X"90", - X"0A",X"B4",X"74",X"F0",X"0E",X"B4",X"44",X"10",X"2E",X"30",X"0F",X"C9",X"10",X"B0",X"0B",X"B4", - X"74",X"D0",X"03",X"4C",X"AA",X"2A",X"B4",X"44",X"30",X"1D",X"20",X"10",X"23",X"20",X"2F",X"2C", - X"F0",X"10",X"C9",X"38",X"90",X"11",X"C9",X"3C",X"B0",X"0D",X"B5",X"34",X"09",X"20",X"95",X"34", - X"90",X"05",X"20",X"6F",X"2C",X"90",X"BB",X"B5",X"64",X"45",X"F0",X"B4",X"74",X"F0",X"D4",X"10", - X"12",X"A4",X"EF",X"F0",X"08",X"45",X"F0",X"C9",X"C9",X"90",X"63",X"B0",X"68",X"C9",X"30",X"B0", - X"5D",X"90",X"62",X"C9",X"09",X"B0",X"5E",X"B5",X"34",X"29",X"40",X"D0",X"51",X"B5",X"34",X"29", - X"DF",X"95",X"34",X"E0",X"0B",X"F0",X"47",X"8A",X"A8",X"C8",X"B9",X"34",X"00",X"30",X"3F",X"29", - X"40",X"F0",X"3B",X"C0",X"0B",X"F0",X"09",X"B9",X"35",X"00",X"30",X"04",X"29",X"40",X"D0",X"29", - X"B9",X"64",X"00",X"45",X"F0",X"C9",X"09",X"B0",X"25",X"B9",X"34",X"00",X"29",X"07",X"99",X"34", - X"00",X"B9",X"44",X"00",X"20",X"7C",X"38",X"99",X"44",X"00",X"B9",X"64",X"00",X"29",X"F8",X"99", - X"64",X"00",X"A9",X"00",X"99",X"74",X"00",X"F0",X"05",X"C8",X"C0",X"0C",X"90",X"C5",X"B5",X"74", - X"20",X"7C",X"38",X"95",X"74",X"B5",X"64",X"A4",X"EF",X"F0",X"06",X"18",X"75",X"74",X"4C",X"94", - X"2A",X"38",X"F5",X"74",X"95",X"64",X"B5",X"44",X"18",X"75",X"54",X"95",X"54",X"20",X"9A",X"2C", - X"90",X"2F",X"B5",X"64",X"29",X"07",X"C9",X"04",X"D0",X"21",X"B5",X"44",X"20",X"7C",X"38",X"95", - X"44",X"B4",X"74",X"D0",X"16",X"09",X"00",X"30",X"03",X"20",X"7C",X"38",X"95",X"74",X"A9",X"04", - X"B4",X"44",X"10",X"02",X"A9",X"FC",X"18",X"75",X"54",X"95",X"54",X"CA",X"30",X"03",X"4C",X"66", - X"29",X"60",X"A5",X"86",X"10",X"01",X"60",X"A5",X"43",X"29",X"AF",X"D0",X"F9",X"A5",X"73",X"85", - X"8D",X"A4",X"FE",X"A5",X"B9",X"84",X"B9",X"20",X"4F",X"32",X"65",X"84",X"85",X"84",X"98",X"65", - X"63",X"AA",X"85",X"8B",X"A0",X"00",X"A5",X"73",X"20",X"2F",X"2C",X"D0",X"11",X"8A",X"C9",X"F4", - X"90",X"04",X"A9",X"F4",X"D0",X"0A",X"C9",X"0B",X"B0",X"06",X"A9",X"0B",X"D0",X"02",X"A5",X"63", - X"85",X"63",X"A4",X"86",X"10",X"01",X"60",X"A0",X"00",X"A5",X"BB",X"84",X"BB",X"20",X"7C",X"38", - X"20",X"4F",X"32",X"65",X"85",X"85",X"85",X"98",X"65",X"73",X"AA",X"A4",X"63",X"84",X"8B",X"A0", - X"00",X"20",X"2F",X"2C",X"D0",X"25",X"8A",X"C9",X"08",X"90",X"1C",X"C9",X"F1",X"B0",X"14",X"C9", - X"80",X"90",X"08",X"C9",X"C8",X"B0",X"16",X"A9",X"C8",X"D0",X"12",X"C9",X"31",X"90",X"0E",X"A9", - X"30",X"D0",X"0A",X"A9",X"F0",X"D0",X"06",X"A9",X"08",X"D0",X"02",X"A5",X"73",X"85",X"73",X"A4", - X"86",X"10",X"01",X"60",X"A5",X"72",X"A6",X"EF",X"F0",X"07",X"38",X"E5",X"8D",X"B0",X"0E",X"90", - X"05",X"38",X"E5",X"8D",X"90",X"07",X"20",X"7A",X"38",X"C9",X"05",X"B0",X"0D",X"A9",X"04",X"45", - X"F0",X"18",X"65",X"73",X"85",X"72",X"A5",X"63",X"85",X"62",X"A5",X"43",X"29",X"AF",X"F0",X"04", - X"A9",X"28",X"85",X"42",X"60",X"A5",X"32",X"29",X"1F",X"A6",X"EF",X"F0",X"06",X"C9",X"14",X"90", - X"0A",X"B0",X"04",X"C9",X"0C",X"B0",X"04",X"A6",X"88",X"D6",X"D7",X"60",X"A0",X"00",X"B1",X"32", - X"D0",X"2A",X"A5",X"32",X"29",X"1F",X"F0",X"24",X"C9",X"1F",X"F0",X"20",X"A6",X"EF",X"F0",X"0A", - X"C9",X"1E",X"F0",X"18",X"C9",X"14",X"90",X"0E",X"B0",X"08",X"C9",X"01",X"F0",X"0E",X"C9",X"0C", - X"B0",X"04",X"A6",X"88",X"F6",X"D7",X"A9",X"3F",X"45",X"EF",X"91",X"32",X"60",X"A5",X"97",X"F0", - X"4D",X"A5",X"87",X"D0",X"49",X"A5",X"A0",X"F0",X"03",X"C6",X"A0",X"60",X"A6",X"88",X"A0",X"0B", - X"B9",X"34",X"00",X"30",X"04",X"88",X"10",X"F8",X"60",X"A9",X"00",X"99",X"34",X"00",X"A9",X"40", - X"45",X"F0",X"99",X"64",X"00",X"A9",X"FC",X"99",X"54",X"00",X"A9",X"02",X"99",X"74",X"00",X"B5", - X"A1",X"C9",X"60",X"90",X"04",X"E9",X"08",X"95",X"A1",X"85",X"A0",X"AD",X"0A",X"10",X"29",X"02", - X"D0",X"07",X"A9",X"04",X"99",X"54",X"00",X"A9",X"FE",X"99",X"44",X"00",X"F6",X"94",X"60",X"4A", - X"4A",X"4A",X"69",X"00",X"85",X"32",X"A9",X"01",X"85",X"33",X"98",X"0A",X"0A",X"0A",X"18",X"65", - X"8B",X"85",X"8B",X"A9",X"F7",X"38",X"E5",X"8B",X"B0",X"02",X"A9",X"00",X"29",X"F8",X"0A",X"26", - X"33",X"0A",X"26",X"33",X"05",X"32",X"A4",X"33",X"C0",X"07",X"D0",X"08",X"C9",X"C0",X"90",X"04", - X"29",X"1F",X"09",X"A0",X"85",X"32",X"A0",X"00",X"B1",X"32",X"F0",X"02",X"45",X"EF",X"60",X"86", - X"8B",X"86",X"8C",X"E6",X"8C",X"A0",X"0C",X"B9",X"64",X"00",X"D5",X"64",X"D0",X"17",X"B9",X"34", - X"00",X"C9",X"F4",X"B0",X"10",X"C4",X"8B",X"F0",X"0C",X"B5",X"54",X"38",X"F9",X"54",X"00",X"55", - X"44",X"C9",X"F4",X"B0",X"04",X"88",X"10",X"DF",X"18",X"60",X"B5",X"54",X"38",X"E5",X"63",X"20", - X"7A",X"38",X"E0",X"0D",X"D0",X"05",X"C9",X"0A",X"90",X"05",X"60",X"C9",X"07",X"B0",X"FB",X"85", - X"8D",X"B5",X"64",X"38",X"E5",X"73",X"20",X"7A",X"38",X"C9",X"07",X"B0",X"ED",X"18",X"65",X"8D", - X"E0",X"0D",X"F0",X"2A",X"C9",X"0C",X"B0",X"E2",X"A9",X"30",X"85",X"87",X"A9",X"20",X"85",X"43", - X"A9",X"FF",X"95",X"34",X"A9",X"28",X"85",X"42",X"A5",X"86",X"30",X"04",X"A9",X"13",X"85",X"B7", - X"A9",X"00",X"85",X"B2",X"85",X"B3",X"85",X"B4",X"85",X"B5",X"85",X"B8",X"18",X"60",X"C9",X"0E", - X"4C",X"C6",X"2C",X"A0",X"00",X"A5",X"00",X"29",X"07",X"D0",X"14",X"A5",X"B7",X"D0",X"10",X"A5", - X"DB",X"F0",X"0C",X"C9",X"07",X"D0",X"09",X"A5",X"DA",X"C9",X"C0",X"90",X"03",X"84",X"DB",X"60", - X"B1",X"DA",X"29",X"3F",X"C9",X"38",X"90",X"40",X"C9",X"3F",X"B0",X"3C",X"A9",X"3F",X"45",X"EF", - X"91",X"DA",X"A9",X"00",X"85",X"8B",X"A9",X"05",X"20",X"BA",X"2D",X"A9",X"FF",X"85",X"3F",X"A5", - X"DB",X"85",X"8B",X"A5",X"DA",X"0A",X"26",X"8B",X"0A",X"26",X"8B",X"0A",X"26",X"8B",X"85",X"6F", - X"A5",X"8B",X"29",X"1F",X"49",X"1F",X"0A",X"0A",X"0A",X"E9",X"03",X"85",X"5F",X"E6",X"DA",X"D0", - X"02",X"E6",X"DB",X"A9",X"13",X"85",X"B2",X"60",X"E6",X"DA",X"D0",X"A3",X"E6",X"DB",X"D0",X"B0", - X"A9",X"07",X"20",X"24",X"38",X"A0",X"00",X"A2",X"5C",X"86",X"91",X"A9",X"05",X"85",X"92",X"B9", - X"04",X"00",X"84",X"8D",X"38",X"20",X"9E",X"38",X"A4",X"8D",X"B9",X"03",X"00",X"20",X"9E",X"38", - X"A4",X"8D",X"B9",X"02",X"00",X"18",X"20",X"9E",X"38",X"A9",X"00",X"20",X"85",X"38",X"A4",X"8D", - X"20",X"82",X"38",X"E6",X"8D",X"A4",X"8D",X"20",X"82",X"38",X"E6",X"8D",X"A4",X"8D",X"20",X"82", - X"38",X"A5",X"91",X"29",X"1F",X"09",X"40",X"AA",X"CA",X"A4",X"8D",X"C8",X"C0",X"18",X"90",X"B9", - X"60",X"C9",X"86",X"8D",X"A6",X"88",X"D6",X"94",X"A6",X"8D",X"A4",X"86",X"30",X"5D",X"86",X"8D", - X"F8",X"A6",X"88",X"18",X"75",X"A7",X"95",X"A7",X"B5",X"A9",X"65",X"8B",X"95",X"A9",X"90",X"0D", - X"B5",X"A1",X"E9",X"02",X"95",X"A1",X"B5",X"AB",X"18",X"69",X"01",X"95",X"AB",X"D8",X"A6",X"88", - X"B5",X"A9",X"D5",X"AD",X"B5",X"AB",X"F5",X"AF",X"90",X"2F",X"20",X"B3",X"21",X"F8",X"18",X"75", - X"AD",X"95",X"AD",X"B9",X"C0",X"21",X"75",X"AF",X"95",X"AF",X"D8",X"AD",X"01",X"08",X"29",X"1C", - X"F0",X"06",X"A5",X"AD",X"05",X"AB",X"F0",X"11",X"B5",X"A4",X"C9",X"06",X"F0",X"0B",X"B0",X"FE", - X"F6",X"A4",X"A9",X"11",X"85",X"B6",X"20",X"BC",X"26",X"A6",X"8D",X"60",X"A5",X"40",X"45",X"EF", - X"C9",X"34",X"90",X"03",X"4C",X"A5",X"2E",X"C9",X"30",X"B0",X"5D",X"A5",X"70",X"45",X"F0",X"C9", - X"F8",X"90",X"04",X"A5",X"00",X"F0",X"03",X"4C",X"D6",X"2E",X"A6",X"88",X"B5",X"9A",X"C9",X"0B", - X"B0",X"F5",X"AD",X"0A",X"10",X"29",X"03",X"D0",X"EE",X"A9",X"14",X"85",X"B8",X"A9",X"30",X"45", - X"EF",X"85",X"40",X"B5",X"AB",X"C9",X"02",X"90",X"12",X"AD",X"0A",X"10",X"29",X"03",X"F0",X"0B", - X"A9",X"02",X"2C",X"0A",X"10",X"10",X"0D",X"A9",X"FE",X"D0",X"09",X"A9",X"01",X"2C",X"0A",X"10", - X"10",X"02",X"A9",X"FF",X"85",X"50",X"A9",X"00",X"85",X"60",X"85",X"80",X"AD",X"0A",X"10",X"29", - X"78",X"18",X"69",X"70",X"45",X"F0",X"85",X"70",X"A5",X"43",X"29",X"AF",X"D0",X"1D",X"A5",X"60", - X"A4",X"EF",X"F0",X"06",X"38",X"E5",X"50",X"4C",X"9D",X"2E",X"18",X"65",X"50",X"85",X"60",X"85", - X"8B",X"D0",X"0B",X"F0",X"06",X"45",X"EF",X"C9",X"FA",X"B0",X"2B",X"4C",X"E8",X"20",X"A5",X"00", - X"29",X"03",X"D0",X"0D",X"A5",X"40",X"18",X"69",X"01",X"29",X"03",X"09",X"30",X"45",X"EF",X"85", - X"40",X"A0",X"00",X"A5",X"70",X"20",X"2F",X"2C",X"C9",X"40",X"B0",X"0A",X"C9",X"3C",X"90",X"06", - X"29",X"FB",X"45",X"EF",X"91",X"32",X"60",X"A5",X"72",X"A4",X"EF",X"F0",X"05",X"18",X"69",X"07", - X"49",X"FF",X"C9",X"F3",X"B0",X"75",X"A9",X"04",X"45",X"F0",X"18",X"65",X"73",X"C5",X"72",X"D0", - X"25",X"A5",X"43",X"29",X"AF",X"D0",X"18",X"AD",X"01",X"0C",X"A6",X"86",X"10",X"03",X"AD",X"0A", - X"10",X"C0",X"C0",X"D0",X"06",X"29",X"08",X"F0",X"09",X"D0",X"04",X"29",X"04",X"F0",X"03",X"4C", - X"5A",X"30",X"A9",X"0B",X"85",X"B4",X"A5",X"62",X"85",X"8B",X"A9",X"07",X"45",X"F4",X"A4",X"72", - X"18",X"65",X"72",X"85",X"72",X"84",X"8D",X"A9",X"01",X"45",X"F3",X"18",X"65",X"8D",X"A0",X"00", - X"20",X"2F",X"2C",X"F0",X"29",X"29",X"3F",X"C9",X"38",X"90",X"20",X"E9",X"01",X"C9",X"3B",X"F0", - X"04",X"C9",X"37",X"D0",X"0D",X"A9",X"00",X"85",X"8B",X"A9",X"01",X"20",X"BA",X"2D",X"A0",X"00", - X"A5",X"EF",X"45",X"EF",X"91",X"32",X"D0",X"03",X"20",X"95",X"2B",X"4C",X"57",X"30",X"A2",X"0D", - X"B5",X"34",X"C9",X"76",X"90",X"08",X"C9",X"B9",X"90",X"69",X"C9",X"F8",X"B0",X"65",X"B5",X"64", - X"45",X"F0",X"C9",X"F8",X"B0",X"5D",X"45",X"F0",X"38",X"E5",X"72",X"20",X"7A",X"38",X"A8",X"E0", - X"0C",X"D0",X"16",X"B5",X"34",X"45",X"EF",X"C9",X"20",X"B0",X"0E",X"A5",X"80",X"45",X"F0",X"C9", - X"04",X"90",X"06",X"C0",X"07",X"B0",X"3C",X"90",X"04",X"C0",X"05",X"B0",X"36",X"B5",X"54",X"38", - X"E5",X"62",X"20",X"7A",X"38",X"A8",X"E0",X"0D",X"F0",X"25",X"E0",X"0C",X"90",X"60",X"B5",X"34", - X"45",X"EF",X"C9",X"20",X"B0",X"10",X"C0",X"06",X"B0",X"19",X"A0",X"02",X"A9",X"04",X"C5",X"80", - X"F0",X"0A",X"85",X"80",X"D0",X"95",X"C0",X"0A",X"B0",X"09",X"A0",X"10",X"4C",X"48",X"30",X"C0", - X"0A",X"90",X"03",X"4C",X"42",X"30",X"A0",X"B6",X"84",X"D7",X"A0",X"03",X"A5",X"71",X"38",X"E5", - X"73",X"20",X"7A",X"38",X"C9",X"40",X"B0",X"0C",X"E6",X"D7",X"A0",X"09",X"C9",X"16",X"90",X"04", - X"E6",X"D7",X"A0",X"06",X"A9",X"80",X"85",X"9F",X"85",X"A1",X"A9",X"00",X"85",X"B5",X"A9",X"F0", - X"C5",X"61",X"90",X"06",X"A9",X"10",X"C5",X"61",X"90",X"3E",X"85",X"61",X"D0",X"3A",X"C0",X"06", - X"B0",X"30",X"A9",X"00",X"85",X"8B",X"A0",X"10",X"B5",X"34",X"29",X"40",X"D0",X"04",X"A0",X"00", - X"E6",X"8B",X"98",X"20",X"B2",X"2D",X"E0",X"0B",X"F0",X"08",X"B5",X"35",X"30",X"04",X"29",X"BF", - X"95",X"35",X"20",X"10",X"23",X"20",X"2F",X"2C",X"86",X"8D",X"20",X"AC",X"2B",X"A6",X"8D",X"4C", - X"4F",X"30",X"CA",X"30",X"15",X"4C",X"60",X"2F",X"84",X"8B",X"A9",X"00",X"20",X"BA",X"2D",X"A9", - X"13",X"85",X"B2",X"A9",X"FF",X"95",X"34",X"20",X"7D",X"2B",X"A6",X"88",X"B5",X"94",X"05",X"87", - X"F0",X"10",X"A5",X"41",X"45",X"EF",X"C9",X"9C",X"90",X"07",X"C6",X"9F",X"D0",X"03",X"20",X"C7", - X"21",X"60",X"F6",X"9C",X"A9",X"40",X"85",X"87",X"60",X"A6",X"86",X"10",X"0F",X"A2",X"00",X"8E", - X"01",X"10",X"8E",X"03",X"10",X"8E",X"05",X"10",X"8E",X"07",X"10",X"60",X"A5",X"00",X"4A",X"90", - X"19",X"A4",X"B5",X"98",X"F0",X"11",X"C6",X"B5",X"D0",X"04",X"A9",X"14",X"85",X"B5",X"B9",X"B0", - X"31",X"8D",X"06",X"10",X"B9",X"C4",X"31",X"8D",X"07",X"10",X"A4",X"B4",X"98",X"F0",X"0A",X"C6", - X"B4",X"B9",X"A5",X"31",X"8D",X"04",X"10",X"A9",X"64",X"8D",X"05",X"10",X"A5",X"AD",X"D0",X"14", - X"A5",X"AB",X"C9",X"16",X"B0",X"0E",X"C9",X"14",X"90",X"0A",X"A5",X"00",X"29",X"04",X"F0",X"16", - X"A9",X"10",X"D0",X"12",X"A4",X"B6",X"F0",X"28",X"A5",X"00",X"29",X"07",X"D0",X"73",X"C6",X"B6", - X"88",X"F0",X"1D",X"B9",X"D8",X"31",X"8D",X"02",X"10",X"A9",X"A4",X"D0",X"61",X"A4",X"B8",X"88", - X"D0",X"02",X"A0",X"14",X"84",X"B8",X"B9",X"E9",X"31",X"8D",X"02",X"10",X"A9",X"A4",X"D0",X"4E", - X"A5",X"70",X"45",X"F0",X"C9",X"F8",X"B0",X"36",X"A5",X"43",X"29",X"AF",X"D0",X"30",X"A5",X"40", - X"45",X"EF",X"C9",X"34",X"B0",X"28",X"C9",X"20",X"B0",X"D3",X"A5",X"70",X"45",X"F4",X"4A",X"49", - X"FF",X"09",X"80",X"8D",X"02",X"10",X"A9",X"A4",X"D0",X"24",X"A4",X"B2",X"98",X"F0",X"0B",X"C6", - X"B2",X"B9",X"71",X"31",X"8D",X"00",X"10",X"B9",X"84",X"31",X"8D",X"01",X"10",X"60",X"A4",X"B3", - X"98",X"F0",X"0B",X"C6",X"B3",X"B9",X"97",X"31",X"8D",X"02",X"10",X"B9",X"9E",X"31",X"8D",X"03", - X"10",X"A4",X"B7",X"F0",X"D5",X"A5",X"00",X"29",X"03",X"D0",X"16",X"C6",X"B7",X"88",X"F0",X"11", - X"B9",X"71",X"31",X"8D",X"00",X"10",X"B9",X"84",X"31",X"F0",X"03",X"18",X"69",X"02",X"8D",X"01", - X"10",X"60",X"00",X"00",X"00",X"00",X"F0",X"E0",X"D0",X"C0",X"B0",X"A0",X"90",X"80",X"70",X"60", - X"50",X"40",X"30",X"20",X"10",X"00",X"00",X"00",X"00",X"81",X"81",X"81",X"82",X"82",X"82",X"82", - X"83",X"83",X"83",X"83",X"84",X"84",X"84",X"84",X"70",X"00",X"00",X"A0",X"00",X"C0",X"E0",X"A1", - X"00",X"00",X"A2",X"00",X"A2",X"A4",X"F0",X"E0",X"D0",X"C0",X"B0",X"A0",X"90",X"80",X"70",X"60", - X"50",X"05",X"05",X"20",X"20",X"30",X"30",X"35",X"35",X"30",X"30",X"20",X"20",X"05",X"05",X"20", - X"20",X"30",X"30",X"35",X"35",X"A1",X"00",X"A2",X"00",X"A3",X"00",X"A4",X"00",X"A3",X"00",X"A2", - X"00",X"A1",X"00",X"A2",X"00",X"A3",X"00",X"A2",X"00",X"28",X"28",X"30",X"28",X"28",X"30",X"3C", - X"51",X"50",X"50",X"60",X"50",X"50",X"60",X"74",X"A2",X"00",X"60",X"60",X"70",X"70",X"60",X"60", - X"60",X"70",X"70",X"70",X"50",X"50",X"80",X"80",X"50",X"50",X"50",X"80",X"80",X"80",X"A0",X"00", - X"84",X"32",X"A9",X"04",X"85",X"33",X"84",X"8D",X"A9",X"00",X"85",X"8B",X"84",X"8E",X"A2",X"08", - X"B1",X"32",X"29",X"3F",X"C9",X"38",X"26",X"8B",X"C8",X"CA",X"D0",X"F4",X"A6",X"8D",X"BD",X"00", - X"01",X"E6",X"8D",X"A8",X"A5",X"8B",X"9D",X"00",X"01",X"84",X"8B",X"A4",X"8E",X"A2",X"08",X"A9", - X"00",X"26",X"8B",X"90",X"04",X"A9",X"3F",X"45",X"EF",X"91",X"32",X"C8",X"CA",X"D0",X"F0",X"98", - X"D0",X"02",X"E6",X"33",X"C0",X"C0",X"D0",X"C0",X"A5",X"33",X"C9",X"07",X"D0",X"BA",X"60",X"C9", - X"08",X"90",X"0C",X"C9",X"F8",X"B0",X"08",X"C9",X"80",X"A9",X"08",X"90",X"02",X"A9",X"F8",X"C9", - X"80",X"6A",X"A8",X"A9",X"00",X"6A",X"60",X"A9",X"FF",X"A2",X"00",X"85",X"C1",X"85",X"C2",X"F8", - X"A5",X"FB",X"18",X"6D",X"8E",X"01",X"8D",X"8E",X"01",X"A5",X"FC",X"6D",X"8F",X"01",X"8D",X"8F", - X"01",X"AD",X"90",X"01",X"69",X"00",X"8D",X"90",X"01",X"AD",X"91",X"01",X"69",X"00",X"B0",X"1C", - X"8D",X"91",X"01",X"AD",X"8B",X"01",X"18",X"65",X"89",X"8D",X"8B",X"01",X"AD",X"8C",X"01",X"69", - X"00",X"8D",X"8C",X"01",X"AD",X"8D",X"01",X"69",X"00",X"8D",X"8D",X"01",X"D8",X"A0",X"00",X"B9", - X"02",X"00",X"D5",X"A8",X"B9",X"03",X"00",X"F5",X"AA",X"B9",X"04",X"00",X"F5",X"AC",X"90",X"2E", - X"C8",X"C8",X"C8",X"C0",X"18",X"90",X"E8",X"CA",X"10",X"E3",X"A5",X"C2",X"30",X"0E",X"C5",X"C1", - X"90",X"0A",X"69",X"02",X"C9",X"18",X"90",X"02",X"A9",X"FF",X"85",X"C2",X"A9",X"00",X"85",X"C0", - X"A5",X"C2",X"25",X"C1",X"10",X"07",X"A9",X"00",X"85",X"01",X"20",X"60",X"2D",X"60",X"86",X"8D", - X"84",X"8E",X"94",X"C1",X"A2",X"17",X"B5",X"17",X"95",X"1A",X"BD",X"FF",X"FF",X"95",X"02",X"CA", - X"E4",X"8E",X"D0",X"F2",X"A9",X"01",X"95",X"1A",X"A9",X"00",X"95",X"1B",X"95",X"1C",X"85",X"B9", - X"A6",X"8D",X"B5",X"AC",X"99",X"04",X"00",X"B5",X"AA",X"99",X"03",X"00",X"B5",X"A8",X"99",X"02", - X"00",X"A9",X"F0",X"85",X"01",X"D0",X"A0",X"A9",X"1F",X"45",X"F5",X"85",X"91",X"A9",X"04",X"45", - X"F7",X"85",X"92",X"A5",X"AC",X"38",X"20",X"9E",X"38",X"A5",X"AA",X"20",X"9E",X"38",X"A5",X"A8", - X"18",X"20",X"9E",X"38",X"AD",X"01",X"08",X"29",X"1C",X"F0",X"1D",X"A9",X"07",X"45",X"F7",X"85", - X"92",X"A9",X"1F",X"45",X"F5",X"85",X"91",X"A5",X"AD",X"38",X"20",X"9E",X"38",X"A9",X"2E",X"20", - X"85",X"38",X"A5",X"AB",X"18",X"20",X"9E",X"38",X"A9",X"9F",X"45",X"F5",X"85",X"91",X"A9",X"05", - X"45",X"F7",X"85",X"92",X"A5",X"04",X"38",X"20",X"9E",X"38",X"A5",X"03",X"20",X"9E",X"38",X"A5", - X"02",X"18",X"4C",X"9E",X"38",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", - X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"F5",X"A2",X"02",X"AD", - X"01",X"0C",X"E0",X"01",X"F0",X"03",X"B0",X"02",X"0A",X"0A",X"0A",X"B5",X"CF",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"D4",X"29",X"07",X"C9",X"07",X"98",X"90", - X"02",X"E9",X"01",X"95",X"CF",X"AD",X"01",X"0C",X"29",X"10",X"D0",X"04",X"A9",X"F0",X"85",X"D2", - X"A5",X"D2",X"F0",X"08",X"C6",X"D2",X"A9",X"00",X"95",X"CF",X"95",X"CC",X"18",X"B5",X"CC",X"F0", - X"23",X"D6",X"CC",X"D0",X"1F",X"38",X"B0",X"1C",X"C9",X"1B",X"B0",X"09",X"B5",X"CF",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"CF",X"B5",X"CC",X"F0",X"01",X"38", - X"A9",X"78",X"95",X"CC",X"90",X"2A",X"A9",X"00",X"E0",X"01",X"90",X"16",X"F0",X"0C",X"A5",X"D3", - X"29",X"0C",X"4A",X"4A",X"F0",X"0C",X"69",X"02",X"D0",X"08",X"A5",X"D3",X"29",X"10",X"F0",X"02", - X"A9",X"01",X"38",X"48",X"65",X"CA",X"85",X"CA",X"68",X"38",X"65",X"C9",X"85",X"C9",X"F6",X"C5", - X"CA",X"30",X"03",X"4C",X"AF",X"33",X"A5",X"D3",X"4A",X"4A",X"4A",X"4A",X"4A",X"A8",X"A5",X"CA", - X"38",X"F9",X"62",X"34",X"30",X"14",X"85",X"CA",X"E6",X"CB",X"C0",X"03",X"D0",X"0C",X"E6",X"CB", - X"D0",X"08",X"7F",X"02",X"04",X"04",X"05",X"03",X"7F",X"7F",X"A5",X"D3",X"29",X"03",X"A8",X"F0", - X"1A",X"4A",X"69",X"00",X"49",X"FF",X"38",X"65",X"C9",X"B0",X"08",X"65",X"CB",X"30",X"0E",X"85", - X"CB",X"A9",X"00",X"C0",X"02",X"B0",X"02",X"E6",X"C8",X"E6",X"C8",X"85",X"C9",X"E6",X"D4",X"A5", - X"D4",X"4A",X"B0",X"27",X"A0",X"00",X"A2",X"02",X"B5",X"C5",X"F0",X"09",X"C9",X"10",X"90",X"05", - X"69",X"EF",X"C8",X"95",X"C5",X"CA",X"10",X"F0",X"98",X"D0",X"10",X"A2",X"02",X"B5",X"C5",X"F0", - X"07",X"18",X"69",X"EF",X"95",X"C5",X"30",X"03",X"CA",X"10",X"F2",X"60",X"14",X"35",X"1F",X"35", - X"2B",X"35",X"36",X"35",X"42",X"35",X"54",X"35",X"69",X"35",X"7E",X"35",X"92",X"35",X"A3",X"35", - X"B7",X"35",X"CB",X"35",X"DE",X"35",X"F0",X"35",X"05",X"36",X"1A",X"36",X"2E",X"36",X"3B",X"36", - X"48",X"36",X"59",X"36",X"6C",X"36",X"83",X"36",X"A3",X"36",X"BB",X"36",X"D2",X"36",X"E2",X"36", - X"F1",X"36",X"02",X"37",X"11",X"37",X"20",X"37",X"35",X"37",X"48",X"37",X"53",X"37",X"62",X"37", - X"7B",X"37",X"8E",X"37",X"9E",X"37",X"AA",X"37",X"B6",X"37",X"C2",X"37",X"CF",X"37",X"E3",X"37", - X"FF",X"37",X"11",X"38",X"6E",X"05",X"51",X"06",X"50",X"4C",X"41",X"59",X"45",X"52",X"A0",X"6E", - X"05",X"51",X"06",X"53",X"50",X"49",X"45",X"4C",X"45",X"52",X"A0",X"6E",X"05",X"51",X"06",X"4A", - X"4F",X"55",X"45",X"55",X"52",X"A0",X"6E",X"05",X"51",X"06",X"4A",X"55",X"47",X"41",X"44",X"4F", - X"52",X"A0",X"13",X"05",X"AC",X"06",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"F3",X"04",X"CC",X"06",X"31",X"20",X"4D",X"55",X"45",X"4E",X"5A",X"45", - X"20",X"32",X"20",X"53",X"50",X"49",X"45",X"4C",X"C5",X"F3",X"04",X"CC",X"06",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"F3",X"04", - X"CC",X"06",X"31",X"20",X"46",X"49",X"43",X"48",X"41",X"20",X"32",X"20",X"4A",X"55",X"45",X"47", - X"4F",X"D3",X"13",X"05",X"AC",X"06",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"F3",X"04",X"CC",X"06",X"31",X"20",X"4D",X"55",X"45",X"4E",X"5A",X"45",X"20", - X"31",X"20",X"53",X"50",X"49",X"45",X"CC",X"F3",X"04",X"CC",X"06",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"F3",X"04",X"CC",X"06",X"31", - X"20",X"46",X"49",X"43",X"48",X"41",X"20",X"31",X"20",X"4A",X"55",X"45",X"47",X"CF",X"13",X"05", - X"AC",X"06",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"F3",X"04",X"CC",X"06",X"32",X"20",X"4D",X"55",X"45",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"F3",X"04",X"CC",X"06",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"F3",X"04",X"CC",X"06",X"32",X"20", - X"46",X"49",X"43",X"48",X"41",X"53",X"20",X"31",X"20",X"4A",X"55",X"45",X"47",X"CF",X"6F",X"05", - X"50",X"06",X"47",X"41",X"4D",X"45",X"20",X"4F",X"56",X"45",X"D2",X"6F",X"05",X"50",X"06",X"53", - X"50",X"49",X"45",X"4C",X"45",X"4E",X"44",X"C5",X"0F",X"05",X"B0",X"06",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"EF",X"04",X"D0",X"06",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"AB",X"04",X"14",X"07", - 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"2B",X"04",X"94",X"07",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"8B",X"04",X"34",X"07",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"8B",X"04",X"34",X"07",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"F1",X"04",X"CE",X"06",X"42",X"4F",X"4E",X"55",X"53",X"20",X"45",X"56",X"45",X"52", - X"59",X"A0",X"F1",X"04",X"CE",X"06",X"42",X"4F",X"4E",X"55",X"53",X"20",X"4A",X"45",X"44",X"45", - X"A0",X"D1",X"04",X"EE",X"06",X"42",X"4F",X"4E",X"55",X"53",X"20",X"43",X"48",X"41",X"51",X"55", - X"45",X"A0",X"F1",X"04",X"CE",X"06",X"45",X"58",X"54",X"52",X"41",X"20",X"43",X"41",X"44",X"41", - X"A0",X"5D",X"05",X"62",X"06",X"48",X"49",X"47",X"48",X"20",X"53",X"43",X"4F",X"52",X"45",X"D3", - X"DD",X"04",X"E2",X"06",X"48",X"4F",X"45",X"43",X"48",X"53",X"54",X"45",X"52",X"47",X"45",X"42", - X"4E",X"49",X"53",X"53",X"C5",X"1D",X"05",X"A2",X"06",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"C5",X"9D",X"05",X"22",X"06",X"52",X"45",X"43",X"4F", - X"52",X"44",X"D3",X"2C",X"05",X"93",X"06",X"47",X"52",X"45",X"41",X"54",X"20",X"53",X"43",X"4F", - X"52",X"C5",X"8C",X"04",X"33",X"07",X"47",X"52",X"4F",X"53",X"53",X"41",X"52",X"54",X"49",X"47", - X"45",X"53",X"20",X"45",X"52",X"47",X"45",X"42",X"4E",X"49",X"D3",X"EC",X"04",X"D3",X"06",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"0C",X"05", - X"B3",X"06",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"52",X"05", - X"6D",X"06",X"43",X"52",X"45",X"44",X"49",X"54",X"53",X"A0",X"52",X"05",X"6D",X"06",X"4B",X"52", - X"45",X"44",X"49",X"54",X"45",X"A0",X"52",X"05",X"6D",X"06",X"43",X"52",X"45",X"44",X"49",X"54", - X"53",X"A0",X"52",X"05",X"6D",X"06",X"43",X"52",X"45",X"44",X"49",X"54",X"4F",X"53",X"A0",X"F0", - X"04",X"CF",X"06",X"32",X"20",X"43",X"52",X"45",X"44",X"49",X"54",X"20",X"4D",X"49",X"4E",X"49", - X"4D",X"55",X"CD",X"30",X"04",X"8F",X"07",X"47",X"45",X"4C",X"44",X"45",X"49",X"4E",X"57",X"55", - X"52",X"46",X"20",X"46",X"55",X"52",X"20",X"32",X"20",X"53",X"50",X"49",X"45",X"4C",X"C5",X"F0", - X"04",X"CF",X"06",X"32",X"20",X"4A",X"55",X"45",X"58",X"20",X"4D",X"49",X"4E",X"49",X"4D",X"55", - X"CD",X"F0",X"04",X"CF",X"06",X"32",X"20",X"4A",X"55",X"45",X"47",X"41",X"53",X"20",X"4D",X"49", - X"4E",X"49",X"4D",X"B0",X"0A",X"66",X"8C",X"A8",X"0A",X"85",X"8B",X"A5",X"FD",X"29",X"03",X"05", - X"8B",X"0A",X"AA",X"BD",X"BC",X"34",X"85",X"93",X"BD",X"BD",X"34",X"85",X"94",X"A0",X"00",X"A6", - X"EF",X"F0",X"02",X"A0",X"02",X"B1",X"93",X"85",X"91",X"C8",X"B1",X"93",X"85",X"92",X"A0",X"04", - X"84",X"8B",X"A4",X"8B",X"B1",X"93",X"29",X"3F",X"C9",X"20",X"F0",X"04",X"A6",X"8C",X"10",X"02", - X"A9",X"00",X"C9",X"30",X"90",X"02",X"29",X"2F",X"20",X"85",X"38",X"A4",X"8B",X"E6",X"8B",X"B1", - X"93",X"10",X"DF",X"60",X"A0",X"00",X"84",X"8C",X"F0",X"D6",X"10",X"05",X"49",X"FF",X"18",X"69", - X"01",X"60",X"B9",X"1A",X"00",X"A8",X"F0",X"02",X"45",X"EF",X"A0",X"00",X"91",X"91",X"A9",X"20", - X"45",X"EF",X"18",X"65",X"91",X"85",X"91",X"A5",X"F3",X"65",X"92",X"85",X"92",X"60",X"48",X"08", - X"4A",X"4A",X"4A",X"4A",X"28",X"20",X"AB",X"38",X"68",X"29",X"0F",X"90",X"04",X"29",X"0F",X"F0", - X"03",X"18",X"09",X"20",X"08",X"C9",X"2A",X"90",X"02",X"E9",X"29",X"20",X"85",X"38",X"28",X"60", - X"48",X"8A",X"48",X"98",X"48",X"D8",X"A5",X"D2",X"F0",X"0A",X"A9",X"10",X"8D",X"02",X"10",X"A9", - X"AF",X"8D",X"03",X"10",X"2C",X"00",X"0C",X"70",X"03",X"4C",X"B4",X"39",X"E6",X"8A",X"E6",X"00", - X"D0",X"11",X"E6",X"01",X"F8",X"A5",X"FB",X"18",X"69",X"01",X"85",X"FB",X"A5",X"FC",X"69",X"00", - X"85",X"FC",X"D8",X"A5",X"8A",X"C9",X"08",X"B0",X"FE",X"A5",X"C8",X"C9",X"25",X"B0",X"FE",X"C9", - X"13",X"90",X"04",X"A9",X"12",X"85",X"C8",X"AD",X"03",X"0C",X"A6",X"88",X"AC",X"B8",X"01",X"20", - X"31",X"3A",X"8C",X"B8",X"01",X"48",X"98",X"18",X"65",X"B9",X"85",X"B9",X"68",X"AC",X"B9",X"01", - X"20",X"31",X"3A",X"8C",X"B9",X"01",X"98",X"20",X"7C",X"38",X"18",X"65",X"BB",X"85",X"BB",X"B5", - X"C2",X"30",X"08",X"C9",X"40",X"90",X"15",X"29",X"3F",X"10",X"0B",X"29",X"3F",X"18",X"69",X"03", - X"C9",X"2A",X"90",X"02",X"A9",X"00",X"95",X"C2",X"AA",X"20",X"5A",X"26",X"A2",X"0F",X"B5",X"64", - X"9D",X"E0",X"07",X"B5",X"54",X"A0",X"00",X"E0",X"0D",X"F0",X"07",X"B4",X"44",X"10",X"03",X"18", - X"69",X"01",X"9D",X"D0",X"07",X"98",X"29",X"80",X"85",X"99",X"AD",X"00",X"0C",X"29",X"20",X"D0", - X"05",X"B5",X"34",X"4C",X"9D",X"39",X"B5",X"34",X"E0",X"0C",X"B0",X"1F",X"29",X"3F",X"C9",X"30", - X"B0",X"19",X"29",X"0F",X"85",X"98",X"B5",X"64",X"29",X"07",X"F0",X"0D",X"A8",X"A9",X"08",X"C0", - X"06",X"B0",X"06",X"C0",X"03",X"90",X"02",X"A9",X"0C",X"45",X"98",X"45",X"99",X"9D",X"C0",X"07", - X"B5",X"34",X"29",X"40",X"F0",X"06",X"E0",X"0C",X"B0",X"02",X"A9",X"0C",X"09",X"39",X"9D",X"F0", - X"07",X"CA",X"10",X"9A",X"AD",X"00",X"0C",X"29",X"20",X"D0",X"1F",X"A5",X"D5",X"30",X"3B",X"E6", - X"D5",X"2C",X"00",X"0C",X"50",X"04",X"A9",X"00",X"85",X"D5",X"A5",X"D5",X"0A",X"0A",X"A2",X"03", - X"9D",X"04",X"14",X"69",X"01",X"CA",X"10",X"F8",X"30",X"20",X"20",X"AD",X"33",X"A2",X"02",X"B5", - X"C5",X"9D",X"00",X"1C",X"CA",X"10",X"F8",X"A2",X"0A",X"A9",X"F4",X"5D",X"03",X"20",X"CA",X"10", - X"FA",X"AA",X"F0",X"06",X"BA",X"A9",X"03",X"9D",X"04",X"01",X"A2",X"02",X"BD",X"00",X"0C",X"A8", - X"38",X"F5",X"BD",X"94",X"BD",X"29",X"0F",X"C9",X"08",X"90",X"02",X"09",X"F0",X"A8",X"F0",X"14", - X"55",X"BA",X"10",X"08",X"98",X"5D",X"00",X"0C",X"10",X"02",X"B4",X"BA",X"98",X"95",X"BA",X"18", - X"75",X"B9",X"95",X"B9",X"CA",X"CA",X"10",X"D4",X"8D",X"00",X"18",X"68",X"A8",X"68",X"AA",X"68", - X"40",X"0A",X"90",X"06",X"0A",X"90",X"0E",X"A0",X"00",X"60",X"C0",X"FA",X"F0",X"05",X"B0",X"02", - X"A0",X"00",X"88",X"0A",X"60",X"C0",X"06",X"F0",X"05",X"90",X"02",X"A0",X"00",X"C8",X"60",X"A0", - X"3C",X"A9",X"FF",X"59",X"78",X"01",X"88",X"10",X"FA",X"AC",X"B5",X"01",X"8D",X"B5",X"01",X"98", - X"4D",X"B5",X"01",X"60",X"A2",X"2F",X"BD",X"B0",X"3A",X"95",X"02",X"CA",X"10",X"F8",X"20",X"4F", - X"3A",X"D0",X"2B",X"A5",X"FD",X"29",X"7C",X"CD",X"8A",X"01",X"8D",X"8A",X"01",X"D0",X"1E",X"AD", - X"7A",X"01",X"F0",X"1A",X"A2",X"08",X"BD",X"78",X"01",X"95",X"02",X"C9",X"9A",X"B0",X"0F",X"29", - X"0F",X"C9",X"0A",X"B0",X"09",X"BD",X"81",X"01",X"95",X"1A",X"CA",X"10",X"E9",X"60",X"A9",X"00", - X"A2",X"3E",X"9D",X"78",X"01",X"CA",X"10",X"FA",X"A5",X"FD",X"29",X"7C",X"8D",X"8A",X"01",X"60", - X"43",X"65",X"01",X"32",X"54",X"01",X"20",X"43",X"01",X"10",X"32",X"01",X"10",X"30",X"01",X"05", - X"28",X"01",X"01",X"22",X"01",X"02",X"21",X"01",X"05",X"0A",X"04",X"04",X"06",X"14",X"03",X"01", - X"04",X"04",X"03",X"02",X"05",X"04",X"00",X"04",X"05",X"17",X"04",X"06",X"17",X"07",X"0A",X"12", - X"A2",X"3F",X"20",X"EE",X"3A",X"9D",X"78",X"01",X"CA",X"10",X"F7",X"86",X"F9",X"60",X"9D",X"00", - X"16",X"A0",X"08",X"8C",X"80",X"16",X"C8",X"8C",X"80",X"16",X"88",X"8C",X"80",X"16",X"A0",X"00", - X"BD",X"00",X"17",X"8C",X"80",X"16",X"60",X"A5",X"00",X"29",X"03",X"D0",X"17",X"8D",X"80",X"16", - X"A6",X"F9",X"30",X"10",X"46",X"FA",X"90",X"0D",X"A9",X"02",X"8D",X"80",X"16",X"A9",X"0A",X"8D", - X"80",X"16",X"C6",X"F9",X"60",X"78",X"20",X"EE",X"3A",X"DD",X"78",X"01",X"D0",X"07",X"CA",X"10", - X"F5",X"58",X"86",X"F9",X"60",X"58",X"86",X"F9",X"A9",X"06",X"8D",X"80",X"16",X"BD",X"78",X"01", - X"9D",X"00",X"16",X"A9",X"0E",X"8D",X"80",X"16",X"E6",X"FA",X"60",X"D8",X"A2",X"FF",X"9A",X"E8", - X"8A",X"95",X"00",X"9D",X"00",X"01",X"9D",X"00",X"04",X"9D",X"00",X"05",X"9D",X"00",X"06",X"9D", - X"00",X"07",X"CA",X"D0",X"EC",X"8D",X"0F",X"10",X"8D",X"08",X"10",X"8D",X"00",X"24",X"8D",X"07", - X"1C",X"AD",X"00",X"0C",X"29",X"20",X"F0",X"19",X"AD",X"00",X"08",X"85",X"FD",X"CA",X"86",X"86", - X"86",X"C1",X"86",X"C2",X"A9",X"01",X"85",X"FF",X"20",X"E0",X"3A",X"20",X"64",X"3A",X"4C",X"0E", - X"20",X"8E",X"04",X"14",X"8E",X"01",X"10",X"8E",X"03",X"10",X"8E",X"05",X"10",X"8E",X"07",X"10", - X"E8",X"8E",X"05",X"14",X"8E",X"0D",X"14",X"E8",X"8E",X"06",X"14",X"8E",X"0E",X"14",X"E8",X"8E", - X"07",X"14",X"8E",X"0F",X"14",X"A2",X"00",X"B5",X"00",X"D0",X"43",X"A9",X"11",X"95",X"00",X"A8", - X"55",X"00",X"D0",X"3A",X"98",X"0A",X"90",X"F5",X"E8",X"D0",X"EC",X"8D",X"00",X"20",X"8A",X"85", - X"8B",X"2A",X"85",X"8C",X"A0",X"00",X"A2",X"11",X"B1",X"8B",X"D0",X"28",X"8A",X"91",X"8B",X"51", - X"8B",X"D0",X"21",X"8A",X"0A",X"AA",X"90",X"F4",X"C8",X"D0",X"EB",X"8D",X"00",X"20",X"E6",X"8C", - X"A5",X"8C",X"C9",X"02",X"D0",X"02",X"A9",X"04",X"C9",X"08",X"90",X"D6",X"B0",X"5F",X"C9",X"10", - X"A9",X"00",X"10",X"12",X"A6",X"8C",X"E0",X"04",X"90",X"F4",X"AA",X"98",X"29",X"30",X"4A",X"4A", - X"4A",X"4A",X"69",X"01",X"E0",X"10",X"2A",X"A8",X"A9",X"40",X"8D",X"00",X"10",X"A2",X"03",X"8E", - X"0F",X"10",X"A2",X"10",X"A9",X"AF",X"8D",X"01",X"10",X"2C",X"00",X"0C",X"50",X"FB",X"2C",X"00", - X"0C",X"70",X"FB",X"8D",X"00",X"20",X"CA",X"D0",X"F0",X"8E",X"01",X"10",X"A2",X"10",X"2C",X"00", - X"0C",X"50",X"FB",X"2C",X"00",X"0C",X"70",X"FB",X"8D",X"00",X"20",X"CA",X"D0",X"F0",X"88",X"10", - X"D1",X"8D",X"00",X"20",X"AD",X"00",X"0C",X"29",X"20",X"F0",X"F6",X"D0",X"FE",X"AD",X"01",X"0C", - X"29",X"10",X"F0",X"03",X"4C",X"DE",X"3C",X"AA",X"95",X"00",X"E8",X"D0",X"FB",X"A2",X"0F",X"A9", - X"F8",X"95",X"64",X"CA",X"10",X"FB",X"A9",X"07",X"85",X"8C",X"A0",X"BF",X"A9",X"2D",X"A2",X"08", - X"91",X"8B",X"88",X"CA",X"D0",X"FA",X"38",X"E9",X"01",X"C9",X"2A",X"B0",X"F1",X"C0",X"FF",X"D0", - X"EB",X"C6",X"8C",X"A5",X"8C",X"C9",X"04",X"B0",X"E3",X"58",X"AD",X"00",X"0C",X"29",X"20",X"D0", - X"F9",X"46",X"8A",X"8D",X"00",X"20",X"AD",X"01",X"0C",X"29",X"E0",X"49",X"E0",X"F0",X"EB",X"A9", - X"1D",X"78",X"9D",X"00",X"04",X"9D",X"00",X"05",X"9D",X"00",X"06",X"E8",X"D0",X"F4",X"9D",X"00", - X"07",X"E8",X"E0",X"C0",X"90",X"F8",X"A2",X"08",X"8E",X"05",X"14",X"A2",X"0F",X"8E",X"04",X"14", - X"AD",X"00",X"0C",X"29",X"20",X"D0",X"F9",X"8D",X"00",X"20",X"46",X"8A",X"10",X"F2",X"A2",X"00", - X"8A",X"9D",X"00",X"07",X"A9",X"00",X"95",X"00",X"9D",X"00",X"04",X"9D",X"00",X"05",X"9D",X"00", - X"06",X"E8",X"D0",X"EC",X"CA",X"86",X"D5",X"86",X"E3",X"8D",X"03",X"1C",X"8D",X"04",X"1C",X"A2", - X"0F",X"8A",X"09",X"80",X"95",X"54",X"95",X"64",X"CA",X"10",X"F6",X"AD",X"0A",X"10",X"4D",X"0A", - X"10",X"85",X"E5",X"A9",X"03",X"8D",X"0F",X"10",X"A2",X"00",X"86",X"8B",X"A9",X"20",X"85",X"8C", - X"A2",X"1F",X"A9",X"FF",X"A0",X"00",X"8E",X"00",X"20",X"51",X"8B",X"C8",X"D0",X"FB",X"A8",X"8A", - X"29",X"07",X"C9",X"01",X"98",X"B0",X"03",X"48",X"A9",X"FF",X"E6",X"8C",X"CA",X"10",X"E5",X"A9", - X"04",X"85",X"92",X"A2",X"03",X"8A",X"49",X"3F",X"85",X"91",X"68",X"F0",X"11",X"48",X"8A",X"09", - X"20",X"20",X"85",X"38",X"A9",X"00",X"20",X"85",X"38",X"68",X"18",X"20",X"9E",X"38",X"CA",X"10", - X"E4",X"20",X"E0",X"3A",X"A0",X"06",X"B9",X"8B",X"01",X"99",X"8E",X"00",X"88",X"10",X"F7",X"F8", - X"AD",X"8B",X"01",X"0D",X"8C",X"01",X"0D",X"8D",X"01",X"F0",X"1F",X"C8",X"C8",X"F0",X"1B",X"A5", - X"91",X"38",X"E5",X"8E",X"85",X"91",X"A5",X"92",X"E5",X"8F",X"85",X"92",X"A5",X"93",X"E5",X"90", - X"85",X"93",X"A5",X"94",X"E9",X"00",X"85",X"94",X"10",X"E2",X"D8",X"84",X"8D",X"58",X"46",X"8A", - X"90",X"FC",X"AD",X"00",X"0C",X"29",X"20",X"D0",X"FE",X"8D",X"00",X"20",X"AD",X"01",X"0C",X"4A", - X"26",X"EA",X"A5",X"EA",X"29",X"03",X"C9",X"02",X"D0",X"24",X"A5",X"E6",X"AA",X"18",X"69",X"02", - X"29",X"06",X"85",X"E6",X"A9",X"00",X"9D",X"01",X"10",X"A5",X"E7",X"18",X"69",X"01",X"29",X"0F", - X"85",X"E7",X"A6",X"E8",X"E8",X"8A",X"29",X"0F",X"AA",X"8E",X"04",X"14",X"86",X"E8",X"AD",X"01", - X"0C",X"4A",X"4A",X"26",X"EB",X"A5",X"EB",X"29",X"03",X"C9",X"02",X"D0",X"16",X"E6",X"E9",X"A5", - X"E9",X"A0",X"01",X"18",X"69",X"01",X"29",X"0F",X"99",X"04",X"14",X"99",X"0C",X"14",X"C8",X"C0", - X"04",X"90",X"F0",X"AD",X"01",X"0C",X"4A",X"4A",X"4A",X"26",X"EC",X"A5",X"EC",X"29",X"03",X"49", - X"02",X"D0",X"07",X"A2",X"0F",X"F6",X"34",X"CA",X"10",X"FB",X"A9",X"05",X"85",X"92",X"A9",X"38", - X"85",X"91",X"AD",X"00",X"08",X"29",X"0C",X"4A",X"4A",X"69",X"01",X"85",X"8B",X"A2",X"05",X"A9", - X"1F",X"24",X"8B",X"10",X"02",X"A9",X"00",X"20",X"85",X"38",X"C6",X"8B",X"CA",X"D0",X"F0",X"A9", - X"37",X"85",X"91",X"A9",X"21",X"20",X"85",X"38",X"A9",X"21",X"20",X"85",X"38",X"A9",X"21",X"20", - X"85",X"38",X"A9",X"36",X"85",X"91",X"A9",X"00",X"A8",X"91",X"91",X"A0",X"40",X"91",X"91",X"AD", - X"01",X"08",X"4A",X"4A",X"4A",X"4A",X"4A",X"F0",X"1B",X"AA",X"C9",X"06",X"B0",X"16",X"BD",X"D8", - X"3F",X"20",X"85",X"38",X"A9",X"00",X"20",X"85",X"38",X"A9",X"21",X"E0",X"03",X"D0",X"02",X"A9", - X"22",X"20",X"85",X"38",X"A9",X"3F",X"85",X"94",X"A9",X"EE",X"2C",X"00",X"08",X"50",X"02",X"A9", - X"F2",X"85",X"93",X"A9",X"35",X"85",X"91",X"20",X"74",X"38",X"AD",X"01",X"0C",X"85",X"DF",X"AD", - X"00",X"08",X"85",X"DD",X"AD",X"01",X"08",X"85",X"DE",X"AD",X"00",X"0C",X"29",X"8F",X"85",X"E0", - X"AD",X"02",X"0C",X"29",X"8F",X"85",X"E1",X"AD",X"03",X"0C",X"85",X"E2",X"AD",X"0A",X"10",X"48", - X"25",X"E3",X"85",X"E3",X"68",X"05",X"E4",X"85",X"E4",X"A2",X"00",X"AD",X"01",X"0C",X"38",X"2A", - X"B0",X"01",X"E8",X"0A",X"D0",X"FA",X"8A",X"A4",X"E6",X"0A",X"0A",X"0A",X"99",X"00",X"10",X"8A", - X"09",X"A0",X"99",X"01",X"10",X"A6",X"E7",X"A0",X"00",X"A5",X"B9",X"84",X"B9",X"18",X"75",X"54", - X"95",X"54",X"B5",X"64",X"38",X"E5",X"BB",X"84",X"BB",X"95",X"64",X"A0",X"D0",X"A2",X"05",X"9A", - X"A2",X"07",X"8A",X"BA",X"36",X"DD",X"AA",X"A9",X"21",X"B0",X"02",X"A9",X"20",X"C8",X"99",X"00", - X"04",X"CA",X"10",X"EE",X"98",X"38",X"E9",X"28",X"A8",X"BA",X"CA",X"10",X"E2",X"A9",X"04",X"85", - X"92",X"A9",X"3A",X"85",X"91",X"A5",X"E4",X"49",X"FF",X"05",X"E3",X"05",X"E5",X"F0",X"02",X"A9", - X"25",X"20",X"85",X"38",X"20",X"07",X"3B",X"20",X"4F",X"3A",X"8C",X"B5",X"01",X"F0",X"16",X"48", - X"A9",X"3B",X"85",X"91",X"A9",X"24",X"20",X"85",X"38",X"A9",X"00",X"20",X"85",X"38",X"68",X"20", - X"9E",X"38",X"4C",X"D6",X"3F",X"A9",X"04",X"85",X"92",X"A9",X"E9",X"85",X"91",X"38",X"AD",X"8D", - X"01",X"20",X"9E",X"38",X"AD",X"8C",X"01",X"20",X"9E",X"38",X"AD",X"8B",X"01",X"18",X"20",X"9E", - X"38",X"A9",X"DE",X"85",X"93",X"A9",X"3F",X"85",X"94",X"20",X"74",X"38",X"A9",X"05",X"85",X"92", - X"A9",X"08",X"85",X"91",X"A5",X"8D",X"4A",X"4A",X"4A",X"4A",X"F8",X"18",X"69",X"00",X"D8",X"38", - X"20",X"9E",X"38",X"A9",X"2E",X"20",X"85",X"38",X"A5",X"8D",X"29",X"0F",X"F8",X"18",X"69",X"00", - X"85",X"8E",X"65",X"8E",X"85",X"8E",X"65",X"8E",X"D8",X"C9",X"60",X"90",X"02",X"A9",X"59",X"18", - X"20",X"9E",X"38",X"A9",X"E4",X"85",X"93",X"A9",X"3F",X"85",X"94",X"20",X"74",X"38",X"A5",X"EA", - X"05",X"EB",X"05",X"EC",X"D0",X"10",X"AD",X"B5",X"01",X"49",X"FF",X"8D",X"B5",X"01",X"A9",X"3D", - X"85",X"F9",X"A9",X"00",X"85",X"FA",X"4C",X"9E",X"3D",X"22",X"24",X"24",X"25",X"23",X"20",X"50", - X"4C",X"41",X"59",X"D3",X"20",X"47",X"41",X"4D",X"45",X"20",X"54",X"49",X"4D",X"C5",X"48",X"41", - X"52",X"C4",X"45",X"41",X"53",X"D9",X"4C",X"F6",X"3F",X"13",X"F6",X"3F",X"4B",X"3B",X"C0",X"38"); -begin -process(clk) -begin - if rising_edge(clk) then - data <= rom_data(to_integer(unsigned(addr))); - end if; -end process; -end architecture;