diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/LodeRunner_MiST.qpf b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/LodeRunner_MiST.qpf new file mode 100644 index 00000000..dbbbab92 --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/LodeRunner_MiST.qpf @@ -0,0 +1,30 @@ +# -------------------------------------------------------------------------- # +# +# Copyright (C) 1991-2011 Altera Corporation +# Your use of Altera Corporation's design tools, logic functions +# and other software and tools, and its AMPP partner logic +# functions, and any output files from any of the foregoing +# (including device programming or simulation files), and any +# associated documentation or information are expressly subject +# to the terms and conditions of the Altera Program License +# Subscription Agreement, Altera MegaCore Function License +# Agreement, or other applicable license agreement, including, +# without limitation, that your use is for the sole purpose of +# programming logic devices manufactured by Altera and sold by +# Altera or its authorized distributors. Please refer to the +# applicable agreement for further details. +# +# -------------------------------------------------------------------------- # +# +# Quartus II +# Version 10.1 Build 197 01/19/2011 Service Pack 1 SJ Full Version +# Date created = 23:49:02 July 13, 2012 +# +# -------------------------------------------------------------------------- # + +QUARTUS_VERSION = "10.1" +DATE = "23:49:02 July 13, 2012" + +# Revisions + +PROJECT_REVISION = "LodeRunner_MiST" diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/LodeRunner_MiST.qsf b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/LodeRunner_MiST.qsf new file mode 100644 index 00000000..317e418d --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/LodeRunner_MiST.qsf @@ -0,0 +1,275 @@ +# -------------------------------------------------------------------------- # +# +# Copyright (C) 1991-2013 Altera Corporation +# Your use of Altera Corporation's design tools, logic functions +# and other software and tools, and its AMPP partner logic +# functions, and any output files from any of the foregoing +# (including device programming or simulation files), and any +# associated documentation or information are expressly subject +# to the terms and conditions of the Altera Program License +# Subscription Agreement, Altera MegaCore Function License +# Agreement, or other applicable license agreement, including, +# without limitation, that your use is for the sole purpose of +# programming logic devices manufactured by Altera and sold by +# Altera or its authorized distributors. Please refer to the +# applicable agreement for further details. +# +# -------------------------------------------------------------------------- # +# +# Quartus II 64-Bit +# Version 13.1.0 Build 162 10/23/2013 SJ Web Edition +# Date created = 21:06:00 February 29, 2020 +# +# -------------------------------------------------------------------------- # +# +# Notes: +# +# 1) The default values for assignments are stored in the file: +# LodeRunner_MiST_assignment_defaults.qdf +# If this file doesn't exist, see file: +# assignment_defaults.qdf +# +# 2) Altera recommends that you do not modify this file. This +# file is updated automatically by the Quartus II software +# and any changes you make may be lost or overwritten. +# +# -------------------------------------------------------------------------- # + + + +# Project-Wide Assignments +# ======================== +set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files +set_global_assignment -name NUM_PARALLEL_PROCESSORS ALL +set_global_assignment -name LAST_QUARTUS_VERSION 13.1 +set_global_assignment -name PRE_FLOW_SCRIPT_FILE "quartus_sh:rtl/build_id.tcl" +set_global_assignment -name SMART_RECOMPILE ON +set_global_assignment -name SYSTEMVERILOG_FILE rtl/LodeRunner_MiST.sv +set_global_assignment -name VHDL_FILE rtl/target_top.vhd +set_global_assignment -name VHDL_FILE rtl/platform_variant_pkg.vhd +set_global_assignment -name VHDL_FILE rtl/platform_pkg.vhd +set_global_assignment -name VHDL_FILE rtl/platform.vhd +set_global_assignment -name VHDL_FILE rtl/pace_pkg_body.vhd +set_global_assignment -name VHDL_FILE rtl/pace_pkg.vhd +set_global_assignment -name VHDL_FILE rtl/pace.vhd +set_global_assignment -name VHDL_FILE rtl/Graphics.VHD +set_global_assignment -name VHDL_FILE rtl/video_mixer.vhd +set_global_assignment -name VHDL_FILE rtl/video_controller_pkg_body.vhd +set_global_assignment -name VHDL_FILE rtl/video_controller_pkg.vhd +set_global_assignment -name VHDL_FILE rtl/video_controller.vhd +set_global_assignment -name VHDL_FILE rtl/tilemapctl_e.vhd +set_global_assignment -name VHDL_FILE rtl/tilemapctl.vhd +set_global_assignment -name VHDL_FILE rtl/bitmapctl_e.vhd +set_global_assignment -name VHDL_FILE rtl/spritereg.vhd +set_global_assignment -name VHDL_FILE rtl/spritectl.vhd +set_global_assignment -name VHDL_FILE rtl/sprite_pkg_body.vhd +set_global_assignment -name VHDL_FILE rtl/sprite_pkg.vhd +set_global_assignment -name VHDL_FILE rtl/sprite_array.vhd +set_global_assignment -name VHDL_FILE rtl/Inputs.VHD +set_global_assignment -name VHDL_FILE rtl/input_mapper.vhd +set_global_assignment -name VHDL_FILE rtl/dprom_2r.vhd +set_global_assignment -name VHDL_FILE rtl/dpram.vhd +set_global_assignment -name VHDL_FILE rtl/sprom.vhd +set_global_assignment -name VHDL_FILE rtl/spram.vhd +set_global_assignment -name VHDL_FILE rtl/clk_div.vhd +set_global_assignment -name SYSTEMVERILOG_FILE rtl/sdram.sv +set_global_assignment -name VHDL_FILE rtl/pll_mist.vhd +set_global_assignment -name VHDL_FILE rtl/cpu68.vhd +set_global_assignment -name SYSTEMVERILOG_FILE rtl/YM2149.sv +set_global_assignment -name VHDL_FILE rtl/Sound_Board.vhd +set_global_assignment -name VHDL_FILE rtl/roms/ldrun/snd_prg.vhd +set_global_assignment -name QIP_FILE ../../../common/mist/mist.qip +set_global_assignment -name QIP_FILE ../../../common/CPU/T80/T80.qip +set_global_assignment -name VHDL_FILE ../../../common/CPU/T80/Z80.vhd + +# Pin & Location Assignments +# ========================== +set_location_assignment PIN_7 -to LED +set_location_assignment PIN_54 -to CLOCK_27 +set_location_assignment PIN_144 -to VGA_R[5] +set_location_assignment PIN_143 -to VGA_R[4] +set_location_assignment PIN_142 -to VGA_R[3] +set_location_assignment PIN_141 -to VGA_R[2] +set_location_assignment PIN_137 -to VGA_R[1] +set_location_assignment PIN_135 -to VGA_R[0] +set_location_assignment PIN_133 -to VGA_B[5] +set_location_assignment PIN_132 -to VGA_B[4] +set_location_assignment PIN_125 -to VGA_B[3] +set_location_assignment PIN_121 -to VGA_B[2] +set_location_assignment PIN_120 -to VGA_B[1] +set_location_assignment PIN_115 -to VGA_B[0] +set_location_assignment PIN_114 -to VGA_G[5] +set_location_assignment PIN_113 -to VGA_G[4] +set_location_assignment PIN_112 -to VGA_G[3] +set_location_assignment PIN_111 -to VGA_G[2] +set_location_assignment PIN_110 -to VGA_G[1] +set_location_assignment PIN_106 -to VGA_G[0] +set_location_assignment PIN_136 -to VGA_VS +set_location_assignment PIN_119 -to VGA_HS +set_location_assignment PIN_65 -to AUDIO_L +set_location_assignment PIN_80 -to AUDIO_R +set_location_assignment PIN_105 -to SPI_DO +set_location_assignment PIN_88 -to SPI_DI +set_location_assignment PIN_126 -to SPI_SCK +set_location_assignment PIN_127 -to SPI_SS2 +set_location_assignment PIN_91 -to SPI_SS3 +set_location_assignment PIN_13 -to CONF_DATA0 +set_location_assignment PIN_49 -to SDRAM_A[0] +set_location_assignment PIN_44 -to SDRAM_A[1] +set_location_assignment PIN_42 -to SDRAM_A[2] +set_location_assignment PIN_39 -to SDRAM_A[3] +set_location_assignment PIN_4 -to SDRAM_A[4] +set_location_assignment PIN_6 -to SDRAM_A[5] +set_location_assignment PIN_8 -to SDRAM_A[6] +set_location_assignment PIN_10 -to SDRAM_A[7] +set_location_assignment PIN_11 -to SDRAM_A[8] +set_location_assignment PIN_28 -to SDRAM_A[9] +set_location_assignment PIN_50 -to SDRAM_A[10] +set_location_assignment PIN_30 -to SDRAM_A[11] +set_location_assignment PIN_32 -to SDRAM_A[12] +set_location_assignment PIN_83 -to SDRAM_DQ[0] +set_location_assignment PIN_79 -to SDRAM_DQ[1] +set_location_assignment PIN_77 -to SDRAM_DQ[2] +set_location_assignment PIN_76 -to SDRAM_DQ[3] +set_location_assignment PIN_72 -to SDRAM_DQ[4] +set_location_assignment PIN_71 -to SDRAM_DQ[5] +set_location_assignment PIN_69 -to SDRAM_DQ[6] +set_location_assignment PIN_68 -to SDRAM_DQ[7] +set_location_assignment PIN_86 -to SDRAM_DQ[8] +set_location_assignment PIN_87 -to SDRAM_DQ[9] +set_location_assignment PIN_98 -to SDRAM_DQ[10] +set_location_assignment PIN_99 -to SDRAM_DQ[11] +set_location_assignment PIN_100 -to SDRAM_DQ[12] +set_location_assignment PIN_101 -to SDRAM_DQ[13] +set_location_assignment PIN_103 -to SDRAM_DQ[14] +set_location_assignment PIN_104 -to SDRAM_DQ[15] +set_location_assignment PIN_58 -to SDRAM_BA[0] +set_location_assignment PIN_51 -to SDRAM_BA[1] +set_location_assignment PIN_85 -to SDRAM_DQMH +set_location_assignment PIN_67 -to SDRAM_DQML +set_location_assignment PIN_60 -to SDRAM_nRAS +set_location_assignment PIN_64 -to SDRAM_nCAS +set_location_assignment PIN_66 -to SDRAM_nWE +set_location_assignment PIN_59 -to SDRAM_nCS +set_location_assignment PIN_33 -to SDRAM_CKE +set_location_assignment PIN_43 -to SDRAM_CLK +set_location_assignment PLL_1 -to "pll:pll|altpll:altpll_component" + +# Classic Timing Assignments +# ========================== +set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0 +set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85 +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS ON + +# Analysis & Synthesis Assignments +# ================================ +set_global_assignment -name FAMILY "Cyclone III" +set_global_assignment -name TOP_LEVEL_ENTITY LodeRunner_MiST +set_global_assignment -name DEVICE_FILTER_PIN_COUNT 144 +set_global_assignment -name DEVICE_FILTER_SPEED_GRADE 8 +set_global_assignment -name DEVICE_FILTER_PACKAGE TQFP +set_global_assignment -name CYCLONEII_OPTIMIZATION_TECHNIQUE SPEED +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS ON +set_global_assignment -name ALLOW_SYNCH_CTRL_USAGE ON +set_global_assignment -name VHDL_INPUT_VERSION VHDL_2008 +set_global_assignment -name VHDL_SHOW_LMF_MAPPING_MESSAGES OFF +set_global_assignment -name SEARCH_PATH common/CPU/T80/ -tag from_archive +set_global_assignment -name SEARCH_PATH common/mist/ -tag from_archive +set_global_assignment -name SEARCH_PATH rtl/ -tag from_archive + +# Fitter Assignments +# ================== +set_global_assignment -name DEVICE EP3C25E144C8 +set_global_assignment -name ENABLE_CONFIGURATION_PINS OFF +set_global_assignment -name ENABLE_NCE_PIN OFF +set_global_assignment -name ENABLE_BOOT_SEL_PIN OFF +set_global_assignment -name CYCLONEIII_CONFIGURATION_SCHEME "PASSIVE SERIAL" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN OFF +set_global_assignment -name FORCE_CONFIGURATION_VCCIO ON +set_global_assignment -name STRATIX_DEVICE_IO_STANDARD "3.3-V LVTTL" +set_global_assignment -name CYCLONEII_RESERVE_NCEO_AFTER_CONFIGURATION "USE AS REGULAR IO" +set_global_assignment -name RESERVE_DATA0_AFTER_CONFIGURATION "USE AS REGULAR IO" +set_global_assignment -name RESERVE_DATA1_AFTER_CONFIGURATION "USE AS REGULAR IO" +set_global_assignment -name RESERVE_FLASH_NCE_AFTER_CONFIGURATION "USE AS REGULAR IO" +set_global_assignment -name RESERVE_DCLK_AFTER_CONFIGURATION "USE AS REGULAR IO" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "ALL PATHS" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING ON +set_global_assignment -name FITTER_EFFORT "STANDARD FIT" + +# Assembler Assignments +# ===================== +set_global_assignment -name GENERATE_RBF_FILE ON +set_global_assignment -name USE_CONFIGURATION_DEVICE OFF + +# SignalTap II Assignments +# ======================== +set_global_assignment -name ENABLE_SIGNALTAP OFF +set_global_assignment -name USE_SIGNALTAP_FILE output_files/mcr3.stp + +# Power Estimation Assignments +# ============================ +set_global_assignment -name POWER_PRESET_COOLING_SOLUTION "NO HEAT SINK WITH STILL AIR" +set_global_assignment -name POWER_BOARD_THERMAL_MODEL "NONE (CONSERVATIVE)" + +# Advanced I/O Timing Assignments +# =============================== +set_global_assignment -name OUTPUT_IO_TIMING_NEAR_END_VMEAS "HALF VCCIO" -rise +set_global_assignment -name OUTPUT_IO_TIMING_NEAR_END_VMEAS "HALF VCCIO" -fall +set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" -rise +set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" -fall + +# ----------------------------- +# start ENTITY(LodeRunner_MiST) + + # Pin & Location Assignments + # ========================== + set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_DQ[*] + set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_A[*] + set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_BA[0] + set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_BA[1] + set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_DQMH + set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_DQML + set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_nRAS + set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_nCAS + set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_nWE + set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_nCS + set_instance_assignment -name FAST_OUTPUT_ENABLE_REGISTER ON -to SDRAM_DQ[*] + set_instance_assignment -name FAST_INPUT_REGISTER ON -to SDRAM_DQ[*] + + # Fitter Assignments + # ================== + set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_A[*] + set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_DQ[*] + set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_BA[*] + set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_DQML + set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_DQMH + set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_nRAS + set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_nCAS + set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_nWE + set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_nCS + set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_CKE + set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_CLK + set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VGA_R[*] + set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VGA_G[*] + set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VGA_B[*] + set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VGA_HS + set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VGA_VS + set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to AUDIO_L + set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to AUDIO_R + set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to SPI_DO + + # start DESIGN_PARTITION(Top) + # --------------------------- + + # Incremental Compilation Assignments + # =================================== + 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_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top + + # end DESIGN_PARTITION(Top) + # ------------------------- + +# end ENTITY(LodeRunner_MiST) +# --------------------------- \ No newline at end of file diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/clean.bat b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/clean.bat new file mode 100644 index 00000000..c9a2cb06 --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/clean.bat @@ -0,0 +1,15 @@ +@echo off +del /s *.bak +del /s *.orig +del /s *.rej +rmdir /s /q db +rmdir /s /q incremental_db +rmdir /s /q output +rmdir /s /q simulation +rmdir /s /q greybox_tmp +del PLLJ_PLLSPE_INFO.txt +del *.qws +del *.ppf +del *.qip +del *.ddb +pause diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/Graphics.VHD b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/Graphics.VHD new file mode 100644 index 00000000..8dc75400 --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/Graphics.VHD @@ -0,0 +1,273 @@ +library IEEE; +use IEEE.std_logic_1164.all; +use ieee.std_logic_unsigned.all; +use ieee.std_logic_arith.all; + +library work; +use work.pace_pkg.all; +use work.video_controller_pkg.all; +use work.sprite_pkg.all; +--use work.project_pkg.all; +use work.platform_pkg.all; + +entity Graphics is + port + ( + bitmap_ctl_i : in to_BITMAP_CTL_a(1 to PACE_VIDEO_NUM_BITMAPS); + bitmap_ctl_o : out from_BITMAP_CTL_a(1 to PACE_VIDEO_NUM_BITMAPS); + tilemap_ctl_i : in to_TILEMAP_CTL_a(1 to PACE_VIDEO_NUM_TILEMAPS); + tilemap_ctl_o : out from_TILEMAP_CTL_a(1 to PACE_VIDEO_NUM_TILEMAPS); + + sprite_reg_i : in to_SPRITE_REG_t; + sprite_ctl_i : in to_SPRITE_CTL_t; + sprite_ctl_o : out from_SPRITE_CTL_t; + spr0_hit : out std_logic; + + graphics_i : in to_GRAPHICS_t; + graphics_o : out from_GRAPHICS_t; + + video_i : in from_VIDEO_t; + video_o : out to_VIDEO_t + ); + +end Graphics; + +architecture SYN of Graphics is + + alias clk : std_logic is video_i.clk; + + signal from_video_ctl : from_VIDEO_CTL_t; + signal bitmap_ctl_o_s : from_BITMAP_CTL_a(1 to PACE_VIDEO_NUM_BITMAPS); + signal tilemap_ctl_o_s : from_TILEMAP_CTL_a(1 to PACE_VIDEO_NUM_TILEMAPS); + signal sprite_ctl_o_s : from_SPRITE_CTL_t; + signal sprite_pri : std_logic; + + + signal rgb_data : RGB_t; + -- before OSD is mixed in + signal video_o_s : to_VIDEO_t; + +begin + + -- dodgy OSD transparency... + video_o.clk <= video_o_s.clk; + video_o.rgb.r <= video_o_s.rgb.r; + video_o.rgb.g <= video_o_s.rgb.g; + video_o.rgb.b <= video_o_s.rgb.b; + video_o.hsync <= video_o_s.hsync; + video_o.vsync <= video_o_s.vsync; + video_o.hblank <= video_o_s.hblank; + video_o.vblank <= video_o_s.vblank; + + graphics_o.y <= from_video_ctl.y; + -- should this be the 'real' vblank or the 'active' vblank? + -- - use the real for now + graphics_o.hblank <= video_o_s.hblank; + graphics_o.vblank <= video_o_s.vblank; + --graphics_o.vblank <= from_video_ctl.vblank; + + pace_video_controller_inst : entity work.pace_video_controller + generic map + ( + CONFIG => PACE_VIDEO_CONTROLLER_TYPE, + DELAY => PACE_VIDEO_PIPELINE_DELAY, + H_SIZE => PACE_VIDEO_H_SIZE, + V_SIZE => PACE_VIDEO_V_SIZE, + L_CROP => PACE_VIDEO_L_CROP, + R_CROP => PACE_VIDEO_R_CROP, + H_SCALE => PACE_VIDEO_H_SCALE, + V_SCALE => PACE_VIDEO_V_SCALE, + H_SYNC_POL => PACE_VIDEO_H_SYNC_POLARITY, + V_SYNC_POL => PACE_VIDEO_V_SYNC_POLARITY, + BORDER_RGB => PACE_VIDEO_BORDER_RGB + ) + port map + ( + -- clocking etc + video_i => video_i, + + -- register interface + reg_i.h_scale => "000", + reg_i.v_scale => "000", + -- video data signals (in) + rgb_i => rgb_data, + + -- video control signals (out) + video_ctl_o => from_video_ctl, + + -- VGA signals (out) + video_o => video_o_s + ); + + pace_video_mixer_inst : entity work.pace_video_mixer + port map + ( + bitmap_ctl_o => bitmap_ctl_o_s, + tilemap_ctl_o => tilemap_ctl_o_s, + sprite_rgb => sprite_ctl_o_s.rgb, + sprite_set => sprite_ctl_o_s.set, + sprite_pri => sprite_pri, + + video_ctl_i => from_video_ctl, + graphics_i => graphics_i, + rgb_o => rgb_data + ); + + GEN_NO_BITMAPS : if PACE_VIDEO_NUM_BITMAPS = 0 generate + --bitmap_ctl_o_s <= ((others => '0'), (others => (others => '0')), '0'); + end generate GEN_NO_BITMAPS; + + GEN_BITMAP_1 : if PACE_VIDEO_NUM_BITMAPS > 0 generate + + forground_bitmapctl_inst : entity work.bitmapCtl(BITMAP_1) + generic map + ( + DELAY => PACE_VIDEO_PIPELINE_DELAY + ) + port map + ( + reset => video_i.reset, + + video_ctl => from_video_ctl, + + ctl_i => bitmap_ctl_i(1), + ctl_o => bitmap_ctl_o_s(1), + + graphics_i => graphics_i + ); + end generate GEN_BITMAP_1; + + GEN_BITMAP_2 : if PACE_VIDEO_NUM_BITMAPS > 1 generate + + forground_bitmapctl_inst : entity work.bitmapCtl(BITMAP_2) + generic map + ( + DELAY => PACE_VIDEO_PIPELINE_DELAY + ) + port map + ( + reset => video_i.reset, + + video_ctl => from_video_ctl, + + ctl_i => bitmap_ctl_i(2), + ctl_o => bitmap_ctl_o_s(2), + + graphics_i => graphics_i + ); + + end generate GEN_BITMAP_2; + + GEN_BITMAP_3 : if PACE_VIDEO_NUM_BITMAPS > 2 generate + + forground_bitmapctl_inst : entity work.bitmapCtl(BITMAP_3) + generic map + ( + DELAY => PACE_VIDEO_PIPELINE_DELAY + ) + port map + ( + reset => video_i.reset, + + video_ctl => from_video_ctl, + + ctl_i => bitmap_ctl_i(3), + ctl_o => bitmap_ctl_o_s(3), + + graphics_i => graphics_i + ); + + end generate GEN_BITMAP_3; + + bitmap_ctl_o <= bitmap_ctl_o_s; + + GEN_NO_TILEMAPS : if PACE_VIDEO_NUM_TILEMAPS = 0 generate + --tilemap_ctl_o_s(1) <= ((others => '0'), (others => '0'), (others => '0'), + -- (others => (others => '0')), '0'); + end generate GEN_NO_TILEMAPS; + + GEN_TILEMAP_1 : if PACE_VIDEO_NUM_TILEMAPS > 0 generate + + foreground_mapctl_inst : entity work.tilemapCtl(TILEMAP_1) + generic map + ( + DELAY => PACE_VIDEO_PIPELINE_DELAY + ) + port map + ( + reset => video_i.reset, + + video_ctl => from_video_ctl, + + ctl_i => tilemap_ctl_i(1), + ctl_o => tilemap_ctl_o_s(1), + + graphics_i => graphics_i + ); + + end generate GEN_TILEMAP_1; + + GEN_TILEMAP_2 : if PACE_VIDEO_NUM_TILEMAPS > 1 generate + + background_mapctl_inst : entity work.tilemapCtl(TILEMAP_2) + generic map + ( + DELAY => PACE_VIDEO_PIPELINE_DELAY + ) + port map + ( + reset => video_i.reset, + + video_ctl => from_video_ctl, + + ctl_i => tilemap_ctl_i(2), + ctl_o => tilemap_ctl_o_s(2), + + graphics_i => graphics_i + ); + + end generate GEN_TILEMAP_2; + + tilemap_ctl_o <= tilemap_ctl_o_s; + + GEN_NO_SPRITES : if PACE_VIDEO_NUM_SPRITES = 0 generate + sprite_ctl_o_s <= ((others => '0'), (others => (others => '0')), '0'); + sprite_pri <= '0'; + spr0_hit <= '0'; + end generate GEN_NO_SPRITES; + + GEN_SPRITES : if PACE_VIDEO_NUM_SPRITES > 0 generate + + sprites_inst : sprite_array + generic map + ( + N_SPRITES => PACE_VIDEO_NUM_SPRITES, + DELAY => PACE_VIDEO_PIPELINE_DELAY + ) + port map + ( + reset => video_i.reset, + + -- register interface + reg_i => sprite_reg_i, + + -- video control signals + video_ctl => from_video_ctl, + + graphics_i => graphics_i, + + row_a => sprite_ctl_o_s.a, + row_d => sprite_ctl_i.d, + + rgb => sprite_ctl_o_s.rgb, + set => sprite_ctl_o_s.set, + pri => sprite_pri, + spr0_set => spr0_hit + ); + + end generate GEN_SPRITES; + + sprite_ctl_o <= sprite_ctl_o_s; + + +end SYN; diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/Inputs.VHD b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/Inputs.VHD new file mode 100644 index 00000000..6551aeaf --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/Inputs.VHD @@ -0,0 +1,51 @@ +Library IEEE; +Use IEEE.std_logic_1164.all; + +library work; +use work.pace_pkg.all; + +entity inputs is + generic + ( + NUM_DIPS : integer := 8; + NUM_INPUTS : integer := 2; + CLK_1US_DIV : natural := 30 + ); + port + ( + clk : in std_logic; + reset : in std_logic; + jamma : in from_JAMMA_t; + + dips : in std_logic_vector(NUM_DIPS-1 downto 0); + inputs : out from_MAPPED_INPUTS_t(0 to NUM_INPUTS-1) + ); +end entity inputs; + +architecture SYN of inputs is + + signal reset_n : std_logic; + + +begin + + reset_n <= not reset; + + + inputmapper_inst : entity work.inputmapper + generic map + ( + NUM_DIPS => NUM_DIPS, + NUM_INPUTS => NUM_INPUTS + ) + port map + ( + clk => clk, + rst_n => reset_n, + jamma => jamma, + dips => dips, + inputs => inputs + ); + + +end architecture SYN; diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/LodeRunner_MiST.sv b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/LodeRunner_MiST.sv new file mode 100644 index 00000000..bbc4ef58 --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/LodeRunner_MiST.sv @@ -0,0 +1,279 @@ +module LodeRunner_MiST( + output LED, + output [5:0] VGA_R, + output [5:0] VGA_G, + output [5:0] VGA_B, + output VGA_HS, + output VGA_VS, + output AUDIO_L, + output AUDIO_R, + input SPI_SCK, + output SPI_DO, + input SPI_DI, + input SPI_SS2, + input SPI_SS3, + input CONF_DATA0, + input CLOCK_27, + + output [12:0] SDRAM_A, + inout [15:0] SDRAM_DQ, + output SDRAM_DQML, + output SDRAM_DQMH, + output SDRAM_nWE, + output SDRAM_nCAS, + output SDRAM_nRAS, + output SDRAM_nCS, + output [1:0] SDRAM_BA, + output SDRAM_CLK, + output SDRAM_CKE +); + +`include "rtl/build_id.v" + +localparam CONF_STR = { + "LDRUNNER;ROM;", + "O2,Rotate Controls,Off,On;", + "O34,Scanlines,Off,25%,50%,75%;", + "O5,Blending,Off,On;", + "O6,Service,Off,On;", + "T0,Reset;", + "V,v1.0.",`BUILD_DATE +}; + + + +assign LED = ~ioctl_downl; +assign SDRAM_CLK = clk_sd; +assign SDRAM_CKE = 1; + +wire clk_sys, clk_aud, clk_sd, clk_vid; +wire pll_locked; +pll_mist pll( + .inclk0(CLOCK_27), + .areset(0), + .c0(clk_sys), + .c1(clk_vid), + .c2(clk_sd), + .c3(clk_aud), + .locked(pll_locked) + ); + +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 ypbpr; +wire [11:0] audio; +wire hs, vs; +wire blankn = 1'b1;//todo +wire [3:0] g,b,r; +wire key_pressed; +wire [7:0] key_code; +wire key_strobe; + +wire [14:0] rom_addr; +wire [15:0] rom_do; + +wire [13:0] snd_addr; +wire [15:0] snd_do; + + +wire [14:0] sp_addr; +wire [31:0] sp_do; + +wire ioctl_downl; +wire [7:0] ioctl_index; +wire ioctl_wr; +wire [24:0] ioctl_addr; +wire [7:0] ioctl_dout; + +data_io data_io( + .clk_sys ( clk_sd ), + .SPI_SCK ( SPI_SCK ), + .SPI_SS2 ( SPI_SS2 ), + .SPI_DI ( SPI_DI ), + .ioctl_download( ioctl_downl ), + .ioctl_index ( ioctl_index ), + .ioctl_wr ( ioctl_wr ), + .ioctl_addr ( ioctl_addr ), + .ioctl_dout ( ioctl_dout ) +); + +wire [24:0] sp_ioctl_addr = ioctl_addr - 17'h10000; //todo + +reg port1_req, port2_req; +sdram sdram( + .*, + .init_n ( pll_locked ), + .clk ( clk_sd ), + + // port1 used for main + sound CPU + .port1_req ( port1_req ), + .port1_ack ( ), + .port1_a ( ioctl_addr[23:1] ), + .port1_ds ( {ioctl_addr[0], ~ioctl_addr[0]} ), + .port1_we ( ioctl_downl ), + .port1_d ( {ioctl_dout, ioctl_dout} ), + .port1_q ( ), + + .cpu1_addr ( ioctl_downl ? 16'hffff : {2'b00, rom_addr[14:1]} ), + .cpu1_q ( rom_do ), + .cpu2_addr ( ioctl_downl ? 16'hffff : (16'h4000 + snd_addr[13:1]) ), + .cpu2_q ( snd_do ), + + // port2 for sprite graphics + .port2_req ( port2_req ), + .port2_ack ( ), + .port2_a ( {sp_ioctl_addr[23:16], sp_ioctl_addr[13:0], sp_ioctl_addr[15]} ), // merge sprite roms to 32-bit wide words + .port2_ds ( {sp_ioctl_addr[14], ~sp_ioctl_addr[14]} ), + .port2_we ( ioctl_downl ), + .port2_d ( {ioctl_dout, ioctl_dout} ), + .port2_q ( ), + + .sp_addr ( ioctl_downl ? 15'h7fff : sp_addr ), + .sp_q ( sp_do ) +); + +// ROM download controller +always @(posedge clk_sd) begin + reg ioctl_wr_last = 0; + + ioctl_wr_last <= ioctl_wr; + if (ioctl_downl) begin + if (~ioctl_wr_last && ioctl_wr) begin + port1_req <= ~port1_req; + port2_req <= ~port2_req; + end + end +end + +// reset signal generation +reg reset = 1; +reg rom_loaded = 0; +always @(posedge clk_sys) begin + reg ioctl_downlD; + reg [15:0] reset_count; + ioctl_downlD <= ioctl_downl; + + if (status[0] | buttons[1] | ~rom_loaded) reset_count <= 16'hffff; + else if (reset_count != 0) reset_count <= reset_count - 1'd1; + + if (ioctl_downlD & ~ioctl_downl) rom_loaded <= 1; + reset <= reset_count != 16'h0000; + +end + +target_top target_top( + .clock_50(clk_sys),//40MHz + .clock_vid(clk_vid),//25.263158MHz + .clk_aud(clk_aud),//0.895MHz + .reset_in(reset), + .audio_out(audio), + .usr_coin1(m_coin1), + .usr_coin2(m_coin2), + .usr_service(status[6]), + .usr_start1(m_one_player), + .usr_start2(m_two_players), + .p1_up(m_up), + .p1_dw(m_down), + .p1_lt(m_left), + .p1_rt(m_right), + .p1_f1(m_fireA), + .p1_f2(m_fireB), + .p2_up(m_up2), + .p2_dw(m_down2), + .p2_lt(m_left2), + .p2_rt(m_right2), + .p2_f1(m_fire2A), + .p2_f2(m_fire2B), + .VGA_VS(hs), + .VGA_HS(vs), + .VGA_R(r), + .VGA_G(g), + .VGA_B(b), + .cpu_rom_addr(rom_addr), + .cpu_rom_do( rom_addr[0] ? rom_do[15:8] : rom_do[7:0] ), + .snd_rom_addr(snd_addr), + .snd_rom_do(snd_addr[0] ? snd_do[15:8] : snd_do[7:0]) + ); + +mist_video #(.COLOR_DEPTH(4), .SD_HCNT_WIDTH(9)) mist_video( + .clk_sys ( clk_sys ), + .SPI_SCK ( SPI_SCK ), + .SPI_SS3 ( SPI_SS3 ), + .SPI_DI ( SPI_DI ), + .R ( blankn ? r : 0 ), + .G ( blankn ? g : 0 ), + .B ( blankn ? b : 0 ), + .HSync ( hs ), + .VSync ( vs ), + .VGA_R ( VGA_R ), + .VGA_G ( VGA_G ), + .VGA_B ( VGA_B ), + .VGA_VS ( VGA_VS ), + .VGA_HS ( VGA_HS ), + .rotate ( { 1'b1, status[2] } ), + .ce_divider ( 1'b1 ), + .scandoubler_disable( 1),//scandoublerD ), + .scanlines ( status[4:3] ), + .blend ( status[5] ), + .ypbpr ( ypbpr ) + ); + +user_io #( + .STRLEN(($size(CONF_STR)>>3))) +user_io( + .clk_sys (clk_sys ), + .conf_str (CONF_STR ), + .SPI_CLK (SPI_SCK ), + .SPI_SS_IO (CONF_DATA0 ), + .SPI_MISO (SPI_DO ), + .SPI_MOSI (SPI_DI ), + .buttons (buttons ), + .switches (switches ), + .scandoubler_disable (scandoublerD ), + .ypbpr (ypbpr ), + .key_strobe (key_strobe ), + .key_pressed (key_pressed ), + .key_code (key_code ), + .joystick_0 (joystick_0 ), + .joystick_1 (joystick_1 ), + .status (status ) + ); + +wire dac_o; +assign AUDIO_L = dac_o; +assign AUDIO_R = dac_o; + +dac #( + .C_bits(12)) +dac( + .clk_i(clk_aud), + .res_n_i(1), + .dac_i(audio), + .dac_o(dac_o) + ); + +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; + +arcade_inputs inputs ( + .clk ( clk_sys ), + .key_strobe ( key_strobe ), + .key_pressed ( key_pressed ), + .key_code ( key_code ), + .joystick_0 ( joystick_0 ), + .joystick_1 ( joystick_1 ), + .rotate ( status[2] ), + .orientation ( 2'b10 ), + .joyswap ( 1'b0 ), + .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/IremM62 Hardware/LodeRunner_MiST/rtl/Sound_Board.vhd b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/Sound_Board.vhd new file mode 100644 index 00000000..2ba93794 --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/Sound_Board.vhd @@ -0,0 +1,428 @@ +--------------------------------------------------------------------------------- +-- Moon patrol sound board by Dar (darfpga@aol.fr) +-- http://darfpga.blogspot.fr +--------------------------------------------------------------------------------- +-- gen_ram.vhd +-- Copyright 2005-2008 by Peter Wendrich (pwsoft@syntiac.com) +-- http://www.syntiac.com/fpga64.html +--------------------------------------------------------------------------------- +-- cpu68 - Version 9th Jan 2004 0.8 +-- 6800/01 compatible CPU core +-- GNU public license - December 2002 : John E. Kent +--------------------------------------------------------------------------------- +-- Educational use only +-- Do not redistribute synthetized file with roms +-- Do not redistribute roms whatever the form +-- Use at your own risk +--------------------------------------------------------------------------------- +-- Version 0.0 -- 24/11/2017 -- +-- initial version +--------------------------------------------------------------------------------- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; +use ieee.numeric_std.all; + +entity Sound_Board is +port( + clock_E : in std_logic; -- 3.58 Mhz/4 + areset : in std_logic; + + select_sound : in std_logic_vector(7 downto 0); + audio_out : out std_logic_vector(11 downto 0); + snd_rom_addr : out std_logic_vector(13 downto 0); + snd_rom_do : in std_logic_vector(7 downto 0); + + dbg_cpu_addr : out std_logic_vector(15 downto 0) +); +end Sound_Board; + +architecture struct of Sound_Board is + component YM2149 + port ( + CLK : in std_logic; + CE : in std_logic; + RESET : in std_logic; + A8 : in std_logic := '1'; + A9_L : in std_logic := '0'; + BDIR : in std_logic; -- Bus Direction (0 - read , 1 - write) + BC : in std_logic; -- Bus control + DI : in std_logic_vector(7 downto 0); + DO : out std_logic_vector(7 downto 0); + CHANNEL_A : out std_logic_vector(7 downto 0); + CHANNEL_B : out std_logic_vector(7 downto 0); + CHANNEL_C : out std_logic_vector(7 downto 0); + + SEL : in std_logic; + MODE : in std_logic; + + ACTIVE : out std_logic_vector(5 downto 0); + + IOA_in : in std_logic_vector(7 downto 0); + IOA_out : out std_logic_vector(7 downto 0); + + IOB_in : in std_logic_vector(7 downto 0); + IOB_out : out std_logic_vector(7 downto 0) + ); + end component; + + signal reset : std_logic := '1'; + signal reset_cnt : integer range 0 to 1000000 := 1000000; + + signal cpu_addr : std_logic_vector(15 downto 0); + signal cpu_di : std_logic_vector( 7 downto 0); + signal cpu_do : std_logic_vector( 7 downto 0); + signal cpu_rw : std_logic; + signal cpu_irq : std_logic; + signal cpu_nmi : std_logic; + + signal irqraz_cs : std_logic; + signal irqraz_we : std_logic; + + signal wram_cs : std_logic; + signal wram_we : std_logic; + signal wram_do : std_logic_vector( 7 downto 0); + + signal rom_cs : std_logic; + signal rom_do : std_logic_vector( 7 downto 0); + + signal ay1_chan_a : std_logic_vector(7 downto 0); + signal ay1_chan_b : std_logic_vector(7 downto 0); + signal ay1_chan_c : std_logic_vector(7 downto 0); + signal ay1_do : std_logic_vector(7 downto 0); + signal ay1_audio : std_logic_vector(9 downto 0); + signal ay1_port_b_do : std_logic_vector(7 downto 0); + + signal ay2_chan_a : std_logic_vector(7 downto 0); + signal ay2_chan_b : std_logic_vector(7 downto 0); + signal ay2_chan_c : std_logic_vector(7 downto 0); + signal ay2_do : std_logic_vector(7 downto 0); + signal ay2_audio : std_logic_vector(9 downto 0); + + signal ports_cs : std_logic; + signal ports_we : std_logic; + + signal port1_bus : std_logic_vector(7 downto 0); + signal port1_data : std_logic_vector(7 downto 0); + signal port1_ddr : std_logic_vector(7 downto 0); + signal port1_in : std_logic_vector(7 downto 0); + + signal port2_bus : std_logic_vector(7 downto 0); + signal port2_data : std_logic_vector(7 downto 0); + signal port2_ddr : std_logic_vector(7 downto 0); + signal port2_in : std_logic_vector(7 downto 0); + + signal adpcm_cs : std_logic; + signal adpcm_we : std_logic; + signal adpcm_0_di : std_logic_vector(3 downto 0); + + signal select_sound_r : std_logic_vector(7 downto 0); + + signal audio : std_logic_vector(12 downto 0); + + type t_step_size is array(0 to 48) of integer range 0 to 1552; + constant step_size : t_step_size := ( + 16, 17, 19, 21, 23, 25, 28, 31, + 34, 37, 41, 45, 50, 55, 60, 66, + 73, 80, 88, 97, 107, 118, 130, 143, + 157, 173, 190, 209, 230, 253, 279, 307, + 337, 371, 408, 449, 494, 544, 598, 658, + 724, 796, 876, 963, 1060, 1166, 1282, 1411, 1552); + + type t_delta_step is array(0 to 7) of integer range -1 to 8; + constant delta_step : t_delta_step := (-1,-1,-1,-1,2,4,6,8); + + signal adpcm_vclk : std_logic := '0'; + signal adpcm_signal : integer range -16384 to 16383 := 0; + +-- adpcm algorithm (4bits) [no pcm here] +-- +-- val : input value 3bits (0 - 7 : b2b1b0) +-- sign : input value sign (4th bit : 0=>sign=1 ,1=>sign=-1) +-- +-- step : internal data, init = 0 +-- signal : output value, init = 0; +-- +-- for each new val (and sign) : +-- | +-- | step_size = 16*1.1^(step) +-- | delta = sign * (step_size/8 + step_size/4*b0 + step_size/2*b1 + step_size*b2) +-- | signal = signal + delta +-- | step = step + delta_step(val) +-- | +-- | signal is then limited between -2048..2047 +-- | step is then limited between 0..48 + +begin + +dbg_cpu_addr <= cpu_addr; + +-- cs +wram_cs <= '1' when cpu_addr(15 downto 7) = X"00"&'1' else '0'; -- 0080-00FF +ports_cs <= '1' when cpu_addr(15 downto 4) = X"000" else '0'; -- 0000-000F +adpcm_cs <= '1' when cpu_addr(14 downto 11) = "0001" else '0'; -- 0800-0FFF / 8800-8FFF +irqraz_cs <= '1' when cpu_addr(14 downto 12) = "001" else '0'; -- 1000-1FFF / 9000-9FFF +rom_cs <= '1' when cpu_addr(14 downto 12) = "111" else '0'; -- 7000-7FFF / F000-FFFF + +-- write enables +wram_we <= '1' when cpu_rw = '0' and wram_cs = '1' else '0'; +ports_we <= '1' when cpu_rw = '0' and ports_cs = '1' else '0'; +adpcm_we <= '1' when cpu_rw = '0' and adpcm_cs = '1' else '0'; +irqraz_we <= '1' when cpu_rw = '0' and irqraz_cs = '1' else '0'; + +-- mux cpu in data between roms/io/wram +cpu_di <= + wram_do when wram_cs = '1' else + port1_ddr when ports_cs = '1' and cpu_addr(3 downto 0) = X"0" else + port2_ddr when ports_cs = '1' and cpu_addr(3 downto 0) = X"1" else + port1_in when ports_cs = '1' and cpu_addr(3 downto 0) = X"2" else + port2_in when ports_cs = '1' and cpu_addr(3 downto 0) = X"3" else + rom_do when rom_cs = '1' else X"55"; + +process (clock_E) +begin + if rising_edge(clock_E) then + reset <= '0'; + if reset_cnt /= 0 then + reset_cnt <= reset_cnt - 1; + reset <= '1'; + end if; + if areset = '1' then + reset_cnt <= 1000000; + end if; + end if; +end process; + +-- irq to cpu +process (reset, clock_E) +begin + if reset='1' then + cpu_irq <= '0'; + select_sound_r(7) <= '1'; + elsif rising_edge(clock_E) then + select_sound_r <= select_sound; + if select_sound_r(7) = '0' then + cpu_irq <= '1'; + end if; + if irqraz_we = '1' then + cpu_irq <= '0'; + end if; + end if; +end process; + +-- cpu nmi +cpu_nmi <= adpcm_vclk; + +-- 6803 ports 1 and 2 (only) +process (reset, clock_E) +begin + if reset='1' then + port1_ddr <= (others=>'0'); -- port1 set as input + port1_data <= (others=>'0'); -- port1 data set to 0 + port2_ddr <= ("11100000"); -- port2 bit 7 to 5 should always remain output to simulate mode data + port2_data <= ("01000000"); -- port2 data bit 7 to 5 set to 2 (for mode 2 at start up) + elsif rising_edge(clock_E) then + if ports_cs = '1' and ports_we = '1' then + if cpu_addr(3 downto 0) = X"0" then port1_ddr <= cpu_do; end if; + if cpu_addr(3 downto 0) = X"1" then port2_ddr <= cpu_do and "11100000"; end if; + if cpu_addr(3 downto 0) = X"2" then port1_data <= cpu_do; end if; + if cpu_addr(3 downto 0) = X"3" then port2_data <= cpu_do; end if; + end if; + end if; +end process; + +port1_in <= (port1_bus and not(port1_ddr)) or (port1_data and port1_ddr); +port2_in <= (port2_bus and not(port2_ddr)) or (port2_data and port2_ddr); + +-- port1 bus mux +port1_bus <= ay1_do when port2_data(4) = '0' else + ay2_do when port2_data(3) = '0' else X"FF"; + +-- port2 bus +port2_bus <= X"FF"; + + +-- latch adpcm (msm5205) data in +process (reset, clock_E) +begin + if reset='1' then + adpcm_0_di <= (others=>'0'); + elsif rising_edge(clock_E) then + if adpcm_cs = '1' and adpcm_we = '1' then + if cpu_addr(1) = '0' then adpcm_0_di <= cpu_do(3 downto 0); end if; + end if; + end if; +end process; + +-- adcpm clocks and computation -- make 24kHz and vclk 8/6/4kHz +adpcm_clocks : process(clock_E, ay1_port_b_do) + variable clock_div_a : integer range 0 to 148 := 0; + variable clock_div_b : integer range 0 to 5 := 0; + variable step : integer range 0 to 48; + variable step_n : integer range -1 to 48+8; + variable sz : integer range 0 to 1552; + variable dn : integer range -32768 to 32767; + variable adpcm_signal_n : integer range -32768 to 32767; +begin + if rising_edge(clock_E) then + if clock_div_a = 37 then -- 24kHz + clock_div_a := 0; + + case ay1_port_b_do(3 downto 2) is + when "00" => if clock_div_b = 5 then clock_div_b := 0; else clock_div_b := clock_div_b +1; end if; -- 4kHz + when "01" => if clock_div_b = 2 then clock_div_b := 0; else clock_div_b := clock_div_b +1; end if; -- 8kHz + when "10" => if clock_div_b = 3 then clock_div_b := 0; else clock_div_b := clock_div_b +1; end if; -- 6kHz + when others => null; + end case; + + if clock_div_b = 0 then adpcm_vclk <= '1'; else adpcm_vclk <= '0'; end if; + else + clock_div_a := clock_div_a + 1; + end if; + + if ay1_port_b_do(0) = '1' then + step := 0; + adpcm_signal <= 0; + else + + if clock_div_b = 0 then + case clock_div_a is + + when 0 => -- it's time to get new nibble (adpcm_0_di) + + sz := step_size(step); + dn := sz/8; + if adpcm_0_di(0) = '1' then dn := dn + sz/4; end if; + if adpcm_0_di(1) = '1' then dn := dn + sz/2; end if; + if adpcm_0_di(2) = '1' then dn := dn + sz ; end if; + + if adpcm_0_di(3) = '1' then + dn := -dn; + end if; + + step_n := step + delta_step(to_integer(unsigned(adpcm_0_di(2 downto 0)))); + + when 4 => + + adpcm_signal_n := adpcm_signal + dn; + + if step_n > 48 then step := 48; else step := step_n; end if; + if step_n < 0 then step := 0; else step := step_n; end if; + + when 8 => + + if adpcm_signal_n > 2040 then adpcm_signal <= 2040; else adpcm_signal <= adpcm_signal_n; end if; + if adpcm_signal_n < -2040 then adpcm_signal <= -2040; else adpcm_signal <= adpcm_signal_n; end if; + + when others => null; + + end case; + end if; + + end if; + end if; +end process; + +-- audio mux +audio <= ("000"&ay1_audio) + ("000"&ay2_audio) + ('0'&std_logic_vector(to_unsigned((adpcm_signal)+2048,12))); +audio_out <= audio(12 downto 1); + +-- microprocessor 6800/01/03 +main_cpu : entity work.cpu68 +port map( + clk => clock_E, -- E clock input (falling edge) + rst => reset, -- reset input (active high) + rw => cpu_rw, -- read not write output + vma => open, -- valid memory address (active high) + address => cpu_addr, -- address bus output + data_in => cpu_di, -- data bus input + data_out => cpu_do, -- data bus output + hold => '0', -- hold input (active high) extend bus cycle + halt => '0', -- halt input (active high) grants DMA + irq => cpu_irq, -- interrupt request input (active high) + nmi => cpu_nmi, -- non maskable interrupt request input (active high) + test_alu => open, + test_cc => open +); + +rom_cpu : entity work.snd_prg +port map( + clk => clock_E, -- E clock input (falling edge) + addr => cpu_addr(13 downto 0), + data => rom_do +); + +-- snd_rom_addr <= cpu_addr(13 downto 0); + + +-- cpu wram +cpu_ram : entity work.spram +generic map( widthad_a => 7) +port map( + clock => clock_E, + wren => wram_we, + address => cpu_addr(6 downto 0), + data => cpu_do, + q => wram_do +); + + ay83910_inst1: YM2149 + port map ( + CLK => clock_E, + CE => '1', + RESET => reset, + A8 => '1', + A9_L => port2_data(4), + BDIR => port2_data(0), + BC => port2_data(2), + DI => port1_data, + DO => ay1_do, + CHANNEL_A => ay1_chan_a, + CHANNEL_B => ay1_chan_b, + CHANNEL_C => ay1_chan_c, + + SEL => '0', + MODE => '1', + + ACTIVE => open, + + IOA_in => select_sound_r, + IOA_out => open, + + IOB_in => (others => '0'), + IOB_out => ay1_port_b_do + ); + + ay1_audio <= "0000000000" + ay1_chan_a + ay1_chan_b + ay1_chan_c; + + ay83910_inst2: YM2149 + port map ( + CLK => clock_E, + CE => '1', + RESET => reset, + A8 => '1', + A9_L => port2_data(3), + BDIR => port2_data(0), + BC => port2_data(2), + DI => port1_data, + DO => ay2_do, + CHANNEL_A => ay2_chan_a, + CHANNEL_B => ay2_chan_b, + CHANNEL_C => ay2_chan_c, + + SEL => '0', + MODE => '1', + + ACTIVE => open, + + IOA_in => (others => '0'), + IOA_out => open, + + IOB_in => (others => '0'), + IOB_out => open + ); + + ay2_audio <= "0000000000" + ay2_chan_a + ay2_chan_b + ay2_chan_c; + +end struct; \ No newline at end of file diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/YM2149.sv b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/YM2149.sv new file mode 100644 index 00000000..eae73bb3 --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/YM2149.sv @@ -0,0 +1,329 @@ +// +// Copyright (c) MikeJ - Jan 2005 +// Copyright (c) 2016-2018 Sorgelig +// +// All rights reserved +// +// Redistribution and use in source and synthezised forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// Redistributions in synthesized form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// Neither the name of the author nor the names of other contributors may +// be used to endorse or promote products derived from this software without +// specific prior written permission. +// +// THIS CODE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +// + + +// BDIR BC MODE +// 0 0 inactive +// 0 1 read value +// 1 0 write value +// 1 1 set address +// + +module YM2149 +( + input CLK, // Global clock + input CE, // PSG Clock enable + input RESET, // Chip RESET (set all Registers to '0', active hi) + input BDIR, // Bus Direction (0 - read , 1 - write) + input BC, // Bus control + input A8, + input A9_L, + input [7:0] DI, // Data In + output [7:0] DO, // Data Out + output [7:0] CHANNEL_A, // PSG Output channel A + output [7:0] CHANNEL_B, // PSG Output channel B + output [7:0] CHANNEL_C, // PSG Output channel C + + input SEL, + input MODE, + + output [5:0] ACTIVE, + + input [7:0] IOA_in, + output [7:0] IOA_out, + + input [7:0] IOB_in, + output [7:0] IOB_out +); + +assign ACTIVE = ~ymreg[7][5:0]; +assign IOA_out = ymreg[7][6] ? ymreg[14] : 8'hff; +assign IOB_out = ymreg[7][7] ? ymreg[15] : 8'hff; + +reg [7:0] addr; +reg [7:0] ymreg[16]; +wire cs = !A9_L & A8; + +// Write to PSG +reg env_reset; +always @(posedge CLK) begin + if(RESET) begin + ymreg <= '{default:0}; + ymreg[7] <= '1; + addr <= '0; + env_reset <= 0; + end else begin + env_reset <= 0; + if(cs & BDIR) begin + if(BC) addr <= DI; + else if(!addr[7:4]) begin + ymreg[addr[3:0]] <= DI; + env_reset <= (addr == 13); + end + end + end +end + +// Read from PSG +assign DO = dout; +reg [7:0] dout; +always_comb begin + dout = 8'hFF; + if(cs & ~BDIR & BC & !addr[7:4]) begin + case(addr[3:0]) + 0: dout = ymreg[0]; + 1: dout = ymreg[1][3:0]; + 2: dout = ymreg[2]; + 3: dout = ymreg[3][3:0]; + 4: dout = ymreg[4]; + 5: dout = ymreg[5][3:0]; + 6: dout = ymreg[6][4:0]; + 7: dout = ymreg[7]; + 8: dout = ymreg[8][4:0]; + 9: dout = ymreg[9][4:0]; + 10: dout = ymreg[10][4:0]; + 11: dout = ymreg[11]; + 12: dout = ymreg[12]; + 13: dout = ymreg[13][3:0]; + 14: dout = ymreg[7][6] ? ymreg[14] : IOA_in; + 15: dout = ymreg[7][7] ? ymreg[15] : IOB_in; + endcase + end +end + +reg ena_div; +reg ena_div_noise; + +// p_divider +always @(posedge CLK) begin + reg [3:0] cnt_div; + reg noise_div; + + if(CE) begin + ena_div <= 0; + ena_div_noise <= 0; + if(!cnt_div) begin + cnt_div <= {SEL, 3'b111}; + ena_div <= 1; + + noise_div <= (~noise_div); + if (noise_div) ena_div_noise <= 1; + end else begin + cnt_div <= cnt_div - 1'b1; + end + end +end + + +reg [2:0] noise_gen_op; + +// p_noise_gen +always @(posedge CLK) begin + reg [16:0] poly17; + reg [4:0] noise_gen_cnt; + + if(CE) begin + if (ena_div_noise) begin + if (!ymreg[6][4:0] || noise_gen_cnt >= ymreg[6][4:0] - 1'd1) begin + noise_gen_cnt <= 0; + poly17 <= {(poly17[0] ^ poly17[2] ^ !poly17), poly17[16:1]}; + end else begin + noise_gen_cnt <= noise_gen_cnt + 1'd1; + end + noise_gen_op <= {3{poly17[0]}}; + end + end +end + +wire [11:0] tone_gen_freq[1:3]; +assign tone_gen_freq[1] = {ymreg[1][3:0], ymreg[0]}; +assign tone_gen_freq[2] = {ymreg[3][3:0], ymreg[2]}; +assign tone_gen_freq[3] = {ymreg[5][3:0], ymreg[4]}; + +reg [3:1] tone_gen_op; + +//p_tone_gens +always @(posedge CLK) begin + integer i; + reg [11:0] tone_gen_cnt[1:3]; + + if(CE) begin + // looks like real chips count up - we need to get the Exact behaviour .. + + for (i = 1; i <= 3; i = i + 1) begin + if(ena_div) begin + if (tone_gen_freq[i]) begin + if (tone_gen_cnt[i] >= (tone_gen_freq[i] - 1'd1)) begin + tone_gen_cnt[i] <= 0; + tone_gen_op[i] <= ~tone_gen_op[i]; + end else begin + tone_gen_cnt[i] <= tone_gen_cnt[i] + 1'd1; + end + end else begin + tone_gen_op[i] <= ymreg[7][i]; + tone_gen_cnt[i] <= 0; + end + end + end + end +end + +reg env_ena; +wire [15:0] env_gen_comp = {ymreg[12], ymreg[11]} ? {ymreg[12], ymreg[11]} - 1'd1 : 16'd0; + +//p_envelope_freq +always @(posedge CLK) begin + reg [15:0] env_gen_cnt; + + if(CE) begin + env_ena <= 0; + if(ena_div) begin + if (env_gen_cnt >= env_gen_comp) begin + env_gen_cnt <= 0; + env_ena <= 1; + end else begin + env_gen_cnt <= (env_gen_cnt + 1'd1); + end + end + end +end + +reg [4:0] env_vol; + +wire is_bot = (env_vol == 5'b00000); +wire is_bot_p1 = (env_vol == 5'b00001); +wire is_top_m1 = (env_vol == 5'b11110); +wire is_top = (env_vol == 5'b11111); + +always @(posedge CLK) begin + reg env_hold; + reg env_inc; + + // envelope shapes + // C AtAlH + // 0 0 x x \___ + // + // 0 1 x x /___ + // + // 1 0 0 0 \\\\ + // + // 1 0 0 1 \___ + // + // 1 0 1 0 \/\/ + // ___ + // 1 0 1 1 \ + // + // 1 1 0 0 //// + // ___ + // 1 1 0 1 / + // + // 1 1 1 0 /\/\ + // + // 1 1 1 1 /___ + + if(env_reset | RESET) begin + // load initial state + if(!ymreg[13][2]) begin // attack + env_vol <= 5'b11111; + env_inc <= 0; // -1 + end else begin + env_vol <= 5'b00000; + env_inc <= 1; // +1 + end + env_hold <= 0; + end + else if(CE) begin + if (env_ena) begin + if (!env_hold) begin + if (env_inc) env_vol <= (env_vol + 5'b00001); + else env_vol <= (env_vol + 5'b11111); + end + + // envelope shape control. + if(!ymreg[13][3]) begin + if(!env_inc) begin // down + if(is_bot_p1) env_hold <= 1; + end else if (is_top) env_hold <= 1; + end else if(ymreg[13][0]) begin // hold = 1 + if(!env_inc) begin // down + if(ymreg[13][1]) begin // alt + if(is_bot) env_hold <= 1; + end else if(is_bot_p1) env_hold <= 1; + end else if(ymreg[13][1]) begin // alt + if(is_top) env_hold <= 1; + end else if(is_top_m1) env_hold <= 1; + end else if(ymreg[13][1]) begin // alternate + if(env_inc == 1'b0) begin // down + if(is_bot_p1) env_hold <= 1; + if(is_bot) begin + env_hold <= 0; + env_inc <= 1; + end + end else begin + if(is_top_m1) env_hold <= 1; + if(is_top) begin + env_hold <= 0; + env_inc <= 0; + end + end + end + end + end +end + +reg [5:0] A,B,C; +always @(posedge CLK) begin + A <= {MODE, ~((ymreg[7][0] | tone_gen_op[1]) & (ymreg[7][3] | noise_gen_op[0])) ? 5'd0 : ymreg[8][4] ? env_vol[4:0] : { ymreg[8][3:0], ymreg[8][3]}}; + B <= {MODE, ~((ymreg[7][1] | tone_gen_op[2]) & (ymreg[7][4] | noise_gen_op[1])) ? 5'd0 : ymreg[9][4] ? env_vol[4:0] : { ymreg[9][3:0], ymreg[9][3]}}; + C <= {MODE, ~((ymreg[7][2] | tone_gen_op[3]) & (ymreg[7][5] | noise_gen_op[2])) ? 5'd0 : ymreg[10][4] ? env_vol[4:0] : {ymreg[10][3:0], ymreg[10][3]}}; +end + +wire [7:0] volTable[64] = '{ + //YM2149 + 8'h00, 8'h01, 8'h01, 8'h02, 8'h02, 8'h03, 8'h03, 8'h04, + 8'h06, 8'h07, 8'h09, 8'h0a, 8'h0c, 8'h0e, 8'h11, 8'h13, + 8'h17, 8'h1b, 8'h20, 8'h25, 8'h2c, 8'h35, 8'h3e, 8'h47, + 8'h54, 8'h66, 8'h77, 8'h88, 8'ha1, 8'hc0, 8'he0, 8'hff, + + //AY8910 + 8'h00, 8'h00, 8'h03, 8'h03, 8'h04, 8'h04, 8'h06, 8'h06, + 8'h0a, 8'h0a, 8'h0f, 8'h0f, 8'h15, 8'h15, 8'h22, 8'h22, + 8'h28, 8'h28, 8'h41, 8'h41, 8'h5b, 8'h5b, 8'h72, 8'h72, + 8'h90, 8'h90, 8'hb5, 8'hb5, 8'hd7, 8'hd7, 8'hff, 8'hff +}; + +assign CHANNEL_A = volTable[A]; +assign CHANNEL_B = volTable[B]; +assign CHANNEL_C = volTable[C]; + +endmodule diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/bitmapctl_e.vhd b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/bitmapctl_e.vhd new file mode 100644 index 00000000..be8471e3 --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/bitmapctl_e.vhd @@ -0,0 +1,30 @@ +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.std_logic_unsigned.all; +use ieee.numeric_std.all; + +library work; +use work.pace_pkg.all; +use work.video_controller_pkg.all; +use work.platform_pkg.all; +--use work.project_pkg.all; + +entity bitmapCtl is + generic + ( + DELAY : integer + ); + port + ( + reset : in std_logic; + + -- video control signals + video_ctl : in from_VIDEO_CTL_t; + + -- bitmap controller signals + ctl_i : in to_BITMAP_CTL_t; + ctl_o : out from_BITMAP_CTL_t; + + graphics_i : in to_GRAPHICS_t + ); +end entity bitmapCtl; diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/build_id.tcl b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/build_id.tcl new file mode 100644 index 00000000..938515d8 --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/build_id.tcl @@ -0,0 +1,35 @@ +# ================================================================================ +# +# Build ID Verilog Module Script +# Jeff Wiencrot - 8/1/2011 +# +# Generates a Verilog module that contains a timestamp, +# from the current build. These values are available from the build_date, build_time, +# physical_address, and host_name output ports of the build_id module in the build_id.v +# Verilog source file. +# +# ================================================================================ + +proc generateBuildID_Verilog {} { + + # Get the timestamp (see: http://www.altera.com/support/examples/tcl/tcl-date-time-stamp.html) + set buildDate [ clock format [ clock seconds ] -format %y%m%d ] + set buildTime [ clock format [ clock seconds ] -format %H%M%S ] + + # Create a Verilog file for output + set outputFileName "rtl/build_id.v" + set outputFile [open $outputFileName "w"] + + # Output the Verilog source + puts $outputFile "`define BUILD_DATE \"$buildDate\"" + puts $outputFile "`define BUILD_TIME \"$buildTime\"" + close $outputFile + + # Send confirmation message to the Messages window + post_message "Generated build identification Verilog module: [pwd]/$outputFileName" + post_message "Date: $buildDate" + post_message "Time: $buildTime" +} + +# Comment out this line to prevent the process from automatically executing when the file is sourced: +generateBuildID_Verilog \ No newline at end of file diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/clk_div.vhd b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/clk_div.vhd new file mode 100644 index 00000000..020d6ae6 --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/clk_div.vhd @@ -0,0 +1,39 @@ +library ieee; +use ieee.std_logic_1164.all; + +entity clk_div is + generic + ( + DIVISOR : natural + ); + port + ( + clk : in std_logic; + reset : in std_logic; + + clk_en : out std_logic + ); +end clk_div; + +architecture SYN of clk_div is + +begin + + process (clk, reset) + variable count : integer range 0 to DIVISOR-1; + begin + if reset = '1' then + count := 0; + clk_en <= '0'; + elsif rising_edge(clk) then + clk_en <= '0'; + if count = DIVISOR-1 then + clk_en <= '1'; + count := 0; + else + count := count + 1; + end if; + end if; + end process; + +end SYN; diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/cpu68.vhd b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/cpu68.vhd new file mode 100644 index 00000000..016bd9a9 --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/cpu68.vhd @@ -0,0 +1,3963 @@ +--===========================================================================-- +-- +-- S Y N T H E Z I A B L E CPU68 C O R E +-- +-- www.OpenCores.Org - December 2002 +-- This core adheres to the GNU public license +-- +-- File name : cpu68.vhd +-- +-- Purpose : Implements a 6800 compatible CPU core with some +-- additional instructions found in the 6801 +-- +-- Dependencies : ieee.Std_Logic_1164 +-- ieee.std_logic_unsigned +-- +-- Author : John E. Kent +-- +--===========================================================================---- +-- +-- Revision History: +-- +-- Date: Revision Author +-- 22 Sep 2002 0.1 John Kent +-- +-- 30 Oct 2002 0.2 John Kent +-- made NMI edge triggered +-- +-- 30 Oct 2002 0.3 John Kent +-- more corrections to NMI +-- added wai_wait_state to prevent stack overflow on wai. +-- +-- 1 Nov 2002 0.4 John Kent +-- removed WAI states and integrated WAI with the interrupt service routine +-- replace Data out (do) and Data in (di) register with a single Memory Data (md) reg. +-- Added Multiply instruction states. +-- run ALU and CC out of CPU module for timing measurements. +-- +-- 3 Nov 2002 0.5 John Kent +-- Memory Data Register was not loaded on Store instructions +-- SEV and CLV were not defined in the ALU +-- Overflow Flag on NEG was incorrect +-- +-- 16th Feb 2003 0.6 John Kent +-- Rearranged the execution cycle for dual operand instructions +-- so that occurs during the following fetch cycle. +-- This allows the reduction of one clock cycle from dual operand +-- instruction. Note that this also necessitated re-arranging the +-- program counter so that it is no longer incremented in the ALU. +-- The effective address has also been re-arranged to include a +-- separate added. The STD (store accd) now sets the condition codes. +-- +-- 28th Jun 2003 0.7 John Kent +-- Added Hold and Halt signals. Hold is used to steal cycles from the +-- CPU or add wait states. Halt puts the CPU in the inactive state +-- and is only honoured in the fetch cycle. Both signals are active high. +-- +-- 9th Jan 2004 0.8 John Kent +-- Clear instruction did an alu_ld8 rather than an alu_clr, so +-- the carry bit was not cleared correctly. +-- This error was picked up by Michael Hassenfratz. +-- + +library ieee; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_ARITH.ALL; +use IEEE.STD_LOGIC_UNSIGNED.ALL; + +entity cpu68 is + port ( + clk: in std_logic; + rst: in std_logic; + rw: out std_logic; + vma: out std_logic; + address: out std_logic_vector(15 downto 0); + data_in: in std_logic_vector(7 downto 0); + data_out: out std_logic_vector(7 downto 0); + hold: in std_logic; + halt: in std_logic; + irq: in std_logic; + nmi: in std_logic; + test_alu: out std_logic_vector(15 downto 0); + test_cc: out std_logic_vector(7 downto 0) + ); +end; + +architecture CPU_ARCH of cpu68 is + + constant SBIT : integer := 7; + constant XBIT : integer := 6; + constant HBIT : integer := 5; + constant IBIT : integer := 4; + constant NBIT : integer := 3; + constant ZBIT : integer := 2; + constant VBIT : integer := 1; + constant CBIT : integer := 0; + + type state_type is (reset_state, fetch_state, decode_state, + extended_state, indexed_state, read8_state, read16_state, immediate16_state, + write8_state, write16_state, + execute_state, halt_state, error_state, + mul_state, mulea_state, muld_state, + mul0_state, mul1_state, mul2_state, mul3_state, + mul4_state, mul5_state, mul6_state, mul7_state, + jmp_state, jsr_state, jsr1_state, + branch_state, bsr_state, bsr1_state, + rts_hi_state, rts_lo_state, + int_pcl_state, int_pch_state, + int_ixl_state, int_ixh_state, + int_cc_state, int_acca_state, int_accb_state, + int_wai_state, int_mask_state, + rti_state, rti_cc_state, rti_acca_state, rti_accb_state, + rti_ixl_state, rti_ixh_state, + rti_pcl_state, rti_pch_state, + pula_state, psha_state, pulb_state, pshb_state, + pulx_lo_state, pulx_hi_state, pshx_lo_state, pshx_hi_state, + vect_lo_state, vect_hi_state ); + type addr_type is (idle_ad, fetch_ad, read_ad, write_ad, push_ad, pull_ad, int_hi_ad, int_lo_ad ); + type dout_type is (md_lo_dout, md_hi_dout, acca_dout, accb_dout, ix_lo_dout, ix_hi_dout, cc_dout, pc_lo_dout, pc_hi_dout ); + type op_type is (reset_op, fetch_op, latch_op ); + type acca_type is (reset_acca, load_acca, load_hi_acca, pull_acca, latch_acca ); + type accb_type is (reset_accb, load_accb, pull_accb, latch_accb ); + type cc_type is (reset_cc, load_cc, pull_cc, latch_cc ); + type ix_type is (reset_ix, load_ix, pull_lo_ix, pull_hi_ix, latch_ix ); + type sp_type is (reset_sp, latch_sp, load_sp ); + type pc_type is (reset_pc, latch_pc, load_ea_pc, add_ea_pc, pull_lo_pc, pull_hi_pc, inc_pc ); + type md_type is (reset_md, latch_md, load_md, fetch_first_md, fetch_next_md, shiftl_md ); + type ea_type is (reset_ea, latch_ea, add_ix_ea, load_accb_ea, inc_ea, fetch_first_ea, fetch_next_ea ); + type iv_type is (reset_iv, latch_iv, swi_iv, nmi_iv, irq_iv ); + type nmi_type is (reset_nmi, set_nmi, latch_nmi ); + type left_type is (acca_left, accb_left, accd_left, md_left, ix_left, sp_left ); + type right_type is (md_right, zero_right, plus_one_right, accb_right ); + type alu_type is (alu_add8, alu_sub8, alu_add16, alu_sub16, alu_adc, alu_sbc, + alu_and, alu_ora, alu_eor, + alu_tst, alu_inc, alu_dec, alu_clr, alu_neg, alu_com, + alu_inx, alu_dex, alu_cpx, + alu_lsr16, alu_lsl16, + alu_ror8, alu_rol8, + alu_asr8, alu_asl8, alu_lsr8, + alu_sei, alu_cli, alu_sec, alu_clc, alu_sev, alu_clv, alu_tpa, alu_tap, + alu_ld8, alu_st8, alu_ld16, alu_st16, alu_nop, alu_daa ); + + signal op_code: std_logic_vector(7 downto 0); + signal acca: std_logic_vector(7 downto 0); + signal accb: std_logic_vector(7 downto 0); + signal cc: std_logic_vector(7 downto 0); + signal cc_out: std_logic_vector(7 downto 0); + signal xreg: std_logic_vector(15 downto 0); + signal sp: std_logic_vector(15 downto 0); + signal ea: std_logic_vector(15 downto 0); + signal pc: std_logic_vector(15 downto 0); + signal md: std_logic_vector(15 downto 0); + signal left: std_logic_vector(15 downto 0); + signal right: std_logic_vector(15 downto 0); + signal out_alu: std_logic_vector(15 downto 0); + signal iv: std_logic_vector(1 downto 0); + signal nmi_req: std_logic; + signal nmi_ack: std_logic; + + signal state: state_type; + signal next_state: state_type; + signal pc_ctrl: pc_type; + signal ea_ctrl: ea_type; + signal op_ctrl: op_type; + signal md_ctrl: md_type; + signal acca_ctrl: acca_type; + signal accb_ctrl: accb_type; + signal ix_ctrl: ix_type; + signal cc_ctrl: cc_type; + signal sp_ctrl: sp_type; + signal iv_ctrl: iv_type; + signal left_ctrl: left_type; + signal right_ctrl: right_type; + signal alu_ctrl: alu_type; + signal addr_ctrl: addr_type; + signal dout_ctrl: dout_type; + signal nmi_ctrl: nmi_type; + + +begin + +---------------------------------- +-- +-- Address bus multiplexer +-- +---------------------------------- + +addr_mux: process( clk, addr_ctrl, pc, ea, sp, iv ) +begin + case addr_ctrl is + when idle_ad => + address <= "1111111111111111"; + vma <= '0'; + rw <= '1'; + when fetch_ad => + address <= pc; + vma <= '1'; + rw <= '1'; + when read_ad => + address <= ea; + vma <= '1'; + rw <= '1'; + when write_ad => + address <= ea; + vma <= '1'; + rw <= '0'; + when push_ad => + address <= sp; + vma <= '1'; + rw <= '0'; + when pull_ad => + address <= sp; + vma <= '1'; + rw <= '1'; + when int_hi_ad => + address <= "1111111111111" & iv & "0"; + vma <= '1'; + rw <= '1'; + when int_lo_ad => + address <= "1111111111111" & iv & "1"; + vma <= '1'; + rw <= '1'; + when others => + address <= "1111111111111111"; + vma <= '0'; + rw <= '1'; + end case; +end process; + +-------------------------------- +-- +-- Data Bus output +-- +-------------------------------- +dout_mux : process( clk, dout_ctrl, md, acca, accb, xreg, pc, cc ) +begin + case dout_ctrl is + when md_hi_dout => -- alu output + data_out <= md(15 downto 8); + when md_lo_dout => + data_out <= md(7 downto 0); + when acca_dout => -- accumulator a + data_out <= acca; + when accb_dout => -- accumulator b + data_out <= accb; + when ix_lo_dout => -- index reg + data_out <= xreg(7 downto 0); + when ix_hi_dout => -- index reg + data_out <= xreg(15 downto 8); + when cc_dout => -- condition codes + data_out <= cc; + when pc_lo_dout => -- low order pc + data_out <= pc(7 downto 0); + when pc_hi_dout => -- high order pc + data_out <= pc(15 downto 8); + when others => + data_out <= "00000000"; + end case; +end process; + + +---------------------------------- +-- +-- Program Counter Control +-- +---------------------------------- + +pc_mux: process( clk, pc_ctrl, pc, out_alu, data_in, ea, hold ) +variable tempof : std_logic_vector(15 downto 0); +variable temppc : std_logic_vector(15 downto 0); +begin + case pc_ctrl is + when add_ea_pc => + if ea(7) = '0' then + tempof := "00000000" & ea(7 downto 0); + else + tempof := "11111111" & ea(7 downto 0); + end if; + when inc_pc => + tempof := "0000000000000001"; + when others => + tempof := "0000000000000000"; + end case; + + case pc_ctrl is + when reset_pc => + temppc := "1111111111111110"; + when load_ea_pc => + temppc := ea; + when pull_lo_pc => + temppc(7 downto 0) := data_in; + temppc(15 downto 8) := pc(15 downto 8); + when pull_hi_pc => + temppc(7 downto 0) := pc(7 downto 0); + temppc(15 downto 8) := data_in; + when others => + temppc := pc; + end case; + + if clk'event and clk = '0' then + if hold = '1' then + pc <= pc; + else + pc <= temppc + tempof; + end if; + end if; +end process; + +---------------------------------- +-- +-- Effective Address Control +-- +---------------------------------- + +ea_mux: process( clk, ea_ctrl, ea, out_alu, data_in, accb, xreg, hold ) +variable tempind : std_logic_vector(15 downto 0); +variable tempea : std_logic_vector(15 downto 0); +begin + case ea_ctrl is + when add_ix_ea => + tempind := "00000000" & ea(7 downto 0); + when inc_ea => + tempind := "0000000000000001"; + when others => + tempind := "0000000000000000"; + end case; + + case ea_ctrl is + when reset_ea => + tempea := "0000000000000000"; + when load_accb_ea => + tempea := "00000000" & accb(7 downto 0); + when add_ix_ea => + tempea := xreg; + when fetch_first_ea => + tempea(7 downto 0) := data_in; + tempea(15 downto 8) := "00000000"; + when fetch_next_ea => + tempea(7 downto 0) := data_in; + tempea(15 downto 8) := ea(7 downto 0); + when others => + tempea := ea; + end case; + + if clk'event and clk = '0' then + if hold = '1' then + ea <= ea; + else + ea <= tempea + tempind; + end if; + end if; +end process; + +-------------------------------- +-- +-- Accumulator A +-- +-------------------------------- +acca_mux : process( clk, acca_ctrl, out_alu, acca, data_in, hold ) +begin + if clk'event and clk = '0' then + if hold = '1' then + acca <= acca; + else + case acca_ctrl is + when reset_acca => + acca <= "00000000"; + when load_acca => + acca <= out_alu(7 downto 0); + when load_hi_acca => + acca <= out_alu(15 downto 8); + when pull_acca => + acca <= data_in; + when others => +-- when latch_acca => + acca <= acca; + end case; + end if; + end if; +end process; + +-------------------------------- +-- +-- Accumulator B +-- +-------------------------------- +accb_mux : process( clk, accb_ctrl, out_alu, accb, data_in, hold ) +begin + if clk'event and clk = '0' then + if hold = '1' then + accb <= accb; + else + case accb_ctrl is + when reset_accb => + accb <= "00000000"; + when load_accb => + accb <= out_alu(7 downto 0); + when pull_accb => + accb <= data_in; + when others => +-- when latch_accb => + accb <= accb; + end case; + end if; + end if; +end process; + +-------------------------------- +-- +-- X Index register +-- +-------------------------------- +ix_mux : process( clk, ix_ctrl, out_alu, xreg, data_in, hold ) +begin + if clk'event and clk = '0' then + if hold = '1' then + xreg <= xreg; + else + case ix_ctrl is + when reset_ix => + xreg <= "0000000000000000"; + when load_ix => + xreg <= out_alu(15 downto 0); + when pull_hi_ix => + xreg(15 downto 8) <= data_in; + when pull_lo_ix => + xreg(7 downto 0) <= data_in; + when others => +-- when latch_ix => + xreg <= xreg; + end case; + end if; + end if; +end process; + +-------------------------------- +-- +-- stack pointer +-- +-------------------------------- +sp_mux : process( clk, sp_ctrl, out_alu, hold ) +begin + if clk'event and clk = '0' then + if hold = '1' then + sp <= sp; + else + case sp_ctrl is + when reset_sp => + sp <= "0000000000000000"; + when load_sp => + sp <= out_alu(15 downto 0); + when others => +-- when latch_sp => + sp <= sp; + end case; + end if; + end if; +end process; + +-------------------------------- +-- +-- Memory Data +-- +-------------------------------- +md_mux : process( clk, md_ctrl, out_alu, data_in, md, hold ) +begin + if clk'event and clk = '0' then + if hold = '1' then + md <= md; + else + case md_ctrl is + when reset_md => + md <= "0000000000000000"; + when load_md => + md <= out_alu(15 downto 0); + when fetch_first_md => + md(15 downto 8) <= "00000000"; + md(7 downto 0) <= data_in; + when fetch_next_md => + md(15 downto 8) <= md(7 downto 0); + md(7 downto 0) <= data_in; + when shiftl_md => + md(15 downto 1) <= md(14 downto 0); + md(0) <= '0'; + when others => +-- when latch_md => + md <= md; + end case; + end if; + end if; +end process; + + +---------------------------------- +-- +-- Condition Codes +-- +---------------------------------- + +cc_mux: process( clk, cc_ctrl, cc_out, cc, data_in, hold ) +begin + if clk'event and clk = '0' then + if hold = '1' then + cc <= cc; + else + case cc_ctrl is + when reset_cc => + cc <= "11000000"; + when load_cc => + cc <= cc_out; + when pull_cc => + cc <= data_in; + when others => +-- when latch_cc => + cc <= cc; + end case; + end if; + end if; +end process; + +---------------------------------- +-- +-- interrupt vector +-- +---------------------------------- + +iv_mux: process( clk, iv_ctrl, hold ) +begin + if clk'event and clk = '0' then + if hold = '1' then + iv <= iv; + else + case iv_ctrl is + when reset_iv => + iv <= "11"; + when nmi_iv => + iv <= "10"; + when swi_iv => + iv <= "01"; + when irq_iv => + iv <= "00"; + when others => + iv <= iv; + end case; + end if; + end if; +end process; + +---------------------------------- +-- +-- op code fetch +-- +---------------------------------- + +op_fetch: process( clk, data_in, op_ctrl, op_code, hold ) +begin + if clk'event and clk = '0' then + if hold = '1' then + op_code <= op_code; + else + case op_ctrl is + when reset_op => + op_code <= "00000001"; -- nop + when fetch_op => + op_code <= data_in; + when others => +-- when latch_op => + op_code <= op_code; + end case; + end if; + end if; +end process; + +---------------------------------- +-- +-- Left Mux +-- +---------------------------------- + +left_mux: process( left_ctrl, acca, accb, xreg, sp, pc, ea, md ) +begin + case left_ctrl is + when acca_left => + left(15 downto 8) <= "00000000"; + left(7 downto 0) <= acca; + when accb_left => + left(15 downto 8) <= "00000000"; + left(7 downto 0) <= accb; + when accd_left => + left(15 downto 8) <= acca; + left(7 downto 0) <= accb; + when ix_left => + left <= xreg; + when sp_left => + left <= sp; + when others => +-- when md_left => + left <= md; + end case; +end process; +---------------------------------- +-- +-- Right Mux +-- +---------------------------------- + +right_mux: process( right_ctrl, data_in, md, accb, ea ) +begin + case right_ctrl is + when zero_right => + right <= "0000000000000000"; + when plus_one_right => + right <= "0000000000000001"; + when accb_right => + right <= "00000000" & accb; + when others => +-- when md_right => + right <= md; + end case; +end process; + +---------------------------------- +-- +-- Arithmetic Logic Unit +-- +---------------------------------- + +mux_alu: process( alu_ctrl, cc, left, right, out_alu, cc_out ) +variable valid_lo, valid_hi : boolean; +variable carry_in : std_logic; +variable daa_reg : std_logic_vector(7 downto 0); +begin + + case alu_ctrl is + when alu_adc | alu_sbc | + alu_rol8 | alu_ror8 => + carry_in := cc(CBIT); + when others => + carry_in := '0'; + end case; + + valid_lo := left(3 downto 0) <= 9; + valid_hi := left(7 downto 4) <= 9; + + if (cc(CBIT) = '0') then + if( cc(HBIT) = '1' ) then + if valid_hi then + daa_reg := "00000110"; + else + daa_reg := "01100110"; + end if; + else + if valid_lo then + if valid_hi then + daa_reg := "00000000"; + else + daa_reg := "01100000"; + end if; + else + if( left(7 downto 4) <= 8 ) then + daa_reg := "00000110"; + else + daa_reg := "01100110"; + end if; + end if; + end if; + else + if ( cc(HBIT) = '1' )then + daa_reg := "01100110"; + else + if valid_lo then + daa_reg := "01100000"; + else + daa_reg := "01100110"; + end if; + end if; + end if; + + case alu_ctrl is + when alu_add8 | alu_inc | + alu_add16 | alu_inx | + alu_adc => + out_alu <= left + right + ("000000000000000" & carry_in); + when alu_sub8 | alu_dec | + alu_sub16 | alu_dex | + alu_sbc | alu_cpx => + out_alu <= left - right - ("000000000000000" & carry_in); + when alu_and => + out_alu <= left and right; -- and/bit + when alu_ora => + out_alu <= left or right; -- or + when alu_eor => + out_alu <= left xor right; -- eor/xor + when alu_lsl16 | alu_asl8 | alu_rol8 => + out_alu <= left(14 downto 0) & carry_in; -- rol8/asl8/lsl16 + when alu_lsr16 | alu_lsr8 => + out_alu <= carry_in & left(15 downto 1); -- lsr + when alu_ror8 => + out_alu <= "00000000" & carry_in & left(7 downto 1); -- ror + when alu_asr8 => + out_alu <= "00000000" & left(7) & left(7 downto 1); -- asr + when alu_neg => + out_alu <= right - left; -- neg (right=0) + when alu_com => + out_alu <= not left; + when alu_clr | alu_ld8 | alu_ld16 => + out_alu <= right; -- clr, ld + when alu_st8 | alu_st16 => + out_alu <= left; + when alu_daa => + out_alu <= left + ("00000000" & daa_reg); + when alu_tpa => + out_alu <= "00000000" & cc; + when others => + out_alu <= left; -- nop + end case; + + -- + -- carry bit + -- + case alu_ctrl is + when alu_add8 | alu_adc => + cc_out(CBIT) <= (left(7) and right(7)) or + (left(7) and not out_alu(7)) or + (right(7) and not out_alu(7)); + when alu_sub8 | alu_sbc => + cc_out(CBIT) <= ((not left(7)) and right(7)) or + ((not left(7)) and out_alu(7)) or + (right(7) and out_alu(7)); + when alu_add16 => + cc_out(CBIT) <= (left(15) and right(15)) or + (left(15) and not out_alu(15)) or + (right(15) and not out_alu(15)); + when alu_sub16 => + cc_out(CBIT) <= ((not left(15)) and right(15)) or + ((not left(15)) and out_alu(15)) or + (right(15) and out_alu(15)); + when alu_ror8 | alu_lsr16 | alu_lsr8 | alu_asr8 => + cc_out(CBIT) <= left(0); + when alu_rol8 | alu_asl8 => + cc_out(CBIT) <= left(7); + when alu_lsl16 => + cc_out(CBIT) <= left(15); + when alu_com => + cc_out(CBIT) <= '1'; + when alu_neg | alu_clr => + cc_out(CBIT) <= out_alu(7) or out_alu(6) or out_alu(5) or out_alu(4) or + out_alu(3) or out_alu(2) or out_alu(1) or out_alu(0); + when alu_daa => + if ( daa_reg(7 downto 4) = "0110" ) then + cc_out(CBIT) <= '1'; + else + cc_out(CBIT) <= '0'; + end if; + when alu_sec => + cc_out(CBIT) <= '1'; + when alu_clc => + cc_out(CBIT) <= '0'; + when alu_tap => + cc_out(CBIT) <= left(CBIT); + when others => -- carry is not affected by cpx + cc_out(CBIT) <= cc(CBIT); + end case; + -- + -- Zero flag + -- + case alu_ctrl is + when alu_add8 | alu_sub8 | + alu_adc | alu_sbc | + alu_and | alu_ora | alu_eor | + alu_inc | alu_dec | + alu_neg | alu_com | alu_clr | + alu_rol8 | alu_ror8 | alu_asr8 | alu_asl8 | alu_lsr8 | + alu_ld8 | alu_st8 => + cc_out(ZBIT) <= not( out_alu(7) or out_alu(6) or out_alu(5) or out_alu(4) or + out_alu(3) or out_alu(2) or out_alu(1) or out_alu(0) ); + when alu_add16 | alu_sub16 | + alu_lsl16 | alu_lsr16 | + alu_inx | alu_dex | + alu_ld16 | alu_st16 | alu_cpx => + cc_out(ZBIT) <= not( out_alu(15) or out_alu(14) or out_alu(13) or out_alu(12) or + out_alu(11) or out_alu(10) or out_alu(9) or out_alu(8) or + out_alu(7) or out_alu(6) or out_alu(5) or out_alu(4) or + out_alu(3) or out_alu(2) or out_alu(1) or out_alu(0) ); + when alu_tap => + cc_out(ZBIT) <= left(ZBIT); + when others => + cc_out(ZBIT) <= cc(ZBIT); + end case; + + -- + -- negative flag + -- + case alu_ctrl is + when alu_add8 | alu_sub8 | + alu_adc | alu_sbc | + alu_and | alu_ora | alu_eor | + alu_rol8 | alu_ror8 | alu_asr8 | alu_asl8 | alu_lsr8 | + alu_inc | alu_dec | alu_neg | alu_com | alu_clr | + alu_ld8 | alu_st8 => + cc_out(NBIT) <= out_alu(7); + when alu_add16 | alu_sub16 | + alu_lsl16 | alu_lsr16 | + alu_ld16 | alu_st16 | alu_cpx => + cc_out(NBIT) <= out_alu(15); + when alu_tap => + cc_out(NBIT) <= left(NBIT); + when others => + cc_out(NBIT) <= cc(NBIT); + end case; + + -- + -- Interrupt mask flag + -- + case alu_ctrl is + when alu_sei => + cc_out(IBIT) <= '1'; -- set interrupt mask + when alu_cli => + cc_out(IBIT) <= '0'; -- clear interrupt mask + when alu_tap => + cc_out(IBIT) <= left(IBIT); + when others => + cc_out(IBIT) <= cc(IBIT); -- interrupt mask + end case; + + -- + -- Half Carry flag + -- + case alu_ctrl is + when alu_add8 | alu_adc => + cc_out(HBIT) <= (left(3) and right(3)) or + (right(3) and not out_alu(3)) or + (left(3) and not out_alu(3)); + when alu_tap => + cc_out(HBIT) <= left(HBIT); + when others => + cc_out(HBIT) <= cc(HBIT); + end case; + + -- + -- Overflow flag + -- + case alu_ctrl is + when alu_add8 | alu_adc => + cc_out(VBIT) <= (left(7) and right(7) and (not out_alu(7))) or + ((not left(7)) and (not right(7)) and out_alu(7)); + when alu_sub8 | alu_sbc => + cc_out(VBIT) <= (left(7) and (not right(7)) and (not out_alu(7))) or + ((not left(7)) and right(7) and out_alu(7)); + when alu_add16 => + cc_out(VBIT) <= (left(15) and right(15) and (not out_alu(15))) or + ((not left(15)) and (not right(15)) and out_alu(15)); + when alu_sub16 | alu_cpx => + cc_out(VBIT) <= (left(15) and (not right(15)) and (not out_alu(15))) or + ((not left(15)) and right(15) and out_alu(15)); + when alu_inc => + cc_out(VBIT) <= ((not left(7)) and left(6) and left(5) and left(4) and + left(3) and left(2) and left(1) and left(0)); + when alu_dec | alu_neg => + cc_out(VBIT) <= (left(7) and (not left(6)) and (not left(5)) and (not left(4)) and + (not left(3)) and (not left(2)) and (not left(1)) and (not left(0))); + when alu_asr8 => + cc_out(VBIT) <= left(0) xor left(7); + when alu_lsr8 | alu_lsr16 => + cc_out(VBIT) <= left(0); + when alu_ror8 => + cc_out(VBIT) <= left(0) xor cc(CBIT); + when alu_lsl16 => + cc_out(VBIT) <= left(15) xor left(14); + when alu_rol8 | alu_asl8 => + cc_out(VBIT) <= left(7) xor left(6); + when alu_tap => + cc_out(VBIT) <= left(VBIT); + when alu_and | alu_ora | alu_eor | alu_com | + alu_st8 | alu_st16 | alu_ld8 | alu_ld16 | + alu_clv => + cc_out(VBIT) <= '0'; + when alu_sev => + cc_out(VBIT) <= '1'; + when others => + cc_out(VBIT) <= cc(VBIT); + end case; + + case alu_ctrl is + when alu_tap => + cc_out(XBIT) <= cc(XBIT) and left(XBIT); + cc_out(SBIT) <= left(SBIT); + when others => + cc_out(XBIT) <= cc(XBIT) and left(XBIT); + cc_out(SBIT) <= cc(SBIT); + end case; + + test_alu <= out_alu; + test_cc <= cc_out; +end process; + +------------------------------------ +-- +-- Detect Edge of NMI interrupt +-- +------------------------------------ + +nmi_handler : process( clk, rst, nmi, nmi_ack ) +begin + if clk'event and clk='0' then + if hold = '1' then + nmi_req <= nmi_req; + else + if rst='1' then + nmi_req <= '0'; + else + if (nmi='1') and (nmi_ack='0') then + nmi_req <= '1'; + else + if (nmi='0') and (nmi_ack='1') then + nmi_req <= '0'; + else + nmi_req <= nmi_req; + end if; + end if; + end if; + end if; + end if; +end process; + +------------------------------------ +-- +-- Nmi mux +-- +------------------------------------ + +nmi_mux: process( clk, nmi_ctrl, nmi_ack, hold ) +begin + if clk'event and clk='0' then + if hold = '1' then + nmi_ack <= nmi_ack; + else + case nmi_ctrl is + when set_nmi => + nmi_ack <= '1'; + when reset_nmi => + nmi_ack <= '0'; + when others => +-- when latch_nmi => + nmi_ack <= nmi_ack; + end case; + end if; + end if; +end process; + +------------------------------------ +-- +-- state sequencer +-- +------------------------------------ +process( state, op_code, cc, ea, irq, nmi_req, nmi_ack, hold, halt ) + begin + case state is + when reset_state => -- released from reset + -- reset the registers + op_ctrl <= reset_op; + acca_ctrl <= reset_acca; + accb_ctrl <= reset_accb; + ix_ctrl <= reset_ix; + sp_ctrl <= reset_sp; + pc_ctrl <= reset_pc; + ea_ctrl <= reset_ea; + md_ctrl <= reset_md; + iv_ctrl <= reset_iv; + nmi_ctrl <= reset_nmi; + -- idle the ALU + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= reset_cc; + -- idle the bus + dout_ctrl <= md_lo_dout; + addr_ctrl <= idle_ad; + next_state <= vect_hi_state; + + -- + -- Jump via interrupt vector + -- iv holds interrupt type + -- fetch PC hi from vector location + -- + when vect_hi_state => + -- default the registers + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + md_ctrl <= latch_md; + ea_ctrl <= latch_ea; + iv_ctrl <= latch_iv; + -- idle the ALU + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + -- fetch pc low interrupt vector + pc_ctrl <= pull_hi_pc; + addr_ctrl <= int_hi_ad; + dout_ctrl <= pc_hi_dout; + next_state <= vect_lo_state; + -- + -- jump via interrupt vector + -- iv holds vector type + -- fetch PC lo from vector location + -- + when vect_lo_state => + -- default the registers + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + md_ctrl <= latch_md; + ea_ctrl <= latch_ea; + iv_ctrl <= latch_iv; + -- idle the ALU + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + -- fetch the vector low byte + pc_ctrl <= pull_lo_pc; + addr_ctrl <= int_lo_ad; + dout_ctrl <= pc_lo_dout; + next_state <= fetch_state; + + -- + -- Here to fetch an instruction + -- PC points to opcode + -- Should service interrupt requests at this point + -- either from the timer + -- or from the external input. + -- + when fetch_state => + case op_code(7 downto 4) is + when "0000" | + "0001" | + "0010" | -- branch conditional + "0011" | + "0100" | -- acca single op + "0101" | -- accb single op + "0110" | -- indexed single op + "0111" => -- extended single op + -- idle ALU + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + + when "1000" | -- acca immediate + "1001" | -- acca direct + "1010" | -- acca indexed + "1011" => -- acca extended + case op_code(3 downto 0) is + when "0000" => -- suba + left_ctrl <= acca_left; + right_ctrl <= md_right; + alu_ctrl <= alu_sub8; + cc_ctrl <= load_cc; + acca_ctrl <= load_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + when "0001" => -- cmpa + left_ctrl <= acca_left; + right_ctrl <= md_right; + alu_ctrl <= alu_sub8; + cc_ctrl <= load_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + when "0010" => -- sbca + left_ctrl <= acca_left; + right_ctrl <= md_right; + alu_ctrl <= alu_sbc; + cc_ctrl <= load_cc; + acca_ctrl <= load_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + when "0011" => -- subd + left_ctrl <= accd_left; + right_ctrl <= md_right; + alu_ctrl <= alu_sub16; + cc_ctrl <= load_cc; + acca_ctrl <= load_hi_acca; + accb_ctrl <= load_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + when "0100" => -- anda + left_ctrl <= acca_left; + right_ctrl <= md_right; + alu_ctrl <= alu_and; + cc_ctrl <= load_cc; + acca_ctrl <= load_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + when "0101" => -- bita + left_ctrl <= acca_left; + right_ctrl <= md_right; + alu_ctrl <= alu_and; + cc_ctrl <= load_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + when "0110" => -- ldaa + left_ctrl <= acca_left; + right_ctrl <= md_right; + alu_ctrl <= alu_ld8; + cc_ctrl <= load_cc; + acca_ctrl <= load_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + when "0111" => -- staa + left_ctrl <= acca_left; + right_ctrl <= md_right; + alu_ctrl <= alu_st8; + cc_ctrl <= load_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + when "1000" => -- eora + left_ctrl <= acca_left; + right_ctrl <= md_right; + alu_ctrl <= alu_eor; + cc_ctrl <= load_cc; + acca_ctrl <= load_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + when "1001" => -- adca + left_ctrl <= acca_left; + right_ctrl <= md_right; + alu_ctrl <= alu_adc; + cc_ctrl <= load_cc; + acca_ctrl <= load_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + when "1010" => -- oraa + left_ctrl <= acca_left; + right_ctrl <= md_right; + alu_ctrl <= alu_ora; + cc_ctrl <= load_cc; + acca_ctrl <= load_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + when "1011" => -- adda + left_ctrl <= acca_left; + right_ctrl <= md_right; + alu_ctrl <= alu_add8; + cc_ctrl <= load_cc; + acca_ctrl <= load_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + when "1100" => -- cpx + left_ctrl <= ix_left; + right_ctrl <= md_right; + alu_ctrl <= alu_cpx; + cc_ctrl <= load_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + when "1101" => -- bsr / jsr + left_ctrl <= acca_left; + right_ctrl <= md_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + when "1110" => -- lds + left_ctrl <= sp_left; + right_ctrl <= md_right; + alu_ctrl <= alu_ld16; + cc_ctrl <= load_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= load_sp; + when "1111" => -- sts + left_ctrl <= sp_left; + right_ctrl <= md_right; + alu_ctrl <= alu_st16; + cc_ctrl <= load_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + when others => + left_ctrl <= acca_left; + right_ctrl <= md_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + end case; + when "1100" | -- accb immediate + "1101" | -- accb direct + "1110" | -- accb indexed + "1111" => -- accb extended + case op_code(3 downto 0) is + when "0000" => -- subb + left_ctrl <= accb_left; + right_ctrl <= md_right; + alu_ctrl <= alu_sub8; + cc_ctrl <= load_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= load_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + when "0001" => -- cmpb + left_ctrl <= accb_left; + right_ctrl <= md_right; + alu_ctrl <= alu_sub8; + cc_ctrl <= load_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + when "0010" => -- sbcb + left_ctrl <= accb_left; + right_ctrl <= md_right; + alu_ctrl <= alu_sbc; + cc_ctrl <= load_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= load_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + when "0011" => -- addd + left_ctrl <= accd_left; + right_ctrl <= md_right; + alu_ctrl <= alu_add16; + cc_ctrl <= load_cc; + acca_ctrl <= load_hi_acca; + accb_ctrl <= load_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + when "0100" => -- andb + left_ctrl <= accb_left; + right_ctrl <= md_right; + alu_ctrl <= alu_and; + cc_ctrl <= load_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= load_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + when "0101" => -- bitb + left_ctrl <= accb_left; + right_ctrl <= md_right; + alu_ctrl <= alu_and; + cc_ctrl <= load_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + when "0110" => -- ldab + left_ctrl <= accb_left; + right_ctrl <= md_right; + alu_ctrl <= alu_ld8; + cc_ctrl <= load_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= load_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + when "0111" => -- stab + left_ctrl <= accb_left; + right_ctrl <= md_right; + alu_ctrl <= alu_st8; + cc_ctrl <= load_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + when "1000" => -- eorb + left_ctrl <= accb_left; + right_ctrl <= md_right; + alu_ctrl <= alu_eor; + cc_ctrl <= load_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= load_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + when "1001" => -- adcb + left_ctrl <= accb_left; + right_ctrl <= md_right; + alu_ctrl <= alu_adc; + cc_ctrl <= load_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= load_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + when "1010" => -- orab + left_ctrl <= accb_left; + right_ctrl <= md_right; + alu_ctrl <= alu_ora; + cc_ctrl <= load_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= load_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + when "1011" => -- addb + left_ctrl <= accb_left; + right_ctrl <= md_right; + alu_ctrl <= alu_add8; + cc_ctrl <= load_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= load_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + when "1100" => -- ldd + left_ctrl <= accd_left; + right_ctrl <= md_right; + alu_ctrl <= alu_ld16; + cc_ctrl <= load_cc; + acca_ctrl <= load_hi_acca; + accb_ctrl <= load_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + when "1101" => -- std + left_ctrl <= accd_left; + right_ctrl <= md_right; + alu_ctrl <= alu_st16; + cc_ctrl <= load_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + when "1110" => -- ldx + left_ctrl <= ix_left; + right_ctrl <= md_right; + alu_ctrl <= alu_ld16; + cc_ctrl <= load_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= load_ix; + sp_ctrl <= latch_sp; + when "1111" => -- stx + left_ctrl <= ix_left; + right_ctrl <= md_right; + alu_ctrl <= alu_st16; + cc_ctrl <= load_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + when others => + left_ctrl <= accb_left; + right_ctrl <= md_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + end case; + when others => + left_ctrl <= accd_left; + right_ctrl <= md_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + end case; + md_ctrl <= latch_md; + -- fetch the op code + op_ctrl <= fetch_op; + ea_ctrl <= reset_ea; + addr_ctrl <= fetch_ad; + dout_ctrl <= md_lo_dout; + iv_ctrl <= latch_iv; + if halt = '1' then + pc_ctrl <= latch_pc; + nmi_ctrl <= latch_nmi; + next_state <= halt_state; + -- service non maskable interrupts + elsif (nmi_req = '1') and (nmi_ack = '0') then + pc_ctrl <= latch_pc; + nmi_ctrl <= set_nmi; + next_state <= int_pcl_state; + -- service maskable interrupts + else + -- + -- nmi request is not cleared until nmi input goes low + -- + if(nmi_req = '0') and (nmi_ack='1') then + nmi_ctrl <= reset_nmi; + else + nmi_ctrl <= latch_nmi; + end if; + -- + -- IRQ is level sensitive + -- + if (irq = '1') and (cc(IBIT) = '0') then + pc_ctrl <= latch_pc; + next_state <= int_pcl_state; + else + -- Advance the PC to fetch next instruction byte + pc_ctrl <= inc_pc; + next_state <= decode_state; + end if; + end if; + -- + -- Here to decode instruction + -- and fetch next byte of intruction + -- whether it be necessary or not + -- + when decode_state => + -- fetch first byte of address or immediate data + ea_ctrl <= fetch_first_ea; + addr_ctrl <= fetch_ad; + dout_ctrl <= md_lo_dout; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + iv_ctrl <= latch_iv; + case op_code(7 downto 4) is + when "0000" => + md_ctrl <= fetch_first_md; + sp_ctrl <= latch_sp; + pc_ctrl <= latch_pc; + case op_code(3 downto 0) is + when "0001" => -- nop + left_ctrl <= accd_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + when "0100" => -- lsrd + left_ctrl <= accd_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_lsr16; + cc_ctrl <= load_cc; + acca_ctrl <= load_hi_acca; + accb_ctrl <= load_accb; + ix_ctrl <= latch_ix; + when "0101" => -- lsld + left_ctrl <= accd_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_lsl16; + cc_ctrl <= load_cc; + acca_ctrl <= load_hi_acca; + accb_ctrl <= load_accb; + ix_ctrl <= latch_ix; + when "0110" => -- tap + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_tap; + cc_ctrl <= load_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + when "0111" => -- tpa + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_tpa; + cc_ctrl <= latch_cc; + acca_ctrl <= load_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + when "1000" => -- inx + left_ctrl <= ix_left; + right_ctrl <= plus_one_right; + alu_ctrl <= alu_inx; + cc_ctrl <= load_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= load_ix; + when "1001" => -- dex + left_ctrl <= ix_left; + right_ctrl <= plus_one_right; + alu_ctrl <= alu_dex; + cc_ctrl <= load_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= load_ix; + when "1010" => -- clv + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_clv; + cc_ctrl <= load_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + when "1011" => -- sev + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_sev; + cc_ctrl <= load_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + when "1100" => -- clc + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_clc; + cc_ctrl <= load_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + when "1101" => -- sec + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_sec; + cc_ctrl <= load_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + when "1110" => -- cli + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_cli; + cc_ctrl <= load_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + when "1111" => -- sei + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_sei; + cc_ctrl <= load_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + when others => + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + end case; + next_state <= fetch_state; + -- acca / accb inherent instructions + when "0001" => + md_ctrl <= fetch_first_md; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + pc_ctrl <= latch_pc; + left_ctrl <= acca_left; + right_ctrl <= accb_right; + case op_code(3 downto 0) is + when "0000" => -- sba + alu_ctrl <= alu_sub8; + cc_ctrl <= load_cc; + acca_ctrl <= load_acca; + accb_ctrl <= latch_accb; + when "0001" => -- cba + alu_ctrl <= alu_sub8; + cc_ctrl <= load_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + when "0110" => -- tab + alu_ctrl <= alu_st8; + cc_ctrl <= load_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= load_accb; + when "0111" => -- tba + alu_ctrl <= alu_ld8; + cc_ctrl <= load_cc; + acca_ctrl <= load_acca; + accb_ctrl <= latch_accb; + when "1001" => -- daa + alu_ctrl <= alu_daa; + cc_ctrl <= load_cc; + acca_ctrl <= load_acca; + accb_ctrl <= latch_accb; + when "1011" => -- aba + alu_ctrl <= alu_add8; + cc_ctrl <= load_cc; + acca_ctrl <= load_acca; + accb_ctrl <= latch_accb; + when others => + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + end case; + next_state <= fetch_state; + when "0010" => -- branch conditional + md_ctrl <= fetch_first_md; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + -- increment the pc + pc_ctrl <= inc_pc; + case op_code(3 downto 0) is + when "0000" => -- bra + next_state <= branch_state; + when "0001" => -- brn + next_state <= fetch_state; + when "0010" => -- bhi + if (cc(CBIT) or cc(ZBIT)) = '0' then + next_state <= branch_state; + else + next_state <= fetch_state; + end if; + when "0011" => -- bls + if (cc(CBIT) or cc(ZBIT)) = '1' then + next_state <= branch_state; + else + next_state <= fetch_state; + end if; + when "0100" => -- bcc/bhs + if cc(CBIT) = '0' then + next_state <= branch_state; + else + next_state <= fetch_state; + end if; + when "0101" => -- bcs/blo + if cc(CBIT) = '1' then + next_state <= branch_state; + else + next_state <= fetch_state; + end if; + when "0110" => -- bne + if cc(ZBIT) = '0' then + next_state <= branch_state; + else + next_state <= fetch_state; + end if; + when "0111" => -- beq + if cc(ZBIT) = '1' then + next_state <= branch_state; + else + next_state <= fetch_state; + end if; + when "1000" => -- bvc + if cc(VBIT) = '0' then + next_state <= branch_state; + else + next_state <= fetch_state; + end if; + when "1001" => -- bvs + if cc(VBIT) = '1' then + next_state <= branch_state; + else + next_state <= fetch_state; + end if; + when "1010" => -- bpl + if cc(NBIT) = '0' then + next_state <= branch_state; + else + next_state <= fetch_state; + end if; + when "1011" => -- bmi + if cc(NBIT) = '1' then + next_state <= branch_state; + else + next_state <= fetch_state; + end if; + when "1100" => -- bge + if (cc(NBIT) xor cc(VBIT)) = '0' then + next_state <= branch_state; + else + next_state <= fetch_state; + end if; + when "1101" => -- blt + if (cc(NBIT) xor cc(VBIT)) = '1' then + next_state <= branch_state; + else + next_state <= fetch_state; + end if; + when "1110" => -- bgt + if (cc(ZBIT) or (cc(NBIT) xor cc(VBIT))) = '0' then + next_state <= branch_state; + else + next_state <= fetch_state; + end if; + when "1111" => -- ble + if (cc(ZBIT) or (cc(NBIT) xor cc(VBIT))) = '1' then + next_state <= branch_state; + else + next_state <= fetch_state; + end if; + when others => + next_state <= fetch_state; + end case; + -- + -- Single byte stack operators + -- Do not advance PC + -- + when "0011" => + md_ctrl <= fetch_first_md; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + pc_ctrl <= latch_pc; + case op_code(3 downto 0) is + when "0000" => -- tsx + left_ctrl <= sp_left; + right_ctrl <= plus_one_right; + alu_ctrl <= alu_add16; + cc_ctrl <= latch_cc; + ix_ctrl <= load_ix; + sp_ctrl <= latch_sp; + next_state <= fetch_state; + when "0001" => -- ins + left_ctrl <= sp_left; + right_ctrl <= plus_one_right; + alu_ctrl <= alu_add16; + cc_ctrl <= latch_cc; + ix_ctrl <= latch_ix; + sp_ctrl <= load_sp; + next_state <= fetch_state; + when "0010" => -- pula + left_ctrl <= sp_left; + right_ctrl <= plus_one_right; + alu_ctrl <= alu_add16; + cc_ctrl <= latch_cc; + ix_ctrl <= latch_ix; + sp_ctrl <= load_sp; + next_state <= pula_state; + when "0011" => -- pulb + left_ctrl <= sp_left; + right_ctrl <= plus_one_right; + alu_ctrl <= alu_add16; + cc_ctrl <= latch_cc; + ix_ctrl <= latch_ix; + sp_ctrl <= load_sp; + next_state <= pulb_state; + when "0100" => -- des + -- decrement sp + left_ctrl <= sp_left; + right_ctrl <= plus_one_right; + alu_ctrl <= alu_sub16; + cc_ctrl <= latch_cc; + ix_ctrl <= latch_ix; + sp_ctrl <= load_sp; + next_state <= fetch_state; + when "0101" => -- txs + left_ctrl <= ix_left; + right_ctrl <= plus_one_right; + alu_ctrl <= alu_sub16; + cc_ctrl <= latch_cc; + ix_ctrl <= latch_ix; + sp_ctrl <= load_sp; + next_state <= fetch_state; + when "0110" => -- psha + left_ctrl <= sp_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + next_state <= psha_state; + when "0111" => -- pshb + left_ctrl <= sp_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + next_state <= pshb_state; + when "1000" => -- pulx + left_ctrl <= sp_left; + right_ctrl <= plus_one_right; + alu_ctrl <= alu_add16; + cc_ctrl <= latch_cc; + ix_ctrl <= latch_ix; + sp_ctrl <= load_sp; + next_state <= pulx_hi_state; + when "1001" => -- rts + left_ctrl <= sp_left; + right_ctrl <= plus_one_right; + alu_ctrl <= alu_add16; + cc_ctrl <= latch_cc; + ix_ctrl <= latch_ix; + sp_ctrl <= load_sp; + next_state <= rts_hi_state; + when "1010" => -- abx + left_ctrl <= ix_left; + right_ctrl <= accb_right; + alu_ctrl <= alu_add16; + cc_ctrl <= latch_cc; + ix_ctrl <= load_ix; + sp_ctrl <= latch_sp; + next_state <= fetch_state; + when "1011" => -- rti + left_ctrl <= sp_left; + right_ctrl <= plus_one_right; + alu_ctrl <= alu_add16; + cc_ctrl <= latch_cc; + ix_ctrl <= latch_ix; + sp_ctrl <= load_sp; + next_state <= rti_cc_state; + when "1100" => -- pshx + left_ctrl <= sp_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + next_state <= pshx_lo_state; + when "1101" => -- mul + left_ctrl <= acca_left; + right_ctrl <= accb_right; + alu_ctrl <= alu_add16; + cc_ctrl <= latch_cc; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + next_state <= mul_state; + when "1110" => -- wai + left_ctrl <= sp_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + next_state <= int_pcl_state; + when "1111" => -- swi + left_ctrl <= sp_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + next_state <= int_pcl_state; + when others => + left_ctrl <= sp_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + next_state <= fetch_state; + end case; + -- + -- Accumulator A Single operand + -- source = Acc A dest = Acc A + -- Do not advance PC + -- + when "0100" => -- acca single op + md_ctrl <= fetch_first_md; + accb_ctrl <= latch_accb; + pc_ctrl <= latch_pc; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + left_ctrl <= acca_left; + case op_code(3 downto 0) is + when "0000" => -- neg + right_ctrl <= zero_right; + alu_ctrl <= alu_neg; + acca_ctrl <= load_acca; + cc_ctrl <= load_cc; + when "0011" => -- com + right_ctrl <= zero_right; + alu_ctrl <= alu_com; + acca_ctrl <= load_acca; + cc_ctrl <= load_cc; + when "0100" => -- lsr + right_ctrl <= zero_right; + alu_ctrl <= alu_lsr8; + acca_ctrl <= load_acca; + cc_ctrl <= load_cc; + when "0110" => -- ror + right_ctrl <= zero_right; + alu_ctrl <= alu_ror8; + acca_ctrl <= load_acca; + cc_ctrl <= load_cc; + when "0111" => -- asr + right_ctrl <= zero_right; + alu_ctrl <= alu_asr8; + acca_ctrl <= load_acca; + cc_ctrl <= load_cc; + when "1000" => -- asl + right_ctrl <= zero_right; + alu_ctrl <= alu_asl8; + acca_ctrl <= load_acca; + cc_ctrl <= load_cc; + when "1001" => -- rol + right_ctrl <= zero_right; + alu_ctrl <= alu_rol8; + acca_ctrl <= load_acca; + cc_ctrl <= load_cc; + when "1010" => -- dec + right_ctrl <= plus_one_right; + alu_ctrl <= alu_dec; + acca_ctrl <= load_acca; + cc_ctrl <= load_cc; + when "1011" => -- undefined + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + acca_ctrl <= latch_acca; + cc_ctrl <= latch_cc; + when "1100" => -- inc + right_ctrl <= plus_one_right; + alu_ctrl <= alu_inc; + acca_ctrl <= load_acca; + cc_ctrl <= load_cc; + when "1101" => -- tst + right_ctrl <= zero_right; + alu_ctrl <= alu_st8; + acca_ctrl <= latch_acca; + cc_ctrl <= load_cc; + when "1110" => -- jmp + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + acca_ctrl <= latch_acca; + cc_ctrl <= latch_cc; + when "1111" => -- clr + right_ctrl <= zero_right; + alu_ctrl <= alu_clr; + acca_ctrl <= load_acca; + cc_ctrl <= load_cc; + when others => + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + acca_ctrl <= latch_acca; + cc_ctrl <= latch_cc; + end case; + next_state <= fetch_state; + -- + -- single operand acc b + -- Do not advance PC + -- + when "0101" => + md_ctrl <= fetch_first_md; + acca_ctrl <= latch_acca; + pc_ctrl <= latch_pc; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + left_ctrl <= accb_left; + case op_code(3 downto 0) is + when "0000" => -- neg + right_ctrl <= zero_right; + alu_ctrl <= alu_neg; + accb_ctrl <= load_accb; + cc_ctrl <= load_cc; + when "0011" => -- com + right_ctrl <= zero_right; + alu_ctrl <= alu_com; + accb_ctrl <= load_accb; + cc_ctrl <= load_cc; + when "0100" => -- lsr + right_ctrl <= zero_right; + alu_ctrl <= alu_lsr8; + accb_ctrl <= load_accb; + cc_ctrl <= load_cc; + when "0110" => -- ror + right_ctrl <= zero_right; + alu_ctrl <= alu_ror8; + accb_ctrl <= load_accb; + cc_ctrl <= load_cc; + when "0111" => -- asr + right_ctrl <= zero_right; + alu_ctrl <= alu_asr8; + accb_ctrl <= load_accb; + cc_ctrl <= load_cc; + when "1000" => -- asl + right_ctrl <= zero_right; + alu_ctrl <= alu_asl8; + accb_ctrl <= load_accb; + cc_ctrl <= load_cc; + when "1001" => -- rol + right_ctrl <= zero_right; + alu_ctrl <= alu_rol8; + accb_ctrl <= load_accb; + cc_ctrl <= load_cc; + when "1010" => -- dec + right_ctrl <= plus_one_right; + alu_ctrl <= alu_dec; + accb_ctrl <= load_accb; + cc_ctrl <= load_cc; + when "1011" => -- undefined + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + accb_ctrl <= latch_accb; + cc_ctrl <= latch_cc; + when "1100" => -- inc + right_ctrl <= plus_one_right; + alu_ctrl <= alu_inc; + accb_ctrl <= load_accb; + cc_ctrl <= load_cc; + when "1101" => -- tst + right_ctrl <= zero_right; + alu_ctrl <= alu_st8; + accb_ctrl <= latch_accb; + cc_ctrl <= load_cc; + when "1110" => -- jmp + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + accb_ctrl <= latch_accb; + cc_ctrl <= latch_cc; + when "1111" => -- clr + right_ctrl <= zero_right; + alu_ctrl <= alu_clr; + accb_ctrl <= load_accb; + cc_ctrl <= load_cc; + when others => + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + accb_ctrl <= latch_accb; + cc_ctrl <= latch_cc; + end case; + next_state <= fetch_state; + -- + -- Single operand indexed + -- Two byte instruction so advance PC + -- EA should hold index offset + -- + when "0110" => -- indexed single op + md_ctrl <= fetch_first_md; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + -- increment the pc + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + pc_ctrl <= inc_pc; + next_state <= indexed_state; + -- + -- Single operand extended addressing + -- three byte instruction so advance the PC + -- Low order EA holds high order address + -- + when "0111" => -- extended single op + md_ctrl <= fetch_first_md; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + -- increment the pc + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + pc_ctrl <= inc_pc; + next_state <= extended_state; + + when "1000" => -- acca immediate + md_ctrl <= fetch_first_md; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + -- increment the pc + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + pc_ctrl <= inc_pc; + case op_code(3 downto 0) is + when "0011" | -- subdd # + "1100" | -- cpx # + "1110" => -- lds # + next_state <= immediate16_state; + when "1101" => -- bsr + next_state <= bsr_state; + when others => + next_state <= fetch_state; + end case; + + when "1001" => -- acca direct + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + -- increment the pc + pc_ctrl <= inc_pc; + case op_code(3 downto 0) is + when "0111" => -- staa direct + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_st8; + cc_ctrl <= latch_cc; + md_ctrl <= load_md; + next_state <= write8_state; + when "1111" => -- sts direct + left_ctrl <= sp_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_st16; + cc_ctrl <= latch_cc; + md_ctrl <= load_md; + next_state <= write16_state; + when "1101" => -- jsr direct + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + md_ctrl <= fetch_first_md; + next_state <= jsr_state; + when others => + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + md_ctrl <= fetch_first_md; + next_state <= read8_state; + end case; + + when "1010" => -- acca indexed + md_ctrl <= fetch_first_md; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + -- increment the pc + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + pc_ctrl <= inc_pc; + next_state <= indexed_state; + + when "1011" => -- acca extended + md_ctrl <= fetch_first_md; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + -- increment the pc + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + pc_ctrl <= inc_pc; + next_state <= extended_state; + + when "1100" => -- accb immediate + md_ctrl <= fetch_first_md; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + -- increment the pc + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + pc_ctrl <= inc_pc; + case op_code(3 downto 0) is + when "0011" | -- addd # + "1100" | -- ldd # + "1110" => -- ldx # + next_state <= immediate16_state; + when others => + next_state <= fetch_state; + end case; + + when "1101" => -- accb direct + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + -- increment the pc + pc_ctrl <= inc_pc; + case op_code(3 downto 0) is + when "0111" => -- stab direct + left_ctrl <= accb_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_st8; + cc_ctrl <= latch_cc; + md_ctrl <= load_md; + next_state <= write8_state; + when "1101" => -- std direct + left_ctrl <= accd_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_st16; + cc_ctrl <= latch_cc; + md_ctrl <= load_md; + next_state <= write16_state; + when "1111" => -- stx direct + left_ctrl <= ix_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_st16; + cc_ctrl <= latch_cc; + md_ctrl <= load_md; + next_state <= write16_state; + when others => + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + md_ctrl <= fetch_first_md; + next_state <= read8_state; + end case; + + when "1110" => -- accb indexed + md_ctrl <= fetch_first_md; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + -- increment the pc + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + pc_ctrl <= inc_pc; + next_state <= indexed_state; + + when "1111" => -- accb extended + md_ctrl <= fetch_first_md; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + -- increment the pc + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + pc_ctrl <= inc_pc; + next_state <= extended_state; + + when others => + md_ctrl <= fetch_first_md; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + -- idle the pc + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + pc_ctrl <= latch_pc; + next_state <= fetch_state; + end case; + + when immediate16_state => + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + op_ctrl <= latch_op; + iv_ctrl <= latch_iv; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- increment pc + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + pc_ctrl <= inc_pc; + -- fetch next immediate byte + md_ctrl <= fetch_next_md; + addr_ctrl <= fetch_ad; + dout_ctrl <= md_lo_dout; + next_state <= fetch_state; + -- + -- ea holds 8 bit index offet + -- calculate the effective memory address + -- using the alu + -- + when indexed_state => + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + pc_ctrl <= latch_pc; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + -- calculate effective address from index reg + -- index offest is not sign extended + ea_ctrl <= add_ix_ea; + -- idle the bus + addr_ctrl <= idle_ad; + dout_ctrl <= md_lo_dout; + -- work out next state + case op_code(7 downto 4) is + when "0110" => -- single op indexed + md_ctrl <= latch_md; + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + case op_code(3 downto 0) is + when "1011" => -- undefined + next_state <= fetch_state; + when "1110" => -- jmp + next_state <= jmp_state; + when others => + next_state <= read8_state; + end case; + when "1010" => -- acca indexed + case op_code(3 downto 0) is + when "0111" => -- staa + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_st8; + cc_ctrl <= latch_cc; + md_ctrl <= load_md; + next_state <= write8_state; + when "1101" => -- jsr + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + md_ctrl <= latch_md; + next_state <= jsr_state; + when "1111" => -- sts + left_ctrl <= sp_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_st16; + cc_ctrl <= latch_cc; + md_ctrl <= load_md; + next_state <= write16_state; + when others => + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + md_ctrl <= latch_md; + next_state <= read8_state; + end case; + when "1110" => -- accb indexed + case op_code(3 downto 0) is + when "0111" => -- stab direct + left_ctrl <= accb_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_st8; + cc_ctrl <= latch_cc; + md_ctrl <= load_md; + next_state <= write8_state; + when "1101" => -- std direct + left_ctrl <= accd_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_st16; + cc_ctrl <= latch_cc; + md_ctrl <= load_md; + next_state <= write16_state; + when "1111" => -- stx direct + left_ctrl <= ix_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_st16; + cc_ctrl <= latch_cc; + md_ctrl <= load_md; + next_state <= write16_state; + when others => + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + md_ctrl <= latch_md; + next_state <= read8_state; + end case; + when others => + md_ctrl <= latch_md; + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + next_state <= fetch_state; + end case; + -- + -- ea holds the low byte of the absolute address + -- Move ea low byte into ea high byte + -- load new ea low byte to for absolute 16 bit address + -- advance the program counter + -- + when extended_state => -- fetch ea low byte + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + -- increment pc + pc_ctrl <= inc_pc; + -- fetch next effective address bytes + ea_ctrl <= fetch_next_ea; + addr_ctrl <= fetch_ad; + dout_ctrl <= md_lo_dout; + -- work out the next state + case op_code(7 downto 4) is + when "0111" => -- single op extended + md_ctrl <= latch_md; + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + case op_code(3 downto 0) is + when "1011" => -- undefined + next_state <= fetch_state; + when "1110" => -- jmp + next_state <= jmp_state; + when others => + next_state <= read8_state; + end case; + when "1011" => -- acca extended + case op_code(3 downto 0) is + when "0111" => -- staa + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_st8; + cc_ctrl <= latch_cc; + md_ctrl <= load_md; + next_state <= write8_state; + when "1101" => -- jsr + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + md_ctrl <= latch_md; + next_state <= jsr_state; + when "1111" => -- sts + left_ctrl <= sp_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_st16; + cc_ctrl <= latch_cc; + md_ctrl <= load_md; + next_state <= write16_state; + when others => + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + md_ctrl <= latch_md; + next_state <= read8_state; + end case; + when "1111" => -- accb extended + case op_code(3 downto 0) is + when "0111" => -- stab + left_ctrl <= accb_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_st8; + cc_ctrl <= latch_cc; + md_ctrl <= load_md; + next_state <= write8_state; + when "1101" => -- std + left_ctrl <= accd_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_st16; + cc_ctrl <= latch_cc; + md_ctrl <= load_md; + next_state <= write16_state; + when "1111" => -- stx + left_ctrl <= ix_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_st16; + cc_ctrl <= latch_cc; + md_ctrl <= load_md; + next_state <= write16_state; + when others => + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + md_ctrl <= latch_md; + next_state <= read8_state; + end case; + when others => + md_ctrl <= latch_md; + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + next_state <= fetch_state; + end case; + -- + -- here if ea holds low byte (direct page) + -- can enter here from extended addressing + -- read memory location + -- note that reads may be 8 or 16 bits + -- + when read8_state => -- read data + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + pc_ctrl <= latch_pc; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + -- + addr_ctrl <= read_ad; + dout_ctrl <= md_lo_dout; + case op_code(7 downto 4) is + when "0110" | "0111" => -- single operand + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + md_ctrl <= fetch_first_md; + ea_ctrl <= latch_ea; + next_state <= execute_state; + + when "1001" | "1010" | "1011" => -- acca + case op_code(3 downto 0) is + when "0011" | -- subd + "1110" | -- lds + "1100" => -- cpx + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + md_ctrl <= fetch_first_md; + -- increment the effective address in case of 16 bit load + ea_ctrl <= inc_ea; + next_state <= read16_state; +-- when "0111" => -- staa +-- left_ctrl <= acca_left; +-- right_ctrl <= zero_right; +-- alu_ctrl <= alu_st8; +-- cc_ctrl <= latch_cc; +-- md_ctrl <= load_md; +-- ea_ctrl <= latch_ea; +-- next_state <= write8_state; +-- when "1101" => -- jsr +-- left_ctrl <= acca_left; +-- right_ctrl <= zero_right; +-- alu_ctrl <= alu_nop; +-- cc_ctrl <= latch_cc; +-- md_ctrl <= latch_md; +-- ea_ctrl <= latch_ea; +-- next_state <= jsr_state; +-- when "1111" => -- sts +-- left_ctrl <= sp_left; +-- right_ctrl <= zero_right; +-- alu_ctrl <= alu_st16; +-- cc_ctrl <= latch_cc; +-- md_ctrl <= load_md; +-- ea_ctrl <= latch_ea; +-- next_state <= write16_state; + when others => + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + md_ctrl <= fetch_first_md; + ea_ctrl <= latch_ea; + next_state <= fetch_state; + end case; + + when "1101" | "1110" | "1111" => -- accb + case op_code(3 downto 0) is + when "0011" | -- addd + "1100" | -- ldd + "1110" => -- ldx + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + md_ctrl <= fetch_first_md; + -- increment the effective address in case of 16 bit load + ea_ctrl <= inc_ea; + next_state <= read16_state; +-- when "0111" => -- stab +-- left_ctrl <= accb_left; +-- right_ctrl <= zero_right; +-- alu_ctrl <= alu_st8; +-- cc_ctrl <= latch_cc; +-- md_ctrl <= load_md; +-- ea_ctrl <= latch_ea; +-- next_state <= write8_state; +-- when "1101" => -- std +-- left_ctrl <= accd_left; +-- right_ctrl <= zero_right; +-- alu_ctrl <= alu_st16; +-- cc_ctrl <= latch_cc; +-- md_ctrl <= load_md; +-- ea_ctrl <= latch_ea; +-- next_state <= write16_state; +-- when "1111" => -- stx +-- left_ctrl <= ix_left; +-- right_ctrl <= zero_right; +-- alu_ctrl <= alu_st16; +-- cc_ctrl <= latch_cc; +-- md_ctrl <= load_md; +-- ea_ctrl <= latch_ea; +-- next_state <= write16_state; + when others => + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + md_ctrl <= fetch_first_md; + ea_ctrl <= latch_ea; + next_state <= execute_state; + end case; + when others => + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + md_ctrl <= fetch_first_md; + ea_ctrl <= latch_ea; + next_state <= fetch_state; + end case; + + when read16_state => -- read second data byte from ea + -- default + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + pc_ctrl <= latch_pc; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + -- idle the effective address + ea_ctrl <= latch_ea; + -- read the low byte of the 16 bit data + md_ctrl <= fetch_next_md; + addr_ctrl <= read_ad; + dout_ctrl <= md_lo_dout; + next_state <= fetch_state; + -- + -- 16 bit Write state + -- write high byte of ALU output. + -- EA hold address of memory to write to + -- Advance the effective address in ALU + -- + when write16_state => + -- default + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + pc_ctrl <= latch_pc; + md_ctrl <= latch_md; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + -- increment the effective address + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + ea_ctrl <= inc_ea; + -- write the ALU hi byte to ea + addr_ctrl <= write_ad; + dout_ctrl <= md_hi_dout; + next_state <= write8_state; + -- + -- 8 bit write + -- Write low 8 bits of ALU output + -- + when write8_state => + -- default registers + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + pc_ctrl <= latch_pc; + md_ctrl <= latch_md; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- idle the ALU + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + -- write ALU low byte output + addr_ctrl <= write_ad; + dout_ctrl <= md_lo_dout; + next_state <= fetch_state; + + when jmp_state => + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + md_ctrl <= latch_md; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- load PC with effective address + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + pc_ctrl <= load_ea_pc; + -- idle the bus + addr_ctrl <= idle_ad; + dout_ctrl <= md_lo_dout; + next_state <= fetch_state; + + when jsr_state => -- JSR + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + pc_ctrl <= latch_pc; + md_ctrl <= latch_md; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- decrement sp + left_ctrl <= sp_left; + right_ctrl <= plus_one_right; + alu_ctrl <= alu_sub16; + cc_ctrl <= latch_cc; + sp_ctrl <= load_sp; + -- write pc low + addr_ctrl <= push_ad; + dout_ctrl <= pc_lo_dout; + next_state <= jsr1_state; + + when jsr1_state => -- JSR + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + pc_ctrl <= latch_pc; + md_ctrl <= latch_md; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- decrement sp + left_ctrl <= sp_left; + right_ctrl <= plus_one_right; + alu_ctrl <= alu_sub16; + cc_ctrl <= latch_cc; + sp_ctrl <= load_sp; + -- write pc hi + addr_ctrl <= push_ad; + dout_ctrl <= pc_hi_dout; + next_state <= jmp_state; + + when branch_state => -- Bcc + -- default registers + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + md_ctrl <= latch_md; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- calculate signed branch + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + pc_ctrl <= add_ea_pc; + -- idle the bus + addr_ctrl <= idle_ad; + dout_ctrl <= md_lo_dout; + next_state <= fetch_state; + + when bsr_state => -- BSR + -- default + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + pc_ctrl <= latch_pc; + md_ctrl <= latch_md; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- decrement sp + left_ctrl <= sp_left; + right_ctrl <= plus_one_right; + alu_ctrl <= alu_sub16; + cc_ctrl <= latch_cc; + sp_ctrl <= load_sp; + -- write pc low + addr_ctrl <= push_ad; + dout_ctrl <= pc_lo_dout; + next_state <= bsr1_state; + + when bsr1_state => -- BSR + -- default registers + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + pc_ctrl <= latch_pc; + md_ctrl <= latch_md; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- decrement sp + left_ctrl <= sp_left; + right_ctrl <= plus_one_right; + alu_ctrl <= alu_sub16; + cc_ctrl <= latch_cc; + sp_ctrl <= load_sp; + -- write pc hi + addr_ctrl <= push_ad; + dout_ctrl <= pc_hi_dout; + next_state <= branch_state; + + when rts_hi_state => -- RTS + -- default + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + pc_ctrl <= latch_pc; + md_ctrl <= latch_md; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- increment the sp + left_ctrl <= sp_left; + right_ctrl <= plus_one_right; + alu_ctrl <= alu_add16; + cc_ctrl <= latch_cc; + sp_ctrl <= load_sp; + -- read pc hi + pc_ctrl <= pull_hi_pc; + addr_ctrl <= pull_ad; + dout_ctrl <= pc_hi_dout; + next_state <= rts_lo_state; + + when rts_lo_state => -- RTS1 + -- default + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + md_ctrl <= latch_md; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- idle the ALU + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + -- read pc low + pc_ctrl <= pull_lo_pc; + addr_ctrl <= pull_ad; + dout_ctrl <= pc_lo_dout; + next_state <= fetch_state; + + when mul_state => + -- default + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + pc_ctrl <= latch_pc; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- move acca to md + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_st16; + cc_ctrl <= latch_cc; + md_ctrl <= load_md; + -- idle bus + addr_ctrl <= idle_ad; + dout_ctrl <= md_lo_dout; + next_state <= mulea_state; + + when mulea_state => + -- default + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + pc_ctrl <= latch_pc; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + md_ctrl <= latch_md; + -- idle ALU + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + -- move accb to ea + ea_ctrl <= load_accb_ea; + -- idle bus + addr_ctrl <= idle_ad; + dout_ctrl <= md_lo_dout; + next_state <= muld_state; + + when muld_state => + -- default + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + pc_ctrl <= latch_pc; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + md_ctrl <= latch_md; + -- clear accd + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_ld8; + cc_ctrl <= latch_cc; + acca_ctrl <= load_hi_acca; + accb_ctrl <= load_accb; + -- idle bus + addr_ctrl <= idle_ad; + dout_ctrl <= md_lo_dout; + next_state <= mul0_state; + + when mul0_state => + -- default + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + pc_ctrl <= latch_pc; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- if bit 0 of ea set, add accd to md + left_ctrl <= accd_left; + right_ctrl <= md_right; + alu_ctrl <= alu_add16; + if ea(0) = '1' then + cc_ctrl <= load_cc; + acca_ctrl <= load_hi_acca; + accb_ctrl <= load_accb; + else + cc_ctrl <= latch_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + end if; + md_ctrl <= shiftl_md; + -- idle bus + addr_ctrl <= idle_ad; + dout_ctrl <= md_lo_dout; + next_state <= mul1_state; + + when mul1_state => + -- default + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + pc_ctrl <= latch_pc; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- if bit 1 of ea set, add accd to md + left_ctrl <= accd_left; + right_ctrl <= md_right; + alu_ctrl <= alu_add16; + if ea(1) = '1' then + cc_ctrl <= load_cc; + acca_ctrl <= load_hi_acca; + accb_ctrl <= load_accb; + else + cc_ctrl <= latch_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + end if; + md_ctrl <= shiftl_md; + -- idle bus + addr_ctrl <= idle_ad; + dout_ctrl <= md_lo_dout; + next_state <= mul2_state; + + when mul2_state => + -- default + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + pc_ctrl <= latch_pc; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- if bit 2 of ea set, add accd to md + left_ctrl <= accd_left; + right_ctrl <= md_right; + alu_ctrl <= alu_add16; + if ea(2) = '1' then + cc_ctrl <= load_cc; + acca_ctrl <= load_hi_acca; + accb_ctrl <= load_accb; + else + cc_ctrl <= latch_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + end if; + md_ctrl <= shiftl_md; + -- idle bus + addr_ctrl <= idle_ad; + dout_ctrl <= md_lo_dout; + next_state <= mul3_state; + + when mul3_state => + -- default + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + pc_ctrl <= latch_pc; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- if bit 3 of ea set, add accd to md + left_ctrl <= accd_left; + right_ctrl <= md_right; + alu_ctrl <= alu_add16; + if ea(3) = '1' then + cc_ctrl <= load_cc; + acca_ctrl <= load_hi_acca; + accb_ctrl <= load_accb; + else + cc_ctrl <= latch_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + end if; + md_ctrl <= shiftl_md; + -- idle bus + addr_ctrl <= idle_ad; + dout_ctrl <= md_lo_dout; + next_state <= mul4_state; + + when mul4_state => + -- default + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + pc_ctrl <= latch_pc; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- if bit 4 of ea set, add accd to md + left_ctrl <= accd_left; + right_ctrl <= md_right; + alu_ctrl <= alu_add16; + if ea(4) = '1' then + cc_ctrl <= load_cc; + acca_ctrl <= load_hi_acca; + accb_ctrl <= load_accb; + else + cc_ctrl <= latch_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + end if; + md_ctrl <= shiftl_md; + -- idle bus + addr_ctrl <= idle_ad; + dout_ctrl <= md_lo_dout; + next_state <= mul5_state; + + when mul5_state => + -- default + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + pc_ctrl <= latch_pc; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- if bit 5 of ea set, add accd to md + left_ctrl <= accd_left; + right_ctrl <= md_right; + alu_ctrl <= alu_add16; + if ea(5) = '1' then + cc_ctrl <= load_cc; + acca_ctrl <= load_hi_acca; + accb_ctrl <= load_accb; + else + cc_ctrl <= latch_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + end if; + md_ctrl <= shiftl_md; + -- idle bus + addr_ctrl <= idle_ad; + dout_ctrl <= md_lo_dout; + next_state <= mul6_state; + + when mul6_state => + -- default + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + pc_ctrl <= latch_pc; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- if bit 6 of ea set, add accd to md + left_ctrl <= accd_left; + right_ctrl <= md_right; + alu_ctrl <= alu_add16; + if ea(6) = '1' then + cc_ctrl <= load_cc; + acca_ctrl <= load_hi_acca; + accb_ctrl <= load_accb; + else + cc_ctrl <= latch_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + end if; + md_ctrl <= shiftl_md; + -- idle bus + addr_ctrl <= idle_ad; + dout_ctrl <= md_lo_dout; + next_state <= mul7_state; + + when mul7_state => + -- default + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + pc_ctrl <= latch_pc; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- if bit 7 of ea set, add accd to md + left_ctrl <= accd_left; + right_ctrl <= md_right; + alu_ctrl <= alu_add16; + if ea(7) = '1' then + cc_ctrl <= load_cc; + acca_ctrl <= load_hi_acca; + accb_ctrl <= load_accb; + else + cc_ctrl <= latch_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + end if; + md_ctrl <= shiftl_md; + -- idle bus + addr_ctrl <= idle_ad; + dout_ctrl <= md_lo_dout; + next_state <= fetch_state; + + when execute_state => -- execute single operand instruction + -- default + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + case op_code(7 downto 4) is + when "0110" | -- indexed single op + "0111" => -- extended single op + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + pc_ctrl <= latch_pc; + iv_ctrl <= latch_iv; + ea_ctrl <= latch_ea; + -- idle the bus + addr_ctrl <= idle_ad; + dout_ctrl <= md_lo_dout; + left_ctrl <= md_left; + case op_code(3 downto 0) is + when "0000" => -- neg + right_ctrl <= zero_right; + alu_ctrl <= alu_neg; + cc_ctrl <= load_cc; + md_ctrl <= load_md; + next_state <= write8_state; + when "0011" => -- com + right_ctrl <= zero_right; + alu_ctrl <= alu_com; + cc_ctrl <= load_cc; + md_ctrl <= load_md; + next_state <= write8_state; + when "0100" => -- lsr + right_ctrl <= zero_right; + alu_ctrl <= alu_lsr8; + cc_ctrl <= load_cc; + md_ctrl <= load_md; + next_state <= write8_state; + when "0110" => -- ror + right_ctrl <= zero_right; + alu_ctrl <= alu_ror8; + cc_ctrl <= load_cc; + md_ctrl <= load_md; + next_state <= write8_state; + when "0111" => -- asr + right_ctrl <= zero_right; + alu_ctrl <= alu_asr8; + cc_ctrl <= load_cc; + md_ctrl <= load_md; + next_state <= write8_state; + when "1000" => -- asl + right_ctrl <= zero_right; + alu_ctrl <= alu_asl8; + cc_ctrl <= load_cc; + md_ctrl <= load_md; + next_state <= write8_state; + when "1001" => -- rol + right_ctrl <= zero_right; + alu_ctrl <= alu_rol8; + cc_ctrl <= load_cc; + md_ctrl <= load_md; + next_state <= write8_state; + when "1010" => -- dec + right_ctrl <= plus_one_right; + alu_ctrl <= alu_dec; + cc_ctrl <= load_cc; + md_ctrl <= load_md; + next_state <= write8_state; + when "1011" => -- undefined + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + md_ctrl <= latch_md; + next_state <= fetch_state; + when "1100" => -- inc + right_ctrl <= plus_one_right; + alu_ctrl <= alu_inc; + cc_ctrl <= load_cc; + md_ctrl <= load_md; + next_state <= write8_state; + when "1101" => -- tst + right_ctrl <= zero_right; + alu_ctrl <= alu_st8; + cc_ctrl <= load_cc; + md_ctrl <= latch_md; + next_state <= fetch_state; + when "1110" => -- jmp + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + md_ctrl <= latch_md; + next_state <= fetch_state; + when "1111" => -- clr + right_ctrl <= zero_right; + alu_ctrl <= alu_clr; + cc_ctrl <= load_cc; + md_ctrl <= load_md; + next_state <= write8_state; + when others => + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + md_ctrl <= latch_md; + next_state <= fetch_state; + end case; + + when others => + left_ctrl <= accd_left; + right_ctrl <= md_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + pc_ctrl <= latch_pc; + md_ctrl <= latch_md; + iv_ctrl <= latch_iv; + ea_ctrl <= latch_ea; + -- idle the bus + addr_ctrl <= idle_ad; + dout_ctrl <= md_lo_dout; + next_state <= fetch_state; + end case; + + when psha_state => + -- default registers + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + pc_ctrl <= latch_pc; + md_ctrl <= latch_md; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- decrement sp + left_ctrl <= sp_left; + right_ctrl <= plus_one_right; + alu_ctrl <= alu_sub16; + cc_ctrl <= latch_cc; + sp_ctrl <= load_sp; + -- write acca + addr_ctrl <= push_ad; + dout_ctrl <= acca_dout; + next_state <= fetch_state; + + when pula_state => + -- default registers + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + pc_ctrl <= latch_pc; + md_ctrl <= latch_md; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- idle sp + left_ctrl <= sp_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + sp_ctrl <= latch_sp; + -- read acca + acca_ctrl <= pull_acca; + addr_ctrl <= pull_ad; + dout_ctrl <= acca_dout; + next_state <= fetch_state; + + when pshb_state => + -- default registers + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + pc_ctrl <= latch_pc; + md_ctrl <= latch_md; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- decrement sp + left_ctrl <= sp_left; + right_ctrl <= plus_one_right; + alu_ctrl <= alu_sub16; + cc_ctrl <= latch_cc; + sp_ctrl <= load_sp; + -- write accb + addr_ctrl <= push_ad; + dout_ctrl <= accb_dout; + next_state <= fetch_state; + + when pulb_state => + -- default + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + pc_ctrl <= latch_pc; + md_ctrl <= latch_md; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- idle sp + left_ctrl <= sp_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + sp_ctrl <= latch_sp; + -- read accb + accb_ctrl <= pull_accb; + addr_ctrl <= pull_ad; + dout_ctrl <= accb_dout; + next_state <= fetch_state; + + when pshx_lo_state => + -- default + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + pc_ctrl <= latch_pc; + md_ctrl <= latch_md; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- decrement sp + left_ctrl <= sp_left; + right_ctrl <= plus_one_right; + alu_ctrl <= alu_sub16; + cc_ctrl <= latch_cc; + sp_ctrl <= load_sp; + -- write ix low + addr_ctrl <= push_ad; + dout_ctrl <= ix_lo_dout; + next_state <= pshx_hi_state; + + when pshx_hi_state => + -- default registers + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + pc_ctrl <= latch_pc; + md_ctrl <= latch_md; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- decrement sp + left_ctrl <= sp_left; + right_ctrl <= plus_one_right; + alu_ctrl <= alu_sub16; + cc_ctrl <= latch_cc; + sp_ctrl <= load_sp; + -- write ix hi + addr_ctrl <= push_ad; + dout_ctrl <= ix_hi_dout; + next_state <= fetch_state; + + when pulx_hi_state => + -- default + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + pc_ctrl <= latch_pc; + md_ctrl <= latch_md; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- increment sp + left_ctrl <= sp_left; + right_ctrl <= plus_one_right; + alu_ctrl <= alu_add16; + cc_ctrl <= latch_cc; + sp_ctrl <= load_sp; + -- pull ix hi + ix_ctrl <= pull_hi_ix; + addr_ctrl <= pull_ad; + dout_ctrl <= ix_hi_dout; + next_state <= pulx_lo_state; + + when pulx_lo_state => + -- default + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + pc_ctrl <= latch_pc; + md_ctrl <= latch_md; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- idle sp + left_ctrl <= sp_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + sp_ctrl <= latch_sp; + -- read ix low + ix_ctrl <= pull_lo_ix; + addr_ctrl <= pull_ad; + dout_ctrl <= ix_lo_dout; + next_state <= fetch_state; + + -- + -- return from interrupt + -- enter here from bogus interrupts + -- + when rti_state => + -- default registers + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + pc_ctrl <= latch_pc; + md_ctrl <= latch_md; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- increment sp + left_ctrl <= sp_left; + right_ctrl <= plus_one_right; + alu_ctrl <= alu_add16; + sp_ctrl <= load_sp; + -- idle address bus + cc_ctrl <= latch_cc; + addr_ctrl <= idle_ad; + dout_ctrl <= cc_dout; + next_state <= rti_cc_state; + + when rti_cc_state => + -- default registers + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + pc_ctrl <= latch_pc; + md_ctrl <= latch_md; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- increment sp + left_ctrl <= sp_left; + right_ctrl <= plus_one_right; + alu_ctrl <= alu_add16; + sp_ctrl <= load_sp; + -- read cc + cc_ctrl <= pull_cc; + addr_ctrl <= pull_ad; + dout_ctrl <= cc_dout; + next_state <= rti_accb_state; + + when rti_accb_state => + -- default registers + acca_ctrl <= latch_acca; + ix_ctrl <= latch_ix; + pc_ctrl <= latch_pc; + md_ctrl <= latch_md; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- increment sp + left_ctrl <= sp_left; + right_ctrl <= plus_one_right; + alu_ctrl <= alu_add16; + cc_ctrl <= latch_cc; + sp_ctrl <= load_sp; + -- read accb + accb_ctrl <= pull_accb; + addr_ctrl <= pull_ad; + dout_ctrl <= accb_dout; + next_state <= rti_acca_state; + + when rti_acca_state => + -- default registers + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + pc_ctrl <= latch_pc; + md_ctrl <= latch_md; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- increment sp + left_ctrl <= sp_left; + right_ctrl <= plus_one_right; + alu_ctrl <= alu_add16; + cc_ctrl <= latch_cc; + sp_ctrl <= load_sp; + -- read acca + acca_ctrl <= pull_acca; + addr_ctrl <= pull_ad; + dout_ctrl <= acca_dout; + next_state <= rti_ixh_state; + + when rti_ixh_state => + -- default + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + pc_ctrl <= latch_pc; + md_ctrl <= latch_md; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- increment sp + left_ctrl <= sp_left; + right_ctrl <= plus_one_right; + alu_ctrl <= alu_add16; + cc_ctrl <= latch_cc; + sp_ctrl <= load_sp; + -- read ix hi + ix_ctrl <= pull_hi_ix; + addr_ctrl <= pull_ad; + dout_ctrl <= ix_hi_dout; + next_state <= rti_ixl_state; + + when rti_ixl_state => + -- default + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + pc_ctrl <= latch_pc; + md_ctrl <= latch_md; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- increment sp + left_ctrl <= sp_left; + right_ctrl <= plus_one_right; + alu_ctrl <= alu_add16; + cc_ctrl <= latch_cc; + sp_ctrl <= load_sp; + -- read ix low + ix_ctrl <= pull_lo_ix; + addr_ctrl <= pull_ad; + dout_ctrl <= ix_lo_dout; + next_state <= rti_pch_state; + + when rti_pch_state => + -- default + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + pc_ctrl <= latch_pc; + md_ctrl <= latch_md; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- increment sp + left_ctrl <= sp_left; + right_ctrl <= plus_one_right; + alu_ctrl <= alu_add16; + cc_ctrl <= latch_cc; + sp_ctrl <= load_sp; + -- pull pc hi + pc_ctrl <= pull_hi_pc; + addr_ctrl <= pull_ad; + dout_ctrl <= pc_hi_dout; + next_state <= rti_pcl_state; + + when rti_pcl_state => + -- default + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + md_ctrl <= latch_md; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- idle sp + left_ctrl <= sp_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + sp_ctrl <= latch_sp; + -- pull pc low + pc_ctrl <= pull_lo_pc; + addr_ctrl <= pull_ad; + dout_ctrl <= pc_lo_dout; + next_state <= fetch_state; + + -- + -- here on interrupt + -- iv register hold interrupt type + -- + when int_pcl_state => + -- default + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + pc_ctrl <= latch_pc; + md_ctrl <= latch_md; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- decrement sp + left_ctrl <= sp_left; + right_ctrl <= plus_one_right; + alu_ctrl <= alu_sub16; + cc_ctrl <= latch_cc; + sp_ctrl <= load_sp; + -- write pc low + addr_ctrl <= push_ad; + dout_ctrl <= pc_lo_dout; + next_state <= int_pch_state; + + when int_pch_state => + -- default + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + pc_ctrl <= latch_pc; + md_ctrl <= latch_md; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- decrement sp + left_ctrl <= sp_left; + right_ctrl <= plus_one_right; + alu_ctrl <= alu_sub16; + cc_ctrl <= latch_cc; + sp_ctrl <= load_sp; + -- write pc hi + addr_ctrl <= push_ad; + dout_ctrl <= pc_hi_dout; + next_state <= int_ixl_state; + + when int_ixl_state => + -- default + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + pc_ctrl <= latch_pc; + md_ctrl <= latch_md; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- decrement sp + left_ctrl <= sp_left; + right_ctrl <= plus_one_right; + alu_ctrl <= alu_sub16; + cc_ctrl <= latch_cc; + sp_ctrl <= load_sp; + -- write ix low + addr_ctrl <= push_ad; + dout_ctrl <= ix_lo_dout; + next_state <= int_ixh_state; + + when int_ixh_state => + -- default + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + pc_ctrl <= latch_pc; + md_ctrl <= latch_md; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- decrement sp + left_ctrl <= sp_left; + right_ctrl <= plus_one_right; + alu_ctrl <= alu_sub16; + cc_ctrl <= latch_cc; + sp_ctrl <= load_sp; + -- write ix hi + addr_ctrl <= push_ad; + dout_ctrl <= ix_hi_dout; + next_state <= int_acca_state; + + when int_acca_state => + -- default + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + pc_ctrl <= latch_pc; + md_ctrl <= latch_md; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- decrement sp + left_ctrl <= sp_left; + right_ctrl <= plus_one_right; + alu_ctrl <= alu_sub16; + cc_ctrl <= latch_cc; + sp_ctrl <= load_sp; + -- write acca + addr_ctrl <= push_ad; + dout_ctrl <= acca_dout; + next_state <= int_accb_state; + + + when int_accb_state => + -- default + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + pc_ctrl <= latch_pc; + md_ctrl <= latch_md; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- decrement sp + left_ctrl <= sp_left; + right_ctrl <= plus_one_right; + alu_ctrl <= alu_sub16; + cc_ctrl <= latch_cc; + sp_ctrl <= load_sp; + -- write accb + addr_ctrl <= push_ad; + dout_ctrl <= accb_dout; + next_state <= int_cc_state; + + when int_cc_state => + -- default + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + pc_ctrl <= latch_pc; + md_ctrl <= latch_md; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- decrement sp + left_ctrl <= sp_left; + right_ctrl <= plus_one_right; + alu_ctrl <= alu_sub16; + cc_ctrl <= latch_cc; + sp_ctrl <= load_sp; + -- write cc + addr_ctrl <= push_ad; + dout_ctrl <= cc_dout; + nmi_ctrl <= latch_nmi; + -- + -- nmi is edge triggered + -- nmi_req is cleared when nmi goes low. + -- + if nmi_req = '1' then + iv_ctrl <= nmi_iv; + next_state <= vect_hi_state; + else + -- + -- IRQ is level sensitive + -- + if (irq = '1') and (cc(IBIT) = '0') then + iv_ctrl <= irq_iv; + next_state <= int_mask_state; + else + case op_code is + when "00111110" => -- WAI (wait for interrupt) + iv_ctrl <= latch_iv; + next_state <= int_wai_state; + when "00111111" => -- SWI (Software interrupt) + iv_ctrl <= swi_iv; + next_state <= vect_hi_state; + when others => -- bogus interrupt (return) + iv_ctrl <= latch_iv; + next_state <= rti_state; + end case; + end if; + end if; + + when int_wai_state => + -- default + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + pc_ctrl <= latch_pc; + md_ctrl <= latch_md; + op_ctrl <= latch_op; + ea_ctrl <= latch_ea; + -- enable interrupts + left_ctrl <= sp_left; + right_ctrl <= plus_one_right; + alu_ctrl <= alu_cli; + cc_ctrl <= load_cc; + sp_ctrl <= latch_sp; + -- idle bus + addr_ctrl <= idle_ad; + dout_ctrl <= cc_dout; + if (nmi_req = '1') and (nmi_ack='0') then + iv_ctrl <= nmi_iv; + nmi_ctrl <= set_nmi; + next_state <= vect_hi_state; + else + -- + -- nmi request is not cleared until nmi input goes low + -- + if (nmi_req = '0') and (nmi_ack='1') then + nmi_ctrl <= reset_nmi; + else + nmi_ctrl <= latch_nmi; + end if; + -- + -- IRQ is level sensitive + -- + if (irq = '1') and (cc(IBIT) = '0') then + iv_ctrl <= irq_iv; + next_state <= int_mask_state; + else + iv_ctrl <= latch_iv; + next_state <= int_wai_state; + end if; + end if; + + when int_mask_state => + -- default + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + pc_ctrl <= latch_pc; + md_ctrl <= latch_md; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- Mask IRQ + left_ctrl <= sp_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_sei; + cc_ctrl <= load_cc; + sp_ctrl <= latch_sp; + -- idle bus cycle + addr_ctrl <= idle_ad; + dout_ctrl <= md_lo_dout; + next_state <= vect_hi_state; + + when halt_state => -- halt CPU. + -- default + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + pc_ctrl <= latch_pc; + md_ctrl <= latch_md; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- do nothing in ALU + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + -- idle bus cycle + addr_ctrl <= idle_ad; + dout_ctrl <= md_lo_dout; + if halt = '1' then + next_state <= halt_state; + else + next_state <= fetch_state; + end if; + + when others => -- error state halt on undefine states + -- default + acca_ctrl <= latch_acca; + accb_ctrl <= latch_accb; + ix_ctrl <= latch_ix; + sp_ctrl <= latch_sp; + pc_ctrl <= latch_pc; + md_ctrl <= latch_md; + iv_ctrl <= latch_iv; + op_ctrl <= latch_op; + nmi_ctrl <= latch_nmi; + ea_ctrl <= latch_ea; + -- do nothing in ALU + left_ctrl <= acca_left; + right_ctrl <= zero_right; + alu_ctrl <= alu_nop; + cc_ctrl <= latch_cc; + -- idle bus cycle + addr_ctrl <= idle_ad; + dout_ctrl <= md_lo_dout; + next_state <= error_state; + end case; +end process; + +-------------------------------- +-- +-- state machine +-- +-------------------------------- + +change_state: process( clk, rst, state, hold ) +begin + if clk'event and clk = '0' then + if rst = '1' then + state <= reset_state; + elsif hold = '1' then + state <= state; + else + state <= next_state; + end if; + end if; +end process; + -- output + +end CPU_ARCH; + diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/dpram.vhd b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/dpram.vhd new file mode 100644 index 00000000..672d33d3 --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/dpram.vhd @@ -0,0 +1,131 @@ +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY dpram IS + GENERIC + ( + init_file : string := ""; + --numwords_a : natural; + widthad_a : natural; + width_a : natural := 8; + outdata_reg_a : string := "UNREGISTERED"; + outdata_reg_b : string := "UNREGISTERED" + ); + PORT + ( + address_a : IN STD_LOGIC_VECTOR (widthad_a-1 DOWNTO 0); + address_b : IN STD_LOGIC_VECTOR (widthad_a-1 DOWNTO 0); + clock_a : IN STD_LOGIC ; + clock_b : IN STD_LOGIC ; + data_a : IN STD_LOGIC_VECTOR (width_a-1 DOWNTO 0); + data_b : IN STD_LOGIC_VECTOR (width_a-1 DOWNTO 0); + wren_a : IN STD_LOGIC := '1'; + wren_b : IN STD_LOGIC := '1'; + q_a : OUT STD_LOGIC_VECTOR (width_a-1 DOWNTO 0); + q_b : OUT STD_LOGIC_VECTOR (width_a-1 DOWNTO 0) + ); +END dpram; + + +ARCHITECTURE SYN OF dpram IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (width_a-1 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC_VECTOR (width_a-1 DOWNTO 0); + + + + COMPONENT altsyncram + GENERIC ( + address_reg_b : STRING; + clock_enable_input_a : STRING; + clock_enable_input_b : STRING; + clock_enable_output_a : STRING; + clock_enable_output_b : STRING; + indata_reg_b : STRING; + init_file : STRING; + intended_device_family : STRING; + lpm_type : STRING; + numwords_a : NATURAL; + numwords_b : NATURAL; + operation_mode : STRING; + outdata_aclr_a : STRING; + outdata_aclr_b : STRING; + outdata_reg_a : STRING; + outdata_reg_b : STRING; + power_up_uninitialized : STRING; + read_during_write_mode_port_a : STRING; + read_during_write_mode_port_b : STRING; + widthad_a : NATURAL; + widthad_b : NATURAL; + width_a : NATURAL; + width_b : NATURAL; + width_byteena_a : NATURAL; + width_byteena_b : NATURAL; + wrcontrol_wraddress_reg_b : STRING + ); + PORT ( + wren_a : IN STD_LOGIC ; + clock0 : IN STD_LOGIC ; + wren_b : IN STD_LOGIC ; + clock1 : IN STD_LOGIC ; + address_a : IN STD_LOGIC_VECTOR (widthad_a-1 DOWNTO 0); + address_b : IN STD_LOGIC_VECTOR (widthad_a-1 DOWNTO 0); + q_a : OUT STD_LOGIC_VECTOR (width_a-1 DOWNTO 0); + q_b : OUT STD_LOGIC_VECTOR (width_a-1 DOWNTO 0); + data_a : IN STD_LOGIC_VECTOR (width_a-1 DOWNTO 0); + data_b : IN STD_LOGIC_VECTOR (width_a-1 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + q_a <= sub_wire0(width_a-1 DOWNTO 0); + q_b <= sub_wire1(width_a-1 DOWNTO 0); + + altsyncram_component : altsyncram + GENERIC MAP ( + address_reg_b => "CLOCK1", + clock_enable_input_a => "BYPASS", + clock_enable_input_b => "BYPASS", + clock_enable_output_a => "BYPASS", + clock_enable_output_b => "BYPASS", + indata_reg_b => "CLOCK1", + init_file => init_file, + intended_device_family => "Cyclone III", + lpm_type => "altsyncram", + numwords_a => 2**widthad_a, + numwords_b => 2**widthad_a, + operation_mode => "BIDIR_DUAL_PORT", + outdata_aclr_a => "NONE", + outdata_aclr_b => "NONE", + outdata_reg_a => outdata_reg_a, + outdata_reg_b => outdata_reg_a, + power_up_uninitialized => "FALSE", + read_during_write_mode_port_a => "NEW_DATA_NO_NBE_READ", + read_during_write_mode_port_b => "NEW_DATA_NO_NBE_READ", + widthad_a => widthad_a, + widthad_b => widthad_a, + width_a => width_a, + width_b => width_a, + width_byteena_a => 1, + width_byteena_b => 1, + wrcontrol_wraddress_reg_b => "CLOCK1" + ) + PORT MAP ( + wren_a => wren_a, + clock0 => clock_a, + wren_b => wren_b, + clock1 => clock_b, + address_a => address_a, + address_b => address_b, + data_a => data_a, + data_b => data_b, + q_a => sub_wire0, + q_b => sub_wire1 + ); + + + +END SYN; diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/dprom_2r.vhd b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/dprom_2r.vhd new file mode 100644 index 00000000..a17e0e58 --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/dprom_2r.vhd @@ -0,0 +1,135 @@ +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY dprom_2r IS + GENERIC + ( + INIT_FILE : string := ""; + --NUMWORDS_A : natural; + WIDTHAD_A : natural; + WIDTH_A : natural := 8; + --NUMWORDS_B : natural; + WIDTHAD_B : natural; + WIDTH_B : natural := 8; + outdata_reg_a : string := "UNREGISTERED"; + outdata_reg_b : string := "UNREGISTERED" + ); + PORT + ( + address_a : in std_logic_vector (WIDTHAD_A-1 downto 0); + address_b : in std_logic_vector (WIDTHAD_B-1 downto 0); + clock : in std_logic ; + q_a : out std_logic_vector (WIDTH_A-1 downto 0); + q_b : out std_logic_vector (WIDTH_B-1 downto 0) + ); +END dprom_2r; + + +ARCHITECTURE SYN OF dprom_2r IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (WIDTH_A-1 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC_VECTOR (WIDTH_B-1 DOWNTO 0); + SIGNAL sub_wire2 : STD_LOGIC ; + SIGNAL sub_wire3_bv : BIT_VECTOR (WIDTH_A-1 DOWNTO 0); + SIGNAL sub_wire3 : STD_LOGIC_VECTOR (WIDTH_A-1 DOWNTO 0); + SIGNAL sub_wire4_bv : BIT_VECTOR (WIDTH_B-1 DOWNTO 0); + SIGNAL sub_wire4 : STD_LOGIC_VECTOR (WIDTH_B-1 DOWNTO 0); + + + + COMPONENT altsyncram + GENERIC ( + address_reg_b : STRING; + clock_enable_input_a : STRING; + clock_enable_input_b : STRING; + clock_enable_output_a : STRING; + clock_enable_output_b : STRING; + indata_reg_b : STRING; + init_file : STRING; + init_file_layout : STRING; + intended_device_family : STRING; + lpm_type : STRING; + numwords_a : NATURAL; + numwords_b : NATURAL; + operation_mode : STRING; + outdata_aclr_a : STRING; + outdata_aclr_b : STRING; + outdata_reg_a : STRING; + outdata_reg_b : STRING; + power_up_uninitialized : STRING; + ram_block_type : STRING; + widthad_a : NATURAL; + widthad_b : NATURAL; + width_a : NATURAL; + width_b : NATURAL; + width_byteena_a : NATURAL; + width_byteena_b : NATURAL; + wrcontrol_wraddress_reg_b : STRING + ); + PORT ( + wren_a : IN STD_LOGIC ; + wren_b : IN STD_LOGIC ; + clock0 : IN STD_LOGIC ; + address_a : IN STD_LOGIC_VECTOR (WIDTHAD_A-1 DOWNTO 0); + address_b : IN STD_LOGIC_VECTOR (WIDTHAD_B-1 DOWNTO 0); + q_a : OUT STD_LOGIC_VECTOR (WIDTH_A-1 DOWNTO 0); + q_b : OUT STD_LOGIC_VECTOR (WIDTH_B-1 DOWNTO 0); + data_a : IN STD_LOGIC_VECTOR (WIDTH_A-1 DOWNTO 0); + data_b : IN STD_LOGIC_VECTOR (WIDTH_B-1 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + sub_wire2 <= '0'; + sub_wire3_bv(WIDTH_A-1 DOWNTO 0) <= (others => '0'); + sub_wire3 <= To_stdlogicvector(sub_wire3_bv); + sub_wire4_bv(WIDTH_B-1 DOWNTO 0) <= (others => '0'); + sub_wire4 <= To_stdlogicvector(sub_wire4_bv); + q_a <= sub_wire0(WIDTH_A-1 DOWNTO 0); + q_b <= sub_wire1(WIDTH_B-1 DOWNTO 0); + + altsyncram_component : altsyncram + GENERIC MAP ( + address_reg_b => "CLOCK0", + clock_enable_input_a => "BYPASS", + clock_enable_input_b => "BYPASS", + clock_enable_output_a => "BYPASS", + clock_enable_output_b => "BYPASS", + indata_reg_b => "CLOCK0", + init_file => INIT_FILE, + init_file_layout => "PORT_A", + intended_device_family => "Cyclone III", + lpm_type => "altsyncram", + numwords_a => 2**WIDTHAD_A, + numwords_b => 2**WIDTHAD_B, + operation_mode => "BIDIR_DUAL_PORT", + outdata_aclr_a => "NONE", + outdata_aclr_b => "NONE", + outdata_reg_a => outdata_reg_a, + outdata_reg_b => outdata_reg_b, + power_up_uninitialized => "FALSE", + ram_block_type => "M9K", + widthad_a => WIDTHAD_A, + widthad_b => WIDTHAD_B, + width_a => WIDTH_A, + width_b => WIDTH_B, + width_byteena_a => 1, + width_byteena_b => 1, + wrcontrol_wraddress_reg_b => "CLOCK0" + ) + PORT MAP ( + wren_a => sub_wire2, + wren_b => sub_wire2, + clock0 => clock, + address_a => address_a, + address_b => address_b, + data_a => sub_wire3, + data_b => sub_wire4, + q_a => sub_wire0, + q_b => sub_wire1 + ); + +END SYN; diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/input_mapper.vhd b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/input_mapper.vhd new file mode 100644 index 00000000..8fc031ba --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/input_mapper.vhd @@ -0,0 +1,99 @@ +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.std_logic_unsigned.all; + +library work; +use work.pace_pkg.all; + +entity inputmapper is + generic + ( + NUM_DIPS : integer := 8; + NUM_INPUTS : integer := 2 + ); + port + ( + clk : in std_logic; + rst_n : in std_logic; + jamma : in from_JAMMA_t; + + -- user outputs + dips : in std_logic_vector(NUM_DIPS-1 downto 0); + inputs : out from_MAPPED_INPUTS_t(0 to NUM_INPUTS-1) + ); +end inputmapper; + +architecture SYN of inputmapper is + +begin + + process (clk, rst_n) + variable jamma_v : from_MAPPED_INPUTS_t(0 to NUM_INPUTS-1); + begin + + -- note: all inputs are active LOW + + if rst_n = '0' then + for i in 0 to NUM_INPUTS-1 loop + jamma_v(i).d := (others =>'1'); + end loop; + + elsif rising_edge (clk) then + + -- handle JAMMA inputs + jamma_v(0).d(0) := jamma.p(1).start; + jamma_v(0).d(1) := jamma.p(2).start; + jamma_v(0).d(2) := '1';--jamma.service; + jamma_v(0).d(3) := jamma.coin(1); + --unused + --unused + --unused + --unused + + jamma_v(1).d(0) := jamma.p(1).right; + jamma_v(1).d(1) := jamma.p(1).left; + jamma_v(1).d(2) := jamma.p(1).down; + jamma_v(1).d(3) := jamma.p(1).up; + --unused + jamma_v(1).d(5) := jamma.p(1).button(2); + --unused + jamma_v(1).d(7) := jamma.p(1).button(1); + + jamma_v(2).d(0) := jamma.p(2).right; + jamma_v(2).d(1) := jamma.p(2).left; + jamma_v(2).d(2) := jamma.p(2).down; + jamma_v(2).d(3) := jamma.p(2).up; + jamma_v(2).d(4) := jamma.coin(2); + jamma_v(2).d(5) := jamma.p(2).button(2); + --unused + jamma_v(2).d(7) := jamma.p(2).button(1); + end if; -- rising_edge (clk) + + -- assign outputs + inputs(0).d <= jamma_v(0).d; + inputs(1).d <= jamma_v(1).d; + inputs(2).d <= jamma_v(2).d; + inputs(3).d <= "11111110"; -- 1C/1C, 10/30/50K, 3 lives + inputs(4).d <= jamma.service & "1111100"; +-- PORT_START("DSW2") +-- PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:1") +-- PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) +-- PORT_DIPSETTING( 0x00, DEF_STR( On ) ) +-- PORT_DIPNAME( 0x02, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW2:2") +-- PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) +-- PORT_DIPSETTING( 0x02, DEF_STR( Cocktail ) ) +-- PORT_DIPNAME( 0x04, 0x04, "Coin Mode" ) PORT_DIPLOCATION("SW2:3") +-- PORT_DIPSETTING( 0x04, "Mode 1" ) +-- PORT_DIPSETTING( 0x00, "Mode 2" ) +-- /* Bits 4,5,6 are different in each game, see below */ +-- PORT_DIPUNUSED_DIPLOC( 0x38, 0x38, "SW2:4,5,6" ) +-- PORT_DIPNAME( 0x40, 0x40, "Invulnerability (Cheat)" ) PORT_DIPLOCATION("SW2:7") +-- PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) +-- PORT_DIPSETTING( 0x00, DEF_STR( On ) ) +-- PORT_SERVICE_DIPLOC( 0x80, IP_ACTIVE_LOW, "SW2:8" ) + + end process; + +end architecture SYN; + + diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/pace.vhd b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/pace.vhd new file mode 100644 index 00000000..112c724a --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/pace.vhd @@ -0,0 +1,146 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +library work; +use work.pace_pkg.all; +use work.video_controller_pkg.all; +use work.sprite_pkg.all; +use work.platform_pkg.all; +--use work.project_pkg.all; + +entity PACE is + port + ( + -- clocks and resets + clkrst_i : in from_CLKRST_t; + + -- misc I/O + buttons_i : in from_BUTTONS_t; + switches_i : in from_SWITCHES_t; + leds_o : out to_LEDS_t; + + -- controller inputs + inputs_i : in from_INPUTS_t; + + -- video + video_i : in from_VIDEO_t; + video_o : out to_VIDEO_t; + sound_data_o : out std_logic_vector(7 downto 0); + + -- custom i/o + -- project_i : in from_PROJECT_IO_t; + -- project_o : out to_PROJECT_IO_t; + platform_i : in from_PLATFORM_IO_t; + platform_o : out to_PLATFORM_IO_t; + cpu_rom_addr : out std_logic_vector(14 downto 0); + cpu_rom_do : in std_logic_vector(7 downto 0) + ); +end entity PACE; + +architecture SYN of PACE is + + constant CLK_1US_COUNTS : integer := + integer(27 * PACE_CLK0_MULTIPLY_BY / PACE_CLK0_DIVIDE_BY); + + signal mapped_inputs : from_MAPPED_INPUTS_t(0 to PACE_INPUTS_NUM_BYTES-1); + + signal to_tilemap_ctl : to_TILEMAP_CTL_a(1 to PACE_VIDEO_NUM_TILEMAPS); + signal from_tilemap_ctl : from_TILEMAP_CTL_a(1 to PACE_VIDEO_NUM_TILEMAPS); + + signal to_bitmap_ctl : to_BITMAP_CTL_a(1 to PACE_VIDEO_NUM_BITMAPS); + signal from_bitmap_ctl : from_BITMAP_CTL_a(1 to PACE_VIDEO_NUM_BITMAPS); + + signal to_sprite_reg : to_SPRITE_REG_t; + signal to_sprite_ctl : to_SPRITE_CTL_t; + signal from_sprite_ctl : from_SPRITE_CTL_t; + signal spr0_hit : std_logic; + + signal to_graphics : to_GRAPHICS_t; + signal from_graphics : from_GRAPHICS_t; + +begin + + inputs_inst : entity work.inputs + generic map + ( + NUM_DIPS => PACE_NUM_SWITCHES, + NUM_INPUTS => PACE_INPUTS_NUM_BYTES, + CLK_1US_DIV => CLK_1US_COUNTS + ) + port map + ( + clk => clkrst_i.clk(0), + reset => clkrst_i.rst(0), + jamma => inputs_i.jamma_n, + + dips => switches_i, + inputs => mapped_inputs + ); + + platform_inst : entity work.platform + generic map + ( + NUM_INPUT_BYTES => PACE_INPUTS_NUM_BYTES + ) + port map + ( + -- clocking and reset + clkrst_i => clkrst_i, + + -- misc inputs and outputs + buttons_i => buttons_i, + switches_i => switches_i, + leds_o => leds_o, + sound_data_o => sound_data_o, + -- controller inputs + inputs_i => mapped_inputs, + + -- graphics + bitmap_i => from_bitmap_ctl, + bitmap_o => to_bitmap_ctl, + + tilemap_i => from_tilemap_ctl, + tilemap_o => to_tilemap_ctl, + + sprite_reg_o => to_sprite_reg, + sprite_i => from_sprite_ctl, + sprite_o => to_sprite_ctl, + spr0_hit => spr0_hit, + + graphics_i => from_graphics, + graphics_o => to_graphics, + + -- custom i/o +-- project_i => project_i, +-- project_o => project_o, + platform_i => platform_i, + platform_o => platform_o, + + cpu_rom_addr => cpu_rom_addr, + cpu_rom_do => cpu_rom_do + ); + + graphics_inst : entity work.Graphics + Port Map + ( + bitmap_ctl_i => to_bitmap_ctl, + bitmap_ctl_o => from_bitmap_ctl, + + tilemap_ctl_i => to_tilemap_ctl, + tilemap_ctl_o => from_tilemap_ctl, + + sprite_reg_i => to_sprite_reg, + sprite_ctl_i => to_sprite_ctl, + sprite_ctl_o => from_sprite_ctl, + spr0_hit => spr0_hit, + + graphics_i => to_graphics, + graphics_o => from_graphics, + + -- video (incl. clk) + video_i => video_i, + video_o => video_o + ); + +end SYN; diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/pace_pkg.vhd b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/pace_pkg.vhd new file mode 100644 index 00000000..d2dd0c07 --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/pace_pkg.vhd @@ -0,0 +1,280 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +library work; + +package pace_pkg is + + -- + -- PACE constants which *MUST* be defined + -- + + type PACETargetType is + ( + PACE_TARGET_NANOBOARD_NB1, + PACE_TARGET_DE0, + PACE_TARGET_DE0_CV, -- 5CEBA4 + PACE_TARGET_DE0_NANO, -- EP4CE22 + PACE_TARGET_DE1, + PACE_TARGET_DE2, + PACE_TARGET_DE2_70, -- EP2C70 + PACE_TARGET_DE2_115, -- EP4CE115 + PACE_TARGET_P2, -- A02 build + PACE_TARGET_P2A, -- A04/A build (SRAM byte selects) + PACE_TARGET_P3M, + PACE_TARGET_S3A_700, -- Spartan 3A/N Starter Kit + PACE_TARGET_RC10, + PACE_TARGET_NX2_12, + PACE_TARGET_NEXYS_3, -- Digilent S6 board + PACE_TARGET_CYC3DEV, + PACE_TARGET_CYC5GXDEV, + PACE_TARGET_COCO3PLUS, + PACE_TARGET_S5A, + PACE_TARGET_CARTEBLANCHE_250, + PACE_TARGET_CARTEBLANCHE_500, + PACE_TARGET_BEMICRO, + PACE_TARGET_OPENEP3C16, + PACE_TARGET_MIST, + PACE_TARGET_CHAMELEON64, + PACE_TARGET_RETRORAMBLINGS_CYC3, -- Generic EP3C25 board with custom io boards + PACE_TARGET_S5A_R2_EP4C, + PACE_TARGET_S5A_R2_EP3SL, + PACE_TARGET_S5A_R2B0_EP4C, + PACE_TARGET_S5A_R2B0_EP3SL, + PACE_TARGET_S5A_R2C0_EP4C, + PACE_TARGET_S5A_R2C0_EP3SL, + PACE_TARGET_S5L_A0_EP4C, + PACE_TARGET_S5L_A0_EP3SL, + PACE_TARGET_NAVICO_ROCKY, + PACE_TARGET_NGPACE, + PACE_TARGET_S6M_A0 + ); + + type PACEFpgaVendor_t is + ( + PACE_FPGA_VENDOR_ALTERA, + PACE_FPGA_VENDOR_XILINX, + PACE_FPGA_VENDOR_LATTICE + ); + + type PACEFpgaFamily_t is + ( + PACE_FPGA_FAMILY_CYCLONE1, + PACE_FPGA_FAMILY_CYCLONE2, + PACE_FPGA_FAMILY_CYCLONE3, + PACE_FPGA_FAMILY_CYCLONE4, + PACE_FPGA_FAMILY_CYCLONE5, + PACE_FPGA_FAMILY_CYCLONE6, + PACE_FPGA_FAMILY_STRATIX_III, + PACE_FPGA_FAMILY_SPARTAN3, + PACE_FPGA_FAMILY_SPARTAN3A, + PACE_FPGA_FAMILY_SPARTAN3E + ); + + type PACEJamma_t is + ( + PACE_JAMMA_NONE, + PACE_JAMMA_MAPLE, + PACE_JAMMA_NGC, + PACE_JAMMA_PS2 + ); + + -- Types + + type ByteArrayType is array (natural range <>) of std_logic_vector(7 downto 0); + + type from_CLKRST_t is record + arst : std_logic; + arst_n : std_logic; + rst : std_logic_vector(0 to 3); + clk_ref : std_logic; --reference clock + clk : std_logic_vector(0 to 3); + end record; + + -- maximums from the DE2 target + + constant PACE_NUM_SWITCHES : natural := 18; + subtype from_SWITCHES_t is std_logic_vector(PACE_NUM_SWITCHES-1 downto 0); + + constant PACE_NUM_BUTTONS : natural := 4; + subtype from_BUTTONS_t is std_logic_vector(PACE_NUM_BUTTONS-1 downto 0); + + constant PACE_NUM_LEDS : natural := 18; + subtype to_LEDS_t is std_logic_vector(PACE_NUM_LEDS-1 downto 0); + + -- + -- JAMMA interface data structures + -- - note: all signals are active LOW + -- + + type from_JAMMA_player_t is record + start : std_logic; + up : std_logic; + down : std_logic; + left : std_logic; + right : std_logic; + button : std_logic_vector(1 to 5); + end record; + + type from_JAMMA_player_a is array (natural range <>) of from_JAMMA_player_t; + + type from_JAMMA_t is record + coin_cnt : std_logic_vector(1 to 2); + service : std_logic; + tilt : std_logic; + test : std_logic; + coin : std_logic_vector(1 to 2); + p : from_JAMMA_player_a(1 to 2); + end record; + + -- + -- INPUTS + -- + subtype analogue_in_t is std_logic_vector(9 downto 0); + type analogue_in_a is array (natural range <>) of analogue_in_t; + + type from_INPUTS_t is record + ps2_kclk : std_logic; + ps2_kdat : std_logic; + ps2_mclk : std_logic; + ps2_mdat : std_logic; + jamma_n : from_JAMMA_t; + -- up to 4 10-bit analgue inputs + analogue : analogue_in_a(1 to 4); + end record; + + type in8_t is record + d : std_logic_vector(7 downto 0); + end record; + + type from_MAPPED_INPUTS_t is array (natural range <>) of in8_t; + + -- + -- SRAM interface data structure + -- + type from_SRAM_t is record + d : std_logic_vector(31 downto 0); + end record; + + type to_SRAM_t is record + a : std_logic_vector(23 downto 0); + d : std_logic_vector(31 downto 0); + be : std_logic_vector(3 downto 0); + cs : std_logic; + oe : std_logic; + we : std_logic; + end record; + + function NULL_TO_SRAM return to_SRAM_t; + + -- + -- FLASH interface data structure + -- + type from_FLASH_t is record + d : std_logic_vector(15 downto 0); + end record; + + type to_FLASH_t is record + a : std_logic_vector(21 downto 0); + d : std_logic_vector(15 downto 0); + we : std_logic; + cs : std_logic; + oe : std_logic; + end record; + + function NULL_TO_FLASH return to_FLASH_t; + + type from_AUDIO_t is record + clk : std_logic; + end record; + + type to_AUDIO_t is record + clk : std_logic; + ldata : std_logic_vector(15 downto 0); + rdata : std_logic_vector(15 downto 0); + end record; + + function NULL_TO_AUDIO return to_AUDIO_t; + + type from_SPI_t is record + din : std_logic; + end record; + + type to_SPI_t is record + clk : std_logic; + mode : std_logic; + sel : std_logic; + ena : std_logic; + dout : std_logic; + end record; + + function NULL_TO_SPI return to_SPI_t; + + type to_SERIAL_t is record + txd : std_logic; + rts : std_logic; + end record; + + function NULL_TO_SERIAL return to_SERIAL_t; + + type from_SERIAL_t is record + dcd : std_logic; + rxd : std_logic; + cts : std_logic; + end record; + + constant PACE_NUM_GPI : natural := 72; + subtype from_GP_t is std_logic_vector(PACE_NUM_GPI-1 downto 0); + constant PACE_NUM_GPO : natural := PACE_NUM_GPI; + type to_GP_t is record + d : std_logic_vector(PACE_NUM_GPO-1 downto 0); + oe : std_logic_vector(PACE_NUM_GPO-1 downto 0); + end record; + + function NULL_TO_GP return to_GP_t; + + subtype SND_A_t is std_logic_vector(7 downto 0); + subtype SND_D_t is std_logic_vector(7 downto 0); + + type to_SOUND_t is record + a : SND_A_t; + d : SND_D_t; + rd : std_logic; + wr : std_logic; + end record; + + type from_SOUND_t is record + d : SND_D_t; + end record; + + function NULL_TO_SOUND return to_SOUND_t; + + -- + -- OSD interface data structure + -- + type from_OSD_t is record + d : std_logic_vector(7 downto 0); + end record; + + function NULL_FROM_OSD return from_OSD_t; + + type to_OSD_t is record + en : std_logic; + a : std_logic_vector(7 downto 0); + d : std_logic_vector(7 downto 0); + we : std_logic; + end record; + + function NULL_TO_OSD return to_OSD_t; + + -- create a constant that automatically determines + -- whether this is simulation or synthesis + constant IN_SIMULATION : BOOLEAN := false + -- synthesis translate_off + or true + -- synthesis translate_on + ; + constant IN_SYNTHESIS : boolean := not IN_SIMULATION; + +end; diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/pace_pkg_body.vhd b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/pace_pkg_body.vhd new file mode 100644 index 00000000..e1cedf87 --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/pace_pkg_body.vhd @@ -0,0 +1,50 @@ +library work; + +package body pace_pkg is + + function NULL_TO_FLASH return to_FLASH_t is + begin + return ((others => '0'), (others => '0'), '0', '0', '0'); + end NULL_TO_FLASH; + + function NULL_TO_SRAM return to_SRAM_t is + begin + return ((others => '0'), (others => '0'), (others => '0'), '0', '0', '0'); + end NULL_TO_SRAM; + + function NULL_TO_AUDIO return to_AUDIO_t is + begin + return ('0', (others => '0'), (others => '0')); + end NULL_TO_AUDIO; + + function NULL_TO_SPI return to_SPI_t is + begin + return (others => '0'); + end NULL_TO_SPI; + + function NULL_TO_SERIAL return to_SERIAL_t is + begin + return (others => '0'); + end NULL_TO_SERIAL; + + function NULL_TO_SOUND return to_SOUND_t is + begin + return ((others => '0'), (others => '0'), '0', '0'); + end NULL_TO_SOUND; + + function NULL_FROM_OSD return from_OSD_t is + begin + return (others => (others => '0')); + end NULL_FROM_OSD; + + function NULL_TO_OSD return to_OSD_t is + begin + return ('0', (others => '0'), (others => '0'), '0'); + end NULL_TO_OSD; + + function NULL_TO_GP return to_GP_t is + begin + return ((others => '0'), (others => '0')); + end NULL_TO_GP; + +end package body pace_pkg; diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/platform.vhd b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/platform.vhd new file mode 100644 index 00000000..77105a2d --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/platform.vhd @@ -0,0 +1,479 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; +use ieee.numeric_std.all; + +library work; +use work.pace_pkg.all; +use work.video_controller_pkg.all; +use work.sprite_pkg.all; +use work.platform_pkg.all; +use work.platform_variant_pkg.all; +--use work.project_pkg.all; + +entity platform is + generic + ( + NUM_INPUT_BYTES : integer + ); + port + ( + -- clocking and reset + clkrst_i : in from_CLKRST_t; + + -- misc I/O + buttons_i : in from_BUTTONS_t; + switches_i : in from_SWITCHES_t; + leds_o : out to_LEDS_t; + + -- controller inputs + inputs_i : in from_MAPPED_INPUTS_t(0 to NUM_INPUT_BYTES-1); + + -- graphics + + bitmap_i : in from_BITMAP_CTL_a(1 to PACE_VIDEO_NUM_BITMAPS); + bitmap_o : out to_BITMAP_CTL_a(1 to PACE_VIDEO_NUM_BITMAPS); + + tilemap_i : in from_TILEMAP_CTL_a(1 to PACE_VIDEO_NUM_TILEMAPS); + tilemap_o : out to_TILEMAP_CTL_a(1 to PACE_VIDEO_NUM_TILEMAPS); + + sprite_reg_o : out to_SPRITE_REG_t; + sprite_i : in from_SPRITE_CTL_t; + sprite_o : out to_SPRITE_CTL_t; + spr0_hit : in std_logic; + + -- various graphics information + graphics_i : in from_GRAPHICS_t; + graphics_o : out to_GRAPHICS_t; + sound_data_o : out std_logic_vector(7 downto 0); + + -- custom i/o +-- project_i : in from_PROJECT_IO_t; +-- project_o : out to_PROJECT_IO_t; + platform_i : in from_PLATFORM_IO_t; + platform_o : out to_PLATFORM_IO_t; + cpu_rom_addr : out std_logic_vector(14 downto 0); + cpu_rom_do : in std_logic_vector(7 downto 0) + ); + +end platform; + +architecture SYN of platform is + + alias clk_sys : std_logic is clkrst_i.clk(0); + alias rst_sys : std_logic is clkrst_i.rst(0); + alias clk_video : std_logic is clkrst_i.clk(1); + + -- cpu signals + signal clk_3M072_en : std_logic; + signal cpu_clk_en : std_logic; + signal cpu_a : std_logic_vector(15 downto 0); + signal cpu_d_i : std_logic_vector(7 downto 0); + signal cpu_d_o : std_logic_vector(7 downto 0); + signal cpu_mem_wr : std_logic; + signal cpu_io_rd : std_logic; + signal cpu_io_wr : std_logic; + signal cpu_irq : std_logic; + + -- ROM signals + signal rom_cs : std_logic; +-- signal rom_d_o : std_logic_vector(7 downto 0); + + -- keyboard signals + + -- VRAM signals + signal vram_cs : std_logic; + signal vram_wr : std_logic; + signal vram_d_o : std_logic_vector(7 downto 0); + + signal snd_cs : std_logic; + + + -- RAM signals + signal wram_cs : std_logic; + signal wram_wr : std_logic; + signal wram_d_o : std_logic_vector(7 downto 0); + + -- CRAM/SPRITE signals + signal cram_cs : std_logic; + signal cram_wr : std_logic; + signal cram_d_o : std_logic_vector(7 downto 0); + signal sprite_cs : std_logic; + + -- misc signals + signal in_cs : std_logic; + signal in_d_o : std_logic_vector(7 downto 0); + + -- other signals + signal rst_platform : std_logic; + signal pause : std_logic; + signal rot_en : std_logic; + +begin + + -- handle special keys + process (clk_sys, rst_sys) + variable spec_keys_r : std_logic_vector(7 downto 0); + alias spec_keys : std_logic_vector(7 downto 0) is inputs_i(PACE_INPUTS_NUM_BYTES-1).d; + variable layer_en : std_logic_vector(4 downto 0); + begin + if rst_sys = '1' then + rst_platform <= '0'; + pause <= '0'; + rot_en <= '0'; -- to default later + spec_keys_r := (others => '0'); + layer_en := "11111"; + elsif rising_edge(clk_sys) then + rst_platform <= spec_keys(0); + if spec_keys_r(1) = '0' and spec_keys(1) = '1' then + pause <= not pause; + end if; + if spec_keys_r(2) = '0' and spec_keys(2) = '1' then + rot_en <= not rot_en; + if layer_en = "11111" then + layer_en := "00001"; + elsif layer_en = "10000" then + layer_en := "11111"; + else + layer_en := layer_en(3 downto 0) & layer_en(4); + end if; + end if; + spec_keys_r := spec_keys; + end if; + graphics_o.bit8(0)(4 downto 0) <= layer_en; + end process; + + --graphics_o.bit8(0)(0) <= rot_en; + + -- chip select logic + -- ROM $0000-$7FFF + rom_cs <= '1' when STD_MATCH(cpu_a, "0---------------") else '0'; + -- SPRITE $C000-$C0FF + sprite_cs <= '1' when STD_MATCH(cpu_a, X"C0"& "--------") else '0'; + -- VRAM/CRAM $D000-$DFFF + vram_cs <= '1' when PLATFORM_VARIANT = "kungfum" and + STD_MATCH(cpu_a, X"D"&"0-----------") else + '1' when PLATFORM_VARIANT /= "kungfum" and + STD_MATCH(cpu_a, X"D"&"-----------0") else + '0'; + cram_cs <= '1' when PLATFORM_VARIANT = "kungfum" and + STD_MATCH(cpu_a, X"D"&"1-----------") else + '1' when PLATFORM_VARIANT /= "kungfum" and + STD_MATCH(cpu_a, X"D"&"-----------1") else + '0'; + -- RAM $E000-$EFFF + wram_cs <= '1' when STD_MATCH(cpu_a, X"E"&"------------") else '0'; + + -- OUTPUT $DXX0 + snd_cs <= '1' when STD_MATCH(cpu_a(7 downto 0), X"0"&"00--") else '0'; + + -- INPUTS (I/O) $00-$04 + in_cs <= '1' when STD_MATCH(cpu_a(7 downto 0), X"0"&"00--") else + '1' when STD_MATCH(cpu_a(7 downto 0), X"04") else + '0'; + +process (clk_sys, rst_sys) begin + if rst_sys = '1' then + sound_data_o <= X"00"; + elsif rising_edge(clk_sys) then + if cpu_clk_en = '1' and cpu_mem_wr = '1' and snd_cs = '1' then + sound_data_o <= cpu_d_o; + end if; + end if; + end process; + + + -- memory read mux + cpu_d_i <= in_d_o when (cpu_io_rd = '1' and in_cs = '1') else + cpu_rom_do when rom_cs = '1' else + vram_d_o when vram_cs = '1' else + cram_d_o when cram_cs = '1' else + wram_d_o when wram_cs = '1' else + (others => '1'); + + -- memory block write signals + vram_wr <= vram_cs and cpu_mem_wr; + cram_wr <= cram_cs and cpu_mem_wr; + wram_wr <= wram_cs and cpu_mem_wr; + + -- sprite registers + sprite_reg_o.clk <= clk_sys; + sprite_reg_o.clk_ena <= clk_3M072_en; + sprite_reg_o.a <= cpu_a(7 downto 0); + sprite_reg_o.d <= cpu_d_o; + sprite_reg_o.wr <= sprite_cs and cpu_mem_wr; + + -- + -- COMPONENT INSTANTIATION + -- + + BLK_CPU : block + signal cpu_rst : std_logic; + begin + -- generate CPU enable clock (3MHz from 27/30MHz) + clk_en_inst : entity work.clk_div + generic map + ( + DIVISOR => M62_CPU_CLK_ENA_DIVIDE_BY + ) + port map + ( + clk => clk_sys, + reset => rst_sys, + clk_en => clk_3M072_en + ); + + -- gated CPU signals + cpu_clk_en <= clk_3M072_en and not pause; + cpu_rst <= rst_sys or rst_platform; + + cpu_inst : entity work.Z80 + port map + ( + clk => clk_sys, + clk_en => cpu_clk_en, + reset => cpu_rst, + + addr => cpu_a, + datai => cpu_d_i, + datao => cpu_d_o, + + mem_rd => open, + mem_wr => cpu_mem_wr, + io_rd => cpu_io_rd, + io_wr => cpu_io_wr, + + intreq => cpu_irq, + intvec => cpu_d_i, + intack => open, + nmi => '0' + ); + + end block BLK_CPU; + + BLK_INTERRUPTS : block + + signal vblank_int : std_logic; + + begin + + process (clk_sys, rst_sys) + variable vblank_r : std_logic_vector(3 downto 0); + alias vblank_prev : std_logic is vblank_r(vblank_r'left); + alias vblank_um : std_logic is vblank_r(vblank_r'left-1); + -- 1us duty for VBLANK_INT + variable count : integer range 0 to CLK0_FREQ_MHz * 100; + begin + if rst_sys = '1' then + vblank_int <= '0'; + vblank_r := (others => '0'); + count := count'high; + elsif rising_edge(clk_sys) then + -- rising edge vblank only + if vblank_prev = '0' and vblank_um = '1' then + count := 0; + end if; + if count /= count'high then + vblank_int <= '1'; + count := count + 1; + else + vblank_int <= '0'; + end if; + vblank_r := vblank_r(vblank_r'left-1 downto 0) & graphics_i.vblank; + end if; -- rising_edge(clk_sys) + end process; + + -- generate INT + cpu_irq <= vblank_int; + + end block BLK_INTERRUPTS; + + BLK_INPUTS : block + begin + in_d_o <= inputs_i(0).d when cpu_a(2 downto 0) = "000" else + inputs_i(1).d when cpu_a(2 downto 0) = "001" else + inputs_i(2).d when cpu_a(2 downto 0) = "010" else + inputs_i(3).d when cpu_a(2 downto 0) = "011" else + inputs_i(4).d; + end block BLK_INPUTS; + + BLK_SCROLL : block + signal m62_hscroll : std_logic_vector(15 downto 0); + begin + process (clk_sys, rst_sys) + begin + if rst_sys = '1' then + m62_hscroll <= (others => '0'); + elsif rising_edge(clk_sys) then + if cpu_clk_en = '1' and cpu_mem_wr = '1' then + case cpu_a is + when X"A000" => + if PLATFORM_VARIANT = "kungfum" then + m62_hscroll(7 downto 0) <= cpu_d_o; + end if; + when X"B000" => + if PLATFORM_VARIANT = "kungfum" then + m62_hscroll(15 downto 8) <= cpu_d_o; + end if; + when others => + null; + end case; + end if; -- cpu_wr + end if; -- rising_edge(clk_sys) + end process; + graphics_o.bit16(0) <= m62_hscroll; + end block BLK_SCROLL; + +cpu_rom_addr <= cpu_a(14 downto 0); + + BLK_GFX_ROMS : block + + type gfx_rom_d_a is array(M62_CHAR_ROM'range) of std_logic_vector(7 downto 0); + signal chr_rom_d : gfx_rom_d_a; + type spr_rom_d_a is array(0 to 11) of std_logic_vector(7 downto 0); + signal spr_rom_left : spr_rom_d_a; + signal spr_rom_right : spr_rom_d_a; + + begin + + GEN_CHAR_ROMS : for i in M62_CHAR_ROM'range generate + char_rom_inst : entity work.sprom + generic map + ( + init_file => "./roms/" & + M62_CHAR_ROM(i) & ".hex", + widthad_a => 13 + ) + port map + ( + clock => clk_video, + address => tilemap_i(1).tile_a(12 downto 0), + q => chr_rom_d(i) + ); + end generate GEN_CHAR_ROMS; + + tilemap_o(1).tile_d(23 downto 0) <= chr_rom_d(0) & chr_rom_d(1) & chr_rom_d(2); + +-- chr_rom_addr <= tilemap_i(1).tile_a(12 downto 0); + --tilemap_o(1).tile_d(23 downto 0) <= chr_rom_do; + + + GEN_SPRITE_ROMS : for i in M62_SPRITE_ROM'range generate + sprite_rom_inst : entity work.dprom_2r + generic map + ( + init_file => "./roms/" & + M62_SPRITE_ROM(i) & ".hex", + widthad_a => 13, + widthad_b => 13 + ) + port map + ( + clock => clk_video, + address_a(12 downto 5) => sprite_i.a(12 downto 5), + address_a(4) => '0', + address_a(3 downto 0) => sprite_i.a(3 downto 0), + q_a => spr_rom_left(i), + address_b(12 downto 5) => sprite_i.a(12 downto 5), + address_b(4) => '1', + address_b(3 downto 0) => sprite_i.a(3 downto 0), + q_b => spr_rom_right(i) + ); + end generate GEN_SPRITE_ROMS; + + sprite_o.d(sprite_o.d'left downto 48) <= (others => '0'); + sprite_o.d(47 downto 0) <= spr_rom_left(0) & spr_rom_right(0) & + spr_rom_left(1) & spr_rom_right(1) & + spr_rom_left(2) & spr_rom_right(2) + when sprite_i.a(14 downto 13) = "00" else + spr_rom_left(3) & spr_rom_right(3) & + spr_rom_left(4) & spr_rom_right(4) & + spr_rom_left(5) & spr_rom_right(5) + when sprite_i.a(14 downto 13) = "01" else + spr_rom_left(6) & spr_rom_right(6) & + spr_rom_left(7) & spr_rom_right(7) & + spr_rom_left(8) & spr_rom_right(8) + when sprite_i.a(14 downto 13) = "10" else + spr_rom_left(9) & spr_rom_right(9) & + spr_rom_left(10) & spr_rom_right(10) & + spr_rom_left(11) & spr_rom_right(11); + + end block BLK_GFX_ROMS; + + BLK_VRAM : block + signal vram_a : std_logic_vector(10 downto 0); + alias cram_a : std_logic_vector(10 downto 0) is vram_a; + begin + + vram_a <= cpu_a(10 downto 0) when PLATFORM_VARIANT = "kungfum" else + cpu_a(11 downto 1); + + vram_inst : entity work.dpram + generic map + ( + init_file => "", + widthad_a => 11 + ) + port map + ( + clock_b => clk_sys, + address_b => vram_a, + wren_b => vram_wr, + data_b => cpu_d_o, + q_b => vram_d_o, + + clock_a => clk_video, + address_a => tilemap_i(1).map_a(10 downto 0), + wren_a => '0', + data_a => (others => 'X'), + q_a => tilemap_o(1).map_d(7 downto 0) + ); + tilemap_o(1).map_d(15 downto 8) <= (others => '0'); + + cram_inst : entity work.dpram + generic map + ( + init_file => "", + widthad_a => 11 + ) + port map + ( + clock_b => clk_sys, + address_b => cram_a, + wren_b => cram_wr, + data_b => cpu_d_o, + q_b => cram_d_o, + + clock_a => clk_video, + address_a => tilemap_i(1).attr_a(10 downto 0), + wren_a => '0', + data_a => (others => 'X'), + q_a => tilemap_o(1).attr_d(7 downto 0) + ); + tilemap_o(1).attr_d(15 downto 8) <= (others => '0'); + + end block BLK_VRAM; + + + wram_inst : entity work.spram + generic map + ( + widthad_a => 12 + ) + port map + ( + clock => clk_sys, + address => cpu_a(11 downto 0), + data => cpu_d_o, + wren => wram_wr, + q => wram_d_o + ); + + + -- unused outputs + + sprite_o.ld <= '0'; + --graphics_o <= NULL_TO_GRAPHICS; + leds_o <= (others => '0'); + +end SYN; diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/platform_pkg.vhd b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/platform_pkg.vhd new file mode 100644 index 00000000..cc47e1a0 --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/platform_pkg.vhd @@ -0,0 +1,76 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +library work; + +use work.platform_variant_pkg.all; +use work.video_controller_pkg.all; +package platform_pkg is + + constant PACE_VIDEO_CONTROLLER_TYPE : PACEVideoController_t := PACE_VIDEO_VGA_640x480_60Hz; + constant PACE_CLK0_DIVIDE_BY : natural := 3; + constant PACE_CLK0_MULTIPLY_BY : natural := 5; -- 24*5/3 = 40MHz + constant PACE_CLK1_DIVIDE_BY : natural := 19; + constant PACE_CLK1_MULTIPLY_BY : natural := 20; -- 24*20/19 = 25.263158MHz + constant PACE_VIDEO_H_SCALE : integer := 1; + constant PACE_VIDEO_V_SCALE : integer := 1; + constant PACE_VIDEO_H_SYNC_POLARITY : std_logic := '0'; + constant PACE_VIDEO_V_SYNC_POLARITY : std_logic := '0'; + +-- constant PACE_VIDEO_CONTROLLER_TYPE : PACEVideoController_t := PACE_VIDEO_ARCADE_STD_336x240_60Hz; +-- constant PACE_CLK0_DIVIDE_BY : natural := 1; +-- constant PACE_CLK0_MULTIPLY_BY : natural := 1; -- 24*1/1 = 24MHz +-- constant PACE_CLK1_DIVIDE_BY : natural := 57; +-- constant PACE_CLK1_MULTIPLY_BY : natural := 17; -- 24*17/57 = 7.157895MHz +-- constant PACE_VIDEO_H_SCALE : integer := 1; +-- constant PACE_VIDEO_V_SCALE : integer := 1; +-- constant PACE_VIDEO_H_SYNC_POLARITY : std_logic := '0'; +-- constant PACE_VIDEO_V_SYNC_POLARITY : std_logic := '0'; + + --constant PACE_VIDEO_CONTROLLER_TYPE : PACEVideoController_t := PACE_VIDEO_CVBS_720x288p_50Hz; + --constant PACE_CLK0_DIVIDE_BY : natural := 8; + --constant PACE_CLK0_MULTIPLY_BY : natural := 9; -- 24*9/8 = 27MHz + --constant PACE_CLK1_DIVIDE_BY : natural := 16; + --constant PACE_CLK1_MULTIPLY_BY : natural := 9; -- 24*9/16 = 13.5MHz + --constant PACE_VIDEO_H_SCALE : integer := 2; + --constant PACE_VIDEO_V_SCALE : integer := 1; + --constant PACE_ENABLE_ADV724 : std_logic := '1'; + --constant USE_VIDEO_VBLANK_INTERRUPT : boolean := false; + + constant PACE_VIDEO_BORDER_RGB : RGB_t := RGB_BLACK; + + constant M62_VIDEO_H_SIZE : integer := 384; + constant M62_VIDEO_H_OFFSET : integer := (512-M62_VIDEO_H_SIZE)/2; + constant M62_VIDEO_V_SIZE : integer := 256; + + constant PACE_VIDEO_NUM_BITMAPS : natural := 0; + constant PACE_VIDEO_NUM_TILEMAPS : natural := 1; + constant PACE_VIDEO_NUM_SPRITES : natural := 32; + constant PACE_VIDEO_H_SIZE : integer := M62_VIDEO_H_SIZE; + constant PACE_VIDEO_V_SIZE : integer := M62_VIDEO_V_SIZE; + constant PACE_VIDEO_L_CROP : integer := 0; + constant PACE_VIDEO_R_CROP : integer := PACE_VIDEO_L_CROP; + constant PACE_VIDEO_PIPELINE_DELAY : integer := 5; + + constant PACE_INPUTS_NUM_BYTES : integer := 6; + + constant CLK0_FREQ_MHz : natural := + 27 * PACE_CLK0_MULTIPLY_BY / PACE_CLK0_DIVIDE_BY; + constant CPU_FREQ_MHz : natural := 3; + + constant M62_CPU_CLK_ENA_DIVIDE_BY : natural := CLK0_FREQ_MHz / CPU_FREQ_MHz; + + + + + + type from_PLATFORM_IO_t is record + not_used : std_logic; + end record; + + type to_PLATFORM_IO_t is record + not_used : std_logic; + end record; + +end; diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/platform_variant_pkg.vhd b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/platform_variant_pkg.vhd new file mode 100644 index 00000000..7f333b9f --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/platform_variant_pkg.vhd @@ -0,0 +1,440 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +library work; + +use work.platform_pkg.all; + +package platform_variant_pkg is + + + constant PLATFORM_VARIANT : string := "ldrun"; + + type rom_a is array (natural range <>) of string; + + constant M62_ROM : rom_a(0 to 3) := + ( + 0 => "lr-a-4e", + 1 => "lr-a-4d", + 2 => "lr-a-4b", + 3 => "lr-a-4a" + ); + constant M62_ROM_WIDTHAD : natural := 13; + + constant M62_CHAR_ROM : rom_a(0 to 2) := + ( + 0 => "lr-e-2d", + 1 => "lr-e-2j", + 2 => "lr-e-2f" + ); + + constant M62_SPRITE_ROM : rom_a(0 to 2) := + ( + 0 => "lr-b-4k", + 1 => "lr-b-3n", + 2 => "lr-b-4c" + ); + + type pal_rgb_t is array (0 to 2) of std_logic_vector(7 downto 0); + type pal_a is array (natural range <>) of pal_rgb_t; + + constant tile_pal : pal_a(0 to 255) := + ( + 17 => (0=>"00000011", 1=>"11111111", 2=>"11111111"), -- 03FFFF + 25 => (0=>"11111111", 1=>"11111111", 2=>"00000011"), -- FFFF03 + 33 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 40 => (0=>"01100010", 1=>"01100010", 2=>"01100010"), -- 626262 + 41 => (0=>"11011100", 1=>"01100010", 2=>"00000011"), -- DC6203 + 42 => (0=>"00000011", 1=>"11111111", 2=>"11001100"), -- 03FFCC + 43 => (0=>"11011100", 1=>"11011100", 2=>"00000011"), -- DCDC03 + 44 => (0=>"11011100", 1=>"10110111", 2=>"01010000"), -- DCB750 + 45 => (0=>"10000100", 1=>"10100110", 2=>"10100110"), -- 84A6A6 + 46 => (0=>"10010100", 1=>"01100010", 2=>"01100010"), -- 946262 + 49 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 50 => (0=>"00000011", 1=>"11111111", 2=>"00000011"), -- 03FF03 + 51 => (0=>"11111111", 1=>"11111111", 2=>"00000011"), -- FFFF03 + 52 => (0=>"00000011", 1=>"00000011", 2=>"11111111"), -- 0303FF + 53 => (0=>"11111111", 1=>"00000011", 2=>"11111111"), -- FF03FF + 54 => (0=>"00000011", 1=>"11111111", 2=>"11111111"), -- 03FFFF + 55 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 56 => (0=>"01100010", 1=>"01100010", 2=>"01100010"), -- 626262 + 57 => (0=>"11111111", 1=>"11111111", 2=>"00000011"), -- FFFF03 + 63 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 72 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 73 => (0=>"11001100", 1=>"00000011", 2=>"11110000"), -- CC03F0 + 74 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 75 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 76 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 77 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 78 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 79 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 80 => (0=>"01100010", 1=>"01100010", 2=>"01100010"), -- 626262 + 81 => (0=>"11110000", 1=>"11011100", 2=>"00000011"), -- F0DC03 + 82 => (0=>"11110000", 1=>"10010100", 2=>"00000011"), -- F09403 + 83 => (0=>"11111111", 1=>"11111111", 2=>"10100110"), -- FFFFA6 + 84 => (0=>"10000100", 1=>"10000100", 2=>"11111111"), -- 8484FF + 85 => (0=>"11011100", 1=>"10010100", 2=>"00000011"), -- DC9403 + 86 => (0=>"00000011", 1=>"11011100", 2=>"11011100"), -- 03DCDC + 89 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 91 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 93 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 95 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 97 => (0=>"11111111", 1=>"11001100", 2=>"00000011"), -- FFCC03 + 98 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 99 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 101 => (0=>"11111111", 1=>"11001100", 2=>"00000011"), -- FFCC03 + 102 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 103 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 105 => (0=>"00000011", 1=>"00000011", 2=>"11111111"), -- 0303FF + 106 => (0=>"11111111", 1=>"11001100", 2=>"00000011"), -- FFCC03 + 107 => (0=>"11111111", 1=>"11001100", 2=>"00000011"), -- FFCC03 + 108 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 109 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 110 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 111 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 113 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 114 => (0=>"00000011", 1=>"00000011", 2=>"11111111"), -- 0303FF + 115 => (0=>"00000011", 1=>"00000011", 2=>"11111111"), -- 0303FF + 116 => (0=>"11111111", 1=>"11001100", 2=>"00000011"), -- FFCC03 + 117 => (0=>"11111111", 1=>"11001100", 2=>"00000011"), -- FFCC03 + 118 => (0=>"11111111", 1=>"11001100", 2=>"00000011"), -- FFCC03 + 119 => (0=>"11111111", 1=>"11001100", 2=>"00000011"), -- FFCC03 + 121 => (0=>"11111111", 1=>"11001100", 2=>"00000011"), -- FFCC03 + 122 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 123 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 124 => (0=>"00000011", 1=>"00000011", 2=>"11111111"), -- 0303FF + 125 => (0=>"00000011", 1=>"00000011", 2=>"11111111"), -- 0303FF + 126 => (0=>"00000011", 1=>"00000011", 2=>"11111111"), -- 0303FF + 127 => (0=>"00000011", 1=>"00000011", 2=>"11111111"), -- 0303FF + 136 => (0=>"10000100", 1=>"10000100", 2=>"10000100"), -- 848484 + 137 => (0=>"10010100", 1=>"10010100", 2=>"10010100"), -- 949494 + 138 => (0=>"01100010", 1=>"01100010", 2=>"01100010"), -- 626262 + 139 => (0=>"11011100", 1=>"10110111", 2=>"10000100"), -- DCB784 + 140 => (0=>"01100010", 1=>"01100010", 2=>"11001100"), -- 6262CC + 141 => (0=>"11001100", 1=>"11001100", 2=>"11001100"), -- CCCCCC + 142 => (0=>"10110111", 1=>"11011100", 2=>"11110000"), -- B7DCF0 + 143 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 145 => (0=>"11110000", 1=>"11001100", 2=>"10010100"), -- F0CC94 + 146 => (0=>"10000100", 1=>"10000100", 2=>"10000100"), -- 848484 + 147 => (0=>"10000100", 1=>"10000100", 2=>"10000100"), -- 848484 + 148 => (0=>"11001100", 1=>"11001100", 2=>"11001100"), -- CCCCCC + 149 => (0=>"11001100", 1=>"11001100", 2=>"10100110"), -- CCCCA6 + 150 => (0=>"10110111", 1=>"10110111", 2=>"10110111"), -- B7B7B7 + 153 => (0=>"10110111", 1=>"00000011", 2=>"11001100"), -- B703CC + 154 => (0=>"00000011", 1=>"10010100", 2=>"00000011"), -- 039403 + 155 => (0=>"11011100", 1=>"10110111", 2=>"10000100"), -- DCB784 + 156 => (0=>"01100010", 1=>"01100010", 2=>"11001100"), -- 6262CC + 157 => (0=>"11111111", 1=>"11111111", 2=>"00000011"), -- FFFF03 + 158 => (0=>"10100110", 1=>"11011100", 2=>"10100110"), -- A6DCA6 + 159 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 160 => (0=>"10000100", 1=>"10000100", 2=>"10000100"), -- 848484 + 161 => (0=>"10110111", 1=>"00000011", 2=>"11001100"), -- B703CC + 162 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 163 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 164 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 165 => (0=>"11001100", 1=>"10100110", 2=>"11011100"), -- CCA6DC + 166 => (0=>"10110111", 1=>"11011100", 2=>"11110000"), -- B7DCF0 + 167 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 168 => (0=>"10000100", 1=>"10000100", 2=>"10000100"), -- 848484 + 169 => (0=>"10100110", 1=>"01110000", 2=>"00000011"), -- A67003 + 170 => (0=>"11001100", 1=>"10100110", 2=>"00000011"), -- CCA603 + 171 => (0=>"11110000", 1=>"11011100", 2=>"00000011"), -- F0DC03 + 173 => (0=>"10100110", 1=>"10000100", 2=>"01110000"), -- A68470 + 174 => (0=>"10110111", 1=>"11011100", 2=>"11110000"), -- B7DCF0 + 175 => (0=>"10110111", 1=>"10110111", 2=>"10110111"), -- B7B7B7 + 176 => (0=>"10010100", 1=>"11001100", 2=>"11001100"), -- 94CCCC + 177 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 178 => (0=>"01100010", 1=>"10010100", 2=>"00000011"), -- 629403 + 179 => (0=>"11011100", 1=>"10100110", 2=>"01010000"), -- DCA650 + 180 => (0=>"00000011", 1=>"01100010", 2=>"01010000"), -- 036250 + 181 => (0=>"11001100", 1=>"01110000", 2=>"00000011"), -- CC7003 + 182 => (0=>"10010100", 1=>"11001100", 2=>"11001100"), -- 94CCCC + 183 => (0=>"11001100", 1=>"11011100", 2=>"10000100"), -- CCDC84 + 184 => (0=>"11001100", 1=>"11011100", 2=>"10000100"), -- CCDC84 + 185 => (0=>"10010100", 1=>"01100010", 2=>"00000011"), -- 946203 + 186 => (0=>"01100010", 1=>"10010100", 2=>"00000011"), -- 629403 + 187 => (0=>"11011100", 1=>"10100110", 2=>"01010000"), -- DCA650 + 188 => (0=>"00000011", 1=>"01100010", 2=>"01010000"), -- 036250 + 189 => (0=>"11001100", 1=>"01110000", 2=>"00000011"), -- CC7003 + 190 => (0=>"10110111", 1=>"10000100", 2=>"01010000"), -- B78450 + 192 => (0=>"11001100", 1=>"11011100", 2=>"10000100"), -- CCDC84 + 193 => (0=>"01110000", 1=>"01000001", 2=>"00000011"), -- 704103 + 194 => (0=>"10100110", 1=>"10000100", 2=>"01010000"), -- A68450 + 195 => (0=>"11011100", 1=>"10100110", 2=>"00000011"), -- DCA603 + 197 => (0=>"10100110", 1=>"01100010", 2=>"00000011"), -- A66203 + 198 => (0=>"10010100", 1=>"10000100", 2=>"01110000"), -- 948470 + 199 => (0=>"10110111", 1=>"10100110", 2=>"10010100"), -- B7A694 + 200 => (0=>"11011100", 1=>"10100110", 2=>"01010000"), -- DCA650 + 201 => (0=>"01110000", 1=>"01000001", 2=>"00000011"), -- 704103 + 202 => (0=>"10100110", 1=>"10000100", 2=>"01010000"), -- A68450 + 203 => (0=>"11011100", 1=>"10100110", 2=>"00000011"), -- DCA603 + 204 => (0=>"11001100", 1=>"11011100", 2=>"10000100"), -- CCDC84 + 205 => (0=>"10100110", 1=>"01100010", 2=>"00000011"), -- A66203 + 206 => (0=>"10010100", 1=>"10000100", 2=>"01110000"), -- 948470 + 207 => (0=>"10110111", 1=>"10100110", 2=>"10010100"), -- B7A694 + 208 => (0=>"11011100", 1=>"10100110", 2=>"01010000"), -- DCA650 + 209 => (0=>"11110000", 1=>"00000011", 2=>"10000100"), -- F00384 + 210 => (0=>"11001100", 1=>"11011100", 2=>"10000100"), -- CCDC84 + 212 => (0=>"00000011", 1=>"00000011", 2=>"11110000"), -- 0303F0 + 213 => (0=>"11001100", 1=>"10110111", 2=>"11001100"), -- CCB7CC + 214 => (0=>"10010100", 1=>"11001100", 2=>"11001100"), -- 94CCCC + 215 => (0=>"11110000", 1=>"11110000", 2=>"11110000"), -- F0F0F0 + 224 => (0=>"01100010", 1=>"01100010", 2=>"01100010"), -- 626262 + 225 => (0=>"11011100", 1=>"01100010", 2=>"00000011"), -- DC6203 + 227 => (0=>"11011100", 1=>"11011100", 2=>"00000011"), -- DCDC03 + 228 => (0=>"00000011", 1=>"10100110", 2=>"11011100"), -- 03A6DC + 230 => (0=>"10100110", 1=>"11011100", 2=>"11011100"), -- A6DCDC + 232 => (0=>"10100110", 1=>"11011100", 2=>"10100110"), -- A6DCA6 + 234 => (0=>"10110111", 1=>"01110000", 2=>"01100010"), -- B77062 + 236 => (0=>"11110000", 1=>"10100110", 2=>"10010100"), -- F0A694 + 240 => (0=>"00000011", 1=>"11111111", 2=>"11111111"), -- 03FFFF + 242 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 243 => (0=>"11111111", 1=>"10100110", 2=>"00000011"), -- FFA603 + 244 => (0=>"00000011", 1=>"00000011", 2=>"11111111"), -- 0303FF + 245 => (0=>"11111111", 1=>"10100110", 2=>"10000100"), -- FFA684 + 247 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 248 => (0=>"10100110", 1=>"10100110", 2=>"11011100"), -- A6A6DC + 249 => (0=>"10100110", 1=>"11011100", 2=>"10100110"), -- A6DCA6 + 250 => (0=>"11001100", 1=>"10010100", 2=>"01110000"), -- CC9470 + 251 => (0=>"10110111", 1=>"01110000", 2=>"01100010"), -- B77062 + 252 => (0=>"11001100", 1=>"01110000", 2=>"10000100"), -- CC7084 + 253 => (0=>"11110000", 1=>"10100110", 2=>"10010100"), -- F0A694 + others => (others => "00000011") + ); + + constant sprite_pal : pal_a(0 to 255) := + ( + 1 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 2 => (0=>"00000011", 1=>"11111111", 2=>"00000011"), -- 03FF03 + 3 => (0=>"11111111", 1=>"11111111", 2=>"00000011"), -- FFFF03 + 4 => (0=>"00000011", 1=>"00000011", 2=>"11111111"), -- 0303FF + 5 => (0=>"11111111", 1=>"10100110", 2=>"00000011"), -- FFA603 + 7 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 9 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 10 => (0=>"00000011", 1=>"11111111", 2=>"00000011"), -- 03FF03 + 11 => (0=>"11111111", 1=>"11111111", 2=>"00000011"), -- FFFF03 + 12 => (0=>"00000011", 1=>"00000011", 2=>"11111111"), -- 0303FF + 13 => (0=>"11111111", 1=>"00000011", 2=>"11111111"), -- FF03FF + 14 => (0=>"00000011", 1=>"11111111", 2=>"11111111"), -- 03FFFF + 15 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 17 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 18 => (0=>"01100010", 1=>"01100010", 2=>"01100010"), -- 626262 + 19 => (0=>"11111111", 1=>"11111111", 2=>"00000011"), -- FFFF03 + 20 => (0=>"00000011", 1=>"00000011", 2=>"11111111"), -- 0303FF + 21 => (0=>"11111111", 1=>"00000011", 2=>"11111111"), -- FF03FF + 22 => (0=>"00000011", 1=>"11111111", 2=>"11111111"), -- 03FFFF + 23 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 25 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 26 => (0=>"00000011", 1=>"11111111", 2=>"00000011"), -- 03FF03 + 27 => (0=>"11111111", 1=>"10100110", 2=>"00000011"), -- FFA603 + 28 => (0=>"00000011", 1=>"00110001", 2=>"11111111"), -- 0331FF + 29 => (0=>"11111111", 1=>"10100110", 2=>"10000100"), -- FFA684 + 30 => (0=>"00000011", 1=>"11111111", 2=>"11111111"), -- 03FFFF + 31 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 33 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 34 => (0=>"00000011", 1=>"11111111", 2=>"00000011"), -- 03FF03 + 35 => (0=>"10100110", 1=>"01100010", 2=>"00000011"), -- A66203 + 36 => (0=>"00000011", 1=>"00110001", 2=>"11111111"), -- 0331FF + 37 => (0=>"11111111", 1=>"10100110", 2=>"10000100"), -- FFA684 + 38 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 39 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 41 => (0=>"11011100", 1=>"00000011", 2=>"00000011"), -- DC0303 + 42 => (0=>"00000011", 1=>"11111111", 2=>"00000011"), -- 03FF03 + 43 => (0=>"11111111", 1=>"11111111", 2=>"00000011"), -- FFFF03 + 44 => (0=>"00000011", 1=>"10100110", 2=>"11111111"), -- 03A6FF + 45 => (0=>"11111111", 1=>"10100110", 2=>"00000011"), -- FFA603 + 46 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 47 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 49 => (0=>"11011100", 1=>"00000011", 2=>"00000011"), -- DC0303 + 51 => (0=>"11111111", 1=>"11111111", 2=>"00000011"), -- FFFF03 + 52 => (0=>"00000011", 1=>"10100110", 2=>"11111111"), -- 03A6FF + 53 => (0=>"11111111", 1=>"10100110", 2=>"00000011"), -- FFA603 + 54 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 55 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 57 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 58 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 59 => (0=>"11111111", 1=>"10100110", 2=>"00000011"), -- FFA603 + 60 => (0=>"00000011", 1=>"10000100", 2=>"11111111"), -- 0384FF + 61 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 62 => (0=>"10100110", 1=>"11001100", 2=>"11001100"), -- A6CCCC + 63 => (0=>"11110000", 1=>"11110000", 2=>"11110000"), -- F0F0F0 + 65 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 66 => (0=>"00000011", 1=>"11110000", 2=>"01100010"), -- 03F062 + 67 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 68 => (0=>"00000011", 1=>"01000001", 2=>"11111111"), -- 0341FF + 69 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 71 => (0=>"11110000", 1=>"11110000", 2=>"11110000"), -- F0F0F0 + 73 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 75 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 76 => (0=>"00000011", 1=>"01000001", 2=>"11111111"), -- 0341FF + 77 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 78 => (0=>"00000011", 1=>"11110000", 2=>"01100010"), -- 03F062 + 79 => (0=>"11110000", 1=>"11110000", 2=>"11110000"), -- F0F0F0 + 81 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 82 => (0=>"00000011", 1=>"10100110", 2=>"00000011"), -- 03A603 + 83 => (0=>"11111111", 1=>"11111111", 2=>"00000011"), -- FFFF03 + 84 => (0=>"00000011", 1=>"01000001", 2=>"11111111"), -- 0341FF + 86 => (0=>"00000011", 1=>"11110000", 2=>"11110000"), -- 03F0F0 + 87 => (0=>"11110000", 1=>"11110000", 2=>"11110000"), -- F0F0F0 + 89 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 91 => (0=>"11111111", 1=>"11111111", 2=>"00000011"), -- FFFF03 + 92 => (0=>"00000011", 1=>"01000001", 2=>"11111111"), -- 0341FF + 94 => (0=>"00000011", 1=>"11110000", 2=>"11110000"), -- 03F0F0 + 95 => (0=>"11110000", 1=>"11110000", 2=>"11110000"), -- F0F0F0 + 98 => (0=>"11110000", 1=>"10100110", 2=>"00000011"), -- F0A603 + 99 => (0=>"11110000", 1=>"10110111", 2=>"10000100"), -- F0B784 + 100 => (0=>"00000011", 1=>"10010100", 2=>"11011100"), -- 0394DC + 101 => (0=>"11111111", 1=>"11001100", 2=>"10100110"), -- FFCCA6 + 102 => (0=>"11001100", 1=>"11110000", 2=>"11110000"), -- CCF0F0 + 103 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 105 => (0=>"01110000", 1=>"01000001", 2=>"00000011"), -- 704103 + 106 => (0=>"10100110", 1=>"10000100", 2=>"01010000"), -- A68450 + 107 => (0=>"11011100", 1=>"10100110", 2=>"00000011"), -- DCA603 + 109 => (0=>"10100110", 1=>"01100010", 2=>"00000011"), -- A66203 + 110 => (0=>"10010100", 1=>"10000100", 2=>"01110000"), -- 948470 + 111 => (0=>"10110111", 1=>"10100110", 2=>"10010100"), -- B7A694 + 113 => (0=>"11110000", 1=>"00110001", 2=>"00110001"), -- F03131 + 114 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 115 => (0=>"10100110", 1=>"01100010", 2=>"00000011"), -- A66203 + 116 => (0=>"00000011", 1=>"01000001", 2=>"11111111"), -- 0341FF + 117 => (0=>"11111111", 1=>"10100110", 2=>"10000100"), -- FFA684 + 118 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 119 => (0=>"11110000", 1=>"11110000", 2=>"11110000"), -- F0F0F0 + 121 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 122 => (0=>"10000100", 1=>"11001100", 2=>"00000011"), -- 84CC03 + 123 => (0=>"11111111", 1=>"10110111", 2=>"00000011"), -- FFB703 + 124 => (0=>"00000011", 1=>"01000001", 2=>"11011100"), -- 0341DC + 125 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 126 => (0=>"00000011", 1=>"10010100", 2=>"00000011"), -- 039403 + 127 => (0=>"11110000", 1=>"11110000", 2=>"11110000"), -- F0F0F0 + 129 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 130 => (0=>"00000011", 1=>"11111111", 2=>"00000011"), -- 03FF03 + 131 => (0=>"11111111", 1=>"11111111", 2=>"00000011"), -- FFFF03 + 132 => (0=>"00000011", 1=>"00000011", 2=>"11111111"), -- 0303FF + 133 => (0=>"11111111", 1=>"10100110", 2=>"00000011"), -- FFA603 + 135 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 137 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 138 => (0=>"00000011", 1=>"11111111", 2=>"00000011"), -- 03FF03 + 139 => (0=>"11111111", 1=>"11111111", 2=>"00000011"), -- FFFF03 + 140 => (0=>"00000011", 1=>"00000011", 2=>"11111111"), -- 0303FF + 141 => (0=>"11111111", 1=>"00000011", 2=>"11111111"), -- FF03FF + 142 => (0=>"00000011", 1=>"11111111", 2=>"11111111"), -- 03FFFF + 143 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 145 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 146 => (0=>"01100010", 1=>"01100010", 2=>"01100010"), -- 626262 + 147 => (0=>"11111111", 1=>"11111111", 2=>"00000011"), -- FFFF03 + 148 => (0=>"00000011", 1=>"00000011", 2=>"11111111"), -- 0303FF + 149 => (0=>"11111111", 1=>"00000011", 2=>"11111111"), -- FF03FF + 150 => (0=>"00000011", 1=>"11111111", 2=>"11111111"), -- 03FFFF + 151 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 153 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 154 => (0=>"00000011", 1=>"11111111", 2=>"00000011"), -- 03FF03 + 155 => (0=>"11111111", 1=>"10100110", 2=>"00000011"), -- FFA603 + 156 => (0=>"00000011", 1=>"00110001", 2=>"11111111"), -- 0331FF + 157 => (0=>"11111111", 1=>"10100110", 2=>"10000100"), -- FFA684 + 158 => (0=>"00000011", 1=>"11111111", 2=>"11111111"), -- 03FFFF + 159 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 161 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 162 => (0=>"00000011", 1=>"11111111", 2=>"00000011"), -- 03FF03 + 163 => (0=>"10100110", 1=>"01100010", 2=>"00000011"), -- A66203 + 164 => (0=>"00000011", 1=>"00110001", 2=>"11111111"), -- 0331FF + 165 => (0=>"11111111", 1=>"10100110", 2=>"10000100"), -- FFA684 + 166 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 167 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 169 => (0=>"11011100", 1=>"00000011", 2=>"00000011"), -- DC0303 + 170 => (0=>"00000011", 1=>"11111111", 2=>"00000011"), -- 03FF03 + 171 => (0=>"11111111", 1=>"11111111", 2=>"00000011"), -- FFFF03 + 172 => (0=>"00000011", 1=>"10100110", 2=>"11111111"), -- 03A6FF + 173 => (0=>"11111111", 1=>"10100110", 2=>"00000011"), -- FFA603 + 174 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 175 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 177 => (0=>"11011100", 1=>"00000011", 2=>"00000011"), -- DC0303 + 179 => (0=>"11111111", 1=>"11111111", 2=>"00000011"), -- FFFF03 + 180 => (0=>"00000011", 1=>"10100110", 2=>"11111111"), -- 03A6FF + 181 => (0=>"11111111", 1=>"10100110", 2=>"00000011"), -- FFA603 + 182 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 183 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 185 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 186 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 187 => (0=>"11111111", 1=>"10100110", 2=>"00000011"), -- FFA603 + 188 => (0=>"00000011", 1=>"10000100", 2=>"11111111"), -- 0384FF + 189 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 190 => (0=>"10100110", 1=>"11001100", 2=>"11001100"), -- A6CCCC + 191 => (0=>"11110000", 1=>"11110000", 2=>"11110000"), -- F0F0F0 + 193 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 194 => (0=>"00000011", 1=>"11110000", 2=>"01100010"), -- 03F062 + 195 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 196 => (0=>"00000011", 1=>"01000001", 2=>"11111111"), -- 0341FF + 197 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 199 => (0=>"11110000", 1=>"11110000", 2=>"11110000"), -- F0F0F0 + 201 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 203 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 204 => (0=>"00000011", 1=>"01000001", 2=>"11111111"), -- 0341FF + 205 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 206 => (0=>"00000011", 1=>"11110000", 2=>"01100010"), -- 03F062 + 207 => (0=>"11110000", 1=>"11110000", 2=>"11110000"), -- F0F0F0 + 209 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 210 => (0=>"00000011", 1=>"10100110", 2=>"00000011"), -- 03A603 + 211 => (0=>"11111111", 1=>"11111111", 2=>"00000011"), -- FFFF03 + 212 => (0=>"00000011", 1=>"01000001", 2=>"11111111"), -- 0341FF + 214 => (0=>"00000011", 1=>"11110000", 2=>"11110000"), -- 03F0F0 + 215 => (0=>"11110000", 1=>"11110000", 2=>"11110000"), -- F0F0F0 + 217 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 219 => (0=>"11111111", 1=>"11111111", 2=>"00000011"), -- FFFF03 + 220 => (0=>"00000011", 1=>"01000001", 2=>"11111111"), -- 0341FF + 222 => (0=>"00000011", 1=>"11110000", 2=>"11110000"), -- 03F0F0 + 223 => (0=>"11110000", 1=>"11110000", 2=>"11110000"), -- F0F0F0 + 226 => (0=>"11110000", 1=>"10100110", 2=>"00000011"), -- F0A603 + 227 => (0=>"11110000", 1=>"10110111", 2=>"10000100"), -- F0B784 + 228 => (0=>"00000011", 1=>"10010100", 2=>"11011100"), -- 0394DC + 229 => (0=>"11111111", 1=>"11001100", 2=>"10100110"), -- FFCCA6 + 230 => (0=>"11001100", 1=>"11110000", 2=>"11110000"), -- CCF0F0 + 231 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 233 => (0=>"01110000", 1=>"01000001", 2=>"00000011"), -- 704103 + 234 => (0=>"10100110", 1=>"10000100", 2=>"01010000"), -- A68450 + 235 => (0=>"11011100", 1=>"10100110", 2=>"00000011"), -- DCA603 + 237 => (0=>"10100110", 1=>"01100010", 2=>"00000011"), -- A66203 + 238 => (0=>"10010100", 1=>"10000100", 2=>"01110000"), -- 948470 + 239 => (0=>"10110111", 1=>"10100110", 2=>"10010100"), -- B7A694 + 241 => (0=>"11110000", 1=>"00110001", 2=>"00110001"), -- F03131 + 242 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 243 => (0=>"10100110", 1=>"01100010", 2=>"00000011"), -- A66203 + 244 => (0=>"00000011", 1=>"01000001", 2=>"11111111"), -- 0341FF + 245 => (0=>"11111111", 1=>"10100110", 2=>"10000100"), -- FFA684 + 246 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 247 => (0=>"11110000", 1=>"11110000", 2=>"11110000"), -- F0F0F0 + 249 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303 + 250 => (0=>"10000100", 1=>"11001100", 2=>"00000011"), -- 84CC03 + 251 => (0=>"11111111", 1=>"10110111", 2=>"00000011"), -- FFB703 + 252 => (0=>"00000011", 1=>"01000001", 2=>"11011100"), -- 0341DC + 253 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF + 254 => (0=>"00000011", 1=>"10010100", 2=>"00000011"), -- 039403 + 255 => (0=>"11110000", 1=>"11110000", 2=>"11110000"), -- F0F0F0 + others => (others => "00000011") + ); + + -- table of sprite heights + type prom_a is array (natural range <>) of integer range 0 to 3; + constant sprite_prom : prom_a(0 to 31) := + ( + 4 => 0, + 5 => 0, + 6 => 0, + 7 => 0, + 12 => 0, + 13 => 0, + 14 => 0, + 15 => 0, + 20 => 0, + 21 => 0, + 22 => 0, + 23 => 0, + 28 => 0, + 29 => 0, + 30 => 0, + 31 => 0, + others => 1 + ); + +end package platform_variant_pkg; diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/pll_mist.qip b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/pll_mist.qip new file mode 100644 index 00000000..d4720390 --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/pll_mist.qip @@ -0,0 +1,4 @@ +set_global_assignment -name IP_TOOL_NAME "ALTPLL" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "pll_mist.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "pll_mist.ppf"] diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/pll_mist.vhd b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/pll_mist.vhd new file mode 100644 index 00000000..8e360627 --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/pll_mist.vhd @@ -0,0 +1,461 @@ +-- megafunction wizard: %ALTPLL% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altpll + +-- ============================================================ +-- File Name: pll_mist.vhd +-- Megafunction Name(s): +-- altpll +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 13.1.0 Build 162 10/23/2013 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2013 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY pll_mist IS + PORT + ( + areset : IN STD_LOGIC := '0'; + inclk0 : IN STD_LOGIC := '0'; + c0 : OUT STD_LOGIC ; + c1 : OUT STD_LOGIC ; + c2 : OUT STD_LOGIC ; + c3 : OUT STD_LOGIC ; + locked : OUT STD_LOGIC + ); +END pll_mist; + + +ARCHITECTURE SYN OF pll_mist IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (4 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC ; + SIGNAL sub_wire2 : STD_LOGIC ; + SIGNAL sub_wire3 : STD_LOGIC ; + SIGNAL sub_wire4 : STD_LOGIC ; + SIGNAL sub_wire5 : STD_LOGIC ; + SIGNAL sub_wire6 : STD_LOGIC ; + SIGNAL sub_wire7 : STD_LOGIC_VECTOR (1 DOWNTO 0); + SIGNAL sub_wire8_bv : BIT_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire8 : STD_LOGIC_VECTOR (0 DOWNTO 0); + + + + COMPONENT altpll + GENERIC ( + bandwidth_type : STRING; + clk0_divide_by : NATURAL; + clk0_duty_cycle : NATURAL; + clk0_multiply_by : NATURAL; + clk0_phase_shift : STRING; + clk1_divide_by : NATURAL; + clk1_duty_cycle : NATURAL; + clk1_multiply_by : NATURAL; + clk1_phase_shift : STRING; + clk2_divide_by : NATURAL; + clk2_duty_cycle : NATURAL; + clk2_multiply_by : NATURAL; + clk2_phase_shift : STRING; + clk3_divide_by : NATURAL; + clk3_duty_cycle : NATURAL; + clk3_multiply_by : NATURAL; + clk3_phase_shift : STRING; + compensate_clock : STRING; + inclk0_input_frequency : NATURAL; + intended_device_family : STRING; + lpm_hint : STRING; + lpm_type : STRING; + operation_mode : STRING; + pll_type : STRING; + port_activeclock : STRING; + port_areset : STRING; + port_clkbad0 : STRING; + port_clkbad1 : STRING; + port_clkloss : STRING; + port_clkswitch : STRING; + port_configupdate : STRING; + port_fbin : STRING; + port_inclk0 : STRING; + port_inclk1 : STRING; + port_locked : STRING; + port_pfdena : STRING; + port_phasecounterselect : STRING; + port_phasedone : STRING; + port_phasestep : STRING; + port_phaseupdown : STRING; + port_pllena : STRING; + port_scanaclr : STRING; + port_scanclk : STRING; + port_scanclkena : STRING; + port_scandata : STRING; + port_scandataout : STRING; + port_scandone : STRING; + port_scanread : STRING; + port_scanwrite : STRING; + port_clk0 : STRING; + port_clk1 : STRING; + port_clk2 : STRING; + port_clk3 : STRING; + port_clk4 : STRING; + port_clk5 : STRING; + port_clkena0 : STRING; + port_clkena1 : STRING; + port_clkena2 : STRING; + port_clkena3 : STRING; + port_clkena4 : STRING; + port_clkena5 : STRING; + port_extclk0 : STRING; + port_extclk1 : STRING; + port_extclk2 : STRING; + port_extclk3 : STRING; + self_reset_on_loss_lock : STRING; + width_clock : NATURAL + ); + PORT ( + areset : IN STD_LOGIC ; + clk : OUT STD_LOGIC_VECTOR (4 DOWNTO 0); + inclk : IN STD_LOGIC_VECTOR (1 DOWNTO 0); + locked : OUT STD_LOGIC + ); + END COMPONENT; + +BEGIN + sub_wire8_bv(0 DOWNTO 0) <= "0"; + sub_wire8 <= To_stdlogicvector(sub_wire8_bv); + sub_wire5 <= sub_wire0(2); + sub_wire4 <= sub_wire0(0); + sub_wire2 <= sub_wire0(3); + sub_wire1 <= sub_wire0(1); + c1 <= sub_wire1; + c3 <= sub_wire2; + locked <= sub_wire3; + c0 <= sub_wire4; + c2 <= sub_wire5; + sub_wire6 <= inclk0; + sub_wire7 <= sub_wire8(0 DOWNTO 0) & sub_wire6; + + altpll_component : altpll + GENERIC MAP ( + bandwidth_type => "AUTO", + clk0_divide_by => 27, + clk0_duty_cycle => 50, + clk0_multiply_by => 40, + clk0_phase_shift => "0", + clk1_divide_by => 43, + clk1_duty_cycle => 50, + clk1_multiply_by => 40, + clk1_phase_shift => "0", + clk2_divide_by => 3, + clk2_duty_cycle => 50, + clk2_multiply_by => 8, + clk2_phase_shift => "0", + clk3_divide_by => 5400, + clk3_duty_cycle => 50, + clk3_multiply_by => 179, + clk3_phase_shift => "0", + compensate_clock => "CLK0", + inclk0_input_frequency => 37037, + intended_device_family => "Cyclone III", + lpm_hint => "CBX_MODULE_PREFIX=pll_mist", + lpm_type => "altpll", + operation_mode => "NORMAL", + pll_type => "AUTO", + port_activeclock => "PORT_UNUSED", + port_areset => "PORT_USED", + port_clkbad0 => "PORT_UNUSED", + port_clkbad1 => "PORT_UNUSED", + port_clkloss => "PORT_UNUSED", + port_clkswitch => "PORT_UNUSED", + port_configupdate => "PORT_UNUSED", + port_fbin => "PORT_UNUSED", + port_inclk0 => "PORT_USED", + port_inclk1 => "PORT_UNUSED", + port_locked => "PORT_USED", + port_pfdena => "PORT_UNUSED", + port_phasecounterselect => "PORT_UNUSED", + port_phasedone => "PORT_UNUSED", + port_phasestep => "PORT_UNUSED", + port_phaseupdown => "PORT_UNUSED", + port_pllena => "PORT_UNUSED", + port_scanaclr => "PORT_UNUSED", + port_scanclk => "PORT_UNUSED", + port_scanclkena => "PORT_UNUSED", + port_scandata => "PORT_UNUSED", + port_scandataout => "PORT_UNUSED", + port_scandone => "PORT_UNUSED", + port_scanread => "PORT_UNUSED", + port_scanwrite => "PORT_UNUSED", + port_clk0 => "PORT_USED", + port_clk1 => "PORT_USED", + port_clk2 => "PORT_USED", + port_clk3 => "PORT_USED", + port_clk4 => "PORT_UNUSED", + port_clk5 => "PORT_UNUSED", + port_clkena0 => "PORT_UNUSED", + port_clkena1 => "PORT_UNUSED", + port_clkena2 => "PORT_UNUSED", + port_clkena3 => "PORT_UNUSED", + port_clkena4 => "PORT_UNUSED", + port_clkena5 => "PORT_UNUSED", + port_extclk0 => "PORT_UNUSED", + port_extclk1 => "PORT_UNUSED", + port_extclk2 => "PORT_UNUSED", + port_extclk3 => "PORT_UNUSED", + self_reset_on_loss_lock => "OFF", + width_clock => 5 + ) + PORT MAP ( + areset => areset, + inclk => sub_wire7, + clk => sub_wire0, + locked => sub_wire3 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACTIVECLK_CHECK STRING "0" +-- Retrieval info: PRIVATE: BANDWIDTH STRING "1.000" +-- Retrieval info: PRIVATE: BANDWIDTH_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: BANDWIDTH_FREQ_UNIT STRING "MHz" +-- Retrieval info: PRIVATE: BANDWIDTH_PRESET STRING "Low" +-- Retrieval info: PRIVATE: BANDWIDTH_USE_AUTO STRING "1" +-- Retrieval info: PRIVATE: BANDWIDTH_USE_PRESET STRING "0" +-- Retrieval info: PRIVATE: CLKBAD_SWITCHOVER_CHECK STRING "0" +-- Retrieval info: PRIVATE: CLKLOSS_CHECK STRING "0" +-- Retrieval info: PRIVATE: CLKSWITCH_CHECK STRING "0" +-- Retrieval info: PRIVATE: CNX_NO_COMPENSATE_RADIO STRING "0" +-- Retrieval info: PRIVATE: CREATE_CLKBAD_CHECK STRING "0" +-- Retrieval info: PRIVATE: CREATE_INCLK1_CHECK STRING "0" +-- Retrieval info: PRIVATE: CUR_DEDICATED_CLK STRING "c0" +-- Retrieval info: PRIVATE: CUR_FBIN_CLK STRING "c0" +-- Retrieval info: PRIVATE: DEVICE_SPEED_GRADE STRING "8" +-- Retrieval info: PRIVATE: DIV_FACTOR0 NUMERIC "27" +-- Retrieval info: PRIVATE: DIV_FACTOR1 NUMERIC "43" +-- Retrieval info: PRIVATE: DIV_FACTOR2 NUMERIC "3" +-- Retrieval info: PRIVATE: DIV_FACTOR3 NUMERIC "27" +-- Retrieval info: PRIVATE: DUTY_CYCLE0 STRING "50.00000000" +-- Retrieval info: PRIVATE: DUTY_CYCLE1 STRING "50.00000000" +-- Retrieval info: PRIVATE: DUTY_CYCLE2 STRING "50.00000000" +-- Retrieval info: PRIVATE: DUTY_CYCLE3 STRING "50.00000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE0 STRING "40.000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE1 STRING "25.116280" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE2 STRING "72.000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE3 STRING "0.895000" +-- Retrieval info: PRIVATE: EXPLICIT_SWITCHOVER_COUNTER STRING "0" +-- Retrieval info: PRIVATE: EXT_FEEDBACK_RADIO STRING "0" +-- Retrieval info: PRIVATE: GLOCKED_COUNTER_EDIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: GLOCKED_FEATURE_ENABLED STRING "0" +-- Retrieval info: PRIVATE: GLOCKED_MODE_CHECK STRING "0" +-- Retrieval info: PRIVATE: GLOCK_COUNTER_EDIT NUMERIC "1048575" +-- Retrieval info: PRIVATE: HAS_MANUAL_SWITCHOVER STRING "1" +-- Retrieval info: PRIVATE: INCLK0_FREQ_EDIT STRING "27.000" +-- Retrieval info: PRIVATE: INCLK0_FREQ_UNIT_COMBO STRING "MHz" +-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT STRING "100.000" +-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_COMBO STRING "MHz" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: INT_FEEDBACK__MODE_RADIO STRING "1" +-- Retrieval info: PRIVATE: LOCKED_OUTPUT_CHECK STRING "1" +-- Retrieval info: PRIVATE: LONG_SCAN_RADIO STRING "1" +-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE STRING "Not Available" +-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE_DIRTY NUMERIC "0" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT0 STRING "deg" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT1 STRING "deg" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT2 STRING "ps" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT3 STRING "ps" +-- Retrieval info: PRIVATE: MIG_DEVICE_SPEED_GRADE STRING "Any" +-- Retrieval info: PRIVATE: MIRROR_CLK0 STRING "0" +-- Retrieval info: PRIVATE: MIRROR_CLK1 STRING "0" +-- Retrieval info: PRIVATE: MIRROR_CLK2 STRING "0" +-- Retrieval info: PRIVATE: MIRROR_CLK3 STRING "0" +-- Retrieval info: PRIVATE: MULT_FACTOR0 NUMERIC "40" +-- Retrieval info: PRIVATE: MULT_FACTOR1 NUMERIC "40" +-- Retrieval info: PRIVATE: MULT_FACTOR2 NUMERIC "8" +-- Retrieval info: PRIVATE: MULT_FACTOR3 NUMERIC "1" +-- Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "1" +-- Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "40.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ1 STRING "25.26315800" +-- Retrieval info: PRIVATE: OUTPUT_FREQ2 STRING "72.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ3 STRING "0.89500000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE0 STRING "0" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE1 STRING "0" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE2 STRING "0" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE3 STRING "1" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT0 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT1 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT2 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT3 STRING "MHz" +-- Retrieval info: PRIVATE: PHASE_RECONFIG_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: PHASE_RECONFIG_INPUTS_CHECK STRING "0" +-- Retrieval info: PRIVATE: PHASE_SHIFT0 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT1 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT2 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT3 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT_STEP_ENABLED_CHECK STRING "0" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT0 STRING "deg" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT1 STRING "deg" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT2 STRING "ps" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT3 STRING "ps" +-- Retrieval info: PRIVATE: PLL_ADVANCED_PARAM_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_ARESET_CHECK STRING "1" +-- Retrieval info: PRIVATE: PLL_AUTOPLL_CHECK NUMERIC "1" +-- Retrieval info: PRIVATE: PLL_ENHPLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_FASTPLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_FBMIMIC_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_LVDS_PLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_PFDENA_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_TARGET_HARCOPY_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PRIMARY_CLK_COMBO STRING "inclk0" +-- Retrieval info: PRIVATE: RECONFIG_FILE STRING "pll_mist.mif" +-- Retrieval info: PRIVATE: SACN_INPUTS_CHECK STRING "0" +-- Retrieval info: PRIVATE: SCAN_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: SELF_RESET_LOCK_LOSS STRING "0" +-- Retrieval info: PRIVATE: SHORT_SCAN_RADIO STRING "0" +-- Retrieval info: PRIVATE: SPREAD_FEATURE_ENABLED STRING "0" +-- Retrieval info: PRIVATE: SPREAD_FREQ STRING "50.000" +-- Retrieval info: PRIVATE: SPREAD_FREQ_UNIT STRING "KHz" +-- Retrieval info: PRIVATE: SPREAD_PERCENT STRING "0.500" +-- Retrieval info: PRIVATE: SPREAD_USE STRING "0" +-- Retrieval info: PRIVATE: SRC_SYNCH_COMP_RADIO STRING "0" +-- Retrieval info: PRIVATE: STICKY_CLK0 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK1 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK2 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK3 STRING "1" +-- Retrieval info: PRIVATE: SWITCHOVER_COUNT_EDIT NUMERIC "1" +-- Retrieval info: PRIVATE: SWITCHOVER_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: USE_CLK0 STRING "1" +-- Retrieval info: PRIVATE: USE_CLK1 STRING "1" +-- Retrieval info: PRIVATE: USE_CLK2 STRING "1" +-- Retrieval info: PRIVATE: USE_CLK3 STRING "1" +-- Retrieval info: PRIVATE: USE_CLKENA0 STRING "0" +-- Retrieval info: PRIVATE: USE_CLKENA1 STRING "0" +-- Retrieval info: PRIVATE: USE_CLKENA2 STRING "0" +-- Retrieval info: PRIVATE: USE_CLKENA3 STRING "0" +-- Retrieval info: PRIVATE: USE_MIL_SPEED_GRADE NUMERIC "0" +-- Retrieval info: PRIVATE: ZERO_DELAY_RADIO STRING "0" +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: CONSTANT: BANDWIDTH_TYPE STRING "AUTO" +-- Retrieval info: CONSTANT: CLK0_DIVIDE_BY NUMERIC "27" +-- Retrieval info: CONSTANT: CLK0_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK0_MULTIPLY_BY NUMERIC "40" +-- Retrieval info: CONSTANT: CLK0_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: CLK1_DIVIDE_BY NUMERIC "43" +-- Retrieval info: CONSTANT: CLK1_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK1_MULTIPLY_BY NUMERIC "40" +-- Retrieval info: CONSTANT: CLK1_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: CLK2_DIVIDE_BY NUMERIC "3" +-- Retrieval info: CONSTANT: CLK2_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK2_MULTIPLY_BY NUMERIC "8" +-- Retrieval info: CONSTANT: CLK2_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: CLK3_DIVIDE_BY NUMERIC "5400" +-- Retrieval info: CONSTANT: CLK3_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK3_MULTIPLY_BY NUMERIC "179" +-- Retrieval info: CONSTANT: CLK3_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: COMPENSATE_CLOCK STRING "CLK0" +-- Retrieval info: CONSTANT: INCLK0_INPUT_FREQUENCY NUMERIC "37037" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altpll" +-- Retrieval info: CONSTANT: OPERATION_MODE STRING "NORMAL" +-- Retrieval info: CONSTANT: PLL_TYPE STRING "AUTO" +-- Retrieval info: CONSTANT: PORT_ACTIVECLOCK STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_ARESET STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_CLKBAD0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKBAD1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKLOSS STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKSWITCH STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CONFIGUPDATE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_FBIN STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_INCLK0 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_INCLK1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_LOCKED STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_PFDENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASECOUNTERSELECT STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASEDONE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASESTEP STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASEUPDOWN STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PLLENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANACLR STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANCLK STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANCLKENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDATA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDATAOUT STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDONE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANREAD STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANWRITE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk0 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk1 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk2 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk3 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk4 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk5 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena4 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena5 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: SELF_RESET_ON_LOSS_LOCK STRING "OFF" +-- Retrieval info: CONSTANT: WIDTH_CLOCK NUMERIC "5" +-- Retrieval info: USED_PORT: @clk 0 0 5 0 OUTPUT_CLK_EXT VCC "@clk[4..0]" +-- Retrieval info: USED_PORT: @inclk 0 0 2 0 INPUT_CLK_EXT VCC "@inclk[1..0]" +-- Retrieval info: USED_PORT: areset 0 0 0 0 INPUT GND "areset" +-- Retrieval info: USED_PORT: c0 0 0 0 0 OUTPUT_CLK_EXT VCC "c0" +-- Retrieval info: USED_PORT: c1 0 0 0 0 OUTPUT_CLK_EXT VCC "c1" +-- Retrieval info: USED_PORT: c2 0 0 0 0 OUTPUT_CLK_EXT VCC "c2" +-- Retrieval info: USED_PORT: c3 0 0 0 0 OUTPUT_CLK_EXT VCC "c3" +-- Retrieval info: USED_PORT: inclk0 0 0 0 0 INPUT_CLK_EXT GND "inclk0" +-- Retrieval info: USED_PORT: locked 0 0 0 0 OUTPUT GND "locked" +-- Retrieval info: CONNECT: @areset 0 0 0 0 areset 0 0 0 0 +-- Retrieval info: CONNECT: @inclk 0 0 1 1 GND 0 0 0 0 +-- Retrieval info: CONNECT: @inclk 0 0 1 0 inclk0 0 0 0 0 +-- Retrieval info: CONNECT: c0 0 0 0 0 @clk 0 0 1 0 +-- Retrieval info: CONNECT: c1 0 0 0 0 @clk 0 0 1 1 +-- Retrieval info: CONNECT: c2 0 0 0 0 @clk 0 0 1 2 +-- Retrieval info: CONNECT: c3 0 0 0 0 @clk 0 0 1 3 +-- Retrieval info: CONNECT: locked 0 0 0 0 @locked 0 0 0 0 +-- Retrieval info: GEN_FILE: TYPE_NORMAL pll_mist.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL pll_mist.ppf TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL pll_mist.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL pll_mist.cmp FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL pll_mist.bsf FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL pll_mist_inst.vhd FALSE +-- Retrieval info: LIB_FILE: altera_mf +-- Retrieval info: CBX_MODULE_PREFIX: ON diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/Roms.txt b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/Roms.txt new file mode 100644 index 00000000..c6db1e07 --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/Roms.txt @@ -0,0 +1,37 @@ +ROM_START( ldrun ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "lr-a-4e", 0x0000, 0x2000, CRC(5d7e2a4d) SHA1(fe8aeff360f6c3a8606d67a8b95148c3c2ef7267) ) + ROM_LOAD( "lr-a-4d", 0x2000, 0x2000, CRC(96f20473) SHA1(e400c43f3f32e12f68ca204c60bcebdb2b3da55d) ) + ROM_LOAD( "lr-a-4b", 0x4000, 0x2000, CRC(b041c4a9) SHA1(77768b03ea2497e25c3e47b68a0eb2fe3e9aea35) ) + ROM_LOAD( "lr-a-4a", 0x6000, 0x2000, CRC(645e42aa) SHA1(c806ffce7ece418bad86854c987f78c70c13e492) ) + + ROM_REGION( 0x10000, "irem_audio:iremsound", 0 ) /* 64k for the audio CPU (6803) */ + ROM_LOAD( "lr-a-3f", 0xc000, 0x2000, CRC(7a96accd) SHA1(e94815dbfaabbb562df8f3298060aa6bd7825904) ) + ROM_LOAD( "lr-a-3h", 0xe000, 0x2000, CRC(3f7f3939) SHA1(7ee25a21e74995bfb36ac11b45d384b33a6d8515) ) + + ROM_REGION( 0x6000, "gfx1", 0 ) + ROM_LOAD( "lr-e-2d", 0x0000, 0x2000, CRC(24f9b58d) SHA1(e33224b910d37aaa85713b954c8dd50996245a8c) ) /* characters */ + ROM_LOAD( "lr-e-2j", 0x2000, 0x2000, CRC(43175e08) SHA1(9dbafb27d46cf7df35f343a8753e8d91ea706993) ) + ROM_LOAD( "lr-e-2f", 0x4000, 0x2000, CRC(e0317124) SHA1(b766bd21e2da1673d2054148f62d61c33c95d38e) ) + + ROM_REGION( 0x6000, "gfx2", 0 ) + ROM_LOAD( "lr-b-4k", 0x0000, 0x2000, CRC(8141403e) SHA1(65fa6bc872fb07c71aacbbcc35cee766b2877896) ) /* sprites */ + ROM_LOAD( "lr-b-3n", 0x2000, 0x2000, CRC(55154154) SHA1(35304676e1ab55adccdabdc766a4e0e0901d3cd0) ) + ROM_LOAD( "lr-b-4c", 0x4000, 0x2000, CRC(924e34d0) SHA1(6a841419797a129235fc7d0405a5be55e8d703da) ) + + ROM_REGION( 0x20, "spr_height_prom", 0 ) + ROM_LOAD( "lr-b-5p", 0x00, 0x20, CRC(e01f69e2) SHA1(0d00ef348025ea4a9c274a7e3dbb006217d8449d) ) /* sprite height, one entry per 32 */ + + ROM_REGION( 0x300, "spr_color_proms", 0 ) + ROM_LOAD( "lr-b-1m", 0x0000, 0x0100, CRC(4bae1c25) SHA1(17a9e2567d9d648dca69510bb201f8af0738b068) ) /* sprite palette red component */ + ROM_LOAD( "lr-b-1n", 0x0100, 0x0100, CRC(9cd3db94) SHA1(bff95965f946df0e4af1f99db5b2468bf1d4403f) ) /* sprite palette green component */ + ROM_LOAD( "lr-b-1l", 0x0200, 0x0100, CRC(08d8cf9a) SHA1(a46213e0dc04e44b0544401eb341fd49eef331dd) ) /* sprite palette blue component */ + + ROM_REGION( 0x300, "chr_color_proms", 0 ) + ROM_LOAD( "lr-e-3m", 0x0000, 0x0100, CRC(53040416) SHA1(2c6915164d1c31afc60a21b557abdf023d5b3f46) ) /* character palette red component */ + ROM_LOAD( "lr-e-3l", 0x0100, 0x0100, CRC(67786037) SHA1(cd40dfd94295afe57139733752643cf48b8566b1) ) /* character palette green component */ + ROM_LOAD( "lr-e-3n", 0x0200, 0x0100, CRC(5b716837) SHA1(e3ea250891fec43a97e92ac1c3a4fbb5ee2d4a4d) ) /* character palette blue component */ + + ROM_REGION( 0x100, "timing", 0 ) + ROM_LOAD( "lr-b-6f", 0x000, 0x100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */ +ROM_END \ No newline at end of file diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/battroad.zip b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/battroad.zip new file mode 100644 index 00000000..297a78ea Binary files /dev/null and b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/battroad.zip differ diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/kungfum.zip b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/kungfum.zip new file mode 100644 index 00000000..278f6ac1 Binary files /dev/null and b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/kungfum.zip differ diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun.zip b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun.zip new file mode 100644 index 00000000..3c8e675c Binary files /dev/null and b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun.zip differ diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-a-3f b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-a-3f new file mode 100644 index 00000000..8f5b8c12 Binary files /dev/null and b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-a-3f differ diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-a-3h b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-a-3h new file mode 100644 index 00000000..b6f02296 Binary files /dev/null and b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-a-3h differ diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-a-4a b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-a-4a new file mode 100644 index 00000000..a6281115 Binary files /dev/null and b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-a-4a differ diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-a-4b b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-a-4b new file mode 100644 index 00000000..8ae61d43 Binary files /dev/null and b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-a-4b differ diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-a-4d b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-a-4d new file mode 100644 index 00000000..565da24b Binary files /dev/null and b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-a-4d differ diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-a-4e b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-a-4e new file mode 100644 index 00000000..735ef31f Binary files /dev/null and b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-a-4e differ diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-b-1l b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-b-1l new file mode 100644 index 00000000..30492333 Binary files /dev/null and b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-b-1l differ diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-b-1m b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-b-1m new file mode 100644 index 00000000..413cad4d Binary files /dev/null and b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-b-1m differ diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-b-1n b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-b-1n new file mode 100644 index 00000000..23910f5a Binary files /dev/null and b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-b-1n differ diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-b-3n b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-b-3n new file mode 100644 index 00000000..7fecdcdb Binary files /dev/null and b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-b-3n differ diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-b-4c b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-b-4c new file mode 100644 index 00000000..cc99085a Binary files /dev/null and b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-b-4c differ diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-b-4k b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-b-4k new file mode 100644 index 00000000..dc4d1e4e Binary files /dev/null and b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-b-4k differ diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-b-5p b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-b-5p new file mode 100644 index 00000000..4b17cf43 Binary files /dev/null and b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-b-5p differ diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-b-6f b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-b-6f new file mode 100644 index 00000000..bc766564 --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-b-6f @@ -0,0 +1 @@ +   \ No newline at end of file diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-e-2d b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-e-2d new file mode 100644 index 00000000..df6b8a72 Binary files /dev/null and b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-e-2d differ diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-e-2f b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-e-2f new file mode 100644 index 00000000..e1a71a23 Binary files /dev/null and b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-e-2f differ diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-e-2j b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-e-2j new file mode 100644 index 00000000..1db58d19 Binary files /dev/null and b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-e-2j differ diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-e-3l b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-e-3l new file mode 100644 index 00000000..00fe489f Binary files /dev/null and b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-e-3l differ diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-e-3m b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-e-3m new file mode 100644 index 00000000..5ecfd4ae Binary files /dev/null and b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-e-3m differ diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-e-3n b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-e-3n new file mode 100644 index 00000000..3abc5d5e Binary files /dev/null and b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/lr-e-3n differ diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/make_proms.bat b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/make_proms.bat new file mode 100644 index 00000000..54526f8c --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/make_proms.bat @@ -0,0 +1,11 @@ +copy /b lr-a-4e + lr-a-4d + lr-a-4b + lr-a-4a prog.bin +make_vhdl_prom.exe prog.bin prog.vhd + +make_vhdl_prom.exe lr-b-5p rom_sprite_high_new.vhd + + +copy /b lr-a-3f + lr-a-3h snd.bin +make_vhdl_prom.exe snd.bin snd_prg.vhd + +copy /b prog.bin + snd.bin LDRUNNER.ROM +pause \ No newline at end of file diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/make_vhdl_prom.exe b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/make_vhdl_prom.exe new file mode 100644 index 00000000..1e5618bf Binary files /dev/null and b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/make_vhdl_prom.exe differ diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/prog.bin b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/prog.bin new file mode 100644 index 00000000..8382ba15 Binary files /dev/null and b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/prog.bin differ diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/prog.vhd b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/prog.vhd new file mode 100644 index 00000000..fb5ff9f0 --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/prog.vhd @@ -0,0 +1,2070 @@ +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(14 downto 0); + data : out std_logic_vector(7 downto 0) +); +end entity; + +architecture prom of prog is + type rom is array(0 to 32767) of std_logic_vector(7 downto 0); + signal rom_data: rom := ( + X"F3",X"31",X"00",X"E8",X"01",X"00",X"00",X"FD",X"21",X"00",X"00",X"10",X"FA",X"0D",X"20",X"F7", + X"ED",X"56",X"21",X"B3",X"E6",X"36",X"01",X"DB",X"04",X"CB",X"7F",X"CA",X"41",X"6F",X"35",X"CD", + X"7A",X"00",X"00",X"00",X"00",X"FB",X"C3",X"CF",X"25",X"CD",X"00",X"1D",X"CD",X"4C",X"04",X"CD", + X"2C",X"07",X"18",X"F5",X"C7",X"C7",X"C7",X"C7",X"08",X"D9",X"DD",X"E5",X"FD",X"E5",X"CD",X"28", + X"01",X"CD",X"A2",X"00",X"CD",X"68",X"31",X"3A",X"6A",X"E5",X"B7",X"C4",X"4B",X"2A",X"3A",X"9D", + X"E5",X"FE",X"02",X"CC",X"41",X"01",X"CD",X"90",X"01",X"FD",X"E1",X"DD",X"E1",X"D9",X"08",X"FB", + X"C9",X"C7",X"C7",X"C7",X"C7",X"C7",X"FB",X"ED",X"45",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"93",X"24",X"6C",X"DB",X"7A",X"FB",X"85",X"91",X"A3",X"80",X"AF",X"32",X"9D",X"E5",X"D3",X"01", + X"21",X"00",X"D0",X"36",X"00",X"54",X"5D",X"13",X"01",X"F0",X"17",X"ED",X"B0",X"CD",X"28",X"01", + X"CD",X"F4",X"08",X"CD",X"D6",X"08",X"CD",X"A6",X"6D",X"3E",X"00",X"D3",X"00",X"F6",X"80",X"D3", + X"00",X"C9",X"21",X"B5",X"E5",X"35",X"23",X"35",X"21",X"B5",X"E6",X"35",X"3A",X"B9",X"E5",X"B7", + X"20",X"04",X"DB",X"01",X"18",X"02",X"DB",X"02",X"2F",X"32",X"4D",X"E4",X"21",X"CF",X"E5",X"07", + X"CB",X"16",X"07",X"07",X"CB",X"16",X"3A",X"4D",X"E4",X"21",X"D0",X"E5",X"0F",X"CB",X"16",X"0F", + X"CB",X"16",X"DB",X"00",X"2F",X"21",X"AA",X"E5",X"1F",X"CB",X"16",X"1F",X"CB",X"16",X"DB",X"04", + X"CB",X"67",X"20",X"29",X"21",X"B4",X"E5",X"7E",X"B7",X"20",X"11",X"3A",X"AA",X"E5",X"E6",X"05", + X"FE",X"05",X"20",X"06",X"36",X"01",X"F1",X"C3",X"59",X"00",X"18",X"11",X"3A",X"AA",X"E5",X"E6", + X"0A",X"FE",X"0A",X"20",X"04",X"36",X"00",X"18",X"04",X"F1",X"C3",X"59",X"00",X"CD",X"23",X"09", + X"3A",X"AF",X"E5",X"B7",X"20",X"05",X"3E",X"02",X"32",X"B2",X"E5",X"3A",X"A7",X"E5",X"B7",X"C8", + X"3A",X"B2",X"E5",X"B7",X"C8",X"C3",X"A0",X"68",X"3A",X"B3",X"E6",X"B7",X"28",X"07",X"CD",X"39", + X"7C",X"F1",X"C3",X"59",X"00",X"01",X"00",X"01",X"11",X"00",X"C0",X"21",X"00",X"E3",X"ED",X"B0", + X"C9",X"CD",X"E6",X"03",X"CD",X"00",X"0B",X"CD",X"00",X"13",X"CD",X"00",X"24",X"C9",X"FD",X"E5", + X"3A",X"E9",X"E4",X"32",X"88",X"E5",X"FD",X"21",X"58",X"E4",X"11",X"18",X"00",X"DD",X"7E",X"06", + X"FD",X"BE",X"06",X"20",X"20",X"DD",X"7E",X"07",X"FD",X"96",X"07",X"30",X"02",X"ED",X"44",X"FE", + X"04",X"30",X"12",X"FD",X"7E",X"0D",X"B7",X"28",X"0C",X"FD",X"7E",X"08",X"FE",X"09",X"30",X"02", + X"0E",X"FF",X"FD",X"E1",X"C9",X"FD",X"19",X"21",X"88",X"E5",X"35",X"20",X"D0",X"FD",X"E1",X"C9", + X"3A",X"9D",X"E5",X"B7",X"C8",X"3A",X"6A",X"E5",X"B7",X"CC",X"03",X"32",X"DD",X"21",X"40",X"E4", + X"FD",X"21",X"B0",X"E3",X"3A",X"6A",X"E5",X"FE",X"02",X"20",X"04",X"FD",X"21",X"F0",X"E3",X"AF", + X"32",X"E8",X"E4",X"DD",X"4E",X"0A",X"3A",X"E8",X"E4",X"B7",X"28",X"17",X"DD",X"7E",X"0D",X"B7", + X"28",X"0E",X"DD",X"34",X"08",X"DD",X"7E",X"08",X"FE",X"18",X"38",X"04",X"DD",X"36",X"08",X"00", + X"CD",X"4E",X"01",X"79",X"FE",X"FF",X"20",X"0B",X"FD",X"36",X"04",X"00",X"FD",X"36",X"0C",X"00", + X"C3",X"11",X"03",X"06",X"00",X"2A",X"F6",X"E4",X"3A",X"E8",X"E4",X"B7",X"20",X"05",X"21",X"00", + X"00",X"18",X"19",X"57",X"3A",X"02",X"E5",X"B7",X"28",X"12",X"3A",X"E9",X"E4",X"BA",X"20",X"0C", + X"11",X"30",X"00",X"19",X"3A",X"CD",X"E5",X"FE",X"08",X"20",X"01",X"EB",X"09",X"22",X"F9",X"E4", + X"01",X"60",X"45",X"09",X"46",X"DD",X"6E",X"00",X"DD",X"7E",X"01",X"C6",X"04",X"67",X"29",X"29", + X"29",X"0E",X"00",X"CB",X"28",X"CB",X"19",X"DD",X"7E",X"0B",X"B7",X"20",X"04",X"ED",X"42",X"18", + X"01",X"09",X"29",X"FD",X"74",X"06",X"3E",X"00",X"17",X"FD",X"77",X"07",X"3A",X"F8",X"E4",X"4F", + X"DD",X"CB",X"17",X"66",X"28",X"01",X"0C",X"3A",X"E8",X"E4",X"B7",X"20",X"04",X"0E",X"03",X"18", + X"11",X"47",X"3A",X"02",X"E5",X"B7",X"28",X"0A",X"3A",X"E9",X"E4",X"B8",X"20",X"04",X"3A",X"6E", + X"E5",X"4F",X"CB",X"E1",X"FD",X"71",X"00",X"11",X"B0",X"43",X"2A",X"F9",X"E4",X"19",X"56",X"DD", + X"7E",X"0B",X"B7",X"20",X"04",X"3E",X"40",X"AA",X"57",X"7A",X"E6",X"C0",X"FD",X"77",X"05",X"2A", + X"F9",X"E4",X"7A",X"11",X"00",X"42",X"19",X"57",X"5E",X"D5",X"FD",X"73",X"04",X"11",X"C0",X"48", + X"2A",X"F9",X"E4",X"19",X"AF",X"57",X"5E",X"CB",X"7B",X"28",X"01",X"15",X"DD",X"6E",X"02",X"DD", + X"66",X"03",X"29",X"29",X"29",X"17",X"6C",X"67",X"19",X"EB",X"21",X"E9",X"00",X"B7",X"ED",X"52", + X"ED",X"5B",X"E3",X"E5",X"19",X"FD",X"75",X"02",X"FD",X"74",X"03",X"D1",X"CB",X"42",X"28",X"4D", + X"1C",X"FD",X"73",X"0C",X"FD",X"71",X"08",X"E5",X"01",X"70",X"4A",X"2A",X"F9",X"E4",X"09",X"7E", + X"06",X"00",X"ED",X"44",X"4F",X"CB",X"79",X"28",X"01",X"05",X"E1",X"09",X"FD",X"75",X"0A",X"FD", + X"74",X"0B",X"7A",X"E6",X"C0",X"FD",X"77",X"0D",X"01",X"10",X"47",X"2A",X"F9",X"E4",X"09",X"7E", + X"CB",X"72",X"28",X"02",X"ED",X"44",X"4F",X"06",X"00",X"CB",X"79",X"28",X"01",X"05",X"FD",X"66", + X"07",X"FD",X"6E",X"06",X"09",X"FD",X"75",X"0E",X"FD",X"74",X"0F",X"18",X"04",X"FD",X"36",X"0C", + X"00",X"11",X"F0",X"FF",X"FD",X"19",X"01",X"18",X"00",X"DD",X"09",X"21",X"E8",X"E4",X"34",X"3A", + X"E9",X"E4",X"BE",X"D2",X"B3",X"01",X"3A",X"6A",X"E5",X"FE",X"02",X"C8",X"FD",X"21",X"00",X"E3", + X"3A",X"17",X"E5",X"87",X"87",X"87",X"21",X"12",X"E5",X"86",X"ED",X"44",X"3C",X"4F",X"06",X"00", + X"2A",X"E3",X"E5",X"09",X"FD",X"75",X"02",X"FD",X"74",X"03",X"FD",X"36",X"00",X"12",X"3A",X"16", + X"E5",X"C6",X"04",X"87",X"87",X"87",X"6F",X"26",X"00",X"29",X"FD",X"75",X"06",X"FD",X"74",X"07", + X"3A",X"10",X"E5",X"FD",X"77",X"04",X"FD",X"21",X"08",X"E3",X"FD",X"36",X"04",X"00",X"FD",X"36", + X"0C",X"00",X"16",X"14",X"1E",X"02",X"DD",X"21",X"18",X"E5",X"DD",X"7E",X"01",X"FE",X"00",X"28", + X"3A",X"DD",X"7E",X"03",X"87",X"87",X"87",X"47",X"3E",X"F1",X"90",X"4F",X"06",X"00",X"2A",X"E3", + X"E5",X"09",X"FD",X"75",X"02",X"FD",X"74",X"03",X"DD",X"7E",X"02",X"C6",X"04",X"87",X"87",X"87", + X"6F",X"26",X"00",X"29",X"FD",X"75",X"06",X"FD",X"74",X"07",X"FD",X"36",X"00",X"12",X"DD",X"7E", + X"01",X"FD",X"77",X"04",X"01",X"08",X"00",X"FD",X"09",X"1D",X"C8",X"01",X"04",X"00",X"DD",X"09", + X"15",X"20",X"B7",X"21",X"9E",X"E5",X"06",X"00",X"7E",X"B7",X"28",X"12",X"35",X"20",X"0F",X"E5", + X"78",X"87",X"87",X"87",X"5F",X"16",X"00",X"21",X"C4",X"E3",X"19",X"36",X"00",X"E1",X"23",X"04", + X"78",X"FE",X"08",X"38",X"E3",X"C9",X"21",X"8A",X"E5",X"7E",X"23",X"B6",X"23",X"47",X"7E",X"E6", + X"F0",X"B0",X"20",X"0B",X"AF",X"77",X"3E",X"01",X"32",X"CE",X"E5",X"CD",X"03",X"32",X"C9",X"0E", + X"00",X"21",X"B1",X"E6",X"3A",X"8B",X"E5",X"BE",X"20",X"01",X"0C",X"ED",X"5B",X"E1",X"E5",X"21", + X"8D",X"E5",X"7E",X"93",X"27",X"77",X"2B",X"7E",X"9A",X"27",X"77",X"06",X"02",X"2B",X"7E",X"DE", + X"00",X"27",X"77",X"10",X"F8",X"CB",X"41",X"C8",X"3A",X"8B",X"E5",X"21",X"B1",X"E6",X"BE",X"C8", + X"7E",X"FE",X"15",X"20",X"04",X"3E",X"1C",X"18",X"0A",X"FE",X"10",X"20",X"04",X"3E",X"1D",X"18", + X"02",X"3E",X"1E",X"CD",X"42",X"31",X"7E",X"D6",X"05",X"27",X"77",X"C9",X"3A",X"FC",X"E4",X"B7", + X"C0",X"21",X"B6",X"E5",X"3A",X"04",X"E5",X"B7",X"20",X"02",X"36",X"FF",X"7E",X"FE",X"80",X"38", + X"02",X"36",X"18",X"7E",X"21",X"04",X"E5",X"FE",X"09",X"30",X"0D",X"7E",X"FE",X"01",X"28",X"06", + X"3E",X"01",X"77",X"CD",X"89",X"63",X"18",X"0B",X"7E",X"FE",X"02",X"28",X"06",X"3E",X"02",X"77", + X"CD",X"89",X"63",X"3A",X"41",X"E4",X"21",X"7B",X"E5",X"BE",X"20",X"0C",X"3A",X"43",X"E4",X"23", + X"BE",X"20",X"05",X"3E",X"01",X"32",X"AF",X"E6",X"3A",X"AF",X"E6",X"B7",X"C8",X"3A",X"46",X"E4", + X"FE",X"08",X"C0",X"AF",X"CD",X"89",X"63",X"F1",X"3E",X"00",X"32",X"9D",X"E5",X"3E",X"00",X"CD", + X"42",X"31",X"3E",X"23",X"CD",X"42",X"31",X"3E",X"54",X"CD",X"3E",X"30",X"CD",X"8D",X"32",X"3A", + X"00",X"E5",X"B7",X"20",X"47",X"21",X"21",X"D7",X"36",X"05",X"2B",X"36",X"00",X"11",X"22",X"D7", + X"01",X"3E",X"00",X"ED",X"B0",X"21",X"A1",X"D7",X"36",X"05",X"2B",X"36",X"00",X"11",X"A2",X"D7", + X"01",X"3E",X"00",X"ED",X"B0",X"21",X"21",X"D8",X"36",X"05",X"2B",X"36",X"00",X"11",X"22",X"D8", + X"01",X"3E",X"00",X"ED",X"B0",X"0E",X"47",X"21",X"A2",X"D7",X"11",X"F8",X"06",X"CD",X"2D",X"30", + X"3E",X"1F",X"CD",X"42",X"31",X"0E",X"02",X"CD",X"CF",X"2F",X"18",X"4C",X"3A",X"FF",X"E4",X"B7", + X"C2",X"64",X"05",X"21",X"25",X"D7",X"36",X"05",X"2B",X"36",X"00",X"11",X"26",X"D7",X"01",X"38", + X"00",X"ED",X"B0",X"21",X"A5",X"D7",X"36",X"05",X"2B",X"36",X"00",X"11",X"A6",X"D7",X"01",X"38", + X"00",X"ED",X"B0",X"21",X"25",X"D8",X"36",X"05",X"2B",X"36",X"00",X"11",X"26",X"D8",X"01",X"38", + X"00",X"ED",X"B0",X"0E",X"47",X"21",X"A6",X"D7",X"11",X"DC",X"06",X"CD",X"2D",X"30",X"3E",X"1F", + X"CD",X"42",X"31",X"0E",X"01",X"CD",X"CF",X"2F",X"CD",X"03",X"32",X"3A",X"00",X"E5",X"32",X"89", + X"E5",X"CD",X"89",X"06",X"21",X"6C",X"E5",X"3A",X"8B",X"E5",X"BE",X"38",X"57",X"CD",X"B9",X"32", + X"21",X"A3",X"D1",X"36",X"05",X"2B",X"36",X"00",X"11",X"A4",X"D1",X"01",X"34",X"00",X"ED",X"B0", + X"21",X"23",X"D2",X"36",X"05",X"2B",X"36",X"00",X"11",X"24",X"D2",X"01",X"34",X"00",X"ED",X"B0", + X"21",X"A3",X"D2",X"36",X"05",X"2B",X"36",X"00",X"11",X"A4",X"D2",X"01",X"34",X"00",X"ED",X"B0", + X"0E",X"47",X"21",X"24",X"D2",X"11",X"6F",X"06",X"CD",X"2D",X"30",X"2A",X"8B",X"E5",X"22",X"B6", + X"E6",X"3E",X"FF",X"32",X"B5",X"E6",X"3E",X"01",X"32",X"05",X"E5",X"CD",X"E4",X"05",X"2A",X"B6", + X"E6",X"22",X"8B",X"E5",X"CD",X"E4",X"05",X"21",X"8E",X"E5",X"4E",X"34",X"7E",X"FE",X"61",X"20", + X"02",X"36",X"49",X"79",X"CD",X"EC",X"31",X"B7",X"C2",X"00",X"5D",X"79",X"E6",X"07",X"CA",X"34", + X"28",X"C3",X"ED",X"26",X"3A",X"8F",X"E5",X"32",X"89",X"E5",X"3E",X"14",X"32",X"88",X"E5",X"2A", + X"8B",X"E5",X"7C",X"E6",X"F0",X"B5",X"28",X"32",X"21",X"8C",X"E5",X"7E",X"D6",X"10",X"27",X"77", + X"2B",X"7E",X"DE",X"00",X"27",X"77",X"01",X"10",X"00",X"CD",X"DB",X"2F",X"CD",X"03",X"32",X"21", + X"88",X"E5",X"35",X"20",X"DA",X"21",X"8F",X"E5",X"3A",X"89",X"E5",X"BE",X"20",X"05",X"3E",X"11", + X"CD",X"42",X"31",X"3E",X"04",X"CD",X"30",X"06",X"18",X"C0",X"3E",X"1C",X"CD",X"30",X"06",X"C9", + X"32",X"B5",X"E5",X"3A",X"05",X"E5",X"B7",X"28",X"2A",X"21",X"B5",X"E6",X"7E",X"FE",X"80",X"38", + X"02",X"36",X"28",X"7E",X"FE",X"14",X"30",X"12",X"21",X"2B",X"D1",X"36",X"05",X"2B",X"36",X"00", + X"11",X"2C",X"D1",X"01",X"02",X"00",X"ED",X"B0",X"18",X"09",X"21",X"2A",X"D1",X"11",X"6B",X"06", + X"CD",X"2D",X"30",X"3A",X"B5",X"E5",X"FE",X"00",X"20",X"C9",X"C9",X"06",X"58",X"32",X"00",X"42", + X"45",X"4C",X"4F",X"57",X"20",X"48",X"41",X"4C",X"46",X"20",X"54",X"49",X"4D",X"45",X"20",X"43", + X"4C",X"45",X"41",X"52",X"41",X"4E",X"43",X"45",X"00",X"3E",X"09",X"32",X"88",X"E5",X"21",X"B9", + X"D8",X"36",X"05",X"2B",X"36",X"00",X"11",X"BA",X"D8",X"01",X"0C",X"00",X"ED",X"B0",X"21",X"39", + X"D9",X"36",X"05",X"2B",X"36",X"00",X"11",X"3A",X"D9",X"01",X"0C",X"00",X"ED",X"B0",X"0E",X"47", + X"11",X"26",X"07",X"3A",X"88",X"E5",X"1F",X"30",X"0C",X"11",X"18",X"07",X"3A",X"89",X"E5",X"B7", + X"20",X"03",X"11",X"1F",X"07",X"21",X"BA",X"D8",X"CD",X"2D",X"30",X"3E",X"0E",X"CD",X"3E",X"30", + X"21",X"88",X"E5",X"35",X"20",X"D8",X"3E",X"70",X"CD",X"3E",X"30",X"C9",X"59",X"4F",X"55",X"20", + X"48",X"41",X"56",X"45",X"20",X"4B",X"49",X"4C",X"4C",X"45",X"44",X"20",X"4E",X"4F",X"20",X"45", + X"4E",X"45",X"4D",X"49",X"45",X"53",X"2E",X"00",X"59",X"4F",X"55",X"20",X"4D",X"41",X"44",X"45", + X"20",X"49",X"54",X"20",X"57",X"49",X"54",X"48",X"4F",X"55",X"54",X"20",X"45",X"4E",X"54",X"52", + X"41",X"50",X"50",X"49",X"4E",X"47",X"2E",X"00",X"04",X"31",X"30",X"30",X"30",X"30",X"00",X"04", + X"32",X"30",X"30",X"30",X"30",X"00",X"20",X"20",X"20",X"20",X"20",X"00",X"CD",X"CE",X"07",X"CD", + X"1D",X"08",X"CD",X"AA",X"09",X"3A",X"50",X"E4",X"B7",X"C0",X"3A",X"A7",X"E5",X"B7",X"28",X"0E", + X"3E",X"00",X"32",X"9D",X"E5",X"3E",X"38",X"CD",X"3E",X"30",X"F1",X"C3",X"85",X"68",X"DB",X"04", + X"CB",X"77",X"C8",X"3E",X"0C",X"32",X"4A",X"E4",X"3E",X"01",X"32",X"9D",X"E5",X"3E",X"00",X"CD", + X"42",X"31",X"3E",X"06",X"CD",X"42",X"31",X"3E",X"38",X"CD",X"3E",X"30",X"3E",X"00",X"32",X"9D", + X"E5",X"F1",X"21",X"8F",X"E5",X"35",X"7E",X"FE",X"FF",X"20",X"2A",X"21",X"34",X"D7",X"11",X"A8", + X"07",X"CD",X"2D",X"30",X"21",X"B4",X"D7",X"11",X"B5",X"07",X"CD",X"2D",X"30",X"21",X"34",X"D8", + X"11",X"A8",X"07",X"CD",X"2D",X"30",X"3E",X"21",X"CD",X"42",X"31",X"3E",X"8C",X"CD",X"3E",X"30", + X"3E",X"02",X"32",X"90",X"E5",X"C3",X"E3",X"6A",X"06",X"20",X"20",X"20",X"20",X"20",X"20",X"20", + X"20",X"20",X"20",X"20",X"00",X"06",X"20",X"47",X"41",X"4D",X"45",X"20",X"4F",X"56",X"45",X"52", + X"20",X"00",X"20",X"54",X"49",X"4D",X"45",X"20",X"4F",X"56",X"45",X"52",X"20",X"00",X"3A",X"CE", + X"E5",X"B7",X"C8",X"DB",X"04",X"CB",X"77",X"C8",X"F1",X"AF",X"32",X"CE",X"E5",X"32",X"9D",X"E5", + X"3E",X"00",X"CD",X"42",X"31",X"3E",X"25",X"CD",X"42",X"31",X"21",X"35",X"D7",X"36",X"05",X"2B", + X"36",X"00",X"11",X"36",X"D7",X"01",X"14",X"00",X"ED",X"B0",X"0E",X"47",X"21",X"B4",X"D7",X"11", + X"C2",X"07",X"CD",X"2D",X"30",X"21",X"35",X"D8",X"36",X"05",X"2B",X"36",X"00",X"11",X"36",X"D8", + X"01",X"14",X"00",X"ED",X"B0",X"3E",X"8C",X"CD",X"3E",X"30",X"C3",X"67",X"07",X"2A",X"55",X"E4", + X"01",X"C0",X"FE",X"09",X"D0",X"AF",X"32",X"50",X"E4",X"32",X"9D",X"E5",X"CD",X"8D",X"32",X"21", + X"29",X"D7",X"36",X"05",X"2B",X"36",X"00",X"11",X"2A",X"D7",X"01",X"2A",X"00",X"ED",X"B0",X"21", + X"A9",X"D7",X"36",X"05",X"2B",X"36",X"00",X"11",X"AA",X"D7",X"01",X"2A",X"00",X"ED",X"B0",X"21", + X"29",X"D8",X"36",X"05",X"2B",X"36",X"00",X"11",X"2A",X"D8",X"01",X"2A",X"00",X"ED",X"B0",X"3E", + X"02",X"32",X"89",X"E5",X"3E",X"10",X"CD",X"42",X"31",X"3E",X"04",X"32",X"88",X"E5",X"3A",X"88", + X"E5",X"1F",X"30",X"12",X"21",X"AB",X"D7",X"36",X"05",X"2B",X"36",X"00",X"11",X"AC",X"D7",X"01", + X"28",X"00",X"ED",X"B0",X"18",X"0B",X"0E",X"47",X"21",X"AA",X"D7",X"11",X"C0",X"08",X"CD",X"2D", + X"30",X"3E",X"15",X"CD",X"3E",X"30",X"21",X"88",X"E5",X"35",X"20",X"D2",X"21",X"89",X"E5",X"35", + X"20",X"C2",X"3E",X"10",X"CD",X"42",X"31",X"0E",X"47",X"21",X"AA",X"D7",X"11",X"C0",X"08",X"CD", + X"2D",X"30",X"3E",X"54",X"CD",X"3E",X"30",X"3A",X"8F",X"E5",X"B7",X"C0",X"CD",X"B9",X"32",X"C9", + X"59",X"4F",X"55",X"20",X"41",X"52",X"45",X"20",X"42",X"4F",X"55",X"4E",X"44",X"20",X"54",X"4F", + X"20",X"44",X"49",X"45",X"2E",X"00",X"DB",X"03",X"2F",X"47",X"E6",X"03",X"32",X"DF",X"E5",X"78", + X"1F",X"1F",X"E6",X"03",X"4F",X"06",X"00",X"21",X"F0",X"08",X"09",X"7E",X"32",X"E0",X"E5",X"C9", + X"02",X"01",X"03",X"04",X"DB",X"03",X"2F",X"1F",X"1F",X"1F",X"1F",X"47",X"21",X"AF",X"E5",X"DB", + X"04",X"CB",X"57",X"20",X"11",X"78",X"3C",X"E6",X"03",X"77",X"23",X"78",X"1F",X"1F",X"E6",X"03", + X"FE",X"02",X"DE",X"F5",X"77",X"C9",X"78",X"3C",X"E6",X"0F",X"CB",X"5F",X"28",X"01",X"3C",X"77", + X"23",X"77",X"C9",X"21",X"AD",X"E5",X"11",X"AF",X"E5",X"DB",X"00",X"CD",X"58",X"09",X"21",X"AE", + X"E5",X"13",X"DB",X"02",X"1F",X"F6",X"04",X"CD",X"58",X"09",X"3A",X"B9",X"E5",X"47",X"21",X"AB", + X"E5",X"7E",X"B7",X"28",X"05",X"35",X"3E",X"02",X"B0",X"47",X"23",X"7E",X"B7",X"28",X"05",X"35", + X"3E",X"04",X"B0",X"47",X"78",X"D3",X"01",X"C9",X"1F",X"1F",X"1F",X"CB",X"16",X"1F",X"CB",X"16", + X"7E",X"E6",X"55",X"FE",X"50",X"20",X"2B",X"2B",X"2B",X"36",X"0C",X"3A",X"B2",X"E6",X"B7",X"20", + X"08",X"3E",X"12",X"D3",X"00",X"F6",X"80",X"D3",X"00",X"1A",X"FE",X"01",X"28",X"12",X"FE",X"08", + X"30",X"0C",X"21",X"B1",X"E5",X"34",X"BE",X"C0",X"AF",X"77",X"3E",X"01",X"18",X"02",X"D6",X"08", + X"18",X"0D",X"7E",X"E6",X"AA",X"C0",X"21",X"B3",X"E5",X"34",X"7E",X"E6",X"0F",X"C0",X"3C",X"21", + X"B2",X"E5",X"86",X"27",X"30",X"02",X"3E",X"99",X"77",X"C9",X"DB",X"04",X"CB",X"6F",X"C0",X"CB", + X"67",X"C8",X"DB",X"00",X"CB",X"47",X"C0",X"F1",X"F1",X"AF",X"32",X"9D",X"E5",X"3E",X"00",X"CD", + X"42",X"31",X"21",X"10",X"D0",X"36",X"00",X"54",X"5D",X"13",X"01",X"EF",X"13",X"ED",X"B0",X"21", + X"22",X"D7",X"11",X"29",X"0A",X"CD",X"2D",X"30",X"21",X"1A",X"D9",X"11",X"48",X"0A",X"CD",X"2D", + X"30",X"11",X"00",X"00",X"0E",X"04",X"3A",X"8E",X"E5",X"21",X"60",X"D9",X"CD",X"48",X"30",X"21", + X"8E",X"E5",X"DB",X"01",X"CB",X"7F",X"28",X"0E",X"CB",X"42",X"28",X"08",X"16",X"00",X"7E",X"FE", + X"02",X"38",X"01",X"35",X"18",X"02",X"16",X"01",X"DB",X"01",X"CB",X"6F",X"28",X"09",X"CB",X"43", + X"28",X"03",X"1E",X"00",X"34",X"18",X"02",X"1E",X"01",X"3E",X"01",X"CD",X"3E",X"30",X"DB",X"00", + X"CB",X"4F",X"20",X"C0",X"7E",X"3D",X"C3",X"D4",X"05",X"02",X"53",X"45",X"4C",X"45",X"43",X"54", + X"20",X"42",X"55",X"54",X"54",X"4F",X"4E",X"20",X"54",X"4F",X"20",X"43",X"48",X"41",X"4E",X"47", + X"45",X"20",X"52",X"4F",X"55",X"4E",X"44",X"00",X"02",X"44",X"49",X"47",X"4C",X"45",X"46",X"54", + X"2D",X"2D",X"44",X"4F",X"57",X"4E",X"20",X"20",X"44",X"49",X"47",X"52",X"49",X"47",X"48",X"54", + X"2D",X"2D",X"55",X"50",X"20",X"20",X"4C",X"45",X"56",X"45",X"4C",X"2D",X"30",X"30",X"00",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"3A",X"A7",X"E5",X"B7",X"28",X"0E",X"CD",X"12",X"5C",X"32",X"4D",X"E4",X"FE",X"FF",X"20",X"04", + X"AF",X"32",X"50",X"E4",X"2A",X"44",X"E4",X"7D",X"6C",X"2C",X"2C",X"CD",X"D5",X"62",X"7E",X"2A", + X"55",X"E4",X"FE",X"0E",X"38",X"03",X"23",X"18",X"03",X"21",X"00",X"00",X"22",X"55",X"E4",X"DD", + X"21",X"40",X"E4",X"21",X"08",X"E5",X"7E",X"B7",X"28",X"01",X"35",X"21",X"06",X"E5",X"7E",X"B7", + X"28",X"18",X"35",X"3A",X"0A",X"E5",X"DD",X"BE",X"0B",X"20",X"0F",X"21",X"0B",X"E5",X"3A",X"44", + X"E4",X"BE",X"28",X"06",X"77",X"3E",X"0C",X"CD",X"73",X"30",X"3A",X"4E",X"E4",X"B7",X"FA",X"B4", + X"0F",X"C2",X"43",X"10",X"21",X"4C",X"E4",X"7E",X"B7",X"28",X"11",X"35",X"C0",X"36",X"08",X"21", + X"4A",X"E4",X"34",X"7E",X"E6",X"FC",X"FE",X"14",X"C8",X"36",X"14",X"C9",X"3A",X"54",X"E4",X"FE", + X"02",X"20",X"0D",X"06",X"1C",X"CD",X"9F",X"10",X"D0",X"AF",X"32",X"54",X"E4",X"CD",X"37",X"12", + X"3A",X"54",X"E4",X"FE",X"01",X"20",X"0E",X"CD",X"0E",X"12",X"06",X"20",X"CD",X"9F",X"10",X"D0", + X"3E",X"03",X"32",X"54",X"E4",X"AF",X"32",X"51",X"E4",X"3A",X"44",X"E4",X"2A",X"45",X"E4",X"CD", + X"00",X"2D",X"06",X"F8",X"0E",X"10",X"CD",X"8D",X"2E",X"CA",X"9F",X"0C",X"AF",X"32",X"87",X"E5", + X"32",X"54",X"E4",X"7E",X"E6",X"FC",X"FE",X"18",X"20",X"13",X"3E",X"01",X"32",X"87",X"E5",X"3A", + X"42",X"E4",X"B7",X"20",X"08",X"3E",X"01",X"32",X"51",X"E4",X"CA",X"9F",X"0C",X"3A",X"45",X"E4", + X"FE",X"1D",X"30",X"0E",X"1A",X"E6",X"F8",X"FE",X"10",X"28",X"07",X"1A",X"E6",X"F8",X"FE",X"08", + X"20",X"0D",X"3E",X"01",X"32",X"87",X"E5",X"3A",X"42",X"E4",X"FE",X"80",X"DA",X"9F",X"0C",X"2A", + X"47",X"E4",X"3A",X"46",X"E4",X"CD",X"15",X"2D",X"DA",X"B1",X"0C",X"21",X"4F",X"E4",X"7E",X"B7", + X"20",X"06",X"34",X"3E",X"15",X"CD",X"42",X"31",X"3E",X"0C",X"32",X"4A",X"E4",X"21",X"09",X"E5", + X"7E",X"B7",X"28",X"04",X"35",X"C3",X"B1",X"0C",X"CD",X"0E",X"12",X"2A",X"42",X"E4",X"7C",X"11", + X"1E",X"00",X"19",X"22",X"42",X"E4",X"BC",X"28",X"0A",X"3A",X"87",X"E5",X"B7",X"28",X"04",X"AF", + X"32",X"42",X"E4",X"2A",X"42",X"E4",X"29",X"7C",X"3C",X"1F",X"32",X"45",X"E4",X"29",X"29",X"7C", + X"32",X"46",X"E4",X"CD",X"88",X"11",X"3A",X"42",X"E4",X"B7",X"C0",X"3A",X"44",X"E4",X"2A",X"45", + X"E4",X"CD",X"00",X"2D",X"3A",X"45",X"E4",X"FE",X"1D",X"30",X"06",X"1A",X"E6",X"F8",X"FE",X"08", + X"C0",X"15",X"0E",X"04",X"CD",X"A9",X"2E",X"C0",X"1D",X"1D",X"1D",X"1D",X"3A",X"44",X"E4",X"B7", + X"28",X"06",X"1A",X"E6",X"F8",X"FE",X"08",X"C0",X"3A",X"44",X"E4",X"FE",X"17",X"30",X"0A",X"7B", + X"C6",X"08",X"5F",X"1A",X"E6",X"F8",X"FE",X"08",X"C0",X"3E",X"08",X"32",X"4C",X"E4",X"C9",X"21", + X"4F",X"E4",X"7E",X"B7",X"28",X"07",X"36",X"00",X"3E",X"16",X"CD",X"42",X"31",X"AF",X"32",X"52", + X"E4",X"3A",X"4D",X"E4",X"CB",X"7F",X"C2",X"42",X"0F",X"CB",X"6F",X"C2",X"CF",X"0F",X"CB",X"5F", + X"28",X"06",X"CD",X"4C",X"0E",X"D8",X"18",X"08",X"CB",X"57",X"28",X"04",X"CD",X"B7",X"0E",X"D8", + X"3A",X"4D",X"E4",X"CB",X"47",X"C2",X"5E",X"0D",X"CB",X"4F",X"C2",X"21",X"0D",X"3A",X"44",X"E4", + X"2A",X"45",X"E4",X"CD",X"00",X"2D",X"1A",X"E6",X"F8",X"FE",X"08",X"20",X"0B",X"3E",X"12",X"32", + X"4A",X"E4",X"3E",X"01",X"32",X"49",X"E4",X"C9",X"06",X"F8",X"0E",X"10",X"CD",X"8D",X"2E",X"20", + X"0D",X"15",X"1A",X"E6",X"F8",X"FE",X"10",X"C0",X"3E",X"08",X"32",X"4A",X"E4",X"C9",X"7E",X"E6", + X"FC",X"FE",X"18",X"20",X"06",X"3E",X"07",X"32",X"4A",X"E4",X"C9",X"3E",X"12",X"32",X"4A",X"E4", + X"C9",X"AF",X"32",X"87",X"E5",X"3A",X"44",X"E4",X"2A",X"45",X"E4",X"CD",X"00",X"2D",X"3A",X"44", + X"E4",X"B7",X"28",X"0E",X"15",X"1B",X"1B",X"1B",X"1B",X"06",X"F8",X"0E",X"08",X"CD",X"71",X"2E", + X"20",X"0C",X"3E",X"01",X"32",X"87",X"E5",X"3A",X"40",X"E4",X"3D",X"FE",X"7F",X"D0",X"3E",X"01", + X"32",X"4B",X"E4",X"CD",X"37",X"12",X"CD",X"D4",X"0D",X"11",X"EC",X"FF",X"18",X"3D",X"AF",X"32", + X"87",X"E5",X"3A",X"44",X"E4",X"2A",X"45",X"E4",X"CD",X"00",X"2D",X"3A",X"44",X"E4",X"FE",X"17", + X"30",X"0E",X"15",X"13",X"13",X"13",X"13",X"06",X"F8",X"0E",X"08",X"CD",X"71",X"2E",X"20",X"0E", + X"3E",X"01",X"32",X"87",X"E5",X"3A",X"40",X"E4",X"FE",X"80",X"30",X"02",X"B7",X"C9",X"AF",X"32", + X"4B",X"E4",X"CD",X"37",X"12",X"CD",X"D4",X"0D",X"11",X"14",X"00",X"2A",X"40",X"E4",X"7C",X"19", + X"22",X"40",X"E4",X"BC",X"28",X"14",X"3A",X"87",X"E5",X"B7",X"28",X"0E",X"2A",X"40",X"E4",X"7D", + X"FE",X"80",X"38",X"01",X"24",X"2E",X"00",X"22",X"40",X"E4",X"2A",X"40",X"E4",X"29",X"7C",X"3C", + X"1F",X"32",X"44",X"E4",X"29",X"29",X"7C",X"32",X"47",X"E4",X"CD",X"88",X"11",X"06",X"00",X"CD", + X"F1",X"10",X"37",X"C9",X"3A",X"51",X"E4",X"B7",X"C8",X"F1",X"3A",X"4A",X"E4",X"E6",X"FC",X"21", + X"49",X"E4",X"FE",X"2C",X"28",X"02",X"36",X"01",X"35",X"C0",X"21",X"4A",X"E4",X"34",X"7E",X"E6", + X"FC",X"FE",X"2C",X"28",X"02",X"36",X"2C",X"7E",X"D6",X"18",X"4F",X"06",X"00",X"21",X"20",X"4C", + X"09",X"7E",X"32",X"49",X"E4",X"21",X"D0",X"4D",X"09",X"7E",X"87",X"87",X"87",X"87",X"5F",X"3A", + X"87",X"E5",X"57",X"2A",X"40",X"E4",X"3A",X"4B",X"E4",X"B7",X"7D",X"28",X"0D",X"93",X"30",X"08", + X"CB",X"42",X"28",X"03",X"AF",X"18",X"01",X"25",X"18",X"09",X"83",X"30",X"06",X"24",X"CB",X"42", + X"28",X"01",X"AF",X"6F",X"22",X"40",X"E4",X"2A",X"40",X"E4",X"29",X"7C",X"3C",X"1F",X"32",X"44", + X"E4",X"29",X"29",X"7C",X"32",X"47",X"E4",X"CD",X"88",X"11",X"37",X"C9",X"AF",X"32",X"87",X"E5", + X"3A",X"44",X"E4",X"2A",X"45",X"E4",X"CD",X"00",X"2D",X"06",X"F8",X"0E",X"10",X"CD",X"8D",X"2E", + X"20",X"14",X"3A",X"45",X"E4",X"FE",X"01",X"28",X"16",X"15",X"15",X"1A",X"E6",X"F8",X"FE",X"08", + X"28",X"0D",X"18",X"17",X"18",X"09",X"1A",X"E6",X"F8",X"FE",X"10",X"28",X"02",X"B7",X"C9",X"3A", + X"42",X"E4",X"3D",X"FE",X"7F",X"D0",X"3E",X"01",X"32",X"87",X"E5",X"CD",X"0E",X"12",X"3A",X"44", + X"E4",X"2A",X"45",X"E4",X"CD",X"00",X"2D",X"15",X"1A",X"E6",X"F8",X"11",X"E2",X"FF",X"FE",X"10", + X"CA",X"07",X"0F",X"21",X"54",X"E4",X"7E",X"FE",X"03",X"C2",X"07",X"0F",X"35",X"3E",X"1C",X"32", + X"4A",X"E4",X"CD",X"AB",X"10",X"37",X"C9",X"AF",X"32",X"87",X"E5",X"3A",X"45",X"E4",X"FE",X"1D", + X"30",X"07",X"1A",X"E6",X"F8",X"FE",X"08",X"20",X"0E",X"3A",X"42",X"E4",X"FE",X"80",X"30",X"02", + X"B7",X"C9",X"3E",X"01",X"32",X"87",X"E5",X"CD",X"0E",X"12",X"3A",X"44",X"E4",X"2A",X"43",X"E4", + X"CD",X"00",X"2D",X"1A",X"15",X"E6",X"F8",X"FE",X"10",X"1A",X"11",X"1E",X"00",X"20",X"18",X"E6", + X"F8",X"FE",X"10",X"28",X"12",X"21",X"54",X"E4",X"7E",X"B7",X"20",X"0B",X"34",X"3E",X"20",X"32", + X"4A",X"E4",X"CD",X"AB",X"10",X"37",X"C9",X"2A",X"42",X"E4",X"7C",X"19",X"22",X"42",X"E4",X"BC", + X"28",X"11",X"3A",X"87",X"E5",X"B7",X"28",X"0B",X"7D",X"FE",X"80",X"38",X"01",X"24",X"2E",X"00", + X"22",X"42",X"E4",X"2A",X"42",X"E4",X"29",X"7C",X"3C",X"1F",X"32",X"45",X"E4",X"29",X"29",X"7C", + X"32",X"46",X"E4",X"CD",X"88",X"11",X"06",X"08",X"CD",X"F1",X"10",X"3E",X"03",X"32",X"54",X"E4", + X"37",X"C9",X"AF",X"32",X"0F",X"E5",X"3A",X"45",X"E4",X"FE",X"1C",X"D0",X"3A",X"44",X"E4",X"B7", + X"C8",X"3A",X"45",X"E4",X"6F",X"C6",X"03",X"32",X"17",X"E5",X"3A",X"44",X"E4",X"3D",X"32",X"16", + X"E5",X"CD",X"00",X"2D",X"06",X"FC",X"0E",X"08",X"CD",X"7F",X"2E",X"C0",X"ED",X"53",X"13",X"E5", + X"15",X"06",X"F8",X"0E",X"00",X"CD",X"7F",X"2E",X"C0",X"3E",X"10",X"32",X"4A",X"E4",X"14",X"1C", + X"1C",X"1C",X"1C",X"1A",X"E6",X"F8",X"FE",X"08",X"28",X"17",X"2C",X"2C",X"2C",X"2C",X"7E",X"E6", + X"FC",X"FE",X"18",X"28",X"07",X"7E",X"E6",X"F8",X"FE",X"10",X"20",X"05",X"3E",X"11",X"32",X"4A", + X"E4",X"3E",X"FF",X"32",X"4E",X"E4",X"21",X"40",X"01",X"22",X"11",X"E5",X"3E",X"01",X"32",X"4B", + X"E4",X"32",X"07",X"E5",X"3A",X"0F",X"E5",X"FE",X"0E",X"D2",X"59",X"10",X"2A",X"46",X"E4",X"7D", + X"C6",X"08",X"6F",X"7C",X"D6",X"06",X"CD",X"EF",X"2D",X"DA",X"92",X"10",X"C3",X"59",X"10",X"AF", + X"32",X"0F",X"E5",X"3A",X"45",X"E4",X"FE",X"1C",X"D0",X"3A",X"44",X"E4",X"FE",X"17",X"D0",X"3A", + X"45",X"E4",X"6F",X"C6",X"03",X"32",X"17",X"E5",X"3A",X"44",X"E4",X"3C",X"32",X"16",X"E5",X"CD", + X"00",X"2D",X"06",X"FC",X"0E",X"08",X"CD",X"7F",X"2E",X"C0",X"ED",X"53",X"13",X"E5",X"15",X"06", + X"F8",X"0E",X"00",X"CD",X"7F",X"2E",X"C0",X"3E",X"10",X"32",X"4A",X"E4",X"14",X"1D",X"1D",X"1D", + X"1D",X"1A",X"E6",X"F8",X"FE",X"08",X"28",X"17",X"2D",X"2D",X"2D",X"2D",X"7E",X"E6",X"FC",X"FE", + X"18",X"28",X"07",X"7E",X"E6",X"F8",X"FE",X"10",X"20",X"05",X"3E",X"11",X"32",X"4A",X"E4",X"3E", + X"01",X"32",X"4E",X"E4",X"21",X"40",X"01",X"22",X"11",X"E5",X"AF",X"32",X"4B",X"E4",X"3E",X"01", + X"32",X"07",X"E5",X"3A",X"0F",X"E5",X"FE",X"0E",X"30",X"0F",X"2A",X"46",X"E4",X"7D",X"C6",X"08", + X"6F",X"7C",X"C6",X"06",X"CD",X"31",X"2E",X"38",X"39",X"21",X"07",X"E5",X"7E",X"B7",X"28",X"07", + X"36",X"00",X"3E",X"01",X"CD",X"42",X"31",X"CD",X"0E",X"12",X"CD",X"37",X"12",X"3A",X"0F",X"E5", + X"FE",X"14",X"D2",X"03",X"11",X"21",X"10",X"E5",X"36",X"F3",X"3A",X"0F",X"E5",X"1F",X"1F",X"30", + X"02",X"36",X"F2",X"2A",X"11",X"E5",X"11",X"C0",X"00",X"19",X"22",X"11",X"E5",X"21",X"0F",X"E5", + X"34",X"C9",X"3E",X"00",X"32",X"10",X"E5",X"AF",X"32",X"4E",X"E4",X"32",X"07",X"E5",X"C9",X"21", + X"49",X"E4",X"35",X"28",X"02",X"B7",X"C9",X"21",X"4A",X"E4",X"34",X"3A",X"4A",X"E4",X"D6",X"18", + X"4F",X"06",X"00",X"21",X"20",X"4C",X"09",X"7E",X"32",X"49",X"E4",X"B7",X"20",X"07",X"3E",X"01", + X"32",X"49",X"E4",X"37",X"C9",X"21",X"A8",X"4E",X"09",X"56",X"1E",X"00",X"CB",X"2A",X"CB",X"1B", + X"CB",X"2A",X"CB",X"1B",X"CB",X"2A",X"CB",X"1B",X"2A",X"42",X"E4",X"19",X"22",X"42",X"E4",X"2A", + X"42",X"E4",X"29",X"7C",X"3C",X"1F",X"32",X"45",X"E4",X"29",X"29",X"7C",X"32",X"46",X"E4",X"B7", + X"C9",X"21",X"49",X"E4",X"35",X"C0",X"36",X"06",X"21",X"4A",X"E4",X"34",X"7E",X"E6",X"FC",X"B8", + X"C8",X"70",X"C9",X"AF",X"32",X"4E",X"E4",X"32",X"0C",X"E5",X"3D",X"32",X"0B",X"E5",X"CD",X"DD", + X"0C",X"ED",X"5B",X"13",X"E5",X"3E",X"04",X"CD",X"BE",X"2F",X"3E",X"00",X"32",X"10",X"E5",X"21", + X"18",X"E5",X"06",X"14",X"7E",X"B7",X"28",X"07",X"23",X"23",X"23",X"23",X"10",X"F6",X"C9",X"36", + X"A0",X"23",X"23",X"3A",X"16",X"E5",X"77",X"5F",X"23",X"3A",X"17",X"E5",X"77",X"57",X"2A",X"71", + X"E5",X"B7",X"ED",X"52",X"C0",X"22",X"71",X"E5",X"3E",X"01",X"32",X"02",X"E5",X"21",X"E9",X"E4", + X"7E",X"FD",X"21",X"58",X"E4",X"01",X"18",X"00",X"FD",X"09",X"3D",X"20",X"FB",X"34",X"FD",X"77", + X"00",X"FD",X"77",X"02",X"FD",X"73",X"01",X"FD",X"73",X"04",X"15",X"FD",X"72",X"03",X"FD",X"72", + X"05",X"7B",X"87",X"87",X"87",X"FD",X"77",X"07",X"7A",X"87",X"87",X"87",X"FD",X"77",X"06",X"FD", + X"36",X"09",X"01",X"FD",X"36",X"0C",X"B0",X"C9",X"3A",X"51",X"E4",X"B7",X"20",X"18",X"3A",X"40", + X"E4",X"FE",X"80",X"38",X"02",X"ED",X"44",X"FE",X"14",X"D0",X"3A",X"42",X"E4",X"FE",X"80",X"38", + X"02",X"ED",X"44",X"FE",X"1E",X"D0",X"3A",X"44",X"E4",X"2A",X"45",X"E4",X"CD",X"00",X"2D",X"15", + X"1A",X"E6",X"FC",X"FE",X"60",X"20",X"20",X"CD",X"83",X"2F",X"ED",X"5F",X"FE",X"33",X"38",X"04", + X"3E",X"08",X"18",X"0A",X"FE",X"0D",X"38",X"04",X"3E",X"09",X"18",X"02",X"3E",X"0A",X"CD",X"73", + X"30",X"3E",X"02",X"CD",X"42",X"31",X"C9",X"FE",X"70",X"C0",X"21",X"FC",X"E4",X"35",X"CD",X"5C", + X"2F",X"0E",X"00",X"14",X"1A",X"FE",X"04",X"20",X"02",X"0E",X"04",X"21",X"0D",X"E5",X"3A",X"08", + X"E5",X"B7",X"20",X"04",X"36",X"00",X"18",X"06",X"7E",X"FE",X"03",X"30",X"01",X"34",X"7E",X"81", + X"CD",X"73",X"30",X"3E",X"13",X"32",X"08",X"E5",X"3E",X"02",X"CD",X"42",X"31",X"C9",X"2A",X"40", + X"E4",X"7D",X"FE",X"80",X"30",X"07",X"D6",X"14",X"30",X"01",X"AF",X"18",X"06",X"C6",X"14",X"30", + X"02",X"24",X"AF",X"6F",X"22",X"40",X"E4",X"29",X"7C",X"3C",X"1F",X"32",X"44",X"E4",X"29",X"29", + X"7C",X"32",X"47",X"E4",X"C3",X"88",X"11",X"3A",X"52",X"E4",X"B7",X"C0",X"2A",X"42",X"E4",X"7D", + X"FE",X"80",X"30",X"07",X"D6",X"1E",X"30",X"01",X"AF",X"18",X"06",X"C6",X"1E",X"30",X"02",X"24", + X"AF",X"6F",X"22",X"42",X"E4",X"29",X"7C",X"3C",X"1F",X"32",X"45",X"E4",X"29",X"29",X"7C",X"32", + X"46",X"E4",X"C3",X"88",X"11",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"3A",X"E9",X"E4",X"32",X"E8",X"E4",X"DD",X"21",X"58",X"E4",X"CD",X"19",X"13",X"11",X"18",X"00", + X"DD",X"19",X"21",X"E8",X"E4",X"35",X"20",X"F2",X"C9",X"21",X"6D",X"E5",X"36",X"00",X"3A",X"02", + X"E5",X"B7",X"28",X"19",X"3A",X"E8",X"E4",X"FE",X"01",X"20",X"12",X"34",X"3A",X"03",X"E5",X"B7", + X"28",X"0B",X"DD",X"7E",X"0C",X"FE",X"20",X"20",X"04",X"DD",X"36",X"0C",X"40",X"DD",X"7E",X"0E", + X"B7",X"C0",X"3A",X"F5",X"E4",X"B7",X"28",X"03",X"DD",X"34",X"17",X"DD",X"7E",X"0C",X"B7",X"28", + X"32",X"DD",X"35",X"0C",X"DD",X"7E",X"0C",X"FE",X"20",X"DA",X"23",X"15",X"DD",X"6E",X"07",X"DD", + X"7E",X"06",X"CD",X"F2",X"2E",X"DD",X"7E",X"0C",X"FE",X"B0",X"D0",X"DD",X"35",X"09",X"C0",X"DD", + X"36",X"09",X"08",X"DD",X"34",X"0A",X"DD",X"7E",X"0A",X"E6",X"FC",X"FE",X"14",X"C8",X"DD",X"36", + X"0A",X"14",X"C9",X"DD",X"7E",X"14",X"FE",X"14",X"20",X"0F",X"CD",X"F7",X"18",X"D8",X"06",X"1C", + X"CD",X"66",X"1A",X"D0",X"DD",X"36",X"14",X"00",X"C9",X"DD",X"7E",X"14",X"FE",X"01",X"20",X"12", + X"CD",X"C1",X"1B",X"CD",X"F7",X"18",X"D8",X"06",X"20",X"CD",X"66",X"1A",X"D0",X"DD",X"36",X"14", + X"15",X"C9",X"DD",X"7E",X"15",X"FE",X"02",X"20",X"19",X"CD",X"C1",X"1B",X"CD",X"F7",X"18",X"D8", + X"06",X"28",X"CD",X"66",X"1A",X"D0",X"DD",X"36",X"15",X"00",X"DD",X"34",X"09",X"DD",X"36",X"0F", + X"02",X"C9",X"DD",X"7E",X"15",X"FE",X"01",X"20",X"0F",X"CD",X"F7",X"18",X"D8",X"06",X"24",X"CD", + X"66",X"1A",X"D0",X"DD",X"36",X"15",X"03",X"C9",X"DD",X"7E",X"06",X"DD",X"6E",X"07",X"CD",X"9E", + X"2D",X"DA",X"75",X"15",X"DD",X"7E",X"04",X"DD",X"6E",X"05",X"CD",X"00",X"2D",X"06",X"F8",X"0E", + X"10",X"CD",X"8D",X"2E",X"CA",X"75",X"15",X"AF",X"32",X"87",X"E5",X"DD",X"77",X"14",X"7E",X"E6", + X"FC",X"FE",X"18",X"20",X"0C",X"3E",X"01",X"32",X"87",X"E5",X"DD",X"7E",X"02",X"B7",X"CA",X"75", + X"15",X"DD",X"7E",X"05",X"FE",X"1D",X"30",X"29",X"1A",X"E6",X"F8",X"FE",X"10",X"28",X"22",X"1A", + X"E6",X"F8",X"FE",X"08",X"28",X"1B",X"DD",X"7E",X"16",X"B7",X"28",X"08",X"3C",X"DD",X"BE",X"05", + X"30",X"1C",X"18",X"0D",X"1A",X"FE",X"04",X"20",X"15",X"DD",X"7E",X"05",X"DD",X"77",X"16",X"18", + X"0D",X"3E",X"01",X"32",X"87",X"E5",X"DD",X"7E",X"02",X"FE",X"80",X"DA",X"75",X"15",X"DD",X"36", + X"10",X"00",X"CD",X"C1",X"1B",X"DD",X"7E",X"02",X"C6",X"15",X"DD",X"77",X"02",X"30",X"0D",X"DD", + X"34",X"03",X"3A",X"87",X"E5",X"B7",X"28",X"04",X"AF",X"DD",X"77",X"02",X"DD",X"6E",X"02",X"DD", + X"66",X"03",X"29",X"7C",X"3C",X"1F",X"DD",X"77",X"05",X"29",X"29",X"7C",X"DD",X"77",X"06",X"DD", + X"7E",X"06",X"DD",X"6E",X"07",X"CD",X"D3",X"2E",X"CD",X"39",X"1B",X"06",X"0C",X"CD",X"2E",X"1A", + X"DD",X"7E",X"04",X"DD",X"6E",X"05",X"CD",X"00",X"2D",X"24",X"7E",X"25",X"FE",X"04",X"20",X"3E", + X"DD",X"7E",X"0D",X"B7",X"28",X"19",X"DD",X"36",X"0D",X"00",X"EB",X"06",X"FC",X"0E",X"00",X"CD", + X"7F",X"2E",X"20",X"04",X"CD",X"0E",X"2F",X"C9",X"21",X"FC",X"E4",X"35",X"C9",X"18",X"1F",X"3A", + X"6D",X"E5",X"B7",X"28",X"19",X"3A",X"03",X"E5",X"B7",X"20",X"13",X"3E",X"01",X"32",X"03",X"E5", + X"EB",X"06",X"FC",X"0E",X"00",X"CD",X"7F",X"2E",X"20",X"03",X"CD",X"35",X"2F",X"C9",X"DD",X"7E", + X"02",X"B7",X"C0",X"15",X"1A",X"FE",X"04",X"C0",X"3A",X"87",X"E5",X"B7",X"C8",X"DD",X"36",X"16", + X"00",X"DD",X"36",X"0C",X"C0",X"DD",X"36",X"10",X"00",X"DD",X"36",X"0A",X"10",X"3E",X"05",X"CD", + X"42",X"31",X"3A",X"6D",X"E5",X"B7",X"C0",X"01",X"00",X"01",X"CD",X"DB",X"2F",X"3E",X"01",X"32", + X"00",X"E5",X"C9",X"B7",X"28",X"3C",X"FE",X"1F",X"20",X"0F",X"DD",X"36",X"10",X"01",X"DD",X"36", + X"0F",X"FE",X"DD",X"35",X"05",X"DD",X"35",X"05",X"C9",X"FE",X"18",X"38",X"06",X"DD",X"7E",X"0F", + X"FE",X"FE",X"C8",X"DD",X"36",X"10",X"00",X"DD",X"34",X"05",X"DD",X"34",X"05",X"DD",X"7E",X"0F", + X"DD",X"77",X"0B",X"FE",X"FE",X"38",X"04",X"DD",X"77",X"0C",X"C9",X"DD",X"36",X"0A",X"18",X"CD", + X"76",X"1A",X"DD",X"36",X"0C",X"01",X"CD",X"F7",X"18",X"D8",X"06",X"18",X"CD",X"66",X"1A",X"D0", + X"DD",X"36",X"0C",X"00",X"C9",X"DD",X"36",X"16",X"00",X"DD",X"36",X"10",X"01",X"DD",X"7E",X"0F", + X"B7",X"CA",X"85",X"17",X"3D",X"CA",X"29",X"17",X"3D",X"CA",X"5D",X"16",X"3D",X"CA",X"9A",X"15", + X"DD",X"6E",X"07",X"DD",X"7E",X"06",X"CD",X"F2",X"2E",X"C9",X"AF",X"32",X"87",X"E5",X"DD",X"7E", + X"05",X"FE",X"01",X"28",X"23",X"DD",X"7E",X"04",X"DD",X"6E",X"05",X"CD",X"00",X"2D",X"06",X"F8", + X"0E",X"10",X"CD",X"8D",X"2E",X"20",X"0B",X"15",X"15",X"1A",X"E6",X"F8",X"FE",X"08",X"20",X"14", + X"18",X"06",X"1A",X"E6",X"F8",X"FE",X"10",X"C0",X"DD",X"7E",X"02",X"3D",X"FE",X"7F",X"D0",X"3E", + X"01",X"32",X"87",X"E5",X"CD",X"C1",X"1B",X"DD",X"7E",X"04",X"DD",X"6E",X"03",X"CD",X"00",X"2D", + X"24",X"24",X"7E",X"E6",X"F8",X"FE",X"10",X"20",X"30",X"1A",X"E6",X"F8",X"FE",X"10",X"20",X"29", + X"15",X"1A",X"E6",X"F8",X"FE",X"10",X"28",X"21",X"DD",X"7E",X"14",X"FE",X"15",X"20",X"1A",X"DD", + X"35",X"14",X"DD",X"46",X"0A",X"DD",X"4E",X"09",X"C5",X"DD",X"36",X"0A",X"1C",X"CD",X"76",X"1A", + X"C1",X"30",X"41",X"DD",X"70",X"0A",X"DD",X"71",X"09",X"DD",X"7E",X"02",X"D6",X"15",X"DD",X"77", + X"02",X"30",X"0F",X"3A",X"87",X"E5",X"B7",X"28",X"06",X"AF",X"DD",X"77",X"02",X"18",X"03",X"DD", + X"35",X"03",X"DD",X"6E",X"02",X"DD",X"66",X"03",X"29",X"7C",X"3C",X"1F",X"DD",X"77",X"05",X"29", + X"29",X"7C",X"DD",X"77",X"06",X"CD",X"39",X"1B",X"CD",X"7A",X"1B",X"06",X"08",X"CD",X"2E",X"1A", + X"DD",X"36",X"14",X"15",X"DD",X"7E",X"06",X"DD",X"6E",X"07",X"C3",X"D3",X"2E",X"DD",X"7E",X"06", + X"DD",X"6E",X"07",X"CD",X"9E",X"2D",X"D8",X"AF",X"32",X"87",X"E5",X"DD",X"7E",X"05",X"FE",X"1D", + X"30",X"10",X"DD",X"7E",X"04",X"DD",X"6E",X"05",X"CD",X"00",X"2D",X"1A",X"E6",X"F8",X"FE",X"08", + X"20",X"0B",X"DD",X"7E",X"02",X"FE",X"80",X"D8",X"3E",X"01",X"32",X"87",X"E5",X"7E",X"E6",X"FC", + X"FE",X"18",X"20",X"17",X"DD",X"7E",X"15",X"FE",X"03",X"20",X"10",X"DD",X"35",X"15",X"DD",X"36", + X"0A",X"28",X"CD",X"76",X"1A",X"D0",X"DD",X"36",X"0A",X"0C",X"C9",X"CD",X"C1",X"1B",X"DD",X"7E", + X"04",X"DD",X"6E",X"03",X"CD",X"00",X"2D",X"1A",X"E6",X"F8",X"FE",X"10",X"20",X"29",X"15",X"1A", + X"E6",X"F8",X"FE",X"10",X"28",X"21",X"DD",X"7E",X"14",X"FE",X"15",X"28",X"1A",X"DD",X"34",X"14", + X"DD",X"46",X"0A",X"DD",X"4E",X"09",X"C5",X"DD",X"36",X"0A",X"20",X"CD",X"76",X"1A",X"C1",X"30", + X"3F",X"DD",X"70",X"0A",X"DD",X"71",X"09",X"DD",X"7E",X"02",X"C6",X"15",X"DD",X"77",X"02",X"30", + X"0D",X"DD",X"34",X"03",X"3A",X"87",X"E5",X"B7",X"28",X"04",X"AF",X"DD",X"77",X"02",X"DD",X"6E", + X"02",X"DD",X"66",X"03",X"29",X"7C",X"3C",X"1F",X"DD",X"77",X"05",X"29",X"29",X"7C",X"DD",X"77", + X"06",X"CD",X"39",X"1B",X"CD",X"7A",X"1B",X"06",X"08",X"CD",X"2E",X"1A",X"DD",X"36",X"14",X"15", + X"DD",X"7E",X"06",X"DD",X"6E",X"07",X"C3",X"D3",X"2E",X"DD",X"6E",X"06",X"DD",X"7E",X"07",X"CD", + X"EF",X"2D",X"D8",X"AF",X"32",X"87",X"E5",X"DD",X"7E",X"04",X"B7",X"28",X"16",X"DD",X"7E",X"04", + X"DD",X"6E",X"05",X"CD",X"00",X"2D",X"2B",X"2B",X"2B",X"2B",X"06",X"F8",X"0E",X"08",X"CD",X"8D", + X"2E",X"20",X"0C",X"DD",X"7E",X"00",X"3D",X"FE",X"7F",X"D0",X"3E",X"01",X"32",X"87",X"E5",X"3E", + X"01",X"DD",X"77",X"0B",X"CD",X"EE",X"1B",X"CD",X"4C",X"18",X"DD",X"7E",X"00",X"D6",X"0E",X"DD", + X"77",X"00",X"30",X"0F",X"3A",X"87",X"E5",X"B7",X"28",X"06",X"AF",X"DD",X"77",X"00",X"18",X"03", + X"DD",X"35",X"01",X"18",X"57",X"DD",X"6E",X"06",X"DD",X"7E",X"07",X"CD",X"31",X"2E",X"D8",X"AF", + X"32",X"87",X"E5",X"DD",X"7E",X"04",X"FE",X"17",X"30",X"16",X"DD",X"7E",X"04",X"DD",X"6E",X"05", + X"CD",X"00",X"2D",X"23",X"23",X"23",X"23",X"06",X"F8",X"0E",X"08",X"CD",X"8D",X"2E",X"20",X"0B", + X"DD",X"7E",X"00",X"FE",X"80",X"D8",X"3E",X"01",X"32",X"87",X"E5",X"AF",X"DD",X"77",X"0B",X"CD", + X"EE",X"1B",X"CD",X"4C",X"18",X"DD",X"7E",X"00",X"C6",X"0E",X"DD",X"77",X"00",X"30",X"0D",X"DD", + X"34",X"01",X"3A",X"87",X"E5",X"B7",X"28",X"AB",X"AF",X"DD",X"77",X"00",X"DD",X"6E",X"00",X"DD", + X"66",X"01",X"29",X"7C",X"3C",X"1F",X"DD",X"77",X"04",X"29",X"29",X"7C",X"DD",X"77",X"07",X"CD", + X"39",X"1B",X"CD",X"7A",X"1B",X"DD",X"6E",X"06",X"DD",X"7E",X"0B",X"B7",X"DD",X"7E",X"07",X"28", + X"05",X"CD",X"B9",X"2E",X"18",X"03",X"CD",X"B5",X"2E",X"DD",X"7E",X"04",X"DD",X"6E",X"05",X"CD", + X"00",X"2D",X"E6",X"FC",X"FE",X"18",X"20",X"19",X"DD",X"7E",X"15",X"B7",X"20",X"0B",X"DD",X"34", + X"15",X"DD",X"36",X"0A",X"24",X"CD",X"76",X"1A",X"D0",X"DD",X"36",X"15",X"03",X"06",X"04",X"18", + X"18",X"DD",X"7E",X"15",X"FE",X"03",X"20",X"0B",X"DD",X"35",X"15",X"DD",X"36",X"0A",X"28",X"CD", + X"76",X"1A",X"D0",X"DD",X"36",X"15",X"00",X"06",X"00",X"C3",X"2E",X"1A",X"3A",X"6D",X"E5",X"B7", + X"20",X"07",X"3A",X"FB",X"E4",X"B7",X"C8",X"18",X"05",X"3A",X"6F",X"E5",X"B7",X"C8",X"DD",X"7E", + X"04",X"DD",X"6E",X"05",X"CD",X"00",X"2D",X"E6",X"FC",X"FE",X"18",X"C0",X"F1",X"DD",X"6E",X"06", + X"DD",X"7E",X"0B",X"B7",X"DD",X"7E",X"07",X"28",X"05",X"CD",X"B9",X"2E",X"18",X"03",X"CD",X"B5", + X"2E",X"DD",X"7E",X"0A",X"E6",X"FC",X"FE",X"2C",X"28",X"04",X"DD",X"36",X"09",X"01",X"DD",X"35", + X"09",X"C0",X"DD",X"34",X"0A",X"DD",X"7E",X"0A",X"E6",X"FC",X"FE",X"2C",X"28",X"04",X"DD",X"36", + X"0A",X"2C",X"CD",X"19",X"1B",X"21",X"20",X"4C",X"09",X"7E",X"DD",X"77",X"09",X"21",X"D0",X"4D", + X"09",X"7E",X"B7",X"C8",X"87",X"87",X"87",X"87",X"5F",X"3A",X"87",X"E5",X"57",X"DD",X"7E",X"00", + X"DD",X"CB",X"0B",X"46",X"28",X"0F",X"93",X"30",X"0A",X"CB",X"42",X"28",X"03",X"AF",X"18",X"03", + X"DD",X"35",X"01",X"18",X"0B",X"83",X"30",X"08",X"DD",X"34",X"01",X"CB",X"42",X"28",X"01",X"AF", + X"DD",X"77",X"00",X"DD",X"6E",X"00",X"DD",X"66",X"01",X"29",X"7C",X"3C",X"1F",X"DD",X"77",X"04", + X"29",X"29",X"7C",X"DD",X"77",X"07",X"C9",X"DD",X"7E",X"0F",X"FE",X"FF",X"C8",X"E6",X"03",X"CA", + X"A6",X"19",X"3D",X"CA",X"EA",X"19",X"3D",X"28",X"59",X"DD",X"7E",X"0C",X"B7",X"28",X"0F",X"DD", + X"7E",X"04",X"DD",X"6E",X"05",X"CD",X"00",X"2D",X"E6",X"F8",X"FE",X"08",X"37",X"C8",X"DD",X"CB", + X"0F",X"6E",X"20",X"0A",X"DD",X"7E",X"06",X"DD",X"6E",X"07",X"CD",X"A2",X"2D",X"D8",X"DD",X"46", + X"0F",X"CB",X"78",X"20",X"20",X"DD",X"7E",X"02",X"D6",X"20",X"DD",X"77",X"02",X"30",X"03",X"DD", + X"35",X"03",X"DD",X"6E",X"02",X"DD",X"66",X"03",X"29",X"7C",X"3C",X"1F",X"DD",X"77",X"05",X"29", + X"29",X"7C",X"DD",X"77",X"06",X"DD",X"7E",X"06",X"DD",X"6E",X"07",X"CB",X"70",X"CC",X"D3",X"2E", + X"B7",X"C9",X"DD",X"CB",X"0F",X"6E",X"20",X"0A",X"DD",X"7E",X"06",X"DD",X"6E",X"07",X"CD",X"9E", + X"2D",X"D8",X"DD",X"46",X"0F",X"CB",X"78",X"20",X"20",X"DD",X"7E",X"02",X"C6",X"20",X"DD",X"77", + X"02",X"30",X"03",X"DD",X"34",X"03",X"DD",X"6E",X"02",X"DD",X"66",X"03",X"29",X"7C",X"3C",X"1F", + X"DD",X"77",X"05",X"29",X"29",X"7C",X"DD",X"77",X"06",X"DD",X"7E",X"06",X"DD",X"6E",X"07",X"CB", + X"70",X"CC",X"D3",X"2E",X"B7",X"C9",X"DD",X"CB",X"0F",X"6E",X"20",X"0A",X"DD",X"6E",X"06",X"DD", + X"7E",X"07",X"CD",X"31",X"2E",X"D8",X"DD",X"46",X"0F",X"CB",X"78",X"20",X"20",X"DD",X"7E",X"00", + X"C6",X"10",X"DD",X"77",X"00",X"30",X"03",X"DD",X"34",X"01",X"DD",X"6E",X"00",X"DD",X"66",X"01", + X"29",X"7C",X"3C",X"1F",X"DD",X"77",X"04",X"29",X"29",X"7C",X"DD",X"77",X"07",X"DD",X"6E",X"06", + X"DD",X"7E",X"07",X"CB",X"70",X"CC",X"B5",X"2E",X"B7",X"C9",X"DD",X"CB",X"0F",X"6E",X"20",X"0A", + X"DD",X"6E",X"06",X"DD",X"7E",X"07",X"CD",X"EF",X"2D",X"D8",X"DD",X"46",X"0F",X"CB",X"78",X"20", + X"20",X"DD",X"7E",X"00",X"D6",X"10",X"DD",X"77",X"00",X"30",X"03",X"DD",X"35",X"01",X"DD",X"6E", + X"00",X"DD",X"66",X"01",X"29",X"7C",X"3C",X"1F",X"DD",X"77",X"04",X"29",X"29",X"7C",X"DD",X"77", + X"07",X"DD",X"6E",X"06",X"DD",X"7E",X"07",X"CB",X"70",X"CC",X"B9",X"2E",X"B7",X"C9",X"DD",X"35", + X"09",X"C0",X"DD",X"36",X"09",X"06",X"DD",X"34",X"0A",X"DD",X"7E",X"0A",X"FE",X"03",X"20",X"12", + X"3A",X"CD",X"E5",X"5F",X"16",X"00",X"21",X"5D",X"1A",X"19",X"7E",X"B7",X"28",X"04",X"DD",X"70", + X"0A",X"C9",X"DD",X"7E",X"0A",X"E6",X"FC",X"B8",X"C8",X"DD",X"70",X"0A",X"C9",X"00",X"00",X"01", + X"01",X"00",X"00",X"01",X"00",X"00",X"DD",X"35",X"09",X"C0",X"DD",X"34",X"0A",X"DD",X"7E",X"0A", + X"E6",X"FC",X"B8",X"C2",X"0D",X"1B",X"DD",X"36",X"10",X"00",X"CD",X"19",X"1B",X"21",X"20",X"4C", + X"09",X"7E",X"DD",X"77",X"09",X"B7",X"CA",X"0D",X"1B",X"21",X"F8",X"4C",X"09",X"7E",X"57",X"E6", + X"03",X"20",X"07",X"DD",X"CB",X"0B",X"46",X"28",X"01",X"14",X"DD",X"72",X"0F",X"21",X"D0",X"4D", + X"09",X"7E",X"B7",X"28",X"30",X"87",X"87",X"87",X"87",X"16",X"00",X"DD",X"CB",X"0B",X"46",X"28", + X"03",X"ED",X"44",X"15",X"5F",X"DD",X"6E",X"00",X"DD",X"66",X"01",X"19",X"DD",X"75",X"00",X"DD", + X"74",X"01",X"DD",X"6E",X"00",X"DD",X"66",X"01",X"29",X"7C",X"3C",X"1F",X"DD",X"77",X"04",X"29", + X"29",X"7C",X"DD",X"77",X"07",X"21",X"A8",X"4E",X"09",X"7E",X"B7",X"28",X"2F",X"56",X"1E",X"00", + X"CB",X"2A",X"CB",X"1B",X"CB",X"2A",X"CB",X"1B",X"CB",X"2A",X"CB",X"1B",X"DD",X"6E",X"02",X"DD", + X"66",X"03",X"19",X"DD",X"75",X"02",X"DD",X"74",X"03",X"DD",X"6E",X"02",X"DD",X"66",X"03",X"29", + X"7C",X"3C",X"1F",X"DD",X"77",X"05",X"29",X"29",X"7C",X"DD",X"77",X"06",X"C9",X"DD",X"35",X"0A", + X"DD",X"34",X"09",X"DD",X"36",X"0F",X"FF",X"37",X"C9",X"3A",X"6D",X"E5",X"B7",X"28",X"08",X"3A", + X"CD",X"E5",X"E6",X"07",X"3C",X"18",X"03",X"3A",X"CD",X"E5",X"47",X"87",X"80",X"87",X"87",X"87", + X"DD",X"86",X"0A",X"D6",X"18",X"4F",X"06",X"00",X"C9",X"3A",X"6D",X"E5",X"B7",X"C0",X"DD",X"7E", + X"00",X"FE",X"80",X"38",X"02",X"ED",X"44",X"FE",X"0E",X"D0",X"DD",X"7E",X"02",X"FE",X"80",X"38", + X"02",X"ED",X"44",X"FE",X"15",X"D0",X"DD",X"7E",X"04",X"DD",X"6E",X"05",X"CD",X"00",X"2D",X"15", + X"1A",X"E6",X"FC",X"FE",X"70",X"C0",X"DD",X"7E",X"0D",X"B7",X"C0",X"3A",X"68",X"E5",X"C6",X"04", + X"87",X"87",X"87",X"DD",X"77",X"0D",X"CD",X"5C",X"2F",X"C9",X"DD",X"7E",X"0D",X"B7",X"C8",X"DD", + X"7E",X"0F",X"FE",X"02",X"D0",X"DD",X"7E",X"0A",X"FE",X"04",X"38",X"03",X"FE",X"08",X"D8",X"DD", + X"7E",X"04",X"DD",X"6E",X"05",X"CD",X"00",X"2D",X"15",X"06",X"FC",X"0E",X"00",X"CD",X"7F",X"2E", + X"C0",X"DD",X"35",X"0D",X"C0",X"DD",X"7E",X"0F",X"FE",X"00",X"DD",X"7E",X"00",X"20",X"06",X"FE", + X"80",X"30",X"0A",X"18",X"04",X"FE",X"80",X"38",X"04",X"CD",X"0E",X"2F",X"C9",X"DD",X"34",X"0D", + X"C9",X"DD",X"7E",X"00",X"FE",X"80",X"30",X"07",X"D6",X"0E",X"30",X"01",X"AF",X"18",X"08",X"C6", + X"0E",X"30",X"04",X"DD",X"34",X"01",X"AF",X"DD",X"77",X"00",X"6F",X"DD",X"66",X"01",X"29",X"7C", + X"3C",X"1F",X"DD",X"77",X"04",X"29",X"29",X"7C",X"DD",X"77",X"07",X"C3",X"39",X"1B",X"DD",X"7E", + X"02",X"FE",X"80",X"30",X"07",X"D6",X"15",X"30",X"01",X"AF",X"18",X"08",X"C6",X"15",X"30",X"04", + X"DD",X"34",X"03",X"AF",X"DD",X"77",X"02",X"6F",X"DD",X"66",X"03",X"29",X"7C",X"3C",X"1F",X"DD", + X"77",X"05",X"29",X"29",X"7C",X"DD",X"77",X"06",X"C3",X"39",X"1B",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"3A",X"E9",X"E4",X"32",X"EA",X"E4",X"DD",X"21",X"58",X"E4",X"FD",X"21",X"EB",X"E4",X"DD",X"7E", + X"10",X"B7",X"28",X"1C",X"DD",X"6E",X"04",X"DD",X"66",X"05",X"22",X"EF",X"E4",X"DD",X"7E",X"07", + X"32",X"F2",X"E4",X"CD",X"FD",X"1D",X"47",X"DD",X"7E",X"10",X"B7",X"28",X"03",X"DD",X"70",X"0F", + X"11",X"18",X"00",X"DD",X"19",X"21",X"EA",X"E4",X"35",X"20",X"D3",X"3A",X"E9",X"E4",X"32",X"EA", + X"E4",X"DD",X"21",X"58",X"E4",X"DD",X"7E",X"04",X"DD",X"6E",X"05",X"2C",X"2C",X"CD",X"D5",X"62", + X"7E",X"E6",X"0D",X"FE",X"0D",X"28",X"0A",X"21",X"01",X"E5",X"7E",X"FE",X"39",X"D0",X"36",X"00", + X"C9",X"11",X"18",X"00",X"DD",X"19",X"21",X"EA",X"E4",X"35",X"20",X"D9",X"21",X"01",X"E5",X"7E", + X"FE",X"38",X"30",X"02",X"34",X"C9",X"C0",X"34",X"3E",X"00",X"32",X"9D",X"E5",X"21",X"B5",X"E5", + X"7E",X"BE",X"28",X"FD",X"CD",X"8D",X"32",X"21",X"29",X"D7",X"36",X"05",X"2B",X"36",X"00",X"11", + X"2A",X"D7",X"01",X"2E",X"00",X"ED",X"B0",X"21",X"A9",X"D7",X"36",X"05",X"2B",X"36",X"00",X"11", + X"AA",X"D7",X"01",X"2E",X"00",X"ED",X"B0",X"21",X"29",X"D8",X"36",X"05",X"2B",X"36",X"00",X"11", + X"2A",X"D8",X"01",X"2E",X"00",X"ED",X"B0",X"0E",X"47",X"21",X"AA",X"D7",X"11",X"E5",X"1D",X"CD", + X"2D",X"30",X"3E",X"1F",X"CD",X"42",X"31",X"0E",X"01",X"CD",X"CF",X"2F",X"CD",X"03",X"32",X"3E", + X"01",X"32",X"89",X"E5",X"CD",X"89",X"06",X"CD",X"B9",X"32",X"3E",X"26",X"CD",X"42",X"31",X"3E", + X"02",X"32",X"9D",X"E5",X"C9",X"41",X"4C",X"4C",X"20",X"45",X"4E",X"45",X"4D",X"49",X"45",X"53", + X"20",X"41",X"52",X"45",X"20",X"53",X"45",X"41",X"4C",X"45",X"44",X"2E",X"00",X"3A",X"45",X"E4", + X"FD",X"BE",X"05",X"C2",X"B9",X"1E",X"FD",X"46",X"04",X"FD",X"7E",X"07",X"21",X"47",X"E4",X"BE", + X"38",X"05",X"20",X"54",X"3E",X"FF",X"C9",X"3A",X"44",X"E4",X"B8",X"20",X"03",X"3E",X"00",X"C9", + X"04",X"78",X"FD",X"6E",X"05",X"CD",X"00",X"2D",X"E6",X"FC",X"FE",X"18",X"28",X"E9",X"7E",X"E6", + X"F8",X"FE",X"10",X"28",X"E2",X"24",X"7E",X"25",X"E6",X"F8",X"FE",X"10",X"28",X"D9",X"FD",X"7E", + X"05",X"FE",X"1D",X"30",X"D2",X"7E",X"E6",X"F8",X"FE",X"08",X"28",X"6D",X"24",X"7E",X"E6",X"F8", + X"FE",X"08",X"28",X"65",X"1A",X"E6",X"F8",X"FE",X"10",X"28",X"BC",X"1A",X"FE",X"04",X"28",X"B7", + X"E6",X"F8",X"FE",X"08",X"28",X"B1",X"18",X"51",X"3A",X"44",X"E4",X"B8",X"20",X"03",X"3E",X"01", + X"C9",X"05",X"78",X"FD",X"6E",X"05",X"CD",X"00",X"2D",X"E6",X"FC",X"FE",X"18",X"28",X"E9",X"7E", + X"E6",X"F8",X"FE",X"10",X"28",X"E2",X"24",X"7E",X"25",X"E6",X"F8",X"FE",X"10",X"28",X"D9",X"FD", + X"7E",X"05",X"FE",X"1D",X"30",X"D2",X"7E",X"E6",X"F8",X"FE",X"08",X"28",X"1C",X"24",X"7E",X"E6", + X"F8",X"FE",X"08",X"28",X"14",X"1A",X"E6",X"F8",X"FE",X"10",X"28",X"BC",X"1A",X"FE",X"04",X"28", + X"B7",X"E6",X"F8",X"FE",X"08",X"28",X"B1",X"18",X"00",X"3E",X"FF",X"32",X"ED",X"E4",X"32",X"EE", + X"E4",X"FD",X"7E",X"04",X"32",X"EB",X"E4",X"32",X"EC",X"E4",X"CD",X"E0",X"1E",X"CD",X"2B",X"1F", + X"CD",X"77",X"1F",X"CD",X"96",X"1F",X"CD",X"B9",X"1F",X"CD",X"F1",X"1F",X"3A",X"ED",X"E4",X"C9", + X"3A",X"EB",X"E4",X"B7",X"28",X"44",X"3D",X"FD",X"6E",X"05",X"CD",X"00",X"2D",X"06",X"F8",X"0E", + X"08",X"CD",X"8D",X"2E",X"C8",X"06",X"F8",X"0E",X"10",X"CD",X"8D",X"2E",X"28",X"25",X"7E",X"E6", + X"FC",X"FE",X"18",X"28",X"1E",X"FD",X"7E",X"05",X"FE",X"1D",X"30",X"17",X"1A",X"E6",X"F8",X"FE", + X"10",X"28",X"10",X"1A",X"FE",X"04",X"28",X"0B",X"E6",X"F8",X"FE",X"08",X"28",X"05",X"21",X"EB", + X"E4",X"35",X"C9",X"21",X"EB",X"E4",X"35",X"7E",X"18",X"B9",X"C9",X"3A",X"EC",X"E4",X"FE",X"17", + X"30",X"44",X"3C",X"FD",X"6E",X"05",X"CD",X"00",X"2D",X"06",X"F8",X"0E",X"08",X"CD",X"8D",X"2E", + X"C8",X"06",X"F8",X"0E",X"10",X"CD",X"8D",X"2E",X"28",X"25",X"7E",X"E6",X"FC",X"FE",X"18",X"28", + X"1E",X"FD",X"7E",X"05",X"FE",X"1D",X"30",X"17",X"1A",X"E6",X"F8",X"FE",X"10",X"28",X"10",X"1A", + X"FE",X"04",X"28",X"0B",X"E6",X"F8",X"FE",X"08",X"28",X"05",X"21",X"EC",X"E4",X"34",X"C9",X"21", + X"EC",X"E4",X"34",X"7E",X"18",X"B8",X"C9",X"FD",X"7E",X"04",X"CD",X"2A",X"20",X"FD",X"BE",X"05", + X"C8",X"32",X"F3",X"E4",X"FD",X"4E",X"04",X"CD",X"3D",X"21",X"21",X"EE",X"E4",X"BE",X"D0",X"77", + X"3E",X"02",X"32",X"ED",X"E4",X"C9",X"FD",X"7E",X"04",X"CD",X"B6",X"20",X"FD",X"BE",X"05",X"C8", + X"FD",X"4E",X"04",X"32",X"F4",X"E4",X"CD",X"3D",X"21",X"21",X"EE",X"E4",X"47",X"78",X"18",X"00", + X"BE",X"D0",X"77",X"3E",X"03",X"32",X"ED",X"E4",X"C9",X"21",X"EB",X"E4",X"7E",X"FD",X"BE",X"04", + X"30",X"15",X"CD",X"2A",X"20",X"CD",X"D8",X"1F",X"3A",X"EB",X"E4",X"CD",X"B6",X"20",X"CD",X"D8", + X"1F",X"21",X"EB",X"E4",X"34",X"18",X"E5",X"C9",X"FD",X"BE",X"05",X"C8",X"21",X"EB",X"E4",X"4E", + X"CD",X"3D",X"21",X"21",X"EE",X"E4",X"BE",X"D0",X"32",X"EE",X"E4",X"3E",X"01",X"32",X"ED",X"E4", + X"C9",X"21",X"EC",X"E4",X"FD",X"7E",X"04",X"BE",X"30",X"16",X"7E",X"CD",X"2A",X"20",X"CD",X"11", + X"20",X"3A",X"EC",X"E4",X"CD",X"B6",X"20",X"CD",X"11",X"20",X"21",X"EC",X"E4",X"35",X"18",X"E4", + X"C9",X"FD",X"BE",X"05",X"C8",X"21",X"EC",X"E4",X"4E",X"CD",X"3D",X"21",X"21",X"EE",X"E4",X"BE", + X"D0",X"32",X"EE",X"E4",X"3E",X"00",X"32",X"ED",X"E4",X"C9",X"47",X"FD",X"4E",X"05",X"79",X"FE", + X"1D",X"30",X"52",X"61",X"78",X"07",X"07",X"07",X"CB",X"3C",X"1F",X"6F",X"11",X"10",X"D0",X"19", + X"E5",X"11",X"80",X"01",X"19",X"D1",X"EB",X"1A",X"FE",X"04",X"28",X"3A",X"E6",X"F8",X"FE",X"08", + X"28",X"34",X"0C",X"1A",X"24",X"24",X"15",X"EB",X"E6",X"FC",X"FE",X"00",X"28",X"25",X"3A",X"44", + X"E4",X"B8",X"30",X"0D",X"2D",X"2D",X"2D",X"2D",X"1D",X"1D",X"1D",X"1D",X"CD",X"88",X"20",X"18", + X"12",X"20",X"05",X"CD",X"AD",X"20",X"18",X"0B",X"2C",X"2C",X"2C",X"2C",X"1C",X"1C",X"1C",X"1C", + X"CD",X"88",X"20",X"18",X"A9",X"C9",X"79",X"C9",X"7E",X"E6",X"FC",X"FE",X"18",X"28",X"1E",X"7E", + X"E6",X"F8",X"FE",X"08",X"C8",X"24",X"7E",X"E6",X"F8",X"FE",X"08",X"C8",X"1A",X"E6",X"F8",X"FE", + X"10",X"28",X"0A",X"1A",X"FE",X"04",X"28",X"05",X"E6",X"F8",X"FE",X"08",X"C0",X"21",X"45",X"E4", + X"79",X"BE",X"D8",X"F1",X"79",X"C9",X"47",X"FD",X"4E",X"05",X"79",X"FE",X"01",X"28",X"50",X"61", + X"78",X"07",X"07",X"07",X"CB",X"3C",X"1F",X"6F",X"11",X"10",X"D0",X"19",X"E5",X"11",X"80",X"01", + X"19",X"D1",X"EB",X"7E",X"E6",X"F8",X"FE",X"10",X"28",X"09",X"24",X"7E",X"25",X"E6",X"F8",X"FE", + X"10",X"79",X"C0",X"0D",X"15",X"15",X"24",X"EB",X"3A",X"44",X"E4",X"B8",X"30",X"0D",X"2D",X"2D", + X"2D",X"2D",X"1D",X"1D",X"1D",X"1D",X"CD",X"10",X"21",X"18",X"12",X"20",X"05",X"CD",X"35",X"21", + X"18",X"0B",X"2C",X"2C",X"2C",X"2C",X"1C",X"1C",X"1C",X"1C",X"CD",X"10",X"21",X"18",X"AB",X"C9", + X"7E",X"E6",X"FC",X"FE",X"18",X"28",X"1E",X"7E",X"E6",X"F8",X"FE",X"08",X"C8",X"24",X"7E",X"E6", + X"F8",X"FE",X"08",X"C8",X"1A",X"E6",X"F8",X"FE",X"10",X"28",X"0A",X"1A",X"FE",X"04",X"28",X"05", + X"E6",X"F8",X"FE",X"08",X"C0",X"3A",X"45",X"E4",X"B9",X"D8",X"F1",X"79",X"C9",X"47",X"78",X"18", + X"14",X"2A",X"44",X"E4",X"94",X"30",X"02",X"ED",X"44",X"87",X"87",X"87",X"47",X"79",X"95",X"30", + X"02",X"ED",X"44",X"80",X"C9",X"21",X"45",X"E4",X"BE",X"20",X"08",X"79",X"FD",X"96",X"04",X"D0", + X"ED",X"44",X"C9",X"78",X"96",X"30",X"05",X"ED",X"44",X"C6",X"64",X"C9",X"C6",X"C8",X"C9",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"21",X"0E",X"E5",X"7E",X"B7",X"28",X"02",X"35",X"C9",X"34",X"CD",X"BE",X"24",X"21",X"68",X"E5", + X"35",X"20",X"02",X"36",X"17",X"DD",X"21",X"18",X"E5",X"3E",X"14",X"32",X"88",X"E5",X"DD",X"7E", + X"00",X"B7",X"28",X"39",X"DD",X"35",X"00",X"20",X"06",X"DD",X"36",X"01",X"00",X"18",X"2E",X"DD", + X"7E",X"00",X"FE",X"10",X"20",X"04",X"DD",X"36",X"01",X"F4",X"30",X"21",X"FE",X"0F",X"20",X"12", + X"DD",X"7E",X"02",X"DD",X"6E",X"03",X"CD",X"00",X"2D",X"EB",X"CD",X"19",X"30",X"CD",X"69",X"24", + X"18",X"0B",X"CB",X"3F",X"CB",X"3F",X"47",X"3E",X"F7",X"90",X"DD",X"77",X"01",X"01",X"04",X"00", + X"DD",X"09",X"21",X"88",X"E5",X"35",X"20",X"B6",X"C9",X"3A",X"44",X"E4",X"DD",X"BE",X"02",X"20", + X"17",X"DD",X"7E",X"03",X"21",X"45",X"E4",X"96",X"38",X"0E",X"FE",X"03",X"30",X"0A",X"3E",X"00", + X"32",X"48",X"E4",X"AF",X"32",X"50",X"E4",X"C9",X"FD",X"21",X"58",X"E4",X"3A",X"E9",X"E4",X"32", + X"89",X"E5",X"FD",X"7E",X"04",X"DD",X"BE",X"02",X"20",X"18",X"DD",X"7E",X"03",X"FD",X"96",X"05", + X"38",X"10",X"FE",X"03",X"30",X"0C",X"FD",X"36",X"0C",X"FF",X"FD",X"36",X"09",X"2A",X"FD",X"36", + X"0E",X"3C",X"11",X"18",X"00",X"FD",X"19",X"21",X"89",X"E5",X"35",X"20",X"D5",X"C9",X"3A",X"E9", + X"E4",X"32",X"E8",X"E4",X"DD",X"21",X"58",X"E4",X"21",X"6D",X"E5",X"36",X"00",X"3A",X"02",X"E5", + X"B7",X"28",X"08",X"3A",X"E8",X"E4",X"FE",X"01",X"20",X"01",X"34",X"DD",X"7E",X"0E",X"B7",X"28", + X"5B",X"DD",X"35",X"09",X"20",X"25",X"3A",X"6D",X"E5",X"B7",X"28",X"0A",X"AF",X"32",X"02",X"E5", + X"21",X"E9",X"E4",X"35",X"18",X"15",X"DD",X"36",X"09",X"03",X"DD",X"7E",X"0A",X"FE",X"FF",X"20", + X"06",X"DD",X"36",X"0A",X"0C",X"18",X"04",X"DD",X"36",X"0A",X"FF",X"DD",X"35",X"0E",X"20",X"24", + X"FD",X"21",X"40",X"E4",X"FD",X"7E",X"04",X"DD",X"BE",X"04",X"20",X"10",X"FD",X"7E",X"05",X"FE", + X"01",X"38",X"09",X"FE",X"04",X"30",X"05",X"DD",X"34",X"0E",X"18",X"10",X"DD",X"36",X"0C",X"00", + X"DD",X"36",X"0A",X"0C",X"DD",X"7E",X"0E",X"FE",X"30",X"CC",X"48",X"25",X"11",X"18",X"00",X"DD", + X"19",X"21",X"E8",X"E4",X"35",X"20",X"81",X"C9",X"3A",X"6D",X"E5",X"B7",X"20",X"0D",X"3E",X"01", + X"32",X"FF",X"E4",X"01",X"00",X"01",X"CD",X"DB",X"2F",X"18",X"13",X"DD",X"7E",X"04",X"DD",X"6E", + X"05",X"CD",X"00",X"2D",X"15",X"15",X"1A",X"E6",X"FC",X"FE",X"60",X"CC",X"83",X"2F",X"3E",X"04", + X"CD",X"42",X"31",X"DD",X"7E",X"0D",X"B7",X"28",X"04",X"21",X"FC",X"E4",X"35",X"DD",X"36",X"0A", + X"FF",X"11",X"10",X"D1",X"3A",X"68",X"E5",X"87",X"87",X"6F",X"26",X"00",X"19",X"EB",X"06",X"F8", + X"0E",X"08",X"CD",X"71",X"2E",X"EB",X"20",X"0A",X"21",X"68",X"E5",X"35",X"20",X"02",X"36",X"17", + X"18",X"E2",X"3A",X"68",X"E5",X"DD",X"77",X"01",X"DD",X"77",X"04",X"87",X"87",X"87",X"DD",X"77", + X"07",X"AF",X"DD",X"77",X"00",X"DD",X"77",X"02",X"DD",X"77",X"0D",X"3C",X"DD",X"77",X"03",X"DD", + X"77",X"05",X"DD",X"36",X"06",X"08",X"21",X"68",X"E5",X"35",X"20",X"02",X"36",X"17",X"C9",X"3E", + X"01",X"32",X"A7",X"E5",X"21",X"22",X"D2",X"CD",X"A1",X"29",X"3E",X"0E",X"CD",X"3E",X"30",X"21", + X"DE",X"D3",X"11",X"E9",X"26",X"CD",X"2D",X"30",X"21",X"23",X"D2",X"16",X"CB",X"CD",X"DF",X"29", + X"3E",X"1C",X"CD",X"3E",X"30",X"21",X"23",X"D2",X"16",X"CC",X"CD",X"DF",X"29",X"3E",X"1C",X"CD", + X"3E",X"30",X"21",X"23",X"D2",X"16",X"CD",X"CD",X"DF",X"29",X"3E",X"1C",X"CD",X"3E",X"30",X"7A", + X"32",X"6B",X"E5",X"21",X"40",X"E4",X"11",X"41",X"E4",X"01",X"28",X"01",X"36",X"00",X"ED",X"B0", + X"3E",X"01",X"32",X"CD",X"E5",X"32",X"4B",X"E4",X"32",X"49",X"E4",X"3E",X"16",X"32",X"41",X"E4", + X"3E",X"0C",X"32",X"43",X"E4",X"3E",X"00",X"32",X"4A",X"E4",X"32",X"46",X"E4",X"3E",X"1E",X"32", + X"53",X"E4",X"16",X"18",X"1E",X"0C",X"3E",X"01",X"DD",X"21",X"58",X"E4",X"06",X"05",X"DD",X"77", + X"0B",X"DD",X"77",X"09",X"DD",X"72",X"01",X"DD",X"73",X"03",X"DD",X"36",X"0A",X"00",X"DD",X"36", + X"06",X"00",X"C5",X"01",X"18",X"00",X"DD",X"09",X"C1",X"14",X"10",X"E2",X"21",X"80",X"00",X"DB", + X"04",X"CB",X"47",X"20",X"02",X"2D",X"2D",X"22",X"E3",X"E5",X"CD",X"D7",X"63",X"3E",X"05",X"32", + X"E9",X"E4",X"3E",X"03",X"32",X"6A",X"E5",X"3E",X"01",X"32",X"9D",X"E5",X"3E",X"30",X"32",X"89", + X"E5",X"21",X"6B",X"E5",X"34",X"7E",X"FE",X"D0",X"38",X"02",X"36",X"CD",X"56",X"21",X"23",X"D2", + X"CD",X"DF",X"29",X"3E",X"08",X"CD",X"3E",X"30",X"21",X"89",X"E5",X"35",X"20",X"E3",X"3E",X"00", + X"32",X"9D",X"E5",X"3E",X"00",X"32",X"6A",X"E5",X"CD",X"00",X"65",X"3A",X"DE",X"E5",X"CD",X"00", + X"5C",X"06",X"03",X"21",X"DE",X"E5",X"7E",X"B7",X"28",X"05",X"36",X"00",X"04",X"18",X"01",X"34", + X"78",X"32",X"8E",X"E5",X"AF",X"32",X"B8",X"E5",X"32",X"8F",X"E5",X"67",X"6F",X"22",X"91",X"E5", + X"22",X"92",X"E5",X"CD",X"5E",X"5F",X"C3",X"97",X"5D",X"06",X"54",X"4D",X"00",X"3E",X"13",X"CD", + X"42",X"31",X"3E",X"01",X"32",X"A9",X"E5",X"CD",X"5E",X"5F",X"21",X"00",X"52",X"CD",X"51",X"64", + X"21",X"C0",X"D0",X"DD",X"21",X"BE",X"D0",X"0E",X"1F",X"06",X"18",X"7E",X"DD",X"77",X"00",X"2C", + X"7E",X"EE",X"20",X"DD",X"77",X"01",X"2C",X"DD",X"2B",X"DD",X"2B",X"10",X"EE",X"11",X"50",X"00", + X"19",X"11",X"B0",X"00",X"DD",X"19",X"0D",X"20",X"E0",X"21",X"24",X"E0",X"11",X"23",X"E0",X"0E", + X"1F",X"06",X"0C",X"7E",X"07",X"07",X"07",X"07",X"12",X"23",X"1B",X"10",X"F6",X"C5",X"01",X"0C", + X"00",X"09",X"EB",X"01",X"24",X"00",X"09",X"EB",X"C1",X"0D",X"20",X"E5",X"FD",X"21",X"39",X"54", + X"CD",X"F0",X"29",X"3E",X"14",X"CD",X"42",X"31",X"3E",X"01",X"32",X"A6",X"E5",X"CD",X"43",X"5F", + X"3E",X"24",X"CD",X"42",X"31",X"21",X"40",X"E4",X"11",X"41",X"E4",X"01",X"28",X"01",X"36",X"00", + X"ED",X"B0",X"21",X"CD",X"E5",X"34",X"3E",X"01",X"32",X"4B",X"E4",X"32",X"49",X"E4",X"3E",X"06", + X"32",X"44",X"E4",X"3E",X"10",X"32",X"41",X"E4",X"3E",X"1D",X"32",X"43",X"E4",X"3E",X"00",X"32", + X"4A",X"E4",X"32",X"46",X"E4",X"16",X"12",X"1E",X"1F",X"3E",X"01",X"0E",X"05",X"DD",X"21",X"58", + X"E4",X"06",X"04",X"DD",X"77",X"0B",X"DD",X"77",X"09",X"DD",X"71",X"04",X"DD",X"72",X"01",X"DD", + X"73",X"03",X"DD",X"36",X"0A",X"00",X"DD",X"36",X"06",X"00",X"C5",X"01",X"18",X"00",X"DD",X"09", + X"C1",X"14",X"1C",X"10",X"DE",X"CD",X"D7",X"63",X"3E",X"04",X"32",X"E9",X"E4",X"3E",X"02",X"32", + X"6A",X"E5",X"3E",X"01",X"32",X"9D",X"E5",X"3E",X"A8",X"CD",X"3E",X"30",X"3E",X"03",X"CD",X"42", + X"31",X"0E",X"30",X"DD",X"21",X"00",X"E3",X"06",X"0B",X"DD",X"34",X"06",X"DD",X"35",X"0E",X"11", + X"10",X"00",X"DD",X"19",X"10",X"F3",X"3E",X"01",X"CD",X"3E",X"30",X"0D",X"20",X"E5",X"21",X"B6", + X"D5",X"CD",X"9A",X"31",X"21",X"B8",X"D6",X"CD",X"85",X"31",X"21",X"3C",X"D8",X"11",X"2D",X"28", + X"CD",X"2D",X"30",X"3E",X"70",X"CD",X"3E",X"30",X"3E",X"00",X"32",X"9D",X"E5",X"3E",X"00",X"32", + X"6A",X"E5",X"3E",X"13",X"CD",X"42",X"31",X"CD",X"5E",X"5F",X"C3",X"97",X"5D",X"06",X"52",X"45", + X"41",X"44",X"59",X"00",X"3E",X"13",X"CD",X"42",X"31",X"3E",X"01",X"32",X"A9",X"E5",X"CD",X"5E", + X"5F",X"21",X"00",X"E3",X"11",X"01",X"E3",X"01",X"68",X"02",X"36",X"00",X"ED",X"B0",X"21",X"00", + X"E0",X"11",X"01",X"E0",X"01",X"9F",X"02",X"36",X"00",X"ED",X"B0",X"23",X"13",X"01",X"5F",X"00", + X"36",X"01",X"ED",X"B0",X"3E",X"0A",X"32",X"D8",X"E5",X"3E",X"00",X"32",X"A6",X"E5",X"3E",X"14", + X"CD",X"42",X"31",X"CD",X"43",X"5F",X"3E",X"27",X"CD",X"42",X"31",X"06",X"00",X"0E",X"47",X"11", + X"EF",X"28",X"3E",X"01",X"CD",X"3E",X"30",X"3E",X"2E",X"80",X"47",X"30",X"F5",X"1A",X"FE",X"01", + X"20",X"07",X"13",X"1A",X"6F",X"13",X"1A",X"67",X"13",X"1A",X"77",X"FE",X"20",X"28",X"2E",X"3E", + X"17",X"CD",X"42",X"31",X"1A",X"FE",X"32",X"20",X"24",X"AF",X"32",X"CD",X"E5",X"32",X"57",X"E4", + X"3E",X"0B",X"32",X"41",X"E4",X"3E",X"0C",X"32",X"53",X"E4",X"32",X"4A",X"E4",X"3E",X"01",X"32", + X"4B",X"E4",X"32",X"49",X"E4",X"32",X"6A",X"E5",X"3E",X"01",X"32",X"9D",X"E5",X"13",X"23",X"71", + X"23",X"1A",X"B7",X"20",X"AD",X"3E",X"FF",X"CD",X"3E",X"30",X"3E",X"00",X"32",X"9D",X"E5",X"3E", + X"00",X"32",X"6A",X"E5",X"3E",X"13",X"CD",X"42",X"31",X"CD",X"5E",X"5F",X"C3",X"FA",X"26",X"01", + X"30",X"D3",X"43",X"4F",X"4E",X"47",X"52",X"41",X"54",X"55",X"4C",X"41",X"54",X"49",X"4F",X"4E", + X"53",X"21",X"20",X"20",X"20",X"20",X"01",X"1E",X"D5",X"59",X"4F",X"55",X"20",X"20",X"48",X"41", + X"56",X"45",X"20",X"20",X"44",X"4F",X"4E",X"45",X"20",X"20",X"49",X"54",X"20",X"20",X"56",X"45", + X"52",X"59",X"20",X"20",X"57",X"45",X"4C",X"4C",X"2C",X"20",X"20",X"01",X"A8",X"D6",X"48",X"41", + X"56",X"49",X"4E",X"47",X"20",X"20",X"50",X"41",X"53",X"53",X"45",X"44",X"20",X"20",X"54",X"48", + X"52",X"4F",X"55",X"47",X"48",X"20",X"20",X"01",X"2A",X"D8",X"32",X"34",X"20",X"20",X"44",X"41", + X"4E",X"47",X"45",X"52",X"4F",X"55",X"53",X"20",X"20",X"50",X"4C",X"41",X"43",X"45",X"53",X"2E", + X"20",X"20",X"20",X"20",X"01",X"A0",X"D9",X"42",X"55",X"54",X"20",X"20",X"54",X"48",X"45",X"52", + X"45",X"20",X"20",X"41",X"52",X"45",X"20",X"20",X"53",X"54",X"49",X"4C",X"4C",X"20",X"20",X"4F", + X"54",X"48",X"45",X"52",X"20",X"20",X"01",X"28",X"DB",X"45",X"4E",X"45",X"4D",X"49",X"45",X"53", + X"20",X"20",X"4F",X"4E",X"20",X"20",X"59",X"4F",X"55",X"52",X"20",X"20",X"57",X"41",X"59",X"2E", + X"00",X"16",X"88",X"1E",X"04",X"06",X"1E",X"72",X"2C",X"2C",X"14",X"14",X"14",X"14",X"10",X"F7", + X"7A",X"C6",X"89",X"57",X"01",X"44",X"00",X"09",X"1D",X"20",X"EA",X"C9",X"1E",X"04",X"7E",X"E6", + X"F0",X"47",X"7A",X"E6",X"0F",X"B0",X"77",X"23",X"06",X"0E",X"72",X"23",X"10",X"FC",X"7E",X"E6", + X"0F",X"47",X"7A",X"E6",X"F0",X"B0",X"77",X"01",X"09",X"00",X"09",X"1D",X"20",X"E0",X"C9",X"1E", + X"04",X"06",X"1E",X"72",X"2C",X"2C",X"10",X"FB",X"01",X"44",X"00",X"09",X"1D",X"20",X"F2",X"C9", + X"DD",X"21",X"00",X"E3",X"FD",X"7E",X"00",X"B7",X"C8",X"DD",X"77",X"04",X"DD",X"77",X"0C",X"FD", + X"7E",X"01",X"47",X"E6",X"1F",X"DD",X"77",X"00",X"DD",X"77",X"08",X"78",X"E6",X"C0",X"DD",X"77", + X"05",X"EE",X"40",X"DD",X"77",X"0D",X"FD",X"5E",X"02",X"16",X"00",X"2A",X"E3",X"E5",X"19",X"DD", + X"75",X"02",X"DD",X"75",X"0A",X"DD",X"74",X"03",X"DD",X"74",X"0B",X"FD",X"5E",X"03",X"DD",X"73", + X"06",X"DD",X"36",X"07",X"01",X"3E",X"F0",X"93",X"DD",X"77",X"0E",X"DD",X"36",X"0F",X"00",X"11", + X"04",X"00",X"FD",X"19",X"11",X"10",X"00",X"DD",X"19",X"18",X"A9",X"3A",X"6A",X"E5",X"FE",X"01", + X"20",X"05",X"CD",X"5B",X"2A",X"18",X"03",X"CD",X"D4",X"2A",X"C9",X"3A",X"53",X"E4",X"FE",X"0C", + X"20",X"2E",X"11",X"15",X"00",X"2A",X"42",X"E4",X"19",X"22",X"42",X"E4",X"7C",X"2A",X"57",X"E4", + X"26",X"00",X"01",X"9B",X"2B",X"09",X"BE",X"20",X"15",X"23",X"7E",X"32",X"4B",X"E4",X"3E",X"00", + X"32",X"53",X"E4",X"32",X"4A",X"E4",X"3A",X"57",X"E4",X"C6",X"02",X"32",X"57",X"E4",X"18",X"43", + X"3A",X"4B",X"E4",X"FE",X"01",X"20",X"05",X"11",X"F2",X"FF",X"18",X"03",X"11",X"0E",X"00",X"2A", + X"40",X"E4",X"19",X"22",X"40",X"E4",X"7C",X"2A",X"57",X"E4",X"26",X"00",X"01",X"9B",X"2B",X"09", + X"BE",X"20",X"15",X"23",X"7E",X"32",X"4B",X"E4",X"3E",X"0C",X"32",X"53",X"E4",X"32",X"4A",X"E4", + X"3A",X"57",X"E4",X"C6",X"02",X"32",X"57",X"E4",X"3A",X"53",X"E4",X"FE",X"0C",X"28",X"04",X"47", + X"CD",X"F1",X"10",X"C9",X"3A",X"6A",X"E5",X"FE",X"02",X"20",X"65",X"DD",X"21",X"40",X"E4",X"0E", + X"05",X"DD",X"7E",X"0B",X"FE",X"01",X"20",X"1C",X"11",X"F4",X"FF",X"DD",X"6E",X"00",X"DD",X"66", + X"01",X"19",X"DD",X"75",X"00",X"DD",X"74",X"01",X"7C",X"DD",X"BE",X"04",X"20",X"04",X"DD",X"36", + X"0B",X"00",X"18",X"10",X"11",X"0C",X"00",X"DD",X"6E",X"00",X"DD",X"66",X"01",X"19",X"DD",X"75", + X"00",X"DD",X"74",X"01",X"11",X"F9",X"FF",X"DD",X"6E",X"02",X"DD",X"66",X"03",X"19",X"DD",X"75", + X"02",X"DD",X"74",X"03",X"C5",X"DD",X"46",X"06",X"79",X"FE",X"05",X"20",X"05",X"CD",X"F1",X"10", + X"18",X"03",X"CD",X"2E",X"1A",X"C1",X"11",X"18",X"00",X"DD",X"19",X"0D",X"20",X"A3",X"18",X"5A", + X"3A",X"6A",X"E5",X"FE",X"03",X"20",X"53",X"DD",X"21",X"40",X"E4",X"0E",X"06",X"11",X"EC",X"FF", + X"DD",X"6E",X"00",X"DD",X"66",X"01",X"19",X"DD",X"75",X"00",X"DD",X"74",X"01",X"7C",X"FE",X"FE", + X"20",X"04",X"DD",X"36",X"0A",X"FF",X"C5",X"DD",X"46",X"06",X"79",X"FE",X"06",X"20",X"05",X"CD", + X"F1",X"10",X"18",X"03",X"CD",X"2E",X"1A",X"C1",X"11",X"18",X"00",X"DD",X"19",X"0D",X"20",X"CD", + X"3A",X"53",X"E4",X"3C",X"32",X"53",X"E4",X"FE",X"24",X"20",X"0F",X"3E",X"00",X"32",X"53",X"E4", + X"3A",X"57",X"E4",X"3C",X"32",X"57",X"E4",X"CD",X"9D",X"65",X"C9",X"03",X"01",X"06",X"00",X"07", + X"00",X"08",X"00",X"0A",X"00",X"09",X"00",X"0D",X"00",X"0D",X"00",X"10",X"00",X"0F",X"00",X"13", + X"00",X"11",X"00",X"19",X"00",X"32",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"65",X"07",X"07",X"07",X"CB",X"3C",X"1F",X"6F",X"11",X"10",X"D0",X"19",X"E5",X"11",X"80",X"01", + X"19",X"D1",X"EB",X"7E",X"C9",X"67",X"FD",X"21",X"58",X"E4",X"11",X"18",X"00",X"3A",X"E9",X"E4", + X"47",X"FD",X"7E",X"06",X"94",X"FE",X"12",X"30",X"6D",X"FE",X"08",X"38",X"69",X"FD",X"7E",X"07", + X"95",X"30",X"02",X"ED",X"44",X"FE",X"06",X"30",X"5D",X"FD",X"7E",X"0C",X"B7",X"20",X"28",X"FD", + X"7E",X"16",X"B7",X"20",X"22",X"3A",X"4F",X"E4",X"B7",X"28",X"15",X"FD",X"7E",X"0F",X"FE",X"FF", + X"28",X"0E",X"21",X"52",X"E4",X"7E",X"B7",X"20",X"07",X"36",X"01",X"3E",X"0B",X"CD",X"73",X"30", + X"3E",X"06",X"32",X"09",X"E5",X"18",X"2D",X"21",X"0B",X"E5",X"3A",X"44",X"E4",X"BE",X"28",X"24", + X"7F",X"77",X"21",X"0A",X"E5",X"3A",X"4B",X"E4",X"BE",X"20",X"10",X"21",X"0C",X"E5",X"34",X"7E", + X"FE",X"03",X"38",X"05",X"3E",X"13",X"32",X"06",X"E5",X"18",X"09",X"3A",X"4B",X"E4",X"77",X"3E", + X"01",X"32",X"0C",X"E5",X"37",X"C9",X"11",X"18",X"00",X"FD",X"19",X"10",X"84",X"C9",X"C6",X"13", + X"18",X"00",X"67",X"DD",X"E5",X"C1",X"FD",X"21",X"58",X"E4",X"3A",X"E9",X"E4",X"47",X"FD",X"E5", + X"D1",X"7B",X"B9",X"28",X"32",X"FD",X"7E",X"0E",X"B7",X"20",X"2C",X"FD",X"7E",X"06",X"BC",X"30", + X"26",X"C6",X"12",X"BC",X"38",X"21",X"FD",X"7E",X"07",X"95",X"30",X"02",X"ED",X"44",X"FE",X"06", + X"30",X"15",X"DD",X"7E",X"0F",X"FD",X"BE",X"0F",X"20",X"04",X"37",X"C9",X"18",X"09",X"AF",X"FD", + X"96",X"0C",X"D8",X"DD",X"96",X"0C",X"D8",X"11",X"18",X"00",X"FD",X"19",X"10",X"C0",X"C9",X"67", + X"DD",X"E5",X"C1",X"FD",X"21",X"58",X"E4",X"3A",X"E9",X"E4",X"47",X"FD",X"E5",X"D1",X"7B",X"91", + X"5F",X"28",X"26",X"FD",X"7E",X"0E",X"B7",X"20",X"20",X"FD",X"7E",X"07",X"C6",X"07",X"BC",X"38", + X"18",X"D6",X"08",X"BC",X"30",X"13",X"3C",X"BC",X"20",X"04",X"CB",X"7B",X"20",X"0B",X"FD",X"7E", + X"06",X"95",X"30",X"02",X"ED",X"44",X"FE",X"0F",X"D8",X"11",X"18",X"00",X"FD",X"19",X"10",X"CB", + X"C9",X"C6",X"08",X"67",X"DD",X"E5",X"C1",X"FD",X"21",X"58",X"E4",X"3A",X"E9",X"E4",X"47",X"FD", + X"E5",X"D1",X"7B",X"91",X"5F",X"28",X"22",X"FD",X"7E",X"0E",X"B7",X"20",X"1C",X"FD",X"7E",X"07", + X"BC",X"30",X"16",X"C6",X"08",X"BC",X"38",X"11",X"20",X"04",X"CB",X"7B",X"20",X"0B",X"FD",X"7E", + X"06",X"95",X"30",X"02",X"ED",X"44",X"FE",X"0F",X"D8",X"11",X"18",X"00",X"FD",X"19",X"10",X"CF", + X"C9",X"1A",X"A0",X"B9",X"C8",X"E5",X"21",X"80",X"00",X"19",X"7E",X"E1",X"A0",X"B9",X"C9",X"1A", + X"A0",X"B9",X"C0",X"E5",X"21",X"80",X"00",X"19",X"7E",X"E1",X"A0",X"B9",X"C9",X"7E",X"A0",X"B9", + X"C8",X"24",X"7E",X"25",X"A0",X"B9",X"C9",X"7E",X"A0",X"B9",X"C0",X"24",X"7E",X"25",X"A0",X"B9", + X"C9",X"7E",X"B9",X"C8",X"24",X"7E",X"25",X"B9",X"C9",X"1A",X"B9",X"C0",X"E5",X"21",X"80",X"00", + X"19",X"7E",X"E1",X"B9",X"C9",X"C6",X"05",X"18",X"00",X"4F",X"3A",X"47",X"E4",X"B9",X"D0",X"C6", + X"04",X"B9",X"D8",X"3A",X"46",X"E4",X"95",X"30",X"02",X"ED",X"44",X"FE",X"0A",X"D0",X"AF",X"32", + X"50",X"E4",X"C9",X"4F",X"3A",X"46",X"E4",X"C6",X"0E",X"B9",X"D8",X"D6",X"1D",X"30",X"01",X"AF", + X"B9",X"D0",X"3A",X"47",X"E4",X"95",X"30",X"02",X"ED",X"44",X"FE",X"03",X"D0",X"AF",X"32",X"50", + X"E4",X"C9",X"4F",X"3A",X"46",X"E4",X"91",X"30",X"02",X"ED",X"44",X"FE",X"0E",X"D0",X"3A",X"47", + X"E4",X"95",X"30",X"02",X"ED",X"44",X"FE",X"03",X"D0",X"AF",X"32",X"50",X"E4",X"C9",X"EB",X"7E", + X"C6",X"70",X"77",X"2C",X"36",X"0A",X"2C",X"7E",X"C6",X"74",X"77",X"2C",X"36",X"0A",X"01",X"80", + X"00",X"09",X"36",X"0A",X"2D",X"7E",X"C6",X"7C",X"77",X"2D",X"36",X"0A",X"2D",X"7E",X"C6",X"78", + X"77",X"ED",X"42",X"EB",X"C9",X"EB",X"7E",X"C6",X"60",X"77",X"2C",X"36",X"0A",X"2C",X"7E",X"C6", + X"64",X"77",X"2C",X"36",X"0A",X"01",X"80",X"00",X"09",X"36",X"0A",X"2D",X"7E",X"C6",X"6C",X"77", + X"2D",X"36",X"0A",X"2D",X"7E",X"C6",X"68",X"77",X"ED",X"42",X"EB",X"C9",X"EB",X"7E",X"D6",X"70", + X"77",X"2C",X"36",X"05",X"2C",X"7E",X"D6",X"74",X"77",X"2C",X"36",X"05",X"01",X"80",X"00",X"09", + X"36",X"05",X"2D",X"7E",X"D6",X"7C",X"77",X"2D",X"36",X"05",X"2D",X"7E",X"D6",X"78",X"77",X"ED", + X"42",X"EB",X"C9",X"EB",X"7E",X"D6",X"60",X"77",X"2C",X"36",X"05",X"2C",X"7E",X"D6",X"64",X"77", + X"2C",X"36",X"05",X"01",X"80",X"00",X"09",X"36",X"05",X"2D",X"7E",X"D6",X"6C",X"77",X"2D",X"36", + X"05",X"2D",X"7E",X"D6",X"68",X"77",X"ED",X"42",X"EB",X"C9",X"D5",X"07",X"07",X"07",X"CB",X"3C", + X"1F",X"6F",X"11",X"10",X"D0",X"19",X"EB",X"C5",X"CD",X"0E",X"2F",X"C1",X"D1",X"C9",X"EB",X"77", + X"23",X"23",X"77",X"01",X"80",X"00",X"09",X"77",X"2B",X"2B",X"77",X"ED",X"42",X"EB",X"C9",X"21", + X"91",X"E5",X"7E",X"47",X"81",X"27",X"77",X"38",X"36",X"18",X"17",X"21",X"93",X"E5",X"7E",X"81", + X"27",X"77",X"2B",X"7E",X"88",X"27",X"77",X"2B",X"7E",X"47",X"CE",X"00",X"27",X"77",X"38",X"1F", + X"B8",X"C8",X"4F",X"78",X"C6",X"01",X"27",X"47",X"C5",X"FE",X"05",X"20",X"0C",X"21",X"8F",X"E5", + X"34",X"3E",X"12",X"CD",X"42",X"31",X"CD",X"F7",X"31",X"C1",X"78",X"B9",X"38",X"E5",X"C9",X"21", + X"99",X"99",X"22",X"91",X"E5",X"22",X"92",X"E5",X"C9",X"D5",X"EB",X"3A",X"D8",X"E5",X"77",X"2C", + X"2C",X"77",X"01",X"80",X"00",X"09",X"77",X"2D",X"2D",X"77",X"EB",X"D1",X"C9",X"1A",X"B7",X"C8", + X"FE",X"20",X"30",X"03",X"4F",X"18",X"04",X"77",X"2C",X"71",X"2C",X"13",X"18",X"EF",X"32",X"B5", + X"E5",X"3A",X"B5",X"E5",X"A7",X"20",X"FA",X"C9",X"06",X"00",X"D6",X"0A",X"04",X"30",X"FB",X"C6", + X"0A",X"05",X"F5",X"78",X"CD",X"58",X"30",X"F1",X"C6",X"30",X"77",X"23",X"71",X"23",X"C9",X"1A", + X"F5",X"0F",X"0F",X"0F",X"0F",X"CD",X"6A",X"30",X"F1",X"13",X"E6",X"0F",X"C6",X"30",X"77",X"23", + X"71",X"23",X"C9",X"4F",X"06",X"00",X"21",X"28",X"31",X"09",X"56",X"21",X"FE",X"E4",X"5E",X"34", + X"7A",X"32",X"88",X"E5",X"B7",X"28",X"09",X"34",X"7B",X"FE",X"07",X"20",X"03",X"1E",X"00",X"34", + X"CB",X"9E",X"7B",X"32",X"89",X"E5",X"87",X"87",X"87",X"FD",X"21",X"C0",X"E3",X"5F",X"16",X"00", + X"FD",X"19",X"FD",X"36",X"00",X"11",X"FD",X"36",X"08",X"11",X"16",X"15",X"79",X"FE",X"0B",X"38", + X"02",X"16",X"03",X"3A",X"46",X"E4",X"82",X"ED",X"44",X"5F",X"16",X"00",X"2A",X"E3",X"E5",X"19", + X"FD",X"75",X"02",X"FD",X"74",X"03",X"1E",X"00",X"3A",X"88",X"E5",X"B7",X"28",X"0A",X"1C",X"FD", + X"77",X"0C",X"FD",X"75",X"0A",X"FD",X"74",X"0B",X"21",X"1B",X"31",X"09",X"7E",X"FD",X"77",X"04", + X"21",X"35",X"31",X"09",X"46",X"0E",X"00",X"CD",X"DB",X"2F",X"3A",X"47",X"E4",X"C6",X"20",X"6F", + X"26",X"00",X"29",X"FD",X"75",X"06",X"FD",X"74",X"07",X"CB",X"43",X"28",X"0A",X"01",X"F0",X"FF", + X"09",X"FD",X"75",X"0E",X"FD",X"74",X"0F",X"3A",X"89",X"E5",X"4F",X"06",X"00",X"21",X"9E",X"E5", + X"09",X"36",X"70",X"CB",X"43",X"28",X"03",X"23",X"36",X"70",X"C9",X"F8",X"F9",X"FB",X"FC",X"FA", + X"FD",X"FA",X"FD",X"E1",X"E1",X"E1",X"E1",X"E1",X"00",X"00",X"00",X"00",X"00",X"FE",X"FE",X"FF", + X"F0",X"AA",X"AB",X"F1",X"F0",X"02",X"04",X"06",X"08",X"05",X"10",X"15",X"20",X"30",X"50",X"80", + X"10",X"30",X"D5",X"57",X"FE",X"12",X"28",X"08",X"3A",X"A7",X"E5",X"B7",X"28",X"02",X"D1",X"C9", + X"7A",X"E5",X"21",X"BB",X"E5",X"5E",X"16",X"00",X"21",X"BC",X"E5",X"19",X"57",X"1C",X"7B",X"E6", + X"0F",X"32",X"BB",X"E5",X"72",X"E1",X"D1",X"C9",X"3A",X"BA",X"E5",X"21",X"BB",X"E5",X"BE",X"C8", + X"5F",X"16",X"00",X"21",X"BC",X"E5",X"19",X"3C",X"E6",X"0F",X"32",X"BA",X"E5",X"7E",X"D3",X"00", + X"F6",X"80",X"D3",X"00",X"C9",X"11",X"92",X"31",X"CD",X"2D",X"30",X"3A",X"8E",X"E5",X"CD",X"48", + X"30",X"C9",X"06",X"52",X"4F",X"55",X"4E",X"44",X"2D",X"00",X"3A",X"8E",X"E5",X"3D",X"CD",X"EC", + X"31",X"79",X"3C",X"32",X"CC",X"E5",X"0E",X"06",X"FE",X"0A",X"38",X"05",X"CD",X"48",X"30",X"18", + X"05",X"2C",X"2C",X"CD",X"6A",X"30",X"3A",X"CC",X"E5",X"FE",X"04",X"38",X"01",X"AF",X"87",X"87", + X"5F",X"16",X"00",X"E5",X"21",X"D4",X"31",X"19",X"EB",X"E1",X"CD",X"2D",X"30",X"11",X"E4",X"31", + X"CD",X"2D",X"30",X"C9",X"06",X"54",X"48",X"00",X"06",X"53",X"54",X"00",X"06",X"4E",X"44",X"00", + X"06",X"52",X"44",X"00",X"06",X"20",X"42",X"4C",X"4F",X"43",X"4B",X"00",X"0E",X"00",X"0C",X"D6", + X"03",X"30",X"FB",X"0D",X"C6",X"03",X"C9",X"0E",X"1E",X"21",X"56",X"D0",X"3A",X"8F",X"E5",X"CD", + X"6A",X"30",X"C9",X"21",X"26",X"D0",X"11",X"8A",X"E5",X"0E",X"1E",X"1A",X"E6",X"0F",X"CD",X"6A", + X"30",X"13",X"CD",X"5F",X"30",X"1A",X"0F",X"0F",X"0F",X"0F",X"E6",X"0F",X"CD",X"6A",X"30",X"0E", + X"04",X"21",X"18",X"D0",X"3A",X"B8",X"E5",X"B7",X"28",X"03",X"21",X"60",X"D0",X"3A",X"AD",X"E6", + X"B7",X"28",X"26",X"E5",X"21",X"B6",X"E5",X"7E",X"B7",X"20",X"06",X"36",X"16",X"21",X"AD",X"E6", + X"35",X"3A",X"AD",X"E6",X"E1",X"1F",X"30",X"0C",X"36",X"00",X"54",X"5D",X"13",X"01",X"0B",X"00", + X"ED",X"B0",X"18",X"03",X"CD",X"82",X"32",X"18",X"03",X"CD",X"82",X"32",X"11",X"9A",X"E5",X"21", + X"91",X"E5",X"06",X"03",X"1A",X"BE",X"13",X"23",X"20",X"02",X"10",X"F8",X"D0",X"3A",X"A7",X"E5", + X"B7",X"C0",X"01",X"03",X"00",X"11",X"9A",X"E5",X"21",X"91",X"E5",X"ED",X"B0",X"0E",X"06",X"21", + X"38",X"D0",X"11",X"91",X"E5",X"06",X"03",X"CD",X"5F",X"30",X"10",X"FB",X"C9",X"11",X"B8",X"E6", + X"21",X"20",X"D7",X"01",X"40",X"00",X"ED",X"B0",X"21",X"A0",X"D7",X"01",X"40",X"00",X"ED",X"B0", + X"21",X"20",X"D8",X"01",X"40",X"00",X"ED",X"B0",X"21",X"B8",X"D8",X"01",X"0E",X"00",X"ED",X"B0", + X"21",X"38",X"D9",X"01",X"0E",X"00",X"ED",X"B0",X"C9",X"21",X"B8",X"E6",X"11",X"20",X"D7",X"01", + X"40",X"00",X"ED",X"B0",X"11",X"A0",X"D7",X"01",X"40",X"00",X"ED",X"B0",X"11",X"20",X"D8",X"01", + X"40",X"00",X"ED",X"B0",X"11",X"B8",X"D8",X"01",X"0E",X"00",X"ED",X"B0",X"11",X"38",X"D9",X"01", + X"0E",X"00",X"ED",X"B0",X"C9",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"00",X"00",X"32",X"34",X"01",X"35",X"72",X"35",X"4B",X"3C",X"62",X"36",X"CE",X"36",X"45",X"37", + X"89",X"34",X"CA",X"3C",X"A8",X"3B",X"04",X"3E",X"E2",X"35",X"59",X"3D",X"8C",X"3F",X"9B",X"39", + X"A9",X"3E",X"F9",X"38",X"CC",X"3A",X"1E",X"3F",X"2F",X"3A",X"C5",X"37",X"71",X"38",X"7D",X"40", + X"F7",X"3F",X"00",X"01",X"AE",X"E5",X"A4",X"EB",X"A9",X"CF",X"F7",X"A9",X"8D",X"CA",X"AE",X"CA", + X"F7",X"B3",X"F1",X"B9",X"C5",X"E8",X"D2",X"F7",X"BE",X"F7",X"03",X"84",X"8D",X"C5",X"8E",X"92", + X"C2",X"89",X"8D",X"D5",X"CB",X"8E",X"98",X"D2",X"99",X"9D",X"C4",X"D7",X"93",X"98",X"C7",X"04", + X"A6",X"C6",X"EE",X"04",X"B6",X"C8",X"F1",X"04",X"06",X"81",X"88",X"CF",X"07",X"A2",X"C3",X"A7", + X"D3",X"AC",X"D1",X"B7",X"C6",X"D5",X"BC",X"CF",X"0A",X"A4",X"CB",X"A9",X"CA",X"BE",X"C0",X"09", + X"BB",X"CC",X"08",X"AB",X"C3",X"D3",X"B0",X"CC",X"1F",X"00",X"01",X"A4",X"C2",X"A9",X"C1",X"E3", + X"A5",X"CA",X"F1",X"A7",X"D3",X"F6",X"AC",X"CF",X"F6",X"B0",X"95",X"C1",X"E3",X"B4",X"D3",X"F7", + X"B0",X"C6",X"E7",X"CA",X"ED",X"B9",X"EC",X"D4",X"F7",X"BE",X"F7",X"02",X"A4",X"C1",X"C3",X"90", + X"98",X"C0",X"C4",X"B0",X"C5",X"C8",X"04",X"A9",X"C5",X"ED",X"B6",X"CD",X"F1",X"03",X"84",X"8F", + X"C0",X"C4",X"85",X"8B",X"D2",X"8C",X"91",X"CE",X"87",X"93",X"D7",X"85",X"98",X"C9",X"94",X"98", + X"D5",X"94",X"9D",X"D2",X"99",X"9D",X"C7",X"06",X"A1",X"86",X"D7",X"07",X"A2",X"C2",X"A3",X"CF", + X"A5",X"D4",X"A7",X"C1",X"AB",X"C2",X"AE",X"C6",X"CB",X"B7",X"C1",X"C5",X"D7",X"BC",X"C0",X"D7", + X"09",X"BB",X"CA",X"08",X"A6",X"C3",X"A9",X"D1",X"AD",X"C3",X"0A",X"B9",X"D4",X"BE",X"C0",X"D7", + X"1F",X"00",X"01",X"A5",X"CA",X"F2",X"A6",X"E3",X"A8",X"D4",X"F7",X"AB",X"C5",X"F3",X"AF",X"E4", + X"B0",X"CA",X"F1",X"B3",X"D7",X"B5",X"CC",X"F3",X"B7",X"CC",X"D3",X"B9",X"EC",X"D3",X"F7",X"BA", + X"9D",X"CF",X"F0",X"BE",X"F7",X"04",X"AE",X"D4",X"AF",X"D5",X"B0",X"D6",X"B2",X"C4",X"E8",X"03", + X"99",X"9D",X"C2",X"D6",X"9A",X"9D",X"CE",X"D1",X"95",X"98",X"CB",X"D4",X"90",X"94",X"C9",X"CF", + X"8F",X"98",X"C3",X"8B",X"8F",X"CC",X"D1",X"86",X"8E",X"C4",X"85",X"8A",X"C9",X"D3",X"06",X"A1", + X"87",X"D7",X"07",X"A3",X"CE",X"A4",X"C2",X"A9",X"CF",X"AD",X"C1",X"B1",X"D7",X"B8",X"D0",X"BC", + X"D4",X"08",X"A8",X"C6",X"AD",X"CE",X"B2",X"D2",X"09",X"B6",X"C9",X"0A",X"B3",X"D7",X"BE",X"C0", + X"D7",X"1F",X"00",X"01",X"A4",X"C0",X"D0",X"F7",X"A6",X"E1",X"CF",X"F0",X"A8",X"C1",X"C2",X"CE", + X"CF",X"A9",X"D2",X"F6",X"AA",X"C2",X"C3",X"CD",X"CE",X"AC",X"C3",X"C4",X"CC",X"CD",X"AE",X"C3", + X"E5",X"CB",X"ED",X"AF",X"E5",X"CB",X"F7",X"B0",X"C6",X"CA",X"B2",X"C6",X"EA",X"B4",X"C1",X"E3", + X"CD",X"F3",X"B9",X"C5",X"F7",X"BE",X"F7",X"03",X"A4",X"8E",X"D3",X"AF",X"93",X"C2",X"AF",X"95", + X"CE",X"B2",X"95",X"C8",X"B4",X"9A",X"C4",X"D1",X"B4",X"9D",X"C0",X"B9",X"9D",X"CB",X"D5",X"06", + X"A1",X"91",X"C8",X"07",X"A2",X"D1",X"A7",X"D6",X"AC",X"CB",X"AD",X"C0",X"B2",X"C3",X"D3",X"B7", + X"C8",X"08",X"AC",X"C1",X"B1",X"C4",X"B6",X"CE",X"09",X"BB",X"CE",X"0A",X"A9",X"D2",X"D6",X"BE", + X"D7",X"1F",X"01",X"01",X"A6",X"98",X"C9",X"CE",X"A8",X"9A",X"C1",X"C4",X"D3",X"D6",X"A8",X"C2", + X"C3",X"D4",X"D5",X"AF",X"C2",X"C3",X"D4",X"D5",X"B2",X"CB",X"CC",X"B9",X"C1",X"E5",X"C9",X"CA", + X"CD",X"CE",X"D2",X"F6",X"BB",X"9D",X"C6",X"D1",X"BE",X"F7",X"02",X"B9",X"CB",X"CC",X"04",X"A8", + X"C6",X"C7",X"D0",X"D1",X"B3",X"C6",X"E8",X"CF",X"F1",X"03",X"A6",X"8A",X"C8",X"CF",X"A8",X"94", + X"C5",X"D2",X"B2",X"98",X"CA",X"CD",X"B6",X"9D",X"C8",X"CF",X"A8",X"9D",X"C0",X"D7",X"06",X"A1", + X"91",X"CA",X"CD",X"07",X"A6",X"C2",X"D5",X"AD",X"C3",X"D4",X"B7",X"C2",X"CB",X"D5",X"08",X"A5", + X"C4",X"D3",X"B6",X"CC",X"BB",X"C7",X"09",X"BB",X"CC",X"0A",X"A6",X"CE",X"BE",X"C5",X"BE",X"D2", + X"0D",X"8E",X"C2",X"C3",X"D4",X"D5",X"98",X"C2",X"C3",X"D4",X"D5",X"98",X"CB",X"CC",X"91",X"CA", + X"ED",X"1F",X"00",X"01",X"A4",X"C0",X"C2",X"C4",X"C6",X"C8",X"CA",X"CC",X"CE",X"D0",X"D2",X"D4", + X"A9",X"8B",X"C0",X"C2",X"C4",X"C6",X"C8",X"CA",X"CC",X"CE",X"D0",X"D2",X"D4",X"AF",X"C0",X"C2", + X"C4",X"C6",X"C8",X"CA",X"CC",X"CE",X"D0",X"D2",X"D4",X"A4",X"93",X"D6",X"B4",X"C1",X"F6",X"BE", + X"F7",X"02",X"B9",X"C1",X"F6",X"03",X"A4",X"93",X"C1",X"C3",X"C5",X"C7",X"C9",X"CB",X"CD",X"CF", + X"D1",X"D3",X"D5",X"B4",X"9D",X"C0",X"06",X"A1",X"9D",X"D7",X"07",X"A7",X"C0",X"C8",X"D0",X"AD", + X"C4",X"CC",X"D4",X"B2",X"C0",X"B7",X"C6",X"CA",X"CE",X"BC",X"C1",X"D6",X"08",X"A1",X"CA",X"D3", + X"B6",X"C8",X"D0",X"09",X"BB",X"C8",X"0A",X"A4",X"C0",X"A9",X"C0",X"AF",X"C0",X"1F",X"00",X"01", + X"A5",X"C0",X"E2",X"C6",X"EB",X"CE",X"F0",X"AD",X"91",X"D3",X"D6",X"AD",X"D7",X"AF",X"C1",X"EA", + X"B0",X"D4",X"B0",X"94",X"D5",X"B4",X"C0",X"E3",X"CA",X"EC",X"B5",X"D3",X"F6",X"B9",X"C0",X"E6", + X"BE",X"F7",X"04",X"A2",X"C4",X"C5",X"A5",X"D2",X"F7",X"A9",X"C4",X"E8",X"B6",X"CE",X"F0",X"03", + X"A5",X"8A",X"C3",X"A5",X"9D",X"D1",X"A7",X"95",X"C9",X"AF",X"93",X"C0",X"B2",X"9D",X"D7",X"B4", + X"98",X"C4",X"CD",X"B9",X"9D",X"C7",X"06",X"A1",X"86",X"CC",X"07",X"A3",X"C0",X"C6",X"D0",X"AD", + X"C6",X"CA",X"AE",X"D4",X"B1",X"CF",X"B3",X"D3",X"D6",X"B7",X"C1",X"BC",X"C1",X"CD",X"D6",X"08", + X"A2",X"C1",X"C9",X"CF",X"AC",X"C3",X"09",X"BB",X"CB",X"0A",X"A5",X"CA",X"B5",X"D4",X"BE",X"C0", + X"0D",X"8F",X"D4",X"D5",X"1F",X"00",X"01",X"A4",X"C1",X"E8",X"A6",X"CA",X"EE",X"D2",X"F7",X"A8", + X"8A",X"CE",X"A9",X"C2",X"E7",X"AB",X"CE",X"F7",X"AD",X"92",X"D6",X"B1",X"D2",X"F4",X"B0",X"95", + X"C2",X"E4",X"C7",X"B2",X"C6",X"B4",X"C5",X"C6",X"B7",X"CE",X"F2",X"B6",X"D6",X"D7",X"B9",X"C5", + X"BE",X"F7",X"02",X"AB",X"9A",X"CB",X"AB",X"CC",X"B1",X"9A",X"CC",X"B9",X"C1",X"E4",X"C6",X"EA", + X"04",X"AE",X"CC",X"F1",X"03",X"A4",X"9D",X"C0",X"A4",X"98",X"C9",X"A6",X"8A",X"CF",X"D4",X"B0", + X"95",X"D7",X"B1",X"9D",X"D5",X"06",X"A1",X"85",X"D2",X"07",X"A4",X"CF",X"D3",X"D7",X"A6",X"D1", + X"A7",X"C2",X"C7",X"A9",X"CB",X"CC",X"D7",X"AE",X"D7",X"AF",X"CC",X"D3",X"B2",X"C5",X"B5",X"D0", + X"08",X"A1",X"C4",X"A3",X"CC",X"A8",X"D2",X"09",X"BB",X"CC",X"0A",X"A9",X"C6",X"B1",X"D3",X"BE", + X"D7",X"0E",X"93",X"C5",X"1F",X"01",X"01",X"A5",X"C0",X"E2",X"C4",X"A8",X"D3",X"F6",X"AA",X"C6", + X"F1",X"AA",X"8C",X"D5",X"AB",X"C1",X"E3",X"AA",X"9D",X"C6",X"AA",X"9A",X"D1",X"AD",X"D3",X"F7", + X"AF",X"C7",X"E9",X"CD",X"EF",X"AF",X"94",X"D3",X"B0",X"92",X"C3",X"B2",X"C0",X"E2",X"B3",X"D3", + X"F7",X"B4",X"96",X"C5",X"C9",X"CD",X"B6",X"98",X"C4",X"B7",X"C7",X"F0",X"B8",X"9A",X"C3",X"B9", + X"D2",X"B8",X"D5",X"F7",X"BC",X"C2",X"D3",X"BE",X"C0",X"F7",X"04",X"A7",X"C4",X"C5",X"A5",X"D1", + X"F3",X"AC",X"C8",X"EF",X"B1",X"C7",X"EF",X"AA",X"D2",X"03",X"A1",X"84",X"C0",X"A8",X"8C",X"D7", + X"A9",X"C3",X"AA",X"8D",X"CB",X"AB",X"91",X"C0",X"AC",X"96",X"D0",X"AD",X"92",X"D6",X"B1",X"96", + X"CB",X"B2",X"9D",X"C1",X"B3",X"97",X"D5",X"B4",X"96",X"C7",X"CE",X"B8",X"9D",X"D4",X"06",X"A5", + X"89",X"C3",X"07",X"AB",X"D4",X"AD",X"C7",X"CF",X"B1",X"D4",X"B5",X"C8",X"CA",X"CC",X"CF",X"B6", + X"C3",X"D7",X"B7",X"D2",X"BC",X"C0",X"C4",X"CA",X"CC",X"D7",X"08",X"A5",X"D4",X"A7",X"C8",X"BB", + X"C5",X"09",X"A8",X"C2",X"0A",X"A5",X"C2",X"BE",X"C0",X"D7",X"0F",X"9D",X"C3",X"E5",X"C7",X"F2", + X"1F",X"00",X"01",X"A4",X"C1",X"C2",X"A9",X"C1",X"E6",X"CA",X"F6",X"A9",X"9B",X"CA",X"AE",X"C0", + X"E7",X"CD",X"F5",X"B0",X"92",X"CD",X"D5",X"B3",X"C4",X"E6",X"CB",X"ED",X"D0",X"F5",X"B5",X"97", + X"C6",X"D5",X"B8",X"C2",X"E6",X"CB",X"F5",X"BA",X"C0",X"E2",X"BD",X"C4",X"C8",X"C9",X"CF",X"F7", + X"02",X"9F",X"C0",X"F7",X"04",X"A3",X"C7",X"F6",X"BA",X"C4",X"E7",X"03",X"A4",X"8D",X"C0",X"A6", + X"88",X"C6",X"A9",X"97",X"C3",X"A9",X"9C",X"D7",X"AE",X"9C",X"C8",X"B3",X"97",X"CF",X"D4",X"BA", + X"9E",X"C3",X"BD",X"CE",X"06",X"A1",X"85",X"C3",X"07",X"A2",X"C1",X"A7",X"D3",X"AC",X"C1",X"C4", + X"CE",X"B1",X"C6",X"CB",X"D1",X"B6",X"C5",X"D0",X"D3",X"B8",X"C0",X"C1",X"BD",X"C0",X"C5",X"CA", + X"08",X"A6",X"CD",X"B0",X"C4",X"BC",X"C6",X"09",X"A1",X"C2",X"0A",X"B3",X"D1",X"AE",X"CD",X"D5", + X"0D",X"99",X"C0",X"C1",X"0F",X"9E",X"C5",X"E7",X"1F",X"00",X"01",X"AA",X"C2",X"CE",X"AC",X"C0", + X"E2",X"AE",X"90",X"C2",X"B1",X"C0",X"E3",X"D3",X"F6",X"B3",X"9D",X"C0",X"B6",X"C1",X"E4",X"CD", + X"B7",X"D0",X"F6",X"B8",X"C7",X"ED",X"B9",X"CD",X"D0",X"D4",X"9B",X"C5",X"D4",X"BC",X"C4",X"C5", + X"D1",X"F7",X"BE",X"C0",X"F7",X"02",X"A5",X"C0",X"E2",X"C4",X"ED",X"AA",X"95",X"CD",X"AC",X"90", + X"CE",X"AF",X"CF",X"D0",X"04",X"A4",X"CE",X"F4",X"A7",X"CA",X"EC",X"AB",X"D0",X"F5",X"AE",X"C4", + X"EC",X"B1",X"CE",X"F1",X"B8",X"C2",X"E4",X"03",X"A1",X"84",X"D5",X"A7",X"90",X"C3",X"A7",X"C9", + X"AA",X"8E",X"CF",X"AB",X"90",X"D6",X"AC",X"97",X"C9",X"B1",X"97",X"CC",X"B4",X"9D",X"CE",X"AE", + X"9B",X"D7",X"B8",X"9D",X"C1",X"C6",X"BA",X"9D",X"CC",X"06",X"A5",X"C3",X"07",X"AA",X"C1",X"CC", + X"AD",X"D0",X"AF",X"C5",X"C8",X"CB",X"C0",X"B4",X"C1",X"B5",X"D2",X"BA",X"D1",X"D3",X"D6",X"BC", + X"C3",X"C7",X"CB",X"08",X"A7",X"CE",X"B3",X"C3",X"B4",X"D1",X"BB",X"C9",X"09",X"B5",X"C7",X"0A", + X"AA",X"CE",X"BC",X"D3",X"BC",X"D5",X"0D",X"8B",X"C0",X"C1",X"1F",X"00",X"01",X"A4",X"CC",X"F7", + X"A5",X"C7",X"E9",X"A9",X"CD",X"F6",X"AA",X"C1",X"E4",X"AF",X"C5",X"C7",X"E9",X"B4",X"C4",X"B9", + X"C2",X"C3",X"C7",X"E9",X"CD",X"F7",X"BE",X"C0",X"F7",X"02",X"AA",X"C8",X"EA",X"8B",X"CD",X"F6", + X"AC",X"98",X"CD",X"AC",X"95",X"D6",X"AF",X"CF",X"F4",X"B1",X"93",X"CF",X"B4",X"C8",X"EA",X"CF", + X"F6",X"04",X"A2",X"C1",X"E5",X"03",X"A4",X"88",X"D1",X"A5",X"89",X"CA",X"A5",X"9D",X"C0",X"A9", + X"9D",X"CC",X"A9",X"98",X"D7",X"AA",X"8E",X"C5",X"C7",X"AF",X"93",X"C4",X"CA",X"D5",X"AF",X"98", + X"CE",X"B4",X"98",X"C3",X"C7",X"B9",X"9D",X"C1",X"B9",X"CA",X"06",X"A1",X"86",X"C6",X"BB",X"9D", + X"CA",X"07",X"A2",X"CC",X"D6",X"A3",X"C9",X"A8",X"C2",X"C4",X"C9",X"AD",X"C9",X"D0",X"D3",X"B2", + X"C9",X"D1",X"D3",X"B7",X"C4",X"C9",X"D1",X"BC",X"C2",X"CE",X"D6",X"08",X"A1",X"D4",X"A7",X"C3", + X"A6",X"D4",X"AC",X"CB",X"09",X"A6",X"CB",X"0A",X"A5",X"C9",X"AF",X"C9",X"BE",X"D7",X"1F",X"00", + X"01",X"A7",X"C1",X"C5",X"EA",X"CD",X"F3",X"D5",X"F7",X"A9",X"D6",X"AF",X"C5",X"E8",X"D2",X"F7", + X"B6",X"C0",X"E6",X"B8",X"C6",X"EA",X"CF",X"F1",X"D3",X"D5",X"F7",X"BA",X"D3",X"F7",X"BC",X"D4", + X"F7",X"BD",X"C0",X"EA",X"CF",X"F7",X"02",X"A5",X"D5",X"AF",X"CA",X"F1",X"B8",X"CC",X"ED",X"9F", + X"C0",X"F7",X"04",X"A2",X"C3",X"CB",X"CC",X"D4",X"F7",X"A9",X"C6",X"F3",X"AB",X"D6",X"B0",X"C1", + X"C2",X"B1",X"D2",X"F4",X"B5",X"D2",X"03",X"A1",X"92",X"C0",X"A2",X"86",X"D3",X"A5",X"89",X"C4", + X"A5",X"CA",X"A7",X"8A",X"D4",X"A9",X"8B",X"D5",X"A9",X"8E",X"C5",X"D7",X"AF",X"97",X"C9",X"B4", + X"97",X"D1",X"B6",X"C7",X"B8",X"9E",X"CB",X"CE",X"06",X"A1",X"84",X"CA",X"07",X"A5",X"C1",X"C5", + X"C9",X"CE",X"D1",X"D7",X"AA",X"C7",X"CB",X"D0",X"B4",X"C0",X"C3",X"B6",X"D7",X"B8",X"D4",X"BB", + X"C0",X"C2",X"BD",X"CC",X"08",X"A4",X"C7",X"D0",X"AC",X"D4",X"09",X"B5",X"CC",X"0A",X"A7",X"C1", + X"B8",X"D7",X"BD",X"C0",X"0D",X"86",X"D6",X"D7",X"0E",X"99",X"D4",X"1F",X"01",X"01",X"A2",X"C8", + X"CF",X"D5",X"A3",X"C8",X"D0",X"D4",X"A4",X"C7",X"D4",X"A5",X"C1",X"E6",X"CD",X"D1",X"F3",X"85", + X"CD",X"F0",X"A7",X"C6",X"CD",X"D1",X"A9",X"C6",X"F6",X"AA",X"C0",X"E4",X"AE",X"C6",X"F7",X"AF", + X"C1",X"E4",X"B0",X"93",X"C4",X"C6",X"D1",X"D3",X"B3",X"D4",X"B3",X"95",X"C7",X"D5",X"94",X"C4", + X"B4",X"96",X"C3",X"D1",X"B5",X"97",X"C8",X"B6",X"98",X"C2",X"B6",X"D0",X"D1",X"D5",X"F7",X"B7", + X"9A",X"C9",X"B8",X"9A",X"C1",X"B8",X"CE",X"F1",X"B9",X"C6",X"BA",X"C4",X"CA",X"EE",X"BC",X"C3", + X"C4",X"C7",X"BB",X"9D",X"D5",X"D7",X"BD",X"CF",X"F1",X"BE",X"C0",X"E8",X"CF",X"F7",X"02",X"A5", + X"C0",X"C2",X"C3",X"9F",X"C9",X"EE",X"04",X"A6",X"C7",X"F0",X"B0",X"C7",X"F0",X"B1",X"C1",X"E3", + X"03",X"A5",X"9D",X"C5",X"D2",X"A9",X"8D",X"D7",X"AA",X"8E",X"C3",X"AF",X"9D",X"C0",X"B8",X"CD", + X"BA",X"9E",X"CC",X"BB",X"9D",X"C8",X"BB",X"9E",X"C9",X"06",X"A1",X"88",X"CB",X"BB",X"9D",X"D6", + X"07",X"A3",X"C0",X"C6",X"D3",X"A7",X"C8",X"CE",X"D0",X"D4",X"A8",X"C0",X"B1",X"C8",X"B3",X"CA", + X"CE",X"B2",X"C3",X"B4",X"D6",X"B9",X"D7",X"BA",X"C3",X"BB",X"D1",X"BC",X"C1",X"C6",X"D3",X"BD", + X"CA",X"CE",X"08",X"A2",X"C3",X"BB",X"C2",X"D4",X"09",X"AB",X"CA",X"0A",X"B3",X"D4",X"B8",X"CE", + X"BC",X"C3",X"0D",X"88",X"C7",X"EC",X"CE",X"F0",X"92",X"D4",X"D5",X"95",X"D6",X"D7",X"97",X"CD", + X"EF",X"99",X"CA",X"EC",X"0E",X"9D",X"D6",X"1F",X"00",X"01",X"A4",X"C9",X"F6",X"A6",X"C7",X"E9", + X"A6",X"9B",X"D6",X"A6",X"99",X"C7",X"A9",X"CB",X"F4",X"A9",X"9B",X"D4",X"AB",X"C9",X"EB",X"D4", + X"AD",X"9B",X"C9",X"AC",X"C2",X"C3",X"AE",X"C3",X"E5",X"AE",X"CD",X"F2",X"B0",X"CB",X"ED",X"B0", + X"9B",X"CB",X"D2",X"B1",X"C2",X"C3",X"B3",X"C5",X"CF",X"D0",X"B5",X"CD",X"F0",X"B7",X"99",X"CD", + X"D0",X"B8",X"C2",X"C4",X"C5",X"BA",X"CD",X"F0",X"BD",X"C0",X"E7",X"02",X"9F",X"C0",X"F7",X"04", + X"A1",X"C7",X"E9",X"A4",X"C4",X"C5",X"A7",X"C1",X"C2",X"03",X"A1",X"85",X"C6",X"A4",X"88",X"C3", + X"A7",X"9C",X"C0",X"A4",X"9E",X"D7",X"A9",X"9E",X"D5",X"AE",X"9E",X"D3",X"B3",X"9E",X"D1",X"06", + X"A1",X"86",X"C0",X"07",X"A2",X"CC",X"D2",X"A7",X"CC",X"D1",X"A9",X"C9",X"AA",X"C2",X"AC",X"C5", + X"AC",X"D0",X"AE",X"CC",X"AF",X"C2",X"B1",X"C5",X"CF",X"B3",X"CD",X"B6",X"C2",X"C5",X"B8",X"CE", + X"BB",X"C2",X"C5",X"08",X"A3",X"C8",X"A8",X"CA",X"AD",X"CB",X"B2",X"CE",X"09",X"BA",X"C3",X"0A", + X"A6",X"C7",X"AB",X"C9",X"B0",X"CB",X"0D",X"99",X"CE",X"CF",X"1F",X"00",X"01",X"A5",X"CB",X"ED", + X"D4",X"D5",X"A7",X"C0",X"C1",X"C6",X"E8",X"D5",X"AA",X"D1",X"F5",X"AC",X"C8",X"EE",X"AE",X"90", + X"C8",X"AF",X"CE",X"B1",X"C3",X"EE",X"B9",X"C3",X"E6",X"BE",X"C0",X"F7",X"02",X"A5",X"D1",X"F3", + X"A7",X"89",X"D1",X"B3",X"98",X"C3",X"C6",X"BE",X"C2",X"E5",X"C9",X"ED",X"D0",X"F3",X"D6",X"D7", + X"04",X"A2",X"C0",X"E4",X"C9",X"F1",X"A9",X"CF",X"D0",X"AC",X"CF",X"D0",X"03",X"A5",X"C0",X"A5", + X"9D",X"D6",X"A7",X"92",X"C2",X"B1",X"9D",X"C7",X"06",X"A1",X"84",X"D6",X"07",X"A3",X"D4",X"A5", + X"C1",X"C6",X"C8",X"A8",X"D2",X"D4",X"AF",X"C9",X"CB",X"CD",X"B7",X"C4",X"C5",X"BC",X"C0",X"C5", + X"CE",X"D4",X"08",X"A2",X"CC",X"D2",X"A9",X"CB",X"09",X"BB",X"CB",X"0A",X"A5",X"CB",X"AC",X"C8", + X"BE",X"C0",X"0D",X"89",X"D2",X"F4",X"98",X"C4",X"C5",X"1F",X"00",X"01",X"A5",X"C3",X"F0",X"A7", + X"C9",X"CD",X"AA",X"C0",X"F7",X"AC",X"C9",X"CF",X"AF",X"C6",X"F7",X"B1",X"C9",X"CD",X"C6",X"B2", + X"C0",X"E5",X"B4",X"CA",X"F6",X"B6",X"CD",X"B7",X"C1",X"E6",X"B9",X"C6",X"F7",X"BB",X"CD",X"BE", + X"C0",X"F7",X"02",X"89",X"C9",X"CD",X"8E",X"C9",X"CF",X"93",X"CD",X"B3",X"96",X"C6",X"B3",X"95", + X"C9",X"B8",X"CD",X"BD",X"CD",X"04",X"A2",X"C1",X"C2",X"D2",X"F7",X"03",X"A2",X"89",X"C0",X"A5", + X"89",X"D1",X"AA",X"91",X"C1",X"AA",X"8E",X"D4",X"AF",X"93",X"D1",X"B2",X"96",X"C3",X"B4",X"98", + X"D7",X"B7",X"9D",X"C0",X"B9",X"9D",X"D2",X"06",X"A1",X"84",X"C3",X"07",X"A3",X"C5",X"C9",X"A8", + X"C4",X"CB",X"CF",X"D7",X"AD",X"CB",X"D2",X"D7",X"B0",X"C2",X"B2",X"CB",X"CF",X"B5",X"C1",X"B7", + X"C8",X"CB",X"D5",X"BC",X"C2",X"CB",X"CF",X"08",X"A2",X"CB",X"A7",X"D2",X"B1",X"D3",X"BB",X"C7", + X"09",X"BB",X"C3",X"0A",X"BE",X"CC",X"CE",X"D7",X"1F",X"00",X"01",X"A4",X"C5",X"F2",X"A6",X"88", + X"C5",X"CB",X"D2",X"D3",X"A9",X"C3",X"E7",X"CB",X"CF",X"F3",X"A6",X"D4",X"F6",X"AB",X"8F",X"C3", + X"C7",X"CF",X"A6",X"94",X"D7",X"AB",X"C7",X"EF",X"D3",X"F7",X"AE",X"C1",X"E7",X"B0",X"97",X"C1", + X"C7",X"B0",X"CD",X"F4",X"B2",X"94",X"CD",X"B3",X"9A",X"C4",X"B3",X"C5",X"C6",X"B5",X"CA",X"EE", + X"D1",X"D5",X"F7",X"B6",X"C2",X"C3",X"B7",X"C7",X"EA",X"CE",X"D1",X"F5",X"B9",X"C4",X"E7",X"CA", + X"CE",X"F1",X"BE",X"C0",X"F7",X"02",X"BE",X"C1",X"C3",X"C5",X"C7",X"C9",X"CB",X"CD",X"CF",X"D1", + X"D3",X"D5",X"D7",X"04",X"AD",X"D5",X"03",X"A4",X"88",X"D1",X"A9",X"8F",X"D0",X"B0",X"94",X"CC", + X"D6",X"B5",X"9D",X"CB",X"B5",X"98",X"D0",X"B5",X"D2",X"D4",X"06",X"A1",X"9D",X"C0",X"07",X"A7", + X"C7",X"A9",X"C9",X"CD",X"D5",X"AC",X"C5",X"AE",X"CD",X"D4",X"B3",X"CE",X"B4",X"C2",X"B5",X"C8", + X"D3",X"B7",X"C5",X"CF",X"BC",X"C2",X"D3",X"D7",X"08",X"A1",X"CA",X"A3",X"D4",X"AD",X"D2",X"09", + X"BB",X"C9",X"0A",X"A4",X"C5",X"A4",X"CB",X"AE",X"C1",X"0D",X"85",X"D3",X"F7",X"8A",X"CC",X"EE", + X"96",X"C8",X"C9",X"1F",X"00",X"01",X"A7",X"99",X"D6",X"A7",X"8E",X"D4",X"A7",X"D0",X"F3",X"A9", + X"91",X"D0",X"AA",X"CC",X"EF",X"AC",X"94",X"CC",X"AD",X"C8",X"EB",X"D1",X"F3",X"AF",X"97",X"C8", + X"B0",X"C4",X"E7",X"CD",X"EF",X"B2",X"9B",X"C4",X"B3",X"C0",X"E3",X"C9",X"EB",X"B5",X"9B",X"C0", + X"B6",X"C5",X"E7",X"BA",X"C1",X"E3",X"B2",X"99",X"D3",X"B2",X"D4",X"D5",X"B8",X"D4",X"D5",X"B5", + X"CF",X"F2",X"B7",X"CF",X"B9",X"CC",X"EF",X"BB",X"CC",X"F2",X"BD",X"C7",X"F7",X"02",X"9F",X"C0", + X"F7",X"03",X"A7",X"9C",X"D7",X"A7",X"91",X"D5",X"A7",X"89",X"CF",X"AA",X"8C",X"CB",X"AD",X"8F", + X"C7",X"B0",X"92",X"C3",X"B2",X"94",X"D2",X"B5",X"98",X"CE",X"B9",X"9C",X"CB",X"06",X"A1",X"86", + X"D7",X"BD",X"C6",X"07",X"AB",X"D1",X"D3",X"AE",X"CD",X"CF",X"B1",X"C9",X"CB",X"B0",X"D4",X"B3", + X"D0",X"B4",X"C5",X"C7",X"B7",X"CC",X"B8",X"C1",X"C3",X"B9",X"D0",X"D2",X"BB",X"D3",X"D5",X"C8", + X"CA",X"08",X"A4",X"D2",X"A7",X"CD",X"AA",X"C9",X"BC",X"C0",X"09",X"B5",X"D4",X"0A",X"B3",X"C0", + X"BD",X"D3",X"BA",X"C1",X"0D",X"8C",X"D1",X"F3",X"1F",X"00",X"02",X"9F",X"C0",X"F7",X"04",X"A4", + X"C4",X"CA",X"D2",X"D6",X"A7",X"C1",X"C2",X"C5",X"C8",X"CB",X"D0",X"D3",X"D5",X"AA",X"C6",X"CC", + X"D4",X"AD",X"C2",X"C7",X"CD",X"D0",X"D5",X"B0",X"C1",X"C6",X"C8",X"CB",X"CE",X"D4",X"D6",X"B3", + X"C5",X"C8",X"CA",X"CD",X"CF",X"D3",X"D5",X"B6",X"C1",X"C4",X"C9",X"CC",X"D0",X"D2",X"B9",X"C2", + X"C5",X"CB",X"D4",X"D6",X"03",X"A4",X"87",X"C3",X"D1",X"A4",X"90",X"C9",X"D7",X"A7",X"90",X"C0", + X"A7",X"8D",X"CF",X"AD",X"99",X"C3",X"AD",X"9E",X"D1",X"B6",X"9E",X"C0",X"06",X"A1",X"86",X"C0", + X"07",X"A5",X"CA",X"CF",X"A9",X"C2",X"D2",X"D6",X"AD",X"C6",X"B1",X"D4",X"B4",X"CF",X"BA",X"C5", + X"D4",X"AC",X"CB",X"08",X"AA",X"CC",X"B6",X"C9",X"CC",X"D2",X"09",X"BC",X"CB",X"1F",X"00",X"01", + X"A5",X"87",X"C2",X"C6",X"D1",X"A8",X"98",X"C2",X"F7",X"00",X"A8",X"8D",X"C8",X"AB",X"8D",X"C6", + X"C7",X"AB",X"98",X"C5",X"AE",X"90",X"CB",X"F0",X"AE",X"D3",X"AC",X"D6",X"B5",X"97",X"CD",X"EF", + X"B7",X"CC",X"01",X"AE",X"CD",X"EE",X"B9",X"CD",X"EE",X"BA",X"CC",X"ED",X"BC",X"9E",X"CB",X"ED", + X"02",X"9F",X"C0",X"F7",X"04",X"A2",X"C1",X"F7",X"B9",X"D0",X"F5",X"03",X"A5",X"9E",X"C0",X"AE", + X"9A",X"D6",X"B8",X"9A",X"CF",X"06",X"A1",X"84",X"C0",X"07",X"AF",X"CB",X"D0",X"AE",X"D3",X"08", + X"A5",X"C9",X"CC",X"AB",X"C7",X"BC",X"D2",X"09",X"B5",X"CE",X"0A",X"A8",X"D0",X"AE",X"C6",X"BC", + X"CB",X"0E",X"90",X"CB",X"CC",X"CF",X"D0",X"8F",X"D3",X"99",X"CC",X"1F",X"00",X"01",X"A8",X"95", + X"C0",X"EA",X"A8",X"CC",X"EF",X"AD",X"CB",X"F6",X"B4",X"D1",X"F6",X"B9",X"C0",X"ED",X"BB",X"C5", + X"BC",X"CE",X"BE",X"C0",X"F7",X"00",X"B0",X"93",X"C2",X"E4",X"B3",X"95",X"C9",X"AF",X"95",X"CA", + X"04",X"A3",X"C1",X"EE",X"A5",X"D0",X"F6",X"B1",X"CA",X"F0",X"03",X"A2",X"87",X"C0",X"CF",X"A8", + X"8A",X"CB",X"AA",X"8E",X"CA",X"AE",X"92",X"C9",X"B2",X"95",X"C8",X"B9",X"9D",X"C6",X"CC",X"A5", + X"9D",X"D7",X"06",X"A1",X"84",X"D7",X"07",X"A8",X"D0",X"D2",X"D4",X"B2",X"C2",X"C4",X"B7",X"C2", + X"08",X"AA",X"CE",X"D3",X"B1",X"D3",X"BB",X"D3",X"09",X"BB",X"C9",X"0A",X"B9",X"C0",X"BE",X"C4", + X"BE",X"CD",X"0F",X"9D",X"C0",X"E4",X"1F",X"00",X"01",X"A8",X"C9",X"EC",X"D1",X"F4",X"AC",X"C1", + X"E7",X"AD",X"CE",X"F6",X"B6",X"C1",X"E7",X"B9",X"C9",X"F4",X"A5",X"8A",X"C1",X"AE",X"92",X"C1", + X"B8",X"9D",X"C1",X"B8",X"C7",X"A5",X"87",X"C9",X"CC",X"B1",X"98",X"C9",X"AF",X"9C",X"D6",X"02", + X"B1",X"C2",X"E8",X"BE",X"C0",X"F7",X"BA",X"9D",X"C7",X"04",X"A2",X"C1",X"E8",X"CF",X"F6",X"A5", + X"C2",X"E8",X"AA",X"C9",X"ED",X"B2",X"CB",X"F5",X"03",X"A5",X"9D",X"C0",X"AC",X"90",X"C2",X"A9", + X"8D",X"C8",X"B1",X"98",X"CA",X"B9",X"9D",X"D5",X"A5",X"9A",X"D7",X"06",X"A1",X"84",X"D7",X"07", + X"A4",X"D0",X"D5",X"A6",X"CA",X"D2",X"A8",X"C3",X"C5",X"B5",X"CD",X"D2",X"B8",X"C6",X"BC",X"CD", + X"08",X"A5",X"D4",X"AA",X"D3",X"AE",X"C5",X"BB",X"D0",X"09",X"B3",X"C5",X"0A",X"A8",X"D1",X"B6", + X"C4",X"B6",X"C7",X"0D",X"87",X"CA",X"CB",X"0F",X"9D",X"C2",X"E6",X"D7",X"1F",X"01",X"01",X"A8", + X"95",X"C0",X"E5",X"D1",X"F7",X"AA",X"95",X"C8",X"EE",X"A5",X"C8",X"EE",X"B9",X"C1",X"E5",X"C8", + X"EE",X"D1",X"F6",X"BE",X"C0",X"F7",X"A2",X"84",X"CB",X"00",X"AE",X"91",X"C1",X"C2",X"D6",X"D7", + X"B4",X"C4",X"D2",X"D3",X"CB",X"04",X"A2",X"C0",X"E5",X"D1",X"F7",X"A7",X"C8",X"EE",X"03",X"A5", + X"9A",X"C6",X"D0",X"B9",X"9D",X"C0",X"D7",X"06",X"A1",X"84",X"C6",X"D0",X"07",X"A3",X"C0",X"D7", + X"B0",X"C2",X"D6",X"B4",X"C4",X"CB",X"D2",X"D3",X"BC",X"C4",X"D3",X"08",X"A7",X"CB",X"B6",X"CA", + X"CC",X"09",X"BB",X"CB",X"0A",X"B9",X"C9",X"CB",X"CD",X"0E",X"91",X"C1",X"C2",X"D6",X"D7",X"1F", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"02",X"C0",X"02",X"C1",X"C4",X"06",X"C2",X"04",X"08",X"08",X"08",X"08",X"0C",X"00",X"00",X"00", + X"C8",X"C6",X"10",X"00",X"0C",X"0E",X"0C",X"0E",X"00",X"00",X"00",X"00",X"0A",X"CA",X"CA",X"02", + X"CA",X"0A",X"08",X"08",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"C4",X"06",X"C2",X"04", + X"20",X"AC",X"20",X"AE",X"00",X"00",X"00",X"00",X"16",X"16",X"16",X"16",X"1C",X"1E",X"1C",X"1E", + X"B4",X"00",X"00",X"00",X"B4",X"B5",X"B4",X"B5",X"16",X"18",X"1A",X"20",X"18",X"1A",X"20",X"20", + X"1A",X"18",X"16",X"16",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"14",X"12",X"B0",X"B2", + X"A0",X"9C",X"9E",X"A0",X"00",X"00",X"00",X"00",X"A6",X"A6",X"A6",X"A6",X"A1",X"A0",X"A1",X"A0", + X"A0",X"00",X"00",X"00",X"A0",X"A1",X"A0",X"A1",X"A6",X"A6",X"A0",X"A0",X"A6",X"A6",X"A6",X"A0", + X"A6",X"A6",X"A6",X"A6",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"A2",X"38",X"A4",X"36", + X"92",X"90",X"8E",X"00",X"00",X"00",X"00",X"00",X"3A",X"3A",X"3A",X"3A",X"98",X"99",X"98",X"99", + X"99",X"00",X"00",X"00",X"98",X"99",X"98",X"99",X"98",X"99",X"92",X"92",X"3C",X"3C",X"3C",X"3C", + X"3C",X"3C",X"3C",X"3A",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"94",X"96",X"94",X"96", + X"B6",X"BA",X"B6",X"BA",X"E6",X"E8",X"EA",X"EC",X"22",X"22",X"22",X"22",X"24",X"24",X"24",X"24", + X"EE",X"00",X"00",X"00",X"EE",X"EF",X"EE",X"EF",X"E4",X"E2",X"B6",X"B6",X"E2",X"E4",X"B6",X"B6", + X"E4",X"E2",X"22",X"22",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"DD",X"DE",X"DF",X"DE",X"00",X"00",X"00",X"00",X"DE",X"A7",X"DE",X"A7",X"40",X"40",X"40",X"40", + X"BF",X"00",X"00",X"00",X"DD",X"BF",X"DD",X"BF",X"DD",X"3E",X"BC",X"DF",X"A7",X"DE",X"A7",X"DE", + X"DE",X"A7",X"DE",X"A7",X"DD",X"34",X"DD",X"00",X"DD",X"34",X"DD",X"DD",X"DE",X"DF",X"DE",X"DD", + X"80",X"84",X"82",X"00",X"00",X"00",X"00",X"00",X"8A",X"8A",X"8A",X"8A",X"2A",X"2A",X"2A",X"2A", + X"8C",X"00",X"00",X"00",X"8C",X"8D",X"8C",X"8D",X"8C",X"84",X"82",X"80",X"8A",X"8A",X"8A",X"8A", + X"8A",X"8A",X"8A",X"8A",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"86",X"28",X"88",X"26", + X"CE",X"CC",X"CE",X"CC",X"30",X"32",X"30",X"32",X"CE",X"CF",X"CE",X"CF",X"CE",X"CF",X"CE",X"CF", + X"CF",X"00",X"00",X"00",X"CE",X"CF",X"CE",X"CF",X"CE",X"CF",X"CE",X"CF",X"CE",X"CF",X"CE",X"CF", + X"CE",X"CF",X"CE",X"CF",X"2C",X"2E",X"30",X"00",X"2E",X"2C",X"CE",X"00",X"00",X"00",X"00",X"00", + X"D0",X"D1",X"D0",X"D1",X"00",X"00",X"00",X"00",X"D4",X"D4",X"D4",X"D4",X"D4",X"D4",X"D4",X"D4", + X"D8",X"00",X"00",X"00",X"D4",X"D4",X"D4",X"D4",X"D8",X"D0",X"D1",X"00",X"D4",X"D4",X"D4",X"D4", + X"D4",X"D4",X"D4",X"D4",X"D1",X"DB",X"D9",X"D5",X"D5",X"D9",X"DB",X"D1",X"D5",X"D7",X"D5",X"D7", + X"00",X"00",X"00",X"00",X"41",X"40",X"41",X"40",X"00",X"40",X"00",X"40",X"00",X"00",X"00",X"00", + X"01",X"01",X"00",X"00",X"00",X"00",X"40",X"40",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"00", + X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"41",X"40",X"41",X"40", + X"00",X"01",X"00",X"01",X"00",X"00",X"00",X"00",X"00",X"40",X"00",X"40",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"40",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"40",X"40",X"41",X"41", + X"00",X"01",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"40",X"00",X"40",X"00",X"00",X"40",X"40", + X"00",X"00",X"00",X"00",X"00",X"00",X"40",X"40",X"40",X"40",X"00",X"00",X"00",X"40",X"00",X"00", + X"00",X"40",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"41",X"40",X"41",X"40", + X"01",X"01",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"40",X"00",X"40",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"00",X"40",X"00",X"00", + X"00",X"40",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"41",X"41",X"41",X"41", + X"01",X"01",X"01",X"01",X"41",X"41",X"41",X"41",X"00",X"40",X"00",X"40",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"01", + X"01",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"40",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"40",X"40",X"00",X"00",X"40",X"00",X"40", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"40",X"00",X"00",X"01",X"01",X"00",X"00",X"40",X"40", + X"00",X"00",X"40",X"40",X"00",X"40",X"00",X"00",X"00",X"00",X"00",X"00",X"C0",X"81",X"80",X"80", + X"01",X"01",X"01",X"00",X"00",X"00",X"00",X"00",X"01",X"41",X"01",X"41",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"01",X"01",X"41",X"01",X"01", + X"01",X"41",X"01",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"41",X"40",X"41",X"40", + X"40",X"41",X"40",X"41",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"01",X"00",X"01",X"00",X"00",X"00",X"00",X"00",X"40",X"00",X"40",X"00",X"00",X"40",X"40", + X"00",X"00",X"00",X"00",X"00",X"40",X"00",X"40",X"00",X"00",X"01",X"00",X"00",X"40",X"00",X"40", + X"00",X"40",X"00",X"40",X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"00",X"01",X"00", + X"FE",X"00",X"FE",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FE",X"FE",X"00", + X"FE",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"F5",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"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"FA",X"FC",X"F5",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"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"F8",X"00",X"00",X"00",X"00", + X"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"FC",X"FC",X"FC", + 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"FF",X"FF",X"01",X"01",X"FF",X"FF", + X"01",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"FE",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"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"FE",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"FD",X"FD",X"FD",X"00",X"00",X"00",X"00",X"00",X"F8",X"08",X"F8",X"08",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FD",X"FD",X"FD",X"F8",X"08",X"F8",X"F8", + X"F8",X"08",X"F8",X"F8",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"00",X"03",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"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"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"FC",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"FC",X"F8",X"F8",X"FC",X"FC",X"F8",X"F8",X"FC",X"FC",X"00",X"FC",X"00", + X"00",X"00",X"00",X"00",X"FD",X"00",X"FD",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"F0",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"10",X"10",X"00", + X"10",X"00",X"00",X"00",X"10",X"10",X"10",X"10",X"10",X"10",X"10",X"10",X"FD",X"00",X"FD",X"00", + X"00",X"FF",X"00",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"FE",X"FE", + X"00",X"10",X"10",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FE",X"00",X"01",X"00", + X"10",X"10",X"10",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"10",X"10",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"04",X"04",X"04",X"04", + X"02",X"02",X"02",X"02",X"01",X"01",X"01",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"02",X"02",X"02",X"02",X"02",X"02",X"02",X"00", + X"02",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"10",X"10",X"10",X"10",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"08",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"10",X"00",X"00", + X"10",X"10",X"10",X"00",X"00",X"00",X"00",X"00",X"10",X"10",X"10",X"10",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"10",X"10",X"10",X"10",X"10",X"10",X"10", + X"10",X"10",X"10",X"10",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"04",X"00",X"04",X"00", + X"10",X"10",X"10",X"10",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"10",X"10",X"10",X"10",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"10",X"10",X"10",X"10",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"10",X"10",X"10",X"10",X"10",X"10",X"10",X"10",X"10",X"10",X"10",X"10", + X"00",X"FF",X"00",X"FF",X"F8",X"00",X"F8",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"F8",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"04",X"00",X"00",X"00", + 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"F8",X"00",X"F8",X"00", + X"00",X"FC",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"08",X"08",X"00",X"08",X"09",X"00",X"00", + X"08",X"08",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"F8",X"F8", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"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"00",X"00",X"00",X"00",X"00",X"00", + X"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"00",X"F8",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"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"00",X"00",X"04",X"04",X"07",X"07", + X"04",X"04",X"04",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"F8",X"F8",X"F8",X"F8", + X"FC",X"FC",X"FC",X"FC",X"FC",X"FC",X"FC",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"F9",X"FD",X"FC",X"FC",X"FD",X"FD",X"FC",X"00", + X"FD",X"FD",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"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"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"F8",X"00",X"F8",X"00",X"00",X"00",X"F9",X"F9",X"F9",X"F9", + X"00",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"04",X"FF",X"00",X"00",X"00",X"03",X"03", + X"00",X"00",X"FD",X"FD",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"F8",X"08",X"F8",X"08", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"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"F8",X"F8",X"FC",X"00",X"00",X"F8",X"F9",X"F8",X"F9", + X"00",X"00",X"00",X"00",X"08",X"00",X"08",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"08",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"08",X"00",X"08",X"00", + X"00",X"04",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"00",X"00",X"00",X"00",X"00",X"00",X"08",X"08", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"08",X"00",X"08",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"05",X"05",X"05",X"05", + X"04",X"04",X"04",X"04",X"FC",X"FC",X"FC",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"07",X"07",X"04",X"04",X"07",X"07",X"04",X"00", + X"07",X"07",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"08",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"10",X"00",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"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"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"0C",X"07",X"01",X"08",X"07",X"01",X"00",X"08",X"07",X"01",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"06",X"06",X"06",X"06",X"08",X"08",X"08",X"01",X"0A",X"06",X"00",X"00", + X"0A",X"06",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"07",X"08",X"09",X"07", + X"08",X"08",X"01",X"00",X"06",X"06",X"06",X"01",X"06",X"06",X"06",X"01",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"05",X"04",X"03",X"03",X"08",X"08",X"01",X"00",X"06",X"06",X"06",X"00", + X"06",X"06",X"06",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"04",X"03",X"04", + X"08",X"08",X"01",X"00",X"0A",X"06",X"00",X"00",X"0A",X"06",X"01",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"08",X"06",X"06",X"04",X"05",X"05",X"05",X"05", + X"05",X"05",X"05",X"05",X"06",X"08",X"04",X"00",X"06",X"08",X"04",X"00",X"04",X"03",X"04",X"04", + X"08",X"08",X"04",X"00",X"06",X"06",X"06",X"00",X"06",X"06",X"06",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"05",X"05",X"05",X"05",X"08",X"08",X"08",X"02",X"05",X"05",X"05",X"00", + X"05",X"05",X"05",X"00",X"04",X"04",X"04",X"00",X"04",X"04",X"04",X"00",X"00",X"00",X"00",X"00", + X"08",X"0C",X"08",X"00",X"05",X"05",X"05",X"00",X"05",X"05",X"05",X"00",X"04",X"04",X"04",X"04", + X"04",X"04",X"04",X"04",X"05",X"05",X"05",X"05",X"43",X"03",X"20",X"FF",X"A3",X"FF",X"A3",X"FF", + X"A2",X"FF",X"A2",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"83",X"83",X"A3",X"FF",X"A3",X"A3",X"FF",X"FF",X"A2",X"A2",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"43",X"A0",X"FF",X"FF",X"A3",X"A3",X"A3",X"FF", + X"A2",X"A2",X"A2",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"43",X"A0",X"FF",X"FF",X"A3",X"A3",X"A3",X"FF",X"A2",X"A2",X"A2",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"43",X"A0",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"A2",X"A2",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"FF",X"83",X"20",X"20",X"A3",X"A3",X"A3",X"A3",X"A2",X"A2",X"A2",X"A2",X"FF",X"FF",X"FF",X"00", + X"FF",X"FF",X"FF",X"FF",X"00",X"00",X"00",X"00",X"43",X"A0",X"A0",X"FF",X"A3",X"A3",X"A3",X"FF", + X"A2",X"A2",X"A2",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"03",X"23",X"20",X"20",X"23",X"23",X"23",X"FF",X"22",X"22",X"22",X"FF",X"FF",X"FF",X"FF",X"00", + X"FF",X"FF",X"FF",X"00",X"00",X"00",X"00",X"00",X"FF",X"03",X"20",X"FF",X"23",X"23",X"23",X"FF", + X"22",X"22",X"22",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"07",X"06",X"07",X"06",X"00",X"04",X"04",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"05",X"06",X"07",X"08", + X"00",X"05",X"05",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"01",X"05",X"04",X"02",X"00",X"05",X"05",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"03",X"03",X"03", + X"00",X"08",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"08",X"02",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"04",X"00",X"00",X"04",X"00",X"00",X"04",X"04",X"00",X"04", + X"00",X"05",X"05",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"04",X"04",X"04",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"03",X"03",X"00",X"00",X"03",X"03",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"02",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"04",X"00",X"04", + X"00",X"04",X"00",X"04",X"04",X"04",X"04",X"04",X"00",X"00",X"00",X"00",X"FC",X"FA",X"00",X"00", + X"02",X"06",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"F8",X"F8",X"00",X"FA",X"F7",X"00",X"00",X"01",X"07",X"07",X"00",X"00",X"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"00",X"00",X"FC",X"FC",X"FC",X"FC", + X"04",X"04",X"04",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"F8",X"00",X"00",X"FC",X"FC",X"F9",X"00",X"04",X"04",X"04",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"F8",X"00",X"00",X"F8",X"F9",X"00",X"00", + X"00",X"08",X"07",X"00",X"00",X"00",X"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"F8",X"FC",X"FC",X"FC",X"FC",X"04",X"04",X"04",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"F8",X"00",X"00",X"FC",X"FC",X"F9",X"00", + X"04",X"04",X"07",X"00",X"00",X"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"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"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"02",X"51",X"01",X"01",X"00",X"03",X"92",X"D4",X"01",X"01",X"18",X"03",X"0F",X"D0",X"D5",X"CF", + X"D2",X"01",X"02",X"18",X"03",X"0E",X"D0",X"D1",X"D5",X"D3",X"01",X"03",X"18",X"03",X"0C",X"D0", + X"D1",X"D2",X"D4",X"D5",X"D3",X"01",X"04",X"18",X"03",X"0A",X"D0",X"D1",X"D2",X"D4",X"D4",X"D4", + X"D5",X"D3",X"01",X"05",X"27",X"D5",X"D3",X"01",X"06",X"27",X"D5",X"D3",X"01",X"07",X"28",X"D3", + X"01",X"08",X"28",X"D3",X"01",X"09",X"27",X"D5",X"D3",X"01",X"0A",X"27",X"D5",X"D3",X"01",X"0B", + X"27",X"D5",X"D3",X"01",X"0C",X"27",X"D5",X"D3",X"01",X"0D",X"27",X"D5",X"D3",X"01",X"0E",X"27", + X"D5",X"D3",X"01",X"0F",X"27",X"D5",X"D3",X"01",X"10",X"27",X"D5",X"D3",X"01",X"11",X"27",X"D5", + X"D3",X"01",X"12",X"27",X"D5",X"D3",X"02",X"53",X"01",X"07",X"26",X"CA",X"01",X"08",X"25",X"CB", + X"CC",X"02",X"54",X"01",X"07",X"27",X"CD",X"01",X"08",X"27",X"CE",X"02",X"52",X"01",X"05",X"18", + X"03",X"0A",X"EB",X"01",X"06",X"18",X"03",X"0A",X"EB",X"01",X"07",X"18",X"03",X"08",X"EC",X"ED", + X"EB",X"01",X"08",X"18",X"03",X"08",X"5C",X"EE",X"EB",X"01",X"09",X"1E",X"5C",X"5C",X"EE",X"EB", + X"01",X"0A",X"1E",X"5C",X"5C",X"EE",X"EB",X"01",X"0B",X"1E",X"5C",X"5C",X"EE",X"EB",X"01",X"0C", + X"1E",X"5C",X"5C",X"EE",X"EB",X"01",X"0D",X"1E",X"5C",X"5C",X"EE",X"EB",X"01",X"0E",X"1E",X"5C", + X"5C",X"EE",X"EB",X"01",X"0F",X"1E",X"5C",X"5C",X"EE",X"EB",X"01",X"10",X"1E",X"5C",X"5C",X"EE", + X"EB",X"01",X"11",X"1E",X"5C",X"5C",X"EE",X"EB",X"01",X"12",X"1E",X"5C",X"5C",X"EE",X"EB",X"01", + X"13",X"1C",X"FD",X"EF",X"F0",X"F1",X"F2",X"F3",X"01",X"14",X"18",X"03",X"04",X"F8",X"F7",X"F6", + X"F4",X"F5",X"01",X"15",X"18",X"03",X"05",X"F8",X"F7",X"F6",X"F6",X"EF",X"FC",X"01",X"16",X"18", + X"03",X"06",X"F8",X"F7",X"F6",X"F6",X"F4",X"F5",X"01",X"17",X"18",X"03",X"07",X"F8",X"F7",X"F6", + X"F6",X"F6",X"EF",X"FC",X"01",X"18",X"18",X"03",X"08",X"F8",X"F7",X"F6",X"F6",X"F6",X"F4",X"F5", + X"01",X"19",X"18",X"03",X"09",X"F8",X"F7",X"03",X"04",X"F6",X"EF",X"F9",X"01",X"1A",X"18",X"03", + X"0A",X"F8",X"F7",X"03",X"04",X"F6",X"F4",X"F5",X"01",X"1B",X"18",X"03",X"0B",X"F8",X"F7",X"03", + X"05",X"F6",X"EF",X"FC",X"01",X"1C",X"18",X"03",X"0C",X"F8",X"F7",X"03",X"05",X"F6",X"F4",X"F5", + X"01",X"1D",X"18",X"03",X"0D",X"F8",X"F7",X"03",X"06",X"F6",X"EF",X"FC",X"01",X"1E",X"18",X"03", + X"0E",X"F8",X"F7",X"03",X"06",X"F6",X"F4",X"F5",X"01",X"1F",X"18",X"03",X"0F",X"F8",X"F7",X"03", + X"07",X"F6",X"EF",X"02",X"10",X"01",X"09",X"18",X"03",X"06",X"04",X"01",X"0A",X"18",X"03",X"06", + X"04",X"01",X"0B",X"18",X"03",X"06",X"04",X"01",X"0C",X"18",X"03",X"06",X"04",X"01",X"0D",X"18", + X"03",X"06",X"04",X"01",X"0E",X"18",X"03",X"06",X"04",X"01",X"0F",X"18",X"03",X"06",X"04",X"01", + X"10",X"18",X"03",X"06",X"04",X"01",X"11",X"18",X"03",X"06",X"04",X"01",X"12",X"18",X"03",X"06", + X"04",X"01",X"13",X"18",X"03",X"04",X"04",X"02",X"55",X"01",X"13",X"22",X"03",X"05",X"94",X"D5", + X"FA",X"03",X"07",X"94",X"01",X"14",X"20",X"03",X"07",X"94",X"D5",X"FA",X"03",X"07",X"94",X"01", + X"15",X"22",X"03",X"05",X"94",X"D5",X"FA",X"03",X"07",X"94",X"01",X"16",X"23",X"03",X"04",X"94", + X"D5",X"FA",X"03",X"07",X"94",X"01",X"17",X"25",X"94",X"D6",X"D7",X"D8",X"D9",X"03",X"06",X"94", + X"01",X"18",X"26",X"DA",X"DB",X"DC",X"DD",X"DE",X"03",X"05",X"94",X"01",X"19",X"28",X"E0",X"E1", + X"E2",X"E3",X"E4",X"94",X"94",X"94",X"01",X"1A",X"29",X"94",X"94",X"E5",X"E6",X"E3",X"E4",X"94", + X"01",X"1B",X"2B",X"94",X"94",X"E5",X"E6",X"E3",X"01",X"1C",X"2C",X"94",X"94",X"94",X"E5",X"01", + X"1D",X"2E",X"94",X"94",X"01",X"1E",X"2F",X"94",X"00",X"4C",X"0C",X"99",X"00",X"4E",X"0C",X"99", + X"10",X"50",X"0C",X"99",X"20",X"52",X"0C",X"79",X"00",X"54",X"0C",X"79",X"10",X"A8",X"0C",X"79", + X"20",X"A8",X"0C",X"89",X"20",X"70",X"0C",X"59",X"00",X"72",X"0C",X"59",X"10",X"74",X"0C",X"59", + X"20",X"76",X"4C",X"7D",X"00",X"00",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"21",X"2A",X"5C",X"A7",X"28",X"03",X"21",X"5C",X"5C",X"7E",X"32",X"DB",X"E5",X"23",X"22",X"DC", + X"E5",X"C9",X"21",X"DB",X"E5",X"35",X"2A",X"DC",X"E5",X"20",X"0D",X"7E",X"3C",X"28",X"09",X"23", + X"7E",X"32",X"DB",X"E5",X"23",X"22",X"DC",X"E5",X"7E",X"C9",X"0C",X"02",X"78",X"80",X"14",X"02", + X"32",X"80",X"24",X"08",X"32",X"02",X"23",X"20",X"32",X"01",X"5A",X"02",X"1E",X"20",X"0C",X"02", + X"1E",X"20",X"0C",X"02",X"5A",X"20",X"73",X"01",X"24",X"08",X"5A",X"01",X"24",X"08",X"64",X"01", + X"32",X"04",X"5F",X"02",X"23",X"20",X"14",X"80",X"1E",X"08",X"FF",X"FF",X"8C",X"01",X"DC",X"08", + X"19",X"02",X"19",X"01",X"14",X"80",X"14",X"04",X"14",X"80",X"4A",X"02",X"C8",X"01",X"EB",X"02", + X"6E",X"80",X"37",X"02",X"50",X"01",X"14",X"80",X"0A",X"01",X"0A",X"02",X"0F",X"01",X"0A",X"02", + X"05",X"01",X"0A",X"02",X"28",X"08",X"FF",X"FF",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"3E",X"13",X"CD",X"42",X"31",X"CD",X"5E",X"5F",X"3E",X"01",X"32",X"AE",X"E6",X"18",X"04",X"AF", + X"32",X"AE",X"E6",X"3A",X"90",X"E5",X"FE",X"00",X"20",X"05",X"3E",X"20",X"CD",X"42",X"31",X"CD", + X"C9",X"5E",X"3A",X"B7",X"E5",X"B7",X"28",X"35",X"3A",X"AE",X"E6",X"B7",X"20",X"2F",X"CD",X"D6", + X"5E",X"3E",X"02",X"32",X"88",X"E5",X"3E",X"0E",X"CD",X"3E",X"30",X"21",X"2E",X"D6",X"36",X"00", + X"54",X"5D",X"13",X"01",X"27",X"00",X"ED",X"B0",X"3E",X"0E",X"CD",X"3E",X"30",X"CD",X"D6",X"5E", + X"21",X"88",X"E5",X"35",X"20",X"E0",X"3E",X"70",X"CD",X"3E",X"30",X"18",X"35",X"3A",X"90",X"E5", + X"FE",X"00",X"21",X"36",X"D6",X"CC",X"9A",X"31",X"3E",X"02",X"32",X"88",X"E5",X"3E",X"0E",X"CD", + X"3E",X"30",X"21",X"32",X"D7",X"36",X"00",X"54",X"5D",X"13",X"01",X"1B",X"00",X"ED",X"B0",X"3E", + X"0E",X"CD",X"3E",X"30",X"CD",X"C9",X"5E",X"21",X"88",X"E5",X"35",X"20",X"E0",X"3E",X"38",X"CD", + X"3E",X"30",X"3E",X"01",X"32",X"90",X"E5",X"3A",X"8E",X"E5",X"3D",X"CD",X"EC",X"31",X"79",X"3C", + X"32",X"CC",X"E5",X"79",X"E6",X"07",X"3C",X"32",X"CD",X"E5",X"21",X"00",X"00",X"22",X"8A",X"E5", + X"22",X"8B",X"E5",X"21",X"6C",X"E5",X"FE",X"01",X"20",X"09",X"36",X"30",X"3E",X"60",X"32",X"8B", + X"E5",X"18",X"14",X"FE",X"02",X"20",X"09",X"36",X"40",X"3E",X"80",X"32",X"8B",X"E5",X"18",X"07", + X"36",X"50",X"3E",X"01",X"32",X"8A",X"E5",X"79",X"CB",X"3F",X"CB",X"3F",X"CB",X"3F",X"21",X"DF", + X"E5",X"86",X"87",X"5F",X"16",X"00",X"21",X"35",X"5F",X"19",X"5E",X"23",X"56",X"ED",X"53",X"E1", + X"E5",X"3E",X"14",X"CD",X"42",X"31",X"CD",X"80",X"61",X"CD",X"D7",X"63",X"AF",X"32",X"A6",X"E5", + X"CD",X"43",X"5F",X"CD",X"E7",X"62",X"21",X"10",X"D0",X"11",X"ED",X"5E",X"CD",X"2D",X"30",X"CD", + X"03",X"32",X"0E",X"1E",X"21",X"4A",X"D0",X"3A",X"8E",X"E5",X"CD",X"48",X"30",X"CD",X"F7",X"31", + X"0E",X"04",X"11",X"97",X"E5",X"21",X"60",X"D0",X"3A",X"B8",X"E5",X"B7",X"28",X"03",X"21",X"18", + X"D0",X"06",X"03",X"CD",X"5F",X"30",X"10",X"FB",X"0E",X"06",X"11",X"9A",X"E5",X"21",X"38",X"D0", + X"06",X"03",X"CD",X"5F",X"30",X"10",X"FB",X"3A",X"B4",X"E6",X"FE",X"0C",X"20",X"14",X"21",X"BA", + X"E1",X"06",X"07",X"36",X"0D",X"23",X"23",X"23",X"36",X"0D",X"11",X"15",X"00",X"19",X"10",X"F3", + X"18",X"0C",X"FE",X"10",X"20",X"08",X"3E",X"01",X"32",X"FF",X"E4",X"32",X"00",X"E5",X"3A",X"A7", + X"E5",X"B7",X"20",X"43",X"3A",X"AE",X"E6",X"B7",X"20",X"10",X"3A",X"B7",X"E5",X"B7",X"28",X"0A", + X"3E",X"16",X"32",X"B6",X"E5",X"3E",X"18",X"32",X"AD",X"E6",X"3E",X"01",X"32",X"9D",X"E5",X"21", + X"4A",X"E4",X"06",X"0A",X"78",X"C6",X"02",X"E6",X"03",X"20",X"05",X"3E",X"17",X"CD",X"42",X"31", + X"7E",X"FE",X"FF",X"20",X"04",X"36",X"12",X"18",X"02",X"36",X"FF",X"3E",X"09",X"CD",X"3E",X"30", + X"10",X"E2",X"3E",X"26",X"CD",X"42",X"31",X"3E",X"02",X"32",X"9D",X"E5",X"3E",X"15",X"32",X"B1", + X"E6",X"3E",X"01",X"32",X"68",X"E5",X"C3",X"29",X"00",X"21",X"32",X"D7",X"CD",X"85",X"31",X"11", + X"23",X"5F",X"CD",X"2D",X"30",X"C9",X"0E",X"06",X"3A",X"B8",X"E5",X"C6",X"31",X"21",X"2E",X"D6", + X"CD",X"6A",X"30",X"11",X"2B",X"5F",X"CD",X"2D",X"30",X"CD",X"9A",X"31",X"C9",X"06",X"20",X"31", + X"50",X"2D",X"20",X"20",X"20",X"20",X"20",X"20",X"1E",X"3C",X"31",X"30",X"30",X"30",X"30",X"3E", + X"06",X"48",X"49",X"2D",X"20",X"20",X"20",X"20",X"20",X"20",X"1E",X"3C",X"52",X"2D",X"20",X"20", + X"20",X"5E",X"5F",X"2D",X"20",X"3E",X"06",X"32",X"50",X"2D",X"20",X"20",X"20",X"20",X"20",X"20", + X"20",X"20",X"00",X"06",X"20",X"52",X"45",X"41",X"44",X"59",X"00",X"06",X"2D",X"50",X"4C",X"41", + X"59",X"45",X"52",X"20",X"00",X"98",X"00",X"04",X"01",X"10",X"01",X"14",X"01",X"17",X"01",X"21", + X"01",X"26",X"01",X"3E",X"01",X"32",X"74",X"E5",X"AF",X"32",X"73",X"E5",X"CD",X"91",X"5F",X"3E", + X"02",X"CD",X"3E",X"30",X"21",X"73",X"E5",X"34",X"7E",X"FE",X"1E",X"38",X"EF",X"C9",X"DD",X"21", + X"00",X"E3",X"06",X"10",X"DD",X"36",X"04",X"00",X"DD",X"36",X"0C",X"00",X"11",X"10",X"00",X"DD", + X"19",X"10",X"F1",X"AF",X"32",X"74",X"E5",X"32",X"A6",X"E5",X"3E",X"1C",X"32",X"73",X"E5",X"CD", + X"91",X"5F",X"3E",X"02",X"CD",X"3E",X"30",X"21",X"73",X"E5",X"35",X"7E",X"FE",X"FF",X"20",X"EF", + X"C9",X"87",X"4F",X"AF",X"47",X"91",X"57",X"CB",X"21",X"78",X"E6",X"03",X"CC",X"AD",X"5F",X"7A", + X"CB",X"7F",X"20",X"02",X"0D",X"91",X"04",X"80",X"57",X"79",X"B8",X"30",X"EC",X"C5",X"D5",X"CB", + X"38",X"CB",X"38",X"30",X"01",X"04",X"CB",X"39",X"CB",X"39",X"30",X"01",X"0C",X"2E",X"10",X"CD", + X"D2",X"5F",X"3A",X"74",X"E5",X"B7",X"28",X"03",X"0D",X"18",X"01",X"0C",X"CD",X"D2",X"5F",X"D1", + X"C1",X"C9",X"51",X"3E",X"18",X"80",X"FE",X"30",X"DC",X"F1",X"5F",X"3E",X"18",X"90",X"D4",X"F1", + X"5F",X"50",X"3E",X"18",X"81",X"FE",X"30",X"DC",X"F1",X"5F",X"3E",X"18",X"91",X"D4",X"F1",X"5F", + X"C9",X"67",X"7D",X"82",X"FE",X"20",X"DC",X"00",X"60",X"7D",X"92",X"D8",X"CD",X"00",X"60",X"C9", + X"C5",X"D5",X"E5",X"6F",X"3A",X"A6",X"E5",X"B7",X"C2",X"3C",X"61",X"7C",X"CB",X"3F",X"CB",X"12", + X"67",X"22",X"D6",X"E5",X"CD",X"D5",X"62",X"7E",X"FE",X"01",X"20",X"08",X"3A",X"D8",X"E5",X"47", + X"0E",X"1F",X"18",X"11",X"FE",X"02",X"20",X"08",X"3A",X"D9",X"E5",X"47",X"0E",X"1D",X"18",X"05", + X"CD",X"55",X"60",X"0E",X"05",X"2A",X"D6",X"E5",X"7C",X"D5",X"CD",X"00",X"2D",X"D1",X"CB",X"42", + X"28",X"02",X"2C",X"2C",X"3A",X"74",X"E5",X"B7",X"20",X"04",X"06",X"04",X"0E",X"00",X"70",X"2C", + X"71",X"E1",X"D1",X"C1",X"C9",X"FE",X"07",X"38",X"01",X"AF",X"FE",X"03",X"38",X"02",X"3D",X"3D", + X"47",X"3A",X"D6",X"E5",X"B7",X"C8",X"3A",X"D7",X"E5",X"B7",X"28",X"0C",X"2B",X"7E",X"FE",X"07", + X"38",X"01",X"AF",X"FE",X"02",X"38",X"01",X"3D",X"4F",X"2A",X"D6",X"E5",X"2D",X"7C",X"C5",X"CD", + X"D5",X"62",X"C1",X"7E",X"FE",X"04",X"38",X"01",X"AF",X"FE",X"02",X"38",X"01",X"3D",X"5F",X"3A", + X"D7",X"E5",X"B7",X"28",X"0C",X"2B",X"7E",X"FE",X"04",X"38",X"01",X"AF",X"FE",X"02",X"38",X"01", + X"3D",X"6F",X"CB",X"42",X"28",X"0D",X"78",X"87",X"80",X"83",X"4F",X"06",X"00",X"21",X"C7",X"60", + X"09",X"46",X"C9",X"78",X"87",X"80",X"83",X"5F",X"87",X"83",X"85",X"87",X"87",X"81",X"4F",X"06", + X"00",X"21",X"D0",X"60",X"09",X"46",X"C9",X"00",X"03",X"00",X"14",X"15",X"14",X"18",X"1B",X"18", + X"00",X"02",X"00",X"00",X"03",X"03",X"03",X"03",X"00",X"02",X"00",X"00",X"01",X"03",X"01",X"01", + X"03",X"03",X"03",X"03",X"01",X"03",X"01",X"01",X"00",X"02",X"00",X"00",X"03",X"03",X"03",X"03", + X"00",X"02",X"00",X"00",X"10",X"12",X"10",X"10",X"13",X"13",X"13",X"13",X"10",X"12",X"10",X"10", + X"11",X"13",X"11",X"11",X"13",X"13",X"13",X"13",X"11",X"13",X"11",X"11",X"10",X"12",X"10",X"10", + X"13",X"13",X"13",X"13",X"10",X"12",X"10",X"10",X"18",X"1A",X"18",X"18",X"1B",X"1B",X"1B",X"1B", + X"18",X"1A",X"18",X"18",X"19",X"1B",X"19",X"19",X"1B",X"1B",X"1B",X"1B",X"19",X"1B",X"19",X"19", + X"18",X"1A",X"18",X"18",X"1B",X"1B",X"1B",X"1B",X"18",X"1A",X"18",X"18",X"7C",X"CB",X"3F",X"CB", + X"12",X"67",X"E5",X"CD",X"D5",X"62",X"7E",X"E1",X"CB",X"42",X"20",X"04",X"0F",X"0F",X"0F",X"0F", + X"E6",X"0F",X"4F",X"42",X"7C",X"CD",X"00",X"2D",X"2C",X"CB",X"40",X"28",X"02",X"2C",X"2C",X"7E", + X"B1",X"77",X"E6",X"C0",X"20",X"0A",X"2D",X"7E",X"FE",X"04",X"20",X"02",X"36",X"00",X"18",X"0C", + X"FE",X"40",X"20",X"08",X"2D",X"7E",X"FE",X"FD",X"20",X"02",X"36",X"FB",X"E1",X"D1",X"C1",X"C9", + X"21",X"00",X"E0",X"54",X"5D",X"13",X"36",X"00",X"01",X"68",X"05",X"ED",X"B0",X"ED",X"5F",X"CD", + X"EC",X"31",X"32",X"70",X"E5",X"FD",X"21",X"58",X"E4",X"3A",X"8E",X"E5",X"FE",X"19",X"38",X"04", + X"D6",X"18",X"18",X"F8",X"32",X"B4",X"E6",X"6F",X"26",X"00",X"29",X"EB",X"21",X"00",X"34",X"19", + X"5E",X"23",X"56",X"1A",X"32",X"AF",X"E6",X"13",X"AF",X"32",X"7A",X"E5",X"1A",X"CB",X"7F",X"20", + X"07",X"FE",X"1F",X"C8",X"32",X"7A",X"E5",X"13",X"1A",X"CB",X"7F",X"28",X"EF",X"CB",X"77",X"28", + X"03",X"13",X"18",X"F4",X"3E",X"01",X"32",X"79",X"E5",X"1A",X"E6",X"1F",X"32",X"78",X"E5",X"32", + X"77",X"E5",X"1A",X"CB",X"6F",X"28",X"09",X"3E",X"02",X"32",X"79",X"E5",X"21",X"77",X"E5",X"34", + X"AF",X"32",X"75",X"E5",X"13",X"1A",X"E6",X"C0",X"FE",X"80",X"20",X"10",X"1A",X"E6",X"1F",X"32", + X"77",X"E5",X"21",X"78",X"E5",X"96",X"3C",X"32",X"79",X"E5",X"18",X"E8",X"1A",X"E6",X"C0",X"FE", + X"C0",X"20",X"B5",X"1A",X"CB",X"6F",X"20",X"06",X"E6",X"1F",X"32",X"75",X"E5",X"13",X"1A",X"E6", + X"E0",X"FE",X"E0",X"20",X"15",X"1A",X"E6",X"1F",X"32",X"76",X"E5",X"13",X"3A",X"76",X"E5",X"21", + X"75",X"E5",X"BE",X"38",X"D7",X"CD",X"3F",X"62",X"18",X"F2",X"CD",X"3F",X"62",X"18",X"CD",X"3A", + X"7A",X"E5",X"FE",X"04",X"28",X"7F",X"FE",X"0B",X"30",X"04",X"FE",X"07",X"30",X"42",X"FE",X"06", + X"28",X"1D",X"3A",X"79",X"E5",X"B7",X"28",X"78",X"21",X"77",X"E5",X"4E",X"47",X"C5",X"3A",X"75", + X"E5",X"69",X"CD",X"D5",X"62",X"C1",X"3A",X"7A",X"E5",X"77",X"0D",X"10",X"F0",X"18",X"61",X"21", + X"FD",X"E4",X"7E",X"FE",X"04",X"30",X"59",X"34",X"47",X"87",X"80",X"4F",X"06",X"00",X"21",X"7B", + X"E5",X"09",X"3A",X"75",X"E5",X"77",X"23",X"ED",X"4B",X"77",X"E5",X"70",X"23",X"71",X"18",X"40", + X"FE",X"08",X"20",X"0E",X"CD",X"0B",X"63",X"01",X"18",X"00",X"FD",X"09",X"21",X"E9",X"E4",X"34", + X"18",X"21",X"FE",X"09",X"20",X"0D",X"FD",X"E5",X"FD",X"21",X"40",X"E4",X"CD",X"0B",X"63",X"FD", + X"E1",X"18",X"10",X"FE",X"07",X"20",X"05",X"CD",X"5A",X"63",X"18",X"07",X"FE",X"0A",X"20",X"03", + X"CD",X"74",X"63",X"18",X"0B",X"3A",X"75",X"E5",X"2A",X"78",X"E5",X"CD",X"D5",X"62",X"36",X"04", + X"21",X"75",X"E5",X"34",X"C9",X"26",X"00",X"29",X"29",X"29",X"44",X"4D",X"29",X"09",X"4F",X"06", + X"00",X"09",X"01",X"00",X"E0",X"09",X"C9",X"11",X"00",X"E4",X"3A",X"FC",X"E4",X"B7",X"28",X"0D", + X"47",X"1A",X"6F",X"13",X"1A",X"67",X"13",X"7D",X"CD",X"AA",X"2F",X"10",X"F4",X"C9",X"00",X"08", + X"0D",X"10",X"18",X"00",X"08",X"08",X"09",X"0B",X"0B",X"0A",X"08",X"FD",X"36",X"0A",X"00",X"FE", + X"09",X"20",X"08",X"AF",X"32",X"0C",X"E5",X"3D",X"32",X"0B",X"E5",X"3E",X"01",X"FD",X"77",X"0F", + X"FD",X"77",X"10",X"3A",X"75",X"E5",X"FD",X"77",X"01",X"FD",X"77",X"04",X"87",X"87",X"87",X"FD", + X"77",X"07",X"3A",X"78",X"E5",X"FD",X"77",X"03",X"FD",X"77",X"05",X"87",X"87",X"87",X"FD",X"77", + X"06",X"3E",X"06",X"FD",X"77",X"09",X"AF",X"FD",X"77",X"00",X"FD",X"77",X"02",X"FD",X"77",X"0A", + X"FD",X"77",X"0C",X"FD",X"77",X"0D",X"FD",X"77",X"0E",X"C9",X"21",X"FC",X"E4",X"7E",X"FE",X"20", + X"D0",X"34",X"87",X"4F",X"06",X"00",X"21",X"00",X"E4",X"09",X"3A",X"75",X"E5",X"77",X"23",X"3A", + X"78",X"E5",X"77",X"C9",X"21",X"70",X"E5",X"7E",X"B7",X"20",X"0C",X"3A",X"78",X"E5",X"32",X"72", + X"E5",X"3A",X"75",X"E5",X"32",X"71",X"E5",X"35",X"C9",X"1F",X"CB",X"11",X"3A",X"FD",X"E4",X"32", + X"69",X"E5",X"DD",X"21",X"7B",X"E5",X"21",X"69",X"E5",X"7E",X"B7",X"C8",X"35",X"DD",X"7E",X"00", + X"DD",X"66",X"01",X"87",X"87",X"87",X"CB",X"3C",X"1F",X"6F",X"11",X"10",X"D0",X"19",X"DD",X"7E", + X"02",X"DD",X"96",X"01",X"3C",X"47",X"CB",X"41",X"28",X"08",X"36",X"17",X"2C",X"2C",X"36",X"17", + X"18",X"06",X"36",X"10",X"2C",X"2C",X"36",X"14",X"2D",X"2D",X"11",X"80",X"00",X"19",X"10",X"E6", + X"11",X"03",X"00",X"DD",X"19",X"18",X"BF",X"3A",X"CD",X"E5",X"4F",X"87",X"81",X"6F",X"26",X"00", + X"29",X"29",X"29",X"29",X"22",X"F6",X"E4",X"21",X"30",X"64",X"06",X"00",X"09",X"7E",X"32",X"F8", + X"E4",X"21",X"39",X"64",X"09",X"7E",X"32",X"F5",X"E4",X"21",X"42",X"64",X"09",X"7E",X"32",X"FB", + X"E4",X"79",X"E6",X"07",X"3C",X"4F",X"21",X"30",X"64",X"09",X"7E",X"32",X"6E",X"E5",X"21",X"42", + X"64",X"09",X"7E",X"32",X"6F",X"E5",X"3A",X"8E",X"E5",X"CD",X"EC",X"31",X"4F",X"06",X"00",X"21", + X"4B",X"64",X"09",X"7E",X"32",X"D8",X"E5",X"21",X"4E",X"64",X"09",X"7E",X"32",X"D9",X"E5",X"C9", + X"00",X"04",X"08",X"0E",X"0A",X"07",X"0F",X"05",X"00",X"00",X"00",X"01",X"00",X"01",X"00",X"00", + X"01",X"00",X"00",X"01",X"01",X"01",X"00",X"01",X"01",X"00",X"01",X"09",X"0A",X"08",X"0D",X"0E", + X"0C",X"AF",X"32",X"89",X"E5",X"7E",X"B7",X"C8",X"3D",X"20",X"24",X"23",X"EB",X"1A",X"6F",X"13", + X"1A",X"13",X"D5",X"CB",X"3F",X"CB",X"10",X"5D",X"57",X"D5",X"CD",X"00",X"2D",X"D1",X"CB",X"40", + X"28",X"02",X"2C",X"2C",X"EB",X"7C",X"CD",X"D5",X"62",X"E5",X"DD",X"E1",X"E1",X"18",X"D6",X"3D", + X"20",X"08",X"23",X"7E",X"32",X"88",X"E5",X"23",X"18",X"CB",X"06",X"01",X"3D",X"20",X"14",X"23", + X"46",X"23",X"CB",X"78",X"28",X"0D",X"78",X"06",X"30",X"E6",X"7F",X"FE",X"02",X"38",X"04",X"3D", + X"32",X"89",X"E5",X"3A",X"88",X"E5",X"E6",X"0F",X"CB",X"4B",X"28",X"0E",X"4F",X"DD",X"7E",X"00", + X"E6",X"F0",X"B1",X"DD",X"77",X"00",X"DD",X"23",X"18",X"0E",X"0F",X"0F",X"0F",X"0F",X"4F",X"DD", + X"7E",X"00",X"E6",X"0F",X"B1",X"DD",X"77",X"00",X"7E",X"12",X"13",X"3A",X"88",X"E5",X"E6",X"F0", + X"12",X"13",X"7B",X"FE",X"70",X"20",X"02",X"1E",X"90",X"FE",X"F0",X"20",X"03",X"1E",X"10",X"14", + X"10",X"C1",X"3A",X"89",X"E5",X"B7",X"28",X"08",X"3D",X"32",X"89",X"E5",X"06",X"30",X"18",X"B3", + X"23",X"C3",X"55",X"64",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"21",X"36",X"D5",X"11",X"1F",X"68",X"CD",X"2D",X"30",X"3E",X"24",X"CD",X"3E",X"30",X"DB",X"04", + X"CB",X"57",X"28",X"2D",X"DB",X"03",X"0F",X"0F",X"E6",X"3C",X"C6",X"10",X"21",X"FA",X"65",X"5F", + X"16",X"00",X"19",X"5E",X"23",X"56",X"23",X"D5",X"7E",X"23",X"66",X"6F",X"11",X"B0",X"D6",X"EB", + X"CD",X"2D",X"30",X"3E",X"24",X"CD",X"3E",X"30",X"D1",X"21",X"B0",X"D7",X"CD",X"2D",X"30",X"18", + X"39",X"DB",X"03",X"07",X"07",X"07",X"F5",X"E6",X"06",X"5F",X"16",X"00",X"21",X"FA",X"65",X"19", + X"5E",X"23",X"56",X"23",X"F1",X"D5",X"07",X"07",X"E6",X"06",X"C6",X"08",X"5F",X"16",X"00",X"21", + X"FA",X"65",X"19",X"7E",X"23",X"66",X"6F",X"11",X"AC",X"D6",X"EB",X"CD",X"2D",X"30",X"3E",X"24", + X"CD",X"3E",X"30",X"D1",X"21",X"AC",X"D7",X"CD",X"2D",X"30",X"06",X"06",X"C5",X"21",X"36",X"D5", + X"11",X"2D",X"68",X"CD",X"2D",X"30",X"3E",X"0C",X"CD",X"3E",X"30",X"21",X"36",X"D5",X"11",X"1F", + X"68",X"CD",X"2D",X"30",X"3E",X"18",X"CD",X"3E",X"30",X"C1",X"10",X"E0",X"C9",X"3A",X"57",X"E4", + X"FE",X"01",X"20",X"0B",X"21",X"28",X"DA",X"11",X"3B",X"68",X"CD",X"2D",X"30",X"18",X"4A",X"3A", + X"57",X"E4",X"FE",X"02",X"20",X"16",X"0E",X"C6",X"21",X"3C",X"DB",X"11",X"55",X"68",X"CD",X"2D", + X"30",X"21",X"BC",X"DB",X"11",X"5A",X"68",X"CD",X"2D",X"30",X"18",X"2D",X"3A",X"57",X"E4",X"FE", + X"03",X"20",X"0B",X"21",X"B2",X"DC",X"11",X"5F",X"68",X"CD",X"2D",X"30",X"18",X"1B",X"3A",X"57", + X"E4",X"FE",X"04",X"20",X"14",X"0E",X"C6",X"21",X"B6",X"DD",X"11",X"6F",X"68",X"CD",X"2D",X"30", + X"21",X"36",X"DE",X"11",X"7A",X"68",X"CD",X"2D",X"30",X"C9",X"C6",X"67",X"DC",X"67",X"F2",X"67", + X"08",X"68",X"1E",X"68",X"87",X"67",X"9C",X"67",X"B1",X"67",X"1E",X"68",X"1E",X"68",X"1E",X"68", + X"1E",X"68",X"1E",X"68",X"1E",X"68",X"1E",X"68",X"28",X"67",X"1E",X"68",X"3B",X"67",X"1E",X"68", + X"4E",X"67",X"1E",X"68",X"61",X"67",X"1E",X"68",X"74",X"67",X"1E",X"68",X"1E",X"68",X"1E",X"68", + X"1E",X"68",X"5C",X"66",X"4A",X"66",X"81",X"66",X"6F",X"66",X"A6",X"66",X"94",X"66",X"CB",X"66", + X"B9",X"66",X"F0",X"66",X"DE",X"66",X"15",X"67",X"03",X"67",X"20",X"36",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"59",X"45",X"52",X"00",X"31",X"32",X"20",X"43", + X"4F",X"49",X"4E",X"53",X"20",X"32",X"20",X"50",X"4C",X"41",X"59",X"45",X"52",X"53",X"00",X"20", + X"35",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"59",X"45",X"52", + X"00",X"31",X"30",X"20",X"43",X"4F",X"49",X"4E",X"53",X"20",X"32",X"20",X"50",X"4C",X"41",X"59", + X"45",X"52",X"53",X"00",X"20",X"34",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"59",X"45",X"52",X"00",X"20",X"38",X"20",X"43",X"4F",X"49",X"4E",X"53",X"20",X"32", + X"20",X"50",X"4C",X"41",X"59",X"45",X"52",X"53",X"00",X"20",X"33",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"59",X"45",X"52",X"00",X"20",X"36",X"20",X"43",X"4F", + X"49",X"4E",X"53",X"20",X"32",X"20",X"50",X"4C",X"41",X"59",X"45",X"52",X"53",X"00",X"20",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"59",X"45",X"52",X"00", + X"20",X"34",X"20",X"43",X"4F",X"49",X"4E",X"53",X"20",X"32",X"20",X"50",X"4C",X"41",X"59",X"45", + X"52",X"53",X"00",X"20",X"31",X"20",X"43",X"4F",X"49",X"4E",X"20",X"20",X"31",X"20",X"50",X"4C", + X"41",X"59",X"45",X"52",X"00",X"20",X"32",X"20",X"43",X"4F",X"49",X"4E",X"53",X"20",X"32",X"20", + X"50",X"4C",X"41",X"59",X"45",X"52",X"53",X"00",X"20",X"31",X"20",X"43",X"4F",X"49",X"4E",X"20", + X"20",X"36",X"20",X"50",X"4C",X"41",X"59",X"45",X"52",X"53",X"00",X"20",X"31",X"20",X"43",X"4F", + X"49",X"4E",X"20",X"20",X"35",X"20",X"50",X"4C",X"41",X"59",X"45",X"52",X"53",X"00",X"20",X"31", + X"20",X"43",X"4F",X"49",X"4E",X"20",X"20",X"34",X"20",X"50",X"4C",X"41",X"59",X"45",X"52",X"53", + X"00",X"20",X"31",X"20",X"43",X"4F",X"49",X"4E",X"20",X"20",X"33",X"20",X"50",X"4C",X"41",X"59", + X"45",X"52",X"53",X"00",X"20",X"31",X"20",X"43",X"4F",X"49",X"4E",X"20",X"20",X"32",X"20",X"50", + X"4C",X"41",X"59",X"45",X"52",X"53",X"00",X"41",X"20",X"2D",X"20",X"33",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"59",X"45",X"52",X"00",X"41",X"20",X"2D",X"20", + 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"59",X"45",X"52", + X"00",X"41",X"20",X"2D",X"20",X"31",X"20",X"43",X"4F",X"49",X"4E",X"20",X"20",X"31",X"20",X"50", + X"4C",X"41",X"59",X"45",X"52",X"00",X"42",X"20",X"2D",X"20",X"31",X"20",X"43",X"4F",X"49",X"4E", + X"20",X"20",X"36",X"20",X"50",X"4C",X"41",X"59",X"45",X"52",X"53",X"00",X"42",X"20",X"2D",X"20", + X"31",X"20",X"43",X"4F",X"49",X"4E",X"20",X"20",X"35",X"20",X"50",X"4C",X"41",X"59",X"45",X"52", + X"53",X"00",X"42",X"20",X"2D",X"20",X"31",X"20",X"43",X"4F",X"49",X"4E",X"20",X"20",X"33",X"20", + X"50",X"4C",X"41",X"59",X"45",X"52",X"53",X"00",X"42",X"20",X"2D",X"20",X"31",X"20",X"43",X"4F", + X"49",X"4E",X"20",X"20",X"32",X"20",X"50",X"4C",X"41",X"59",X"45",X"52",X"53",X"00",X"00",X"02", + X"49",X"4E",X"53",X"45",X"52",X"54",X"20",X"20",X"43",X"4F",X"49",X"4E",X"00",X"02",X"20",X"20", + X"20",X"20",X"20",X"20",X"20",X"20",X"20",X"20",X"20",X"20",X"00",X"06",X"40",X"31",X"39",X"38", + X"34",X"20",X"20",X"20",X"49",X"52",X"45",X"4D",X"20",X"43",X"4F",X"52",X"50",X"4F",X"52",X"41", + X"54",X"49",X"4F",X"4E",X"00",X"80",X"82",X"84",X"86",X"00",X"81",X"83",X"85",X"87",X"00",X"02", + X"4C",X"49",X"43",X"45",X"4E",X"53",X"45",X"44",X"20",X"20",X"46",X"52",X"4F",X"4D",X"00",X"68", + X"6A",X"6C",X"6E",X"70",X"72",X"74",X"76",X"78",X"7A",X"00",X"69",X"6B",X"6D",X"6F",X"71",X"73", + X"75",X"77",X"79",X"7B",X"00",X"CD",X"5E",X"5F",X"3E",X"FF",X"32",X"D1",X"E5",X"CD",X"28",X"6D", + X"3E",X"A8",X"CD",X"3E",X"30",X"3E",X"01",X"32",X"A9",X"E5",X"CD",X"5E",X"5F",X"C3",X"CF",X"25", + X"31",X"00",X"E8",X"21",X"10",X"D0",X"36",X"00",X"54",X"5D",X"13",X"01",X"57",X"15",X"ED",X"B0", + X"AF",X"32",X"A7",X"E5",X"32",X"9D",X"E5",X"32",X"6A",X"E5",X"FB",X"3E",X"50",X"32",X"B5",X"E5", + X"21",X"B5",X"E5",X"7E",X"FE",X"14",X"38",X"0B",X"21",X"36",X"D5",X"11",X"91",X"69",X"CD",X"2D", + X"30",X"18",X"12",X"B7",X"20",X"02",X"36",X"28",X"21",X"26",X"D5",X"36",X"00",X"54",X"5D",X"13", + X"01",X"35",X"00",X"ED",X"B0",X"11",X"A0",X"69",X"3A",X"B2",X"E5",X"FE",X"02",X"38",X"03",X"11", + X"B2",X"69",X"21",X"34",X"D7",X"CD",X"2D",X"30",X"CD",X"7F",X"69",X"21",X"AA",X"E5",X"7E",X"E6", + X"0A",X"FE",X"0A",X"20",X"0E",X"3A",X"B2",X"E5",X"3D",X"27",X"32",X"B2",X"E5",X"AF",X"32",X"B7", + X"E5",X"18",X"1B",X"7E",X"E6",X"05",X"FE",X"05",X"C2",X"C0",X"68",X"3A",X"B2",X"E5",X"FE",X"02", + X"DA",X"C0",X"68",X"D6",X"02",X"27",X"32",X"B2",X"E5",X"3E",X"01",X"32",X"B7",X"E5",X"AF",X"32", + X"B9",X"E5",X"32",X"B8",X"E5",X"32",X"90",X"E5",X"32",X"96",X"E5",X"3C",X"32",X"B2",X"E6",X"CB", + X"41",X"20",X"06",X"32",X"8E",X"E5",X"32",X"94",X"E5",X"3A",X"E0",X"E5",X"32",X"8F",X"E5",X"32", + X"95",X"E5",X"21",X"00",X"00",X"22",X"91",X"E5",X"22",X"92",X"E5",X"22",X"97",X"E5",X"22",X"98", + X"E5",X"21",X"80",X"00",X"DB",X"04",X"CB",X"47",X"20",X"02",X"2D",X"2D",X"22",X"E3",X"E5",X"21", + X"10",X"D3",X"36",X"00",X"54",X"5D",X"13",X"01",X"7F",X"09",X"ED",X"B0",X"C3",X"0F",X"5D",X"21", + X"42",X"DC",X"11",X"C6",X"69",X"CD",X"2D",X"30",X"0E",X"02",X"11",X"B2",X"E5",X"CD",X"5F",X"30", + X"C9",X"04",X"50",X"55",X"53",X"48",X"20",X"20",X"20",X"42",X"55",X"54",X"54",X"4F",X"4E",X"00", + X"04",X"4F",X"4E",X"4C",X"59",X"20",X"20",X"02",X"31",X"20",X"04",X"50",X"4C",X"41",X"59",X"45", + X"52",X"00",X"02",X"31",X"20",X"04",X"4F",X"52",X"20",X"02",X"32",X"20",X"20",X"04",X"50",X"4C", + X"41",X"59",X"45",X"52",X"53",X"00",X"04",X"43",X"52",X"45",X"44",X"49",X"54",X"20",X"00",X"06", + X"31",X"53",X"54",X"20",X"20",X"42",X"4C",X"4F",X"43",X"4B",X"00",X"21",X"30",X"D3",X"11",X"8F", + X"6A",X"CD",X"2D",X"30",X"3E",X"22",X"CD",X"42",X"31",X"3E",X"0A",X"32",X"88",X"E5",X"3E",X"38", + X"32",X"B6",X"E5",X"3E",X"50",X"32",X"B5",X"E5",X"21",X"B6",X"E5",X"7E",X"B7",X"20",X"09",X"36", + X"38",X"21",X"88",X"E5",X"35",X"CA",X"89",X"6A",X"21",X"B5",X"E5",X"7E",X"FE",X"14",X"38",X"1C", + X"3A",X"B2",X"E5",X"B7",X"20",X"0B",X"21",X"24",X"D5",X"11",X"A1",X"6A",X"CD",X"2D",X"30",X"18", + X"09",X"21",X"24",X"D5",X"11",X"C6",X"6A",X"CD",X"2D",X"30",X"18",X"12",X"B7",X"20",X"02",X"36", + X"27",X"21",X"24",X"D5",X"36",X"00",X"54",X"5D",X"13",X"01",X"35",X"00",X"ED",X"B0",X"CD",X"7F", + X"69",X"21",X"3A",X"D9",X"11",X"BE",X"6A",X"CD",X"2D",X"30",X"0E",X"06",X"3A",X"88",X"E5",X"3D", + X"CD",X"6A",X"30",X"21",X"AA",X"E5",X"7E",X"E6",X"0A",X"FE",X"0A",X"28",X"07",X"7E",X"E6",X"05", + X"FE",X"05",X"20",X"22",X"3A",X"B2",X"E5",X"B7",X"CA",X"F8",X"69",X"D6",X"01",X"27",X"32",X"B2", + X"E5",X"AF",X"32",X"90",X"E5",X"3A",X"E0",X"E5",X"32",X"8F",X"E5",X"21",X"00",X"00",X"22",X"91", + X"E5",X"22",X"92",X"E5",X"18",X"03",X"C3",X"F8",X"69",X"3E",X"00",X"CD",X"42",X"31",X"C9",X"03", + X"54",X"4F",X"20",X"43",X"4F",X"4E",X"54",X"49",X"4E",X"55",X"45",X"20",X"47",X"41",X"4D",X"45", + X"00",X"04",X"49",X"4E",X"53",X"45",X"52",X"54",X"20",X"43",X"4F",X"49",X"4E",X"20",X"41",X"4E", + X"44",X"20",X"50",X"55",X"53",X"48",X"20",X"42",X"55",X"54",X"54",X"4F",X"4E",X"00",X"03",X"54", + X"49",X"4D",X"45",X"20",X"20",X"00",X"04",X"20",X"20",X"20",X"20",X"20",X"50",X"55",X"53",X"48", + X"20",X"53",X"54",X"41",X"52",X"54",X"20",X"42",X"55",X"54",X"54",X"4F",X"4E",X"20",X"20",X"20", + X"20",X"20",X"00",X"3E",X"13",X"CD",X"42",X"31",X"CD",X"5E",X"5F",X"3A",X"90",X"E5",X"FE",X"02", + X"20",X"26",X"AF",X"32",X"B2",X"E6",X"CD",X"A8",X"6B",X"CD",X"DB",X"69",X"3E",X"01",X"32",X"B2", + X"E6",X"3A",X"90",X"E5",X"FE",X"00",X"20",X"10",X"21",X"10",X"D3",X"36",X"00",X"54",X"5D",X"13", + X"01",X"7F",X"09",X"ED",X"B0",X"C3",X"0F",X"5D",X"3A",X"B7",X"E5",X"FE",X"00",X"28",X"07",X"3A", + X"96",X"E5",X"FE",X"02",X"20",X"2E",X"3A",X"90",X"E5",X"FE",X"02",X"28",X"10",X"21",X"10",X"D3", + X"36",X"00",X"54",X"5D",X"13",X"01",X"7F",X"09",X"ED",X"B0",X"C3",X"0F",X"5D",X"CD",X"5E",X"5F", + X"AF",X"32",X"B2",X"E6",X"32",X"B9",X"E5",X"3E",X"01",X"CD",X"3E",X"30",X"3E",X"01",X"32",X"A7", + X"E5",X"C3",X"CF",X"25",X"21",X"10",X"D3",X"36",X"00",X"54",X"5D",X"13",X"01",X"7F",X"09",X"ED", + X"B0",X"21",X"B8",X"E5",X"7E",X"B7",X"20",X"03",X"34",X"18",X"02",X"36",X"00",X"CD",X"96",X"6B", + X"DB",X"04",X"CB",X"4F",X"28",X"1D",X"21",X"B9",X"E5",X"CB",X"46",X"20",X"03",X"34",X"18",X"01", + X"35",X"E6",X"01",X"AE",X"21",X"80",X"00",X"20",X"02",X"2D",X"2D",X"22",X"E3",X"E5",X"3E",X"01", + X"CD",X"3E",X"30",X"C3",X"0F",X"5D",X"21",X"8E",X"E5",X"11",X"94",X"E5",X"06",X"06",X"1A",X"4E", + X"77",X"79",X"12",X"23",X"13",X"10",X"F7",X"C9",X"0E",X"00",X"16",X"15",X"21",X"E5",X"E5",X"06", + X"00",X"09",X"DD",X"21",X"91",X"E5",X"06",X"03",X"DD",X"7E",X"00",X"BE",X"38",X"12",X"28",X"0B", + X"15",X"3E",X"0A",X"81",X"4F",X"FE",X"C8",X"28",X"07",X"18",X"E1",X"DD",X"23",X"23",X"10",X"E8", + X"7A",X"32",X"D1",X"E5",X"79",X"B7",X"C8",X"D6",X"0A",X"11",X"E5",X"E5",X"28",X"08",X"4F",X"06", + X"00",X"21",X"EF",X"E5",X"ED",X"B0",X"21",X"91",X"E5",X"01",X"03",X"00",X"ED",X"B0",X"62",X"6B", + X"36",X"00",X"13",X"01",X"05",X"00",X"ED",X"B0",X"3A",X"8E",X"E5",X"12",X"CD",X"28",X"6D",X"21", + X"B8",X"D2",X"11",X"22",X"6D",X"CD",X"2D",X"30",X"DD",X"2A",X"D2",X"E5",X"11",X"16",X"00",X"DD", + X"19",X"FD",X"2A",X"D4",X"E5",X"FD",X"23",X"FD",X"23",X"FD",X"23",X"0E",X"41",X"1E",X"03",X"3E", + X"14",X"32",X"88",X"E5",X"21",X"C2",X"D2",X"C5",X"0E",X"06",X"3A",X"88",X"E5",X"CD",X"48",X"30", + X"C1",X"06",X"04",X"3E",X"0E",X"32",X"B6",X"E5",X"AF",X"32",X"89",X"E5",X"3A",X"D0",X"E5",X"B7", + X"20",X"03",X"57",X"18",X"44",X"7A",X"B7",X"20",X"13",X"3A",X"D0",X"E5",X"FE",X"0A",X"20",X"04", + X"14",X"0C",X"18",X"06",X"FE",X"05",X"20",X"02",X"15",X"0D",X"18",X"1F",X"3A",X"D0",X"E5",X"FE", + X"AA",X"20",X"0B",X"14",X"7A",X"FE",X"18",X"20",X"03",X"0C",X"16",X"0C",X"18",X"0D",X"FE",X"55", + X"20",X"09",X"15",X"7A",X"FE",X"E8",X"20",X"03",X"0D",X"16",X"F4",X"79",X"FE",X"5D",X"38",X"02", + X"0E",X"41",X"79",X"FE",X"41",X"30",X"02",X"0E",X"5C",X"3A",X"CF",X"E5",X"FE",X"05",X"28",X"04", + X"FE",X"0A",X"20",X"21",X"21",X"89",X"E5",X"3A",X"B6",X"E5",X"BE",X"38",X"18",X"3C",X"77",X"79", + X"FE",X"5C",X"28",X"3D",X"FD",X"71",X"00",X"FD",X"23",X"DD",X"71",X"00",X"0E",X"41",X"DD",X"23", + X"DD",X"23",X"1D",X"28",X"2C",X"CB",X"40",X"28",X"05",X"DD",X"71",X"00",X"18",X"03",X"DD",X"71", + X"00",X"3A",X"AA",X"E5",X"B7",X"20",X"1A",X"3E",X"01",X"CD",X"3E",X"30",X"3A",X"B6",X"E5",X"B7", + X"C2",X"3C",X"6C",X"05",X"C2",X"33",X"6C",X"21",X"88",X"E5",X"35",X"7E",X"FE",X"FF",X"C2",X"24", + X"6C",X"DD",X"36",X"00",X"00",X"3E",X"38",X"CD",X"3E",X"30",X"3E",X"13",X"CD",X"42",X"31",X"CD", + X"5E",X"5F",X"C9",X"03",X"42",X"45",X"53",X"54",X"20",X"20",X"06",X"32",X"30",X"20",X"20",X"03", + X"50",X"4C",X"41",X"59",X"45",X"52",X"53",X"00",X"02",X"20",X"4E",X"4F",X"2E",X"53",X"43",X"4F", + X"52",X"45",X"53",X"20",X"20",X"4E",X"41",X"4D",X"45",X"20",X"52",X"4F",X"55",X"4E",X"44",X"20", + X"20",X"00",X"02",X"54",X"49",X"4D",X"45",X"00",X"21",X"B0",X"D1",X"11",X"F3",X"6C",X"CD",X"2D", + X"30",X"21",X"90",X"D3",X"11",X"08",X"6D",X"CD",X"2D",X"30",X"11",X"08",X"6D",X"CD",X"2D",X"30", + X"11",X"E5",X"E5",X"21",X"C2",X"DD",X"3A",X"D1",X"E5",X"4F",X"06",X"14",X"78",X"FE",X"0A",X"20", + X"03",X"21",X"92",X"DD",X"B9",X"20",X"07",X"22",X"D2",X"E5",X"ED",X"53",X"D4",X"E5",X"C5",X"E5", + X"41",X"0E",X"02",X"B8",X"20",X"02",X"0E",X"06",X"FE",X"0A",X"30",X"07",X"2C",X"2C",X"CD",X"6A", + X"30",X"18",X"03",X"CD",X"48",X"30",X"2C",X"2C",X"79",X"FE",X"02",X"20",X"02",X"0E",X"04",X"06", + X"03",X"CD",X"5F",X"30",X"10",X"FB",X"2C",X"2C",X"2C",X"2C",X"06",X"03",X"1A",X"77",X"2C",X"71", + X"2C",X"13",X"10",X"F8",X"7D",X"C6",X"06",X"6F",X"13",X"13",X"13",X"1A",X"CD",X"48",X"30",X"13", + X"E1",X"C1",X"25",X"10",X"A7",X"C9",X"01",X"03",X"00",X"11",X"9A",X"E5",X"21",X"7B",X"6E",X"ED", + X"B0",X"01",X"C8",X"00",X"11",X"E5",X"E5",X"21",X"BD",X"6D",X"ED",X"B0",X"C9",X"01",X"01",X"00", + X"53",X"54",X"45",X"20",X"20",X"20",X"01",X"01",X"03",X"50",X"4F",X"49",X"4E",X"20",X"20",X"20", + X"01",X"01",X"08",X"80",X"45",X"48",X"45",X"20",X"20",X"20",X"02",X"01",X"10",X"30",X"4D",X"49", + X"54",X"20",X"20",X"20",X"01",X"01",X"21",X"50",X"41",X"41",X"54",X"20",X"20",X"20",X"01",X"01", + X"23",X"50",X"47",X"4E",X"41",X"20",X"20",X"20",X"02",X"01",X"28",X"00",X"4F",X"41",X"59",X"20", + X"20",X"20",X"02",X"01",X"38",X"70",X"4E",X"52",X"41",X"20",X"20",X"20",X"02",X"01",X"60",X"10", + X"4F",X"49",X"57",X"20",X"20",X"20",X"02",X"01",X"89",X"90",X"4B",X"48",X"4F",X"20",X"20",X"20", + X"02",X"02",X"66",X"00",X"48",X"4E",X"49",X"20",X"20",X"20",X"02",X"02",X"77",X"50",X"53",X"41", + X"4F",X"20",X"20",X"20",X"02",X"03",X"12",X"50",X"55",X"48",X"59",X"20",X"20",X"20",X"02",X"03", + X"33",X"00",X"42",X"53",X"41",X"20",X"20",X"20",X"03",X"03",X"65",X"00",X"41",X"49",X"57",X"20", + X"20",X"20",X"03",X"03",X"70",X"50",X"4B",X"41",X"45",X"20",X"20",X"20",X"04",X"03",X"88",X"00", + X"4D",X"4B",X"4D",X"20",X"20",X"20",X"03",X"04",X"01",X"50",X"45",X"49",X"41",X"20",X"20",X"20", + X"03",X"04",X"32",X"00",X"52",X"4B",X"47",X"20",X"20",X"20",X"03",X"04",X"85",X"40",X"49",X"49", + X"4F",X"20",X"20",X"20",X"04",X"F9",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"31",X"00",X"E8",X"11",X"00",X"20",X"CD",X"2D",X"6F",X"22",X"74",X"00",X"CD",X"2D",X"6F",X"22", + X"76",X"00",X"CD",X"2D",X"6F",X"22",X"78",X"00",X"11",X"00",X"00",X"CD",X"2D",X"6F",X"22",X"72", + X"00",X"11",X"FF",X"FF",X"EB",X"A7",X"ED",X"52",X"22",X"70",X"00",X"18",X"FE",X"01",X"00",X"20", + X"21",X"00",X"00",X"1A",X"85",X"6F",X"3E",X"00",X"8C",X"67",X"13",X"0B",X"78",X"B1",X"20",X"F3", + X"C9",X"F3",X"ED",X"46",X"31",X"00",X"E8",X"DD",X"21",X"4E",X"6F",X"C3",X"90",X"72",X"0E",X"05", + X"3E",X"FF",X"ED",X"79",X"0C",X"ED",X"79",X"0C",X"ED",X"79",X"21",X"00",X"E1",X"36",X"00",X"54", + X"5D",X"13",X"01",X"FF",X"01",X"ED",X"B0",X"FB",X"01",X"00",X"80",X"0B",X"79",X"B0",X"20",X"FB", + X"F3",X"AF",X"5F",X"16",X"20",X"21",X"00",X"E0",X"0E",X"10",X"06",X"00",X"77",X"23",X"3C",X"15", + X"28",X"07",X"10",X"F8",X"0D",X"20",X"F3",X"18",X"05",X"16",X"20",X"3C",X"18",X"F4",X"7B",X"16", + X"20",X"21",X"00",X"E0",X"0E",X"10",X"06",X"00",X"BE",X"C2",X"95",X"71",X"23",X"3C",X"15",X"28", + X"07",X"10",X"F5",X"0D",X"20",X"F0",X"18",X"05",X"3C",X"16",X"20",X"18",X"F4",X"7B",X"3C",X"FE", + X"0F",X"20",X"BF",X"31",X"00",X"E8",X"CD",X"F2",X"77",X"AF",X"32",X"01",X"E0",X"16",X"20",X"0E", + X"10",X"21",X"00",X"D0",X"06",X"00",X"77",X"23",X"3C",X"15",X"28",X"07",X"10",X"F8",X"0D",X"20", + X"F3",X"18",X"05",X"3C",X"16",X"20",X"18",X"F4",X"3A",X"01",X"E0",X"16",X"20",X"21",X"00",X"D0", + X"0E",X"10",X"06",X"00",X"CD",X"35",X"72",X"23",X"3C",X"15",X"28",X"07",X"10",X"F6",X"0D",X"20", + X"F1",X"18",X"05",X"3C",X"16",X"20",X"18",X"F4",X"3A",X"01",X"E0",X"3C",X"FE",X"0F",X"20",X"BA", + X"DD",X"21",X"BF",X"70",X"CD",X"90",X"72",X"21",X"0F",X"7A",X"DD",X"21",X"BF",X"70",X"CD",X"28", + X"71",X"CD",X"AF",X"70",X"CD",X"F2",X"77",X"3E",X"03",X"32",X"01",X"E7",X"CD",X"9E",X"79",X"3E", + X"01",X"32",X"00",X"E3",X"32",X"02",X"E3",X"DB",X"00",X"2F",X"0F",X"0F",X"30",X"F9",X"3E",X"03", + X"32",X"01",X"E7",X"CD",X"B6",X"77",X"21",X"AA",X"7B",X"CD",X"D5",X"77",X"3A",X"01",X"E7",X"06", + X"06",X"CD",X"4A",X"7D",X"CD",X"95",X"79",X"CD",X"95",X"79",X"DB",X"00",X"2F",X"0F",X"30",X"14", + X"3A",X"01",X"E7",X"07",X"4F",X"06",X"00",X"DD",X"21",X"98",X"7B",X"DD",X"09",X"DD",X"66",X"01", + X"DD",X"6E",X"00",X"E9",X"CD",X"9E",X"79",X"CD",X"9E",X"79",X"CD",X"95",X"79",X"CD",X"95",X"79", + X"DB",X"01",X"2F",X"0F",X"38",X"05",X"0F",X"38",X"1C",X"18",X"C9",X"3A",X"01",X"E7",X"FE",X"08", + X"CA",X"44",X"70",X"06",X"04",X"CD",X"4A",X"7D",X"C6",X"01",X"32",X"01",X"E7",X"06",X"06",X"CD", + X"4A",X"7D",X"C3",X"44",X"70",X"3A",X"01",X"E7",X"FE",X"03",X"CA",X"44",X"70",X"06",X"04",X"CD", + X"4A",X"7D",X"C6",X"FF",X"32",X"01",X"E7",X"06",X"06",X"CD",X"4A",X"7D",X"C3",X"44",X"70",X"11", + X"00",X"00",X"AF",X"32",X"00",X"E7",X"06",X"04",X"C5",X"CD",X"C0",X"70",X"C1",X"10",X"F9",X"C9", + X"21",X"00",X"00",X"06",X"20",X"1A",X"85",X"30",X"01",X"24",X"6F",X"1C",X"20",X"F7",X"14",X"10", + X"F4",X"D5",X"E5",X"3A",X"00",X"E7",X"21",X"72",X"00",X"87",X"85",X"6F",X"5E",X"23",X"56",X"E1", + X"7A",X"BC",X"20",X"09",X"7B",X"BD",X"20",X"05",X"21",X"2F",X"7A",X"18",X"03",X"21",X"38",X"7A", + X"11",X"83",X"E7",X"01",X"09",X"00",X"ED",X"B0",X"11",X"00",X"01",X"21",X"A0",X"D1",X"3A",X"00", + X"E7",X"A7",X"28",X"04",X"47",X"19",X"10",X"FD",X"22",X"81",X"E7",X"3E",X"08",X"32",X"80",X"E7", + X"3A",X"00",X"E7",X"C6",X"30",X"32",X"86",X"E7",X"21",X"00",X"E7",X"34",X"21",X"80",X"E7",X"DD", + X"21",X"BF",X"70",X"CD",X"28",X"71",X"D1",X"C9",X"7E",X"23",X"FE",X"00",X"28",X"12",X"5E",X"23", + X"56",X"23",X"4F",X"7E",X"12",X"13",X"3E",X"04",X"12",X"23",X"13",X"0D",X"20",X"F5",X"18",X"E8", + X"DD",X"E9",X"0F",X"0F",X"0F",X"0F",X"E6",X"0F",X"C6",X"30",X"FE",X"3A",X"38",X"02",X"C6",X"07", + X"FD",X"77",X"00",X"FD",X"36",X"01",X"04",X"DD",X"E9",X"E6",X"0F",X"C6",X"30",X"FE",X"3A",X"38", + X"02",X"C6",X"07",X"FD",X"77",X"00",X"FD",X"36",X"01",X"04",X"DD",X"E9",X"F5",X"0F",X"0F",X"0F", + X"0F",X"E6",X"0F",X"C6",X"30",X"FE",X"3A",X"38",X"02",X"C6",X"07",X"FD",X"77",X"00",X"FD",X"36", + X"01",X"04",X"F1",X"E6",X"0F",X"C6",X"30",X"FE",X"3A",X"38",X"02",X"C6",X"07",X"FD",X"77",X"02", + X"FD",X"36",X"03",X"04",X"C9",X"08",X"D9",X"DD",X"21",X"9E",X"71",X"C3",X"15",X"72",X"21",X"1B", + X"7A",X"DD",X"21",X"A8",X"71",X"C3",X"28",X"71",X"D9",X"FD",X"21",X"B8",X"D0",X"DD",X"21",X"B5", + X"71",X"7C",X"C3",X"42",X"71",X"FD",X"23",X"FD",X"23",X"DD",X"21",X"C1",X"71",X"7C",X"C3",X"59", + X"71",X"DD",X"21",X"CD",X"71",X"7D",X"FD",X"23",X"FD",X"23",X"C3",X"42",X"71",X"DD",X"21",X"D9", + X"71",X"7D",X"FD",X"23",X"FD",X"23",X"C3",X"59",X"71",X"08",X"D9",X"FD",X"23",X"FD",X"23",X"FD", + X"23",X"FD",X"23",X"DD",X"21",X"EB",X"71",X"5F",X"C3",X"42",X"71",X"FD",X"23",X"FD",X"23",X"DD", + X"21",X"F7",X"71",X"7B",X"C3",X"59",X"71",X"08",X"D9",X"FD",X"23",X"FD",X"23",X"FD",X"23",X"FD", + X"23",X"DD",X"21",X"09",X"72",X"7E",X"C3",X"42",X"71",X"FD",X"23",X"FD",X"23",X"7E",X"DD",X"21", + X"23",X"72",X"C3",X"59",X"71",X"21",X"01",X"D0",X"01",X"FF",X"0F",X"36",X"00",X"54",X"5D",X"ED", + X"B0",X"DD",X"E9",X"CD",X"9E",X"79",X"DB",X"00",X"0F",X"38",X"06",X"0F",X"DA",X"B3",X"6F",X"18", + X"F2",X"08",X"C3",X"9C",X"6F",X"BE",X"C8",X"F5",X"E5",X"DD",X"21",X"40",X"72",X"C3",X"90",X"72", + X"21",X"1B",X"7A",X"DD",X"21",X"4A",X"72",X"C3",X"28",X"71",X"E1",X"FD",X"21",X"B8",X"D0",X"7C", + X"CD",X"6C",X"71",X"FD",X"23",X"FD",X"23",X"FD",X"23",X"FD",X"23",X"7D",X"CD",X"6C",X"71",X"F1", + X"F5",X"FD",X"23",X"FD",X"23",X"FD",X"23",X"FD",X"23",X"CD",X"6C",X"71",X"FD",X"23",X"FD",X"23", + X"FD",X"23",X"FD",X"23",X"7E",X"CD",X"6C",X"71",X"CD",X"9E",X"79",X"CD",X"9E",X"79",X"DB",X"00", + X"0F",X"DA",X"89",X"72",X"0F",X"38",X"04",X"18",X"EF",X"F1",X"C9",X"F1",X"C1",X"C3",X"00",X"70", + X"21",X"01",X"D0",X"01",X"FF",X"07",X"36",X"00",X"54",X"5D",X"13",X"13",X"CD",X"A7",X"79",X"21", + X"00",X"D0",X"01",X"FF",X"07",X"36",X"00",X"54",X"5D",X"13",X"13",X"CD",X"A7",X"79",X"DD",X"E9", + X"3E",X"FF",X"D3",X"05",X"CD",X"B6",X"77",X"21",X"41",X"7A",X"CD",X"D5",X"77",X"DB",X"03",X"21", + X"AE",X"D1",X"CD",X"33",X"76",X"DB",X"04",X"21",X"AE",X"D2",X"CD",X"33",X"76",X"CD",X"E4",X"72", + X"CD",X"72",X"73",X"CD",X"95",X"79",X"CD",X"95",X"79",X"DB",X"00",X"EE",X"FF",X"0F",X"0F",X"DA", + X"33",X"70",X"18",X"D9",X"21",X"87",X"74",X"CD",X"D5",X"77",X"CD",X"B0",X"73",X"DB",X"04",X"EE", + X"FF",X"CB",X"57",X"28",X"4B",X"21",X"FC",X"73",X"CD",X"D5",X"77",X"DB",X"03",X"EE",X"FF",X"0F", + X"0F",X"0F",X"0F",X"11",X"00",X"00",X"21",X"90",X"73",X"01",X"00",X"05",X"E6",X"0F",X"20",X"0A", + X"19",X"5E",X"23",X"66",X"6B",X"CD",X"D5",X"77",X"18",X"25",X"0C",X"1C",X"1C",X"B9",X"20",X"02", + X"18",X"EE",X"10",X"F6",X"01",X"08",X"05",X"1C",X"1C",X"B9",X"20",X"02",X"18",X"09",X"0C",X"10", + X"F6",X"FE",X"0F",X"20",X"0A",X"1C",X"1C",X"19",X"5E",X"23",X"66",X"6B",X"CD",X"D5",X"77",X"C9", + X"21",X"2A",X"74",X"CD",X"D5",X"77",X"DB",X"03",X"EE",X"FF",X"21",X"A8",X"73",X"11",X"00",X"00", + X"0F",X"0F",X"0F",X"0F",X"E6",X"0F",X"28",X"11",X"1C",X"1C",X"FE",X"08",X"28",X"0B",X"1C",X"1C", + X"FE",X"0A",X"28",X"05",X"1C",X"1C",X"FE",X"0F",X"C0",X"19",X"5E",X"23",X"66",X"6B",X"CD",X"D5", + X"77",X"C9",X"DB",X"04",X"2F",X"0F",X"0F",X"38",X"13",X"AF",X"87",X"21",X"AE",X"74",X"85",X"6F", + X"3E",X"00",X"8C",X"67",X"5E",X"23",X"66",X"6B",X"CD",X"D5",X"77",X"C9",X"3E",X"01",X"18",X"EA", + X"D2",X"74",X"E3",X"74",X"F5",X"74",X"07",X"75",X"19",X"75",X"2B",X"75",X"3D",X"75",X"4F",X"75", + X"61",X"75",X"73",X"75",X"85",X"75",X"97",X"75",X"A8",X"75",X"CB",X"75",X"EE",X"75",X"11",X"76", + X"DB",X"03",X"EE",X"FF",X"47",X"E6",X"03",X"28",X"25",X"FE",X"01",X"28",X"26",X"FE",X"02",X"28", + X"27",X"21",X"47",X"74",X"CD",X"D5",X"77",X"78",X"0F",X"0F",X"47",X"E6",X"03",X"28",X"1E",X"FE", + X"01",X"28",X"1F",X"FE",X"02",X"28",X"20",X"21",X"52",X"74",X"CD",X"D5",X"77",X"C9",X"21",X"57", + X"74",X"18",X"E1",X"21",X"67",X"74",X"18",X"DC",X"21",X"77",X"74",X"18",X"D7",X"21",X"62",X"74", + X"18",X"E8",X"21",X"72",X"74",X"18",X"E3",X"21",X"82",X"74",X"18",X"DE",X"0B",X"92",X"D3",X"43", + X"4F",X"49",X"4E",X"20",X"4D",X"4F",X"44",X"45",X"20",X"20",X"0B",X"12",X"D4",X"20",X"20",X"20", + X"20",X"20",X"20",X"20",X"20",X"20",X"20",X"20",X"0E",X"30",X"D4",X"20",X"20",X"20",X"20",X"20", + X"20",X"20",X"20",X"20",X"20",X"20",X"20",X"20",X"20",X"00",X"0B",X"92",X"D3",X"43",X"4F",X"49", + X"4E",X"20",X"4D",X"4F",X"44",X"45",X"20",X"41",X"0B",X"12",X"D4",X"43",X"4F",X"49",X"4E",X"20", + X"4D",X"4F",X"44",X"45",X"20",X"42",X"00",X"07",X"30",X"D6",X"31",X"35",X"35",X"20",X"53",X"45", + X"43",X"00",X"01",X"B0",X"D6",X"35",X"00",X"07",X"30",X"D6",X"31",X"38",X"30",X"20",X"53",X"45", + X"43",X"00",X"01",X"B0",X"D6",X"33",X"00",X"07",X"30",X"D6",X"31",X"37",X"30",X"20",X"53",X"45", + X"43",X"00",X"01",X"B0",X"D6",X"32",X"00",X"07",X"30",X"D6",X"31",X"36",X"30",X"20",X"53",X"45", + X"43",X"00",X"01",X"B0",X"D6",X"34",X"00",X"09",X"12",X"D5",X"42",X"4F",X"44",X"59",X"20",X"54", + X"59",X"50",X"45",X"09",X"12",X"D6",X"50",X"4C",X"41",X"59",X"20",X"54",X"49",X"4D",X"45",X"0B", + X"92",X"D6",X"43",X"4F",X"4D",X"4D",X"41",X"4E",X"44",X"4F",X"4D",X"45",X"4E",X"00",X"B2",X"74", + X"C2",X"74",X"0C",X"30",X"D5",X"54",X"41",X"42",X"4C",X"45",X"20",X"54",X"59",X"50",X"45",X"20", + X"20",X"00",X"0C",X"30",X"D5",X"55",X"50",X"52",X"49",X"47",X"48",X"54",X"20",X"54",X"59",X"50", + X"45",X"00",X"0D",X"B0",X"D3",X"31",X"20",X"43",X"4F",X"49",X"4E",X"20",X"31",X"20",X"50",X"4C", + X"41",X"59",X"00",X"0E",X"B0",X"D3",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"59",X"00",X"0E",X"B0",X"D3",X"33",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"59",X"00",X"0E",X"B0",X"D3",X"34",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"59",X"00",X"0E",X"B0",X"D3",X"35",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"59",X"00",X"0E",X"B0",X"D3",X"36",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"59",X"00",X"0E",X"B0",X"D3", + 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"53",X"00",X"0E", + X"B0",X"D3",X"31",X"20",X"43",X"4F",X"49",X"4E",X"20",X"33",X"20",X"50",X"4C",X"41",X"59",X"53", + X"00",X"0E",X"B0",X"D3",X"31",X"20",X"43",X"4F",X"49",X"4E",X"20",X"34",X"20",X"50",X"4C",X"41", + X"59",X"53",X"00",X"0E",X"B0",X"D3",X"31",X"20",X"43",X"4F",X"49",X"4E",X"20",X"35",X"20",X"50", + X"4C",X"41",X"59",X"53",X"00",X"0E",X"B0",X"D3",X"31",X"20",X"43",X"4F",X"49",X"4E",X"20",X"36", + X"20",X"50",X"4C",X"41",X"59",X"53",X"00",X"0E",X"B0",X"D3",X"20",X"20",X"20",X"20",X"46",X"52", + X"45",X"45",X"20",X"20",X"20",X"20",X"20",X"00",X"0E",X"B0",X"D3",X"31",X"20",X"43",X"4F",X"49", + X"4E",X"20",X"31",X"20",X"50",X"4C",X"41",X"59",X"20",X"0E",X"30",X"D4",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"53",X"00",X"0E",X"B0",X"D3",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"59",X"0E",X"30",X"D4",X"31", + X"20",X"43",X"4F",X"49",X"4E",X"20",X"33",X"20",X"50",X"4C",X"41",X"59",X"53",X"00",X"0E",X"B0", + X"D3",X"33",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"59",X"0E", + X"30",X"D4",X"31",X"20",X"43",X"4F",X"49",X"4E",X"20",X"35",X"20",X"50",X"4C",X"41",X"59",X"53", + X"00",X"0E",X"B0",X"D3",X"20",X"20",X"20",X"20",X"46",X"52",X"45",X"45",X"20",X"20",X"20",X"20", + X"20",X"0E",X"30",X"D4",X"31",X"20",X"43",X"4F",X"49",X"4E",X"20",X"36",X"20",X"50",X"4C",X"41", + X"59",X"53",X"00",X"EE",X"FF",X"06",X"08",X"23",X"36",X"04",X"2B",X"0F",X"38",X"04",X"36",X"30", + X"18",X"02",X"36",X"31",X"23",X"23",X"23",X"23",X"10",X"ED",X"C9",X"CD",X"B6",X"77",X"21",X"00", + X"D0",X"11",X"05",X"08",X"01",X"00",X"08",X"72",X"23",X"73",X"23",X"0B",X"78",X"B1",X"20",X"F7", + X"21",X"00",X"E1",X"11",X"01",X"E1",X"36",X"00",X"01",X"00",X"01",X"ED",X"B0",X"FB",X"21",X"A3", + X"76",X"11",X"00",X"E1",X"01",X"20",X"00",X"ED",X"B0",X"CD",X"95",X"79",X"CD",X"95",X"79",X"CD", + X"95",X"79",X"DB",X"00",X"2F",X"0F",X"0F",X"30",X"F0",X"21",X"00",X"E1",X"11",X"01",X"E1",X"36", + X"00",X"01",X"00",X"01",X"ED",X"B0",X"CD",X"95",X"79",X"CD",X"95",X"79",X"CD",X"95",X"79",X"F3", + X"C3",X"33",X"70",X"13",X"00",X"C0",X"00",X"10",X"80",X"A0",X"00",X"13",X"00",X"40",X"01",X"10", + X"00",X"A0",X"00",X"13",X"00",X"C0",X"00",X"10",X"C0",X"60",X"01",X"13",X"00",X"40",X"01",X"10", + X"40",X"60",X"01",X"00",X"03",X"00",X"80",X"00",X"10",X"00",X"80",X"00",X"03",X"00",X"80",X"00", + X"10",X"01",X"80",X"00",X"03",X"01",X"80",X"00",X"10",X"00",X"80",X"00",X"03",X"01",X"80",X"00", + X"10",X"01",X"80",X"11",X"00",X"C0",X"01",X"00",X"01",X"ED",X"B0",X"C9",X"21",X"00",X"E1",X"11", + X"01",X"E1",X"36",X"00",X"01",X"00",X"01",X"ED",X"B0",X"AF",X"32",X"06",X"E3",X"67",X"6F",X"22", + X"0D",X"E7",X"CD",X"B6",X"77",X"21",X"DF",X"7A",X"CD",X"D5",X"77",X"FB",X"06",X"08",X"DB",X"00", + X"2F",X"21",X"C0",X"D2",X"CD",X"38",X"77",X"06",X"08",X"DB",X"01",X"2F",X"21",X"C0",X"D4",X"CD", + X"38",X"77",X"06",X"08",X"DB",X"02",X"2F",X"21",X"C0",X"D6",X"CD",X"38",X"77",X"06",X"08",X"21", + X"40",X"D1",X"7B",X"CD",X"38",X"77",X"18",X"14",X"23",X"36",X"04",X"2B",X"0F",X"38",X"04",X"36", + X"30",X"18",X"02",X"36",X"31",X"23",X"23",X"23",X"23",X"10",X"ED",X"C9",X"CD",X"95",X"77",X"3A", + X"0D",X"E7",X"21",X"C0",X"D7",X"CD",X"78",X"77",X"3A",X"0E",X"E7",X"CD",X"78",X"77",X"CD",X"9E", + X"79",X"CD",X"9E",X"79",X"DB",X"01",X"2F",X"0F",X"0F",X"38",X"02",X"18",X"9E",X"DB",X"00",X"2F", + X"0F",X"0F",X"30",X"97",X"F3",X"C3",X"33",X"70",X"23",X"36",X"04",X"2B",X"F5",X"0F",X"0F",X"0F", + X"0F",X"E6",X"0F",X"C6",X"30",X"77",X"23",X"23",X"23",X"36",X"04",X"2B",X"F1",X"E6",X"0F",X"C6", + X"30",X"77",X"23",X"23",X"C9",X"21",X"0F",X"E7",X"3A",X"09",X"E0",X"E6",X"C0",X"BE",X"C8",X"32", + X"0F",X"E7",X"3A",X"0E",X"E7",X"C6",X"01",X"27",X"32",X"0E",X"E7",X"D0",X"3A",X"0D",X"E7",X"C6", + X"01",X"27",X"32",X"0D",X"E7",X"C9",X"21",X"00",X"D0",X"01",X"FF",X"07",X"36",X"00",X"54",X"5D", + X"13",X"13",X"CD",X"A7",X"79",X"21",X"01",X"D0",X"01",X"FF",X"07",X"36",X"00",X"54",X"5D",X"13", + X"13",X"CD",X"A7",X"79",X"C9",X"7E",X"FE",X"00",X"C8",X"CD",X"DE",X"77",X"18",X"F7",X"4E",X"06", + X"00",X"23",X"5E",X"23",X"56",X"23",X"7E",X"12",X"3E",X"04",X"13",X"12",X"13",X"23",X"0D",X"20", + X"F5",X"C9",X"21",X"00",X"E0",X"0E",X"06",X"AF",X"06",X"00",X"77",X"10",X"FD",X"0D",X"20",X"F8", + X"C9",X"0E",X"00",X"06",X"00",X"10",X"FE",X"0D",X"20",X"F9",X"3D",X"20",X"F4",X"C9",X"C5",X"E5", + X"77",X"23",X"10",X"FC",X"E1",X"0E",X"20",X"09",X"C1",X"0D",X"20",X"F2",X"C9",X"CD",X"B6",X"77", + X"CD",X"36",X"78",X"CD",X"95",X"79",X"CD",X"95",X"79",X"CD",X"95",X"79",X"DB",X"00",X"2F",X"0F", + X"0F",X"DA",X"33",X"70",X"18",X"ED",X"21",X"00",X"D0",X"01",X"FF",X"0F",X"3E",X"86",X"77",X"23", + X"0B",X"78",X"B1",X"20",X"F7",X"21",X"0C",X"D0",X"06",X"10",X"E5",X"C5",X"CD",X"71",X"78",X"C1", + X"E1",X"11",X"00",X"01",X"19",X"10",X"F3",X"06",X"40",X"21",X"BF",X"D7",X"7E",X"B0",X"77",X"23", + X"23",X"7E",X"B0",X"77",X"11",X"80",X"00",X"19",X"7E",X"B0",X"77",X"2B",X"2B",X"7E",X"B0",X"77", + X"C9",X"06",X"19",X"CD",X"7D",X"78",X"23",X"23",X"23",X"23",X"10",X"F7",X"C9",X"E5",X"3E",X"03", + X"77",X"23",X"23",X"3E",X"02",X"77",X"E1",X"E5",X"11",X"80",X"00",X"19",X"3E",X"01",X"77",X"23", + X"23",X"3E",X"00",X"77",X"E1",X"C9",X"F3",X"CD",X"B6",X"77",X"21",X"B3",X"79",X"CD",X"D5",X"77", + X"CD",X"95",X"79",X"CD",X"95",X"79",X"CD",X"95",X"79",X"DB",X"00",X"2F",X"0F",X"38",X"02",X"18", + X"EC",X"11",X"01",X"46",X"CD",X"85",X"79",X"CD",X"95",X"79",X"CD",X"95",X"79",X"CD",X"95",X"79", + X"DB",X"00",X"2F",X"0F",X"38",X"02",X"18",X"E9",X"13",X"CD",X"85",X"79",X"CD",X"95",X"79",X"CD", + X"95",X"79",X"CD",X"95",X"79",X"DB",X"00",X"2F",X"0F",X"38",X"02",X"18",X"EF",X"13",X"CD",X"85", + X"79",X"CD",X"95",X"79",X"CD",X"95",X"79",X"CD",X"95",X"79",X"DB",X"00",X"2F",X"0F",X"38",X"02", + X"18",X"EC",X"3E",X"10",X"21",X"10",X"D0",X"0E",X"03",X"11",X"01",X"46",X"06",X"10",X"73",X"23", + X"72",X"23",X"10",X"FA",X"13",X"0D",X"20",X"F4",X"11",X"20",X"00",X"19",X"3D",X"20",X"E8",X"3E", + X"03",X"11",X"01",X"52",X"0E",X"04",X"06",X"30",X"73",X"23",X"72",X"23",X"10",X"FA",X"D5",X"11", + X"20",X"00",X"19",X"D1",X"0D",X"20",X"EF",X"13",X"3D",X"20",X"E9",X"11",X"01",X"49",X"0E",X"04", + X"06",X"30",X"73",X"23",X"72",X"23",X"10",X"FA",X"D5",X"11",X"20",X"00",X"19",X"D1",X"0D",X"20", + X"EF",X"CD",X"95",X"79",X"CD",X"95",X"79",X"CD",X"95",X"79",X"DB",X"00",X"2F",X"0F",X"38",X"02", + X"18",X"A0",X"CD",X"95",X"79",X"CD",X"95",X"79",X"CD",X"95",X"79",X"3E",X"01",X"D3",X"01",X"CD", + X"95",X"79",X"CD",X"95",X"79",X"CD",X"95",X"79",X"DB",X"00",X"2F",X"0F",X"30",X"F1",X"AF",X"D3", + X"01",X"CD",X"95",X"79",X"CD",X"95",X"79",X"CD",X"95",X"79",X"DB",X"00",X"2F",X"0F",X"0F",X"DA", + X"33",X"70",X"C3",X"71",X"79",X"21",X"00",X"D0",X"01",X"00",X"08",X"73",X"23",X"72",X"23",X"0B", + X"78",X"B1",X"20",X"F7",X"C9",X"01",X"00",X"40",X"0B",X"78",X"B1",X"20",X"FB",X"C9",X"01",X"00", + X"90",X"0B",X"78",X"B1",X"20",X"FB",X"C9",X"7E",X"12",X"23",X"23",X"13",X"13",X"0B",X"78",X"B1", + X"20",X"F5",X"C9",X"0E",X"A0",X"D1",X"41",X"20",X"42",X"20",X"43",X"20",X"44",X"20",X"45",X"20", + X"46",X"20",X"47",X"20",X"0E",X"20",X"D2",X"48",X"20",X"49",X"20",X"4A",X"20",X"4B",X"20",X"4C", + X"20",X"4D",X"20",X"4E",X"20",X"0E",X"A0",X"D2",X"4F",X"20",X"50",X"20",X"51",X"20",X"52",X"20", + X"53",X"20",X"54",X"20",X"55",X"20",X"0E",X"20",X"D3",X"56",X"20",X"57",X"20",X"58",X"20",X"59", + X"20",X"5A",X"20",X"20",X"20",X"20",X"20",X"14",X"A0",X"D3",X"31",X"20",X"32",X"20",X"33",X"20", + X"34",X"20",X"35",X"20",X"36",X"20",X"37",X"20",X"38",X"20",X"39",X"20",X"30",X"20",X"00",X"08", + X"A0",X"D0",X"52",X"41",X"4D",X"20",X"20",X"20",X"4F",X"4B",X"00",X"10",X"A0",X"D0",X"52",X"41", + X"4D",X"20",X"20",X"20",X"4E",X"47",X"20",X"20",X"28",X"20",X"20",X"20",X"20",X"29",X"00",X"52", + X"4F",X"4D",X"20",X"20",X"20",X"4F",X"4B",X"00",X"52",X"4F",X"4D",X"20",X"20",X"20",X"4E",X"47", + X"00",X"16",X"A0",X"D0",X"44",X"49",X"50",X"20",X"53",X"57",X"20",X"31",X"20",X"32",X"20",X"33", + X"20",X"34",X"20",X"35",X"20",X"36",X"20",X"37",X"20",X"38",X"03",X"A0",X"D1",X"53",X"57",X"31", + X"03",X"A0",X"D2",X"53",X"57",X"32",X"00",X"01",X"98",X"D2",X"20",X"1B",X"C4",X"D2",X"20",X"20", + X"20",X"20",X"20",X"20",X"20",X"20",X"20",X"20",X"20",X"20",X"20",X"20",X"20",X"20",X"20",X"20", + X"20",X"20",X"20",X"20",X"20",X"20",X"20",X"20",X"20",X"00",X"0C",X"A0",X"D0",X"49",X"4E",X"54", + X"45",X"52",X"46",X"41",X"43",X"45",X"20",X"4F",X"4B",X"00",X"A0",X"7A",X"B5",X"7A",X"CA",X"7A", + X"11",X"A0",X"D0",X"43",X"48",X"45",X"43",X"4B",X"20",X"49",X"4E",X"54",X"45",X"52",X"46",X"41", + X"43",X"45",X"20",X"31",X"00",X"11",X"A0",X"D0",X"43",X"48",X"45",X"43",X"4B",X"20",X"49",X"4E", + X"54",X"45",X"52",X"46",X"41",X"43",X"45",X"20",X"32",X"00",X"11",X"A0",X"D0",X"43",X"48",X"45", + X"43",X"4B",X"20",X"49",X"4E",X"54",X"45",X"52",X"46",X"41",X"43",X"45",X"20",X"33",X"00",X"0A", + X"20",X"D1",X"57",X"52",X"49",X"54",X"45",X"20",X"44",X"41",X"54",X"41",X"0C",X"20",X"D2",X"49", + X"4E",X"54",X"45",X"52",X"46",X"41",X"43",X"45",X"20",X"31",X"20",X"0C",X"A0",X"D2",X"20",X"20", + X"20",X"52",X"45",X"41",X"44",X"20",X"44",X"41",X"54",X"41",X"0C",X"20",X"D4",X"49",X"4E",X"54", + X"45",X"52",X"46",X"41",X"43",X"45",X"20",X"32",X"20",X"0C",X"A0",X"D4",X"20",X"20",X"20",X"52", + X"45",X"41",X"44",X"20",X"44",X"41",X"54",X"41",X"0C",X"20",X"D6",X"49",X"4E",X"54",X"45",X"52", + X"46",X"41",X"43",X"45",X"20",X"33",X"20",X"0C",X"A0",X"D6",X"20",X"20",X"20",X"52",X"45",X"41", + X"44",X"20",X"44",X"41",X"54",X"41",X"0F",X"40",X"D2",X"30",X"20",X"31",X"20",X"32",X"20",X"33", + X"20",X"34",X"20",X"35",X"20",X"36",X"20",X"37",X"0F",X"40",X"D4",X"30",X"20",X"31",X"20",X"32", + X"20",X"33",X"20",X"34",X"20",X"35",X"20",X"36",X"20",X"37",X"0F",X"40",X"D6",X"30",X"20",X"31", + X"20",X"32",X"20",X"33",X"20",X"34",X"20",X"35",X"20",X"36",X"20",X"37",X"0F",X"40",X"D1",X"30", + X"20",X"31",X"20",X"32",X"20",X"33",X"20",X"34",X"20",X"35",X"20",X"36",X"20",X"37",X"06",X"A0", + X"D7",X"54",X"49",X"4D",X"49",X"4E",X"47",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"B0",X"72", + X"EC",X"76",X"5E",X"7C",X"4B",X"76",X"96",X"78",X"1D",X"78",X"0D",X"20",X"D1",X"30",X"31",X"20", + X"44",X"49",X"50",X"20",X"53",X"57",X"49",X"54",X"43",X"48",X"0B",X"A0",X"D1",X"30",X"32",X"20", + X"49",X"2F",X"4F",X"20",X"50",X"4F",X"52",X"54",X"08",X"20",X"D2",X"30",X"33",X"20",X"53",X"4F", + X"55",X"4E",X"44",X"0C",X"A0",X"D2",X"30",X"34",X"20",X"43",X"48",X"41",X"52",X"41",X"43",X"54", + X"45",X"52",X"08",X"20",X"D3",X"30",X"35",X"20",X"43",X"4F",X"4C",X"4F",X"52",X"16",X"A0",X"D3", + X"30",X"36",X"20",X"43",X"52",X"4F",X"53",X"53",X"20",X"48",X"41",X"54",X"43",X"48",X"20",X"50", + X"41",X"54",X"54",X"45",X"52",X"4E",X"00",X"7C",X"B8",X"C0",X"7D",X"B9",X"C9",X"21",X"00",X"80", + X"01",X"00",X"08",X"AF",X"77",X"23",X"0B",X"78",X"B1",X"20",X"F8",X"C9",X"72",X"23",X"0B",X"78", + X"B1",X"20",X"F9",X"C9",X"72",X"23",X"23",X"0B",X"78",X"B1",X"20",X"F8",X"C9",X"08",X"D9",X"C3", + X"39",X"7C",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"21",X"09",X"E0",X"34",X"CD",X"52",X"7C", + X"3A",X"02",X"E3",X"0F",X"38",X"07",X"21",X"06",X"E3",X"3E",X"80",X"86",X"77",X"C9",X"D9",X"08", + X"FB",X"C9",X"21",X"00",X"E1",X"11",X"00",X"C0",X"01",X"00",X"01",X"ED",X"B0",X"C9",X"CD",X"B6", + X"77",X"21",X"B9",X"7D",X"CD",X"D5",X"77",X"2A",X"9C",X"7D",X"22",X"06",X"E7",X"DD",X"21",X"08", + X"E7",X"FD",X"21",X"A0",X"7D",X"CD",X"95",X"79",X"CD",X"95",X"79",X"CD",X"95",X"79",X"CD",X"8B", + X"7C",X"DB",X"00",X"2F",X"0F",X"0F",X"DA",X"33",X"70",X"18",X"D3",X"FD",X"22",X"0B",X"E7",X"3E", + X"01",X"32",X"05",X"E7",X"06",X"06",X"CD",X"50",X"7D",X"CD",X"E5",X"7C",X"CD",X"CF",X"7C",X"01", + X"00",X"00",X"ED",X"43",X"13",X"E3",X"DB",X"00",X"2F",X"0F",X"0F",X"30",X"04",X"C1",X"C3",X"33", + X"70",X"DB",X"00",X"2F",X"0F",X"DC",X"CF",X"7C",X"DB",X"01",X"2F",X"0F",X"38",X"34",X"0F",X"38", + X"5D",X"ED",X"4B",X"13",X"E3",X"0B",X"78",X"B1",X"20",X"D8",X"CD",X"E5",X"7C",X"18",X"4F",X"3A", + X"05",X"E7",X"4F",X"06",X"00",X"FD",X"2A",X"0B",X"E7",X"FD",X"09",X"FD",X"7E",X"00",X"D3",X"00", + X"F6",X"80",X"D3",X"00",X"C9",X"3E",X"00",X"D3",X"00",X"3E",X"80",X"D3",X"00",X"06",X"00",X"10", + X"FE",X"C9",X"CD",X"E5",X"7C",X"CD",X"95",X"79",X"CD",X"95",X"79",X"CD",X"95",X"79",X"3A",X"07", + X"E7",X"5F",X"3A",X"05",X"E7",X"BB",X"C8",X"06",X"04",X"CD",X"50",X"7D",X"3D",X"32",X"05",X"E7", + X"06",X"06",X"CD",X"50",X"7D",X"CD",X"CF",X"7C",X"01",X"00",X"00",X"C3",X"A2",X"7C",X"CD",X"E5", + X"7C",X"CD",X"95",X"79",X"CD",X"95",X"79",X"CD",X"95",X"79",X"3A",X"06",X"E7",X"5F",X"3A",X"05", + X"E7",X"BB",X"C8",X"06",X"04",X"CD",X"50",X"7D",X"3C",X"32",X"05",X"E7",X"06",X"06",X"CD",X"50", + X"7D",X"CD",X"CF",X"7C",X"01",X"00",X"00",X"C3",X"A2",X"7C",X"4F",X"D6",X"03",X"3C",X"18",X"17", + X"4F",X"C5",X"21",X"20",X"D1",X"11",X"80",X"00",X"47",X"05",X"28",X"03",X"19",X"18",X"FA",X"C1", + X"23",X"70",X"23",X"23",X"70",X"79",X"C9",X"C5",X"21",X"20",X"D1",X"11",X"80",X"00",X"47",X"FE", + X"01",X"28",X"04",X"05",X"19",X"10",X"FD",X"C1",X"23",X"70",X"23",X"23",X"70",X"79",X"C9",X"C5", + X"0E",X"00",X"06",X"00",X"10",X"FE",X"F5",X"3A",X"00",X"D0",X"CB",X"4F",X"28",X"09",X"F1",X"0D", + X"20",X"F0",X"3D",X"20",X"EB",X"C1",X"C9",X"F1",X"C1",X"06",X"01",X"C9",X"15",X"01",X"00",X"00", + X"00",X"01",X"02",X"03",X"04",X"05",X"06",X"1C",X"11",X"12",X"13",X"14",X"15",X"20",X"21",X"22", + X"23",X"24",X"25",X"26",X"27",X"00",X"00",X"00",X"00",X"0B",X"A0",X"D0",X"53",X"20",X"4F",X"20", + X"55",X"20",X"4E",X"20",X"44",X"20",X"53",X"0F",X"20",X"D1",X"30",X"31",X"20",X"48",X"4F",X"4C", + X"45",X"20",X"44",X"49",X"47",X"47",X"49",X"4E",X"47",X"15",X"A0",X"D1",X"30",X"32",X"20",X"50", + X"49",X"43",X"4B",X"49",X"4E",X"47",X"20",X"55",X"50",X"20",X"46",X"4F",X"52",X"54",X"49",X"4E", + X"45",X"0F",X"20",X"D2",X"30",X"33",X"20",X"44",X"4F",X"4F",X"52",X"20",X"4F",X"50",X"45",X"4E", + X"49",X"4E",X"47",X"13",X"A0",X"D2",X"30",X"34",X"20",X"42",X"55",X"52",X"49",X"45",X"44",X"20", + X"49",X"4E",X"54",X"4F",X"20",X"48",X"4F",X"4C",X"45",X"14",X"20",X"D3",X"30",X"35",X"20",X"46", + X"41",X"4C",X"4C",X"49",X"4E",X"47",X"20",X"49",X"4E",X"54",X"4F",X"20",X"48",X"4F",X"4C",X"45", + X"10",X"A0",X"D3",X"30",X"36",X"20",X"50",X"4C",X"41",X"59",X"45",X"52",X"20",X"4B",X"49",X"4C", + X"4C",X"45",X"44",X"12",X"20",X"D4",X"30",X"37",X"20",X"54",X"49",X"4D",X"45",X"20",X"55",X"50", + X"20",X"57",X"41",X"52",X"4E",X"49",X"4E",X"47",X"16",X"A0",X"D4",X"30",X"38",X"20",X"54",X"49", + X"4D",X"45",X"20",X"53",X"43",X"4F",X"52",X"45",X"20",X"43",X"4F",X"55",X"4E",X"54",X"49",X"4E", + X"47",X"11",X"20",X"D5",X"30",X"39",X"20",X"43",X"4F",X"49",X"4E",X"20",X"49",X"4E",X"53",X"45", + X"52",X"54",X"49",X"4E",X"47",X"0F",X"A0",X"D5",X"31",X"30",X"20",X"5A",X"4F",X"4F",X"4D",X"20", + X"49",X"4E",X"20",X"20",X"20",X"20",X"20",X"0F",X"20",X"D6",X"31",X"31",X"20",X"5A",X"4F",X"4F", + X"4D",X"20",X"4F",X"55",X"54",X"20",X"20",X"20",X"20",X"16",X"A0",X"D6",X"31",X"32",X"20",X"50", + X"4C",X"41",X"59",X"45",X"52",X"20",X"46",X"41",X"4C",X"4C",X"49",X"4E",X"47",X"20",X"20",X"20", + X"20",X"20",X"0D",X"20",X"D7",X"31",X"33",X"20",X"47",X"41",X"4D",X"45",X"20",X"53",X"54",X"41", + X"52",X"54",X"0C",X"A0",X"D7",X"31",X"34",X"20",X"47",X"41",X"4D",X"45",X"20",X"4F",X"56",X"45", + X"52",X"1B",X"20",X"D8",X"31",X"35",X"20",X"42",X"47",X"4D",X"20",X"28",X"43",X"4F",X"4E",X"54", + X"49",X"4E",X"55",X"49",X"54",X"59",X"20",X"44",X"49",X"53",X"50",X"4C",X"41",X"59",X"29",X"0E", + X"A0",X"D8",X"31",X"36",X"20",X"52",X"4F",X"55",X"4E",X"44",X"20",X"43",X"4C",X"45",X"41",X"52", + X"0E",X"20",X"D9",X"31",X"37",X"20",X"42",X"4C",X"4F",X"43",X"4B",X"20",X"43",X"4C",X"45",X"41", + X"52",X"0D",X"A0",X"D9",X"31",X"38",X"20",X"54",X"49",X"4D",X"45",X"20",X"55",X"50",X"20",X"20", + X"20",X"12",X"20",X"DA",X"31",X"39",X"20",X"42",X"47",X"4D",X"20",X"28",X"47",X"41",X"4D",X"45", + X"20",X"50",X"4C",X"41",X"59",X"29",X"12",X"A0",X"DA",X"32",X"30",X"20",X"47",X"41",X"4D",X"45", + X"20",X"43",X"4F",X"4D",X"50",X"4C",X"45",X"54",X"49",X"4E",X"47",X"0C",X"20",X"DB",X"20",X"20", + X"4D",X"55",X"53",X"49",X"43",X"20",X"45",X"4E",X"44",X"20",X"00",X"00",X"00",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7"); +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/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/rom_sprite_high.vhd b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/rom_sprite_high.vhd new file mode 100644 index 00000000..8c30be36 --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/rom_sprite_high.vhd @@ -0,0 +1,24 @@ +library ieee; +use ieee.std_logic_1164.all,ieee.numeric_std.all; + +entity rom_sprite_high is +port ( + clk : in std_logic; + addr : in std_logic_vector(4 downto 0); + data : out std_logic_vector(3 downto 0) +); +end entity; + +architecture prom of rom_sprite_high is + type rom is array(0 to 31) of std_logic_vector(3 downto 0); + signal rom_data: rom := ( + "0001","0001","0001","0001","0000","0000","0000","0000","0001","0001","0001","0001","0000","0000","0000","0000", + "0001","0001","0001","0001","0000","0000","0000","0000","0001","0001","0001","0001","0000","0000","0000","0000"); +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/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/rom_sprite_high_new.vhd b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/rom_sprite_high_new.vhd new file mode 100644 index 00000000..bf9564e1 --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/rom_sprite_high_new.vhd @@ -0,0 +1,24 @@ +library ieee; +use ieee.std_logic_1164.all,ieee.numeric_std.all; + +entity rom_sprite_high_new is +port ( + clk : in std_logic; + addr : in std_logic_vector(4 downto 0); + data : out std_logic_vector(7 downto 0) +); +end entity; + +architecture prom of rom_sprite_high_new is + type rom is array(0 to 31) of std_logic_vector(7 downto 0); + signal rom_data: rom := ( + X"01",X"01",X"01",X"01",X"00",X"00",X"00",X"00",X"01",X"01",X"01",X"01",X"00",X"00",X"00",X"00", + X"01",X"01",X"01",X"01",X"00",X"00",X"00",X"00",X"01",X"01",X"01",X"01",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/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/snd.bin b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/snd.bin new file mode 100644 index 00000000..e483d90d Binary files /dev/null and b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/snd.bin differ diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/snd_prg.vhd b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/snd_prg.vhd new file mode 100644 index 00000000..d96f47a1 --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/ldrun/snd_prg.vhd @@ -0,0 +1,1046 @@ +library ieee; +use ieee.std_logic_1164.all,ieee.numeric_std.all; + +entity snd_prg is +port ( + clk : in std_logic; + addr : in std_logic_vector(13 downto 0); + data : out std_logic_vector(7 downto 0) +); +end entity; + +architecture prom of snd_prg is + type rom is array(0 to 16383) of std_logic_vector(7 downto 0); + signal rom_data: rom := ( + X"81",X"C7",X"0F",X"BC",X"77",X"F3",X"2F",X"23",X"E8",X"5D",X"85",X"A9",X"87",X"D8",X"40",X"D3", + X"0B",X"49",X"8C",X"52",X"D1",X"88",X"1E",X"5A",X"A5",X"8D",X"5A",X"3E",X"05",X"8D",X"22",X"9C", + X"43",X"D8",X"5D",X"14",X"D2",X"B6",X"D9",X"5B",X"22",X"D1",X"80",X"1E",X"5B",X"96",X"B8",X"6D", + X"49",X"C4",X"8C",X"58",X"D4",X"3D",X"18",X"D5",X"C1",X"5D",X"31",X"E4",X"9D",X"48",X"81",X"8D", + X"49",X"82",X"E5",X"B3",X"C2",X"1E",X"5A",X"82",X"D5",X"D8",X"5A",X"A6",X"C4",X"0D",X"23",X"E2", + X"8A",X"7D",X"19",X"42",X"D9",X"5D",X"85",X"C9",X"58",X"C5",X"8D",X"59",X"A3",X"8E",X"59",X"81", + X"98",X"10",X"93",X"F2",X"2E",X"3A",X"85",X"BB",X"69",X"B6",X"C2",X"2E",X"5B",X"01",X"89",X"C7", + X"1D",X"13",X"E0",X"5C",X"10",X"1F",X"35",X"D0",X"3E",X"05",X"AC",X"49",X"94",X"A8",X"82",X"1C", + X"97",X"D0",X"5C",X"20",X"B1",X"10",X"B9",X"61",X"F4",X"2D",X"21",X"D0",X"39",X"C5",X"0D",X"40", + X"D2",X"3E",X"12",X"B3",X"C1",X"83",X"E3",X"0B",X"10",X"5D",X"95",X"C8",X"5C",X"95",X"2D",X"05", + X"CA",X"35",X"DA",X"5B",X"A6",X"9B",X"6B",X"86",X"D2",X"3D",X"82",X"1E",X"13",X"1F",X"85",X"9B", + X"5A",X"82",X"88",X"B7",X"BA",X"68",X"C3",X"1C",X"00",X"39",X"F5",X"8C",X"48",X"A0",X"28",X"B4", + X"3F",X"85",X"C9",X"30",X"C5",X"BA",X"68",X"D4",X"2D",X"85",X"9D",X"15",X"D8",X"5A",X"09",X"4A", + X"91",X"83",X"BA",X"7C",X"30",X"B2",X"A5",X"9A",X"87",X"AC",X"41",X"D0",X"5D",X"05",X"AC",X"25", + X"BC",X"25",X"D9",X"5C",X"85",X"9C",X"34",X"D0",X"4B",X"A5",X"8D",X"50",X"D4",X"1D",X"14",X"D9", + X"5A",X"94",X"A8",X"49",X"C3",X"1C",X"03",X"AB",X"42",X"BA",X"36",X"D8",X"31",X"CA",X"42",X"9C", + X"38",X"C4",X"8A",X"29",X"08",X"97",X"9D",X"33",X"BC",X"34",X"CA",X"50",X"A0",X"92",X"0C",X"2A", + X"23",X"D0",X"2A",X"B7",X"8B",X"14",X"AA",X"58",X"C1",X"4A",X"C3",X"3D",X"A5",X"8B",X"59",X"90", + X"19",X"1C",X"23",X"D9",X"50",X"D1",X"5C",X"A5",X"9B",X"5A",X"01",X"90",X"89",X"38",X"A2",X"C2", + X"4A",X"B9",X"71",X"F0",X"59",X"C2",X"2A",X"80",X"18",X"92",X"99",X"82",X"3C",X"B7",X"B5",X"A9", + X"13",X"BB",X"51",X"C8",X"4A",X"80",X"81",X"00",X"C3",X"2D",X"82",X"2A",X"D2",X"5C",X"82",X"89", + X"3B",X"B7",X"0C",X"28",X"92",X"08",X"A3",X"8F",X"32",X"CA",X"40",X"A8",X"4A",X"92",X"2E",X"05", + X"CA",X"58",X"A0",X"29",X"B5",X"1D",X"95",X"1D",X"04",X"9D",X"25",X"C8",X"11",X"A1",X"89",X"3B", + X"02",X"9A",X"20",X"05",X"F0",X"4B",X"92",X"1B",X"39",X"90",X"23",X"F9",X"69",X"B1",X"3A",X"95", + X"A9",X"22",X"BD",X"50",X"B0",X"5C",X"95",X"A9",X"39",X"90",X"29",X"1B",X"97",X"1F",X"05",X"8C", + X"01",X"1A",X"83",X"A8",X"18",X"95",X"C2",X"8A",X"4A",X"92",X"2B",X"93",X"3D",X"C4",X"2E",X"12", + X"C0",X"28",X"A1",X"1B",X"69",X"B2",X"3B",X"A4",X"90",X"88",X"3B",X"C7",X"8B",X"16",X"BA",X"40", + X"B0",X"39",X"B5",X"9A",X"30",X"D1",X"4B",X"93",X"0C",X"13",X"C8",X"48",X"C1",X"28",X"C1",X"4A", + X"C4",X"2D",X"83",X"8A",X"84",X"8B",X"04",X"8C",X"12",X"98",X"A2",X"4C",X"95",X"9A",X"10",X"80", + X"2B",X"02",X"98",X"08",X"99",X"58",X"E4",X"0B",X"06",X"BB",X"78",X"A9",X"50",X"C0",X"20",X"B1", + X"00",X"99",X"79",X"C2",X"4C",X"83",X"9A",X"11",X"0C",X"12",X"9A",X"31",X"D1",X"2A",X"A2",X"1A", + X"3B",X"96",X"8A",X"12",X"D8",X"24",X"D9",X"15",X"AB",X"48",X"92",X"9A",X"48",X"90",X"94",X"AA", + X"59",X"90",X"10",X"A0",X"28",X"A8",X"68",X"F1",X"3B",X"A4",X"2B",X"93",X"98",X"8A",X"79",X"A2", + X"00",X"AB",X"70",X"9A",X"32",X"F0",X"28",X"A2",X"0C",X"15",X"AB",X"40",X"A0",X"18",X"A1",X"3B", + X"C3",X"5A",X"E3",X"19",X"B3",X"88",X"82",X"89",X"B3",X"7B",X"B4",X"18",X"D2",X"4C",X"94",X"0B", + X"02",X"98",X"81",X"92",X"B8",X"7A",X"92",X"1E",X"23",X"E8",X"30",X"AA",X"33",X"CB",X"41",X"B0", + X"18",X"2A",X"A2",X"18",X"B0",X"4A",X"85",X"AF",X"58",X"A1",X"2B",X"A4",X"2B",X"B4",X"19",X"A0", + X"4A",X"A3",X"3F",X"03",X"AC",X"33",X"BC",X"32",X"BA",X"15",X"9B",X"28",X"21",X"F0",X"38",X"C1", + X"28",X"B2",X"88",X"01",X"AB",X"72",X"E0",X"29",X"90",X"28",X"A8",X"20",X"9A",X"50",X"E2",X"1A", + X"80",X"49",X"D1",X"49",X"D1",X"5A",X"B4",X"1B",X"83",X"8A",X"94",X"0A",X"92",X"19",X"B4",X"1C", + X"82",X"3F",X"84",X"9A",X"12",X"8B",X"85",X"0C",X"03",X"9B",X"30",X"8B",X"03",X"08",X"C4",X"8B", + X"15",X"BB",X"24",X"8C",X"20",X"01",X"C8",X"38",X"BB",X"72",X"F0",X"39",X"A0",X"20",X"99",X"28", + X"92",X"9A",X"05",X"9A",X"28",X"09",X"C3",X"7D",X"03",X"A9",X"12",X"9C",X"20",X"09",X"18",X"D5", + X"1A",X"C1",X"31",X"D8",X"10",X"39",X"F1",X"3A",X"A1",X"12",X"D8",X"48",X"C0",X"69",X"B1",X"39", + X"B0",X"69",X"A1",X"08",X"08",X"19",X"A3",X"09",X"91",X"5D",X"95",X"0B",X"83",X"98",X"2B",X"83", + X"A9",X"12",X"3D",X"C5",X"1B",X"A1",X"58",X"D1",X"20",X"A9",X"13",X"C9",X"6A",X"A3",X"1B",X"02", + X"9B",X"52",X"F1",X"29",X"A0",X"29",X"80",X"A5",X"0D",X"11",X"0E",X"15",X"AB",X"40",X"A8",X"28", + X"A4",X"8A",X"84",X"9C",X"24",X"AB",X"22",X"8E",X"13",X"AA",X"24",X"C9",X"59",X"B3",X"2B",X"94", + X"8A",X"01",X"0A",X"94",X"8C",X"22",X"9B",X"22",X"8C",X"03",X"99",X"91",X"69",X"C1",X"3B",X"00", + X"92",X"9B",X"27",X"8D",X"04",X"A9",X"39",X"99",X"26",X"BC",X"51",X"C8",X"30",X"D0",X"38",X"B0", + X"31",X"AE",X"23",X"9D",X"13",X"9B",X"06",X"9A",X"12",X"B9",X"38",X"A2",X"5D",X"83",X"9B",X"23", + X"AB",X"31",X"B1",X"19",X"4B",X"D3",X"4B",X"C3",X"29",X"B1",X"5A",X"A3",X"0A",X"10",X"B0",X"68", + X"F0",X"49",X"A2",X"2C",X"08",X"11",X"9B",X"50",X"C1",X"10",X"C2",X"00",X"A0",X"12",X"E8",X"7B", + X"00",X"00",X"A1",X"3E",X"03",X"8D",X"04",X"9A",X"12",X"98",X"09",X"03",X"C9",X"40",X"D2",X"3B", + X"B5",X"8B",X"12",X"1D",X"02",X"89",X"89",X"58",X"A8",X"25",X"E8",X"38",X"A8",X"49",X"98",X"21", + X"D0",X"39",X"98",X"12",X"AA",X"A7",X"99",X"38",X"B1",X"40",X"C9",X"22",X"9A",X"B3",X"7A",X"B3", + X"39",X"D1",X"39",X"9D",X"41",X"B9",X"25",X"C0",X"01",X"98",X"08",X"29",X"B3",X"01",X"BE",X"42", + X"D0",X"3A",X"B5",X"8A",X"13",X"BC",X"60",X"AA",X"40",X"C1",X"29",X"A3",X"0E",X"22",X"9B",X"84", + X"2D",X"93",X"0A",X"02",X"8C",X"14",X"9D",X"13",X"0D",X"02",X"08",X"A9",X"48",X"8B",X"14",X"0C", + X"84",X"99",X"00",X"0A",X"03",X"B3",X"A8",X"2F",X"06",X"8B",X"82",X"2B",X"A3",X"2A",X"C1",X"40", + X"AE",X"34",X"BB",X"33",X"B9",X"82",X"8A",X"58",X"B8",X"41",X"C0",X"10",X"B2",X"4D",X"B7",X"0A", + X"81",X"2C",X"00",X"18",X"92",X"B9",X"68",X"A8",X"22",X"E0",X"10",X"80",X"B1",X"69",X"C2",X"19", + X"09",X"A5",X"0B",X"10",X"93",X"0B",X"E2",X"6A",X"A1",X"21",X"AD",X"33",X"CA",X"31",X"B8",X"28", + X"2B",X"B6",X"18",X"D8",X"48",X"90",X"91",X"3D",X"01",X"0A",X"A2",X"59",X"F2",X"3A",X"C2",X"29", + X"19",X"0B",X"47",X"F7",X"AF",X"7E",X"4B",X"28",X"80",X"80",X"0A",X"4C",X"3C",X"5C",X"5D",X"5D", + X"5D",X"4A",X"A6",X"D5",X"C8",X"5D",X"40",X"D5",X"8D",X"58",X"D3",X"3E",X"85",X"AD",X"52",X"DA", + X"51",X"CA",X"51",X"AD",X"42",X"9A",X"B6",X"09",X"8B",X"42",X"A0",X"AA",X"42",X"B1",X"0D",X"04", + X"8A",X"21",X"D8",X"22",X"A9",X"22",X"E8",X"11",X"0A",X"81",X"29",X"E1",X"00",X"2A",X"80",X"04", + X"E9",X"6A",X"00",X"08",X"80",X"80",X"80",X"80",X"80",X"80",X"80",X"80",X"80",X"88",X"08",X"08", + X"00",X"88",X"08",X"81",X"92",X"A3",X"B3",X"C3",X"0C",X"5A",X"94",X"0B",X"B3",X"78",X"AB",X"81", + X"24",X"20",X"10",X"9A",X"FA",X"D9",X"16",X"30",X"DB",X"16",X"0C",X"84",X"8C",X"22",X"E2",X"1D", + X"39",X"95",X"D3",X"A1",X"8A",X"5C",X"5C",X"3B",X"4B",X"29",X"94",X"E5",X"D4",X"A8",X"4D",X"5A", + X"A6",X"D0",X"5D",X"13",X"C8",X"4A",X"B5",X"0C",X"13",X"AC",X"32",X"AD",X"41",X"AB",X"24",X"9A", + X"A5",X"09",X"99",X"40",X"90",X"B1",X"49",X"80",X"B8",X"41",X"B2",X"8C",X"03",X"1B",X"03",X"BD", + X"13",X"2D",X"02",X"0D",X"81",X"02",X"99",X"01",X"2B",X"D1",X"00",X"20",X"A9",X"12",X"20",X"F9", + X"1F",X"78",X"B2",X"80",X"80",X"08",X"80",X"08",X"08",X"08",X"80",X"08",X"80",X"08",X"80",X"08", + X"08",X"09",X"29",X"1B",X"28",X"93",X"BB",X"60",X"C8",X"15",X"8B",X"B9",X"22",X"16",X"00",X"09", + X"8D",X"AC",X"B2",X"73",X"2B",X"F9",X"42",X"BC",X"42",X"D0",X"3B",X"A7",X"A0",X"3F",X"3A",X"84", + X"D4",X"C3",X"B3",X"B3",X"B4",X"D5",X"C4",X"C4",X"C3",X"99",X"4D",X"5B",X"84",X"C2",X"1D",X"48", + X"C4",X"8B",X"31",X"D1",X"3B",X"B5",X"0B",X"85",X"8B",X"04",X"8B",X"95",X"89",X"91",X"3A",X"8B", + X"24",X"98",X"B0",X"40",X"90",X"C0",X"22",X"A0",X"9B",X"14",X"1B",X"11",X"E8",X"13",X"8B",X"22", + X"BC",X"10",X"30",X"B0",X"33",X"FA",X"10",X"83",X"8A",X"01",X"48",X"D9",X"10",X"A1",X"48",X"A8", + X"11",X"6C",X"F7",X"98",X"80",X"08",X"08",X"08",X"08",X"08",X"08",X"08",X"08",X"08",X"08",X"09", + X"19",X"09",X"28",X"92",X"B1",X"3A",X"B2",X"7A",X"C0",X"23",X"29",X"9A",X"A0",X"80",X"82",X"36", + X"01",X"DE",X"A0",X"44",X"9C",X"95",X"1C",X"95",X"9B",X"58",X"B5",X"9A",X"5C",X"28",X"A6",X"C3", + X"C4",X"B3",X"B3",X"C4",X"C4",X"C4",X"B3",X"B2",X"0C",X"5C",X"39",X"A5",X"B1",X"2D",X"21",X"C2", + X"1C",X"12",X"AA",X"58",X"B1",X"3A",X"B4",X"1B",X"A5",X"1A",X"B3",X"3A",X"B9",X"60",X"9A",X"83", + X"19",X"9B",X"24",X"88",X"9B",X"14",X"1B",X"2C",X"91",X"40",X"B2",X"8D",X"01",X"38",X"B2",X"2D", + X"A2",X"83",X"0A",X"83",X"2F",X"91",X"88",X"30",X"A8",X"23",X"8E",X"91",X"0A",X"04",X"0A",X"80", + X"21",X"20",X"FF",X"7A",X"08",X"18",X"80",X"88",X"00",X"80",X"80",X"80",X"80",X"80",X"89",X"18", + X"09",X"19",X"01",X"A1",X"2C",X"13",X"9B",X"86",X"29",X"BB",X"A9",X"02",X"18",X"09",X"AA",X"B2", + X"73",X"41",X"CE",X"83",X"3A",X"E2",X"3C",X"A4",X"1E",X"21",X"D3",X"8B",X"7B",X"29",X"95",X"D4", + X"B4",X"C3",X"B4",X"C3",X"C4",X"B4",X"B2",X"99",X"5C",X"3A",X"83",X"D3",X"8B",X"49",X"93",X"AA", + X"80",X"80",X"80",X"80",X"00",X"00",X"80",X"80",X"80",X"88",X"80",X"90",X"80",X"89",X"80",X"80", + X"80",X"10",X"80",X"01",X"80",X"10",X"80",X"80",X"80",X"A0",X"90",X"90",X"A8",X"80",X"90",X"80", + X"00",X"02",X"81",X"81",X"10",X"00",X"00",X"88",X"88",X"80",X"A9",X"89",X"89",X"80",X"80",X"80", + X"80",X"01",X"11",X"02",X"01",X"00",X"80",X"80",X"98",X"99",X"A9",X"98",X"B8",X"80",X"80",X"80", + X"03",X"03",X"03",X"01",X"12",X"10",X"00",X"98",X"8A",X"A9",X"A9",X"B8",X"C0",X"B8",X"80",X"81", + X"20",X"31",X"21",X"22",X"21",X"11",X"80",X"88",X"A9",X"AA",X"BA",X"C8",X"B8",X"A9",X"00",X"20", + X"13",X"24",X"14",X"23",X"12",X"11",X"88",X"9A",X"AA",X"CB",X"BA",X"D9",X"B8",X"A9",X"00",X"31", + X"23",X"43",X"33",X"33",X"22",X"10",X"88",X"AA",X"BC",X"AE",X"8C",X"9A",X"A8",X"80",X"02",X"43", + X"34",X"43",X"43",X"33",X"31",X"08",X"9B",X"BD",X"CB",X"CB",X"CB",X"AA",X"A8",X"03",X"24",X"36", + X"33",X"52",X"33",X"42",X"21",X"89",X"BD",X"BD",X"BC",X"BC",X"BB",X"A9",X"90",X"22",X"53",X"36", + X"23",X"34",X"33",X"41",X"10",X"9A",X"CD",X"BC",X"BC",X"BB",X"BB",X"98",X"02",X"43",X"44",X"34", + X"24",X"34",X"32",X"21",X"8A",X"BE",X"BC",X"CB",X"BC",X"BA",X"A8",X"01",X"33",X"54",X"23",X"34", + X"34",X"42",X"31",X"19",X"BC",X"CC",X"CA",X"BD",X"AB",X"99",X"81",X"23",X"34",X"42",X"33",X"44", + X"34",X"32",X"18",X"9C",X"CC",X"BB",X"CC",X"BA",X"B9",X"81",X"23",X"35",X"32",X"43",X"34",X"43", + X"43",X"00",X"AB",X"CD",X"BB",X"CB",X"CA",X"B9",X"81",X"22",X"42",X"42",X"33",X"43",X"44",X"33", + X"11",X"AB",X"DC",X"BC",X"BC",X"BA",X"C9",X"80",X"12",X"33",X"42",X"34",X"33",X"54",X"23",X"20", + X"8B",X"CC",X"BD",X"BB",X"CB",X"AA",X"90",X"12",X"24",X"35",X"13",X"33",X"43",X"43",X"42",X"19", + X"AC",X"CC",X"BB",X"DA",X"BA",X"A9",X"00",X"23",X"43",X"34",X"33",X"44",X"34",X"32",X"20",X"9A", + X"CD",X"BC",X"CA",X"BB",X"AA",X"A8",X"02",X"33",X"53",X"52",X"23",X"43",X"43",X"33",X"21",X"AD", + X"CC",X"BC",X"BB",X"CA",X"A9",X"98",X"12",X"24",X"35",X"13",X"33",X"44",X"43",X"32",X"18",X"AD", + X"CC",X"BB",X"CA",X"BB",X"A9",X"80",X"13",X"52",X"42",X"33",X"34",X"43",X"43",X"32",X"88",X"BE", + X"BC",X"CB",X"BC",X"AB",X"98",X"00",X"13",X"34",X"34",X"34",X"24",X"33",X"33",X"21",X"09",X"AC", + X"EB",X"CC",X"CB",X"BB",X"99",X"80",X"13",X"34",X"43",X"33",X"42",X"43",X"44",X"31",X"19",X"AB", + X"FB",X"BB",X"CB",X"AA",X"AA",X"A9",X"11",X"44",X"34",X"34",X"32",X"44",X"34",X"21",X"09",X"AB", + X"EB",X"CC",X"BA",X"AB",X"A8",X"00",X"13",X"43",X"34",X"34",X"33",X"44",X"33",X"32",X"08",X"AB", + X"EC",X"CC",X"BB",X"C9",X"A8",X"80",X"01",X"23",X"34",X"43",X"32",X"43",X"43",X"43",X"21",X"8A", + X"CC",X"CC",X"CB",X"CA",X"AA",X"88",X"11",X"23",X"34",X"33",X"52",X"43",X"33",X"33",X"41",X"8B", + X"CD",X"CC",X"BB",X"BC",X"AB",X"98",X"12",X"42",X"33",X"43",X"43",X"53",X"33",X"23",X"20",X"BF", + X"CB",X"CA",X"AB",X"CA",X"99",X"81",X"02",X"43",X"34",X"32",X"33",X"54",X"42",X"11",X"80",X"09", + X"DD",X"CB",X"AB",X"BB",X"BA",X"91",X"33",X"43",X"43",X"52",X"33",X"33",X"33",X"74",X"29",X"CB", + X"B9",X"8C",X"DC",X"AA",X"90",X"00",X"01",X"23",X"43",X"32",X"35",X"24",X"33",X"21",X"09",X"CC", + X"BB",X"DD",X"CB",X"99",X"89",X"90",X"33",X"32",X"43",X"52",X"32",X"34",X"53",X"19",X"11",X"CC", + X"CB",X"BD",X"BB",X"98",X"9A",X"02",X"22",X"43",X"52",X"23",X"35",X"32",X"53",X"20",X"0A",X"AB", + X"FE",X"AA",X"AB",X"99",X"99",X"01",X"34",X"23",X"23",X"52",X"24",X"32",X"45",X"21",X"88",X"8A", + X"FC",X"BA",X"AB",X"E9",X"00",X"80",X"22",X"22",X"32",X"33",X"32",X"64",X"30",X"16",X"0B",X"A0", + X"AF",X"B9",X"AC",X"98",X"A9",X"02",X"21",X"23",X"33",X"52",X"23",X"52",X"15",X"30",X"10",X"8C", + X"E9",X"9D",X"BA",X"A9",X"BA",X"81",X"22",X"33",X"52",X"33",X"34",X"35",X"34",X"31",X"85",X"2E", + X"BA",X"AE",X"B9",X"0A",X"B0",X"10",X"22",X"23",X"24",X"22",X"42",X"13",X"37",X"30",X"31",X"F8", + X"8C",X"A9",X"D9",X"AA",X"88",X"00",X"11",X"32",X"24",X"21",X"42",X"17",X"10",X"52",X"09",X"08", + X"F9",X"BB",X"B9",X"B9",X"91",X"08",X"23",X"34",X"33",X"34",X"32",X"44",X"23",X"44",X"11",X"98", + X"FD",X"0B",X"D9",X"99",X"89",X"81",X"12",X"13",X"23",X"22",X"42",X"35",X"22",X"41",X"15",X"C9", + X"9D",X"AA",X"CA",X"AA",X"A9",X"00",X"22",X"34",X"33",X"34",X"23",X"78",X"51",X"06",X"91",X"C0", + X"9B",X"99",X"EB",X"09",X"80",X"81",X"12",X"21",X"31",X"41",X"22",X"37",X"02",X"24",X"91",X"9F", + X"8D",X"8A",X"B8",X"B0",X"91",X"01",X"12",X"23",X"34",X"22",X"52",X"32",X"70",X"49",X"8A",X"0D", + X"9B",X"E8",X"AA",X"A1",X"A1",X"03",X"12",X"32",X"32",X"43",X"26",X"31",X"50",X"40",X"A3",X"CC", + X"AB",X"AF",X"99",X"A9",X"88",X"11",X"12",X"33",X"23",X"42",X"25",X"16",X"12",X"31",X"3C",X"9F", + X"0D",X"0D",X"89",X"98",X"88",X"01",X"11",X"21",X"21",X"32",X"23",X"32",X"57",X"10",X"38",X"C0", + X"DA",X"C9",X"BB",X"0C",X"88",X"80",X"22",X"32",X"33",X"34",X"14",X"14",X"24",X"71",X"08",X"1D", + X"99",X"BD",X"AA",X"B8",X"B9",X"20",X"23",X"34",X"23",X"23",X"24",X"25",X"25",X"50",X"29",X"AB", + X"9D",X"AE",X"8C",X"99",X"88",X"01",X"11",X"22",X"22",X"22",X"32",X"34",X"70",X"42",X"59",X"8A", + X"AC",X"AD",X"9C",X"A8",X"99",X"01",X"12",X"32",X"32",X"33",X"23",X"43",X"55",X"40",X"11",X"89", + X"FA",X"9C",X"AB",X"C9",X"0A",X"00",X"22",X"32",X"33",X"23",X"42",X"33",X"56",X"11",X"41",X"A9", + X"F8",X"C9",X"C8",X"9A",X"80",X"00",X"12",X"13",X"22",X"22",X"32",X"34",X"56",X"12",X"39",X"C8", + X"AD",X"9C",X"CB",X"A9",X"A9",X"01",X"23",X"42",X"23",X"32",X"33",X"35",X"25",X"37",X"11",X"8A", + X"D9",X"AD",X"AB",X"9C",X"88",X"81",X"21",X"23",X"13",X"33",X"22",X"52",X"35",X"40",X"78",X"09", + X"AA",X"BC",X"BD",X"B9",X"99",X"80",X"22",X"23",X"34",X"22",X"32",X"43",X"16",X"13",X"45",X"98", + X"99",X"DC",X"CA",X"AA",X"99",X"88",X"13",X"22",X"34",X"22",X"23",X"33",X"37",X"22",X"53",X"20", + X"E9",X"9C",X"CB",X"AD",X"A8",X"80",X"11",X"12",X"22",X"32",X"23",X"33",X"54",X"16",X"32",X"0A", + X"9B",X"EA",X"DC",X"A9",X"B8",X"80",X"11",X"23",X"23",X"33",X"33",X"34",X"42",X"72",X"22",X"48", + X"AB",X"DA",X"DC",X"BB",X"9A",X"A1",X"11",X"33",X"33",X"42",X"33",X"34",X"25",X"41",X"44",X"99", + X"3E",X"AA",X"CA",X"BA",X"AB",X"88",X"12",X"32",X"43",X"23",X"33",X"52",X"23",X"74",X"21",X"2A", + X"9C",X"BE",X"BB",X"CA",X"BA",X"98",X"13",X"33",X"43",X"32",X"33",X"43",X"35",X"55",X"28",X"80", + X"BB",X"F9",X"AD",X"9B",X"9A",X"10",X"11",X"23",X"32",X"33",X"33",X"35",X"34",X"72",X"13",X"AA", + X"CB",X"BE",X"9D",X"A9",X"A8",X"00",X"21",X"23",X"22",X"33",X"23",X"34",X"53",X"72",X"11",X"0A", + X"CA",X"DB",X"BD",X"B9",X"A9",X"91",X"32",X"33",X"33",X"42",X"23",X"33",X"44",X"73",X"11",X"1B", + X"9B",X"FC",X"AC",X"AA",X"99",X"81",X"22",X"23",X"23",X"33",X"32",X"42",X"72",X"23",X"40",X"82", + X"CB",X"FA",X"DA",X"AA",X"98",X"00",X"12",X"22",X"33",X"32",X"33",X"34",X"33",X"77",X"30",X"88", + X"BA",X"BB",X"FB",X"BB",X"C9",X"80",X"12",X"23",X"33",X"33",X"24",X"23",X"26",X"35",X"42",X"3A", + X"DA",X"BD",X"AC",X"BA",X"89",X"81",X"21",X"33",X"23",X"33",X"32",X"43",X"36",X"62",X"10",X"2A", + X"8F",X"AC",X"AB",X"AC",X"89",X"81",X"21",X"31",X"32",X"23",X"23",X"35",X"25",X"27",X"10",X"82", + X"C9",X"DB",X"BA",X"AE",X"90",X"80",X"11",X"12",X"22",X"22",X"22",X"24",X"54",X"85",X"11",X"89", + X"AE",X"9B",X"BE",X"90",X"B9",X"00",X"12",X"13",X"22",X"32",X"33",X"26",X"32",X"37",X"14",X"89", + X"8B",X"FA",X"AC",X"C9",X"80",X"80",X"02",X"12",X"22",X"22",X"23",X"31",X"55",X"42",X"33",X"99", + X"CE",X"BB",X"CC",X"8B",X"A8",X"81",X"22",X"32",X"34",X"22",X"22",X"33",X"47",X"35",X"08",X"10", + X"D9",X"CB",X"AB",X"E9",X"A0",X"81",X"02",X"13",X"22",X"22",X"32",X"34",X"34",X"70",X"07",X"91", + X"9A",X"AA",X"EA",X"9A",X"98",X"98",X"12",X"22",X"32",X"32",X"33",X"34",X"34",X"74",X"00",X"01", + X"D8",X"AD",X"9C",X"A9",X"B9",X"91",X"12",X"23",X"32",X"41",X"31",X"42",X"27",X"07",X"93",X"A0", + X"A9",X"CA",X"BC",X"AA",X"99",X"00",X"22",X"24",X"22",X"32",X"23",X"36",X"26",X"84",X"05",X"B8", + X"9B",X"9E",X"AA",X"B9",X"A0",X"81",X"21",X"33",X"33",X"33",X"43",X"42",X"53",X"44",X"31",X"9C", + X"BB",X"FA",X"CA",X"AB",X"99",X"11",X"12",X"42",X"32",X"32",X"23",X"34",X"72",X"14",X"20",X"99", + X"AF",X"BB",X"AB",X"F9",X"88",X"00",X"01",X"12",X"22",X"22",X"23",X"41",X"37",X"14",X"02",X"8B", + X"8B",X"FA",X"BE",X"99",X"99",X"18",X"11",X"13",X"22",X"22",X"33",X"25",X"22",X"73",X"A6",X"0B", + X"0A",X"CA",X"BD",X"8B",X"98",X"88",X"11",X"21",X"24",X"23",X"22",X"43",X"33",X"75",X"90",X"5A", + X"99",X"AD",X"9B",X"C9",X"09",X"98",X"11",X"22",X"22",X"33",X"51",X"22",X"53",X"43",X"31",X"9D", + X"9B",X"EC",X"BA",X"AA",X"A9",X"08",X"13",X"34",X"33",X"34",X"23",X"34",X"43",X"54",X"20",X"08", + X"FB",X"A9",X"BC",X"BB",X"B9",X"90",X"13",X"43",X"24",X"23",X"23",X"53",X"13",X"74",X"80",X"09", + X"AA",X"BF",X"BB",X"AB",X"B8",X"88",X"31",X"33",X"43",X"34",X"23",X"34",X"62",X"15",X"20",X"9B", + X"CB",X"CA",X"BD",X"BB",X"91",X"18",X"02",X"33",X"33",X"53",X"23",X"33",X"46",X"42",X"80",X"8A", + X"CB",X"CC",X"CB",X"A9",X"B9",X"80",X"03",X"33",X"44",X"33",X"32",X"55",X"41",X"81",X"21",X"8B", + X"FB",X"9A",X"EB",X"A8",X"89",X"00",X"12",X"23",X"34",X"22",X"34",X"43",X"32",X"25",X"38",X"BD", + X"BB",X"CD",X"CB",X"A0",X"98",X"88",X"23",X"33",X"42",X"33",X"63",X"42",X"01",X"34",X"0B",X"CC", + X"BD",X"AA",X"BB",X"BB",X"A8",X"23",X"43",X"34",X"34",X"34",X"33",X"43",X"33",X"20",X"89",X"BF", + X"FC",X"B9",X"A9",X"98",X"08",X"00",X"22",X"35",X"32",X"33",X"43",X"53",X"34",X"31",X"AC",X"CC", + X"DA",X"9B",X"AB",X"B9",X"81",X"32",X"33",X"44",X"33",X"43",X"42",X"12",X"14",X"22",X"28",X"BF", + X"EB",X"BB",X"BB",X"99",X"00",X"13",X"33",X"44",X"33",X"33",X"44",X"33",X"22",X"22",X"8B",X"FC", + X"CC",X"BC",X"A9",X"98",X"00",X"02",X"13",X"34",X"43",X"33",X"43",X"43",X"31",X"18",X"BD",X"DD", + X"BB",X"CB",X"A8",X"80",X"01",X"22",X"34",X"34",X"34",X"23",X"42",X"23",X"42",X"10",X"CD",X"DC", + X"BB",X"BB",X"99",X"81",X"12",X"33",X"53",X"34",X"33",X"45",X"23",X"21",X"09",X"AD",X"CB",X"DA", + X"CA",X"9A",X"A9",X"88",X"22",X"43",X"34",X"34",X"34",X"33",X"43",X"21",X"08",X"CD",X"CB",X"DA", + X"BA",X"AA",X"A8",X"81",X"23",X"53",X"33",X"53",X"33",X"53",X"32",X"21",X"8B",X"CD",X"CB",X"CB", + X"CB",X"AB",X"98",X"01",X"33",X"44",X"33",X"34",X"33",X"53",X"42",X"21",X"8A",X"BD",X"BD",X"CB", + X"CB",X"AB",X"98",X"01",X"23",X"43",X"42",X"34",X"33",X"53",X"33",X"21",X"8A",X"DB",X"DC",X"BB", + X"CB",X"BA",X"A9",X"82",X"33",X"53",X"34",X"34",X"23",X"52",X"33",X"21",X"8A",X"BE",X"BD",X"BC", + X"BB",X"BB",X"A9",X"80",X"23",X"53",X"35",X"23",X"43",X"34",X"42",X"32",X"18",X"BD",X"CD",X"BB", + X"CB",X"BB",X"90",X"02",X"24",X"33",X"43",X"33",X"43",X"42",X"33",X"32",X"09",X"CD",X"CB",X"DB", + X"CB",X"B9",X"A9",X"01",X"14",X"23",X"42",X"33",X"43",X"35",X"33",X"43",X"20",X"9C",X"DB",X"DB", + X"CB",X"BB",X"A9",X"80",X"22",X"35",X"33",X"33",X"44",X"24",X"33",X"52",X"10",X"9B",X"CD",X"BC", + X"BC",X"BA",X"A9",X"80",X"12",X"34",X"43",X"23",X"34",X"35",X"33",X"33",X"19",X"AE",X"CB",X"CC", + X"BA",X"BB",X"A9",X"01",X"14",X"24",X"33",X"33",X"43",X"44",X"34",X"32",X"08",X"BD",X"CB",X"DB", + X"BC",X"AB",X"98",X"01",X"23",X"34",X"34",X"23",X"43",X"35",X"33",X"32",X"0A",X"CD",X"BD",X"BC", + X"BB",X"AB",X"98",X"02",X"24",X"24",X"32",X"42",X"33",X"43",X"52",X"33",X"08",X"AD",X"CC",X"BC", + X"CA",X"BA",X"A8",X"81",X"13",X"34",X"42",X"33",X"33",X"44",X"42",X"42",X"00",X"9C",X"BD",X"CA", + X"CA",X"BA",X"A9",X"80",X"22",X"34",X"24",X"33",X"33",X"52",X"43",X"33",X"31",X"8C",X"CD",X"BC", + X"BC",X"BB",X"AB",X"99",X"02",X"34",X"42",X"34",X"24",X"22",X"34",X"34",X"31",X"19",X"BD",X"CB", + X"DB",X"CA",X"BA",X"A9",X"01",X"14",X"23",X"35",X"22",X"33",X"44",X"33",X"41",X"18",X"AD",X"BD", + X"BB",X"CB",X"CA",X"A9",X"81",X"13",X"42",X"34",X"23",X"34",X"33",X"53",X"32",X"28",X"BC",X"CD", + X"BC",X"BC",X"BB",X"AA",X"80",X"22",X"43",X"34",X"33",X"43",X"34",X"35",X"32",X"20",X"9C",X"CB", + X"DB",X"CB",X"BB",X"BA",X"98",X"22",X"43",X"43",X"42",X"33",X"35",X"34",X"34",X"11",X"9A",X"BE", + X"BC",X"BC",X"BB",X"AB",X"A8",X"02",X"35",X"24",X"32",X"24",X"23",X"43",X"43",X"31",X"0A",X"BE", + X"CB",X"CB",X"BC",X"BB",X"A9",X"01",X"23",X"53",X"33",X"34",X"34",X"25",X"23",X"41",X"18",X"AC", + X"CB",X"CB",X"CA",X"CB",X"A9",X"90",X"22",X"34",X"33",X"43",X"24",X"33",X"44",X"33",X"20",X"9B", + X"DC",X"CB",X"CB",X"BC",X"BA",X"98",X"02",X"34",X"33",X"43",X"24",X"33",X"44",X"33",X"21",X"0A", + X"CD",X"BC",X"BC",X"CA",X"BA",X"A9",X"81",X"23",X"43",X"34",X"34",X"23",X"43",X"43",X"32",X"19", + X"AD",X"CC",X"BB",X"CC",X"BA",X"B9",X"90",X"22",X"35",X"32",X"42",X"33",X"52",X"42",X"31",X"10", + X"AB",X"EB",X"CB",X"CC",X"AB",X"AA",X"88",X"21",X"34",X"34",X"24",X"23",X"34",X"34",X"32",X"18", + X"8C",X"BD",X"CB",X"CB",X"BC",X"AA",X"98",X"11",X"23",X"61",X"33",X"33",X"44",X"24",X"22",X"10", + X"8B",X"BE",X"BD",X"BB",X"BC",X"BA",X"98",X"82",X"32",X"62",X"24",X"22",X"34",X"33",X"33",X"31", + X"9C",X"CC",X"BD",X"BC",X"BB",X"BB",X"99",X"01",X"24",X"42",X"34",X"34",X"33",X"43",X"33",X"12", + X"99",X"DB",X"EB",X"BC",X"CA",X"BA",X"9A",X"00",X"13",X"43",X"43",X"35",X"23",X"43",X"32",X"20", + X"0A",X"BD",X"DB",X"CB",X"CB",X"AB",X"AA",X"80",X"22",X"43",X"53",X"42",X"33",X"43",X"33",X"31", + X"09",X"BC",X"EB",X"CC",X"BB",X"BB",X"CA",X"88",X"02",X"25",X"23",X"53",X"14",X"23",X"33",X"32", + X"00",X"AB",X"EC",X"BD",X"BC",X"AA",X"BA",X"99",X"03",X"14",X"23",X"63",X"33",X"43",X"23",X"33", + X"18",X"8C",X"CB",X"EB",X"BC",X"BC",X"A9",X"A9",X"01",X"23",X"35",X"42",X"42",X"33",X"33",X"33", + X"18",X"9B",X"CD",X"BD",X"AC",X"BA",X"A9",X"8A",X"01",X"32",X"45",X"24",X"23",X"43",X"23",X"22", + X"88",X"AB",X"DB",X"EA",X"BB",X"BD",X"98",X"A0",X"02",X"23",X"43",X"44",X"23",X"42",X"32",X"28", + X"0A",X"9C",X"BE",X"BB",X"CA",X"AC",X"99",X"80",X"03",X"25",X"23",X"52",X"33",X"52",X"20",X"10", + X"8A",X"AD",X"BC",X"CB",X"CA",X"AB",X"8A",X"88",X"40",X"34",X"51",X"33",X"42",X"42",X"22",X"10", + X"09",X"BB",X"DC",X"BC",X"BB",X"BD",X"98",X"A8",X"02",X"13",X"35",X"34",X"23",X"52",X"22",X"11", + X"19",X"8B",X"AC",X"CB",X"BD",X"AA",X"AA",X"A8",X"81",X"13",X"32",X"51",X"33",X"42",X"33",X"02", + X"89",X"9A",X"CA",X"CB",X"CA",X"BB",X"CA",X"88",X"11",X"22",X"43",X"34",X"33",X"52",X"31",X"20", + X"08",X"9B",X"BC",X"CB",X"BD",X"AA",X"9B",X"89",X"18",X"33",X"41",X"34",X"34",X"33",X"24",X"01", + X"80",X"A9",X"CA",X"CA",X"BC",X"C9",X"A9",X"A0",X"81",X"21",X"24",X"33",X"23",X"32",X"31",X"21", + X"89",X"8B",X"AB",X"BC",X"BB",X"C8",X"C9",X"89",X"12",X"03",X"12",X"43",X"33",X"32",X"32",X"10", + X"80",X"9A",X"AB",X"CA",X"BC",X"BB",X"B9",X"99",X"00",X"20",X"32",X"23",X"33",X"32",X"31",X"11", + X"09",X"89",X"AB",X"AC",X"9B",X"C9",X"A8",X"0B",X"38",X"12",X"12",X"40",X"32",X"21",X"21",X"08", + X"0A",X"8A",X"AB",X"AB",X"9C",X"9A",X"08",X"A0",X"28",X"12",X"40",X"31",X"31",X"41",X"01",X"08", + X"0A",X"99",X"BA",X"AB",X"9C",X"9A",X"08",X"08",X"00",X"30",X"33",X"12",X"21",X"30",X"10",X"19", + X"89",X"9B",X"9A",X"AB",X"8C",X"9A",X"08",X"08",X"00",X"30",X"31",X"32",X"21",X"21",X"10",X"09", + X"09",X"9A",X"9A",X"BA",X"9B",X"8A",X"98",X"08",X"10",X"23",X"03",X"12",X"20",X"30",X"28",X"08", + X"09",X"9B",X"8A",X"BA",X"9B",X"8B",X"88",X"08",X"08",X"21",X"48",X"40",X"22",X"12",X"11",X"00", + X"90",X"99",X"B8",X"BA",X"B8",X"B8",X"B8",X"80",X"81",X"20",X"31",X"21",X"22",X"13",X"01",X"80", + X"80",X"A8",X"B9",X"B9",X"CA",X"88",X"08",X"00",X"02",X"08",X"00",X"00",X"28",X"08",X"00",X"08", + X"18",X"08",X"00",X"88",X"18",X"88",X"08",X"08",X"08",X"08",X"08",X"09",X"19",X"08",X"08",X"08", + X"80",X"90",X"80",X"80",X"80",X"80",X"80",X"80",X"80",X"80",X"80",X"80",X"80",X"00",X"88",X"80", + X"80",X"80",X"80",X"80",X"80",X"80",X"80",X"81",X"91",X"90",X"80",X"80",X"80",X"80",X"80",X"80", + X"80",X"80",X"80",X"A0",X"80",X"80",X"91",X"80",X"10",X"80",X"01",X"10",X"81",X"80",X"08",X"80", + X"90",X"80",X"80",X"A0",X"10",X"81",X"80",X"08",X"80",X"9F",X"DA",X"98",X"02",X"54",X"54",X"53", + X"32",X"1B",X"DB",X"CA",X"BB",X"FF",X"B8",X"11",X"37",X"38",X"88",X"AE",X"90",X"01",X"01",X"15", + X"40",X"9B",X"E8",X"01",X"15",X"09",X"D8",X"00",X"32",X"BC",X"80",X"52",X"9E",X"80",X"13",X"9C", + X"80",X"10",X"88",X"04",X"39",X"D9",X"80",X"07",X"8C",X"00",X"80",X"00",X"93",X"4E",X"83",X"0D", + X"02",X"B4",X"A9",X"18",X"85",X"B8",X"00",X"19",X"03",X"C0",X"87",X"A1",X"90",X"98",X"4B",X"80", + X"13",X"E8",X"5B",X"82",X"81",X"B2",X"B4",X"B2",X"1D",X"01",X"88",X"2A",X"7A",X"91",X"86",X"B8", + X"84",X"9A",X"03",X"0D",X"08",X"07",X"9A",X"03",X"AA",X"08",X"04",X"A8",X"00",X"08",X"03",X"A9", + X"81",X"19",X"83",X"19",X"A8",X"98",X"17",X"7C",X"C0",X"07",X"0A",X"C0",X"03",X"29",X"F8",X"00", + X"04",X"0B",X"A0",X"00",X"14",X"8B",X"90",X"00",X"13",X"0A",X"98",X"10",X"11",X"77",X"9C",X"90", + X"08",X"00",X"14",X"8B",X"A8",X"08",X"00",X"10",X"12",X"40",X"DB",X"98",X"00",X"00",X"01",X"23", + X"38",X"AD",X"BB",X"A8",X"80",X"01",X"11",X"33",X"35",X"53",X"09",X"CF",X"AA",X"88",X"10",X"01", + X"81",X"12",X"03",X"43",X"43",X"20",X"CD",X"CB",X"A8",X"88",X"08",X"08",X"12",X"23",X"13",X"32", + X"14",X"23",X"33",X"32",X"18",X"08",X"89",X"9B",X"AB",X"CA",X"CA",X"B0",X"83",X"80",X"08",X"81", + X"25",X"53",X"30",X"AD",X"DB",X"BA",X"02",X"61",X"08",X"89",X"AB",X"D9",X"01",X"61",X"8A",X"C8", + X"90",X"12",X"53",X"54",X"42",X"1B",X"FC",X"A8",X"83",X"11",X"80",X"26",X"31",X"AF",X"C0",X"23", + X"51",X"BF",X"A8",X"16",X"38",X"CC",X"81",X"42",X"9E",X"80",X"14",X"8C",X"91",X"22",X"BB",X"02", + X"4A",X"B1",X"20",X"B0",X"25",X"BA",X"47",X"BA",X"11",X"B2",X"5C",X"83",X"AA",X"5B",X"10",X"A4", + X"99",X"81",X"6C",X"80",X"39",X"A0",X"81",X"82",X"B0",X"49",X"80",X"A9",X"54",X"D9",X"31",X"D0", + X"08",X"03",X"9C",X"02",X"1B",X"00",X"01",X"AB",X"17",X"3C",X"B8",X"03",X"69",X"D8",X"24",X"0E", + X"80",X"20",X"A9",X"02",X"1A",X"A0",X"25",X"8C",X"90",X"34",X"8C",X"A0",X"02",X"32",X"8D",X"B9", + X"02",X"45",X"0B",X"D8",X"81",X"02",X"20",X"99",X"BA",X"91",X"14",X"53",X"0B",X"DA",X"90",X"00", + X"11",X"23",X"21",X"9B",X"DB",X"A8",X"00",X"11",X"22",X"32",X"21",X"8A",X"CB",X"AC",X"CC",X"A9", + X"82",X"35",X"31",X"12",X"23",X"21",X"8C",X"FB",X"BC",X"A9",X"90",X"32",X"32",X"20",X"38",X"32", + X"32",X"41",X"18",X"AC",X"A9",X"AB",X"9C",X"BB",X"C9",X"90",X"82",X"13",X"31",X"24",X"03",X"33", + X"22",X"02",X"11",X"02",X"89",X"9A",X"AB",X"A9",X"99",X"98",X"A9",X"8B",X"89",X"91",X"80",X"10", + X"03",X"84",X"03",X"11",X"81",X"12",X"12",X"09",X"CB",X"B9",X"98",X"A9",X"CB",X"0C",X"0B",X"09", + X"AB",X"91",X"56",X"33",X"08",X"00",X"88",X"00",X"38",X"8C",X"BC",X"B0",X"35",X"34",X"30",X"9C", + X"DA",X"15",X"40",X"AB",X"B9",X"01",X"11",X"13",X"2D",X"92",X"73",X"AF",X"D9",X"14",X"51",X"BC", + X"B0",X"55",X"0D",X"A1",X"31",X"AC",X"84",X"2A",X"C0",X"41",X"C9",X"30",X"B0",X"39",X"88",X"A2", + X"69",X"D0",X"49",X"92",X"A0",X"2C",X"87",X"A8",X"29",X"98",X"14",X"8E",X"03",X"9A",X"28",X"80", + X"18",X"A8",X"03",X"09",X"C8",X"52",X"BD",X"13",X"1A",X"B9",X"35",X"8C",X"A3",X"68",X"C9",X"03", + X"39",X"CA",X"03",X"58",X"BB",X"82",X"34",X"1C",X"CA",X"13",X"41",X"8D",X"A9",X"13",X"32",X"9C", + X"AA",X"01",X"32",X"20",X"9B",X"C9",X"88",X"12",X"33",X"20",X"BC",X"CA",X"98",X"23",X"41",X"18", + X"08",X"8A",X"BC",X"B8",X"13",X"42",X"38",X"09",X"08",X"09",X"BD",X"AA",X"01",X"43",X"21",X"08", + X"00",X"08",X"09",X"0A",X"89",X"89",X"89",X"08",X"01",X"28",X"00",X"11",X"08",X"18",X"88",X"99", + X"09",X"08",X"98",X"89",X"08",X"00",X"18",X"28",X"08",X"08",X"18",X"18",X"08",X"08",X"08",X"08", + X"88",X"09",X"08",X"08",X"08",X"98",X"08",X"08",X"08",X"08",X"28",X"08",X"08",X"08",X"08",X"08", + X"08",X"88",X"08",X"18",X"88",X"08",X"08",X"08",X"08",X"08",X"08",X"18",X"08",X"08",X"80",X"88", + X"08",X"08",X"08",X"08",X"08",X"08",X"08",X"08",X"08",X"08",X"08",X"08",X"08",X"08",X"08",X"08", + X"08",X"00",X"88",X"28",X"89",X"21",X"98",X"80",X"01",X"99",X"84",X"8A",X"D5",X"B6",X"0A",X"B8", + X"34",X"29",X"AD",X"B9",X"02",X"35",X"31",X"10",X"99",X"AA",X"BC",X"AA",X"D9",X"AC",X"98",X"99", + X"09",X"10",X"28",X"11",X"22",X"12",X"40",X"31",X"21",X"31",X"21",X"21",X"20",X"20",X"28",X"10", + X"08",X"18",X"08",X"88",X"08",X"08",X"89",X"89",X"08",X"89",X"88",X"89",X"99",X"09",X"88",X"99", + X"88",X"88",X"09",X"08",X"18",X"09",X"09",X"0A",X"89",X"A9",X"BC",X"BF",X"BB",X"BD",X"AC",X"AA", + X"BB",X"BB",X"C9",X"88",X"11",X"44",X"35",X"43",X"34",X"43",X"33",X"43",X"33",X"33",X"43",X"33", + X"43",X"34",X"13",X"31",X"40",X"11",X"08",X"90",X"A9",X"80",X"80",X"37",X"33",X"30",X"EF",X"CC", + X"CB",X"BC",X"BA",X"BB",X"CB",X"AB",X"98",X"23",X"54",X"34",X"33",X"43",X"24",X"35",X"35",X"20", + X"8B",X"BC",X"CB",X"CB",X"A9",X"88",X"12",X"34",X"36",X"43",X"20",X"9A",X"CD",X"BA",X"80",X"02", + X"36",X"43",X"89",X"BC",X"AA",X"A9",X"81",X"37",X"52",X"8B",X"EA",X"01",X"04",X"30",X"AD",X"A0", + X"03",X"40",X"AB",X"92",X"1D",X"A0",X"37",X"2B",X"D8",X"02",X"48",X"C9",X"03",X"3B",X"C8",X"33", + X"CA",X"61",X"CA",X"12",X"3A",X"BA",X"03",X"3A",X"B7",X"9A",X"40",X"C3",X"8C",X"40",X"91",X"D8", + X"18",X"5A",X"89",X"19",X"5B",X"3B",X"3B",X"4B",X"3C",X"3B",X"59",X"0D",X"18",X"38",X"9B",X"01", + X"02",X"0B",X"14",X"8B",X"82",X"12",X"08",X"FD",X"06",X"88",X"A8",X"11",X"08",X"08",X"08",X"89", + X"14",X"39",X"FB",X"87",X"0A",X"A0",X"21",X"88",X"82",X"88",X"89",X"35",X"0F",X"A0",X"50",X"C8", + X"02",X"80",X"88",X"18",X"80",X"87",X"8E",X"81",X"38",X"D8",X"20",X"08",X"80",X"00",X"99",X"70", + X"D8",X"12",X"8C",X"82",X"00",X"80",X"00",X"9A",X"62",X"CC",X"05",X"0A",X"A1",X"29",X"09",X"02", + X"3F",X"4D",X"3B",X"15",X"9B",X"98",X"11",X"60",X"89",X"BB",X"80",X"10",X"11",X"11",X"23",X"53", + X"18",X"AB",X"BB",X"AB",X"BE",X"BA",X"AA",X"98",X"00",X"13",X"24",X"23",X"43",X"33",X"33",X"33", + X"42",X"23",X"22",X"21",X"20",X"11",X"89",X"99",X"AB",X"AB",X"BC",X"AD",X"AA",X"BB",X"CB",X"AC", + X"AC",X"AA",X"BB",X"CB",X"BB",X"BB",X"B9",X"CB",X"A9",X"BB",X"8C",X"9A",X"9A",X"89",X"8A",X"08", + X"88",X"08",X"00",X"08",X"11",X"18",X"11",X"28",X"21",X"48",X"31",X"30",X"33",X"12",X"12",X"48", + X"21",X"30",X"21",X"21",X"11",X"10",X"20",X"18",X"10",X"18",X"18",X"08",X"08",X"08",X"08",X"08", + X"08",X"89",X"08",X"98",X"09",X"88",X"0A",X"08",X"99",X"88",X"09",X"88",X"89",X"89",X"08",X"FF", + X"08",X"88",X"08",X"08",X"19",X"19",X"08",X"08",X"08",X"80",X"09",X"08",X"88",X"08",X"08",X"08", + X"00",X"08",X"18",X"00",X"08",X"09",X"08",X"00",X"00",X"18",X"08",X"88",X"18",X"10",X"08",X"10", + X"12",X"0F",X"FF",X"A0",X"15",X"64",X"20",X"9E",X"DA",X"00",X"37",X"28",X"CC",X"80",X"35",X"8B", + X"C0",X"25",X"8D",X"92",X"59",X"D0",X"50",X"D8",X"59",X"C4",X"1D",X"30",X"D5",X"A9",X"5D",X"4B", + X"3B",X"2A",X"3C",X"5B",X"28",X"A3",X"9A",X"22",X"AA",X"01",X"20",X"08",X"08",X"8A",X"AB",X"17", + X"8B",X"28",X"A4",X"B2",X"90",X"19",X"A0",X"28",X"08",X"A9",X"22",X"C1",X"0A",X"13",X"D8",X"10", + X"09",X"8A",X"21",X"C2",X"A2",X"B8",X"21",X"84",X"9F",X"11",X"A2",X"B4",X"8A",X"31",X"B8",X"96", + X"98",X"21",X"19",X"08",X"08",X"98",X"08",X"08",X"18",X"80",X"18",X"0A",X"0A",X"98",X"12",X"18", + X"08",X"09",X"08",X"08",X"11",X"10",X"09",X"98",X"90",X"10",X"28",X"20",X"89",X"08",X"90",X"08", + X"02",X"89",X"0A",X"89",X"18",X"10",X"08",X"20",X"08",X"08",X"88",X"00",X"11",X"29",X"18",X"08", + X"89",X"38",X"08",X"08",X"08",X"01",X"A8",X"19",X"19",X"18",X"C3",X"8B",X"9A",X"A5",X"AA",X"18", + X"D4",X"8B",X"A9",X"88",X"34",X"AF",X"48",X"A2",X"0C",X"5A",X"92",X"38",X"98",X"81",X"31",X"AF", + X"C5",X"1E",X"38",X"A4",X"B4",X"B3",X"8C",X"59",X"A3",X"19",X"D1",X"31",X"99",X"80",X"B8",X"08", + X"05",X"03",X"20",X"FF",X"01",X"30",X"E8",X"22",X"D0",X"28",X"B3",X"0D",X"4A",X"84",X"D2",X"90", + X"2C",X"4B",X"3C",X"3B",X"3C",X"3B",X"5B",X"4B",X"2A",X"01",X"B6",X"B2",X"99",X"5B",X"10",X"A4", + X"A9",X"6B",X"84",X"A8",X"3B",X"84",X"A9",X"21",X"D0",X"5B",X"81",X"2C",X"03",X"9B",X"07",X"A9", + X"04",X"A9",X"03",X"8C",X"01",X"4C",X"88",X"31",X"D8",X"04",X"0C",X"80",X"31",X"D8",X"01",X"4B", + X"A0",X"04",X"1D",X"90",X"13",X"1E",X"88",X"03",X"2C",X"A0",X"01",X"68",X"C8",X"80",X"24",X"8D", + X"88",X"01",X"40",X"BB",X"00",X"04",X"38",X"EA",X"00",X"12",X"40",X"DA",X"80",X"02",X"42",X"AD", + X"A0",X"00",X"25",X"19",X"CA",X"91",X"02",X"43",X"0B",X"F9",X"80",X"02",X"42",X"8A",X"CB",X"80", + X"02",X"44",X"18",X"BD",X"B8",X"01",X"24",X"41",X"8A",X"CC",X"90",X"01",X"34",X"31",X"9A",X"EB", + X"A0",X"02",X"34",X"41",X"89",X"CC",X"A9",X"01",X"23",X"43",X"18",X"AB",X"EB",X"A8",X"03",X"35", + X"32",X"09",X"AC",X"CC",X"98",X"12",X"34",X"31",X"08",X"9B",X"DB",X"C9",X"01",X"34",X"33",X"10", + X"99",X"BC",X"CC",X"A8",X"13",X"34",X"32",X"18",X"9A",X"BC",X"DB",X"A8",X"22",X"53",X"31",X"08", + X"89",X"AB",X"DB",X"CA",X"02",X"43",X"33",X"10",X"98",X"AA",X"AD",X"CA",X"A8",X"33",X"52",X"30", + X"08",X"09",X"99",X"9B",X"9D",X"90",X"23",X"22",X"10",X"08",X"09",X"09",X"89",X"99",X"0B",X"38", + X"11",X"10",X"08",X"08",X"09",X"09",X"09",X"98",X"08",X"10",X"18",X"18",X"08",X"09",X"19",X"08", + X"88",X"09",X"18",X"00",X"08",X"08",X"19",X"08",X"08",X"08",X"09",X"08",X"08",X"18",X"08",X"08", + X"08",X"08",X"08",X"08",X"08",X"08",X"08",X"08",X"08",X"08",X"08",X"08",X"08",X"08",X"08",X"08", + X"08",X"18",X"08",X"08",X"08",X"08",X"08",X"08",X"08",X"08",X"08",X"08",X"08",X"08",X"08",X"08", + X"08",X"08",X"08",X"08",X"08",X"08",X"08",X"08",X"08",X"08",X"08",X"08",X"08",X"08",X"08",X"09", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"C3",X"87",X"E0",X"02",X"00",X"00",X"20",X"00",X"00",X"00",X"30",X"00",X"30",X"00",X"20",X"00", + X"20",X"00",X"30",X"00",X"30",X"00",X"20",X"00",X"40",X"00",X"30",X"00",X"30",X"00",X"20",X"00", + X"60",X"00",X"30",X"00",X"30",X"00",X"20",X"00",X"80",X"00",X"30",X"00",X"30",X"00",X"20",X"00", + X"A0",X"00",X"30",X"00",X"30",X"00",X"20",X"00",X"C0",X"00",X"30",X"00",X"30",X"00",X"00",X"00", + X"1E",X"49",X"00",X"30",X"C0",X"00",X"20",X"00",X"20",X"00",X"30",X"3D",X"E0",X"00",X"E0",X"00", + X"50",X"07",X"00",X"E0",X"00",X"00",X"D3",X"1F",X"94",X"03",X"05",X"00",X"01",X"09",X"E0",X"23", + X"ED",X"00",X"7C",X"BA",X"C0",X"7D",X"BB",X"C9",X"A7",X"ED",X"52",X"23",X"C9",X"23",X"7C",X"B5", + X"2B",X"C9",X"7D",X"02",X"03",X"7C",X"02",X"03",X"C9",X"1A",X"6F",X"13",X"1A",X"67",X"C9",X"DB", + X"04",X"E6",X"80",X"32",X"FD",X"FE",X"C9",X"31",X"00",X"F6",X"CD",X"60",X"F0",X"CD",X"23",X"EB", + X"31",X"00",X"F6",X"21",X"03",X"E0",X"06",X"5F",X"AF",X"77",X"23",X"10",X"FC",X"CD",X"CA",X"E0", + X"AF",X"32",X"FD",X"FE",X"32",X"FE",X"FE",X"3A",X"04",X"E0",X"A7",X"CC",X"82",X"F2",X"06",X"01", + X"CD",X"3D",X"F3",X"CD",X"B6",X"F2",X"06",X"01",X"CD",X"3D",X"F3",X"CD",X"B6",X"F2",X"0E",X"00", + X"CD",X"80",X"F3",X"0E",X"00",X"CD",X"80",X"F3",X"18",X"C6",X"AF",X"32",X"03",X"E0",X"32",X"FD", + X"FE",X"32",X"01",X"F6",X"21",X"05",X"E0",X"22",X"5D",X"E0",X"21",X"04",X"ED",X"22",X"5F",X"E0", + X"06",X"4D",X"36",X"20",X"23",X"10",X"FB",X"21",X"3D",X"EB",X"CD",X"4E",X"F2",X"CD",X"1E",X"F1", + X"FE",X"01",X"CA",X"36",X"E1",X"FE",X"02",X"CA",X"96",X"E1",X"FE",X"03",X"CA",X"36",X"E2",X"FE", + X"04",X"CA",X"47",X"E2",X"FE",X"06",X"CA",X"D0",X"F0",X"FE",X"07",X"20",X"BD",X"21",X"85",X"EB", + X"CD",X"4E",X"F2",X"CD",X"1E",X"F1",X"FE",X"01",X"CA",X"CE",X"EE",X"FE",X"02",X"CA",X"00",X"F7", + X"FE",X"03",X"CA",X"00",X"F4",X"FE",X"04",X"CA",X"9F",X"ED",X"FE",X"05",X"CA",X"00",X"FB",X"FE", + X"07",X"C2",X"0D",X"E1",X"18",X"94",X"21",X"3F",X"EB",X"0E",X"05",X"CD",X"FE",X"EA",X"CD",X"75", + X"E2",X"CD",X"82",X"F2",X"21",X"20",X"EC",X"CD",X"4E",X"F2",X"CD",X"49",X"F1",X"CD",X"D3",X"EA", + X"20",X"F8",X"21",X"22",X"EC",X"0E",X"04",X"CD",X"FE",X"EA",X"CD",X"12",X"EB",X"21",X"2D",X"EC", + X"CD",X"4E",X"F2",X"CD",X"49",X"F1",X"CD",X"DD",X"EA",X"20",X"F8",X"38",X"26",X"21",X"2F",X"EC", + X"0E",X"04",X"CD",X"FE",X"EA",X"CD",X"12",X"EB",X"21",X"47",X"EC",X"CD",X"4E",X"F2",X"CD",X"49", + X"F1",X"CD",X"DD",X"EA",X"20",X"F8",X"38",X"0B",X"21",X"4F",X"EC",X"0E",X"02",X"CD",X"FE",X"EA", + X"CD",X"12",X"EB",X"C3",X"19",X"E9",X"21",X"49",X"EB",X"0E",X"04",X"CD",X"FE",X"EA",X"CD",X"75", + X"E2",X"CD",X"82",X"F2",X"21",X"5C",X"EC",X"CD",X"4E",X"F2",X"CD",X"49",X"F1",X"CD",X"D3",X"EA", + X"20",X"EF",X"21",X"5E",X"EC",X"0E",X"04",X"CD",X"FE",X"EA",X"CD",X"12",X"EB",X"21",X"69",X"EC", + X"CD",X"4E",X"F2",X"CD",X"1E",X"F1",X"FE",X"01",X"28",X"5F",X"FE",X"03",X"20",X"F5",X"21",X"7D", + X"EC",X"0E",X"0C",X"CD",X"FE",X"EA",X"CD",X"82",X"F2",X"21",X"8A",X"EC",X"CD",X"4E",X"F2",X"CD", + X"49",X"F1",X"CD",X"D3",X"EA",X"20",X"F8",X"CD",X"12",X"EB",X"CD",X"82",X"F2",X"21",X"93",X"EC", + X"CD",X"4E",X"F2",X"CD",X"49",X"F1",X"3A",X"04",X"F8",X"CD",X"DD",X"EA",X"20",X"F5",X"38",X"26", + X"21",X"22",X"EC",X"0E",X"04",X"CD",X"FE",X"EA",X"CD",X"12",X"EB",X"21",X"A9",X"EC",X"CD",X"4E", + X"F2",X"CD",X"49",X"F1",X"CD",X"DD",X"EA",X"20",X"F8",X"38",X"0B",X"21",X"2F",X"EC",X"0E",X"04", + X"CD",X"FE",X"EA",X"CD",X"12",X"EB",X"C3",X"99",X"E8",X"21",X"6B",X"EC",X"0E",X"0A",X"CD",X"FE", + X"EA",X"CD",X"04",X"E3",X"18",X"B4",X"21",X"52",X"EB",X"0E",X"0A",X"CD",X"FE",X"EA",X"CD",X"75", + X"E2",X"CD",X"04",X"E3",X"C3",X"19",X"E9",X"21",X"5D",X"EB",X"0E",X"07",X"CD",X"FE",X"EA",X"CD", + X"75",X"E2",X"CD",X"04",X"E3",X"CD",X"82",X"F2",X"21",X"8A",X"EC",X"CD",X"4E",X"F2",X"CD",X"49", + X"F1",X"CD",X"D3",X"EA",X"20",X"F8",X"21",X"7D",X"EC",X"01",X"0C",X"00",X"CD",X"FE",X"EA",X"CD", + X"12",X"EB",X"C3",X"EA",X"E1",X"21",X"CD",X"EB",X"CD",X"4E",X"F2",X"CD",X"1E",X"F1",X"FE",X"07", + X"28",X"1A",X"FE",X"06",X"28",X"23",X"FE",X"05",X"28",X"2C",X"FE",X"04",X"28",X"35",X"FE",X"03", + X"28",X"3E",X"FE",X"02",X"28",X"47",X"FE",X"01",X"28",X"50",X"18",X"D9",X"3E",X"00",X"01",X"09", + X"00",X"11",X"0B",X"EC",X"21",X"00",X"08",X"18",X"4C",X"3E",X"32",X"01",X"06",X"00",X"11",X"02", + X"EC",X"21",X"20",X"00",X"18",X"3F",X"3E",X"34",X"01",X"06",X"00",X"11",X"F8",X"EB",X"21",X"00", + X"02",X"18",X"32",X"3E",X"54",X"01",X"04",X"00",X"11",X"EE",X"EB",X"21",X"00",X"10",X"18",X"25", + X"3E",X"54",X"01",X"04",X"10",X"11",X"E4",X"EB",X"21",X"00",X"20",X"18",X"18",X"3E",X"49",X"01", + X"04",X"00",X"11",X"DA",X"EB",X"21",X"00",X"10",X"18",X"0B",X"3E",X"49",X"01",X"04",X"10",X"11", + X"D0",X"EB",X"21",X"00",X"20",X"32",X"41",X"E0",X"22",X"45",X"E0",X"21",X"40",X"E0",X"70",X"EB", + X"CD",X"FE",X"EA",X"C9",X"11",X"FF",X"FF",X"2A",X"5D",X"E0",X"73",X"23",X"72",X"23",X"22",X"5D", + X"E0",X"21",X"03",X"E0",X"34",X"C9",X"21",X"00",X"00",X"22",X"4D",X"E0",X"7D",X"32",X"3F",X"E0", + X"2A",X"05",X"E0",X"22",X"49",X"E0",X"22",X"4F",X"E0",X"3A",X"03",X"E0",X"C9",X"CD",X"33",X"E3", + X"C3",X"B8",X"E3",X"CD",X"16",X"E3",X"FE",X"01",X"20",X"23",X"2A",X"49",X"E0",X"11",X"00",X"E0", + X"CD",X"62",X"E0",X"38",X"07",X"21",X"FF",X"FF",X"22",X"49",X"E0",X"23",X"EB",X"2A",X"45",X"E0", + X"22",X"47",X"E0",X"2B",X"19",X"22",X"4B",X"E0",X"3E",X"01",X"D8",X"AF",X"C9",X"FE",X"02",X"20", + X"21",X"EB",X"2A",X"07",X"E0",X"22",X"4B",X"E0",X"CD",X"68",X"E0",X"38",X"EB",X"22",X"47",X"E0", + X"EB",X"2A",X"45",X"E0",X"1B",X"CD",X"62",X"E0",X"3E",X"00",X"30",X"01",X"3C",X"32",X"3F",X"E0", + X"AF",X"C9",X"EB",X"2A",X"07",X"E0",X"22",X"4B",X"E0",X"CD",X"68",X"E0",X"38",X"CA",X"22",X"47", + X"E0",X"2A",X"09",X"E0",X"22",X"4D",X"E0",X"EB",X"2A",X"45",X"E0",X"2B",X"CD",X"62",X"E0",X"3E", + X"01",X"38",X"DA",X"2A",X"47",X"E0",X"19",X"EB",X"2A",X"45",X"E0",X"CD",X"62",X"E0",X"3E",X"00", + X"30",X"CB",X"3C",X"18",X"C8",X"CD",X"92",X"E4",X"A7",X"C0",X"21",X"05",X"E0",X"06",X"3A",X"36", + X"00",X"23",X"10",X"FB",X"3A",X"3F",X"E0",X"A7",X"28",X"2E",X"2A",X"45",X"E0",X"11",X"00",X"10", + X"CD",X"62",X"E0",X"3E",X"00",X"30",X"61",X"ED",X"5B",X"45",X"E0",X"2A",X"47",X"E0",X"2B",X"CD", + X"62",X"E0",X"D2",X"F9",X"E4",X"44",X"4D",X"2A",X"4D",X"E0",X"09",X"DA",X"58",X"E3",X"CD",X"62", + X"E0",X"3E",X"01",X"D0",X"AF",X"32",X"3F",X"E0",X"D5",X"2A",X"45",X"E0",X"11",X"00",X"10",X"CD", + X"62",X"E0",X"D1",X"21",X"56",X"E0",X"3E",X"01",X"38",X"02",X"3E",X"07",X"77",X"01",X"05",X"E0", + X"2A",X"47",X"E0",X"CD",X"72",X"E0",X"2A",X"4D",X"E0",X"CD",X"72",X"E0",X"EB",X"2A",X"45",X"E0", + X"19",X"22",X"4D",X"E0",X"2A",X"49",X"E0",X"CD",X"72",X"E0",X"2A",X"4F",X"E0",X"CD",X"72",X"E0", + X"21",X"56",X"E0",X"35",X"20",X"DA",X"AF",X"C9",X"01",X"05",X"E0",X"ED",X"5B",X"45",X"E0",X"2A", + X"4D",X"E0",X"A7",X"ED",X"52",X"30",X"FC",X"7D",X"2F",X"5F",X"7C",X"2F",X"57",X"13",X"2A",X"47", + X"E0",X"CD",X"62",X"E0",X"F5",X"28",X"08",X"38",X"06",X"ED",X"52",X"22",X"47",X"E0",X"EB",X"CD", + X"72",X"E0",X"EB",X"2A",X"4D",X"E0",X"CD",X"72",X"E0",X"19",X"22",X"4D",X"E0",X"2A",X"49",X"E0", + X"CD",X"72",X"E0",X"CD",X"6D",X"E0",X"28",X"01",X"19",X"22",X"49",X"E0",X"2A",X"4F",X"E0",X"CD", + X"72",X"E0",X"CD",X"6D",X"E0",X"28",X"01",X"19",X"22",X"4F",X"E0",X"F1",X"3E",X"00",X"C8",X"30", + X"AA",X"C9",X"CD",X"16",X"E3",X"11",X"FF",X"FF",X"ED",X"53",X"4F",X"E0",X"FE",X"01",X"20",X"0C", + X"11",X"00",X"E0",X"CD",X"62",X"E0",X"DA",X"4C",X"E3",X"3E",X"01",X"C9",X"47",X"11",X"00",X"E0", + X"CD",X"62",X"E0",X"38",X"07",X"21",X"FF",X"FF",X"22",X"49",X"E0",X"23",X"78",X"FE",X"02",X"EB", + X"2A",X"07",X"E0",X"22",X"4F",X"E0",X"CA",X"4D",X"E3",X"2A",X"09",X"E0",X"22",X"4D",X"E0",X"3E", + X"01",X"32",X"3F",X"E0",X"78",X"FE",X"03",X"CA",X"4D",X"E3",X"EB",X"2A",X"0B",X"E0",X"CD",X"68", + X"E0",X"DA",X"58",X"E3",X"22",X"47",X"E0",X"EB",X"2A",X"49",X"E0",X"CD",X"6D",X"E0",X"C8",X"19", + X"22",X"4B",X"E0",X"11",X"00",X"E0",X"CD",X"62",X"E0",X"3E",X"01",X"D0",X"AF",X"C9",X"3A",X"41", + X"E0",X"FE",X"32",X"28",X"04",X"FE",X"34",X"20",X"03",X"AF",X"18",X"10",X"A7",X"20",X"04",X"3E", + X"10",X"18",X"09",X"06",X"30",X"FE",X"49",X"28",X"02",X"06",X"20",X"78",X"32",X"43",X"E0",X"C9", + X"3A",X"3F",X"E0",X"A7",X"28",X"14",X"21",X"07",X"E0",X"7E",X"23",X"66",X"6F",X"ED",X"5B",X"45", + X"E0",X"06",X"FF",X"A7",X"ED",X"52",X"04",X"30",X"FA",X"78",X"32",X"51",X"E0",X"C9",X"CD",X"5E", + X"E5",X"D5",X"11",X"10",X"27",X"1B",X"7A",X"B3",X"20",X"FB",X"D1",X"C9",X"11",X"C0",X"C0",X"3A", + X"43",X"E0",X"E6",X"30",X"FE",X"20",X"30",X"03",X"50",X"18",X"01",X"58",X"B2",X"C9",X"F5",X"32", + X"44",X"E0",X"06",X"82",X"FE",X"00",X"20",X"02",X"06",X"80",X"78",X"D3",X"03",X"F1",X"E6",X"C0", + X"47",X"D5",X"CD",X"4C",X"E5",X"D3",X"02",X"3A",X"3F",X"E0",X"A7",X"3E",X"0E",X"28",X"01",X"AF", + X"47",X"3A",X"40",X"E0",X"E6",X"10",X"B0",X"32",X"40",X"E0",X"B3",X"D3",X"05",X"D1",X"C9",X"3A", + X"44",X"E0",X"E6",X"C0",X"47",X"D5",X"CD",X"4C",X"E5",X"47",X"7C",X"E6",X"0F",X"B0",X"D3",X"02", + X"7D",X"D3",X"00",X"3A",X"40",X"E0",X"E6",X"0E",X"FE",X"0E",X"7C",X"28",X"17",X"E6",X"F0",X"47", + X"3A",X"43",X"E0",X"E6",X"20",X"28",X"0A",X"3A",X"40",X"E0",X"E6",X"10",X"20",X"03",X"78",X"17", + X"47",X"78",X"18",X"04",X"E6",X"10",X"F6",X"E0",X"0F",X"0F",X"0F",X"0F",X"47",X"3A",X"40",X"E0", + X"E6",X"10",X"B0",X"E6",X"1F",X"32",X"40",X"E0",X"B3",X"D1",X"D3",X"05",X"C9",X"D5",X"C5",X"06", + X"80",X"CD",X"4C",X"E5",X"47",X"7C",X"E6",X"0F",X"B0",X"D3",X"02",X"47",X"3A",X"40",X"E0",X"B3", + X"D3",X"05",X"4F",X"ED",X"5B",X"58",X"E0",X"1B",X"7A",X"B3",X"20",X"FB",X"78",X"CD",X"0B",X"E6", + X"D3",X"02",X"79",X"CD",X"0B",X"E6",X"D3",X"05",X"C1",X"D1",X"C9",X"CB",X"77",X"C0",X"E6",X"7F", + X"C9",X"21",X"05",X"E0",X"4E",X"23",X"46",X"23",X"5E",X"23",X"56",X"23",X"7E",X"23",X"66",X"6F", + X"EB",X"C9",X"3A",X"03",X"E0",X"FE",X"03",X"3E",X"00",X"C8",X"D5",X"E5",X"2A",X"45",X"E0",X"11", + X"00",X"10",X"CD",X"62",X"E0",X"E1",X"D1",X"01",X"01",X"01",X"38",X"02",X"0E",X"07",X"C5",X"3E", + X"40",X"CD",X"3E",X"E5",X"3A",X"40",X"E0",X"E6",X"10",X"32",X"40",X"E0",X"11",X"00",X"00",X"C1", + X"3E",X"00",X"F5",X"C5",X"D5",X"CD",X"8B",X"E6",X"D1",X"C1",X"28",X"01",X"C5",X"04",X"0D",X"28", + X"07",X"2A",X"45",X"E0",X"19",X"EB",X"18",X"EB",X"3E",X"C0",X"CD",X"3E",X"E5",X"F1",X"A7",X"C8", + X"CD",X"DB",X"E7",X"21",X"C5",X"EC",X"CD",X"52",X"F2",X"F1",X"A7",X"28",X"0B",X"CD",X"DB",X"E7", + X"21",X"C5",X"EC",X"CD",X"52",X"F2",X"18",X"F1",X"3E",X"80",X"C9",X"ED",X"4B",X"45",X"E0",X"EB", + X"50",X"59",X"CD",X"8F",X"E5",X"23",X"3A",X"43",X"E0",X"E6",X"30",X"06",X"FF",X"20",X"01",X"04", + X"DB",X"01",X"B8",X"C0",X"1B",X"7A",X"B3",X"20",X"E9",X"C9",X"3E",X"C0",X"CD",X"3E",X"E5",X"3E", + X"40",X"CD",X"3E",X"E5",X"3A",X"40",X"E0",X"E6",X"10",X"32",X"40",X"E0",X"AF",X"32",X"5B",X"E0", + X"21",X"00",X"00",X"22",X"56",X"E0",X"22",X"52",X"E0",X"21",X"51",X"E0",X"34",X"2A",X"4B",X"E0", + X"7E",X"4F",X"23",X"B6",X"F5",X"3E",X"C0",X"CC",X"3E",X"E5",X"F1",X"C8",X"46",X"23",X"EB",X"CD", + X"79",X"E0",X"22",X"4D",X"E0",X"13",X"CD",X"79",X"E0",X"22",X"49",X"E0",X"13",X"CD",X"79",X"E0", + X"22",X"4F",X"E0",X"13",X"EB",X"22",X"4B",X"E0",X"C5",X"2A",X"4D",X"E0",X"CD",X"8F",X"E5",X"EB", + X"2A",X"49",X"E0",X"CD",X"6D",X"E0",X"DB",X"01",X"28",X"0D",X"47",X"3A",X"54",X"E0",X"A7",X"78", + X"28",X"05",X"77",X"23",X"22",X"49",X"E0",X"21",X"5B",X"E0",X"FE",X"FF",X"28",X"05",X"35",X"28", + X"01",X"34",X"34",X"F5",X"2A",X"52",X"E0",X"85",X"6F",X"7C",X"CE",X"00",X"67",X"22",X"52",X"E0", + X"F1",X"2A",X"4F",X"E0",X"BE",X"C4",X"19",X"E8",X"C1",X"28",X"04",X"AF",X"32",X"55",X"E0",X"2A", + X"4D",X"E0",X"23",X"22",X"4D",X"E0",X"2A",X"4F",X"E0",X"CD",X"6D",X"E0",X"28",X"04",X"23",X"22", + X"4F",X"E0",X"0B",X"78",X"B1",X"20",X"A1",X"3E",X"C0",X"CD",X"3E",X"E5",X"3A",X"5C",X"E0",X"A7", + X"20",X"05",X"3A",X"5B",X"E0",X"A7",X"C0",X"F5",X"F5",X"CD",X"D8",X"E7",X"F1",X"21",X"BF",X"EC", + X"CC",X"52",X"F2",X"F1",X"C8",X"3A",X"61",X"E0",X"A7",X"28",X"2B",X"06",X"02",X"CD",X"3D",X"F3", + X"CD",X"B6",X"F2",X"06",X"02",X"CD",X"3D",X"F3",X"CD",X"B6",X"F2",X"06",X"02",X"CD",X"3D",X"F3", + X"CD",X"B6",X"F2",X"AF",X"32",X"61",X"E0",X"0E",X"80",X"CD",X"80",X"F3",X"0E",X"80",X"CD",X"80", + X"F3",X"0E",X"80",X"CD",X"80",X"F3",X"CD",X"D8",X"E7",X"CD",X"0C",X"F2",X"2A",X"4F",X"E0",X"CD", + X"6D",X"E0",X"28",X"12",X"2A",X"56",X"E0",X"7C",X"B5",X"28",X"0B",X"21",X"CE",X"EC",X"CD",X"55", + X"F2",X"2A",X"56",X"E0",X"18",X"09",X"21",X"D3",X"EC",X"CD",X"55",X"F2",X"2A",X"52",X"E0",X"CD", + X"E6",X"E7",X"2A",X"56",X"E0",X"7C",X"B5",X"C9",X"3A",X"51",X"E0",X"47",X"3E",X"F8",X"C6",X"0A", + X"10",X"FC",X"57",X"1E",X"11",X"C9",X"7C",X"F5",X"0F",X"0F",X"0F",X"0F",X"CD",X"0D",X"E8",X"CD", + X"2A",X"F2",X"F1",X"CD",X"0D",X"E8",X"CD",X"2A",X"F2",X"7D",X"F5",X"0F",X"0F",X"0F",X"0F",X"CD", + X"0D",X"E8",X"CD",X"2A",X"F2",X"F1",X"CD",X"0D",X"E8",X"CD",X"2A",X"F2",X"C9",X"E6",X"0F",X"FE", + X"0A",X"30",X"03",X"F6",X"30",X"C9",X"C6",X"37",X"C9",X"4F",X"2A",X"4F",X"E0",X"CD",X"6D",X"E0", + X"C8",X"2A",X"56",X"E0",X"23",X"22",X"56",X"E0",X"3A",X"55",X"E0",X"A7",X"C8",X"C5",X"3E",X"01", + X"32",X"61",X"E0",X"3A",X"FE",X"FE",X"FE",X"12",X"38",X"23",X"CD",X"49",X"F1",X"C1",X"3A",X"04", + X"F8",X"FE",X"0D",X"28",X"52",X"C5",X"AF",X"32",X"FE",X"FE",X"21",X"D8",X"EC",X"CD",X"72",X"F1", + X"3A",X"51",X"E0",X"F6",X"30",X"CD",X"B8",X"F2",X"CD",X"B6",X"F2",X"18",X"0A",X"2B",X"7C",X"B5", + X"20",X"05",X"CD",X"B6",X"F2",X"18",X"E3",X"06",X"02",X"CD",X"3D",X"F3",X"2A",X"4D",X"E0",X"CD", + X"20",X"F3",X"06",X"02",X"CD",X"3D",X"F3",X"C1",X"79",X"CD",X"25",X"F3",X"06",X"03",X"CD",X"3D", + X"F3",X"2A",X"4F",X"E0",X"7E",X"F5",X"CD",X"20",X"F3",X"06",X"02",X"CD",X"3D",X"F3",X"F1",X"CD", + X"25",X"F3",X"CD",X"B6",X"F2",X"AF",X"C9",X"A7",X"C9",X"CD",X"B5",X"E3",X"A7",X"C0",X"CD",X"FE", + X"E4",X"11",X"11",X"01",X"CD",X"85",X"F2",X"11",X"12",X"01",X"CD",X"85",X"F2",X"3E",X"01",X"32", + X"5C",X"E0",X"32",X"54",X"E0",X"32",X"55",X"E0",X"21",X"05",X"E0",X"22",X"4B",X"E0",X"CD",X"20", + X"E5",X"3A",X"3F",X"E0",X"A7",X"28",X"0C",X"2A",X"4B",X"E0",X"7E",X"23",X"B6",X"C8",X"CD",X"AA", + X"E6",X"18",X"F4",X"06",X"07",X"D5",X"E5",X"2A",X"45",X"E0",X"11",X"00",X"10",X"CD",X"62",X"E0", + X"E1",X"D1",X"30",X"02",X"06",X"01",X"C5",X"AF",X"32",X"5C",X"E0",X"32",X"54",X"E0",X"32",X"55", + X"E0",X"CD",X"AA",X"E6",X"3A",X"5B",X"E0",X"A7",X"28",X"1A",X"32",X"5C",X"E0",X"32",X"54",X"E0", + X"32",X"55",X"E0",X"2A",X"4B",X"E0",X"11",X"F8",X"FF",X"19",X"22",X"4B",X"E0",X"21",X"51",X"E0", + X"35",X"CD",X"AA",X"E6",X"C1",X"10",X"CF",X"AF",X"C9",X"CD",X"2D",X"E3",X"A7",X"C0",X"CD",X"FE", + X"E4",X"11",X"11",X"01",X"CD",X"85",X"F2",X"11",X"12",X"01",X"CD",X"85",X"F2",X"CD",X"22",X"E6", + X"A7",X"C0",X"21",X"F9",X"EC",X"3A",X"03",X"E0",X"FE",X"03",X"C4",X"4E",X"F2",X"2A",X"49",X"E0", + X"CD",X"6D",X"E0",X"3E",X"00",X"C8",X"2A",X"45",X"E0",X"11",X"00",X"08",X"CD",X"62",X"E0",X"D2", + X"DA",X"E9",X"21",X"0E",X"00",X"22",X"58",X"E0",X"CD",X"11",X"E6",X"C5",X"3E",X"C0",X"CD",X"3E", + X"E5",X"C1",X"CD",X"86",X"E9",X"23",X"13",X"0B",X"78",X"B1",X"20",X"F6",X"AF",X"32",X"54",X"E0", + X"3C",X"32",X"55",X"E0",X"32",X"5C",X"E0",X"21",X"05",X"E0",X"22",X"4B",X"E0",X"AF",X"32",X"51", + X"E0",X"CD",X"AA",X"E6",X"AF",X"C9",X"C5",X"1A",X"D5",X"5F",X"06",X"08",X"0E",X"01",X"7B",X"A1", + X"57",X"28",X"2A",X"C5",X"D5",X"1E",X"05",X"3E",X"00",X"CD",X"5E",X"E5",X"CD",X"8F",X"E5",X"AF", + X"D3",X"01",X"CD",X"C9",X"E9",X"7A",X"D3",X"01",X"CD",X"DD",X"E5",X"3E",X"40",X"CD",X"5E",X"E5", + X"CD",X"8F",X"E5",X"DB",X"01",X"AA",X"28",X"03",X"1D",X"20",X"DC",X"D1",X"C1",X"79",X"07",X"4F", + X"CD",X"CF",X"E9",X"05",X"20",X"C8",X"D1",X"C1",X"C9",X"D5",X"11",X"14",X"00",X"18",X"04",X"D5", + X"11",X"1E",X"00",X"1B",X"7B",X"B2",X"20",X"FB",X"D1",X"C9",X"21",X"05",X"E0",X"22",X"4B",X"E0", + X"CD",X"20",X"E5",X"3A",X"3F",X"E0",X"A7",X"CA",X"47",X"EA",X"3E",X"05",X"32",X"5A",X"E0",X"21", + X"94",X"03",X"22",X"58",X"E0",X"2A",X"4B",X"E0",X"7E",X"4F",X"23",X"B6",X"C8",X"46",X"2B",X"E5", + X"00",X"00",X"00",X"01",X"C0",X"00",X"04",X"00",X"C4",X"00",X"01",X"D0",X"C5",X"D0",X"09",X"90", + X"CF",X"50",X"02",X"80",X"D1",X"D0",X"01",X"A0",X"D3",X"70",X"01",X"F0",X"00",X"00",X"00",X"01", + X"00",X"00",X"00",X"01",X"00",X"00",X"00",X"01",X"00",X"00",X"00",X"01",X"00",X"00",X"00",X"01", + X"00",X"00",X"00",X"01",X"00",X"00",X"00",X"01",X"00",X"00",X"00",X"01",X"00",X"00",X"00",X"01", + X"00",X"00",X"00",X"01",X"00",X"00",X"00",X"01",X"00",X"00",X"00",X"01",X"00",X"00",X"00",X"01", + X"F4",X"12",X"F4",X"3F",X"F4",X"59",X"F4",X"76",X"F5",X"33",X"F5",X"E1",X"F8",X"07",X"F8",X"18", + X"F8",X"33",X"F8",X"48",X"F8",X"5D",X"F8",X"72",X"F8",X"87",X"F8",X"99",X"F8",X"AE",X"F8",X"D6", + X"EA",X"80",X"EA",X"F5",X"EB",X"6A",X"EC",X"01",X"EC",X"7B",X"ED",X"75",X"EE",X"31",X"F2",X"15", + X"66",X"B8",X"40",X"77",X"41",X"00",X"42",X"8E",X"43",X"00",X"45",X"00",X"6C",X"14",X"6D",X"14", + X"6E",X"14",X"68",X"0A",X"69",X"0A",X"6A",X"0A",X"04",X"EE",X"20",X"40",X"6A",X"42",X"7E",X"68", + X"0A",X"69",X"0A",X"6A",X"0A",X"04",X"D4",X"20",X"68",X"0A",X"69",X"0A",X"6A",X"0A",X"04",X"D4", + X"20",X"40",X"4F",X"42",X"5E",X"68",X"0A",X"69",X"0A",X"6A",X"0A",X"04",X"9F",X"40",X"40",X"59", + X"42",X"6A",X"68",X"0A",X"69",X"0A",X"6A",X"0A",X"04",X"B3",X"40",X"40",X"5E",X"42",X"77",X"68", + X"0A",X"69",X"0A",X"6A",X"0A",X"04",X"BD",X"40",X"40",X"6A",X"42",X"7E",X"68",X"0A",X"69",X"0A", + X"6A",X"0A",X"04",X"D4",X"20",X"40",X"5E",X"42",X"77",X"68",X"0A",X"69",X"0A",X"6A",X"0A",X"04", + X"BD",X"60",X"67",X"07",X"FF",X"66",X"BC",X"40",X"7A",X"41",X"01",X"43",X"00",X"6C",X"14",X"6D", + X"14",X"6E",X"14",X"68",X"0A",X"69",X"0A",X"02",X"BD",X"24",X"40",X"3E",X"68",X"0A",X"69",X"0A", + X"02",X"9F",X"24",X"40",X"1C",X"68",X"0A",X"69",X"0A",X"02",X"6A",X"24",X"40",X"3E",X"68",X"0A", + X"69",X"0A",X"02",X"77",X"24",X"42",X"7E",X"49",X"0A",X"68",X"0A",X"00",X"7E",X"24",X"68",X"0A", + X"00",X"3E",X"24",X"42",X"77",X"49",X"0A",X"68",X"0A",X"00",X"1C",X"24",X"68",X"0A",X"00",X"3E", + X"24",X"49",X"00",X"42",X"5E",X"68",X"0A",X"69",X"0A",X"00",X"7A",X"24",X"42",X"9F",X"68",X"0A", + X"69",X"0A",X"00",X"DD",X"24",X"42",X"8E",X"68",X"0A",X"69",X"0A",X"00",X"A9",X"24",X"42",X"77", + X"68",X"0A",X"69",X"0A",X"00",X"DD",X"64",X"67",X"03",X"FF",X"66",X"BC",X"6C",X"14",X"6D",X"14", + X"6E",X"14",X"FE",X"EB",X"8D",X"FE",X"EB",X"8D",X"FE",X"EB",X"C6",X"FE",X"EB",X"C6",X"FE",X"EB", + X"8D",X"FE",X"EB",X"8D",X"FE",X"EB",X"C6",X"FE",X"EB",X"C6",X"67",X"03",X"FF",X"41",X"00",X"43", + X"00",X"42",X"EE",X"68",X"0A",X"69",X"0A",X"00",X"77",X"22",X"68",X"0A",X"69",X"0A",X"00",X"5E", + X"22",X"68",X"0A",X"69",X"0A",X"00",X"59",X"22",X"42",X"3E",X"43",X"01",X"68",X"0A",X"69",X"0A", + X"00",X"4F",X"22",X"42",X"1C",X"68",X"0A",X"69",X"0A",X"00",X"59",X"22",X"42",X"3E",X"68",X"0A", + X"69",X"0A",X"00",X"4F",X"22",X"FD",X"43",X"00",X"42",X"D4",X"68",X"0A",X"69",X"0A",X"00",X"6A", + X"22",X"68",X"0A",X"69",X"0A",X"00",X"59",X"22",X"68",X"0A",X"69",X"0A",X"00",X"4F",X"22",X"43", + X"01",X"42",X"1C",X"68",X"0A",X"69",X"0A",X"00",X"47",X"22",X"43",X"00",X"42",X"FD",X"68",X"0A", + X"69",X"0A",X"00",X"4F",X"22",X"43",X"01",X"42",X"1C",X"68",X"0A",X"69",X"0A",X"00",X"47",X"22", + X"FD",X"67",X"BF",X"66",X"BC",X"41",X"00",X"40",X"1C",X"43",X"00",X"44",X"00",X"45",X"00",X"6C", + X"14",X"6D",X"14",X"6E",X"14",X"68",X"0A",X"69",X"0A",X"02",X"8E",X"18",X"40",X"FD",X"41",X"00", + X"68",X"0A",X"69",X"0A",X"02",X"7E",X"18",X"40",X"EE",X"68",X"0A",X"69",X"0A",X"02",X"77",X"18", + X"40",X"D4",X"68",X"0A",X"69",X"0A",X"02",X"6A",X"18",X"40",X"BD",X"68",X"0A",X"69",X"0A",X"02", + X"5E",X"18",X"40",X"FD",X"68",X"0A",X"69",X"0A",X"02",X"7E",X"18",X"40",X"EE",X"68",X"0A",X"69", + X"0A",X"02",X"77",X"18",X"40",X"D4",X"68",X"0A",X"69",X"0A",X"02",X"6A",X"18",X"40",X"BD",X"68", + X"0A",X"69",X"0A",X"02",X"5E",X"18",X"40",X"A8",X"68",X"0A",X"69",X"0A",X"02",X"54",X"18",X"40", + X"9F",X"68",X"0A",X"69",X"0A",X"02",X"4F",X"18",X"67",X"03",X"FF",X"66",X"B8",X"40",X"47",X"41", + X"00",X"42",X"B3",X"43",X"00",X"45",X"01",X"6C",X"14",X"6D",X"14",X"6E",X"14",X"68",X"0A",X"69", + X"0A",X"6A",X"0A",X"04",X"65",X"20",X"40",X"59",X"42",X"8F",X"68",X"0A",X"69",X"0A",X"6A",X"0A", + X"04",X"65",X"20",X"40",X"4F",X"42",X"77",X"68",X"0A",X"69",X"0A",X"6A",X"0A",X"04",X"65",X"20", + X"40",X"59",X"42",X"6A",X"45",X"00",X"68",X"0A",X"69",X"0A",X"6A",X"0A",X"04",X"00",X"20",X"40", + X"00",X"42",X"59",X"68",X"0A",X"69",X"0A",X"6A",X"0A",X"04",X"00",X"20",X"40",X"59",X"42",X"6A", + X"45",X"01",X"68",X"0A",X"69",X"0A",X"6A",X"0A",X"04",X"1C",X"20",X"40",X"4F",X"42",X"77",X"45", + X"00",X"68",X"0A",X"69",X"0A",X"6A",X"0A",X"04",X"00",X"20",X"40",X"59",X"42",X"6A",X"68",X"0A", + X"69",X"0A",X"6A",X"0A",X"04",X"EE",X"20",X"40",X"47",X"42",X"B3",X"45",X"01",X"68",X"0A",X"69", + X"0A",X"6A",X"0A",X"04",X"65",X"20",X"40",X"59",X"42",X"8E",X"68",X"0A",X"69",X"0A",X"6A",X"0A", + X"04",X"65",X"20",X"40",X"4F",X"42",X"77",X"68",X"0A",X"69",X"0A",X"6A",X"0A",X"04",X"65",X"20", + X"40",X"59",X"42",X"6A",X"45",X"00",X"68",X"0A",X"69",X"0A",X"04",X"00",X"20",X"40",X"00",X"42", + X"59",X"68",X"0A",X"69",X"0A",X"04",X"00",X"20",X"40",X"59",X"42",X"6A",X"45",X"01",X"68",X"0A", + X"69",X"0A",X"6A",X"0A",X"04",X"1C",X"20",X"40",X"4F",X"42",X"77",X"45",X"00",X"68",X"0A",X"69", + X"0A",X"6A",X"0A",X"04",X"00",X"20",X"40",X"59",X"42",X"6A",X"68",X"0A",X"69",X"0A",X"6A",X"0A", + X"04",X"EE",X"20",X"40",X"47",X"42",X"59",X"45",X"01",X"68",X"0A",X"69",X"0A",X"6A",X"0A",X"04", + X"65",X"60",X"67",X"07",X"FF",X"66",X"BC",X"40",X"BD",X"41",X"00",X"43",X"00",X"48",X"0A",X"69", + X"0A",X"02",X"77",X"16",X"02",X"00",X"16",X"40",X"B3",X"48",X"0A",X"69",X"0A",X"02",X"8E",X"16", + X"02",X"00",X"16",X"48",X"00",X"49",X"0A",X"42",X"9F",X"68",X"0A",X"00",X"9F",X"2C",X"68",X"0A", + X"00",X"8E",X"2C",X"49",X"00",X"40",X"BD",X"48",X"0A",X"69",X"0A",X"02",X"77",X"16",X"02",X"00", + X"16",X"40",X"9F",X"48",X"0A",X"69",X"0A",X"02",X"8E",X"16",X"02",X"00",X"16",X"48",X"00",X"42", + X"9F",X"49",X"0A",X"68",X"0A",X"00",X"9F",X"2C",X"68",X"0A",X"00",X"8E",X"2C",X"49",X"00",X"40", + X"BD",X"68",X"0A",X"69",X"0A",X"02",X"8E",X"2C",X"40",X"9F",X"68",X"0A",X"69",X"0A",X"02",X"7E", + X"2C",X"40",X"B3",X"68",X"0A",X"69",X"0A",X"02",X"77",X"2C",X"40",X"D4",X"68",X"0A",X"79",X"0D", + X"02",X"6A",X"2C",X"40",X"EE",X"68",X"0A",X"69",X"0A",X"02",X"77",X"58",X"67",X"03",X"FF",X"66", + X"B7",X"4B",X"03",X"4C",X"02",X"4D",X"09",X"48",X"10",X"06",X"01",X"28",X"48",X"00",X"06",X"00", + X"28",X"48",X"10",X"4B",X"03",X"4C",X"02",X"4D",X"09",X"06",X"01",X"28",X"48",X"00",X"06",X"00", + X"28",X"48",X"10",X"4B",X"03",X"4C",X"02",X"4D",X"09",X"06",X"01",X"28",X"48",X"00",X"06",X"01", + X"28",X"4B",X"00",X"4C",X"00",X"4D",X"00",X"66",X"B7",X"67",X"08",X"66",X"B8",X"6C",X"28",X"6D", + X"10",X"6E",X"14",X"FE",X"F0",X"19",X"FE",X"F1",X"B3",X"FE",X"F0",X"7D",X"FE",X"F0",X"E5",X"FE", + X"F0",X"19",X"FE",X"F1",X"B3",X"FE",X"F0",X"7D",X"FE",X"F1",X"4C",X"FE",X"F0",X"19",X"FE",X"F1", + X"B3",X"FE",X"F0",X"7D",X"FE",X"F0",X"E5",X"FE",X"F0",X"19",X"FE",X"F1",X"B3",X"FE",X"F0",X"7D", + X"FE",X"F1",X"4C",X"40",X"96",X"48",X"0C",X"43",X"01",X"44",X"3C",X"45",X"00",X"6C",X"28",X"6D", + X"10",X"6E",X"14",X"69",X"0B",X"6A",X"0A",X"02",X"2C",X"2D",X"44",X"43",X"69",X"0B",X"6A",X"0D", + X"02",X"2C",X"2D",X"40",X"86",X"44",X"4B",X"48",X"0C",X"69",X"0B",X"6A",X"0A",X"02",X"2C",X"2D", + X"44",X"43",X"69",X"0B",X"6A",X"0A",X"02",X"2C",X"2D",X"48",X"00",X"40",X"77",X"44",X"3C",X"68", + X"0C",X"69",X"0B",X"6A",X"0A",X"02",X"0C",X"2D",X"40",X"86",X"44",X"43",X"68",X"0C",X"69",X"0B", + X"6A",X"0A",X"02",X"2C",X"2D",X"40",X"96",X"44",X"4B",X"68",X"0C",X"69",X"0B",X"6A",X"0A",X"02", + X"3E",X"2D",X"40",X"77",X"44",X"3C",X"68",X"0C",X"69",X"0B",X"6A",X"0A",X"02",X"2C",X"2D",X"40", + X"86",X"44",X"43",X"48",X"0C",X"69",X"0B",X"6A",X"0A",X"02",X"0C",X"2D",X"44",X"4B",X"69",X"0B", + X"6A",X"0A",X"02",X"0C",X"2D",X"48",X"00",X"40",X"B3",X"44",X"4F",X"6A",X"0A",X"68",X"0C",X"69", + X"0B",X"02",X"65",X"2D",X"40",X"86",X"48",X"0C",X"44",X"4B",X"6A",X"0A",X"69",X"0B",X"02",X"0C", + X"2D",X"44",X"43",X"69",X"0B",X"6A",X"0A",X"02",X"65",X"2D",X"44",X"4B",X"6A",X"0A",X"69",X"0B", + X"02",X"3E",X"2D",X"44",X"4F",X"6A",X"0A",X"69",X"0B",X"02",X"2C",X"2D",X"48",X"00",X"43",X"00", + X"44",X"43",X"6A",X"0A",X"69",X"0B",X"02",X"EE",X"2D",X"40",X"86",X"43",X"01",X"44",X"38",X"48", + X"0C",X"69",X"0B",X"6A",X"0A",X"02",X"0C",X"2D",X"44",X"3C",X"6A",X"0A",X"69",X"0B",X"02",X"0C", + X"2D",X"40",X"77",X"44",X"43",X"48",X"0C",X"69",X"0B",X"6A",X"0A",X"02",X"0C",X"2D",X"44",X"3C", + X"6A",X"0A",X"69",X"0B",X"02",X"0C",X"2D",X"48",X"00",X"40",X"71",X"43",X"00",X"44",X"38",X"6A", + X"0A",X"68",X"0C",X"69",X"0B",X"02",X"EE",X"2D",X"40",X"77",X"43",X"01",X"44",X"3C",X"6A",X"0A", + X"68",X"0C",X"69",X"0B",X"02",X"0C",X"2D",X"40",X"86",X"44",X"43",X"6A",X"0A",X"68",X"0C",X"69", + X"0B",X"02",X"2C",X"2D",X"40",X"96",X"44",X"4B",X"6A",X"0A",X"68",X"0C",X"69",X"0B",X"02",X"0C", + X"2D",X"40",X"77",X"43",X"00",X"44",X"3C",X"6A",X"0A",X"68",X"0C",X"69",X"0B",X"02",X"EE",X"2D", + X"40",X"71",X"44",X"38",X"6A",X"0A",X"68",X"0C",X"69",X"0B",X"02",X"EE",X"2D",X"40",X"77",X"44", + X"3C",X"6A",X"0A",X"68",X"0C",X"69",X"0B",X"02",X"EE",X"2D",X"40",X"86",X"44",X"43",X"6A",X"0A", + X"68",X"0C",X"69",X"0B",X"02",X"EE",X"2D",X"40",X"77",X"44",X"3C",X"48",X"0C",X"4A",X"0A",X"69", + X"0B",X"02",X"EE",X"16",X"69",X"0B",X"02",X"E1",X"16",X"48",X"00",X"4A",X"00",X"40",X"86",X"44", + X"38",X"6A",X"0A",X"68",X"0C",X"69",X"0B",X"02",X"EE",X"2D",X"40",X"96",X"43",X"01",X"44",X"3C", + X"6A",X"0A",X"68",X"0C",X"69",X"0B",X"02",X"0C",X"2D",X"40",X"9F",X"44",X"43",X"6A",X"0A",X"68", + X"0C",X"69",X"0B",X"02",X"2C",X"2D",X"FE",X"EE",X"3D",X"40",X"B3",X"48",X"0C",X"43",X"01",X"45", + X"00",X"69",X"0B",X"02",X"65",X"16",X"43",X"00",X"02",X"00",X"16",X"43",X"01",X"44",X"59",X"6A", + X"0A",X"69",X"0B",X"02",X"65",X"2D",X"40",X"9F",X"44",X"64",X"48",X"0C",X"69",X"0B",X"6A",X"0A", + X"02",X"2C",X"2D",X"44",X"59",X"69",X"0B",X"6A",X"0A",X"02",X"65",X"2D",X"48",X"00",X"40",X"96", + X"68",X"0C",X"69",X"0B",X"02",X"2C",X"2D",X"40",X"9F",X"44",X"4B",X"6A",X"0A",X"68",X"0C",X"69", + X"0B",X"02",X"3E",X"2D",X"40",X"B3",X"44",X"4F",X"48",X"0C",X"69",X"0B",X"6A",X"0A",X"02",X"65", + X"2D",X"44",X"4B",X"6A",X"0A",X"69",X"0B",X"02",X"3E",X"2D",X"48",X"00",X"FD",X"40",X"B3",X"48", + X"0C",X"69",X"0B",X"02",X"65",X"16",X"43",X"00",X"02",X"00",X"16",X"43",X"01",X"44",X"59",X"6A", + X"0A",X"69",X"0B",X"02",X"65",X"2D",X"40",X"9F",X"44",X"64",X"48",X"0C",X"69",X"0B",X"6A",X"0A", + X"02",X"2C",X"2D",X"44",X"59",X"69",X"0B",X"6A",X"0A",X"02",X"65",X"2D",X"48",X"00",X"40",X"77", + X"44",X"59",X"6A",X"0A",X"68",X"0C",X"69",X"0B",X"02",X"0C",X"2D",X"40",X"86",X"43",X"00",X"44", + X"4F",X"6A",X"0A",X"68",X"0C",X"69",X"0B",X"02",X"EE",X"2D",X"40",X"96",X"43",X"01",X"44",X"4B", + X"48",X"0C",X"69",X"0B",X"6A",X"0A",X"02",X"0C",X"2D",X"44",X"3C",X"6A",X"0A",X"69",X"0B",X"02", + X"2C",X"2D",X"48",X"00",X"FD",X"40",X"9F",X"48",X"0C",X"43",X"01",X"44",X"43",X"4A",X"0A",X"69", + X"0B",X"02",X"90",X"2D",X"69",X"0B",X"02",X"90",X"2D",X"48",X"00",X"4A",X"00",X"40",X"96",X"43", + X"01",X"44",X"4B",X"6A",X"0A",X"68",X"0C",X"69",X"0B",X"02",X"DD",X"2D",X"40",X"C8",X"43",X"01", + X"44",X"4F",X"48",X"0C",X"4A",X"0A",X"69",X"0B",X"02",X"90",X"2D",X"69",X"0B",X"02",X"90",X"2D", + X"48",X"00",X"4A",X"00",X"40",X"B3",X"44",X"4B",X"68",X"0C",X"69",X"0B",X"6A",X"0A",X"02",X"90", + X"2D",X"40",X"9F",X"43",X"01",X"44",X"43",X"48",X"0C",X"4A",X"0A",X"69",X"0B",X"02",X"DD",X"2D", + X"43",X"01",X"69",X"0B",X"02",X"90",X"2D",X"48",X"00",X"4A",X"00",X"FD",X"40",X"9F",X"48",X"0C", + X"43",X"01",X"44",X"43",X"4A",X"0A",X"69",X"0B",X"02",X"90",X"2D",X"69",X"0B",X"02",X"90",X"2D", + X"48",X"00",X"4A",X"00",X"40",X"96",X"43",X"01",X"44",X"4B",X"68",X"0C",X"69",X"0B",X"6A",X"0A", + X"02",X"DD",X"2D",X"40",X"86",X"43",X"01",X"44",X"4F",X"4A",X"0A",X"48",X"0C",X"69",X"0B",X"02", + X"90",X"2D",X"69",X"0B",X"02",X"90",X"2D",X"48",X"00",X"4A",X"00",X"40",X"96",X"44",X"4B",X"6A", + X"0A",X"68",X"0C",X"69",X"0B",X"02",X"90",X"2D",X"40",X"9F",X"44",X"43",X"48",X"0C",X"4A",X"0A", + X"43",X"01",X"69",X"0B",X"02",X"DD",X"2D",X"43",X"01",X"69",X"0B",X"02",X"90",X"2D",X"48",X"00", + X"4A",X"00",X"FD",X"40",X"B3",X"48",X"0C",X"43",X"01",X"69",X"0B",X"02",X"65",X"16",X"43",X"00", + X"02",X"00",X"16",X"43",X"01",X"44",X"59",X"6A",X"0A",X"69",X"0B",X"02",X"65",X"2D",X"40",X"9F", + X"44",X"64",X"48",X"0C",X"69",X"0B",X"6A",X"0A",X"02",X"2C",X"2D",X"44",X"59",X"6A",X"0A",X"69", + X"0B",X"02",X"65",X"2D",X"48",X"00",X"40",X"86",X"68",X"0C",X"69",X"0B",X"02",X"0C",X"2D",X"40", + X"96",X"44",X"4B",X"6A",X"0A",X"68",X"0C",X"69",X"0B",X"02",X"2C",X"2D",X"40",X"9F",X"44",X"4F", + X"48",X"0C",X"69",X"0B",X"6A",X"0A",X"02",X"3E",X"2D",X"44",X"4B",X"69",X"0B",X"6A",X"0A",X"02", + X"2C",X"2D",X"48",X"00",X"FD",X"67",X"BF",X"66",X"B8",X"40",X"77",X"41",X"00",X"42",X"00",X"43", + X"00",X"45",X"01",X"6C",X"14",X"6D",X"14",X"6E",X"14",X"FE",X"F2",X"AB",X"FE",X"F3",X"C5",X"FE", + X"F2",X"E8",X"FE",X"F3",X"2F",X"FE",X"F3",X"7E",X"FE",X"F3",X"C5",X"40",X"47",X"42",X"D4",X"68", + X"0A",X"69",X"0A",X"6A",X"0A",X"04",X"65",X"30",X"40",X"4F",X"42",X"BD",X"68",X"0A",X"69",X"0A", + X"6A",X"0A",X"04",X"65",X"30",X"40",X"47",X"48",X"0A",X"42",X"B3",X"49",X"0A",X"6A",X"0A",X"04", + X"65",X"30",X"6A",X"0A",X"04",X"65",X"30",X"48",X"00",X"49",X"00",X"40",X"4F",X"42",X"BD",X"68", + X"0A",X"69",X"0A",X"6A",X"0A",X"04",X"7A",X"30",X"40",X"59",X"42",X"B3",X"68",X"0A",X"69",X"0A", + X"6A",X"0A",X"04",X"7A",X"30",X"40",X"6A",X"42",X"8E",X"49",X"0A",X"68",X"0A",X"6A",X"0A",X"04", + X"A9",X"30",X"40",X"5E",X"68",X"0A",X"69",X"0A",X"04",X"A9",X"30",X"40",X"77",X"42",X"9F",X"68", + X"0A",X"69",X"0A",X"6A",X"0A",X"04",X"DD",X"C0",X"67",X"07",X"FF",X"68",X"0A",X"69",X"0A",X"6A", + X"0A",X"04",X"DD",X"30",X"6A",X"0A",X"04",X"DD",X"30",X"40",X"5E",X"68",X"0A",X"6A",X"0A",X"04", + X"DD",X"30",X"6A",X"0A",X"04",X"DD",X"30",X"40",X"4F",X"68",X"0A",X"6A",X"0A",X"04",X"DD",X"30", + X"6A",X"0A",X"04",X"DD",X"30",X"40",X"59",X"68",X"0A",X"6A",X"0A",X"04",X"DD",X"30",X"40",X"6A", + X"68",X"0A",X"6A",X"0A",X"04",X"DD",X"30",X"FD",X"40",X"8E",X"42",X"9F",X"48",X"0A",X"45",X"02", + X"49",X"0A",X"6A",X"0A",X"04",X"38",X"30",X"6A",X"0A",X"04",X"38",X"30",X"40",X"77",X"48",X"0A", + X"6A",X"0A",X"04",X"38",X"30",X"6A",X"0A",X"04",X"38",X"30",X"49",X"00",X"40",X"5E",X"48",X"0A", + X"6A",X"0A",X"04",X"38",X"30",X"6A",X"0A",X"04",X"38",X"30",X"48",X"00",X"40",X"6A",X"68",X"0A", + X"6A",X"0A",X"04",X"38",X"30",X"40",X"77",X"68",X"0A",X"6A",X"0A",X"04",X"38",X"30",X"FD",X"40", + X"6A",X"48",X"0A",X"6A",X"0A",X"04",X"38",X"30",X"42",X"9F",X"69",X"0A",X"6A",X"0A",X"04",X"38", + X"30",X"42",X"B3",X"69",X"0A",X"6A",X"0A",X"04",X"38",X"30",X"48",X"00",X"40",X"8E",X"42",X"BD", + X"48",X"0A",X"6A",X"0A",X"69",X"0A",X"04",X"38",X"30",X"42",X"B3",X"49",X"0A",X"6A",X"0A",X"04", + X"38",X"30",X"6A",X"0A",X"04",X"38",X"30",X"49",X"00",X"42",X"BD",X"69",X"0A",X"6A",X"0A",X"04", + X"38",X"30",X"48",X"00",X"42",X"D4",X"69",X"0A",X"6A",X"0A",X"04",X"38",X"30",X"FD",X"40",X"77", + X"48",X"0A",X"42",X"BD",X"45",X"01",X"49",X"0A",X"6A",X"0A",X"04",X"DD",X"30",X"6A",X"0A",X"04", + X"DD",X"30",X"40",X"5E",X"48",X"0A",X"6A",X"0A",X"04",X"DD",X"30",X"6A",X"0A",X"04",X"DD",X"30", + X"49",X"00",X"40",X"4F",X"48",X"0A",X"6A",X"0A",X"04",X"DD",X"30",X"6A",X"0A",X"04",X"DD",X"30", + X"48",X"00",X"40",X"59",X"68",X"0A",X"6A",X"0A",X"04",X"DD",X"30",X"40",X"6A",X"68",X"0A",X"6A", + X"0A",X"04",X"DD",X"30",X"FD",X"48",X"0A",X"40",X"5E",X"6A",X"0A",X"04",X"DD",X"30",X"42",X"EE", + X"69",X"0A",X"6A",X"0A",X"04",X"DD",X"30",X"42",X"BD",X"69",X"0A",X"6A",X"0A",X"04",X"DD",X"30", + X"40",X"4F",X"48",X"0A",X"42",X"B3",X"69",X"0A",X"6A",X"0A",X"04",X"DD",X"30",X"42",X"9F",X"49", + X"0A",X"6A",X"0A",X"04",X"DD",X"30",X"6A",X"0A",X"04",X"DD",X"30",X"49",X"00",X"42",X"B3",X"69", + X"0A",X"6A",X"0A",X"04",X"DD",X"30",X"48",X"00",X"42",X"D4",X"69",X"0A",X"6A",X"0A",X"04",X"DD", + X"30",X"FD",X"77",X"BF",X"76",X"BE",X"51",X"00",X"53",X"D4",X"58",X"0A",X"59",X"0A",X"10",X"B3", + X"1A",X"52",X"B3",X"10",X"8E",X"1A",X"52",X"77",X"10",X"5E",X"40",X"52",X"D4",X"10",X"B3",X"1A", + X"52",X"B3",X"10",X"8E",X"1A",X"52",X"77",X"10",X"5E",X"60",X"58",X"00",X"77",X"01",X"FF",X"77", + X"BF",X"76",X"B8",X"50",X"70",X"52",X"6D",X"58",X"10",X"59",X"10",X"5A",X"10",X"5B",X"30",X"5C", + X"04",X"5D",X"09",X"14",X"78",X"80",X"77",X"07",X"FF",X"76",X"BD",X"53",X"00",X"52",X"43",X"59", + X"10",X"5B",X"04",X"5C",X"10",X"1D",X"09",X"20",X"52",X"53",X"59",X"10",X"1D",X"09",X"E0",X"52", + X"00",X"59",X"00",X"77",X"02",X"FF",X"66",X"B8",X"4B",X"00",X"4C",X"00",X"4D",X"00",X"40",X"70", + X"41",X"00",X"42",X"75",X"43",X"00",X"45",X"00",X"48",X"0A",X"49",X"0A",X"4A",X"0A",X"6C",X"00", + X"6D",X"00",X"6E",X"00",X"04",X"77",X"10",X"40",X"74",X"42",X"78",X"04",X"7A",X"10",X"40",X"78", + X"42",X"7C",X"04",X"79",X"10",X"40",X"7B",X"42",X"77",X"04",X"7F",X"10",X"40",X"80",X"42",X"86", + X"04",X"87",X"10",X"40",X"84",X"42",X"88",X"04",X"8A",X"10",X"40",X"89",X"42",X"8E",X"04",X"8F", + X"10",X"40",X"90",X"42",X"91",X"04",X"92",X"10",X"40",X"98",X"42",X"99",X"04",X"9A",X"10",X"40", + X"A0",X"42",X"A1",X"04",X"A2",X"10",X"40",X"A8",X"42",X"A9",X"04",X"AA",X"10",X"40",X"B0",X"42", + X"B1",X"04",X"B2",X"10",X"40",X"B8",X"42",X"B9",X"04",X"BA",X"10",X"40",X"C0",X"42",X"C1",X"04", + X"C2",X"10",X"40",X"C8",X"42",X"C9",X"04",X"CA",X"10",X"40",X"D0",X"42",X"D1",X"04",X"D2",X"10", + X"40",X"D8",X"42",X"D9",X"04",X"DA",X"10",X"40",X"E0",X"42",X"E1",X"04",X"E2",X"10",X"40",X"E8", + X"42",X"E9",X"04",X"EA",X"10",X"40",X"F0",X"42",X"F1",X"04",X"F2",X"10",X"40",X"F8",X"42",X"F9", + X"04",X"FA",X"10",X"40",X"FF",X"42",X"FF",X"04",X"FF",X"30",X"48",X"00",X"49",X"00",X"4A",X"00", + X"67",X"07",X"FF",X"66",X"B8",X"4B",X"00",X"4C",X"00",X"4D",X"00",X"40",X"FF",X"41",X"00",X"42", + X"FF",X"43",X"00",X"45",X"00",X"48",X"0A",X"49",X"0A",X"4A",X"0A",X"6C",X"00",X"6D",X"00",X"6E", + X"00",X"04",X"FF",X"10",X"40",X"F8",X"42",X"F9",X"04",X"FA",X"10",X"40",X"F0",X"42",X"F1",X"04", + X"F2",X"10",X"40",X"E8",X"42",X"E9",X"04",X"EA",X"10",X"40",X"E0",X"42",X"E1",X"04",X"E2",X"10", + X"40",X"D8",X"42",X"D9",X"04",X"DA",X"10",X"40",X"D0",X"42",X"D1",X"04",X"D2",X"10",X"40",X"C8", + X"42",X"C9",X"04",X"CA",X"10",X"40",X"C0",X"42",X"C1",X"04",X"C2",X"10",X"40",X"B8",X"42",X"B9", + X"04",X"BA",X"10",X"40",X"B0",X"42",X"B1",X"04",X"B2",X"10",X"40",X"A8",X"42",X"A9",X"04",X"AA", + X"10",X"40",X"A0",X"42",X"A1",X"04",X"A2",X"10",X"40",X"9E",X"42",X"9A",X"04",X"98",X"10",X"40", + X"96",X"42",X"93",X"04",X"94",X"10",X"40",X"8E",X"42",X"8A",X"04",X"88",X"10",X"40",X"87",X"42", + X"85",X"04",X"83",X"10",X"40",X"7E",X"42",X"77",X"04",X"75",X"10",X"40",X"75",X"42",X"7A",X"04", + X"70",X"30",X"40",X"00",X"42",X"00",X"44",X"00",X"48",X"00",X"49",X"00",X"4A",X"00",X"67",X"07", + X"FF",X"76",X"BD",X"50",X"00",X"51",X"00",X"53",X"00",X"59",X"0C",X"58",X"0C",X"12",X"11",X"05", + X"12",X"12",X"05",X"12",X"13",X"05",X"12",X"14",X"05",X"12",X"15",X"05",X"12",X"16",X"05",X"12", + X"17",X"05",X"12",X"18",X"05",X"12",X"19",X"05",X"12",X"1A",X"05",X"50",X"16",X"12",X"1B",X"05", + X"50",X"17",X"12",X"1C",X"05",X"50",X"18",X"12",X"1D",X"05",X"50",X"19",X"12",X"1E",X"05",X"50", + X"1A",X"12",X"1F",X"05",X"50",X"1B",X"12",X"20",X"05",X"50",X"1C",X"12",X"21",X"05",X"50",X"1D", + X"12",X"22",X"05",X"50",X"1E",X"12",X"23",X"05",X"50",X"1F",X"12",X"24",X"05",X"12",X"25",X"05", + X"12",X"26",X"05",X"12",X"27",X"05",X"12",X"28",X"05",X"12",X"29",X"05",X"12",X"2A",X"05",X"50", + X"26",X"12",X"2B",X"05",X"50",X"27",X"12",X"2C",X"05",X"50",X"28",X"12",X"2D",X"05",X"50",X"29", + X"12",X"2E",X"05",X"50",X"2A",X"12",X"2F",X"05",X"50",X"2B",X"12",X"30",X"05",X"50",X"2C",X"12", + X"31",X"05",X"50",X"2D",X"12",X"32",X"05",X"50",X"2E",X"12",X"33",X"05",X"50",X"2F",X"12",X"34", + X"05",X"12",X"35",X"05",X"12",X"36",X"05",X"12",X"37",X"05",X"12",X"38",X"05",X"12",X"39",X"05", + X"12",X"3A",X"05",X"50",X"36",X"12",X"3B",X"05",X"50",X"37",X"12",X"3C",X"05",X"50",X"38",X"12", + X"3D",X"05",X"50",X"39",X"12",X"3E",X"05",X"50",X"3A",X"12",X"3F",X"05",X"50",X"3B",X"12",X"40", + X"05",X"50",X"3C",X"12",X"41",X"05",X"50",X"3D",X"12",X"42",X"05",X"50",X"3E",X"12",X"43",X"05", + X"50",X"3F",X"12",X"44",X"05",X"12",X"45",X"05",X"12",X"46",X"05",X"12",X"47",X"05",X"12",X"48", + X"05",X"12",X"49",X"05",X"12",X"4A",X"05",X"50",X"46",X"12",X"4B",X"05",X"50",X"47",X"12",X"4C", + X"05",X"50",X"48",X"12",X"4D",X"05",X"50",X"49",X"12",X"4E",X"05",X"50",X"4A",X"12",X"4F",X"05", + X"50",X"4B",X"12",X"50",X"05",X"50",X"04",X"12",X"51",X"05",X"50",X"4D",X"12",X"52",X"05",X"50", + X"4E",X"12",X"53",X"05",X"50",X"4F",X"12",X"54",X"05",X"12",X"55",X"05",X"12",X"56",X"05",X"12", + X"57",X"05",X"12",X"58",X"05",X"12",X"59",X"05",X"12",X"5A",X"05",X"50",X"56",X"12",X"5B",X"05", + X"50",X"57",X"12",X"5C",X"05",X"50",X"58",X"12",X"5D",X"05",X"50",X"59",X"12",X"5E",X"05",X"50", + X"5A",X"12",X"5F",X"05",X"50",X"5B",X"12",X"60",X"05",X"50",X"5C",X"12",X"61",X"05",X"50",X"5D", + X"12",X"62",X"05",X"50",X"5E",X"12",X"63",X"05",X"50",X"5F",X"12",X"64",X"05",X"12",X"65",X"05", + X"12",X"66",X"05",X"12",X"67",X"05",X"12",X"68",X"05",X"12",X"69",X"05",X"12",X"6A",X"05",X"50", + X"66",X"12",X"6B",X"05",X"50",X"67",X"12",X"6C",X"05",X"50",X"68",X"12",X"6D",X"05",X"50",X"69", + X"12",X"6E",X"05",X"50",X"6A",X"12",X"6F",X"05",X"50",X"6B",X"12",X"70",X"05",X"50",X"6C",X"12", + X"71",X"05",X"50",X"6D",X"12",X"72",X"05",X"50",X"6E",X"12",X"73",X"05",X"50",X"6F",X"12",X"74", + X"05",X"12",X"75",X"05",X"12",X"76",X"05",X"12",X"77",X"05",X"12",X"78",X"05",X"12",X"79",X"05", + X"12",X"7A",X"05",X"50",X"76",X"12",X"7B",X"05",X"50",X"77",X"12",X"7C",X"05",X"50",X"78",X"12", + X"7D",X"05",X"50",X"79",X"12",X"7E",X"05",X"50",X"7A",X"12",X"7F",X"05",X"50",X"7B",X"12",X"80", + X"05",X"50",X"7C",X"12",X"81",X"05",X"50",X"7D",X"12",X"82",X"05",X"50",X"7E",X"12",X"83",X"05", + X"50",X"7F",X"12",X"84",X"05",X"12",X"85",X"05",X"12",X"86",X"05",X"12",X"87",X"05",X"12",X"88", + X"05",X"12",X"89",X"05",X"12",X"8A",X"05",X"50",X"86",X"12",X"8B",X"05",X"50",X"87",X"12",X"8C", + X"05",X"50",X"88",X"12",X"8D",X"05",X"50",X"89",X"12",X"8E",X"05",X"50",X"8A",X"12",X"8F",X"80", + X"59",X"00",X"58",X"00",X"77",X"03",X"FF",X"76",X"BF",X"50",X"00",X"51",X"00",X"52",X"00",X"53", + X"00",X"58",X"00",X"59",X"00",X"77",X"BF",X"FF",X"76",X"B7",X"5B",X"03",X"5C",X"02",X"5D",X"09", + X"58",X"10",X"16",X"01",X"28",X"58",X"00",X"16",X"00",X"28",X"77",X"08",X"5B",X"00",X"5C",X"00", + X"5D",X"00",X"FF",X"76",X"7F",X"1E",X"01",X"04",X"1E",X"00",X"50",X"1E",X"01",X"04",X"1E",X"00", + X"50",X"1E",X"01",X"04",X"1E",X"00",X"50",X"FF",X"76",X"7F",X"1E",X"02",X"04",X"1E",X"00",X"50", + X"1E",X"02",X"04",X"1E",X"00",X"50",X"1E",X"02",X"04",X"1E",X"00",X"50",X"FF",X"76",X"7F",X"1E", + X"04",X"04",X"1E",X"00",X"50",X"1E",X"04",X"04",X"1E",X"00",X"50",X"1E",X"04",X"04",X"1E",X"00", + X"50",X"FF",X"76",X"7F",X"1E",X"08",X"04",X"1E",X"00",X"50",X"1E",X"08",X"04",X"1E",X"00",X"50", + X"1E",X"08",X"04",X"1E",X"00",X"50",X"FF",X"76",X"BB",X"55",X"00",X"5A",X"0C",X"FE",X"F8",X"BD", + X"14",X"00",X"E0",X"14",X"00",X"E0",X"FE",X"F8",X"87",X"76",X"BB",X"55",X"00",X"5A",X"0C",X"FE", + X"F8",X"BD",X"FE",X"F8",X"BD",X"14",X"00",X"70",X"14",X"00",X"E0",X"FE",X"F8",X"99",X"76",X"BB", + X"55",X"00",X"5A",X"0C",X"FE",X"F8",X"BD",X"14",X"00",X"A0",X"FE",X"F8",X"AE",X"14",X"4F",X"10", + X"14",X"47",X"10",X"14",X"4F",X"10",X"14",X"47",X"10",X"14",X"4F",X"10",X"14",X"47",X"10",X"14", + X"4F",X"10",X"14",X"00",X"10",X"FD",X"66",X"B8",X"41",X"00",X"43",X"00",X"45",X"00",X"40",X"6A", + X"42",X"7E",X"6C",X"14",X"6D",X"14",X"6E",X"14",X"68",X"0C",X"69",X"0C",X"6A",X"0C",X"04",X"D4", + X"1F",X"68",X"0C",X"69",X"0C",X"6A",X"0C",X"04",X"D4",X"1F",X"68",X"0C",X"69",X"0C",X"6A",X"0C", + X"04",X"D4",X"1F",X"40",X"5E",X"42",X"77",X"68",X"0C",X"69",X"0C",X"6A",X"0C",X"04",X"BD",X"3E", + X"68",X"0C",X"69",X"0C",X"6A",X"0C",X"04",X"BD",X"3E",X"68",X"0C",X"69",X"0C",X"6A",X"0C",X"04", + X"BD",X"1F",X"40",X"6A",X"42",X"7E",X"68",X"0C",X"69",X"0C",X"6A",X"0C",X"04",X"D4",X"1F",X"68", + X"0C",X"69",X"0C",X"6A",X"0C",X"04",X"D4",X"1F",X"68",X"0C",X"69",X"0C",X"6A",X"0C",X"04",X"D4", + X"1F",X"40",X"5E",X"42",X"77",X"68",X"0C",X"69",X"0C",X"6A",X"0C",X"04",X"BD",X"63",X"67",X"07", + X"FF",X"20",X"20",X"20",X"7C",X"20",X"4A",X"20",X"7C",X"20",X"20",X"20",X"7C",X"20",X"4C",X"20", + X"7C",X"20",X"20",X"20",X"2B",X"2D",X"2D",X"2D",X"2B",X"2D",X"2D",X"2D",X"2B",X"2D",X"2D",X"2D", + X"2B",X"20",X"20",X"20",X"7C",X"20",X"4D",X"20",X"7C",X"20",X"2C",X"20",X"7C",X"20",X"2E",X"20", + X"7C",X"20",X"20",X"20",X"2B",X"2D",X"2D",X"2D",X"2B",X"2D",X"2D",X"2D",X"2B",X"2D",X"2D",X"2D", + X"2B",X"20",X"20",X"20",X"50",X"3D",X"61",X"64",X"64",X"72",X"65",X"73",X"73",X"2B",X"31",X"30", + X"30",X"30",X"48",X"20",X"3B",X"3D",X"61",X"64",X"64",X"72",X"65",X"73",X"73",X"2B",X"30",X"31", + X"30",X"30",X"48",X"20",X"2F",X"3D",X"61",X"64",X"64",X"72",X"65",X"73",X"73",X"2D",X"30",X"31", + X"30",X"30",X"48",X"20",X"73",X"70",X"61",X"63",X"65",X"3D",X"6E",X"65",X"78",X"74",X"20",X"62", + X"79",X"74",X"65",X"20",X"52",X"20",X"3D",X"20",X"72",X"65",X"74",X"75",X"72",X"6E",X"20",X"20", + X"20",X"20",X"20",X"20",X"4D",X"45",X"4D",X"4F",X"52",X"59",X"20",X"20",X"20",X"45",X"44",X"49", + X"54",X"4F",X"52",X"20",X"00",X"06",X"00",X"10",X"FE",X"C9",X"CD",X"ED",X"F9",X"CD",X"FC",X"03", + X"0F",X"8E",X"00",X"FF",X"BD",X"FB",X"93",X"86",X"BF",X"C6",X"07",X"BD",X"FB",X"D5",X"86",X"13", + X"C6",X"0F",X"BD",X"FB",X"D5",X"86",X"3F",X"C6",X"17",X"BD",X"FB",X"D5",X"BD",X"FB",X"A8",X"7F", + X"08",X"00",X"0F",X"BD",X"FB",X"43",X"96",X"BC",X"2B",X"07",X"BD",X"FD",X"DE",X"86",X"FF",X"97", + X"BC",X"0E",X"CE",X"00",X"00",X"DF",X"D1",X"96",X"80",X"26",X"0B",X"DE",X"84",X"D6",X"8C",X"BD", + X"FC",X"D9",X"DF",X"84",X"97",X"80",X"7C",X"00",X"D2",X"96",X"81",X"26",X"0B",X"DE",X"86",X"D6", + X"8D",X"BD",X"FC",X"D9",X"DF",X"86",X"97",X"81",X"7C",X"00",X"D2",X"96",X"82",X"26",X"0B",X"DE", + X"88",X"D6",X"8E",X"BD",X"FC",X"D9",X"DF",X"88",X"97",X"82",X"7C",X"00",X"D2",X"96",X"83",X"26", + X"0B",X"DE",X"8A",X"D6",X"8F",X"BD",X"FC",X"D9",X"DF",X"8A",X"97",X"83",X"96",X"A8",X"27",X"08", + X"7F",X"00",X"A8",X"C6",X"08",X"BD",X"FC",X"37",X"96",X"A9",X"27",X"08",X"7F",X"00",X"A9",X"C6", + X"09",X"BD",X"FC",X"37",X"96",X"AA",X"27",X"08",X"7F",X"00",X"AA",X"C6",X"0A",X"BD",X"FC",X"37", + X"96",X"AB",X"27",X"08",X"7F",X"00",X"AB",X"C6",X"18",X"BD",X"FC",X"50",X"96",X"AC",X"27",X"08", + X"7F",X"00",X"AC",X"C6",X"19",X"BD",X"FC",X"50",X"96",X"AD",X"27",X"08",X"7F",X"00",X"AD",X"C6", + X"1A",X"BD",X"FC",X"50",X"96",X"BE",X"16",X"9A",X"D8",X"0F",X"97",X"D8",X"C6",X"0F",X"BD",X"FB", + X"DB",X"7E",X"FA",X"22",X"96",X"C1",X"B7",X"08",X"01",X"96",X"C2",X"B7",X"08",X"02",X"7C",X"00", + X"BD",X"96",X"BF",X"4C",X"97",X"BF",X"44",X"24",X"32",X"DE",X"C3",X"09",X"27",X"1E",X"DF",X"C3", + X"DE",X"C7",X"A6",X"00",X"44",X"44",X"44",X"44",X"97",X"C1",X"DE",X"C5",X"09",X"27",X"15",X"DF", + X"C5",X"DE",X"C9",X"A6",X"00",X"44",X"44",X"44",X"44",X"97",X"C2",X"3B",X"86",X"01",X"9A",X"BE", + X"97",X"BE",X"20",X"E6",X"86",X"02",X"9A",X"BE",X"97",X"BE",X"3B",X"96",X"C7",X"81",X"20",X"25", + X"09",X"DE",X"C7",X"A6",X"00",X"97",X"C1",X"08",X"DF",X"C7",X"96",X"C9",X"81",X"20",X"25",X"09", + X"DE",X"C9",X"A6",X"00",X"97",X"C2",X"08",X"DF",X"C9",X"96",X"BF",X"84",X"0E",X"26",X"CC",X"7C", + X"00",X"C0",X"3B",X"96",X"C0",X"27",X"3E",X"7A",X"00",X"C0",X"96",X"80",X"27",X"06",X"4C",X"27", + X"03",X"7A",X"00",X"80",X"96",X"81",X"27",X"06",X"4C",X"27",X"03",X"7A",X"00",X"81",X"96",X"82", + X"27",X"06",X"4C",X"27",X"03",X"7A",X"00",X"82",X"96",X"83",X"27",X"06",X"4C",X"27",X"03",X"7A", + X"00",X"83",X"CE",X"00",X"06",X"A6",X"AD",X"27",X"09",X"4A",X"26",X"04",X"6C",X"A7",X"A6",X"B3", + X"A7",X"AD",X"09",X"26",X"F0",X"39",X"B7",X"08",X"00",X"C6",X"0E",X"BD",X"FC",X"1D",X"84",X"3F", + X"97",X"BC",X"3B",X"CE",X"FF",X"FF",X"DF",X"00",X"C6",X"4F",X"08",X"86",X"00",X"A7",X"80",X"08", + X"5A",X"26",X"FA",X"86",X"13",X"97",X"D8",X"39",X"BD",X"FB",X"C0",X"86",X"BF",X"97",X"BB",X"C6", + X"FF",X"D7",X"82",X"D7",X"83",X"D7",X"B1",X"D7",X"B2",X"D7",X"B3",X"C6",X"17",X"7E",X"FB",X"DB", + X"86",X"BF",X"97",X"BA",X"C6",X"FF",X"D7",X"80",X"D7",X"81",X"D7",X"AE",X"D7",X"AF",X"D7",X"B0", + X"C6",X"07",X"7E",X"FB",X"DB",X"7C",X"00",X"BD",X"20",X"04",X"0F",X"7F",X"00",X"BD",X"37",X"36", + X"C1",X"10",X"2A",X"19",X"86",X"0D",X"97",X"03",X"D7",X"02",X"C6",X"08",X"D7",X"03",X"5C",X"32", + X"97",X"02",X"96",X"BD",X"27",X"FC",X"D7",X"03",X"5A",X"D7",X"03",X"33",X"39",X"86",X"15",X"97", + X"03",X"C4",X"0F",X"D7",X"02",X"C6",X"10",X"20",X"E3",X"37",X"20",X"E4",X"37",X"86",X"15",X"97", + X"03",X"C4",X"0F",X"D7",X"02",X"C6",X"14",X"20",X"0D",X"C1",X"10",X"2A",X"EF",X"37",X"86",X"0D", + X"97",X"03",X"D7",X"02",X"C6",X"0C",X"4F",X"97",X"03",X"97",X"00",X"D7",X"03",X"96",X"02",X"5F", + X"D7",X"03",X"5A",X"D7",X"00",X"33",X"39",X"0F",X"BD",X"FC",X"1D",X"C6",X"09",X"7F",X"00",X"BD", + X"84",X"1F",X"81",X"10",X"2A",X"08",X"4A",X"81",X"07",X"2B",X"03",X"BD",X"FC",X"09",X"0E",X"39", + X"0F",X"BD",X"FC",X"0C",X"C6",X"11",X"20",X"E5",X"17",X"84",X"0F",X"81",X"08",X"2A",X"08",X"A6", + X"94",X"AB",X"98",X"A7",X"94",X"20",X"67",X"CB",X"38",X"DE",X"CD",X"A6",X"05",X"36",X"DE",X"D1", + X"AB",X"94",X"A7",X"94",X"32",X"2B",X"0C",X"24",X"02",X"6C",X"98",X"BD",X"FB",X"DA",X"5C",X"A6", + X"94",X"20",X"4B",X"25",X"F6",X"6A",X"98",X"20",X"F2",X"6F",X"8C",X"DE",X"CD",X"C1",X"A0",X"2B", + X"02",X"08",X"08",X"08",X"08",X"08",X"C1",X"C0",X"2B",X"08",X"17",X"84",X"0F",X"81",X"08",X"2B", + X"01",X"08",X"86",X"01",X"39",X"DF",X"CD",X"DE",X"D1",X"6A",X"90",X"27",X"DC",X"C1",X"A0",X"2A", + X"10",X"C4",X"1F",X"A6",X"94",X"36",X"DE",X"CD",X"A6",X"03",X"BD",X"FB",X"DA",X"0E",X"32",X"08", + X"39",X"C1",X"C0",X"2A",X"93",X"A6",X"90",X"44",X"A6",X"94",X"25",X"02",X"A6",X"98",X"C4",X"1F", + X"BD",X"FB",X"DA",X"0E",X"DE",X"CD",X"A6",X"04",X"39",X"26",X"CA",X"DF",X"CD",X"E6",X"00",X"2A", + X"03",X"7E",X"FD",X"90",X"C4",X"3F",X"C1",X"20",X"2A",X"11",X"A6",X"01",X"BD",X"FB",X"DA",X"0E", + X"E6",X"00",X"08",X"08",X"58",X"2B",X"E4",X"A6",X"00",X"08",X"39",X"C4",X"1F",X"17",X"84",X"0F", + X"26",X"31",X"A6",X"01",X"97",X"CE",X"A6",X"02",X"97",X"CD",X"BD",X"FD",X"D1",X"DC",X"CD",X"04", + X"DD",X"CD",X"E6",X"00",X"C4",X"1F",X"5C",X"5C",X"BD",X"FD",X"D1",X"7C",X"00",X"CE",X"26",X"03", + X"7C",X"00",X"CD",X"BD",X"FD",X"D1",X"CB",X"07",X"86",X"09",X"BD",X"FB",X"DB",X"0E",X"E6",X"00", + X"08",X"20",X"BF",X"80",X"08",X"2B",X"29",X"DD",X"CF",X"84",X"03",X"C1",X"10",X"2B",X"02",X"8B", + X"03",X"16",X"A6",X"01",X"CE",X"00",X"00",X"3A",X"D6",X"CF",X"C1",X"04",X"2A",X"0B",X"A6",X"B4", + X"A7",X"AE",X"DE",X"CD",X"D6",X"D0",X"7E",X"FC",X"EA",X"A7",X"B4",X"DE",X"CD",X"7E",X"FC",X"F0", + X"4C",X"27",X"17",X"5C",X"C1",X"10",X"2A",X"09",X"96",X"BA",X"A4",X"01",X"97",X"BA",X"7E",X"FC", + X"EC",X"96",X"BB",X"A4",X"01",X"97",X"BB",X"7E",X"FC",X"EC",X"C1",X"10",X"2A",X"09",X"96",X"BA", + X"AA",X"01",X"97",X"BA",X"7E",X"FC",X"EC",X"96",X"BB",X"AA",X"01",X"97",X"BB",X"7E",X"FC",X"EC", + X"C1",X"F0",X"2A",X"17",X"A6",X"01",X"EE",X"02",X"3C",X"DE",X"D1",X"E7",X"8C",X"4C",X"A7",X"90", + X"32",X"A7",X"94",X"32",X"A7",X"98",X"DE",X"CD",X"86",X"01",X"39",X"5C",X"27",X"12",X"DE",X"D1", + X"5C",X"26",X"10",X"DC",X"CD",X"A7",X"9C",X"E7",X"A0",X"DE",X"CD",X"EE",X"01",X"86",X"01",X"39", + X"86",X"FF",X"39",X"A6",X"9C",X"E6",X"A0",X"DD",X"CD",X"DE",X"CD",X"08",X"08",X"08",X"86",X"01", + X"39",X"96",X"CE",X"BD",X"FB",X"DA",X"5C",X"96",X"CD",X"BD",X"FB",X"DB",X"5C",X"39",X"26",X"06", + X"BD",X"FB",X"93",X"7E",X"FB",X"A8",X"81",X"10",X"2B",X"03",X"7E",X"FE",X"5B",X"81",X"07",X"2A", + X"35",X"97",X"CB",X"96",X"D8",X"8A",X"01",X"16",X"C4",X"FE",X"D7",X"D8",X"C6",X"0F",X"BD",X"FB", + X"DB",X"86",X"05",X"7F",X"00",X"BD",X"D6",X"BD",X"27",X"FC",X"4A",X"26",X"F6",X"D6",X"CB",X"58", + X"58",X"CE",X"EA",X"00",X"3A",X"3C",X"EE",X"00",X"DF",X"C7",X"38",X"EE",X"02",X"DF",X"C3",X"96", + X"BE",X"84",X"02",X"97",X"BE",X"39",X"97",X"CC",X"96",X"D8",X"8A",X"02",X"16",X"C4",X"FD",X"D7", + X"D8",X"C6",X"0F",X"BD",X"FB",X"DB",X"86",X"05",X"7F",X"00",X"BD",X"D6",X"BD",X"27",X"FC",X"4A", + X"26",X"F6",X"D6",X"CC",X"58",X"58",X"CE",X"EA",X"00",X"3A",X"3C",X"EE",X"00",X"DF",X"C9",X"38", + X"EE",X"02",X"DF",X"C5",X"96",X"BE",X"84",X"01",X"97",X"BE",X"39",X"16",X"58",X"CE",X"EA",X"30", + X"3A",X"EE",X"00",X"81",X"20",X"2B",X"22",X"7E",X"FE",X"6E",X"81",X"15",X"2A",X"34",X"3C",X"36", + X"BD",X"FB",X"93",X"BD",X"FB",X"A8",X"32",X"38",X"97",X"A4",X"DF",X"84",X"7F",X"00",X"80",X"7F", + X"00",X"8C",X"C6",X"B8",X"DA",X"BA",X"D7",X"BA",X"39",X"81",X"13",X"2A",X"DD",X"81",X"1F",X"27", + X"DD",X"DF",X"88",X"97",X"A6",X"7F",X"00",X"82",X"7F",X"00",X"8E",X"86",X"78",X"9A",X"BB",X"97", + X"BB",X"39",X"81",X"18",X"2A",X"E7",X"DF",X"8A",X"97",X"A7",X"7F",X"00",X"83",X"7F",X"00",X"8F", + X"86",X"78",X"9A",X"BB",X"97",X"BB",X"39",X"81",X"15",X"2A",X"E7",X"DF",X"86",X"7F",X"00",X"8D", + X"7F",X"00",X"81",X"86",X"B8",X"9A",X"BA",X"97",X"BA",X"39",X"06",X"91",X"68",X"F6",X"06",X"91", + X"68",X"F6",X"06",X"91",X"68",X"F6",X"06",X"91",X"68",X"F6",X"06",X"91",X"68",X"F6",X"06",X"91", + X"68",X"F6",X"06",X"91",X"68",X"F6",X"06",X"91",X"68",X"F6",X"06",X"91",X"68",X"F6",X"06",X"91", + X"68",X"F6",X"06",X"91",X"68",X"F6",X"06",X"91",X"68",X"F6",X"06",X"91",X"68",X"00",X"00",X"00", + X"09",X"0A",X"0C",X"0D",X"0F",X"10",X"12",X"13",X"15",X"16",X"18",X"19",X"1B",X"1C",X"1E",X"1F", + X"23",X"24",X"26",X"27",X"29",X"2A",X"2C",X"2D",X"2F",X"30",X"32",X"33",X"35",X"36",X"38",X"39", + X"22",X"5A",X"38",X"30",X"22",X"3B",X"3B",X"20",X"20",X"64",X"65",X"74",X"61",X"20",X"69",X"73", + X"20",X"20",X"2D",X"2D",X"2D",X"2D",X"48",X"20",X"74",X"6F",X"20",X"2D",X"2D",X"2D",X"2D",X"48", + X"45",X"4E",X"44",X"48",X"45",X"58",X"3E",X"3E",X"20",X"50",X"61",X"72",X"61",X"6D",X"74",X"65", + X"72",X"20",X"65",X"72",X"72",X"6F",X"72",X"20",X"3C",X"3C",X"0D",X"00",X"44",X"55",X"4D",X"50", + X"20",X"4C",X"49",X"53",X"54",X"20",X"50",X"41",X"47",X"45",X"20",X"3D",X"20",X"F6",X"06",X"0D", + X"0D",X"00",X"06",X"91",X"68",X"F6",X"06",X"91",X"68",X"F6",X"06",X"91",X"68",X"F6",X"06",X"91", + X"68",X"F6",X"06",X"91",X"68",X"F6",X"06",X"91",X"68",X"F6",X"06",X"91",X"68",X"F6",X"06",X"91", + X"68",X"F6",X"06",X"91",X"68",X"F6",X"06",X"91",X"68",X"F6",X"06",X"91",X"68",X"F6",X"06",X"91", + X"68",X"F6",X"06",X"91",X"68",X"F6",X"06",X"91",X"68",X"F6",X"06",X"91",X"68",X"F6",X"06",X"91", + X"68",X"F6",X"06",X"91",X"68",X"F6",X"06",X"91",X"68",X"F6",X"06",X"91",X"68",X"F6",X"06",X"91", + X"68",X"F6",X"06",X"91",X"68",X"F6",X"06",X"91",X"68",X"F6",X"06",X"91",X"68",X"F6",X"06",X"91", + X"68",X"F6",X"06",X"91",X"68",X"F6",X"06",X"91",X"68",X"F6",X"06",X"91",X"68",X"F6",X"06",X"91", + X"68",X"F6",X"00",X"00",X"00",X"00",X"06",X"91",X"68",X"F6",X"06",X"91",X"68",X"F6",X"06",X"91", + X"FA",X"00",X"FA",X"00",X"FA",X"00",X"FA",X"00",X"FB",X"86",X"FA",X"00",X"FA",X"D4",X"FA",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/IremM62 Hardware/LodeRunner_MiST/rtl/roms/lotlot.zip b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/lotlot.zip new file mode 100644 index 00000000..3fe330a3 Binary files /dev/null and b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/lotlot.zip differ diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/lr-b-3n.hex b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/lr-b-3n.hex new file mode 100644 index 00000000..b7ef7de1 --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/lr-b-3n.hex @@ -0,0 +1,513 @@ +:1000000000000000000000000000000000000000F0 +:1000100000000000000000000000000000000000E0 +:1000200000000000000000000000000000000000D0 +:1000300000000000000000000000000000000000C0 +:1000400000000000000000000000000000000003AD +:10005000000000000000000000000000000000F0B0 +:100060000300070503000001010203020100000074 +:10007000FC3E1EB63E1C60F0F0E0E02000E0000018 +:100080000000000000000000000001030F0E0B0F35 +:1000900000000000000000000000FCFC003C683490 +:1000A0003E7F6F07020307070E0F060000000000E7 +:1000B0000000C0E050FCFE0F07060000000000003A +:1000C00000000000000000000000000307070677A2 +:1000D000000000000000000000003C3CE0FEFAFCD4 +:1000E000FBDF0F0F010F0F1E383C1800000000004F +:1000F000F0E0E0C020F0F83C1C38000000000000F8 +:10010000000000000000000000000000070F1F1C9E +:10011000000000000000000000000000C0E0F6F653 +:100120001F1FC8DCFF771B3E2F13000000000000DC +:10013000FEFC3C78F0F0E040F0F838183818000089 +:10014000000000000000000000001F7FF8F1DBF954 +:1001500000000000000000000000808000C040801F +:10016000770F7FF9EF7F1E1C38381C180000000045 +:1001700018F8F0F8D880000000000000000000002F +:10018000000000000000000000000000001F1F0031 +:1001900000000000000000000000000000C0E07847 +:1001A0001E0B1620700F07010F1F1C1E0F060000EC +:1001B0003868783CFEF6E070F8A00000000000000F +:1001C000000000000000000000000000000F0F0011 +:1001D00000000000000000000000000000E0F03C13 +:1001E0000F050B103837030E1F050000000000003C +:1001F0001CB43C187CFEF783F0F83878F0600000FF +:100200000000000000000000000000000000001FCF +:10021000000000000000000000000000000000C01E +:100220001F001E0B1600307F67040F1F3C180000D4 +:10023000E07838687830F8FCEE90F0E0F078000074 +:1002400000000000000000000000000000000000AE +:10025000000000000000000000000000000000009E +:100260000000030103010000000000000000000086 +:1002700000000090F0F8FC78300000000000000062 +:10028000000000000000000000000000000000006E +:10029000000000000000000000000000000000005E +:1002A0000000010301030604040000000000000038 +:1002B0000000A0F0F0E0C0400000000000000000DE +:1002C000000000000000000000000000000000002E +:1002D000000000000000000000000000000000001E +:1002E0000000040603070F070600000000000000DE +:1002F00000002070E0E0F0E0C0000000000000001E +:1003000000000000000000000000133F1E3878705D +:1003100000000000000000000000C080000000009D +:10032000381C000000000000000000000000000079 +:1003300000000000000000000000000000000000BD +:100340000000000000000000000000000C07030790 +:10035000000000000000000000000000E0C0C0E05D +:100360000703010000000000000000000000000082 +:10037000C084C00000000000000000000000000079 +:10038000000000000000000000000000000000006D +:10039000000000000000000000000000000000005D +:1003A0000000020203010301010000000000000040 +:1003B00000002060F0E0F0C08000000000000000BD +:1003C000000000000000000000000000000000002D +:1003D000000000000000000000000000000000001D +:1003E0000000020203010301000000000000000001 +:1003F00000002060F0E0F0E0C0000000000000001D +:1004000000000000000000000000000000000000EC +:1004100000000000000000000000000000000000DC +:1004200000000000000000020100000100000000C8 +:100430000000000000C0602020709000000000005C +:10044000000000000000000000000000070F1F1F58 +:10045000000000000000000000000002E2F0FCFECE +:100460005E0C47CF8F67000707033038300000006D +:100470007A30E0F0F0E000E0E4CC1800000000008A +:100480000000000000000000000000007FFF7F7FF0 +:10049000000000000000000000000000F0F8FCFC7C +:1004A0003F1F0001030311DC09C10C0E0600000010 +:1004B000FC980038F0E0F105F7E2F0003038180061 +:1004C0001E3F7F7E3C3063773F1F1F07030F1F1FB8 +:1004D0003C4600231E0CC6EEFCF8F8E0C0F0F8FC29 +:1004E0003F3F1F070D06020204000000000000004D +:1004F000FEFAFCF0F0604040200000000000000028 +:100500001E2300463C0C1B1F0F1F1F07030F1F1F3E +:100510003C7E7F3F1E06C3F7FEFCF8E0C0F0F8FC0F +:100520001F1D0F070502020204000000000000006A +:10053000FCFCFCF8F0C080804000000000000000DF +:10054000000000000000000804040C1F1F7FBFFF14 +:1005500000000000000000408080C060C0F0D8F8BB +:100560007F3F1F070F1F3F3F1F3F3C180C060F3FE9 +:10057000F0E0C0B0F0F0F8FEF1E1623C0000008075 +:10058000000000000000000000000000000000006B +:10059000000000000000000000000000000000005B +:1005A00001070F0F1F1F1F0E0C0000C1E363214046 +:1005B000C0F0F8F8FCFCFC7830000083870602816C +:1005C000000000000000000000000000000000002B +:1005D000000000000000000000008000000000009B +:1005E00001070F0F1F1F1F0E0C0000C1E363214006 +:1005F000C0F0F8F8FCFCFC7830000083870602812C +:1006000000000000000000000300020000000000E5 +:1006100000000000000000000080800000000000DA +:1006200001070F0F1F1F1F1301000030381C0408A3 +:10063000C0F0F8F8FCFCFCCC840000181830201046 +:1006400000000000000000000300020000000000A5 +:10065000000000000000000000808000000000009A +:1006600001070F0F1F1F1F0E0C0000C1E363214085 +:10067000C0F0F8F8FCFCFC783000008387060281AB +:10068000000000000000000000000000000000006A +:1006900000000000000000000000183C3C7C7E7E52 +:1006A000000000010103030307070707030301001C +:1006B0007EFCFCFCB8F8F0F0E0E0E0E0C0C08000B8 +:1006C0000000000000000000000000000003070719 +:1006D00000000000000000000000000000E0F0F05A +:1006E0000F1F1F1F0F03000000000000000000008C +:1006F000F8FCFCFCF82000000000000000000000F6 +:1007000000000000000000000000000000000000E9 +:1007100000000000000000000000000000000000D9 +:10072000061F3F3F3F3F0F0707000000000000008B +:1007300040F0F8F8F8F8F0E0C00000000000000019 +:1007400000000000000000000000000000000000A9 +:100750000000000000000000000000000000000099 +:1007600008102060000000000000000000000000F1 +:100770000000000600000000000000000000000073 +:100780000000000000000000000000000000006009 +:100790000000000000000000000000001008040637 +:1007A0000000000000000000000000000000000049 +:1007B0000100000000000000000000000000000038 +:1007C000000000000000000000030F1F1F0F0701C2 +:1007D00000000000000000000080E0F0F8F8FCFCE1 +:1007E0000000000000000000000000000000000009 +:1007F000FCFE767E7E7E7E7E7E7E7E7E3C3C18008B +:1008000000000000000000000000000000000003E5 +:1008100000000000000000000000000000000000D8 +:1008200007070F0F0F0F070607030303030100005D +:1008300080C0C0C0C0E0E0E0F0F0F0F0E0E0C00058 +:1008400000000000000000000000000000000000A8 +:100850000000000000000000000000000000000098 +:100860000000000000000000000000000000000088 +:100870000000000000000000000000000000000078 +:100880000000000000000000000000000000000068 +:100890000000000000000000000000000000000058 +:1008A0000000000000000000000000000000000048 +:1008B0000000000000000000000000000000000038 +:1008C0000000000000000000000000000000000028 +:1008D0000000000000000000000000000000000018 +:1008E0000000000000000000000000000000000008 +:1008F00000000000000000000000000000000000F8 +:1009000000000000000000000000000000000000E7 +:1009100000000000000000000000000000000000D7 +:1009200000000000000000000000000000000000C7 +:1009300000000000000000000000000000000000B7 +:1009400000000000000000000000000000000000A7 +:100950000000000000000000000000000000000097 +:100960000000000000000000000000000000000087 +:100970000000000000000000000000000000000077 +:100980000000FFFFFFFFFFFFFF000000000000006E +:100990000000FFFFFFFFFFFFFF000000000000005E +:1009A000000000000080C0E0F0783C1E0F0703014B +:1009B0000000000000000000000000000080C0E017 +:1009C0000000FFFFFFFFFFFFFF7F3F1F0F07030137 +:1009D00000FF7FBFDFEFF7FBFDFEFFFFFFFFFFFF25 +:1009E0000000000000000000000000000000000007 +:1009F000FF7F3F1F0F070301000000000000000001 +:100A000000FFFFFFFFFFFFFFFFFF7FBFDFEFF7FBF1 +:100A100000FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEF4 +:100A2000FDFEFFFFFFFFFFFFFF7F3F1F0F070301DB +:100A3000FEFE7EBEDEEEF6FAFCFCFCFCFCFCFCFCE2 +:100A400000000000000000000000000000000000A6 +:100A5000F0783C1E0F0703010000000000000000BA +:100A60000000000000000000000000000000000086 +:100A70000000000000000000000000000000000076 +:100A8000000000000080C0E0E0E0E0E0E0E0E0E046 +:100A90000000000000000000000000000000000056 +:100AA000E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E046 +:100AB0000000000000000000000000000000000036 +:100AC000000000000000FFFFFFFFFFFFFFFFFFFF30 +:100AD00000000000000000F0FFFFFFFFFDFFE3EF5C +:100AE000FFFFFFFFFEFEFFFFFFFFFFFCF000000027 +:100AF000DFDFBF7F7F79E7FFFFFF1F0703010100F3 +:100B00000000000000000000C0FFFFFFFFFFFEF834 +:100B100000000000000000007FFFFFFFF0800000E9 +:100B20000080C0F0FEFFFFFFFFFFF00000000000AC +:100B3000000000000080E3FFF9000000000000005A +:100B400000000000000018F8FCFDFFE000000000BD +:100B500000000000003E7FFFFCF0E00000071F3FA8 +:100B60000001010F3F7FFFFFBF07000000000000F2 +:100B7000FFFFFFFFFFFFFFFFFFFC0C000000030F64 +:100B8000000000000000C0FF1F030000FFFFFFFF88 +:100B900000000000000000F8FFFFCF00FFFFFFFF94 +:100BA000FFFFFFFFFFFEF8E0000103071F7FFFFFCD +:100BB000FFFFFFF8C00000017BFFFFFFFFFFFFFF0B +:100BC000000000000000000FFFFFFF00FFFFFFFF1D +:100BD000000000000000C0FFFFFFFF3F00E0E0E377 +:100BE000FFFF1F3F7F7FFFFFFFFFFFFFFFFFFFFFB5 +:100BF000FFDFCFCFE7F3F0E0CFFFFFFFFFFFFFFF07 +:100C0000000000000000FFFFFFFEFFFF001F7FFF4E +:100C100000000000001FFFFFFF01C0E000FFFFFF1A +:100C2000FFFFFFFFFF00033FFFFFFFFEF9E7FFFFAE +:100C3000FFFFFCE00000FEFFFFFFFF3EFCF3FFFFB5 +:100C4000000000033FFFFFFFFFFCF80000FEFFFF76 +:100C5000000000F0FFFFFFFFFFFF0000000080FF2B +:100C6000FF3F03030100000387C0C0000000000035 +:100C7000FFFFFFFFFFF0C080000000000000000049 +:100C8000000000FFF9FEFFFFF0000000000000F38D +:100C90000000FFFFFF0FF1000000000F3F7FFFFF8C +:100CA000FFFFFFF000000000000000000000000057 +:100CB000FFFC000000000103030F1F1F3F7F7F7F29 +:100CC0000001FFFFFFFFFF1F00007FFFFFFFFFFF8F +:100CD0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE15 +:100CE000E1030F1F7FFFFFFFFFFFFFFFFFFFFFFF7E +:100CF000FEFCF8F8F0F0F0F0F0F0FEFFFFFFFFFF71 +:100D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FF3 +:100D1000FFFFFFFFFFFFFFFDB93141E0F0F0F8F802 +:100D20005F1F0F0F07010000031F3FFFFFFFFFFFC3 +:100D3000FCFCFDF9F1830371FCFCFEFFFFFFFFFFEC +:100D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3 +:100D5000FFFFFFFFBFFFFFFFFDF1F8FCFEFFFEC03E +:100D6000FFFFFFFFFFFFFFFFFF3F0F8080E0F8FF67 +:100D700000FCFFFFFFFFFFFFFFFFFF3F7F0F030FA1 +:100D8000C0C0C0C0E0E0E1E7FFFFFFFFFFFF3F1D85 +:100D9000FF7F3F3F1F1FCFEFFFFFFFFFFFF1F3C7B5 +:100DA000000000C0C0E0F0FCFEFEFEFCFCFCF8C051 +:100DB0000F0F0F07070703030301000000000000E7 +:100DC00000000000000000000000000103070F1FEA +:100DD00000000000000000000F1F7FFFFFFFFFFF6B +:100DE0001F3F7FFFFFFFFFFFFFFFFFFF1F0FC7C377 +:100DF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03 +:100E000000FFFFFFFFFFFFFFFFFEFDFBF7EFDF30FF +:100E100000FEFDFBF7EFDFBF7FFFFFFFFFFFFF00DF +:100E2000FFFFFFFFFFFFFF000000000000000000C9 +:100E3000FFFFFFFFFFFFFF000000000000000000B9 +:100E4000E0FFFFFFFFFFFFFFFFFFFFFFFFFFFF00D0 +:100E5000000080E0F8FEFFFFFFFFFFFFFFFFFF0045 +:100E6000FFFFFFFFFFFFFF00000000000000000089 +:100E7000FFFFFFFFFFFFFF00000000000000000079 +:100E800001010101010181E1F9FDFBF7EFDFBF7F06 +:100E9000FCFCFCFCFCFCFCFCFCFCFCFCFCFCFC008E +:100EA000FEFCF8F0E0C08000000000000000000040 +:100EB0000000000000000000000000000000000032 +:100EC0000000000000000000000000000000000022 +:100ED00000000000000000000103070C18337777C2 +:100EE0000000000000000000000000000000000002 +:100EF000773B3F1F1F0F0F0F1F1F3C3C387878F0C8 +:100F000000000000000000000000000000000000E1 +:100F100000000000000000000000000000000307C7 +:100F200000000000000000000000000000000000C1 +:100F300004040E1F3F3F7F7F3F0F07070707071F70 +:100F400000000000000000000000000000000000A1 +:100F5000000000000000000000000001070E1C3926 +:100F60000000000000000000000000000000000081 +:100F7000333331180F070F1E3C3E0F0301010000F1 +:100F80000000000000000000000000000000000061 +:100F90000000000000000000000000000000030747 +:100FA0000000000000000000000000000000000041 +:100FB00007060E1C38716363676773323038183F59 +:100FC0000000000000000000000000000000000021 +:100FD00000000000000000000F3E7C78F8F1E3E61E +:100FE0000000000000000000000000000000000001 +:100FF000FCFC7E3F3F1F0F3F7FF0F0F0F8FC3CFC15 +:1010000038050F1F0F1D0F07030001010000010726 +:1010100007EEFCFCEEFCFFFFFFFFFF9FC160E1F766 +:10102000E0100000000080C0E0E0C08080C0E0F080 +:1010300000000000000000000000000000000000B0 +:1010400038053F1F0F1F0F07070D3C6643231E0087 +:1010500007EEFCFCEEFCFFFFFFFFFF6743231E00D3 +:10106000E0100000000080C0E0E0C0800000000050 +:101070000000000000000000000000000000000070 +:10108000700B183F1F3F1F0F0700000000000000FB +:101090000FDC78F8DCF8FFFFFFFF7F6F3F3F3F1E5C +:1010A000C020000000000080C0C080DEFFFF7E3C4A +:1010B0000000000000000000000000000000000030 +:1010C00000000000003C46868C7D190D07030001DE +:1010D000788C00463C180C7CFEFFFFFEFC78FEFF7F +:1010E0003F7F6F3F0F1B0C0404080000000000004E +:1010F000F8FCF4F8E0E0C080804000000000000050 +:101100000000000000003C7EFEFD7D07060001039C +:1011100078FCFE7E3C06027BFFFEFEFCFC78FEFFB8 +:101120003F3F3B1F0F0B05050508000000000000B6 +:10113000F8F8F8F8F0E080000080000000000000FF +:10114000000103000000000000000000000000009B +:1011500073FFFFDF1F0F03070F3F7F6330183CFE55 +:10116000CEFFFFFBF8F0C0F6FEFCFEFF7F3E000066 +:101170000080C0000000000000000000000000002F +:10118000601F7FFF7FFF7F3F1F0F1F190C061E7F11 +:101190001E71E0E060C0F8FCFEFEF8F0180C1E7F47 +:1011A000601F7FFF7FEF4703010103151C061E7FB1 +:1011B0001E71E0E060C0F8FCFEFEF8F0180C1E7F27 +:1011C000000000000000000000000000000000001F +:1011D000000000387D75302A00000000000000008B +:1011E000000000E0F070E0000000000000000000DF +:1011F00000000000000000000000000000000000EF +:1012000000000307070300000000000000000000CA +:1012100000008EDF570EA00000000000000000005C +:1012200000000000000000000000000000000000BE +:1012300000000000000000000000000000000000AE +:10124000000000010100000100010000000000009A +:101250000000E3F7D5C3A800800080400000000034 +:10126000000080C0C08000000000000000000000FE +:10127000000000000000000000000000000000006E +:10128000000000000000000201000000000000005B +:10129000000000000304387D7538020000000000E3 +:1012A000000000000000000000000000000000003E +:1012B000000E0F07060800000000000000000000FC +:1012C000000000000000000201000000000000001B +:1012D000200020000204387D753802000000000064 +:1012E00000000000000000000000000000000000FE +:1012F000000E0F07060800000000000000000000BC +:101300000071FBEA611400000040200000000000B2 +:1013100000C0E0E0C000000000000000000000008D +:101320000071FBCA611400000040200000000000B2 +:1013300000C0E060C00000000000000000000000ED +:101340000000000001010001010000000000000099 +:10135000000036FFFFFFFFFFF1E00000000000008B +:1013600000000080C0C080C0C080000000000000FD +:10137000000000000000000000000000000000006D +:10138000000000000000000000000000000000005D +:101390000000000103010307070200000000000035 +:1013A000000000FEFFFFFFFF1F0F0E000000000007 +:1013B00000000000008080800000000000000000AD +:1013C0000000000101000101000000000000000019 +:1013D0000036FFFFFFFFFFF1E0000000000000000B +:1013E000000080C0C080C0C080000000000000007D +:1013F00000000000000000000000000000000000ED +:101400000000061F3F3F1F3F3C1800000000000087 +:101410000000C0F0F8F8F0F8F870000000000000DC +:10142000061F3F3F1F1F1F3F3C0C00000000000035 +:10143000C0F0F8F8F0F0F0F8F83800000000000014 +:1014400000000000000000030F07070F1F1F0F031D +:1014500000000000000000E0F0FCFCFCFCFCE0C030 +:10146000000000000000000000000000000000007C +:10147000000000000000000000000000000000006C +:1014800000000000000000070F7F7F7F7F7F0F07B5 +:101490000000000000000080E0F0F0E0C0C0E0804C +:1014A000000000000000000000000000000000003C +:1014B000000000000000000000000000000000002C +:1014C000001F3F7F7F7F3E3C0C00000000000000BB +:1014D00000E0F0E0F0F878302000000000000000AC +:1014E00000071F3F3F7F7F7E3E3C1800000000004A +:1014F00000C0F0F8DCFCFEFE7E7E7E7E7E3C1800A6 +:1015000001010101010101010101010101010101CB +:10151000FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC0B +:1015200000000000000000000000000000000000BB +:101530000003377FF9F9FDF7717038381838707C7F +:10154000000000000000000000000000000000009B +:10155000000000000000000000000000000000008B +:10156000000000000000000000000000000000007B +:10157000000000000000000000000000000000006B +:101580000000000000000000000004070701000147 +:1015900000000000000000000060C0E0C080C0C08B +:1015A000000000000000000000000000010000003A +:1015B000000000000000000000000000C00000006B +:1015C0000000000000000000000006030F070706EF +:1015D0000000000000000000000040C080C060204B +:1015E00000000000000000000000000001000000FA +:1015F00000000000000000000000000000000000EB +:101600000000000000000000000507030F130103A5 +:1016100000000000101020008080C0E0C08080002A +:1016200000000000000000000000000000000000BA +:1016300000000000000000000000000000000000AA +:101640000000000000000004060F1F1F0F1F1E0CEB +:1016500000000000000000008080000080C040000A +:101660000000000000000000010000000000000079 +:1016700000000000000000008000000000000000EA +:10168000000000000000000000000106010004034B +:1016900000000000000000001830F0F8E0301000FA +:1016A000000000000000000000000D1100040C0606 +:1016B0000000000000000000001830F8F03020406A +:1016C000003F7F3F3F1F0F00000101000ACE04C012 +:1016D00000F8FCFEFEFECC009CF8F0F902F3E1708D +:1016E0000000000000000000000000000C0E0C00D4 +:1016F0000000000000000000020200000C0E0600C6 +:101700000000000000000000000000000103FFFFD7 +:10171000000000000101010307031D7EFFFFFFFF22 +:101720000000000000000000000000000000003F7A +:10173000000000000000000000000000000007FFA3 +:1017400000003F7F3F3F1F0F000101000A0EC40051 +:101750000000F8FCFEFEFECC9CF8F0F802E3F1601D +:101760000000000000000000000000000000000079 +:10177000000000000000000002020000C0E0600065 +:10178000000000000000071F3F7F7F7F3E3C1800E5 +:10179000000000000000F8FEFFFBFF1F0F0F07070F +:1017A0000000000000000000070707070303010016 +:1017B0000080C0C0C0E0E0E0E0E0E0E0C0C0800049 +:1017C0000000000000000000010307000703010003 +:1017D000000000000000000080C0E000E0C08000C9 +:1017E00000000103070F1F1F1F1F1F0F070301002A +:1017F000000080C0C0E0C0808080C0E0C0C0800029 +:101800001F1F001E0B1600001F3F700F1F1C08003B +:10181000C0E07838687830F8FCEC90F0E0F07800C0 +:101820000F0F03111B130103073F3A0F1F1C080082 +:10183000E0F0FCE47CFCC898FCEC90F0E0F0780070 +:101840000003071E3C3E1E1C0F07070A1F5F2E0EDB +:1018500000F8F8017BD66E0408F0E040C0C08000BC +:10186000000000000000000007030000000000006E +:1018700000000000000000008000000000000000E8 +:1018800000030F3F3E3B1F1E0C070F143F5FFE7807 +:1018900000F0F80C3C7C3838F0E0E0C0800000003C +:1018A000000000000000000007030000000000002E +:1018B00000000000000000008000000000000000A8 +:1018C00000000000030300030102000000010707FD +:1018D00000000000F8FC0FC76DCF0670FCFCA8F0FC +:1018E0000000000000000000030C000000000000E9 +:1018F0000000000000000000FCDC387078300000C0 +:101900001F1F001E0B1660F0DF070303020E00000E +:10191000C0E07838687830E0F0E0D8F8F0707838D7 +:1019200000000000000000000000000000000000B7 +:1019300000000000000000000000000000000000A7 +:101940000F0F001C160F1F3D330307070300000095 +:10195000C0F0F878CB7FFFFFCE87078E0000000035 +:101960000000000000C0C0000000000000000000F7 +:101970000000000000000000000000000000000067 +:101980000001030307070703030000607131608152 +:1019900070FCFEFEFFFFFF9E0C0000C1C1808102B3 +:1019A000000000000000000000000080C0C08000B7 +:1019B0000000000000000000000000000000000027 +:1019C00001070F0F1F1F1F1301000030381C0408F0 +:1019D000C0F0F8F8FCFCFCCC840000181830201093 +:1019E00001070F0F1F1F1F0E0C0000C1E3632140F2 +:1019F000C0F0F8F8FCFCFC78300000838706028118 +:101A00001C78F0F03913110303C6E2606000643CF7 +:101A1000381E0F0F9CC888C0C06347060600263CCE +:101A2000000001070F0F03010160706060004C7837 +:101A30000000C3810000993C183C3C662400000073 +:101A4000000080E0F0F0C08080060E060600321E26 +:101A50000000000000000000000000000000000086 +:101A60001C78F0F03913110303C7E3616301643C90 +:101A7000381E0F0F9CC888C0C0E3C786C680263CAE +:101A80001C78F0F03913110303C6E2606000643C77 +:101A9000381E0F0F9CCB8FC6C660663C000000004E +:101AA00000784C006061774F0F03010100000000D7 +:101AB0000000000000C3810000993C183C3C6624F3 +:101AC000001E32000686EEF2F0C0808000000000AA +:101AD0000000000000000000000000000000000006 +:101AE0003C64006060FCF8F0F03913110303060257 +:101AF0003C260006063F1F0F0F9CC888C0C06040F0 +:101B0000000000001C78F0F039D3F1636306663CF6 +:101B100000000000381E0F0F9CCB8FC6C660663CCD +:101B2000003C64003030381000000000000000006D +:101B3000000000001C78F0F03913110303060200C6 +:101B400000000000381E0F0F9CC888C0C060400015 +:101B5000003C26000C0C1C080000000000000000E7 +:101B600000000000000C1C3810004C780000000041 +:101B70001C78F0F039131103030602000000000086 +:101B8000381E0F0F9CC888C0C060400000000000D5 +:101B9000000000000030381C0800321E0000000069 +:101BA00000010307070707070607070707030100E8 +:101BB0000080C0E0E0E0E0E0E0E0E0E0E0C08000E5 +:101BC00000000000030F1F3B3F7F7E7E7E3C18001D +:101BD000000000E0F8FCFCF8F0000000000000004D +:101BE0000000000000030F1F3F7F7F7E3E3C180077 +:101BF0000000000000FCFFBFFFFF0F07070301000C +:101C00000000000000000080C0E0E0E0C0C08000F4 +:101C100000000000000000000000000000000000C4 +:101C200000000000000000000000000000000000B4 +:101C300000000000000000000000000000000000A4 +:101C400000007FFF7F7F3F3F280018301900010907 +:101C50000000F0F8FCFCFC9800F87CFCFA03F9F8B2 +:101C60000000000000000000003318000000000029 +:101C7000000000000002020000C00C1C0C0000006C +:101C800000007FFF7F7F3F1F000000000BCE05C0DC +:101C90000000F0F8FCFCFC9800C87CFCF800F8F9A7 +:101CA000000000000000000000013038300000009B +:101CB000000000000000000000CC18000000000040 +:101CC0000080800000000000000000003038180094 +:101CD0000000000000000000000000003070300034 +:101CE000A0A00F1FBFFF7F190C1F3F1F001F0F0772 +:101CF0005050FEFFFEFEFCF880C0C08000808000D7 +:101D0000008080000000000000000000181D04009A +:101D100000000000000000000000000040C0400083 +:101D2000A0A0071FBFFF7F190C1F3F1F001F070345 +:101D30005050FEFFFEFEFCF880C0C0800080800096 +:101D40000080800000000000000000000307020087 +:101D50000000000000000000000000000080000003 +:101D6000A0A00F1FBFFF7F190C1F3F1F001F1900EE +:101D70005050FEFFFEFEFCF880C0C0800080800056 +:101D8000008080000000000000000000101C08001F +:101D900000000000000000000000000060E0800083 +:101DA000A0A00F1FBFFF7F190C1F3F1F001F1F0E9A +:101DB0005050FEFFFEFEFCF880C0C0800080000096 +:101DC0003F7F3A351F0F000001010001001111088B +:101DD000F8FCFE7EFECC009CF8F0F805FFDAC09817 +:101DE0003F7F353A1F0F000001010001001111086B +:101DF000F8FC7EFEFECC009CF8F0F805FFC2D8800F +:101E000000000000000000000000000000000000D2 +:101E100000000000000000000000000000000000C2 +:101E200000000000000000000000000000000000B2 +:101E300000000000000000000000000000000000A2 +:101E4000FFFFF7FFFFFFFFFFEFDFFFFFFFFF99F14E +:101E5000FFFFFFFFFFFBFFFFFFBFEFFFFFBF180705 +:101E6000FFFFFFFFFFBFFFFFFFFDFFFFDFFD1801CB +:101E7000FFFDFFFFFFEFFFFFFFFFDFFFFFFF999871 +:101E8000FFFFFFFFFFFFFFFFFFFF3F1F1F0F0F07BA +:101E9000FFFFFFFFFFFFFFFFFEF8E0E0E0E0E0F004 +:101EA000FFFFFFFFFFFFFF3F0F07070303030101D2 +:101EB000FFFFFFFFFFFDF8F8F0C0808080C0C0C0CA +:101EC000FF9F0F0F07070200000000000000000046 +:101ED000FFFFFFF4E0C0C080000000000000000031 +:101EE000FF7F230000000000000000000000000051 +:101EF000FFFFFEE000000000000000000000000006 +:101F0000000000000000000000718A0A122242F95D +:101F10000000000000000000008C52525252528C0F +:101F200000000000000000000011325292FA12116D +:101F30000000000000000000008C52525252528CEF +:101F40000000000000000000007942720A0A4A31D5 +:101F50000000000000000000008C52525252528CCF +:101F6000000000000000000000314282F28A8A7105 +:101F70000000000000000000008C52525252528CAF +:101F8000000000000000000000718A8A728A8A71D5 +:101F90000000000000000000008C52525252528C8F +:101FA000000000000000000000314A4A4A4A4A315D +:101FB0000000000000000000008C52525252528C6F +:101FC0000000000000000000000000000000000011 +:101FD00000000000000000000002060202020207EA +:101FE00000000000000000000000000000000000F1 +:101FF0000000000000000000000E11010204081F94 +:00000001FF diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/lr-b-4c.hex b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/lr-b-4c.hex new file mode 100644 index 00000000..1c61bb52 --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/lr-b-4c.hex @@ -0,0 +1,513 @@ +:1000000000000000000000000000000000000000F0 +:1000100000000000000000000000000000000000E0 +:1000200000000000000000000000000000000000D0 +:1000300000000000000000000000000000000000C0 +:1000400000000000000000000000000000000000B0 +:100050000000000000000000000000000000007030 +:10006000000007070F070301010303030100010359 +:100070007C3E1EFEFEFCA010900020E0C0E0E0E010 +:100080000000000000000000000001030F0E0F0F31 +:10009000000000000000000000C08080003CFCFC6C +:1000A00007030177630307070E0F0703070000002C +:1000B000FCF8C0E0F0FCFE0F070E9C8E060000006E +:1000C0000000000000000000000001030707070710 +:1000D000000000000000000000C0E0C0808ECECF15 +:1000E0000307EFCF070F0F1E383C1E0E1C00000049 +:1000F0008E1CA0C0E0F0F83C1C387078380000007E +:10010000000000000000000000000000070F1F1F9B +:10011000000000000000000000000000CCFCF8F02F +:100120003F7F2F0F07071F3F2F131E3E00000000C9 +:10013000F0F0E0C0E0F0E0E0F0F83818387870381F +:10014000000000000000000000001C7CF8F1FFFF30 +:1001500000000000000000000000000000C0C0E03F +:100160007E3E7F7F3F1F1E1C38381C1E0E1C180051 +:10017000C0067FFFDE8C00000000000000000000D1 +:10018000000000000000000000000000000000006F +:1001900000000000000000000000000000C0E07847 +:1001A0001E1F1F1F0FE7C7070F1F1C1E0F07030788 +:1001B00038F8F8E0C080E7F3F8BC3C3800808000F5 +:1001C000000000000000000000000000000000002F +:1001D0000000000000000000000000000060703C13 +:1001E0000F0F0F0F0703736F1F3D3C1C0001010031 +:1001F0001CFCFCF8E0C0F0E0F7FB3878F0E0C0E071 +:1002000000000000000000000000000000000000EE +:10021000000000000000000000000000000000C01E +:1002200000001E1F1F1F0F0707E7CF1F3C183C7C55 +:10023000E07838F8F8F0C080E0F7F3E0F0783C7C44 +:100240000000000000000000000100050F071F0C67 +:100250000000000000000000C0C0D4FEFFFEFBF163 +:100260001C0E1C3E346070210307060303070600C2 +:10027000F8FFFE6A00000086CE8703068E8F03001B +:10028000000000000000000060E06B3F3F3F1F3FA8 +:10029000000000000000000003AFFFFEFCF6E2F0EB +:1002A0001F0F0200006071FBCB073E381C0C0000E2 +:1002B000FEFC5400000000808000000000000000F0 +:1002C00000000000000000000000051F3F7F3F7F8E +:1002D0000000000000000000000040FCFEFEFEECFC +:1002E0003F7FDBF960183038180C1E3E000000001C +:1002F000FCF8D0800000001038383C1C3870781CA6 +:1003000000050F3F7F3F79397C1F0C0061C7870FC5 +:100310000040F0F8F0F0E0F0F8FC3870FBDF8E0CF5 +:1003200046603838180C0E070F0C00000000000063 +:1003300000000000000000000000000000000000BD +:1003400000000000000A3F7F3F3F1E3E70F87C70B7 +:10035000000000000080C0F0F8F07870183C1F0327 +:10036000C0C46EEE5C180C0C07070E0C00000000F9 +:10037000367A3C1C1830787C000000000000000039 +:100380000000000000000000000A1F3F1F37230785 +:1003900000000000000000000080E8FCF8FECCCE69 +:1003A0003F3F7D6DC0E04C1EDEF870300000000065 +:1003B000DCEEDF9B070E0638783C1C38F0E070302E +:1003C0000000000000000000000A1F3F1F37230745 +:1003D00000000000000000000080E8FCF8FECCCE29 +:1003E0003F3F7D6DC0E0441E3F381C0E3E3800008C +:1003F000DCEEDF9B070E06183C3E0E1C383E0E005E +:10040000000000000000000000000000020F1F0FAD +:10041000000000000000000000000000A0F0FCFE52 +:100420000F070F1F3F1F0B01000B1F0C01000003E4 +:10043000FC9E9C3EF81080C0C08060C080C0E0E0A0 +:10044000000000000000000000000000070F1F1F58 +:10045000000000000000000000000000E0F0F8F8DC +:100460001F0F1F3F1F0703070F1F0C000000000096 +:10047000F8F8FCF8F0E0C0F8F8F000000000000028 +:100480000000000000000000000000007FFF60602E +:10049000000000000000000000000000F0F8FCFC7C +:1004A0003F1F0001070F07000307030000000000C3 +:1004B000FCF8F0F8FCFEFCF0C0E0C41E0C000000EC +:1004C0000000000000000307030301030103010013 +:1004D000000000000000C0E0F0F0F0E0C0F0F0F834 +:1004E0000000001834383C1C080000000000000028 +:1004F000F87020083C5C3C38100000000000000050 +:1005000000000000000003070000000000000000E1 +:10051000000000000000C0F06000000040F0383C27 +:10052000000000183D3C3C1C0800000000000000DA +:100530001C1C080000E060400000000000000000FB +:1005400000000000000000103878747820081C3E7D +:1005500000000000000000207078385830000000D3 +:100560003E1F1F070F1E3F3F1F0F0000000000002F +:100570000000800000202000C0800000000000007B +:10058000000000000000000000000000000000006B +:1005900000000000000000000000000000800000DB +:1005A00001000000111F1F0E0C657D380C040408AB +:1005B000C0808080C4FCFC7830B3FF746060201081 +:1005C000000000000000000000000000000000002B +:1005D000000000000000000000000080808000009B +:1005E00001000000111F1F0E0C657D380C0404086B +:1005F000C0808080C4FCFC7830B3FF746060201041 +:1006000000000000000000000000000000000000EA +:10061000000000000000000000000080808000005A +:10062000010204040E1F1F1321397F4F0361402173 +:10063000C020101038FCFCCC86B6FC600486820119 +:1006400000000000000000000000000000000000AA +:10065000000000000000000000000080808000001A +:1006600001000000111F1F0E0C657D380C040408EA +:10067000C0808080C4FCFC7830B3FF7460602010C0 +:10068000000000000000000000000000000000006A +:10069000000000000000000000FF7E3C3C0C707E6B +:1006A0000000000000000303070707000303070F13 +:1006B0007EFC1C00000000C0E0E0E000C0C0E0F0F4 +:1006C000000000000000000090900060F043070769 +:1006D0000000000000000000090900060FE4F0F02F +:1006E0000F1F1F1F0F030000010300000404000080 +:1006F000F8FCFCFCF820000080C080008080000036 +:1007000000000000000000000202000307030000D8 +:1007100000000000000000004040000080000000D9 +:10072000061F3F3F3F3F0F070760F040004848006B +:1007300040F0F8F8F8F8F0E0C0020F0600242400BA +:100740000000000000000000000000000000001C8D +:100750000000000000000000000000381C3C0C0EEF +:10076000302F1F1F67F0E0400000183E000000001F +:1007700006F7FBF9E70F0E0400000000387C7C3818 +:100780000000000000000054383C387060EFDF9F2C +:100790000000000000000000002A1C3C0CF6FAF8E3 +:1007A000E7F07020000000001C3E3E1C000000002E +:1007B000E60F07020000187C0000000000000000A7 +:1007C000000000000000000020313D3D3B3B332194 +:1007D00000000000000000000080E0F0F8F8FCF0ED +:1007E0000000000000000000000000000000000009 +:1007F000C000000000007E7E7E7E7E003C3C7EFFCE +:1008000000000000000000000000000000001F0FBA +:100810000000000000000000000000000000E0C038 +:100820000706010F0F0E000000030303000103077A +:100830008000C0C0C000000070F0F08060E0F0F800 +:1008400000000000000000000000000000000000A8 +:100850000000000000000000000000000000000098 +:100860000000000000000000000000000000000088 +:100870000000000000000000000000000000000078 +:100880000000000000000000000000000000000068 +:100890000000000000000000000000000000000058 +:1008A0000000000000000000000000000000000048 +:1008B0000000000000000000000000000000000038 +:1008C0000000000000000000000000000000000028 +:1008D0000000000000000000000000000000000018 +:1008E0000000000000000000000000000000000008 +:1008F00000000000000000000000000000000000F8 +:1009000000000000000000000000000000000000E7 +:1009100000000000000000000000000000000000D7 +:1009200000000000000000000000000000000000C7 +:1009300000000000000000000000000000000000B7 +:1009400000000000000000000000000000000000A7 +:100950000000000000000000000000000000000097 +:100960000000000000000000000000000000000087 +:100970000000000000000000000000000000000077 +:1009800000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF76 +:1009900000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66 +:1009A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57 +:1009B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47 +:1009C00000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF36 +:1009D000000080C0E0F0F8FCFEFFFFFFFFFFFFFF1C +:1009E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17 +:1009F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07 +:100A00000000000000000000000080C0E0F0F8FCE2 +:100A100000000000000000000000000000000000D6 +:100A2000FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7 +:100A3000000080C0E0F0F8FCFEFEFEFEFEFEFEFEC2 +:100A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6 +:100A5000FFFFFFFFFFFFFFFFFFFDFFFFFFFFFDFFAA +:100A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96 +:100A7000FFFDFFFFFFFFFDFFFFFDFFFFFFFFFDFF8E +:100A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF76 +:100A9000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66 +:100AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF56 +:100AB000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46 +:100AC000000000000000FFFFFFFFFFFFFFFFFFF03F +:100AD00000000000000000F0FFFFFFFFFDFFE30F3C +:100AE0000000000000000100000000000000000005 +:100AF0001F1F3F7F7F78E000000000000000000023 +:100B00000000000000000000C0FEF8F0C1C70F7F29 +:100B100000000000000000007E78077FFFFFFFFF5D +:100B20000F8FCFFFFF7F3F1F00000FFFFFFFFFFF73 +:100B3000FFFFFFFFFFFFFF0301F0F0E1C3C7CFCFCF +:100B400000000000000018E00001FFFFEFEFEFEFF2 +:100B500000000000003E7FFFFFFFE0FFFFFFFFFF00 +:100B6000F7FEFCF0C080F0FFFFFFFFFFFFFFFFFF7D +:100B7000FF7F1F00000000FFFFFFFFFFFFFFFCF0F3 +:100B8000000000000000C0FFFFFF3FFFFFFFFCFF71 +:100B900000000000000000F8FFFCF0F0DF3FFFFF66 +:100BA000FFFFFFFF1F1D7FFFFFFEFCF8E08000003E +:100BB000FFFFFFFCFCF0F0E0800000000000000000 +:100BC000000000000000000FC0000000FFFFFFFC5D +:100BD000000000000000C0FF0000000000800003D3 +:100BE00010E7080000000000000000000000000006 +:100BF0003FDF0F0F070300010000000000000000AE +:100C0000000000000000FFFE00000000001F7FFF4A +:100C100000000000001FFC000000000003FFFFFFB9 +:100C2000FFFFFFFFFFFFFCC00000000106180000EF +:100C3000FFFFFCE000000000000000C1030C00000A +:100C4000000000033CC00000000307FFFFFFFFFFA0 +:100C5000000000F0000000000000FFFFFFFFFFFFAA +:100C6000FF3F00000000000000070F1F7FFFFFFF95 +:100C7000FC800000000F3F7FFFFFFFFFFFFFFFFF33 +:100C8000000000FF010000000FFFFFFFFFFFFFFF5C +:100C90000000FFFFFF0F01FEFFFFFFFFFFFFFFFF51 +:100CA0000F0F1F3FFFFFFFFFFFFFFFFFFFFFFFFFD4 +:100CB000FFFFFFFFFFFFFEFCFCF0E0E0C080808054 +:100CC0000000F0E18FFFFF008080FFFFFFFFFFFECD +:100CD0006F3F7FFFFFFEE00000FFFFFFFFFE800190 +:100CE000FEFCF0E0800000000000000000000000BA +:100CF0000103070707070F0F0F0F01000000000097 +:100D0000FFFFFFFCE000000000FFFFFFFF7FFFFF91 +:100D1000F081070F0F1F1F3D393141E0F0F0F8F867 +:100D2000FFFFFFFFFFFFFFFFFCE0C0000103070024 +:100D3000FDFDFEFEFEFCF0801C3C7EFFFFFEC000C1 +:100D4000FFFFFFFFFFFFFDF9FFFFFF78000000003E +:100D5000DFEEECE0A0E0E0E0E0E0C000000000003A +:100D60000000000000000000000000808000000083 +:100D70000000000000000000000000000000000073 +:100D800007030100000000000000000000004060B8 +:100D90000080C0C0E0200000000000000001030748 +:100DA0007F7F3F3F3F1F0F03010101030303073F05 +:100DB0000F8FEFF7F7F7FBFBFBFFFFFFFFFFFFFFD7 +:100DC00000000000000000000000000103070F1FEA +:100DD00000000000000000000F1F7FFFFEFEFCFC73 +:100DE0001F3F7FFFFFF9FFFFE0C000006070888CAD +:100DF000F8F0E0C0C08080000000000000000000AB +:100E0000FF00000000000000000103070E1C38FF77 +:100E1000FF0103070E1C3870E0C08000000000FFD7 +:100E2000FFFFFFFFFFFFFFFF0000000000000000CA +:100E3000FFFFFFFFFFFFFFFF0000000000000000BA +:100E4000FFC080000000000000000000000000FF64 +:100E5000FFFF7F1F0701000000000000000000FFEF +:100E6000FFFFFFFFFFFFFFFF00000000000000008A +:100E7000FFFFFFFFFFFFFFFF00000000000000007A +:100E8000FFFBFFFFFFFF7B1F0703070F1F3F7FFFD6 +:100E9000FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE72 +:100EA000FFFEFCF8F0E0C080000000000000000041 +:100EB0000000000000000000000000000000000032 +:100EC0000000000000000000000000000000000022 +:100ED0000000000000000000000000000000000012 +:100EE0000000000000000000000000000000000002 +:100EF00000000000000000000000000000000000F2 +:100F000000000000000000000000000000000000E1 +:100F100000000000000000000000000000000000D1 +:100F200000000000000000000000000000000000C1 +:100F300000000000000000000000000000000000B1 +:100F400000000000000000000000000000000000A1 +:100F50000000000000000000000000000000000091 +:100F60000000000000000000000000000000000081 +:100F70000000000000000000000000000000000071 +:100F80000000000000000000000000000000000061 +:100F90000000000000000000000000000000000051 +:100FA0000000000000000000000000000000000041 +:100FB0000000000000000000000000000000000031 +:100FC0000000000000000000000000000000000021 +:100FD0000000000000000000000000000000000011 +:100FE0000000000000000000000000000000000001 +:100FF00000000000000000000000000000000000F1 +:101000000018302000000707030000000000000067 +:10101000000103030100048FFE3C3C1C00000000A3 +:1010200000E0F0C0800000000000408000000000F0 +:1010300000000000000000000000000000000000B0 +:101040000018002000020707030000000000000055 +:10105000000103030100048EF87203010000000088 +:1010600000E0F0C0800000000000008000000000F0 +:101070000000000000000000000000000000000070 +:101080000030674000040E0F070000000000000061 +:10109000000387070300081EFC7C3E0000000000E0 +:1010A00000C0E08000000000000000000000000020 +:1010B0000000000000000000000000000000000030 +:1010C0000000000000000000000000000000000020 +:1010D0000000000000000078FC7E3E1E3C387E3E92 +:1010E000010100003070707838100000000000002E +:1010F000F0F0E0401078B8787020000000000000A8 +:1011000000000000000000000000000000000000DF +:101110000000000000000078F808000000081E072A +:1011200000000000307A79783810000000000000DC +:10113000783838100000C0C08000000000000000B7 +:10114000000000000000000000000000000000009F +:101150000000000000000000000004030000000088 +:101160000000000000000000000870C00000000047 +:10117000000000000000000000000000000000006F +:10118000007080000010383C1F07030100000000C1 +:10119000000E1E1C1C302070E0C0C0C0000000000B +:1011A0000070800000000004070103151800000013 +:1011B000000E1E1C1C302070E0C0C0C000000000EB +:1011C000000000000000000101010100000000001B +:1011D00000000E3F7FFFFFD5BFC0BFDD0000070F3F +:1011E000000070FCFEFCF9F8FC1CF8F000009EBE4C +:1011F0000000000030F8FCDC0C1E0E1C000000009B +:1012000000000307070301030003070703010000B1 +:1012100000E7FFFFFFFF5FFF01FFDF8FDF8F3C7EF7 +:101220000000C0E0E0CCDEEEEEC7870E8E0C3C7E08 +:1012300000000000000000000000000000000000AE +:101240000000000101000102030001010100000093 +:101250000039FFFFFFFF57FF00FF778080C0070FB7 +:1012600000C0F0F8F0E3E7F371E0C00100019EBEBA +:10127000000000000000C0E0E0C0C0E0E0C00000EE +:101280000E1C1E0C1C38391D1E1E0C010100000016 +:101290000E000C060473FFFFFFFFFDFFC0FF7D780B +:1012A00000000000000000000000000F060007071B +:1012B000080E0F0F0E040E000E0C0000000080C080 +:1012C000010303070E1C191D1E0E0C010100000076 +:1012D000D080D81C0C73FFFFFFFFFDFFC0FF63072A +:1012E0000000000000000000000000000000787C0A +:1012F000080E0F0F0E040E000E0C08F06000000028 +:101300001C7FFFFF7F2B7F007F3B41F0E0700103DC +:10131000E0F8FCFCF2F6FB3BF7E7E3F76306E0E0FE +:101320001C7FFFFF7F2B7F007F3C5EFFE67000008D +:10133000E0F8FCFCF2F7FB3BF767030703061E3EF1 +:1013400000000000010100010100000C1E04006605 +:10135000000000FDFFFFBFFFF1E000183C0800CCDB +:1013600000000080C0C080C0C08000183C1800335E +:10137000000000000000000000000000000000006D +:10138000000000000000000000000100000C000050 +:10139000000000010301030707C2E3C701C01900F1 +:1013A000000000F8FD7FFFFF1F0F0E80000080008F +:1013B00000000000008080800000003078300033A2 +:1013C0000000000101000101000000060F04000CF4 +:1013D0000000FDFFFFBFFFF1E000000C1E0C00CC81 +:1013E000000080C0C080C0C080060F06000600C09C +:1013F000000000000000000000000000006000008D +:101400000000001F3F3F173F3C180060F34100CB36 +:10141000000000B0F8F8F0F8F8700082C7830033DD +:10142000001F3F3F1F171F3F3C0C0060F34100CBE4 +:1014300000B0F8F8F0F0F0F8F8380082C783003315 +:1014400000000000000000030F0787CF9F1F2F231D +:10145000121200060F0200E0F0FCFCFCFCFCE0FCB9 +:10146000000040C0400040400000000000000000BC +:10147000000000000000000000060F060024240009 +:1014800024240060F06000070F7F7F7F7F7F0F07BD +:101490000000000000000989E0F3F7E3C0C0E0802D +:1014A0000000000000000000003078300012120040 +:1014B000000001000000000000000000000000002B +:1014C00000072F7F7F7F3E3C0C00003078230066B2 +:1014D00000E0F0E0F0F87E3F2660F62000300000EB +:1014E00000041C3E3E7F7F0E303C7EFF000000006B +:1014F0000000000000000E3E7E7E7E7E003C7EFFEF +:10150000FFFBFFFFFFFFFBFFFFFBFFFFFFFFFBFFFB +:10151000FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEEB +:1015200000000000000000000000000000000000BB +:1015300000000000000000000000000000000000AB +:10154000000000000000000000000000000000009B +:10155000000000000000000000000000000000008B +:10156000000000000000000000000000000000007B +:10157000000000000000000000000000000000006B +:101580000A1F3F1F3723073F5FFFDB7830061FBE70 +:1015900080E8FCF8FECCCEDCE89C3E1603071A1C63 +:1015A000000000000000000000000080F870300023 +:1015B0000000000000000000000000003F73000079 +:1015C000000A1F3F1F1F3D797BFFF9BCF06008191F +:1015D00000A0F0FCF8FCF8FCF8F8BC2E030782CC65 +:1015E000000000000000808000000000DEF8703085 +:1015F000000000000000000000000000EE7F33004B +:101600006AFF7F3F7F3F7F3F1F0A0000008CDEFCA8 +:10161000A3F7FBF6EE6C1CBC7C7820000000008079 +:1016200000000000004040C0CE010F0E0703000084 +:101630000000000000000000E0C08000000000008A +:1016400003070F1F7F3F7F3BF9F0A00080000133AD +:101650000000A0F0F8F0F0F87C7C7C28000080C04E +:10166000004040C0C04000000E1C180C0E1E1800A8 +:10167000000000000000000070381830707818007A +:1016800002070F070D08010FDFFF76B1CEFFFBC089 +:10169000A0FAFFFEFFF3F3F7E6CE0E0703C7E6DE80 +:1016A00002070F070D0881CFF7FDD00EDFFB733166 +:1016B000A0FAFFFEFFF3F3F7FAE6CF0703C7CE9ECB +:1016C000003F7F30301F0F0000070F0700000101AF +:1016D00000F8FC7E7EFEFC78FCFEFFFE78C0E0C3D6 +:1016E00000000000000000000000000003000000F7 +:1016F00000000000000000000000000010000000DA +:1017000000000000000000000000000001030F3F87 +:10171000000000000101010307031C7EFFFFFFDF43 +:101720000000000000000000000000000000003F7A +:10173000000000000000000000000000000006FCA7 +:1017400000003F7F30301F0F00030703000001013E +:101750000000F8FC7E7EFEFCFCFEFFFE78E0C0E2AE +:101760000000000000000000000000000300000076 +:101770000000000000000000000000003000000039 +:10178000000000000000071F3F7F7F0F303C7EFFFE +:10179000000000000000C0C0808080000003070738 +:1017A0000000000000000000070707000303070F08 +:1017B00000000000C0E0E0E0E0E0E000C0C0E0F0D9 +:1017C000000000000000000F070300000003070FE7 +:1017D00000000000000000F0E0C0000000C0E0F0E9 +:1017E000000F0703000F1F0300031F0F0003070F65 +:1017F00000F0E0C0C000C0800080C000C0C0E0F0C9 +:101800000000001E1F1F1F4FC7C7030FDFFC7830EB +:10181000C0E07838F8F8F0C083E3F2F0ECFE7F0324 +:10182000070703111F1F1F4FE1C1030FDFFC7830B3 +:10183000E0F0FCFCFCFCF8F0F3E3F2F0ECFE7F03DC +:101840000063E76E0C070703010307CFDFDF2E0EEF +:101850000307030078F8F8F8F0E0E0C0C0C08000AB +:1018600000000000206060001F1F0E060000000046 +:1018700000000000000000008000000000000000E8 +:101880000063EF7F1E1F1F0F07070F1FBFDFFE78CC +:101890000687860030E0E0C080C0E0C08000000025 +:1018A000000000002060E0C01F1F0E0600000000C6 +:1018B00000000000000000008000000000000000A8 +:1018C000000000000000000303030301001038784B +:1018D00000000000181C0FC7FFFFFEB81C3C78F08A +:1018E00000000000000000005F8C0F1F00000000DF +:1018F0000000000000000000FCDC3870783C1C3860 +:101900000000001E1F1F1F0F07879C7C9E0E0F1FCD +:10191000C0E07838F8F8F0C080003878FC7E7F3B73 +:1019200000000000000000000000000000000000B7 +:1019300000000000000000000303000001000000A0 +:101940000101001C1F38010343E3270703010303C0 +:10195000C0F0F878FCFEFFFFCE87078EDEDF800048 +:1019600000000000000020704000000000000000A7 +:101970000000000000000000000000000000000067 +:10198000000000000407070303393E180C04040894 +:101990007020202071FFFF9E0C6C7E3C0C181008FC +:1019A000000000000000000000E0E0400000000037 +:1019B0000000000000000000000000000000000027 +:1019C000010204040E1F1F1321397F4F03614021C0 +:1019D000C020101038FCFCCC86B6FC600486820166 +:1019E00001000000111F1F0E0C657D380C04040857 +:1019F000C0808080C4FCFC7830B3FF74606020102D +:101A00000006030346ECEEEE66060200103818C22C +:101A10000060C0C06237777766604000081C1843DA +:101A2000000000000000041E3C1800001038308642 +:101A3000000000663C3C66C3E7E7666624000000E1 +:101A400000000000000020783C180000081C0C6119 +:101A50000000000000000000000000000000000086 +:101A60000006030347EFEFEF67060200103818C2C5 +:101A70000060C0C0E2F7F7F7E6604000081C1843BA +:101A80000006030346ECEEEE66060200103818C2AC +:101A90000060C0C062347070687C58430000000071 +:101AA0000086303810000030303810000000000090 +:101AB000000000000000663C3C66C3E7E766662461 +:101AC00000610C1C0800000C0C1C08000000000049 +:101AD0000000000000000000000000000000000006 +:101AE000C21838100000060303060C0E0E0606028C +:101AF00043181C08000060C0C06030707060604017 +:101B00000000000000060303462C0E0E163E1AC20B +:101B1000000000000060C0C062347070687C5843F0 +:101B200000C218380800060F07010000000000007E +:101B30000000000000060303860C0E0E06060200DD +:101B4000000000000060C0C0613070706060400044 +:101B50000043181C100060F0E0800000000000004E +:101B6000000000000703000020383086000000005D +:101B700000060303C6CC8E0E06060200000000001D +:101B80000060C0C0633371706060400000000000FE +:101B900000000000E0C00000041C0C610000000018 +:101BA0000F07030007070700000007070003070FE0 +:101BB000F0E0C000E0E0E0000000E0E000C0E0F0A5 +:101BC000000000000301010020787E7E003C7EFFC3 +:101BD000000002C6DEDEEEEEE602000000000000BD +:101BE0000000000000000C1E3E7F7F0E303C7EFF98 +:101BF0000000000000000307070F0F070003070F96 +:101C00000000000000000080C0E0E000C0C0E0F084 +:101C100000000000000000000000000000000000C4 +:101C200000000000000000000000000000000000B4 +:101C300000000000000000000000000000000000A4 +:101C400000007FFF60603F170003070301000707E4 +:101C50000000F0F8FCFCFCF8F0FEFFFEF8F0F8FCE9 +:101C60000000000000000000000F00000000000065 +:101C7000000000000000000000F83000000000003C +:101C800000007FFF60603F1F0003070301000103A6 +:101C90000000F0F8FCFCFCF8F0F8FCFCF8F0FEFEAC +:101CA0000000000000000000001F0C000000000009 +:101CB000000000000000000000F000000000000034 +:101CC0000000000000000000000000000C00000008 +:101CD000000000000000000000000000C000000044 +:101CE00000000F1F3F3F3F7FFF7F3F1F0F1F3F7FC2 +:101CF0000000FEFF0606FCF8F0E0C0800080C0C0D7 +:101D000000000000000000000000000007000000CC +:101D10000000000000000000000000008000000043 +:101D20000000071F3F3F3F7FFF7F3F1F0F1F1F3FE9 +:101D30000000FEFF0606FCF8F0E0C0800080808016 +:101D4000000000000000000000000000040000008F +:101D50000000000000000000000000008000000003 +:101D600000000F1F3F3F3F7FFF7F3F1F0F1F1F0FD1 +:101D70000000FEFF0606FCF8F0E0C0800080800056 +:101D80000000000000000000000000000E00000045 +:101D900000000000000000000000000090000000B3 +:101DA00000000F1F3F3F3F7FFF7F3F1F0F1F3F3F41 +:101DB0000000FEFF0606FCF8F0E0C0800080C0E0F6 +:101DC0003F7F30301F0F00000307070000000000B6 +:101DD000F8FC7E7EFEFC78FCFEFFFD78F86030604B +:101DE0003F7F30301F0F0000030707000000000096 +:101DF000F8FC7E7EFEFC78FCFEFFFD78F87020701B +:101E000000000000000000000000000000000000D2 +:101E100000000000000000000000000000000000C2 +:101E200000000000000000000000000000000000B2 +:101E300000000000000000000000000000000000A2 +:101E40000000080000000000100000040000003046 +:101E50000000000000000000000010000000000072 +:101E6000000000000000000000020004000000006C +:101E700000028000001000000000000000000000D0 +:101E80000000000000000000000000000000000052 +:101E90000000000000000000000000000000000042 +:101EA0000000000000000000000000000000000032 +:101EB0000000000000000000000000000000000022 +:101EC0000000000000000000000000000000000012 +:101ED0000000000000000000000000000000000002 +:101EE00000000000000000000000000000000000F2 +:101EF00000000000000000000000000000000000E2 +:101F0000000000000000000000718A0A122242F95D +:101F10000000000000000000008C52525252528C0F +:101F200000000000000000000011325292FA12116D +:101F30000000000000000000008C52525252528CEF +:101F40000000000000000000007942720A0A4A31D5 +:101F50000000000000000000008C52525252528CCF +:101F6000000000000000000000314282F28A8A7105 +:101F70000000000000000000008C52525252528CAF +:101F8000000000000000000000718A8A728A8A71D5 +:101F90000000000000000000008C52525252528C8F +:101FA000000000000000000000314A4A4A4A4A315D +:101FB0000000000000000000008C52525252528C6F +:101FC0000000000000000000000000000000000011 +:101FD00000000000000000000002060202020207EA +:101FE00000000000000000000000000000000000F1 +:101FF0000000000000000000000E11010204081F94 +:00000001FF diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/lr-b-4k.hex b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/lr-b-4k.hex new file mode 100644 index 00000000..02cf2779 --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/lr-b-4k.hex @@ -0,0 +1,513 @@ +:1000000000000000000000000000000000000000F0 +:1000100000000000000000000000000000000000E0 +:1000200000000000000000000000000000000000D0 +:1000300000000000000000000000000000000000C0 +:1000400000000000000000000000000000000003AD +:10005000000000000000000000000000000000F0B0 +:10006000030F00000C07030101020303010000005D +:10007000F8C6FE76FEFCA010900020E0C0E0000074 +:10008000000000000000000000000103080F0B0F3B +:10009000000000000000000000C0FCFCFFC280C89F +:1000A00007030177620307070E0F06000000000038 +:1000B000FCF8C0E050FCFE0F070600000000000046 +:1000C0000000000000000000000001010607060615 +:1000D000000000000000000000C0FCDC1F80C043E6 +:1000E0000107EFCF010F0F1E383C18000000000081 +:1000F0008E1CA0C020F0F83C1C380000000000005E +:1001000000000000000000000000000007000F1CBD +:10011000000000000000000000000000CC3CD8F00F +:100120003F78270F07071B3E2F1300000000000039 +:10013000F070E0C0E0F0E040F0F838183818000047 +:10014000000000000000000000001F3FC7FEDCFEB2 +:10015000000000000000000000008080E00000605F +:100160007E3E7F792F1F1E1C38381C1800000000AF +:10017000C0067CF8D88000000000000000000000ED +:10018000000000000000000000000000001F1F7FB2 +:1001900000000000000000000000000000C0E08837 +:1001A0002100091F0FE7C7010F1F1C1E0F060000CB +:1001B000F8E8F8E0C080E773F8A000000000000055 +:1001C000000000000000000000000000000F0F3FD2 +:1001D00000000000000000000000000000E0F0C48B +:1001E0001000040F0703736E1F05000000000000DD +:1001F000FC74FCF8E0C0F080F7FB3878F060000099 +:100200000000000000000000000000000000001FCF +:10021000000000000000000000000000000000C01E +:100220001F7F2100091F0F0707E4CF1F3C180000A4 +:100230006088F8E8F8F0C080E097F3E0F07800001C +:1002400000000000000000000001000000000003AA +:100250000000000000000000C0C08000003E6D7F74 +:1002600003011C3E346070210307060303070600E8 +:100270003600804000000086CE8703068E8F030084 +:10028000000000000000000060E0603038180C0E34 +:100290000000000000000000030703007CDAFE6C91 +:1002A0000F070200006071FBCF073E381C0C0000F6 +:1002B000000000000000008080000000000000003E +:1002C000000000000000000000000000000000002E +:1002D00000000000000000000000000C1E0E060CD4 +:1002E0000060D0F960183038180C1E3E0000000085 +:1002F0000C1850800000001038383C1C3870781CF6 +:10030000000000000000060603060C0061C7870F0E +:100310000000000070D8FC6C000040F0FBDF8E0C89 +:1003200046603838180C0E070F0C00000000000063 +:1003300000000000000000000000000000000000BD +:100340000000000000000000386CFDD903183C706C +:10035000000000000000000000008080183C1F0327 +:10036000C0C46EEE5C180C0C07070E0C00000000F9 +:10037000367E3C1C1830787C000000000000000035 +:100380000000000000000000000000001F2D3F1BC7 +:100390000000000000000000000000000080B030FD +:1003A0000020686DC0E04C1EDEF8703000000000D8 +:1003B000204EDF9B070E0638783C1C38F0E070308A +:1003C0000000000000000000000000001F2D3F1B87 +:1003D0000000000000000000000000000080B030BD +:1003E0000020686DC0E0441E3F381C0E3E380000FF +:1003F000204EDF9B070E06183C3E0E1C383E0E00BA +:100400000000000000000000000000000000000EDE +:1004100000000000000000000000000000000000DC +:100420001B3F360000010301000B1F0D01000003FC +:10043000006060C0800080C0C0C0E0C080C0E0E05C +:10044000000000000000000000000000070F1F1F58 +:10045000000000000000000000000002E7F7FEFEC0 +:100460005CE8E7CFEF670007070330383C1E3C30FD +:100470003E14E0F0F0E000E0E4CC7C7E0000000000 +:100480000000000000000000000000007F010000EC +:10049000000000000000000000000000F0F8FCD4A4 +:1004A0003F000001030319FC79E10C0E1F3F00001F +:1004B0005C880038F0E0F307FFFEF80030387CFC81 +:1004C0001E2763662C000307030301030103011CBD +:1004D0003C7E003F1E00C0E0F0F0F0E0C0F0F0F81D +:1004E0003E361C000000000000000000000000007C +:1004F000FA76240000000000000000000000000068 +:100500001E3F007E3C0003070000000000000007C3 +:100510003C7263331A00C0F06000000040F0383CC9 +:100520000F0F0700000000000000000000000000A6 +:100530009C9C08000000000000000000000000007B +:100540000000000000000000000000000048DCBEC9 +:100550000000000000000000000000000070F8F83B +:100560003E1F1F070F1E3F3F1F0F00000000003FF0 +:10057000700080000000001EFFFF7E3C0000008035 +:10058000000000000000000000000000000000006B +:1005900000000000000000000000000000808080DB +:1005A00001000000111F1F3F7F7B71F1E3632140B9 +:1005B000C0808080C4FCFCFEFFCFC7C787060281D5 +:1005C000000000000000000000000000000000002B +:1005D000000000000000000000008080808080801B +:1005E00001000000111F1F3F7F7B71F1E363214079 +:1005F000C0808080C4FCFCFEFFCFC7C78706028195 +:1006000000000000000000000300020000000000E5 +:10061000000000000000000000808080808080805A +:10062000010204040E1F1F1F1F1E1C3C381C04085F +:10063000C020101038FCFCFCFC78707818302010BA +:1006400000000000000000000300020000000000A5 +:10065000000000000000000000808080808080801A +:1006600001000000111F1F3F7F7B71F1E3632140F8 +:10067000C0808080C4FCFCFEFFCFC7C78706028114 +:10068000000000000000000000000000000000006A +:1006900000000000000000000000000000707E7EEE +:1006A0000000000101030303070707070000000023 +:1006B0007EFCFCFCF8F8F0F0E0E0E0E00000000078 +:1006C00000000000000000000060F00000337F7FA9 +:1006D000000000000000000000060F0000E3FFFF24 +:1006E0003F1F1F1F0F03010000000307030000004E +:1006F000FEFCFCFCF8E0E0E04000008000000000B0 +:1007000000000000000000000001030000000303DF +:1007100000000000000000000080C0800080C0C019 +:10072000071F3F3F3F3F3F7F7F1000307830000082 +:10073000C0F0F8F8F8F8FCFEDE0C00183C180000D9 +:100740000000000000000000000000000000001C8D +:100750000000000000000000000000381C3C0C0EEF +:10076000383F3F7F7FFFFF7F3F3F070000000000D3 +:1007700006F7FBFFFFFFFEFCFCFCFCF8400000005E +:100780000000000000000054383C387060EFDFFFCC +:100790000000000000000000002A1C3C1CFEFEFEC1 +:1007A000FFFF7F3F3F3F3F1F0200000000000000AF +:1007B000FFFFFFFEFCFCE000000000000000000066 +:1007C000000000000000000000030303070707010A +:1007D00000000000000000000080E0F0F8F8FCFCE1 +:1007E0000000000000000000000000000000000009 +:1007F000FCFE7E7E7E7E7E7E7E7E7E7E0000000013 +:1008000000000000000000000000000000000000E8 +:1008100000000000000000000000000000000000D8 +:1008200000010F0F0F0F070707030303030000006A +:1008300000C0C0C0C0E0E0E0F0F0F0F080000000D8 +:1008400000000000000000000000000000000000A8 +:100850000000000000000000000000000000000098 +:100860000000000000000000000000000000000088 +:100870000000000000000000000000000000000078 +:100880000000000000000000000000000000000068 +:100890000000000000000000000000000000000058 +:1008A0000000000000000000000000000000000048 +:1008B0000000000000000000000000000000000038 +:1008C0000000000000000000000000000000000028 +:1008D0000000000000000000000000000000000018 +:1008E0000000000000000000000000000000000008 +:1008F00000000000000000000000000000000000F8 +:1009000000000000000000000000000000000000E7 +:1009100000000000000000000000000000000000D7 +:1009200000000000000000000000000000000000C7 +:1009300000000000000000000000000000000000B7 +:1009400000000000000000000000000000000000A7 +:100950000000000000000000000000000000000097 +:100960000000000000000000000000000000000087 +:100970000000000000000000000000000000000077 +:10098000FF00000000000000FFFFFFFFFFFFFFFF70 +:10099000FF00000000000000FFFFFFFFFFFFFFFF60 +:1009A000FFFFFFFFFF7F3F1F8FC7E3F1F8FCFEFF54 +:1009B000FFFFFFFFFFFFFFFFFFFFFFFFFF7F3F1F67 +:1009C000FF0000000000000080C0E0F0F8FCFEFF27 +:1009D000FF00000000000000000000000000000018 +:1009E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17 +:1009F00080C0E0F0F8FCFEFFFFFFFFFFFFFFFFFFFE +:100A0000FF000000000000000000000000000000E7 +:100A1000FF010101010101010101010101010101C8 +:100A2000000000000000000080C0E0F0F8FCFEFFC5 +:100A300001010101010101010101010101010101A6 +:100A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6 +:100A50008FC7E3F1F8FCFEFFFFFFFFFFFFFFFFFF83 +:100A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96 +:100A7000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86 +:100A8000FFFFFFFFFF7F3F1F9F9F9F9F9F9F9F9F96 +:100A9000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66 +:100AA0009F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F56 +:100AB000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46 +:100AC0000000000000000000000000000000000F17 +:100AD00000000000000000000000000002011FFFF5 +:100AE000FFFFFFFFFFFF3F07030000030FFFFFFFB4 +:100AF000FFFEFCFCFEFEF8C08000E0F8FFFFFFFFF9 +:100B000000000000000000000001070F3EF8F18720 +:100B100000000000000000000080F8800F7FFFFF51 +:100B2000FF7F3F0F010000003F7FFFFFFFFFFFFF40 +:100B3000FFFFFFFFFF7F1CFCFEFFFFFFFFFFFFFF2C +:100B400000000000000000000001001FFFFFFFFF89 +:100B500000000000003E7FFFFFFF1FFFFFF8E0C026 +:100B6000FFFEFEFFFFFF0F0040F8FFFFFFFFFFFF4C +:100B700000000080FFFFFF000003F3FFFFFFFCF019 +:100B8000000000000000C080E0FCFFFF000000004B +:100B90000000000000000000000030FF0000000026 +:100BA000000000000001871FFFFFFFFFE080000042 +:100BB000000000073FFFFFFEFCF8FFFF00030000FE +:100BC000000000000000000F000000FF0000000314 +:100BD000000000000000C0F0000000C0FF7FFFFF29 +:100BE0000F18F0C0808000000000FFFFFFFE000033 +:100BF000FF3F3F3F1F0F0F1E3FFFF8F8F0000000C0 +:100C0000000000000000000000010000FFFFFFFFE7 +:100C1000000000000000000000FE3F1FFFFFFFFF7C +:100C2000FFFFFFFFFF00033FFFFF3F01061800002B +:100C3000FFFFFFFFFFFFFFFFFCF8C0C1030C000038 +:100C40000000000000000000000307FFFF0100009B +:100C500000000000000000000000FFFFFFFF7F0019 +:100C600000C0FCFCFEFFFFFC783F3FFFFFFFFFFFE3 +:100C700000000000000F3F7FFFFFFFFFFFFFFFFFAF +:100C800000000000060100000FFFFFFFFFFFFF0C48 +:100C90000000000000F00EFFFFFFFFF0C08000002A +:100CA0000000000FFFFFFFFFFFFFFFFFFFFFFFFF41 +:100CB0000003FFFFFFFFFEFCFCF0E0E0C08080804F +:100CC00000010F1E700000E0FFFF80000000000028 +:100CD00010C08000000000000000000000000001C3 +:100CE0001EFCF0E080000001070F1F1F3F7FFFFF89 +:100CF000010307071F3F7FFFFFFFFFFFFFFFFFFF0E +:100D000000000000000000000001070F3F7FFFFF10 +:100D10000001070F0F1F1F3F7FFFFFFFFFFFFFFFB8 +:100D2000FFFFFFFFFFFFFFFFFFFFFFFFFEFCF8FFDE +:100D3000FEFEFFFFFFFFFFFFE3C3810000013FFF57 +:100D4000FFFFFFFFFFFFFFFFFFFFFF780000000036 +:100D5000DFEEECE0E0E0E0E0E2EEC7030100013F9F +:100D6000001FFFFFFFFFFFFFFFFFFF7F7FFFFFFF72 +:100D7000FFE3C0F8FCFFFFFFFFFFFFFFFFFFFCF0FA +:100D80003F3F3F3F1F1F1F1F1F1F3F3F7F7FFFFF33 +:100D90000080C0C0E0E0F0F0FCFEFEFEFEFFFFFFC2 +:100DA000FFFFFF3F3F1F0FE3FDF9F9FBF383073F11 +:100DB000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43 +:100DC00000000000000000000000000103070F1FEA +:100DD00000000000000000000F1F7FFFFEFEFCFC73 +:100DE0001F3F7FFFFFF9FFFFE0C00000A090B8BCED +:100DF000F8F0E0C0C08080000000000000000000AB +:100E0000FFFFFFFFFFFFFFFFFFFEFCF8F1E3C7005E +:100E1000FFFEFCF8F1E3C78F1F3F7FFFFFFFFF00DE +:100E200000000000000000000000000000000000C2 +:100E300000000000000000000000000000000000B2 +:100E40009F3F7FFFFFFFFFFFFFFFFFFFFFFFFF0051 +:100E5000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00A1 +:100E60000000000000000000000000000000000082 +:100E70000000000000000000000000000000000072 +:100E8000FFFFFFFFFFFFFFFFFFFCF8F0E0C0800067 +:100E90000101010101010101010101010101010142 +:100EA0000000000000000000000000000000000042 +:100EB0000000000000000000000000000000000032 +:100EC0000000000000000000000000000000000022 +:100ED0000000000000000000000000000000000012 +:100EE0000000000000000000000000000000000002 +:100EF00000000000000000000000000000000000F2 +:100F000000000000000000000000000000000000E1 +:100F100000000000000000000000000000000000D1 +:100F200000000000000000000000000000000000C1 +:100F300000000000000000000000000000000000B1 +:100F400000000000000000000000000000000000A1 +:100F50000000000000000000000000000000000091 +:100F60000000000000000000000000000000000081 +:100F70000000000000000000000000000000000071 +:100F80000000000000000000000000000000000061 +:100F90000000000000000000000000000000000051 +:100FA0000000000000000000000000000000000041 +:100FB0000000000000000000000000000000000031 +:100FC0000000000000000000000000000000000021 +:100FD0000000000000000000000000000000000011 +:100FE0000000000000000000000000000000000001 +:100FF00000000000000000000000000000000000F1 +:1010000000000C181810070703000000000000077C +:101010000000387C7C38048FFE3C3C1C000000F74C +:10102000000000000000000000004080000000F010 +:1010300000000000000000000000000000000000B0 +:1010400000000C181812070703003C7E7F3F1E00AB +:101050000000387C7C38048EF8723F7F7F3F1E0092 +:101060000000000000000000000000800000000000 +:101070000000000000000000000000000000000070 +:101080000000183030240E0F0700000000000000A0 +:10109000000070F8F870081EFC7C3E0E0331331E11 +:1010A00000000000000000000000001E87E3663C16 +:1010B0000000000000000000000000000000000030 +:1010C00000000000003C7EFEFC78000000000000F4 +:1010D00078FC007E3C000078FC7E3E1E3C387E3E64 +:1010E000397D7C3800000000000000000000000096 +:1010F000F0F4EC48000000000000000000000000D8 +:101100000000000000003C66C6E470000000000023 +:1011100078E4C66238000078F808000000081E076E +:101120000E1F1F0E00000000000000000000000065 +:1011300078383810000000000000000000000000B7 +:10114000000000000000000000000000000000009F +:10115000000000000000000000000403000000FE8A +:101160000000000000000000000066C3673E0000B1 +:10117000000000000000000000000000000000006F +:10118000000061C3C391383C1F0703010000007FCA +:101190000000C0E0E0C02070E0C0C0C00000007FE0 +:1011A000000061C3C391383C1F1F3F3D1800007F02 +:1011B0000000C0E0E0C02070E0C0C0C00000007FC0 +:1011C000000000000000000101010100000000001B +:1011D00000000E3F7FF7FFF5BFDFBFDF0F0F0000FE +:1011E000000070FCFE7FFFFFFFFFFFFFFF3C0000E1 +:1011F0000000000030F8FCDC8C1E8E9C000000001B +:1012000000000307070301030103000000000000C2 +:1012100000E7FFFF77FF5FFFFFFFF170380C3C7EB8 +:101220000000C0E0F8FCFEFEFEFFFFFE4E0C3C7E20 +:1012300000000000000000000000000000000000AE +:101240000000000101000103030101010100000091 +:101250000039FFFFDDFFD7FFFFFFFFDF9FCF00005B +:1012600000C0F0F8FEFFFFFFF9F8FCFDF83D0000BC +:10127000000000000000C0E0E0C0C0E0E0C00000EE +:101280000E1C1E0C1C38391F1F1F0F0F070F0F07D6 +:101290000E000C060777FFFFF7FFFDFFFFFFC58677 +:1012A000000000000000000000000010010300002A +:1012B000080E0F070E040E0C0E0C00E0C08000009C +:1012C000010303070E1C191F1F0F0F0F07070F0F36 +:1012D000F080F81C0E77FFFFF7FFFDFFFFFFFCF823 +:1012E00000000000000000000000007D78F0000019 +:1012F000080E0F070E040E0C0E0400000000000084 +:101300001C7FFFEE7F2B7F3F7F7A66F7E371000043 +:10131000E0F8FCFCFEFEFFFFFF3F1F0F83C600004E +:101320001C7FFFCE7F2B7F3F7F6361F0E07000006A +:10133000E0F8FC7CFEFFFFFFFFFFFFBF1F0E000079 +:1013400000000000010100010307070300183C181A +:10135000000000FDFF3F003FFFFF9F060030783098 +:1013600000000080C0C000C0E0F0706000041E0CEF +:10137000000000000000000000000000000000006D +:101380000000000000000000000000030703000050 +:1013900000000001030002073F3F1C00860F06000B +:1013A000000000F83D0F61FCFFFFFF63010000003B +:1013B00000000000008080800080C0C0800C1E0CF7 +:1013C00000000001010001010307070000030703FB +:1013D0000000FDFF3F003FFFFFDF9E00000387038B +:1013E000000080C0C000C0F0F87830010301800028 +:1013F000000000000000000000000080C08000002D +:101400000000001F3F2700277FFFF783003079305F +:10141000000000B0F8F800F8FCFC9E0C004CEECC8C +:10142000001F3F27000000277FFFF783003079303F +:1014300000B0F8F8000000F8FCFE9E0C004CEECC6A +:1014400000000000000000030FFF7F3F5FFFCF039D +:10145000000C1E08000C1EFEFCFCFCFCFCFCF8C092 +:10146000000000000040000000000000000000003C +:1014700000000000000000000F0000183C180000F1 +:1014800000183C180010787F3F7F7F7F7F7F3F7F71 +:101490000000000000000086EFF4F0FCFEFCE0809D +:1014A0000000000000000000F040000C1E0C0000D6 +:1014B000000000000000000000000000000000002C +:1014C00000072F7C614F3F3F1F3D3C0801183C182F +:1014D00000E0F000F6FFF8F0F89C08C0E0C0000063 +:1014E00000071F3F3F7F7F7E0E00000000000000CE +:1014F00000C0F0F8FCFCFEFE7E7E7E7E7E000000DA +:10150000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB +:1015100001010101010101010101010101010101BB +:1015200000000000000000000000000000000000BB +:1015300000000000000000000000000000000000AB +:10154000000000000000000000000000000000009B +:101550000000000000000000000F080E0101090655 +:10156000000000000000000000000000000000007B +:101570000000000000000000000E11110E11110EFD +:101580000000001F2D3F1B0040EADB7830061FBE25 +:101590000000000080B03020409C3E1603071A1C5B +:1015A000000000000000000000000080F870300023 +:1015B0000000000000000000000000003F73000079 +:1015C000000000001078FAB60683D9BCF060081954 +:1015D00000000000000000000028BC2E030782CCA1 +:1015E000000000000000808000000000DEF8703085 +:1015F000000000000000000000000000EE7F33004B +:1016000060E0000000000000090A0000008CDEFC21 +:10161000030703163EBEFAF8787020000000008031 +:1016200000000000004040C0CE010F0E0703000084 +:101630000000000000000000E0C08000000000008A +:10164000030703010001030381C0A00080000133F0 +:1016500000008080C0D0BCBE1A000000000080C026 +:10166000004040C0C04000000E1C180C0E1E1800A8 +:10167000000000000000000070381830707818007A +:10168000000000070B0F0600D8FA76B7CFFFFFC2A5 +:10169000000000C060ECCC08048E0E0703C7E6DE35 +:1016A000000000070B0F86C0F0F8DC1EDFFB7B3567 +:1016B000000000C060ECCC0810A6CF0703C7CE9E88 +:1016C000003F0000001F0000000101080EFE7CF03A +:1016D00000F8FC7E6AAE44009CF8F0F903FFFF7C42 +:1016E0000000000000000000000000000C0E1F3F82 +:1016F0000000000000000000020200000C0E1F3F6E +:1017000000000000000000000000000001030F3F87 +:10171000000000000101010307071E7FFFFFFFDF3C +:1017200000000000000000000000000000000000B9 +:1017300000000000000000000000000000000000A9 +:1017400000003F0000001F00000101040E7EFC703D +:101750000000F8FC7E6AAE449CF8F0F903FFFF7CC1 +:101760000000000000000000000000000000010375 +:10177000000000000000000002020000C0E0F0F0E5 +:10178000000000000000071F3F7F7F7F0E00000069 +:10179000000000000000F8FEFFFFFF1F0F0F07070B +:1017A000000000000000000007070707000000001D +:1017B0000080C0C0C0E0E0E0E0E0E0E00000000049 +:1017C00000000000000000000000070F07000000FC +:1017D00000000000000000000000E0F0E000000059 +:1017E00000000000070F1F1F1F1F1F0F0700000032 +:1017F0000000000000E0C0808080C0E00000000029 +:101800001F1F7F2100091F4FC7C7000F1F1C0800A3 +:10181000C0E088F8E8F8F0C083E392F0E0F07800E8 +:101820000F0F3C0F070F1F4FE1C1020F1F1C0800D5 +:10183000E0807CE47CFCF8F0F3E392F0E0F07800E8 +:101840000063E7610F0707030103070A1F5F2E0EFE +:1018500003FFFBFE840090F8F0E0E040C0C0800091 +:10186000000000000000000007030000000000006E +:1018700000000000000000008000000000000000E8 +:101880000063E7581F1B1F0F07070F143F5FFE7809 +:1018900006F7F6F0C080C0C080C0E0C08000000045 +:1018A000000000000000000007030000000000002E +:1018B00000000000000000008000000000000000A8 +:1018C0000000000003030F040001030100000838BA +:1018D00000000000F8FCF13F1D3FFEB81C3C28F062 +:1018E00000000000000000000F0C000000000000DD +:1018F0000000000000000000FCDC387078300000C0 +:101900001F1F7F2100091F0F0787841C0E0E000078 +:10191000C0E088F8E8F8F0C080001878F0707838F7 +:1019200000000000000000000000000000000000B7 +:1019300000000000000000000303000000000000A1 +:101940000F0F3F030130010343E3270703000000AB +:10195000C0E018F8C87EFFFFCE87078E00000000A9 +:1019600000000000000020704000000000000000A7 +:101970000000000000000000000000000000000067 +:10198000000000000407070F1F3E387071316081AE +:101990007020202071FFFFFFFFF370F1C1808102F2 +:1019A0000000000000000080C0E0E0C0C0C0800077 +:1019B0000000000000000000000000000000000027 +:1019C000010204040E1F1F1F1F1E1C3C381C0408AC +:1019D000C020101038FCFCFCFC7870781830201007 +:1019E00001000000111F1F3F7F7B71F1E363214065 +:1019F000C0808080C4FCFCFEFFCFC7C78706028181 +:101A00001C7EFFFF3F1F1F0F0706020000000000A3 +:101A1000387EFFFFFCF8F8F0E060400000000000B6 +:101A2000000001070F0F030101000000000000008B +:101A30000000C3E7FFFFFFFFFFFF7E6624000000FA +:101A4000000080E0F0F0C080800000000000000096 +:101A50000000000000000000000000000000000086 +:101A60001C7EFFFF3E1C1E0E060703010301000043 +:101A7000387EFFFF7C38787060E0C080C080000056 +:101A80001C7EFFFF3F1F1F0F070602000000000023 +:101A9000387EFFFFFCF8F8F0E06040000000000036 +:101AA000000000000001070F0F030101000000000B +:101AB0000000000000C3E7FFFFFFFFFFFF7E66247A +:101AC000000000000080E0F0F0C080800000000016 +:101AD0000000000000000000000000000000000006 +:101AE00000000000001C7EFFFF3F1F1F0F070602C3 +:101AF0000000000000387EFFFFFCF8F8F0E06040D6 +:101B0000000000001C7EFFFF3F1F1F0F07060200A2 +:101B100000000000387EFFFFFCF8F8F0E0604000B5 +:101B200000000000000000000000000000000000B5 +:101B3000000000001C7EFFFF3F1F1F0F0706020072 +:101B400000000000387EFFFFFCF8F8F0E060400085 +:101B50000000000000000000000000000000000085 +:101B60000000000000000000000000000000000075 +:101B70001C7EFFFF3F1F1F0F070602000000000032 +:101B8000387EFFFFFCF8F8F0E06040000000000045 +:101B90000000000000000000000000000000000045 +:101BA00000000007070707070707070707000000EF +:101BB000000000E0E0E0E0E0E0E0E0E0E000000065 +:101BC00000000000030F1F3F3F7F7E7E7E0000006D +:101BD000000000E0E0E0F0F0F00000000000000095 +:101BE0000000000000030F1F3F7F7F7E0E000000FB +:101BF0000000000000FCFFFFFFFF0F0707000000D0 +:101C00000000000000000080C0E0E0E000000000F4 +:101C100000000000000000000000000000000000C4 +:101C2000000000000000000000314A4A4A4A4A31E0 +:101C30000000000000000000008C52525252528CF2 +:101C400000007F0100003F283838383C19000109A6 +:101C50000000F0F8FCD45C8800F87CFDFF0FFFF872 +:101C6000000000000000000000333E7E0000000085 +:101C7000000000000002020000C00C1C3C783C0C7C +:101C800000007F0100003F00000000040FFE7DF017 +:101C90000000F0F8FCD45C8800C87CFCF800F8F97F +:101CA0000000000000000000000130383C1E3C3005 +:101CB000000000000000000000CC7C7E000000005E +:101CC00000808000000000000000000030387CFC34 +:101CD0000000000000000000000000003070F8FC70 +:101CE000A0E0EFFFFFEBFA910C1F3F1F001F0F0753 +:101CF0005070FE800000FC0080C0C080008080002A +:101D0000008080000000000000000000181D1F3F40 +:101D100000000000000000000000000040C0E0F0F3 +:101D2000A0E0F7FFFFEBFA910C1F3F1F001F070316 +:101D30005070FE800000FC0080C0C08000808000E9 +:101D40000080800000000000000000000307070F73 +:101D5000000000000000000000000000008080C0C3 +:101D6000A0E0EFFFFFEBFA910C1F3F1F001F1900CF +:101D70005070FE800000FC0080C0C08000808000A9 +:101D8000008080000000000000000000101C1F3FC9 +:101D900000000000000000000000000060E0E0F033 +:101DA000A0E0EFFFFFEBFA910C1F3F1F001F1F0E7B +:101DB0005070FE800000FC0080C0C08000800000E9 +:101DC0003F00050A1F000000010100EFEFFFFF7F49 +:101DD000F8FC7EEAAE44009CF8F0FA07FFDECE9CE9 +:101DE0003F000A051F000000010100EFEFFFFF7F29 +:101DF000F8FCFE6AAE44009CF8F0FA07FFCEDE8CD9 +:101E000000000000000000000000000000000000D2 +:101E10000000000000000000001F02040201110E7B +:101E200000000000000000000000000000000000B2 +:101E3000000000000000000000020602020202078B +:101E4000000000000000000000200004100060FD01 +:101E50000000000000040000004000000440E7FF14 +:101E60000000000400400000001000042002E71FF2 +:101E700000008000000008000000200400006699B7 +:101E80000000000000000000000000000000000052 +:101E90000000000000000000000000000000000042 +:101EA0000000000000000000000000000000000032 +:101EB0000000000000000000000000000000000022 +:101EC0000000000000000000000000000000000012 +:101ED0000000000000000000000000000000000002 +:101EE00000000000000000000000000000000000F2 +:101EF00000000000000000000000000000000000E2 +:101F000000000000000000000000000000000000D1 +:101F100000000000000000000000000000000000C1 +:101F200000000000000000000000000000000000B1 +:101F300000000000000000000000000000000000A1 +:101F40000000000000000000000000000000000091 +:101F50000000000000000000000000000000000081 +:101F60000000000000000000000000000000000071 +:101F70000000000000000000000000000000000061 +:101F80000000000000000000000000000000000051 +:101F90000000000000000000000000000000000041 +:101FA0000000000000000000000000000000000031 +:101FB0000000000000000000000000000000000021 +:101FC0000000000000000000000000000000000011 +:101FD0000000000000000000000000000000000001 +:101FE00000000000000000000000000000000000F1 +:101FF00000000000000000000000000000000000E1 +:00000001FF diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/lr-e-2d.hex b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/lr-e-2d.hex new file mode 100644 index 00000000..4814deca --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/lr-e-2d.hex @@ -0,0 +1,513 @@ +:100000000000000000000000FF7F3F1F0F070301FA +:100010000080C0E0F0F8FCFEFFFFFFFFFFFFFFFFE6 +:10002000FFFFFFFFFFFFFFFF0000000000000000D8 +:1000300000000000000000000000000000000000C0 +:10004000010101FF101010FF010101FF101010FF4E +:10005000010101FF101010FF010101FF101010FF3E +:100060000000000000000000000000000000000090 +:100070000000000000000000000000000000000080 +:10008000C0FFFFC0C0FFFFC0FFFFFFDFCFFFFFC10A +:10009000C0FFFFE0F0FFFFFEFFFFFFFFFFFFFFFFDE +:1000A00003FFFF0303FFFF03FFFFFFFFFFFFFFFF50 +:1000B0000000000000000000000000000000000040 +:1000C00000FFFF0000000000FFFFFF1F0F070301FC +:1000D00000FFFFE0F0F8FCFEFFFFFFFFFFFFFFFF68 +:1000E000000000000001003F00000000008000FC54 +:1000F000103F243F3F223F1F08FC24FCFC44FCF837 +:10010000000000000000000010101010000010009F +:10011000282828000000000028287C287C282800A7 +:10012000103C50381478100060640810204C0C000B +:1001300030485020544834003010200000000000A7 +:1001400008102020201008002010080808102000A7 +:1001500000105438541000000010107C10100000E3 +:1001600000000000301020000000007C00000000B3 +:1001700000000000003030000004081020400000A3 +:10018000384CC6C6C6643800307030303030FC00A1 +:100190007CC60E3C78E0FE007E0C183C06C67C0057 +:1001A0001C3C6CCCFE0C0C00F8C0F80C0CCC78009D +:1001B0003C60C0FCC6C67C00FEC60C183030300067 +:1001C00078C4E4789E867C007CC6C67E060C7800E7 +:1001D000003030003030000000303000301020009F +:1001E000FCF8F0F0F0F0F8FC00007E007E0000006B +:1001F0003F1F0F0F0F0F1F3F38440408100010005F +:100200003C4299A1A199423C386CC6C6FEC6C600C4 +:10021000FCC6C6FCC6C6FC003C66C0C0C0663C004E +:10022000F8CCC6C6C6CCF800FCC0C0F8C0C0FE0002 +:10023000FEC0C0FCC0C0C0003E60C0CEC6663E006E +:10024000C6C6C6FEC6C6C600FC3030303030FC0024 +:100250000606060606C67800C6CCD8F0F8DCCE0046 +:10026000C0C0C0C0C0C0FE00C6EEFEFED6C6C600FE +:10027000C6E6F6FEDECEC6007CC6C6C6C6C67C0096 +:10028000FCC6C6C6FCC0C0007CC6C6C6DECC7A00B2 +:10029000FCC6C6CEF8DCCE0078CCC07C06C67C009E +:1002A000FC30303030303000C6C6C6C6C6C67C0012 +:1002B000C6C6C6EE7C381000C6C6D6FEFEEEC60028 +:1002C000C6EE7C387CEEC600CCCCCC78303030002A +:1002D000FCFC183060FCFC00000000000030300026 +:1002E000C080D895D50305073808080808083800E5 +:1002F0003F3F000029133F1E80C0F070D0F0E000A7 +:100300000000000101010303FF7F3F1F0F070303EC +:100310000080C0E1F1F9FFE3FFFFFFFFFFFFFFE314 +:100320000000000000000080FF7F3F1F0F070381D7 +:100330000080C0E070783C82FFFFFFFF7F7F3F833B +:100340000700000F1F1F3F7FC700001F1F1F3F7FB9 +:10035000078000EFFFFFFFFFC78000FFFFFFFFFFE9 +:10036000800000C0C0E0E0F0810100CFC7E3E3F10E +:10037000800000C0C0E0E0F0810100CFC7E3E3F1FE +:100380000000000103070107FF7F3F1F0F07010760 +:100390000080C0E1F3FFF9FFFFFFFFFFFFFFF9FF60 +:1003A000000000E0F0F888F8000000E0F0F888F8BD +:1003B000000000E0F0F888F8FFFFFFFFFFFF8FFF6D +:1003C0000E0E0D0D1F1F1F1F0E0E0D0D1F1F1F1FC9 +:1003D0000E0E0D0D1F1F1F1FFEFEFDFDFFFFFFFF79 +:1003E000F8F8F8FCFCFCFCFCF8F8F8FCFCFCFCFC65 +:1003F000F8F8F8FCFCFCFCFCF8F8F8FCFCFCFCFC55 +:1004000000000000000000000000000000000000EC +:1004100000000000000000000000000000000000DC +:1004200000000000000000000000000000000000CC +:1004300000000000000000000000000000000000BC +:1004400000000000000000000000000000000000AC +:10045000000000000000000000000000000000009C +:10046000000000000000000000000000000000008C +:10047000000000000000000000000000000000007C +:10048000000000000000030F010003071F7FFFFFB3 +:100490000000030F3FFFFFFFFFFFFFFFFFFFFFFF16 +:1004A000000000000001071F3F7FFFFFFFFFFFFF6D +:1004B000FFFFFFFFFFFFFFFF00000000FFFFFFFF48 +:1004C000FFFFFFFFFFFFFFFF00000007FFFEFCF83C +:1004D000F8F8F8F8F1F0E3E79FFFFFFFFFFFFFFFF9 +:1004E000000000000001070F1E188107070F0F1FF3 +:1004F0003F3F3FFFFFFFFFFF0000000F3FFFFFFFF9 +:1005000000030F3FFFFFFFFF000000000001071F77 +:100510003F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B +:10052000FFFFFFFFFFFFFFFF0000000000FFFFFFD6 +:1005300000000000000000000000001FFFFFFFFFA0 +:100540000000030F3FFFFFFF000000000001071F36 +:100550003F7FFFFFFFFFFFFF0000030F1FFEFEFEB8 +:10056000F0F8FCF8F8F0F181079801071F1F3F7FB2 +:100570001F0F3FFFFFFFFFFF000000000000030F01 +:100580007FFFFFFFFFFFFFFF0000030F3FFFFFFFA5 +:1005900000017FFFFFFFFFFF7FFFFFFFFFFFFFFF68 +:1005A000FFFFFFFFFFFFFFFF00000000000000FF54 +:1005B000F8FFFFFFFFFFFFFF60F0FCFEFFFFFFFF04 +:1005C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B +:1005D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B +:1005E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B +:1005F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +:10060000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA +:10061000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA +:10062000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA +:10063000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA +:10064000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA +:10065000F7F7EFEFCFDF9F9FFFFFFEFCFCF8F0E026 +:100660003F3F3F3F1F1F1F1FFFFFFFFEFCFCFCFC27 +:10067000C0800000000101017FFFFFFFFFFFFFFFBF +:10068000F8F2E6DFFFFFFFFF030307070F1F3F7FBF +:10069000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A +:1006A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A +:1006B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A +:1006C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A +:1006D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A +:1006E000FFFFFFFFFFFFFFFFFEFCFCFCFEFFFFFF25 +:1006F0003F9FCFE0E3C70107070F0F0F0783C1F844 +:10070000FFF38F3F7F7F3F1FFFFFFFFFFFFEFCF8E0 +:10071000FFFFFFFFFFFFFFFFFFFFFFFFFF7F3F1F09 +:10072000070F1F1F3F1F0F0F070F8F9FCFFFF3F9FB +:10073000FCFCFEFEFFFFFFFFFFFFFFFFFFFFFFFFD1 +:10074000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9 +:10075000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9 +:10076000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99 +:10077000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89 +:10078000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79 +:100790000000000000000000FFFFFFFFFFFFFFFF61 +:1007A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59 +:1007B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49 +:1007C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39 +:1007D000FFFFFFFFFF600000FFFFFFFFFFFF7F073E +:1007E000FFFFFFFFFFFEFEFCFFFBF7CF1F3F7F7FFA +:1007F000F0F0F0F0F0F0F0FC7FFFFFFFFF60000092 +:100800000000000000000000FFFFFFFFFFFFFFFFF0 +:1008100000000000000000000000000000000000D8 +:10082000009CFCFEFEFFFFFF00000000000080F8BF +:10083000FF7F1F0F03010000FFFFFFFFFFFFFF7F90 +:10084000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8 +:10085000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8 +:1008600000FCFFFFFFFFFFFF1F0FC7E7F3FBFBFCD1 +:10087000FFFFFFFFFFFFFF3FFFFFFFFFFFFFFFFF48 +:10088000FFFFFFFFFFFF7F07FFFFFFFFFFFFFFFFF0 +:10089000FFFFFFFFFFFFFFFF009CFCFEFEFFFFFFCF +:1008A00000000000000080F8FF7F1F0F0301000020 +:1008B000FFFFFFFFFFFFFF7FFFFFFFFFFFFFFFFFC8 +:1008C000FFFFFFFFFFFFFFFF071FFFFFFFFFFFFF10 +:1008D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28 +:1008E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18 +:1008F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08 +:1009000000000000000000000C0E1E1C086070308B +:100910001F0FC7E7F3FBFBFFFFFFFFFFFFFFFFFF1B +:10092000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7 +:10093000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7 +:10094000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7 +:10095000FFFFFFFFFFFFFFFFFFFFFFFFFFFEFCF8B2 +:1009600000000030381838108F1F1F1F1F1F0F8FF7 +:100970000000000000303818FFFFFFFFFFFFFFFFFF +:10098000FFFFFFFFFFFBFBF7F7EFEFEFE7F3F9F8F0 +:100990007CFE6F3F7EFCFE7FFFFFFFFFFFFFFFFF40 +:1009A0001C3E7EFEFE7F0E06FFFFFFFFFFFFFFFFE8 +:1009B000FFFFFFFFFFFFFFFF00000000000000003F +:1009C000000000000000009F00000000010FFFFF7A +:1009D0000001073FFFFFFFFFF8FFFFFFFFFFFFFFE3 +:1009E0000000E0FFFFFFFFFF0000001FFFFFFFFF11 +:1009F000000000FFFFFFFFFF0000FFFFFFFFFFFF02 +:100A00000000000000000000387CF6E7FFFFE7630D +:100A1000FCFEE7FFFEE7FF7E3C7EF3E0E0663F1E64 +:100A2000F8FCE6E7E7EFFE7CFCFEE0F8FCE0FE7F8A +:100A3000FEFFE0FCFEE0E0603E7FF0EEE7673F1F78 +:100A4000C6E7E7FFFFE7E763FC7E38383838FC7E0F +:100A50000607070707C77F3EC6EFFEFCF8ECE66314 +:100A6000C0E0E0E0E0E0FE7FC6EFFFFFFFEFE763FE +:100A7000C6E7F7FFFFEFE7637CFEE7E7E7E77F3EC8 +:100A8000FCFEE7E7FFFEE0607CFEE7E7FFEF7E3D70 +:100A9000FCFEE7EFFFFCEE6778FCE67C3EC77F3E9E +:100AA000FC7E383838383818C6E7E7E7E7E77F3E96 +:100AB000C6E7E7EF7F3E1C08C6E7F7FFFFFFF763D7 +:100AC000C6EF7F3E7CFEF663CCEEEE7E3C383818F7 +:100AD000FE7F1F3E7CF8FE7F00000000000000004B +:100AE000FFFFFFFFFFFFFFFF00000000000000000E +:100AF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06 +:100B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5 +:100B1000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5 +:100B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5 +:100B3000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5 +:100B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5 +:100B5000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5 +:100B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95 +:100B7000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85 +:100B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75 +:100B9000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65 +:100BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55 +:100BB000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45 +:100BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF35 +:100BD000FFFFFFFFFFFFFFFBFFFFFFFFFFFFFFFF29 +:100BE000FFFFFFFFFFFFFFFFF8FCFEFFFFFFFFFF20 +:100BF000FF630301F1FCFFFFFFFFFFFFFFFFFFFFAC +:100C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4 +:100C1000FFFFFFFFFFFFFFFFF7F7E7E7C3C3E3E1D6 +:100C2000E1F1F9FDFDFFFFFFFFFFFFFFFFFC783063 +:100C3000FFFFFFFFFF3F1F1FFFFFFFFFFFFFFFFE45 +:100C4000FCFBF7EFDFBF7FFFFFEFE7FFFFFFFFFFDB +:100C5000F0F0F8FCFEFEFFFF30000000010103038E +:100C60003F3F7FFFFFFFFFFFFFFFFFFFFFFFFFFF94 +:100C7000FFFFFFFFFFFFFFFFFDFBFBFBFBFBFBF7A6 +:100C80000303030303030303FFBF9FFFFFFFFFFFF4 +:100C9000FFBF9FFFFFFFFFFFF7F7EFDFDFBFBFBF24 +:100CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54 +:100CB000FFFF00000000FFFF03030000000003032C +:100CC000FFFF0F0F0F0FFFFFFEFCFDFEFEFEFEFEFF +:100CD000FFDF9FFFFFFFFFFF7F7F7F7F7F7F7F7FA4 +:100CE000FFFFFFFFFFFFFFFF7F6F677F7F7F00003A +:100CF000FFEFE7FFFFFF0000FFEFE7FFFCF0000062 +:100D00000303030300000000FFBF9FFFFF3F00003D +:100D1000FFBF9FFFFFFF0000FFDF9FFFFFFFFFFF01 +:100D20007F3F9FFFFFFFFEFCFFFFF9E0C080000058 +:100D3000FFFFFF0000000000FCE08000000000005A +:100D400000000000000000007F7F000000007F7FA7 +:100D5000FF7F7F1F01030100FFFFFFFFFFFFFF7FFA +:100D60001F03010001030100FFFFFFFFFFFFFFFF63 +:100D70001F033108051301040000000000000000FB +:100D8000FFFFFFFFFFFFF8E0FFFFFFFFFFFF030391 +:100D9000C08000000080E0FC0100000000000000B6 +:100DA000FF7F3F1F07010100C0C0FFFFFFFFFFFFE4 +:100DB0001FFFFFFFFFFFFFFF00000000000000001B +:100DC0000F030100000F3FFFFFFFFF1F07C3E3F109 +:100DD00003070F0F0F0360F8F3C387FFFEF800004F +:100DE000F0E0C0000001077FFFFF7F61FEFFFFFF13 +:100DF000FFFFFFFF3F87FBFDFFFFFFFFFFFFFFFF41 +:100E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2 +:100E1000FFFFFFFFFFFFFFFFFEFFBFDFEFF3FCFF62 +:100E2000FF7FBFDFEFF7FB01FAFEFFFFFFFFFFFFD2 +:100E3000FF7FFFFFFFFFFFFFFFFFFFFFFFFFFC0143 +:100E4000FFFFFFFFFCC000E000000000000000000A +:100E5000010101FF0F0F1F07020000FF171311FF11 +:100E6000030000C0E0F8FDFD000000000080C0C0ED +:100E700080C0E0F07038383800003F3F3E3C383FDB +:100E80000000FFFFFFFFFFFF0000FFFFFEFCF8FF79 +:100E90000719E1FF080808FF0101013F0808083FA2 +:100EA000010101FF080808FF000000000000000029 +:100EB000FFFFFFCFE3F8F8F80000C0F3FF7F00FF6B +:100EC0003F3FFFFEF8823EFEFFFFFF7F7F7F7F7F79 +:100ED000F8F8F8F8F8F8FCFFFFFFFFFFFFFFFF004E +:100EE000FFFFFFFFFFFCF0000F0300000000000009 +:100EF000FFFFFF1F0701030F0000000000000000BC +:100F00000000E0FFFFFFFFFF000000FFFFFFFFFF0B +:100F100003010000C0F8FEFFFFFF7F1F07010080F4 +:100F2000FFFFFFFFFFFF7F1FC0F0FCFFFFFFFFFF82 +:100F300007010000C0F0FCFF070307393EFFFFFF79 +:100F4000FFFFFFFF1FE0FFFFFFFFFFFFFFFFFFFFB0 +:100F5000FFFFFFFFFFFFFFFF000000000000000099 +:100F60000000FFFFFFFFFFFF0000FCFCFCFCFCFC9F +:100F7000FCFCFCFCFCFCFCFC0080E0F0FCFFFFFF48 +:100F8000FF000000000080C0FF0000000000000023 +:100F9000FC00000000000000000000000000000055 +:100FA000F0F8FEFFFFFFFFFF00000080C0E0F8FC4C +:100FB000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41 +:100FC000FFFFFFFFFFFFFFFF0F010000000080C0D9 +:100FD0003F3F3F3F3F3F3F3F000103070F1F3F7F22 +:100FE000000000000000C0E0FFFFFFFFFFFFFFFF69 +:100FF00000000000000000000000000000000000F1 +:10100000FF80808080808080FF010101010101015B +:1010100080808080808080FF01010101010101FF4B +:1010200000000000000000000000000000000103BC +:1010300000000F1F7FFFFFFF0000F8FFFFFFFFFF13 +:1010400000000000C0F8FFFF00000000000000C02A +:101050000000000000000000000000000000000090 +:1010600000000000000000000000000000073F003A +:101070000F0F3F7FFFFFC300FFFFFFFFFFFFFFFFDB +:10108000FFFFFFFFFFFFFFFFF0FCFFFFFFFFFFFF82 +:10109000000000C0F0FEFFFF000000000000FDFFA8 +:1010A00000000E3F3FFFFFFF00000080F8FFFFFF42 +:1010B0000000000000FFFFFF000000000000F0FF44 +:1010C000000000000000030F000100000000FFFF0F +:1010D00000FF00003F0300FFFFFFFF07FFFF1FC3EC +:1010E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10 +:1010F000000000000003073F0000001FFFFFFFFF8C +:1011000000000000F8FFFFFF0000000000E0FFFF0C +:1011100000000000000000FC000000010F1FFFFFA6 +:10112000011F7FFFFFFFFFFFFFFFFFFFFFFFFFFF2D +:10113000FFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFCE +:101140000000FFFFFFFFFFFE00000000000001079E +:101150000103070F1F3FFFFF000000000301000015 +:101160000000000080FE7F3F000000000000C08003 +:1011700000000000000000000F1F3F7F7FFF6F1F77 +:10118000FFFFFFFFFFFFFFFF04070000000000005C +:1011900080808080000000000000F8F0E0C0C00304 +:1011A000000000000038FFFF3F07000000008FFF35 +:1011B000FFFF1F0003FFFFFFFFFFFF3FFFFFFFFFDA +:1011C0000000000000000000F8FEFFFFFFFFFFFF2F +:1011D000000000000000000000000000000000000F +:1011E00000000000000000000000000000000000FF +:1011F00000000000000000000000000000070000E8 +:101200000000000003C07C0F0000000000FC000094 +:1012100000000000000000000000000000000000CE +:101220000000000000000000000000000000013F7E +:1012300000000000073FFFFF00031FFFFFFFFFFF4D +:101240000000000000071F3F000000000000000039 +:10125000000000000000000000000000000000008E +:10126000000000000000000000000000000000007E +:10127000000000000000000000000000000000006E +:10128000000000000000000000000000000000005E +:1012900000000000000000000000000000083860AE +:1012A0002367031F38000000F8F8F000000000007A +:1012B00000000107070E00193F7FF0C31F7FFEFCEF +:1012C000F870F0E0C08000000000000000000000A6 +:1012D0000100000000000000C0000008081010001D +:1012E00000000000000000000000000103000000FA +:1012F00000000000000000000001010301010303E1 +:1013000000808080C0C0C08000000000000000009D +:1013100000000000000000000000000001070E3C7B +:10132000070F4F9FBF0F02028000800000000000E7 +:101330000000000000000000000000030F0000009B +:101340000023C08000000000E80000000000000052 +:101350000000000000000000FF7F0F0300000000FD +:10136000FFFFFFFFFF1F0707FFFFFFFFFFFFFFFF5D +:10137000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D +:10138000FFFFFFFFFFFFFFFFFFFFFFFEF0E0C000DA +:10139000F8E08000000000000000000000000000F5 +:1013A000000000000000000000000000000000003D +:1013B0000000000000000000030100000000000029 +:1013C000FFFFFF0000000000FFFFFFFE0000000025 +:1013D000FCE080000100000000084CE6EF74320CD5 +:1013E000000000C00000000000000000000000003D +:1013F00000000000000000000400000000000000E9 +:10140000000000000100000000204080C4EE6633B0 +:10141000000000000000C0E000000000000000002C +:1014200000000000000000000000000000000000BC +:1014300000000000000000000000000000000000AC +:10144000000000000000000000000000000000009C +:101450000000000000000000C020000000000000AC +:10146000000000000000000000000000000000007C +:10147000000000000000000100000000001060C03B +:101480000000000000000000000000003000030029 +:10149000000000000000000000000000000830E034 +:1014A0000000000001010207000109880C1C07016F +:1014B000000080E0701F06C3000000000000004034 +:1014C0000000000000007F80000000030001F00029 +:1014D000000000807080000000000000E0000000BC +:1014E00000000000000000000000000000000000FC +:1014F000000600000000000003071E0000000000BE +:101500008000000038E00000000000000000000043 +:101510000000000000000000070F1F3F3F0F0703FF +:10152000C060483C391F0100300C01070E07C100A4 +:10153000F0380018300880000000077E0F00010717 +:101540000E70800000F0FFFF00000000000000F0BF +:10155000000000000000031F00000000013FFFFF2B +:10156000071F3FFFFFFFFFFF00000000000000001B +:1015700080F8FFFFFFFFFFFF000000E0F8FEF8E04B +:101580000003070300000000FFFFFFFFFF1F07012C +:10159000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B +:1015A000FFFFFFF0E0FFFFFFFFFE000000E0F0F8AC +:1015B000F800000000000000FF7F1F0F0700000080 +:1015C000FFFFFFFFFFFF3F0FFCFFFFFFFFFFFFFFDE +:1015D0000000E0F8FFFFFFFF0000000000C0F0FF88 +:1015E0000000007F3F0F070300000000F0FFFFFF37 +:1015F00000000000030FFFFF00000000FFFFFFFFDF +:101600000000000000FFFFFF0000000000C0FCFF22 +:1016100000000000000000000000000000000000CA +:101620000000000000000000FF7F3F1F07010000D6 +:10163000FFFFFFFFFFFFFF3FC0F0FCFCFFFFFFFFCE +:101640000000000000C0E0FC1F0F0F0701000000B9 +:10165000FFFFFFFFFFFF7F00FFFFFFFFFFFFFCF02B +:10166000FFFFFFFFF8800000FEF8E0000000000030 +:101670000000000000000000000000000000030166 +:10168000FFFF0F1E700000E090C08000000000000F +:10169000FFFF8000000000000000000000000001CB +:1016A0001EFCF0E080000001010307071F3F7FFFE1 +:1016B000070F1F1F3F7FFFFFFFFFFFFFFFFFFFFF22 +:1016C0003F7F000000F00EFF00000000000000005F +:1016D00000000000000000000001070F0F1F1F3F67 +:1016E0000001070F3F7FFFFF7FFFFFFFFFFFFFFFAF +:1016F000FFFFFFFFFFFFFFFFFEFEFFFFFFFFFFFFFC +:10170000FFFFFFFFFEFCF8FFE3C3810000013FFF86 +:101710000000000001030F3F07071E3FFFFFFFDF30 +:10172000FFFFFFFFFFFFFFFFDFEEECE0E0E0E0E0A8 +:10173000FFFFFF7800000000E2EEC7030100013F59 +:10174000001FFFFFFFFFFFFFFFE3C0F8FCFFFFFFED +:10175000FFFFFF7F7FFFFFFFFFFFFFFFFFFFFCF0AB +:1017600000000000010101030000000103070F1F3A +:101770000F1FFFFFFEFEFCFC1F3F7FFFFFF9FFFF77 +:10178000F8F0E0C0C0808000E0C00000A090B8BCCD +:1017900000000000000000003F3F3F3F1F1F1F1FD1 +:1017A0000080C0C0E0E0F0F01F1F3F3F7F7FFFFFE1 +:1017B000FCFEFEFEFEFFFFFFFFFFFF3F3F1F0FE3AC +:1017C000FFFFFFFFFFFFFFFFFDF9F9FBF383073F7B +:1017D000FFFFFFFFFFFFFFFF000000000000000011 +:1017E00000000000000000000000000000000000F9 +:1017F00000000000000000000000000000000000E9 +:10180000FF80808080808081FF01010101010181D2 +:1018100081808080808080FF81010101010101FFC2 +:101820000000387FFFFFFFFF000006F8C0B8BFBF11 +:10183000000000000003FFC007071F3FFFFFF80084 +:10184000FF87FFFFFFFF0F3FFFFFFEFFFFFFFFDFF1 +:101850000000000000000000000000000000000088 +:101860001F1F3F3F3F7F7FFFFFFFFFFFFFFFFFFF88 +:10187000FFFFFFFFFFFFFFFFFFBFFFFFFFF9FFFFBE +:1018800000000000000000000001010303070F0F2B +:10189000FFFFFFFFFFFFFFFFFFFFFFFFFEF8FCFF63 +:1018A000E0C0800103070F1F0F1FFFFFFEFEFCFCBF +:1018B0000003070F0F1E3C78FFFFFF9F1F3F7FFFB6 +:1018C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28 +:1018D000E0E0C0C0E0E0F0F00000000103071F3FBF +:1018E0001F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8 +:1018F000E0E0E0C080E0F0F0000000000101030340 +:101900007FFFFFFFFFFFFFFFFFFFFFFFFBF9F0F08F +:1019100001070F1F3F3F3B7FFFFFFFFFFFFFFFFF61 +:1019200001070F1F3F3F3F7F000000000103070F2B +:1019300000000000000000000000000000000000A7 +:101940000000000000000000000000000000000F88 +:1019500000000000000000000000000002011FFF66 +:10196000FFFFFFFFFFFF3F07030000030FFFFFFF25 +:10197000FFFEFCFCFEFEF8C08000E0F8FFFFFFFF6A +:1019800000000000000000000001070F3EF8F18792 +:1019900000000000000000000080F8800F7FFFFFC3 +:1019A000FF7F3F0F010000003F7FFFFFFFFFFFFFB2 +:1019B000FFFFFFFFFF7F1CFCFEFFFFFFFFFFFFFF9E +:1019C00000000000000000000001001FFFFFFFFFFB +:1019D00000000000003E7FFFFFFF1FFFFFF8E0C098 +:1019E000FFFEFEFFFFFF0F0040F8FFFFFFFFFFFFBE +:1019F00000000080FFFFFF000003F3FFFFFFFCF08B +:101A0000000000000000C080E0FCFFFF00000000BC +:101A10000000000000000000000030FF0000000097 +:101A2000000000000001871FFFFFFFFFE0800000B3 +:101A3000000000073FFFFFFEFCF8FFFF000300006F +:101A4000000000000000000F000000FF0000000385 +:101A5000000000000000C0F0000000C0FF7FFFFF9A +:101A60000F18F0C0808000000000FFFFFFFE0000A4 +:101A7000FF3F3F3F1F0F0F1E3FFFF8F8F000000031 +:101A8000000000000000000000010000FFFFFFFF59 +:101A9000000000000000000000FE3F1FFFFFFFFFEE +:101AA000FFFFFFFFFF00033FFFFF3F01061800009D +:101AB000FFFFFFFFFFFFFFFFFCF8C0C1030C0000AA +:101AC0000000000000000000000307FFFF0100000D +:101AD00000000000000000000000FFFFFFFF7F008B +:101AE00000C0FCFCFEFFFFFC783F3FFFFFFFFFFF55 +:101AF00000000000000F3F7FFFFFFFFFFFFFFFFF21 +:101B000000000000060100000FFFFFFFFFFFFF0CB9 +:101B10000000000000F00EFFFFFFFFF0C08000009B +:101B20000000000FFFFFFFFFFFFFFFFFFFFFFFFFB2 +:101B30000003FFFFFFFFFEFCFCF0E0E0C0808080C0 +:101B4000003C7EE7C3C7FEFCC6C7C3C3C3C7FEFCD9 +:101B500000000000001C3D736363636363626061A7 +:101B60000000000000F0E18B1B1B1B1B1B3BF1E086 +:101B70000018181818F8F9BB1B1B1B1B1BBBF1E046 +:101B80000000000000E0F1BB1B3BF3E303BBF3E309 +:101B90000018181818FFFF9D18181818181D0F079F +:101BA00000000000001898D8D8D8D8D8D8DD8F0702 +:101BB0000000000000C7CFDDD8D8D8D8D8D89818F2 +:101BC0000000000000078FDDD8D8D8D8D8DDCFC7F7 +:101BD00000C0C0C0C0C0C0C0C0C0C0C0C0C08000C5 +:101BE000000041E3E3E3777F000082C7C7C7DEFE62 +:101BF0007F3F3F3F1F1F1F19FEFCFCFCFCF8F898BD +:101C0000000103394721201010080F0000000000D8 +:101C100000008038C40809131907E1201010080FCC +:101C2000000103394721209030C00F08101020E038 +:101C300000008038C40808101020E00000000000F8 +:101C40000000000000000000000000000000000094 +:101C50000000000000000000000000000000000084 +:101C60000000000000000307010101030303030358 +:101C700007070707070F0F0F0F1F1F1F3F3F00002A +:101C8000000000000000FFFFFFFFFFFFFFFFFFFF5E +:101C9000FFFFFFFEFEFEFCFFFFFFFFFFFFFF000058 +:101CA00000000000000080C0C0C0C0C080808080F4 +:101CB00000000000000005FDFDF9F9F9F1E0000069 +:101CC00000000000000000000000000F1F3F7F7FA9 +:101CD0007FFFFFFFFFFFFFFFFFFFFFFFFF7F000012 +:101CE0000000000000000000000000FFFFFFFFCF29 +:101CF000CF8F9F9F9F3F3F3FFFFFFFFFFEF80000FA +:101D00000000000000000000000000F0F8F9F9F306 +:101D1000F3F3F7F7E7E7EFEFCFCFCF8F070300003D +:101D200000000000000000000000003FFFFFFFFE79 +:101D3000FEFEFCFCFCF8F8F9FFFFFFFBF1C0000021 +:101D40000000000000007F1F1F3F7FFFFFFFFF7F9D +:101D50007F7F7FFFFFFFFFFFFFFFFFFFFFFF000011 +:101D6000000000000000E0F0F0F0F0F0E1E3E7CF69 +:101D7000CFDFDFDF9F9FBFBF3F3F3F3F9FC70000D9 +:101D800000000000000000000000007FFFFFFFF9DE +:101D9000F9F3FFFFFFFFF0E0FFFFFFFFFFFF000091 +:101DA0000000000000000000000000FCFEFFFFFF3C +:101DB000FFFEFEFCFCE0000EFCFCF8F8F0800000EA +:101DC0000000000000000000000000000000000013 +:101DD00000000101010101030303030707030000E1 +:101DE0000000000000007FFF1F1F1F7F7F7FFFFF9D +:101DF000FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F1 +:101E0000000000000000FFFFFFFFFFFFF3E1E3E73A +:101E1000EFFFFFFFFFFFBFBF9F9F8F0F87C7000030 +:101E2000000000000000F0FCFFFFFFFFFFFFFFFFCE +:101E3000FFFEFCF0C0E0F0F8FEFEFCFCF8F0000055 +:101E400000000000000000000000809FBF9F9F3F37 +:101E50003F3F3F7F7F7F7F7FFFFFFFFFFF7F0000D0 +:101E60000000000000000000000000E3F7F3F3F3BF +:101E7000E3E7E7E7E7CFCFCFFFFFFFFFDF0F00008C +:101E80000000000000000000000000FCFEFFFFFF5B +:101E9000FEFEFEFCFCFCFCF8F9F9F9F9FEFC000082 +:101EA00000000000000000000000003F7F3F3F3FB7 +:101EB0007F7F7F7FFFFFFFFFFFFFFFFFFF7F0000B0 +:101EC0000000000000000000000000E1F7EFFFFF4D +:101ED000E7C7C7CFCFCF8F9F9F1F1F3FBFDF000038 +:101EE0000000000000000000000000FCFFFEFEFCFF +:101EF000FDFDFDF9FBFBFBF3F7F7F7E7E3F9000066 +:101F00000000000000000000000000FFFFFFFFFFD6 +:101F1000FFFFFFFFFFFFFEFEFEFCFCFCFEFF0000DC +:101F2000000000000000000000000087DFBFFFFF8E +:101F30009F1F1F3F3F3F3F7F7F7F7FFFFF7F00004F +:101F40000000000000000000000000F0F8F8F9F3C5 +:101F5000F3F7F7E7E7E7EFCFCFCFCF8F87E10000C9 +:101F600000000000000000000000000F7FFFFFFEE7 +:101F7000FEFCFFFFFFFFFCF8FFFFFFFFFFFF00007D +:101F80000000000000000000000000FFFFFFFF7FD6 +:101F90007FFFFFFFFFF80003FFFFFEFEFCC0000015 +:101FA00000000000000000000000000F9FC7C7C72E +:101FB000CF8F8F1F1F1F1F9F3F3F3F3F7F7F00001F +:101FC0000000000000000000000000F8FDFDFFFF21 +:101FD000FFFEFCF8F8F8F0F0F0F0E0E0F8F00000B8 +:101FE00000000000000000000000007CFCF8F8F891 +:101FF000F0000000000000000000000000000000F1 +:00000001FF diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/lr-e-2f.hex b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/lr-e-2f.hex new file mode 100644 index 00000000..105c8ccc --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/lr-e-2f.hex @@ -0,0 +1,513 @@ +:100000000000000000000000FF7F3F1F0F070301FA +:100010000080C0E0F0F8FCFEFFFFFFFFFFFFFFFFE6 +:10002000FFFFFFFFFFFFFFFF0000000000000000D8 +:1000300000000000000000000000000000000000C0 +:1000400000000000000000000000000000000000B0 +:10005000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 +:100060000000000000000000000000000000000090 +:10007000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 +:1000800000000000000000003F00001F0F00000102 +:10009000000000203000003E3F00003F3F00003FD6 +:1000A0000000000000000000FC0000FCFC0000FC60 +:1000B0000000000000000000000000000000000040 +:1000C0000000000000000000FF00001F0F070301F8 +:1000D000000000E0F0F8FCFEFF0000FFFFFFFFFF64 +:1000E0000000000000000000000000000000000010 +:1000F0000F001B00001D0000F000D80000B8000039 +:1001000000000000000000000000000000000000EF +:1001100000000000000000000000000000000000DF +:1001200000000000000000000000000000000000CF +:1001300000000000000000000000000000000000BF +:1001400000000000000000000000000000000000AF +:10015000000000000000000000000000000000009F +:10016000000000000000000000000000000000008F +:10017000000000000000000000000000000000007F +:10018000000000000000000000000000000000006F +:10019000000000000000000000000000000000005F +:1001A000000000000000000000000000000000004F +:1001B000000000000000000000000000000000003F +:1001C000000000000000000000000000000000002F +:1001D000000000000000000000000000000000001F +:1001E000000000000000000000000000000000000F +:1001F00000000000000000000000000000000000FF +:1002000000000000000000000000000000000000EE +:1002100000000000000000000000000000000000DE +:1002200000000000000000000000000000000000CE +:1002300000000000000000000000000000000000BE +:1002400000000000000000000000000000000000AE +:10025000000000000000000000000000000000009E +:10026000000000000000000000000000000000008E +:10027000000000000000000000000000000000007E +:10028000000000000000000000000000000000006E +:10029000000000000000000000000000000000005E +:1002A000000000000000000000000000000000004E +:1002B000000000000000000000000000000000003E +:1002C000000000000000000000000000000000002E +:1002D000000000000000000000000000000000001E +:1002E000000000000000000000000000000000000E +:1002F0000101003C173F3F1E80C0F070F0F0E000AD +:10030000000000000000001CFF7F3F1E0E06001CC6 +:100310000080C0E0F0F8FCFCFFFFFFFEFEFEFCFCEE +:10032000000000000000003CFF7F3F1F0F07033D5F +:100330000080C0E070783C3EFFFFFFFF7F7F3F3FC3 +:10034000387FFF0000000000F87FFF100000000071 +:1003500038FFFFE0E0E0C080F8FFFFF0E0E0C080A1 +:100360007EFEFF00000000007FFFFF0F0703030178 +:100370007EFEFF00000000007FFFFF0F0703030168 +:100380000000000000000000FF7F3F1E0C00000086 +:100390000080C0E0F0F8F8F8FFFFFFFEFCF8F8F886 +:1003A000000000000000000000000000000000004D +:1003B0000000000000000000FFFFFF1F0F070707FD +:1003C000000000001018181C000000001018181C75 +:1003D000000000001018181CF0F0F0F0F0F8F8FC25 +:1003E000000000040C0C1C3C000000040C0C1C3C25 +:1003F000000000040C0C1C3C000000040C0C1C3C15 +:10040000FFFFFFFFFFFFFFFFFFFFFF0000000000F7 +:10041000FEF80000000000007F1F01000000000047 +:10042000FFFFF80000000000FFF8000000000000DF +:10043000FFFF7F3F0F030000FFFFFFFFFFFEF8C03D +:10044000FFFFFFFFFFFFE000FFFFFFFCC000000019 +:10045000FCF0800000000000FFFFFFFFFFFFFFC077 +:10046000FFFFFEFCF8E0000080000000000000003C +:10047000FFFF7F0F00000000FFFFFFFFFF0F0100E5 +:10048000FFFFFFFFFFFFFCF0FEFFFCF8E080000035 +:10049000FFFFFCFCF8F0F8FC7F0700000000000004 +:1004A000FFFFFFFFFFFEF8E0C0800000000000003B +:1004B0000080E00000000000FFFFFFFF00000000E0 +:1004C0000000000000000000FFFFFFF8000103072C +:1004D000070707070E0F1C1860000000000000004F +:1004E000FFFFFFFFFFFEF8F0E1E77EF8F8F0F0E035 +:1004F000C0C0C00000000000FFFFFFF0C00000000F +:10050000FFFCF0C000000000FFFFFFFFFFFEF8E06F +:10051000C08000000000000000000000000000009B +:100520000000000000000000FFFFFFFFFF000000D0 +:100530000000000000000000FFFFFFE000000000DE +:10054000FFFFFCF0C0000000FFFFFFFFFFFEF8E030 +:10055000C080000000000000FFFFFCF0E00101018E +:100560000F070307070F0E7EF867FEF8E0E0C08074 +:10057000E0F0C00000000000FFFFFFFFFFFFFCF005 +:100580008000000000000000FFFFFCF0C000000041 +:10059000FFFE80000000000080000000000000005E +:1005A0000000000000000000FFFFFFFFFFFFFF0052 +:1005B00007000000000000009F0F03010000000082 +:1005C00000808080808080C0C0C0C0406060E0E06B +:1005D0000000000000010101E0E0F0F0F8FCFFFF86 +:1005E00000000000000000C080406060303030300B +:1005F0007F3F3F1F01000000C0E0F8C08000000006 +:10060000000000000001020C0000010103030F1FA5 +:10061000F0F0F0F0E0E0E0C00000000000000101B8 +:100620001818397FFFFFFFE03FFFFFFEFCF080005E +:10063000C080000000000000030200000000000075 +:1006400000000000000000000000000000000000AA +:1006500008081010302060600000010303070F1F1E +:10066000C0C0C0C0E0E0E0E00000000103030303FD +:100670003F7FFFFFFFFEFEFE800000000000000045 +:10068000070D192000000000FCFCF8F8F0E0C08025 +:1006900080808080808080C0C0C0C0406060E0E01A +:1006A0000000000001030303FCFEFFFFFFFFFFFF4C +:1006B0000000008080C0E0F8FF7F3F0300000000E2 +:1006C000FCFEFFFF3F0301000000000000000000EF +:1006D000000000000000000000000000000000001A +:1006E00000000000000000000103030301000000FF +:1006F000C060301F1C38FEF8F8F0F0F0F87C3E07C0 +:10070000000C70C08080C0E0000000000001030702 +:100710000000000000000000000000000080C0E0B9 +:10072000F8F0E0E0C0E0F0F0F8F0706030000C06A7 +:100730000303010100000000080810103020606071 +:10074000C0C0C0C0E0E0E0E0000000010103070F0E +:100750003F7FFFFFFFFEFEFE800000000000000064 +:1007600000000000000101001F3F7FFFFFFFFFFFAF +:10077000FCFCFCFCF8F8F8F0FF7F7F7F3F1F1F1F99 +:10078000F0E0E0E0E0C0C0C00000000000000000B9 +:10079000000000000000000018189CFFFFFFFF078A +:1007A000000000C0F8FFFFFF0000000000C0FE8056 +:1007B0000000000000000000000000000000000039 +:1007C0000000000000000000000000000000000029 +:1007D00000000000009FFFFF00000000000080F804 +:1007E000000000000001010300040830E0C0808028 +:1007F0000F0F0F0F0F0F0F0380000000009FFFFF70 +:1008000000000000000000000000000000000000E8 +:100810000000000000000000FFFFFFFFFFFFFFFFE0 +:10082000FF63030101000000FFFFFFFFFFFF7F07E1 +:10083000F8FFFFFFFFFFFFFF01E1FFFEFCFCF8F800 +:10084000C0400000000000000000000000000000A8 +:100850000000000000000000000000000000000098 +:10086000FF03000000000000F8FC3E1E0F07070316 +:1008700000000000000000C00000000000000000B8 +:1008800000000000000080F80000000000000000F0 +:100890000000000000000003FF6303010100FEFFF1 +:1008A000FFFFFFFFFFFF7F070080E0F0FCFEFFFF80 +:1008B00000000000000000800000000000000000B8 +:1008C0000000000000000000F8E000000000000050 +:1008D000000007FFFFFFFFFF0001FFFFFFFFFFFF1B +:1008E00003FFFFFFFFFFFFFF7F7F7F7F7F7F3F3F94 +:1008F000F0FEFFFFFFFFFFFF000387FFFFFFFFFF8B +:1009000000000000000000000002060C080010308B +:10091000E0F038F8FCFCFCFF000000000000F0F8FC +:10092000000080F0FFFFFFFF00000000F8FFFFFF66 +:10093000000000000000C0FE0000000000000000F9 +:10094000000000000000000000000000000000C0E7 +:1009500000000000000000007F3F3F1F010103076F +:10096000000000000808181070E0E0F0F8F8F87CCB +:100970000000000000000818C0E0E0C0C0C0C08057 +:10098000000000000004040808101010180C0607EE +:1009900000386103061C007F01030F1F1F3F3F7FCC +:1009A00000021232007302067FFFFF7F3F3F1F0FDE +:1009B000C0E0F0F8F8FEFFFF0000000000000000BB +:1009C0000000000000000000000000000000000324 +:1009D0000001073F3F7EFCF8F8FFFFFF1F3F7FFF4E +:1009E0000000E0FFFFFFFFFF0000001FFFFFFFFF11 +:1009F000000000FFFFFFFFFF0000FFFFFFFFFFFF02 +:100A000000000000000000000010302101392163C7 +:100A1000003821033821037E001833202000031EF4 +:100A2000003020212123067C003E20003C20007F56 +:100A3000003F20003E202060001F30202101011FC8 +:100A40000021210139212163004E08080808007E99 +:100A5000000101010101033E0023260C2020206338 +:100A6000002020202020007F00010101292921638E +:100A70000001010121212163003821212121033EB0 +:100A800000382121033E2060003821212123043D2C +:100A90000038212107202067003026003801033E5E +:100AA000004E080808080818002121212121033ED2 +:100AB0000021210103060C080021210101113163ED +:100AC0000001030600103063002222060C080818FB +:100AD000007103060C18007F0000000000000000F9 +:100AE0000000000000000000000000000000000006 +:100AF000010103070F0F0703000000307CFCF8F82A +:100B0000030303030101010700808080C0E0F1F1CD +:100B1000FF3F7F7FFFFFFFFFF8F0F3FFFFFFFFFFC7 +:100B20007FFFFFFFFFFFFFFFF9FBFFFFFFFFFFFF5F +:100B3000FFFFFFFFFFFEFCF8FCF0E080000000007C +:100B4000E0C08080800C1C38FFFFFFFFFFFFFFFF2D +:100B5000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5 +:100B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95 +:100B7000FFFFFFFEFEFEFEFC000000000000000084 +:100B8000FCFCFCFCFEFEFEFC00000000000000007F +:100B9000FFFFFFFFFFFFFFFFFFFFFFFFFEFCFCFC6F +:100BA0000301000000000000FFFFFF7F7F3F1F07E1 +:100BB0000080C0FCFFFFFFFF03010000C0FCFEFF40 +:100BC000FFFFFFFFFFFEFEFCFFFBF7CF1F3F7F7F16 +:100BD000F0F0F0F0F0F0F0F87FFFFFFFFF600000B2 +:100BE000FFFFFFFFFFFF7F0FF8FCFEFFFFFFFFFF90 +:100BF00000000000F0FCFFFF00030F1F3F7FFFFF1E +:100C0000C0FEFFFFFFFFFFFF0007FFFFFFFFFFFF2B +:100C1000FFFFFFFFFFFFFFFF080818183C3C1C1EEA +:100C20001E0E06020200000000000000F0FEFC782C +:100C30000000000001033F3FC0E0E0C0C0C0C08032 +:100C40000003070F1F3F7FFFFFE7E7FFFFFFFFFFE7 +:100C5000F8F8FCFEFFFFFFFF7830000103038787F1 +:100C60007F7FFFFFFFFFFFFFF0FFFFFFFFFFFFFFA3 +:100C70008FFFFFFFFFFFFFFF0103030303030307D2 +:100C80008787878787878787FF9F9FFFFFFFFFFFF4 +:100C9000FF9F9FFFFFFFFFFF07070F1F1F3F3F3F04 +:100CA000FFFFFFFFFFFFFFFFFEFCFCFCFCFCFCFE68 +:100CB000FFFFFF000000FFFF878787000000878796 +:100CC000FEFCFC0C0C0CFEFE00000100000000000D +:100CD000FE9F9FFFFFFFFFFB7F7F7F7F7F7F7F7FE9 +:100CE000F8FCFEFFFFFFFCF87F67677F7F7FFF0058 +:100CF000FFE7E7FFFFFFFF00FFE7E7FFFFFCF00074 +:100D00008787878703000000FF9F9FFFFFFF3F004B +:100D1000FF9F9FFFFFFFFF00F09080E0C08000007A +:100D200080C0E0F0FFFFFEFC03030100C080000074 +:100D3000E0F0FC00000000000000000000000000E7 +:100D400000000000000000007F7FFF0000007F7FA8 +:100D50000000601F01030100000000FFFFFFFF7F94 +:100D60001F03010001030100FFFFFFFFFFFFFFFF63 +:100D70001F033108051301040000000000000000FB +:100D8000FFFFFFFFFFFFF8E0FFFFFFFFFFFF030391 +:100D9000E0F0F8FEFFFFFFFF01000000E0FCFCFFB9 +:100DA000FF7F3F1F07010130FFFFFFFFFFFFFFFF36 +:100DB000FFFFFFFFFFFFFFFF000000010303000034 +:100DC000FFFFFFF8C0000000FFFFFF1F0703030144 +:100DD00000000000000060F80000000000000003B8 +:100DE0000103070F1F3EF880FFFFFFBF1F07010031 +:100DF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03 +:100E0000F8FCFEFFFFFFFFFF00000080F0FFFFFF88 +:100E1000000000017FFFFFFF7F7F7FFFFFFFFFFFDD +:100E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2 +:100E3000FFFFFFFFFFFFFFFF0000000000000000BA +:100E400000000000010110F00000000000000000A0 +:100E5000FEFEFE00F0F0C0E0FDFFFF07EFEFEF0049 +:100E6000F8FCFCF8F0F8FDFCFDFDFDFDFD7D3D3DD1 +:100E70007D7DFDFDFDFDFDFD000000003D332700F3 +:100E800000000000FFFFFFFF00000000FDF3E7800F +:100E900000061E00F7F7F7003E3E3E0037373700EA +:100EA000FEFEFE00F7F7F700FDFDFDFDFDFDFDFD7B +:100EB000FFF0C0F0DCC7C0C0FDFD3D0C0080FFFFAF +:100EC0000F010001077DC1C1FFFF7FFFFFFFFFFF93 +:100ED000808080C0E0F0FCFFFFFFFFFFFFFFFF000E +:100EE000C0C0C0C0C0C0C000CFC3C08000000000F0 +:100EF000FFFFFF1F0701030F0000000000000000BC +:100F00000000E0FFFFFFFFFF000000FFFFFFFFFF0B +:100F100003010000C0F8FEFFFFFF7F1F07010080F4 +:100F2000FFFFFFFFFFFF7F1FC0F0FCFFFFFFFFFF82 +:100F300007010000C0F0FCFF0700180601C0C080D8 +:100F4000FF000000E01F3F3F80808080C0E0F8FF8E +:100F50003F3F3F3F3F3F3FBFFFFFFFFFFFFFFFFF21 +:100F6000FF00000000000000FF0000000000000083 +:100F70000000000000000000FF7F1F0F03000000C2 +:100F800000FFFFFFFFFF7F3F00FFFFFFFFFFFFFFAF +:100F900000FEFFFFFFFFFFFFFFFFFFFFFFFFFFFF61 +:100FA0000F07010000000000FFFFFF7F3F1F070346 +:100FB00000000000000000000080C0E0F0F8FCFE2F +:100FC000FFFFFFFFFFFFFFFFF0FEFFFFFFFF7F3F81 +:100FD0003F3F3F3F3F3F3F3F000000000000000019 +:100FE000FFFFFFFFFFFF3F1FFFFEFCF8F0E0C080A8 +:100FF00000000000000000000000000000000000F1 +:10100000FF80808080808080FF010101010101015B +:1010100080808080808080FF01010101010101FF4B +:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 +:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 +:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 +:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 +:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 +:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 +:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 +:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF867 +:1010A000FFFFFFFFFFFFF103FFFFFFFFFFFFFFFF5A +:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 +:1010C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30 +:1010D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20 +:1010E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10 +:1010F000FFFFFFFFFFFFFFFEFFFFFFF8FCE08000A8 +:10110000FFFFFFFF07000000FFFFFFFFFF1F0000C2 +:10111000FFFFFFFFFFFFFF03FFFFFFFFFFFFFFFFDB +:10112000FFFFFFFFFFFFFFFFF8E106F8803060C020 +:1011300000000000000000000F00000000000000A0 +:10114000FFFF000000000000FFFFFFFFFEFCF1C7F3 +:10115000FFF3C78F1F3FFFFF7F1F0F070300000034 +:10116000FFFFFFFFFF01003FFFFFFFFFFFFF3FFF0C +:10117000FFFFFCF8F0C080008F1F3F7F7FFF6F1FD5 +:10118000FFFF3939FFFFFFFF1F07010000000000CC +:10119000FFFFFFFF7F3F1F0FFCF800000000000370 +:1011A000000000000038FFFF3F07000000008FFF35 +:1011B000FFFF1F0003FFFFFFFFFFFF3FFFFFFFFFDA +:1011C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F +:1011D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F +:1011E000FFFFFFFFFFFFFFFEFFFFFFF8C0FFFF0055 +:1011F000C08000003CFF000000000000000700006D +:101200000000000003C07C0F0000000000FC000094 +:10121000FF3F0F0100000000FFFFFFFF0000000084 +:10122000FFFFFFFFFF000000FFFFFFFFFFFF013F89 +:10123000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE +:10124000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE +:10125000FFFFFFFFFEFCF0F0F0E080000000000068 +:101260000700000000000000FFFF3F070000000033 +:10127000FFFFFFFFFF3F0F03000000000000000022 +:1012800000000000000000000000000000E0FF3F40 +:10129000000000000000FFFF0000000000E0F0F090 +:1012A0002060001F2000000000000000000000007F +:1012B0000000000000000018000000000000000016 +:1012C00000000000000000001F03030100000000F8 +:1012D0008FC3F3870F1F0307F8F0E0C08000C0E062 +:1012E00000000000000000001E14000103000000C8 +:1012F000C000000000000000000101030101030321 +:1013000000808080C0C0C08000000000000000009D +:1013100000000000000000000000000001070E3C7B +:10132000070F4F9FBF0F02028000800000000000E7 +:1013300000000000000000000000000000000000AD +:101340000003000000000000E800000000000000B2 +:101350000000000000000000FE7F0F0300000000FE +:10136000000080C0E010000000000000000000004D +:10137000000000000000000000000000000000006D +:101380000000000000000000000000010F1F3CF002 +:10139000001870E0C0000000000000000000000025 +:1013A000000000000000000000000000000000003D +:1013B000000000000000000000000000000000002D +:1013C0000000000000000000000000010700000015 +:1013D000031F70E0E000000080000000000000003B +:1013E00000000000000000000000000000000000FD +:1013F00000000000000000000000000000000000ED +:1014000000000000000000000000000000000000DC +:101410000000000007070F0F000010E1DFFFFFFFD3 +:10142000000000C38CF1FFFF000001011FFFFFFF60 +:10143000073EC0B8FCFFFFFFC0000000C0800020D6 +:1014400000000000000007380000001E70C000000F +:101450000000000000000000070F03000000000073 +:10146000FFFF070000000000FFFFFF3F0F03000029 +:10147000FFFFFFFFFFFF7FFFFFFFFEFFFFFFFFFFFD +:10148000C00030E0C1C3CFFF0000000030C71FFF25 +:10149000000000008000861C00000000000830E012 +:1014A00000000000010103010C3F7FFFFFFFFFFF71 +:1014B00070F8FEFFFFFFFFFF000000C0E0F0F0F853 +:1014C000000000000000000000000000000000001C +:1014D000000000000000000000000000000000000C +:1014E00000000000000000000000000000000000FC +:1014F0000106000000000000C3071F0707030000EB +:10150000FFFFFFFFFFFEF000FFFCFCF8E000000023 +:10151000F8C0000000000000000000000000000013 +:10152000FFFFFFFFFFFFFFE0FFFFFEF8F1F8FE0007 +:10153000F8F8FCE4CCFC7E00000000000000000095 +:10154000000000000000000000000000000000009B +:10155000000000000000000000000000000000008B +:10156000000000000000000000000000000000007B +:10157000000000000000000000000000000000006B +:10158000000000000000000000000000000000005B +:10159000000001020C0000000000E07806000000DE +:1015A000000000000000000000000000000000003B +:1015B000000000000000000000000000000000002B +:1015C000000000000000000000000000000000001B +:1015D000000000000000000000000000000000000B +:1015E000FFFFFF0000000000FFFFFFFF0F000000F3 +:1015F000FFFFFFFFFCF00000FFFFFFFF0000000007 +:10160000FFFFC0FCFF00000000F80000E03C00000D +:1016100000000000000000000000000000000000CA +:1016200000000000000000000000000000000000BA +:1016300000000000000000000000000000000000AA +:10164000000000000000000000000000000000009A +:10165000000000000000000000000000000000008A +:10166000000000000000000000000000000000007A +:1016700080C0E0F0FCFFFFFF0000000000C0E3FFBF +:10168000FFFEF0E18FFFFF00EF3F7FFFFFFEE00076 +:101690008080FFFFFFFFFFFE00FFFFFFFFFE8001D6 +:1016A000FEFCF0E0800000000103070707070F0FB2 +:1016B00000000000000000000F0F0100000000000B +:1016C0003F7FFFFFFF0F01FE00000000000006FC4F +:1016D000FFFFFFFCE0000000F081070F0F1F1F3D20 +:1016E00000FFFFFFFF7FFFFF393141E0F0F0F8F826 +:1016F000FFFFFFFFFFFFFFFFFDFDFEFEFEFCF08092 +:10170000FCE0C000010307001C3C7EFFFFFEC000A0 +:101710000000000001030F3F07031C3EFFFFFFDF37 +:10172000FFFFFFFFFFFFFDF9DFEEECE0A0E0E0E0F0 +:10173000FFFFFF7800000000E0E0C00000000000B4 +:101740000000000000000000000000000000000099 +:101750000000008080000000000000000000000089 +:1017600000000000010101030000000103070F1F3A +:101770000F1FFFFFFEFEFCFC1F3F7FFFFFF9FFFF77 +:10178000F8F0E0C0C0808000E0C000006070888C8D +:10179000000000000000000007030100000000003E +:1017A0000080C0C0E0200000000000000000406099 +:1017B00000000000000103077F7F3F3F3F1F0F0332 +:1017C0000F8FEFF7F7F7FBFB010101030303073F5F +:1017D000FBFFFFFFFFFFFFFF1F0100000000FFFFF7 +:1017E000FFFF3F070100FFFFFFFFFFFFFF7F1FF726 +:1017F00000000000000000000000000000000000E9 +:10180000FF80808080808081FF01010101010181D2 +:1018100081808080808080FF81010101010101FFC2 +:10182000030F3F7FFFFFFFFFFFFFF987FFC7C0C028 +:10183000FFFFFFFFFFFC003FF8FFFFFF3F7FFEFCC5 +:1018400000F8F8FCFFFF0F3F07031C3EFFFFFFDF20 +:101850000000000000000000000000000000000088 +:101860001F1F3F3F3C784000FFFFE080000000006A +:10187000F0000000010101031F3F7FFFFFF9FFFFA0 +:1018800000000000000000000001010303070F0F2B +:10189000F1FFFFFFFFFFFFFFF8F0F0F0F0F8FCFFB3 +:1018A0000000000103070F1F0F1FFFFFFEFEFCFCDF +:1018B0000003070F0F1E3C78FCF8F080000000E0EA +:1018C00001020E0C1C1C3878000000010103070EF9 +:1018D00060E0C0C0E0E0E0000000000103071F3F3F +:1018E0001F3EF8F0E0800000000000000000000053 +:1018F0000000000000203070000000000101030320 +:101900007FFFFFFFFFF8E0C0FFFFFFFF9B09000024 +:1019100001070F1F3F3F3F7F0000E0F9F9FFFFFF86 +:101920000000000000000000000000000103070F9D +:1019300000000000000000000000000000000000A7 +:10194000000000000000FFFFFFFFFFFFFFFFFFF0B0 +:1019500000000000000000F0FFFFFFFFFDFFE30FAD +:101960000000000000000100000000000000000076 +:101970001F1F3F7F7F78E000000000000000000094 +:101980000000000000000000C0FEF8F0C1C70F7F9B +:1019900000000000000000007E78077FFFFFFFFFCF +:1019A0000F8FCFFFFF7F3F1F00000FFFFFFFFFFFE5 +:1019B000FFFFFFFFFFFFFF0301F0F0E1C3C7CFCF41 +:1019C00000000000000018E00001FFFFEFEFEFEF64 +:1019D00000000000003E7FFFFFFFE0FFFFFFFFFF72 +:1019E000F7FEFCF0C080F0FFFFFFFFFFFFFFFFFFEF +:1019F000FF7F1F00000000FFFFFFFFFFFFFFFCF065 +:101A0000000000000000C0FFFFFF3FFFFFFFFCFFE2 +:101A100000000000000000F8FFFCF0F0DF3FFFFFD7 +:101A2000FFFFFFFF1F1D7FFFFFFEFCF8E0800000AF +:101A3000FFFFFFFCFCF0F0E0800000000000000071 +:101A4000000000000000000FC0000000FFFFFFFCCE +:101A5000000000000000C0FF000000000080000344 +:101A600010E7080000000000000000000000000077 +:101A70003FDF0F0F0703000100000000000000001F +:101A8000000000000000FFFE00000000001F7FFFBC +:101A900000000000001FFC000000000003FFFFFF2B +:101AA000FFFFFFFFFFFFFCC0000000010618000061 +:101AB000FFFFFCE000000000000000C1030C00007C +:101AC000000000033CC00000000307FFFFFFFFFF12 +:101AD000000000F0000000000000FFFFFFFFFFFF1C +:101AE000FF3F00000000000000070F1F7FFFFFFF07 +:101AF000FC800000000F3F7FFFFFFFFFFFFFFFFFA5 +:101B0000000000FF010000000FFFFFFFFFFFFFFFCD +:101B10000000FFFFFF0F01FEFFFFFFFFFFFFFFFFC2 +:101B20000F0F1F3FFFFFFFFFFFFFFFFFFFFFFFFF45 +:101B3000FFFFFFFFFFFFFEFCFCF0E0E0C0808080C5 +:101B40000000000000000000000000000000000095 +:101B50000000000000000000000000000000000085 +:101B60000000000000000000000000000000000075 +:101B70000000000000000000000000000000000065 +:101B80000000000000000000000000000000000055 +:101B90000000000000000000000000000000000045 +:101BA0000000000000000000000000000000000035 +:101BB0000000000000000000000000000000000025 +:101BC0000000000000000000000000000000000015 +:101BD0000000000000000000000000000000000005 +:101BE000000000081C1C080000000010383820000D +:101BF00000000000000000000000000000000000E5 +:101C000000000000000000000000000000000000D4 +:101C100000000000000000000000000000000000C4 +:101C200000000000000000000000000000000000B4 +:101C300000000000000000000000000000000000A4 +:101C40000F1F0707070F0F0F0F0F1F1F1F1F1F3F2C +:101C50003F3F3F7F7F7FFFFF00000000000000004C +:101C6000FEFFFFFFFFFFFEFEFEFEFCFCFCF8F8F8A7 +:101C7000F0FFFFFFFFFFFFFF00000000000000007B +:101C80000000000000000000010101030303030342 +:101C900017F7F7E7E7E7C781000000000000000042 +:101CA00000000000003F7FFFFFFFFFFEFEFEFEFC86 +:101CB000FCFCFFFFFFFFFFFF000000000000000032 +:101CC0000000000000FFFFFFFF3F3F3F7F7F7FFFDF +:101CD000FFFFFFFFFFFEF8E0000000000000000033 +:101CE0000000000000C0E3E7E7CFCFCFDFDF9F9F1A +:101CF000BFBF3F3F3F3F1F0F00000000000000003C +:101D00000100000001FFFFFFFFF9F9F9F1F3F3E330 +:101D1000E3E7FFFFFFEFC703000000000000000043 +:101D2000FF7F7FFFFFFFFFFFFFFFFFFFFFFFFEFEC5 +:101D3000FEFEFCFCFCFCFEFF0000000000000000BA +:101D400080C0C0C0C0C1878F9F3F3F7F7F7F7F7FA4 +:101D5000FFFFFFFFFFFF7F1F0000000000000000EB +:101D60000000000000FFFFFFFFE7E7CFFFFFFFFFDE +:101D7000C080FFFFFFFFFFFE00000000000000002A +:101D80000000000000F0F8FCFCFCFCF8F8F0F0802B +:101D90000038F0F0E0E0C0000000000000000000AB +:101DA0000103000000010101030303030707070704 +:101DB000070F0F0F0F1F1F0F000000000000000093 +:101DC000FFFF7F7F7FFFFFFFFFFFFFFFFFFFFFFFA3 +:101DD000FEFEFEFEFEFCFEFF000000000000000014 +:101DE000FFFFFFFFFFFFCF878F9FBFFFFFFFFFFFBB +:101DF000FFFF7F7F3F3F1F1F00000000000000002B +:101E0000C0F0FCFCFEFEFEFEFEFCFCF8F0C1018111 +:101E1000C1E1FBFBF3F3E3C10000000000000000A0 +:101E200000000000007FFF7F7FFFFFFFFFFFFFFF3D +:101E3000FFFFFFFFFFFFFFFC0000000000000000AD +:101E400000000000008FDFCFCFCF8F9F9F9F9F3F6D +:101E50003F3FFFFFFFFF7F3F00000000000000004A +:101E60000000000000F0F9FCFCFCF9F9F9F1F3F3D3 +:101E7000F3E3E7E7E7E7FBF1000000000000000004 +:101E80000000000000FFFFFFFFFFFFFFFFFFFFFF5D +:101E9000FEFEFEFCFCFCFEFF000000000000000057 +:101EA000000000000087DFBFFFFF9F1F1F3F3F3F75 +:101EB0003F7F7F7F7FFFFF7F00000000000000006A +:101EC0000000000000F3FFFBFBF3F7F7F7E7EFEF8D +:101ED000EFCFDFDFDF9F8FE7000000000000000092 +:101EE0000000000000FEFFFEFFFFFEFCFCFCFCFC0F +:101EF000F8F9F9F1F1F3FBFD00000000000000002B +:101F000000000000001F7FFFFFFF7F7F7FFFFFFFBC +:101F1000FFFFFFFFFFFEFEFF0000000000000000CB +:101F20000000000000C0E1E3E7CFCFDFDF9F9F9F0D +:101F3000BF3F3F3F3F3F1F87000000000000000001 +:101F400000000000003FFFFFFFF9F9F3FFFFFFFF74 +:101F5000F0E0FFFFFFFFFFFF0000000000000000B7 +:101F60000000000000FCFEFFFFFFFFFEFEFCFCE0A7 +:101F7000000EFCFCF8F8F101000000000000000079 +:101F800000000000003F7F1F1F1F3F3F3F7F7F7FFC +:101F90007F7FFFFFFFFFFFFF000000000000000049 +:101FA0000000000000E1F7F7FFFFFFF8F0E0E0E0DD +:101FB000C0C0C0C08080E0C0000000000000000081 +:101FC0000000000000F0F0E0E0E0C00000000000D1 +:101FD0000000000000000000000000000000000001 +:101FE00000000000000000000000000000000000F1 +:101FF00000000000000000000000000000000000E1 +:00000001FF diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/lr-e-2j.hex b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/lr-e-2j.hex new file mode 100644 index 00000000..a06e2825 --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/lr-e-2j.hex @@ -0,0 +1,513 @@ +:100000000000000000000000FF7F3F1F0F070301FA +:100010000080C0E0F0F8FCFEFFFFFFFFFFFFFFFFE6 +:10002000FFFFFFFFFFFFFFFF0000000000000000D8 +:1000300000000000000000000000000000000000C0 +:100040000000000000000000FFFFFFFFFFFFFFFFB8 +:100050000000000000000000FFFFFFFFFFFFFFFFA8 +:100060000000000000000000FFFFFFFFFFFFFFFF98 +:100070000000000000000000FFFFFFFFFFFFFFFF88 +:1000800080FF808080FF8080BFFF809F8FFF808106 +:1000900080FF80A0B0FF80BEBFFF80BFBFFF80BFDA +:1000A00002FE020202FE0202FEFE02FEFEFE02FE50 +:1000B0000000000000000000000000000000000040 +:1000C00000FF000000000000FFFF001F0F070301FA +:1000D00000FF00E0F0F8FCFEFFFF00FFFFFFFFFF66 +:1000E0000000000000000F3F000000000000F0FCD6 +:1000F0001F3F3F223F3F241FF8FCFC44FCFC24F838 +:1001000000000000000000000000000000000000EF +:1001100000000000000000000000000000000000DF +:1001200000000000000000000000000000000000CF +:1001300000000000000000000000000000000000BF +:1001400000000000000000000000000000000000AF +:10015000000000000000000000000000000000009F +:10016000000000000000000000000000000000008F +:10017000000000000000000000000000000000007F +:10018000000000000000000000000000000000006F +:10019000000000000000000000000000000000005F +:1001A000000000000000000000000000000000004F +:1001B000000000000000000000000000000000003F +:1001C000000000000000000000000000000000002F +:1001D000000000000000000000000000000000001F +:1001E000000000000000000000000000000000000F +:1001F00000000000000000000000000000000000FF +:1002000000000000000000000000000000000000EE +:1002100000000000000000000000000000000000DE +:1002200000000000000000000000000000000000CE +:1002300000000000000000000000000000000000BE +:1002400000000000000000000000000000000000AE +:10025000000000000000000000000000000000009E +:10026000000000000000000000000000000000008E +:10027000000000000000000000000000000000007E +:10028000000000000000000000000000000000006E +:10029000000000000000000000000000000000005E +:1002A000000000000000000000000000000000004E +:1002B000000000000000000000000000000000003E +:1002C000000000000000000000000000000000002E +:1002D000000000000000000000000000000000001E +:1002E000000000000000000000000000000000000E +:1002F0003F3FFF430000000080C0F0F0D0F06000FE +:10030000000000010101031FFF7F3F1F0F07031FB4 +:100310000080C0E1F1F9FFFFFFFFFFFFFFFFFFFFDC +:10032000000000008080C0F8FF7F3F1F8F87C3F967 +:100330000080C0E0F0F8FCFAFFFFFFFFFFFFFFFBCB +:100340003F7FFF0F1F1F3F7FFF7FFF1F1F1F3F7F4D +:100350003FFFFFEFFFFFFFFFFFFFFFFFFFFFFFFF7D +:10036000F0E0C0F0F8FCFCFEF1E1C0FFFFFFFFFF92 +:10037000F0E0C0F0F8FCFCFEF1E1C0FFFFFFFFFF82 +:100380000000000103070707FF7F3F1F0F07070754 +:100390000080C0E1F3FFFFFFFFFFFFFFFFFFFFFF54 +:1003A00000000080C0C0F0C000000080C0C0F0C0ED +:1003B00000000080C0C0F0C0FFFFFF9FCFC7F7C79D +:1003C0000F0F0F0F0F0707030F0F0F0F0F07070375 +:1003D0000F0F0F0F0F070703FFFFFFFFEFE7E7E325 +:1003E000E0E0E0C0C0808000E0E0E0C0C0808000CD +:1003F000E0E0E0C0C0808000E0E0E0C0C0808000BD +:10040000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC +:10041000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC +:10042000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC +:10043000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC +:10044000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC +:10045000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC +:10046000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C +:10047000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C +:10048000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C +:10049000FFFFFFF3C70F070380F8FFFFFFFFFFFF1A +:1004A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C +:1004B000FF7F1FFFFFFFFFFFFFFFFFFFFFFFFFFFAC +:1004C000FFFFFFFFFFFFFFFFFFFFFFFFFFFEFCF847 +:1004D000F8F8F8F8F1F0E3E79FFFFFFFFFFFFFFFF9 +:1004E000FFFFFFFFFFFFFFFFFED88107070F0F1F72 +:1004F0003F3F3FFFFFFFFFFFFFFFFFFFFFFFFFFF4C +:10050000FFFFFFFFFEF8FCFEFFFFFFFFFFFFFFFB0B +:10051000F1E3C3870703010300808080C0E0F0F1AE +:10052000F9FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5 +:100530000000000000000000FFFFFFFFFFFFFFFFC3 +:10054000FFFFFFFFFEF8FCFEFFFFFFFFFFFFFFFDC9 +:10055000F8F1E1C303010003FFFFFFFFFFFEFEFE12 +:10056000F0F8FCF8F8F0F181879801071F1F3F7F32 +:100570001F0F3FFFFFFFFFFFFFFFFFFFFFFFFFFF1B +:10058000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7B +:10059000FFFFFFFFFFFFFFFF879801071F1F3F7F40 +:1005A0001F8F3FFFFFFFFFFFFFFFFFFFFFFFFFFF6B +:1005B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B +:1005C000FF7F7F7F7F7F7F3F3F3F3FBF9F9F1F1FFB +:1005D000FFFFFFFFFFFEFEFE1F1F0F0F07030000C0 +:1005E000FFFFFFFFFFFFFF3F7FBF9F9FCFCFCFCF1B +:1005F00080C0C0E0FEFFFFFF3F1F073F7FFFFFFF00 +:10060000FFFFFFFFFFFEFDF3FFFFFEFEFCFCF0E03F +:100610000F0F0F0F1F1F1F3FFFFFFFFFFFFFFEFE0C +:10062000E7E7C68000000003C0000001030F7FFF62 +:100630003F7FFFFFFFFFFFFFFCFCF8FFFFFFFFFF17 +:100640000F3F1F1F0FCFE7F7FBFFFFFFFFFFFFFF6E +:10065000F7F7EFEFCFDF9F9FFFFFFEFCFCF8F0E026 +:100660003F3F3F3F1F1F1F1FFFFFFFFEFCFCFCFC27 +:10067000C0800000000101017FFFFFFFFFFFFFFFBF +:10068000F8F2E6DFFFFFFFFF030307070F1F3F7FBF +:100690007F7F7F7F7F7F7F3F3F3F3FBF9F9F1F1FAA +:1006A000FFFFFFFFFEFCFCFC030100000000000058 +:1006B000FFFFFF7F7F3F1F070080C0FCFFFFFFFFA2 +:1006C00003010000C0FCFEFFFF7F7F7F7F7F7F3F35 +:1006D0003F3F3FBF9F9F1F1FFFFFFFFFFFFEFEFF2C +:1006E0001F1F0F0F07030000FEFCFCFCFEFFFF3F77 +:1006F0003F9FCFE0E3C70107070F0F0F0783C1F844 +:10070000FFF38F3F7F7F3F1F80C0C0E0FEFEFCF8FD +:100710001F1F3F3F3F3F3F7F7FFFFFFFFF7F3F1F89 +:10072000070F1F1F3F1F0F0F070F8F9FCFFFF3F9FB +:10073000FCFCFEFEFFFFFFFFF7F7EFEFCFDF9F9F11 +:100740003F3F3F3F1F1F1F1FFFFFFFFEFEFCF8F054 +:10075000C0800000000101017FFFFFFFFFFFFFFFDE +:10076000FFFFFFFFFFFEFEFFE0C080000000000073 +:10077000030303030707070F00808080C0E0E0E069 +:100780000F1F1F1F1F3F3F3FFFFFFFFBFBF3E383D5 +:100790000000000000000000E7E76300000000C068 +:1007A000FFFFFF3F07000000FFFFFFFFFF3F0100CB +:1007B000F0FFFFFFFFFFFFFF0080F0FFFFFFFFFFE5 +:1007C00000000000F8FFFFFF3F1F3F1F0FFFFFFF6C +:1007D000FFFFFFFFFF600000FFFFFFFFFFFF7F073E +:1007E000FFFFFFFFFFFEFEFCFFFBF7CF1F3F7F7FFA +:1007F000F0F0F0F0F0F0F0F87FFFFFFFFF60000096 +:1008000000000000000000000000000000000000E8 +:10081000FFFFFFFFFFFFFFFF0000000000000000E0 +:10082000000000000000FE7F00000000000000004B +:100830000700000000000000FE1E00000000000095 +:100840003F3F00000000000007070707070F7F7FFA +:10085000FFFF7F01FFFFFFFFFFFFFFF3E7F7FFFF52 +:100860000000FCFFFFFFFFFE000000E0F0F8F87C56 +:1008700000000000000000003F1F0F0707010000FC +:10088000FFFFFFFFFFFF7F07FFFDF3E7EFCFCF8FF6 +:10089000F8FCFEFFFFFFFFFF000000000080FEFFEE +:1008A00000000000000000000F0000000000000039 +:1008B000FF1F000103030707FFFFFFFFFFFFFFFF0D +:1008C000FEFCF0E0E0C0C080071FFFFFFFFFFFFF5E +:1008D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28 +:1008E0003FFFFFFFFFFFFFFF0000000000000000D0 +:1008F000F0FEFFFFFFFFFFFF7F3F9FFFFFFFFFFFB8 +:1009000000000000000000000002060C080010308B +:10091000070301E1F0F8F8FF80000080C0E0F0F884 +:100920007F3F9FFFFFFFFFFFFFFFFFFFFFFFFFFF77 +:10093000FFFFFFFFFFFFFFFFFFFEF8F0E0C0010732 +:100940000707070F1F7FFFFFFEFCFCFCFEFFFF3FBA +:10095000070F0F0F0783C1F880C0C0E0FEFEFCF850 +:1009600000000000080818108F1F1F0F07070783DB +:1009700000000000000008183F1F1F3F3F3F3F7F5F +:10098000FFFFFFFFFFFBFBF7F7EFEFEFE7F3F1E010 +:1009900000386103061C007FFEFCF0E0E0C0C08070 +:1009A000000212320073020680000080C0C0E0F036 +:1009B0003F1F0F0707010000FFFFFFFFFFFFFFFFC3 +:1009C000FFFFFFFFFFFFFF60FFFFFFFFFEF00000E4 +:1009D000FFFEF8C00000000007000000000000005B +:1009E000FFFF1F0000000000FFFFFFE0000000000D +:1009F000FFFFFF0000000000FFFF000000000000FC +:100A000000000000000000000010302101392163C7 +:100A1000003821033821037E001833202000031EF4 +:100A2000003020212123067C003E20003C20007F56 +:100A3000003F20003E202060001F30202101011FC8 +:100A40000021210139212163004E08080808007E99 +:100A5000000101010101033E0023260C2020206338 +:100A6000002020202020007F00010101292921638E +:100A70000001010121212163003821212121033EB0 +:100A800000382121033E2060003821212123043D2C +:100A90000038212107202067003026003801033E5E +:100AA000004E080808080818002121212121033ED2 +:100AB0000021210103060C080021210101113163ED +:100AC0000001030600103063002222060C080818FB +:100AD000007103060C18007F0000000000000000F9 +:100AE0000000000000000000000000000000000006 +:100AF00000000000000000000000000000000000F6 +:100B000000000000000000000000000000000000E5 +:100B100000000000000000000000000000000000D5 +:100B200000000000000000000000000000000000C5 +:100B300000000000000000000000000000000000B5 +:100B400000000000000000000000000000FFFFFFA8 +:100B5000000000000000FFFF00000000000000FF98 +:100B600000000000000000000000000000031FFF64 +:100B700000000000000000FC1F3F3F3F7F18030FF4 +:100B8000FCFCFCFCFEFEFEFC7FFF3F3F3F1F0F0016 +:100B9000FFFFFFFFFFFFFFFF00000000000000005D +:100BA0000000000000000000000000000000000045 +:100BB0000000000000000000000000000000000035 +:100BC0000000000000000000000000000000000025 +:100BD0000000000000000000000000000000000015 +:100BE0000000000000000000000000000000000005 +:100BF00000000000000000000000000000000000F5 +:100C0000C0FEFFFFFFFFFFFF3F1FFFFFFFFFFFFFD4 +:100C1000F0FEFFFFFFFFFFFFF7F7E7E7C3C3E3E1E6 +:100C2000E1F1F9FDFDFFFFFF1F7F1F01F0FD7BB725 +:100C3000FFFFFFFF3EFCD8DE3F1F1F3F3F3F3F7ED1 +:100C4000FCFBF7EFDFBF7FFFFFE7E7FFFFFFFFFFE3 +:100C5000F7F7FBFDFEFEFFFFB7CFFFFEFDFD7B7B41 +:100C6000BFBF7FFFFFFFFFFF0F80F0FEFFFFFFFF13 +:100C700070000000000080C0FDFBFBFBFBFBFBF7EE +:100C80007B7B7B7B7B7B7B7BFF9F9FFFFFFFFFFF54 +:100C9000E09098F8FCFCFCFEF7F7EFDFDFBFBFBF8A +:100CA000FFFFFFFFFFFFFFFFFFFFFFFFFBFBF3F176 +:100CB000FFFFFFFFFFFFFFFF7B7BFFFFFFFF7B7B54 +:100CC000F9FBF3F3F3F3F1F1FEFCFDFEFEFEFEFE95 +:100CD000F19090F0F0F0F0F87F7F7F7F7F7F7F7F53 +:100CE000F8FCFEFFFFFFFCF87F67677F7F7FFFFF59 +:100CF000FFE7E7FFFFFFFFFFFFE7E7FFFCF30FFF63 +:100D00007B7B7B7BFCFFFFFFFF9F9FFFFF3FFFFF86 +:100D1000FF9F9FFFFFFFFFFFF19080E0C183070768 +:100D2000FFFFFFFEFFFFFEFCC0800000C08040F020 +:100D30001F0F030000000000FCE080000000000026 +:100D400018060000000000007F7FFFFFFFFF7F7F8D +:100D50000F0F7F1F01030100FFFFFFFFFFFFFF7F5A +:100D60001F03010001030100FFFFFFFFFFFFFFFF63 +:100D70001F0331080513010400000080A04080001B +:100D8000FFFFFFFFFFFFF8E0FFFFFFFFFFFF030391 +:100D9000C08000000080E0FC0100000000000000B6 +:100DA000FF7F3F1F07010100C0C0FFFFFFFFFFFFE4 +:100DB0001FFFFFFFFFFFFFFFFFFFFFFEFCFCFCF834 +:100DC00000000000000F3FFF0000000000C0E0F046 +:100DD000F3E7CFCFCFC38000F3C387FFFEF8000057 +:100DE000F0E0C0000000000080C07E1F0100000095 +:100DF000000000C0FC7E070300000000000000802F +:100E000000000000000000000000000000000000E2 +:100E10000000000000000000016070381E0F030099 +:100E2000C0E070381C8EFFFF0501000000000000CC +:100E30008080000000000000FFFFFFFFFFFFFC01BB +:100E4000FEF8E0FCFEC20FEF000000000000000012 +:100E5000010101FD080000E0030307F9111010FF74 +:100E6000F8FCFFFFFFFF3203FDFDFDFDFD7D3D3D75 +:100E70007D3DDDEDEDF5F5F53F3F0001020C383F1E +:100E8000FFFF00000000FFFFFFFF0001020CF8FF62 +:100E9000FFF961FF080808FF0101013F0808083F4A +:100EA000010101FF080808FFFDFDFDFDFDFDFDFD41 +:100EB000FFFFFFCFE3F8FFFFFDFDFDFFFF7F000019 +:100EC0003F3FFFFEF8800000FFFFFF7F7F7F7F7FB7 +:100ED000FFFFFFFFFFFFFFFF00000000000000001A +:100EE00000000000000000000F03000000000000F0 +:100EF000FFFFFF1F0701030F0000000000000000BC +:100F00000000E0FFFFFFFFFF000000FFFFFFFFFF0B +:100F100003010000C0F8FEFFFFFF7F1F07010080F4 +:100F2000FFFFFFFFFFFF7F1FC0F0FCFFFFFFFFFF82 +:100F300007010000C0F0FCFF070307393EFFFFFF79 +:100F4000FFFFFFFF1FE0C0C0FFFFFFFFFFFFFFFF2E +:100F5000C0C0C0C0C0C0C0C0000000000000000091 +:100F6000FFFF000000000000FFFF03030303030373 +:100F70000303030303030303FFFFFFFFFFFFFFFF61 +:100F800000FFFFFFFFFFFFFF00FFFFFFFFFFFFFF6F +:100F900003FFFFFFFFFFFFFF0000FFFFFFFFFFFF5B +:100FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF51 +:100FB000FFFFFFFFFFFFFFFFFF7F3F1F0F07030143 +:100FC0000000000000000000FFFFFFFFFFFFFFFF29 +:100FD0003F3F3F3F3F3F3F3F000103070F1F3F7F22 +:100FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11 +:100FF00000000000000000000000000000000000F1 +:10100000FF80808080808080FF010101010101015B +:1010100080808080808080FF01010101010101FF4B +:10102000FFFFFFFFFFFFFFFCFFFFFFFFF8E0810373 +:10103000FFFFCF1F7FFFFFFFFFFFFFFFFFFFFFFF50 +:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 +:10105000FFFFFFFFFFFFFFF8FFFFFFFFFFE0800044 +:10106000FFFFFCE0C0000000F080000000073F0030 +:101070000F0F3F7FFFFFC300FFFFFFFFFFFFFFF8E2 +:10108000FFFFFFFFFFFFFC3FFFFFFFFFFFFFFF032F +:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 +:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 +:1010B000FFFC000000FFFFFFC00000000000F0FF89 +:1010C000000000000000030F000100000000FFFF0F +:1010D00000FF00003F0300FFFFFFFF07FFFF1FC3EC +:1010E000FFFFFFFFFFFFFFFF83F1FFFFFFFFFFFF9A +:1010F000FFFFFFFFFFFCF8C1FFFFFFE7031F7FFFBC +:10110000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF +:10111000FFFFFFFFFFFFFFFFFFFFFFFEF0E0E0F834 +:10112000FEE0800000000000071EF9077FCF9F3F10 +:10113000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF +:10114000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF +:10115000FFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFA0 +:10116000FFFFFFFFFF0180C0FFFFFFFFFFFF3F7F8B +:10117000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F +:10118000FFFFFFDE9CFFFFFFE0F8FEFFFFFFFFFF1A +:101190007F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFF5F +:1011A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F +:1011B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F +:1011C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F +:1011D000FFFFFFFFFFF8C000FFFFFFE080000000FF +:1011E000FCE0C00000000001000000073F0000FF1D +:1011F0003F7FFFFFC300FFFFFFFFFFFFFFF8FFFF81 +:10120000FFFFFFFFFC3F83F0FFFFFFFFFF03FFFF38 +:10121000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE +:10122000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE +:10123000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE +:10124000FFFFFFFFFFFFFFFFFFFFFFFFFFFCF0803F +:10125000FFFFF8E081030F0FCF1F7FFFFFFFFFFFAE +:10126000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E +:10127000FFFFFFFFFFFFFFFF000000000000000076 +:10128000000000000000000000000000000000005E +:101290000000000000000000000103070F17070F07 +:1012A000DC99FFE0C7E0C08078F8F00000000000A3 +:1012B00000000107070F3F663F7FFFFCE1871E3CF0 +:1012C000F8F0F0E0C0800000000000000000000026 +:1012D000703C0C7880000000060E1E3474E828185C +:1012E0000000061820C0C080000101020403071E90 +:1012F00030F0E0C0C080800701060E0C1E7EFCFCB2 +:101300008000000000000000000001030E1060805B +:101310001C70E0071F7FFFFF0F1FFFFFFEF8F1C3E8 +:10132000F8F0B06040F0FCFC00000000000000009D +:10133000030C100000000000030F1F7C00000000E1 +:10134000FFDC3F7F4F03000017FCF8F0F8F07E1E33 +:101350000300000000000000010000000000000089 +:10136000FFFF7F3F1F0F0700FFFFFFFFFFFFFFF89B +:10137000FFFFFFFFFCF00000FFFFC73FFF3F07013B +:10138000FFFFFFFFFFFFF880FFFFFFFEF0E0C30F4E +:10139000FFE78F1F3FFEFEFEF8F0C0800000000058 +:1013A000000000000000000300000000030CF0C07B +:1013B000000F30C00000000000000000000000002E +:1013C0000000000000000000000000000007010015 +:1013D00000000F1F1FFF871F7FFFFFFFFFFFFFFFA3 +:1013E000FCF8F8F0E0C1C73F0000071F7FFFFFFFD8 +:1013F0001FFFFEFFFEFFFEFFFF1F000000000000BA +:10140000FFFFFFEF4F070000FFFFFFFFFFFF7F3FE2 +:10141000FFFEFCFCF8F8F0F0000000000000000007 +:1014200000000000000000000000000000000000BC +:1014300000000000000000000000000000000000AC +:10144000000000000000000000000000000000009C +:101450000F03010000000000F8F0FC3F0300000350 +:10146000000000F8FC7EFFFF00000000000000808C +:10147000000000000000000000000000000000006C +:10148000000000000000000000000000000000005C +:10149000000000000000000000000000000000004C +:1014A00000000000000001000C3E7677F3E3F8FE38 +:1014B00070F87E1F8FE0F93C000000C0E0F0F0B84B +:1014C0000000000000007F80000000030001F00029 +:1014D00000007F8C70800000001FFF1CE0000000F7 +:1014E0003FFEC00000000000F0000000000000000F +:1014F00000000000000000000000000000000000EC +:1015000000000000000000000000000000000000DB +:1015100000000000000000000000000000000000CB +:101520003F9FB7C3C6E0FEE0CFF3FEF8F1F83E0000 +:1015300008C0FCE4CCF47E000000077E0F00010729 +:101540000E70800000F0FFFF00000000000000F0BF +:10155000000000000000031F00000000013FFFFF2B +:10156000071F3FFFFFFFFFFFFFFFFFFFFFFFFFFF23 +:1015700080F8FFFFFFFFFFFF000000E0F8FEF8E04B +:101580000003070300000000FFFFFFFFFF1F07012C +:10159000FFFFFEFDF3FFFFFFFFFF1F87F9FFFFFFC8 +:1015A000FFFFFFF0E0FFFFFFFFFE000000E0F0F8AC +:1015B000F800000000000000FF7F1F0F0700000080 +:1015C000FFFFFFFFFFFF3F0FFCFFFFFFFFFFFFFFDE +:1015D0000000E0F8FFFFFFFF0000000000C0F0FF88 +:1015E0000000007F3F0F070300000000F0FFFFFF37 +:1015F00000000000030FFFFF00000000FFFFFFFFDF +:1016000000003F0300FFFFFFFF07FFFF1FC3FFFFB7 +:10161000FFFFFFFFFFFEE000FFFFFEF08000000085 +:10162000FCC0000000000000FF7F3F1F070100001A +:10163000FFFFFFFFFFFFFF3FFFFFFFFFFFFFFFFF7A +:10164000FFFFFFFFFFFFFFFF1F0F0F07010000005D +:10165000FFFFFFFFFFFF7F00FFFFFFFFFFFFFCF02B +:10166000FFFFFFFFF8800000FEF8E0000000000030 +:10167000000000000000001F00000000000003FF49 +:101680000001FFFFFFFFFF1F0FFFFFFFFFFFFFFF37 +:1016900000007FFFFFFFFFFFFFFFFFFFFFFFFFFED9 +:1016A000E1030F1F7FFFFFFFFEFCF8F8F0F0F0F002 +:1016B000FFFFFFFFFFFFFFFFF0F0FEFFFFFFFFFF59 +:1016C0000000FFFFFF0FF10000000000000007FF17 +:1016D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1C +:1016E000FFFFFFFFFFFF7F7FB93141E0F0F0F8F827 +:1016F0005F1F0F0F07010000FCFCFDF9F183037170 +:10170000031F3FFFFFFFFFFFFCFCFEFFFFFFFFFF8C +:10171000000000000103FFFF07031D3EFFFFFFFF66 +:10172000FFFFFFFFFFFFFFFFFFFFFFFFBFFFFFFF09 +:10173000FFFFFFFFFFFFFFFFFDF1F8FCFEFFFEC014 +:10174000FFFFFFFFFFFFFFFF00FCFFFFFFFFFFFFAB +:10175000FF3F0F8080E0F8FFFFFFFF3F7F0F030F89 +:1017600000000000010101030000000103070F1F3A +:101770000F1FFFFFFFFFFFFF1F3F7FFFFFFFFFFF69 +:10178000FFFFFFFFFFFFFFFFFFFFFFFF1F0FC7C3AD +:10179000FFFFFFFFFFFFFFFFC0C0C0C0E0E0E1E7C9 +:1017A000FF7F3F3F1F1FCFEFFFFFFFFFFFFF3F1DEB +:1017B000FFFFFFFFFFF1F3C7000000C0C0E0F0FC37 +:1017C0000F0F0F0707070303FEFEFEFCFCFCF8C02B +:1017D0000301000000000000000000000000FFFF07 +:1017E000000000000000FFFF00000000000000F00B +:1017F00000000000000000000000000000000000E9 +:10180000FF80808080808081FF01010101010181D2 +:1018100081808080808080FF81010101010101FFC2 +:10182000030F070000000000FFFFF9070707000093 +:10183000FFFFFFFFFFFC003F80F8E0C0000007FF54 +:10184000070707030103FFFFFFFBFDFEFFFFFFFF8D +:1018500000000000010103037FFFFFFFFFFFFFFF08 +:10186000E0E0C0C0C0808000000000000000000177 +:10187000000001070F7F7FFF1F7FFFFFFFFFFFFFBC +:101880000003070F1F3F3F3FFFFEFEFCFCF8F0F098 +:101890000E0000000000000000000000010703002F +:1018A0001F3F7FFFFFFFFFFFFFFFFFFFFFFFFFFF68 +:1018B0000003070F0F1F3F7FFBF7EFFFFFFFFF1F27 +:1018C000FEFCF0F0E0E0C08000000000000000003E +:1018D0001F1F3F3F1F1F0F0F0000000103071F3C8A +:1018E0001F3FFFFFFFFFFFFFF0F0E0E0C0808080C0 +:1018F0001F1F1F3F7F1F0F0F000000000101030388 +:101900007FFEFCF8F0E7DC380000000004860F0FD3 +:1019100001070F1F3F3F3B7FFC80E0F8F8E0E080CD +:1019200001070F1F3F3F3F7F000000000000000045 +:1019300000000000000000000000000000000000A7 +:10194000000000000000FFFFFFFFFFFFFFFFFFFFA1 +:1019500000000000000000F0FFFFFFFFFDFFE3EFCD +:10196000FFFFFFFFFEFEFFFFFFFFFFFCF000000098 +:10197000DFDFBF7F7F79E7FFFFFF1F070301010064 +:101980000000000000000000C0FFFFFFFFFFFEF8A6 +:1019900000000000000000007FFFFFFFF08000005B +:1019A0000080C0F0FEFFFFFFFFFFF000000000001E +:1019B000000000000080E3FFF900000000000000CC +:1019C00000000000000018F8FCFDFFE0000000002F +:1019D00000000000003E7FFFFCF0E00000071F3F1A +:1019E0000001010F3F7FFFFFBF0700000000000064 +:1019F000FFFFFFFFFFFFFFFFFFFC0C000000030FD6 +:101A0000000000000000C0FF1F030000FFFFFFFFF9 +:101A100000000000000000F8FFFFCF00FFFFFFFF05 +:101A2000FFFFFFFFFFFEF8E0000103071F7FFFFF3E +:101A3000FFFFFFF8C00000017BFFFFFFFFFFFFFF7C +:101A4000000000000000000FFFFFFF00FFFFFFFF8E +:101A5000000000000000C0FFFFFFFF3F00E0E0E3E8 +:101A6000FFFF1F3F7F7FFFFFFFFFFFFFFFFFFFFF26 +:101A7000FFDFCFCFE7F3F0E0CFFFFFFFFFFFFFFF78 +:101A8000000000000000FFFFFFFEFFFF001F7FFFC0 +:101A900000000000001FFFFFFF01C0E000FFFFFF8C +:101AA000FFFFFFFFFF00033FFFFFFFFEF9E7FFFF20 +:101AB000FFFFFCE00000FEFFFFFFFF3EFCF3FFFF27 +:101AC000000000033FFFFFFFFFFCF80000FEFFFFE8 +:101AD000000000F0FFFFFFFFFFFF0000000080FF9D +:101AE000FF3F03030100000387C0C00000000000A7 +:101AF000FFFFFFFFFFF0C0800000000000000000BB +:101B0000000000FFF9FEFFFFF0000000000000F3FE +:101B10000000FFFFFF0FF1000000000F3F7FFFFFFD +:101B2000FFFFFFF0000000000000000000000000C8 +:101B3000FFFC000000000103030F1F1F3F7F7F7F9A +:101B40000000000000000000000000000000000095 +:101B50000000000000000000000000000000000085 +:101B60000000000000000000000000000000000075 +:101B70000000000000000000000000000000000065 +:101B80000000000000000000000000000000000055 +:101B90000000000000000000000000000000000045 +:101BA0000000000000000000000000000000000035 +:101BB0000000000000000000000000000000000025 +:101BC0000000000000000000000000000000000015 +:101BD0000000000000000000000000000000000005 +:101BE000000041EBFFFF4836000082D7FFFF26DAF6 +:101BF0005A1A222E16161F19DAECB4B4B4C8F89883 +:101C000000000000000000000000000000000000D4 +:101C100000000000000000000000000000000000C4 +:101C200000000000000000000000000000000000B4 +:101C300000000000000000000000000000000000A4 +:101C40000000000000000000000000000000000094 +:101C50000000010101010303030707000000000069 +:101C60000000007FFF3F3F3F7F7F7F7F7FFFFFFFC1 +:101C7000FFFFFFFFFFFFFFFFFFFFFF00000000006F +:101C8000000000F0F8F8F8F8F8F0F0F0F0E0E0E02C +:101C9000C0C0C080FFFFFFFFFFFEFC00000000008F +:101CA00000000000000000000103070F0F0F1F1FBE +:101CB0001F1F1FBFBFBF3F3F3F3F0F00000000007F +:101CC0000000000000000000FFFFFFFFF9F9F1F342 +:101CD000F3F3E7E7E7FFFFFFFFFFFF00000000006F +:101CE0000000000000000000FEFFFFFFFEFEFEFE01 +:101CF000FEFCFCFDFDF9F9F9F1C000000000000058 +:101D00000000000000000000071F3F3F7F7F7FFFB3 +:101D1000FFFFFFFFFFFFFFFFFFFE78000000000056 +:101D20000000000F0303070FFFFFFFFFCFCFCF8F90 +:101D30009F9F1F1F3FFFFFFF7F3F1F00000000000E +:101D4000000000FCFEFEFEFEFEFCFCFCF9F9FBFBC5 +:101D5000FBF3F3F7F7E7E7E7E7F3F800000000002D +:101D600000000000000000000F3F7FFFFFFFFEFFAC +:101D7000FFFFFFFEFCFFFFFFFFFFFF000000000072 +:101D80000000000000000000FFFFFFFF3F3F7FFF5B +:101D9000FFFFFC0001FFFFFFFFFEF000000000005E +:101DA000000000000000000080C0E0E0E0E0C0C0F3 +:101DB00080800000C0808000000000000000000063 +:101DC0000000000F1F0303030F0F0F1F1F1F1F3FF4 +:101DD0003F3F3F3F7F7F7F7FFFFF7F00000000008E +:101DE000000000FFFFFFFFFFFFFEFCFCFCFDFFFF0C +:101DF000FFFFFFF7F7F3F3F1E1F0F8000000000058 +:101E0000000000FEFFFFFFFFFF7F3F7FFFFFFFFFA0 +:101E1000FEF8FCFEFFFFFFFFFFFFFE0000000000DA +:101E20000000000080E0E0F0F3F7F3F3E7E7C78796 +:101E30000F0F0F0F0FDFDF9F9F1F0F00000000002D +:101E40000000000000000000FCFEFEFEFEFCFCFCAA +:101E5000FCFCF9F9F9FFFFFFFFFBE10000000000C7 +:101E600000000000000000007FFF7F7F7F7FFFFFFA +:101E7000FFFFFFFFFFFFFFFFFFFFFF00000000006D +:101E8000000000000000000087CFE7E7E7CFCFCFDA +:101E90008F9F9F9F1F3F3F3F3FDF8F00000000004D +:101EA0000000000000000000FCFEFDFFFFFCF8F851 +:101EB000F9F9F9F1F3F3E3E3E7F7FB0000000000C1 +:101EC00000000000000000003FFFFFFFFFFFFFFFDA +:101ED000FFFFFFFFFEFEFEFEFCFCFF000000000017 +:101EE00000000000000000009FFFDFDF9FBFBFBFBA +:101EF0003F7F7F7F7FFFFFFFFF7F3F0000000000ED +:101F00000000000000000000F0FBF7FFFFF3E3E338 +:101F1000E7E7E7C7CFCF8F8F9FDFEF00000000001C +:101F20000000000000000000FEFFFFFFFEFEFEFEBE +:101F3000FCFCFCFDF9F9F9F9F1F0FC0000000000EF +:101F40000000000000000000010F1F3F7F7FFFFF27 +:101F5000FFFFFFFFFFFFFFFFFFFF3F00000000004C +:101F60000000000000000000FFFFFFFFCFCF9FFF39 +:101F7000FFFFFF8000FFFFFFFFFFF80000000000F1 +:101F80000000000000000000E1F3F8F8F8F9F1F1BA +:101F9000E3E3030373E7E7C7C78F0F000000000008 +:101FA0000000000000000000FFFFFFFFFFFFFFFF39 +:101FB000FFFFFFFEFEFEFEFCFCFFFE000000000037 +:101FC00000000000000000000FBFBFFFFFFEC08048 +:101FD0000000000000000000000000000000000001 +:101FE00000000000000000008080000000000000F1 +:101FF00000000000000000000000000000000000E1 +:00000001FF diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/nu/lr-a-4a.hex b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/nu/lr-a-4a.hex new file mode 100644 index 00000000..0e16cf8b --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/nu/lr-a-4a.hex @@ -0,0 +1,513 @@ +:10000000C5D5E56F3AA6E5B7C23C617CCB3FCB12C4 +:100010006722D6E5CDD5627EFE0120083AD8E547B5 +:100020000E1F1811FE0220083AD9E5470E1D1805CB +:10003000CD55600E052AD6E57CD5CD002DD1CB421D +:1000400028022C2C3A74E5B7200406040E00702C0C +:1000500071E1D1C1C9FE073801AFFE0338023D3D51 +:10006000473AD6E5B7C83AD7E5B7280C2B7EFE0746 +:100070003801AFFE0238013D4F2AD6E52D7CC5CDB3 +:10008000D562C17EFE043801AFFE0238013D5F3A01 +:10009000D7E5B7280C2B7EFE043801AFFE023801ED +:1000A0003D6FCB42280D788780834F060021C760C3 +:1000B0000946C9788780835F8783858787814F0654 +:1000C0000021D0600946C9000300141514181B183C +:1000D000000200000303030300020000010301010A +:1000E00003030303010301010002000003030303F0 +:1000F000000200001012101013131313101210102E +:1001000011131111131313131113111110121010D5 +:100110001313131310121010181A18181B1B1B1B83 +:10012000181A1818191B19191B1B1B1B191B191935 +:10013000181A18181B1B1B1B181A18187CCB3FCB3E +:100140001267E5CDD5627EE1CB4220040F0F0F0F81 +:10015000E60F4F427CCD002D2CCB4028022C2C7E6C +:10016000B177E6C0200A2D7EFE0420023600180C6E +:10017000FE4020082D7EFEFD200236FBE1D1C1C9E4 +:100180002100E0545D133600016805EDB0ED5FCD50 +:10019000EC313270E5FD2158E43A8EE5FE19380461 +:1001A000D61818F832B4E66F260029EB210034196E +:1001B0005E23561A32AFE613AF327AE51ACB7F20B0 +:1001C00007FE1FC8327AE5131ACB7F28EFCB7728BA +:1001D000031318F43E013279E51AE61F3278E5324E +:1001E00077E51ACB6F28093E023279E52177E534AD +:1001F000AF3275E5131AE6C0FE8020101AE61F32F2 +:1002000077E52178E5963C3279E518E81AE6C0FEF4 +:10021000C020B51ACB6F2006E61F3275E5131AE62B +:10022000E0FEE020151AE61F3276E5133A76E52166 +:1002300075E5BE38D7CD3F6218F2CD3F6218CD3A92 +:100240007AE5FE04287FFE0B3004FE073042FE06EE +:10025000281D3A79E5B728782177E54E47C53A75E4 +:10026000E569CDD562C13A7AE5770D10F0186121C4 +:10027000FDE47EFE043059344787804F0600217B21 +:10028000E5093A75E57723ED4B77E5702371184062 +:10029000FE08200ECD0B63011800FD0921E9E434AE +:1002A0001821FE09200DFDE5FD2140E4CD0B63FD85 +:1002B000E11810FE072005CD5A631807FE0A200337 +:1002C000CD7463180B3A75E52A78E5CDD56236040E +:1002D0002175E534C92600292929444D29094F06ED +:1002E00000090100E009C91100E43AFCE4B7280D57 +:1002F000471A6F131A67137DCDAA2F10F4C900088F +:100300000D1018000808090B0B0A08FD360A00FE3C +:10031000092008AF320CE53D320BE53E01FD770FB9 +:10032000FD77103A75E5FD7701FD7704878787FD36 +:1003300077073A78E5FD7703FD7705878787FD77AF +:10034000063E06FD7709AFFD7700FD7702FD770ACF +:10035000FD770CFD770DFD770EC921FCE47EFE20B4 +:10036000D034874F06002100E4093A75E577233A37 +:1003700078E577C92170E57EB7200C3A78E53272CE +:10038000E53A75E53271E535C91FCB113AFDE43226 +:1003900069E5DD217BE52169E57EB7C835DD7E00B5 +:1003A000DD6601878787CB3C1F6F1110D019DD7E7A +:1003B00002DD96013C47CB41280836172C2C361716 +:1003C000180636102C2C36142D2D1180001910E62D +:1003D000110300DD1918BF3ACDE54F87816F260064 +:1003E0002929292922F6E42130640600097E32F801 +:1003F000E4213964097E32F5E4214264097E32FB4E +:10040000E479E6073C4F213064097E326EE52142F3 +:1004100064097E326FE53A8EE5CDEC314F0600215E +:100420004B64097E32D8E5214E64097E32D9E5C994 +:100430000004080E0A070F0500000001000100007B +:100440000100000101010001010001090A080D0E6F +:100450000CAF3289E57EB7C83D202423EB1A6F1319 +:100460001A13D5CB3FCB105D57D5CD002DD1CB4046 +:1004700028022C2CEB7CCDD562E5DDE1E118D63DE0 +:100480002008237E3288E52318CB06013D20142363 +:100490004623CB78280D780630E67FFE0238043DEF +:1004A0003289E53A88E5E60FCB4B280E4FDD7E001A +:1004B000E6F0B1DD7700DD23180E0F0F0F0F4FDDD3 +:1004C0007E00E60FB1DD77007E12133A88E5E6F094 +:1004D00012137BFE7020021E90FEF020031E1014EB +:1004E00010C13A89E5B728083D3289E5063018B3CE +:1004F00023C35564C7C7C7C7C7C7C7C7C7C7C7C709 +:100500002136D5111F68CD2D303E24CD3E30DB0481 +:10051000CB57282DDB030F0FE63CC61021FA655F91 +:100520001600195E235623D57E23666F11B0D6EBD5 +:10053000CD2D303E24CD3E30D121B0D7CD2D301839 +:1005400039DB03070707F5E6065F160021FA651990 +:100550005E235623F1D50707E606C6085F1600217D +:10056000FA65197E23666F11ACD6EBCD2D303E2493 +:10057000CD3E30D121ACD7CD2D300606C52136D5A4 +:10058000112D68CD2D303E0CCD3E302136D5111FBA +:1005900068CD2D303E18CD3E30C110E0C93A57E449 +:1005A000FE01200B2128DA113B68CD2D30184A3A84 +:1005B00057E4FE0220160EC6213CDB115568CD2DF6 +:1005C0003021BCDB115A68CD2D30182D3A57E4FE8E +:1005D00003200B21B2DC115F68CD2D30181B3A5778 +:1005E000E4FE0420140EC621B6DD116F68CD2D3057 +:1005F0002136DE117A68CD2D30C9C667DC67F26717 +:1006000008681E6887679C67B1671E681E681E6859 +:100610001E681E681E681E6828671E683B671E6885 +:100620004E671E6861671E6874671E681E681E68D4 +:100630001E685C664A6681666F66A6669466CB66CF +:10064000B966F066DE6615670367203620434F49BA +:100650004E53203120504C415945520031322043F5 +:100660004F494E53203220504C415945525300209F +:100670003520434F494E53203120504C415945526B +:1006800000313020434F494E53203220504C4159C5 +:1006900045525300203420434F494E5320312050BF +:1006A0004C4159455200203820434F494E53203287 +:1006B00020504C415945525300203320434F494E5E +:1006C00053203120504C4159455200203620434F91 +:1006D000494E53203220504C41594552530020324C +:1006E00020434F494E53203120504C415945520030 +:1006F000203420434F494E53203220504C4159451D +:10070000525300203120434F494E20203120504C7D +:100710004159455200203220434F494E5320322048 +:10072000504C415945525300203120434F494E20EF +:10073000203620504C415945525300203120434F20 +:10074000494E20203520504C41594552530020310C +:1007500020434F494E20203420504C41594552539C +:1007600000203120434F494E20203320504C415926 +:1007700045525300203120434F494E202032205013 +:100780004C41594552530041202D203320434F49BD +:100790004E53203120504C415945520041202D20CC +:1007A0003220434F494E53203120504C415945523D +:1007B0000041202D203120434F494E202031205030 +:1007C0004C415945520042202D203120434F494E83 +:1007D00020203620504C41594552530042202D20B4 +:1007E0003120434F494E20203520504C415945522D +:1007F000530042202D203120434F494E20203320EA +:10080000504C41594552530042202D203120434F36 +:10081000494E20203220504C41594552530000028D +:10082000494E534552542020434F494E0002202048 +:100830002020202020202020202000064031393890 +:10084000342020204952454D20434F52504F5241B1 +:1008500054494F4E00808284860081838587000240 +:100860004C4943454E534544202046524F4D006865 +:100870006A6C6E70727476787A00696B6D6F7173E2 +:100880007577797B00CD5E5F3EFF32D1E5CD286D77 +:100890003EA8CD3E303E0132A9E5CD5E5FC3CF25F7 +:1008A0003100E82110D03600545D13015715EDB02A +:1008B000AF32A7E5329DE5326AE5FB3E5032B5E541 +:1008C00021B5E57EFE14380B2136D5119169CD2D69 +:1008D000301812B7200236282126D53600545D1371 +:1008E000013500EDB011A0693AB2E5FE02380311FE +:1008F000B2692134D7CD2D30CD7F6921AAE57EE6BE +:100900000AFE0A200E3AB2E53D2732B2E5AF32B711 +:10091000E5181B7EE605FE05C2C0683AB2E5FE0298 +:10092000DAC068D6022732B2E53E0132B7E5AF320F +:10093000B9E532B8E53290E53296E53C32B2E6CB25 +:10094000412006328EE53294E53AE0E5328FE53219 +:1009500095E52100002291E52292E52297E5229873 +:10096000E5218000DB04CB4720022D2D22E3E52189 +:1009700010D33600545D13017F09EDB0C30F5D2124 +:1009800042DC11C669CD2D300E0211B2E5CD5F30CB +:10099000C90450555348202020425554544F4E000E +:1009A000044F4E4C59202002312004504C415945EF +:1009B0005200023120044F52200232202004504CB9 +:1009C00041594552530004435245444954200006BE +:1009D0003153542020424C4F434B002130D3118FD0 +:1009E0006ACD2D303E22CD42313E0A3288E53E3876 +:1009F00032B6E53E5032B5E521B6E57EB720093680 +:100A0000382188E535CA896A21B5E57EFE14381C8F +:100A10003AB2E5B7200B2124D511A16ACD2D3018AB +:100A2000092124D511C66ACD2D301812B7200236FF +:100A3000272124D53600545D13013500EDB0CD7F5C +:100A400069213AD911BE6ACD2D300E063A88E53DAE +:100A5000CD6A3021AAE57EE60AFE0A28077EE60571 +:100A6000FE0520223AB2E5B7CAF869D6012732B2AC +:100A7000E5AF3290E53AE0E5328FE52100002291C2 +:100A8000E52292E51803C3F8693E00CD4231C9035F +:100A9000544F20434F4E54494E55452047414D45F4 +:100AA0000004494E5345525420434F494E20414E75 +:100AB00044205055534820425554544F4E0003543F +:100AC000494D452020000420202020205055534827 +:100AD00020535441525420425554544F4E2020200C +:100AE0002020003E13CD4231CD5E5F3A90E5FE02FC +:100AF0002026AF32B2E6CDA86BCDDB693E0132B223 +:100B0000E63A90E5FE0020102110D33600545D1324 +:100B1000017F09EDB0C30F5D3AB7E5FE0028073A43 +:100B200096E5FE02202E3A90E5FE0228102110D311 +:100B30003600545D13017F09EDB0C30F5DCD5E5FDC +:100B4000AF32B2E632B9E53E01CD3E303E0132A7CA +:100B5000E5C3CF252110D33600545D13017F09ED85 +:100B6000B021B8E57EB720033418023600CD966B6D +:100B7000DB04CB4F281D21B9E5CB462003341801F7 +:100B800035E601AE21800020022D2D22E3E53E0155 +:100B9000CD3E30C30F5D218EE51194E506061A4E59 +:100BA000777912231310F7C90E00161521E5E50613 +:100BB0000009DD2191E50603DD7E00BE3812280B19 +:100BC000153E0A814FFEC8280718E1DD232310E8EF +:100BD0007A32D1E579B7C8D60A11E5E528084F067B +:100BE0000021EFE5EDB02191E5010300EDB0626B6E +:100BF000360013010500EDB03A8EE512CD286D21C7 +:100C0000B8D211226DCD2D30DD2AD2E5111600DDCE +:100C100019FD2AD4E5FD23FD23FD230E411E033ECD +:100C2000143288E521C2D2C50E063A88E5CD483097 +:100C3000C106043E0E32B6E5AF3289E53AD0E5B7DB +:100C400020035718447AB720133AD0E5FE0A20044F +:100C5000140C1806FE052002150D181F3AD0E5FEEB +:100C6000AA200B147AFE1820030C160C180DFE5542 +:100C70002009157AFEE820030D16F479FE5D38028E +:100C80000E4179FE4130020E5C3ACFE5FE052804A4 +:100C9000FE0A20212189E53AB6E5BE38183C77796D +:100CA000FE5C283DFD7100FD23DD71000E41DD235A +:100CB000DD231D282CCB402805DD71001803DD71D4 +:100CC000003AAAE5B7201A3E01CD3E303AB6E5B764 +:100CD000C23C6C05C2336C2188E5357EFEFFC22420 +:100CE0006CDD3600003E38CD3E303E13CD4231CD76 +:100CF0005E5FC90342455354202006323020200352 +:100D0000504C41594552530002204E4F2E53434FF1 +:100D100052455320204E414D4520524F554E4420C0 +:100D200020000254494D450021B0D111F36CCD2D66 +:100D3000302190D311086DCD2D3011086DCD2D309F +:100D400011E5E521C2DD3AD1E54F061478FE0A200F +:100D5000032192DDB9200722D2E5ED53D4E5C5E5A4 +:100D6000410E02B820020E06FE0A30072C2CCD6A76 +:100D7000301803CD48302C2C79FE0220020E0406D8 +:100D800003CD5F3010FB2C2C2C2C06031A772C7112 +:100D90002C1310F87DC6066F1313131ACD483013A9 +:100DA000E1C12510A7C9010300119AE5217B6EED71 +:100DB000B001C80011E5E521BD6DEDB0C90101002C +:100DC000535445202020010103504F494E2020203C +:100DD00001010880454845202020020110304D497E +:100DE00054202020010121504141542020200101A4 +:100DF0002350474E41202020020128004F41592016 +:100E00002020020138704E52412020200201601043 +:100E10004F4957202020020189904B484F20202025 +:100E200002026600484E49202020020277505341BA +:100E30004F20202002031250554859202020020341 +:100E400033004253412020200303650041495720CD +:100E50002020030370504B414520202004038800CC +:100E60004D4B4D20202003040150454941202020B6 +:100E700003043200524B4720202003048540494997 +:100E80004F20202004F9FFFFFFFFFFFFFFFFFFFFC0 +:100E9000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF62 +:100EA000FFFFC7C7C7C7C7C7C7C7C7C7C7C7C7C762 +:100EB000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C2 +:100EC000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7B2 +:100ED000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7A2 +:100EE000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C792 +:100EF000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C782 +:100F00003100E8110020CD2D6F227400CD2D6F220D +:100F10007600CD2D6F227800110000CD2D6F22724A +:100F20000011FFFFEBA7ED5222700018FE01002018 +:100F30002100001A856F3E008C67130B78B120F3F7 +:100F4000C9F3ED463100E8DD214E6FC390720E0506 +:100F50003EFFED790CED790CED792100E13600547E +:100F60005D1301FF01EDB0FB0100800B79B020FBA8 +:100F7000F3AF5F16202100E00E10060077233C152A +:100F8000280710F80D20F3180516203C18F47B16DE +:100F9000202100E00E100600BEC29571233C1528EA +:100FA0000710F50D20F018053C162018F47B3CFEC8 +:100FB0000F20BF3100E8CDF277AF3201E016200EEE +:100FC000102100D0060077233C15280710F80D20CB +:100FD000F318053C162018F43A01E016202100D041 +:100FE0000E100600CD3572233C15280710F60D2093 +:100FF000F118053C162018F43A01E03CFE0F20BA27 +:10100000DD21BF70CD9072210F7ADD21BF70CD2818 +:1010100071CDAF70CDF2773E033201E7CD9E793EC0 +:10102000013200E33202E3DB002F0F0F30F93E0301 +:101030003201E7CDB67721AA7BCDD5773A01E70615 +:1010400006CD4A7DCD9579CD9579DB002F0F3014F3 +:101050003A01E7074F0600DD21987BDD09DD6601D7 +:10106000DD6E00E9CD9E79CD9E79CD9579CD9579CE +:10107000DB012F0F38050F381C18C93A01E7FE08AD +:10108000CA44700604CD4A7DC6013201E70606CD8A +:101090004A7DC344703A01E7FE03CA44700604CD9A +:1010A0004A7DC6FF3201E70606CD4A7DC344701172 +:1010B0000000AF3200E70604C5CDC070C110F9C909 +:1010C00021000006201A853001246F1C20F714101F +:1010D000F4D5E53A00E721720087856F5E2356E17B +:1010E0007ABC20097BBD2005212F7A180321387A8C +:1010F0001183E7010900EDB011000121A0D13A00F0 +:10110000E7A72804471910FD2281E73E083280E74F +:101110003A00E7C6303286E72100E7342180E7DD78 +:1011200021BF70CD2871D1C97E23FE0028125E2315 +:1011300056234F7E12133E041223130D20F518E898 +:10114000DDE90F0F0F0FE60FC630FE3A3802C60773 +:10115000FD7700FD360104DDE9E60FC630FE3A38C2 +:1011600002C607FD7700FD360104DDE9F50F0F0F1C +:101170000FE60FC630FE3A3802C607FD7700FD368F +:101180000104F1E60FC630FE3A3802C607FD7702C9 +:10119000FD360304C908D9DD219E71C31572211BD8 +:1011A0007ADD21A871C32871D9FD21B8D0DD21B520 +:1011B000717CC34271FD23FD23DD21C1717CC359C4 +:1011C00071DD21CD717DFD23FD23C34271DD21D968 +:1011D000717DFD23FD23C3597108D9FD23FD23FD36 +:1011E00023FD23DD21EB715FC34271FD23FD23DD70 +:1011F00021F7717BC3597108D9FD23FD23FD23FD20 +:1012000023DD2109727EC34271FD23FD237EDD2192 +:101210002372C359712101D001FF0F3600545DEDD7 +:10122000B0DDE9CD9E79DB000F38060FDAB36F1819 +:10123000F208C39C6FBEC8F5E5DD214072C3907211 +:10124000211B7ADD214A72C32871E1FD21B8D07CCF +:10125000CD6C71FD23FD23FD23FD237DCD6C71F14C +:10126000F5FD23FD23FD23FD23CD6C71FD23FD231F +:10127000FD23FD237ECD6C71CD9E79CD9E79DB0063 +:101280000FDA89720F380418EFF1C9F1C1C3007089 +:101290002101D001FF073600545D1313CDA779213A +:1012A00000D001FF073600545D1313CDA779DDE9A7 +:1012B0003EFFD305CDB67721417ACDD577DB03212B +:1012C000AED1CD3376DB0421AED2CD3376CDE47210 +:1012D000CD7273CD9579CD9579DB00EEFF0F0FDAE6 +:1012E000337018D9218774CDD577CDB073DB04EE78 +:1012F000FFCB57284B21FC73CDD577DB03EEFF0FD7 +:101300000F0F0F110000219073010005E60F200A56 +:10131000195E23666BCDD57718250C1C1CB92002ED +:1013200018EE10F60108051C1CB9200218090C1053 +:10133000F6FE0F200A1C1C195E23666BCDD577C9FB +:10134000212A74CDD577DB03EEFF21A873110000AD +:101350000F0F0F0FE60F28111C1CFE08280B1C1C7A +:10136000FE0A28051C1CFE0FC0195E23666BCDD536 +:1013700077C9DB042F0F0F3813AF8721AE74856F49 +:101380003E008C675E23666BCDD577C93E0118EAB7 +:10139000D274E374F574077519752B753D754F7527 +:1013A0006175737585759775A875CB75EE75117632 +:1013B000DB03EEFF47E6032825FE012826FE022870 +:1013C00027214774CDD577780F0F47E603281EFEF7 +:1013D00001281FFE022820215274CDD577C921573C +:1013E0007418E121677418DC21777418D7216274AE +:1013F00018E821727418E321827418DE0B92D3432B +:101400004F494E204D4F444520200B12D420202020 +:1014100020202020202020200E30D420202020201A +:10142000202020202020202020000B92D3434F4951 +:101430004E204D4F444520410B12D4434F494E207E +:101440004D4F44452042000730D6313535205345B5 +:10145000430001B0D635000730D63138302053452F +:10146000430001B0D633000730D631373020534522 +:10147000430001B0D632000730D631363020534514 +:10148000430001B0D634000912D5424F44592054CC +:101490005950450912D6504C41592054494D450BDD +:1014A00092D6434F4D4D414E444F4D454E00B27480 +:1014B000C2740C30D55441424C45205459504520FB +:1014C00020000C30D55550524947485420545950AB +:1014D00045000DB0D33120434F494E203120504CB0 +:1014E0004159000EB0D33220434F494E5320312092 +:1014F000504C4159000EB0D33320434F494E532036 +:101500003120504C4159000EB0D33420434F494E46 +:1015100053203120504C4159000EB0D33520434F59 +:10152000494E53203120504C4159000EB0D3362043 +:10153000434F494E53203120504C4159000EB0D3F7 +:101540003120434F494E203220504C415953000E18 +:10155000B0D33120434F494E203320504C41595392 +:10156000000EB0D33120434F494E203420504C411F +:101570005953000EB0D33120434F494E20352050EF +:101580004C415953000EB0D33120434F494E2036C1 +:1015900020504C415953000EB0D3202020204652F9 +:1015A00045452020202020000EB0D33120434F4954 +:1015B0004E203120504C4159200E30D43120434F21 +:1015C000494E203220504C415953000EB0D33220A6 +:1015D000434F494E53203120504C41590E30D431A5 +:1015E00020434F494E203320504C415953000EB0F8 +:1015F000D33320434F494E53203120504C41590E94 +:1016000030D43120434F494E203520504C4159535E +:10161000000EB0D320202020465245452020202017 +:10162000200E30D43120434F494E203620504C41BB +:10163000595300EEFF06082336042B0F38043630CA +:10164000180236312323232310EDC9CDB6772100AC +:10165000D0110508010008722373230B78B120F71D +:101660002100E11101E13600010001EDB0FB21A3F1 +:10167000761100E1012000EDB0CD9579CD9579CDC1 +:101680009579DB002F0F0F30F02100E11101E136D9 +:1016900000010001EDB0CD9579CD9579CD9579F327 +:1016A000C333701300C0001080A00013004001106D +:1016B00000A0001300C00010C06001130040011022 +:1016C00040600100030080001000800003008000E3 +:1016D00010018000030180001000800003018000E1 +:1016E0001001801100C0010001EDB0C92100E1111D +:1016F00001E13600010001EDB0AF3206E3676F2271 +:101700000DE7CDB67721DF7ACDD577FB0608DB0074 +:101710002F21C0D2CD38770608DB012F21C0D4CDD0 +:1017200038770608DB022F21C0D6CD38770608218E +:1017300040D17BCD387718142336042B0F3804366C +:1017400030180236312323232310EDC9CD95773A83 +:101750000DE721C0D7CD78773A0EE7CD7877CD9ECB +:1017600079CD9E79DB012F0F0F3802189EDB002FF9 +:101770000F0F3097F3C333702336042BF50F0F0F81 +:101780000FE60FC6307723232336042BF1E60FC66E +:1017900030772323C9210FE73A09E0E6C0BEC832FB +:1017A0000FE73A0EE7C60127320EE7D03A0DE7C63B +:1017B0000127320DE7C92100D001FF073600545D33 +:1017C0001313CDA7792101D001FF073600545D1313 +:1017D00013CDA779C97EFE00C8CDDE7718F74E0677 +:1017E00000235E2356237E123E04131213230D2082 +:1017F000F5C92100E00E06AF06007710FD0D20F8B8 +:10180000C90E00060010FE0D20F93D20F4C9C5E503 +:10181000772310FCE10E2009C10D20F2C9CDB67767 +:10182000CD3678CD9579CD9579CD9579DB002F0F93 +:101830000FDA337018ED2100D001FF0F3E867723B9 +:101840000B78B120F7210CD00610E5C5CD7178C119 +:10185000E11100011910F3064021BFD77EB07723B4 +:10186000237EB077118000197EB0772B2B7EB07766 +:10187000C90619CD7D782323232310F7C9E53E033C +:101880007723233E0277E1E5118000193E0177239B +:10189000233E0077E1C9F3CDB67721B379CDD57773 +:1018A000CD9579CD9579CD9579DB002F0F3802183C +:1018B000EC110146CD8579CD9579CD9579CD957988 +:1018C000DB002F0F380218E913CD8579CD9579CD3E +:1018D0009579CD9579DB002F0F380218EF13CD8560 +:1018E00079CD9579CD9579CD9579DB002F0F38029B +:1018F00018EC3E102110D00E031101460610732380 +:10190000722310FA130D20F4112000193D20E83E37 +:10191000031101520E0406307323722310FAD511FD +:10192000200019D10D20EF133D20E91101490E04CB +:1019300006307323722310FAD511200019D10D201F +:10194000EFCD9579CD9579CD9579DB002F0F3802C4 +:1019500018A0CD9579CD9579CD95793E01D301CD5E +:101960009579CD9579CD9579DB002F0F30F1AFD3F7 +:1019700001CD9579CD9579CD9579DB002F0F0FDAD3 +:101980003370C371792100D0010008732372230BD7 +:1019900078B120F7C90100400B78B120FBC90100E4 +:1019A000900B78B120FBC97E12232313130B78B15F +:1019B00020F5C90EA0D141204220432044204520DB +:1019C000462047200E20D2482049204A204B204C58 +:1019D000204D204E200EA0D24F20502051205220CA +:1019E0005320542055200E20D356205720582059DC +:1019F000205A202020202014A0D331203220332050 +:101A00003420352036203720382039203020000877 +:101A1000A0D052414D2020204F4B0010A0D0524169 +:101A20004D2020204E472020282020202029005211 +:101A30004F4D2020204F4B00524F4D2020204E472D +:101A40000016A0D044495020535720312032203373 +:101A50002034203520362037203803A0D153573189 +:101A600003A0D2535732000198D2201BC4D22020A9 +:101A70002020202020202020202020202020202066 +:101A8000202020202020202020000CA0D0494E54CF +:101A9000455246414345204F4B00A07AB57ACA7A59 +:101AA00011A0D0434845434B20494E54455246412E +:101AB000434520310011A0D0434845434B20494EB7 +:101AC0005445524641434520320011A0D043484579 +:101AD000434B20494E544552464143452033000A6A +:101AE00020D1575249544520444154410C20D249F9 +:101AF0004E544552464143452031200CA0D220206F +:101B0000205245414420444154410C20D4494E5474 +:101B10004552464143452032200CA0D4202020527B +:101B200045414420444154410C20D6494E5445522D +:101B3000464143452033200CA0D620202052454169 +:101B40004420444154410F40D230203120322033D0 +:101B500020342035203620370F40D4302031203239 +:101B6000203320342035203620370F40D630203126 +:101B70002032203320342035203620370F40D1301A +:101B8000203120322033203420352036203706A063 +:101B9000D754494D494E4700000000000000B07284 +:101BA000EC765E7C4B7696781D780D20D130312016 +:101BB000444950205357495443480BA0D130322058 +:101BC000492F4F20504F52540820D2303320534FCA +:101BD000554E440CA0D23034204348415241435426 +:101BE00045520820D3303520434F4C4F5216A0D3D6 +:101BF00030362043524F53532048415443482050DD +:101C000041545445524E007CB8C07DB9C921008072 +:101C1000010008AF77230B78B120F8C972230B7845 +:101C2000B120F9C97223230B78B120F8C908D9C3B0 +:101C3000397CC7C7C7C7C7C7C72109E034CD527CA5 +:101C40003A02E30F38072106E33E808677C9D908B8 +:101C5000FBC92100E11100C0010001EDB0C9CDB602 +:101C60007721B97DCDD5772A9C7D2206E7DD210835 +:101C7000E7FD21A07DCD9579CD9579CD9579CD8B59 +:101C80007CDB002F0F0FDA337018D3FD220BE73EF9 +:101C9000013205E70606CD507DCDE57CCDCF7C0138 +:101CA0000000ED4313E3DB002F0F0F3004C1C333FB +:101CB00070DB002F0FDCCF7CDB012F0F38340F38A7 +:101CC0005DED4B13E30B78B120D8CDE57C184F3A8E +:101CD00005E74F0600FD2A0BE7FD09FD7E00D30056 +:101CE000F680D300C93E00D3003E80D3000600102A +:101CF000FEC9CDE57CCD9579CD9579CD95793A071D +:101D0000E75F3A05E7BBC80604CD507D3D3205E7E5 +:101D10000606CD507DCDCF7C010000C3A27CCDE571 +:101D20007CCD9579CD9579CD95793A06E75F3A05E1 +:101D3000E7BBC80604CD507D3C3205E70606CD5012 +:101D40007DCDCF7C010000C3A27C4FD6033C181789 +:101D50004FC52120D1118000470528031918FAC169 +:101D6000237023237079C9C52120D111800047FE3B +:101D7000012804051910FDC1237023237079C9C5FA +:101D80000E00060010FEF53A00D0CB4F2809F10DE9 +:101D900020F03D20EBC1C9F1C10601C915010000C9 +:101DA000000102030405061C111213141520212240 +:101DB0002324252627000000000BA0D053204F200D +:101DC00055204E204420530F20D1303120484F4C15 +:101DD000452044494747494E4715A0D1303220504D +:101DE00049434B494E4720555020464F5254494E87 +:101DF000450F20D2303320444F4F52204F50454E94 +:101E0000494E4713A0D23034204255524945442010 +:101E1000494E544F20484F4C451420D3303520466E +:101E2000414C4C494E4720494E544F20484F4C4559 +:101E300010A0D3303620504C41594552204B494CCC +:101E40004C45441220D430372054494D452055503C +:101E5000205741524E494E4716A0D430382054499D +:101E60004D452053434F524520434F554E54494E04 +:101E7000471120D5303920434F494E20494E534514 +:101E80005254494E470FA0D53130205A4F4F4D2064 +:101E9000494E20202020200F20D63131205A4F4F8C +:101EA0004D204F55542020202016A0D631322050EE +:101EB0004C415945522046414C4C494E4720202028 +:101EC00020200D20D731332047414D452053544128 +:101ED00052540CA0D731342047414D45204F564530 +:101EE000521B20D831352042474D2028434F4E54B5 +:101EF000494E5549545920444953504C4159290E93 +:101F0000A0D8313620524F554E4420434C454152C3 +:101F10000E20D9313720424C4F434B20434C454192 +:101F2000520DA0D931382054494D4520555020201C +:101F3000201220DA31392042474D202847414D45B3 +:101F400020504C41592912A0DA32302047414D45EA +:101F500020434F4D504C4554494E470C20DB202028 +:101F60004D5553494320454E4420000000C7C7C784 +:101F7000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7F1 +:101F8000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7E1 +:101F9000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7D1 +:101FA000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C1 +:101FB000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7B1 +:101FC000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7A1 +:101FD000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C791 +:101FE000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C781 +:101FF000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C771 +:00000001FF diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/nu/lr-a-4b.hex b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/nu/lr-a-4b.hex new file mode 100644 index 00000000..534377e2 --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/nu/lr-a-4b.hex @@ -0,0 +1,513 @@ +:10000000E7ADCEF6B6C1E7B9C9F4A58AC1AE92C1D3 +:10001000B89DC1B8C7A587C9CCB198C9AF9CD60255 +:10002000B1C2E8BEC0F7BA9DC704A2C1E8CFF6A529 +:10003000C2E8AAC9EDB2CBF503A59DC0AC90C2A998 +:100040008DC8B198CAB99DD5A59AD706A184D707FE +:10005000A4D0D5A6CAD2A8C3C5B5CDD2B8C6BCCD8A +:1000600008A5D4AAD3AEC5BBD009B3C50AA8D1B6DA +:10007000C4B6C70D87CACB0F9DC2E6D71F0101A822 +:1000800095C0E5D1F7AA95C8EEA5C8EEB9C1E5C8F7 +:10009000EED1F6BEC0F7A284CB00AE91C1C2D6D7D6 +:1000A000B4C4D2D3CB04A2C0E5D1F7A7C8EE03A550 +:1000B0009AC6D0B99DC0D706A184C6D007A3C0D721 +:1000C000B0C2D6B4C4CBD2D3BCC4D308A7CBB6CAB3 +:1000D000CC09BBCB0AB9C9CBCD0E91C1C2D6D71FB3 +:1000E000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7A0 +:1000F000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C790 +:10010000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C77F +:10011000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C76F +:10012000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C75F +:10013000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C74F +:10014000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C73F +:10015000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C72F +:10016000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C71F +:10017000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C70F +:10018000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7FF +:10019000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7EF +:1001A000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7DF +:1001B000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7CF +:1001C000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7BF +:1001D000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7AF +:1001E000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C79F +:1001F000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C78F +:1002000002C002C1C406C204080808080C000000AD +:10021000C8C610000C0E0C0E000000000ACACA026C +:10022000CA0A08080000000000000000C406C2045A +:1002300020AC20AE00000000161616161C1E1C1E58 +:10024000B4000000B4B5B4B516181A20181A20204E +:100250001A18161600000000000000001412B0B2B8 +:10026000A09C9EA000000000A6A6A6A6A1A0A1A0FA +:10027000A0000000A0A1A0A1A6A6A0A0A6A6A6A03E +:10028000A6A6A6A60000000000000000A238A43622 +:1002900092908E00000000003A3A3A3A9899989964 +:1002A0009900000098999899989992923C3C3C3C0E +:1002B0003C3C3C3A000000000000000094969496FC +:1002C000B6BAB6BAE6E8EAEC222222222424242492 +:1002D000EE000000EEEFEEEFE4E2B6B6E2E4B6B612 +:1002E000E4E2222200000000000000000000000004 +:1002F000DDDEDFDE00000000DEA7DEA7404040407C +:10030000BF000000DDBFDDBFDD3EBCDFA7DEA7DE36 +:10031000DEA7DEA7DD34DD00DD34DDDDDEDFDEDDA2 +:1003200080848200000000008A8A8A8A2A2A2A2A77 +:100330008C0000008C8D8C8D8C8482808A8A8A8AC5 +:100340008A8A8A8A00000000000000008628882629 +:10035000CECCCECC30323032CECFCECFCECFCECF31 +:10036000CF000000CECFCECFCECFCECFCECFCECF10 +:10037000CECFCECF2C2E30002E2CCE000000000091 +:10038000D0D1D0D100000000D4D4D4D4D4D4D4D48B +:10039000D8000000D4D4D4D4D8D0D100D4D4D4D46C +:1003A000D4D4D4D4D1DBD9D5D5D9DBD1D5D7D5D7F1 +:1003B00000000000414041400040004000000000BB +:1003C00001010000000040400000000000010100A9 +:1003D000010000000000000000000000414041401A +:1003E000000100010000000000400040000000008B +:1003F00000000000000000000040000000000000BD +:1004000000000000000000000000000040404141EA +:1004100000010100000000000040004000004040DA +:10042000000000000000404040400000004000008C +:10043000004000000000000000000000414041407A +:100440000101010000000000004000400000000029 +:10045000000000000000000000000101004000005A +:100460000040000000000000000000004141414148 +:1004700001010101414141410040004000000000F4 +:100480000000000000000000010101010101010164 +:10049000010100000000000000000000000000005A +:1004A000004001000000000000404000004000400B +:1004B000000000000000004000000101000040407A +:1004C000000040400040000000000000C08180802B +:1004D0000101010000000000014101410000000095 +:1004E00000000000000000000001010101410101C5 +:1004F00001410101000000000000000041404140B6 +:1005000040414041000000000000000000000000E9 +:1005100000000000000000000000000000000000DB +:1005200000000000000000000000000000000000CB +:1005300000010001000000000040004000004040B9 +:1005400000000000004000400000010000400040AA +:100550000040004001010101010101010100010011 +:10056000FE00FE000000000000000000000000008F +:1005700000000000000000000000000000FEFE007F +:10058000FE0000000000000000000000000000006D +:10059000000000000000000000000000000000005B +:1005A000000000000000000000000000000000004B +:1005B000000000000000000000000000000000003B +:1005C00000F5FC000000000000000000000000003A +:1005D000000000000000000000000000000000001B +:1005E000000000000000000000000000000000000B +:1005F000FAFCF50000000000000000000000000010 +:1006000000000000000000000000F8F800000000FA +:10061000000000000000000000000000FCFCFCFCEA +:10062000FFFFFFFF000000000000000000000000CE +:1006300000000000000000000000FFFF0101FFFFBC +:1006400001010000000000000000000000000000A8 +:100650000000FE000000000000000000000000009C +:10066000000000000000000000FC00FE0000000090 +:10067000000000000000000000000000000000007A +:10068000FDFDFD0000000000F808F8080000000073 +:10069000000000000000000000FDFDFDF808F8F873 +:1006A000F808F8F800000000000000000300030054 +:1006B000000000000000000000000000000000003A +:1006C000000000000000000000000000000000002A +:1006D000000000000000000000000000000000001A +:1006E00000FC00FC00000000000000000000000012 +:1006F00000000000000000000000FC0000000000FE +:1007000000000000FCF8F8FCFCF8F8FCFC00FC0021 +:1007100000000000FD00FD000000000000000000DF +:10072000F0FF0000000000000000000000101000BA +:10073000100000001010101010101010FD00FD002F +:1007400000FF00FF000000000000000000000000AB +:100750000000000000000000000000000000000099 +:100760000000000000000000000000000000FEFE8D +:100770000010100000000000000000000000000059 +:100780000000000000000000000000000000000069 +:10079000000000000000000000000000FE0001005A +:1007A0001010100000000000000000000000000019 +:1007B0000000000000000000000010100000000019 +:1007C0000000000000000000000000000404040419 +:1007D000020202020101010100000000000000000D +:1007E00000000000000000000202020202020200FB +:1007F00002020000000000000000000000000000F5 +:1008000010101010000000000000000000000000A8 +:1008100000000000000000000000081000000000C0 +:1008200000000000000000000000000000100000B8 +:100830001010100000000000101010100000000048 +:100840000000000000000000001010101010101038 +:100850001010101000000000000000000400040050 +:100860001010101000000000000000000000000048 +:100870000000000000000000000000000000000078 +:100880000000000000000000000000000000000068 +:100890001010101000000000000000000000000018 +:1008A0000000000000000000101010100000000008 +:1008B0000000000010101010101010101010101078 +:1008C00000FF00FFF800F80000000000000000003A +:1008D00000F800000000000000000000040000001C +:1008E000000400000000000000000000F800F80014 +:1008F00000FC00FC00000000000000000000000000 +:1009000000000000000000000008080008090000C6 +:100910000808000000000000000000000000F8F8D7 +:1009200000000000000000000000000000000000C7 +:1009300000000000000000000004000000000000B3 +:10094000000000000000000000000000F800F800B7 +:100950000000000000000000000000000000000097 +:10096000000000000000000000040000040407076D +:10097000040404000000000000000000F8F8F8F88B +:10098000FCFCFCFCFCFCFCFC000000000000000087 +:100990000000000000000000F9FDFCFCFDFDFC0073 +:1009A000FDFD00000000000000000000000000004D +:1009B0000000000000000000000000000000000037 +:1009C00000000000000000000000F800000000002F +:1009D000000000000000F800F8000000F9F9F9F943 +:1009E00000FFFF0000000000000000000000000009 +:1009F00000000000000000000004FF0000000303EE +:100A00000000FDFD0000000000000000F808F808EC +:100A100000000000000000000000000000000000D6 +:100A200000000000000000000000000000000000C6 +:100A300000000000000000000000000000000000B6 +:100A400000000000000000000000000000000000A6 +:100A50000000000000000000000000000000000096 +:100A6000000000000000FCF8F8FC0000F8F9F8F9BC +:100A70000000000008000800000000000000000066 +:100A8000000800000000000000000000000000005E +:100A90000000000000000000000000000800080046 +:100AA000000400040000000000000000000000003E +:100AB0000000000000000000000000000000000036 +:100AC0000000000000000000000000000000080816 +:100AD0000000000000000000000000000000000016 +:100AE0000000000000000000000000000000000006 +:100AF00000000000000000000000000008000800E6 +:100B000000000000000000000000000000000000E5 +:100B100000000000000000000000000000000000D5 +:100B200000000000000000000000000005050505B1 +:100B300004040404FCFCFCFC0000000000000000B5 +:100B4000000000000000000007070404070704007D +:100B50000707000000000000000000000000000087 +:100B60000000000000000000000000000000000085 +:100B7000000000000000000000000800000000006D +:100B80000000000000000000000000000000000065 +:100B90000000000000000000000000000000000055 +:100BA0000000000000000000000000000000000045 +:100BB0000000000000000000000000001000100015 +:100BC0000000000000000000000000000000000025 +:100BD0000000000000000000000000000000000015 +:100BE0000000000000000000000000000000000005 +:100BF00000000000000000000000000000000000F5 +:100C000000000000000000000000000000000000E4 +:100C100000000000000000000000000000000000D4 +:100C2000040C07010807010008070100000000008C +:100C30000000000006060606080808010A06000073 +:100C40000A06010000000000000000000708090774 +:100C5000080801000606060106060601000000005D +:100C60000000000005040303080801000606060052 +:100C70000606060100000000000000000304030453 +:100C8000080801000A0600000A0601000000000032 +:100C90000000000000000000080606040505050528 +:100CA00005050505060804000608040004030404FD +:100CB00008080400060606000606060000000000FC +:100CC00000000000050505050808080205050500E7 +:100CD00005050500040404000404040000000000ED +:100CE000080C0800050505000505050004040404BA +:100CF0000404040405050505430320FFA3FFA3FF27 +:100D0000A2FFA2FF000000000000000000000000A1 +:100D10008383A3FFA3A3FFFFA2A2FFFF00000000A5 +:100D2000000000000000000043A0FFFFA3A3A3FFFA +:100D3000A2A2A2FF000000000000000000000000CE +:100D400043A0FFFFA3A3A3FFA2A2A2FF00000000F5 +:100D5000000000000000000043A0FFFFFFFFFFFFB6 +:100D6000A2A2FFFF00000000000000000000000041 +:100D7000FF832020A3A3A3A3A2A2A2A2FFFFFF00A0 +:100D8000FFFFFFFF0000000043A0A0FFA3A3A3FFFD +:100D9000A2A2A2FF0000000000000000000000006E +:100DA00003232020232323FF222222FFFFFFFF0013 +:100DB000FFFFFF0000000000FF0320FF232323FFAD +:100DC000222222FFFFFFFFFFFFFFFFFF00000000C6 +:100DD0000000000000000000000000000000000013 +:100DE00000000000070607060004040200000000DF +:100DF00000000000000000000000000005060708D9 +:100E000000050500000000000000000000000000D8 +:100E100000000000010504020005050000000000BC +:100E200000000000000000000000000003030303B6 +:100E300000080200000000000000000000000000A8 +:100E40000000000000000000000008020000000098 +:100E5000000000000000040000040000040400047E +:100E60000005050000000000000000000000000078 +:100E70000000000004040404000000000000000062 +:100E80000000000000030300000303000000000056 +:100E90000000020000000000000000000004000448 +:100EA000000400040404040400000000FCFA000034 +:100EB0000206040000000000000000000000000026 +:100EC00000F8F800FAF70000010707000000000032 +:100ED000000000000000000000F80000FCFCFCFC2A +:100EE00004040404000000000000000000000000F2 +:100EF00000F80000FCFCF9000404040400000000F9 +:100F0000000000000000000000F80000F8F90000F8 +:100F100000080700000000000000000000000000C2 +:100F20000000F8F8FCFCFCFC0404040400000000D1 +:100F3000000000000000000000F80000FCFCF900C8 +:100F40000404070000000000000000000000000092 +:100F500000FC000000000000000000000000000095 +:100F600000000000000000000000FC000000000085 +:100F70000000000000000000000000000000000071 +:100F8000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7F1 +:100F9000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7E1 +:100FA000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7D1 +:100FB000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C1 +:100FC000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7B1 +:100FD000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7A1 +:100FE000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C791 +:100FF000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C781 +:10100000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C770 +:10101000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C760 +:10102000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C750 +:10103000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C740 +:10104000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C730 +:10105000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C720 +:10106000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C710 +:10107000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C700 +:10108000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7F0 +:10109000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7E0 +:1010A000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7D0 +:1010B000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C0 +:1010C000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7B0 +:1010D000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7A0 +:1010E000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C790 +:1010F000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C780 +:10110000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C76F +:10111000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C75F +:10112000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C74F +:10113000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C73F +:10114000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C72F +:10115000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C71F +:10116000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C70F +:10117000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7FF +:10118000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7EF +:10119000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7DF +:1011A000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7CF +:1011B000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7BF +:1011C000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7AF +:1011D000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C79F +:1011E000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C78F +:1011F000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C77F +:1012000002510101000392D4010118030FD0D5CF80 +:10121000D2010218030ED0D1D5D3010318030CD08C +:10122000D1D2D4D5D3010418030AD0D1D2D4D4D486 +:10123000D5D3010527D5D3010627D5D3010728D358 +:10124000010828D3010927D5D3010A27D5D3010BDB +:1012500027D5D3010C27D5D3010D27D5D3010E27D0 +:10126000D5D3010F27D5D3011027D5D3011127D509 +:10127000D3011227D5D30253010726CA010825CB73 +:10128000CC0254010727CD010827CE0252010518D0 +:10129000030AEB010618030AEB0107180308ECED3B +:1012A000EB01081803085CEEEB01091E5C5CEEEB39 +:1012B000010A1E5C5CEEEB010B1E5C5CEEEB010CAC +:1012C0001E5C5CEEEB010D1E5C5CEEEB010E1E5C29 +:1012D0005CEEEB010F1E5C5CEEEB01101E5C5CEE45 +:1012E000EB01111E5C5CEEEB01121E5C5CEEEB018F +:1012F000131CFDEFF0F1F2F30114180304F8F7F6F4 +:10130000F4F50115180305F8F7F6F6EFFC011618C9 +:101310000306F8F7F6F6F4F50117180307F8F7F6E1 +:10132000F6F6EFFC0118180308F8F7F6F6F6F4F5F0 +:101330000119180309F8F70304F6EFF9011A180365 +:101340000AF8F70304F6F4F5011B18030BF8F7038A +:1013500005F6EFFC011C18030CF8F70305F6F4F58D +:10136000011D18030DF8F70306F6EFFC011E180324 +:101370000EF8F70306F6F4F5011F18030FF8F7034C +:1013800007F6EF0210010918030604010A18030604 +:1013900004010B18030604010C18030604010D18C0 +:1013A000030604010E18030604010F1803060401C6 +:1013B000101803060401111803060401121803068D +:1013C000040113180304040255011322030594D5E4 +:1013D000FA030794011420030794D5FA0307940134 +:1013E0001522030594D5FA030794011623030494E8 +:1013F000D5FA03079401172594D6D7D8D9030694B4 +:10140000011826DADBDCDDDE030594011928E0E1B2 +:10141000E2E3E4949494011A299494E5E6E3E494D5 +:10142000011B2B9494E5E6E3011C2C949494E501B4 +:101430001D2E9494011E2F94004C0C99004E0C9973 +:1014400010500C9920520C7900540C7910A80C798A +:1014500020A80C8920700C5900720C5910740C597A +:1014600020764C7D0000C7C7C7C7C7C7C7C7C7C757 +:10147000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7FC +:10148000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7EC +:10149000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7DC +:1014A000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7CC +:1014B000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7BC +:1014C000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7AC +:1014D000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C79C +:1014E000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C78C +:1014F000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C77C +:10150000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C76B +:10151000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C75B +:10152000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C74B +:10153000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C73B +:10154000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C72B +:10155000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C71B +:10156000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C70B +:10157000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7FB +:10158000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7EB +:10159000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7DB +:1015A000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7CB +:1015B000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7BB +:1015C000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7AB +:1015D000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C79B +:1015E000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C78B +:1015F000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C77B +:10160000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C76A +:10161000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C75A +:10162000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C74A +:10163000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C73A +:10164000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C72A +:10165000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C71A +:10166000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C70A +:10167000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7FA +:10168000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7EA +:10169000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7DA +:1016A000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7CA +:1016B000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7BA +:1016C000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7AA +:1016D000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C79A +:1016E000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C78A +:1016F000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C77A +:10170000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C769 +:10171000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C759 +:10172000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C749 +:10173000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C739 +:10174000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C729 +:10175000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C719 +:10176000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C709 +:10177000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7F9 +:10178000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7E9 +:10179000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7D9 +:1017A000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C9 +:1017B000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7B9 +:1017C000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7A9 +:1017D000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C799 +:1017E000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C789 +:1017F000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C779 +:10180000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C768 +:10181000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C758 +:10182000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C748 +:10183000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C738 +:10184000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C728 +:10185000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C718 +:10186000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C708 +:10187000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7F8 +:10188000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7E8 +:10189000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7D8 +:1018A000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C8 +:1018B000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7B8 +:1018C000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7A8 +:1018D000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C798 +:1018E000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C788 +:1018F000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C778 +:10190000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C767 +:10191000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C757 +:10192000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C747 +:10193000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C737 +:10194000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C727 +:10195000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C717 +:10196000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C707 +:10197000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7F7 +:10198000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7E7 +:10199000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7D7 +:1019A000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7 +:1019B000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7B7 +:1019C000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7A7 +:1019D000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C797 +:1019E000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C787 +:1019F000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C777 +:101A0000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C766 +:101A1000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C756 +:101A2000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C746 +:101A3000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C736 +:101A4000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C726 +:101A5000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C716 +:101A6000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C706 +:101A7000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7F6 +:101A8000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7E6 +:101A9000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7D6 +:101AA000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C6 +:101AB000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7B6 +:101AC000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7A6 +:101AD000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C796 +:101AE000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C786 +:101AF000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C776 +:101B0000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C765 +:101B1000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C755 +:101B2000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C745 +:101B3000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C735 +:101B4000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C725 +:101B5000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C715 +:101B6000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C705 +:101B7000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7F5 +:101B8000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7E5 +:101B9000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7D5 +:101BA000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C5 +:101BB000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7B5 +:101BC000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7A5 +:101BD000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C795 +:101BE000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C785 +:101BF000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C775 +:101C0000212A5CA72803215C5C7E32DBE52322DCF1 +:101C1000E5C921DBE5352ADCE5200D7E3C280923DA +:101C20007E32DBE52322DCE57EC90C0278801402DB +:101C3000328024083202232032015A021E200C0274 +:101C40001E200C025A20730124085A012408640142 +:101C500032045F02232014801E08FFFF8C01DC0881 +:101C6000190219011480140414804A02C801EB02FD +:101C70006E803702500114800A010A020F010A0225 +:101C800005010A022808FFFFC7C7C7C7C7C7C7C7DC +:101C9000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7D4 +:101CA000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C4 +:101CB000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7B4 +:101CC000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7A4 +:101CD000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C794 +:101CE000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C784 +:101CF000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C774 +:101D00003E13CD4231CD5E5F3E0132AEE61804AFE8 +:101D100032AEE63A90E5FE0020053E20CD4231CDC0 +:101D2000C95E3AB7E5B728353AAEE6B7202FCDD62B +:101D30005E3E023288E53E0ECD3E30212ED6360084 +:101D4000545D13012700EDB03E0ECD3E30CDD65E82 +:101D50002188E53520E03E70CD3E3018353A90E5DB +:101D6000FE002136D6CC9A313E023288E53E0ECDB9 +:101D70003E302132D73600545D13011B00EDB03EDA +:101D80000ECD3E30CDC95E2188E53520E03E38CD10 +:101D90003E303E013290E53A8EE53DCDEC31793C66 +:101DA00032CCE579E6073C32CDE5210000228AE518 +:101DB000228BE5216CE5FE01200936303E60328B36 +:101DC000E51814FE02200936403E80328BE51807E4 +:101DD00036503E01328AE579CB3FCB3FCB3F21DF06 +:101DE000E586875F160021355F195E2356ED53E1C6 +:101DF000E53E14CD4231CD8061CDD763AF32A6E54B +:101E0000CD435FCDE7622110D011ED5ECD2D30CDF9 +:101E100003320E1E214AD03A8EE5CD4830CDF7313F +:101E20000E041197E52160D03AB8E5B728032118D0 +:101E3000D00603CD5F3010FB0E06119AE52138D095 +:101E40000603CD5F3010FB3AB4E6FE0C201421BA35 +:101E5000E10607360D232323360D1115001910F363 +:101E6000180CFE1020083E0132FFE43200E53AA7CC +:101E7000E5B720433AAEE6B720103AB7E5B7280AEF +:101E80003E1632B6E53E1832ADE63E01329DE52102 +:101E90004AE4060A78C602E60320053E17CD423121 +:101EA0007EFEFF20043612180236FF3E09CD3E307A +:101EB00010E23E26CD42313E02329DE53E1532B162 +:101EC000E63E013268E5C329002132D7CD853111C4 +:101ED000235FCD2D30C90E063AB8E5C631212ED686 +:101EE000CD6A30112B5FCD2D30CD9A31C90620310E +:101EF000502D2020202020201E3C31303030303E1C +:101F00000648492D2020202020201E3C522D202034 +:101F1000205E5F2D203E0632502D202020202020E4 +:101F20002020000620524541445900062D504C41C6 +:101F30005945522000980004011001140117012195 +:101F40000126013E013274E5AF3273E5CD915F3E6B +:101F500002CD3E302173E5347EFE1E38EFC9DD210F +:101F600000E30610DD360400DD360C00111000DD44 +:101F70001910F1AF3274E532A6E53E1C3273E5CD9F +:101F8000915F3E02CD3E302173E5357EFEFF20EFAE +:101F9000C9874FAF479157CB2178E603CCAD5F7A25 +:101FA000CB7F20020D9104805779B830ECC5D5CB9A +:101FB00038CB38300104CB39CB3930010C2E10CD61 +:101FC000D25F3A74E5B728030D18010CCDD25FD16A +:101FD000C1C9513E1880FE30DCF15F3E1890D4F14B +:101FE0005F503E1881FE30DCF15F3E1891D4F15F06 +:101FF000C9677D82FE20DC00607D92D8CD0060C97B +:00000001FF diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/nu/lr-a-4d.hex b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/nu/lr-a-4d.hex new file mode 100644 index 00000000..89abed9d --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/nu/lr-a-4d.hex @@ -0,0 +1,513 @@ +:10000000203AECE4CDB620CD112021ECE43518E403 +:10001000C9FDBE05C821ECE44ECD3D2121EEE4BE74 +:10002000D032EEE43E0032EDE4C947FD4E0579FEE4 +:100030001D30526178070707CB3C1F6F1110D01994 +:10004000E511800119D1EB1AFE04283AE6F8FE0802 +:1000500028340C1A242415EBE6FCFE0028253A442B +:10006000E4B8300D2D2D2D2D1D1D1D1DCD88201802 +:10007000122005CDAD20180B2C2C2C2C1C1C1C1C6C +:10008000CD882018A9C979C97EE6FCFE18281E7EF5 +:10009000E6F8FE08C8247EE6F8FE08C81AE6F8FE70 +:1000A00010280A1AFE042805E6F8FE08C02145E4D7 +:1000B00079BED8F179C947FD4E0579FE0128506116 +:1000C00078070707CB3C1F6F1110D019E51180018D +:1000D00019D1EB7EE6F8FE102809247E25E6F8FE0D +:1000E0001079C00D151524EB3A44E4B8300D2D2DD0 +:1000F0002D2D1D1D1D1DCD102118122005CD3521C2 +:10010000180B2C2C2C2C1C1C1C1CCD102118ABC922 +:100110007EE6FCFE18281E7EE6F8FE08C8247EE671 +:10012000F8FE08C81AE6F8FE10280A1AFE04280588 +:10013000E6F8FE08C03A45E4B9D8F179C94778181D +:10014000142A44E4943002ED448787874779953038 +:1001500002ED4480C92145E4BE200879FD9604D013 +:10016000ED44C978963005ED44C664C9C6C8C9C710 +:10017000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C70F +:10018000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7FF +:10019000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7EF +:1001A000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7DF +:1001B000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7CF +:1001C000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7BF +:1001D000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7AF +:1001E000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C79F +:1001F000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C78F +:10020000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C77E +:10021000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C76E +:10022000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C75E +:10023000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C74E +:10024000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C73E +:10025000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C72E +:10026000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C71E +:10027000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C70E +:10028000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7FE +:10029000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7EE +:1002A000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7DE +:1002B000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7CE +:1002C000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7BE +:1002D000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7AE +:1002E000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C79E +:1002F000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C78E +:10030000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C77D +:10031000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C76D +:10032000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C75D +:10033000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C74D +:10034000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C73D +:10035000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C72D +:10036000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C71D +:10037000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C70D +:10038000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7FD +:10039000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7ED +:1003A000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7DD +:1003B000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7CD +:1003C000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7BD +:1003D000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7AD +:1003E000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C79D +:1003F000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C78D +:10040000210EE57EB7280235C934CDBE242168E52A +:100410003520023617DD2118E53E143288E5DD7EF1 +:1004200000B72839DD35002006DD360100182EDD45 +:100430007E00FE102004DD3601F43021FE0F201274 +:10044000DD7E02DD6E03CD002DEBCD1930CD6924AC +:10045000180BCB3FCB3F473EF790DD7701010400FF +:10046000DD092188E53520B6C93A44E4DDBE022025 +:1004700017DD7E032145E496380EFE03300A3E0068 +:100480003248E4AF3250E4C9FD2158E43AE9E4329D +:1004900089E5FD7E04DDBE022018DD7E03FD9605A4 +:1004A0003810FE03300CFD360CFFFD36092AFD36F0 +:1004B0000E3C111800FD192189E53520D5C93AE90E +:1004C000E432E8E4DD2158E4216DE536003A02E546 +:1004D000B728083AE8E4FE01200134DD7E0EB72893 +:1004E0005BDD350920253A6DE5B7280AAF3202E514 +:1004F00021E9E4351815DD360903DD7E0AFEFF200B +:1005000006DD360A0C1804DD360AFFDD350E202420 +:10051000FD2140E4FD7E04DDBE042010FD7E05FECD +:10052000013809FE043005DD340E1810DD360C00EC +:10053000DD360A0CDD7E0EFE30CC4825111800DDBC +:100540001921E8E4352081C93A6DE5B7200D3E0157 +:1005500032FFE4010001CDDB2F1813DD7E04DD6ED8 +:1005600005CD002D15151AE6FCFE60CC832F3E0448 +:10057000CD4231DD7E0DB7280421FCE435DD360A9D +:10058000FF1110D13A68E587876F260019EB06F84E +:100590000E08CD712EEB200A2168E53520023617B2 +:1005A00018E23A68E5DD7701DD7704878787DD7734 +:1005B00007AFDD7700DD7702DD770D3CDD7703DD0A +:1005C0007705DD3606082168E53520023617C93E75 +:1005D0000132A7E52122D2CDA1293E0ECD3E302108 +:1005E000DED311E926CD2D302123D216CBCDDF2944 +:1005F0003E1CCD3E302123D216CCCDDF293E1CCD72 +:100600003E302123D216CDCDDF293E1CCD3E307A9F +:10061000326BE52140E41141E40128013600EDB0E0 +:100620003E0132CDE5324BE43249E43E163241E43C +:100630003E0C3243E43E00324AE43246E43E1E328F +:1006400053E416181E0C3E01DD2158E40605DD7743 +:100650000BDD7709DD7201DD7303DD360A00DD365F +:100660000600C5011800DD09C11410E2218000DB7D +:1006700004CB4720022D2D22E3E5CDD7633E053282 +:10068000E9E43E03326AE53E01329DE53E303289BF +:10069000E5216BE5347EFED0380236CD562123D2DB +:1006A000CDDF293E08CD3E302189E53520E33E00EF +:1006B000329DE53E00326AE5CD00653ADEE5CD00CB +:1006C0005C060321DEE57EB72805360004180134F8 +:1006D00078328EE5AF32B8E5328FE5676F2291E56B +:1006E0002292E5CD5E5FC3975D06544D003E13CD6B +:1006F00042313E0132A9E5CD5E5F210052CD516409 +:1007000021C0D0DD21BED00E1F06187EDD77002C63 +:100710007EEE20DD77012CDD2BDD2B10EE1150005D +:100720001911B000DD190D20E02124E01123E00EA5 +:100730001F060C7E0707070712231B10F6C5010CC6 +:100740000009EB01240009EBC10D20E5FD2139541E +:10075000CDF0293E14CD42313E0132A6E5CD435FB6 +:100760003E24CD42312140E41141E401280136000C +:10077000EDB021CDE5343E01324BE43249E43E0692 +:100780003244E43E103241E43E1D3243E43E003246 +:100790004AE43246E416121E1F3E010E05DD2158C2 +:1007A000E40604DD770BDD7709DD7104DD7201DD20 +:1007B0007303DD360A00DD360600C5011800DD09C9 +:1007C000C1141C10DECDD7633E0432E9E43E023290 +:1007D0006AE53E01329DE53EA8CD3E303E03CD4266 +:1007E000310E30DD2100E3060BDD3406DD350E1160 +:1007F0001000DD1910F33E01CD3E300D20E521B68D +:10080000D5CD9A3121B8D6CD8531213CD8112D28AE +:10081000CD2D303E70CD3E303E00329DE53E003263 +:100820006AE53E13CD4231CD5E5FC3975D0652450A +:10083000414459003E13CD42313E0132A9E5CD5E1F +:100840005F2100E31101E30168023600EDB02100F1 +:10085000E01101E0019F023600EDB02313015F00BB +:100860003601EDB03E0A32D8E53E0032A6E53E1430 +:10087000CD4231CD435F3E27CD423106000E4711B8 +:10088000EF283E01CD3E303E2E804730F51AFE0166 +:100890002007131A6F131A67131A77FE20282E3EAB +:1008A00017CD42311AFE322024AF32CDE53257E463 +:1008B0003E0B3241E43E0C3253E4324AE43E013214 +:1008C0004BE43249E4326AE53E01329DE51323717F +:1008D000231AB720AD3EFFCD3E303E00329DE53EAF +:1008E00000326AE53E13CD4231CD5E5FC3FA260188 +:1008F00030D3434F4E47524154554C4154494F4ECB +:10090000532120202020011ED5594F552020484139 +:1009100056452020444F4E4520204954202056451E +:100920005259202057454C4C2C202001A8D6484134 +:1009300056494E47202050415353454420205448A7 +:10094000524F5547482020012AD8323420204441B4 +:100950004E4745524F55532020504C414345532E4E +:100960002020202001A0D94255542020544845522F +:1009700045202041524520205354494C4C20204FC3 +:100980005448455220200128DB454E454D494553EA +:1009900020204F4E2020594F555220205741592E8C +:1009A0000016881E04061E722C2C1414141410F742 +:1009B0007AC68957014400091D20EAC91E047EE653 +:1009C000F0477AE60FB07723060E722310FC7EE61E +:1009D0000F477AE6F0B077010900091D20E0C91E33 +:1009E00004061E722C2C10FB014400091D20F2C9C4 +:1009F000DD2100E3FD7E00B7C8DD7704DD770CFD67 +:100A00007E0147E61FDD7700DD770878E6C0DD77F9 +:100A100005EE40DD770DFD5E0216002AE3E519DDE7 +:100A20007502DD750ADD7403DD740BFD5E03DD7395 +:100A300006DD3607013EF093DD770EDD360F00113F +:100A40000400FD19111000DD1918A93A6AE5FE012C +:100A50002005CD5B2A1803CDD42AC93A53E4FE0CF5 +:100A6000202E1115002A42E4192242E47C2A57E480 +:100A70002600019B2B09BE2015237E324BE43E004D +:100A80003253E4324AE43A57E4C6023257E4184398 +:100A90003A4BE4FE01200511F2FF1803110E002A63 +:100AA00040E4192240E47C2A57E42600019B2B09EC +:100AB000BE2015237E324BE43E0C3253E4324AE42E +:100AC0003A57E4C6023257E43A53E4FE0C2804478E +:100AD000CDF110C93A6AE5FE022065DD2140E40E41 +:100AE00005DD7E0BFE01201C11F4FFDD6E00DD66CE +:100AF0000119DD7500DD74017CDDBE042004DD36E6 +:100B00000B001810110C00DD6E00DD660119DD759B +:100B100000DD740111F9FFDD6E02DD660319DD757C +:100B200002DD7403C5DD460679FE052005CDF11012 +:100B30001803CD2E1AC1111800DD190D20A3185A63 +:100B40003A6AE5FE032053DD2140E40E0611ECFF76 +:100B5000DD6E00DD660119DD7500DD74017CFEFED1 +:100B60002004DD360AFFC5DD460679FE062005CDE8 +:100B7000F1101803CD2E1AC1111800DD190D20CD6A +:100B80003A53E43C3253E4FE24200F3E003253E457 +:100B90003A57E43C3257E4CD9D65C903010600078E +:100BA0000008000A0009000D000D0010000F0013DE +:100BB000001100190032C7C7C7C7C7C7C7C7C7C713 +:100BC000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7B5 +:100BD000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7A5 +:100BE000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C795 +:100BF000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C785 +:100C0000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C774 +:100C1000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C764 +:100C2000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C754 +:100C3000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C744 +:100C4000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C734 +:100C5000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C724 +:100C6000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C714 +:100C7000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C704 +:100C8000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7F4 +:100C9000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7E4 +:100CA000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7D4 +:100CB000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C4 +:100CC000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7B4 +:100CD000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7A4 +:100CE000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C794 +:100CF000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C784 +:100D000065070707CB3C1F6F1110D019E511800153 +:100D100019D1EB7EC967FD2158E41118003AE9E4C6 +:100D200047FD7E0694FE12306DFE083869FD7E0791 +:100D3000953002ED44FE06305DFD7E0CB72028FDA7 +:100D40007E16B720223A4FE4B72815FD7E0FFEFF2E +:100D5000280E2152E47EB7200736013E0BCD7330BA +:100D60003E063209E5182D210BE53A44E4BE28245D +:100D70007F77210AE53A4BE4BE2010210CE5347E52 +:100D8000FE0338053E133206E518093A4BE4773E78 +:100D900001320CE537C9111800FD191084C9C613BA +:100DA000180067DDE5C1FD2158E43AE9E447FDE5B7 +:100DB000D17BB92832FD7E0EB7202CFD7E06BC30DB +:100DC00026C612BC3821FD7E07953002ED44FE0692 +:100DD0003015DD7E0FFDBE0F200437C91809AFFDA9 +:100DE000960CD8DD960CD8111800FD1910C0C967F3 +:100DF000DDE5C1FD2158E43AE9E447FDE5D17B9109 +:100E00005F2826FD7E0EB72020FD7E07C607BC3872 +:100E100018D608BC30133CBC2004CB7B200BFD7ED5 +:100E200006953002ED44FE0FD8111800FD1910CBC5 +:100E3000C9C60867DDE5C1FD2158E43AE9E447FD8C +:100E4000E5D17B915F2822FD7E0EB7201CFD7E0739 +:100E5000BC3016C608BC38112004CB7B200BFD7EAD +:100E600006953002ED44FE0FD8111800FD1910CF81 +:100E7000C91AA0B9C8E5218000197EE1A0B9C91A34 +:100E8000A0B9C0E5218000197EE1A0B9C97EA0B952 +:100E9000C8247E25A0B9C97EA0B9C0247E25A0B9EA +:100EA000C97EB9C8247E25B9C91AB9C0E521800018 +:100EB000197EE1B9C9C60518004F3A47E4B9D0C652 +:100EC00004B9D83A46E4953002ED44FE0AD0AF3278 +:100ED00050E4C94F3A46E4C60EB9D8D61D3001AF2A +:100EE000B9D03A47E4953002ED44FE03D0AF32501A +:100EF000E4C94F3A46E4913002ED44FE0ED03A4741 +:100F0000E4953002ED44FE03D0AF3250E4C9EB7EED +:100F1000C670772C360A2C7EC674772C360A018070 +:100F20000009360A2D7EC67C772D360A2D7EC678BE +:100F300077ED42EBC9EB7EC660772C360A2C7EC675 +:100F400064772C360A01800009360A2D7EC66C773C +:100F50002D360A2D7EC66877ED42EBC9EB7ED67042 +:100F6000772C36052C7ED674772C36050180000947 +:100F700036052D7ED67C772D36052D7ED67877EDFD +:100F800042EBC9EB7ED660772C36052C7ED6647793 +:100F90002C36050180000936052D7ED66C772D365E +:100FA000052D7ED66877ED42EBC9D5070707CB3C08 +:100FB0001F6F1110D019EBC5CD0E2FC1D1C9EB7722 +:100FC00023237701800009772B2B77ED42EBC92192 +:100FD00091E57E47812777383618172193E57E8182 +:100FE00027772B7E8827772B7E47CE002777381FE1 +:100FF000B8C84F78C6012747C5FE05200C218FE5EC +:10100000343E12CD4231CDF731C178B938E5C9212E +:1010100099992291E52292E5C9D5EB3AD8E5772C4A +:101020002C7701800009772D2D77EBD1C91AB7C82D +:10103000FE2030034F1804772C712C1318EF32B5B3 +:10104000E53AB5E5A720FAC90600D60A0430FBC682 +:101050000A05F578CD5830F1C63077237123C91AC7 +:10106000F50F0F0F0FCD6A30F113E60FC63077235F +:101070007123C94F0600212831095621FEE45E3450 +:101080007A3288E5B72809347BFE0720031E003436 +:10109000CB9E7B3289E5878787FD21C0E35F160001 +:1010A000FD19FD360011FD360811161579FE0B38B5 +:1010B0000216033A46E482ED445F16002AE3E5197E +:1010C000FD7502FD74031E003A88E5B7280A1CFD71 +:1010D000770CFD750AFD740B211B31097EFD770429 +:1010E00021353109460E00CDDB2F3A47E4C6206F8B +:1010F000260029FD7506FD7407CB43280A01F0FF81 +:1011000009FD750EFD740F3A89E54F0600219EE535 +:10111000093670CB432803233670C9F8F9FBFCFA73 +:10112000FDFAFDE1E1E1E1E10000000000FEFEFF6B +:10113000F0AAABF1F002040608051015203050802B +:101140001030D557FE1228083AA7E5B72802D1C9B2 +:101150007AE521BBE55E160021BCE519571C7BE64C +:101160000F32BBE572E1D1C93ABAE521BBE5BEC891 +:101170005F160021BCE5193CE60F32BAE57ED300CC +:10118000F680D300C9119231CD2D303A8EE5CD488D +:1011900030C906524F554E442D003A8EE53DCDECF8 +:1011A00031793C32CCE50E06FE0A3805CD483018C0 +:1011B000052C2CCD6A303ACCE5FE043801AF878788 +:1011C0005F1600E521D43119EBE1CD2D3011E4316A +:1011D000CD2D30C90654480006535400064E440035 +:1011E000065244000620424C4F434B000E000CD6E2 +:1011F0000330FB0DC603C90E1E2156D03A8FE5CD34 +:101200006A30C92126D0118AE50E1E1AE60FCD6A72 +:101210003013CD5F301A0F0F0F0FE60FCD6A300E6F +:10122000042118D03AB8E5B728032160D03AADE6DA +:10123000B72826E521B6E57EB72006361621ADE6AD +:10124000353AADE6E11F300C3600545D13010B005A +:10125000EDB01803CD82321803CD8232119AE52108 +:1012600091E506031ABE1323200210F8D03AA7E531 +:10127000B7C0010300119AE52191E5EDB00E0621FA +:1012800038D01191E50603CD5F3010FBC911B8E6E7 +:101290002120D7014000EDB021A0D7014000EDB0E2 +:1012A0002120D8014000EDB021B8D8010E00EDB0EA +:1012B0002138D9010E00EDB0C921B8E61120D701BF +:1012C0004000EDB011A0D7014000EDB01120D801D1 +:1012D0004000EDB011B8D8010E00EDB01138D901C1 +:1012E0000E00EDB0C9C7C7C7C7C7C7C7C7C7C7C7FD +:1012F000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C77E +:10130000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C76D +:10131000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C75D +:10132000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C74D +:10133000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C73D +:10134000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C72D +:10135000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C71D +:10136000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C70D +:10137000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7FD +:10138000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7ED +:10139000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7DD +:1013A000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7CD +:1013B000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7BD +:1013C000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7AD +:1013D000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C79D +:1013E000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C78D +:1013F000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C77D +:1014000000003234013572354B3C6236CE364537FA +:101410008934CA3CA83B043EE235593D8C3F9B3998 +:10142000A93EF938CC3A1E3F2F3AC53771387D4076 +:10143000F73F0001AEE5A4EBA9CFF7A98DCAAECA6C +:10144000F7B3F1B9C5E8D2F7BEF703848DC58E9224 +:10145000C2898DD5CB8E98D2999DC4D79398C70455 +:10146000A6C6EE04B6C8F104068188CF07A2C3A7BA +:10147000D3ACD1B7C6D5BCCF0AA4CBA9CABEC009CC +:10148000BBCC08ABC3D3B0CC1F0001A4C2A9C1E33D +:10149000A5CAF1A7D3F6ACCFF6B095C1E3B4D3F7A4 +:1014A000B0C6E7CAEDB9ECD4F7BEF702A4C1C39049 +:1014B00098C0C4B0C5C804A9C5EDB6CDF103848FEA +:1014C000C0C4858BD28C91CE8793D78598C99498C8 +:1014D000D5949DD2999DC706A186D707A2C2A3CF56 +:1014E000A5D4A7C1ABC2AEC6CBB7C1C5D7BCC0D708 +:1014F00009BBCA08A6C3A9D1ADC30AB9D4BEC0D717 +:101500001F0001A5CAF2A6E3A8D4F7ABC5F3AFE468 +:10151000B0CAF1B3D7B5CCF3B7CCD3B9ECD3F7BAE3 +:101520009DCFF0BEF704AED4AFD5B0D6B2C4E803B9 +:10153000999DC2D69A9DCED19598CBD49094C9CF7F +:101540008F98C38B8FCCD1868EC4858AC9D306A1D0 +:1015500087D707A3CEA4C2A9CFADC1B1D7B8D0BC9D +:10156000D408A8C6ADCEB2D209B6C90AB3D7BEC098 +:10157000D71F0001A4C0D0F7A6E1CFF0A8C1C2CE0A +:10158000CFA9D2F6AAC2C3CDCEACC3C4CCCDAEC314 +:10159000E5CBEDAFE5CBF7B0C6CAB2C6EAB4C1E35E +:1015A000CDF3B9C5F7BEF703A48ED3AF93C2AF9501 +:1015B000CEB295C8B49AC4D1B49DC0B99DCBD5065E +:1015C000A191C807A2D1A7D6ACCBADC0B2C3D3B747 +:1015D000C808ACC1B1C4B6CE09BBCE0AA9D2D6BE2A +:1015E000D71F0101A698C9CEA89AC1C4D3D6A8C254 +:1015F000C3D4D5AFC2C3D4D5B2CBCCB9C1E5C9CA67 +:10160000CDCED2F6BB9DC6D1BEF702B9CBCC04A8D5 +:10161000C6C7D0D1B3C6E8CFF103A68AC8CFA89475 +:10162000C5D2B298CACDB69DC8CFA89DC0D706A1D5 +:1016300091CACD07A6C2D5ADC3D4B7C2CBD508A534 +:10164000C4D3B6CCBBC709BBCC0AA6CEBEC5BED2DE +:101650000D8EC2C3D4D598C2C3D4D598CBCC91CA71 +:10166000ED1F0001A4C0C2C4C6C8CACCCED0D2D41B +:10167000A98BC0C2C4C6C8CACCCED0D2D4AFC0C257 +:10168000C4C6C8CACCCED0D2D4A493D6B4C1F6BEF8 +:10169000F702B9C1F603A493C1C3C5C7C9CBCDCF67 +:1016A000D1D3D5B49DC006A19DD707A7C0C8D0ADE2 +:1016B000C4CCD4B2C0B7C6CACEBCC1D608A1CAD3A6 +:1016C000B6C8D009BBC80AA4C0A9C0AFC01F0001DA +:1016D000A5C0E2C6EBCEF0AD91D3D6ADD7AFC1EA8F +:1016E000B0D4B094D5B4C0E3CAECB5D3F6B9C0E673 +:1016F000BEF704A2C4C5A5D2F7A9C4E8B6CEF003CC +:10170000A58AC3A59DD1A795C9AF93C0B29DD7B4F3 +:1017100098C4CDB99DC706A186CC07A3C0C6D0ADDD +:10172000C6CAAED4B1CFB3D3D6B7C1BCC1CDD6082B +:10173000A2C1C9CFACC309BBCB0AA5CAB5D4BEC030 +:101740000D8FD4D51F0001A4C1E8A6CAEED2F7A818 +:101750008ACEA9C2E7ABCEF7AD92D6B1D2F4B0959E +:10176000C2E4C7B2C6B4C5C6B7CEF2B6D6D7B9C5FD +:10177000BEF702AB9ACBABCCB19ACCB9C1E4C6EA06 +:1017800004AECCF103A49DC0A498C9A68ACFD4B05E +:1017900095D7B19DD506A185D207A4CFD3D7A6D121 +:1017A000A7C2C7A9CBCCD7AED7AFCCD3B2C5B5D023 +:1017B00008A1C4A3CCA8D209BBCC0AA9C6B1D3BE88 +:1017C000D70E93C51F0101A5C0E2C4A8D3F6AAC6CF +:1017D000F1AA8CD5ABC1E3AA9DC6AA9AD1ADD3F725 +:1017E000AFC7E9CDEFAF94D3B092C3B2C0E2B3D3E9 +:1017F000F7B496C5C9CDB698C4B7C7F0B89AC3B9FF +:10180000D2B8D5F7BCC2D3BEC0F704A7C4C5A5D112 +:10181000F3ACC8EFB1C7EFAAD203A184C0A88CD79C +:10182000A9C3AA8DCBAB91C0AC96D0AD92D6B196E0 +:10183000CBB29DC1B397D5B496C7CEB89DD406A5FB +:1018400089C307ABD4ADC7CFB1D4B5C8CACCCFB666 +:10185000C3D7B7D2BCC0C4CACCD708A5D4A7C8BB0D +:10186000C509A8C20AA5C2BEC0D70F9DC3E5C7F26D +:101870001F0001A4C1C2A9C1E6CAF6A99BCAAEC095 +:10188000E7CDF5B092CDD5B3C4E6CBEDD0F5B597A5 +:10189000C6D5B8C2E6CBF5BAC0E2BDC4C8C9CFF759 +:1018A000029FC0F704A3C7F6BAC4E703A48DC0A67D +:1018B00088C6A997C3A99CD7AE9CC8B397CFD4BA02 +:1018C0009EC3BDCE06A185C307A2C1A7D3ACC1C428 +:1018D000CEB1C6CBD1B6C5D0D3B8C0C1BDC0C5CAC4 +:1018E00008A6CDB0C4BCC609A1C20AB3D1AECDD53D +:1018F0000D99C0C10F9EC5E71F0001AAC2CEACC0A2 +:10190000E2AE90C2B1C0E3D3F6B39DC0B6C1E4CDA0 +:10191000B7D0F6B8C7EDB9CDD0D49BC5D4BCC4C53B +:10192000D1F7BEC0F702A5C0E2C4EDAA95CDAC9038 +:10193000CEAFCFD004A4CEF4A7CAECABD0F5AEC4E2 +:10194000ECB1CEF1B8C2E403A184D5A790C3A7C976 +:10195000AA8ECFAB90D6AC97C9B197CCB49DCEAE82 +:101960009BD7B89DC1C6BA9DCC06A5C307AAC1CC5A +:10197000ADD0AFC5C8CBC0B4C1B5D2BAD1D3D6BC37 +:10198000C3C7CB08A7CEB3C3B4D1BBC909B5C70A77 +:10199000AACEBCD3BCD50D8BC0C11F0001A4CCF70F +:1019A000A5C7E9A9CDF6AAC1E4AFC5C7E9B4C4B9D2 +:1019B000C2C3C7E9CDF7BEC0F702AAC8EA8BCDF60D +:1019C000AC98CDAC95D6AFCFF4B193CFB4C8EACF35 +:1019D000F604A2C1E503A488D1A589CAA59DC0A922 +:1019E0009DCCA998D7AA8EC5C7AF93C4CAD5AF98C6 +:1019F000CEB498C3C7B99DC1B9CA06A186C6BB9D5E +:101A0000CA07A2CCD6A3C9A8C2C4C9ADC9D0D3B293 +:101A1000C9D1D3B7C4C9D1BCC2CED608A1D4A7C33B +:101A2000A6D4ACCB09A6CB0AA5C9AFC9BED71F00A7 +:101A300001A7C1C5EACDF3D5F7A9D6AFC5E8D2F75E +:101A4000B6C0E6B8C6EACFF1D3D5F7BAD3F7BCD45F +:101A5000F7BDC0EACFF702A5D5AFCAF1B8CCED9F6C +:101A6000C0F704A2C3CBCCD4F7A9C6F3ABD6B0C1A0 +:101A7000C2B1D2F4B5D203A192C0A286D3A589C4C3 +:101A8000A5CAA78AD4A98BD5A98EC5D7AF97C9B443 +:101A900097D1B6C7B89ECBCE06A184CA07A5C1C54B +:101AA000C9CED1D7AAC7CBD0B4C0C3B6D7B8D4BBE0 +:101AB000C0C2BDCC08A4C7D0ACD409B5CC0AA7C15C +:101AC000B8D7BDC00D86D6D70E99D41F0101A2C8C4 +:101AD000CFD5A3C8D0D4A4C7D4A5C1E6CDD1F385B2 +:101AE000CDF0A7C6CDD1A9C6F6AAC0E4AEC6F7AF61 +:101AF000C1E4B093C4C6D1D3B3D4B395C7D594C40D +:101B0000B496C3D1B597C8B698C2B6D0D1D5F7B7F9 +:101B10009AC9B89AC1B8CEF1B9C6BAC4CAEEBCC3A4 +:101B2000C4C7BB9DD5D7BDCFF1BEC0E8CFF702A5D6 +:101B3000C0C2C39FC9EE04A6C7F0B0C7F0B1C1E3ED +:101B400003A59DC5D2A98DD7AA8EC3AF9DC0B8CD20 +:101B5000BA9ECCBB9DC8BB9EC906A188CBBB9DD6F7 +:101B600007A3C0C6D3A7C8CED0D4A8C0B1C8B3CA33 +:101B7000CEB2C3B4D6B9D7BAC3BBD1BCC1C6D3BD2C +:101B8000CACE08A2C3BBC2D409ABCA0AB3D4B8CE6A +:101B9000BCC30D88C7ECCEF092D4D595D6D797CDDF +:101BA000EF99CAEC0E9DD61F0001A4C9F6A6C7E99D +:101BB000A69BD6A699C7A9CBF4A99BD4ABC9EBD455 +:101BC000AD9BC9ACC2C3AEC3E5AECDF2B0CBEDB0F8 +:101BD0009BCBD2B1C2C3B3C5CFD0B5CDF0B799CDF1 +:101BE000D0B8C2C4C5BACDF0BDC0E7029FC0F704EB +:101BF000A1C7E9A4C4C5A7C1C203A185C6A488C35F +:101C0000A79CC0A49ED7A99ED5AE9ED3B39ED10655 +:101C1000A186C007A2CCD2A7CCD1A9C9AAC2ACC503 +:101C2000ACD0AECCAFC2B1C5CFB3CDB6C2C5B8CEC5 +:101C3000BBC2C508A3C8A8CAADCBB2CE09BAC30AF5 +:101C4000A6C7ABC9B0CB0D99CECF1F0001A5CBED78 +:101C5000D4D5A7C0C1C6E8D5AAD1F5ACC8EEAE9020 +:101C6000C8AFCEB1C3EEB9C3E6BEC0F702A5D1F38B +:101C7000A789D1B398C3C6BEC2E5C9EDD0F3D6D704 +:101C800004A2C0E4C9F1A9CFD0ACCFD003A5C0A5B0 +:101C90009DD6A792C2B19DC706A184D607A3D4A59D +:101CA000C1C6C8A8D2D4AFC9CBCDB7C4C5BCC0C506 +:101CB000CED408A2CCD2A9CB09BBCB0AA5CBACC849 +:101CC000BEC00D89D2F498C4C51F0001A5C3F0A7FA +:101CD000C9CDAAC0F7ACC9CFAFC6F7B1C9CDC6B29E +:101CE000C0E5B4CAF6B6CDB7C1E6B9C6F7BBCDBE3E +:101CF000C0F70289C9CD8EC9CF93CDB396C6B3952F +:101D0000C9B8CDBDCD04A2C1C2D2F703A289C0A576 +:101D100089D1AA91C1AA8ED4AF93D1B296C3B498F7 +:101D2000D7B79DC0B99DD206A184C307A3C5C9A8D2 +:101D3000C4CBCFD7ADCBD2D7B0C2B2CBCFB5C1B762 +:101D4000C8CBD5BCC2CBCF08A2CBA7D2B1D3BBC71F +:101D500009BBC30ABECCCED71F0001A4C5F2A6881A +:101D6000C5CBD2D3A9C3E7CBCFF3A6D4F6AB8FC3F1 +:101D7000C7CFA694D7ABC7EFD3F7AEC1E7B097C133 +:101D8000C7B0CDF4B294CDB39AC4B3C5C6B5CAEE4C +:101D9000D1D5F7B6C2C3B7C7EACED1F5B9C4E7CA41 +:101DA000CEF1BEC0F702BEC1C3C5C7C9CBCDCFD12E +:101DB000D3D5D704ADD503A488D1A98FD0B094CC06 +:101DC000D6B59DCBB598D0B5D2D406A19DC007A7F6 +:101DD000C7A9C9CDD5ACC5AECDD4B3CEB4C2B5C8F4 +:101DE000D3B7C5CFBCC2D3D708A1CAA3D4ADD2093B +:101DF000BBC90AA4C5A4CBAEC10D85D3F78ACCEE6E +:101E000096C8C91F0001A799D6A78ED4A7D0F3A959 +:101E100091D0AACCEFAC94CCADC8EBD1F3AF97C8BE +:101E2000B0C4E7CDEFB29BC4B3C0E3C9EBB59BC070 +:101E3000B6C5E7BAC1E3B299D3B2D4D5B8D4D5B553 +:101E4000CFF2B7CFB9CCEFBBCCF2BDC7F7029FC082 +:101E5000F703A79CD7A791D5A789CFAA8CCBAD8F25 +:101E6000C7B092C3B294D2B598CEB99CCB06A18626 +:101E7000D7BDC607ABD1D3AECDCFB1C9CBB0D4B3EC +:101E8000D0B4C5C7B7CCB8C1C3B9D0D2BBD3D5C8FD +:101E9000CA08A4D2A7CDAAC9BCC009B5D40AB3C088 +:101EA000BDD3BAC10D8CD1F31F00029FC0F704A4AB +:101EB000C4CAD2D6A7C1C2C5C8CBD0D3D5AAC6CCB6 +:101EC000D4ADC2C7CDD0D5B0C1C6C8CBCED4D6B3A1 +:101ED000C5C8CACDCFD3D5B6C1C4C9CCD0D2B9C27A +:101EE000C5CBD4D603A487C3D1A490C9D7A790C02B +:101EF000A78DCFAD99C3AD9ED1B69EC006A186C0B9 +:101F000007A5CACFA9C2D2D6ADC6B1D4B4CFBAC57F +:101F1000D4ACCB08AACCB6C9CCD209BCCB1F00012B +:101F2000A587C2C6D1A898C2F700A88DC8AB8DC638 +:101F3000C7AB98C5AE90CBF0AED3ACD6B597CDEFCE +:101F4000B7CC01AECDEEB9CDEEBACCEDBC9ECBEDAB +:101F5000029FC0F704A2C1F7B9D0F503A59EC0AE99 +:101F60009AD6B89ACF06A184C007AFCBD0AED3081B +:101F7000A5C9CCABC7BCD209B5CE0AA8D0AEC6BCE9 +:101F8000CB0E90CBCCCFD08FD399CC1F0001A8958E +:101F9000C0EAA8CCEFADCBF6B4D1F6B9C0EDBBC565 +:101FA000BCCEBEC0F700B093C2E4B395C9AF95CA2A +:101FB00004A3C1EEA5D0F6B1CAF003A287C0CFA892 +:101FC0008ACBAA8ECAAE92C9B295C8B99DC6CCA515 +:101FD0009DD706A184D707A8D0D2D4B2C2C4B7C2B5 +:101FE00008AACED3B1D3BBD309BBC90AB9C0BEC4FA +:101FF000BECD0F9DC0E41F0001A8C9ECD1F4ACC157 +:00000001FF diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/nu/lr-a-4e.hex b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/nu/lr-a-4e.hex new file mode 100644 index 00000000..d12ef3bf --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/roms/nu/lr-a-4e.hex @@ -0,0 +1,513 @@ +:10000000F33100E8010000FD21000010FA0D20F797 +:10001000ED5621B3E63601DB04CB7FCA416F35CD07 +:100020007A00000000FBC3CF25CD001DCD4C04CDD0 +:100030002C0718F5C7C7C7C708D9DDE5FDE5CD28EA +:1000400001CDA200CD68313A6AE5B7C44B2A3A9D8A +:10005000E5FE02CC4101CD9001FDE1DDE1D908FBD7 +:10006000C9C7C7C7C7C7FBED45C7C7C7C7C7C7C746 +:1000700093246CDB7AFB8591A380AF329DE5D3019D +:100080002100D03600545D1301F017EDB0CD2801EA +:10009000CDF408CDD608CDA66D3E00D300F680D3B2 +:1000A00000C921B5E535233521B5E6353AB9E5B7BF +:1000B0002004DB011802DB022F324DE421CFE507DB +:1000C000CB160707CB163A4DE421D0E50FCB160F20 +:1000D000CB16DB002F21AAE51FCB161FCB16DB04A6 +:1000E000CB67202921B4E57EB720113AAAE5E605C1 +:1000F000FE0520063601F1C3590018113AAAE5E6BB +:100100000AFE0A200436001804F1C35900CD230961 +:100110003AAFE5B720053E0232B2E53AA7E5B7C8E7 +:100120003AB2E5B7C8C3A0683AB3E6B72807CD39F5 +:100130007CF1C359000100011100C02100E3EDB0C2 +:10014000C9CDE603CD000BCD0013CD0024C9FDE5DC +:100150003AE9E43288E5FD2158E4111800DD7E0615 +:10016000FDBE062020DD7E07FD96073002ED44FE31 +:10017000043012FD7E0DB7280CFD7E08FE0930020A +:100180000EFFFDE1C9FD192188E53520D0FDE1C94B +:100190003A9DE5B7C83A6AE5B7CC0332DD2140E4C1 +:1001A000FD21B0E33A6AE5FE022004FD21F0E3AF51 +:1001B00032E8E4DD4E0A3AE8E4B72817DD7E0DB7F1 +:1001C000280EDD3408DD7E08FE183804DD36080010 +:1001D000CD4E0179FEFF200BFD360400FD360C00EC +:1001E000C3110306002AF6E43AE8E4B7200521002B +:1001F000001819573A02E5B728123AE9E4BA200C78 +:10020000113000193ACDE5FE082001EB0922F9E48E +:100210000160450946DD6E00DD7E01C604672929BF +:10022000290E00CB28CB19DD7E0BB72004ED421838 +:10023000010929FD74063E0017FD77073AF8E44FDF +:10024000DDCB176628010C3AE8E4B720040E03184A +:1002500011473A02E5B7280A3AE9E4B820043A6EB1 +:10026000E54FCBE1FD710011B0432AF9E41956DDE9 +:100270007E0BB720043E40AA577AE6C0FD77052AD8 +:10028000F9E47A11004219575ED5FD730411C04894 +:100290002AF9E419AF575ECB7B280115DD6E02DD2C +:1002A0006603292929176C6719EB21E900B7ED527C +:1002B000ED5BE3E519FD7502FD7403D1CB42284DDA +:1002C0001CFD730CFD7108E501704A2AF9E4097EF2 +:1002D0000600ED444FCB79280105E109FD750AFDC3 +:1002E000740B7AE6C0FD770D0110472AF9E4097E08 +:1002F000CB722802ED444F0600CB79280105FD663C +:1003000007FD6E0609FD750EFD740F1804FD360C11 +:100310000011F0FFFD19011800DD0921E8E4343A6D +:10032000E9E4BED2B3013A6AE5FE02C8FD2100E36A +:100330003A17E58787872112E586ED443C4F060092 +:100340002AE3E509FD7502FD7403FD3600123A1635 +:10035000E5C6048787876F260029FD7506FD7407AB +:100360003A10E5FD7704FD2108E3FD360400FD3673 +:100370000C0016141E02DD2118E5DD7E01FE0028AA +:100380003ADD7E03878787473EF1904F06002AE3D8 +:10039000E509FD7502FD7403DD7E02C604878787CB +:1003A0006F260029FD7506FD7407FD360012DD7EFF +:1003B00001FD7704010800FD091DC8010400DD09E5 +:1003C0001520B7219EE506007EB7281235200FE5DF +:1003D000788787875F160021C4E3193600E123047C +:1003E00078FE0838E3C9218AE57E23B623477EE6F6 +:1003F000F0B0200BAF773E0132CEE5CD0332C90E0F +:100400000021B1E63A8BE5BE20010CED5BE1E52170 +:100410008DE57E9327772B7E9A277706022B7EDE4B +:1004200000277710F8CB41C83A8BE521B1E6BEC86A +:100430007EFE1520043E1C180AFE1020043E1D18E6 +:10044000023E1ECD42317ED6052777C93AFCE4B77D +:10045000C021B6E53A04E5B7200236FF7EFE8038BB +:100460000236187E2104E5FE09300D7EFE012806C5 +:100470003E0177CD8963180B7EFE0228063E027787 +:10048000CD89633A41E4217BE5BE200C3A43E42365 +:10049000BE20053E0132AFE63AAFE6B7C83A46E4C1 +:1004A000FE08C0AFCD8963F13E00329DE53E00CD30 +:1004B00042313E23CD42313E54CD3E30CD8D323A95 +:1004C00000E5B720472121D736052B36001122D76A +:1004D000013E00EDB021A1D736052B360011A2D781 +:1004E000013E00EDB02121D836052B36001122D86F +:1004F000013E00EDB00E4721A2D711F806CD2D30F8 +:100500003E1FCD42310E02CDCF2F184C3AFFE4B73B +:10051000C264052125D736052B36001126D70138B0 +:1005200000EDB021A5D736052B360011A6D701382E +:1005300000EDB02125D836052B36001126D801381C +:1005400000EDB00E4721A6D711DC06CD2D303E1FA1 +:10055000CD42310E01CDCF2FCD03323A00E53289A5 +:10056000E5CD8906216CE53A8BE5BE3857CDB93229 +:1005700021A3D136052B360011A4D1013400EDB0F2 +:100580002123D236052B36001124D2013400EDB0E0 +:1005900021A3D236052B360011A4D2013400EDB0D0 +:1005A0000E472124D2116F06CD2D302A8BE522B6BD +:1005B000E63EFF32B5E63E013205E5CDE4052AB65A +:1005C000E6228BE5CDE405218EE54E347EFE6120EA +:1005D00002364979CDEC31B7C2005D79E607CA34FD +:1005E00028C3ED263A8FE53289E53E143288E52AA4 +:1005F0008BE57CE6F0B52832218CE57ED610277796 +:100600002B7EDE002777011000CDDB2FCD033221BA +:1006100088E53520DA218FE53A89E5BE20053E11CF +:10062000CD42313E04CD300618C03E1CCD3006C947 +:1006300032B5E53A05E5B7282A21B5E67EFE8038D1 +:100640000236287EFE143012212BD136052B3600BF +:10065000112CD1010200EDB01809212AD1116B062D +:10066000CD2D303AB5E5FE0020C9C906583200420A +:10067000454C4F572048414C462054494D45204356 +:100680004C454152414E4345003E093288E521B96F +:10069000D836052B360011BAD8010C00EDB021393F +:1006A000D936052B3600113AD9010C00EDB00E47B2 +:1006B0001126073A88E51F300C1118073A89E5B76B +:1006C0002003111F0721BAD8CD2D303E0ECD3E306C +:1006D0002188E53520D83E70CD3E30C9594F552090 +:1006E00048415645204B494C4C4544204E4F2045EF +:1006F0004E454D4945532E00594F55204D414445D7 +:1007000020495420574954484F555420454E54527F +:10071000415050494E472E000431303030300004F3 +:10072000323030303000202020202000CDCE07CDC8 +:100730001D08CDAA093A50E4B7C03AA7E5B7280E7C +:100740003E00329DE53E38CD3E30F1C38568DB0486 +:10075000CB77C83E0C324AE43E01329DE53E00CDE7 +:1007600042313E06CD42313E38CD3E303E00329DD4 +:10077000E5F1218FE5357EFEFF202A2134D711A82F +:1007800007CD2D3021B4D711B507CD2D302134D868 +:1007900011A807CD2D303E21CD42313E8CCD3E30CB +:1007A0003E023290E5C3E36A06202020202020206C +:1007B0002020202000062047414D45204F5645521D +:1007C00020002054494D45204F56455220003ACE36 +:1007D000E5B7C8DB04CB77C8F1AF32CEE5329DE593 +:1007E0003E00CD42313E25CD42312135D736052B55 +:1007F00036001136D7011400EDB00E4721B4D711E1 +:10080000C207CD2D302135D836052B36001136D80C +:10081000011400EDB03E8CCD3E30C367072A55E48D +:1008200001C0FE09D0AF3250E4329DE5CD8D3221BA +:1008300029D736052B3600112AD7012A00EDB02121 +:10084000A9D736052B360011AAD7012A00EDB02111 +:1008500029D836052B3600112AD8012A00EDB03EE2 +:10086000023289E53E10CD42313E043288E53A88B5 +:10087000E51F301221ABD736052B360011ACD7015E +:100880002800EDB0180B0E4721AAD711C008CD2DB6 +:10089000303E15CD3E302188E53520D22189E53521 +:1008A00020C23E10CD42310E4721AAD711C008CD3B +:1008B0002D303E54CD3E303A8FE5B7C0CDB932C968 +:1008C000594F552041524520424F554E4420544FD8 +:1008D000204449452E00DB032F47E60332DFE5784D +:1008E0001F1FE6034F060021F008097E32E0E5C92C +:1008F00002010304DB032F1F1F1F1F4721AFE5DB8E +:1009000004CB572011783CE6037723781F1FE603BA +:10091000FE02DEF577C9783CE60FCB5F28013C7715 +:100920002377C921ADE511AFE5DB00CD580921AE34 +:10093000E513DB021FF604CD58093AB9E54721ABB0 +:10094000E57EB72805353E02B047237EB72805353A +:100950003E04B04778D301C91F1F1FCB161FCB160B +:100960007EE655FE50202B2B2B360C3AB2E6B720F4 +:10097000083E12D300F680D3001AFE012812FE08AA +:10098000300C21B1E534BEC0AF773E011802D60865 +:10099000180D7EE6AAC021B3E5347EE60FC03C21E7 +:1009A000B2E5862730023E9977C9DB04CB6FC0CB16 +:1009B00067C8DB00CB47C0F1F1AF329DE53E00CD0B +:1009C00042312110D03600545D1301EF13EDB021F8 +:1009D00022D711290ACD2D30211AD911480ACD2D3F +:1009E000301100000E043A8EE52160D9CD48302147 +:1009F0008EE5DB01CB7F280ECB42280816007EFE59 +:100A00000238013518021601DB01CB6F2809CB43F0 +:100A100028031E003418021E013E01CD3E30DB00CB +:100A2000CB4F20C07E3DC3D4050253454C454354B3 +:100A300020425554544F4E20544F204348414E4776 +:100A40004520524F554E4400024449474C454654B8 +:100A50002D2D444F574E2020444947524947485472 +:100A60002D2D555020204C4556454C2D303000C77B +:100A7000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C706 +:100A8000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7F6 +:100A9000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7E6 +:100AA000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7D6 +:100AB000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C6 +:100AC000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7B6 +:100AD000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7A6 +:100AE000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C796 +:100AF000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C786 +:100B00003AA7E5B7280ECD125C324DE4FEFF200473 +:100B1000AF3250E42A44E47D6C2C2CCDD5627E2A81 +:100B200055E4FE0E38032318032100002255E4DDAE +:100B30002140E42108E57EB72801352106E57EB78E +:100B40002818353A0AE5DDBE0B200F210BE53A44A3 +:100B5000E4BE2806773E0CCD73303A4EE4B7FAB4C3 +:100B60000FC24310214CE47EB7281135C03608214E +:100B70004AE4347EE6FCFE14C83614C93A54E4FE56 +:100B800002200D061CCD9F10D0AF3254E4CD371299 +:100B90003A54E4FE01200ECD0E120620CD9F10D057 +:100BA0003E033254E4AF3251E43A44E42A45E4CD02 +:100BB000002D06F80E10CD8D2ECA9F0CAF3287E5A2 +:100BC0003254E47EE6FCFE1820133E013287E53AFB +:100BD00042E4B720083E013251E4CA9F0C3A45E492 +:100BE000FE1D300E1AE6F8FE1028071AE6F8FE0879 +:100BF000200D3E013287E53A42E4FE80DA9F0C2A5E +:100C000047E43A46E4CD152DDAB10C214FE47EB726 +:100C10002006343E15CD42313E0C324AE42109E52E +:100C20007EB7280435C3B10CCD0E122A42E47C11E4 +:100C30001E00192242E4BC280A3A87E5B72804AF0F +:100C40003242E42A42E4297C3C1F3245E429297CD3 +:100C50003246E4CD88113A42E4B7C03A44E42A452A +:100C6000E4CD002D3A45E4FE1D30061AE6F8FE08F4 +:100C7000C0150E04CDA92EC01D1D1D1D3A44E4B79C +:100C800028061AE6F8FE08C03A44E4FE17300A7B4C +:100C9000C6085F1AE6F8FE08C03E08324CE4C921D7 +:100CA0004FE47EB7280736003E16CD4231AF3252B0 +:100CB000E43A4DE4CB7FC2420FCB6FC2CF0FCB5F84 +:100CC0002806CD4C0ED81808CB572804CDB70ED81F +:100CD0003A4DE4CB47C25E0DCB4FC2210D3A44E4FE +:100CE0002A45E4CD002D1AE6F8FE08200B3E12320C +:100CF0004AE43E013249E4C906F80E10CD8D2E209B +:100D00000D151AE6F8FE10C03E08324AE4C97EE628 +:100D1000FCFE1820063E07324AE4C93E12324AE47D +:100D2000C9AF3287E53A44E42A45E4CD002D3A4480 +:100D3000E4B7280E151B1B1B1B06F80E08CD712EE1 +:100D4000200C3E013287E53A40E43DFE7FD03E0173 +:100D5000324BE4CD3712CDD40D11ECFF183DAF323C +:100D600087E53A44E42A45E4CD002D3A44E4FE17F1 +:100D7000300E151313131306F80E08CD712E200E26 +:100D80003E013287E53A40E4FE803002B7C9AF3217 +:100D90004BE4CD3712CDD40D1114002A40E47C1958 +:100DA0002240E4BC28143A87E5B7280E2A40E47DA7 +:100DB000FE803801242E002240E42A40E4297C3CB5 +:100DC0001F3244E429297C3247E4CD88110600CD46 +:100DD000F11037C93A51E4B7C8F13A4AE4E6FC21C8 +:100DE00049E4FE2C2802360135C0214AE4347EE66F +:100DF000FCFE2C2802362C7ED6184F060021204CF3 +:100E0000097E3249E421D04D097E878787875F3A82 +:100E100087E5572A40E43A4BE4B77D280D93300824 +:100E2000CB422803AF180125180983300624CB4292 +:100E30002801AF6F2240E42A40E4297C3C1F324461 +:100E4000E429297C3247E4CD881137C9AF3287E5E0 +:100E50003A44E42A45E4CD002D06F80E10CD8D2E3F +:100E600020143A45E4FE01281615151AE6F8FE0886 +:100E7000280D181718091AE6F8FE102802B7C93A03 +:100E800042E43DFE7FD03E013287E5CD0E123A446A +:100E9000E42A45E4CD002D151AE6F811E2FFFE1014 +:100EA000CA070F2154E47EFE03C2070F353E1C32F1 +:100EB0004AE4CDAB1037C9AF3287E53A45E4FE1DB1 +:100EC00030071AE6F8FE08200E3A42E4FE803002AF +:100ED000B7C93E013287E5CD0E123A44E42A43E415 +:100EE000CD002D1A15E6F8FE101A111E002018E686 +:100EF000F8FE1028122154E47EB7200B343E203235 +:100F00004AE4CDAB1037C92A42E47C192242E4BC42 +:100F100028113A87E5B7280B7DFE803801242E0082 +:100F20002242E42A42E4297C3C1F3245E429297C00 +:100F30003246E4CD88110608CDF1103E033254E468 +:100F400037C9AF320FE53A45E4FE1CD03A44E4B766 +:100F5000C83A45E46FC6033217E53A44E43D321619 +:100F6000E5CD002D06FC0E08CD7F2EC0ED5313E518 +:100F70001506F80E00CD7F2EC03E10324AE4141C38 +:100F80001C1C1C1AE6F8FE0828172C2C2C2C7EE6BC +:100F9000FCFE1828077EE6F8FE1020053E11324AB6 +:100FA000E43EFF324EE42140012211E53E01324B86 +:100FB000E43207E53A0FE5FE0ED259102A46E47DE9 +:100FC000C6086F7CD606CDEF2DDA9210C35910AF4C +:100FD000320FE53A45E4FE1CD03A44E4FE17D03A1D +:100FE00045E46FC6033217E53A44E43C3216E5CDDA +:100FF000002D06FC0E08CD7F2EC0ED5313E515061F +:10100000F80E00CD7F2EC03E10324AE4141D1D1D87 +:101010001D1AE6F8FE0828172D2D2D2D7EE6FCFE64 +:101020001828077EE6F8FE1020053E11324AE43EFD +:1010300001324EE42140012211E5AF324BE43E0182 +:101040003207E53A0FE5FE0E300F2A46E47DC6086A +:101050006F7CC606CD312E38392107E57EB72807CB +:1010600036003E01CD4231CD0E12CD37123A0FE59A +:10107000FE14D203112110E536F33A0FE51F1F309D +:101080000236F22A11E511C000192211E5210FE5FF +:1010900034C93E003210E5AF324EE43207E5C921D3 +:1010A00049E4352802B7C9214AE4343A4AE4D6185B +:1010B0004F060021204C097E3249E4B720073E014B +:1010C0003249E437C921A84E09561E00CB2ACB1B52 +:1010D000CB2ACB1BCB2ACB1B2A42E4192242E42A7F +:1010E00042E4297C3C1F3245E429297C3246E4B79E +:1010F000C92149E435C03606214AE4347EE6FCB80D +:10110000C870C9AF324EE4320CE53D320BE5CDDD9F +:101110000CED5B13E53E04CDBE2F3E003210E52101 +:1011200018E506147EB728072323232310F6C936B3 +:10113000A023233A16E5775F233A17E577572A71FC +:10114000E5B7ED52C02271E53E013202E521E9E446 +:101150007EFD2158E4011800FD093D20FB34FD7798 +:1011600000FD7702FD7301FD730415FD7203FD722E +:10117000057B878787FD77077A878787FD7706FD59 +:10118000360901FD360CB0C93A51E4B720183A408F +:10119000E4FE803802ED44FE14D03A42E4FE80388A +:1011A00002ED44FE1ED03A44E42A45E4CD002D155C +:1011B0001AE6FCFE602020CD832FED5FFE3338045D +:1011C0003E08180AFE0D38043E0918023E0ACD7387 +:1011D000303E02CD4231C9FE70C021FCE435CD5C09 +:1011E0002F0E00141AFE0420020E04210DE53A0809 +:1011F000E5B72004360018067EFE033001347E81F8 +:10120000CD73303E133208E53E02CD4231C92A404B +:10121000E47DFE803007D6143001AF1806C61430C6 +:101220000224AF6F2240E4297C3C1F3244E4292988 +:101230007C3247E4C388113A52E4B7C02A42E47DC5 +:10124000FE803007D61E3001AF1806C61E300224BD +:10125000AF6F2242E4297C3C1F3245E429297C32CD +:1012600046E4C38811C7C7C7C7C7C7C7C7C7C7C76B +:10127000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7FE +:10128000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7EE +:10129000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7DE +:1012A000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7CE +:1012B000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7BE +:1012C000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7AE +:1012D000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C79E +:1012E000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C78E +:1012F000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C77E +:101300003AE9E432E8E4DD2158E4CD19131118007C +:10131000DD1921E8E43520F2C9216DE536003A02F5 +:10132000E5B728193AE8E4FE012012343A03E5B79C +:10133000280BDD7E0CFE202004DD360C40DD7E0E09 +:10134000B7C03AF5E4B72803DD3417DD7E0CB728C3 +:1013500032DD350CDD7E0CFE20DA2315DD6E07DD77 +:101360007E06CDF22EDD7E0CFEB0D0DD3509C0DD6F +:10137000360908DD340ADD7E0AE6FCFE14C8DD36D7 +:101380000A14C9DD7E14FE14200FCDF718D8061CF0 +:10139000CD661AD0DD361400C9DD7E14FE012012A0 +:1013A000CDC11BCDF718D80620CD661AD0DD361476 +:1013B00015C9DD7E15FE022019CDC11BCDF718D849 +:1013C0000628CD661AD0DD361500DD3409DD360F6E +:1013D00002C9DD7E15FE01200FCDF718D80624CDF9 +:1013E000661AD0DD361503C9DD7E06DD6E07CD9E9B +:1013F0002DDA7515DD7E04DD6E05CD002D06F80EA7 +:1014000010CD8D2ECA7515AF3287E5DD77147EE6D7 +:10141000FCFE18200C3E013287E5DD7E02B7CA755E +:1014200015DD7E05FE1D30291AE6F8FE1028221A69 +:10143000E6F8FE08281BDD7E16B728083CDDBE0551 +:10144000301C180D1AFE042015DD7E05DD771618F8 +:101450000D3E013287E5DD7E02FE80DA7515DD3650 +:101460001000CDC11BDD7E02C615DD7702300DDD1B +:1014700034033A87E5B72804AFDD7702DD6E02DD7D +:101480006603297C3C1FDD770529297CDD7706DD95 +:101490007E06DD6E07CDD32ECD391B060CCD2E1A60 +:1014A000DD7E04DD6E05CD002D247E25FE04203E6C +:1014B000DD7E0DB72819DD360D00EB06FC0E00CDE4 +:1014C0007F2E2004CD0E2FC921FCE435C9181F3A08 +:1014D0006DE5B728193A03E5B720133E013203E55D +:1014E000EB06FC0E00CD7F2E2003CD352FC9DD7E0F +:1014F00002B7C0151AFE04C03A87E5B7C8DD361634 +:1015000000DD360CC0DD361000DD360A103E05CD9C +:1015100042313A6DE5B7C0010001CDDB2F3E01320B +:1015200000E5C9B7283CFE1F200FDD361001DD366F +:101530000FFEDD3505DD3505C9FE183806DD7E0FE9 +:10154000FEFEC8DD361000DD3405DD3405DD7E0F1E +:10155000DD770BFEFE3804DD770CC9DD360A18CDC9 +:10156000761ADD360C01CDF718D80618CD661AD0DC +:10157000DD360C00C9DD361600DD361001DD7E0FCC +:10158000B7CA85173DCA29173DCA5D163DCA9A15C7 +:10159000DD6E07DD7E06CDF22EC9AF3287E5DD7E3A +:1015A00005FE012823DD7E04DD6E05CD002D06F845 +:1015B0000E10CD8D2E200B15151AE6F8FE082014FE +:1015C00018061AE6F8FE10C0DD7E023DFE7FD03E12 +:1015D000013287E5CDC11BDD7E04DD6E03CD002D1C +:1015E00024247EE6F8FE1020301AE6F8FE102029AA +:1015F000151AE6F8FE102821DD7E14FE15201ADDEE +:101600003514DD460ADD4E09C5DD360A1CCD761AD5 +:10161000C13041DD700ADD7109DD7E02D615DD774E +:1016200002300F3A87E5B72806AFDD77021803DDF1 +:101630003503DD6E02DD6603297C3C1FDD7705295D +:10164000297CDD7706CD391BCD7A1B0608CD2E1AF5 +:10165000DD361415DD7E06DD6E07C3D32EDD7E0676 +:10166000DD6E07CD9E2DD8AF3287E5DD7E05FE1DF0 +:101670003010DD7E04DD6E05CD002D1AE6F8FE0883 +:10168000200BDD7E02FE80D83E013287E57EE6FC3F +:10169000FE182017DD7E15FE032010DD3515DD3622 +:1016A0000A28CD761AD0DD360A0CC9CDC11BDD7EE5 +:1016B00004DD6E03CD002D1AE6F8FE102029151A60 +:1016C000E6F8FE102821DD7E14FE15281ADD3414FC +:1016D000DD460ADD4E09C5DD360A20CD761AC13059 +:1016E0003FDD700ADD7109DD7E02C615DD7702304F +:1016F0000DDD34033A87E5B72804AFDD7702DD6EF0 +:1017000002DD6603297C3C1FDD770529297CDD7716 +:1017100006CD391BCD7A1B0608CD2E1ADD361415E1 +:10172000DD7E06DD6E07C3D32EDD6E06DD7E07CDC2 +:10173000EF2DD8AF3287E5DD7E04B72816DD7E04B5 +:10174000DD6E05CD002D2B2B2B2B06F80E08CD8D35 +:101750002E200CDD7E003DFE7FD03E013287E53E2F +:1017600001DD770BCDEE1BCD4C18DD7E00D60EDDF6 +:101770007700300F3A87E5B72806AFDD770018030A +:10178000DD35011857DD6E06DD7E07CD312ED8AF71 +:101790003287E5DD7E04FE173016DD7E04DD6E0542 +:1017A000CD002D2323232306F80E08CD8D2E200BEC +:1017B000DD7E00FE80D83E013287E5AFDD770BCDC0 +:1017C000EE1BCD4C18DD7E00C60EDD7700300DDD42 +:1017D00034013A87E5B728ABAFDD7700DD6E00DD79 +:1017E0006601297C3C1FDD770429297CDD7707CD44 +:1017F000391BCD7A1BDD6E06DD7E0BB7DD7E07283B +:1018000005CDB92E1803CDB52EDD7E04DD6E05CDD8 +:10181000002DE6FCFE182019DD7E15B7200BDD3407 +:1018200015DD360A24CD761AD0DD361503060418E8 +:1018300018DD7E15FE03200BDD3515DD360A28CDBB +:10184000761AD0DD3615000600C32E1A3A6DE5B7BC +:1018500020073AFBE4B7C818053A6FE5B7C8DD7E44 +:1018600004DD6E05CD002DE6FCFE18C0F1DD6E0630 +:10187000DD7E0BB7DD7E072805CDB92E1803CDB56B +:101880002EDD7E0AE6FCFE2C2804DD360901DD355E +:1018900009C0DD340ADD7E0AE6FCFE2C2804DD36B4 +:1018A0000A2CCD191B21204C097EDD770921D04D52 +:1018B000097EB7C8878787875F3A87E557DD7E004F +:1018C000DDCB0B46280F93300ACB422803AF180319 +:1018D000DD3501180B833008DD3401CB422801AF20 +:1018E000DD7700DD6E00DD6601297C3C1FDD7704BD +:1018F00029297CDD7707C9DD7E0FFEFFC8E603CA14 +:10190000A6193DCAEA193D2859DD7E0CB7280FDD1E +:101910007E04DD6E05CD002DE6F8FE0837C8DDCB70 +:101920000F6E200ADD7E06DD6E07CDA22DD8DD46C6 +:101930000FCB782020DD7E02D620DD77023003DD5C +:101940003503DD6E02DD6603297C3C1FDD7705294A +:10195000297CDD7706DD7E06DD6E07CB70CCD32ECD +:10196000B7C9DDCB0F6E200ADD7E06DD6E07CD9E8A +:101970002DD8DD460FCB782020DD7E02C620DD7716 +:10198000023003DD3403DD6E02DD6603297C3C1F7B +:10199000DD770529297CDD7706DD7E06DD6E07CB48 +:1019A00070CCD32EB7C9DDCB0F6E200ADD6E06DDFD +:1019B0007E07CD312ED8DD460FCB782020DD7E008E +:1019C000C610DD77003003DD3401DD6E00DD660119 +:1019D000297C3C1FDD770429297CDD7707DD6E0635 +:1019E000DD7E07CB70CCB52EB7C9DDCB0F6E200ADC +:1019F000DD6E06DD7E07CDEF2DD8DD460FCB7820DE +:101A000020DD7E00D610DD77003003DD3501DD6E90 +:101A100000DD6601297C3C1FDD770429297CDD7708 +:101A200007DD6E06DD7E07CB70CCB92EB7C9DD357C +:101A300009C0DD360906DD340ADD7E0AFE03201208 +:101A40003ACDE55F1600215D1A197EB72804DD70D6 +:101A50000AC9DD7E0AE6FCB8C8DD700AC9000001CB +:101A6000010000010000DD3509C0DD340ADD7E0A19 +:101A7000E6FCB8C20D1BDD361000CD191B21204C31 +:101A8000097EDD7709B7CA0D1B21F84C097E57E6A0 +:101A9000032007DDCB0B46280114DD720F21D04D4A +:101AA000097EB72830878787871600DDCB0B46284D +:101AB00003ED44155FDD6E00DD660119DD7500DDA7 +:101AC0007401DD6E00DD6601297C3C1FDD77042991 +:101AD000297CDD770721A84E097EB7282F561E00E6 +:101AE000CB2ACB1BCB2ACB1BCB2ACB1BDD6E02DD3B +:101AF000660319DD7502DD7403DD6E02DD66032900 +:101B00007C3C1FDD770529297CDD7706C9DD350A98 +:101B1000DD3409DD360FFF37C93A6DE5B728083ADD +:101B2000CDE5E6073C18033ACDE5478780878787F0 +:101B3000DD860AD6184F0600C93A6DE5B7C0DD7ECE +:101B400000FE803802ED44FE0ED0DD7E02FE8038BD +:101B500002ED44FE15D0DD7E04DD6E05CD002D15B1 +:101B60001AE6FCFE70C0DD7E0DB7C03A68E5C6041B +:101B7000878787DD770DCD5C2FC9DD7E0DB7C8DD8A +:101B80007E0FFE02D0DD7E0AFE043803FE08D8DD9B +:101B90007E04DD6E05CD002D1506FC0E00CD7F2EDA +:101BA000C0DD350DC0DD7E0FFE00DD7E002006FEAF +:101BB00080300A1804FE803804CD0E2FC9DD340DA4 +:101BC000C9DD7E00FE803007D60E3001AF1808C692 +:101BD0000E3004DD3401AFDD77006FDD6601297C56 +:101BE0003C1FDD770429297CDD7707C3391BDD7EA7 +:101BF00002FE803007D6153001AF1808C615300434 +:101C0000DD3403AFDD77026FDD6603297C3C1FDD29 +:101C1000770529297CDD7706C3391BC7C7C7C7C726 +:101C2000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C744 +:101C3000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C734 +:101C4000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C724 +:101C5000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C714 +:101C6000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C704 +:101C7000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7F4 +:101C8000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7E4 +:101C9000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7D4 +:101CA000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C4 +:101CB000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7B4 +:101CC000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7A4 +:101CD000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C794 +:101CE000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C784 +:101CF000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C774 +:101D00003AE9E432EAE4DD2158E4FD21EBE4DD7E4A +:101D100010B7281CDD6E04DD660522EFE4DD7E07CA +:101D200032F2E4CDFD1D47DD7E10B72803DD700FD4 +:101D3000111800DD1921EAE43520D33AE9E432EA4A +:101D4000E4DD2158E4DD7E04DD6E052C2CCDD5626A +:101D50007EE60DFE0D280A2101E57EFE39D0360013 +:101D6000C9111800DD1921EAE43520D92101E57EE9 +:101D7000FE38300234C9C0343E00329DE521B5E55D +:101D80007EBE28FDCD8D322129D736052B36001198 +:101D90002AD7012E00EDB021A9D736052B36001128 +:101DA000AAD7012E00EDB02129D836052B36001117 +:101DB0002AD8012E00EDB00E4721AAD711E51DCD7E +:101DC0002D303E1FCD42310E01CDCF2FCD03323EFF +:101DD000013289E5CD8906CDB9323E26CD42313E6C +:101DE00002329DE5C9414C4C20454E454D49455375 +:101DF00020415245205345414C45442E003A45E48C +:101E0000FDBE05C2B91EFD4604FD7E072147E4BEA6 +:101E1000380520543EFFC93A44E4B820033E00C9C7 +:101E20000478FD6E05CD002DE6FCFE1828E97EE65F +:101E3000F8FE1028E2247E25E6F8FE1028D9FD7E63 +:101E400005FE1D30D27EE6F8FE08286D247EE6F8F9 +:101E5000FE0828651AE6F8FE1028BC1AFE0428B70A +:101E6000E6F8FE0828B118513A44E4B820033E01D0 +:101E7000C90578FD6E05CD002DE6FCFE1828E97E2B +:101E8000E6F8FE1028E2247E25E6F8FE1028D9FDAB +:101E90007E05FE1D30D27EE6F8FE08281C247EE674 +:101EA000F8FE0828141AE6F8FE1028BC1AFE0428CA +:101EB000B7E6F8FE0828B118003EFF32EDE432EE36 +:101EC000E4FD7E0432EBE432ECE4CDE01ECD2B1FCA +:101ED000CD771FCD961FCDB91FCDF11F3AEDE4C9C7 +:101EE0003AEBE4B728443DFD6E05CD002D06F80E13 +:101EF00008CD8D2EC806F80E10CD8D2E28257EE635 +:101F0000FCFE18281EFD7E05FE1D30171AE6F8FEA1 +:101F10001028101AFE04280BE6F8FE08280521EB0D +:101F2000E435C921EBE4357E18B9C93AECE4FE1773 +:101F300030443CFD6E05CD002D06F80E08CD8D2EEB +:101F4000C806F80E10CD8D2E28257EE6FCFE18283A +:101F50001EFD7E05FE1D30171AE6F8FE1028101A29 +:101F6000FE04280BE6F8FE08280521ECE434C9211C +:101F7000ECE4347E18B8C9FD7E04CD2A20FDBE05F0 +:101F8000C832F3E4FD4E04CD3D2121EEE4BED0770E +:101F90003E0232EDE4C9FD7E04CDB620FDBE05C88B +:101FA000FD4E0432F4E4CD3D2121EEE447781800E3 +:101FB000BED0773E0332EDE4C921EBE47EFDBE04E2 +:101FC0003015CD2A20CDD81F3AEBE4CDB620CDD8A0 +:101FD0001F21EBE43418E5C9FDBE05C821EBE44E32 +:101FE000CD3D2121EEE4BED032EEE43E0132EDE4FF +:101FF000C921ECE4FD7E04BE30167ECD2A20CD1131 +:00000001FF diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/sdram.sv b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/sdram.sv new file mode 100644 index 00000000..41f5b7a8 --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/sdram.sv @@ -0,0 +1,348 @@ +// +// sdram.v +// +// sdram controller implementation for the MiST board +// https://github.com/mist-devel/mist-board +// +// Copyright (c) 2013 Till Harbaum +// Copyright (c) 2019 Gyorgy Szombathelyi +// +// This source file is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published +// by the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This source file is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// + +module sdram ( + + // interface to the MT48LC16M16 chip + inout reg [15:0] SDRAM_DQ, // 16 bit bidirectional data bus + output reg [12:0] SDRAM_A, // 13 bit multiplexed address bus + output reg SDRAM_DQML, // two byte masks + output reg SDRAM_DQMH, // two byte masks + output reg [1:0] SDRAM_BA, // two banks + output SDRAM_nCS, // a single chip select + output SDRAM_nWE, // write enable + output SDRAM_nRAS, // row address select + output SDRAM_nCAS, // columns address select + + // cpu/chipset interface + input init_n, // init signal after FPGA config to initialize RAM + input clk, // sdram clock + + input port1_req, + output reg port1_ack, + input port1_we, + input [23:1] port1_a, + input [1:0] port1_ds, + input [15:0] port1_d, + output reg [15:0] port1_q, + + input [16:1] cpu1_addr, + output reg [15:0] cpu1_q, + input [16:1] cpu2_addr, + output reg [15:0] cpu2_q, + + input port2_req, + output reg port2_ack, + input port2_we, + input [23:1] port2_a, + input [1:0] port2_ds, + input [15:0] port2_d, + output reg [31:0] port2_q, + + input [16:2] sp_addr, + output reg [31:0] sp_q +); + +localparam RASCAS_DELAY = 3'd2; // tRCD=20ns -> 2 cycles@<100MHz +localparam BURST_LENGTH = 3'b001; // 000=1, 001=2, 010=4, 011=8 +localparam ACCESS_TYPE = 1'b0; // 0=sequential, 1=interleaved +localparam CAS_LATENCY = 3'd2; // 2/3 allowed +localparam OP_MODE = 2'b00; // only 00 (standard operation) allowed +localparam NO_WRITE_BURST = 1'b1; // 0= write burst enabled, 1=only single access write + +localparam MODE = { 3'b000, NO_WRITE_BURST, OP_MODE, CAS_LATENCY, ACCESS_TYPE, BURST_LENGTH}; + +// 64ms/8192 rows = 7.8us -> 842 cycles@108MHz +localparam RFRSH_CYCLES = 10'd842; + +// --------------------------------------------------------------------- +// ------------------------ cycle state machine ------------------------ +// --------------------------------------------------------------------- + +/* + SDRAM state machine for 2 bank interleaved access + 1 word burst, CL2 +cmd issued registered + 0 RAS0 cas1 - data0 read burst terminated + 1 ras0 + 2 data1 returned + 3 CAS0 data1 returned + 4 RAS1 cas0 + 5 ras1 + 6 CAS1 data0 returned +*/ + +localparam STATE_RAS0 = 3'd0; // first state in cycle +localparam STATE_RAS1 = 3'd4; // Second ACTIVE command after RAS0 + tRRD (15ns) +localparam STATE_CAS0 = STATE_RAS0 + RASCAS_DELAY + 1'd1; // CAS phase - 3 +localparam STATE_CAS1 = STATE_RAS1 + RASCAS_DELAY; // CAS phase - 6 +localparam STATE_READ0 = 3'd0;// STATE_CAS0 + CAS_LATENCY + 2'd2; // 7 +localparam STATE_READ1 = 3'd3; +localparam STATE_DS1b = 3'd0; +localparam STATE_READ1b = 3'd4; +localparam STATE_LAST = 3'd6; + +reg [2:0] t; + +always @(posedge clk) begin + t <= t + 1'd1; + if (t == STATE_LAST) t <= STATE_RAS0; +end + +// --------------------------------------------------------------------- +// --------------------------- startup/reset --------------------------- +// --------------------------------------------------------------------- + +// wait 1ms (32 8Mhz cycles) after FPGA config is done before going +// into normal operation. Initialize the ram in the last 16 reset cycles (cycles 15-0) +reg [4:0] reset; +reg init = 1'b1; +always @(posedge clk, negedge init_n) begin + if(!init_n) begin + reset <= 5'h1f; + init <= 1'b1; + end else begin + if((t == STATE_LAST) && (reset != 0)) reset <= reset - 5'd1; + init <= !(reset == 0); + end +end + +// --------------------------------------------------------------------- +// ------------------ generate ram control signals --------------------- +// --------------------------------------------------------------------- + +// all possible commands +localparam CMD_INHIBIT = 4'b1111; +localparam CMD_NOP = 4'b0111; +localparam CMD_ACTIVE = 4'b0011; +localparam CMD_READ = 4'b0101; +localparam CMD_WRITE = 4'b0100; +localparam CMD_BURST_TERMINATE = 4'b0110; +localparam CMD_PRECHARGE = 4'b0010; +localparam CMD_AUTO_REFRESH = 4'b0001; +localparam CMD_LOAD_MODE = 4'b0000; + +reg [3:0] sd_cmd; // current command sent to sd ram +reg [15:0] sd_din; +// drive control signals according to current command +assign SDRAM_nCS = sd_cmd[3]; +assign SDRAM_nRAS = sd_cmd[2]; +assign SDRAM_nCAS = sd_cmd[1]; +assign SDRAM_nWE = sd_cmd[0]; + +reg [24:1] addr_latch[2]; +reg [24:1] addr_latch_next[2]; +reg [16:1] addr_last[2]; +reg [16:2] addr_last2[2]; +reg [15:0] din_latch[2]; +reg [1:0] oe_latch; +reg [1:0] we_latch; +reg [1:0] ds[2]; + +reg port1_state; +reg port2_state; + +localparam PORT_NONE = 2'd0; +localparam PORT_CPU1 = 2'd1; +localparam PORT_CPU2 = 2'd2; +localparam PORT_SP = 2'd1; +localparam PORT_REQ = 2'd3; + +reg [1:0] next_port[2]; +reg [1:0] port[2]; + +reg refresh; +reg [10:0] refresh_cnt; +wire need_refresh = (refresh_cnt >= RFRSH_CYCLES); + +// PORT1: bank 0,1 +always @(*) begin + if (refresh) begin + next_port[0] = PORT_NONE; + addr_latch_next[0] = addr_latch[0]; + end else if (port1_req ^ port1_state) begin + next_port[0] = PORT_REQ; + addr_latch_next[0] = { 1'b0, port1_a }; + end else if (cpu1_addr != addr_last[PORT_CPU1]) begin + next_port[0] = PORT_CPU1; + addr_latch_next[0] = { 8'd0, cpu1_addr }; + end else if (cpu2_addr != addr_last[PORT_CPU2]) begin + next_port[0] = PORT_CPU2; + addr_latch_next[0] = { 8'd0, cpu2_addr }; + end else begin + next_port[0] = PORT_NONE; + addr_latch_next[0] = addr_latch[0]; + end +end + +// PORT1: bank 2,3 +always @(*) begin + if (port2_req ^ port2_state) begin + next_port[1] = PORT_REQ; + addr_latch_next[1] = { 1'b1, port2_a }; + end else if (sp_addr != addr_last2[PORT_SP]) begin + next_port[1] = PORT_SP; + addr_latch_next[1] = { 1'b1, 7'd0, sp_addr, 1'b0 }; + end else begin + next_port[1] = PORT_NONE; + addr_latch_next[1] = addr_latch[1]; + end +end + +always @(posedge clk) begin + + // permanently latch ram data to reduce delays + sd_din <= SDRAM_DQ; + SDRAM_DQ <= 16'bZZZZZZZZZZZZZZZZ; + { SDRAM_DQMH, SDRAM_DQML } <= 2'b11; + sd_cmd <= CMD_NOP; // default: idle + refresh_cnt <= refresh_cnt + 1'd1; + + if(init) begin + // initialization takes place at the end of the reset phase + if(t == STATE_RAS0) begin + + if(reset == 15) begin + sd_cmd <= CMD_PRECHARGE; + SDRAM_A[10] <= 1'b1; // precharge all banks + end + + if(reset == 10 || reset == 8) begin + sd_cmd <= CMD_AUTO_REFRESH; + end + + if(reset == 2) begin + sd_cmd <= CMD_LOAD_MODE; + SDRAM_A <= MODE; + SDRAM_BA <= 2'b00; + end + end + end else begin + // RAS phase + // bank 0,1 + if(t == STATE_RAS0) begin + addr_latch[0] <= addr_latch_next[0]; + port[0] <= next_port[0]; + { oe_latch[0], we_latch[0] } <= 2'b00; + + if (next_port[0] != PORT_NONE) begin + sd_cmd <= CMD_ACTIVE; + SDRAM_A <= addr_latch_next[0][22:10]; + SDRAM_BA <= addr_latch_next[0][24:23]; + addr_last[next_port[0]] <= addr_latch_next[0][16:1]; + if (next_port[0] == PORT_REQ) begin + { oe_latch[0], we_latch[0] } <= { ~port1_we, port1_we }; + ds[0] <= port1_ds; + din_latch[0] <= port1_d; + port1_state <= port1_req; + end else begin + { oe_latch[0], we_latch[0] } <= 2'b10; + ds[0] <= 2'b11; + end + end + end + + // bank 2,3 + if(t == STATE_RAS1) begin + refresh <= 1'b0; + addr_latch[1] <= addr_latch_next[1]; + { oe_latch[1], we_latch[1] } <= 2'b00; + port[1] <= next_port[1]; + + if (next_port[1] != PORT_NONE) begin + sd_cmd <= CMD_ACTIVE; + SDRAM_A <= addr_latch_next[1][22:10]; + SDRAM_BA <= addr_latch_next[1][24:23]; + addr_last2[next_port[1]] <= addr_latch_next[1][16:2]; + if (next_port[1] == PORT_REQ) begin + { oe_latch[1], we_latch[1] } <= { ~port1_we, port1_we }; + ds[1] <= port2_ds; + din_latch[1] <= port2_d; + port2_state <= port2_req; + end else begin + { oe_latch[1], we_latch[1] } <= 2'b10; + ds[1] <= 2'b11; + end + end + + if (next_port[1] == PORT_NONE && need_refresh && !we_latch[0] && !oe_latch[0]) begin + refresh <= 1'b1; + refresh_cnt <= 0; + sd_cmd <= CMD_AUTO_REFRESH; + end + end + + // CAS phase + if(t == STATE_CAS0 && (we_latch[0] || oe_latch[0])) begin + sd_cmd <= we_latch[0]?CMD_WRITE:CMD_READ; + { SDRAM_DQMH, SDRAM_DQML } <= ~ds[0]; + if (we_latch[0]) begin + SDRAM_DQ <= din_latch[0]; + port1_ack <= port1_req; + end + SDRAM_A <= { 4'b0010, addr_latch[0][9:1] }; // auto precharge + SDRAM_BA <= addr_latch[0][24:23]; + end + + if(t == STATE_CAS1 && (we_latch[1] || oe_latch[1])) begin + sd_cmd <= we_latch[1]?CMD_WRITE:CMD_READ; + { SDRAM_DQMH, SDRAM_DQML } <= ~ds[1]; + if (we_latch[1]) begin + SDRAM_DQ <= din_latch[1]; + port2_ack <= port2_req; + end + SDRAM_A <= { 4'b0010, addr_latch[1][9:1] }; // auto precharge + SDRAM_BA <= addr_latch[1][24:23]; + end + + // Data returned + if(t == STATE_READ0 && oe_latch[0]) begin + case(port[0]) + PORT_REQ: begin port1_q <= sd_din; port1_ack <= port1_req; end + PORT_CPU1: begin cpu1_q <= sd_din; end + PORT_CPU2: begin cpu2_q <= sd_din; end + default: ; + endcase; + end + + if(t == STATE_READ1 && oe_latch[1]) begin + case(port[1]) + PORT_REQ: port2_q[15:0] <= sd_din; + PORT_SP : sp_q[15:0] <= sd_din; + default: ; + endcase; + end + + if(t == STATE_DS1b && oe_latch[1]) { SDRAM_DQMH, SDRAM_DQML } <= ~ds[1]; + + if(t == STATE_READ1b && oe_latch[1]) begin + case(port[1]) + PORT_REQ: begin port2_q[31:16] <= sd_din; port2_ack <= port2_req; end + PORT_SP : begin sp_q[31:16] <= sd_din; end + default: ; + endcase; + end + end +end + +endmodule diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/spram.vhd b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/spram.vhd new file mode 100644 index 00000000..d86010fc --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/spram.vhd @@ -0,0 +1,91 @@ +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY spram IS + GENERIC + ( + init_file : string := ""; + --numwords_a : natural; + widthad_a : natural; + width_a : natural := 8; + outdata_reg_a : string := "UNREGISTERED" + ); + PORT + ( + address : IN STD_LOGIC_VECTOR (widthad_a-1 DOWNTO 0); + clock : IN STD_LOGIC ; + data : IN STD_LOGIC_VECTOR (width_a-1 DOWNTO 0); + wren : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (width_a-1 DOWNTO 0) + ); +END spram; + + +ARCHITECTURE SYN OF spram IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (width_a-1 DOWNTO 0); + + + + COMPONENT altsyncram + GENERIC ( + clock_enable_input_a : STRING; + clock_enable_output_a : STRING; + init_file : STRING; + intended_device_family : STRING; + lpm_hint : STRING; + lpm_type : STRING; + numwords_a : NATURAL; + operation_mode : STRING; + outdata_aclr_a : STRING; + outdata_reg_a : STRING; + power_up_uninitialized : STRING; + read_during_write_mode_port_a : STRING; + widthad_a : NATURAL; + width_a : NATURAL; + width_byteena_a : NATURAL + ); + PORT ( + wren_a : IN STD_LOGIC ; + clock0 : IN STD_LOGIC ; + address_a : IN STD_LOGIC_VECTOR (widthad_a-1 DOWNTO 0); + q_a : OUT STD_LOGIC_VECTOR (width_a-1 DOWNTO 0); + data_a : IN STD_LOGIC_VECTOR (width_a-1 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + q <= sub_wire0(width_a-1 DOWNTO 0); + + altsyncram_component : altsyncram + GENERIC MAP ( + clock_enable_input_a => "BYPASS", + clock_enable_output_a => "BYPASS", + init_file => init_file, + intended_device_family => "Cyclone III", + lpm_hint => "ENABLE_RUNTIME_MOD=NO", + lpm_type => "altsyncram", + numwords_a => 2**widthad_a, + operation_mode => "SINGLE_PORT", + outdata_aclr_a => "NONE", + outdata_reg_a => outdata_reg_a, + power_up_uninitialized => "FALSE", + read_during_write_mode_port_a => "NEW_DATA_NO_NBE_READ", + widthad_a => widthad_a, + width_a => width_a, + width_byteena_a => 1 + ) + PORT MAP ( + wren_a => wren, + clock0 => clock, + address_a => address, + data_a => data, + q_a => sub_wire0 + ); + + + +END SYN; diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/sprite_array.vhd b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/sprite_array.vhd new file mode 100644 index 00000000..880f09f2 --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/sprite_array.vhd @@ -0,0 +1,164 @@ +library IEEE; +use IEEE.std_logic_1164.all; +use ieee.numeric_std.all; +--use ieee.std_logic_arith.all; +--use IEEE.std_logic_unsigned.all; + +library work; +use work.pace_pkg.all; +use work.video_controller_pkg.all; +use work.sprite_pkg.all; +use work.platform_pkg.all; + +entity sprite_array is + generic + ( + N_SPRITES : integer; + DELAY : integer + ); + port + ( + reset : in std_logic; + + -- register interface + reg_i : in to_SPRITE_REG_t; + + -- video control signals + video_ctl : in from_VIDEO_CTL_t; + + -- extra data + graphics_i : in to_GRAPHICS_t; + + -- sprite data + row_a : out SPRITE_ROW_A_t; + row_d : in SPRITE_ROW_D_t; + + -- video data + rgb : out RGB_t; + set : out std_logic; + pri : out std_logic; + spr0_set : out std_logic + ); +end entity sprite_array; + +architecture SYN of sprite_array is + + type reg_a_t is array (natural range <>) of from_SPRITE_REG_t; + type ctl_i_a_t is array (natural range <>) of to_SPRITE_CTL_t; + type ctl_o_a_t is array (natural range <>) of from_SPRITE_CTL_t; + + alias clk : std_logic is video_ctl.clk; + alias clk_ena : std_logic is video_ctl.clk_ena; + + signal reg_o : reg_a_t(0 to N_SPRITES-1); + signal ctl_i : ctl_i_a_t(0 to N_SPRITES-1); + signal ctl_o : ctl_o_a_t(0 to N_SPRITES-1); + + signal ld_r : std_logic_vector(N_SPRITES-1 downto 0); + +begin + + -- Sprite Data Load Arbiter + -- - enables each sprite controller during hblank + -- to allow loading of sprite row data into row buffer + process (clk, clk_ena, reset) + variable i : integer range 0 to N_SPRITES-1; + begin + if reset = '1' then + -- enable must be 1 clock behind address to latch data after fetch + --ld_r <= (N_SPRITES-1 => '1', others => '0'); + -- make ISE 9.2.03i happy... + ld_r(ld_r'left) <= '1'; + ld_r(ld_r'left-1 downto 0) <= (others => '0'); + i := 0; + elsif rising_edge(clk) and clk_ena = '1' then + ld_r <= ld_r(ld_r'left-1 downto 0) & ld_r(ld_r'left); + if i = N_SPRITES-1 then + i := 0; + else + i := i + 1; + end if; + row_a <= ctl_o(i).a; + end if; + end process; + + -- sprite row data fan-out + GEN_ROW_D : for i in 0 to N_SPRITES-1 generate + ctl_i(i).ld <= ld_r(i); + ctl_i(i).d <= row_d; + end generate GEN_ROW_D; + + -- Sprite Priority Encoder + -- - determines which sprite pixel (if any) is to be displayed + -- We can use a clocked process here because the tilemap + -- output is 1 clock behind at this point + process (clk, clk_ena) + variable spr_on_v : std_logic := '0'; + variable spr_pri_v : std_logic := '0'; + begin + if rising_edge(clk) and clk_ena = '1' then + spr_on_v := '0'; + spr_pri_v := '0'; + for i in 0 to N_SPRITES-1 loop + -- if highest priority = 0 and pixel on + if spr_pri_v = '0' and ctl_o(i).set = '1' then + -- if no sprite on or this priority = 1 + if spr_on_v = '0' or reg_o(i).pri = '1' then + rgb <= ctl_o(i).rgb; + spr_on_v := '1'; -- flag as sprite on + spr_pri_v := reg_o(i).pri; -- store priority + end if; + end if; + end loop; + end if; + set <= spr_on_v; + pri <= spr_pri_v; + end process; + + -- for NES, and perhaps others + -- it's actually more complicated than this + -- but it'll do for now... + spr0_set <= ctl_o(0).set; + + -- + -- Component Instantiation + -- + + GEN_REGS : for i in 0 to N_SPRITES-1 generate + + sptReg_inst : entity work.sptReg + generic map + ( + INDEX => i + ) + port map + ( + reg_i => reg_i, + reg_o => reg_o(i) + ); + + sptCtl_inst : entity work.spritectl + generic map + ( + INDEX => i, + DELAY => DELAY + ) + port map + ( + -- sprite registers + reg_i => reg_o(i), + + -- video control signals + video_ctl => video_ctl, + + -- sprite control signals + ctl_i => ctl_i(i), + ctl_o => ctl_o(i), + + graphics_i => graphics_i + ); + + end generate GEN_REGS; + +end SYN; + diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/sprite_pkg.vhd b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/sprite_pkg.vhd new file mode 100644 index 00000000..ee5cf179 --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/sprite_pkg.vhd @@ -0,0 +1,97 @@ +library IEEE; +use IEEE.std_logic_1164.all; +--use IEEE.numeric_std.all; +use ieee.std_logic_arith.all; +use ieee.std_logic_unsigned.all; + +library work; +use work.video_controller_pkg.all; + +package sprite_pkg is + + subtype SPRITE_N_t is std_logic_vector(11 downto 0); + subtype SPRITE_A_t is std_logic_vector(7 downto 0); + subtype SPRITE_D_t is std_logic_vector(7 downto 0); + + type from_SPRITE_REG_t is record + n : SPRITE_N_t; + x : std_logic_vector(10 downto 0); + y : std_logic_vector(10 downto 0); + xflip : std_logic; + yflip : std_logic; + colour : std_logic_vector(7 downto 0); + pri : std_logic; + end record; + + type to_SPRITE_REG_t is record + clk : std_logic; + clk_ena : std_logic; + wr : std_logic; + a : SPRITE_A_t; + d : SPRITE_D_t; + end record; + + function NULL_TO_SPRITE_REG return to_SPRITE_REG_t; + + subtype SPRITE_ROW_D_t is std_logic_vector(63 downto 0); + subtype SPRITE_ROW_A_t is std_logic_vector(15 downto 0); + + type to_SPRITE_CTL_t is record + ld : std_logic; + d : SPRITE_ROW_D_t; + end record; + + type from_SPRITE_CTL_t is record + a : SPRITE_ROW_A_t; + rgb : RGB_t; + set : std_logic; + end record; + + function NULL_TO_SPRITE_CTL return to_SPRITE_CTL_t; + + component sprite_array is + generic + ( + N_SPRITES : integer; + DELAY : integer + ); + port + ( + reset : in std_logic; + + -- register interface + reg_i : in to_SPRITE_REG_t; + + -- video control signals + video_ctl : in from_VIDEO_CTL_t; + + -- extra data + graphics_i : in to_GRAPHICS_t; + + -- sprite data + row_a : out SPRITE_ROW_A_t; + row_d : in SPRITE_ROW_D_t; + + -- video data + rgb : out RGB_t; + set : out std_logic; + pri : out std_logic; + spr0_set : out std_logic + ); + end component sprite_array; + + function flip_row + ( + row_in : std_logic_vector; + flip : std_logic + ) + return SPRITE_ROW_D_t; + + function flip_1 + ( + d_i : std_logic_vector; + flip : std_logic + ) + return std_logic_vector; + +end package sprite_pkg; diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/sprite_pkg_body.vhd b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/sprite_pkg_body.vhd new file mode 100644 index 00000000..551261b2 --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/sprite_pkg_body.vhd @@ -0,0 +1,62 @@ +library work; +use work.pace_pkg.all; +--use work.sprite_pkg.all; + +package body sprite_pkg is + + function NULL_TO_SPRITE_REG return to_SPRITE_REG_t is + begin + return ('0', '0', '0', (others => '0'), (others => '0')); + end function NULL_TO_SPRITE_REG; + + function NULL_TO_SPRITE_CTL return to_SPRITE_CTL_t is + begin + return ('0', (others => '0')); + end function NULL_TO_SPRITE_CTL; + + function flip_row + ( + row_in : std_logic_vector; + flip : std_logic + ) + return std_logic_vector is + + constant HALF : natural := (row_in'length / 2) - 1; + + alias row_in_0 : std_logic_vector(row_in'length-1 downto 0) + is row_in; + variable row_out : std_logic_vector(row_in_0'range); + + begin + + if flip = '0' then + return row_in; + else + for i in 0 to HALF loop + row_out ((HALF-i)*2+1 downto (HALF-i)*2) := row_in_0(i*2+1 downto i*2); + end loop; + return row_out; + end if; + + end flip_row; + + function flip_1 + ( + d_i : std_logic_vector; + flip : std_logic + ) + return std_logic_vector is + alias d_i_0 : std_logic_vector(d_i'length-1 downto 0) is d_i; + variable d_o : std_logic_vector(d_i_0'range); + begin + if flip = '0' then + return d_i; + else + for i in d_i_0'range loop + d_o(i) := d_i_0(d_i_0'high-i); + end loop; + return d_o; + end if; + end function flip_1; + +end package body sprite_pkg; diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/spritectl.vhd b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/spritectl.vhd new file mode 100644 index 00000000..dc91db61 --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/spritectl.vhd @@ -0,0 +1,202 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +library work; +use work.pace_pkg.all; +use work.video_controller_pkg.all; +use work.sprite_pkg.all; +--use work.project_pkg.all; +use work.platform_pkg.all; +use work.platform_variant_pkg.all; + +entity spritectl is + generic + ( + INDEX : natural; + DELAY : integer + ); + port + ( + -- sprite registers + reg_i : in from_SPRITE_REG_t; + + -- video control signals + video_ctl : in from_VIDEO_CTL_t; + + -- sprite control signals + ctl_i : in to_SPRITE_CTL_t; + ctl_o : out from_SPRITE_CTL_t; + + graphics_i : in to_GRAPHICS_t + ); +end entity spritectl; + +architecture SYN of spritectl is + + alias clk : std_logic is video_ctl.clk; + alias clk_ena : std_logic is video_ctl.clk_ena; + + signal flipData : std_logic_vector(47 downto 0); -- flipped row data + + alias rgb : RGB_t is ctl_o.rgb; + +begin + + flipData(47 downto 32) <= flip_1 (ctl_i.d(47 downto 32), reg_i.xflip); + flipData(31 downto 16) <= flip_1 (ctl_i.d(31 downto 16), reg_i.xflip); + flipData(15 downto 0) <= flip_1 (ctl_i.d(15 downto 0), reg_i.xflip); + + process (clk, clk_ena) + + variable rowStore : std_logic_vector(47 downto 0); -- saved row of spt to show during visibile period + variable pel : std_logic_vector(2 downto 0); + variable x : unsigned(video_ctl.x'range); + variable y : unsigned(video_ctl.y'range); + variable yMat : boolean; -- raster is between first and last line of sprite + variable xMat : boolean; -- raster in between left edge and end of line + + variable height : unsigned(6 downto 0); + -- the width of rowCount determines the scanline multipler + -- - eg. (4 downto 0) is 1:1 + -- (5 downto 0) is 2:1 (scan-doubling) +-- variable rowCount : unsigned(3+PACE_VIDEO_V_SCALE downto 0); +-- alias row : unsigned(4 downto 0) is +-- rowCount(rowCount'left downto rowCount'left-4); + variable rowCount : unsigned(height'range); + alias row : unsigned(rowCount'range) is rowCount; + -- which part of the sprite is being drawn + alias segment : unsigned(1 downto 0) is rowCount(5 downto 4); + + variable prom_i : integer range sprite_prom'range; + variable code : std_logic_vector(9 downto 0); + variable pal_i : std_logic_vector(7 downto 0); + variable pal_rgb : pal_rgb_t; + + begin + + if rising_edge(clk) then + if clk_ena = '1' then + if video_ctl.hblank = '1' then + + x := unsigned(reg_i.x) - M62_VIDEO_H_OFFSET + PACE_VIDEO_PIPELINE_DELAY - 3; + y := 256 + 128 - 15 - unsigned(reg_i.y); + + -- hande sprite height, placement + prom_i := to_integer(unsigned(reg_i.n(9 downto 5))); + code := reg_i.n(9 downto 0); -- default + case sprite_prom(prom_i) is + when 1 => + -- double height + height := to_unsigned(2*16,height'length); + y := y - 16; + when 2 => + -- quadruple height + height := to_unsigned(4*16,height'length); + y := y - 3*16; + when others => + height := to_unsigned(16,height'length); + end case; + + -- do this 1st because we don't have many clocks + if y = unsigned(video_ctl.y) then + -- start counting sprite row + rowCount := (others => '0'); + yMat := true; + elsif row = height then + yMat := false; + end if; + + case sprite_prom(prom_i) is + when 1 => + -- double height + if reg_i.yflip = '1' then + code(0) := not segment(0); + else + code(0) := segment(0); + end if; + when 2 => + -- quadruple height + if reg_i.yflip = '1' then + code(1 downto 0) := not std_logic_vector(segment); + else + code(1 downto 0) := std_logic_vector(segment); + end if; + when others => + null; + end case; + + xMat := false; + -- stop sprites wrapping from bottom of screen + if y = 0 then + yMat := false; + end if; + + -- sprites not visible before row 16 + if ctl_i.ld = '1' then + if yMat then + rowStore := flipData; -- load sprite data + else + rowStore := (others => '0'); + end if; + end if; + + end if; -- hblank='1' + + if video_ctl.stb = '1' then + + if x = unsigned(video_ctl.x) then + -- count up at left edge of sprite + rowCount := rowCount + 1; + -- start of sprite + --if unsigned(x) /= 0 and unsigned(x) < 240 then + xMat := true; + --end if; + end if; + + if xMat then + -- shift in next pixel + pel := rowStore(rowStore'left-32) & rowStore(rowStore'left-16) & rowStore(rowStore'left); + rowStore(47 downto 32) := rowStore(46 downto 32) & '0'; + rowStore(31 downto 16) := rowStore(30 downto 16) & '0'; + rowStore(15 downto 0) := rowStore(14 downto 0) & '0'; + end if; + + end if; + + if PLATFORM_VARIANT = "ldrun" or + PLATFORM_VARIANT = "battroad" then + pal_i := '0' & reg_i.colour(3 downto 0) & pel; + else + pal_i := reg_i.colour(4 downto 0) & pel; + end if; + --pal_i := "000" & std_logic_vector(to_unsigned(INDEX,5)); + pal_rgb := sprite_pal(to_integer(unsigned(pal_i))); + rgb.r <= pal_rgb(0) & "00"; + rgb.g <= pal_rgb(1) & "00"; + rgb.b <= pal_rgb(2) & "00"; + + -- set pixel transparency based on match + ctl_o.set <= '0'; + if xMat and pel /= "000" then + if graphics_i.bit8(0)(4) = '1' then + ctl_o.set <= '1'; + end if; + end if; + + end if; -- clk_ena='1' + end if; -- rising_edge(clk) + + -- generate sprite data address + ctl_o.a(15) <= '0'; -- unused + ctl_o.a(14 downto 5) <= code; + ctl_o.a(4) <= '0'; -- dual-port RAM + if reg_i.yflip = '0' then + ctl_o.a(3 downto 0) <= std_logic_vector(row(3 downto 0)); + else + ctl_o.a(3 downto 0) <= not std_logic_vector(row(3 downto 0)); + end if; + + end process; + +end architecture SYN; diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/spritereg.vhd b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/spritereg.vhd new file mode 100644 index 00000000..107edb1c --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/spritereg.vhd @@ -0,0 +1,68 @@ +Library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +library work; +use work.sprite_pkg.all; + +entity sptReg is + + generic + ( + INDEX : natural + ); + port + ( + reg_i : in to_SPRITE_REG_t; + reg_o : out from_SPRITE_REG_t + ); + +end sptReg; + +architecture SYN of sptReg is + + alias clk : std_logic is reg_i.clk; + alias clk_ena : std_logic is reg_i.clk_ena; + +begin + + process (clk, clk_ena) + begin + if rising_edge(clk) then + if clk_ena = '1' then + if reg_i.a(7 downto 3) = std_logic_vector(to_unsigned(INDEX, 5)) then + if reg_i.wr = '1' then + case reg_i.a(2 downto 0) is + when "000" => + reg_o.colour(4 downto 0) <= reg_i.d(4 downto 0); + when "010" => + reg_o.y(7 downto 0) <= reg_i.d; + when "011" => + reg_o.y(8) <= reg_i.d(0); + when "100" => + reg_o.n(7 downto 0) <= reg_i.d(7 downto 0); + when "101" => + reg_o.yflip <= reg_i.d(7); + reg_o.xflip <= reg_i.d(6); + reg_o.n(10 downto 8) <= reg_i.d(2 downto 0); + when "110" => + reg_o.x(7 downto 0) <= reg_i.d; + when "111" => + reg_o.x(8) <= reg_i.d(0); + when others => + null; + end case; + end if; -- reg_i.wr='1' + end if; -- reg_i.a()=INDEX + end if; -- clk_ena='1' + end if; -- rising_edge(clk) + end process; + + reg_o.x(reg_o.x'left downto 9) <= (others => '0'); + reg_o.y(reg_o.y'left downto 9) <= (others => '0'); + reg_o.n(reg_o.n'left downto 11) <= (others => '0'); + reg_o.colour(reg_o.colour'left downto 5) <= (others => '0'); + reg_o.pri <= '1'; + +end SYN; + diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/sprom.vhd b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/sprom.vhd new file mode 100644 index 00000000..292a214f --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/sprom.vhd @@ -0,0 +1,83 @@ +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY sprom IS + GENERIC + ( + init_file : string := ""; + --numwords_a : natural; + widthad_a : natural; + width_a : natural := 8; + outdata_reg_a : string := "UNREGISTERED" + ); + PORT + ( + address : IN STD_LOGIC_VECTOR (widthad_a-1 DOWNTO 0); + clock : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (width_a-1 DOWNTO 0) + ); +END sprom; + + +ARCHITECTURE SYN OF sprom IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (width_a-1 DOWNTO 0); + + + + COMPONENT altsyncram + GENERIC ( + address_aclr_a : STRING; + clock_enable_input_a : STRING; + clock_enable_output_a : STRING; + init_file : STRING; + intended_device_family : STRING; + lpm_hint : STRING; + lpm_type : STRING; + numwords_a : NATURAL; + operation_mode : STRING; + outdata_aclr_a : STRING; + outdata_reg_a : STRING; + widthad_a : NATURAL; + width_a : NATURAL; + width_byteena_a : NATURAL + ); + PORT ( + clock0 : IN STD_LOGIC ; + address_a : IN STD_LOGIC_VECTOR (widthad_a-1 DOWNTO 0); + q_a : OUT STD_LOGIC_VECTOR (width_a-1 DOWNTO 0) + ); + END COMPONENT; + +BEGIN + q <= sub_wire0(width_a-1 DOWNTO 0); + + altsyncram_component : altsyncram + GENERIC MAP ( + address_aclr_a => "NONE", + clock_enable_input_a => "BYPASS", + clock_enable_output_a => "BYPASS", + init_file => init_file, + intended_device_family => "Cyclone III", + lpm_hint => "ENABLE_RUNTIME_MOD=NO", + lpm_type => "altsyncram", + numwords_a => 2**widthad_a, + operation_mode => "ROM", + outdata_aclr_a => "NONE", + outdata_reg_a => outdata_reg_a, + widthad_a => widthad_a, + width_a => width_a, + width_byteena_a => 1 + ) + PORT MAP ( + clock0 => clock, + address_a => address, + q_a => sub_wire0 + ); + + + +END SYN; diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/target_top.vhd b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/target_top.vhd new file mode 100644 index 00000000..a4bbbccb --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/target_top.vhd @@ -0,0 +1,147 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; +use ieee.numeric_std.all; + +library work; +use work.pace_pkg.all; +use work.video_controller_pkg.all; +use work.platform_pkg.all; + +entity target_top is port( + clock_50 : in std_logic; + clock_vid : in std_logic; + clk_aud : in std_logic; + reset_in : in std_logic; + audio_out : out std_logic_vector(11 downto 0); + usr_coin1 : in std_logic; + usr_coin2 : in std_logic; + usr_service : in std_logic; + usr_start1 : in std_logic; + usr_start2 : in std_logic; + p1_up : in std_logic; + p1_dw : in std_logic; + p1_lt : in std_logic; + p1_rt : in std_logic; + p1_f1 : in std_logic; + p1_f2 : in std_logic; + + p2_up : in std_logic; + p2_dw : in std_logic; + p2_lt : in std_logic; + p2_rt : in std_logic; + p2_f1 : in std_logic; + p2_f2 : in std_logic; + + VGA_VS : out std_logic; + VGA_HS : out std_logic; + VGA_R : out std_logic_vector(3 downto 0); + VGA_G : out std_logic_vector(3 downto 0); + VGA_B : out std_logic_vector(3 downto 0); + cpu_rom_addr : out std_logic_vector(14 downto 0); + cpu_rom_do : in std_logic_vector(7 downto 0); + snd_rom_addr : out std_logic_vector(13 downto 0); + snd_rom_do : in std_logic_vector(7 downto 0) + ); +end target_top; + +architecture SYN of target_top is + + signal clkrst_i : from_CLKRST_t; + signal buttons_i : from_BUTTONS_t; + signal switches_i : from_SWITCHES_t; + signal leds_o : to_LEDS_t; + signal inputs_i : from_INPUTS_t; + signal video_i : from_VIDEO_t; + signal video_o : to_VIDEO_t; + signal platform_i : from_PLATFORM_IO_t; + signal platform_o : to_PLATFORM_IO_t; + signal sound_data : std_logic_vector(7 downto 0); + +begin + clkrst_i.clk(0) <= clock_50; + clkrst_i.clk(1) <= clock_vid; + clkrst_i.arst <= reset_in; + clkrst_i.arst_n <= not clkrst_i.arst; + +GEN_RESETS : for i in 0 to 3 generate + process (clkrst_i.clk(i), clkrst_i.arst) + variable rst_r : std_logic_vector(2 downto 0) := (others => '0'); + begin + if clkrst_i.arst = '1' then + rst_r := (others => '1'); + elsif rising_edge(clkrst_i.clk(i)) then + rst_r := rst_r(rst_r'left-1 downto 0) & '0'; + end if; + clkrst_i.rst(i) <= rst_r(rst_r'left); + end process; +end generate GEN_RESETS; + + video_i.clk <= clkrst_i.clk(1); + video_i.clk_ena <= '1'; + video_i.reset <= clkrst_i.rst(1); + VGA_R <= video_o.rgb.r(9 downto 6); + VGA_G <= video_o.rgb.g(9 downto 6); + VGA_B <= video_o.rgb.b(9 downto 6); + VGA_HS <= video_o.hsync; + VGA_VS <= video_o.vsync; + +--Sound_Board : entity work.Sound_Board +-- port map( +-- clock_E => clk_aud, +-- areset => clkrst_i.rst(1), +-- select_sound => sound_data, +-- audio_out => audio_out, +-- snd_rom_addr => snd_rom_addr, +-- snd_rom_do => snd_rom_do, +-- dbg_cpu_addr => open +-- ); + +pace_inst : entity work.pace + port map( + clkrst_i => clkrst_i, + buttons_i => buttons_i, + switches_i => switches_i, + inputs_i => inputs_i, + video_i => video_i, + video_o => video_o, + sound_data_o => sound_data, + platform_i => platform_i, + platform_o => platform_o, + cpu_rom_addr => cpu_rom_addr, + cpu_rom_do => cpu_rom_do + ); + + inputs_i.jamma_n.coin(1) <= not usr_coin1; + inputs_i.jamma_n.coin(2) <= not usr_coin2; + inputs_i.jamma_n.service <= not usr_service; + inputs_i.jamma_n.p(1).start <= not usr_start1; + inputs_i.jamma_n.p(2).start <= not usr_start2; + + inputs_i.jamma_n.p(1).up <= not p1_up; + inputs_i.jamma_n.p(1).down <= not p1_dw; + inputs_i.jamma_n.p(1).left <= not p1_lt; + inputs_i.jamma_n.p(1).right <= not p1_rt; + inputs_i.jamma_n.p(1).button(1) <= not p1_f1; + inputs_i.jamma_n.p(1).button(2) <= not p1_f2; + inputs_i.jamma_n.p(1).button(3) <= '1'; + inputs_i.jamma_n.p(1).button(4) <= '1'; + inputs_i.jamma_n.p(1).button(5) <= '1'; + + inputs_i.jamma_n.p(2).up <= not p2_up; + inputs_i.jamma_n.p(2).down <= not p2_dw; + inputs_i.jamma_n.p(2).left <= not p2_lt; + inputs_i.jamma_n.p(2).right <= not p2_rt; + inputs_i.jamma_n.p(2).button(1) <= not p2_f1; + inputs_i.jamma_n.p(2).button(2) <= not p2_f2; + inputs_i.jamma_n.p(2).button(3) <= '1'; + inputs_i.jamma_n.p(2).button(4) <= '1'; + inputs_i.jamma_n.p(2).button(5) <= '1'; + + -- not currently wired to any inputs + inputs_i.jamma_n.coin_cnt <= (others => '1'); +-- inputs_i.jamma_n.coin(2) <= '1'; +-- inputs_i.jamma_n.service <= '1'; + inputs_i.jamma_n.tilt <= '1'; + inputs_i.jamma_n.test <= '1'; +end SYN; diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/tilemapctl.vhd b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/tilemapctl.vhd new file mode 100644 index 00000000..9ccad9f8 --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/tilemapctl.vhd @@ -0,0 +1,106 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +library work; +use work.pace_pkg.all; +--use work.project_pkg.all; +use work.platform_pkg.all; +use work.platform_variant_pkg.all; +use work.video_controller_pkg.all; + +-- +-- Irem M62 Tilemap Controller +-- +-- Tile data is 2 BPP. +-- + +architecture TILEMAP_1 of tilemapCtl is + + alias clk : std_logic is video_ctl.clk; + alias clk_ena : std_logic is video_ctl.clk_ena; + alias stb : std_logic is video_ctl.stb; + alias hblank : std_logic is video_ctl.hblank; + alias vblank : std_logic is video_ctl.vblank; + + signal x : std_logic_vector(video_ctl.x'range); + signal y : std_logic_vector(video_ctl.y'range); + + alias rot_en : std_logic is graphics_i.bit8(0)(0); + alias hscroll : std_logic_vector(15 downto 0) is graphics_i.bit16(0); + +begin + + -- not used + ctl_o.map_a(ctl_o.map_a'left downto 11) <= (others => '0'); + ctl_o.attr_a(ctl_o.attr_a'left downto 11) <= (others => '0'); + ctl_o.tile_a(ctl_o.tile_a'left downto 13) <= (others => '0'); + + -- screen rotation + x <= std_logic_vector(M62_VIDEO_H_OFFSET + unsigned(video_ctl.x)) when unsigned(y) < 6*8 else + std_logic_vector(M62_VIDEO_H_OFFSET + unsigned(video_ctl.x) + unsigned(hscroll(8 downto 0))); + -- when rot_en = '0' else not video_ctl.y; + --y <= not video_ctl.y when rot_en = '0' else 32 + video_ctl.x; + y <= video_ctl.y; -- when rot_en = '0' else video_ctl.x; + + -- generate pixel + process (clk, clk_ena) + + variable tile_d_r : std_logic_vector(23 downto 0); + variable attr_d_r : std_logic_vector(7 downto 0); + variable pel : std_logic_vector(2 downto 0); + variable pal_i : std_logic_vector(7 downto 0); + variable pal_rgb : pal_rgb_t; + + begin + + if rising_edge(clk) then + if clk_ena = '1' then + + -- 1st stage of pipeline + -- - set tilemap, attribute address + ctl_o.map_a(10 downto 6) <= y(7 downto 3); + ctl_o.map_a(5 downto 0) <= x(8 downto 3); + ctl_o.attr_a(10 downto 6) <= y(7 downto 3); + ctl_o.attr_a(5 downto 0) <= x(8 downto 3); + + -- 2nd stage of pipeline + -- - set tile address + if x(2 downto 0) = "010" then + ctl_o.tile_a(12 downto 11) <= ctl_i.attr_d(7 downto 6); + ctl_o.tile_a(10 downto 3) <= ctl_i.map_d(7 downto 0); + ctl_o.tile_a(2 downto 0) <= y(2 downto 0); + end if; + + -- 3rd stage of pipeline + -- - read tile, attribute data from ROM + if x(2 downto 0) = "100" then + tile_d_r := ctl_i.tile_d(tile_d_r'range); + attr_d_r := ctl_i.attr_d(7 downto 0); + elsif stb = '1' then + tile_d_r := tile_d_r(tile_d_r'left-1 downto 0) & '0'; + end if; + + -- extract R,G,B from colour palette + pel := tile_d_r(tile_d_r'left-16) & tile_d_r(tile_d_r'left-8) & tile_d_r(tile_d_r'left); + pal_i := attr_d_r(4 downto 0) & pel; + pal_rgb := tile_pal(to_integer(unsigned(pal_i))); + ctl_o.rgb.r <= pal_rgb(0) & "00"; + ctl_o.rgb.g <= pal_rgb(1) & "00"; + ctl_o.rgb.b <= pal_rgb(2) & "00"; + ctl_o.set <= '0'; -- default +-- if pel /= "000" then +-- pal_rgb(0)(7 downto 5) /= "000" or +-- pal_rgb(1)(7 downto 5) /= "000" or +-- pal_rgb(2)(7 downto 5) /= "000" then + if graphics_i.bit8(0)(3) = '1' then + ctl_o.set <= '1'; + end if; +-- end if; + + end if; -- clk_ena + end if; -- rising_edge_clk + + end process; + +end architecture TILEMAP_1; diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/tilemapctl_e.vhd b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/tilemapctl_e.vhd new file mode 100644 index 00000000..8d93334b --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/tilemapctl_e.vhd @@ -0,0 +1,29 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +library work; +use work.pace_pkg.all; +--use work.project_pkg.all; +use work.platform_pkg.all; +use work.video_controller_pkg.all; + +entity tilemapCtl is + generic + ( + DELAY : integer + ); + port + ( + reset : in std_logic; + + -- video control signals + video_ctl : in from_VIDEO_CTL_t; + + -- tilemap controller signals + ctl_i : in to_TILEMAP_CTL_t; + ctl_o : out from_TILEMAP_CTL_t; + + graphics_i : in to_GRAPHICS_t + ); +end entity tilemapCtl; diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/video_controller.vhd b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/video_controller.vhd new file mode 100644 index 00000000..14da0c20 --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/video_controller.vhd @@ -0,0 +1,455 @@ +library IEEE; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +library work; +use work.video_controller_pkg.all; + +entity pace_video_controller is + generic + ( + CONFIG : PACEVideoController_t := PACE_VIDEO_NONE; + DELAY : integer := 1; + H_SIZE : integer; + V_SIZE : integer; + L_CROP : integer range 0 to 255; + R_CROP : integer range 0 to 255; + H_SCALE : integer; + V_SCALE : integer; + H_SYNC_POL : std_logic := '1'; + V_SYNC_POL : std_logic := '1'; + BORDER_RGB : RGB_t := RGB_BLACK + ); + port + ( + -- clocking etc + video_i : in from_VIDEO_t; + + -- register interface + reg_i : in VIDEO_REG_t; + + -- video input data + rgb_i : in RGB_t; + + -- control signals (out) + video_ctl_o : out from_VIDEO_CTL_t; + + -- video output control & data + video_o : out to_VIDEO_t + ); +end pace_video_controller; + +architecture SYN of pace_video_controller is + + constant SIM_DELAY : time := 2 ns; + + constant VIDEO_H_SIZE : integer := H_SIZE * H_SCALE; + constant VIDEO_V_SIZE : integer := V_SIZE * V_SCALE; + + subtype reg_t is integer range 0 to 2047; + + alias clk : std_logic is video_i.clk; + alias clk_ena : std_logic is video_i.clk_ena; + alias reset : std_logic is video_i.reset; + + -- registers + signal h_front_porch_r : reg_t := 0; + signal h_sync_r : reg_t := 0; + signal h_back_porch_r : reg_t := 0; + signal h_border_r : reg_t := 0; + signal h_video_r : reg_t := 0; + signal v_front_porch_r : reg_t := 0; + signal v_sync_r : reg_t := 0; + signal v_back_porch_r : reg_t := 0; + signal v_border_r : reg_t := 0; + signal v_video_r : reg_t := 0; + + signal border_rgb_r : RGB_t := ((others=>'0'), (others=>'0'), (others=>'0')); + + -- derived values + signal h_sync_start : reg_t := 0; + signal h_back_porch_start : reg_t := 0; + signal h_left_border_start : reg_t := 0; + signal h_video_start : reg_t := 0; + signal h_right_border_start : reg_t := 0; + signal h_line_end : reg_t := 0; + signal v_sync_start : reg_t := 0; + signal v_back_porch_start : reg_t := 0; + signal v_top_border_start : reg_t := 0; + signal v_video_start : reg_t := 0; + signal v_bottom_border_start : reg_t := 0; + signal v_screen_end : reg_t := 0; + + signal hsync_s : std_logic := '0'; + signal vsync_s : std_logic := '0'; + signal hactive_s : std_logic := '0'; + signal vactive_s : std_logic := '0'; + signal hblank_s : std_logic := '0'; + signal vblank_s : std_logic := '0'; + + subtype count_t is integer range 0 to 2047; + signal x_count : count_t := 0; + signal y_count : count_t := 0; + + signal x_s : unsigned(10 downto 0) := (others => '0'); + signal y_s : unsigned(10 downto 0) := (others => '0'); + + --signal extended_reset : std_logic := '1'; + alias extended_reset : std_logic is video_i.reset; + +begin + + -- registers + reg_proc: process (reset, clk) + + begin + --if reset = '1' then + case CONFIG is + + when PACE_VIDEO_VGA_240x320_60Hz => + -- P3M, clk=11.136MHz, clk_ena=5.568MHz + h_front_porch_r <= 272-240; + h_sync_r <= 5; + h_back_porch_r <= 22; + h_border_r <= (240-VIDEO_H_SIZE)/2; + v_front_porch_r <= 326-320; + v_sync_r <= 1; + v_back_porch_r <= 5; + v_border_r <= (320-VIDEO_V_SIZE)/2; + + when PACE_VIDEO_VGA_320x480_60Hz => + -- VGA, clk=12.588MHz + --# 320x240 @ 60 Hz, 31.5 kHz hsync, 4:3 aspect ratio + --Modeline "320x240" 12.588 320 336 384 400 240 245 246 262 Doublescan + h_front_porch_r <= 16; + h_sync_r <= 48; + h_back_porch_r <= 16; + h_border_r <= (320-VIDEO_H_SIZE)/2; + v_front_porch_r <= (5*2); + v_sync_r <= (1*2); + v_back_porch_r <= (16*2); + v_border_r <= (480-VIDEO_V_SIZE)/2; + + when PACE_VIDEO_VGA_640x480_60Hz => + -- VGA, clk=25.175MHz + h_front_porch_r <= 16; + h_sync_r <= 96; + h_back_porch_r <= 48; + h_border_r <= (640-VIDEO_H_SIZE)/2; + v_front_porch_r <= 10; + v_sync_r <= 2; + v_back_porch_r <= 33; + v_border_r <= (480-VIDEO_V_SIZE)/2; + + when PACE_VIDEO_VGA_800x600_60Hz => + -- SVGA, clk=40MHz + h_front_porch_r <= 40; + h_sync_r <= 128; + h_back_porch_r <= 88; + h_border_r <= (800-VIDEO_H_SIZE)/2; + v_front_porch_r <= 1; + v_sync_r <= 4; + v_back_porch_r <= 23; + v_border_r <= (600-VIDEO_V_SIZE)/2; + + when PACE_VIDEO_VGA_1024x768_60Hz => + -- XVGA, clk=65MHz + h_front_porch_r <= 24; + h_sync_r <= 136; + h_back_porch_r <= 160; + h_border_r <= (1024-VIDEO_H_SIZE)/2; + v_front_porch_r <= 3; + v_sync_r <= 6; + v_back_porch_r <= 29; + v_border_r <= (768-VIDEO_V_SIZE)/2; + + when PACE_VIDEO_VGA_1366x768_60Hz => + -- XVGA(NAVICO ROCKY), clk=72MHz + h_front_porch_r <= 88; --64; + h_sync_r <= 44; --112; + h_back_porch_r <= 148; --248; + h_border_r <= (1366-VIDEO_H_SIZE)/2; + v_front_porch_r <= 4; --3; + v_sync_r <= 5; --6; + v_back_porch_r <= 36; --18; + v_border_r <= (768-VIDEO_V_SIZE)/2; + + when PACE_VIDEO_VGA_1280x800_60Hz => + -- Sentinel Mode 36, clk=103.2MHz + h_front_porch_r <= 64; + h_sync_r <= 32; + h_back_porch_r <= 362-32-64; + h_border_r <= (1280-VIDEO_H_SIZE)/2; + v_front_porch_r <= 3; + v_sync_r <= 4; + v_back_porch_r <= 38-4-3; + v_border_r <= (800-VIDEO_V_SIZE)/2; + + when PACE_VIDEO_VGA_1280x1024_60Hz => + -- SXGA, clk=108MHz + h_front_porch_r <= 48; + h_sync_r <= 112; + h_back_porch_r <= 248; + h_border_r <= (1280-VIDEO_H_SIZE)/2; + v_front_porch_r <= 1; + v_sync_r <= 3; + v_back_porch_r <= 38; + v_border_r <= (1024-VIDEO_V_SIZE)/2; + + when PACE_VIDEO_VGA_1680x1050_60Hz => + -- WSXGA+, clk=147.14MHz + h_front_porch_r <= 104; + h_sync_r <= 184; + h_back_porch_r <= 288; + v_front_porch_r <= 1; + v_sync_r <= 3; + v_back_porch_r <= 33; + -- WSXGA+, clk=118MHz + --h_front_porch_r <= 48; + --h_sync_r <= 32; + --h_back_porch_r <= 80; + --v_front_porch_r <= 3; + --v_sync_r <= 6; + --v_back_porch_r <= 21; + h_border_r <= (1680-VIDEO_H_SIZE)/2; + v_border_r <= (1050-VIDEO_V_SIZE)/2; + + when PACE_VIDEO_ARCADE_STD_336x240_60Hz => + -- arcade standard resolution, clk=7.16MHz + h_front_porch_r <= 34; + h_sync_r <= 34; + h_back_porch_r <= 51; + h_border_r <= (336-VIDEO_H_SIZE)/2; + v_front_porch_r <= 3; + v_sync_r <= 3; + v_back_porch_r <= 16; + v_border_r <= (240-VIDEO_V_SIZE)/2; + + when PACE_VIDEO_ARCADE_STD_336x240_60Hz_28M64 => + -- arcade standard resolution, clk=28.64MHz + h_front_porch_r <= 4*34; + h_sync_r <= 4*34; + h_back_porch_r <= 4*51; + h_border_r <= 4*(336-VIDEO_H_SIZE)/2; + v_front_porch_r <= 3; + v_sync_r <= 3; + v_back_porch_r <= 16; + v_border_r <= (240-VIDEO_V_SIZE)/2; + + when PACE_VIDEO_CVBS_720x288p_50Hz => + -- generic composite, clk=13.5MHz + h_front_porch_r <= (8+12); + h_sync_r <= 64; + h_back_porch_r <= (144-64-(8+12)); + h_border_r <= (720-VIDEO_H_SIZE)/2; + v_front_porch_r <= 1; + v_sync_r <= 3; + v_back_porch_r <= 20; + v_border_r <= (288-VIDEO_V_SIZE)/2; + + when PACE_VIDEO_LCM_320x240_60Hz => + -- DE1/2, clk=18MHz + h_front_porch_r <= 59; + h_sync_r <= 1; + h_back_porch_r <= 151; + h_border_r <= (320-VIDEO_H_SIZE)*3/2; + v_front_porch_r <= 8; + v_sync_r <= 1; + v_back_porch_r <= 13; + v_border_r <= (240-VIDEO_V_SIZE)/2; + + when others => + null; + end case; + + h_video_r <= VIDEO_H_SIZE; + v_video_r <= VIDEO_V_SIZE; + border_rgb_r <= BORDER_RGB; + + --end if; + end process reg_proc; + + -- register some arithmetic + init_proc: process (reset, clk, clk_ena) + begin + if reset = '1' then + null; + elsif rising_edge(clk) then + h_sync_start <= h_front_porch_r - 1; + h_back_porch_start <= h_sync_start + h_sync_r; + h_left_border_start <= h_back_porch_start + h_back_porch_r; + h_video_start <= h_left_border_start + h_border_r; + h_right_border_start <= h_video_start + h_video_r; + h_line_end <= h_right_border_start + h_border_r; + v_sync_start <= v_front_porch_r - 1; + v_back_porch_start <= v_sync_start + v_sync_r; + v_top_border_start <= v_back_porch_start + v_back_porch_r; + v_video_start <= v_top_border_start + v_border_r; + v_bottom_border_start <= v_video_start + v_video_r; + v_screen_end <= v_bottom_border_start + v_border_r; + end if; + end process init_proc; + + reset_proc: process (reset, clk) + variable count_v : integer; + begin + if reset = '1' then + --extended_reset <= '1'; + count_v := 7; + elsif rising_edge(clk) then + if count_v = 0 then + --extended_reset <= '0'; + else + count_v := count_v - 1; + end if; + end if; + end process reset_proc; + + -- video control outputs + timer_proc: process (extended_reset, clk, clk_ena) + begin + if extended_reset = '1' then + hblank_s <= '1'; + vblank_s <= '1'; + hactive_s <= '0'; + vactive_s <= '0'; + hsync_s <= not H_SYNC_POL; + x_count <= 0; + y_count <= 0; + elsif rising_edge(clk) and clk_ena = '1' then + if x_count = h_line_end then + hblank_s <= '1'; + hactive_s <= '0'; -- for 0 borders + if y_count = v_screen_end then + vblank_s <= '1'; + vactive_s <= '0'; -- for 0 borders + y_count <= 0; + else + y_s <= y_s + 1; + if y_count = v_sync_start then + vsync_s <= V_SYNC_POL; + elsif y_count = v_back_porch_start then + vsync_s <= not V_SYNC_POL; + elsif y_count = v_video_start then + vblank_s <= '0'; -- for 0 borders + vactive_s <= '1'; + y_s <= (others => '0'); + -- check the borders last in case they're 0 + elsif y_count = v_top_border_start then + vblank_s <= '0'; + elsif y_count = v_bottom_border_start then + vactive_s <= '0'; + end if; + y_count <= y_count + 1; + end if; + x_count <= 0; + else + x_s <= x_s + 1; + if x_count = h_sync_start then + hsync_s <= H_SYNC_POL; + elsif x_count = h_back_porch_start then + hsync_s <= not H_SYNC_POL; + elsif x_count = h_video_start then + hblank_s <= '0'; -- for 0 borders + hactive_s <= '1'; + x_s <= (others => '0'); + -- check the borders last in case they're 0 + elsif x_count = h_left_border_start then + hblank_s <= '0'; + elsif x_count = h_right_border_start then + hactive_s <= '0'; + end if; + x_count <= x_count + 1; + end if; + end if; -- rising_edge(clk) and clk_ena = '1' + end process timer_proc; + + -- pass-through for tile/bitmap & sprite controllers + video_ctl_o.clk <= clk; + video_ctl_o.clk_ena <= clk_ena; + + -- for video DACs and TFT output + video_o.clk <= clk; + + BLK_VIDEO_O : block + + constant PIPELINE_DELAY : natural := DELAY+1; + + -- won't synthesize correctly under ISE if these are variables + signal hactive_v_r : std_logic_vector(PIPELINE_DELAY-1 downto 0) := (others => '0'); + signal vactive_v_r : std_logic_vector(PIPELINE_DELAY-1 downto 0) := (others => '0'); + + begin + + video_o_proc: process (extended_reset, clk, clk_ena) + variable hsync_v_r : std_logic_vector(PIPELINE_DELAY-1 downto 0) := (others => '0'); + variable vsync_v_r : std_logic_vector(PIPELINE_DELAY-1 downto 0) := (others => '0'); + --variable hactive_v_r : std_logic_vector(PIPELINE_DELAY-1 downto 0) := (others => '0'); + --variable vactive_v_r : std_logic_vector(PIPELINE_DELAY-1 downto 0) := (others => '0'); + variable hblank_v_r : std_logic_vector(PIPELINE_DELAY-1 downto 0) := (others => '0'); + variable vblank_v_r : std_logic_vector(PIPELINE_DELAY-1 downto 0) := (others => '0'); + alias hsync_v : std_logic is hsync_v_r(hsync_v_r'left); + alias vsync_v : std_logic is vsync_v_r(vsync_v_r'left); + alias hactive_v : std_logic is hactive_v_r(hactive_v_r'left); + alias vactive_v : std_logic is vactive_v_r(vactive_v_r'left); + alias hblank_v : std_logic is hblank_v_r(hblank_v_r'left); + alias vblank_v : std_logic is vblank_v_r(vblank_v_r'left); + variable stb_cnt_v : unsigned(3 downto 0); -- up to 16x scaling + begin + if extended_reset = '1' then + hsync_v_r := (others => not H_SYNC_POL); + vsync_v_r := (others => not V_SYNC_POL); + hactive_v_r <= (others => '0'); + vactive_v_r <= (others => '0'); + hblank_v_r := (others => '0'); + vblank_v_r := (others => '0'); + stb_cnt_v := (others => '1'); + elsif rising_edge(clk) and clk_ena = '1' then + + -- register control signals and handle scaling + video_ctl_o.hblank <= not hactive_s after SIM_DELAY; -- used only by the bitmap/tilemap/sprite controllers + video_ctl_o.vblank <= not vactive_s after SIM_DELAY; -- used only by the bitmap/tilemap/sprite controllers + -- handle scaling + video_ctl_o.stb <= stb_cnt_v(H_SCALE-1) after SIM_DELAY; + if hactive_s = '1' and vactive_s = '1' then + stb_cnt_v := stb_cnt_v + 2; + elsif hblank_s = '0' and vblank_s = '0' then + stb_cnt_v := (others => '1'); + end if; + video_ctl_o.x <= std_logic_vector(resize(x_s(x_s'left downto H_SCALE-1), video_ctl_o.x'length)) after SIM_DELAY; + video_ctl_o.y <= std_logic_vector(resize(y_s(y_s'left downto V_SCALE-1), video_ctl_o.y'length)) after SIM_DELAY; + + -- register video outputs + if hactive_v = '1' and vactive_v = '1' then + -- active video + if x_s(x_s'left downto H_SCALE-1) < (L_CROP + PIPELINE_DELAY) or + x_s(x_s'left downto H_SCALE-1) >= (H_SIZE - R_CROP + PIPELINE_DELAY) then + video_o.rgb <= RGB_BLACK after SIM_DELAY; + else + video_o.rgb <= rgb_i after SIM_DELAY; + end if; + elsif hblank_v = '0' and vblank_v = '0' then + -- border + video_o.rgb <= border_rgb_r after SIM_DELAY; + else + video_o.rgb.r <= (others => '0') after SIM_DELAY; + video_o.rgb.g <= (others => '0') after SIM_DELAY; + video_o.rgb.b <= (others => '0') after SIM_DELAY; + end if; + video_o.hsync <= hsync_v after SIM_DELAY; + video_o.vsync <= vsync_v after SIM_DELAY; + video_o.hblank <= hblank_v after SIM_DELAY; + video_o.vblank <= vblank_v after SIM_DELAY; + -- pipelined signals + hsync_v_r := hsync_v_r(hsync_v_r'left-1 downto 0) & hsync_s; + vsync_v_r := vsync_v_r(vsync_v_r'left-1 downto 0) & vsync_s; + hactive_v_r <= hactive_v_r(hactive_v_r'left-1 downto 0) & hactive_s; + vactive_v_r <= vactive_v_r(vactive_v_r'left-1 downto 0) & vactive_s; + hblank_v_r := hblank_v_r(hblank_v_r'left-1 downto 0) & hblank_s; + vblank_v_r := vblank_v_r(vblank_v_r'left-1 downto 0) & vblank_s; + end if; + end process video_o_proc; + + end block BLK_VIDEO_O; + +end SYN; diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/video_controller_pkg.vhd b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/video_controller_pkg.vhd new file mode 100644 index 00000000..183bfe23 --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/video_controller_pkg.vhd @@ -0,0 +1,229 @@ +library IEEE; +use IEEE.std_logic_1164.all; +--use IEEE.numeric_std.all; +use ieee.std_logic_arith.all; +use ieee.std_logic_unsigned.all; + +package video_controller_pkg is + + type PACEVideoController_t is + ( + PACE_VIDEO_NONE, -- PACE video controller not used + PACE_VIDEO_VGA_240x320_60Hz, -- P3M video + PACE_VIDEO_VGA_320x480_60Hz, -- for 320x200 (12.588MHz) + PACE_VIDEO_VGA_640x480_60Hz, -- generic VGA (25.175MHz) + PACE_VIDEO_VGA_800x600_60Hz, -- generic VGA (40MHz) + PACE_VIDEO_VGA_1024x768_60Hz, -- XVGA (65MHz) + PACE_VIDEO_VGA_1366x768_60Hz, -- (NAVICO ROCKY) (72MHz) + PACE_VIDEO_VGA_1280x800_60Hz, -- Sentinel Mode 36 + PACE_VIDEO_VGA_1280x1024_60Hz, -- SXGA (108MHz) + PACE_VIDEO_VGA_1680x1050_60Hz, -- WSXGA+ (147MHz) + PACE_VIDEO_ARCADE_STD_336x240_60Hz, -- arcade std resolution (7.16MHz) + PACE_VIDEO_ARCADE_STD_336x240_60Hz_28M64, -- arcade std resolution (28.64MHz) + PACE_VIDEO_CVBS_720x288p_50Hz, -- generic composite + PACE_VIDEO_LCM_320x240_60Hz -- DE2 LCD + ); + + type PACEVideoDisplay_t is + ( + PACE_DISPLAY_NONE, + PACE_DISPLAY_VGA, + PACE_DISPLAY_CVBS, + PACE_DISPLAY_TFT + ); + + type RGB_t is record + r : std_logic_vector(9 downto 0); + g : std_logic_vector(9 downto 0); + b : std_logic_vector(9 downto 0); + end record; + + type RGB_a is array (natural range <>) of RGB_t; + + function NULL_RGB return RGB_t; + + constant RGB_BLACK : RGB_t := ((others=>'0'),(others=>'0'),(others=>'0')); + constant RGB_RED : RGB_t := ((others=>'1'),(others=>'0'),(others=>'0')); + constant RGB_GREEN : RGB_t := ((others=>'0'),(others=>'1'),(others=>'0')); + constant RGB_YELLOW : RGB_t := ((others=>'1'),(others=>'1'),(others=>'0')); + constant RGB_BLUE : RGB_t := ((others=>'0'),(others=>'0'),(others=>'1')); + constant RGB_MAGENTA : RGB_t := ((others=>'1'),(others=>'0'),(others=>'1')); + constant RGB_CYAN : RGB_t := ((others=>'0'),(others=>'1'),(others=>'1')); + constant RGB_WHITE : RGB_t := ((others=>'1'),(others=>'1'),(others=>'1')); + + type VIDEO_REG_t is record + h_scale : std_logic_vector(2 downto 0); + v_scale : std_logic_vector(2 downto 0); + end record; + + type from_VIDEO_t is record + clk : std_logic; + clk_ena : std_logic; + reset : std_logic; + end record; + + type to_VIDEO_t is record + clk : std_logic; + rgb : rgb_t; + hsync : std_logic; + vsync : std_logic; + hblank : std_logic; + vblank : std_logic; + de : std_logic; + end record; + + type from_VIDEO_CTL_t is record + clk : std_logic; + clk_ena : std_logic; + stb : std_logic; + hblank : std_logic; + vblank : std_logic; + x : std_logic_vector(10 downto 0); + y : std_logic_vector(10 downto 0); + end record; + + subtype BITMAP_D_t is std_logic_vector(23 downto 0); + subtype BITMAP_A_t is std_logic_vector(15 downto 0); + + type to_BITMAP_CTL_t is record + d : BITMAP_D_t; + end record; + + type to_BITMAP_CTL_a is array (natural range <>) of to_BITMAP_CTL_t; + + function NULL_TO_BITMAP_CTL return to_BITMAP_CTL_t; + + type from_BITMAP_CTL_t is record + a : BITMAP_A_t; + rgb : RGB_t; + set : std_logic; + end record; + + type from_BITMAP_CTL_a is array (natural range <>) of from_BITMAP_CTL_t; + + subtype TILEMAP_D_t is std_logic_vector(15 downto 0); + subtype TILEMAP_A_t is std_logic_vector(15 downto 0); + subtype TILE_A_t is std_logic_vector(16 downto 0); + subtype TILE_D_t is std_logic_vector(23 downto 0); + subtype ATTR_A_t is std_logic_vector(15 downto 0); + subtype ATTR_D_t is std_logic_vector(15 downto 0); + + type to_TILEMAP_CTL_t is record + map_d : TILEMAP_D_t; + tile_d : TILE_D_t; + attr_d : ATTR_D_t; + end record; + + type to_TILEMAP_CTL_a is array (natural range <>) of to_TILEMAP_CTL_t; + + function NULL_TO_TILEMAP_CTL return to_TILEMAP_CTL_t; + + type from_TILEMAP_CTL_t is record + map_a : TILEMAP_A_t; + tile_a : TILE_A_t; + attr_a : ATTR_A_t; + rgb : RGB_t; + set : std_logic; + end record; + + type from_TILEMAP_CTL_a is array (natural range <>) of from_TILEMAP_CTL_t; + + subtype PAL_ENTRY_t is std_logic_vector(15 downto 0); + type PAL_A_t is array (natural range <>) of PAL_ENTRY_t; + + subtype BYTE_t is std_logic_vector(7 downto 0); + type BYTE_A_t is array (natural range <>) of BYTE_t; + + subtype WORD_t is std_logic_vector(15 downto 0); + type WORD_A_t is array (natural range <>) of WORD_t; + + type to_GRAPHICS_t is record + pal : PAL_A_t(0 to 15); + -- for various uses + bit8 : BYTE_A_t(0 to 7); + bit16 : WORD_A_t(0 to 3); + -- 'native' graphics stream + hsync : std_logic; + vsync : std_logic; + rgb : RGB_t; + end record; + + function NULL_TO_GRAPHICS return to_GRAPHICS_t; + + type from_GRAPHICS_t is record + y : std_logic_vector(10 downto 0); + hblank : std_logic; + vblank : std_logic; + end record; + + component pace_video_controller is + generic + ( + CONFIG : PACEVideoController_t := PACE_VIDEO_NONE; + DELAY : integer := 1; + H_SIZE : integer; + V_SIZE : integer; + --H_SCALE : integer; + --V_SCALE : integer; + BORDER_RGB : RGB_t := RGB_BLACK + ); + port + ( + -- clocking etc + video_i : in from_VIDEO_t; + + -- register interface + reg_i : in VIDEO_REG_t; + + -- video input data + rgb_i : in RGB_t; + + -- control signals (out) + video_ctl_o : from_VIDEO_CTL_t; + + -- Outputs to video + video_o : out to_VIDEO_t + ); + end component pace_video_controller; + + component tilemapCtl is + generic + ( + DELAY : integer + ); + port + ( + reset : in std_logic; + + -- video control signals + video_ctl : in from_VIDEO_CTL_t; + + -- tilemap controller signals + ctl_i : in to_TILEMAP_CTL_t; + ctl_o : out from_TILEMAP_CTL_t; + + graphics_i : in to_GRAPHICS_t + ); + end component tilemapCtl; + + component bitmapCtl is + generic + ( + DELAY : integer + ); + port + ( + reset : in std_logic; + + -- video control signals + video_ctl : in from_VIDEO_CTL_t; + + -- bitmap controller signals + ctl_i : in to_BITMAP_CTL_t; + ctl_o : out from_BITMAP_CTL_t; + + graphics_i : in to_GRAPHICS_t + ); + end component bitmapCtl; + +end package video_controller_pkg; diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/video_controller_pkg_body.vhd b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/video_controller_pkg_body.vhd new file mode 100644 index 00000000..996e5867 --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/video_controller_pkg_body.vhd @@ -0,0 +1,29 @@ +library work; +--use work.pace_pkg.all; + +package body video_controller_pkg is + + function NULL_RGB return RGB_t is + begin + return (others => (others => '0')); + end NULL_RGB; + + function NULL_TO_BITMAP_CTL return to_BITMAP_CTL_t is + begin + return (others => (others => '0')); + end NULL_TO_BITMAP_CTL; + + function NULL_TO_TILEMAP_CTL return to_TILEMAP_CTL_t is + begin + return ((others => '0'), (others => '0'), (others => '0')); + end NULL_TO_TILEMAP_CTL; + + function NULL_TO_GRAPHICS return to_GRAPHICS_t is + begin + return ((others => (others => '0')), + (others => (others => '0')), + (others => (others => '0')), + '0', '0', NULL_RGB); + end NULL_TO_GRAPHICS; + +end package body video_controller_pkg; diff --git a/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/video_mixer.vhd b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/video_mixer.vhd new file mode 100644 index 00000000..fb4b4aa4 --- /dev/null +++ b/Arcade_MiST/IremM62 Hardware/LodeRunner_MiST/rtl/video_mixer.vhd @@ -0,0 +1,66 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; +use ieee.numeric_std.all; + +library work; +use work.pace_pkg.all; +use work.video_controller_pkg.all; +use work.sprite_pkg.all; +use work.platform_pkg.all; + +entity pace_video_mixer is + port + ( + --bitmap_rgb : in RGB_t; + --bitmap_set : in std_logic; + bitmap_ctl_o : in from_BITMAP_CTL_a(1 to PACE_VIDEO_NUM_BITMAPS); + tilemap_ctl_o : in from_TILEMAP_CTL_a(1 to PACE_VIDEO_NUM_TILEMAPS); + sprite_rgb : in RGB_t; + sprite_set : in std_logic; + sprite_pri : in std_logic; + + video_ctl_i : in from_VIDEO_CTL_t; + graphics_i : in to_GRAPHICS_t; + rgb_o : out RGB_t + ); +end entity pace_video_mixer; + +architecture SYN of pace_video_mixer is + signal bg_rgb : RGB_t; +begin + + GEN_BITMAPS : + if PACE_VIDEO_NUM_BITMAPS = 1 generate + bg_rgb <= bitmap_ctl_o(1).rgb; + elsif PACE_VIDEO_NUM_BITMAPS = 2 generate + bg_rgb <= bitmap_ctl_o(1).rgb when bitmap_ctl_o(1).set = '1' else + bitmap_ctl_o(2).rgb; + elsif PACE_VIDEO_NUM_BITMAPS = 3 generate + bg_rgb <= bitmap_ctl_o(1).rgb when bitmap_ctl_o(1).set = '1' else + bitmap_ctl_o(2).rgb when bitmap_ctl_o(2).set = '1' else + bitmap_ctl_o(3).rgb when bitmap_ctl_o(3).set = '1' else + (others => (others => '0')); + else generate + bg_rgb <= (others => (others => '0')); + end generate GEN_BITMAPS; + + GEN_TILEMAPS : + if PACE_VIDEO_NUM_TILEMAPS = 1 generate + rgb_o <= sprite_rgb when sprite_set = '1' and sprite_pri = '1' else + tilemap_ctl_o(1).rgb when tilemap_ctl_o(1).set = '1' else + sprite_rgb when sprite_set = '1' else + bg_rgb; + elsif PACE_VIDEO_NUM_TILEMAPS = 2 generate + rgb_o <= sprite_rgb when sprite_set = '1' and sprite_pri = '1' else + tilemap_ctl_o(1).rgb when tilemap_ctl_o(1).set = '1' else + tilemap_ctl_o(2).rgb when tilemap_ctl_o(2).set = '1' else + sprite_rgb when sprite_set = '1' else + bg_rgb; + else generate + rgb_o <= sprite_rgb when sprite_set = '1' and sprite_pri = '1' else + sprite_rgb when sprite_set = '1' else + bg_rgb; + end generate GEN_TILEMAPS; + +end architecture SYN;