diff --git a/Computer_MiST/Laser310_MiST/Laser310_MiST.qpf b/Computer_MiST/Laser310_MiST/Laser310_MiST.qpf deleted file mode 100644 index 6e4b53bc..00000000 --- a/Computer_MiST/Laser310_MiST/Laser310_MiST.qpf +++ /dev/null @@ -1,30 +0,0 @@ -# -------------------------------------------------------------------------- # -# -# Copyright (C) 1991-2014 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.4 Build 182 03/12/2014 SJ Web Edition -# Date created = 12:11:46 March 17, 2019 -# -# -------------------------------------------------------------------------- # - -QUARTUS_VERSION = "13.1" -DATE = "12:11:46 March 17, 2019" - -# Revisions - -PROJECT_REVISION = "Laser310_MiST" diff --git a/Computer_MiST/Laser310_MiST/Laser310_MiST.qsf b/Computer_MiST/Laser310_MiST/Laser310_MiST.qsf deleted file mode 100644 index d112c6a2..00000000 --- a/Computer_MiST/Laser310_MiST/Laser310_MiST.qsf +++ /dev/null @@ -1,433 +0,0 @@ -# -------------------------------------------------------------------------- # -# -# Copyright (C) 1991-2014 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.4 Build 182 03/12/2014 SJ Web Edition -# Date created = 17:28:40 June 04, 2019 -# -# -------------------------------------------------------------------------- # -# -# Notes: -# -# 1) The default values for assignments are stored in the file: -# Laser310_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 ORIGINAL_QUARTUS_VERSION 13.1 -set_global_assignment -name PROJECT_CREATION_TIME_DATE "21:40:24 MAY 17, 2014" -set_global_assignment -name LAST_QUARTUS_VERSION 13.1 -set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files -set_global_assignment -name PRE_FLOW_SCRIPT_FILE "quartus_sh:rtl/build_id.tcl" -set_global_assignment -name NUM_PARALLEL_PROCESSORS ALL -set_global_assignment -name SMART_RECOMPILE ON -set_global_assignment -name FLOW_ENABLE_IO_ASSIGNMENT_ANALYSIS ON -set_global_assignment -name SYSTEMVERILOG_FILE rtl/Laser310_MiST.sv -set_global_assignment -name VERILOG_FILE rtl/LASER310_TOP.v -set_global_assignment -name VERILOG_FILE rtl/mc6847_vga.v -set_global_assignment -name VERILOG_FILE rtl/PIXEL_DISPLAY.v -set_global_assignment -name VERILOG_FILE rtl/CHAR_GEN.v -set_global_assignment -name VERILOG_FILE rtl/PIXEL_GEN.v -set_global_assignment -name VERILOG_FILE rtl/VIDEO_OUT.v -set_global_assignment -name VERILOG_FILE rtl/SVGA_DEFINES.v -set_global_assignment -name VERILOG_FILE rtl/SVGA_TIMING_GENERATION.v -set_global_assignment -name VERILOG_FILE rtl/ps2_keyboard_glb.v -set_global_assignment -name VERILOG_FILE rtl/tv80/tv80s.v -set_global_assignment -name VERILOG_FILE rtl/tv80/tv80n.v -set_global_assignment -name VERILOG_FILE rtl/tv80/tv80_reg.v -set_global_assignment -name VERILOG_FILE rtl/tv80/tv80_mcode.v -set_global_assignment -name VERILOG_FILE rtl/tv80/tv80_core.v -set_global_assignment -name VERILOG_FILE rtl/tv80/tv80_alu.v -set_global_assignment -name VHDL_FILE rtl/sn76489/sn76489_top.vhd -set_global_assignment -name VHDL_FILE rtl/sn76489/sn76489_tone.vhd -set_global_assignment -name VHDL_FILE rtl/sn76489/sn76489_noise.vhd -set_global_assignment -name VHDL_FILE rtl/sn76489/sn76489_latch_ctrl.vhd -set_global_assignment -name VHDL_FILE rtl/sn76489/sn76489_clock_div.vhd -set_global_assignment -name VHDL_FILE rtl/sn76489/sn76489_attenuator.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/pll.vhd -set_global_assignment -name VERILOG_FILE rtl/reset_de.v -set_global_assignment -name VHDL_FILE rtl/dpram.vhd -set_global_assignment -name TEXT_FILE rtl/tv80/Text1.txt -set_global_assignment -name SYSTEMVERILOG_FILE rtl/LaserKeyboard.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/LaserCassEmu.sv -set_global_assignment -name QIP_FILE ../../common/mist/mist.qip - -# 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 "pll27: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 - -# Analysis & Synthesis Assignments -# ================================ -set_global_assignment -name CYCLONEII_OPTIMIZATION_TECHNIQUE SPEED -set_global_assignment -name FAMILY "Cyclone III" -set_global_assignment -name DEVICE_FILTER_PACKAGE TQFP -set_global_assignment -name DEVICE_FILTER_PIN_COUNT 144 -set_global_assignment -name ALLOW_POWER_UP_DONT_CARE ON -set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS ON -set_global_assignment -name SAVE_DISK_SPACE OFF -set_global_assignment -name DEVICE_FILTER_SPEED_GRADE 8 -set_global_assignment -name TOP_LEVEL_ENTITY Laser310_MiST - -# Fitter Assignments -# ================== -set_global_assignment -name FITTER_EARLY_TIMING_ESTIMATE_MODE OPTIMISTIC -set_global_assignment -name PHYSICAL_SYNTHESIS_COMBO_LOGIC ON -set_global_assignment -name PHYSICAL_SYNTHESIS_REGISTER_RETIMING ON -set_global_assignment -name PHYSICAL_SYNTHESIS_ASYNCHRONOUS_SIGNAL_PIPELINING ON -set_global_assignment -name PHYSICAL_SYNTHESIS_REGISTER_DUPLICATION ON -set_global_assignment -name PHYSICAL_SYNTHESIS_COMBO_LOGIC_FOR_AREA ON -set_global_assignment -name PHYSICAL_SYNTHESIS_MAP_LOGIC_TO_MEMORY_FOR_AREA ON -set_global_assignment -name PHYSICAL_SYNTHESIS_EFFORT EXTRA -set_global_assignment -name DEVICE EP3C25E144C8 -set_global_assignment -name CYCLONEIII_CONFIGURATION_SCHEME "PASSIVE SERIAL" -set_global_assignment -name FORCE_CONFIGURATION_VCCIO ON -set_global_assignment -name STRATIX_DEVICE_IO_STANDARD "3.3-V LVTTL" -set_global_assignment -name CRC_ERROR_OPEN_DRAIN OFF -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 CYCLONEII_RESERVE_NCEO_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 stp1.stp - -# Power Estimation Assignments -# ============================ -set_global_assignment -name POWER_PRESET_COOLING_SOLUTION "23 MM HEAT SINK WITH 200 LFPM AIRFLOW" -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(Laser310_MiST) - - # Pin & Location Assignments - # ========================== - set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_DQ[0] - set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_DQ[1] - set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_DQ[2] - set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_DQ[3] - set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_DQ[4] - set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_DQ[5] - set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_DQ[6] - set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_DQ[7] - set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_DQ[8] - set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_DQ[9] - set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_DQ[10] - set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_DQ[11] - set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_DQ[12] - set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_DQ[13] - set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_DQ[14] - set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_DQ[15] - set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_A[0] - set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_A[1] - set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_A[2] - set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_A[3] - set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_A[4] - set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_A[5] - set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_A[6] - set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_A[7] - set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_A[8] - set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_A[9] - set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_A[10] - set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_A[11] - set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_A[12] - 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[0] - set_instance_assignment -name FAST_OUTPUT_ENABLE_REGISTER ON -to SDRAM_DQ[1] - set_instance_assignment -name FAST_OUTPUT_ENABLE_REGISTER ON -to SDRAM_DQ[2] - set_instance_assignment -name FAST_OUTPUT_ENABLE_REGISTER ON -to SDRAM_DQ[3] - set_instance_assignment -name FAST_OUTPUT_ENABLE_REGISTER ON -to SDRAM_DQ[4] - set_instance_assignment -name FAST_OUTPUT_ENABLE_REGISTER ON -to SDRAM_DQ[5] - set_instance_assignment -name FAST_OUTPUT_ENABLE_REGISTER ON -to SDRAM_DQ[6] - set_instance_assignment -name FAST_OUTPUT_ENABLE_REGISTER ON -to SDRAM_DQ[7] - set_instance_assignment -name FAST_OUTPUT_ENABLE_REGISTER ON -to SDRAM_DQ[8] - set_instance_assignment -name FAST_OUTPUT_ENABLE_REGISTER ON -to SDRAM_DQ[9] - set_instance_assignment -name FAST_OUTPUT_ENABLE_REGISTER ON -to SDRAM_DQ[10] - set_instance_assignment -name FAST_OUTPUT_ENABLE_REGISTER ON -to SDRAM_DQ[11] - set_instance_assignment -name FAST_OUTPUT_ENABLE_REGISTER ON -to SDRAM_DQ[12] - set_instance_assignment -name FAST_OUTPUT_ENABLE_REGISTER ON -to SDRAM_DQ[13] - set_instance_assignment -name FAST_OUTPUT_ENABLE_REGISTER ON -to SDRAM_DQ[14] - set_instance_assignment -name FAST_OUTPUT_ENABLE_REGISTER ON -to SDRAM_DQ[15] - - # Fitter Assignments - # ================== - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SDRAM_A[0] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SDRAM_A[1] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SDRAM_A[2] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SDRAM_A[3] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SDRAM_A[4] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SDRAM_A[5] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SDRAM_A[6] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SDRAM_A[7] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SDRAM_A[8] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SDRAM_A[9] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SDRAM_A[10] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SDRAM_A[11] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SDRAM_A[12] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SDRAM_DQ[0] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SDRAM_DQ[1] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SDRAM_DQ[2] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SDRAM_DQ[3] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SDRAM_DQ[4] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SDRAM_DQ[5] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SDRAM_DQ[6] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SDRAM_DQ[7] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SDRAM_DQ[8] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SDRAM_DQ[9] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SDRAM_DQ[10] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SDRAM_DQ[11] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SDRAM_DQ[12] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SDRAM_DQ[13] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SDRAM_DQ[14] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SDRAM_DQ[15] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SDRAM_BA[0] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SDRAM_BA[1] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SDRAM_DQML - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SDRAM_DQMH - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SDRAM_nRAS - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SDRAM_nCAS - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SDRAM_nWE - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SDRAM_nCS - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SDRAM_CKE - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SDRAM_CLK - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to VGA_R[5] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to VGA_R[4] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to VGA_R[3] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to VGA_R[2] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to VGA_R[1] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to VGA_R[0] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to VGA_G[5] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to VGA_G[4] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to VGA_G[3] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to VGA_G[2] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to VGA_G[1] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to VGA_G[0] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to VGA_B[5] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to VGA_B[4] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to VGA_B[3] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to VGA_B[2] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to VGA_B[1] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to VGA_B[0] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to VGA_HS - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to VGA_VS - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to LED - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to AUDIO_L - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to AUDIO_R - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SPI_DO - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to CONF_DATA0 - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to AUDIO_L - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to AUDIO_R - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to CLOCK_27 - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to CONF_DATA0 - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LED - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SPI_DI - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SPI_DO - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SPI_SCK - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SPI_SS2 - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SPI_SS3 - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_B[5] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_B[4] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_B[3] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_B[2] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_B[1] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_B[0] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_G[5] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_G[4] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_G[3] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_G[2] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_G[1] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_G[0] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_HS - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_R[5] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_R[4] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_R[3] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_R[2] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_R[1] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_R[0] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_VS - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SDRAM_A[0] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SDRAM_A[1] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SDRAM_A[2] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SDRAM_A[3] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SDRAM_A[4] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SDRAM_A[5] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SDRAM_A[6] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SDRAM_A[7] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SDRAM_A[8] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SDRAM_A[9] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SDRAM_A[10] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SDRAM_A[11] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SDRAM_A[12] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SDRAM_DQ[0] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SDRAM_DQ[1] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SDRAM_DQ[2] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SDRAM_DQ[3] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SDRAM_DQ[4] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SDRAM_DQ[5] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SDRAM_DQ[6] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SDRAM_DQ[7] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SDRAM_DQ[8] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SDRAM_DQ[9] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SDRAM_DQ[10] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SDRAM_DQ[11] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SDRAM_DQ[12] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SDRAM_DQ[13] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SDRAM_DQ[14] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SDRAM_DQ[15] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SDRAM_BA[0] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SDRAM_BA[1] - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SDRAM_DQMH - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SDRAM_DQML - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SDRAM_nRAS - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SDRAM_nCAS - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SDRAM_nWE - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SDRAM_nCS - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SDRAM_CKE - set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SDRAM_CLK - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to CLOCK_27 - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SPI_DI - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SPI_SCK - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SPI_SS2 - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to SPI_SS3 - - # 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 - - # end DESIGN_PARTITION(Top) - # ------------------------- - -# end ENTITY(Laser310_MiST) -# ------------------------- -set_global_assignment -name VERILOG_FILE rtl/fdc.v -set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top \ No newline at end of file diff --git a/Computer_MiST/Laser310_MiST/Laser310_MiST.sdc b/Computer_MiST/Laser310_MiST/Laser310_MiST.sdc deleted file mode 100644 index 3eba3b05..00000000 --- a/Computer_MiST/Laser310_MiST/Laser310_MiST.sdc +++ /dev/null @@ -1,33 +0,0 @@ -#************************************************************ -# THIS IS A WIZARD-GENERATED FILE. -# -# Version 13.1.4 Build 182 03/12/2014 SJ Full Version -# -#************************************************************ - -# Copyright (C) 1991-2014 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. - - - -# Clock constraints - -create_clock -name "CLOCK_27" -period 37.037 [get_ports {CLOCK_27}] -create_clock -name {SPI_SCK} -period 10.000 -waveform { 0.000 0.500 } [get_ports {SPI_SCK}] - -# Automatically constrain PLL and other generated clocks -derive_pll_clocks -create_base_clocks - -# Automatically calculate clock uncertainty to jitter and other effects. -derive_clock_uncertainty diff --git a/Computer_MiST/Laser310_MiST/Laser310_MiST.srf b/Computer_MiST/Laser310_MiST/Laser310_MiST.srf deleted file mode 100644 index 4eb6b36c..00000000 --- a/Computer_MiST/Laser310_MiST/Laser310_MiST.srf +++ /dev/null @@ -1,11 +0,0 @@ -{ "" "" "" "Verilog HDL warning at hq2x.sv(247): extended using \"x\" or \"z\"" { } { } 0 10273 "" 0 0 "Quartus II" 0 -1 0 ""} -{ "" "" "" "Verilog HDL warning at tv80_core.v(300): extended using \"x\" or \"z\"" { } { } 0 10273 "" 0 0 "Quartus II" 0 -1 0 ""} -{ "" "" "" "Verilog HDL macro warning at hq2x.sv(26): overriding existing definition for macro \"BITS_TO_FIT\", which was defined in \"rtl/scandoubler.v\", line 109" { } { } 0 10274 "" 0 0 "Quartus II" 0 -1 0 ""} -{ "" "" "" "*" { } { } 0 10090 "" 0 0 "Quartus II" 0 -1 0 ""} -{ "" "" "" "*" { } { } 0 332060 "" 0 0 "Quartus II" 0 -1 0 ""} -{ "" "" "" "*" { } { } 0 10230 "" 0 0 "Quartus II" 0 -1 0 ""} -{ "" "" "" "*" { } { } 0 10259 "" 0 0 "Quartus II" 0 -1 0 ""} -{ "" "" "" "*" { } { } 0 10036 "" 0 0 "Quartus II" 0 -1 0 ""} -{ "" "" "" "*" { } { } 0 10030 "" 0 0 "Quartus II" 0 -1 0 ""} -{ "" "" "" "*" { } { } 0 10240 "" 0 0 "Quartus II" 0 -1 0 ""} -{ "" "" "" "*" { } { } 0 10268 "" 0 0 "Quartus II" 0 -1 0 ""} diff --git a/Computer_MiST/Laser310_MiST/clean.bat b/Computer_MiST/Laser310_MiST/clean.bat deleted file mode 100644 index 83fb0c47..00000000 --- a/Computer_MiST/Laser310_MiST/clean.bat +++ /dev/null @@ -1,15 +0,0 @@ -@echo off -del /s *.bak -del /s *.orig -del /s *.rej -rmdir /s /q db -rmdir /s /q incremental_db -rmdir /s /q output_files -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/Computer_MiST/Laser310_MiST/compumuse.pdf b/Computer_MiST/Laser310_MiST/compumuse.pdf deleted file mode 100644 index 98e067ee..00000000 Binary files a/Computer_MiST/Laser310_MiST/compumuse.pdf and /dev/null differ diff --git a/Computer_MiST/Laser310_MiST/rtl/CHAR_GEN.v b/Computer_MiST/Laser310_MiST/rtl/CHAR_GEN.v deleted file mode 100644 index a9d45ce9..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/CHAR_GEN.v +++ /dev/null @@ -1,68 +0,0 @@ -module CHAR_GEN( - // control - reset, - - char_code, - subchar_line, - subchar_pixel, - - pixel_clock, - pixel_on -); - -input pixel_clock; -input reset; - -input [7:0] char_code; -input [4:0] subchar_line; // line number within 12 line block -input [3:0] subchar_pixel; // pixel position within 8 pixel block - -output pixel_on; - -reg [7:0] latched_data; -reg pixel_on; - -wire [11:0] rom_addr = {char_code[7:0], subchar_line[4:1]}; -wire [7:0] rom_data; - - -// instantiate the character generator ROM -//CHAR_GEN_ROM CHAR_GEN_ROM -//( -// pixel_clock, -// rom_addr, -// rom_data -//); - -sprom #( - .init_file("./roms/charrom_4k.mif"), - .widthad_a(12), - .width_a(8)) -CHAR_GEN_ROM( - .address(rom_addr), - .clock(pixel_clock), - .q(rom_data) - ); - - -// serialize the CHARACTER MODE data -always @ (posedge pixel_clock or posedge reset) begin - if (reset) - begin - pixel_on = 1'b0; - latched_data = 8'h00; - end - - else begin - case(subchar_pixel) - 4'b0101: - latched_data [7:0] = {rom_data[0],rom_data[1],rom_data[2],rom_data[3],rom_data[4],rom_data[5],rom_data[6],rom_data[7]}; - default: - if(subchar_pixel[0]==1'b0) - {pixel_on,latched_data [7:1]} <= latched_data [7:0]; - endcase - end - - end - -endmodule //CHAR_GEN diff --git a/Computer_MiST/Laser310_MiST/rtl/CHAR_GEN_ROM.v b/Computer_MiST/Laser310_MiST/rtl/CHAR_GEN_ROM.v deleted file mode 100644 index 691de90e..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/CHAR_GEN_ROM.v +++ /dev/null @@ -1,19 +0,0 @@ -module CHAR_GEN_ROM -( - pixel_clock, - address, - data -); - -input pixel_clock; -input [11:0] address; -output wire [7:0] data; - -// Character generator -char_rom_4k_altera char_rom( - .address(address), - .clock(pixel_clock), - .q(data) -); - -endmodule //CHAR_GEN_ROM diff --git a/Computer_MiST/Laser310_MiST/rtl/LASER310_TOP.v b/Computer_MiST/Laser310_MiST/rtl/LASER310_TOP.v deleted file mode 100644 index 58a9fa71..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/LASER310_TOP.v +++ /dev/null @@ -1,1179 +0,0 @@ -`timescale 1 ns / 1 ns -`define BASE_SYS_ROM -`define BASE_DOS_ROM -`define BOOT_ROM_6000 -`define BASE_RAM_78//2k -`define BASE_RAM_16K -//`define RAM_16K_EXPANSION -`define VRAM_2K -//`define VRAM_8K -`define SHRG -//`ifdef CASS_EMU -//`ifdef CASS_EMU_16K -//`ifdef CASS_EMU_8K -//`ifdef CASS_EMU_4K -//`ifdef CASS_EMU_2K - -//Switches -// 9 Latch BANK_4000 -// 8 Latch BANK_4000 -// 7 Latch BANK_4000 -// 6 Latch BANK_0000 -// 5 Latch BANK_0000 -// 4 Latch BANK_0000 -// 3 -// 2 SHRG_EN -// 1 Dosrom Enable -// 0 Turbo - - -module LASER310_TOP( -input CLK50MHZ, -input CLK25MHZ, -input CLK10MHZ, -input RESET,//Active Low -output [7:0] VGA_RED, -output [7:0] VGA_GREEN, -output [7:0] VGA_BLUE, -output VGA_HS, -output VGA_VS, -output blank, -input VIDEO_MODE, -output [1:0] AUD_ADCDAT, -output [7:0] audio_s, -input key_strobe, -input key_pressed, -input [7:0] key_code, -input [9:0] SWITCH, -input UART_RXD, -output UART_TXD - ); - -reg [3:0] CLK; - -reg MEM_OP_WR; -//reg MEM_RD; -(*keep*)reg GPIO_CPU_CLK; -// Processor -(*keep*)reg CPU_CLK; -(*keep*)wire[15:0] CPU_A; -(*keep*)wire [7:0] CPU_DI; -(*keep*)wire [7:0] CPU_DO; -(*keep*)wire CPU_RESET; -(*keep*)wire CPU_HALT; -(*keep*)wire CPU_MREQ; -(*keep*)wire CPU_RD; -(*keep*)wire CPU_WR; -(*keep*)wire CPU_IORQ; -(*keep*)reg CPU_INT; -(*keep*)wire CPU_M1; -wire CPU_BUSRQ; -wire CPU_BUSAK; -wire CPU_RFSH; -(*keep*)wire CPU_RESET_N; -(*keep*)wire CPU_HALT_N; -(*keep*)wire CPU_MREQ_N; -(*keep*)wire CPU_RD_N; -(*keep*)wire CPU_WR_N; -(*keep*)wire CPU_IORQ_N; -(*keep*)wire CPU_INT_N; -(*keep*)wire CPU_M1_N; -wire CPU_BUSRQ_N; -wire CPU_BUSAK_N; -wire CPU_RFSH_N; -// VRAM -(*keep*)wire[12:0] VRAM_ADDRESS; -(*keep*)wire VRAM_WR; -(*keep*)wire [7:0] VRAM_DATA_OUT; -(*keep*)wire VDG_RD; -(*keep*)wire[12:0] VDG_ADDRESS; -(*keep*)wire [7:0] VDG_DATA; -// ROM IO RAM -reg LATCHED_DOSROM_EN; -reg LATCHED_BOOTROM_EN; -reg LATCHED_AUTOSTARTROM_EN; -wire [7:0] SYS_ROM_DATA; -wire [7:0] DOS_ROM_DATA; -wire [7:0] AUTOSTART_ROM_DATA; -wire [7:0] BOOT_ROM_6000_DATA; -reg BOOTROM_EN; -reg [7:0] BOOTROM_BANK; -reg AUTOSTARTROM_EN; -reg [7:0] AUTOSTARTROM_BANK; -//wire [7:0] IO_DATA; -//wire [7:0] IO_WR; -wire RAM_16K_WR; -wire [7:0] RAM_16K_DATA_OUT; -wire RAM_78_WR; -wire [7:0] RAM_78_DATA; -wire RAM_16K_EXP_WR; -wire [7:0] RAM_16K_EXP_DATA_OUT; -wire RAM_89AB_WR; -wire [7:0] RAM_89AB_DATA; -wire RAM_CDEF_WR; -wire [7:0] RAM_CDEF_DATA; -wire [7:0] MEM_CDEF_DATA_OUT; -wire [7:0] RAM_89AB_DATA_OUT; -wire [7:0] RAM_CDEF_DATA_OUT; -wire ADDRESS_ROM; -wire ADDRESS_DOSROM; -wire ADDRESS_IO; -wire ADDRESS_VRAM; -wire ADDRESS_BOOTROM_6000; -wire ADDRESS_AUTOSTARTROM; -wire ADDRESS_89AB; -wire ADDRESS_CDEF; -wire ADDRESS_RAM_78; -wire ADDRESS_RAM_16K; -wire ADDRESS_RAM_16K_EXP; -wire ADDRESS_IO_SHRG; -wire ADDRESS_IO_BANK; -wire ADDRESS_RAM_CHIP; -reg [7:0] LATCHED_IO_DATA_WR; -//reg [7:0] LATCHED_IO_DATA_RD; -reg [7:0] LATCHED_BANK_0000; -reg [7:0] LATCHED_BANK_4000; -reg [7:0] LATCHED_BANK_C000; -reg [7:0] LATCHED_BANK_4DEF; -`ifdef SHRG -reg LATCHED_SHRG_EN; -reg [7:0] LATCHED_IO_SHRG; -`endif - -// keyboard -reg [4:0] KB_CLK; - -wire [7:0] SCAN; -wire PRESS; -wire PRESS_N; -wire EXTENDED; - -reg [63:0] KEY; -reg [9:0] KEY_EX; -reg [11:0] KEY_Fxx; -wire [7:0] KEY_DATA; -//reg [63:0] LAST_KEY; -//reg CAPS_CLK; -//reg CAPS; -wire A_KEY_PRESSED; - -reg [7:0] LATCHED_KEY_DATA; - -// emu keyboard -wire [63:0] EMU_KEY; -wire [9:0] EMU_KEY_EX; -wire EMU_KEY_EN; -// cassette - -(*keep*)wire [1:0] CASS_OUT; -(*keep*)wire CASS_IN; -(*keep*)wire CASS_IN_L; -(*keep*)wire CASS_IN_R; - - -// 用于外部磁带仿真计数 -//(*keep*)reg EMU_CASS_CLK; - -(*keep*)wire EMU_CASS_EN; -(*keep*)wire [1:0] EMU_CASS_DAT; - - -reg [16:0] RESET_KEY_COUNT; -wire RESET_KEY_N, RESET_N; - -wire TURBO_SPEED = SWITCH[0]; - - -RESET_DE RESET_DE( - .CLK(CLK50MHZ), - .SYS_RESET_N(RESET), - .RESET_N(RESET_N) -); - - -// 键盘 ctrl + f12 系统复位 -assign RESET_KEY_N = RESET_KEY_COUNT[16]; - -reg [17:0] INT_CNT; - -always @ (negedge CLK10MHZ) - case(INT_CNT[17:0]) - 18'd0: - begin - CPU_INT <= 1'b1; - INT_CNT <= 18'd1; - end - 18'd640: - begin - CPU_INT <= 1'b0; - INT_CNT <= 18'd641; - end - 18'd199999: - begin - INT_CNT <= 18'd0; - end - default: - begin - INT_CNT <= INT_CNT + 1; - end - endcase - -always @(posedge CLK50MHZ or negedge RESET_N) - if(~RESET_N) - begin - CPU_CLK <= 1'b0; - GPIO_CPU_CLK <= 1'b0; - // 复位期间设置,避免拨动开关引起错误 - LATCHED_DOSROM_EN <= SWITCH[1]; - LATCHED_BANK_0000 <= {5'b0,SWITCH[6:4]}; - LATCHED_BANK_4000 <= {5'b0,SWITCH[9:7]}; - LATCHED_BOOTROM_EN <= BOOTROM_EN; - LATCHED_AUTOSTARTROM_EN <= AUTOSTARTROM_EN; - //LATCHED_BOOTROM_EN <= 1'b0; -`ifdef SHRG - LATCHED_IO_SHRG <= 8'b00001000; - // 复位期间设置,避免拨动开关引起错误 - LATCHED_SHRG_EN <= SWITCH[2]; -`endif -`ifdef IO_BANK - if(BOOTROM_EN) - LATCHED_BANK_C000 <= BOOTROM_BANK; - else - LATCHED_BANK_C000 <= 8'b0; - if(AUTOSTARTROM_EN) - LATCHED_BANK_4DEF <= AUTOSTARTROM_BANK; - else - LATCHED_BANK_4DEF <= 8'b0; -`endif - - - MEM_OP_WR <= 1'b0; - - LATCHED_KEY_DATA <= 8'b0; - LATCHED_IO_DATA_WR <= 8'b0; - //EMU_CASS_CLK <= 1'b0; - CLK <= 4'd0; - end - else - begin - case (CLK[3:0]) - 4'd0: - begin - // 同步内存,等待读写信号建立 - CPU_CLK <= 1'b1; - GPIO_CPU_CLK <= 1'b1; - MEM_OP_WR <= 1'b1; - //EMU_CASS_CLK <= ~EMU_CASS_CLK; - CLK <= 4'd1; - end - - 4'd1: - begin - // 同步内存,锁存读写信号和地址 - CPU_CLK <= 1'b0; - MEM_OP_WR <= 1'b0; - LATCHED_KEY_DATA <= KEY_DATA; - if({CPU_MREQ,CPU_RD,CPU_WR,ADDRESS_IO}==4'b1011) - LATCHED_IO_DATA_WR <= CPU_DO; -`ifdef SHRG - if(LATCHED_SHRG_EN) - if({CPU_IORQ,CPU_RD,CPU_WR,ADDRESS_IO_SHRG}==4'b1011) - LATCHED_IO_SHRG <= CPU_DO; -`endif -`ifdef IO_BANK - if({CPU_IORQ,CPU_RD,CPU_WR,ADDRESS_IO_BANK}==4'b1011) - LATCHED_BANK_C000 <= CPU_DO; -`endif - CLK <= 4'd2; - end - - 4'd2: - begin - // 完成读写操作,开始输出 - CPU_CLK <= 1'b0; - GPIO_CPU_CLK <= ~TURBO_SPEED; - - MEM_OP_WR <= 1'b0; - CLK <= 4'd3; - end - 4'd3: - begin - if(TURBO_SPEED) - CLK <= 4'd0; - else - CLK <= 4'd4; - end - 4'd7: - begin - CPU_CLK <= 1'b0; - GPIO_CPU_CLK <= 1'b0; - MEM_OP_WR <= 1'b0; - CLK <= 4'd8; - end - 4'd13:// 正常速度 - begin - CPU_CLK <= 1'b0; - MEM_OP_WR <= 1'b0; - CLK <= 4'd0; - end - default: - begin - CPU_CLK <= 1'b0; - MEM_OP_WR <= 1'b0; - CLK <= CLK + 1'b1; - end - endcase - end - -// CPU -assign CPU_RESET = ~RESET_N; -assign CPU_M1 = ~CPU_M1_N; -assign CPU_MREQ = ~CPU_MREQ_N; -assign CPU_IORQ = ~CPU_IORQ_N; -assign CPU_RD = ~CPU_RD_N; -assign CPU_WR = ~CPU_WR_N; -assign CPU_RFSH = ~CPU_RFSH_N; -assign CPU_HALT= ~CPU_HALT_N; -assign CPU_BUSAK = ~CPU_BUSAK_N; -assign CPU_RESET_N = ~CPU_RESET; -assign CPU_INT_N = VIDEO_MODE ? ~CPU_INT : ~VGA_VS; -assign CPU_BUSRQ_N = ~CPU_BUSRQ; - -tv80s Z80CPU ( - .m1_n(CPU_M1_N), - .mreq_n(CPU_MREQ_N), - .iorq_n(CPU_IORQ_N), - .rd_n(CPU_RD_N), - .wr_n(CPU_WR_N), - .rfsh_n(CPU_RFSH_N), - .halt_n(CPU_HALT_N), - .busak_n(CPU_BUSAK_N), - .A(CPU_A), - .dout(CPU_DO), - .reset_n(CPU_RESET_N), - .clk(CPU_CLK), - .wait_n(1'b1), - .int_n(CPU_INT_N), - .nmi_n(1'b1), - .busrq_n(CPU_BUSRQ_N), - .di(CPU_DI) -); - - -// 0000 -- 3FFF ROM 16KB -// 4000 -- 5FFF DOS -// 6000 -- 67FF BOOT ROM -// 6800 -- 6FFF I/O -// 7000 -- 77FF VRAM 2KB (SRAM 6116) -// 7800 -- 7FFF RAM 2KB -// 8000 -- B7FF RAM 14KB -// B800 -- BFFF RAM ext 2KB -// C000 -- F7FF RAM ext 14KB - -assign ADDRESS_ROM = (CPU_A[15:14] == 2'b00)?1'b1:1'b0; -assign ADDRESS_DOSROM = (CPU_A[15:13] == 3'b010)?LATCHED_DOSROM_EN:1'b0; -assign ADDRESS_BOOTROM_6000 = (CPU_A[15:11] == 5'b01100)?LATCHED_BOOTROM_EN:1'b0; -assign ADDRESS_AUTOSTARTROM = (CPU_A[15:12] == 4'h4||CPU_A[15:12] == 4'hD||CPU_A[15:12] == 4'hE||CPU_A[15:12] == 4'hF)?LATCHED_AUTOSTARTROM_EN:1'b0; -assign ADDRESS_IO = (CPU_A[15:11] == 5'b01101)?1'b1:1'b0; -assign ADDRESS_VRAM = (CPU_A[15:11] == 5'b01110)?1'b1:1'b0; -assign ADDRESS_89AB = (CPU_A[15:14] == 2'b10)?1'b1:1'b0; -assign ADDRESS_CDEF = (CPU_A[15:14] == 2'b11)?1'b1:1'b0; -// 7800 -- 7FFF RAM 2KB -assign ADDRESS_RAM_78 = (CPU_A[15:11] == 5'b01111)?1'b1:1'b0; -// 7800 -- 7FFF RAM 2KB -// 8000 -- B7FF RAM 14KB - -assign ADDRESS_RAM_16K = (CPU_A[15:12] == 4'h8)?1'b1: - (CPU_A[15:12] == 4'h9)?1'b1: - (CPU_A[15:12] == 4'hA)?1'b1: - (CPU_A[15:11] == 5'b01111)?1'b1: - (CPU_A[15:11] == 5'b10110)?1'b1: - 1'b0; - -// B800 -- BFFF RAM ext 2KB -// C000 -- F7FF RAM ext 14KB - -assign ADDRESS_RAM_16K_EXP = (CPU_A[15:12] == 4'hC)?1'b1: - (CPU_A[15:12] == 4'hD)?1'b1: - (CPU_A[15:12] == 4'hE)?1'b1: - (CPU_A[15:11] == 5'b10111)?1'b1: - (CPU_A[15:11] == 5'b11110)?1'b1: - 1'b0; - -assign ADDRESS_IO_SHRG = (CPU_A[7:0] == 8'd32)?1'b1:1'b0; - -// 64K RAM expansion cartridge vz300_review.pdf 中的端口号是 IO 7FH 127 -// 128K SIDEWAYS RAM SHRG2 HVVZUG23 (Mar-Apr 1989).PDF 中的端口号是 IO 112 - -assign ADDRESS_IO_BANK = (CPU_A[7:0] == 8'd127 || CPU_A[7:0] == 8'd112)?1'b1:1'b0; - - - - -`ifdef RAM_16K_EXPANSION -assign ADDRESS_RAM_CHIP = ADDRESS_RAM_16K|ADDRESS_RAM_16K_EXP; -`else -assign ADDRESS_RAM_CHIP = ADDRESS_RAM_16K; -`endif - - - -assign VRAM_WR = ({ADDRESS_VRAM,MEM_OP_WR,CPU_WR,CPU_IORQ} == 4'b1110)?1'b1:1'b0; -assign RAM_78_WR = ({ADDRESS_RAM_78,MEM_OP_WR,CPU_WR,CPU_IORQ} == 4'b1110)?1'b1:1'b0; -assign RAM_16K_WR = ({ADDRESS_RAM_16K,MEM_OP_WR,CPU_WR,CPU_IORQ} == 4'b1110)?1'b1:1'b0; -assign RAM_16K_EXP_WR = ({ADDRESS_RAM_16K_EXP,MEM_OP_WR,CPU_WR,CPU_IORQ} == 4'b1110)?1'b1:1'b0; - - -assign RAM_89AB_WR = ({ADDRESS_89AB,MEM_OP_WR,CPU_WR,CPU_IORQ} == 4'b1110)?1'b1:1'b0; -assign RAM_CDEF_WR = ({ADDRESS_CDEF,MEM_OP_WR,CPU_WR,CPU_IORQ} == 4'b1110)?1'b1:1'b0; - -assign RAM_89AB_WR = ({ADDRESS_89AB,MEM_OP_WR,CPU_WR,CPU_IORQ} == 4'b1110)?1'b1:1'b0; -assign RAM_CDEF_WR = ({ADDRESS_CDEF,MEM_OP_WR,CPU_WR,CPU_IORQ} == 4'b1110)?1'b1:1'b0; - - -assign CPU_DI = ADDRESS_ROM ? SYS_ROM_DATA : - ADDRESS_AUTOSTARTROM ? AUTOSTART_ROM_DATA : - ADDRESS_DOSROM ? DOS_ROM_DATA : -`ifdef BOOT_ROM_6000 - ADDRESS_BOOTROM_6000 ? BOOT_ROM_6000_DATA : -`endif - ADDRESS_IO ? LATCHED_KEY_DATA : - ADDRESS_VRAM ? VRAM_DATA_OUT : -`ifdef BASE_RAM_16K - ADDRESS_RAM_16K ? RAM_16K_DATA_OUT : -`endif -`ifdef RAM_16K_EXPANSION - ADDRESS_RAM_16K_EXP ? RAM_16K_EXP_DATA_OUT : -`endif - 8'hzz; - - - - -`ifdef BASE_SYS_ROM -sprom #( - .init_file("./roms/sysrom.mif"), - .widthad_a(14), - .width_a(8)) -sys_rom( - .address(CPU_A[13:0]), - .clock(CLK50MHZ), - .q(SYS_ROM_DATA) - ); -`endif - -`ifdef BASE_DOS_ROM -sprom #( - .init_file("./roms/dosrom.mif"), - .widthad_a(13), - .width_a(8)) -DOS_ROM( - .address(CPU_A[12:0]), - .clock(CLK50MHZ), - .q(DOS_ROM_DATA) - ); -`endif - -`ifdef BOOT_ROM_6000 -sprom #( - .init_file("./roms/boot_rom_6000.mif"), - .widthad_a(9), - .width_a(8)) -BOOT_ROM( - .address(CPU_A[8:0]), - .clock(CLK50MHZ), - .q(BOOT_ROM_6000_DATA) - ); -`endif - -`ifdef BASE_RAM_78 -spram #( - . addr_width_g(11), - .data_width_g(8)) -BASE_RAM78( - .address(CPU_A[10:0]), - .clken(1), - .clock(CLK50MHZ), - .data(CPU_DO), - .wren(CPU_MREQ & RAM_78_WR), - .q(RAM_78_DATA) - ); -`endif - -`ifdef BASE_RAM_16K -spram #( - . addr_width_g(14), - .data_width_g(8)) -BASE_RAM16k( - .address(CPU_A[13:0]), - .clken(1), - .clock(CLK50MHZ), - .data(CPU_DO), - .wren(CPU_MREQ & RAM_16K_WR), - .q(RAM_16K_DATA_OUT) - ); -`else -assign RAM_16K_DATA_OUT = 8'bz; -`endif - -`ifdef RAM_16K_EXPANSION -spram #( - . addr_width_g(14), - .data_width_g(8)) -BASE_RAM16kex( - .address(CPU_A[13:0]), - .clken(1), - .clock(CLK50MHZ), - .data(CPU_DO), - .wren(CPU_MREQ & RAM_16K_EXP_WR), - .q(RAM_16K_EXP_DATA_OUT) - ); -`else -assign RAM_16K_EXP_DATA_OUT = 8'bz; -`endif - - -`ifdef VRAM_2K -dpram #( - .addr_width_g(11), - .data_width_g(8)) -vram_2k( - .clk_a_i(CLK50MHZ), - .en_a_i(1), - .we_i(CPU_MREQ & VRAM_WR), - .addr_a_i(CPU_A[10:0]), - .data_a_i(CPU_DO), - .data_a_o(VRAM_DATA_OUT), - .clk_b_i(VDG_RD), - .addr_b_i(VDG_ADDRESS[10:0]), - .data_b_o(VDG_DATA) - ); -`endif - - -`ifdef VRAM_8K -dpram #( - .addr_width_g(13), - .data_width_g(8)) -vram_8k( - .clk_a_i(CLK50MHZ), - .en_a_i(1), - .we_i(CPU_MREQ & VRAM_WR), - .addr_a_i({LATCHED_IO_SHRG[1:0],CPU_A[10:0]}), - .data_a_i(CPU_DO), - .data_a_o(VRAM_DATA_OUT), - .clk_b_i(VDG_RD), - .addr_b_i(VDG_ADDRESS[12:0]), - .data_b_o(VDG_DATA) - ); -`endif - -MC6847_VGA MC6847_VGA( - .PIX_CLK(CLK25MHZ), - .RESET_N(RESET_N), - .RD(VDG_RD), - .DD(VDG_DATA), - .DA(VDG_ADDRESS), - .AG(LATCHED_IO_DATA_WR[3]), - .AS(1'b0), - .EXT(1'b0), - .INV(1'b0), -`ifdef SHRG - .GM(LATCHED_IO_SHRG[4:2]), -`else - .GM(3'b010), -`endif - .CSS(LATCHED_IO_DATA_WR[4]), - // vga - .blank(blank), - .VGA_OUT_HSYNC(VGA_HS), - .VGA_OUT_VSYNC(VGA_VS), - .VGA_OUT_RED(VGA_RED), - .VGA_OUT_GREEN(VGA_GREEN), - .VGA_OUT_BLUE(VGA_BLUE) -); - - -// keyboard - -/***************************************************************************** -* Convert PS/2 keyboard to ASCII keyboard -******************************************************************************/ - -/* - KD5 KD4 KD3 KD2 KD1 KD0 扫描用地址 -A0 R Q E W T 68FEH 0 -A1 F A D CTRL S G 68FDH 8 -A2 V Z C SHFT X B 68FBH 16 -A3 4 1 3 2 5 68F7H 24 -A4 M 空格 , . N 68EFH 32 -A5 7 0 8 - 9 6 68DFH 40 -A6 U P I RETN O Y 68BFH 48 -A7 J ; K : L H 687FH 56 -*/ - -// 7: 0 -// 15: 8 -// 23:16 -// 31:24 -// 39:32 -// 47:40 -// 55:48 -// 63:56 - - - -// 键盘检测的方法,就是循环地问每一行线发送低电平信号,也就是用该地址线为“0”的地址去读取数据。 -// 例如,检测第一行时,使A0为0,其余为1;加上选通IC4的高五位地址01101,成为01101***11111110B(A8~A10不起作用, -// 可为任意值,故68FEH,69FEH,6AFEH,6BFEH,6CFEH,6DFEH,6EFEH,6FFEH均可)。 -// 读 6800H 判断是否有按键按下。 - -// The method of keyboard detection is to cyclically ask each line to send a low level signal, -// that is, to read the data with the address line "0". -// For example, when detecting the first line, make A0 0 and the rest 1; plus the high five-bit address 01101 of the strobe IC4, -// become 01101***11111110B (A8~A10 does not work, -// It can be any value, so 68FEH, 69FEH, 6AFEH, 6BFEH, 6CFEH, 6DFEH, 6EFEH, 6FFEH can be). -// Read 6800H to determine if there is a button press. - -// 键盘选通,整个竖列有一个选通的位置被按下,对应值为0。 -// The keyboard is strobed, and a strobe position is pressed in the entire vertical column, and the corresponding value is 0. - -// 键盘扩展 -// 加入方向键盘 -// Keyboard extension - -// left: ctrl M 37 KEY_EX[5] -// right: ctrl , 35 KEY_EX[6] -// up: ctrl . 33 KEY_EX[4] -// down: ctrl space 36 KEY_EX[7] -// esc: ctrl - 42 KEY_EX[3] -// backspace: ctrl M 37 KEY_EX[8] - -// R-Shift - - -wire [63:0] KEY_C = EMU_KEY_EN?EMU_KEY:KEY; -wire [9:0] KEY_EX_C = EMU_KEY_EN?EMU_KEY_EX:KEY_EX; - -//wire KEY_CTRL_ULRD = (KEY_EX[7:4]==4'b1111); -wire KEY_CTRL_ULRD_BRK = (KEY_EX[8:3]==6'b111111); - -wire KEY_DATA_BIT5 = (CPU_A[7:0]|{KEY_C[61], KEY_C[53], KEY_C[45], KEY_C[37]&KEY_EX_C[5]&KEY_EX_C[8], KEY_C[29], KEY_C[21], KEY_C[13], KEY_C[ 5]})==8'hff; -wire KEY_DATA_BIT4 = (CPU_A[7:0]|{KEY_C[60], KEY_C[52], KEY_C[44], KEY_C[36]&KEY_EX_C[7], KEY_C[28], KEY_C[20], KEY_C[12], KEY_C[ 4]})==8'hff; -wire KEY_DATA_BIT3 = (CPU_A[7:0]|{KEY_C[59], KEY_C[51], KEY_C[43], KEY_C[35]&KEY_EX_C[6], KEY_C[27], KEY_C[19], KEY_C[11], KEY_C[ 3]})==8'hff; -wire KEY_DATA_BIT2 = (CPU_A[7:0]|{KEY_C[58], KEY_C[50], KEY_C[42]&KEY_EX_C[3], KEY_C[34], KEY_C[26], KEY_C[18]&KEY_EX_C[0], KEY_C[10]&KEY_CTRL_ULRD_BRK, KEY_C[ 2]})==8'hff; -wire KEY_DATA_BIT1 = (CPU_A[7:0]|{KEY_C[57], KEY_C[49], KEY_C[41], KEY_C[33]&KEY_EX_C[4], KEY_C[25], KEY_C[17], KEY_C[ 9], KEY_C[ 1]})==8'hff; -wire KEY_DATA_BIT0 = (CPU_A[7:0]|{KEY_C[56], KEY_C[48], KEY_C[40], KEY_C[32], KEY_C[24], KEY_C[16], KEY_C[ 8], KEY_C[ 0]})==8'hff; - -/* -wire KEY_DATA_BIT5 = (CPU_A[7:0]|{KEY[61], KEY[53], KEY[45], KEY[37], KEY[29], KEY[21], KEY[13], KEY[ 5]})==8'hff; -wire KEY_DATA_BIT4 = (CPU_A[7:0]|{KEY[60], KEY[52], KEY[44], KEY[36], KEY[28], KEY[20], KEY[12], KEY[ 4]})==8'hff; -wire KEY_DATA_BIT3 = (CPU_A[7:0]|{KEY[59], KEY[51], KEY[43], KEY[35], KEY[27], KEY[19], KEY[11], KEY[ 3]})==8'hff; -wire KEY_DATA_BIT2 = (CPU_A[7:0]|{KEY[58], KEY[50], KEY[42], KEY[34], KEY[26], KEY[18], KEY[10], KEY[ 2]})==8'hff; -wire KEY_DATA_BIT1 = (CPU_A[7:0]|{KEY[57], KEY[49], KEY[41], KEY[33], KEY[25], KEY[17], KEY[ 9], KEY[ 1]})==8'hff; -wire KEY_DATA_BIT0 = (CPU_A[7:0]|{KEY[56], KEY[48], KEY[40], KEY[32], KEY[24], KEY[16], KEY[ 8], KEY[ 0]})==8'hff; -*/ - -wire KEY_DATA_BIT7 = 1'b1; // 没有空置,具体用途没有理解 -//wire KEY_DATA_BIT6 = CASS_IN; -wire KEY_DATA_BIT6 = ~CASS_IN; - -assign KEY_DATA = { KEY_DATA_BIT7, KEY_DATA_BIT6, KEY_DATA_BIT5, KEY_DATA_BIT4, KEY_DATA_BIT3, KEY_DATA_BIT2, KEY_DATA_BIT1, KEY_DATA_BIT0 }; - -/* -assign KEY_DATA = (CPU_A[0]==1'b0) ? KEY[ 7: 0] : - (CPU_A[1]==1'b0) ? KEY[15: 8] : - (CPU_A[2]==1'b0) ? KEY[23:16] : - (CPU_A[3]==1'b0) ? KEY[31:24] : - (CPU_A[4]==1'b0) ? KEY[39:32] : - (CPU_A[5]==1'b0) ? KEY[47:40] : - (CPU_A[6]==1'b0) ? KEY[55:48] : - (CPU_A[7]==1'b0) ? KEY[63:56] : - 8'hff; - -assign KEY_DATA = - (CPU_A[7]==1'b0) ? KEY[63:56] : - (CPU_A[6]==1'b0) ? KEY[55:48] : - (CPU_A[5]==1'b0) ? KEY[47:40] : - (CPU_A[4]==1'b0) ? KEY[39:32] : - (CPU_A[3]==1'b0) ? KEY[31:24] : - (CPU_A[2]==1'b0) ? KEY[23:16] : - (CPU_A[1]==1'b0) ? KEY[15: 8] : - (CPU_A[0]==1'b0) ? KEY[ 7: 0] : - 8'hff; -*/ - - -assign A_KEY_PRESSED = (KEY[63:0] == 64'hFFFFFFFFFFFFFFFF) ? 1'b0:1'b1; - -always @(posedge KB_CLK[3] or negedge RESET) -begin - if(~RESET) - begin - KEY <= 64'hFFFFFFFFFFFFFFFF; - KEY_EX <= 10'h3FF; - KEY_Fxx <= 12'h000; -// CAPS_CLK <= 1'b0; - RESET_KEY_COUNT <= 17'h1FFFF; - - BOOTROM_BANK <= 0; - BOOTROM_EN <= 1'b0; - - AUTOSTARTROM_BANK <= 0; - AUTOSTARTROM_EN <= 1'b0; - end - else - begin - //KEY[?] <= CAPS; - if(RESET_KEY_COUNT[16]==1'b0) - RESET_KEY_COUNT <= RESET_KEY_COUNT+1; - - case(key_code) - 8'h07: - begin - KEY_Fxx[11] <= PRESS; // F12 RESET - if(PRESS && (KEY[10]==PRESS_N)) - begin - BOOTROM_EN <= 1'b0; - BOOTROM_BANK <= 0; - AUTOSTARTROM_EN <= 1'b0; - AUTOSTARTROM_BANK <= 0; - RESET_KEY_COUNT <= 17'h0; - end - end - 8'h78: KEY_Fxx[10] <= PRESS; // F11 - 8'h09: KEY_Fxx[ 9] <= PRESS; // F10 CASS STOP - 8'h01: KEY_Fxx[ 8] <= PRESS; // F9 CASS PLAY - 8'h0A: - begin - KEY_Fxx[ 7] <= PRESS; // F8 Ctrl or L-Shift BOOT 8 - if(PRESS && (KEY[18]==PRESS_N)) - begin - BOOTROM_EN <= 1'b1; - BOOTROM_BANK <= 39; - RESET_KEY_COUNT <= 17'h0; - end - else - if(PRESS && (KEY[10]==PRESS_N)) - begin - AUTOSTARTROM_EN <= 1'b1; - AUTOSTARTROM_BANK <= 23; - RESET_KEY_COUNT <= 17'h0; - end - end - 8'h83: - begin - KEY_Fxx[ 6] <= PRESS; // F7 Ctrl or L-Shift BOOT 7 - if(PRESS && (KEY[18]==PRESS_N)) - begin - BOOTROM_EN <= 1'b1; - BOOTROM_BANK <= 38; - RESET_KEY_COUNT <= 17'h0; - end - else - if(PRESS && (KEY[10]==PRESS_N)) - begin - AUTOSTARTROM_EN <= 1'b1; - AUTOSTARTROM_BANK <= 22; - RESET_KEY_COUNT <= 17'h0; - end - end - 8'h0B: - begin - KEY_Fxx[ 5] <= PRESS; // F6 Ctrl or L-Shift BOOT 6 - if(PRESS && (KEY[18]==PRESS_N)) - begin - BOOTROM_EN <= 1'b1; - BOOTROM_BANK <= 37; - RESET_KEY_COUNT <= 17'h0; - end - else - if(PRESS && (KEY[10]==PRESS_N)) - begin - AUTOSTARTROM_EN <= 1'b1; - AUTOSTARTROM_BANK <= 21; - RESET_KEY_COUNT <= 17'h0; - end - end - 8'h03: - begin - KEY_Fxx[ 4] <= PRESS; // F5 Ctrl or L-Shift BOOT 5 - if(PRESS && (KEY[18]==PRESS_N)) - begin - BOOTROM_EN <= 1'b1; - BOOTROM_BANK <= 36; - RESET_KEY_COUNT <= 17'h0; - end - else - if(PRESS && (KEY[10]==PRESS_N)) - begin - AUTOSTARTROM_EN <= 1'b1; - AUTOSTARTROM_BANK <= 20; - RESET_KEY_COUNT <= 17'h0; - end - end - 8'h0C: - begin - KEY_Fxx[ 3] <= PRESS; // F4 Ctrl or L-Shift BOOT 4 - if(PRESS && (KEY[18]==PRESS_N)) - begin - BOOTROM_EN <= 1'b1; - BOOTROM_BANK <= 35; - RESET_KEY_COUNT <= 17'h0; - end - else - if(PRESS && (KEY[10]==PRESS_N)) - begin - AUTOSTARTROM_EN <= 1'b1; - AUTOSTARTROM_BANK <= 19; - RESET_KEY_COUNT <= 17'h0; - end - end - 8'h04: - begin - KEY_Fxx[ 2] <= PRESS; // F3 Ctrl or L-Shift BOOT 3 - if(PRESS && (KEY[18]==PRESS_N)) - begin - BOOTROM_EN <= 1'b1; - BOOTROM_BANK <= 34; - RESET_KEY_COUNT <= 17'h0; - end - else - if(PRESS && (KEY[10]==PRESS_N)) - begin - AUTOSTARTROM_EN <= 1'b1; - AUTOSTARTROM_BANK <= 18; - RESET_KEY_COUNT <= 17'h0; - end - end - 8'h06: - begin - KEY_Fxx[ 1] <= PRESS; // F2 Ctrl or L-Shift BOOT 2 - if(PRESS && (KEY[18]==PRESS_N)) - begin - BOOTROM_EN <= 1'b1; - BOOTROM_BANK <= 33; - RESET_KEY_COUNT <= 17'h0; - end - else - if(PRESS && (KEY[10]==PRESS_N)) - begin - AUTOSTARTROM_EN <= 1'b1; - AUTOSTARTROM_BANK <= 17; - RESET_KEY_COUNT <= 17'h0; - end - end - 8'h05: - begin - KEY_Fxx[ 0] <= PRESS; // F1 Ctrl or L-Shift BOOT 1 - if(PRESS && (KEY[18]==PRESS_N)) - begin - BOOTROM_EN <= 1'b1; - BOOTROM_BANK <= 32; - RESET_KEY_COUNT <= 17'h0; - end - else - if(PRESS && (KEY[10]==PRESS_N)) - begin - AUTOSTARTROM_EN <= 1'b1; - AUTOSTARTROM_BANK <= 16; - RESET_KEY_COUNT <= 17'h0; - end - end - - 8'h16: KEY[28] <= PRESS_N; // 1 ! - 8'h1E: KEY[25] <= PRESS_N; // 2 @ - 8'h26: KEY[27] <= PRESS_N; // 3 # - 8'h25: KEY[29] <= PRESS_N; // 4 $ - 8'h2E: KEY[24] <= PRESS_N; // 5 % - 8'h36: KEY[40] <= PRESS_N; // 6 ^ - 8'h3D: KEY[45] <= PRESS_N; // 7 & -// 8'h0D: KEY[?] <= PRESS_N; // TAB - 8'h3E: KEY[43] <= PRESS_N; // 8 * - 8'h46: KEY[41] <= PRESS_N; // 9 ( - 8'h45: KEY[44] <= PRESS_N; // 0 ) - 8'h4E: KEY[42] <= PRESS_N; // - _ -// 8'h55: KEY[?] <= PRESS_N; // = + - 8'h66: KEY_EX[8] <= PRESS_N; // backspace -// 8'h0E: KEY[?] <= PRESS_N; // ` ~ -// 8'h5D: KEY[?] <= PRESS_N; // \ | - 8'h49: KEY[33] <= PRESS_N; // . > - 8'h4b: KEY[57] <= PRESS_N; // L - 8'h44: KEY[49] <= PRESS_N; // O -// 8'h11 KEY[?] <= PRESS_N; // line feed (really right ALT (Extended) see below - 8'h5A: KEY[50] <= PRESS_N; // CR -// 8'h54: KEY[?] <= PRESS_N; // [ { -// 8'h5B: KEY[?] <= PRESS_N; // ] } - 8'h52: KEY[58] <= PRESS_N; // ' " - 8'h1D: KEY[ 1] <= PRESS_N; // W - 8'h24: KEY[ 3] <= PRESS_N; // E - 8'h2D: KEY[ 5] <= PRESS_N; // R - 8'h2C: KEY[ 0] <= PRESS_N; // T - 8'h35: KEY[48] <= PRESS_N; // Y - 8'h3C: KEY[53] <= PRESS_N; // U - 8'h43: KEY[51] <= PRESS_N; // I - 8'h1B: KEY[ 9] <= PRESS_N; // S - 8'h23: KEY[11] <= PRESS_N; // D - 8'h2B: KEY[13] <= PRESS_N; // F - 8'h34: KEY[ 8] <= PRESS_N; // G - 8'h33: KEY[56] <= PRESS_N; // H - 8'h3B: KEY[61] <= PRESS_N; // J - 8'h42: KEY[59] <= PRESS_N; // K - 8'h22: KEY[17] <= PRESS_N; // X - 8'h21: KEY[19] <= PRESS_N; // C - 8'h2a: KEY[21] <= PRESS_N; // V - 8'h32: KEY[16] <= PRESS_N; // B - 8'h31: KEY[32] <= PRESS_N; // N - 8'h3a: KEY[37] <= PRESS_N; // M - 8'h41: KEY[35] <= PRESS_N; // , < - 8'h15: KEY[ 4] <= PRESS_N; // Q - 8'h1C: KEY[12] <= PRESS_N; // A - 8'h1A: KEY[20] <= PRESS_N; // Z - 8'h29: KEY[36] <= PRESS_N; // Space -// 8'h4A: KEY[?] <= PRESS_N; // / ? - 8'h4C: KEY[60] <= PRESS_N; // ; : - 8'h4D: KEY[52] <= PRESS_N; // P - 8'h14: KEY[10] <= PRESS_N; // Ctrl either left or right - 8'h12: KEY[18] <= PRESS_N; // L-Shift - 8'h59: KEY_EX[0] <= PRESS_N; // R-Shift - 8'h11: - begin - if(~EXTENDED) - KEY_EX[1] <= PRESS_N; // Repeat really left ALT - else - KEY_EX[2] <= PRESS_N; // LF really right ALT - end - 8'h76: KEY_EX[3] <= PRESS_N; // Esc - 8'h75: KEY_EX[4] <= PRESS_N; // up - 8'h6B: KEY_EX[5] <= PRESS_N; // left - 8'h74: KEY_EX[6] <= PRESS_N; // right - 8'h72: KEY_EX[7] <= PRESS_N; // down - endcase - end -end - - - - -always @ (posedge CLK50MHZ) // 50MHz - KB_CLK <= KB_CLK + 1'b1; // 50/32 = 1.5625 MHz - -assign PRESS_N = ~key_pressed; - - -`ifdef CASS_EMU - -wire CASS_BUF_RD; -wire [15:0] CASS_BUF_A; -wire CASS_BUF_WR; -wire [7:0] CASS_BUF_DAT; -wire [7:0] CASS_BUF_Q; - -// F9 CASS PLAY -// F10 CASS STOP - -EMU_CASS_KEY EMU_CASS_KEY( - KEY_Fxx[8], - KEY_Fxx[9], - // cass emu - CASS_BUF_RD, - // - CASS_BUF_A, - CASS_BUF_WR, - CASS_BUF_DAT, - CASS_BUF_Q, - // Control Signals - EMU_CASS_EN, - EMU_CASS_DAT, - - // key emu - EMU_KEY, - EMU_KEY_EX, - EMU_KEY_EN, - /* - * UART: 115200 bps, 8N1 - */ - UART_RXD, - UART_TXD, - - // System - TURBO_SPEED, - // Clock: 10MHz - CLK10MHZ, - RESET_N -); - - -`ifdef CASS_EMU_16K - -cass_ram_16k_altera cass_buf( - .address(CASS_BUF_A[13:0]), - .clock(CLK10MHZ), - .data(CASS_BUF_DI), - .wren(CASS_BUF_WR), - .q(CASS_BUF_Q) -); - -`endif - - -`ifdef CASS_EMU_8K - -cass_ram_8k_altera cass_buf( - .address(CASS_BUF_A[12:0]), - .clock(CLK10MHZ), - .data(CASS_BUF_DI), - .wren(CASS_BUF_WR), - .q(CASS_BUF_Q) -); - -`endif - - -`ifdef CASS_EMU_4K - -cass_ram_4k_altera cass_buf( - .address(CASS_BUF_A[11:0]), - .clock(CLK10MHZ), - .data(CASS_BUF_DAT), - .wren(CASS_BUF_WR), - .q(CASS_BUF_Q) -); - -`endif - - -`ifdef CASS_EMU_2K - -cass_ram_2k_altera cass_buf( - .address(CASS_BUF_A[10:0]), - .clock(CLK10MHZ), - .data(CASS_BUF_DAT), - .wren(CASS_BUF_WR), - .q(CASS_BUF_Q) -); - -`endif - -`endif - -sn76489_top #( - .clock_div_16_g(1)) -sn76489( - .clock_i(CLK25MHZ), - .clock_en_i(CPU_CLK), - .res_n_i(RESET), - .ce_n_i(),//todo - .we_n_i(),//todo - .ready_o(), - .d_i(CPU_DO), - .aout_o(audio_s) - ); - -assign CASS_OUT = EMU_CASS_EN ? EMU_CASS_DAT : {LATCHED_IO_DATA_WR[2], 1'b0}; - -(*keep*)wire trap = (CPU_RD|CPU_WR) && (CPU_A[15:12] == 4'h0); - -assign AUD_ADCDAT = {LATCHED_IO_DATA_WR[0],LATCHED_IO_DATA_WR[5]}; - - -// floppy -wire ADDRESS_IO_FDC; -wire ADDRESS_IO_FDC_CT; -wire ADDRESS_IO_FDC_DATA; -wire ADDRESS_IO_FDC_POLL; -wire ADDRESS_IO_FDC_WP; -reg [7:0] LATCHED_IO_FDC; -reg [7:0] LATCHED_IO_FDC_CT; -reg [7:0] LATCHED_RAM_DATA_FDC; - -// floppy -(*keep*)wire FDC_RAM_R; -(*keep*)wire FDC_RAM_W; -(*keep*)wire [17:0] FDC_RAM_ADDR_R; -(*keep*)wire [17:0] FDC_RAM_ADDR_W; -reg [7:0] LAST_WRITE_DATA; -(*keep*)wire [7:0] FDC_RAM_DATA_W; - -(*keep*)wire [7:0] FLOPPY_RD_DATA; -(*keep*)wire [7:0] FLOPPY_DATA; - -// FDC -// if({CPU_IORQ,CPU_RD,CPU_WR,ADDRESS_IO_FDC_CT}==4'b1011) -// LATCHED_IO_FDC_CT <= CPU_DO; - -// if({CPU_IORQ,CPU_RD,CPU_WR}==3'b110) -// LATCHED_IO_FDC <= ADDRESS_IO_FDC_POLL ? {FDC_POLL, 7'h7F} : -// ADDRESS_IO_FDC_DATA ? FDC_DATA : -// ADDRESS_IO_FDC_WP ? {FDC_WP, 7'h7F} : -// 8'hFF; -wire FLOPPY_WP_READ = 1'b0; -wire RAM_ADDRESS_FD_R = FDC_RAM_ADDR_R; -wire RAM_ADDRESS_FD_W = FDC_RAM_ADDR_W; - -assign ADDRESS_IO_FDC = (CPU_A[7:2] == 6'b000100)?1'b1:1'b0; - -assign ADDRESS_IO_FDC_CT = (CPU_A[7:0] == 8'h10)?1'b1:1'b0; -assign ADDRESS_IO_FDC_DATA = (CPU_A[7:0] == 8'h11)?1'b1:1'b0; -assign ADDRESS_IO_FDC_POLL = (CPU_A[7:0] == 8'h12)?1'b1:1'b0; -assign ADDRESS_IO_FDC_WP = (CPU_A[7:0] == 8'h13)?1'b1:1'b0; - - -wire [7:0] FDC_DATA; -wire FDC_POLL; -wire FDC_WP; - -wire [7:0] SECTOR_BYTE; -wire [7:0] TRACK1_NO; -wire [7:0] TRACK2_NO; -wire DRIVE1; -wire DRIVE2; -wire MOTOR; - -wire FDC_IO_R; -wire FDC_IO_W; - -wire FDC_SIG; -wire FDC_SIG_CLK; - -wire FDC_IO = (CPU_IORQ&ADDRESS_IO_FDC); -wire FDC_IO_POLL = (CPU_IORQ&ADDRESS_IO_FDC_POLL); -wire FDC_IO_DATA = (CPU_IORQ&ADDRESS_IO_FDC_DATA); -wire FDC_IO_CT = (CPU_IORQ&ADDRESS_IO_FDC_CT); - -FDC_IF FDC_U ( - .FDC_CLK(CPU_CLK), - .RESET_N(RESET_N), - .SW(SWITCH[3:2]), - .DBG(SWITCH[9:6]), - - .FDC_RAM_R(FDC_RAM_R), - .FDC_RAM_W(FDC_RAM_W), - .FDC_RAM_ADDR_R(FDC_RAM_ADDR_R), - .FDC_RAM_ADDR_W(FDC_RAM_ADDR_W), - .FDC_RAM_DATA_R(LATCHED_RAM_DATA_FDC), - .FDC_RAM_DATA_W(FDC_RAM_DATA_W), - - .FDC_IO(FDC_IO), - .FDC_IO_POLL(FDC_IO_POLL), - .FDC_IO_DATA(FDC_IO_DATA), - .FDC_IO_CT(FDC_IO_CT), - - .FDC_SIG(FDC_SIG), - .FDC_SIG_CLK(FDC_SIG_CLK), - - .FDC_CT(LATCHED_IO_FDC_CT), - .FDC_DATA(FDC_DATA), - .FDC_POLL(FDC_POLL), - .FDC_WP(FDC_WP), - - .FLOPPY_SECTOR_BYTE(SECTOR_BYTE), - .TRACK1_NO(TRACK1_NO), - .TRACK2_NO(TRACK2_NO), - .DRIVE1(DRIVE1), - .DRIVE2(DRIVE2), - .MOTOR(MOTOR) -); - - -endmodule diff --git a/Computer_MiST/Laser310_MiST/rtl/Laser310_MiST.sv b/Computer_MiST/Laser310_MiST/rtl/Laser310_MiST.sv deleted file mode 100644 index 9b9eeb12..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/Laser310_MiST.sv +++ /dev/null @@ -1,133 +0,0 @@ - -module Laser310_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 -); - -`include "rtl\build_id.v" - -localparam CONF_STR = { - "Laser310;;", - "O1,Turbo,Off,On;", - "O2,Dos Rom,Off,On;", - "O34,Scanlines,Off,25%,50%,75%;", - "O5,SHRG,Off,On;", - "T6,Reset;", - "V,v1.00.",`BUILD_DATE -}; - -assign LED = 1; -assign AUDIO_R = AUDIO_L; - -wire clk_50, clk_25, clk_10, clk_6p25; -wire pll_locked; -pll pll( - .inclk0(CLOCK_27), - .areset(0), - .c0(clk_50), - .c1(clk_25), - .c2(clk_10), - .c3(clk_6p25) - ); - -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 key_pressed; -wire [7:0] key_code; -wire key_strobe; -reg [1:0] audio; -wire [7:0] audio_s; -wire ce_pix; -wire hs, vs; -wire [7:0] r,g,b; - -LASER310_TOP LASER310_TOP( - .CLK50MHZ(clk_50), - .CLK25MHZ(clk_25), - .CLK10MHZ(clk_10), - .RESET(~(status[0] | status[6] | buttons[1])), - .VGA_RED(r), - .VGA_GREEN(g), - .VGA_BLUE(b), - .VGA_HS(hs), - .VGA_VS(vs), - .AUD_ADCDAT(audio), -// .VIDEO_MODE(1'b0), - .audio_s(audio_s), - .key_strobe (key_strobe ), - .key_pressed (key_pressed ), - .key_code (key_code ), - .SWITCH({"00000",~status[5],~status[2],~status[1]}), - .UART_RXD(), - .UART_TXD() - ); - -mist_video #(.COLOR_DEPTH(6)) mist_video( - .clk_sys(clk_25), - .SPI_SCK(SPI_SCK), - .SPI_SS3(SPI_SS3), - .SPI_DI(SPI_DI), - .R(r[5:0]), - .G(g[5:0]), - .B(b[5: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), - .scandoubler_disable(1'b1),//scandoublerD), - .scanlines(status[4:3]), - .ypbpr(ypbpr) - ); - -user_io #( - .STRLEN(($size(CONF_STR)>>3))) -user_io( - .clk_sys (clk_25 ), - .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 ), - .status (status ) - ); - -dac #( - .C_bits(15)) -dac( - .clk_i(clk_25), - .res_n_i(1), -// .dac_i({~audio_s[7],audio_s[6:0],{4{audio}}}), - .dac_i({8{audio}}), - .dac_o(AUDIO_L) - ); - -endmodule \ No newline at end of file diff --git a/Computer_MiST/Laser310_MiST/rtl/LaserCassEmu.sv b/Computer_MiST/Laser310_MiST/rtl/LaserCassEmu.sv deleted file mode 100644 index 73c05ec9..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/LaserCassEmu.sv +++ /dev/null @@ -1,122 +0,0 @@ -module LaserCassEmu( -input wire [15:0] CPU_A, -input wire CPU_RD, -input wire CPU_WR -); -// cassette - -(*keep*)wire [1:0] CASS_OUT; -(*keep*)wire CASS_IN; -(*keep*)wire CASS_IN_L; -(*keep*)wire CASS_IN_R; - -reg [7:0] LATCHED_IO_DATA_WR; -// 用于外部磁带仿真计数 -//(*keep*)reg EMU_CASS_CLK; - -(*keep*)wire EMU_CASS_EN; -(*keep*)wire [1:0] EMU_CASS_DAT; - -`ifdef CASS_EMU - -wire CASS_BUF_RD; -wire [15:0] CASS_BUF_A; -wire CASS_BUF_WR; -wire [7:0] CASS_BUF_DAT; -wire [7:0] CASS_BUF_Q; - -// F9 CASS PLAY -// F10 CASS STOP - -EMU_CASS_KEY EMU_CASS_KEY( - KEY_Fxx[8], - KEY_Fxx[9], - // cass emu - CASS_BUF_RD, - // - CASS_BUF_A, - CASS_BUF_WR, - CASS_BUF_DAT, - CASS_BUF_Q, - // Control Signals - EMU_CASS_EN, - EMU_CASS_DAT, - - // key emu - EMU_KEY, - EMU_KEY_EX, - EMU_KEY_EN, - /* - * UART: 115200 bps, 8N1 - */ - UART_RXD, - UART_TXD, - - // System - TURBO_SPEED, - // Clock: 10MHz - CLK10MHZ, - RESET_N -); - - -`ifdef CASS_EMU_16K - -cass_ram_16k_altera cass_buf( - .address(CASS_BUF_A[13:0]), - .clock(CLK10MHZ), - .data(CASS_BUF_DI), - .wren(CASS_BUF_WR), - .q(CASS_BUF_Q) -); - -`endif - - -`ifdef CASS_EMU_8K - -cass_ram_8k_altera cass_buf( - .address(CASS_BUF_A[12:0]), - .clock(CLK10MHZ), - .data(CASS_BUF_DI), - .wren(CASS_BUF_WR), - .q(CASS_BUF_Q) -); - -`endif - - -`ifdef CASS_EMU_4K - -cass_ram_4k_altera cass_buf( - .address(CASS_BUF_A[11:0]), - .clock(CLK10MHZ), - .data(CASS_BUF_DAT), - .wren(CASS_BUF_WR), - .q(CASS_BUF_Q) -); - -`endif - - -`ifdef CASS_EMU_2K - -cass_ram_2k_altera cass_buf( - .address(CASS_BUF_A[10:0]), - .clock(CLK10MHZ), - .data(CASS_BUF_DAT), - .wren(CASS_BUF_WR), - .q(CASS_BUF_Q) -); - -`endif - -`endif - - - -assign CASS_OUT = EMU_CASS_EN ? EMU_CASS_DAT : {LATCHED_IO_DATA_WR[2], 1'b0}; - -(*keep*)wire trap = (CPU_RD|CPU_WR) && (CPU_A[15:12] == 4'h0); - -endmodule \ No newline at end of file diff --git a/Computer_MiST/Laser310_MiST/rtl/LaserKeyboard.sv b/Computer_MiST/Laser310_MiST/rtl/LaserKeyboard.sv deleted file mode 100644 index f7698728..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/LaserKeyboard.sv +++ /dev/null @@ -1,414 +0,0 @@ -module LaserKeyboard( -input wire CLK50MHZ, -input wire [15:0] CPU_A, -input wire RESET, -input wire CASS_IN, -input wire PS2_KBCLK, -input wire PS2_KBDAT -); - - -// keyboard -reg [4:0] KB_CLK; -reg [16:0] RESET_KEY_COUNT; -wire [7:0] SCAN; -wire PRESS; -wire PRESS_N; -wire EXTENDED; -reg BOOTROM_EN; -reg [7:0] BOOTROM_BANK; -reg AUTOSTARTROM_EN; -reg [7:0] AUTOSTARTROM_BANK; -reg [63:0] KEY; -reg [9:0] KEY_EX; -reg [11:0] KEY_Fxx; -wire [7:0] KEY_DATA; -//reg [63:0] LAST_KEY; -//reg CAPS_CLK; -//reg CAPS; -wire A_KEY_PRESSED; - -reg [7:0] LATCHED_KEY_DATA; - -// emu keyboard -wire [63:0] EMU_KEY; -wire [9:0] EMU_KEY_EX; -wire EMU_KEY_EN; -// keyboard - -/***************************************************************************** -* Convert PS/2 keyboard to ASCII keyboard -******************************************************************************/ - -/* - KD5 KD4 KD3 KD2 KD1 KD0 扫描用地址 -A0 R Q E W T 68FEH 0 -A1 F A D CTRL S G 68FDH 8 -A2 V Z C SHFT X B 68FBH 16 -A3 4 1 3 2 5 68F7H 24 -A4 M 空格 , . N 68EFH 32 -A5 7 0 8 - 9 6 68DFH 40 -A6 U P I RETN O Y 68BFH 48 -A7 J ; K : L H 687FH 56 -*/ - -// 7: 0 -// 15: 8 -// 23:16 -// 31:24 -// 39:32 -// 47:40 -// 55:48 -// 63:56 - - - -// 键盘检测的方法,就是循环地问每一行线发送低电平信号,也就是用该地址线为“0”的地址去读取数据。 -// 例如,检测第一行时,使A0为0,其余为1;加上选通IC4的高五位地址01101,成为01101***11111110B(A8~A10不起作用, -// 可为任意值,故68FEH,69FEH,6AFEH,6BFEH,6CFEH,6DFEH,6EFEH,6FFEH均可)。 -// 读 6800H 判断是否有按键按下。 - -// The method of keyboard detection is to cyclically ask each line to send a low level signal, -// that is, to read the data with the address line "0". -// For example, when detecting the first line, make A0 0 and the rest 1; plus the high five-bit address 01101 of the strobe IC4, -// become 01101***11111110B (A8~A10 does not work, -// It can be any value, so 68FEH, 69FEH, 6AFEH, 6BFEH, 6CFEH, 6DFEH, 6EFEH, 6FFEH can be). -// Read 6800H to determine if there is a button press. - -// 键盘选通,整个竖列有一个选通的位置被按下,对应值为0。 -// The keyboard is strobed, and a strobe position is pressed in the entire vertical column, and the corresponding value is 0. - -// 键盘扩展 -// 加入方向键盘 -// Keyboard extension - -// left: ctrl M 37 KEY_EX[5] -// right: ctrl , 35 KEY_EX[6] -// up: ctrl . 33 KEY_EX[4] -// down: ctrl space 36 KEY_EX[7] -// esc: ctrl - 42 KEY_EX[3] -// backspace: ctrl M 37 KEY_EX[8] - -// R-Shift - - -wire [63:0] KEY_C = EMU_KEY_EN?EMU_KEY:KEY; -wire [9:0] KEY_EX_C = EMU_KEY_EN?EMU_KEY_EX:KEY_EX; - -//wire KEY_CTRL_ULRD = (KEY_EX[7:4]==4'b1111); -wire KEY_CTRL_ULRD_BRK = (KEY_EX[8:3]==6'b111111); - -wire KEY_DATA_BIT5 = (CPU_A[7:0]|{KEY_C[61], KEY_C[53], KEY_C[45], KEY_C[37]&KEY_EX_C[5]&KEY_EX_C[8], KEY_C[29], KEY_C[21], KEY_C[13], KEY_C[ 5]})==8'hff; -wire KEY_DATA_BIT4 = (CPU_A[7:0]|{KEY_C[60], KEY_C[52], KEY_C[44], KEY_C[36]&KEY_EX_C[7], KEY_C[28], KEY_C[20], KEY_C[12], KEY_C[ 4]})==8'hff; -wire KEY_DATA_BIT3 = (CPU_A[7:0]|{KEY_C[59], KEY_C[51], KEY_C[43], KEY_C[35]&KEY_EX_C[6], KEY_C[27], KEY_C[19], KEY_C[11], KEY_C[ 3]})==8'hff; -wire KEY_DATA_BIT2 = (CPU_A[7:0]|{KEY_C[58], KEY_C[50], KEY_C[42]&KEY_EX_C[3], KEY_C[34], KEY_C[26], KEY_C[18]&KEY_EX_C[0], KEY_C[10]&KEY_CTRL_ULRD_BRK, KEY_C[ 2]})==8'hff; -wire KEY_DATA_BIT1 = (CPU_A[7:0]|{KEY_C[57], KEY_C[49], KEY_C[41], KEY_C[33]&KEY_EX_C[4], KEY_C[25], KEY_C[17], KEY_C[ 9], KEY_C[ 1]})==8'hff; -wire KEY_DATA_BIT0 = (CPU_A[7:0]|{KEY_C[56], KEY_C[48], KEY_C[40], KEY_C[32], KEY_C[24], KEY_C[16], KEY_C[ 8], KEY_C[ 0]})==8'hff; - -/* -wire KEY_DATA_BIT5 = (CPU_A[7:0]|{KEY[61], KEY[53], KEY[45], KEY[37], KEY[29], KEY[21], KEY[13], KEY[ 5]})==8'hff; -wire KEY_DATA_BIT4 = (CPU_A[7:0]|{KEY[60], KEY[52], KEY[44], KEY[36], KEY[28], KEY[20], KEY[12], KEY[ 4]})==8'hff; -wire KEY_DATA_BIT3 = (CPU_A[7:0]|{KEY[59], KEY[51], KEY[43], KEY[35], KEY[27], KEY[19], KEY[11], KEY[ 3]})==8'hff; -wire KEY_DATA_BIT2 = (CPU_A[7:0]|{KEY[58], KEY[50], KEY[42], KEY[34], KEY[26], KEY[18], KEY[10], KEY[ 2]})==8'hff; -wire KEY_DATA_BIT1 = (CPU_A[7:0]|{KEY[57], KEY[49], KEY[41], KEY[33], KEY[25], KEY[17], KEY[ 9], KEY[ 1]})==8'hff; -wire KEY_DATA_BIT0 = (CPU_A[7:0]|{KEY[56], KEY[48], KEY[40], KEY[32], KEY[24], KEY[16], KEY[ 8], KEY[ 0]})==8'hff; -*/ - -wire KEY_DATA_BIT7 = 1'b1; // 没有空置,具体用途没有理解 -//wire KEY_DATA_BIT6 = CASS_IN; -wire KEY_DATA_BIT6 = ~CASS_IN; - -assign KEY_DATA = { KEY_DATA_BIT7, KEY_DATA_BIT6, KEY_DATA_BIT5, KEY_DATA_BIT4, KEY_DATA_BIT3, KEY_DATA_BIT2, KEY_DATA_BIT1, KEY_DATA_BIT0 }; - -/* -assign KEY_DATA = (CPU_A[0]==1'b0) ? KEY[ 7: 0] : - (CPU_A[1]==1'b0) ? KEY[15: 8] : - (CPU_A[2]==1'b0) ? KEY[23:16] : - (CPU_A[3]==1'b0) ? KEY[31:24] : - (CPU_A[4]==1'b0) ? KEY[39:32] : - (CPU_A[5]==1'b0) ? KEY[47:40] : - (CPU_A[6]==1'b0) ? KEY[55:48] : - (CPU_A[7]==1'b0) ? KEY[63:56] : - 8'hff; - -assign KEY_DATA = - (CPU_A[7]==1'b0) ? KEY[63:56] : - (CPU_A[6]==1'b0) ? KEY[55:48] : - (CPU_A[5]==1'b0) ? KEY[47:40] : - (CPU_A[4]==1'b0) ? KEY[39:32] : - (CPU_A[3]==1'b0) ? KEY[31:24] : - (CPU_A[2]==1'b0) ? KEY[23:16] : - (CPU_A[1]==1'b0) ? KEY[15: 8] : - (CPU_A[0]==1'b0) ? KEY[ 7: 0] : - 8'hff; -*/ - - -assign A_KEY_PRESSED = (KEY[63:0] == 64'hFFFFFFFFFFFFFFFF) ? 1'b0:1'b1; - -always @(posedge KB_CLK[3] or negedge RESET) -begin - if(~RESET) - begin - KEY <= 64'hFFFFFFFFFFFFFFFF; - KEY_EX <= 10'h3FF; - KEY_Fxx <= 12'h000; -// CAPS_CLK <= 1'b0; - RESET_KEY_COUNT <= 17'h1FFFF; - - BOOTROM_BANK <= 0; - BOOTROM_EN <= 1'b0; - - AUTOSTARTROM_BANK <= 0; - AUTOSTARTROM_EN <= 1'b0; - end - else - begin - //KEY[?] <= CAPS; - if(RESET_KEY_COUNT[16]==1'b0) - RESET_KEY_COUNT <= RESET_KEY_COUNT+1; - - case(SCAN) - /*8'h07: - begin - KEY_Fxx[11] <= PRESS; // F12 RESET - if(PRESS && (KEY[10]==PRESS_N)) - begin - BOOTROM_EN <= 1'b0; - BOOTROM_BANK <= 0; - AUTOSTARTROM_EN <= 1'b0; - AUTOSTARTROM_BANK <= 0; - RESET_KEY_COUNT <= 17'h0; - end - end - 8'h78: KEY_Fxx[10] <= PRESS; // F11 - 8'h09: KEY_Fxx[ 9] <= PRESS; // F10 CASS STOP - 8'h01: KEY_Fxx[ 8] <= PRESS; // F9 CASS PLAY - 8'h0A: - begin - KEY_Fxx[ 7] <= PRESS; // F8 Ctrl or L-Shift BOOT 8 - if(PRESS && (KEY[18]==PRESS_N)) - begin - BOOTROM_EN <= 1'b1; - BOOTROM_BANK <= 39; - RESET_KEY_COUNT <= 17'h0; - end - else - if(PRESS && (KEY[10]==PRESS_N)) - begin - AUTOSTARTROM_EN <= 1'b1; - AUTOSTARTROM_BANK <= 23; - RESET_KEY_COUNT <= 17'h0; - end - end - 8'h83: - begin - KEY_Fxx[ 6] <= PRESS; // F7 Ctrl or L-Shift BOOT 7 - if(PRESS && (KEY[18]==PRESS_N)) - begin - BOOTROM_EN <= 1'b1; - BOOTROM_BANK <= 38; - RESET_KEY_COUNT <= 17'h0; - end - else - if(PRESS && (KEY[10]==PRESS_N)) - begin - AUTOSTARTROM_EN <= 1'b1; - AUTOSTARTROM_BANK <= 22; - RESET_KEY_COUNT <= 17'h0; - end - end - 8'h0B: - begin - KEY_Fxx[ 5] <= PRESS; // F6 Ctrl or L-Shift BOOT 6 - if(PRESS && (KEY[18]==PRESS_N)) - begin - BOOTROM_EN <= 1'b1; - BOOTROM_BANK <= 37; - RESET_KEY_COUNT <= 17'h0; - end - else - if(PRESS && (KEY[10]==PRESS_N)) - begin - AUTOSTARTROM_EN <= 1'b1; - AUTOSTARTROM_BANK <= 21; - RESET_KEY_COUNT <= 17'h0; - end - end - 8'h03: - begin - KEY_Fxx[ 4] <= PRESS; // F5 Ctrl or L-Shift BOOT 5 - if(PRESS && (KEY[18]==PRESS_N)) - begin - BOOTROM_EN <= 1'b1; - BOOTROM_BANK <= 36; - RESET_KEY_COUNT <= 17'h0; - end - else - if(PRESS && (KEY[10]==PRESS_N)) - begin - AUTOSTARTROM_EN <= 1'b1; - AUTOSTARTROM_BANK <= 20; - RESET_KEY_COUNT <= 17'h0; - end - end - 8'h0C: - begin - KEY_Fxx[ 3] <= PRESS; // F4 Ctrl or L-Shift BOOT 4 - if(PRESS && (KEY[18]==PRESS_N)) - begin - BOOTROM_EN <= 1'b1; - BOOTROM_BANK <= 35; - RESET_KEY_COUNT <= 17'h0; - end - else - if(PRESS && (KEY[10]==PRESS_N)) - begin - AUTOSTARTROM_EN <= 1'b1; - AUTOSTARTROM_BANK <= 19; - RESET_KEY_COUNT <= 17'h0; - end - end - 8'h04: - begin - KEY_Fxx[ 2] <= PRESS; // F3 Ctrl or L-Shift BOOT 3 - if(PRESS && (KEY[18]==PRESS_N)) - begin - BOOTROM_EN <= 1'b1; - BOOTROM_BANK <= 34; - RESET_KEY_COUNT <= 17'h0; - end - else - if(PRESS && (KEY[10]==PRESS_N)) - begin - AUTOSTARTROM_EN <= 1'b1; - AUTOSTARTROM_BANK <= 18; - RESET_KEY_COUNT <= 17'h0; - end - end - 8'h06: - begin - KEY_Fxx[ 1] <= PRESS; // F2 Ctrl or L-Shift BOOT 2 - if(PRESS && (KEY[18]==PRESS_N)) - begin - BOOTROM_EN <= 1'b1; - BOOTROM_BANK <= 33; - RESET_KEY_COUNT <= 17'h0; - end - else - if(PRESS && (KEY[10]==PRESS_N)) - begin - AUTOSTARTROM_EN <= 1'b1; - AUTOSTARTROM_BANK <= 17; - RESET_KEY_COUNT <= 17'h0; - end - end - 8'h05: - begin - KEY_Fxx[ 0] <= PRESS; // F1 Ctrl or L-Shift BOOT 1 - if(PRESS && (KEY[18]==PRESS_N)) - begin - BOOTROM_EN <= 1'b1; - BOOTROM_BANK <= 32; - RESET_KEY_COUNT <= 17'h0; - end - else - if(PRESS && (KEY[10]==PRESS_N)) - begin - AUTOSTARTROM_EN <= 1'b1; - AUTOSTARTROM_BANK <= 16; - RESET_KEY_COUNT <= 17'h0; - end - end*/ - - 8'h16: KEY[28] <= PRESS_N; // 1 ! - 8'h1E: KEY[25] <= PRESS_N; // 2 @ - 8'h26: KEY[27] <= PRESS_N; // 3 # - 8'h25: KEY[29] <= PRESS_N; // 4 $ - 8'h2E: KEY[24] <= PRESS_N; // 5 % - 8'h36: KEY[40] <= PRESS_N; // 6 ^ - 8'h3D: KEY[45] <= PRESS_N; // 7 & -// 8'h0D: KEY[?] <= PRESS_N; // TAB - 8'h3E: KEY[43] <= PRESS_N; // 8 * - 8'h46: KEY[41] <= PRESS_N; // 9 ( - 8'h45: KEY[44] <= PRESS_N; // 0 ) - 8'h4E: KEY[42] <= PRESS_N; // - _ -// 8'h55: KEY[?] <= PRESS_N; // = + - 8'h66: KEY_EX[8] <= PRESS_N; // backspace -// 8'h0E: KEY[?] <= PRESS_N; // ` ~ -// 8'h5D: KEY[?] <= PRESS_N; // \ | - 8'h49: KEY[33] <= PRESS_N; // . > - 8'h4b: KEY[57] <= PRESS_N; // L - 8'h44: KEY[49] <= PRESS_N; // O -// 8'h11 KEY[?] <= PRESS_N; // line feed (really right ALT (Extended) see below - 8'h5A: KEY[50] <= PRESS_N; // CR -// 8'h54: KEY[?] <= PRESS_N; // [ { -// 8'h5B: KEY[?] <= PRESS_N; // ] } - 8'h52: KEY[58] <= PRESS_N; // ' " - 8'h1D: KEY[ 1] <= PRESS_N; // W - 8'h24: KEY[ 3] <= PRESS_N; // E - 8'h2D: KEY[ 5] <= PRESS_N; // R - 8'h2C: KEY[ 0] <= PRESS_N; // T - 8'h35: KEY[48] <= PRESS_N; // Y - 8'h3C: KEY[53] <= PRESS_N; // U - 8'h43: KEY[51] <= PRESS_N; // I - 8'h1B: KEY[ 9] <= PRESS_N; // S - 8'h23: KEY[11] <= PRESS_N; // D - 8'h2B: KEY[13] <= PRESS_N; // F - 8'h34: KEY[ 8] <= PRESS_N; // G - 8'h33: KEY[56] <= PRESS_N; // H - 8'h3B: KEY[61] <= PRESS_N; // J - 8'h42: KEY[59] <= PRESS_N; // K - 8'h22: KEY[17] <= PRESS_N; // X - 8'h21: KEY[19] <= PRESS_N; // C - 8'h2a: KEY[21] <= PRESS_N; // V - 8'h32: KEY[16] <= PRESS_N; // B - 8'h31: KEY[32] <= PRESS_N; // N - 8'h3a: KEY[37] <= PRESS_N; // M - 8'h41: KEY[35] <= PRESS_N; // , < - 8'h15: KEY[ 4] <= PRESS_N; // Q - 8'h1C: KEY[12] <= PRESS_N; // A - 8'h1A: KEY[20] <= PRESS_N; // Z - 8'h29: KEY[36] <= PRESS_N; // Space -// 8'h4A: KEY[?] <= PRESS_N; // / ? - 8'h4C: KEY[60] <= PRESS_N; // ; : - 8'h4D: KEY[52] <= PRESS_N; // P - 8'h14: KEY[10] <= PRESS_N; // Ctrl either left or right - 8'h12: KEY[18] <= PRESS_N; // L-Shift - 8'h59: KEY_EX[0] <= PRESS_N; // R-Shift - 8'h11: - begin - if(~EXTENDED) - KEY_EX[1] <= PRESS_N; // Repeat really left ALT - else - KEY_EX[2] <= PRESS_N; // LF really right ALT - end - 8'h76: KEY_EX[3] <= PRESS_N; // Esc - 8'h75: KEY_EX[4] <= PRESS_N; // up - 8'h6B: KEY_EX[5] <= PRESS_N; // left - 8'h74: KEY_EX[6] <= PRESS_N; // right - 8'h72: KEY_EX[7] <= PRESS_N; // down - endcase - end -end - - - - -always @ (posedge CLK50MHZ) // 50MHz - KB_CLK <= KB_CLK + 1'b1; // 50/32 = 1.5625 MHz - -ps2_keyboard KEYBOARD( - .RESET_N(~RESET), - .CLK(KB_CLK[4]), - .PS2_CLK(PS2_KBCLK), - .PS2_DATA(PS2_KBDAT), - .RX_SCAN(SCAN), - .RX_PRESSED(PRESS), - .RX_EXTENDED(EXTENDED) -); - -assign PRESS_N = ~PRESS; - - -endmodule \ No newline at end of file diff --git a/Computer_MiST/Laser310_MiST/rtl/NextZ80/NextZ80ALU.v b/Computer_MiST/Laser310_MiST/rtl/NextZ80/NextZ80ALU.v deleted file mode 100644 index 610781a2..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/NextZ80/NextZ80ALU.v +++ /dev/null @@ -1,372 +0,0 @@ -////////////////////////////////////////////////////////////////////////////////// -// -// This file is part of the NextZ80 project -// http://www.opencores.org/cores/nextz80/ -// -// Filename: NextZ80ALU.v -// Description: Implementation of Z80 compatible CPU - ALU -// Version 1.0 -// Creation date: 28Jan2011 - 18Mar2011 -// -// Author: Nicolae Dumitrache -// e-mail: ndumitrache@opencores.org -// -///////////////////////////////////////////////////////////////////////////////// -// -// Copyright (C) 2011 Nicolae Dumitrache -// -// This source file may be used and distributed without -// restriction provided that this copyright statement is not -// removed from the file and that any derivative work contains -// the original copyright notice and the associated disclaimer. -// -// This source file is free software; you can redistribute it -// and/or modify it under the terms of the GNU Lesser General -// Public License as published by the Free Software Foundation; -// either version 2.1 of the License, or (at your option) any -// later version. -// -// This source 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 Lesser General Public License for more -// details. -// -// You should have received a copy of the GNU Lesser General -// Public License along with this source; if not, download it -// from http://www.opencores.org/lgpl.shtml -// -/////////////////////////////////////////////////////////////////////////////////// - -//FLAGS: S Z X1 N X2 PV N C -// OP[4:0] -// 00000 - ADD D0,D1 -// 00001 - ADC D0,D1 -// 00010 - SUB D0,D1 -// 00011 - SBC D0,D1 -// 00100 - AND D0,D1 -// 00101 - XOR D0,D1 -// 00110 - OR D0,D1 -// 00111 - CP D0,D1 -// 01000 - INC D0 -// 01001 - CPL D0 -// 01010 - DEC D0 -// 01011 - RRD -// 01100 - RLD -// 01101 - DAA -// 01110 - INC16 -// 01111 - DEC16 -// 10000 - ADD16LO -// 10001 - ADD16HI -// 10010 - -// 10011 - -// 10100 - CCF, pass D0 -// 10101 - SCF, pass D0 -// 10110 - -// 10111 - -// 11000 - RLCA D0 -// 11001 - RRCA D0 -// 11010 - RLA D0 -// 11011 - RRA D0 -// 11100 - {ROT, BIT, SET, RES} D0,EXOP -// RLC D0 C <-- D0 <-- D0[7] -// RRC D0 D0[0] --> D0 --> C -// RL D0 C <-- D0 <-- C -// RR D0 C --> D0 --> C -// SLA D0 C <-- D0 <-- 0 -// SRA D0 D0[7] --> D0 --> C -// SLL D0 C <-- D0 <-- 1 -// SRL D0 0 --> D0 --> C -// 11101 - IN, pass D1 -// 11110 - FLAGS <- D0 -// 11111 - NEG D1 -/////////////////////////////////////////////////////////////////////////////////// -`timescale 1ns / 1ps - -module ALU8( - input [7:0] D0, - input [7:0] D1, - input [7:0] FIN, - output reg[7:0] FOUT, - output reg [15:0] ALU8DOUT, - input [4:0] OP, - input [5:0] EXOP, // EXOP[5:4] = 2'b11 for CPI/D/R - input LDIFLAGS, // zero HF and NF on inc/dec16 - input DSTHI // destination lo - ); - - wire [7:0] daaadjust; - wire cdaa, hdaa; - daa daa_adjust(.flags(FIN), .val(D0), .adjust(daaadjust), .cdaa(cdaa), .hdaa(hdaa)); - - wire parity = ~^ALU8DOUT[15:8]; - wire zero = ALU8DOUT[15:8] == 0; - reg csin, cin; - wire [7:0]d0mux = OP[4:1] == 4'b1111 ? 0 : D0; - reg [7:0]_d1mux; - wire [7:0]d1mux = OP[1] ? ~_d1mux : _d1mux; - wire [8:0]sum; - wire hf; - assign {hf, sum[3:0]} = d0mux[3:0] + d1mux[3:0] + cin; - assign sum[8:4] = d0mux[7:4] + d1mux[7:4] + hf; - wire overflow = (d0mux[7] & d1mux[7] & !sum[7]) | (!d0mux[7] & !d1mux[7] & sum[7]); - reg [7:0]dbit; - - always @* begin - ALU8DOUT = 16'hxxxx; - FOUT = 8'hxx; - case({OP[4:2]}) - 0,1,4,7: _d1mux = D1; - 2: _d1mux = 1; - 3: _d1mux = daaadjust; // DAA - 6,5: _d1mux = 8'hxx; - endcase - case({OP[2:0], FIN[0]}) - 0,1,2,7,8,9,10,11,12,13: cin = 0; - 3,4,5,6,14,15: cin = 1; - endcase - case(EXOP[3:0]) - 0: dbit = 8'b11111110; - 1: dbit = 8'b11111101; - 2: dbit = 8'b11111011; - 3: dbit = 8'b11110111; - 4: dbit = 8'b11101111; - 5: dbit = 8'b11011111; - 6: dbit = 8'b10111111; - 7: dbit = 8'b01111111; - 8: dbit = 8'b00000001; - 9: dbit = 8'b00000010; - 10: dbit = 8'b00000100; - 11: dbit = 8'b00001000; - 12: dbit = 8'b00010000; - 13: dbit = 8'b00100000; - 14: dbit = 8'b01000000; - 15: dbit = 8'b10000000; - endcase - case(OP[3] ? EXOP[2:0] : OP[2:0]) - 0,5: csin = D0[7]; - 1: csin = D0[0]; - 2,3: csin = FIN[0]; - 4,7: csin = 0; - 6: csin = 1; - endcase - case(OP[4:0]) - 0,1,2,3,8,10: begin // ADD, ADC, SUB, SBC, INC, DEC - ALU8DOUT[15:8] = sum[7:0]; - ALU8DOUT[7:0] = sum[7:0]; - FOUT[0] = OP[3] ? FIN[0] : (sum[8] ^ OP[1]); // inc/dec - FOUT[1] = OP[1]; - FOUT[2] = overflow; - FOUT[3] = ALU8DOUT[11]; - FOUT[4] = hf ^ OP[1]; - FOUT[5] = ALU8DOUT[13]; - FOUT[6] = zero & (FIN[6] | ~EXOP[5] | ~DSTHI | OP[3]); //(EXOP[5] & DSTHI) ? (zero & FIN[6]) : zero; // adc16/sbc16 - FOUT[7] = ALU8DOUT[15]; - end - 16,17: begin // ADD16LO, ADD16HI - ALU8DOUT[15:8] = sum[7:0]; - ALU8DOUT[7:0] = sum[7:0]; - FOUT[0] = sum[8]; - FOUT[1] = OP[1]; - FOUT[2] = FIN[2]; - FOUT[3] = ALU8DOUT[11]; - FOUT[4] = hf ^ OP[1]; - FOUT[5] = ALU8DOUT[13]; - FOUT[6] = FIN[6]; - FOUT[7] = FIN[7]; - end - 7: begin // CP - ALU8DOUT[15:8] = sum[7:0]; - FOUT[0] = EXOP[5] ? FIN[0] : !sum[8]; // CPI/D/R - FOUT[1] = OP[1]; - FOUT[2] = overflow; - FOUT[3] = D1[3]; - FOUT[4] = !hf; - FOUT[5] = D1[5]; - FOUT[6] = zero; - FOUT[7] = ALU8DOUT[15]; - end - 31: begin // NEG - ALU8DOUT[15:8] = sum[7:0]; - FOUT[0] = !sum[8]; - FOUT[1] = OP[1]; - FOUT[2] = overflow; - FOUT[3] = ALU8DOUT[11]; - FOUT[4] = !hf; - FOUT[5] = ALU8DOUT[13]; - FOUT[6] = zero; - FOUT[7] = ALU8DOUT[15]; - end - 4: begin // AND - ALU8DOUT[15:8] = D0 & D1; - FOUT[0] = 0; - FOUT[1] = 0; - FOUT[2] = parity; - FOUT[3] = ALU8DOUT[11]; - FOUT[4] = 1; - FOUT[5] = ALU8DOUT[13]; - FOUT[6] = zero; - FOUT[7] = ALU8DOUT[15]; - end - 5,6: begin //XOR, OR - ALU8DOUT[15:8] = OP[0] ? (D0 ^ D1) : (D0 | D1); - FOUT[0] = 0; - FOUT[1] = 0; - FOUT[2] = parity; - FOUT[3] = ALU8DOUT[11]; - FOUT[4] = 0; - FOUT[5] = ALU8DOUT[13]; - FOUT[6] = zero; - FOUT[7] = ALU8DOUT[15]; - end - 9: begin // CPL - ALU8DOUT[15:8] = ~D0; - FOUT[0] = FIN[0]; - FOUT[1] = 1; - FOUT[2] = FIN[2]; - FOUT[3] = ALU8DOUT[11]; - FOUT[4] = 1; - FOUT[5] = ALU8DOUT[13]; - FOUT[7:6] = FIN[7:6]; - end - 11,12: begin // RLD, RRD - if(OP[0]) ALU8DOUT = {D0[7:4], D1[3:0], D0[3:0], D1[7:4]}; - else ALU8DOUT = {D0[7:4], D1[7:0], D0[3:0]}; - FOUT[0] = FIN[0]; - FOUT[1] = 0; - FOUT[2] = parity; - FOUT[3] = ALU8DOUT[11]; - FOUT[4] = 0; - FOUT[5] = ALU8DOUT[13]; - FOUT[6] = zero; - FOUT[7] = ALU8DOUT[15]; - end - 13: begin // DAA - ALU8DOUT[15:8] = sum[7:0]; - FOUT[0] = cdaa; - FOUT[1] = FIN[1]; - FOUT[2] = parity; - FOUT[3] = ALU8DOUT[11]; - FOUT[4] = hdaa; - FOUT[5] = ALU8DOUT[13]; - FOUT[6] = zero; - FOUT[7] = ALU8DOUT[15]; - end - 14,15: begin // inc/dec 16 - ALU8DOUT = {D0, D1} + (OP[0] ? 16'hffff : 16'h0001); - FOUT[0] = FIN[0]; - FOUT[1] = LDIFLAGS ? 1'b0 : FIN[1]; - FOUT[2] = ALU8DOUT != 0; - FOUT[3] = FIN[3]; - FOUT[4] = LDIFLAGS ? 1'b0 : FIN[4]; - FOUT[5] = FIN[5]; - FOUT[6] = FIN[6]; - FOUT[7] = FIN[7]; - end - 20,21: begin // CCF, SCF - ALU8DOUT[15:8] = D0; - FOUT[0] = OP[0] ? 1'b1 : !FIN[0]; - FOUT[1] = 1'b0; - FOUT[2] = FIN[2]; - FOUT[3] = ALU8DOUT[11]; - FOUT[4] = OP[0] ? 1'b0 : FIN[0]; - FOUT[5] = ALU8DOUT[13]; - FOUT[6] = FIN[6]; - FOUT[7] = FIN[7]; - end - 24,25,26,27, 28: begin // ROT, BIT, RES, SET - case({OP[2], EXOP[4:3]}) - 0,1,2,3,4: // rot - shift - if(OP[2] ? EXOP[0] : OP[0]){ALU8DOUT[15:8], FOUT[0]} = {csin, D0}; // right - else {FOUT[0], ALU8DOUT[15:8]} = {D0, csin}; // left - 5,6: begin // BIT, RES - FOUT[0] = FIN[0]; - ALU8DOUT[15:8] = D0 & dbit; - end - 7: begin // SET - FOUT[0] = FIN[0]; - ALU8DOUT[15:8] = D0 | dbit; - end - endcase - ALU8DOUT[7:0] = ALU8DOUT[15:8]; - FOUT[1] = 0; - FOUT[2] = OP[2] ? (EXOP[3] ? zero : parity) : FIN[2]; - FOUT[3] = ALU8DOUT[11]; - FOUT[4] = OP[2] & EXOP[3]; - FOUT[5] = ALU8DOUT[13]; - FOUT[6] = OP[2] ? zero : FIN[6]; - FOUT[7] = OP[2] ? ALU8DOUT[15] : FIN[7]; - end - 29: begin // IN, pass D1 - ALU8DOUT = {D1, D1}; - FOUT[0] = FIN[0]; - FOUT[1] = 0; - FOUT[2] = parity; - FOUT[3] = ALU8DOUT[11]; - FOUT[4] = 0; - FOUT[5] = ALU8DOUT[13]; - FOUT[6] = zero; - FOUT[7] = ALU8DOUT[15]; - end - 30: FOUT = D0; // FLAGS <- D0 - default:; - endcase - end -endmodule - -module daa ( - input [7:0]flags, - input [7:0]val, - output wire [7:0]adjust, - output reg cdaa, - output reg hdaa - ); - - wire h08 = val[7:4] < 9; - wire h09 = val[7:4] < 10; - wire l05 = val[3:0] < 6; - wire l09 = val[3:0] < 10; - reg [1:0]aa; - assign adjust = ({1'b0, aa[1], aa[1], 2'b0, aa[0], aa[0], 1'b0} ^ {8{flags[1]}}) + flags[1]; - - always @* begin - case({flags[0], h08, h09, flags[4], l09}) - 5'b00101, 5'b01101: aa = 0; - 5'b00111, 5'b01111, 5'b01000, 5'b01010, 5'b01100, 5'b01110: aa = 1; - 5'b00001, 5'b01001, 5'b10001, 5'b10101, 5'b11001, 5'b11101: aa = 2; - default: aa = 3; - endcase - case({flags[0], h08, h09, l09}) - 4'b0011, 4'b0111, 4'b0100, 4'b0110: cdaa = 0; - default: cdaa = 1; - endcase - case({flags[1], flags[4], l05, l09}) - 4'b0000, 4'b0010, 4'b0100, 4'b0110, 4'b1110, 4'b1111: hdaa = 1; - default: hdaa = 0; - endcase - end -endmodule - - -module ALU16( - input [15:0] D0, - input [7:0] D1, - output wire[15:0] DOUT, - input [2:0]OP // 0-NOP, 1-INC, 2-INC2, 3-ADD, 4-NOP, 5-DEC, 6-DEC2 - ); - - reg [15:0] mux; - always @* - case(OP) - 0: mux = 0; // post inc - 1: mux = 1; // post inc - 2: mux = 2; // post inc - 3: mux = {D1[7], D1[7], D1[7], D1[7], D1[7], D1[7], D1[7], D1[7], D1[7:0]}; // post inc - 4: mux = 0; // no post inc - 5: mux = 16'hffff; // no post inc - 6: mux = 16'hfffe; // no post inc - default: mux = 16'hxxxx; - endcase - - assign DOUT = D0 + mux; -endmodule diff --git a/Computer_MiST/Laser310_MiST/rtl/NextZ80/NextZ80CPU.v b/Computer_MiST/Laser310_MiST/rtl/NextZ80/NextZ80CPU.v deleted file mode 100644 index 25d26af8..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/NextZ80/NextZ80CPU.v +++ /dev/null @@ -1,1499 +0,0 @@ -////////////////////////////////////////////////////////////////////////////////// -// -// This file is part of the NextZ80 project -// http://www.opencores.org/cores/nextz80/ -// -// Filename: NextZ80CPU.v -// Description: Implementation of Z80 compatible CPU -// Version 1.0 -// Creation date: 28Jan2011 - 18Mar2011 -// -// Author: Nicolae Dumitrache -// e-mail: ndumitrache@opencores.org -// -///////////////////////////////////////////////////////////////////////////////// -// -// Copyright (C) 2011 Nicolae Dumitrache -// -// This source file may be used and distributed without -// restriction provided that this copyright statement is not -// removed from the file and that any derivative work contains -// the original copyright notice and the associated disclaimer. -// -// This source file is free software; you can redistribute it -// and/or modify it under the terms of the GNU Lesser General -// Public License as published by the Free Software Foundation; -// either version 2.1 of the License, or (at your option) any -// later version. -// -// This source 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 Lesser General Public License for more -// details. -// -// You should have received a copy of the GNU Lesser General -// Public License along with this source; if not, download it -// from http://www.opencores.org/lgpl.shtml -// -/////////////////////////////////////////////////////////////////////////////////// -// -// Comments: -// This project was developed and tested on a XILINX Spartan3AN board. -// -// NextZ80 processor features: -// All documented/undocumented intstructions are implemented -// All documented/undocumented flags are implemented -// All (doc/undoc)flags are changed accordingly by all (doc/undoc)instructions. -// The block instructions (LDx, CPx, INx, OUTx) have only the documented effects on flags. -// The Bit n,(IX/IY+d) and BIT n,(HL) undocumented flags XF and YF are implemented like the BIT n,r and not actually like on the real Z80 CPU. -// All interrupt modes implemented: NMI, IM0, IM1, IM2 -// R register available -// Fast conditional jump/call/ret takes only 1 T state if not executed -// Fast block instructions: LDxR - 3 T states/byte, INxR/OTxR - 2 T states/byte, CPxR - 4 T states / byte -// Each CPU machine cycle takes (mainly) one clock T state. This makes this processor over 4 times faster than a Z80 at the same -// clock frequency (some instructions are up to 10 times faster). -// Works at ~40MHZ on Spartan XC3S700AN speed grade -4) -// Small size ( ~12% ~700 slices - on Spartan XC3S700AN ) -// Tested with ZEXDOC (fully compliant). -// Tested with ZEXALL (all OK except CPx(R), LDx(R), BIT n, (IX/IY+d), BIT n, (HL) - fail because of the un-documented XF and YF flags). -// -/////////////////////////////////////////////////////////////////////////////////// -`timescale 1ns / 1ps - -module NextZ80 -( - input wire[7:0] DI, - output wire[7:0] DO, - output wire[15:0] ADDR, - output reg WR, - output reg MREQ, - output reg IORQ, - output reg HALT, - output reg M1, - input wire CLK, - input wire RESET, - input wire INT, - input wire NMI, - input wire WAIT -); - -// connections and registers - reg [9:0] CPUStatus = 0; // 0=AF-AF', 1=HL-HL', 2=DE-HL, 3=DE'-HL', 4=HL-X, 5=IX-IY, 6=IFF1,7=IFF2, 9:8=IMODE - wire [7:0] ALU8FLAGS; - wire [7:0] FLAGS; - wire [7:0] ALU80; - wire [7:0] ALU81; - wire [15:0]ALU160; - wire [7:0] ALU161; - wire [15:0]ALU8OUT; - - reg [9:0] FETCH = 0; - reg [2:0] STAGE = 0; - wire [5:0] opd; - wire [2:0] op16; - wire op0mem = FETCH[2:0] == 6; - wire op1mem = FETCH[5:3] == 6; - reg [1:0]fetch98; - -// stage status - reg [1:0]DO_SEL; // ALU80 - th - flags - ALU8OUT[7:0] - reg ALU160_SEL; // regs - pc - reg DINW_SEL; // ALU8OUT - DI - reg [5:0]WE; // 5 = flags, 4 = PC, 3 = SP, 2 = tmpHI, 1 = hi, 0 = lo - reg [4:0] ALU8OP; - reg [2:0] ALU16OP; - reg next_stage; - reg [3:0]REG_WSEL; - reg [3:0]REG_RSEL; - reg [11:0]status; // 0=AF-AF', 1=HL-HL', 2=DE-HL, 3=DE'-HL', 4=HL-X, 5=IX-IY, 7:6=IFFVAL, 9:8=imode, 10=setIMODE, 11=set IFFVAL -// FETCH[5:3]: 000 NZ, 001 Z, 010 NC, 011 C, 100 PO, 101 PE, 110 P, 111 M - wire [7:0]FlagMux = {FLAGS[7], !FLAGS[7], FLAGS[2], !FLAGS[2], FLAGS[0], !FLAGS[0], FLAGS[6], !FLAGS[6]}; - reg tzf; - reg FNMI = 0, SNMI = 0; - reg SRESET = 0; - reg SINT = 0; - wire [2:0]intop = FETCH[1] ? 4 : (FETCH[0] ? 5 : 6); - reg xmask; - - Z80Reg CPU_REGS ( - .rstatus(CPUStatus[7:0]), - .M1(M1), - .WE(WE), - .CLK(CLK), - .ALU8OUT(ALU8OUT), - .DI(DI), - .DO(DO), - .ADDR(ADDR), - .CONST(FETCH[7] ? {2'b00, FETCH[5:3], 3'b000} : 8'h66), // RST/NMI address - .ALU80(ALU80), - .ALU81(ALU81), - .ALU160(ALU160), - .ALU161(ALU161), - .ALU8FLAGS(ALU8FLAGS), - .FLAGS(FLAGS), - .DO_SEL(DO_SEL), - .ALU160_sel(ALU160_SEL), - .REG_WSEL(REG_WSEL), - .REG_RSEL(REG_RSEL), - .DINW_SEL(DINW_SEL), - .XMASK(xmask), - .ALU16OP(ALU16OP), // used for post increment for ADDR, SP mux re-direct - .WAIT(WAIT) - ); - - ALU8 CPU_ALU8 ( - .D0(ALU80), - .D1(ALU81), - .FIN(FLAGS), - .FOUT(ALU8FLAGS), - .ALU8DOUT(ALU8OUT), - .OP(ALU8OP), - .EXOP(FETCH[8:3]), - .LDIFLAGS(REG_WSEL[2]), // inc16 HL - .DSTHI(!REG_WSEL[0]) - ); - - ALU16 CPU_ALU16 ( - .D0(ALU160), - .D1(ALU161), - .DOUT(ADDR), - .OP(ALU16OP) - ); - - always @(posedge CLK) - if(!WAIT) begin - SRESET <= RESET; - SNMI <= NMI; - SINT <= INT; - if(!SNMI) FNMI <= 0; - if(SRESET) FETCH <= 10'b1110000000; - else - if(FETCH[9:6] == 4'b1110) {FETCH[9:7]} <= 3'b000; // exit RESET state - else begin - if(M1 || (fetch98 == 2'b10)) // [DD/FD CB disp op] - M1 is inactive during byte read, but FETCH is performed - case({MREQ, CPUStatus[9:8]}) - 3'b000, 3'b001, 3'b100, 3'b101, 3'b110, 3'b111: FETCH <= {fetch98, DI}; - 3'b010: FETCH <= {fetch98, 8'hff}; // IM1 - RST38 - 3'b011: ; // IM2 - get addrLO - endcase - if(~|{next_stage, fetch98[1:0], status[4]}) // INT or NMI sample - if(SNMI & !FNMI) begin // NMI posedge - {FETCH[9:6], FETCH[1:0]} <= {4'b1101, HALT, M1}; - FNMI <= 1; // NMI acknowledged - end else if(SINT & CPUStatus[6] & !status[11]) {FETCH[9:6], FETCH[1:0]} <= {4'b1100, HALT, M1}; // INT request - end - if(next_stage) STAGE <= STAGE + 3'b001; - else STAGE <= 0; - if(status[4]) CPUStatus[5:4] <= status[5:4]; - else if(~|{next_stage, fetch98[1]} | fetch98[0]) CPUStatus[4] <= 1'b0; // clear X - CPUStatus[3:0] <= CPUStatus[3:0] ^ status[3:0]; - if(status[11]) CPUStatus[7:6] <= status[7:6]; // IFF2:1 - if(status[10]) CPUStatus[9:8] <= status[9:8]; // IMM - tzf <= ALU8FLAGS[6]; - end - - assign opd[0] = FETCH[0] ^ &FETCH[2:1]; - assign opd[2:1] = FETCH[2:1]; - assign opd[3] = FETCH[3] ^ &FETCH[5:4]; - assign opd[5:4] = FETCH[5:4]; - assign op16[2:0] = &FETCH[5:4] ? 3'b101 : {1'b0, FETCH[5:4]}; - - always @* begin - DO_SEL = 2'bxx; // ALU80 - th - flags - ALU8OUT[7:0] - ALU160_SEL = 1'bx; // regs - pc - DINW_SEL = 1'bx; // ALU8OUT - DI - WE = 6'bxxxxxx; // 5 = flags, 4 = PC, 3 = SP, 2 = tmpHI, 1 = hi, 0 = lo - ALU8OP = 5'bxxxxx; - ALU16OP = 3'b000; // NOP, post inc - next_stage = 0; - REG_WSEL = 4'bxxxx; - REG_RSEL = 4'bx0xx; // prevents default 4'b0100 which leads to incorrect P flag value in some cases (like RLA) - M1 = 1; - MREQ = 1; - WR = 0; - - HALT = 0; - IORQ = 0; - status = 12'b00xxxxx00000; - fetch98 = 2'b00; - - case({FETCH[7:6], op1mem, op0mem}) - 4'b0000, 4'b0001, 4'b0010, 4'b0011, 4'b0100, 4'b1000, 4'b1100: xmask = 1; - default: xmask = 0; - endcase - - case(FETCH[9:6]) -//------------------------------------------- block 00 ---------------------------------------------------- - 4'b0000: - case(FETCH[3:0]) -// ----------------------- NOP, EX AF, AF', DJNZ, JR, JR c -------------------- - 4'b0000, 4'b1000: - case(FETCH[5:4]) - 2'b00: begin // NOP, EX AF, AF' - DO_SEL = 2'bxx; - ALU160_SEL = 1; // PC - WE = 6'b010x00; // PC - status[0] = FETCH[3]; - end - 2'b01: - if(!STAGE[0]) begin // DJNZ, JR - stage1 - ALU160_SEL = 1; // pc - WE = 6'b010100; // PC, tmpHI - if(!FETCH[3]) begin - ALU8OP = 5'b01010; // DEC, for tzf only - REG_WSEL = 4'b0000; // B - end - next_stage = 1; - M1 = 0; - end else if(FETCH[3]) begin // JR - stage2 - ALU160_SEL = 1; // pc - WE = 6'b010x00; // PC - ALU16OP = 3; // ADD - end else begin // DJNZ - stage2 - ALU160_SEL = 1; // pc - DINW_SEL = 0; // ALU8OUT - WE = 6'b010x10; // PC, hi - ALU8OP = 5'b01010; // DEC - ALU16OP = tzf ? 3'd0 : 3'd3; // NOP/ADD - REG_WSEL = 4'b0000; // B - end - 2'b10, 2'b11: // JR cc, stage1, stage2 - case({STAGE[0], FlagMux[{1'b0, FETCH[4:3]}]}) - 2'b00, 2'b11: begin - ALU160_SEL = 1; // pc - WE = 6'b010x00; // PC - ALU16OP = STAGE[0] ? 3'd3 : 3'd1; // ADD/ INC, post inc - end - 2'b01: begin - ALU160_SEL = 1; // pc - WE = 6'b010100; // PC, tmpHI - next_stage = 1; - M1 = 0; - end - endcase - endcase -// ----------------------- LD rr,nn -------------------- - 4'b0001: // LD rr,nn, stage1 - case({STAGE[1:0], op16[2]}) - 3'b00_0, 3'b00_1, 3'b01_0, 3'b01_1: begin // LD rr,nn, stage1,2 - ALU160_SEL = 1; // pc - DINW_SEL = 1; // DI - WE = {4'b010x, STAGE[0] ? 1'b1 : 1'bx, !STAGE[0]}; // PC, lo/HI - next_stage = 1; - REG_WSEL = {op16, 1'bx}; - M1 = 0; - end - 3'b10_0, 3'b11_1: begin // BC, DE, HL, stage3, SP stage4 - ALU160_SEL = 1; // pc - WE = 6'b010x00; // PC - end - 3'b10_1: begin // SP stage3 - ALU160_SEL = 0; // regs - WE = 6'b001x00; // SP - ALU16OP = 4; // NOP - next_stage = 1; - REG_RSEL = 4'b101x; // tmpSP - M1 = 0; - MREQ = 0; - end - endcase -// ----------------------- LD (BC) A - LD (DE) A - LD (nn) HL, LD (nn),A -------------------- -// ----------------------- LD A (BC) - LD A (DE) - LD HL (nn), LD A (nn) -------------------- - 4'b0010, 4'b1010: - case(STAGE[2:0]) - 3'b000: - if(FETCH[5] == 0) begin // LD (BC) A, LD (DE) A - stage1 - if(FETCH[3]) DINW_SEL = 1; // DI - else DO_SEL = 2'b00; // ALU80 - ALU160_SEL = 0; // regs - WE = {4'b000x, FETCH[3], 1'bx}; // hi - next_stage = 1; - REG_WSEL = FETCH[3] ? 4'b011x : 4'b0110; // A - REG_RSEL = {op16, 1'bx}; - M1 = 0; - WR = !FETCH[3]; - end else begin // LD (nn) A - LD (nn) HL - stage 1 - ALU160_SEL = 1; // PC - DINW_SEL = 1; // DI - WE = 6'b010xx1; // PC, lo - next_stage = 1; - REG_WSEL = 4'b111x; - M1 = 0; - end - 3'b001: - if(FETCH[5] == 0) begin // LD (BC), A, LD (DE), A - stage2 - ALU160_SEL = 1; // pc - WE = 6'b010x00; // PC - end else begin // LD (nn),A - LH (nn),HL - stage 2 - ALU160_SEL = 1; // pc - DINW_SEL = 1; // DI - WE = 6'b010x10; // PC, hi - next_stage = 1; - REG_WSEL = 4'b111x; - M1 = 0; - end - 3'b010: begin - ALU160_SEL = 1'b0; // regs - REG_RSEL = 4'b111x; - M1 = 0; - WR = !FETCH[3]; - next_stage = 1; - if(FETCH[3]) begin // LD A (nn) - LD HL (nn) - stage 3 - DINW_SEL = 1; // DI - WE = {4'b000x, FETCH[4] ? 1'b1 : 1'bx, FETCH[4] ? 1'bx : 1'b1}; // lo/hi - REG_WSEL = FETCH[4] ? 4'b011x : 4'b010x; // A or L - end else begin // LD (nn),A - LD (nn),HL - stage 3 - DO_SEL = 2'b00; // ALU80 - WE = 6'b000x00; // nothing - REG_WSEL = FETCH[4] ? 4'b0110 : 4'b0101; // A or L - end - end - 3'b011: - if(FETCH[4]) begin // LD (nn),A - stage 4 - ALU160_SEL = 1; // pc - WE = 6'b010x00; // PC - end else begin - REG_RSEL = 4'b111x; - M1 = 0; - WR = !FETCH[3]; - ALU160_SEL = 1'b0; // regs - ALU16OP = 1; // INC - next_stage = 1; - if(FETCH[3]) begin // LD HL (nn) - stage 4 - DINW_SEL = 1; // DI - WE = 6'b000x10; // hi - REG_WSEL = 4'b010x; // H - end else begin // LD (nn),HL - stage 4 - DO_SEL = 2'b00; // ALU80 - WE = 6'b000x00; // nothing - REG_WSEL = 4'b0100; // H - end - end - 3'b100: begin // LD (nn),HL - stage 5 - ALU160_SEL = 1; // pc - WE = 6'b010x00; // PC - end - endcase -// ----------------------- inc/dec rr -------------------- - 4'b0011, 4'b1011: - if(!STAGE[0]) - if(op16[2]) begin // SP - stage1 - ALU160_SEL = 0; // regs - WE = 6'b001x00; // SP - ALU16OP = {FETCH[3], 1'b0, FETCH[3]}; // post inc, dec - next_stage = 1; - REG_RSEL = 4'b101x; // sp - M1 = 0; - MREQ = 0; - end else begin // BC, DE, HL - stage 1 - ALU160_SEL = 1; // pc - DINW_SEL = 0; // ALU8OUT - WE = 6'b010x11; // PC, hi, lo - ALU8OP = {4'b0111, FETCH[3]}; // INC16 / DEC16 - REG_WSEL = {op16, 1'b0}; // hi - REG_RSEL = {op16, 1'b1}; // lo - end - else begin // SP, stage2 - ALU160_SEL = 1; // pc - WE = 6'b010x00; // PC - end -// ----------------------- inc/dec 8 -------------------- - 4'b0100, 4'b0101, 4'b1100, 4'b1101: - if(!op1mem) begin //regs - DINW_SEL = 0; // ALU8OUT - ALU160_SEL = 1; // pc - WE = opd[3] ? 6'b110x01 : 6'b110x10; // flags, PC, hi/lo - ALU8OP = {3'b010, FETCH[0], 1'b0}; // inc / dec - REG_WSEL = {1'b0, opd[5:3]}; - end else case({STAGE[1:0], CPUStatus[4]}) - 3'b00_0, 3'b01_1: begin // (HL) - stage1, (X) - stage2 - ALU160_SEL = 0; // regs - DINW_SEL = 1; // DI - WE = 6'b000001; // lo - ALU16OP = CPUStatus[4] ? 3'd3 : 3'd0; - next_stage = 1; - REG_WSEL = 4'b011x; // tmpLO - REG_RSEL = 4'b010x; // HL - M1 = 0; - end - 3'b00_1: begin // (X) - stage1 - ALU160_SEL = 1; // pc - WE = 6'b010100; // PC, tmpHI - next_stage = 1; - M1 = 0; - end - 3'b01_0, 3'b10_1: begin // (HL) stage2, (X) - stage3 - DO_SEL = 2'b11; // ALU80OUT - ALU160_SEL = 0; // regs - WE = 6'b100x0x; // flags - ALU8OP = {3'b010, FETCH[0], 1'b0}; // inc / dec - ALU16OP = CPUStatus[4] ? 3'd3 : 3'd0; - next_stage = 1; - REG_WSEL = 4'b0111; // tmpLO - REG_RSEL = 4'b010x; // HL - M1 = 0; - WR = 1; - end - 3'b10_0, 3'b11_1: begin // (HL) - stage3, (X) - stage 4 - ALU160_SEL = 1; // pc - WE = 6'b010x00; // PC - end - endcase -// ----------------------- ld r/(HL-X), n -------------------- - 4'b0110, 4'b1110: - case({STAGE[1:0], CPUStatus[4], op1mem}) - 4'b00_0_0, 4'b00_0_1, 4'b00_1_0, 4'b01_1_1: begin // r, (HL) - stage1, (X) - stage2 (read n) - ALU160_SEL = 1; // pc - DINW_SEL = 1; // DI - WE = opd[3] ? 6'b010001 : 6'b010010; // PC, hi/lo - next_stage = 1; - REG_WSEL = {1'b0, opd[5:4], 1'bx}; - M1 = 0; - end - 4'b01_0_0, 4'b01_1_0, 4'b10_0_1, 4'b11_1_1: begin // r - stage2, (HL) - stage3, (X) - stage4 - ALU160_SEL = 1; // pc - WE = 6'b010x00; // PC - end - 4'b01_0_1, 4'b10_1_1: begin // (HL) - stage2, (X) - stage3 - DO_SEL = 2'b00; // ALU80 - ALU160_SEL = 0; // regs - WE = 6'b000x0x; // nothing - ALU16OP = CPUStatus[4] ? 3'd3 : 3'd0; - next_stage = 1; - REG_WSEL = 4'b0111; // tmpLO - REG_RSEL = 4'b010x; // HL - M1 = 0; - WR = 1; - end - 4'b00_1_1: begin // (X) - stage1 - ALU160_SEL = 1; // pc - WE = 6'b010100; // PC, tmpHI - next_stage = 1; - M1 = 0; - end - endcase -// ----------------------- rlca, rrca, rla, rra, daa, cpl, scf, ccf -------------------- - 4'b0111, 4'b1111: - case(FETCH[5:3]) - 3'b000, 3'b001, 3'b010, 3'b011, 3'b100, 3'b101: begin // rlca, rrca, rla, rra, daa, cpl - ALU160_SEL = 1; // pc - DINW_SEL = 0; // ALU8OUT - WE = 6'b110x1x; // flags, PC, hi - ALU8OP = FETCH[5] ? {2'b01, !FETCH[3], 2'b01} : {3'b110, FETCH[4:3]}; - REG_WSEL = 4'b0110; // A - end - 3'b110, 3'b111: begin // scf, ccf - ALU160_SEL = 1; // pc - DINW_SEL = 0; // ALU8OUT - WE = 6'b110x0x; // flags, PC - ALU8OP = {4'b1010, !FETCH[3]}; - end - endcase -// ----------------------- add 16 -------------------- - 4'b1001: - if(!STAGE[0]) begin - DINW_SEL = 0; // ALU8OUT - WE = 6'b100x01; // flags, lo - ALU8OP = 5'b10000; // ADD16LO - next_stage = 1; - REG_WSEL = 4'b0101; // L - REG_RSEL = {op16, 1'b1}; - M1 = 0; - MREQ = 0; - end else begin - ALU160_SEL = 1; // pc - DINW_SEL = 0; // ALU8OUT - WE = 6'b110x10; // flags, PC, hi - ALU8OP = 5'b10001; // ADD16HI - REG_WSEL = 4'b0100; // H - REG_RSEL = {op16, 1'b0}; - end - endcase - -// ---------------------------------------------- block 01 LD8 --------------------------------------------------- - 4'b0001: - case({STAGE[1:0], CPUStatus[4], op1mem, op0mem}) - 5'b00_0_00, 5'b00_1_00, // LD r, r 1st stage - 5'b01_0_01, // LD r, (HL) 2nd stage - 5'b10_1_01: // LD r, (X) 3rd stage - begin - ALU160_SEL = 1; // PC - DINW_SEL = 0; // ALU8 - WE = opd[3] ? 6'b010x01 : 6'b010x10; // PC and LO or HI - ALU8OP = 29; // PASS D1 - REG_WSEL = {1'b0, opd[5:4], 1'bx}; - REG_RSEL = {1'b0, opd[2:0]}; - end - 5'b00_0_01, // LD r, (HL) 1st stage - 5'b01_1_01: // LD r, (X) 2nd stage - begin - ALU160_SEL = 0; // regs - DINW_SEL = 1; // DI - WE = 6'b000x01; // LO - ALU16OP = CPUStatus[4] ? 3'd3 : 3'd0; // ADD - NOP - next_stage = 1; - REG_WSEL = 4'b011x; // A - tmpLO - REG_RSEL = 4'b010x; // HL - M1 = 0; - end - 5'b00_1_01, // LD r, (X) 1st stage - 5'b00_1_10: // LD (X), r 1st stage - begin - ALU160_SEL = 1; // pc - WE = 6'b010100; // PC, tmpHI - next_stage = 1; - M1 = 0; - end - 5'b00_0_10, // LD (HL), r 1st stage - 5'b01_1_10: // LD (X), r 2nd stage - begin - DO_SEL = 0; // ALU80 - ALU160_SEL = 0; // regs - WE = 6'b000x00; // no write - ALU16OP = CPUStatus[4] ? 3'd3 : 3'd0; // ADD - NOP - next_stage = 1; - REG_WSEL = {1'b0, opd[2:0]}; - REG_RSEL = 4'b010x; // HL - M1 = 0; - WR = 1; - end - 5'b01_0_10, // LD (HL), r 2nd stage - 5'b10_1_10: // LD (X), r 3rd stage - begin - ALU160_SEL = 1; // pc - WE = 6'b010x00; // PC - end - 5'b00_0_11, 5'b00_1_11: begin // HALT - WE = 6'b000x00; // no write - M1 = 0; - MREQ = 0; - HALT = 1; - end - endcase -// ---------------------------------------------- block 10 arith8 --------------------------------------------------- - 4'b0010: - case({STAGE[1:0], CPUStatus[4], op0mem}) - 4'b00_0_0, 4'b00_1_0, // OP r,r 1st stage - 4'b01_0_1, // OP r, (HL) 2nd stage - 4'b10_1_1: // OP r, (X) 3rd stage - begin - ALU160_SEL = 1; // pc - DINW_SEL = 0; // ALU8OUT - WE = {4'b110x, ~&FETCH[5:3], 1'bx}; // flags, PC, hi - ALU8OP = {2'b00, FETCH[5:3]}; - REG_WSEL = 4'b0110; // A - REG_RSEL = {1'b0, opd[2:0]}; - end - 4'b00_0_1, // OP r, (HL) 1st stage - 4'b01_1_1: // OP r, (X) 2nd stage - begin - ALU160_SEL = 0; // HL - DINW_SEL = 1; // DI - WE = 6'b000x01; // lo - ALU16OP = CPUStatus[4] ? 3'd3 : 3'd0; // ADD - NOP - next_stage = 1; - REG_WSEL = 4'b011x; // A-tmpLO - REG_RSEL = 4'b010x; // HL - M1 = 0; - end - 4'b00_1_1: // OP r, (X) 1st stage - begin - ALU160_SEL = 1; // pc - WE = 6'b010100; // PC, tmpHI - next_stage = 1; - M1 = 0; - end - endcase -//------------------------------------------- block 11 ---------------------------------------------------- - 4'b0011: - case(FETCH[3:0]) -// ----------------------- RET cc -------------------- - 4'b0000, 4'b1000: - case(STAGE[1:0]) - 2'b00, 2'b01: // stage1, stage2 - if(FlagMux[FETCH[5:3]]) begin // POP addr - ALU160_SEL = 0; // regs - DINW_SEL = 1; // DI - WE = {4'b001x, STAGE[0] ? 1'b1 : 1'bx, !STAGE[0]}; // SP, lo/hi - next_stage = 1; - REG_WSEL = 4'b111x; // tmp16 - REG_RSEL = 4'b101x; // SP - M1 = 0; - end else begin - ALU160_SEL = 1; // pc - WE = 6'b010x00; // PC - end - 2'b10: begin // stage3 - ALU160_SEL = 0; // regs - WE = 6'b010x00; // PC - REG_RSEL = 4'b111x; // tmp16 - end - endcase -// ----------------------- POP -------------------- - 4'b0001: - case(STAGE[1:0]) - 2'b00, 2'b01: begin - if(op16[2]) begin // AF - WE = STAGE[0] ? 6'b101x1x : 6'b001xx1; // flags, SP, lo/hi - REG_WSEL = {3'b011, STAGE[0] ? 1'b1 : 1'bx}; - if(STAGE[0]) ALU8OP = 30; // FLAGS <- D0 - end else begin // r16 - WE = STAGE[0] ? 6'b001x10 : 6'b001xx1; // SP, lo/hi - REG_WSEL = {1'b0, FETCH[5:4], 1'bx}; - end - ALU160_SEL = 0; // regs - DINW_SEL = 1; // DI - next_stage = 1; - REG_RSEL = 4'b101x; // SP - M1 = 0; - end - 2'b10: begin // stage3 - ALU160_SEL = 1; // PC - WE = 6'b010x00; // PC - end - endcase -// ----------------------- JP cc -------------------- - 4'b0010, 4'b1010: - case(STAGE[1:0]) - 2'b00, 2'b01: begin // stage1,2 - if(FlagMux[FETCH[5:3]]) begin - ALU160_SEL = 1; // pc - DINW_SEL = 1; // DI - WE = {4'b010x, STAGE[0] ? 1'b1 : 1'bx, !STAGE[0]}; // PC, hi/lo - next_stage = 1; - REG_WSEL = 4'b111x; // tmp7 - M1 = 0; - end else begin - ALU160_SEL = 1; // pc - WE = 6'b010x00; // PC - ALU16OP = 2; // add2 - end - end - 2'b10: begin // stage3 - ALU160_SEL = 0; // regs - WE = 6'b010x00; // PC - REG_RSEL = 4'b111x; // tmp7 - end - endcase -// ----------------------- JP, OUT (n) A, EX (SP) HL, DI -------------------- - 4'b0011: - case(FETCH[5:4]) - 2'b00: // JP - case(STAGE[1:0]) - 2'b00, 2'b01: begin // stage1,2 - read addr - ALU160_SEL = 1; // pc - DINW_SEL = 1; // DI - WE = {4'b010x, STAGE[0] ? 1'b1 : 1'bx, !STAGE[0]}; // PC, hi/lo - next_stage = 1; - REG_WSEL = 4'b111x; // tmp7 - M1 = 0; - end - 2'b10: begin // stage3 - ALU160_SEL = 0; // regs - WE = 6'b010x00; // PC - REG_RSEL = 4'b111x; // tmp7 - end - endcase - 2'b01: // OUT (n), a - stage1 - read n - case(STAGE[1:0]) - 2'b00: begin - ALU160_SEL = 1; // pc - DINW_SEL = 1; // DI - WE = 6'b010x01; // PC, lo - next_stage = 1; - REG_WSEL = 4'b011x; // tmpLO - M1 = 0; - end - 2'b01: begin // stage2 - OUT - DO_SEL = 2'b00; // ALU80 - ALU160_SEL = 0; // regs - WE = 6'b000x00; // nothing - next_stage = 1; - REG_WSEL = 4'b0110; // A - REG_RSEL = 4'b011x; // A-tmpLO - M1 = 0; - MREQ = 0; - WR = 1; - IORQ = 1; - end - 2'b10: begin // stage3 - fetch - ALU160_SEL = 1; // PC - WE = 6'b010x00; // PC - end - endcase - 2'b10: // EX (SP), HL - case(STAGE[2:0]) - 3'b000, 3'b001: begin // stage1,2 - pop tmp16 - ALU160_SEL = 0; // regs - DINW_SEL = 1; // DI - WE = {4'b001x, STAGE[0] ? 1'b1 : 1'bx, !STAGE[0]}; // SP, lo/hi - next_stage = 1; - REG_WSEL = 4'b111x; // tmp16 - REG_RSEL = 4'b101x; // SP - M1 = 0; - end - 3'b010, 3'b011: begin // stage3,4 - push hl - DO_SEL = 2'b00; // ALU80 - ALU160_SEL = 0; // regs - WE = 6'b001x00; // SP - ALU16OP = 5; // dec - next_stage = 1; - REG_WSEL = {3'b010, STAGE[0]};// H/L - REG_RSEL = 4'b101x; // SP - M1 = 0; - WR = 1; - end - 3'b100, 3'b101: begin // stage5,6 - ALU160_SEL = 1; // pc - DINW_SEL = 0; // ALU8OUT - WE = {1'b0, STAGE[0], 2'b0x, STAGE[0] ? 1'b1 : 1'bx, !STAGE[0]}; // PC, lo/hi - ALU8OP = 29; // pass D1 - next_stage = !STAGE[0]; - REG_WSEL = 4'b010x; // HL - REG_RSEL = {3'b111, !STAGE[0]}; // tmp16 - M1 = STAGE[0]; - MREQ = STAGE[0]; - end - endcase - 2'b11: begin // DI - ALU160_SEL = 1; // PC - WE = 6'b010x00; // PC - status[11] = 1'b1; // set IFF flags - status[7:6] = 2'b00; - end - endcase -// ----------------------- CALL cc -------------------- - 4'b0100, 4'b1100: - case(STAGE[2:0]) - 3'b000, 3'b001: // stage 1,2 - load addr - if(FlagMux[FETCH[5:3]]) begin - ALU160_SEL = 1; // pc - DINW_SEL = 1; // DI - WE = {4'b010x, STAGE[0] ? 1'b1 : 1'bx, !STAGE[0]}; // PC, hi/lo - next_stage = 1; - REG_WSEL = 4'b111x; // tmp7 - M1 = 0; - end else begin - ALU160_SEL = 1; // pc - WE = 6'b010x00; // PC - ALU16OP = 2; // add2 - end - 3'b010, 3'b011: begin // stage 3,4 - push pc - DO_SEL = {1'b0, STAGE[0]}; // pc hi/lo - ALU160_SEL = 0; // regs - WE = 6'b001x00; // SP - ALU16OP = 5; // DEC - next_stage = 1; - REG_WSEL = 4'b1xxx; // pc - REG_RSEL = 4'b101x; // sp - M1 = 0; - WR = 1; - end - 3'b100: begin // stage5 - ALU160_SEL = 0; // regs - WE = 6'b010x00; // PC - REG_RSEL = 4'b111x; // tmp7 - end - endcase -// ----------------------- PUSH -------------------- - 4'b0101: - case(STAGE[1:0]) - 2'b00, 2'b01: begin // stage1,2 - DO_SEL = {STAGE[0] & op16[2], 1'b0}; // FLAGS/ALU80 - ALU160_SEL = 0; // regs - WE = 6'b001x00; // SP - ALU16OP = 5; // dec - next_stage = 1; - REG_WSEL = {1'b0, FETCH[5:4], STAGE[0]}; - REG_RSEL = 4'b101x; // SP - M1 = 0; - WR = 1; - end - 2'b10: begin //stage3 - ALU160_SEL = 1; // PC - WE = 6'b010x00; // PC - end - endcase -// ----------------------- op A, n -------------------- - 4'b0110, 4'b1110: - if(!STAGE[0]) begin // stage1, read n - ALU160_SEL = 1; // pc - DINW_SEL = 1; // DI - WE = 6'b010x01; // PC, lo - next_stage = 1; - REG_WSEL = 4'b011x; // tmpLO - M1 = 0; - end else begin // stage 2 - DINW_SEL = 0; // ALU8OUT[7:0] - ALU160_SEL = 1; // pc - WE = {4'b110x, ~&FETCH[5:3], 1'bx}; // flags, PC, hi - ALU8OP = {2'b00, FETCH[5:3]}; - REG_WSEL = 4'b0110; // A - REG_RSEL = 4'b0111; // tmpLO - end -// ----------------------- RST -------------------- - 4'b0111, 4'b1111: - case(STAGE[1:0]) - 2'b00, 2'b01: begin // stage 1,2 - push pc - DO_SEL = {1'b0, STAGE[0]}; // pc hi/lo - ALU160_SEL = 0; // regs - WE = 6'b001x00; // SP - ALU16OP = 5; // DEC - next_stage = 1; - REG_WSEL = 4'b1xxx; // pc - REG_RSEL = 4'b101x; // sp - M1 = 0; - WR = 1; - end - 2'b10: begin // stage3 - ALU160_SEL = 0; // regs - WE = 6'b010x00; // PC - REG_RSEL = 4'b110x; // const - end - endcase -// ----------------------- RET, EXX, JP (HL), LD SP HL -------------------- - 4'b1001: - case(FETCH[5:4]) - 2'b00: // RET - case(STAGE[1:0]) - 2'b00, 2'b01: begin // stage1, stage2 - pop addr - ALU160_SEL = 0; // regs - DINW_SEL = 1; // DI - WE = {4'b001x, STAGE[0] ? 1'b1 : 1'bx, !STAGE[0]}; // SP, lo/hi - next_stage = 1; - REG_WSEL = 4'b111x; // tmp16 - REG_RSEL = 4'b101x; // SP - M1 = 0; - end - 2'b10: begin // stage3 - jump - ALU160_SEL = 0; // regs - WE = 6'b010x00; // PC - REG_RSEL = 4'b111x; // tmp16 - end - endcase - 2'b01: begin // EXX - ALU160_SEL = 1; // PC - WE = 6'b010x00; // PC - status[1] = 1; - end - 2'b10: begin // JP (HL) - ALU160_SEL = 0; // regs - WE = 6'b010x00; // PC - REG_RSEL = 4'b010x; // HL - end - 2'b11: begin // LD SP,HL - if(!STAGE[0]) begin // stage1 - ALU160_SEL = 0; // regs - WE = 6'b001x00; // SP - ALU16OP = 4; // NOP, no post inc - next_stage = 1; - REG_RSEL = 4'b010x; // HL - M1 = 0; - MREQ = 0; - end else begin // stage2 - ALU160_SEL = 1; // pc - WE = 6'b010x00; // PC - end - end - endcase -// ----------------------- CB, IN A (n), EX DE HL, EI -------------------- - 4'b1011: - case(FETCH[5:4]) - 2'b00: // CB prefix - case({STAGE[0], CPUStatus[4]}) - 2'b00, 2'b11: begin - ALU160_SEL = 1; // PC - WE = 6'b010000; // PC - fetch98 = 2'b10; - M1 = !CPUStatus[4]; // [DD/FD CB disp op] - M1 is inactive during byte read - end - 2'b01: begin - ALU160_SEL = 1; // PC - WE = 6'b010100; // PC, tmpHI - next_stage = 1; - M1 = 0; - end - endcase - 2'b01: // IN A, (n) - case(STAGE[1:0]) - 2'b00: begin //stage1 - read n - ALU160_SEL = 1; // pc - DINW_SEL = 1; // DI - WE = 6'b010x01; // PC, lo - next_stage = 1; - REG_WSEL = 4'b011x; // tmpLO - M1 = 0; - end - 2'b01: begin // stage2 - IN - ALU160_SEL = 0; // regs - DINW_SEL = 1; // DI - WE = 6'b000x1x; // hi - next_stage = 1; - REG_WSEL = 4'b011x; // A - REG_RSEL = 4'b011x; // A - tmpLO - M1 = 0; - MREQ = 0; - IORQ = 1; - end - 2'b10: begin // stage3 - fetch - ALU160_SEL = 1; // PC - WE = 6'b010x00; // PC - end - endcase - 2'b10: begin // EX DE, HL - ALU160_SEL = 1; // PC - WE = 6'b010x00; // PC - if(CPUStatus[1]) status[3] = 1; - else status[2] = 1; - end - 2'b11: begin // EI - ALU160_SEL = 1; // PC - WE = 6'b010x00; // PC - status[11] = 1'b1; - status[7:6] = 2'b11; - end - endcase -// ----------------------- CALL , IX, ED, IY -------------------- - 4'b1101: - case(FETCH[5:4]) - 2'b00: // CALL - case(STAGE[2:0]) - 3'b000, 3'b001: begin // stage 1,2 - load addr - ALU160_SEL = 1; // pc - DINW_SEL = 1; // DI - WE = {4'b010x, STAGE[0] ? 1'b1 : 1'bx, !STAGE[0]}; // PC, hi/lo - next_stage = 1; - REG_WSEL = 4'b111x; // tmp7 - M1 = 0; - end - 3'b010, 3'b011: begin // stage 3,4 - push pc - DO_SEL = {1'b0, STAGE[0]}; // pc hi/lo - ALU160_SEL = 0; // regs - WE = 6'b001x00; // SP - ALU16OP = 5; // DEC - next_stage = 1; - REG_WSEL = 4'b1xxx; // pc - REG_RSEL = 4'b101x; // sp - M1 = 0; - WR = 1; - end - 3'b100: begin // stage5 - jump - ALU160_SEL = 0; // regs - WE = 6'b010x00; // PC - REG_RSEL = 4'b111x; // tmp7 - end - endcase - 2'b01: begin // DD - IX - ALU160_SEL = 1; // PC - WE = 6'b010x00; // PC - status[5:4] = 2'b01; - end - 2'b10: begin // ED prefix - ALU160_SEL = 1; // PC - WE = 6'b010x00; // PC - fetch98 = 2'b01; - end - 2'b11: begin // FD - IY - ALU160_SEL = 1; // PC - WE = 6'b010x00; // PC - status[5:4] = 2'b11; - end - endcase - endcase - -// ------------------------------------------- ED + opcode ---------------------------------------------------- - 4'b0100, 4'b0111: begin // ED + 2'b00, ED + 2'b11 = NOP - ALU160_SEL = 1; // PC - WE = 6'b010x00; // PC - end - 4'b0101: - case(FETCH[2:0]) -// ----------------------- in r (C) -------------------- - 3'b000: - if(!STAGE[0]) begin - ALU160_SEL = 0; // regs - DINW_SEL = 1; // DI - WE = {4'b000x, !opd[3], opd[3]} ; // hi/lo - next_stage = 1; - REG_WSEL = {1'b0, opd[5:4], 1'bx}; - REG_RSEL = 4'b000x; // BC - M1 = 0; - MREQ = 0; - IORQ = 1; - end else begin - ALU160_SEL = 1; // pc - WE = 6'b110x00; // flags, PC - ALU8OP = 29; // IN - REG_RSEL = {1'b0, opd[5:3]}; // reg - end -// ----------------------- out (C) r -------------------- - 3'b001: - if(!STAGE[0]) begin - DO_SEL = 2'b00; // ALU80 - ALU160_SEL = 0; // regs - WE = 6'b000x00; // nothing - next_stage = 1; - REG_WSEL = &opd[5:3] ? 4'b110x : {1'b0, opd[5:3]}; // zero/reg - REG_RSEL = 4'b000x; // BC - M1 = 0; - MREQ = 0; - WR = 1; - IORQ = 1; - end else begin - ALU160_SEL = 1; // pc - WE = 6'b010x00; // PC - end -// ----------------------- SBC16, ADC16 -------------------- - 3'b010: - if(!STAGE[0]) begin // stage1 - DINW_SEL = 0; // ALU8OUT - WE = 6'b100x01; // flags, lo - ALU8OP = {3'b000, !FETCH[3], 1'b1}; // SBC/ADC - next_stage = 1; - REG_WSEL = 4'b0101; // L - REG_RSEL = {op16, 1'b1}; - M1 = 0; - MREQ = 0; - end else begin - ALU160_SEL = 1; // pc - DINW_SEL = 0; // ALU8OUT - WE = 6'b110x10; // flags, PC, hi - ALU8OP = {3'b000, !FETCH[3], 1'b1}; - REG_WSEL = 4'b0100; // H - REG_RSEL = {op16, 1'b0}; - end -// ----------------------- LD (nn) r16, ld r16 (nn) -------------------- - 3'b011: - case(STAGE[2:1]) - 2'b00: begin // stage 1,2 - read address - ALU160_SEL = 1; // pc - DINW_SEL = 1; // DI - WE = {4'b010x, STAGE[0] ? 1'b1 : 1'bx, !STAGE[0]}; // PC, hi/lo - next_stage = 1; - REG_WSEL = 4'b111x; // tmp16 - M1 = 0; - end - 2'b01: begin - ALU160_SEL = 0; // regs - next_stage = 1; - ALU16OP = {2'b00, STAGE[0]}; - REG_RSEL = 4'b111x; // tmp16 - REG_WSEL = {op16, !STAGE[0]}; - M1 = 0; - if(FETCH[3]) begin // LD rr, (nn) - stage3,4 - DINW_SEL = 1; // DI - WE = {4'b000x, STAGE[0] ? 1'b1 : 1'bx, !STAGE[0]}; // lo - end else begin // LD (nn), rr - stage3,4 - DO_SEL = op16[2] ? {1'b1, !STAGE[0]} : 2'b00; // ALU80/sp - WE = 6'b000x00; // nothing - WR = 1; - end - end - 2'b10: // stage5 - if(FETCH[3] & op16[2] & !STAGE[0]) begin // LD sp, (nn) - stage5 - ALU160_SEL = 0; // regs - WE = 6'b001x00; // SP - ALU16OP = 4; // NOP - next_stage = 1; - REG_RSEL = 4'b101x; // tmp SP - M1 = 0; - MREQ = 0; - end else begin - ALU160_SEL = 1; // pc - WE = 6'b010x00; // PC - end - endcase -// ----------------------- NEG -------------------- - 3'b100: begin - ALU160_SEL = 1; // pc - DINW_SEL = 0; // ALU8OUT - WE = 6'b110x10; // flags, PC, hi - ALU8OP = 5'b11111; // NEG - REG_WSEL = 4'b011x; // A - REG_RSEL = 4'b0110; // A - end -// ----------------------- RETN, RETI -------------------- - 3'b101: - case(STAGE[1:0]) - 2'b00, 2'b01: begin // stage1, stage2 - pop addr - ALU160_SEL = 0; // regs - DINW_SEL = 1; // DI - WE = {4'b001x, STAGE[0] ? 1'b1 : 1'bx, !STAGE[0]}; // SP, lo/hi - next_stage = 1; - REG_WSEL = 4'b111x; // tmp16 - REG_RSEL = 4'b101x; // SP - M1 = 0; - end - 2'b10: begin // stage3 - jump - ALU160_SEL = 0; // regs - WE = 6'b010x00; // PC - REG_RSEL = 4'b111x; // tmp16 - status[11] = 1'b1; - status[7:6] = {CPUStatus[7], CPUStatus[7]}; - end - endcase -// ----------------------- IM -------------------- - 3'b110: begin - ALU160_SEL = 1; // PC - WE = 6'b010x00; // PC - status[10:8] = {1'b1, FETCH[4:3]}; - end -// ----------------------- LD I A, LD R A, LD A I, LD A R, RRD, RLD -------------------- - 3'b111: - case(FETCH[5:4]) - 2'b00: begin // LD I/R A - ALU160_SEL = 1; // pc - DINW_SEL = 1'b0; // ALU8OUT - WE = {4'b010x, !FETCH[3], FETCH[3]}; // PC, hi/lo - ALU8OP = 29; // pass D1 - REG_WSEL = 4'b1001; // IR, write r - REG_RSEL = 4'b0110; // A - end - 2'b01: begin // LD A I/R - ALU160_SEL = 1; // pc - DINW_SEL = 1'b0; // ALU8OUT - WE = 6'b110x1x; // flags, PC, hi - ALU8OP = 29; // PASS D1 - REG_WSEL = 4'b011x; // A - REG_RSEL = {3'b100, FETCH[3]};// I/R - end - 2'b10: // RRD, RLD - case(STAGE[1:0]) - 2'b00:begin // stage1, read data - ALU160_SEL = 0; // regs - DINW_SEL = 1; // DI - WE = 6'b000x01; // lo - next_stage = 1; - REG_WSEL = 4'b011x; // tmpLO - REG_RSEL = 4'b010x; // HL - M1 = 0; - end - 2'b01: begin // stage2, shift data - DINW_SEL = 0; // ALU8OUT - WE = 6'b100x11; // flags, hi, lo - ALU8OP = FETCH[3] ? 5'b01100 : 5'b01011; // RRD/RLD - next_stage = 1; - REG_WSEL = 4'b0110; // A - REG_RSEL = 4'b0111; // tmpLO - M1 = 0; - MREQ = 0; - end - 2'b10: begin // stage3 - write - DO_SEL = 2'b00; // ALU80 - ALU160_SEL = 0; // regs - WE = 6'b000x0x; // nothing - next_stage = 1; - REG_WSEL = 4'b0111; // tmpLO - REG_RSEL = 4'b010x; // HL - M1 = 0; - WR = 1; - end - 2'b11: begin - ALU160_SEL = 1; // PC - WE = 6'b010x00; // PC - end - endcase - 2'b11: begin // NOP - ALU160_SEL = 1; // PC - WE = 6'b010x00; // PC - end - endcase - endcase -// ----------------------- block instructions -------------------- - 4'b0110: - if({FETCH[5], FETCH[2]} == 4'b10) - case(FETCH[1:0]) - 2'b00: // LDI, LDD, LDIR, LDDR - case(STAGE[1:0]) - 2'b00: begin // stage1, read data, inc/dec HL - ALU160_SEL = 0; // regs - DINW_SEL = 0; // ALU8OUT - WE = 6'b100111; // flags, tmpHI, hi, lo - ALU8OP = {4'b0111, FETCH[3]}; // INC/DEC16 - next_stage = 1; - REG_WSEL = 4'b0100; // H - REG_RSEL = 4'b0101; // L - M1 = 0; - end - 2'b01: begin // stage2, dec BC - DINW_SEL = 0; // ALU8OUT - WE = 6'b100011; // flags, hi, lo (affects PF only) - ALU8OP = 5'b01111; // DEC - next_stage = 1; - REG_WSEL = 4'b0000; // B - REG_RSEL = 4'b0001; // C - M1 = 0; - MREQ = 0; - end - 2'b10: begin // stage2, write data, inc/dec DE - DO_SEL = 2'b01; // th - ALU160_SEL = 0; // regs - DINW_SEL = 0; // ALU8OUT - WE = 6'b000x11; // hi, lo - ALU8OP = {4'b0111, FETCH[3]}; // INC / DEC - next_stage = FETCH[4] ? !FLAGS[2] : 1'b1; - REG_WSEL = 4'b0010; // D - REG_RSEL = 4'b0011; // E - M1 = 0; - WR = 1; - end - 2'b11: begin - ALU160_SEL = 1; // PC - WE = 6'b010x00; // PC - end - endcase - 2'b01: // CPI, CPD, CPIR, CPDR - case(STAGE[1:0]) - 2'b00: begin // stage1, load data - ALU160_SEL = 0; // regs - DINW_SEL = 1; // DI - WE = 6'b000x01; // lo - next_stage = 1; - REG_WSEL = 4'b011x; // tmpLO - REG_RSEL = 4'b010x; // HL - M1 = 0; - end - 2'b01: begin // stage2, CP - WE = 6'b100x0x; // flags - ALU8OP = 7; // CP - next_stage = 1; - REG_WSEL = 4'b0110; // A - REG_RSEL = 4'b0111; // tmpLO - M1 = 0; - MREQ = 0; - end - 2'b10: begin // stage3, dec BC - DINW_SEL = 0; // ALU8OUT - WE = 6'b100x11; // flags, hi, lo - ALU8OP = 5'b01111; // DEC16 - next_stage = 1; - REG_WSEL = 4'b0000; // B - REG_RSEL = 4'b0001; // C - M1 = 0; - MREQ = 0; - end - 2'b11: begin // stage4, inc/dec HL - ALU160_SEL = 1; // pc - DINW_SEL = 0; // ALU8OUT - M1 = FETCH[4] ? (!FLAGS[2] || FLAGS[6]) : 1'b1; - WE = {1'b0, M1, 4'b0x11}; // PC, hi, lo - ALU8OP = {4'b0111, FETCH[3]}; // INC / DEC - REG_WSEL = 4'b0100; // H - REG_RSEL = 4'b0101; // L - MREQ = M1; - end - endcase - 2'b10: // INI, IND, INIR, INDR - case(STAGE[1:0]) - 2'b00: begin // stage1, in data, dec B - ALU160_SEL = 0; // regs - DINW_SEL = 0; // ALU8OUT - WE = 6'b100110; // flags, tmpHI, hi - ALU8OP = 10; // DEC - next_stage = 1; - REG_WSEL = 4'b0000; // B - REG_RSEL = 4'b000x; // BC - M1 = 0; - MREQ = 0; - IORQ = 1; - end - 2'b01: begin // stage2, write data, inc/dec HL - DO_SEL = 2'b01; // th - ALU160_SEL = 0; // regs - DINW_SEL = 0; // ALU8OUT - WE = 6'b000x11; // hi, lo - ALU8OP = {4'b0111, FETCH[3]}; // INC / DEC - next_stage = FETCH[4] ? FLAGS[6] : 1'b1; - REG_WSEL = 4'b0100; // H - REG_RSEL = 4'b0101; // L - M1 = 0; - WR = 1; - end - 2'b10: begin // stage3 - ALU160_SEL = 1; // pc - WE = 6'b010x00; // PC - end - endcase - 2'b11: // OUTI/OUTD/OTIR/OTDR - case(STAGE[1:0]) - 2'b00: begin // stage1, load data, inc/dec HL - ALU160_SEL = 0; // regs - DINW_SEL = 0; // ALU8OUT - WE = 6'b000111; // tmpHI, hi, lo - ALU8OP = {4'b0111, FETCH[3]}; // INC / DEC - next_stage = 1; - REG_WSEL = 4'b0100; // H - REG_RSEL = 4'b0101; // L - M1 = 0; - end - 2'b01: begin // stage2, out data, dec B - DO_SEL = 2'b01; // th - ALU160_SEL = 0; // regs - DINW_SEL = 0; // ALU8OUT - WE = 6'b100x10; // flags, hi - ALU8OP = 10; // DEC - next_stage = FETCH[4] ? (ALU80 == 8'b00000001) : 1'b1; - REG_WSEL = 4'b0000; // B - REG_RSEL = 4'b000x; // BC - M1 = 0; - MREQ = 0; - IORQ = 1; - WR = 1; - end - 2'b10: begin // stage3 - ALU160_SEL = 1; // pc - WE = 6'b010x00; // PC - end - endcase - endcase - else begin // NOP - ALU160_SEL = 1; // PC - WE = 6'b010x00; // PC - end -//------------------------------------------- CB + opcode ---------------------------------------------------- - 4'b1000, 4'b1001, 4'b1010, 4'b1011: // CB class (rot/shift, bit/res/set) - case({STAGE[1:0], CPUStatus[4], op0mem}) - 4'b00_0_0: begin // execute reg-reg - DINW_SEL = 0; // ALU8OUT - ALU160_SEL = 1; // pc - WE = {!FETCH[7], 3'b10x, FETCH[7:6] == 2'b01 ? 2'b00 : {!opd[0], opd[0]}}; // flags, hi/lo - ALU8OP = 28; // BIT - REG_WSEL = {1'b0, opd[2:0]}; - end - 4'b00_0_1, 4'b00_1_0, 4'b00_1_1: begin // stage1, (HL-X) - read data - ALU160_SEL = 0; // regs - DINW_SEL = 1; // DI - WE = opd[0] ? 6'b000001 : 6'b000010; // lo/hi - ALU16OP = CPUStatus[4] ? 3'd3 : 3'd0; // ADD - NOP - next_stage = 1; - REG_WSEL = FETCH[7:6] == 2'b01 ? 4'b111x : {1'b0, opd[2:0]}; // dest, tmp16 for BIT - REG_RSEL = 4'b010x; // HL - M1 = 0; - end - 4'b01_0_1, 4'b01_1_0, 4'b01_1_1: // stage2 (HL-X) - execute, write - case(FETCH[7:6]) - 2'b00, 2'b10, 2'b11: begin // exec + write - DINW_SEL = 0; // ALU8OUT - DO_SEL = 2'b11; // ALU8OUT[7:0] - ALU160_SEL = 0; // regs - WE = {!FETCH[7], 3'b00x, !opd[0], opd[0]}; // flags, hi/lo - ALU8OP = 28; - ALU16OP = CPUStatus[4] ? 3'd3 : 3'd0; - next_stage = 1; - REG_WSEL = {1'b0, opd[2:0]}; - REG_RSEL = 4'b010x; // HL - M1 = 0; - WR = 1; - end - 2'b01: begin // BIT, no write - ALU160_SEL = 1; // pc - WE = 6'b110xxx; // flags, PC - ALU8OP = 28; // BIT - REG_WSEL = {3'b111, opd[0]}; // tmp - end - endcase - 4'b10_0_1, 4'b10_1_0, 4'b10_1_1: begin // (HL-X) - load next op - ALU160_SEL = 1; // pc - WE = 6'b010x00; // PC - end - endcase -//------------------------------------------- // RST, NMI, INT ---------------------------------------------------- - 4'b1110: begin // RESET: IR <- 0, IM <- 0, IFF1,IFF2 <- 0, pC <- 0 - ALU160_SEL = 0; // regs - DINW_SEL = 0; // ALU8OUT - WE = 6'bx1xx11; // PC, hi, lo - ALU8OP = 29; // pass D1 - ALU16OP = 4; // NOP - REG_WSEL = 4'b1001; // IR, write r - REG_RSEL = 4'b110x; // const - M1 = 0; - MREQ = 0; - status[11:6] = 6'b110000; // IM0, DI - end - 4'b1101: // NMI - case(STAGE[1:0]) - 2'b00: begin - ALU160_SEL = 1; // pc - WE = 6'b010x00; // PC - ALU16OP = intop; // DEC/DEC2 (if block instruction interrupted) - next_stage = 1; - M1 = 0; - MREQ = 0; - end - 2'b01, 2'b10: begin - DO_SEL = {1'b0, !STAGE[0]}; // pc hi/lo - ALU160_SEL = 0; // regs - WE = 6'b001x00; // SP - ALU16OP = 5; // DEC - next_stage = 1; - REG_WSEL = 4'b1xxx; // pc - REG_RSEL = 4'b101x; // sp - M1 = 0; - WR = 1; - status[11] = 1'b1; - status[7:6] = {CPUStatus[7], 1'b0}; // reset IFF1 - end - 2'b11: begin - ALU160_SEL = 0; // regs - WE = 6'b010x00; // PC - REG_RSEL = 4'b110x; // const - end - endcase - 4'b1100: // INT - case(CPUStatus[9:8]) - 2'b00, 2'b01, 2'b10: begin // IM0, IM1 - ALU160_SEL = 1; // pc - WE = 6'b010x00; // PC - ALU16OP = intop; // DEC/DEC2 (if block instruction interrupted) - MREQ = 0; - IORQ = 1; - status[11] = 1'b1; - status[7:6] = 2'b0; // reset IFF1, IFF2 - end - 2'b11: // IM2 - case(STAGE[2:0]) - 3'b000: begin - ALU160_SEL = 1; // pc - DINW_SEL = 1; // DI - WE = 6'b010x01; // PC, lo - ALU16OP = intop; // DEC/DEC2 (if block instruction interrupted) - next_stage = 1; - REG_WSEL = 4'b1000; // Itmp, no write r - MREQ = 0; - IORQ = 1; - status[11] = 1'b1; - status[7:6] = 2'b0; // reset IFF1, IFF2 - end - 3'b001, 3'b010: begin // push pc - DO_SEL = {1'b0, !STAGE[0]}; // pc hi/lo - ALU160_SEL = 0; // regs - WE = 6'b001x00; // SP - ALU16OP = 5; // DEC - next_stage = 1; - REG_WSEL = 4'b1xxx; // pc - REG_RSEL = 4'b101x; // sp - M1 = 0; - WR = 1; - end - 3'b011, 3'b100: begin // read address - ALU160_SEL = 0; // regs - DINW_SEL = 1; // DI - WE = {4'b0x0x, STAGE[0] ? 1'bx : 1'b1, STAGE[0]}; // hi/lo - ALU16OP = {2'b00, !STAGE[0]};// NOP/INC - next_stage = 1; - REG_WSEL = 4'b111x; // tmp16 - REG_RSEL = 4'b1000; // I-Itmp - M1 = 0; - end - 3'b101: begin // jump - ALU160_SEL = 0; // regs - WE = 6'b010x00; // PC - REG_RSEL = 4'b111x; // tmp16 - end - endcase - endcase - endcase - end - -endmodule diff --git a/Computer_MiST/Laser310_MiST/rtl/NextZ80/NextZ80Reg.v b/Computer_MiST/Laser310_MiST/rtl/NextZ80/NextZ80Reg.v deleted file mode 100644 index 65d99661..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/NextZ80/NextZ80Reg.v +++ /dev/null @@ -1,199 +0,0 @@ -////////////////////////////////////////////////////////////////////////////////// -// -// This file is part of the NextZ80 project -// http://www.opencores.org/cores/nextz80/ -// -// Filename: NextZ80Regs.v -// Description: Implementation of Z80 compatible CPU - registers -// Version 1.0 -// Creation date: 28Jan2011 - 18Mar2011 -// -// Author: Nicolae Dumitrache -// e-mail: ndumitrache@opencores.org -// -///////////////////////////////////////////////////////////////////////////////// -// -// Copyright (C) 2011 Nicolae Dumitrache -// -// This source file may be used and distributed without -// restriction provided that this copyright statement is not -// removed from the file and that any derivative work contains -// the original copyright notice and the associated disclaimer. -// -// This source file is free software; you can redistribute it -// and/or modify it under the terms of the GNU Lesser General -// Public License as published by the Free Software Foundation; -// either version 2.1 of the License, or (at your option) any -// later version. -// -// This source 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 Lesser General Public License for more -// details. -// -// You should have received a copy of the GNU Lesser General -// Public License along with this source; if not, download it -// from http://www.opencores.org/lgpl.shtml -// -/////////////////////////////////////////////////////////////////////////////////// -`timescale 1ns / 1ps - -module Z80Reg( - input wire [7:0]rstatus, // 0=af-af', 1=exx, 2=hl-de, 3=hl'-de',4=hl-ixy, 5=ix-iy, 6=IFF1, 7=IFF2 - input wire M1, - input wire [5:0]WE, // 5 = flags, 4 = PC, 3 = SP, 2 = tmpHI, 1 = hi, 0 = lo - input wire CLK, - input wire [15:0]ALU8OUT, // CPU data out bus (output of alu8) - input wire [7:0]DI, // CPU data in bus - output reg [7:0]DO, // CPU data out bus - input wire [15:0]ADDR, // CPU addr bus - input wire [7:0]CONST, - output reg [7:0]ALU80, - output reg [7:0]ALU81, - output reg [15:0]ALU160, - output wire[7:0]ALU161, - input wire [7:0]ALU8FLAGS, - output wire [7:0]FLAGS, - - input wire [1:0]DO_SEL, // select DO betwen ALU8OUT lo and th register - input wire ALU160_sel, // 0=REG_RSEL, 1=PC - input wire [3:0]REG_WSEL, // rdow: [3:1] 0=BC, 1=DE, 2=HL, 3=A-TL, 4=I-x ----- [0] = 0HI,1LO - input wire [3:0]REG_RSEL, // mux_rdor: [3:1] 0=BC, 1=DE, 2=HL, 3=A-TL, 4=I-R, 5=SP, 7=tmpSP ----- [0] = 0HI, 1LO - input wire DINW_SEL, // select RAM write data between (0)ALU8OUT, and 1(DI) - input wire XMASK, // 0 if REG_WSEL should not use IX, IY, even if rstatus[4] == 1 - input wire [2:0]ALU16OP, // ALU16OP - input wire WAIT // wait - ); - -// latch registers - reg [15:0]pc=0; // program counter - reg [15:0]sp; // stack pointer - reg [7:0]r; // refresh - reg [15:0]flg = 0; - reg [7:0]th; // temp high - -// internal wires - wire [15:0]rdor; // R out from RAM - wire [15:0]rdow; // W out from RAM - wire [3:0]SELW; // RAM W port sel - wire [3:0]SELR; // RAM R port sel - reg [15:0]DIN; // RAM W in data - reg [15:0]mux_rdor; // (3)A reversed mixed with TL, (4)I mixed with R (5)SP - -//------------------------------------ RAM block registers ---------------------------------- -// 0:BC, 1:DE, 2:HL, 3:A-x, 4:I-x, 5:IX, 6:IY, 7:x-x, 8:BC', 9:DE', 10:HL', 11:A'-x, 12: tmpSP, 13:zero - RAM16X8D_regs regs_lo ( - .DPO(rdor[7:0]), // Read-only data output - .SPO(rdow[7:0]), // R/W data output - .A(SELW), // R/W address - .D(DIN[7:0]), // Write data input - .DPRA(SELR), // Read-only address - .WCLK(CLK), // Write clock input - .WE(WE[0] & !WAIT) // Write enable input - ); - - RAM16X8D_regs regs_hi ( - .DPO(rdor[15:8]), // Read-only data output - .SPO(rdow[15:8]), // R/W data output - .A(SELW), // R/W address - .D(DIN[15:8]), // Write data input - .DPRA(SELR), // Read-only address - .WCLK(CLK), // Write clock input - .WE(WE[1] & !WAIT) // Write enable input - ); - - wire [15:0]ADDR1 = ADDR + !ALU16OP[2]; // address post increment - wire [7:0]flgmux = {ALU8FLAGS[7:3], SELR[3:0] == 4'b0100 ? rstatus[7] : ALU8FLAGS[2], ALU8FLAGS[1:0]}; // LD A, I/R IFF2 flag on parity - always @(posedge CLK) - if(!WAIT) begin - if(WE[2]) th <= DI; - if(WE[3]) sp <= ADDR1; - if(WE[4]) pc <= ADDR1; - if({REG_WSEL, WE[0]} == 5'b10011) r <= ALU8OUT[7:0]; - else if(M1) r[6:0] <= r[6:0] + 1; - if(WE[5]) - if(rstatus[0]) flg[15:8] <= flgmux; - else flg[7:0] <= flgmux; - end - - assign ALU161 = th; - assign FLAGS = rstatus[0] ? flg[15:8] : flg[7:0]; - - always @* begin - DIN = DINW_SEL ? {DI, DI} : ALU8OUT; - ALU80 = REG_WSEL[0] ? rdow[7:0] : rdow[15:8]; - ALU81 = REG_RSEL[0] ? mux_rdor[7:0] : mux_rdor[15:8]; - ALU160 = ALU160_sel ? pc : mux_rdor; - - case({REG_WSEL[3], DO_SEL}) - 0: DO = ALU80; - 1: DO = th; - 2: DO = FLAGS; - 3: DO = ALU8OUT[7:0]; - 4: DO = pc[15:8]; - 5: DO = pc[7:0]; - 6: DO = sp[15:8]; - 7: DO = sp[7:0]; - endcase - case({ALU16OP == 4, REG_RSEL[3:0]}) - 5'b01001, 5'b11001: mux_rdor = {rdor[15:8], r}; - 5'b01010, 5'b01011: mux_rdor = sp; - 5'b01100, 5'b01101, 5'b11100, 5'b11101: mux_rdor = {8'b0, CONST}; - default: mux_rdor = rdor; - endcase - end - - RegSelect WSelectW(.SEL(REG_WSEL[3:1]), .RAMSEL(SELW), .rstatus({rstatus[5], rstatus[4] & XMASK, rstatus[3:0]})); - RegSelect WSelectR(.SEL(REG_RSEL[3:1]), .RAMSEL(SELR), .rstatus(rstatus[5:0])); - -endmodule - - -module RegSelect( - input [2:0]SEL, - output reg [3:0]RAMSEL, - input [5:0]rstatus // 0=af-af', 1=exx, 2=hl-de, 3=hl'-de',4=hl-ixy, 5=ix-iy - ); - - always @* begin - RAMSEL = 4'bxxxx; - case(SEL) - 0: RAMSEL = {rstatus[1], 3'b000}; // BC - 1: //DE - if(rstatus[{1'b1, rstatus[1]}]) RAMSEL = {rstatus[1], 3'b010}; // HL - else RAMSEL = {rstatus[1], 3'b001}; // DE - 2: // HL - case({rstatus[5:4], rstatus[{1'b1, rstatus[1]}]}) - 0,4: RAMSEL = {rstatus[1], 3'b010}; // HL - 1,5: RAMSEL = {rstatus[1], 3'b001}; // DE - 2,3: RAMSEL = 4'b0101; // IX - 6,7: RAMSEL = 4'b0110; // IY - endcase - 3: RAMSEL = {rstatus[0], 3'b011}; // A-TL - 4: RAMSEL = 4; // I-R - 5: RAMSEL = 12; // tmp SP - 6: RAMSEL = 13; // zero - 7: RAMSEL = 7; // temp reg for BIT/SET/RES - endcase - end -endmodule - -module RAM16X8D_regs( - output [7:0]DPO, // Read-only data output - output [7:0]SPO, // R/W data output - input [3:0]A, // R/W address - input [7:0]D, // Write data input - input [3:0]DPRA, // Read-only address - input WCLK, // Write clock - input WE // Write enable - ); - - reg [7:0]data[15:0]; - assign DPO = data[DPRA]; - assign SPO = data[A]; - - always @(posedge WCLK) - if(WE) data[A] <= D; - -endmodule diff --git a/Computer_MiST/Laser310_MiST/rtl/PIXEL_DISPLAY.v b/Computer_MiST/Laser310_MiST/rtl/PIXEL_DISPLAY.v deleted file mode 100644 index 585fea04..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/PIXEL_DISPLAY.v +++ /dev/null @@ -1,296 +0,0 @@ -module PIXEL_DISPLAY ( - pixel_clock, - reset, - - show_border, - - // mode - ag, - gm, - css, - - // text - char_column, - char_line, - subchar_line, - subchar_pixel, - - // graph - graph_pixel, - graph_line_2x, - graph_line_3x, - - // vram - vram_rd_enable, - vram_addr, - vram_data, - - // vga - vga_red, - vga_green, - vga_blue -); - -input pixel_clock; -input reset; - -input show_border; - -// mode -input ag; -input [2:0] gm; -input css; - -// text -input [6:0] char_column; // character number on the current line -input [6:0] char_line; // line number on the screen -input [4:0] subchar_line; // the line number within a character block 0-8 -input [3:0] subchar_pixel; // the pixel number within a character block 0-8 - -// graph -input [8:0] graph_pixel; // pixel number on the current line -input [9:0] graph_line_2x; // line number on the screen -input [9:0] graph_line_3x; // line number on the screen - -output vram_rd_enable; -output reg [12:0] vram_addr; -input [7:0] vram_data; - -output [7:0] vga_red; -output [7:0] vga_green; -output [7:0] vga_blue; - - -//// Label Definitions //// - -// Note: all labels must match their defined length--shorter labels will be padded with solid blocks, -// and longer labels will be truncated - -// 48 character label for the example text - -wire pixel_on; // high => output foreground color, low => output background color - - -// 8p 代表每个点占用VGA水平 8 pixel -// 2bit 代表每个点取2位值 - -wire [1:0] pixel_8p_2bit; // high => output foreground color, low => output background color -wire [1:0] pixel_4p_2bit; // high => output foreground color, low => output background color -wire pixel_4p_1bit; // high => output foreground color, low => output background color -wire pixel_2p_1bit; // high => output foreground color, low => output background color - -reg [7:0] latched_vram_data; // the data that will be written to character memory at the clock rise - -// 锁存数据用于选择调色板 -reg [7:0] latched_palette_data; - -assign vram_rd_enable = pixel_clock; - -reg [23:0] latched_vga_rgb; -wire [23:0] vga_rgb; - -// write the appropriate character data to memory - -always @ (posedge pixel_clock) begin - if(ag==1'b0) - begin - if(subchar_pixel==4'b0001) - vram_addr <= {4'b0,char_line[3:0], char_column[4:0]}; - // 对于同步sram需要等待 1 个时钟周期 - if(subchar_pixel==4'b0011) - latched_vram_data <= vram_data; - if(graph_pixel[3:0]==4'b0110) - latched_palette_data <= latched_vram_data; - end - else - begin - case(gm) - 3'b000: - begin - // 64 x 64 x 4 gm: 000 - if(graph_pixel[4:0]==5'b00001) - vram_addr <= {3'b0, graph_line_3x[9:4], graph_pixel[8:5]}; - // 对于同步sram需要等待 1 个时钟周期 - if(graph_pixel[4:0]==5'b00011) - latched_vram_data <= vram_data; - end - 3'b001: - begin - // 128 x 64 x 2 gm: 001 - if(graph_pixel[4:0]==5'b00001) - vram_addr <= {3'b0, graph_line_3x[9:4], graph_pixel[8:5]}; - // 对于同步sram需要等待 1 个时钟周期 - if(graph_pixel[4:0]==5'b00011) - latched_vram_data <= vram_data; - end - 3'b011: - begin - // 128 x 96 x 2 gm: 011 - if(graph_pixel[4:0]==5'b00001) - vram_addr <= {2'b0, graph_line_2x[9:3], graph_pixel[8:5]}; - // 对于同步sram需要等待 1 个时钟周期 - if(graph_pixel[4:0]==5'b00011) - latched_vram_data <= vram_data; - end - 3'b100: - begin - // 128 x 96 x 4 gm: 100 - if(graph_pixel[3:0]==4'b0001) - vram_addr <= {1'b0, graph_line_2x[8:1], graph_pixel[8:4]}; - // 对于同步sram需要等待 1 个时钟周期 - if(graph_pixel[3:0]==4'b0011) - latched_vram_data <= vram_data; - end - 3'b101: - begin - // 128 x 192 x 2 gm: 101 - if(graph_pixel[4:0]==5'b00001) - vram_addr <= {1'b0, graph_line_2x[9:1], graph_pixel[8:5]}; - // 对于同步sram需要等待 1 个时钟周期 - if(graph_pixel[4:0]==5'b00011) - latched_vram_data <= vram_data; - end - 3'b110: - begin - // 128 x 192 x 4 gm: 110 - if(graph_pixel[3:0]==4'b0001) - vram_addr <= {graph_line_2x[9:1], graph_pixel[8:4]}; - // 对于同步sram需要等待 1 个时钟周期 - if(graph_pixel[3:0]==4'b0011) - latched_vram_data <= vram_data; - end - 3'b111: - begin - // 256 x 192 x 2 gm: 111 - if(graph_pixel[3:0]==4'b0001) - vram_addr <= {graph_line_2x[9:1], graph_pixel[8:4]}; - // 对于同步sram需要等待 1 个时钟周期 - if(graph_pixel[3:0]==4'b0011) - latched_vram_data <= vram_data; - end - default: - begin - // 128 x 64 x 4 gm: 010 - if(graph_pixel[3:0]==4'b0001) - vram_addr <= {2'b0,graph_line_3x[9:3], graph_pixel[8:4]}; - //vram_addr <= {2'b0,graph_line_3x[8:3], graph_pixel[6:2]}; - // 对于同步sram需要等待 1 个时钟周期 - if(graph_pixel[3:0]==4'b0011) - latched_vram_data <= vram_data; - end - endcase - end - latched_vga_rgb <= vga_rgb; -end - -// palette -/* -位\色 绿 黄 蓝 红 浅黄 浅蓝 紫 橙 -D6 0 0 0 0 1 1 1 1 -D5 0 0 1 1 0 0 1 1 -D4 0 1 0 1 0 1 0 1 - -0x07 0xff 0x00 // GREEN -0xff 0xff 0x00 // YELLOW -0x3b 0x08 0xff // BLUE -0xcc 0x00 0x3b // RED -0xff 0xff 0xff // BUFF -0x07 0xe3 0x99 // CYAN -0xff 0x1c 0xff // MAGENTA -0xff 0x81 0x00 // ORANGE - -0x00 0x00 0x00 // BLACK -0x07 0xff 0x00 // GREEN -0x3b 0x08 0xff // BLUE -0xff 0xff 0xff // BUFF - -*/ - -wire [2:0] palette_bit_graph; - -wire [23:0] palette_rgb_border = (~ag)?24'h000000: // 字符模式背景 - (css)?24'hffffff:24'h07ff00; // 图形模式背景 - -wire [23:0] palette_rgb_pixel = 24'h000000; -wire [23:0] palette_rgb_background = 24'h07ff00; - -// 64 x 64 x 4 gm: 000 -// 128 x 64 x 2 gm: 001 -// 128 x 64 x 4 gm: 010 -// 128 x 96 x 2 gm: 011 -// 128 x 96 x 4 gm: 100 -// 128 x 192 x 2 gm: 101 -// 128 x 192 x 4 gm: 110 -// 256 x 192 x 2 gm: 111 - -//assign palette_bit_graph = (ag)? {css, pixel_4p_2bit} : latched_palette_data[6:4]; - -assign palette_bit_graph = (~ag) ? latched_palette_data[6:4] : - (gm==3'b000) ? {css, pixel_8p_2bit } : - (gm==3'b001) ? {css, pixel_4p_1bit, pixel_4p_1bit } : - (gm==3'b010) ? {css, pixel_4p_2bit } : - (gm==3'b011) ? {css, pixel_4p_1bit, pixel_4p_1bit } : - (gm==3'b100) ? {css, pixel_4p_2bit } : - (gm==3'b101) ? {css, pixel_4p_1bit, pixel_4p_1bit } : - (gm==3'b110) ? {css, pixel_4p_2bit } : - {css, pixel_2p_1bit, pixel_2p_1bit } ; - -wire [23:0] palette_rgb_graph = (palette_bit_graph==3'b000) ? 24'h07ff00 : // GREEN - (palette_bit_graph==3'b001) ? 24'hffff00 : // YELLOW - (palette_bit_graph==3'b010) ? 24'h3b08ff : // BLUE - (palette_bit_graph==3'b011) ? 24'hcc003b : // RED - (palette_bit_graph==3'b100) ? 24'hffffff : // BUFF - (palette_bit_graph==3'b101) ? 24'h07e399 : // CYAN - (palette_bit_graph==3'b110) ? 24'hff1cff : // MAGENTA - 24'hff8100 ; // ORANGE - -/* - 24'h000000 // BLACK - 24'h07ff00 // GREEN - 24'h3b08ff // BLUE - 24'hffffff // BUFF -*/ - - -// use the result of the character generator module to choose between the foreground and background color - -assign vga_rgb = (show_border) ? palette_rgb_border : - (ag) ? palette_rgb_graph : - (~pixel_on) ? palette_rgb_pixel : - (latched_palette_data[7]) ? palette_rgb_graph : palette_rgb_background; - -assign vga_red = latched_vga_rgb[23:16]; -assign vga_green = latched_vga_rgb[15:8]; -assign vga_blue = latched_vga_rgb[7:0]; - - -// the character generator block includes the character RAM -// and the character generator ROM -CHAR_GEN CHAR_GEN -( - .reset(reset), // reset signal - - .char_code(latched_vram_data), - .subchar_line(subchar_line), // current line of pixels within current character - .subchar_pixel(subchar_pixel), // current column of pixels withing current character - - .pixel_clock(pixel_clock), // read clock - .pixel_on(pixel_on) // read data -); - -PIXEL_GEN PIXEL_GEN -( - .reset(reset), // reset signal - - .pixel_code(latched_vram_data), - .graph_pixel(graph_pixel), // current column of pixels withing current character - - .pixel_clock(pixel_clock), // read clock - - .pixel_8p_2bit(pixel_8p_2bit), // 64x64x4 - .pixel_4p_2bit(pixel_4p_2bit), // 128x64x4 128x96x4 128x192x4 - .pixel_4p_1bit(pixel_4p_1bit), // 128x64x2 128x96x2 128x192x2 - .pixel_2p_1bit(pixel_2p_1bit) // 256x192x2 -); - -endmodule //CHAR_DISPLAY diff --git a/Computer_MiST/Laser310_MiST/rtl/PIXEL_GEN.v b/Computer_MiST/Laser310_MiST/rtl/PIXEL_GEN.v deleted file mode 100644 index cc2f61f3..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/PIXEL_GEN.v +++ /dev/null @@ -1,129 +0,0 @@ -module PIXEL_GEN( - // control - reset, - - pixel_code, - graph_pixel, - - pixel_clock, - - pixel_8p_2bit, // 64x64x4 - pixel_4p_2bit, // 128x64x4 128x96x4 128x192x4 - pixel_4p_1bit, // 128x64x2 128x96x2 128x192x2 - pixel_2p_1bit // 256x192x2 -); - - -input reset; - -input [7:0] pixel_code; -input [8:0] graph_pixel; // pixel number on the current line - -input pixel_clock; - -output reg [1:0] pixel_8p_2bit; -output reg [1:0] pixel_4p_2bit; -output reg pixel_4p_1bit; -output reg pixel_2p_1bit; - -reg [7:0] latched_8p_2bit_data; -reg [7:0] latched_4p_2bit_data; -reg [7:0] latched_4p_1bit_data; -reg [7:0] latched_2p_1bit_data; - - -// 移位寄存器有四种模式 -// 每2个点 移 1 位 -// 每4个点 移 2 位 -// 每4个点 移 1 位 -// 每8个点 移 2 位 - - -// serialize the GRAPH MODE data -always @ (posedge pixel_clock or posedge reset) begin - if (reset) - begin - pixel_8p_2bit <= 2'b00; - latched_8p_2bit_data <= 8'h00; - end - else begin - case(graph_pixel[4:0]) - 5'b00101: - latched_8p_2bit_data[7:0] <= pixel_code; - default: - if(graph_pixel[3:0]==3'b110) - {pixel_8p_2bit,latched_8p_2bit_data[7:2]} <= latched_8p_2bit_data[7:0]; - endcase - end - - end - - -// 延时:图形模式 128x64 4色 -// 1、(001)锁存 vram 地址,2、(010)读取 vram 3、(011)锁存 vram 数据 4、(100)空 5、(101)数据锁存至移位寄存器 -// 6、(110)移位得到点阵 7、(111)建立调色板,锁存色彩 - -// serialize the GRAPH MODE data -always @ (posedge pixel_clock or posedge reset) begin - if (reset) - begin - pixel_4p_2bit <= 2'b00; - latched_4p_2bit_data <= 8'h00; - end - else begin - case(graph_pixel[3:0]) - 4'b0101: - latched_4p_2bit_data[7:0] <= pixel_code; - default: - if(graph_pixel[1:0]==2'b10) - {pixel_4p_2bit,latched_4p_2bit_data[7:2]} <= latched_4p_2bit_data[7:0]; - endcase - end - - end - - -// serialize the GRAPH MODE data -always @ (posedge pixel_clock or posedge reset) begin - if (reset) - begin - pixel_4p_1bit <= 2'b00; - latched_4p_1bit_data <= 8'h00; - end - else begin - case(graph_pixel[4:0]) - 5'b00101: - latched_4p_1bit_data[7:0] <= pixel_code; - default: - if(graph_pixel[1:0]==2'b10) - {pixel_4p_1bit,latched_4p_1bit_data[7:1]} <= latched_4p_1bit_data[7:0]; - endcase - end - - end - - -// 延时:图形模式 256x192 2色 -// 1、(001)锁存 vram 地址,2、(010)读取 vram 3、(011)锁存 vram 数据 4、(100)空 5、(101)数据锁存至移位寄存器 -// 6、(110)移位得到点阵 7、(111)建立调色板,锁存色彩 - -// serialize the GRAPH MODE data -always @ (posedge pixel_clock or posedge reset) begin - if (reset) - begin - pixel_2p_1bit <= 1'b0; - latched_2p_1bit_data <= 8'h00; - end - else begin - case(graph_pixel[3:0]) - 4'b0101: - latched_2p_1bit_data[7:0] <= pixel_code; - default: - if(graph_pixel[0]==1'b0) - {pixel_2p_1bit,latched_2p_1bit_data[7:1]} <= latched_2p_1bit_data[7:0]; - endcase - end - - end - -endmodule //PIXEL_GEN diff --git a/Computer_MiST/Laser310_MiST/rtl/SVGA_DEFINES.v b/Computer_MiST/Laser310_MiST/rtl/SVGA_DEFINES.v deleted file mode 100644 index 85aa9901..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/SVGA_DEFINES.v +++ /dev/null @@ -1,260 +0,0 @@ -/* ---------------------------------------------------------------------------------- -To select a resolution and refresh rate, remove the comments around the desired -block in this file. The pixel clock output by the DCM module should approximately -equal the rate specified above the timing block that is uncommented. ---------------------------------------------------------------------------------- -*/ - -// DEFINE THE VARIOUS PIPELINE DELAYS - -`define CHARACTER_DECODE_DELAY 4 - - -// 640 X 480 @ 60Hz with a 25.175MHz pixel clock -`define H_ACTIVE 640 // pixels -`define H_FRONT_PORCH 16 // pixels -`define H_SYNCH 96 // pixels -`define H_BACK_PORCH 48 // pixels -`define H_TOTAL 800 // pixels - -`define V_ACTIVE 480 // lines -`define V_FRONT_PORCH 11 // lines -`define V_SYNCH 2 // lines -`define V_BACK_PORCH 31 // lines -`define V_TOTAL 524 // lines - -`define CLK_MULTIPLY 2 // 50 * 2/4 = 25.000 MHz -`define CLK_DIVIDE 4 -/* -//generic composite,720x288p clk=13.5MHz -`define H_ACTIVE 720 -`define H_FRONT_PORCH 20 -`define H_SYNCH 64 -`define H_BACK_PORCH 60 -`define H_TOTAL 800 // todo - -`define V_ACTIVE 288 -`define V_FRONT_PORCH 1 -`define V_SYNCH 3 -`define V_BACK_PORCH 20 -`define V_TOTAL 524 // todo - -`define CLK_MULTIPLY 27 // 50 * 27/100 = 13.500 MHz -`define CLK_DIVIDE 100 - -// 640 X 480 @ 72Hz with a 31.500MHz pixel clock -`define H_ACTIVE 640 // pixels -`define H_FRONT_PORCH 24 // pixels -`define H_SYNCH 40 // pixels -`define H_BACK_PORCH 128 // pixels -`define H_TOTAL 832 // pixels - -`define V_ACTIVE 480 // lines -`define V_FRONT_PORCH 9 // lines -`define V_SYNCH 3 // lines -`define V_BACK_PORCH 28 // lines -`define V_TOTAL 520 // lines - -`define CLK_MULTIPLY 5 // 50 * 5/8 = 31.250 MHz -`define CLK_DIVIDE 8 -*/ - -/* -// 640 X 480 @ 75Hz with a 31.500MHz pixel clock -`define H_ACTIVE 640 // pixels -`define H_FRONT_PORCH 16 // pixels -`define H_SYNCH 96 // pixels -`define H_BACK_PORCH 48 // pixels -`define H_TOTAL 800 // pixels - -`define V_ACTIVE 480 // lines -`define V_FRONT_PORCH 11 // lines -`define V_SYNCH 2 // lines -`define V_BACK_PORCH 32 // lines -`define V_TOTAL 525 // lines - -`define CLK_MULTIPLY 5 // 50 * 5/8 = 31.250 MHz -`define CLK_DIVIDE 8 -*/ - -/* -// 640 X 480 @ 85Hz with a 36.000MHz pixel clock -`define H_ACTIVE 640 // pixels -`define H_FRONT_PORCH 32 // pixels -`define H_SYNCH 48 // pixels -`define H_BACK_PORCH 112 // pixels -`define H_TOTAL 832 // pixels - -`define V_ACTIVE 480 // lines -`define V_FRONT_PORCH 1 // lines -`define V_SYNCH 3 // lines -`define V_BACK_PORCH 25 // lines -`define V_TOTAL 509 // lines - -`define CLK_MULTIPLY 18 // 50 * 18/25 = 36.000 MHz -`define CLK_DIVIDE 25 -*/ - -/* -// 800 X 600 @ 56Hz with a 38.100MHz pixel clock -`define H_ACTIVE 800 // pixels -`define H_FRONT_PORCH 32 // pixels -`define H_SYNCH 128 // pixels -`define H_BACK_PORCH 128 // pixels -`define H_TOTAL 1088 // pixels - -`define V_ACTIVE 600 // lines -`define V_FRONT_PORCH 1 // lines -`define V_SYNCH 4 // lines -`define V_BACK_PORCH 14 // lines -`define V_TOTAL 619 // lines - -`define CLK_MULTIPLY 16 // 50 * 16/21 = 38.095 MHz -`define CLK_DIVIDE 21 -*/ - -/* -// 800 X 600 @ 60Hz with a 40.000MHz pixel clock -`define H_ACTIVE 800 // pixels -`define H_FRONT_PORCH 40 // pixels -`define H_SYNCH 128 // pixels -`define H_BACK_PORCH 88 // pixels -`define H_TOTAL 1056 // pixels - -`define V_ACTIVE 600 // lines -`define V_FRONT_PORCH 1 // lines -`define V_SYNCH 4 // lines -`define V_BACK_PORCH 23 // lines -`define V_TOTAL 628 // lines - -`define CLK_MULTIPLY 4 // 50 * 4/5 = 40.000 MHz -`define CLK_DIVIDE 5 -*/ - -/* -// 800 X 600 @ 72Hz with a 50.000MHz pixel clock -`define H_ACTIVE 800 // pixels -`define H_FRONT_PORCH 56 // pixels -`define H_SYNCH 120 // pixels -`define H_BACK_PORCH 64 // pixels -`define H_TOTAL 1040 // pixels - -`define V_ACTIVE 600 // lines -`define V_FRONT_PORCH 37 // lines -`define V_SYNCH 6 // lines -`define V_BACK_PORCH 23 // lines -`define V_TOTAL 666 // lines - -`define CLK_MULTIPLY 2 // 50 * 2/2 = 50.000 MHz -`define CLK_DIVIDE 2 -*/ - -/* -// 800 X 600 @ 75Hz with a 49.500MHz pixel clock -`define H_ACTIVE 800 // pixels -`define H_FRONT_PORCH 16 // pixels -`define H_SYNCH 80 // pixels -`define H_BACK_PORCH 160 // pixels -`define H_TOTAL 1056 // pixels - -`define V_ACTIVE 600 // lines -`define V_FRONT_PORCH 1 // lines -`define V_SYNCH 2 // lines -`define V_BACK_PORCH 21 // lines -`define V_TOTAL 624 // lines - -`define CLK_MULTIPLY 2 // 50 * 2/2 = 50.000 MHz -`define CLK_DIVIDE 2 -*/ - -/* -// 800 X 600 @ 85Hz with a 56.250MHz pixel clock -`define H_ACTIVE 800 // pixels -`define H_FRONT_PORCH 32 // pixels -`define H_SYNCH 64 // pixels -`define H_BACK_PORCH 152 // pixels -`define H_TOTAL 1048 // pixels - -`define V_ACTIVE 600 // lines -`define V_FRONT_PORCH 1 // lines -`define V_SYNCH 3 // lines -`define V_BACK_PORCH 27 // lines -`define V_TOTAL 631 // lines - -`define CLK_MULTIPLY 9 // 50 * 9/8 = 56.250 MHz -`define CLK_DIVIDE 8 -*/ - -/* -// 1024 X 768 @ 60Hz with a 65.000MHz pixel clock -`define H_ACTIVE 1024 // pixels -`define H_FRONT_PORCH 24 // pixels -`define H_SYNCH 136 // pixels -`define H_BACK_PORCH 160 // pixels -`define H_TOTAL 1344 // pixels - -`define V_ACTIVE 768 // lines -`define V_FRONT_PORCH 3 // lines -`define V_SYNCH 6 // lines -`define V_BACK_PORCH 29 // lines -`define V_TOTAL 806 // lines - -`define CLK_MULTIPLY 13 // 50 * 13/10 = 65.000 MHz -`define CLK_DIVIDE 10 -/* - -/* -// 1024 X 768 @ 70Hz with a 75.000MHz pixel clock -`define H_ACTIVE 1024 // pixels -`define H_FRONT_PORCH 24 // pixels -`define H_SYNCH 136 // pixels -`define H_BACK_PORCH 144 // pixels -`define H_TOTAL 1328 // pixels - -`define V_ACTIVE 768 // lines -`define V_FRONT_PORCH 3 // lines -`define V_SYNCH 6 // lines -`define V_BACK_PORCH 29 // lines -`define V_TOTAL 806 // lines - -`define CLK_MULTIPLY 3 // 50 * 3/2 = 75.000 MHz -`define CLK_DIVIDE 2 -*/ - -/* -// 1024 X 768 @ 75Hz with a 78.750MHz pixel clock -`define H_ACTIVE 1024 // pixels -`define H_FRONT_PORCH 16 // pixels -`define H_SYNCH 96 // pixels -`define H_BACK_PORCH 176 // pixels -`define H_TOTAL 1312 // pixels - -`define V_ACTIVE 768 // lines -`define V_FRONT_PORCH 1 // lines -`define V_SYNCH 3 // lines -`define V_BACK_PORCH 28 // lines -`define V_TOTAL 800 // lines - -`define CLK_MULTIPLY 11 // 50 * 11/7 = 78.571 MHz -`define CLK_DIVIDE 7 -*/ - -/* -// 1024 X 768 @ 85Hz with a 94.500MHz pixel clock -`define H_ACTIVE 1024 // pixels -`define H_FRONT_PORCH 48 // pixels -`define H_SYNCH 96 // pixels -`define H_BACK_PORCH 208 // pixels -`define H_TOTAL 1376 // pixels - -`define V_ACTIVE 768 // lines -`define V_FRONT_PORCH 1 // lines -`define V_SYNCH 3 // lines -`define V_BACK_PORCH 36 // lines -`define V_TOTAL 808 // lines - -`define CLK_MULTIPLY 17 // 50 * 17/9 = 94.444 MHz -`define CLK_DIVIDE 9 -*/ - diff --git a/Computer_MiST/Laser310_MiST/rtl/SVGA_TIMING_GENERATION.v b/Computer_MiST/Laser310_MiST/rtl/SVGA_TIMING_GENERATION.v deleted file mode 100644 index 42a99da6..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/SVGA_TIMING_GENERATION.v +++ /dev/null @@ -1,353 +0,0 @@ -`include "SVGA_DEFINES.v" - - -`define SVGA_DECODE_DELAY 7 -// 延时:字符模式 -// 1、(001)锁存 vram 地址,2、(010)读取 vram 3、(011)锁存 vram 数据 4、(100)字库地址 5、(101)锁存字库 -// 6、(110)移位得到点阵,同时锁存vram数据用于调色板 7、(111)建立调色板,锁存色彩 - -// Delay: Character mode -// 1 (001) latch vram address, 2, (010) read vram 3, (011) latch vram data 4, (100) font address 5, (101) latch font -// 6, (110) shift to get a lattice, while latching vram data for the palette 7, (111) to create a palette, latch color - -// 延时:图形模式 128x64 4色 -// 1、(001)锁存 vram 地址,2、(010)读取 vram 3、(011)锁存 vram 数据 4、(100)空 5、(101)数据锁存至移位寄存器 -// 6、(110)移位得到点阵 7、(111)建立调色板,锁存色彩 - -// Delay: graphics mode 128x64 4 colors -// 1, (001) latch vram address, 2, (010) read vram 3, (011) latch vram data 4, (100) empty 5, (101) data latched to the shift register -// 6, (110) shift to get the dot matrix 7, (111) to create a palette, latch color - -module SVGA_TIMING_GENERATION -( - pixel_clock, - reset, - h_synch, - v_synch, - blank, - pixel_count, - line_count, - - show_border, - - // text - subchar_pixel, - subchar_line, - char_column, - char_line, - - // graph - graph_pixel, - graph_line_2x, - graph_line_3x -); - -input pixel_clock; // pixel clock -input reset; // reset -(*keep*)output reg h_synch; // horizontal synch for VGA connector -(*keep*)output reg v_synch; // vertical synch for VGA connector -output reg blank; // composite blanking -output reg [10:0] pixel_count; // counts the pixels in a line -output reg [9:0] line_count; // counts the display lines - -(*keep*)output reg show_border; - -// 字符控制 -(*keep*)output reg [3:0] subchar_pixel; // pixel position within the character -(*keep*)output reg [4:0] subchar_line; // identifies the line number within a character block -(*keep*)output reg [6:0] char_column; // character number on the current line -(*keep*)output reg [6:0] char_line; // line number on the screen - -// 图形控制 128*64 -(*keep*)output reg [8:0] graph_pixel; -(*keep*)output reg [9:0] graph_line_3x; - -// 图形控制 256*192 -(*keep*)output reg [9:0] graph_line_2x; - -(*keep*)reg h_blank; -reg v_blank; - -reg show_pixel; -reg show_line; - -// CREATE THE HORIZONTAL LINE PIXEL COUNTER -always @ (posedge pixel_clock or posedge reset) begin - if (reset) - // on reset set pixel counter to 0 - pixel_count <= 11'd0; - - else if (pixel_count == (`H_TOTAL - 1)) - // last pixel in the line, so reset pixel counter - pixel_count <= 11'd0; - - else - pixel_count <= pixel_count + 1; -end - -// CREATE THE HORIZONTAL SYNCH PULSE -always @ (posedge pixel_clock or posedge reset) begin - if (reset) - // on reset remove h_synch - h_synch <= 1'b0; - - else if (pixel_count == (`H_ACTIVE + `H_FRONT_PORCH - 1)) - // start of h_synch - h_synch <= 1'b1; - - else if (pixel_count == (`H_TOTAL - `H_BACK_PORCH - 1)) - // end of h_synch - h_synch <= 1'b0; -end - -// CREATE THE VERTICAL FRAME LINE COUNTER -always @ (posedge pixel_clock or posedge reset) begin - if (reset) - // on reset set line counter to 0 - line_count <= 10'd0; - - else if ((line_count == (`V_TOTAL - 1)) & (pixel_count == (`H_TOTAL - 1))) - // last pixel in last line of frame, so reset line counter - line_count <= 10'd0; - - else if ((pixel_count == (`H_TOTAL - 1))) - // last pixel but not last line, so increment line counter - line_count <= line_count + 1; -end - -// CREATE THE VERTICAL SYNCH PULSE -always @ (posedge pixel_clock or posedge reset) begin - if (reset) - // on reset remove v_synch - v_synch <= 1'b0; - - else if ((line_count == (`V_ACTIVE + `V_FRONT_PORCH - 1) & - (pixel_count == `H_TOTAL - 1))) - // start of v_synch - v_synch <= 1'b1; - - else if ((line_count == (`V_TOTAL - `V_BACK_PORCH - 1)) & - (pixel_count == (`H_TOTAL - 1))) - // end of v_synch - v_synch <= 1'b0; -end - - -// CREATE THE HORIZONTAL BLANKING SIGNAL -// the "-2" is used instead of "-1" because of the extra register delay -// for the composite blanking signal -always @ (posedge pixel_clock or posedge reset) begin - if (reset) - // on reset remove the h_blank - h_blank <= 1'b0; - - else if (pixel_count == (`H_ACTIVE -2)) - // start of HBI - h_blank <= 1'b1; - - else if (pixel_count == (`H_TOTAL -2)) - // end of HBI - h_blank <= 1'b0; -end - - -// CREATE THE VERTICAL BLANKING SIGNAL -// the "-2" is used instead of "-1" in the horizontal factor because of the extra -// register delay for the composite blanking signal -always @ (posedge pixel_clock or posedge reset) begin - if (reset) - // on reset remove v_blank - v_blank <= 1'b0; - - else if ((line_count == (`V_ACTIVE - 1) & - (pixel_count == `H_TOTAL - 2))) - // start of VBI - v_blank <= 1'b1; - - else if ((line_count == (`V_TOTAL - 1)) & - (pixel_count == (`H_TOTAL - 2))) - // end of VBI - v_blank <= 1'b0; -end - - -// CREATE THE COMPOSITE BANKING SIGNAL -always @ (posedge pixel_clock or posedge reset) begin - if (reset) - // on reset remove blank - blank <= 1'b0; - - // blank during HBI or VBI - else if (h_blank || v_blank) - blank <= 1'b1; - - else - // active video do not blank - blank <= 1'b0; -end - - -//////////////////////////////////////////////////// -// 以上部分内容相对固定,是VGA的控制信号和计数器 // -//////////////////////////////////////////////////// - - -/* - CREATE THE CHARACTER COUNTER. - CHARACTERS ARE DEFINED WITHIN AN 8 x 8 PIXEL BLOCK. - - A 640 x 480 video mode will display 80 characters on 60 lines. - A 800 x 600 video mode will display 100 characters on 75 lines. - A 1024 x 768 video mode will display 128 characters on 96 lines. - - "subchar_line" identifies the row in the 8 x 8 block. - "subchar_pixel" identifies the column in the 8 x 8 block. -*/ - -// 8x12点阵 32x16个字符 256x192 -// 640x480 倍线 512x384 左右各空64个点,上下空 48 个点。 -// 需要生成四个数据: -// 字符点阵 subchar_line subchar_pixel -// 字符寻址 char_column char_line - -always @ (posedge pixel_clock or posedge reset) begin - if (reset) - show_pixel <= 1'b0; - else if (pixel_count == (-1) + 64 - `SVGA_DECODE_DELAY) - show_pixel <= 1'b1; - else if (pixel_count == (`H_ACTIVE - 1) - 64 - `SVGA_DECODE_DELAY) - show_pixel <= 1'b0; -end - -always @ (posedge h_synch or posedge reset) begin - if (reset) - show_line <= 1'b0; - else if (line_count == (-1) + 48) - show_line <= 1'b1; - else if (line_count == (`V_ACTIVE - 1) - 48) - show_line <= 1'b0; -end - -always @ (posedge pixel_clock or posedge reset) begin - if (reset) - show_border <= 1'b1; - else if (pixel_count == (-1) + 64) - show_border <= ~show_line; - else if (pixel_count == (`H_ACTIVE - 1) - 64) - show_border <= 1'b1; -end - - -// text 32x16 - -always @ (posedge pixel_clock or posedge reset) begin - if (reset) - begin - // reset to 5 so that the first character data can be latched - subchar_pixel <= 4'b0000; - char_column <= 7'd0; - end - else if (h_synch) - begin - // reset to 5 so that the first character data can be latched - subchar_pixel <= 4'b0000; - char_column <= 7'd0; - end - else if(show_pixel) - begin - subchar_pixel <= subchar_pixel + 1; - if(subchar_pixel == 4'b1111) // 8*2-1 - char_column <= char_column + 1; - end -end - - -always @ (posedge h_synch or posedge reset) begin - if (reset) - begin - // on reset set line counter to 0 - subchar_line <= 5'b00000; - char_line <= 7'd0; - end - else if(v_synch) - begin - // reset line counter - subchar_line <= 5'b00000; - char_line <= 7'd0; - end - else if(show_line) - if(subchar_line == 5'd23) // 12*2-1 - begin - subchar_line <= 5'b00000; - char_line <= char_line + 1; - end - else - // increment line counter - subchar_line <= subchar_line + 1; -end - - -// 为所有图形模式提供水平计数 -always @ (posedge pixel_clock or posedge reset) begin - if (reset) - begin - // reset to 5 so that the first character data can be latched - graph_pixel <= 9'd0; - end - else if (h_synch) - begin - // reset to 5 so that the first character data can be latched - graph_pixel <= 9'd0; - end - else if(show_pixel) - begin - graph_pixel <= graph_pixel + 1; - end -end - -// 为图形模式提供垂直计数 -// 64x64 4色 -// 128x64 2色 -// 128x64 4色 -always @ (posedge h_synch or posedge reset) begin - if (reset) - begin - // on reset set line counter to 0 - graph_line_3x <= 10'd0; - end - else if(v_synch) - begin - // reset line counter - graph_line_3x <= 10'd0; - end - else if(show_line) - if(graph_line_3x[1:0] == 2'b10) // 3行为单位计数 - graph_line_3x <= graph_line_3x + 2; - else - // increment line counter - graph_line_3x <= graph_line_3x + 1; -end - -// 为图形模式提供垂直计数 -// 128x96 2色 -// 128x96 4色 -// 128x192 2色 -// 128x192 4色 -// 256x192 2色 -always @ (posedge h_synch or posedge reset) begin - if (reset) - begin - // on reset set line counter to 0 - graph_line_2x <= 10'd0; - end - else if(v_synch) - begin - // reset line counter - graph_line_2x <= 10'd0; - end - else if(show_line) - // increment line counter - graph_line_2x <= graph_line_2x + 1; -end - -endmodule //SVGA_TIMING_GENERATION diff --git a/Computer_MiST/Laser310_MiST/rtl/T80/T80.vhd b/Computer_MiST/Laser310_MiST/rtl/T80/T80.vhd deleted file mode 100644 index da01f6b4..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/T80/T80.vhd +++ /dev/null @@ -1,1080 +0,0 @@ --- **** --- T80(b) core. In an effort to merge and maintain bug fixes .... --- --- --- Ver 300 started tidyup. Rmoved some auto_wait bits from 0247 which caused problems --- --- MikeJ March 2005 --- Latest version from www.fpgaarcade.com (original www.opencores.org) --- --- **** --- --- Z80 compatible microprocessor core --- --- Version : 0247 --- --- Copyright (c) 2001-2002 Daniel Wallner (jesus@opencores.org) --- --- All rights reserved --- --- Redistribution and use in source and synthezised forms, with or without --- modification, are permitted provided that the following conditions are met: --- --- Redistributions of source code must retain the above copyright notice, --- this list of conditions and the following disclaimer. --- --- Redistributions in synthesized form must reproduce the above copyright --- notice, this list of conditions and the following disclaimer in the --- documentation and/or other materials provided with the distribution. --- --- Neither the name of the author nor the names of other contributors may --- be used to endorse or promote products derived from this software without --- specific prior written permission. --- --- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" --- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, --- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR --- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE --- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR --- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF --- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS --- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN --- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) --- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE --- POSSIBILITY OF SUCH DAMAGE. --- --- Please report bugs to the author, but before you do so, please --- make sure that this is not a derivative work and that --- you have the latest version of this file. --- --- The latest version of this file can be found at: --- http://www.opencores.org/cvsweb.shtml/t80/ --- --- Limitations : --- --- File history : --- --- 0208 : First complete release --- --- 0210 : Fixed wait and halt --- --- 0211 : Fixed Refresh addition and IM 1 --- --- 0214 : Fixed mostly flags, only the block instructions now fail the zex regression test --- --- 0232 : Removed refresh address output for Mode > 1 and added DJNZ M1_n fix by Mike Johnson --- --- 0235 : Added clock enable and IM 2 fix by Mike Johnson --- --- 0237 : Changed 8080 I/O address output, added IntE output --- --- 0238 : Fixed (IX/IY+d) timing and 16 bit ADC and SBC zero flag --- --- 0240 : Added interrupt ack fix by Mike Johnson, changed (IX/IY+d) timing and changed flags in GB mode --- --- 0242 : Added I/O wait, fixed refresh address, moved some registers to RAM --- --- 0247 : Fixed bus req/ack cycle --- - -library IEEE; -use IEEE.std_logic_1164.all; -use IEEE.numeric_std.all; -use work.T80_Pack.all; - -entity T80 is - generic( - Mode : integer := 0; -- 0 => Z80, 1 => Fast Z80, 2 => 8080, 3 => GB - IOWait : integer := 0; -- 1 => Single cycle I/O, 1 => Std I/O cycle - Flag_C : integer := 0; - Flag_N : integer := 1; - Flag_P : integer := 2; - Flag_X : integer := 3; - Flag_H : integer := 4; - Flag_Y : integer := 5; - Flag_Z : integer := 6; - Flag_S : integer := 7 - ); - port( - RESET_n : in std_logic; - CLK_n : in std_logic; - CEN : in std_logic; - WAIT_n : in std_logic; - INT_n : in std_logic; - NMI_n : in std_logic; - BUSRQ_n : in std_logic; - M1_n : out std_logic; - IORQ : out std_logic; - NoRead : out std_logic; - Write : out std_logic; - RFSH_n : out std_logic; - HALT_n : out std_logic; - BUSAK_n : out std_logic; - A : out std_logic_vector(15 downto 0); - DInst : in std_logic_vector(7 downto 0); - DI : in std_logic_vector(7 downto 0); - DO : out std_logic_vector(7 downto 0); - MC : out std_logic_vector(2 downto 0); - TS : out std_logic_vector(2 downto 0); - IntCycle_n : out std_logic; - IntE : out std_logic; - Stop : out std_logic - ); -end T80; - -architecture rtl of T80 is - - constant aNone : std_logic_vector(2 downto 0) := "111"; - constant aBC : std_logic_vector(2 downto 0) := "000"; - constant aDE : std_logic_vector(2 downto 0) := "001"; - constant aXY : std_logic_vector(2 downto 0) := "010"; - constant aIOA : std_logic_vector(2 downto 0) := "100"; - constant aSP : std_logic_vector(2 downto 0) := "101"; - constant aZI : std_logic_vector(2 downto 0) := "110"; - - -- Registers - signal ACC, F : std_logic_vector(7 downto 0); - signal Ap, Fp : std_logic_vector(7 downto 0); - signal I : std_logic_vector(7 downto 0); - signal R : unsigned(7 downto 0); - signal SP, PC : unsigned(15 downto 0); - - signal RegDIH : std_logic_vector(7 downto 0); - signal RegDIL : std_logic_vector(7 downto 0); - signal RegBusA : std_logic_vector(15 downto 0); - signal RegBusB : std_logic_vector(15 downto 0); - signal RegBusC : std_logic_vector(15 downto 0); - signal RegAddrA_r : std_logic_vector(2 downto 0); - signal RegAddrA : std_logic_vector(2 downto 0); - signal RegAddrB_r : std_logic_vector(2 downto 0); - signal RegAddrB : std_logic_vector(2 downto 0); - signal RegAddrC : std_logic_vector(2 downto 0); - signal RegWEH : std_logic; - signal RegWEL : std_logic; - signal Alternate : std_logic; - - -- Help Registers - signal TmpAddr : std_logic_vector(15 downto 0); -- Temporary address register - signal IR : std_logic_vector(7 downto 0); -- Instruction register - signal ISet : std_logic_vector(1 downto 0); -- Instruction set selector - signal RegBusA_r : std_logic_vector(15 downto 0); - - signal ID16 : signed(15 downto 0); - signal Save_Mux : std_logic_vector(7 downto 0); - - signal TState : unsigned(2 downto 0); - signal MCycle : std_logic_vector(2 downto 0); - signal IntE_FF1 : std_logic; - signal IntE_FF2 : std_logic; - signal Halt_FF : std_logic; - signal BusReq_s : std_logic; - signal BusAck : std_logic; - signal ClkEn : std_logic; - signal NMI_s : std_logic; - signal INT_s : std_logic; - signal IStatus : std_logic_vector(1 downto 0); - - signal DI_Reg : std_logic_vector(7 downto 0); - signal T_Res : std_logic; - signal XY_State : std_logic_vector(1 downto 0); - signal Pre_XY_F_M : std_logic_vector(2 downto 0); - signal NextIs_XY_Fetch : std_logic; - signal XY_Ind : std_logic; - signal No_BTR : std_logic; - signal BTR_r : std_logic; - signal Auto_Wait : std_logic; - signal Auto_Wait_t1 : std_logic; - signal Auto_Wait_t2 : std_logic; - signal IncDecZ : std_logic; - - -- ALU signals - signal BusB : std_logic_vector(7 downto 0); - signal BusA : std_logic_vector(7 downto 0); - signal ALU_Q : std_logic_vector(7 downto 0); - signal F_Out : std_logic_vector(7 downto 0); - - -- Registered micro code outputs - signal Read_To_Reg_r : std_logic_vector(4 downto 0); - signal Arith16_r : std_logic; - signal Z16_r : std_logic; - signal ALU_Op_r : std_logic_vector(3 downto 0); - signal Save_ALU_r : std_logic; - signal PreserveC_r : std_logic; - signal MCycles : std_logic_vector(2 downto 0); - - -- Micro code outputs - signal MCycles_d : std_logic_vector(2 downto 0); - signal TStates : std_logic_vector(2 downto 0); - signal IntCycle : std_logic; - signal NMICycle : std_logic; - signal Inc_PC : std_logic; - signal Inc_WZ : std_logic; - signal IncDec_16 : std_logic_vector(3 downto 0); - signal Prefix : std_logic_vector(1 downto 0); - signal Read_To_Acc : std_logic; - signal Read_To_Reg : std_logic; - signal Set_BusB_To : std_logic_vector(3 downto 0); - signal Set_BusA_To : std_logic_vector(3 downto 0); - signal ALU_Op : std_logic_vector(3 downto 0); - signal Save_ALU : std_logic; - signal PreserveC : std_logic; - signal Arith16 : std_logic; - signal Set_Addr_To : std_logic_vector(2 downto 0); - signal Jump : std_logic; - signal JumpE : std_logic; - signal JumpXY : std_logic; - signal Call : std_logic; - signal RstP : std_logic; - signal LDZ : std_logic; - signal LDW : std_logic; - signal LDSPHL : std_logic; - signal IORQ_i : std_logic; - signal Special_LD : std_logic_vector(2 downto 0); - signal ExchangeDH : std_logic; - signal ExchangeRp : std_logic; - signal ExchangeAF : std_logic; - signal ExchangeRS : std_logic; - signal I_DJNZ : std_logic; - signal I_CPL : std_logic; - signal I_CCF : std_logic; - signal I_SCF : std_logic; - signal I_RETN : std_logic; - signal I_BT : std_logic; - signal I_BC : std_logic; - signal I_BTR : std_logic; - signal I_RLD : std_logic; - signal I_RRD : std_logic; - signal I_INRC : std_logic; - signal SetDI : std_logic; - signal SetEI : std_logic; - signal IMode : std_logic_vector(1 downto 0); - signal Halt : std_logic; - -begin - - mcode : T80_MCode - generic map( - Mode => Mode, - Flag_C => Flag_C, - Flag_N => Flag_N, - Flag_P => Flag_P, - Flag_X => Flag_X, - Flag_H => Flag_H, - Flag_Y => Flag_Y, - Flag_Z => Flag_Z, - Flag_S => Flag_S) - port map( - IR => IR, - ISet => ISet, - MCycle => MCycle, - F => F, - NMICycle => NMICycle, - IntCycle => IntCycle, - MCycles => MCycles_d, - TStates => TStates, - Prefix => Prefix, - Inc_PC => Inc_PC, - Inc_WZ => Inc_WZ, - IncDec_16 => IncDec_16, - Read_To_Acc => Read_To_Acc, - Read_To_Reg => Read_To_Reg, - Set_BusB_To => Set_BusB_To, - Set_BusA_To => Set_BusA_To, - ALU_Op => ALU_Op, - Save_ALU => Save_ALU, - PreserveC => PreserveC, - Arith16 => Arith16, - Set_Addr_To => Set_Addr_To, - IORQ => IORQ_i, - Jump => Jump, - JumpE => JumpE, - JumpXY => JumpXY, - Call => Call, - RstP => RstP, - LDZ => LDZ, - LDW => LDW, - LDSPHL => LDSPHL, - Special_LD => Special_LD, - ExchangeDH => ExchangeDH, - ExchangeRp => ExchangeRp, - ExchangeAF => ExchangeAF, - ExchangeRS => ExchangeRS, - I_DJNZ => I_DJNZ, - I_CPL => I_CPL, - I_CCF => I_CCF, - I_SCF => I_SCF, - I_RETN => I_RETN, - I_BT => I_BT, - I_BC => I_BC, - I_BTR => I_BTR, - I_RLD => I_RLD, - I_RRD => I_RRD, - I_INRC => I_INRC, - SetDI => SetDI, - SetEI => SetEI, - IMode => IMode, - Halt => Halt, - NoRead => NoRead, - Write => Write); - - alu : T80_ALU - generic map( - Mode => Mode, - Flag_C => Flag_C, - Flag_N => Flag_N, - Flag_P => Flag_P, - Flag_X => Flag_X, - Flag_H => Flag_H, - Flag_Y => Flag_Y, - Flag_Z => Flag_Z, - Flag_S => Flag_S) - port map( - Arith16 => Arith16_r, - Z16 => Z16_r, - ALU_Op => ALU_Op_r, - IR => IR(5 downto 0), - ISet => ISet, - BusA => BusA, - BusB => BusB, - F_In => F, - Q => ALU_Q, - F_Out => F_Out); - - ClkEn <= CEN and not BusAck; - - T_Res <= '1' when TState = unsigned(TStates) else '0'; - - NextIs_XY_Fetch <= '1' when XY_State /= "00" and XY_Ind = '0' and - ((Set_Addr_To = aXY) or - (MCycle = "001" and IR = "11001011") or - (MCycle = "001" and IR = "00110110")) else '0'; - - Save_Mux <= BusB when ExchangeRp = '1' else - DI_Reg when Save_ALU_r = '0' else - ALU_Q; - - process (RESET_n, CLK_n) - begin - if RESET_n = '0' then - PC <= (others => '0'); -- Program Counter - A <= (others => '0'); - TmpAddr <= (others => '0'); - IR <= "00000000"; - ISet <= "00"; - XY_State <= "00"; - IStatus <= "00"; - MCycles <= "000"; - DO <= "00000000"; - - ACC <= (others => '1'); - F <= (others => '1'); - Ap <= (others => '1'); - Fp <= (others => '1'); - I <= (others => '0'); - R <= (others => '0'); - SP <= (others => '1'); - Alternate <= '0'; - - Read_To_Reg_r <= "00000"; - F <= (others => '1'); - Arith16_r <= '0'; - BTR_r <= '0'; - Z16_r <= '0'; - ALU_Op_r <= "0000"; - Save_ALU_r <= '0'; - PreserveC_r <= '0'; - XY_Ind <= '0'; - - elsif CLK_n'event and CLK_n = '1' then - - if ClkEn = '1' then - - ALU_Op_r <= "0000"; - Save_ALU_r <= '0'; - Read_To_Reg_r <= "00000"; - - MCycles <= MCycles_d; - - if IMode /= "11" then - IStatus <= IMode; - end if; - - Arith16_r <= Arith16; - PreserveC_r <= PreserveC; - if ISet = "10" and ALU_OP(2) = '0' and ALU_OP(0) = '1' and MCycle = "011" then - Z16_r <= '1'; - else - Z16_r <= '0'; - end if; - - if MCycle = "001" and TState(2) = '0' then - -- MCycle = 1 and TState = 1, 2, or 3 - - if TState = 2 and Wait_n = '1' then - if Mode < 2 then - A(7 downto 0) <= std_logic_vector(R); - A(15 downto 8) <= I; - R(6 downto 0) <= R(6 downto 0) + 1; - end if; - - if Jump = '0' and Call = '0' and NMICycle = '0' and IntCycle = '0' and not (Halt_FF = '1' or Halt = '1') then - PC <= PC + 1; - end if; - - if IntCycle = '1' and IStatus = "01" then - IR <= "11111111"; - elsif Halt_FF = '1' or (IntCycle = '1' and IStatus = "10") or NMICycle = '1' then - IR <= "00000000"; - else - IR <= DInst; - end if; - - ISet <= "00"; - if Prefix /= "00" then - if Prefix = "11" then - if IR(5) = '1' then - XY_State <= "10"; - else - XY_State <= "01"; - end if; - else - if Prefix = "10" then - XY_State <= "00"; - XY_Ind <= '0'; - end if; - ISet <= Prefix; - end if; - else - XY_State <= "00"; - XY_Ind <= '0'; - end if; - end if; - - else - -- either (MCycle > 1) OR (MCycle = 1 AND TState > 3) - - if MCycle = "110" then - XY_Ind <= '1'; - if Prefix = "01" then - ISet <= "01"; - end if; - end if; - - if T_Res = '1' then - BTR_r <= (I_BT or I_BC or I_BTR) and not No_BTR; - if Jump = '1' then - A(15 downto 8) <= DI_Reg; - A(7 downto 0) <= TmpAddr(7 downto 0); - PC(15 downto 8) <= unsigned(DI_Reg); - PC(7 downto 0) <= unsigned(TmpAddr(7 downto 0)); - elsif JumpXY = '1' then - A <= RegBusC; - PC <= unsigned(RegBusC); - elsif Call = '1' or RstP = '1' then - A <= TmpAddr; - PC <= unsigned(TmpAddr); - elsif MCycle = MCycles and NMICycle = '1' then - A <= "0000000001100110"; - PC <= "0000000001100110"; - elsif MCycle = "011" and IntCycle = '1' and IStatus = "10" then - A(15 downto 8) <= I; - A(7 downto 0) <= TmpAddr(7 downto 0); - PC(15 downto 8) <= unsigned(I); - PC(7 downto 0) <= unsigned(TmpAddr(7 downto 0)); - else - case Set_Addr_To is - when aXY => - if XY_State = "00" then - A <= RegBusC; - else - if NextIs_XY_Fetch = '1' then - A <= std_logic_vector(PC); - else - A <= TmpAddr; - end if; - end if; - when aIOA => - if Mode = 3 then - -- Memory map I/O on GBZ80 - A(15 downto 8) <= (others => '1'); - elsif Mode = 2 then - -- Duplicate I/O address on 8080 - A(15 downto 8) <= DI_Reg; - else - A(15 downto 8) <= ACC; - end if; - A(7 downto 0) <= DI_Reg; - when aSP => - A <= std_logic_vector(SP); - when aBC => - if Mode = 3 and IORQ_i = '1' then - -- Memory map I/O on GBZ80 - A(15 downto 8) <= (others => '1'); - A(7 downto 0) <= RegBusC(7 downto 0); - else - A <= RegBusC; - end if; - when aDE => - A <= RegBusC; - when aZI => - if Inc_WZ = '1' then - A <= std_logic_vector(unsigned(TmpAddr) + 1); - else - A(15 downto 8) <= DI_Reg; - A(7 downto 0) <= TmpAddr(7 downto 0); - end if; - when others => - A <= std_logic_vector(PC); - end case; - end if; - - Save_ALU_r <= Save_ALU; - ALU_Op_r <= ALU_Op; - - if I_CPL = '1' then - -- CPL - ACC <= not ACC; - F(Flag_Y) <= not ACC(5); - F(Flag_H) <= '1'; - F(Flag_X) <= not ACC(3); - F(Flag_N) <= '1'; - end if; - if I_CCF = '1' then - -- CCF - F(Flag_C) <= not F(Flag_C); - F(Flag_Y) <= ACC(5); - F(Flag_H) <= F(Flag_C); - F(Flag_X) <= ACC(3); - F(Flag_N) <= '0'; - end if; - if I_SCF = '1' then - -- SCF - F(Flag_C) <= '1'; - F(Flag_Y) <= ACC(5); - F(Flag_H) <= '0'; - F(Flag_X) <= ACC(3); - F(Flag_N) <= '0'; - end if; - end if; - - if TState = 2 and Wait_n = '1' then - if ISet = "01" and MCycle = "111" then - IR <= DInst; - end if; - if JumpE = '1' then - PC <= unsigned(signed(PC) + signed(DI_Reg)); - elsif Inc_PC = '1' then - PC <= PC + 1; - end if; - if BTR_r = '1' then - PC <= PC - 2; - end if; - if RstP = '1' then - TmpAddr <= (others =>'0'); - TmpAddr(5 downto 3) <= IR(5 downto 3); - end if; - end if; - if TState = 3 and MCycle = "110" then - TmpAddr <= std_logic_vector(signed(RegBusC) + signed(DI_Reg)); - end if; - - if (TState = 2 and Wait_n = '1') or (TState = 4 and MCycle = "001") then - if IncDec_16(2 downto 0) = "111" then - if IncDec_16(3) = '1' then - SP <= SP - 1; - else - SP <= SP + 1; - end if; - end if; - end if; - - if LDSPHL = '1' then - SP <= unsigned(RegBusC); - end if; - if ExchangeAF = '1' then - Ap <= ACC; - ACC <= Ap; - Fp <= F; - F <= Fp; - end if; - if ExchangeRS = '1' then - Alternate <= not Alternate; - end if; - end if; - - if TState = 3 then - if LDZ = '1' then - TmpAddr(7 downto 0) <= DI_Reg; - end if; - if LDW = '1' then - TmpAddr(15 downto 8) <= DI_Reg; - end if; - - if Special_LD(2) = '1' then - case Special_LD(1 downto 0) is - when "00" => - ACC <= I; - F(Flag_P) <= IntE_FF2; - when "01" => - ACC <= std_logic_vector(R); - F(Flag_P) <= IntE_FF2; - when "10" => - I <= ACC; - when others => - R <= unsigned(ACC); - end case; - end if; - end if; - - if (I_DJNZ = '0' and Save_ALU_r = '1') or ALU_Op_r = "1001" then - if Mode = 3 then - F(6) <= F_Out(6); - F(5) <= F_Out(5); - F(7) <= F_Out(7); - if PreserveC_r = '0' then - F(4) <= F_Out(4); - end if; - else - F(7 downto 1) <= F_Out(7 downto 1); - if PreserveC_r = '0' then - F(Flag_C) <= F_Out(0); - end if; - end if; - end if; - if T_Res = '1' and I_INRC = '1' then - F(Flag_H) <= '0'; - F(Flag_N) <= '0'; - if DI_Reg(7 downto 0) = "00000000" then - F(Flag_Z) <= '1'; - else - F(Flag_Z) <= '0'; - end if; - F(Flag_S) <= DI_Reg(7); - F(Flag_P) <= not (DI_Reg(0) xor DI_Reg(1) xor DI_Reg(2) xor DI_Reg(3) xor - DI_Reg(4) xor DI_Reg(5) xor DI_Reg(6) xor DI_Reg(7)); - end if; - - if TState = 1 then - DO <= BusB; - if I_RLD = '1' then - DO(3 downto 0) <= BusA(3 downto 0); - DO(7 downto 4) <= BusB(3 downto 0); - end if; - if I_RRD = '1' then - DO(3 downto 0) <= BusB(7 downto 4); - DO(7 downto 4) <= BusA(3 downto 0); - end if; - end if; - - if T_Res = '1' then - Read_To_Reg_r(3 downto 0) <= Set_BusA_To; - Read_To_Reg_r(4) <= Read_To_Reg; - if Read_To_Acc = '1' then - Read_To_Reg_r(3 downto 0) <= "0111"; - Read_To_Reg_r(4) <= '1'; - end if; - end if; - - if TState = 1 and I_BT = '1' then - F(Flag_X) <= ALU_Q(3); - F(Flag_Y) <= ALU_Q(1); - F(Flag_H) <= '0'; - F(Flag_N) <= '0'; - end if; - if I_BC = '1' or I_BT = '1' then - F(Flag_P) <= IncDecZ; - end if; - - if (TState = 1 and Save_ALU_r = '0') or - (Save_ALU_r = '1' and ALU_OP_r /= "0111") then - case Read_To_Reg_r is - when "10111" => - ACC <= Save_Mux; - when "10110" => - DO <= Save_Mux; - when "11000" => - SP(7 downto 0) <= unsigned(Save_Mux); - when "11001" => - SP(15 downto 8) <= unsigned(Save_Mux); - when "11011" => - F <= Save_Mux; - when others => - end case; - end if; - - end if; - - end if; - - end process; - ---------------------------------------------------------------------------- --- --- BC('), DE('), HL('), IX and IY --- ---------------------------------------------------------------------------- - process (CLK_n) - begin - if CLK_n'event and CLK_n = '1' then - if ClkEn = '1' then - -- Bus A / Write - RegAddrA_r <= Alternate & Set_BusA_To(2 downto 1); - if XY_Ind = '0' and XY_State /= "00" and Set_BusA_To(2 downto 1) = "10" then - RegAddrA_r <= XY_State(1) & "11"; - end if; - - -- Bus B - RegAddrB_r <= Alternate & Set_BusB_To(2 downto 1); - if XY_Ind = '0' and XY_State /= "00" and Set_BusB_To(2 downto 1) = "10" then - RegAddrB_r <= XY_State(1) & "11"; - end if; - - -- Address from register - RegAddrC <= Alternate & Set_Addr_To(1 downto 0); - -- Jump (HL), LD SP,HL - if (JumpXY = '1' or LDSPHL = '1') then - RegAddrC <= Alternate & "10"; - end if; - if ((JumpXY = '1' or LDSPHL = '1') and XY_State /= "00") or (MCycle = "110") then - RegAddrC <= XY_State(1) & "11"; - end if; - - if I_DJNZ = '1' and Save_ALU_r = '1' and Mode < 2 then - IncDecZ <= F_Out(Flag_Z); - end if; - if (TState = 2 or (TState = 3 and MCycle = "001")) and IncDec_16(2 downto 0) = "100" then - if ID16 = 0 then - IncDecZ <= '0'; - else - IncDecZ <= '1'; - end if; - end if; - - RegBusA_r <= RegBusA; - end if; - end if; - end process; - - RegAddrA <= - -- 16 bit increment/decrement - Alternate & IncDec_16(1 downto 0) when (TState = 2 or - (TState = 3 and MCycle = "001" and IncDec_16(2) = '1')) and XY_State = "00" else - XY_State(1) & "11" when (TState = 2 or - (TState = 3 and MCycle = "001" and IncDec_16(2) = '1')) and IncDec_16(1 downto 0) = "10" else - -- EX HL,DL - Alternate & "10" when ExchangeDH = '1' and TState = 3 else - Alternate & "01" when ExchangeDH = '1' and TState = 4 else - -- Bus A / Write - RegAddrA_r; - - RegAddrB <= - -- EX HL,DL - Alternate & "01" when ExchangeDH = '1' and TState = 3 else - -- Bus B - RegAddrB_r; - - ID16 <= signed(RegBusA) - 1 when IncDec_16(3) = '1' else - signed(RegBusA) + 1; - - process (Save_ALU_r, Auto_Wait_t1, ALU_OP_r, Read_To_Reg_r, - ExchangeDH, IncDec_16, MCycle, TState, Wait_n) - begin - RegWEH <= '0'; - RegWEL <= '0'; - if (TState = 1 and Save_ALU_r = '0') or - (Save_ALU_r = '1' and ALU_OP_r /= "0111") then - case Read_To_Reg_r is - when "10000" | "10001" | "10010" | "10011" | "10100" | "10101" => - RegWEH <= not Read_To_Reg_r(0); - RegWEL <= Read_To_Reg_r(0); - when others => - end case; - end if; - - if ExchangeDH = '1' and (TState = 3 or TState = 4) then - RegWEH <= '1'; - RegWEL <= '1'; - end if; - - if IncDec_16(2) = '1' and ((TState = 2 and Wait_n = '1' and MCycle /= "001") or (TState = 3 and MCycle = "001")) then - case IncDec_16(1 downto 0) is - when "00" | "01" | "10" => - RegWEH <= '1'; - RegWEL <= '1'; - when others => - end case; - end if; - end process; - - process (Save_Mux, RegBusB, RegBusA_r, ID16, - ExchangeDH, IncDec_16, MCycle, TState, Wait_n) - begin - RegDIH <= Save_Mux; - RegDIL <= Save_Mux; - - if ExchangeDH = '1' and TState = 3 then - RegDIH <= RegBusB(15 downto 8); - RegDIL <= RegBusB(7 downto 0); - end if; - if ExchangeDH = '1' and TState = 4 then - RegDIH <= RegBusA_r(15 downto 8); - RegDIL <= RegBusA_r(7 downto 0); - end if; - - if IncDec_16(2) = '1' and ((TState = 2 and MCycle /= "001") or (TState = 3 and MCycle = "001")) then - RegDIH <= std_logic_vector(ID16(15 downto 8)); - RegDIL <= std_logic_vector(ID16(7 downto 0)); - end if; - end process; - - Regs : T80_Reg - port map( - Clk => CLK_n, - CEN => ClkEn, - WEH => RegWEH, - WEL => RegWEL, - AddrA => RegAddrA, - AddrB => RegAddrB, - AddrC => RegAddrC, - DIH => RegDIH, - DIL => RegDIL, - DOAH => RegBusA(15 downto 8), - DOAL => RegBusA(7 downto 0), - DOBH => RegBusB(15 downto 8), - DOBL => RegBusB(7 downto 0), - DOCH => RegBusC(15 downto 8), - DOCL => RegBusC(7 downto 0)); - ---------------------------------------------------------------------------- --- --- Buses --- ---------------------------------------------------------------------------- - process (CLK_n) - begin - if CLK_n'event and CLK_n = '1' then - if ClkEn = '1' then - case Set_BusB_To is - when "0111" => - BusB <= ACC; - when "0000" | "0001" | "0010" | "0011" | "0100" | "0101" => - if Set_BusB_To(0) = '1' then - BusB <= RegBusB(7 downto 0); - else - BusB <= RegBusB(15 downto 8); - end if; - when "0110" => - BusB <= DI_Reg; - when "1000" => - BusB <= std_logic_vector(SP(7 downto 0)); - when "1001" => - BusB <= std_logic_vector(SP(15 downto 8)); - when "1010" => - BusB <= "00000001"; - when "1011" => - BusB <= F; - when "1100" => - BusB <= std_logic_vector(PC(7 downto 0)); - when "1101" => - BusB <= std_logic_vector(PC(15 downto 8)); - when "1110" => - BusB <= "00000000"; - when others => - BusB <= "--------"; - end case; - - case Set_BusA_To is - when "0111" => - BusA <= ACC; - when "0000" | "0001" | "0010" | "0011" | "0100" | "0101" => - if Set_BusA_To(0) = '1' then - BusA <= RegBusA(7 downto 0); - else - BusA <= RegBusA(15 downto 8); - end if; - when "0110" => - BusA <= DI_Reg; - when "1000" => - BusA <= std_logic_vector(SP(7 downto 0)); - when "1001" => - BusA <= std_logic_vector(SP(15 downto 8)); - when "1010" => - BusA <= "00000000"; - when others => - BusB <= "--------"; - end case; - end if; - end if; - end process; - ---------------------------------------------------------------------------- --- --- Generate external control signals --- ---------------------------------------------------------------------------- - process (RESET_n,CLK_n) - begin - if RESET_n = '0' then - RFSH_n <= '1'; - elsif CLK_n'event and CLK_n = '1' then - if CEN = '1' then - if MCycle = "001" and ((TState = 2 and Wait_n = '1') or TState = 3) then - RFSH_n <= '0'; - else - RFSH_n <= '1'; - end if; - end if; - end if; - end process; - - MC <= std_logic_vector(MCycle); - TS <= std_logic_vector(TState); - DI_Reg <= DI; - HALT_n <= not Halt_FF; - BUSAK_n <= not BusAck; - IntCycle_n <= not IntCycle; - IntE <= IntE_FF1; - IORQ <= IORQ_i; - Stop <= I_DJNZ; - -------------------------------------------------------------------------- --- --- Syncronise inputs --- -------------------------------------------------------------------------- - process (RESET_n, CLK_n) - variable OldNMI_n : std_logic; - begin - if RESET_n = '0' then - BusReq_s <= '0'; - INT_s <= '0'; - NMI_s <= '0'; - OldNMI_n := '0'; - elsif CLK_n'event and CLK_n = '1' then - if CEN = '1' then - BusReq_s <= not BUSRQ_n; - INT_s <= not INT_n; - if NMICycle = '1' then - NMI_s <= '0'; - elsif NMI_n = '0' and OldNMI_n = '1' then - NMI_s <= '1'; - end if; - OldNMI_n := NMI_n; - end if; - end if; - end process; - -------------------------------------------------------------------------- --- --- Main state machine --- -------------------------------------------------------------------------- - process (RESET_n, CLK_n) - begin - if RESET_n = '0' then - MCycle <= "001"; - TState <= "000"; - Pre_XY_F_M <= "000"; - Halt_FF <= '0'; - BusAck <= '0'; - NMICycle <= '0'; - IntCycle <= '0'; - IntE_FF1 <= '0'; - IntE_FF2 <= '0'; - No_BTR <= '0'; - Auto_Wait_t1 <= '0'; - Auto_Wait_t2 <= '0'; - M1_n <= '1'; - elsif CLK_n'event and CLK_n = '1' then - if CEN = '1' then - Auto_Wait_t1 <= Auto_Wait; - Auto_Wait_t2 <= Auto_Wait_t1; - No_BTR <= (I_BT and (not IR(4) or not F(Flag_P))) or - (I_BC and (not IR(4) or F(Flag_Z) or not F(Flag_P))) or - (I_BTR and (not IR(4) or F(Flag_Z))); - if TState = 2 then - if SetEI = '1' then - IntE_FF1 <= '1'; - IntE_FF2 <= '1'; - end if; - if I_RETN = '1' then - IntE_FF1 <= IntE_FF2; - end if; - end if; - if TState = 3 then - if SetDI = '1' then - IntE_FF1 <= '0'; - IntE_FF2 <= '0'; - end if; - end if; - if IntCycle = '1' or NMICycle = '1' then - Halt_FF <= '0'; - end if; - if MCycle = "001" and TState = 2 and Wait_n = '1' then - M1_n <= '1'; - end if; - if BusReq_s = '1' and BusAck = '1' then - else - BusAck <= '0'; - if TState = 2 and Wait_n = '0' then - elsif T_Res = '1' then - if Halt = '1' then - Halt_FF <= '1'; - end if; - if BusReq_s = '1' then - BusAck <= '1'; - else - TState <= "001"; - if NextIs_XY_Fetch = '1' then - MCycle <= "110"; - Pre_XY_F_M <= MCycle; - if IR = "00110110" and Mode = 0 then - Pre_XY_F_M <= "010"; - end if; - elsif (MCycle = "111") or - (MCycle = "110" and Mode = 1 and ISet /= "01") then - MCycle <= std_logic_vector(unsigned(Pre_XY_F_M) + 1); - elsif (MCycle = MCycles) or - No_BTR = '1' or - (MCycle = "010" and I_DJNZ = '1' and IncDecZ = '1') then - M1_n <= '0'; - MCycle <= "001"; - IntCycle <= '0'; - NMICycle <= '0'; - if NMI_s = '1' and Prefix = "00" then - NMICycle <= '1'; - IntE_FF1 <= '0'; - elsif (IntE_FF1 = '1' and INT_s = '1') and Prefix = "00" and SetEI = '0' then - IntCycle <= '1'; - IntE_FF1 <= '0'; - IntE_FF2 <= '0'; - end if; - else - MCycle <= std_logic_vector(unsigned(MCycle) + 1); - end if; - end if; - else - if Auto_Wait = '1' nand Auto_Wait_t2 = '0' then - - TState <= TState + 1; - end if; - end if; - end if; - if TState = 0 then - M1_n <= '0'; - end if; - end if; - end if; - end process; - - process (IntCycle, NMICycle, MCycle) - begin - Auto_Wait <= '0'; - if IntCycle = '1' or NMICycle = '1' then - if MCycle = "001" then - Auto_Wait <= '1'; - end if; - end if; - end process; - -end; diff --git a/Computer_MiST/Laser310_MiST/rtl/T80/T80_ALU.vhd b/Computer_MiST/Laser310_MiST/rtl/T80/T80_ALU.vhd deleted file mode 100644 index 95c98dab..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/T80/T80_ALU.vhd +++ /dev/null @@ -1,371 +0,0 @@ --- **** --- T80(b) core. In an effort to merge and maintain bug fixes .... --- --- --- Ver 301 parity flag is just parity for 8080, also overflow for Z80, by Sean Riddle --- Ver 300 started tidyup --- MikeJ March 2005 --- Latest version from www.fpgaarcade.com (original www.opencores.org) --- --- **** --- --- Z80 compatible microprocessor core --- --- Version : 0247 --- --- Copyright (c) 2001-2002 Daniel Wallner (jesus@opencores.org) --- --- All rights reserved --- --- Redistribution and use in source and synthezised forms, with or without --- modification, are permitted provided that the following conditions are met: --- --- Redistributions of source code must retain the above copyright notice, --- this list of conditions and the following disclaimer. --- --- Redistributions in synthesized form must reproduce the above copyright --- notice, this list of conditions and the following disclaimer in the --- documentation and/or other materials provided with the distribution. --- --- Neither the name of the author nor the names of other contributors may --- be used to endorse or promote products derived from this software without --- specific prior written permission. --- --- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" --- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, --- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR --- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE --- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR --- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF --- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS --- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN --- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) --- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE --- POSSIBILITY OF SUCH DAMAGE. --- --- Please report bugs to the author, but before you do so, please --- make sure that this is not a derivative work and that --- you have the latest version of this file. --- --- The latest version of this file can be found at: --- http://www.opencores.org/cvsweb.shtml/t80/ --- --- Limitations : --- --- File history : --- --- 0214 : Fixed mostly flags, only the block instructions now fail the zex regression test --- --- 0238 : Fixed zero flag for 16 bit SBC and ADC --- --- 0240 : Added GB operations --- --- 0242 : Cleanup --- --- 0247 : Cleanup --- - -library IEEE; -use IEEE.std_logic_1164.all; -use IEEE.numeric_std.all; - -entity T80_ALU is - generic( - Mode : integer := 0; - Flag_C : integer := 0; - Flag_N : integer := 1; - Flag_P : integer := 2; - Flag_X : integer := 3; - Flag_H : integer := 4; - Flag_Y : integer := 5; - Flag_Z : integer := 6; - Flag_S : integer := 7 - ); - port( - Arith16 : in std_logic; - Z16 : in std_logic; - ALU_Op : in std_logic_vector(3 downto 0); - IR : in std_logic_vector(5 downto 0); - ISet : in std_logic_vector(1 downto 0); - BusA : in std_logic_vector(7 downto 0); - BusB : in std_logic_vector(7 downto 0); - F_In : in std_logic_vector(7 downto 0); - Q : out std_logic_vector(7 downto 0); - F_Out : out std_logic_vector(7 downto 0) - ); -end T80_ALU; - -architecture rtl of T80_ALU is - - procedure AddSub(A : std_logic_vector; - B : std_logic_vector; - Sub : std_logic; - Carry_In : std_logic; - signal Res : out std_logic_vector; - signal Carry : out std_logic) is - - variable B_i : unsigned(A'length - 1 downto 0); - variable Res_i : unsigned(A'length + 1 downto 0); - begin - if Sub = '1' then - B_i := not unsigned(B); - else - B_i := unsigned(B); - end if; - - Res_i := unsigned("0" & A & Carry_In) + unsigned("0" & B_i & "1"); - Carry <= Res_i(A'length + 1); - Res <= std_logic_vector(Res_i(A'length downto 1)); - end; - - -- AddSub variables (temporary signals) - signal UseCarry : std_logic; - signal Carry7_v : std_logic; - signal Overflow_v : std_logic; - signal HalfCarry_v : std_logic; - signal Carry_v : std_logic; - signal Q_v : std_logic_vector(7 downto 0); - - signal BitMask : std_logic_vector(7 downto 0); - -begin - - with IR(5 downto 3) select BitMask <= "00000001" when "000", - "00000010" when "001", - "00000100" when "010", - "00001000" when "011", - "00010000" when "100", - "00100000" when "101", - "01000000" when "110", - "10000000" when others; - - UseCarry <= not ALU_Op(2) and ALU_Op(0); - AddSub(BusA(3 downto 0), BusB(3 downto 0), ALU_Op(1), ALU_Op(1) xor (UseCarry and F_In(Flag_C)), Q_v(3 downto 0), HalfCarry_v); - AddSub(BusA(6 downto 4), BusB(6 downto 4), ALU_Op(1), HalfCarry_v, Q_v(6 downto 4), Carry7_v); - AddSub(BusA(7 downto 7), BusB(7 downto 7), ALU_Op(1), Carry7_v, Q_v(7 downto 7), Carry_v); - - -- bug fix - parity flag is just parity for 8080, also overflow for Z80 - process (Carry_v, Carry7_v, Q_v) - begin - if(Mode=2) then - OverFlow_v <= not (Q_v(0) xor Q_v(1) xor Q_v(2) xor Q_v(3) xor - Q_v(4) xor Q_v(5) xor Q_v(6) xor Q_v(7)); else - OverFlow_v <= Carry_v xor Carry7_v; - end if; - end process; - - process (Arith16, ALU_OP, F_In, BusA, BusB, IR, Q_v, Carry_v, HalfCarry_v, OverFlow_v, BitMask, ISet, Z16) - variable Q_t : std_logic_vector(7 downto 0); - variable DAA_Q : unsigned(8 downto 0); - begin - Q_t := "--------"; - F_Out <= F_In; - DAA_Q := "---------"; - case ALU_Op is - when "0000" | "0001" | "0010" | "0011" | "0100" | "0101" | "0110" | "0111" => - F_Out(Flag_N) <= '0'; - F_Out(Flag_C) <= '0'; - case ALU_OP(2 downto 0) is - when "000" | "001" => -- ADD, ADC - Q_t := Q_v; - F_Out(Flag_C) <= Carry_v; - F_Out(Flag_H) <= HalfCarry_v; - F_Out(Flag_P) <= OverFlow_v; - when "010" | "011" | "111" => -- SUB, SBC, CP - Q_t := Q_v; - F_Out(Flag_N) <= '1'; - F_Out(Flag_C) <= not Carry_v; - F_Out(Flag_H) <= not HalfCarry_v; - F_Out(Flag_P) <= OverFlow_v; - when "100" => -- AND - Q_t(7 downto 0) := BusA and BusB; - F_Out(Flag_H) <= '1'; - when "101" => -- XOR - Q_t(7 downto 0) := BusA xor BusB; - F_Out(Flag_H) <= '0'; - when others => -- OR "110" - Q_t(7 downto 0) := BusA or BusB; - F_Out(Flag_H) <= '0'; - end case; - if ALU_Op(2 downto 0) = "111" then -- CP - F_Out(Flag_X) <= BusB(3); - F_Out(Flag_Y) <= BusB(5); - else - F_Out(Flag_X) <= Q_t(3); - F_Out(Flag_Y) <= Q_t(5); - end if; - if Q_t(7 downto 0) = "00000000" then - F_Out(Flag_Z) <= '1'; - if Z16 = '1' then - F_Out(Flag_Z) <= F_In(Flag_Z); -- 16 bit ADC,SBC - end if; - else - F_Out(Flag_Z) <= '0'; - end if; - F_Out(Flag_S) <= Q_t(7); - case ALU_Op(2 downto 0) is - when "000" | "001" | "010" | "011" | "111" => -- ADD, ADC, SUB, SBC, CP - when others => - F_Out(Flag_P) <= not (Q_t(0) xor Q_t(1) xor Q_t(2) xor Q_t(3) xor - Q_t(4) xor Q_t(5) xor Q_t(6) xor Q_t(7)); - end case; - if Arith16 = '1' then - F_Out(Flag_S) <= F_In(Flag_S); - F_Out(Flag_Z) <= F_In(Flag_Z); - F_Out(Flag_P) <= F_In(Flag_P); - end if; - when "1100" => - -- DAA - F_Out(Flag_H) <= F_In(Flag_H); - F_Out(Flag_C) <= F_In(Flag_C); - DAA_Q(7 downto 0) := unsigned(BusA); - DAA_Q(8) := '0'; - if F_In(Flag_N) = '0' then - -- After addition - -- Alow > 9 or H = 1 - if DAA_Q(3 downto 0) > 9 or F_In(Flag_H) = '1' then - if (DAA_Q(3 downto 0) > 9) then - F_Out(Flag_H) <= '1'; - else - F_Out(Flag_H) <= '0'; - end if; - DAA_Q := DAA_Q + 6; - end if; - -- new Ahigh > 9 or C = 1 - if DAA_Q(8 downto 4) > 9 or F_In(Flag_C) = '1' then - DAA_Q := DAA_Q + 96; -- 0x60 - end if; - else - -- After subtraction - if DAA_Q(3 downto 0) > 9 or F_In(Flag_H) = '1' then - if DAA_Q(3 downto 0) > 5 then - F_Out(Flag_H) <= '0'; - end if; - DAA_Q(7 downto 0) := DAA_Q(7 downto 0) - 6; - end if; - if unsigned(BusA) > 153 or F_In(Flag_C) = '1' then - DAA_Q := DAA_Q - 352; -- 0x160 - end if; - end if; - F_Out(Flag_X) <= DAA_Q(3); - F_Out(Flag_Y) <= DAA_Q(5); - F_Out(Flag_C) <= F_In(Flag_C) or DAA_Q(8); - Q_t := std_logic_vector(DAA_Q(7 downto 0)); - if DAA_Q(7 downto 0) = "00000000" then - F_Out(Flag_Z) <= '1'; - else - F_Out(Flag_Z) <= '0'; - end if; - F_Out(Flag_S) <= DAA_Q(7); - F_Out(Flag_P) <= not (DAA_Q(0) xor DAA_Q(1) xor DAA_Q(2) xor DAA_Q(3) xor - DAA_Q(4) xor DAA_Q(5) xor DAA_Q(6) xor DAA_Q(7)); - when "1101" | "1110" => - -- RLD, RRD - Q_t(7 downto 4) := BusA(7 downto 4); - if ALU_Op(0) = '1' then - Q_t(3 downto 0) := BusB(7 downto 4); - else - Q_t(3 downto 0) := BusB(3 downto 0); - end if; - F_Out(Flag_H) <= '0'; - F_Out(Flag_N) <= '0'; - F_Out(Flag_X) <= Q_t(3); - F_Out(Flag_Y) <= Q_t(5); - if Q_t(7 downto 0) = "00000000" then - F_Out(Flag_Z) <= '1'; - else - F_Out(Flag_Z) <= '0'; - end if; - F_Out(Flag_S) <= Q_t(7); - F_Out(Flag_P) <= not (Q_t(0) xor Q_t(1) xor Q_t(2) xor Q_t(3) xor - Q_t(4) xor Q_t(5) xor Q_t(6) xor Q_t(7)); - when "1001" => - -- BIT - Q_t(7 downto 0) := BusB and BitMask; - F_Out(Flag_S) <= Q_t(7); - if Q_t(7 downto 0) = "00000000" then - F_Out(Flag_Z) <= '1'; - F_Out(Flag_P) <= '1'; - else - F_Out(Flag_Z) <= '0'; - F_Out(Flag_P) <= '0'; - end if; - F_Out(Flag_H) <= '1'; - F_Out(Flag_N) <= '0'; - F_Out(Flag_X) <= '0'; - F_Out(Flag_Y) <= '0'; - if IR(2 downto 0) /= "110" then - F_Out(Flag_X) <= BusB(3); - F_Out(Flag_Y) <= BusB(5); - end if; - when "1010" => - -- SET - Q_t(7 downto 0) := BusB or BitMask; - when "1011" => - -- RES - Q_t(7 downto 0) := BusB and not BitMask; - when "1000" => - -- ROT - case IR(5 downto 3) is - when "000" => -- RLC - Q_t(7 downto 1) := BusA(6 downto 0); - Q_t(0) := BusA(7); - F_Out(Flag_C) <= BusA(7); - when "010" => -- RL - Q_t(7 downto 1) := BusA(6 downto 0); - Q_t(0) := F_In(Flag_C); - F_Out(Flag_C) <= BusA(7); - when "001" => -- RRC - Q_t(6 downto 0) := BusA(7 downto 1); - Q_t(7) := BusA(0); - F_Out(Flag_C) <= BusA(0); - when "011" => -- RR - Q_t(6 downto 0) := BusA(7 downto 1); - Q_t(7) := F_In(Flag_C); - F_Out(Flag_C) <= BusA(0); - when "100" => -- SLA - Q_t(7 downto 1) := BusA(6 downto 0); - Q_t(0) := '0'; - F_Out(Flag_C) <= BusA(7); - when "110" => -- SLL (Undocumented) / SWAP - if Mode = 3 then - Q_t(7 downto 4) := BusA(3 downto 0); - Q_t(3 downto 0) := BusA(7 downto 4); - F_Out(Flag_C) <= '0'; - else - Q_t(7 downto 1) := BusA(6 downto 0); - Q_t(0) := '1'; - F_Out(Flag_C) <= BusA(7); - end if; - when "101" => -- SRA - Q_t(6 downto 0) := BusA(7 downto 1); - Q_t(7) := BusA(7); - F_Out(Flag_C) <= BusA(0); - when others => -- SRL - Q_t(6 downto 0) := BusA(7 downto 1); - Q_t(7) := '0'; - F_Out(Flag_C) <= BusA(0); - end case; - F_Out(Flag_H) <= '0'; - F_Out(Flag_N) <= '0'; - F_Out(Flag_X) <= Q_t(3); - F_Out(Flag_Y) <= Q_t(5); - F_Out(Flag_S) <= Q_t(7); - if Q_t(7 downto 0) = "00000000" then - F_Out(Flag_Z) <= '1'; - else - F_Out(Flag_Z) <= '0'; - end if; - F_Out(Flag_P) <= not (Q_t(0) xor Q_t(1) xor Q_t(2) xor Q_t(3) xor - Q_t(4) xor Q_t(5) xor Q_t(6) xor Q_t(7)); - if ISet = "00" then - F_Out(Flag_P) <= F_In(Flag_P); - F_Out(Flag_S) <= F_In(Flag_S); - F_Out(Flag_Z) <= F_In(Flag_Z); - end if; - when others => - null; - end case; - Q <= Q_t; - end process; -end; diff --git a/Computer_MiST/Laser310_MiST/rtl/T80/T80_MCode.vhd b/Computer_MiST/Laser310_MiST/rtl/T80/T80_MCode.vhd deleted file mode 100644 index 43cea1b5..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/T80/T80_MCode.vhd +++ /dev/null @@ -1,1944 +0,0 @@ --- **** --- T80(b) core. In an effort to merge and maintain bug fixes .... --- --- --- Ver 300 started tidyup --- MikeJ March 2005 --- Latest version from www.fpgaarcade.com (original www.opencores.org) --- --- **** --- --- Z80 compatible microprocessor core --- --- Version : 0242 --- --- Copyright (c) 2001-2002 Daniel Wallner (jesus@opencores.org) --- --- All rights reserved --- --- Redistribution and use in source and synthezised forms, with or without --- modification, are permitted provided that the following conditions are met: --- --- Redistributions of source code must retain the above copyright notice, --- this list of conditions and the following disclaimer. --- --- Redistributions in synthesized form must reproduce the above copyright --- notice, this list of conditions and the following disclaimer in the --- documentation and/or other materials provided with the distribution. --- --- Neither the name of the author nor the names of other contributors may --- be used to endorse or promote products derived from this software without --- specific prior written permission. --- --- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" --- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, --- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR --- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE --- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR --- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF --- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS --- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN --- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) --- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE --- POSSIBILITY OF SUCH DAMAGE. --- --- Please report bugs to the author, but before you do so, please --- make sure that this is not a derivative work and that --- you have the latest version of this file. --- --- The latest version of this file can be found at: --- http://www.opencores.org/cvsweb.shtml/t80/ --- --- Limitations : --- --- File history : --- --- 0208 : First complete release --- --- 0211 : Fixed IM 1 --- --- 0214 : Fixed mostly flags, only the block instructions now fail the zex regression test --- --- 0235 : Added IM 2 fix by Mike Johnson --- --- 0238 : Added NoRead signal --- --- 0238b: Fixed instruction timing for POP and DJNZ --- --- 0240 : Added (IX/IY+d) states, removed op-codes from mode 2 and added all remaining mode 3 op-codes - --- 0240mj1 fix for HL inc/dec for INI, IND, INIR, INDR, OUTI, OUTD, OTIR, OTDR --- --- 0242 : Fixed I/O instruction timing, cleanup --- - -library IEEE; -use IEEE.std_logic_1164.all; -use IEEE.numeric_std.all; -use work.T80_Pack.all; - -entity T80_MCode is - generic( - Mode : integer := 0; - Flag_C : integer := 0; - Flag_N : integer := 1; - Flag_P : integer := 2; - Flag_X : integer := 3; - Flag_H : integer := 4; - Flag_Y : integer := 5; - Flag_Z : integer := 6; - Flag_S : integer := 7 - ); - port( - IR : in std_logic_vector(7 downto 0); - ISet : in std_logic_vector(1 downto 0); - MCycle : in std_logic_vector(2 downto 0); - F : in std_logic_vector(7 downto 0); - NMICycle : in std_logic; - IntCycle : in std_logic; - MCycles : out std_logic_vector(2 downto 0); - TStates : out std_logic_vector(2 downto 0); - Prefix : out std_logic_vector(1 downto 0); -- None,BC,ED,DD/FD - Inc_PC : out std_logic; - Inc_WZ : out std_logic; - IncDec_16 : out std_logic_vector(3 downto 0); -- BC,DE,HL,SP 0 is inc - Read_To_Reg : out std_logic; - Read_To_Acc : out std_logic; - Set_BusA_To : out std_logic_vector(3 downto 0); -- B,C,D,E,H,L,DI/DB,A,SP(L),SP(M),0,F - Set_BusB_To : out std_logic_vector(3 downto 0); -- B,C,D,E,H,L,DI,A,SP(L),SP(M),1,F,PC(L),PC(M),0 - ALU_Op : out std_logic_vector(3 downto 0); - -- ADD, ADC, SUB, SBC, AND, XOR, OR, CP, ROT, BIT, SET, RES, DAA, RLD, RRD, None - Save_ALU : out std_logic; - PreserveC : out std_logic; - Arith16 : out std_logic; - Set_Addr_To : out std_logic_vector(2 downto 0); -- aNone,aXY,aIOA,aSP,aBC,aDE,aZI - IORQ : out std_logic; - Jump : out std_logic; - JumpE : out std_logic; - JumpXY : out std_logic; - Call : out std_logic; - RstP : out std_logic; - LDZ : out std_logic; - LDW : out std_logic; - LDSPHL : out std_logic; - Special_LD : out std_logic_vector(2 downto 0); -- A,I;A,R;I,A;R,A;None - ExchangeDH : out std_logic; - ExchangeRp : out std_logic; - ExchangeAF : out std_logic; - ExchangeRS : out std_logic; - I_DJNZ : out std_logic; - I_CPL : out std_logic; - I_CCF : out std_logic; - I_SCF : out std_logic; - I_RETN : out std_logic; - I_BT : out std_logic; - I_BC : out std_logic; - I_BTR : out std_logic; - I_RLD : out std_logic; - I_RRD : out std_logic; - I_INRC : out std_logic; - SetDI : out std_logic; - SetEI : out std_logic; - IMode : out std_logic_vector(1 downto 0); - Halt : out std_logic; - NoRead : out std_logic; - Write : out std_logic - ); -end T80_MCode; - -architecture rtl of T80_MCode is - - constant aNone : std_logic_vector(2 downto 0) := "111"; - constant aBC : std_logic_vector(2 downto 0) := "000"; - constant aDE : std_logic_vector(2 downto 0) := "001"; - constant aXY : std_logic_vector(2 downto 0) := "010"; - constant aIOA : std_logic_vector(2 downto 0) := "100"; - constant aSP : std_logic_vector(2 downto 0) := "101"; - constant aZI : std_logic_vector(2 downto 0) := "110"; - - function is_cc_true( - F : std_logic_vector(7 downto 0); - cc : bit_vector(2 downto 0) - ) return boolean is - begin - if Mode = 3 then - case cc is - when "000" => return F(7) = '0'; -- NZ - when "001" => return F(7) = '1'; -- Z - when "010" => return F(4) = '0'; -- NC - when "011" => return F(4) = '1'; -- C - when "100" => return false; - when "101" => return false; - when "110" => return false; - when "111" => return false; - end case; - else - case cc is - when "000" => return F(6) = '0'; -- NZ - when "001" => return F(6) = '1'; -- Z - when "010" => return F(0) = '0'; -- NC - when "011" => return F(0) = '1'; -- C - when "100" => return F(2) = '0'; -- PO - when "101" => return F(2) = '1'; -- PE - when "110" => return F(7) = '0'; -- P - when "111" => return F(7) = '1'; -- M - end case; - end if; - end; - -begin - - process (IR, ISet, MCycle, F, NMICycle, IntCycle) - variable DDD : std_logic_vector(2 downto 0); - variable SSS : std_logic_vector(2 downto 0); - variable DPair : std_logic_vector(1 downto 0); - variable IRB : bit_vector(7 downto 0); - begin - DDD := IR(5 downto 3); - SSS := IR(2 downto 0); - DPair := IR(5 downto 4); - IRB := to_bitvector(IR); - - MCycles <= "001"; - if MCycle = "001" then - TStates <= "100"; - else - TStates <= "011"; - end if; - Prefix <= "00"; - Inc_PC <= '0'; - Inc_WZ <= '0'; - IncDec_16 <= "0000"; - Read_To_Acc <= '0'; - Read_To_Reg <= '0'; - Set_BusB_To <= "0000"; - Set_BusA_To <= "0000"; - ALU_Op <= "0" & IR(5 downto 3); - Save_ALU <= '0'; - PreserveC <= '0'; - Arith16 <= '0'; - IORQ <= '0'; - Set_Addr_To <= aNone; - Jump <= '0'; - JumpE <= '0'; - JumpXY <= '0'; - Call <= '0'; - RstP <= '0'; - LDZ <= '0'; - LDW <= '0'; - LDSPHL <= '0'; - Special_LD <= "000"; - ExchangeDH <= '0'; - ExchangeRp <= '0'; - ExchangeAF <= '0'; - ExchangeRS <= '0'; - I_DJNZ <= '0'; - I_CPL <= '0'; - I_CCF <= '0'; - I_SCF <= '0'; - I_RETN <= '0'; - I_BT <= '0'; - I_BC <= '0'; - I_BTR <= '0'; - I_RLD <= '0'; - I_RRD <= '0'; - I_INRC <= '0'; - SetDI <= '0'; - SetEI <= '0'; - IMode <= "11"; - Halt <= '0'; - NoRead <= '0'; - Write <= '0'; - - case ISet is - when "00" => - ------------------------------------------------------------------------------- --- --- Unprefixed instructions --- ------------------------------------------------------------------------------- - - case IRB is --- 8 BIT LOAD GROUP - when "01000000"|"01000001"|"01000010"|"01000011"|"01000100"|"01000101"|"01000111" - |"01001000"|"01001001"|"01001010"|"01001011"|"01001100"|"01001101"|"01001111" - |"01010000"|"01010001"|"01010010"|"01010011"|"01010100"|"01010101"|"01010111" - |"01011000"|"01011001"|"01011010"|"01011011"|"01011100"|"01011101"|"01011111" - |"01100000"|"01100001"|"01100010"|"01100011"|"01100100"|"01100101"|"01100111" - |"01101000"|"01101001"|"01101010"|"01101011"|"01101100"|"01101101"|"01101111" - |"01111000"|"01111001"|"01111010"|"01111011"|"01111100"|"01111101"|"01111111" => - -- LD r,r' - Set_BusB_To(2 downto 0) <= SSS; - ExchangeRp <= '1'; - Set_BusA_To(2 downto 0) <= DDD; - Read_To_Reg <= '1'; - when "00000110"|"00001110"|"00010110"|"00011110"|"00100110"|"00101110"|"00111110" => - -- LD r,n - MCycles <= "010"; - case to_integer(unsigned(MCycle)) is - when 2 => - Inc_PC <= '1'; - Set_BusA_To(2 downto 0) <= DDD; - Read_To_Reg <= '1'; - when others => null; - end case; - when "01000110"|"01001110"|"01010110"|"01011110"|"01100110"|"01101110"|"01111110" => - -- LD r,(HL) - MCycles <= "010"; - case to_integer(unsigned(MCycle)) is - when 1 => - Set_Addr_To <= aXY; - when 2 => - Set_BusA_To(2 downto 0) <= DDD; - Read_To_Reg <= '1'; - when others => null; - end case; - when "01110000"|"01110001"|"01110010"|"01110011"|"01110100"|"01110101"|"01110111" => - -- LD (HL),r - MCycles <= "010"; - case to_integer(unsigned(MCycle)) is - when 1 => - Set_Addr_To <= aXY; - Set_BusB_To(2 downto 0) <= SSS; - Set_BusB_To(3) <= '0'; - when 2 => - Write <= '1'; - when others => null; - end case; - when "00110110" => - -- LD (HL),n - MCycles <= "011"; - case to_integer(unsigned(MCycle)) is - when 2 => - Inc_PC <= '1'; - Set_Addr_To <= aXY; - Set_BusB_To(2 downto 0) <= SSS; - Set_BusB_To(3) <= '0'; - when 3 => - Write <= '1'; - when others => null; - end case; - when "00001010" => - -- LD A,(BC) - MCycles <= "010"; - case to_integer(unsigned(MCycle)) is - when 1 => - Set_Addr_To <= aBC; - when 2 => - Read_To_Acc <= '1'; - when others => null; - end case; - when "00011010" => - -- LD A,(DE) - MCycles <= "010"; - case to_integer(unsigned(MCycle)) is - when 1 => - Set_Addr_To <= aDE; - when 2 => - Read_To_Acc <= '1'; - when others => null; - end case; - when "00111010" => - if Mode = 3 then - -- LDD A,(HL) - MCycles <= "010"; - case to_integer(unsigned(MCycle)) is - when 1 => - Set_Addr_To <= aXY; - when 2 => - Read_To_Acc <= '1'; - IncDec_16 <= "1110"; - when others => null; - end case; - else - -- LD A,(nn) - MCycles <= "100"; - case to_integer(unsigned(MCycle)) is - when 2 => - Inc_PC <= '1'; - LDZ <= '1'; - when 3 => - Set_Addr_To <= aZI; - Inc_PC <= '1'; - when 4 => - Read_To_Acc <= '1'; - when others => null; - end case; - end if; - when "00000010" => - -- LD (BC),A - MCycles <= "010"; - case to_integer(unsigned(MCycle)) is - when 1 => - Set_Addr_To <= aBC; - Set_BusB_To <= "0111"; - when 2 => - Write <= '1'; - when others => null; - end case; - when "00010010" => - -- LD (DE),A - MCycles <= "010"; - case to_integer(unsigned(MCycle)) is - when 1 => - Set_Addr_To <= aDE; - Set_BusB_To <= "0111"; - when 2 => - Write <= '1'; - when others => null; - end case; - when "00110010" => - if Mode = 3 then - -- LDD (HL),A - MCycles <= "010"; - case to_integer(unsigned(MCycle)) is - when 1 => - Set_Addr_To <= aXY; - Set_BusB_To <= "0111"; - when 2 => - Write <= '1'; - IncDec_16 <= "1110"; - when others => null; - end case; - else - -- LD (nn),A - MCycles <= "100"; - case to_integer(unsigned(MCycle)) is - when 2 => - Inc_PC <= '1'; - LDZ <= '1'; - when 3 => - Set_Addr_To <= aZI; - Inc_PC <= '1'; - Set_BusB_To <= "0111"; - when 4 => - Write <= '1'; - when others => null; - end case; - end if; - --- 16 BIT LOAD GROUP - when "00000001"|"00010001"|"00100001"|"00110001" => - -- LD dd,nn - MCycles <= "011"; - case to_integer(unsigned(MCycle)) is - when 2 => - Inc_PC <= '1'; - Read_To_Reg <= '1'; - if DPAIR = "11" then - Set_BusA_To(3 downto 0) <= "1000"; - else - Set_BusA_To(2 downto 1) <= DPAIR; - Set_BusA_To(0) <= '1'; - end if; - when 3 => - Inc_PC <= '1'; - Read_To_Reg <= '1'; - if DPAIR = "11" then - Set_BusA_To(3 downto 0) <= "1001"; - else - Set_BusA_To(2 downto 1) <= DPAIR; - Set_BusA_To(0) <= '0'; - end if; - when others => null; - end case; - when "00101010" => - if Mode = 3 then - -- LDI A,(HL) - MCycles <= "010"; - case to_integer(unsigned(MCycle)) is - when 1 => - Set_Addr_To <= aXY; - when 2 => - Read_To_Acc <= '1'; - IncDec_16 <= "0110"; - when others => null; - end case; - else - -- LD HL,(nn) - MCycles <= "101"; - case to_integer(unsigned(MCycle)) is - when 2 => - Inc_PC <= '1'; - LDZ <= '1'; - when 3 => - Set_Addr_To <= aZI; - Inc_PC <= '1'; - LDW <= '1'; - when 4 => - Set_BusA_To(2 downto 0) <= "101"; -- L - Read_To_Reg <= '1'; - Inc_WZ <= '1'; - Set_Addr_To <= aZI; - when 5 => - Set_BusA_To(2 downto 0) <= "100"; -- H - Read_To_Reg <= '1'; - when others => null; - end case; - end if; - when "00100010" => - if Mode = 3 then - -- LDI (HL),A - MCycles <= "010"; - case to_integer(unsigned(MCycle)) is - when 1 => - Set_Addr_To <= aXY; - Set_BusB_To <= "0111"; - when 2 => - Write <= '1'; - IncDec_16 <= "0110"; - when others => null; - end case; - else - -- LD (nn),HL - MCycles <= "101"; - case to_integer(unsigned(MCycle)) is - when 2 => - Inc_PC <= '1'; - LDZ <= '1'; - when 3 => - Set_Addr_To <= aZI; - Inc_PC <= '1'; - LDW <= '1'; - Set_BusB_To <= "0101"; -- L - when 4 => - Inc_WZ <= '1'; - Set_Addr_To <= aZI; - Write <= '1'; - Set_BusB_To <= "0100"; -- H - when 5 => - Write <= '1'; - when others => null; - end case; - end if; - when "11111001" => - -- LD SP,HL - TStates <= "110"; - LDSPHL <= '1'; - when "11000101"|"11010101"|"11100101"|"11110101" => - -- PUSH qq - MCycles <= "011"; - case to_integer(unsigned(MCycle)) is - when 1 => - TStates <= "101"; - IncDec_16 <= "1111"; - Set_Addr_TO <= aSP; - if DPAIR = "11" then - Set_BusB_To <= "0111"; - else - Set_BusB_To(2 downto 1) <= DPAIR; - Set_BusB_To(0) <= '0'; - Set_BusB_To(3) <= '0'; - end if; - when 2 => - IncDec_16 <= "1111"; - Set_Addr_To <= aSP; - if DPAIR = "11" then - Set_BusB_To <= "1011"; - else - Set_BusB_To(2 downto 1) <= DPAIR; - Set_BusB_To(0) <= '1'; - Set_BusB_To(3) <= '0'; - end if; - Write <= '1'; - when 3 => - Write <= '1'; - when others => null; - end case; - when "11000001"|"11010001"|"11100001"|"11110001" => - -- POP qq - MCycles <= "011"; - case to_integer(unsigned(MCycle)) is - when 1 => - Set_Addr_To <= aSP; - when 2 => - IncDec_16 <= "0111"; - Set_Addr_To <= aSP; - Read_To_Reg <= '1'; - if DPAIR = "11" then - Set_BusA_To(3 downto 0) <= "1011"; - else - Set_BusA_To(2 downto 1) <= DPAIR; - Set_BusA_To(0) <= '1'; - end if; - when 3 => - IncDec_16 <= "0111"; - Read_To_Reg <= '1'; - if DPAIR = "11" then - Set_BusA_To(3 downto 0) <= "0111"; - else - Set_BusA_To(2 downto 1) <= DPAIR; - Set_BusA_To(0) <= '0'; - end if; - when others => null; - end case; - --- EXCHANGE, BLOCK TRANSFER AND SEARCH GROUP - when "11101011" => - if Mode /= 3 then - -- EX DE,HL - ExchangeDH <= '1'; - end if; - when "00001000" => - if Mode = 3 then - -- LD (nn),SP - MCycles <= "101"; - case to_integer(unsigned(MCycle)) is - when 2 => - Inc_PC <= '1'; - LDZ <= '1'; - when 3 => - Set_Addr_To <= aZI; - Inc_PC <= '1'; - LDW <= '1'; - Set_BusB_To <= "1000"; - when 4 => - Inc_WZ <= '1'; - Set_Addr_To <= aZI; - Write <= '1'; - Set_BusB_To <= "1001"; - when 5 => - Write <= '1'; - when others => null; - end case; - elsif Mode < 2 then - -- EX AF,AF' - ExchangeAF <= '1'; - end if; - when "11011001" => - if Mode = 3 then - -- RETI - MCycles <= "011"; - case to_integer(unsigned(MCycle)) is - when 1 => - Set_Addr_TO <= aSP; - when 2 => - IncDec_16 <= "0111"; - Set_Addr_To <= aSP; - LDZ <= '1'; - when 3 => - Jump <= '1'; - IncDec_16 <= "0111"; - I_RETN <= '1'; - SetEI <= '1'; - when others => null; - end case; - elsif Mode < 2 then - -- EXX - ExchangeRS <= '1'; - end if; - when "11100011" => - if Mode /= 3 then - -- EX (SP),HL - MCycles <= "101"; - case to_integer(unsigned(MCycle)) is - when 1 => - Set_Addr_To <= aSP; - when 2 => - Read_To_Reg <= '1'; - Set_BusA_To <= "0101"; - Set_BusB_To <= "0101"; - Set_Addr_To <= aSP; - when 3 => - IncDec_16 <= "0111"; - Set_Addr_To <= aSP; - TStates <= "100"; - Write <= '1'; - when 4 => - Read_To_Reg <= '1'; - Set_BusA_To <= "0100"; - Set_BusB_To <= "0100"; - Set_Addr_To <= aSP; - when 5 => - IncDec_16 <= "1111"; - TStates <= "101"; - Write <= '1'; - when others => null; - end case; - end if; - --- 8 BIT ARITHMETIC AND LOGICAL GROUP - when "10000000"|"10000001"|"10000010"|"10000011"|"10000100"|"10000101"|"10000111" - |"10001000"|"10001001"|"10001010"|"10001011"|"10001100"|"10001101"|"10001111" - |"10010000"|"10010001"|"10010010"|"10010011"|"10010100"|"10010101"|"10010111" - |"10011000"|"10011001"|"10011010"|"10011011"|"10011100"|"10011101"|"10011111" - |"10100000"|"10100001"|"10100010"|"10100011"|"10100100"|"10100101"|"10100111" - |"10101000"|"10101001"|"10101010"|"10101011"|"10101100"|"10101101"|"10101111" - |"10110000"|"10110001"|"10110010"|"10110011"|"10110100"|"10110101"|"10110111" - |"10111000"|"10111001"|"10111010"|"10111011"|"10111100"|"10111101"|"10111111" => - -- ADD A,r - -- ADC A,r - -- SUB A,r - -- SBC A,r - -- AND A,r - -- OR A,r - -- XOR A,r - -- CP A,r - Set_BusB_To(2 downto 0) <= SSS; - Set_BusA_To(2 downto 0) <= "111"; - Read_To_Reg <= '1'; - Save_ALU <= '1'; - when "10000110"|"10001110"|"10010110"|"10011110"|"10100110"|"10101110"|"10110110"|"10111110" => - -- ADD A,(HL) - -- ADC A,(HL) - -- SUB A,(HL) - -- SBC A,(HL) - -- AND A,(HL) - -- OR A,(HL) - -- XOR A,(HL) - -- CP A,(HL) - MCycles <= "010"; - case to_integer(unsigned(MCycle)) is - when 1 => - Set_Addr_To <= aXY; - when 2 => - Read_To_Reg <= '1'; - Save_ALU <= '1'; - Set_BusB_To(2 downto 0) <= SSS; - Set_BusA_To(2 downto 0) <= "111"; - when others => null; - end case; - when "11000110"|"11001110"|"11010110"|"11011110"|"11100110"|"11101110"|"11110110"|"11111110" => - -- ADD A,n - -- ADC A,n - -- SUB A,n - -- SBC A,n - -- AND A,n - -- OR A,n - -- XOR A,n - -- CP A,n - MCycles <= "010"; - if MCycle = "010" then - Inc_PC <= '1'; - Read_To_Reg <= '1'; - Save_ALU <= '1'; - Set_BusB_To(2 downto 0) <= SSS; - Set_BusA_To(2 downto 0) <= "111"; - end if; - when "00000100"|"00001100"|"00010100"|"00011100"|"00100100"|"00101100"|"00111100" => - -- INC r - Set_BusB_To <= "1010"; - Set_BusA_To(2 downto 0) <= DDD; - Read_To_Reg <= '1'; - Save_ALU <= '1'; - PreserveC <= '1'; - ALU_Op <= "0000"; - when "00110100" => - -- INC (HL) - MCycles <= "011"; - case to_integer(unsigned(MCycle)) is - when 1 => - Set_Addr_To <= aXY; - when 2 => - TStates <= "100"; - Set_Addr_To <= aXY; - Read_To_Reg <= '1'; - Save_ALU <= '1'; - PreserveC <= '1'; - ALU_Op <= "0000"; - Set_BusB_To <= "1010"; - Set_BusA_To(2 downto 0) <= DDD; - when 3 => - Write <= '1'; - when others => null; - end case; - when "00000101"|"00001101"|"00010101"|"00011101"|"00100101"|"00101101"|"00111101" => - -- DEC r - Set_BusB_To <= "1010"; - Set_BusA_To(2 downto 0) <= DDD; - Read_To_Reg <= '1'; - Save_ALU <= '1'; - PreserveC <= '1'; - ALU_Op <= "0010"; - when "00110101" => - -- DEC (HL) - MCycles <= "011"; - case to_integer(unsigned(MCycle)) is - when 1 => - Set_Addr_To <= aXY; - when 2 => - TStates <= "100"; - Set_Addr_To <= aXY; - ALU_Op <= "0010"; - Read_To_Reg <= '1'; - Save_ALU <= '1'; - PreserveC <= '1'; - Set_BusB_To <= "1010"; - Set_BusA_To(2 downto 0) <= DDD; - when 3 => - Write <= '1'; - when others => null; - end case; - --- GENERAL PURPOSE ARITHMETIC AND CPU CONTROL GROUPS - when "00100111" => - -- DAA - Set_BusA_To(2 downto 0) <= "111"; - Read_To_Reg <= '1'; - ALU_Op <= "1100"; - Save_ALU <= '1'; - when "00101111" => - -- CPL - I_CPL <= '1'; - when "00111111" => - -- CCF - I_CCF <= '1'; - when "00110111" => - -- SCF - I_SCF <= '1'; - when "00000000" => - if NMICycle = '1' then - -- NMI - MCycles <= "011"; - case to_integer(unsigned(MCycle)) is - when 1 => - TStates <= "101"; - IncDec_16 <= "1111"; - Set_Addr_To <= aSP; - Set_BusB_To <= "1101"; - when 2 => - TStates <= "100"; - Write <= '1'; - IncDec_16 <= "1111"; - Set_Addr_To <= aSP; - Set_BusB_To <= "1100"; - when 3 => - TStates <= "100"; - Write <= '1'; - when others => null; - end case; - elsif IntCycle = '1' then - -- INT (IM 2) - MCycles <= "101"; - case to_integer(unsigned(MCycle)) is - when 1 => - LDZ <= '1'; - TStates <= "101"; - IncDec_16 <= "1111"; - Set_Addr_To <= aSP; - Set_BusB_To <= "1101"; - when 2 => - TStates <= "100"; - Write <= '1'; - IncDec_16 <= "1111"; - Set_Addr_To <= aSP; - Set_BusB_To <= "1100"; - when 3 => - TStates <= "100"; - Write <= '1'; - when 4 => - Inc_PC <= '1'; - LDZ <= '1'; - when 5 => - Jump <= '1'; - when others => null; - end case; - else - -- NOP - end if; - when "01110110" => - -- HALT - Halt <= '1'; - when "11110011" => - -- DI - SetDI <= '1'; - when "11111011" => - -- EI - SetEI <= '1'; - --- 16 BIT ARITHMETIC GROUP - when "00001001"|"00011001"|"00101001"|"00111001" => - -- ADD HL,ss - MCycles <= "011"; - case to_integer(unsigned(MCycle)) is - when 2 => - NoRead <= '1'; - ALU_Op <= "0000"; - Read_To_Reg <= '1'; - Save_ALU <= '1'; - Set_BusA_To(2 downto 0) <= "101"; - case to_integer(unsigned(IR(5 downto 4))) is - when 0|1|2 => - Set_BusB_To(2 downto 1) <= IR(5 downto 4); - Set_BusB_To(0) <= '1'; - when others => - Set_BusB_To <= "1000"; - end case; - TStates <= "100"; - Arith16 <= '1'; - when 3 => - NoRead <= '1'; - Read_To_Reg <= '1'; - Save_ALU <= '1'; - ALU_Op <= "0001"; - Set_BusA_To(2 downto 0) <= "100"; - case to_integer(unsigned(IR(5 downto 4))) is - when 0|1|2 => - Set_BusB_To(2 downto 1) <= IR(5 downto 4); - when others => - Set_BusB_To <= "1001"; - end case; - Arith16 <= '1'; - when others => - end case; - when "00000011"|"00010011"|"00100011"|"00110011" => - -- INC ss - TStates <= "110"; - IncDec_16(3 downto 2) <= "01"; - IncDec_16(1 downto 0) <= DPair; - when "00001011"|"00011011"|"00101011"|"00111011" => - -- DEC ss - TStates <= "110"; - IncDec_16(3 downto 2) <= "11"; - IncDec_16(1 downto 0) <= DPair; - --- ROTATE AND SHIFT GROUP - when "00000111" - -- RLCA - |"00010111" - -- RLA - |"00001111" - -- RRCA - |"00011111" => - -- RRA - Set_BusA_To(2 downto 0) <= "111"; - ALU_Op <= "1000"; - Read_To_Reg <= '1'; - Save_ALU <= '1'; - --- JUMP GROUP - when "11000011" => - -- JP nn - MCycles <= "011"; - case to_integer(unsigned(MCycle)) is - when 2 => - Inc_PC <= '1'; - LDZ <= '1'; - when 3 => - Inc_PC <= '1'; - Jump <= '1'; - when others => null; - end case; - when "11000010"|"11001010"|"11010010"|"11011010"|"11100010"|"11101010"|"11110010"|"11111010" => - if IR(5) = '1' and Mode = 3 then - case IRB(4 downto 3) is - when "00" => - -- LD ($FF00+C),A - MCycles <= "010"; - case to_integer(unsigned(MCycle)) is - when 1 => - Set_Addr_To <= aBC; - Set_BusB_To <= "0111"; - when 2 => - Write <= '1'; - IORQ <= '1'; - when others => - end case; - when "01" => - -- LD (nn),A - MCycles <= "100"; - case to_integer(unsigned(MCycle)) is - when 2 => - Inc_PC <= '1'; - LDZ <= '1'; - when 3 => - Set_Addr_To <= aZI; - Inc_PC <= '1'; - Set_BusB_To <= "0111"; - when 4 => - Write <= '1'; - when others => null; - end case; - when "10" => - -- LD A,($FF00+C) - MCycles <= "010"; - case to_integer(unsigned(MCycle)) is - when 1 => - Set_Addr_To <= aBC; - when 2 => - Read_To_Acc <= '1'; - IORQ <= '1'; - when others => - end case; - when "11" => - -- LD A,(nn) - MCycles <= "100"; - case to_integer(unsigned(MCycle)) is - when 2 => - Inc_PC <= '1'; - LDZ <= '1'; - when 3 => - Set_Addr_To <= aZI; - Inc_PC <= '1'; - when 4 => - Read_To_Acc <= '1'; - when others => null; - end case; - end case; - else - -- JP cc,nn - MCycles <= "011"; - case to_integer(unsigned(MCycle)) is - when 2 => - Inc_PC <= '1'; - LDZ <= '1'; - when 3 => - Inc_PC <= '1'; - if is_cc_true(F, to_bitvector(IR(5 downto 3))) then - Jump <= '1'; - end if; - when others => null; - end case; - end if; - when "00011000" => - if Mode /= 2 then - -- JR e - MCycles <= "011"; - case to_integer(unsigned(MCycle)) is - when 2 => - Inc_PC <= '1'; - when 3 => - NoRead <= '1'; - JumpE <= '1'; - TStates <= "101"; - when others => null; - end case; - end if; - when "00111000" => - if Mode /= 2 then - -- JR C,e - MCycles <= "011"; - case to_integer(unsigned(MCycle)) is - when 2 => - Inc_PC <= '1'; - if F(Flag_C) = '0' then - MCycles <= "010"; - end if; - when 3 => - NoRead <= '1'; - JumpE <= '1'; - TStates <= "101"; - when others => null; - end case; - end if; - when "00110000" => - if Mode /= 2 then - -- JR NC,e - MCycles <= "011"; - case to_integer(unsigned(MCycle)) is - when 2 => - Inc_PC <= '1'; - if F(Flag_C) = '1' then - MCycles <= "010"; - end if; - when 3 => - NoRead <= '1'; - JumpE <= '1'; - TStates <= "101"; - when others => null; - end case; - end if; - when "00101000" => - if Mode /= 2 then - -- JR Z,e - MCycles <= "011"; - case to_integer(unsigned(MCycle)) is - when 2 => - Inc_PC <= '1'; - if F(Flag_Z) = '0' then - MCycles <= "010"; - end if; - when 3 => - NoRead <= '1'; - JumpE <= '1'; - TStates <= "101"; - when others => null; - end case; - end if; - when "00100000" => - if Mode /= 2 then - -- JR NZ,e - MCycles <= "011"; - case to_integer(unsigned(MCycle)) is - when 2 => - Inc_PC <= '1'; - if F(Flag_Z) = '1' then - MCycles <= "010"; - end if; - when 3 => - NoRead <= '1'; - JumpE <= '1'; - TStates <= "101"; - when others => null; - end case; - end if; - when "11101001" => - -- JP (HL) - JumpXY <= '1'; - when "00010000" => - if Mode = 3 then - I_DJNZ <= '1'; - elsif Mode < 2 then - -- DJNZ,e - MCycles <= "011"; - case to_integer(unsigned(MCycle)) is - when 1 => - TStates <= "101"; - I_DJNZ <= '1'; - Set_BusB_To <= "1010"; - Set_BusA_To(2 downto 0) <= "000"; - Read_To_Reg <= '1'; - Save_ALU <= '1'; - ALU_Op <= "0010"; - when 2 => - I_DJNZ <= '1'; - Inc_PC <= '1'; - when 3 => - NoRead <= '1'; - JumpE <= '1'; - TStates <= "101"; - when others => null; - end case; - end if; - --- CALL AND RETURN GROUP - when "11001101" => - -- CALL nn - MCycles <= "101"; - case to_integer(unsigned(MCycle)) is - when 2 => - Inc_PC <= '1'; - LDZ <= '1'; - when 3 => - IncDec_16 <= "1111"; - Inc_PC <= '1'; - TStates <= "100"; - Set_Addr_To <= aSP; - LDW <= '1'; - Set_BusB_To <= "1101"; - when 4 => - Write <= '1'; - IncDec_16 <= "1111"; - Set_Addr_To <= aSP; - Set_BusB_To <= "1100"; - when 5 => - Write <= '1'; - Call <= '1'; - when others => null; - end case; - when "11000100"|"11001100"|"11010100"|"11011100"|"11100100"|"11101100"|"11110100"|"11111100" => - if IR(5) = '0' or Mode /= 3 then - -- CALL cc,nn - MCycles <= "101"; - case to_integer(unsigned(MCycle)) is - when 2 => - Inc_PC <= '1'; - LDZ <= '1'; - when 3 => - Inc_PC <= '1'; - LDW <= '1'; - if is_cc_true(F, to_bitvector(IR(5 downto 3))) then - IncDec_16 <= "1111"; - Set_Addr_TO <= aSP; - TStates <= "100"; - Set_BusB_To <= "1101"; - else - MCycles <= "011"; - end if; - when 4 => - Write <= '1'; - IncDec_16 <= "1111"; - Set_Addr_To <= aSP; - Set_BusB_To <= "1100"; - when 5 => - Write <= '1'; - Call <= '1'; - when others => null; - end case; - end if; - when "11001001" => - -- RET - MCycles <= "011"; - case to_integer(unsigned(MCycle)) is - when 1 => - TStates <= "101"; - Set_Addr_TO <= aSP; - when 2 => - IncDec_16 <= "0111"; - Set_Addr_To <= aSP; - LDZ <= '1'; - when 3 => - Jump <= '1'; - IncDec_16 <= "0111"; - when others => null; - end case; - when "11000000"|"11001000"|"11010000"|"11011000"|"11100000"|"11101000"|"11110000"|"11111000" => - if IR(5) = '1' and Mode = 3 then - case IRB(4 downto 3) is - when "00" => - -- LD ($FF00+nn),A - MCycles <= "011"; - case to_integer(unsigned(MCycle)) is - when 2 => - Inc_PC <= '1'; - Set_Addr_To <= aIOA; - Set_BusB_To <= "0111"; - when 3 => - Write <= '1'; - when others => null; - end case; - when "01" => - -- ADD SP,n - MCycles <= "011"; - case to_integer(unsigned(MCycle)) is - when 2 => - ALU_Op <= "0000"; - Inc_PC <= '1'; - Read_To_Reg <= '1'; - Save_ALU <= '1'; - Set_BusA_To <= "1000"; - Set_BusB_To <= "0110"; - when 3 => - NoRead <= '1'; - Read_To_Reg <= '1'; - Save_ALU <= '1'; - ALU_Op <= "0001"; - Set_BusA_To <= "1001"; - Set_BusB_To <= "1110"; -- Incorrect unsigned !!!!!!!!!!!!!!!!!!!!! - when others => - end case; - when "10" => - -- LD A,($FF00+nn) - MCycles <= "011"; - case to_integer(unsigned(MCycle)) is - when 2 => - Inc_PC <= '1'; - Set_Addr_To <= aIOA; - when 3 => - Read_To_Acc <= '1'; - when others => null; - end case; - when "11" => - -- LD HL,SP+n -- Not correct !!!!!!!!!!!!!!!!!!! - MCycles <= "101"; - case to_integer(unsigned(MCycle)) is - when 2 => - Inc_PC <= '1'; - LDZ <= '1'; - when 3 => - Set_Addr_To <= aZI; - Inc_PC <= '1'; - LDW <= '1'; - when 4 => - Set_BusA_To(2 downto 0) <= "101"; -- L - Read_To_Reg <= '1'; - Inc_WZ <= '1'; - Set_Addr_To <= aZI; - when 5 => - Set_BusA_To(2 downto 0) <= "100"; -- H - Read_To_Reg <= '1'; - when others => null; - end case; - end case; - else - -- RET cc - MCycles <= "011"; - case to_integer(unsigned(MCycle)) is - when 1 => - if is_cc_true(F, to_bitvector(IR(5 downto 3))) then - Set_Addr_TO <= aSP; - else - MCycles <= "001"; - end if; - TStates <= "101"; - when 2 => - IncDec_16 <= "0111"; - Set_Addr_To <= aSP; - LDZ <= '1'; - when 3 => - Jump <= '1'; - IncDec_16 <= "0111"; - when others => null; - end case; - end if; - when "11000111"|"11001111"|"11010111"|"11011111"|"11100111"|"11101111"|"11110111"|"11111111" => - -- RST p - MCycles <= "011"; - case to_integer(unsigned(MCycle)) is - when 1 => - TStates <= "101"; - IncDec_16 <= "1111"; - Set_Addr_To <= aSP; - Set_BusB_To <= "1101"; - when 2 => - Write <= '1'; - IncDec_16 <= "1111"; - Set_Addr_To <= aSP; - Set_BusB_To <= "1100"; - when 3 => - Write <= '1'; - RstP <= '1'; - when others => null; - end case; - --- INPUT AND OUTPUT GROUP - when "11011011" => - if Mode /= 3 then - -- IN A,(n) - MCycles <= "011"; - case to_integer(unsigned(MCycle)) is - when 2 => - Inc_PC <= '1'; - Set_Addr_To <= aIOA; - when 3 => - Read_To_Acc <= '1'; - IORQ <= '1'; - when others => null; - end case; - end if; - when "11010011" => - if Mode /= 3 then - -- OUT (n),A - MCycles <= "011"; - case to_integer(unsigned(MCycle)) is - when 2 => - Inc_PC <= '1'; - Set_Addr_To <= aIOA; - Set_BusB_To <= "0111"; - when 3 => - Write <= '1'; - IORQ <= '1'; - when others => null; - end case; - end if; - ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- --- MULTIBYTE INSTRUCTIONS ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- - - when "11001011" => - if Mode /= 2 then - Prefix <= "01"; - end if; - - when "11101101" => - if Mode < 2 then - Prefix <= "10"; - end if; - - when "11011101"|"11111101" => - if Mode < 2 then - Prefix <= "11"; - end if; - - end case; - - when "01" => - ------------------------------------------------------------------------------- --- --- CB prefixed instructions --- ------------------------------------------------------------------------------- - - Set_BusA_To(2 downto 0) <= IR(2 downto 0); - Set_BusB_To(2 downto 0) <= IR(2 downto 0); - - case IRB is - when "00000000"|"00000001"|"00000010"|"00000011"|"00000100"|"00000101"|"00000111" - |"00010000"|"00010001"|"00010010"|"00010011"|"00010100"|"00010101"|"00010111" - |"00001000"|"00001001"|"00001010"|"00001011"|"00001100"|"00001101"|"00001111" - |"00011000"|"00011001"|"00011010"|"00011011"|"00011100"|"00011101"|"00011111" - |"00100000"|"00100001"|"00100010"|"00100011"|"00100100"|"00100101"|"00100111" - |"00101000"|"00101001"|"00101010"|"00101011"|"00101100"|"00101101"|"00101111" - |"00110000"|"00110001"|"00110010"|"00110011"|"00110100"|"00110101"|"00110111" - |"00111000"|"00111001"|"00111010"|"00111011"|"00111100"|"00111101"|"00111111" => - -- RLC r - -- RL r - -- RRC r - -- RR r - -- SLA r - -- SRA r - -- SRL r - -- SLL r (Undocumented) / SWAP r - if MCycle = "001" then - ALU_Op <= "1000"; - Read_To_Reg <= '1'; - Save_ALU <= '1'; - end if; - when "00000110"|"00010110"|"00001110"|"00011110"|"00101110"|"00111110"|"00100110"|"00110110" => - -- RLC (HL) - -- RL (HL) - -- RRC (HL) - -- RR (HL) - -- SRA (HL) - -- SRL (HL) - -- SLA (HL) - -- SLL (HL) (Undocumented) / SWAP (HL) - MCycles <= "011"; - case to_integer(unsigned(MCycle)) is - when 1 | 7 => - Set_Addr_To <= aXY; - when 2 => - ALU_Op <= "1000"; - Read_To_Reg <= '1'; - Save_ALU <= '1'; - Set_Addr_To <= aXY; - TStates <= "100"; - when 3 => - Write <= '1'; - when others => - end case; - when "01000000"|"01000001"|"01000010"|"01000011"|"01000100"|"01000101"|"01000111" - |"01001000"|"01001001"|"01001010"|"01001011"|"01001100"|"01001101"|"01001111" - |"01010000"|"01010001"|"01010010"|"01010011"|"01010100"|"01010101"|"01010111" - |"01011000"|"01011001"|"01011010"|"01011011"|"01011100"|"01011101"|"01011111" - |"01100000"|"01100001"|"01100010"|"01100011"|"01100100"|"01100101"|"01100111" - |"01101000"|"01101001"|"01101010"|"01101011"|"01101100"|"01101101"|"01101111" - |"01110000"|"01110001"|"01110010"|"01110011"|"01110100"|"01110101"|"01110111" - |"01111000"|"01111001"|"01111010"|"01111011"|"01111100"|"01111101"|"01111111" => - -- BIT b,r - if MCycle = "001" then - Set_BusB_To(2 downto 0) <= IR(2 downto 0); - ALU_Op <= "1001"; - end if; - when "01000110"|"01001110"|"01010110"|"01011110"|"01100110"|"01101110"|"01110110"|"01111110" => - -- BIT b,(HL) - MCycles <= "010"; - case to_integer(unsigned(MCycle)) is - when 1 | 7=> - Set_Addr_To <= aXY; - when 2 => - ALU_Op <= "1001"; - TStates <= "100"; - when others => null; - end case; - when "11000000"|"11000001"|"11000010"|"11000011"|"11000100"|"11000101"|"11000111" - |"11001000"|"11001001"|"11001010"|"11001011"|"11001100"|"11001101"|"11001111" - |"11010000"|"11010001"|"11010010"|"11010011"|"11010100"|"11010101"|"11010111" - |"11011000"|"11011001"|"11011010"|"11011011"|"11011100"|"11011101"|"11011111" - |"11100000"|"11100001"|"11100010"|"11100011"|"11100100"|"11100101"|"11100111" - |"11101000"|"11101001"|"11101010"|"11101011"|"11101100"|"11101101"|"11101111" - |"11110000"|"11110001"|"11110010"|"11110011"|"11110100"|"11110101"|"11110111" - |"11111000"|"11111001"|"11111010"|"11111011"|"11111100"|"11111101"|"11111111" => - -- SET b,r - if MCycle = "001" then - ALU_Op <= "1010"; - Read_To_Reg <= '1'; - Save_ALU <= '1'; - end if; - when "11000110"|"11001110"|"11010110"|"11011110"|"11100110"|"11101110"|"11110110"|"11111110" => - -- SET b,(HL) - MCycles <= "011"; - case to_integer(unsigned(MCycle)) is - when 1 | 7=> - Set_Addr_To <= aXY; - when 2 => - ALU_Op <= "1010"; - Read_To_Reg <= '1'; - Save_ALU <= '1'; - Set_Addr_To <= aXY; - TStates <= "100"; - when 3 => - Write <= '1'; - when others => null; - end case; - when "10000000"|"10000001"|"10000010"|"10000011"|"10000100"|"10000101"|"10000111" - |"10001000"|"10001001"|"10001010"|"10001011"|"10001100"|"10001101"|"10001111" - |"10010000"|"10010001"|"10010010"|"10010011"|"10010100"|"10010101"|"10010111" - |"10011000"|"10011001"|"10011010"|"10011011"|"10011100"|"10011101"|"10011111" - |"10100000"|"10100001"|"10100010"|"10100011"|"10100100"|"10100101"|"10100111" - |"10101000"|"10101001"|"10101010"|"10101011"|"10101100"|"10101101"|"10101111" - |"10110000"|"10110001"|"10110010"|"10110011"|"10110100"|"10110101"|"10110111" - |"10111000"|"10111001"|"10111010"|"10111011"|"10111100"|"10111101"|"10111111" => - -- RES b,r - if MCycle = "001" then - ALU_Op <= "1011"; - Read_To_Reg <= '1'; - Save_ALU <= '1'; - end if; - when "10000110"|"10001110"|"10010110"|"10011110"|"10100110"|"10101110"|"10110110"|"10111110" => - -- RES b,(HL) - MCycles <= "011"; - case to_integer(unsigned(MCycle)) is - when 1 | 7 => - Set_Addr_To <= aXY; - when 2 => - ALU_Op <= "1011"; - Read_To_Reg <= '1'; - Save_ALU <= '1'; - Set_Addr_To <= aXY; - TStates <= "100"; - when 3 => - Write <= '1'; - when others => null; - end case; - end case; - - when others => - ------------------------------------------------------------------------------- --- --- ED prefixed instructions --- ------------------------------------------------------------------------------- - - case IRB is - when "00000000"|"00000001"|"00000010"|"00000011"|"00000100"|"00000101"|"00000110"|"00000111" - |"00001000"|"00001001"|"00001010"|"00001011"|"00001100"|"00001101"|"00001110"|"00001111" - |"00010000"|"00010001"|"00010010"|"00010011"|"00010100"|"00010101"|"00010110"|"00010111" - |"00011000"|"00011001"|"00011010"|"00011011"|"00011100"|"00011101"|"00011110"|"00011111" - |"00100000"|"00100001"|"00100010"|"00100011"|"00100100"|"00100101"|"00100110"|"00100111" - |"00101000"|"00101001"|"00101010"|"00101011"|"00101100"|"00101101"|"00101110"|"00101111" - |"00110000"|"00110001"|"00110010"|"00110011"|"00110100"|"00110101"|"00110110"|"00110111" - |"00111000"|"00111001"|"00111010"|"00111011"|"00111100"|"00111101"|"00111110"|"00111111" - - - |"10000000"|"10000001"|"10000010"|"10000011"|"10000100"|"10000101"|"10000110"|"10000111" - |"10001000"|"10001001"|"10001010"|"10001011"|"10001100"|"10001101"|"10001110"|"10001111" - |"10010000"|"10010001"|"10010010"|"10010011"|"10010100"|"10010101"|"10010110"|"10010111" - |"10011000"|"10011001"|"10011010"|"10011011"|"10011100"|"10011101"|"10011110"|"10011111" - | "10100100"|"10100101"|"10100110"|"10100111" - | "10101100"|"10101101"|"10101110"|"10101111" - | "10110100"|"10110101"|"10110110"|"10110111" - | "10111100"|"10111101"|"10111110"|"10111111" - |"11000000"|"11000001"|"11000010"|"11000011"|"11000100"|"11000101"|"11000110"|"11000111" - |"11001000"|"11001001"|"11001010"|"11001011"|"11001100"|"11001101"|"11001110"|"11001111" - |"11010000"|"11010001"|"11010010"|"11010011"|"11010100"|"11010101"|"11010110"|"11010111" - |"11011000"|"11011001"|"11011010"|"11011011"|"11011100"|"11011101"|"11011110"|"11011111" - |"11100000"|"11100001"|"11100010"|"11100011"|"11100100"|"11100101"|"11100110"|"11100111" - |"11101000"|"11101001"|"11101010"|"11101011"|"11101100"|"11101101"|"11101110"|"11101111" - |"11110000"|"11110001"|"11110010"|"11110011"|"11110100"|"11110101"|"11110110"|"11110111" - |"11111000"|"11111001"|"11111010"|"11111011"|"11111100"|"11111101"|"11111110"|"11111111" => - null; -- NOP, undocumented - when "01111110"|"01111111" => - -- NOP, undocumented - null; --- 8 BIT LOAD GROUP - when "01010111" => - -- LD A,I - Special_LD <= "100"; - TStates <= "101"; - when "01011111" => - -- LD A,R - Special_LD <= "101"; - TStates <= "101"; - when "01000111" => - -- LD I,A - Special_LD <= "110"; - TStates <= "101"; - when "01001111" => - -- LD R,A - Special_LD <= "111"; - TStates <= "101"; --- 16 BIT LOAD GROUP - when "01001011"|"01011011"|"01101011"|"01111011" => - -- LD dd,(nn) - MCycles <= "101"; - case to_integer(unsigned(MCycle)) is - when 2 => - Inc_PC <= '1'; - LDZ <= '1'; - when 3 => - Set_Addr_To <= aZI; - Inc_PC <= '1'; - LDW <= '1'; - when 4 => - Read_To_Reg <= '1'; - if IR(5 downto 4) = "11" then - Set_BusA_To <= "1000"; - else - Set_BusA_To(2 downto 1) <= IR(5 downto 4); - Set_BusA_To(0) <= '1'; - end if; - Inc_WZ <= '1'; - Set_Addr_To <= aZI; - when 5 => - Read_To_Reg <= '1'; - if IR(5 downto 4) = "11" then - Set_BusA_To <= "1001"; - else - Set_BusA_To(2 downto 1) <= IR(5 downto 4); - Set_BusA_To(0) <= '0'; - end if; - when others => null; - end case; - when "01000011"|"01010011"|"01100011"|"01110011" => - -- LD (nn),dd - MCycles <= "101"; - case to_integer(unsigned(MCycle)) is - when 2 => - Inc_PC <= '1'; - LDZ <= '1'; - when 3 => - Set_Addr_To <= aZI; - Inc_PC <= '1'; - LDW <= '1'; - if IR(5 downto 4) = "11" then - Set_BusB_To <= "1000"; - else - Set_BusB_To(2 downto 1) <= IR(5 downto 4); - Set_BusB_To(0) <= '1'; - Set_BusB_To(3) <= '0'; - end if; - when 4 => - Inc_WZ <= '1'; - Set_Addr_To <= aZI; - Write <= '1'; - if IR(5 downto 4) = "11" then - Set_BusB_To <= "1001"; - else - Set_BusB_To(2 downto 1) <= IR(5 downto 4); - Set_BusB_To(0) <= '0'; - Set_BusB_To(3) <= '0'; - end if; - when 5 => - Write <= '1'; - when others => null; - end case; - when "10100000" | "10101000" | "10110000" | "10111000" => - -- LDI, LDD, LDIR, LDDR - MCycles <= "100"; - case to_integer(unsigned(MCycle)) is - when 1 => - Set_Addr_To <= aXY; - IncDec_16 <= "1100"; -- BC - when 2 => - Set_BusB_To <= "0110"; - Set_BusA_To(2 downto 0) <= "111"; - ALU_Op <= "0000"; - Set_Addr_To <= aDE; - if IR(3) = '0' then - IncDec_16 <= "0110"; -- IX - else - IncDec_16 <= "1110"; - end if; - when 3 => - I_BT <= '1'; - TStates <= "101"; - Write <= '1'; - if IR(3) = '0' then - IncDec_16 <= "0101"; -- DE - else - IncDec_16 <= "1101"; - end if; - when 4 => - NoRead <= '1'; - TStates <= "101"; - when others => null; - end case; - when "10100001" | "10101001" | "10110001" | "10111001" => - -- CPI, CPD, CPIR, CPDR - MCycles <= "100"; - case to_integer(unsigned(MCycle)) is - when 1 => - Set_Addr_To <= aXY; - IncDec_16 <= "1100"; -- BC - when 2 => - Set_BusB_To <= "0110"; - Set_BusA_To(2 downto 0) <= "111"; - ALU_Op <= "0111"; - Save_ALU <= '1'; - PreserveC <= '1'; - if IR(3) = '0' then - IncDec_16 <= "0110"; - else - IncDec_16 <= "1110"; - end if; - when 3 => - NoRead <= '1'; - I_BC <= '1'; - TStates <= "101"; - when 4 => - NoRead <= '1'; - TStates <= "101"; - when others => null; - end case; - when "01000100"|"01001100"|"01010100"|"01011100"|"01100100"|"01101100"|"01110100"|"01111100" => - -- NEG - Alu_OP <= "0010"; - Set_BusB_To <= "0111"; - Set_BusA_To <= "1010"; - Read_To_Acc <= '1'; - Save_ALU <= '1'; - when "01000110"|"01001110"|"01100110"|"01101110" => - -- IM 0 - IMode <= "00"; - when "01010110"|"01110110" => - -- IM 1 - IMode <= "01"; - when "01011110"|"01110111" => - -- IM 2 - IMode <= "10"; --- 16 bit arithmetic - when "01001010"|"01011010"|"01101010"|"01111010" => - -- ADC HL,ss - MCycles <= "011"; - case to_integer(unsigned(MCycle)) is - when 2 => - NoRead <= '1'; - ALU_Op <= "0001"; - Read_To_Reg <= '1'; - Save_ALU <= '1'; - Set_BusA_To(2 downto 0) <= "101"; - case to_integer(unsigned(IR(5 downto 4))) is - when 0|1|2 => - Set_BusB_To(2 downto 1) <= IR(5 downto 4); - Set_BusB_To(0) <= '1'; - when others => - Set_BusB_To <= "1000"; - end case; - TStates <= "100"; - when 3 => - NoRead <= '1'; - Read_To_Reg <= '1'; - Save_ALU <= '1'; - ALU_Op <= "0001"; - Set_BusA_To(2 downto 0) <= "100"; - case to_integer(unsigned(IR(5 downto 4))) is - when 0|1|2 => - Set_BusB_To(2 downto 1) <= IR(5 downto 4); - Set_BusB_To(0) <= '0'; - when others => - Set_BusB_To <= "1001"; - end case; - when others => - end case; - when "01000010"|"01010010"|"01100010"|"01110010" => - -- SBC HL,ss - MCycles <= "011"; - case to_integer(unsigned(MCycle)) is - when 2 => - NoRead <= '1'; - ALU_Op <= "0011"; - Read_To_Reg <= '1'; - Save_ALU <= '1'; - Set_BusA_To(2 downto 0) <= "101"; - case to_integer(unsigned(IR(5 downto 4))) is - when 0|1|2 => - Set_BusB_To(2 downto 1) <= IR(5 downto 4); - Set_BusB_To(0) <= '1'; - when others => - Set_BusB_To <= "1000"; - end case; - TStates <= "100"; - when 3 => - NoRead <= '1'; - ALU_Op <= "0011"; - Read_To_Reg <= '1'; - Save_ALU <= '1'; - Set_BusA_To(2 downto 0) <= "100"; - case to_integer(unsigned(IR(5 downto 4))) is - when 0|1|2 => - Set_BusB_To(2 downto 1) <= IR(5 downto 4); - when others => - Set_BusB_To <= "1001"; - end case; - when others => - end case; - when "01101111" => - -- RLD - MCycles <= "100"; - case to_integer(unsigned(MCycle)) is - when 2 => - NoRead <= '1'; - Set_Addr_To <= aXY; - when 3 => - Read_To_Reg <= '1'; - Set_BusB_To(2 downto 0) <= "110"; - Set_BusA_To(2 downto 0) <= "111"; - ALU_Op <= "1101"; - TStates <= "100"; - Set_Addr_To <= aXY; - Save_ALU <= '1'; - when 4 => - I_RLD <= '1'; - Write <= '1'; - when others => - end case; - when "01100111" => - -- RRD - MCycles <= "100"; - case to_integer(unsigned(MCycle)) is - when 2 => - Set_Addr_To <= aXY; - when 3 => - Read_To_Reg <= '1'; - Set_BusB_To(2 downto 0) <= "110"; - Set_BusA_To(2 downto 0) <= "111"; - ALU_Op <= "1110"; - TStates <= "100"; - Set_Addr_To <= aXY; - Save_ALU <= '1'; - when 4 => - I_RRD <= '1'; - Write <= '1'; - when others => - end case; - when "01000101"|"01001101"|"01010101"|"01011101"|"01100101"|"01101101"|"01110101"|"01111101" => - -- RETI, RETN - MCycles <= "011"; - case to_integer(unsigned(MCycle)) is - when 1 => - Set_Addr_TO <= aSP; - when 2 => - IncDec_16 <= "0111"; - Set_Addr_To <= aSP; - LDZ <= '1'; - when 3 => - Jump <= '1'; - IncDec_16 <= "0111"; - I_RETN <= '1'; - when others => null; - end case; - when "01000000"|"01001000"|"01010000"|"01011000"|"01100000"|"01101000"|"01110000"|"01111000" => - -- IN r,(C) - MCycles <= "010"; - case to_integer(unsigned(MCycle)) is - when 1 => - Set_Addr_To <= aBC; - when 2 => - IORQ <= '1'; - if IR(5 downto 3) /= "110" then - Read_To_Reg <= '1'; - Set_BusA_To(2 downto 0) <= IR(5 downto 3); - end if; - I_INRC <= '1'; - when others => - end case; - when "01000001"|"01001001"|"01010001"|"01011001"|"01100001"|"01101001"|"01110001"|"01111001" => - -- OUT (C),r - -- OUT (C),0 - MCycles <= "010"; - case to_integer(unsigned(MCycle)) is - when 1 => - Set_Addr_To <= aBC; - Set_BusB_To(2 downto 0) <= IR(5 downto 3); - if IR(5 downto 3) = "110" then - Set_BusB_To(3) <= '1'; - end if; - when 2 => - Write <= '1'; - IORQ <= '1'; - when others => - end case; - when "10100010" | "10101010" | "10110010" | "10111010" => - -- INI, IND, INIR, INDR - -- note B is decremented AFTER being put on the bus - MCycles <= "100"; - case to_integer(unsigned(MCycle)) is - when 1 => - Set_Addr_To <= aBC; - Set_BusB_To <= "1010"; - Set_BusA_To <= "0000"; - Read_To_Reg <= '1'; - Save_ALU <= '1'; - ALU_Op <= "0010"; - when 2 => - IORQ <= '1'; - Set_BusB_To <= "0110"; - Set_Addr_To <= aXY; - when 3 => - if IR(3) = '0' then - --IncDec_16 <= "0010"; - IncDec_16 <= "0110"; - else - --IncDec_16 <= "1010"; - IncDec_16 <= "1110"; - end if; - TStates <= "100"; - Write <= '1'; - I_BTR <= '1'; - when 4 => - NoRead <= '1'; - TStates <= "101"; - when others => null; - end case; - when "10100011" | "10101011" | "10110011" | "10111011" => - -- OUTI, OUTD, OTIR, OTDR - -- note B is decremented BEFORE being put on the bus. - -- mikej fix for hl inc - MCycles <= "100"; - case to_integer(unsigned(MCycle)) is - when 1 => - TStates <= "101"; - Set_Addr_To <= aXY; - Set_BusB_To <= "1010"; - Set_BusA_To <= "0000"; - Read_To_Reg <= '1'; - Save_ALU <= '1'; - ALU_Op <= "0010"; - when 2 => - Set_BusB_To <= "0110"; - Set_Addr_To <= aBC; - when 3 => - if IR(3) = '0' then - IncDec_16 <= "0110"; -- mikej - else - IncDec_16 <= "1110"; -- mikej - end if; - IORQ <= '1'; - Write <= '1'; - I_BTR <= '1'; - when 4 => - NoRead <= '1'; - TStates <= "101"; - when others => null; - end case; - end case; - - end case; - - if Mode = 1 then - if MCycle = "001" then --- TStates <= "100"; - else - TStates <= "011"; - end if; - end if; - - if Mode = 3 then - if MCycle = "001" then --- TStates <= "100"; - else - TStates <= "100"; - end if; - end if; - - if Mode < 2 then - if MCycle = "110" then - Inc_PC <= '1'; - if Mode = 1 then - Set_Addr_To <= aXY; - TStates <= "100"; - Set_BusB_To(2 downto 0) <= SSS; - Set_BusB_To(3) <= '0'; - end if; - if IRB = "00110110" or IRB = "11001011" then - Set_Addr_To <= aNone; - end if; - end if; - if MCycle = "111" then - if Mode = 0 then - TStates <= "101"; - end if; - if ISet /= "01" then - Set_Addr_To <= aXY; - end if; - Set_BusB_To(2 downto 0) <= SSS; - Set_BusB_To(3) <= '0'; - if IRB = "00110110" or ISet = "01" then - -- LD (HL),n - Inc_PC <= '1'; - else - NoRead <= '1'; - end if; - end if; - end if; - - end process; - -end; diff --git a/Computer_MiST/Laser310_MiST/rtl/T80/T80_Pack.vhd b/Computer_MiST/Laser310_MiST/rtl/T80/T80_Pack.vhd deleted file mode 100644 index 42cf6105..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/T80/T80_Pack.vhd +++ /dev/null @@ -1,217 +0,0 @@ --- **** --- T80(b) core. In an effort to merge and maintain bug fixes .... --- --- --- Ver 300 started tidyup --- MikeJ March 2005 --- Latest version from www.fpgaarcade.com (original www.opencores.org) --- --- **** --- --- Z80 compatible microprocessor core --- --- Version : 0242 --- --- Copyright (c) 2001-2002 Daniel Wallner (jesus@opencores.org) --- --- All rights reserved --- --- Redistribution and use in source and synthezised forms, with or without --- modification, are permitted provided that the following conditions are met: --- --- Redistributions of source code must retain the above copyright notice, --- this list of conditions and the following disclaimer. --- --- Redistributions in synthesized form must reproduce the above copyright --- notice, this list of conditions and the following disclaimer in the --- documentation and/or other materials provided with the distribution. --- --- Neither the name of the author nor the names of other contributors may --- be used to endorse or promote products derived from this software without --- specific prior written permission. --- --- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" --- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, --- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR --- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE --- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR --- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF --- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS --- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN --- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) --- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE --- POSSIBILITY OF SUCH DAMAGE. --- --- Please report bugs to the author, but before you do so, please --- make sure that this is not a derivative work and that --- you have the latest version of this file. --- --- The latest version of this file can be found at: --- http://www.opencores.org/cvsweb.shtml/t80/ --- --- Limitations : --- --- File history : --- - -library IEEE; -use IEEE.std_logic_1164.all; - -package T80_Pack is - - component T80 - generic( - Mode : integer := 0; -- 0 => Z80, 1 => Fast Z80, 2 => 8080, 3 => GB - IOWait : integer := 0; -- 1 => Single cycle I/O, 1 => Std I/O cycle - Flag_C : integer := 0; - Flag_N : integer := 1; - Flag_P : integer := 2; - Flag_X : integer := 3; - Flag_H : integer := 4; - Flag_Y : integer := 5; - Flag_Z : integer := 6; - Flag_S : integer := 7 - ); - port( - RESET_n : in std_logic; - CLK_n : in std_logic; - CEN : in std_logic; - WAIT_n : in std_logic; - INT_n : in std_logic; - NMI_n : in std_logic; - BUSRQ_n : in std_logic; - M1_n : out std_logic; - IORQ : out std_logic; - NoRead : out std_logic; - Write : out std_logic; - RFSH_n : out std_logic; - HALT_n : out std_logic; - BUSAK_n : out std_logic; - A : out std_logic_vector(15 downto 0); - DInst : in std_logic_vector(7 downto 0); - DI : in std_logic_vector(7 downto 0); - DO : out std_logic_vector(7 downto 0); - MC : out std_logic_vector(2 downto 0); - TS : out std_logic_vector(2 downto 0); - IntCycle_n : out std_logic; - IntE : out std_logic; - Stop : out std_logic - ); - end component; - - component T80_Reg - port( - Clk : in std_logic; - CEN : in std_logic; - WEH : in std_logic; - WEL : in std_logic; - AddrA : in std_logic_vector(2 downto 0); - AddrB : in std_logic_vector(2 downto 0); - AddrC : in std_logic_vector(2 downto 0); - DIH : in std_logic_vector(7 downto 0); - DIL : in std_logic_vector(7 downto 0); - DOAH : out std_logic_vector(7 downto 0); - DOAL : out std_logic_vector(7 downto 0); - DOBH : out std_logic_vector(7 downto 0); - DOBL : out std_logic_vector(7 downto 0); - DOCH : out std_logic_vector(7 downto 0); - DOCL : out std_logic_vector(7 downto 0) - ); - end component; - - component T80_MCode - generic( - Mode : integer := 0; - Flag_C : integer := 0; - Flag_N : integer := 1; - Flag_P : integer := 2; - Flag_X : integer := 3; - Flag_H : integer := 4; - Flag_Y : integer := 5; - Flag_Z : integer := 6; - Flag_S : integer := 7 - ); - port( - IR : in std_logic_vector(7 downto 0); - ISet : in std_logic_vector(1 downto 0); - MCycle : in std_logic_vector(2 downto 0); - F : in std_logic_vector(7 downto 0); - NMICycle : in std_logic; - IntCycle : in std_logic; - MCycles : out std_logic_vector(2 downto 0); - TStates : out std_logic_vector(2 downto 0); - Prefix : out std_logic_vector(1 downto 0); -- None,BC,ED,DD/FD - Inc_PC : out std_logic; - Inc_WZ : out std_logic; - IncDec_16 : out std_logic_vector(3 downto 0); -- BC,DE,HL,SP 0 is inc - Read_To_Reg : out std_logic; - Read_To_Acc : out std_logic; - Set_BusA_To : out std_logic_vector(3 downto 0); -- B,C,D,E,H,L,DI/DB,A,SP(L),SP(M),0,F - Set_BusB_To : out std_logic_vector(3 downto 0); -- B,C,D,E,H,L,DI,A,SP(L),SP(M),1,F,PC(L),PC(M),0 - ALU_Op : out std_logic_vector(3 downto 0); - -- ADD, ADC, SUB, SBC, AND, XOR, OR, CP, ROT, BIT, SET, RES, DAA, RLD, RRD, None - Save_ALU : out std_logic; - PreserveC : out std_logic; - Arith16 : out std_logic; - Set_Addr_To : out std_logic_vector(2 downto 0); -- aNone,aXY,aIOA,aSP,aBC,aDE,aZI - IORQ : out std_logic; - Jump : out std_logic; - JumpE : out std_logic; - JumpXY : out std_logic; - Call : out std_logic; - RstP : out std_logic; - LDZ : out std_logic; - LDW : out std_logic; - LDSPHL : out std_logic; - Special_LD : out std_logic_vector(2 downto 0); -- A,I;A,R;I,A;R,A;None - ExchangeDH : out std_logic; - ExchangeRp : out std_logic; - ExchangeAF : out std_logic; - ExchangeRS : out std_logic; - I_DJNZ : out std_logic; - I_CPL : out std_logic; - I_CCF : out std_logic; - I_SCF : out std_logic; - I_RETN : out std_logic; - I_BT : out std_logic; - I_BC : out std_logic; - I_BTR : out std_logic; - I_RLD : out std_logic; - I_RRD : out std_logic; - I_INRC : out std_logic; - SetDI : out std_logic; - SetEI : out std_logic; - IMode : out std_logic_vector(1 downto 0); - Halt : out std_logic; - NoRead : out std_logic; - Write : out std_logic - ); - end component; - - component T80_ALU - generic( - Mode : integer := 0; - Flag_C : integer := 0; - Flag_N : integer := 1; - Flag_P : integer := 2; - Flag_X : integer := 3; - Flag_H : integer := 4; - Flag_Y : integer := 5; - Flag_Z : integer := 6; - Flag_S : integer := 7 - ); - port( - Arith16 : in std_logic; - Z16 : in std_logic; - ALU_Op : in std_logic_vector(3 downto 0); - IR : in std_logic_vector(5 downto 0); - ISet : in std_logic_vector(1 downto 0); - BusA : in std_logic_vector(7 downto 0); - BusB : in std_logic_vector(7 downto 0); - F_In : in std_logic_vector(7 downto 0); - Q : out std_logic_vector(7 downto 0); - F_Out : out std_logic_vector(7 downto 0) - ); - end component; - -end; diff --git a/Computer_MiST/Laser310_MiST/rtl/T80/T80_Reg.vhd b/Computer_MiST/Laser310_MiST/rtl/T80/T80_Reg.vhd deleted file mode 100644 index 828485fb..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/T80/T80_Reg.vhd +++ /dev/null @@ -1,105 +0,0 @@ --- --- T80 Registers, technology independent --- --- Version : 0244 --- --- Copyright (c) 2002 Daniel Wallner (jesus@opencores.org) --- --- All rights reserved --- --- Redistribution and use in source and synthezised forms, with or without --- modification, are permitted provided that the following conditions are met: --- --- Redistributions of source code must retain the above copyright notice, --- this list of conditions and the following disclaimer. --- --- Redistributions in synthesized form must reproduce the above copyright --- notice, this list of conditions and the following disclaimer in the --- documentation and/or other materials provided with the distribution. --- --- Neither the name of the author nor the names of other contributors may --- be used to endorse or promote products derived from this software without --- specific prior written permission. --- --- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" --- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, --- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR --- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE --- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR --- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF --- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS --- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN --- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) --- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE --- POSSIBILITY OF SUCH DAMAGE. --- --- Please report bugs to the author, but before you do so, please --- make sure that this is not a derivative work and that --- you have the latest version of this file. --- --- The latest version of this file can be found at: --- http://www.opencores.org/cvsweb.shtml/t51/ --- --- Limitations : --- --- File history : --- --- 0242 : Initial release --- --- 0244 : Changed to single register file --- - -library IEEE; -use IEEE.std_logic_1164.all; -use IEEE.numeric_std.all; - -entity T80_Reg is - port( - Clk : in std_logic; - CEN : in std_logic; - WEH : in std_logic; - WEL : in std_logic; - AddrA : in std_logic_vector(2 downto 0); - AddrB : in std_logic_vector(2 downto 0); - AddrC : in std_logic_vector(2 downto 0); - DIH : in std_logic_vector(7 downto 0); - DIL : in std_logic_vector(7 downto 0); - DOAH : out std_logic_vector(7 downto 0); - DOAL : out std_logic_vector(7 downto 0); - DOBH : out std_logic_vector(7 downto 0); - DOBL : out std_logic_vector(7 downto 0); - DOCH : out std_logic_vector(7 downto 0); - DOCL : out std_logic_vector(7 downto 0) - ); -end T80_Reg; - -architecture rtl of T80_Reg is - - type Register_Image is array (natural range <>) of std_logic_vector(7 downto 0); - signal RegsH : Register_Image(0 to 7); - signal RegsL : Register_Image(0 to 7); - -begin - - process (Clk) - begin - if Clk'event and Clk = '1' then - if CEN = '1' then - if WEH = '1' then - RegsH(to_integer(unsigned(AddrA))) <= DIH; - end if; - if WEL = '1' then - RegsL(to_integer(unsigned(AddrA))) <= DIL; - end if; - end if; - end if; - end process; - - DOAH <= RegsH(to_integer(unsigned(AddrA))); - DOAL <= RegsL(to_integer(unsigned(AddrA))); - DOBH <= RegsH(to_integer(unsigned(AddrB))); - DOBL <= RegsL(to_integer(unsigned(AddrB))); - DOCH <= RegsH(to_integer(unsigned(AddrC))); - DOCL <= RegsL(to_integer(unsigned(AddrC))); - -end; diff --git a/Computer_MiST/Laser310_MiST/rtl/T80/T80sed.vhd b/Computer_MiST/Laser310_MiST/rtl/T80/T80sed.vhd deleted file mode 100644 index 0c28ec21..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/T80/T80sed.vhd +++ /dev/null @@ -1,179 +0,0 @@ --- **** --- T80(b) core. In an effort to merge and maintain bug fixes .... --- --- --- Ver 300 started tidyup --- MikeJ March 2005 --- Latest version from www.fpgaarcade.com (original www.opencores.org) --- --- **** --- ** CUSTOM 2 CLOCK MEMORY ACCESS FOR PACMAN, MIKEJ ** --- --- Z80 compatible microprocessor core, synchronous top level with clock enable --- Different timing than the original z80 --- Inputs needs to be synchronous and outputs may glitch --- --- Version : 0238 --- --- Copyright (c) 2001-2002 Daniel Wallner (jesus@opencores.org) --- --- All rights reserved --- --- Redistribution and use in source and synthezised forms, with or without --- modification, are permitted provided that the following conditions are met: --- --- Redistributions of source code must retain the above copyright notice, --- this list of conditions and the following disclaimer. --- --- Redistributions in synthesized form must reproduce the above copyright --- notice, this list of conditions and the following disclaimer in the --- documentation and/or other materials provided with the distribution. --- --- Neither the name of the author nor the names of other contributors may --- be used to endorse or promote products derived from this software without --- specific prior written permission. --- --- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" --- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, --- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR --- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE --- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR --- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF --- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS --- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN --- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) --- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE --- POSSIBILITY OF SUCH DAMAGE. --- --- Please report bugs to the author, but before you do so, please --- make sure that this is not a derivative work and that --- you have the latest version of this file. --- --- The latest version of this file can be found at: --- http://www.opencores.org/cvsweb.shtml/t80/ --- --- Limitations : --- --- File history : --- --- 0235 : First release --- --- 0236 : Added T2Write generic --- --- 0237 : Fixed T2Write with wait state --- --- 0238 : Updated for T80 interface change --- --- 0242 : Updated for T80 interface change --- - -library IEEE; -use IEEE.std_logic_1164.all; -use IEEE.numeric_std.all; -use work.T80_Pack.all; - -entity T80sed is - port( - RESET_n : in std_logic; - CLK_n : in std_logic; - CLKEN : in std_logic; - WAIT_n : in std_logic; - INT_n : in std_logic; - NMI_n : in std_logic; - BUSRQ_n : in std_logic; - M1_n : out std_logic; - MREQ_n : out std_logic; - IORQ_n : out std_logic; - RD_n : out std_logic; - WR_n : out std_logic; - RFSH_n : out std_logic; - HALT_n : out std_logic; - BUSAK_n : out std_logic; - A : out std_logic_vector(15 downto 0); - DI : in std_logic_vector(7 downto 0); - DO : out std_logic_vector(7 downto 0) - ); -end T80sed; - -architecture rtl of T80sed is - - signal IntCycle_n : std_logic; - signal NoRead : std_logic; - signal Write : std_logic; - signal IORQ : std_logic; - signal DI_Reg : std_logic_vector(7 downto 0); - signal MCycle : std_logic_vector(2 downto 0); - signal TState : std_logic_vector(2 downto 0); - -begin - - u0 : T80 - generic map( - Mode => 0, - IOWait => 1) - port map( - CEN => CLKEN, - M1_n => M1_n, - IORQ => IORQ, - NoRead => NoRead, - Write => Write, - RFSH_n => RFSH_n, - HALT_n => HALT_n, - WAIT_n => Wait_n, - INT_n => INT_n, - NMI_n => NMI_n, - RESET_n => RESET_n, - BUSRQ_n => BUSRQ_n, - BUSAK_n => BUSAK_n, - CLK_n => CLK_n, - A => A, - DInst => DI, - DI => DI_Reg, - DO => DO, - MC => MCycle, - TS => TState, - IntCycle_n => IntCycle_n); - - process (RESET_n, CLK_n) - begin - if RESET_n = '0' then - RD_n <= '1'; - WR_n <= '1'; - IORQ_n <= '1'; - MREQ_n <= '1'; - DI_Reg <= "00000000"; - elsif CLK_n'event and CLK_n = '1' then - if CLKEN = '1' then - RD_n <= '1'; - WR_n <= '1'; - IORQ_n <= '1'; - MREQ_n <= '1'; - if MCycle = "001" then - if TState = "001" or (TState = "010" and Wait_n = '0') then - RD_n <= not IntCycle_n; - MREQ_n <= not IntCycle_n; - IORQ_n <= IntCycle_n; - end if; - if TState = "011" then - MREQ_n <= '0'; - end if; - else - if (TState = "001" or TState = "010") and NoRead = '0' and Write = '0' then - RD_n <= '0'; - IORQ_n <= not IORQ; - MREQ_n <= IORQ; - end if; - if ((TState = "001") or (TState = "010")) and Write = '1' then - WR_n <= '0'; - IORQ_n <= not IORQ; - MREQ_n <= IORQ; - end if; - end if; - if TState = "010" and Wait_n = '1' then - DI_Reg <= DI; - end if; - end if; - end if; - end process; - -end; diff --git a/Computer_MiST/Laser310_MiST/rtl/Text1.txt b/Computer_MiST/Laser310_MiST/rtl/Text1.txt deleted file mode 100644 index b8bd2837..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/Text1.txt +++ /dev/null @@ -1,483 +0,0 @@ - - - - -// keyboard - -/***************************************************************************** -* Convert PS/2 keyboard to ASCII keyboard -******************************************************************************/ - -/* - KD5 KD4 KD3 KD2 KD1 KD0 扫描用地址 -A0 R Q E W T 68FEH 0 -A1 F A D CTRL S G 68FDH 8 -A2 V Z C SHFT X B 68FBH 16 -A3 4 1 3 2 5 68F7H 24 -A4 M 空格 , . N 68EFH 32 -A5 7 0 8 - 9 6 68DFH 40 -A6 U P I RETN O Y 68BFH 48 -A7 J ; K : L H 687FH 56 -*/ - -// 7: 0 -// 15: 8 -// 23:16 -// 31:24 -// 39:32 -// 47:40 -// 55:48 -// 63:56 - - - -// 键盘检测的方法,就是循环地问每一行线发送低电平信号,也就是用该地址线为“0”的地址去读取数据。 -// 例如,检测第一行时,使A0为0,其余为1;加上选通IC4的高五位地址01101,成为01101***11111110B(A8~A10不起作用, -// 可为任意值,故68FEH,69FEH,6AFEH,6BFEH,6CFEH,6DFEH,6EFEH,6FFEH均可)。 -// 读 6800H 判断是否有按键按下。 - -// The method of keyboard detection is to cyclically ask each line to send a low level signal, -// that is, to read the data with the address line "0". -// For example, when detecting the first line, make A0 0 and the rest 1; plus the high five-bit address 01101 of the strobe IC4, -// become 01101***11111110B (A8~A10 does not work, -// It can be any value, so 68FEH, 69FEH, 6AFEH, 6BFEH, 6CFEH, 6DFEH, 6EFEH, 6FFEH can be). -// Read 6800H to determine if there is a button press. - -// 键盘选通,整个竖列有一个选通的位置被按下,对应值为0。 -// The keyboard is strobed, and a strobe position is pressed in the entire vertical column, and the corresponding value is 0. - -// 键盘扩展 -// 加入方向键盘 -// Keyboard extension - -// left: ctrl M 37 KEY_EX[5] -// right: ctrl , 35 KEY_EX[6] -// up: ctrl . 33 KEY_EX[4] -// down: ctrl space 36 KEY_EX[7] -// esc: ctrl - 42 KEY_EX[3] -// backspace: ctrl M 37 KEY_EX[8] - -// R-Shift - - -wire [63:0] KEY_C = EMU_KEY_EN?EMU_KEY:KEY; -wire [9:0] KEY_EX_C = EMU_KEY_EN?EMU_KEY_EX:KEY_EX; - -//wire KEY_CTRL_ULRD = (KEY_EX[7:4]==4'b1111); -wire KEY_CTRL_ULRD_BRK = (KEY_EX[8:3]==6'b111111); - -wire KEY_DATA_BIT5 = (CPU_A[7:0]|{KEY_C[61], KEY_C[53], KEY_C[45], KEY_C[37]&KEY_EX_C[5]&KEY_EX_C[8], KEY_C[29], KEY_C[21], KEY_C[13], KEY_C[ 5]})==8'hff; -wire KEY_DATA_BIT4 = (CPU_A[7:0]|{KEY_C[60], KEY_C[52], KEY_C[44], KEY_C[36]&KEY_EX_C[7], KEY_C[28], KEY_C[20], KEY_C[12], KEY_C[ 4]})==8'hff; -wire KEY_DATA_BIT3 = (CPU_A[7:0]|{KEY_C[59], KEY_C[51], KEY_C[43], KEY_C[35]&KEY_EX_C[6], KEY_C[27], KEY_C[19], KEY_C[11], KEY_C[ 3]})==8'hff; -wire KEY_DATA_BIT2 = (CPU_A[7:0]|{KEY_C[58], KEY_C[50], KEY_C[42]&KEY_EX_C[3], KEY_C[34], KEY_C[26], KEY_C[18]&KEY_EX_C[0], KEY_C[10]&KEY_CTRL_ULRD_BRK, KEY_C[ 2]})==8'hff; -wire KEY_DATA_BIT1 = (CPU_A[7:0]|{KEY_C[57], KEY_C[49], KEY_C[41], KEY_C[33]&KEY_EX_C[4], KEY_C[25], KEY_C[17], KEY_C[ 9], KEY_C[ 1]})==8'hff; -wire KEY_DATA_BIT0 = (CPU_A[7:0]|{KEY_C[56], KEY_C[48], KEY_C[40], KEY_C[32], KEY_C[24], KEY_C[16], KEY_C[ 8], KEY_C[ 0]})==8'hff; - -/* -wire KEY_DATA_BIT5 = (CPU_A[7:0]|{KEY[61], KEY[53], KEY[45], KEY[37], KEY[29], KEY[21], KEY[13], KEY[ 5]})==8'hff; -wire KEY_DATA_BIT4 = (CPU_A[7:0]|{KEY[60], KEY[52], KEY[44], KEY[36], KEY[28], KEY[20], KEY[12], KEY[ 4]})==8'hff; -wire KEY_DATA_BIT3 = (CPU_A[7:0]|{KEY[59], KEY[51], KEY[43], KEY[35], KEY[27], KEY[19], KEY[11], KEY[ 3]})==8'hff; -wire KEY_DATA_BIT2 = (CPU_A[7:0]|{KEY[58], KEY[50], KEY[42], KEY[34], KEY[26], KEY[18], KEY[10], KEY[ 2]})==8'hff; -wire KEY_DATA_BIT1 = (CPU_A[7:0]|{KEY[57], KEY[49], KEY[41], KEY[33], KEY[25], KEY[17], KEY[ 9], KEY[ 1]})==8'hff; -wire KEY_DATA_BIT0 = (CPU_A[7:0]|{KEY[56], KEY[48], KEY[40], KEY[32], KEY[24], KEY[16], KEY[ 8], KEY[ 0]})==8'hff; -*/ - -wire KEY_DATA_BIT7 = 1'b1; // 没有空置,具体用途没有理解 -//wire KEY_DATA_BIT6 = CASS_IN; -wire KEY_DATA_BIT6 = ~CASS_IN; - -assign KEY_DATA = { KEY_DATA_BIT7, KEY_DATA_BIT6, KEY_DATA_BIT5, KEY_DATA_BIT4, KEY_DATA_BIT3, KEY_DATA_BIT2, KEY_DATA_BIT1, KEY_DATA_BIT0 }; - -/* -assign KEY_DATA = (CPU_A[0]==1'b0) ? KEY[ 7: 0] : - (CPU_A[1]==1'b0) ? KEY[15: 8] : - (CPU_A[2]==1'b0) ? KEY[23:16] : - (CPU_A[3]==1'b0) ? KEY[31:24] : - (CPU_A[4]==1'b0) ? KEY[39:32] : - (CPU_A[5]==1'b0) ? KEY[47:40] : - (CPU_A[6]==1'b0) ? KEY[55:48] : - (CPU_A[7]==1'b0) ? KEY[63:56] : - 8'hff; - -assign KEY_DATA = - (CPU_A[7]==1'b0) ? KEY[63:56] : - (CPU_A[6]==1'b0) ? KEY[55:48] : - (CPU_A[5]==1'b0) ? KEY[47:40] : - (CPU_A[4]==1'b0) ? KEY[39:32] : - (CPU_A[3]==1'b0) ? KEY[31:24] : - (CPU_A[2]==1'b0) ? KEY[23:16] : - (CPU_A[1]==1'b0) ? KEY[15: 8] : - (CPU_A[0]==1'b0) ? KEY[ 7: 0] : - 8'hff; -*/ - - -assign A_KEY_PRESSED = (KEY[63:0] == 64'hFFFFFFFFFFFFFFFF) ? 1'b0:1'b1; - -always @(posedge KB_CLK[3] or negedge SYS_RESET_N) -begin - if(~SYS_RESET_N) - begin - KEY <= 64'hFFFFFFFFFFFFFFFF; - KEY_EX <= 10'h3FF; - KEY_Fxx <= 12'h000; -// CAPS_CLK <= 1'b0; - RESET_KEY_COUNT <= 17'h1FFFF; - - BOOTROM_BANK <= 0; - BOOTROM_EN <= 1'b0; - - AUTOSTARTROM_BANK <= 0; - AUTOSTARTROM_EN <= 1'b0; - end - else - begin - //KEY[?] <= CAPS; - if(RESET_KEY_COUNT[16]==1'b0) - RESET_KEY_COUNT <= RESET_KEY_COUNT+1; - - case(SCAN) - 8'h07: - begin - KEY_Fxx[11] <= PRESS; // F12 RESET - if(PRESS && (KEY[10]==PRESS_N)) - begin - BOOTROM_EN <= 1'b0; - BOOTROM_BANK <= 0; - AUTOSTARTROM_EN <= 1'b0; - AUTOSTARTROM_BANK <= 0; - RESET_KEY_COUNT <= 17'h0; - end - end - 8'h78: KEY_Fxx[10] <= PRESS; // F11 - 8'h09: KEY_Fxx[ 9] <= PRESS; // F10 CASS STOP - 8'h01: KEY_Fxx[ 8] <= PRESS; // F9 CASS PLAY - 8'h0A: - begin - KEY_Fxx[ 7] <= PRESS; // F8 Ctrl or L-Shift BOOT 8 - if(PRESS && (KEY[18]==PRESS_N)) - begin - BOOTROM_EN <= 1'b1; - BOOTROM_BANK <= 39; - RESET_KEY_COUNT <= 17'h0; - end - else - if(PRESS && (KEY[10]==PRESS_N)) - begin - AUTOSTARTROM_EN <= 1'b1; - AUTOSTARTROM_BANK <= 23; - RESET_KEY_COUNT <= 17'h0; - end - end - 8'h83: - begin - KEY_Fxx[ 6] <= PRESS; // F7 Ctrl or L-Shift BOOT 7 - if(PRESS && (KEY[18]==PRESS_N)) - begin - BOOTROM_EN <= 1'b1; - BOOTROM_BANK <= 38; - RESET_KEY_COUNT <= 17'h0; - end - else - if(PRESS && (KEY[10]==PRESS_N)) - begin - AUTOSTARTROM_EN <= 1'b1; - AUTOSTARTROM_BANK <= 22; - RESET_KEY_COUNT <= 17'h0; - end - end - 8'h0B: - begin - KEY_Fxx[ 5] <= PRESS; // F6 Ctrl or L-Shift BOOT 6 - if(PRESS && (KEY[18]==PRESS_N)) - begin - BOOTROM_EN <= 1'b1; - BOOTROM_BANK <= 37; - RESET_KEY_COUNT <= 17'h0; - end - else - if(PRESS && (KEY[10]==PRESS_N)) - begin - AUTOSTARTROM_EN <= 1'b1; - AUTOSTARTROM_BANK <= 21; - RESET_KEY_COUNT <= 17'h0; - end - end - 8'h03: - begin - KEY_Fxx[ 4] <= PRESS; // F5 Ctrl or L-Shift BOOT 5 - if(PRESS && (KEY[18]==PRESS_N)) - begin - BOOTROM_EN <= 1'b1; - BOOTROM_BANK <= 36; - RESET_KEY_COUNT <= 17'h0; - end - else - if(PRESS && (KEY[10]==PRESS_N)) - begin - AUTOSTARTROM_EN <= 1'b1; - AUTOSTARTROM_BANK <= 20; - RESET_KEY_COUNT <= 17'h0; - end - end - 8'h0C: - begin - KEY_Fxx[ 3] <= PRESS; // F4 Ctrl or L-Shift BOOT 4 - if(PRESS && (KEY[18]==PRESS_N)) - begin - BOOTROM_EN <= 1'b1; - BOOTROM_BANK <= 35; - RESET_KEY_COUNT <= 17'h0; - end - else - if(PRESS && (KEY[10]==PRESS_N)) - begin - AUTOSTARTROM_EN <= 1'b1; - AUTOSTARTROM_BANK <= 19; - RESET_KEY_COUNT <= 17'h0; - end - end - 8'h04: - begin - KEY_Fxx[ 2] <= PRESS; // F3 Ctrl or L-Shift BOOT 3 - if(PRESS && (KEY[18]==PRESS_N)) - begin - BOOTROM_EN <= 1'b1; - BOOTROM_BANK <= 34; - RESET_KEY_COUNT <= 17'h0; - end - else - if(PRESS && (KEY[10]==PRESS_N)) - begin - AUTOSTARTROM_EN <= 1'b1; - AUTOSTARTROM_BANK <= 18; - RESET_KEY_COUNT <= 17'h0; - end - end - 8'h06: - begin - KEY_Fxx[ 1] <= PRESS; // F2 Ctrl or L-Shift BOOT 2 - if(PRESS && (KEY[18]==PRESS_N)) - begin - BOOTROM_EN <= 1'b1; - BOOTROM_BANK <= 33; - RESET_KEY_COUNT <= 17'h0; - end - else - if(PRESS && (KEY[10]==PRESS_N)) - begin - AUTOSTARTROM_EN <= 1'b1; - AUTOSTARTROM_BANK <= 17; - RESET_KEY_COUNT <= 17'h0; - end - end - 8'h05: - begin - KEY_Fxx[ 0] <= PRESS; // F1 Ctrl or L-Shift BOOT 1 - if(PRESS && (KEY[18]==PRESS_N)) - begin - BOOTROM_EN <= 1'b1; - BOOTROM_BANK <= 32; - RESET_KEY_COUNT <= 17'h0; - end - else - if(PRESS && (KEY[10]==PRESS_N)) - begin - AUTOSTARTROM_EN <= 1'b1; - AUTOSTARTROM_BANK <= 16; - RESET_KEY_COUNT <= 17'h0; - end - end - - 8'h16: KEY[28] <= PRESS_N; // 1 ! - 8'h1E: KEY[25] <= PRESS_N; // 2 @ - 8'h26: KEY[27] <= PRESS_N; // 3 # - 8'h25: KEY[29] <= PRESS_N; // 4 $ - 8'h2E: KEY[24] <= PRESS_N; // 5 % - 8'h36: KEY[40] <= PRESS_N; // 6 ^ - 8'h3D: KEY[45] <= PRESS_N; // 7 & -// 8'h0D: KEY[?] <= PRESS_N; // TAB - 8'h3E: KEY[43] <= PRESS_N; // 8 * - 8'h46: KEY[41] <= PRESS_N; // 9 ( - 8'h45: KEY[44] <= PRESS_N; // 0 ) - 8'h4E: KEY[42] <= PRESS_N; // - _ -// 8'h55: KEY[?] <= PRESS_N; // = + - 8'h66: KEY_EX[8] <= PRESS_N; // backspace -// 8'h0E: KEY[?] <= PRESS_N; // ` ~ -// 8'h5D: KEY[?] <= PRESS_N; // \ | - 8'h49: KEY[33] <= PRESS_N; // . > - 8'h4b: KEY[57] <= PRESS_N; // L - 8'h44: KEY[49] <= PRESS_N; // O -// 8'h11 KEY[?] <= PRESS_N; // line feed (really right ALT (Extended) see below - 8'h5A: KEY[50] <= PRESS_N; // CR -// 8'h54: KEY[?] <= PRESS_N; // [ { -// 8'h5B: KEY[?] <= PRESS_N; // ] } - 8'h52: KEY[58] <= PRESS_N; // ' " - 8'h1D: KEY[ 1] <= PRESS_N; // W - 8'h24: KEY[ 3] <= PRESS_N; // E - 8'h2D: KEY[ 5] <= PRESS_N; // R - 8'h2C: KEY[ 0] <= PRESS_N; // T - 8'h35: KEY[48] <= PRESS_N; // Y - 8'h3C: KEY[53] <= PRESS_N; // U - 8'h43: KEY[51] <= PRESS_N; // I - 8'h1B: KEY[ 9] <= PRESS_N; // S - 8'h23: KEY[11] <= PRESS_N; // D - 8'h2B: KEY[13] <= PRESS_N; // F - 8'h34: KEY[ 8] <= PRESS_N; // G - 8'h33: KEY[56] <= PRESS_N; // H - 8'h3B: KEY[61] <= PRESS_N; // J - 8'h42: KEY[59] <= PRESS_N; // K - 8'h22: KEY[17] <= PRESS_N; // X - 8'h21: KEY[19] <= PRESS_N; // C - 8'h2a: KEY[21] <= PRESS_N; // V - 8'h32: KEY[16] <= PRESS_N; // B - 8'h31: KEY[32] <= PRESS_N; // N - 8'h3a: KEY[37] <= PRESS_N; // M - 8'h41: KEY[35] <= PRESS_N; // , < - 8'h15: KEY[ 4] <= PRESS_N; // Q - 8'h1C: KEY[12] <= PRESS_N; // A - 8'h1A: KEY[20] <= PRESS_N; // Z - 8'h29: KEY[36] <= PRESS_N; // Space -// 8'h4A: KEY[?] <= PRESS_N; // / ? - 8'h4C: KEY[60] <= PRESS_N; // ; : - 8'h4D: KEY[52] <= PRESS_N; // P - 8'h14: KEY[10] <= PRESS_N; // Ctrl either left or right - 8'h12: KEY[18] <= PRESS_N; // L-Shift - 8'h59: KEY_EX[0] <= PRESS_N; // R-Shift - 8'h11: - begin - if(~EXTENDED) - KEY_EX[1] <= PRESS_N; // Repeat really left ALT - else - KEY_EX[2] <= PRESS_N; // LF really right ALT - end - 8'h76: KEY_EX[3] <= PRESS_N; // Esc - 8'h75: KEY_EX[4] <= PRESS_N; // up - 8'h6B: KEY_EX[5] <= PRESS_N; // left - 8'h74: KEY_EX[6] <= PRESS_N; // right - 8'h72: KEY_EX[7] <= PRESS_N; // down - endcase - end -end - - - - -always @ (posedge CLK50MHZ) // 50MHz - KB_CLK <= KB_CLK + 1'b1; // 50/32 = 1.5625 MHz - -ps2_keyboard KEYBOARD( - .RESET_N(RESET_N), - .CLK(KB_CLK[4]), - .PS2_CLK(PS2_KBCLK), - .PS2_DATA(PS2_KBDAT), - .RX_SCAN(SCAN), - .RX_PRESSED(PRESS), - .RX_EXTENDED(EXTENDED) -); - -assign PRESS_N = ~PRESS; - - -`ifdef CASS_EMU - -wire CASS_BUF_RD; -wire [15:0] CASS_BUF_A; -wire CASS_BUF_WR; -wire [7:0] CASS_BUF_DAT; -wire [7:0] CASS_BUF_Q; - -// F9 CASS PLAY -// F10 CASS STOP - -EMU_CASS_KEY EMU_CASS_KEY( - KEY_Fxx[8], - KEY_Fxx[9], - // cass emu - CASS_BUF_RD, - // - CASS_BUF_A, - CASS_BUF_WR, - CASS_BUF_DAT, - CASS_BUF_Q, - // Control Signals - EMU_CASS_EN, - EMU_CASS_DAT, - - // key emu - EMU_KEY, - EMU_KEY_EX, - EMU_KEY_EN, - /* - * UART: 115200 bps, 8N1 - */ - UART_RXD, - UART_TXD, - - // System - TURBO_SPEED, - // Clock: 10MHz - CLK10MHZ, - RESET_N -); - - -`ifdef CASS_EMU_16K - -cass_ram_16k_altera cass_buf( - .address(CASS_BUF_A[13:0]), - .clock(CLK10MHZ), - .data(CASS_BUF_DI), - .wren(CASS_BUF_WR), - .q(CASS_BUF_Q) -); - -`endif - - -`ifdef CASS_EMU_8K - -cass_ram_8k_altera cass_buf( - .address(CASS_BUF_A[12:0]), - .clock(CLK10MHZ), - .data(CASS_BUF_DI), - .wren(CASS_BUF_WR), - .q(CASS_BUF_Q) -); - -`endif - - -`ifdef CASS_EMU_4K - -cass_ram_4k_altera cass_buf( - .address(CASS_BUF_A[11:0]), - .clock(CLK10MHZ), - .data(CASS_BUF_DAT), - .wren(CASS_BUF_WR), - .q(CASS_BUF_Q) -); - -`endif - - -`ifdef CASS_EMU_2K - -cass_ram_2k_altera cass_buf( - .address(CASS_BUF_A[10:0]), - .clock(CLK10MHZ), - .data(CASS_BUF_DAT), - .wren(CASS_BUF_WR), - .q(CASS_BUF_Q) -); - -`endif - -`endif - - - -assign CASS_OUT = EMU_CASS_EN ? EMU_CASS_DAT : {LATCHED_IO_DATA_WR[2], 1'b0}; - -(*keep*)wire trap = (CPU_RD|CPU_WR) && (CPU_A[15:12] == 4'h0); - diff --git a/Computer_MiST/Laser310_MiST/rtl/VIDEO_OUT.v b/Computer_MiST/Laser310_MiST/rtl/VIDEO_OUT.v deleted file mode 100644 index 2c8f8a25..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/VIDEO_OUT.v +++ /dev/null @@ -1,70 +0,0 @@ -module VIDEO_OUT -( - pixel_clock, - reset, - vga_red_data, - vga_green_data, - vga_blue_data, - h_synch, - v_synch, - blank, - - VGA_OUT_HSYNC, - VGA_OUT_VSYNC, - VGA_OUT_RED, - VGA_OUT_GREEN, - VGA_OUT_BLUE -); - -input pixel_clock; -input reset; -input [7:0] vga_red_data; -input [7:0] vga_green_data; -input [7:0] vga_blue_data; -input h_synch; -input v_synch; -input blank; - -output VGA_OUT_HSYNC; -output VGA_OUT_VSYNC; -output [7:0] VGA_OUT_RED; -output [7:0] VGA_OUT_GREEN; -output [7:0] VGA_OUT_BLUE; - -reg VGA_OUT_HSYNC; -reg VGA_OUT_VSYNC; -reg [7:0] VGA_OUT_RED; -reg [7:0] VGA_OUT_GREEN; -reg [7:0] VGA_OUT_BLUE; - -// make the external video connections -always @ (posedge pixel_clock or posedge reset) begin - if (reset) begin - // shut down the video output during reset - VGA_OUT_HSYNC <= 1'b1; - VGA_OUT_VSYNC <= 1'b1; - VGA_OUT_RED <= 8'b0; - VGA_OUT_GREEN <= 8'b0; - VGA_OUT_BLUE <= 8'b0; - end - - else if (blank) begin - // output black during the blank signal - VGA_OUT_HSYNC <= h_synch; - VGA_OUT_VSYNC <= v_synch; - VGA_OUT_RED <= 8'b0; - VGA_OUT_GREEN <= 8'b0; - VGA_OUT_BLUE <= 8'b0; - end - - else begin - // output color data otherwise - VGA_OUT_HSYNC <= h_synch; - VGA_OUT_VSYNC <= v_synch; - VGA_OUT_RED <= vga_red_data; - VGA_OUT_GREEN <= vga_green_data; - VGA_OUT_BLUE <= vga_blue_data; - end -end - -endmodule // VIDEO_OUT diff --git a/Computer_MiST/Laser310_MiST/rtl/build_id.tcl b/Computer_MiST/Laser310_MiST/rtl/build_id.tcl deleted file mode 100644 index 938515d8..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/build_id.tcl +++ /dev/null @@ -1,35 +0,0 @@ -# ================================================================================ -# -# 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/Computer_MiST/Laser310_MiST/rtl/dac.vhd b/Computer_MiST/Laser310_MiST/rtl/dac.vhd deleted file mode 100644 index 9685a6cc..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/dac.vhd +++ /dev/null @@ -1,48 +0,0 @@ -------------------------------------------------------------------------------- --- --- Delta-Sigma DAC --- --- Refer to Xilinx Application Note XAPP154. --- --- This DAC requires an external RC low-pass filter: --- --- dac_o 0---XXXXX---+---0 analog audio --- 3k3 | --- === 4n7 --- | --- GND --- -------------------------------------------------------------------------------- - -library ieee; - use ieee.std_logic_1164.all; - use ieee.numeric_std.all; - -entity dac is - generic ( - C_bits : integer := 12 - ); - port ( - clk_i : in std_logic; - res_n_i : in std_logic; - dac_i : in std_logic_vector(C_bits-1 downto 0); - dac_o : out std_logic - ); -end dac; - -architecture rtl of dac is - signal sig_in: unsigned(C_bits downto 0); -begin - seq: process(clk_i, res_n_i) - begin - if res_n_i = '0' then - sig_in <= to_unsigned(2**C_bits, sig_in'length); - dac_o <= '0'; - elsif rising_edge(clk_i) then - -- not dac_i(C_bits-1) effectively adds 0x8..0 to dac_i - --sig_in <= sig_in + unsigned(sig_in(C_bits) & (not dac_i(C_bits-1)) & dac_i(C_bits-2 downto 0)); - sig_in <= sig_in + unsigned(sig_in(C_bits) & dac_i); - dac_o <= sig_in(C_bits); - end if; - end process seq; -end rtl; diff --git a/Computer_MiST/Laser310_MiST/rtl/dpram.vhd b/Computer_MiST/Laser310_MiST/rtl/dpram.vhd deleted file mode 100644 index 78823ec4..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/dpram.vhd +++ /dev/null @@ -1,58 +0,0 @@ -------------------------------------------------------------------------------- --- $Id: dpram.vhd,v 1.1 2006/02/23 21:46:45 arnim Exp $ -------------------------------------------------------------------------------- - -library ieee; -use ieee.std_logic_1164.all; - -entity dpram is - -generic ( - addr_width_g : integer := 8; - data_width_g : integer := 8 -); -port ( - clk_a_i : in std_logic; - en_a_i : in std_logic; - we_i : in std_logic; - addr_a_i : in std_logic_vector(addr_width_g-1 downto 0); - data_a_i : in std_logic_vector(data_width_g-1 downto 0); - data_a_o : out std_logic_vector(data_width_g-1 downto 0); - clk_b_i : in std_logic; - addr_b_i : in std_logic_vector(addr_width_g-1 downto 0); - data_b_o : out std_logic_vector(data_width_g-1 downto 0) -); - -end dpram; - - -library ieee; -use ieee.numeric_std.all; - -architecture rtl of dpram is - - type ram_t is array (natural range 2**addr_width_g-1 downto 0) of std_logic_vector(data_width_g-1 downto 0); - signal ram_q : ram_t; - -begin - - mem_a: process (clk_a_i) - begin - if rising_edge(clk_a_i) then - if we_i = '1' and en_a_i = '1' then - ram_q(to_integer(unsigned(addr_a_i))) <= data_a_i; - data_a_o <= data_a_i; - else - data_a_o <= ram_q(to_integer(unsigned(addr_a_i))); - end if; - end if; - end process mem_a; - - mem_b: process (clk_b_i) - begin - if rising_edge(clk_b_i) then - data_b_o <= ram_q(to_integer(unsigned(addr_b_i))); - end if; - end process mem_b; - -end rtl; diff --git a/Computer_MiST/Laser310_MiST/rtl/fdc.v b/Computer_MiST/Laser310_MiST/rtl/fdc.v deleted file mode 100644 index b63ae324..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/fdc.v +++ /dev/null @@ -1,967 +0,0 @@ -/***************************************************************************** -* Floppy -******************************************************************************/ - -// POLLING after Clock - -// vz dsk Parameter -// 154 * 16 * 40 = 98560 = 0x18100 -// 154 * 16 = 2464 = 0x9A0 = 0x4D0 * 2 -`define FD_MAX_LEN 17'h18100 -`define FD_TRACK_LEN 12'h9A0 -`define FD_TRACK_STEP 8'h4D - -// 40*2 0 --- 78 -`define FD_MAX_TRACK_NO 8'd78 - - -module FDC_IF ( - FDC_CLK, - RESET_N, - SW, - DBG, - - FDC_RAM_R, - FDC_RAM_W, - FDC_RAM_ADDR_R, - FDC_RAM_ADDR_W, - FDC_RAM_DATA_R, - FDC_RAM_DATA_W, - - FDC_IO, - FDC_IO_POLL, - FDC_IO_DATA, - FDC_IO_CT, - - FDC_SIG, - FDC_SIG_CLK, - - FDC_CT, - FDC_DATA, - FDC_POLL, - FDC_WP, - - FLOPPY_SECTOR_BYTE, - TRACK1_NO, - TRACK2_NO, - DRIVE1, - DRIVE2, - MOTOR -); - - -input FDC_CLK; -input RESET_N; -input [1:0] SW; -input [3:0] DBG; - -output [17:0] FDC_RAM_ADDR_R; -output [17:0] FDC_RAM_ADDR_W; -output reg FDC_RAM_R; -output reg FDC_RAM_W; -input [7:0] FDC_RAM_DATA_R; -output [7:0] FDC_RAM_DATA_W; - - -input FDC_IO; -input FDC_IO_POLL; -input FDC_IO_DATA; -input FDC_IO_CT; - -output FDC_SIG; -output reg FDC_SIG_CLK; - -input [7:0] FDC_CT; - -output [7:0] FDC_DATA; -output FDC_POLL; -output FDC_WP; - - -reg [11:0] FLOPPY_BYTE; -output reg [7:0] FLOPPY_SECTOR_BYTE; // Count Sector Bytes - -reg [6:0] CLK_CNT; -reg [6:0] CLK_CNT_W; - -reg [18:0] SYNC_CNT; -reg [7:0] FLOPPY_SECTOR_DELAY; // Delay on Sector End - - -reg FD_REC1; -reg FDC_POLL1; -reg FDC_REC_DATA_BIT1; -reg FDC_DATA_BIT1; -reg [7:0] FDC_DATA1; -reg [7:0] LATCHED_FDC_DATA1; -reg FDC_DATA_SET1; - -reg FD_REC2; -reg FDC_POLL2; -reg FDC_REC_DATA_BIT2; -reg FDC_DATA_BIT2; -reg [7:0] FDC_DATA2; -reg [7:0] LATCHED_FDC_DATA2; - -reg [3:0] BIT_CNT_W; -reg [2:0] BIT_CNT; - -wire FDC_RAM_DATA_R_BIT; - - -reg [1:0] STEPPER1; -reg [1:0] STEPPER2; -output reg [7:0] TRACK1_NO; -output reg [7:0] TRACK2_NO; -reg [12:0] TRACK1; -reg [12:0] TRACK2; -(*keep*)wire [13:0] TRACK; -wire [12:0] TRACK1_UP; -wire [12:0] TRACK1_DOWN; -wire [12:0] TRACK2_UP; -wire [12:0] TRACK2_DOWN; -reg [17:0] FLOPPY_ADDRESS_R; -reg [17:0] FLOPPY_ADDRESS_W; -//reg [7:0] FLOPPY_WRITE_DATA; - -reg WRITE_WAIT_FIRST_OP; -reg WRITE_DATA_BIT_VAL; - -reg [7:0] WRITE_DATA1; -reg WRITE_DATA_MODI1; -reg [7:0] WRITE_DATA2; -reg WRITE_DATA2_MODI; - - -(*keep*)wire [7:0] FLOPPY_RD_DATA; -(*keep*)wire [7:0] FLOPPY_DATA; -(*keep*)wire FLOPPY_READ; -(*keep*)wire FLOPPY_WRITE; -wire FLOPPY_WP_READ; -reg PHASE0; -reg PHASE0_1; -reg PHASE0_2; -reg PHASE1; -reg PHASE1_1; -reg PHASE1_2; -reg PHASE2; -reg PHASE2_1; -reg PHASE2_2; -reg PHASE3; -reg PHASE3_1; -reg PHASE3_2; -output reg DRIVE1; -output reg DRIVE2; -output reg MOTOR; - -reg WRITE_REQUEST_N; -reg WRITE_DATA_BIT; - -reg Q6; -reg Q7; -wire DRIVE1_EN; -wire DRIVE2_EN; -wire DRIVE1_X; -wire DRIVE2_X; -wire DRIVE_SWAP; -wire DRIVE1_FLOPPY_WP; -wire DRIVE2_FLOPPY_WP; - -reg MODIFY_DRIVE1; -reg MODIFY_DRIVE2; - -assign FDC_RAM_ADDR_R = FLOPPY_ADDRESS_R; -assign FDC_RAM_ADDR_W = FLOPPY_ADDRESS_W; - - -(*preserve*)reg [7:0] FDC_CNT; -(*preserve*)reg [7:0] FDC_CNT_POLL; -(*preserve*)reg [7:0] FDC_CNT_DATA; -(*preserve*)reg [19:0] FDC_CNT_CT; - -always @(posedge FDC_CLK or negedge RESET_N) -begin - if(~RESET_N) - begin - FDC_CNT <= 8'hFF; - FDC_CNT_POLL <= 8'hFF; - FDC_CNT_DATA <= 8'hFF; - FDC_CNT_CT <= 20'hFFFFF; - end - else - begin - if(FDC_IO) - FDC_CNT <= 0; - else if(~FDC_CNT[7]) - FDC_CNT <= FDC_CNT + 1; - - if(FDC_IO_POLL) - FDC_CNT_POLL <= 0; - else if(~FDC_CNT_POLL[7]) - FDC_CNT_POLL <= FDC_CNT_POLL + 1; - - if(FDC_IO_DATA) - FDC_CNT_DATA <= 0; - else if(~FDC_CNT_DATA[7]) - FDC_CNT_DATA <= FDC_CNT_DATA + 1; - - if(FDC_IO_CT) - FDC_CNT_CT <= 0; - else if(~FDC_CNT_CT[19]) - FDC_CNT_CT <= FDC_CNT_CT + 1; - end -end - - - -assign FDC_POLL = (DRIVE1_EN)?FDC_POLL1: - (DRIVE2_EN)?FDC_POLL2: - 1'b0; - - -assign FDC_DATA = (DRIVE1_EN)?FDC_DATA1: - (DRIVE2_EN)?FDC_DATA2: - 8'hFF; - - - -assign FDC_RAM_DATA_R_BIT = (BIT_CNT==3'd7)?FDC_RAM_DATA_R[7]: - (BIT_CNT==3'd6)?FDC_RAM_DATA_R[6]: - (BIT_CNT==3'd5)?FDC_RAM_DATA_R[5]: - (BIT_CNT==3'd4)?FDC_RAM_DATA_R[4]: - (BIT_CNT==3'd3)?FDC_RAM_DATA_R[3]: - (BIT_CNT==3'd2)?FDC_RAM_DATA_R[2]: - (BIT_CNT==3'd1)?FDC_RAM_DATA_R[1]: - FDC_RAM_DATA_R[0]; - - -// 读取 - -reg LATCHED_FD_REC1; -reg LATCHED_FDC_IO_DATA1; -reg GET_FDC_POLLING; - -reg [5:0] FDC_POLL1_CNT; - -reg [5:0] GET_FDC_POLL1_CNT; - - -always @(posedge FDC_CLK or negedge RESET_N) - if(~RESET_N) - begin - FDC_DATA_BIT1 <= 1'b0; - - LATCHED_FD_REC1 <= 1'b0; - LATCHED_FDC_IO_DATA1 <= 1'b0; - end - else - begin - // 磁道记录信号上沿,翻转 DATA_BIT - if({LATCHED_FD_REC1, FD_REC1}==2'b01) - begin - FDC_DATA_BIT1 <= FDC_POLL1; - end - - if(FDC_DATA_SET1) - LATCHED_FDC_DATA1 <= {LATCHED_FDC_DATA1[6:0], FDC_DATA_BIT1}; - - // 读取DATA信号上沿 - if({LATCHED_FDC_IO_DATA1, FDC_IO_DATA}==2'b01) - begin - FDC_DATA1 <= LATCHED_FDC_DATA1; - end - - LATCHED_FD_REC1 <= FD_REC1; - LATCHED_FDC_IO_DATA1 <= FDC_IO_DATA; - end - -//////////////////////////////////////// -// 物理软驱模拟 -//////////////////////////////////////// - -//WRITE_REQUEST_N -(*preserve*)reg [9:0] WRITE_DATA_CNT; - -assign FDC_RAM_DATA_W = WRITE_DATA1; - -// 对写入操作计数 -always @(posedge FDC_CLK or negedge RESET_N) -begin - if(~RESET_N) - begin - WRITE_DATA_CNT <= 0; - end - else - begin - if( (~FDC_CT[6]) && (FDC_CT[5]==LATCHED_FDC_CT[5]) ) - begin - if(~WRITE_DATA_CNT[9]) - WRITE_DATA_CNT <= WRITE_DATA_CNT+1; - end - else - begin - WRITE_DATA_CNT <= 0; - end - end -end - - -// 模拟磁道信号 - -// 等待第1个写入数据变化 -always @(posedge FDC_CLK or negedge RESET_N) - if(~RESET_N) - begin - WRITE_WAIT_FIRST_OP <= 1'b0; - end - else - begin - if( LATCHED_FDC_CT[6]!=FDC_CT[6] ) - begin - // 信号下拉,开始写入,并等待第1个写入数据变化。 - WRITE_WAIT_FIRST_OP <= ({LATCHED_FDC_CT[6],FDC_CT[6]}==2'b10); - end - else - begin - // 找到第1个写入数据变化 - if( ({LATCHED_FDC_CT[6],FDC_CT[6]}==2'b00) && (FDC_CT[5]!=LATCHED_FDC_CT[5]) ) - WRITE_WAIT_FIRST_OP <= 1'b0; - end - end - -// 判断是否有写入数据产生 -always @(posedge FDC_CLK or negedge RESET_N) - if(~RESET_N) - begin - WRITE_DATA_MODI1 <= 1'b0; - end - else - begin - // 写入信号变化 - if( ({LATCHED_FDC_CT[6],FDC_CT[6]}==2'b00) && (FDC_CT[5]!=LATCHED_FDC_CT[5]) ) - begin - WRITE_DATA_MODI1 <= 1'b1; - end - else - begin - if(FDC_RAM_W) - WRITE_DATA_MODI1 <= 1'b0; - end - end - - -// 判断写入的值 -always @(posedge FDC_CLK or negedge RESET_N) - if(~RESET_N) - begin - WRITE_DATA_BIT_VAL <= 1'b0; - end - else - begin - // 写入信号变化 - if( ({LATCHED_FDC_CT[6],FDC_CT[6]}==2'b00) && (FDC_CT[5]!=LATCHED_FDC_CT[5]) ) - begin - // 9'h01B 9'h056 9'h072 - if(WRITE_DATA_CNT==10'h01B) - begin - WRITE_DATA_BIT_VAL <= 1'b1; - end - else - begin - WRITE_DATA_BIT_VAL <= 1'b0; - end - end - end - - -// 模拟磁盘数据位 -always @(posedge FDC_CLK or negedge RESET_N) -begin - if(~RESET_N) - begin - SYNC_CNT <= 19'b0; - - BIT_CNT <= 3'd0; - - FDC_RAM_R <= 1'b0; - FDC_RAM_W <= 1'b0; - - FDC_DATA_SET1 <= 1'b0; - - FDC_POLL1 <= 1'b0; - FDC_POLL2 <= 1'b0; - - FLOPPY_BYTE <= 12'h000; - FLOPPY_SECTOR_BYTE <= 8'h00; - FLOPPY_SECTOR_DELAY <= 8'h00; - FLOPPY_ADDRESS_R <= 18'b0; - FLOPPY_ADDRESS_W <= 18'b0; - - WRITE_DATA1 <= 8'b0; - - FD_REC1 <= 1'b0; - CLK_CNT <= 7'h00; - end - else - begin - begin - if( ({LATCHED_FDC_CT[6],FDC_CT[6]}==2'b00) && (FDC_CT[5]!=LATCHED_FDC_CT[5]) && WRITE_DATA_CNT[9] ) - begin - // INIT 磁道空白区,约1/10圈空白。 - // 找到第1个时钟位 - BIT_CNT <= 3'd7; - - // 下一个需要读取的位置 - FLOPPY_BYTE <= 12'h001; - FLOPPY_SECTOR_BYTE <= 8'h00; - - FLOPPY_ADDRESS_R <= {TRACK, 4'b0}; - SYNC_CNT <= 19'b0; - FDC_RAM_R <= 1'b1; - - FDC_RAM_W <= 1'b0; - - FDC_DATA_SET1 <= 1'b0; - - FD_REC1 <= 1'b1; - FDC_POLL1 <= 1'b0; - FDC_POLL2 <= 1'b0; - CLK_CNT <= 7'h03; - end - else - begin - if( ({LATCHED_FDC_CT[6],FDC_CT[6]}==2'b00) && (FDC_CT[5]!=LATCHED_FDC_CT[5]) && WRITE_DATA_CNT==10'h02F ) - begin - // 格式化时,数据区之前无空白。数据存盘时,写入数据区留有50个左右的时钟周期空白。 - // 写入扇区定位,写入扇区前有约0x28个时钟周期的空白。 - FDC_RAM_W <= 1'b0; - - FDC_DATA_SET1 <= 1'b0; - - FD_REC1 <= 1'b1; - FDC_POLL1 <= 1'b0; - FDC_POLL2 <= 1'b0; - CLK_CNT <= 7'h03; - end - else - begin - case(CLK_CNT) - 7'h00: // 同步信号 324 * 8 * 0x70 = 290304 - begin - FD_REC1 <= 1'b0; - SYNC_CNT <= SYNC_CNT+1; - - FDC_RAM_R <= 1'b0; - FDC_RAM_W <= 1'b0; - - if(SYNC_CNT[18]) - //if(SYNC_CNT[10]) - begin - CLK_CNT <= CLK_CNT + 1; - end - end - - 7'h01: - begin - FDC_RAM_R <= 1'b0; - FDC_RAM_W <= 1'b0; - - // 如果是写入,等待时钟沿的变化 - if( ({LATCHED_FDC_CT[6],FDC_CT[6]}==2'b00) && ({LATCHED_FDC_CT[5],FDC_CT[5]}==2'b01) ) - begin - CLK_CNT <= CLK_CNT; - end - else - begin - CLK_CNT <= CLK_CNT + 1; - end - end - - // CLOCK DOMAIN - 7'h02: - begin - BIT_CNT <= BIT_CNT-1; - - // 读取 - if(BIT_CNT==3'd0) - begin - begin - FLOPPY_BYTE <= FLOPPY_BYTE + 1'b1; - - FLOPPY_ADDRESS_R <= {TRACK, 4'b0} + {6'b000000, FLOPPY_BYTE}; - end - - FDC_RAM_R <= 1'b1; - end - - FD_REC1 <= 1'b1; - - CLK_CNT <= CLK_CNT + 1; - end - - - // POOLING - // 从读取POLLING成功(值为1),到读取DATA中间间隔了0x43 个时钟周期。 - 7'h03: - begin - FDC_RAM_R <= 1'b0; - FDC_RAM_W <= 1'b0; - - FDC_POLL1 <= 1'b1; - FDC_POLL2 <= 1'b1; - CLK_CNT <= CLK_CNT + 1; - end - - 7'h06: // 1us - begin - FD_REC1 <= 1'b0; - CLK_CNT <= CLK_CNT + 1; - end - - // DATA DOMAIN - 7'h1E: - begin - FD_REC1 <= FDC_RAM_DATA_R_BIT; - CLK_CNT <= CLK_CNT + 1; - end - - 7'h1F: - begin - FDC_DATA_SET1 <= 1'b1; - CLK_CNT <= CLK_CNT + 1; - end - - 7'h20: - begin - FDC_DATA_SET1 <= 1'b0; - CLK_CNT <= CLK_CNT + 1; - end - - 7'h22: - begin - FD_REC1 <= 1'b0; - CLK_CNT <= CLK_CNT + 1; - end - - 7'h25: - begin - FDC_POLL1 <= 1'b0; - FDC_POLL2 <= 1'b0; - CLK_CNT <= CLK_CNT + 1; - end - - // 扇区结束延时 - 7'h70: - begin - // 写入 - WRITE_DATA1 <= {WRITE_DATA1[6:0],WRITE_DATA_BIT_VAL}; - - if(BIT_CNT==3'd0) - begin - FLOPPY_ADDRESS_W <= FLOPPY_ADDRESS_R; - FDC_RAM_W <= WRITE_DATA_MODI1; - end - - CLK_CNT <= CLK_CNT + 1; - end - - 7'h71: - begin - // 写入结束 - FDC_RAM_W <= 1'b0; - - FDC_SIG_CLK <= WRITE_DATA_MODI1; - - // 扇区结束时的延时 - if(BIT_CNT==3'd0 && FLOPPY_SECTOR_BYTE==8'h99) - begin - FLOPPY_SECTOR_DELAY <= 8'hA5; - end - else - begin - FLOPPY_SECTOR_DELAY <= 8'h00; - end - - CLK_CNT <= CLK_CNT + 1; - end - - // 扇区结束时的延时 - 7'h72: - begin - FDC_SIG_CLK <= 1'b0; - - // 扇区结束时的延时 - if(FLOPPY_SECTOR_DELAY==8'h00) - begin - CLK_CNT <= CLK_CNT + 1; - end - else - begin - FLOPPY_SECTOR_DELAY <= FLOPPY_SECTOR_DELAY-1; - end - end - - 7'h73: - begin - if(BIT_CNT==3'd0) - begin - if(FLOPPY_BYTE==`FD_TRACK_LEN||FLOPPY_SECTOR_BYTE==8'h99) - begin - FLOPPY_SECTOR_BYTE <= 8'h00; - end - else - begin - FLOPPY_SECTOR_BYTE <= FLOPPY_SECTOR_BYTE+1; - end - end - - if(BIT_CNT==3'd0 && FLOPPY_BYTE==`FD_TRACK_LEN) - begin - FLOPPY_BYTE <= 12'h000; - //FLOPPY_SECTOR_BYTE <= 8'h00; - - FLOPPY_ADDRESS_R <= {TRACK, 4'b0}; - SYNC_CNT <= 19'b0; - - CLK_CNT <= 7'h00; - end - else - begin - CLK_CNT <= 7'h01; - end - end - - default: - begin - FDC_RAM_R <= 1'b0; - FDC_RAM_W <= 1'b0; - CLK_CNT <= CLK_CNT + 1; - end - endcase - end - end - end - end -end - - -always @(posedge FDC_CLK or negedge RESET_N) -begin - if(~RESET_N) - begin - PHASE0 <= 1'b0; - PHASE1 <= 1'b0; - PHASE2 <= 1'b0; - PHASE3 <= 1'b0; - MOTOR <= 1'b0; - DRIVE1 <= 1'b0; - DRIVE2 <= 1'b0; - WRITE_REQUEST_N <= 1'b1; - WRITE_DATA_BIT <= 1'b0; - end - else - begin - PHASE0 <= FDC_CT[0]; - PHASE1 <= FDC_CT[1]; - PHASE2 <= FDC_CT[2]; - PHASE3 <= FDC_CT[3]; - DRIVE1 <= FDC_CT[4]; - DRIVE2 <= FDC_CT[7]; - MOTOR <= (FDC_CT[4])|(FDC_CT[7]); - WRITE_REQUEST_N <= FDC_CT[6]; - WRITE_DATA_BIT <= FDC_CT[5]; - end -end - -//assign DRIVE1_X = DRIVE1 & MOTOR; -//assign DRIVE2_X = !DRIVE1 & MOTOR; - -assign DRIVE1_X = DRIVE1 & MOTOR; -assign DRIVE2_X = DRIVE2 & MOTOR; - -assign DRIVE1_FLOPPY_WP = ~SW[0]; -assign DRIVE2_FLOPPY_WP = ~SW[1]; - -assign FDC_WP = DRIVE1?DRIVE1_FLOPPY_WP: - DRIVE2?DRIVE2_FLOPPY_WP: - 1'b1; - - -assign DRIVE1_EN = (DRIVE1) & MOTOR; -assign DRIVE2_EN = (DRIVE2) & MOTOR; - - -assign TRACK = (DRIVE1_EN) ? {1'b0,TRACK1}: - (DRIVE2_EN) ? {1'b1,TRACK2}: - 14'b0; - -assign TRACK1_UP = TRACK1 + `FD_TRACK_STEP; -assign TRACK1_DOWN = TRACK1 - `FD_TRACK_STEP; -assign TRACK2_UP = TRACK2 + `FD_TRACK_STEP; -assign TRACK2_DOWN = TRACK2 - `FD_TRACK_STEP; - - -//assign FLOPPY_ADDRESS_R = {TRACK, 4'b0} + {5'b00000, FLOPPY_BYTE}; - - -//always @ (posedge PH_2) -always @(negedge FDC_CLK) -begin - PHASE0_1 <= PHASE0; - PHASE0_2 <= PHASE0_1; // Delay 2 clock cycles - PHASE1_1 <= PHASE1; - PHASE1_2 <= PHASE1_1; // Delay 2 clock cycles - PHASE2_1 <= PHASE2; - PHASE2_2 <= PHASE2_1; // Delay 2 clock cycles - PHASE3_1 <= PHASE3; - PHASE3_2 <= PHASE3_1; // Delay 2 clock cycles -end - -always @(posedge FDC_CLK or negedge RESET_N) -begin - if(~RESET_N) - begin - STEPPER1 <= 2'b00; - STEPPER2 <= 2'b00; - TRACK1 <= 13'd0; - TRACK2 <= 13'd0; - - TRACK1_NO <= 8'd0; - TRACK2_NO <= 8'd0; - end - else - begin -// if(DRIVE1^DRIVE_SWAP) - if(DRIVE1) - begin - case ({PHASE0_2, PHASE1_2, PHASE2_2, PHASE3_2}) - 4'b1000: - begin - if(STEPPER1 == 2'b11) - begin - //if(TRACK1 != `FD_MAX_LEN) - if(TRACK1_NO != `FD_MAX_TRACK_NO) - begin - TRACK1 <= TRACK1_UP; - TRACK1_NO <= TRACK1_NO+1; - STEPPER1 <= 2'b00; - end - end - else - if(STEPPER1 == 2'b01) - begin - //if(TRACK1 != 17'h0) - if(TRACK1_NO != 8'd0) - begin - TRACK1 <= TRACK1_DOWN; - TRACK1_NO <= TRACK1_NO-1; - STEPPER1 <= 2'b00; - end - end - end - 4'b0100: - begin - if(STEPPER1 == 2'b00) - begin - //if(TRACK1 != `FD_MAX_LEN) - if(TRACK1_NO != `FD_MAX_TRACK_NO) - begin - TRACK1 <= TRACK1_UP; - TRACK1_NO <= TRACK1_NO+1; - STEPPER1 <= 2'b01; - end - end - else - if(STEPPER1 == 2'b10) - begin - //if(TRACK1 != 17'h0) - if(TRACK1_NO != 8'd0) - begin - TRACK1 <= TRACK1_DOWN; - TRACK1_NO <= TRACK1_NO-1; - STEPPER1 <= 2'b01; - end - end - end - 4'b0010: - begin - if(STEPPER1 == 2'b01) - begin - //if(TRACK1 != `FD_MAX_LEN) - if(TRACK1_NO != `FD_MAX_TRACK_NO) - begin - TRACK1 <= TRACK1_UP; - TRACK1_NO <= TRACK1_NO+1; - STEPPER1 <= 2'b10; - end - end - else - if(STEPPER1 == 2'b11) - begin - //if(TRACK1 != 17'h0) - if(TRACK1_NO != 8'd0) - begin - TRACK1 <= TRACK1_DOWN; - TRACK1_NO <= TRACK1_NO-1; - STEPPER1 <= 2'b10; - end - end - end - 4'b0001: - begin - if(STEPPER1 == 2'b10) - begin - //if(TRACK1 != `FD_MAX_LEN) - if(TRACK1_NO != `FD_MAX_TRACK_NO) - begin - TRACK1 <= TRACK1_UP; - TRACK1_NO <= TRACK1_NO+1; - STEPPER1 <= 2'b11; - end - end - else - if(STEPPER1 == 2'b00) - begin - //if(TRACK1 != 17'h0) - if(TRACK1_NO != 8'd0) - begin - TRACK1 <= TRACK1_DOWN; - TRACK1_NO <= TRACK1_NO-1; - STEPPER1 <= 2'b11; - end - end - end - endcase - end - - else - - begin - case ({PHASE0_2, PHASE1_2, PHASE2_2, PHASE3_2}) - 4'b1000: - begin - if(STEPPER2 == 2'b11) - begin - //if(TRACK2 != `FD_MAX_LEN) - if(TRACK2_NO != `FD_MAX_TRACK_NO) - begin - TRACK2 <= TRACK2_UP; - TRACK2_NO <= TRACK2_NO+1; - STEPPER2 <= 2'b00; - end - end - else - if(STEPPER2 == 2'b01) - begin - //if(TRACK2 != 17'h0) - if(TRACK2_NO != 8'd0) - begin - TRACK2 <= TRACK2_DOWN; - TRACK2_NO <= TRACK2_NO-1; - STEPPER2 <= 2'b00; - end - end - end - 4'b0100: - begin - if(STEPPER2 == 2'b00) - begin - //if(TRACK2 != `FD_MAX_LEN) - if(TRACK2_NO != `FD_MAX_TRACK_NO) - begin - TRACK2 <= TRACK2_UP; - TRACK2_NO <= TRACK2_NO+1; - STEPPER2 <= 2'b01; - end - end - else - if(STEPPER2 == 2'b10) - begin - //if(TRACK2 != 17'h0) - if(TRACK2_NO != 8'd0) - begin - TRACK2 <= TRACK2_DOWN; - TRACK2_NO <= TRACK2_NO-1; - STEPPER2 <= 2'b01; - end - end - end - 4'b0010: - begin - if(STEPPER2 == 2'b01) - begin - //if(TRACK2 != `FD_MAX_LEN) - if(TRACK2_NO != `FD_MAX_TRACK_NO) - begin - TRACK2 <= TRACK2_UP; - TRACK2_NO <= TRACK2_NO+1; - STEPPER2 <= 2'b10; - end - end - else - if(STEPPER2 == 2'b11) - begin - //if(TRACK2 != 17'h0) - if(TRACK2_NO != 8'd0) - begin - TRACK2 <= TRACK2_DOWN; - TRACK2_NO <= TRACK2_NO-1; - STEPPER2 <= 2'b10; - end - end - end - 4'b0001: - begin - if(STEPPER2 == 2'b10) - begin - //if(TRACK2 != `FD_MAX_LEN) - if(TRACK2_NO != `FD_MAX_TRACK_NO) - begin - TRACK2 <= TRACK2_UP; - TRACK2_NO <= TRACK2_NO+1; - STEPPER2 <= 2'b11; - end - end - else - if(STEPPER2 == 2'b00) - begin - //if(TRACK2 != 17'h0) - if(TRACK2_NO != 8'd0) - begin - TRACK2 <= TRACK2_DOWN; - TRACK2_NO <= TRACK2_NO-1; - STEPPER2 <= 2'b11; - end - end - end - endcase - end - end -end - - - -reg [19:0] LATCHED_FDC_CNT_CT; -reg [7:0] LATCHED_FDC_CT; - - -always @(posedge FDC_CLK or negedge RESET_N) -begin - if(~RESET_N) - begin - LATCHED_FDC_CT <= 8'hFF; - //FDC_SIG_CLK <= 1'b0; - LATCHED_FDC_CNT_CT <= 20'hFFFFF; - end - else - begin - LATCHED_FDC_CT <= FDC_CT; - LATCHED_FDC_CNT_CT <= FDC_CNT_CT; - //FDC_SIG_CLK <= (LATCHED_FDC_CT!=FDC_CT); - end -end - -assign FDC_SIG = (FDC_CNT[7]|FDC_CNT_POLL[7]|FDC_CNT_DATA[7]|FDC_CNT_CT[19]|(LATCHED_FDC_CNT_CT==0)); - - -endmodule diff --git a/Computer_MiST/Laser310_MiST/rtl/mc6847_vga.v b/Computer_MiST/Laser310_MiST/rtl/mc6847_vga.v deleted file mode 100644 index 9b638ead..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/mc6847_vga.v +++ /dev/null @@ -1,199 +0,0 @@ -// LASER310 VZ200 -// mc6847 - -module MC6847_VGA( -PIX_CLK, -RESET_N, - -RD, -DD, -DA, - -AG, -AS, -EXT, -INV, -GM, -CSS, - -// vga -blank, -VGA_OUT_HSYNC, -VGA_OUT_VSYNC, -VGA_OUT_RED, -VGA_OUT_GREEN, -VGA_OUT_BLUE -); - -input PIX_CLK; -input RESET_N; - -output wire RD; -output wire [12:0] DA; // 8KB -input [7:0] DD; -input AG; -input AS; -input EXT; -input INV; -input CSS; -input [2:0] GM; -output wire blank; -output wire VGA_OUT_HSYNC; -output wire VGA_OUT_VSYNC; -output wire [7:0] VGA_OUT_RED; -output wire [7:0] VGA_OUT_GREEN; -output wire [7:0] VGA_OUT_BLUE; - - -reg LATCHED_AG; -reg LATCHED_AS; -reg LATCHED_EXT; -reg LATCHED_INV; -reg [2:0] LATCHED_GM; -reg LATCHED_CSS; - -wire pixel_clock; // generated from SYSTEM CLOCK -wire reset; // reset asserted when DCMs are NOT LOCKED - -wire [7:0] vga_red; // red video data -wire [7:0] vga_green; // green video data -wire [7:0] vga_blue; // blue video data - -// internal video timing signals -wire h_synch; // horizontal synch for VGA connector -wire v_synch; // vertical synch for VGA connector -//wire blank; // composite blanking -wire [10:0] pixel_count; // bit mapped pixel position within the line -wire [9:0] line_count; // bit mapped line number in a frame lines within the frame - -wire show_border; - -// text -wire [3:0] subchar_pixel; // pixel position within the character -wire [4:0] subchar_line; // identifies the line number within a character block -wire [6:0] char_column; // character number on the current line -wire [6:0] char_line; // line number on the screen - -// graph -wire [8:0] graph_pixel; // pixel number on the current line -wire [9:0] graph_line_2x; // line number on the screen -wire [9:0] graph_line_3x; // line number on the screen - -/* -wire [11:0] ROM_ADDRESS; -wire [7:0] ROM_DATA; -*/ - -assign reset = ~RESET_N; -assign pixel_clock = PIX_CLK; - -//assign vga_red = 8'hff; -//assign vga_green = 8'h7f; -//assign vga_blue = 8'h7f; - -// Character generator -/* -char_rom_4k_altera char_rom( - .address(ROM_ADDRESS), - .clock(pixel_clock), - .q(ROM_DATA) -); -*/ - -// 为了防止闪屏,再垂直回扫信号产生时,锁存模式信号。 - -always @ (posedge v_synch or negedge RESET_N) -begin - if(!RESET_N) - begin - LATCHED_AG <= 1'b0; - LATCHED_AS <= 1'b0; - LATCHED_EXT <= 1'b0; - LATCHED_INV <= 1'b0; - LATCHED_GM <= 3'b0; - LATCHED_CSS <= 1'b0; - end - else - begin - LATCHED_AG <= AG; - LATCHED_AS <= AS; - LATCHED_EXT <= EXT; - LATCHED_INV <= INV; - LATCHED_GM <= GM; - LATCHED_CSS <= CSS; - end -end - -// instantiate the character generator -PIXEL_DISPLAY PIXEL_DISPLAY( - .pixel_clock(pixel_clock), - .reset(reset), - .show_border(show_border), - // mode - .ag(LATCHED_AG), - .gm(LATCHED_GM), - .css(LATCHED_CSS), - // text - .char_column(char_column), - .char_line(char_line), - .subchar_line(subchar_line), - .subchar_pixel(subchar_pixel), - // graph - .graph_pixel(graph_pixel), - .graph_line_2x(graph_line_2x), - .graph_line_3x(graph_line_3x), - // vram - .vram_rd_enable(RD), - .vram_addr(DA), - .vram_data(DD), - // vga - .vga_red(vga_red), - .vga_green(vga_green), - .vga_blue(vga_blue) -); - -// instantiate the video timing generator -SVGA_TIMING_GENERATION SVGA_TIMING_GENERATION -( - pixel_clock, - reset, - h_synch, - v_synch, - blank, - pixel_count, - line_count, - - show_border, - - // text - subchar_pixel, - subchar_line, - char_column, - char_line, - - // graph - graph_pixel, - graph_line_2x, - graph_line_3x -); - -// instantiate the video output mux -VIDEO_OUT VIDEO_OUT -( - pixel_clock, - reset, - vga_red, - vga_green, - vga_blue, - h_synch, - v_synch, - blank, - - VGA_OUT_HSYNC, - VGA_OUT_VSYNC, - VGA_OUT_RED, - VGA_OUT_GREEN, - VGA_OUT_BLUE -); - -endmodule diff --git a/Computer_MiST/Laser310_MiST/rtl/pll.qip b/Computer_MiST/Laser310_MiST/rtl/pll.qip deleted file mode 100644 index 48665362..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/pll.qip +++ /dev/null @@ -1,4 +0,0 @@ -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.vhd"] -set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "pll.ppf"] diff --git a/Computer_MiST/Laser310_MiST/rtl/pll.vhd b/Computer_MiST/Laser310_MiST/rtl/pll.vhd deleted file mode 100644 index 7194c647..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/pll.vhd +++ /dev/null @@ -1,451 +0,0 @@ --- megafunction wizard: %ALTPLL% --- GENERATION: STANDARD --- VERSION: WM1.0 --- MODULE: altpll - --- ============================================================ --- File Name: pll.vhd --- Megafunction Name(s): --- altpll --- --- Simulation Library Files(s): --- altera_mf --- ============================================================ --- ************************************************************ --- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! --- --- 13.1.4 Build 182 03/12/2014 SJ Web Edition --- ************************************************************ - - ---Copyright (C) 1991-2014 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 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 - ); -END pll; - - -ARCHITECTURE SYN OF pll 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_VECTOR (1 DOWNTO 0); - SIGNAL sub_wire7_bv : BIT_VECTOR (0 DOWNTO 0); - SIGNAL sub_wire7 : 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; - width_clock : NATURAL - ); - PORT ( - areset : IN STD_LOGIC ; - clk : OUT STD_LOGIC_VECTOR (4 DOWNTO 0); - inclk : IN STD_LOGIC_VECTOR (1 DOWNTO 0) - ); - END COMPONENT; - -BEGIN - sub_wire7_bv(0 DOWNTO 0) <= "0"; - sub_wire7 <= To_stdlogicvector(sub_wire7_bv); - sub_wire4 <= sub_wire0(2); - sub_wire3 <= sub_wire0(0); - sub_wire2 <= sub_wire0(3); - sub_wire1 <= sub_wire0(1); - c1 <= sub_wire1; - c3 <= sub_wire2; - c0 <= sub_wire3; - c2 <= sub_wire4; - sub_wire5 <= inclk0; - sub_wire6 <= sub_wire7(0 DOWNTO 0) & sub_wire5; - - altpll_component : altpll - GENERIC MAP ( - bandwidth_type => "AUTO", - clk0_divide_by => 27, - clk0_duty_cycle => 50, - clk0_multiply_by => 50, - clk0_phase_shift => "0", - clk1_divide_by => 27, - clk1_duty_cycle => 50, - clk1_multiply_by => 25, - clk1_phase_shift => "0", - clk2_divide_by => 27, - clk2_duty_cycle => 50, - clk2_multiply_by => 10, - clk2_phase_shift => "0", - clk3_divide_by => 108, - clk3_duty_cycle => 50, - clk3_multiply_by => 25, - clk3_phase_shift => "0", - compensate_clock => "CLK0", - inclk0_input_frequency => 37037, - intended_device_family => "Cyclone III", - lpm_hint => "CBX_MODULE_PREFIX=pll", - 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_UNUSED", - 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", - width_clock => 5 - ) - PORT MAP ( - areset => areset, - inclk => sub_wire6, - clk => sub_wire0 - ); - - - -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 "27" --- Retrieval info: PRIVATE: DIV_FACTOR2 NUMERIC "27" --- Retrieval info: PRIVATE: DIV_FACTOR3 NUMERIC "108" --- 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 "50.000000" --- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE1 STRING "25.000000" --- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE2 STRING "10.000000" --- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE3 STRING "6.250000" --- 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 "0" --- 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 "ps" --- 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 "50" --- Retrieval info: PRIVATE: MULT_FACTOR1 NUMERIC "25" --- Retrieval info: PRIVATE: MULT_FACTOR2 NUMERIC "10" --- Retrieval info: PRIVATE: MULT_FACTOR3 NUMERIC "25" --- Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "1" --- Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "50.00000000" --- Retrieval info: PRIVATE: OUTPUT_FREQ1 STRING "25.00000000" --- Retrieval info: PRIVATE: OUTPUT_FREQ2 STRING "10.00000000" --- Retrieval info: PRIVATE: OUTPUT_FREQ3 STRING "6.25000000" --- 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 "0" --- 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 "deg" --- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT3 STRING "deg" --- Retrieval info: PRIVATE: PLL_ADVANCED_PARAM_CHECK STRING "0" --- Retrieval info: PRIVATE: PLL_ARESET_CHECK STRING "1" --- Retrieval info: PRIVATE: PLL_AUTOPLL_CHECK NUMERIC "1" --- Retrieval info: PRIVATE: PLL_ENHPLL_CHECK NUMERIC "0" --- Retrieval info: PRIVATE: PLL_FASTPLL_CHECK NUMERIC "0" --- Retrieval info: PRIVATE: PLL_FBMIMIC_CHECK STRING "0" --- Retrieval info: PRIVATE: PLL_LVDS_PLL_CHECK NUMERIC "0" --- Retrieval info: PRIVATE: PLL_PFDENA_CHECK STRING "0" --- Retrieval info: PRIVATE: PLL_TARGET_HARCOPY_CHECK NUMERIC "0" --- Retrieval info: PRIVATE: PRIMARY_CLK_COMBO STRING "inclk0" --- Retrieval info: PRIVATE: RECONFIG_FILE STRING "pll.mif" --- Retrieval info: PRIVATE: SACN_INPUTS_CHECK STRING "0" --- Retrieval info: PRIVATE: SCAN_FEATURE_ENABLED STRING "1" --- Retrieval info: PRIVATE: SELF_RESET_LOCK_LOSS STRING "0" --- Retrieval info: PRIVATE: SHORT_SCAN_RADIO STRING "0" --- Retrieval info: PRIVATE: SPREAD_FEATURE_ENABLED STRING "0" --- Retrieval info: PRIVATE: SPREAD_FREQ STRING "50.000" --- Retrieval info: PRIVATE: SPREAD_FREQ_UNIT STRING "KHz" --- Retrieval info: PRIVATE: SPREAD_PERCENT STRING "0.500" --- Retrieval info: PRIVATE: SPREAD_USE STRING "0" --- Retrieval info: PRIVATE: SRC_SYNCH_COMP_RADIO STRING "0" --- Retrieval info: PRIVATE: STICKY_CLK0 STRING "1" --- Retrieval info: PRIVATE: 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 "50" --- Retrieval info: CONSTANT: CLK0_PHASE_SHIFT STRING "0" --- Retrieval info: CONSTANT: CLK1_DIVIDE_BY NUMERIC "27" --- Retrieval info: CONSTANT: CLK1_DUTY_CYCLE NUMERIC "50" --- Retrieval info: CONSTANT: CLK1_MULTIPLY_BY NUMERIC "25" --- Retrieval info: CONSTANT: CLK1_PHASE_SHIFT STRING "0" --- Retrieval info: CONSTANT: CLK2_DIVIDE_BY NUMERIC "27" --- Retrieval info: CONSTANT: CLK2_DUTY_CYCLE NUMERIC "50" --- Retrieval info: CONSTANT: CLK2_MULTIPLY_BY NUMERIC "10" --- Retrieval info: CONSTANT: CLK2_PHASE_SHIFT STRING "0" --- Retrieval info: CONSTANT: CLK3_DIVIDE_BY NUMERIC "108" --- Retrieval info: CONSTANT: CLK3_DUTY_CYCLE NUMERIC "50" --- Retrieval info: CONSTANT: CLK3_MULTIPLY_BY NUMERIC "25" --- 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_UNUSED" --- 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: 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: 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: GEN_FILE: TYPE_NORMAL pll.vhd TRUE --- Retrieval info: GEN_FILE: TYPE_NORMAL pll.ppf TRUE --- Retrieval info: GEN_FILE: TYPE_NORMAL pll.inc FALSE --- Retrieval info: GEN_FILE: TYPE_NORMAL pll.cmp FALSE --- Retrieval info: GEN_FILE: TYPE_NORMAL pll.bsf FALSE --- Retrieval info: GEN_FILE: TYPE_NORMAL pll_inst.vhd FALSE --- Retrieval info: LIB_FILE: altera_mf --- Retrieval info: CBX_MODULE_PREFIX: ON diff --git a/Computer_MiST/Laser310_MiST/rtl/reset_de.v b/Computer_MiST/Laser310_MiST/rtl/reset_de.v deleted file mode 100644 index fd26e271..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/reset_de.v +++ /dev/null @@ -1,59 +0,0 @@ -module RESET_DE( - CLK, // 50MHz - SYS_RESET_N, - RESET_N, // 50MHz/32/65536 - RESET_AHEAD_N // 提前恢复,可以接 FLASH_RESET_N -); - - -input CLK; -input SYS_RESET_N; -output RESET_N; -output RESET_AHEAD_N; - - -wire RESET_N; -wire RESET_AHEAD_N; - -reg [5:0] CLK_CNT; -reg [16:0] RESET_COUNT; - -wire RESET_COUNT_CLK; -wire RESET_DE_N; -wire RESET_AHEAD_DE_N; - -assign RESET_COUNT_CLK = CLK_CNT[5]; - -assign RESET_DE_N = RESET_COUNT[16]!=1'b0; -assign RESET_N = SYS_RESET_N && RESET_DE_N; - -assign RESET_AHEAD_DE_N = RESET_COUNT[16:15]!=2'b00; -assign RESET_AHEAD_N = SYS_RESET_N && RESET_AHEAD_DE_N; - -`ifdef SIMULATE -initial - begin - CLK_CNT = 6'b0; - end -`endif - -// 50MHz/32 = 1.5625MHz -always @ (posedge CLK) - CLK_CNT <= CLK_CNT+1; - -// 50MHz/32/65536 = 23.84HZ -always @ (posedge RESET_COUNT_CLK or negedge SYS_RESET_N) -begin - if(~SYS_RESET_N) - begin - RESET_COUNT <= 17'h00000; - end - else - begin - if(RESET_COUNT!=17'h10000) - RESET_COUNT <= RESET_COUNT+1; - - end -end - -endmodule diff --git a/Computer_MiST/Laser310_MiST/rtl/roms/boot_rom_6000.mif b/Computer_MiST/Laser310_MiST/rtl/roms/boot_rom_6000.mif deleted file mode 100644 index a60543fb..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/roms/boot_rom_6000.mif +++ /dev/null @@ -1,122 +0,0 @@ -DEPTH = 115; -WIDTH = 8; -ADDRESS_RADIX = HEX; -DATA_RADIX = HEX; -CONTENT -BEGIN -0000:AA; -0001:55; -0002:E7; -0003:18; -0004:AF; -0005:2A; -0006:00; -0007:C0; -0008:11; -0009:00; -000A:80; -000B:ED; -000C:52; -000D:30; -000E:63; -000F:3A; -0010:02; -0011:C0; -0012:FE; -0013:56; -0014:20; -0015:18; -0016:3A; -0017:03; -0018:C0; -0019:FE; -001A:5A; -001B:20; -001C:55; -001D:3A; -001E:04; -001F:C0; -0020:FE; -0021:46; -0022:20; -0023:4E; -0024:3A; -0025:05; -0026:C0; -0027:FE; -0028:20; -0029:20; -002A:47; -002B:C3; -002C:B7; -002D:17; -002E:FE; -002F:20; -0030:20; -0031:40; -0032:3A; -0033:03; -0034:C0; -0035:FE; -0036:20; -0037:20; -0038:39; -0039:3A; -003A:04; -003B:C0; -003C:FE; -003D:00; -003E:20; -003F:32; -0040:3A; -0041:05; -0042:C0; -0043:FE; -0044:00; -0045:20; -0046:2B; -0047:3A; -0048:17; -0049:C0; -004A:FE; -004B:F0; -004C:28; -004D:07; -004E:3A; -004F:17; -0050:C0; -0051:FE; -0052:F1; -0053:20; -0054:1D; -0055:AF; -0056:2A; -0057:00; -0058:C0; -0059:11; -005A:18; -005B:00; -005C:ED; -005D:52; -005E:44; -005F:4D; -0060:21; -0061:1A; -0062:C0; -0063:ED; -0064:5B; -0065:18; -0066:C0; -0067:ED; -0068:B0; -0069:AF; -006A:3E; -006B:00; -006C:D3; -006D:70; -006E:2A; -006F:18; -0070:C0; -0071:E9; -0072:76; -END; diff --git a/Computer_MiST/Laser310_MiST/rtl/roms/cass_ram.mif b/Computer_MiST/Laser310_MiST/rtl/roms/cass_ram.mif deleted file mode 100644 index 1a8f22b4..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/roms/cass_ram.mif +++ /dev/null @@ -1,1313 +0,0 @@ -DEPTH = 1306; -WIDTH = 8; -ADDRESS_RADIX = HEX; -DATA_RADIX = HEX; -CONTENT -BEGIN -0000:17; -0001:05; -0002:8F; -0003:80; -0004:80; -0005:80; -0006:80; -0007:80; -0008:80; -0009:80; -000A:80; -000B:80; -000C:80; -000D:80; -000E:80; -000F:80; -0010:80; -0011:80; -0012:80; -0013:80; -0014:80; -0015:80; -0016:80; -0017:80; -0018:80; -0019:80; -001A:80; -001B:80; -001C:80; -001D:80; -001E:80; -001F:80; -0020:80; -0021:80; -0022:80; -0023:80; -0024:80; -0025:80; -0026:80; -0027:80; -0028:80; -0029:80; -002A:80; -002B:80; -002C:80; -002D:80; -002E:80; -002F:80; -0030:80; -0031:80; -0032:80; -0033:80; -0034:80; -0035:80; -0036:80; -0037:80; -0038:80; -0039:80; -003A:80; -003B:80; -003C:80; -003D:80; -003E:80; -003F:80; -0040:80; -0041:80; -0042:80; -0043:80; -0044:80; -0045:80; -0046:80; -0047:80; -0048:80; -0049:80; -004A:80; -004B:80; -004C:80; -004D:80; -004E:80; -004F:80; -0050:80; -0051:80; -0052:80; -0053:80; -0054:80; -0055:80; -0056:80; -0057:80; -0058:80; -0059:80; -005A:80; -005B:80; -005C:80; -005D:80; -005E:80; -005F:80; -0060:80; -0061:80; -0062:80; -0063:80; -0064:80; -0065:80; -0066:80; -0067:80; -0068:80; -0069:80; -006A:80; -006B:80; -006C:80; -006D:80; -006E:80; -006F:80; -0070:80; -0071:80; -0072:80; -0073:80; -0074:80; -0075:80; -0076:80; -0077:80; -0078:80; -0079:80; -007A:80; -007B:80; -007C:80; -007D:80; -007E:80; -007F:80; -0080:80; -0081:80; -0082:80; -0083:FE; -0084:FE; -0085:FE; -0086:FE; -0087:FE; -0088:F1; -0089:50; -008A:31; -008B:2E; -008C:35; -008D:43; -008E:00; -008F:04; -0090:7B; -0091:75; -0092:7F; -0093:21; -0094:74; -0095:7F; -0096:11; -0097:A6; -0098:79; -0099:01; -009A:55; -009B:00; -009C:ED; -009D:B8; -009E:11; -009F:7D; -00A0:78; -00A1:01; -00A2:21; -00A3:00; -00A4:ED; -00A5:B8; -00A6:11; -00A7:9C; -00A8:7A; -00A9:01; -00AA:64; -00AB:00; -00AC:ED; -00AD:B8; -00AE:ED; -00AF:5B; -00B0:B1; -00B1:78; -00B2:01; -00B3:35; -00B4:01; -00B5:ED; -00B6:B8; -00B7:ED; -00B8:53; -00B9:9E; -00BA:79; -00BB:01; -00BC:58; -00BD:00; -00BE:ED; -00BF:B8; -00C0:ED; -00C1:53; -00C2:86; -00C3:79; -00C4:01; -00C5:7D; -00C6:00; -00C7:ED; -00C8:B8; -00C9:ED; -00CA:53; -00CB:A7; -00CC:79; -00CD:01; -00CE:DC; -00CF:00; -00D0:ED; -00D1:B8; -00D2:00; -00D3:ED; -00D4:53; -00D5:B1; -00D6:78; -00D7:13; -00D8:ED; -00D9:53; -00DA:5E; -00DB:78; -00DC:21; -00DD:CE; -00DE:FF; -00DF:19; -00E0:22; -00E1:A0; -00E2:78; -00E3:2B; -00E4:F9; -00E5:21; -00E6:54; -00E7:7A; -00E8:22; -00E9:D1; -00EA:79; -00EB:21; -00EC:6B; -00ED:79; -00EE:22; -00EF:BC; -00F0:79; -00F1:3E; -00F2:C3; -00F3:32; -00F4:BB; -00F5:79; -00F6:21; -00F7:E9; -00F8:7A; -00F9:22; -00FA:A4; -00FB:78; -00FC:CD; -00FD:4A; -00FE:1B; -00FF:21; -0100:86; -0101:7B; -0102:CD; -0103:A7; -0104:28; -0105:CD; -0106:F9; -0107:20; -0108:21; -0109:94; -010A:7B; -010B:CD; -010C:A7; -010D:28; -010E:CD; -010F:F9; -0110:20; -0111:C3; -0112:19; -0113:1A; -0114:00; -0115:4C; -0116:41; -0117:53; -0118:45; -0119:52; -011A:20; -011B:32; -011C:30; -011D:30; -011E:2D; -011F:33; -0120:31; -0121:30; -0122:00; -0123:42; -0124:41; -0125:53; -0126:49; -0127:43; -0128:20; -0129:20; -012A:50; -012B:31; -012C:2E; -012D:35; -012E:43; -012F:20; -0130:20; -0131:20; -0132:20; -0133:20; -0134:20; -0135:20; -0136:20; -0137:20; -0138:20; -0139:20; -013A:20; -013B:20; -013C:20; -013D:20; -013E:20; -013F:20; -0140:20; -0141:20; -0142:20; -0143:00; -0144:20; -0145:55; -0146:BD; -0147:07; -0148:B7; -0149:33; -014A:52; -014B:4F; -014C:4E; -014D:07; -014E:A7; -014F:33; -0150:52; -0151:4F; -0152:46; -0153:46; -0154:07; -0155:A8; -0156:23; -0157:45; -0158:4C; -0159:07; -015A:B6; -015B:21; -015C:59; -015D:45; -015E:07; -015F:AE; -0160:32; -0161:50; -0162:45; -0163:45; -0164:44; -0165:07; -0166:14; -0167:31; -0168:45; -0169:4E; -016A:55; -016B:4D; -016C:07; -016D:15; -016E:2F; -016F:53; -0170:54; -0171:07; -0172:C5; -0173:2C; -0174:45; -0175:52; -0176:47; -0177:45; -0178:07; -0179:17; -017A:2B; -017B:4F; -017C:4D; -017D:45; -017E:4D; -017F:07; -0180:1C; -0181:22; -0182:41; -0183:4C; -0184:4C; -0185:07; -0186:18; -0187:32; -0188:41; -0189:56; -018A:45; -018B:07; -018C:1D; -018D:31; -018E:53; -018F:54; -0190:07; -0191:19; -0192:2F; -0193:4F; -0194:50; -0195:07; -0196:1A; -0197:31; -0198:45; -0199:53; -019A:55; -019B:4D; -019C:45; -019D:07; -019E:1B; -019F:2F; -01A0:4C; -01A1:4F; -01A2:41; -01A3:44; -01A4:07; -01A5:16; -01A6:2E; -01A7:4E; -01A8:45; -01A9:52; -01AA:52; -01AB:07; -01AC:85; -01AD:23; -01AE:45; -01AF:46; -01B0:44; -01B1:42; -01B2:4C; -01B3:07; -01B4:9B; -01B5:23; -01B6:45; -01B7:46; -01B8:D8; -01B9:07; -01BA:99; -01BB:23; -01BC:45; -01BD:46; -01BE:53; -01BF:54; -01C0:52; -01C1:07; -01C2:AA; -01C3:23; -01C4:45; -01C5:46; -01C6:53; -01C7:4E; -01C8:47; -01C9:07; -01CA:9A; -01CB:2E; -01CC:4E; -01CD:07; -01CE:A1; -01CF:24; -01D0:52; -01D1:52; -01D2:D3; -01D3:07; -01D4:A9; -01D5:31; -01D6:D2; -01D7:4F; -01D8:4D; -01D9:07; -01DA:86; -01DB:2C; -01DC:45; -01DD:4D; -01DE:07; -01DF:C8; -01E0:25; -01E1:52; -01E2:45; -01E3:07; -01E4:DA; -01E5:2B; -01E6:41; -01E7:44; -01E8:07; -01E9:BE; -01EA:35; -01EB:41; -01EC:52; -01ED:50; -01EE:54; -01EF:52; -01F0:07; -01F1:C0; -01F2:32; -01F3:54; -01F4:52; -01F5:49; -01F6:4E; -01F7:47; -01F8:24; -01F9:07; -01FA:C4; -01FB:2F; -01FC:4F; -01FD:53; -01FE:07; -01FF:DC; -0200:24; -0201:52; -0202:52; -0203:07; -0204:C3; -0205:24; -0206:52; -0207:4C; -0208:07; -0209:C2; -020A:25; -020B:49; -020C:58; -020D:07; -020E:F2; -020F:22; -0210:44; -0211:42; -0212:4C; -0213:07; -0214:F1; -0215:22; -0216:D8; -0217:07; -0218:EF; -0219:22; -021A:53; -021B:4E; -021C:47; -021D:07; -021E:F0; -021F:3D; -0220:32; -0221:F2; -0222:78; -0223:3E; -0224:22; -0225:93; -0226:20; -0227:06; -0228:CD; -0229:6B; -022A:79; -022B:CA; -022C:19; -022D:1A; -022E:D5; -022F:E5; -0230:2A; -0231:EE; -0232:78; -0233:7E; -0234:B7; -0235:20; -0236:04; -0237:01; -0238:04; -0239:00; -023A:09; -023B:CD; -023C:5D; -023D:78; -023E:20; -023F:2D; -0240:FE; -0241:7F; -0242:2A; -0243:AA; -0244:79; -0245:45; -0246:21; -0247:9A; -0248:78; -0249:70; -024A:2A; -024B:6F; -024C:79; -024D:22; -024E:EA; -024F:78; -0250:EB; -0251:22; -0252:E6; -0253:78; -0254:C1; -0255:C1; -0256:C1; -0257:D2; -0258:5B; -0259:1D; -025A:11; -025B:1E; -025C:1D; -025D:D5; -025E:EB; -025F:2A; -0260:86; -0261:79; -0262:D6; -0263:14; -0264:4F; -0265:06; -0266:00; -0267:09; -0268:4E; -0269:09; -026A:E5; -026B:C3; -026C:77; -026D:1D; -026E:2A; -026F:9A; -0270:78; -0271:22; -0272:AA; -0273:79; -0274:2A; -0275:EA; -0276:78; -0277:22; -0278:6F; -0279:79; -027A:2A; -027B:EE; -027C:78; -027D:22; -027E:71; -027F:79; -0280:2A; -0281:F0; -0282:78; -0283:7C; -0284:B5; -0285:EB; -0286:21; -0287:2F; -0288:79; -0289:28; -028A:0C; -028B:A6; -028C:20; -028D:09; -028E:35; -028F:EB; -0290:2B; -0291:C1; -0292:C1; -0293:C1; -0294:C3; -0295:1E; -0296:1D; -0297:AF; -0298:77; -0299:E1; -029A:D1; -029B:C9; -029C:0A; -029D:21; -029E:81; -029F:89; -02A0:B3; -02A1:BC; -02A2:C9; -02A3:E0; -02A4:ED; -02A5:EE; -02A6:CD; -02A7:5A; -02A8:1E; -02A9:E5; -02AA:21; -02AB:D0; -02AC:79; -02AD:7B; -02AE:B2; -02AF:20; -02B0:05; -02B1:3E; -02B2:C9; -02B3:77; -02B4:E1; -02B5:C9; -02B6:7B; -02B7:32; -02B8:56; -02B9:7A; -02BA:36; -02BB:C3; -02BC:E1; -02BD:C9; -02BE:11; -02BF:0A; -02C0:00; -02C1:D5; -02C2:28; -02C3:12; -02C4:FE; -02C5:2C; -02C6:28; -02C7:08; -02C8:CD; -02C9:5A; -02CA:1E; -02CB:EB; -02CC:E3; -02CD:EB; -02CE:28; -02CF:06; -02D0:D7; -02D1:28; -02D2:03; -02D3:CD; -02D4:5A; -02D5:1E; -02D6:E1; -02D7:D5; -02D8:EB; -02D9:2A; -02DA:A4; -02DB:78; -02DC:44; -02DD:4D; -02DE:7E; -02DF:23; -02E0:B6; -02E1:CA; -02E2:19; -02E3:1A; -02E4:23; -02E5:73; -02E6:23; -02E7:72; -02E8:E1; -02E9:E5; -02EA:19; -02EB:EB; -02EC:60; -02ED:69; -02EE:7E; -02EF:23; -02F0:66; -02F1:6F; -02F2:18; -02F3:E8; -02F4:2A; -02F5:FD; -02F6:78; -02F7:E5; -02F8:23; -02F9:23; -02FA:CD; -02FB:07; -02FC:1F; -02FD:23; -02FE:5E; -02FF:23; -0300:56; -0301:DF; -0302:30; -0303:07; -0304:24; -0305:DF; -0306:38; -0307:05; -0308:EB; -0309:18; -030A:F3; -030B:7A; -030C:B3; -030D:C2; -030E:4A; -030F:1E; -0310:23; -0311:22; -0312:F9; -0313:78; -0314:E1; -0315:2B; -0316:2B; -0317:74; -0318:22; -0319:A4; -031A:78; -031B:E5; -031C:C3; -031D:E8; -031E:1A; -031F:CD; -0320:77; -0321:7A; -0322:CD; -0323:7D; -0324:7A; -0325:C3; -0326:56; -0327:36; -0328:28; -0329:07; -032A:CF; -032B:30; -032C:2A; -032D:A4; -032E:78; -032F:18; -0330:05; -0331:2A; -0332:F9; -0333:78; -0334:2B; -0335:2B; -0336:E5; -0337:ED; -0338:5B; -0339:53; -033A:79; -033B:7A; -033C:B7; -033D:CA; -033E:97; -033F:19; -0340:AF; -0341:32; -0342:54; -0343:79; -0344:DF; -0345:D2; -0346:7A; -0347:19; -0348:D5; -0349:E5; -034A:2A; -034B:A1; -034C:79; -034D:22; -034E:F9; -034F:78; -0350:C3; -0351:D9; -0352:2B; -0353:CD; -0354:5A; -0355:1E; -0356:E5; -0357:21; -0358:90; -0359:08; -035A:E5; -035B:EB; -035C:E9; -035D:CD; -035E:02; -035F:2B; -0360:E5; -0361:CD; -0362:2C; -0363:1B; -0364:0B; -0365:ED; -0366:43; -0367:FF; -0368:78; -0369:E1; -036A:C9; -036B:D9; -036C:16; -036D:FF; -036E:CD; -036F:36; -0370:19; -0371:F9; -0372:22; -0373:E8; -0374:78; -0375:FE; -0376:91; -0377:C2; -0378:EA; -0379:1E; -037A:C1; -037B:21; -037C:1E; -037D:1D; -037E:E3; -037F:D9; -0380:C3; -0381:C2; -0382:1E; -0383:E5; -0384:2A; -0385:71; -0386:79; -0387:22; -0388:EE; -0389:78; -038A:E1; -038B:11; -038C:2F; -038D:79; -038E:C3; -038F:B2; -0390:1F; -0391:18; -0392:47; -0393:F3; -0394:23; -0395:EB; -0396:2A; -0397:F9; -0398:78; -0399:E5; -039A:2A; -039B:A4; -039C:78; -039D:E5; -039E:01; -039F:04; -03A0:7B; -03A1:ED; -03A2:42; -03A3:38; -03A4:06; -03A5:FE; -03A6:42; -03A7:28; -03A8:21; -03A9:FE; -03AA:41; -03AB:C2; -03AC:97; -03AD:19; -03AE:E1; -03AF:E5; -03B0:22; -03B1:FC; -03B2:7A; -03B3:21; -03B4:E9; -03B5:7A; -03B6:22; -03B7:A4; -03B8:78; -03B9:0E; -03BA:0E; -03BB:EB; -03BC:CD; -03BD:AC; -03BE:34; -03BF:EB; -03C0:E1; -03C1:22; -03C2:A4; -03C3:78; -03C4:E1; -03C5:22; -03C6:F9; -03C7:78; -03C8:EB; -03C9:C9; -03CA:E1; -03CB:E5; -03CC:2B; -03CD:22; -03CE:F9; -03CF:78; -03D0:21; -03D1:04; -03D2:7B; -03D3:22; -03D4:A4; -03D5:78; -03D6:0E; -03D7:F1; -03D8:18; -03D9:E1; -03DA:CA; -03DB:A0; -03DC:24; -03DD:CD; -03DE:77; -03DF:7A; -03E0:CD; -03E1:5A; -03E2:1E; -03E3:21; -03E4:E9; -03E5:7A; -03E6:7A; -03E7:B3; -03E8:20; -03E9:10; -03EA:ED; -03EB:5B; -03EC:A4; -03ED:78; -03EE:E5; -03EF:D5; -03F0:2B; -03F1:77; -03F2:23; -03F3:22; -03F4:A4; -03F5:78; -03F6:E5; -03F7:C3; -03F8:D9; -03F9:2B; -03FA:21; -03FB:03; -03FC:7B; -03FD:DF; -03FE:D2; -03FF:4A; -0400:1E; -0401:21; -0402:CE; -0403:FF; -0404:39; -0405:DF; -0406:DA; -0407:4A; -0408:1E; -0409:D5; -040A:CD; -040B:7D; -040C:7A; -040D:E1; -040E:DF; -040F:D2; -0410:7A; -0411:19; -0412:E5; -0413:D5; -0414:E5; -0415:21; -0416:39; -0417:7A; -0418:11; -0419:E9; -041A:7A; -041B:01; -041C:1B; -041D:00; -041E:ED; -041F:B0; -0420:2A; -0421:A1; -0422:79; -0423:22; -0424:F9; -0425:78; -0426:E1; -0427:AF; -0428:18; -0429:C6; -042A:F6; -042B:7A; -042C:FF; -042D:FF; -042E:43; -042F:41; -0430:4C; -0431:4C; -0432:33; -0433:31; -0434:34; -0435:38; -0436:33; -0437:3A; -0438:8E; -0439:00; -043A:00; -043B:00; -043C:21; -043D:E9; -043E:7A; -043F:22; -0440:A4; -0441:78; -0442:C9; -0443:00; -0444:00; -0445:D9; -0446:06; -0447:01; -0448:11; -0449:00; -044A:06; -044B:C5; -044C:D5; -044D:CD; -044E:F4; -044F:2E; -0450:FE; -0451:2E; -0452:28; -0453:0B; -0454:D1; -0455:1B; -0456:7A; -0457:B3; -0458:20; -0459:F2; -045A:C1; -045B:10; -045C:EB; -045D:D9; -045E:C9; -045F:00; -0460:00; -0461:00; -0462:C9; -0463:32; -0464:D0; -0465:79; -0466:D9; -0467:C9; -0468:11; -0469:32; -046A:00; -046B:C3; -046C:83; -046D:1E; -046E:E5; -046F:2A; -0470:F9; -0471:78; -0472:E5; -0473:ED; -0474:5B; -0475:A4; -0476:78; -0477:ED; -0478:52; -0479:23; -047A:44; -047B:4D; -047C:21; -047D:CD; -047E:FF; -047F:39; -0480:22; -0481:A1; -0482:79; -0483:D1; -0484:EB; -0485:ED; -0486:B8; -0487:13; -0488:ED; -0489:53; -048A:53; -048B:79; -048C:E1; -048D:C9; -048E:11; -048F:00; -0490:00; -0491:01; -0492:DB; -0493:00; -0494:D7; -0495:EB; -0496:D6; -0497:21; -0498:ED; -0499:B1; -049A:C0; -049B:D5; -049C:13; -049D:1A; -049E:BE; -049F:28; -04A0:04; -04A1:D1; -04A2:1A; -04A3:18; -04A4:F1; -04A5:23; -04A6:7E; -04A7:FE; -04A8:07; -04A9:20; -04AA:F1; -04AB:23; -04AC:7E; -04AD:C1; -04AE:C9; -04AF:C9; -04B0:00; -04B1:00; -04B2:D7; -04B3:CF; -04B4:28; -04B5:CD; -04B6:02; -04B7:2B; -04B8:E5; -04B9:CD; -04BA:2C; -04BB:1B; -04BC:D2; -04BD:D9; -04BE:1E; -04BF:60; -04C0:69; -04C1:CD; -04C2:9A; -04C3:0A; -04C4:E1; -04C5:C3; -04C6:2F; -04C7:25; -04C8:32; -04C9:2F; -04CA:79; -04CB:C9; -04CC:00; -04CD:00; -04CE:00; -04CF:00; -04D0:E5; -04D1:D7; -04D2:21; -04D3:FF; -04D4:00; -04D5:FE; -04D6:30; -04D7:20; -04D8:03; -04D9:2A; -04DA:2F; -04DB:79; -04DC:22; -04DD:F2; -04DE:78; -04DF:E1; -04E0:C3; -04E1:71; -04E2:1F; -04E3:00; -04E4:00; -04E5:C3; -04E6:F7; -04E7:1D; -04E8:C3; -04E9:F9; -04EA:1D; -04EB:C3; -04EC:F4; -04ED:1F; -04EE:C3; -04EF:00; -04F0:1E; -04F1:CD; -04F2:5D; -04F3:78; -04F4:C2; -04F5:97; -04F6:19; -04F7:EB; -04F8:18; -04F9:06; -04FA:C3; -04FB:7D; -04FC:B4; -04FD:C9; -04FE:00; -04FF:00; -0500:C3; -0501:CB; -0502:24; -0503:C3; -0504:57; -0505:DE; -0506:00; -0507:00; -0508:00; -0509:00; -050A:00; -050B:00; -050C:00; -050D:00; -050E:00; -050F:00; -0510:00; -0511:00; -0512:00; -0513:00; -0514:00; -0515:00; -0516:00; -0517:00; -0518:00; -0519:00; -END; diff --git a/Computer_MiST/Laser310_MiST/rtl/roms/charrom.mif b/Computer_MiST/Laser310_MiST/rtl/roms/charrom.mif deleted file mode 100644 index e5c8c283..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/roms/charrom.mif +++ /dev/null @@ -1,3079 +0,0 @@ -DEPTH = 3072; -WIDTH = 8; -ADDRESS_RADIX = HEX; -DATA_RADIX = HEX; -CONTENT -BEGIN -0000:00; -0001:1C; -0002:22; -0003:20; -0004:2C; -0005:32; -0006:32; -0007:1C; -0008:00; -0009:00; -000A:00; -000B:00; -000C:00; -000D:08; -000E:14; -000F:22; -0010:22; -0011:3E; -0012:22; -0013:22; -0014:00; -0015:00; -0016:00; -0017:00; -0018:00; -0019:1E; -001A:24; -001B:24; -001C:1C; -001D:24; -001E:24; -001F:1E; -0020:00; -0021:00; -0022:00; -0023:00; -0024:00; -0025:1C; -0026:22; -0027:02; -0028:02; -0029:02; -002A:22; -002B:1C; -002C:00; -002D:00; -002E:00; -002F:00; -0030:00; -0031:1E; -0032:24; -0033:24; -0034:24; -0035:24; -0036:24; -0037:1E; -0038:00; -0039:00; -003A:00; -003B:00; -003C:00; -003D:3E; -003E:02; -003F:02; -0040:0E; -0041:02; -0042:02; -0043:3E; -0044:00; -0045:00; -0046:00; -0047:00; -0048:00; -0049:3E; -004A:02; -004B:02; -004C:1E; -004D:02; -004E:02; -004F:02; -0050:00; -0051:00; -0052:00; -0053:00; -0054:00; -0055:3C; -0056:02; -0057:02; -0058:32; -0059:22; -005A:22; -005B:3C; -005C:00; -005D:00; -005E:00; -005F:00; -0060:00; -0061:22; -0062:22; -0063:22; -0064:3E; -0065:22; -0066:22; -0067:22; -0068:00; -0069:00; -006A:00; -006B:00; -006C:00; -006D:1C; -006E:08; -006F:08; -0070:08; -0071:08; -0072:08; -0073:1C; -0074:00; -0075:00; -0076:00; -0077:00; -0078:00; -0079:20; -007A:20; -007B:20; -007C:20; -007D:22; -007E:22; -007F:1C; -0080:00; -0081:00; -0082:00; -0083:00; -0084:00; -0085:22; -0086:12; -0087:0A; -0088:06; -0089:0A; -008A:12; -008B:22; -008C:00; -008D:00; -008E:00; -008F:00; -0090:00; -0091:02; -0092:02; -0093:02; -0094:02; -0095:02; -0096:02; -0097:3E; -0098:00; -0099:00; -009A:00; -009B:00; -009C:00; -009D:22; -009E:36; -009F:3E; -00A0:2A; -00A1:22; -00A2:22; -00A3:22; -00A4:00; -00A5:00; -00A6:00; -00A7:00; -00A8:00; -00A9:22; -00AA:22; -00AB:26; -00AC:2A; -00AD:32; -00AE:22; -00AF:22; -00B0:00; -00B1:00; -00B2:00; -00B3:00; -00B4:00; -00B5:3E; -00B6:22; -00B7:22; -00B8:22; -00B9:22; -00BA:22; -00BB:3E; -00BC:00; -00BD:00; -00BE:00; -00BF:00; -00C0:00; -00C1:1E; -00C2:22; -00C3:22; -00C4:1E; -00C5:02; -00C6:02; -00C7:02; -00C8:00; -00C9:00; -00CA:00; -00CB:00; -00CC:00; -00CD:1C; -00CE:22; -00CF:22; -00D0:22; -00D1:2A; -00D2:12; -00D3:2C; -00D4:00; -00D5:00; -00D6:00; -00D7:00; -00D8:00; -00D9:1E; -00DA:22; -00DB:22; -00DC:1E; -00DD:0A; -00DE:12; -00DF:22; -00E0:00; -00E1:00; -00E2:00; -00E3:00; -00E4:00; -00E5:1C; -00E6:22; -00E7:04; -00E8:08; -00E9:10; -00EA:22; -00EB:1C; -00EC:00; -00ED:00; -00EE:00; -00EF:00; -00F0:00; -00F1:3E; -00F2:08; -00F3:08; -00F4:08; -00F5:08; -00F6:08; -00F7:08; -00F8:00; -00F9:00; -00FA:00; -00FB:00; -00FC:00; -00FD:22; -00FE:22; -00FF:22; -0100:22; -0101:22; -0102:22; -0103:1C; -0104:00; -0105:00; -0106:00; -0107:00; -0108:00; -0109:22; -010A:22; -010B:22; -010C:14; -010D:14; -010E:08; -010F:08; -0110:00; -0111:00; -0112:00; -0113:00; -0114:00; -0115:22; -0116:22; -0117:22; -0118:2A; -0119:3E; -011A:36; -011B:22; -011C:00; -011D:00; -011E:00; -011F:00; -0120:00; -0121:22; -0122:22; -0123:14; -0124:08; -0125:14; -0126:22; -0127:22; -0128:00; -0129:00; -012A:00; -012B:00; -012C:00; -012D:22; -012E:22; -012F:14; -0130:08; -0131:08; -0132:08; -0133:08; -0134:00; -0135:00; -0136:00; -0137:00; -0138:00; -0139:3E; -013A:20; -013B:10; -013C:08; -013D:04; -013E:02; -013F:3E; -0140:00; -0141:00; -0142:00; -0143:00; -0144:00; -0145:1C; -0146:04; -0147:04; -0148:04; -0149:04; -014A:04; -014B:1C; -014C:00; -014D:00; -014E:00; -014F:00; -0150:00; -0151:00; -0152:02; -0153:04; -0154:08; -0155:10; -0156:20; -0157:00; -0158:00; -0159:00; -015A:00; -015B:00; -015C:00; -015D:1C; -015E:10; -015F:10; -0160:10; -0161:10; -0162:10; -0163:1C; -0164:00; -0165:00; -0166:00; -0167:00; -0168:00; -0169:08; -016A:1C; -016B:2A; -016C:08; -016D:08; -016E:08; -016F:08; -0170:00; -0171:00; -0172:00; -0173:00; -0174:00; -0175:00; -0176:08; -0177:04; -0178:3E; -0179:04; -017A:08; -017B:00; -017C:00; -017D:00; -017E:00; -017F:00; -0180:00; -0181:00; -0182:00; -0183:00; -0184:00; -0185:00; -0186:00; -0187:00; -0188:00; -0189:00; -018A:00; -018B:00; -018C:00; -018D:08; -018E:08; -018F:08; -0190:08; -0191:08; -0192:00; -0193:08; -0194:00; -0195:00; -0196:00; -0197:00; -0198:00; -0199:14; -019A:14; -019B:00; -019C:00; -019D:00; -019E:00; -019F:00; -01A0:00; -01A1:00; -01A2:00; -01A3:00; -01A4:00; -01A5:14; -01A6:14; -01A7:3E; -01A8:14; -01A9:3E; -01AA:14; -01AB:14; -01AC:00; -01AD:00; -01AE:00; -01AF:00; -01B0:00; -01B1:08; -01B2:3C; -01B3:02; -01B4:1C; -01B5:20; -01B6:1E; -01B7:08; -01B8:00; -01B9:00; -01BA:00; -01BB:00; -01BC:00; -01BD:26; -01BE:26; -01BF:10; -01C0:08; -01C1:04; -01C2:32; -01C3:32; -01C4:00; -01C5:00; -01C6:00; -01C7:00; -01C8:00; -01C9:04; -01CA:0A; -01CB:0A; -01CC:04; -01CD:2A; -01CE:12; -01CF:2C; -01D0:00; -01D1:00; -01D2:00; -01D3:00; -01D4:00; -01D5:08; -01D6:08; -01D7:00; -01D8:00; -01D9:00; -01DA:00; -01DB:00; -01DC:00; -01DD:00; -01DE:00; -01DF:00; -01E0:00; -01E1:10; -01E2:08; -01E3:04; -01E4:04; -01E5:04; -01E6:08; -01E7:10; -01E8:00; -01E9:00; -01EA:00; -01EB:00; -01EC:00; -01ED:04; -01EE:08; -01EF:10; -01F0:10; -01F1:10; -01F2:08; -01F3:04; -01F4:00; -01F5:00; -01F6:00; -01F7:00; -01F8:00; -01F9:00; -01FA:08; -01FB:1C; -01FC:3E; -01FD:1C; -01FE:08; -01FF:00; -0200:00; -0201:00; -0202:00; -0203:00; -0204:00; -0205:00; -0206:08; -0207:08; -0208:3E; -0209:08; -020A:08; -020B:00; -020C:00; -020D:00; -020E:00; -020F:00; -0210:00; -0211:00; -0212:00; -0213:00; -0214:00; -0215:0C; -0216:0C; -0217:08; -0218:04; -0219:00; -021A:00; -021B:00; -021C:00; -021D:00; -021E:00; -021F:00; -0220:3E; -0221:00; -0222:00; -0223:00; -0224:00; -0225:00; -0226:00; -0227:00; -0228:00; -0229:00; -022A:00; -022B:00; -022C:00; -022D:00; -022E:0C; -022F:0C; -0230:00; -0231:00; -0232:00; -0233:00; -0234:00; -0235:00; -0236:20; -0237:10; -0238:08; -0239:04; -023A:02; -023B:00; -023C:00; -023D:00; -023E:00; -023F:00; -0240:00; -0241:0C; -0242:12; -0243:12; -0244:12; -0245:12; -0246:12; -0247:0C; -0248:00; -0249:00; -024A:00; -024B:00; -024C:00; -024D:08; -024E:0C; -024F:08; -0250:08; -0251:08; -0252:08; -0253:1C; -0254:00; -0255:00; -0256:00; -0257:00; -0258:00; -0259:1C; -025A:22; -025B:20; -025C:1C; -025D:02; -025E:02; -025F:3E; -0260:00; -0261:00; -0262:00; -0263:00; -0264:00; -0265:1C; -0266:22; -0267:20; -0268:1C; -0269:20; -026A:22; -026B:1C; -026C:00; -026D:00; -026E:00; -026F:00; -0270:00; -0271:10; -0272:18; -0273:14; -0274:3E; -0275:10; -0276:10; -0277:10; -0278:00; -0279:00; -027A:00; -027B:00; -027C:00; -027D:3E; -027E:02; -027F:1E; -0280:20; -0281:20; -0282:22; -0283:1C; -0284:00; -0285:00; -0286:00; -0287:00; -0288:00; -0289:1C; -028A:02; -028B:02; -028C:1E; -028D:22; -028E:22; -028F:1C; -0290:00; -0291:00; -0292:00; -0293:00; -0294:00; -0295:3E; -0296:20; -0297:10; -0298:08; -0299:04; -029A:02; -029B:02; -029C:00; -029D:00; -029E:00; -029F:00; -02A0:00; -02A1:1C; -02A2:22; -02A3:22; -02A4:1C; -02A5:22; -02A6:22; -02A7:1C; -02A8:00; -02A9:00; -02AA:00; -02AB:00; -02AC:00; -02AD:1C; -02AE:22; -02AF:22; -02B0:3C; -02B1:20; -02B2:20; -02B3:1C; -02B4:00; -02B5:00; -02B6:00; -02B7:00; -02B8:00; -02B9:00; -02BA:0C; -02BB:0C; -02BC:00; -02BD:0C; -02BE:0C; -02BF:00; -02C0:00; -02C1:00; -02C2:00; -02C3:00; -02C4:00; -02C5:00; -02C6:0C; -02C7:0C; -02C8:00; -02C9:0C; -02CA:0C; -02CB:08; -02CC:04; -02CD:00; -02CE:00; -02CF:00; -02D0:00; -02D1:20; -02D2:10; -02D3:08; -02D4:04; -02D5:08; -02D6:10; -02D7:20; -02D8:00; -02D9:00; -02DA:00; -02DB:00; -02DC:00; -02DD:00; -02DE:00; -02DF:3E; -02E0:00; -02E1:3E; -02E2:00; -02E3:00; -02E4:00; -02E5:00; -02E6:00; -02E7:00; -02E8:00; -02E9:04; -02EA:08; -02EB:10; -02EC:20; -02ED:10; -02EE:08; -02EF:04; -02F0:00; -02F1:00; -02F2:00; -02F3:00; -02F4:00; -02F5:1C; -02F6:22; -02F7:20; -02F8:10; -02F9:08; -02FA:00; -02FB:08; -02FC:00; -02FD:00; -02FE:00; -02FF:00; -0300:FF; -0301:E3; -0302:DD; -0303:DF; -0304:D3; -0305:CD; -0306:CD; -0307:E3; -0308:FF; -0309:FF; -030A:FF; -030B:FF; -030C:FF; -030D:F7; -030E:EB; -030F:DD; -0310:DD; -0311:C1; -0312:DD; -0313:DD; -0314:FF; -0315:FF; -0316:FF; -0317:FF; -0318:FF; -0319:E1; -031A:DB; -031B:DB; -031C:E3; -031D:DB; -031E:DB; -031F:E1; -0320:FF; -0321:FF; -0322:FF; -0323:FF; -0324:FF; -0325:E3; -0326:DD; -0327:FD; -0328:FD; -0329:FD; -032A:DD; -032B:E3; -032C:FF; -032D:FF; -032E:FF; -032F:FF; -0330:FF; -0331:E1; -0332:DB; -0333:DB; -0334:DB; -0335:DB; -0336:DB; -0337:E1; -0338:FF; -0339:FF; -033A:FF; -033B:FF; -033C:FF; -033D:C1; -033E:FD; -033F:FD; -0340:F1; -0341:FD; -0342:FD; -0343:C1; -0344:FF; -0345:FF; -0346:FF; -0347:FF; -0348:FF; -0349:C1; -034A:FD; -034B:FD; -034C:E1; -034D:FD; -034E:FD; -034F:FD; -0350:FF; -0351:FF; -0352:FF; -0353:FF; -0354:FF; -0355:C3; -0356:FD; -0357:FD; -0358:CD; -0359:DD; -035A:DD; -035B:C3; -035C:FF; -035D:FF; -035E:FF; -035F:FF; -0360:FF; -0361:DD; -0362:DD; -0363:DD; -0364:C1; -0365:DD; -0366:DD; -0367:DD; -0368:FF; -0369:FF; -036A:FF; -036B:FF; -036C:FF; -036D:E3; -036E:F7; -036F:F7; -0370:F7; -0371:F7; -0372:F7; -0373:E3; -0374:FF; -0375:FF; -0376:FF; -0377:FF; -0378:FF; -0379:DF; -037A:DF; -037B:DF; -037C:DF; -037D:DD; -037E:DD; -037F:E3; -0380:FF; -0381:FF; -0382:FF; -0383:FF; -0384:FF; -0385:DD; -0386:ED; -0387:F5; -0388:F9; -0389:F5; -038A:ED; -038B:DD; -038C:FF; -038D:FF; -038E:FF; -038F:FF; -0390:FF; -0391:FD; -0392:FD; -0393:FD; -0394:FD; -0395:FD; -0396:FD; -0397:C1; -0398:FF; -0399:FF; -039A:FF; -039B:FF; -039C:FF; -039D:DD; -039E:C9; -039F:C1; -03A0:D5; -03A1:DD; -03A2:DD; -03A3:DD; -03A4:FF; -03A5:FF; -03A6:FF; -03A7:FF; -03A8:FF; -03A9:DD; -03AA:DD; -03AB:D9; -03AC:D5; -03AD:CD; -03AE:DD; -03AF:DD; -03B0:FF; -03B1:FF; -03B2:FF; -03B3:FF; -03B4:FF; -03B5:C1; -03B6:DD; -03B7:DD; -03B8:DD; -03B9:DD; -03BA:DD; -03BB:C1; -03BC:FF; -03BD:FF; -03BE:FF; -03BF:FF; -03C0:FF; -03C1:E1; -03C2:DD; -03C3:DD; -03C4:E1; -03C5:FD; -03C6:FD; -03C7:FD; -03C8:FF; -03C9:FF; -03CA:FF; -03CB:FF; -03CC:FF; -03CD:E3; -03CE:DD; -03CF:DD; -03D0:DD; -03D1:D5; -03D2:ED; -03D3:D3; -03D4:FF; -03D5:FF; -03D6:FF; -03D7:FF; -03D8:FF; -03D9:E1; -03DA:DD; -03DB:DD; -03DC:E1; -03DD:F5; -03DE:ED; -03DF:DD; -03E0:FF; -03E1:FF; -03E2:FF; -03E3:FF; -03E4:FF; -03E5:E3; -03E6:DD; -03E7:FB; -03E8:F7; -03E9:EF; -03EA:DD; -03EB:E3; -03EC:FF; -03ED:FF; -03EE:FF; -03EF:FF; -03F0:FF; -03F1:C1; -03F2:F7; -03F3:F7; -03F4:F7; -03F5:F7; -03F6:F7; -03F7:F7; -03F8:FF; -03F9:FF; -03FA:FF; -03FB:FF; -03FC:FF; -03FD:DD; -03FE:DD; -03FF:DD; -0400:DD; -0401:DD; -0402:DD; -0403:E3; -0404:FF; -0405:FF; -0406:FF; -0407:FF; -0408:FF; -0409:DD; -040A:DD; -040B:DD; -040C:EB; -040D:EB; -040E:F7; -040F:F7; -0410:FF; -0411:FF; -0412:FF; -0413:FF; -0414:FF; -0415:DD; -0416:DD; -0417:DD; -0418:D5; -0419:C1; -041A:C9; -041B:DD; -041C:FF; -041D:FF; -041E:FF; -041F:FF; -0420:FF; -0421:DD; -0422:DD; -0423:EB; -0424:F7; -0425:EB; -0426:DD; -0427:DD; -0428:FF; -0429:FF; -042A:FF; -042B:FF; -042C:FF; -042D:DD; -042E:DD; -042F:EB; -0430:F7; -0431:F7; -0432:F7; -0433:F7; -0434:FF; -0435:FF; -0436:FF; -0437:FF; -0438:FF; -0439:C1; -043A:DF; -043B:EF; -043C:F7; -043D:FB; -043E:FD; -043F:C1; -0440:FF; -0441:FF; -0442:FF; -0443:FF; -0444:FF; -0445:E3; -0446:FB; -0447:FB; -0448:FB; -0449:FB; -044A:FB; -044B:E3; -044C:FF; -044D:FF; -044E:FF; -044F:FF; -0450:FF; -0451:FF; -0452:FD; -0453:FB; -0454:F7; -0455:EF; -0456:DF; -0457:FF; -0458:FF; -0459:FF; -045A:FF; -045B:FF; -045C:FF; -045D:E3; -045E:EF; -045F:EF; -0460:EF; -0461:EF; -0462:EF; -0463:E3; -0464:FF; -0465:FF; -0466:FF; -0467:FF; -0468:FF; -0469:F7; -046A:E3; -046B:D5; -046C:F7; -046D:F7; -046E:F7; -046F:F7; -0470:FF; -0471:FF; -0472:FF; -0473:FF; -0474:FF; -0475:FF; -0476:F7; -0477:FB; -0478:C1; -0479:FB; -047A:F7; -047B:FF; -047C:FF; -047D:FF; -047E:FF; -047F:FF; -0480:FF; -0481:FF; -0482:FF; -0483:FF; -0484:FF; -0485:FF; -0486:FF; -0487:FF; -0488:FF; -0489:FF; -048A:FF; -048B:FF; -048C:FF; -048D:F7; -048E:F7; -048F:F7; -0490:F7; -0491:F7; -0492:FF; -0493:F7; -0494:FF; -0495:FF; -0496:FF; -0497:FF; -0498:FF; -0499:EB; -049A:EB; -049B:FF; -049C:FF; -049D:FF; -049E:FF; -049F:FF; -04A0:FF; -04A1:FF; -04A2:FF; -04A3:FF; -04A4:FF; -04A5:EB; -04A6:EB; -04A7:C1; -04A8:EB; -04A9:C1; -04AA:EB; -04AB:EB; -04AC:FF; -04AD:FF; -04AE:FF; -04AF:FF; -04B0:FF; -04B1:F7; -04B2:C3; -04B3:FD; -04B4:E3; -04B5:DF; -04B6:E1; -04B7:F7; -04B8:FF; -04B9:FF; -04BA:FF; -04BB:FF; -04BC:FF; -04BD:D9; -04BE:D9; -04BF:EF; -04C0:F7; -04C1:FB; -04C2:CD; -04C3:CD; -04C4:FF; -04C5:FF; -04C6:FF; -04C7:FF; -04C8:FF; -04C9:FB; -04CA:F5; -04CB:F5; -04CC:FB; -04CD:D5; -04CE:ED; -04CF:D3; -04D0:FF; -04D1:FF; -04D2:FF; -04D3:FF; -04D4:FF; -04D5:F7; -04D6:F7; -04D7:FF; -04D8:FF; -04D9:FF; -04DA:FF; -04DB:FF; -04DC:FF; -04DD:FF; -04DE:FF; -04DF:FF; -04E0:FF; -04E1:EF; -04E2:F7; -04E3:FB; -04E4:FB; -04E5:FB; -04E6:F7; -04E7:EF; -04E8:FF; -04E9:FF; -04EA:FF; -04EB:FF; -04EC:FF; -04ED:FB; -04EE:F7; -04EF:EF; -04F0:EF; -04F1:EF; -04F2:F7; -04F3:FB; -04F4:FF; -04F5:FF; -04F6:FF; -04F7:FF; -04F8:FF; -04F9:FF; -04FA:F7; -04FB:E3; -04FC:C1; -04FD:E3; -04FE:F7; -04FF:FF; -0500:FF; -0501:FF; -0502:FF; -0503:FF; -0504:FF; -0505:FF; -0506:F7; -0507:F7; -0508:C1; -0509:F7; -050A:F7; -050B:FF; -050C:FF; -050D:FF; -050E:FF; -050F:FF; -0510:FF; -0511:FF; -0512:FF; -0513:FF; -0514:FF; -0515:F3; -0516:F3; -0517:F7; -0518:FB; -0519:FF; -051A:FF; -051B:FF; -051C:FF; -051D:FF; -051E:FF; -051F:FF; -0520:C1; -0521:FF; -0522:FF; -0523:FF; -0524:FF; -0525:FF; -0526:FF; -0527:FF; -0528:FF; -0529:FF; -052A:FF; -052B:FF; -052C:FF; -052D:FF; -052E:F3; -052F:F3; -0530:FF; -0531:FF; -0532:FF; -0533:FF; -0534:FF; -0535:FF; -0536:DF; -0537:EF; -0538:F7; -0539:FB; -053A:FD; -053B:FF; -053C:FF; -053D:FF; -053E:FF; -053F:FF; -0540:FF; -0541:F3; -0542:ED; -0543:ED; -0544:ED; -0545:ED; -0546:ED; -0547:F3; -0548:FF; -0549:FF; -054A:FF; -054B:FF; -054C:FF; -054D:F7; -054E:F3; -054F:F7; -0550:F7; -0551:F7; -0552:F7; -0553:E3; -0554:FF; -0555:FF; -0556:FF; -0557:FF; -0558:FF; -0559:E3; -055A:DD; -055B:DF; -055C:E3; -055D:FD; -055E:FD; -055F:C1; -0560:FF; -0561:FF; -0562:FF; -0563:FF; -0564:FF; -0565:E3; -0566:DD; -0567:DF; -0568:E3; -0569:DF; -056A:DD; -056B:E3; -056C:FF; -056D:FF; -056E:FF; -056F:FF; -0570:FF; -0571:EF; -0572:E7; -0573:EB; -0574:C1; -0575:EF; -0576:EF; -0577:EF; -0578:FF; -0579:FF; -057A:FF; -057B:FF; -057C:FF; -057D:C1; -057E:FD; -057F:E1; -0580:DF; -0581:DF; -0582:DD; -0583:E3; -0584:FF; -0585:FF; -0586:FF; -0587:FF; -0588:FF; -0589:E3; -058A:FD; -058B:FD; -058C:E1; -058D:DD; -058E:DD; -058F:E3; -0590:FF; -0591:FF; -0592:FF; -0593:FF; -0594:FF; -0595:C1; -0596:DF; -0597:EF; -0598:F7; -0599:FB; -059A:FD; -059B:FD; -059C:FF; -059D:FF; -059E:FF; -059F:FF; -05A0:FF; -05A1:E3; -05A2:DD; -05A3:DD; -05A4:E3; -05A5:DD; -05A6:DD; -05A7:E3; -05A8:FF; -05A9:FF; -05AA:FF; -05AB:FF; -05AC:FF; -05AD:E3; -05AE:DD; -05AF:DD; -05B0:C3; -05B1:DF; -05B2:DF; -05B3:E3; -05B4:FF; -05B5:FF; -05B6:FF; -05B7:FF; -05B8:FF; -05B9:FF; -05BA:F3; -05BB:F3; -05BC:FF; -05BD:F3; -05BE:F3; -05BF:FF; -05C0:FF; -05C1:FF; -05C2:FF; -05C3:FF; -05C4:FF; -05C5:FF; -05C6:F3; -05C7:F3; -05C8:FF; -05C9:F3; -05CA:F3; -05CB:F7; -05CC:FB; -05CD:FF; -05CE:FF; -05CF:FF; -05D0:FF; -05D1:DF; -05D2:EF; -05D3:F7; -05D4:FB; -05D5:F7; -05D6:EF; -05D7:DF; -05D8:FF; -05D9:FF; -05DA:FF; -05DB:FF; -05DC:FF; -05DD:FF; -05DE:FF; -05DF:C1; -05E0:FF; -05E1:C1; -05E2:FF; -05E3:FF; -05E4:FF; -05E5:FF; -05E6:FF; -05E7:FF; -05E8:FF; -05E9:FB; -05EA:F7; -05EB:EF; -05EC:DF; -05ED:EF; -05EE:F7; -05EF:FB; -05F0:FF; -05F1:FF; -05F2:FF; -05F3:FF; -05F4:FF; -05F5:E3; -05F6:DD; -05F7:DF; -05F8:EF; -05F9:F7; -05FA:FF; -05FB:F7; -05FC:FF; -05FD:FF; -05FE:FF; -05FF:FF; -0600:00; -0601:00; -0602:00; -0603:00; -0604:00; -0605:00; -0606:00; -0607:00; -0608:00; -0609:00; -060A:00; -060B:00; -060C:00; -060D:00; -060E:00; -060F:00; -0610:00; -0611:00; -0612:F0; -0613:F0; -0614:F0; -0615:F0; -0616:F0; -0617:F0; -0618:00; -0619:00; -061A:00; -061B:00; -061C:00; -061D:00; -061E:0F; -061F:0F; -0620:0F; -0621:0F; -0622:0F; -0623:0F; -0624:00; -0625:00; -0626:00; -0627:00; -0628:00; -0629:00; -062A:FF; -062B:FF; -062C:FF; -062D:FF; -062E:FF; -062F:FF; -0630:F0; -0631:F0; -0632:F0; -0633:F0; -0634:F0; -0635:F0; -0636:00; -0637:00; -0638:00; -0639:00; -063A:00; -063B:00; -063C:F0; -063D:F0; -063E:F0; -063F:F0; -0640:F0; -0641:F0; -0642:F0; -0643:F0; -0644:F0; -0645:F0; -0646:F0; -0647:F0; -0648:F0; -0649:F0; -064A:F0; -064B:F0; -064C:F0; -064D:F0; -064E:0F; -064F:0F; -0650:0F; -0651:0F; -0652:0F; -0653:0F; -0654:F0; -0655:F0; -0656:F0; -0657:F0; -0658:F0; -0659:F0; -065A:FF; -065B:FF; -065C:FF; -065D:FF; -065E:FF; -065F:FF; -0660:0F; -0661:0F; -0662:0F; -0663:0F; -0664:0F; -0665:0F; -0666:00; -0667:00; -0668:00; -0669:00; -066A:00; -066B:00; -066C:0F; -066D:0F; -066E:0F; -066F:0F; -0670:0F; -0671:0F; -0672:F0; -0673:F0; -0674:F0; -0675:F0; -0676:F0; -0677:F0; -0678:0F; -0679:0F; -067A:0F; -067B:0F; -067C:0F; -067D:0F; -067E:0F; -067F:0F; -0680:0F; -0681:0F; -0682:0F; -0683:0F; -0684:0F; -0685:0F; -0686:0F; -0687:0F; -0688:0F; -0689:0F; -068A:FF; -068B:FF; -068C:FF; -068D:FF; -068E:FF; -068F:FF; -0690:FF; -0691:FF; -0692:FF; -0693:FF; -0694:FF; -0695:FF; -0696:00; -0697:00; -0698:00; -0699:00; -069A:00; -069B:00; -069C:FF; -069D:FF; -069E:FF; -069F:FF; -06A0:FF; -06A1:FF; -06A2:F0; -06A3:F0; -06A4:F0; -06A5:F0; -06A6:F0; -06A7:F0; -06A8:FF; -06A9:FF; -06AA:FF; -06AB:FF; -06AC:FF; -06AD:FF; -06AE:0F; -06AF:0F; -06B0:0F; -06B1:0F; -06B2:0F; -06B3:0F; -06B4:FF; -06B5:FF; -06B6:FF; -06B7:FF; -06B8:FF; -06B9:FF; -06BA:FF; -06BB:FF; -06BC:FF; -06BD:FF; -06BE:FF; -06BF:FF; -06C0:00; -06C1:00; -06C2:00; -06C3:00; -06C4:00; -06C5:00; -06C6:00; -06C7:00; -06C8:00; -06C9:00; -06CA:00; -06CB:00; -06CC:00; -06CD:00; -06CE:00; -06CF:00; -06D0:00; -06D1:00; -06D2:F0; -06D3:F0; -06D4:F0; -06D5:F0; -06D6:F0; -06D7:F0; -06D8:00; -06D9:00; -06DA:00; -06DB:00; -06DC:00; -06DD:00; -06DE:0F; -06DF:0F; -06E0:0F; -06E1:0F; -06E2:0F; -06E3:0F; -06E4:00; -06E5:00; -06E6:00; -06E7:00; -06E8:00; -06E9:00; -06EA:FF; -06EB:FF; -06EC:FF; -06ED:FF; -06EE:FF; -06EF:FF; -06F0:F0; -06F1:F0; -06F2:F0; -06F3:F0; -06F4:F0; -06F5:F0; -06F6:00; -06F7:00; -06F8:00; -06F9:00; -06FA:00; -06FB:00; -06FC:F0; -06FD:F0; -06FE:F0; -06FF:F0; -0700:F0; -0701:F0; -0702:F0; -0703:F0; -0704:F0; -0705:F0; -0706:F0; -0707:F0; -0708:F0; -0709:F0; -070A:F0; -070B:F0; -070C:F0; -070D:F0; -070E:0F; -070F:0F; -0710:0F; -0711:0F; -0712:0F; -0713:0F; -0714:F0; -0715:F0; -0716:F0; -0717:F0; -0718:F0; -0719:F0; -071A:FF; -071B:FF; -071C:FF; -071D:FF; -071E:FF; -071F:FF; -0720:0F; -0721:0F; -0722:0F; -0723:0F; -0724:0F; -0725:0F; -0726:00; -0727:00; -0728:00; -0729:00; -072A:00; -072B:00; -072C:0F; -072D:0F; -072E:0F; -072F:0F; -0730:0F; -0731:0F; -0732:F0; -0733:F0; -0734:F0; -0735:F0; -0736:F0; -0737:F0; -0738:0F; -0739:0F; -073A:0F; -073B:0F; -073C:0F; -073D:0F; -073E:0F; -073F:0F; -0740:0F; -0741:0F; -0742:0F; -0743:0F; -0744:0F; -0745:0F; -0746:0F; -0747:0F; -0748:0F; -0749:0F; -074A:FF; -074B:FF; -074C:FF; -074D:FF; -074E:FF; -074F:FF; -0750:FF; -0751:FF; -0752:FF; -0753:FF; -0754:FF; -0755:FF; -0756:00; -0757:00; -0758:00; -0759:00; -075A:00; -075B:00; -075C:FF; -075D:FF; -075E:FF; -075F:FF; -0760:FF; -0761:FF; -0762:F0; -0763:F0; -0764:F0; -0765:F0; -0766:F0; -0767:F0; -0768:FF; -0769:FF; -076A:FF; -076B:FF; -076C:FF; -076D:FF; -076E:0F; -076F:0F; -0770:0F; -0771:0F; -0772:0F; -0773:0F; -0774:FF; -0775:FF; -0776:FF; -0777:FF; -0778:FF; -0779:FF; -077A:FF; -077B:FF; -077C:FF; -077D:FF; -077E:FF; -077F:FF; -0780:00; -0781:00; -0782:00; -0783:00; -0784:00; -0785:00; -0786:00; -0787:00; -0788:00; -0789:00; -078A:00; -078B:00; -078C:00; -078D:00; -078E:00; -078F:00; -0790:00; -0791:00; -0792:F0; -0793:F0; -0794:F0; -0795:F0; -0796:F0; -0797:F0; -0798:00; -0799:00; -079A:00; -079B:00; -079C:00; -079D:00; -079E:0F; -079F:0F; -07A0:0F; -07A1:0F; -07A2:0F; -07A3:0F; -07A4:00; -07A5:00; -07A6:00; -07A7:00; -07A8:00; -07A9:00; -07AA:FF; -07AB:FF; -07AC:FF; -07AD:FF; -07AE:FF; -07AF:FF; -07B0:F0; -07B1:F0; -07B2:F0; -07B3:F0; -07B4:F0; -07B5:F0; -07B6:00; -07B7:00; -07B8:00; -07B9:00; -07BA:00; -07BB:00; -07BC:F0; -07BD:F0; -07BE:F0; -07BF:F0; -07C0:F0; -07C1:F0; -07C2:F0; -07C3:F0; -07C4:F0; -07C5:F0; -07C6:F0; -07C7:F0; -07C8:F0; -07C9:F0; -07CA:F0; -07CB:F0; -07CC:F0; -07CD:F0; -07CE:0F; -07CF:0F; -07D0:0F; -07D1:0F; -07D2:0F; -07D3:0F; -07D4:F0; -07D5:F0; -07D6:F0; -07D7:F0; -07D8:F0; -07D9:F0; -07DA:FF; -07DB:FF; -07DC:FF; -07DD:FF; -07DE:FF; -07DF:FF; -07E0:0F; -07E1:0F; -07E2:0F; -07E3:0F; -07E4:0F; -07E5:0F; -07E6:00; -07E7:00; -07E8:00; -07E9:00; -07EA:00; -07EB:00; -07EC:0F; -07ED:0F; -07EE:0F; -07EF:0F; -07F0:0F; -07F1:0F; -07F2:F0; -07F3:F0; -07F4:F0; -07F5:F0; -07F6:F0; -07F7:F0; -07F8:0F; -07F9:0F; -07FA:0F; -07FB:0F; -07FC:0F; -07FD:0F; -07FE:0F; -07FF:0F; -0800:0F; -0801:0F; -0802:0F; -0803:0F; -0804:0F; -0805:0F; -0806:0F; -0807:0F; -0808:0F; -0809:0F; -080A:FF; -080B:FF; -080C:FF; -080D:FF; -080E:FF; -080F:FF; -0810:FF; -0811:FF; -0812:FF; -0813:FF; -0814:FF; -0815:FF; -0816:00; -0817:00; -0818:00; -0819:00; -081A:00; -081B:00; -081C:FF; -081D:FF; -081E:FF; -081F:FF; -0820:FF; -0821:FF; -0822:F0; -0823:F0; -0824:F0; -0825:F0; -0826:F0; -0827:F0; -0828:FF; -0829:FF; -082A:FF; -082B:FF; -082C:FF; -082D:FF; -082E:0F; -082F:0F; -0830:0F; -0831:0F; -0832:0F; -0833:0F; -0834:FF; -0835:FF; -0836:FF; -0837:FF; -0838:FF; -0839:FF; -083A:FF; -083B:FF; -083C:FF; -083D:FF; -083E:FF; -083F:FF; -0840:00; -0841:00; -0842:00; -0843:00; -0844:00; -0845:00; -0846:00; -0847:00; -0848:00; -0849:00; -084A:00; -084B:00; -084C:00; -084D:00; -084E:00; -084F:00; -0850:00; -0851:00; -0852:F0; -0853:F0; -0854:F0; -0855:F0; -0856:F0; -0857:F0; -0858:00; -0859:00; -085A:00; -085B:00; -085C:00; -085D:00; -085E:0F; -085F:0F; -0860:0F; -0861:0F; -0862:0F; -0863:0F; -0864:00; -0865:00; -0866:00; -0867:00; -0868:00; -0869:00; -086A:FF; -086B:FF; -086C:FF; -086D:FF; -086E:FF; -086F:FF; -0870:F0; -0871:F0; -0872:F0; -0873:F0; -0874:F0; -0875:F0; -0876:00; -0877:00; -0878:00; -0879:00; -087A:00; -087B:00; -087C:F0; -087D:F0; -087E:F0; -087F:F0; -0880:F0; -0881:F0; -0882:F0; -0883:F0; -0884:F0; -0885:F0; -0886:F0; -0887:F0; -0888:F0; -0889:F0; -088A:F0; -088B:F0; -088C:F0; -088D:F0; -088E:0F; -088F:0F; -0890:0F; -0891:0F; -0892:0F; -0893:0F; -0894:F0; -0895:F0; -0896:F0; -0897:F0; -0898:F0; -0899:F0; -089A:FF; -089B:FF; -089C:FF; -089D:FF; -089E:FF; -089F:FF; -08A0:0F; -08A1:0F; -08A2:0F; -08A3:0F; -08A4:0F; -08A5:0F; -08A6:00; -08A7:00; -08A8:00; -08A9:00; -08AA:00; -08AB:00; -08AC:0F; -08AD:0F; -08AE:0F; -08AF:0F; -08B0:0F; -08B1:0F; -08B2:F0; -08B3:F0; -08B4:F0; -08B5:F0; -08B6:F0; -08B7:F0; -08B8:0F; -08B9:0F; -08BA:0F; -08BB:0F; -08BC:0F; -08BD:0F; -08BE:0F; -08BF:0F; -08C0:0F; -08C1:0F; -08C2:0F; -08C3:0F; -08C4:0F; -08C5:0F; -08C6:0F; -08C7:0F; -08C8:0F; -08C9:0F; -08CA:FF; -08CB:FF; -08CC:FF; -08CD:FF; -08CE:FF; -08CF:FF; -08D0:FF; -08D1:FF; -08D2:FF; -08D3:FF; -08D4:FF; -08D5:FF; -08D6:00; -08D7:00; -08D8:00; -08D9:00; -08DA:00; -08DB:00; -08DC:FF; -08DD:FF; -08DE:FF; -08DF:FF; -08E0:FF; -08E1:FF; -08E2:F0; -08E3:F0; -08E4:F0; -08E5:F0; -08E6:F0; -08E7:F0; -08E8:FF; -08E9:FF; -08EA:FF; -08EB:FF; -08EC:FF; -08ED:FF; -08EE:0F; -08EF:0F; -08F0:0F; -08F1:0F; -08F2:0F; -08F3:0F; -08F4:FF; -08F5:FF; -08F6:FF; -08F7:FF; -08F8:FF; -08F9:FF; -08FA:FF; -08FB:FF; -08FC:FF; -08FD:FF; -08FE:FF; -08FF:FF; -0900:00; -0901:00; -0902:00; -0903:00; -0904:00; -0905:00; -0906:00; -0907:00; -0908:00; -0909:00; -090A:00; -090B:00; -090C:00; -090D:00; -090E:00; -090F:00; -0910:00; -0911:00; -0912:F0; -0913:F0; -0914:F0; -0915:F0; -0916:F0; -0917:F0; -0918:00; -0919:00; -091A:00; -091B:00; -091C:00; -091D:00; -091E:0F; -091F:0F; -0920:0F; -0921:0F; -0922:0F; -0923:0F; -0924:00; -0925:00; -0926:00; -0927:00; -0928:00; -0929:00; -092A:FF; -092B:FF; -092C:FF; -092D:FF; -092E:FF; -092F:FF; -0930:F0; -0931:F0; -0932:F0; -0933:F0; -0934:F0; -0935:F0; -0936:00; -0937:00; -0938:00; -0939:00; -093A:00; -093B:00; -093C:F0; -093D:F0; -093E:F0; -093F:F0; -0940:F0; -0941:F0; -0942:F0; -0943:F0; -0944:F0; -0945:F0; -0946:F0; -0947:F0; -0948:F0; -0949:F0; -094A:F0; -094B:F0; -094C:F0; -094D:F0; -094E:0F; -094F:0F; -0950:0F; -0951:0F; -0952:0F; -0953:0F; -0954:F0; -0955:F0; -0956:F0; -0957:F0; -0958:F0; -0959:F0; -095A:FF; -095B:FF; -095C:FF; -095D:FF; -095E:FF; -095F:FF; -0960:0F; -0961:0F; -0962:0F; -0963:0F; -0964:0F; -0965:0F; -0966:00; -0967:00; -0968:00; -0969:00; -096A:00; -096B:00; -096C:0F; -096D:0F; -096E:0F; -096F:0F; -0970:0F; -0971:0F; -0972:F0; -0973:F0; -0974:F0; -0975:F0; -0976:F0; -0977:F0; -0978:0F; -0979:0F; -097A:0F; -097B:0F; -097C:0F; -097D:0F; -097E:0F; -097F:0F; -0980:0F; -0981:0F; -0982:0F; -0983:0F; -0984:0F; -0985:0F; -0986:0F; -0987:0F; -0988:0F; -0989:0F; -098A:FF; -098B:FF; -098C:FF; -098D:FF; -098E:FF; -098F:FF; -0990:FF; -0991:FF; -0992:FF; -0993:FF; -0994:FF; -0995:FF; -0996:00; -0997:00; -0998:00; -0999:00; -099A:00; -099B:00; -099C:FF; -099D:FF; -099E:FF; -099F:FF; -09A0:FF; -09A1:FF; -09A2:F0; -09A3:F0; -09A4:F0; -09A5:F0; -09A6:F0; -09A7:F0; -09A8:FF; -09A9:FF; -09AA:FF; -09AB:FF; -09AC:FF; -09AD:FF; -09AE:0F; -09AF:0F; -09B0:0F; -09B1:0F; -09B2:0F; -09B3:0F; -09B4:FF; -09B5:FF; -09B6:FF; -09B7:FF; -09B8:FF; -09B9:FF; -09BA:FF; -09BB:FF; -09BC:FF; -09BD:FF; -09BE:FF; -09BF:FF; -09C0:00; -09C1:00; -09C2:00; -09C3:00; -09C4:00; -09C5:00; -09C6:00; -09C7:00; -09C8:00; -09C9:00; -09CA:00; -09CB:00; -09CC:00; -09CD:00; -09CE:00; -09CF:00; -09D0:00; -09D1:00; -09D2:F0; -09D3:F0; -09D4:F0; -09D5:F0; -09D6:F0; -09D7:F0; -09D8:00; -09D9:00; -09DA:00; -09DB:00; -09DC:00; -09DD:00; -09DE:0F; -09DF:0F; -09E0:0F; -09E1:0F; -09E2:0F; -09E3:0F; -09E4:00; -09E5:00; -09E6:00; -09E7:00; -09E8:00; -09E9:00; -09EA:FF; -09EB:FF; -09EC:FF; -09ED:FF; -09EE:FF; -09EF:FF; -09F0:F0; -09F1:F0; -09F2:F0; -09F3:F0; -09F4:F0; -09F5:F0; -09F6:00; -09F7:00; -09F8:00; -09F9:00; -09FA:00; -09FB:00; -09FC:F0; -09FD:F0; -09FE:F0; -09FF:F0; -0A00:F0; -0A01:F0; -0A02:F0; -0A03:F0; -0A04:F0; -0A05:F0; -0A06:F0; -0A07:F0; -0A08:F0; -0A09:F0; -0A0A:F0; -0A0B:F0; -0A0C:F0; -0A0D:F0; -0A0E:0F; -0A0F:0F; -0A10:0F; -0A11:0F; -0A12:0F; -0A13:0F; -0A14:F0; -0A15:F0; -0A16:F0; -0A17:F0; -0A18:F0; -0A19:F0; -0A1A:FF; -0A1B:FF; -0A1C:FF; -0A1D:FF; -0A1E:FF; -0A1F:FF; -0A20:0F; -0A21:0F; -0A22:0F; -0A23:0F; -0A24:0F; -0A25:0F; -0A26:00; -0A27:00; -0A28:00; -0A29:00; -0A2A:00; -0A2B:00; -0A2C:0F; -0A2D:0F; -0A2E:0F; -0A2F:0F; -0A30:0F; -0A31:0F; -0A32:F0; -0A33:F0; -0A34:F0; -0A35:F0; -0A36:F0; -0A37:F0; -0A38:0F; -0A39:0F; -0A3A:0F; -0A3B:0F; -0A3C:0F; -0A3D:0F; -0A3E:0F; -0A3F:0F; -0A40:0F; -0A41:0F; -0A42:0F; -0A43:0F; -0A44:0F; -0A45:0F; -0A46:0F; -0A47:0F; -0A48:0F; -0A49:0F; -0A4A:FF; -0A4B:FF; -0A4C:FF; -0A4D:FF; -0A4E:FF; -0A4F:FF; -0A50:FF; -0A51:FF; -0A52:FF; -0A53:FF; -0A54:FF; -0A55:FF; -0A56:00; -0A57:00; -0A58:00; -0A59:00; -0A5A:00; -0A5B:00; -0A5C:FF; -0A5D:FF; -0A5E:FF; -0A5F:FF; -0A60:FF; -0A61:FF; -0A62:F0; -0A63:F0; -0A64:F0; -0A65:F0; -0A66:F0; -0A67:F0; -0A68:FF; -0A69:FF; -0A6A:FF; -0A6B:FF; -0A6C:FF; -0A6D:FF; -0A6E:0F; -0A6F:0F; -0A70:0F; -0A71:0F; -0A72:0F; -0A73:0F; -0A74:FF; -0A75:FF; -0A76:FF; -0A77:FF; -0A78:FF; -0A79:FF; -0A7A:FF; -0A7B:FF; -0A7C:FF; -0A7D:FF; -0A7E:FF; -0A7F:FF; -0A80:00; -0A81:00; -0A82:00; -0A83:00; -0A84:00; -0A85:00; -0A86:00; -0A87:00; -0A88:00; -0A89:00; -0A8A:00; -0A8B:00; -0A8C:00; -0A8D:00; -0A8E:00; -0A8F:00; -0A90:00; -0A91:00; -0A92:F0; -0A93:F0; -0A94:F0; -0A95:F0; -0A96:F0; -0A97:F0; -0A98:00; -0A99:00; -0A9A:00; -0A9B:00; -0A9C:00; -0A9D:00; -0A9E:0F; -0A9F:0F; -0AA0:0F; -0AA1:0F; -0AA2:0F; -0AA3:0F; -0AA4:00; -0AA5:00; -0AA6:00; -0AA7:00; -0AA8:00; -0AA9:00; -0AAA:FF; -0AAB:FF; -0AAC:FF; -0AAD:FF; -0AAE:FF; -0AAF:FF; -0AB0:F0; -0AB1:F0; -0AB2:F0; -0AB3:F0; -0AB4:F0; -0AB5:F0; -0AB6:00; -0AB7:00; -0AB8:00; -0AB9:00; -0ABA:00; -0ABB:00; -0ABC:F0; -0ABD:F0; -0ABE:F0; -0ABF:F0; -0AC0:F0; -0AC1:F0; -0AC2:F0; -0AC3:F0; -0AC4:F0; -0AC5:F0; -0AC6:F0; -0AC7:F0; -0AC8:F0; -0AC9:F0; -0ACA:F0; -0ACB:F0; -0ACC:F0; -0ACD:F0; -0ACE:0F; -0ACF:0F; -0AD0:0F; -0AD1:0F; -0AD2:0F; -0AD3:0F; -0AD4:F0; -0AD5:F0; -0AD6:F0; -0AD7:F0; -0AD8:F0; -0AD9:F0; -0ADA:FF; -0ADB:FF; -0ADC:FF; -0ADD:FF; -0ADE:FF; -0ADF:FF; -0AE0:0F; -0AE1:0F; -0AE2:0F; -0AE3:0F; -0AE4:0F; -0AE5:0F; -0AE6:00; -0AE7:00; -0AE8:00; -0AE9:00; -0AEA:00; -0AEB:00; -0AEC:0F; -0AED:0F; -0AEE:0F; -0AEF:0F; -0AF0:0F; -0AF1:0F; -0AF2:F0; -0AF3:F0; -0AF4:F0; -0AF5:F0; -0AF6:F0; -0AF7:F0; -0AF8:0F; -0AF9:0F; -0AFA:0F; -0AFB:0F; -0AFC:0F; -0AFD:0F; -0AFE:0F; -0AFF:0F; -0B00:0F; -0B01:0F; -0B02:0F; -0B03:0F; -0B04:0F; -0B05:0F; -0B06:0F; -0B07:0F; -0B08:0F; -0B09:0F; -0B0A:FF; -0B0B:FF; -0B0C:FF; -0B0D:FF; -0B0E:FF; -0B0F:FF; -0B10:FF; -0B11:FF; -0B12:FF; -0B13:FF; -0B14:FF; -0B15:FF; -0B16:00; -0B17:00; -0B18:00; -0B19:00; -0B1A:00; -0B1B:00; -0B1C:FF; -0B1D:FF; -0B1E:FF; -0B1F:FF; -0B20:FF; -0B21:FF; -0B22:F0; -0B23:F0; -0B24:F0; -0B25:F0; -0B26:F0; -0B27:F0; -0B28:FF; -0B29:FF; -0B2A:FF; -0B2B:FF; -0B2C:FF; -0B2D:FF; -0B2E:0F; -0B2F:0F; -0B30:0F; -0B31:0F; -0B32:0F; -0B33:0F; -0B34:FF; -0B35:FF; -0B36:FF; -0B37:FF; -0B38:FF; -0B39:FF; -0B3A:FF; -0B3B:FF; -0B3C:FF; -0B3D:FF; -0B3E:FF; -0B3F:FF; -0B40:00; -0B41:00; -0B42:00; -0B43:00; -0B44:00; -0B45:00; -0B46:00; -0B47:00; -0B48:00; -0B49:00; -0B4A:00; -0B4B:00; -0B4C:00; -0B4D:00; -0B4E:00; -0B4F:00; -0B50:00; -0B51:00; -0B52:F0; -0B53:F0; -0B54:F0; -0B55:F0; -0B56:F0; -0B57:F0; -0B58:00; -0B59:00; -0B5A:00; -0B5B:00; -0B5C:00; -0B5D:00; -0B5E:0F; -0B5F:0F; -0B60:0F; -0B61:0F; -0B62:0F; -0B63:0F; -0B64:00; -0B65:00; -0B66:00; -0B67:00; -0B68:00; -0B69:00; -0B6A:FF; -0B6B:FF; -0B6C:FF; -0B6D:FF; -0B6E:FF; -0B6F:FF; -0B70:F0; -0B71:F0; -0B72:F0; -0B73:F0; -0B74:F0; -0B75:F0; -0B76:00; -0B77:00; -0B78:00; -0B79:00; -0B7A:00; -0B7B:00; -0B7C:F0; -0B7D:F0; -0B7E:F0; -0B7F:F0; -0B80:F0; -0B81:F0; -0B82:F0; -0B83:F0; -0B84:F0; -0B85:F0; -0B86:F0; -0B87:F0; -0B88:F0; -0B89:F0; -0B8A:F0; -0B8B:F0; -0B8C:F0; -0B8D:F0; -0B8E:0F; -0B8F:0F; -0B90:0F; -0B91:0F; -0B92:0F; -0B93:0F; -0B94:F0; -0B95:F0; -0B96:F0; -0B97:F0; -0B98:F0; -0B99:F0; -0B9A:FF; -0B9B:FF; -0B9C:FF; -0B9D:FF; -0B9E:FF; -0B9F:FF; -0BA0:0F; -0BA1:0F; -0BA2:0F; -0BA3:0F; -0BA4:0F; -0BA5:0F; -0BA6:00; -0BA7:00; -0BA8:00; -0BA9:00; -0BAA:00; -0BAB:00; -0BAC:0F; -0BAD:0F; -0BAE:0F; -0BAF:0F; -0BB0:0F; -0BB1:0F; -0BB2:F0; -0BB3:F0; -0BB4:F0; -0BB5:F0; -0BB6:F0; -0BB7:F0; -0BB8:0F; -0BB9:0F; -0BBA:0F; -0BBB:0F; -0BBC:0F; -0BBD:0F; -0BBE:0F; -0BBF:0F; -0BC0:0F; -0BC1:0F; -0BC2:0F; -0BC3:0F; -0BC4:0F; -0BC5:0F; -0BC6:0F; -0BC7:0F; -0BC8:0F; -0BC9:0F; -0BCA:FF; -0BCB:FF; -0BCC:FF; -0BCD:FF; -0BCE:FF; -0BCF:FF; -0BD0:FF; -0BD1:FF; -0BD2:FF; -0BD3:FF; -0BD4:FF; -0BD5:FF; -0BD6:00; -0BD7:00; -0BD8:00; -0BD9:00; -0BDA:00; -0BDB:00; -0BDC:FF; -0BDD:FF; -0BDE:FF; -0BDF:FF; -0BE0:FF; -0BE1:FF; -0BE2:F0; -0BE3:F0; -0BE4:F0; -0BE5:F0; -0BE6:F0; -0BE7:F0; -0BE8:FF; -0BE9:FF; -0BEA:FF; -0BEB:FF; -0BEC:FF; -0BED:FF; -0BEE:0F; -0BEF:0F; -0BF0:0F; -0BF1:0F; -0BF2:0F; -0BF3:0F; -0BF4:FF; -0BF5:FF; -0BF6:FF; -0BF7:FF; -0BF8:FF; -0BF9:FF; -0BFA:FF; -0BFB:FF; -0BFC:FF; -0BFD:FF; -0BFE:FF; -0BFF:FF; -END; diff --git a/Computer_MiST/Laser310_MiST/rtl/roms/charrom_4k.mif b/Computer_MiST/Laser310_MiST/rtl/roms/charrom_4k.mif deleted file mode 100644 index 35435b03..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/roms/charrom_4k.mif +++ /dev/null @@ -1,4103 +0,0 @@ -DEPTH = 4096; -WIDTH = 8; -ADDRESS_RADIX = HEX; -DATA_RADIX = HEX; -CONTENT -BEGIN -0000:00; -0001:1C; -0002:22; -0003:20; -0004:2C; -0005:32; -0006:32; -0007:1C; -0008:00; -0009:00; -000A:00; -000B:00; -000C:00; -000D:00; -000E:00; -000F:00; -0010:00; -0011:08; -0012:14; -0013:22; -0014:22; -0015:3E; -0016:22; -0017:22; -0018:00; -0019:00; -001A:00; -001B:00; -001C:00; -001D:00; -001E:00; -001F:00; -0020:00; -0021:1E; -0022:24; -0023:24; -0024:1C; -0025:24; -0026:24; -0027:1E; -0028:00; -0029:00; -002A:00; -002B:00; -002C:00; -002D:00; -002E:00; -002F:00; -0030:00; -0031:1C; -0032:22; -0033:02; -0034:02; -0035:02; -0036:22; -0037:1C; -0038:00; -0039:00; -003A:00; -003B:00; -003C:00; -003D:00; -003E:00; -003F:00; -0040:00; -0041:1E; -0042:24; -0043:24; -0044:24; -0045:24; -0046:24; -0047:1E; -0048:00; -0049:00; -004A:00; -004B:00; -004C:00; -004D:00; -004E:00; -004F:00; -0050:00; -0051:3E; -0052:02; -0053:02; -0054:0E; -0055:02; -0056:02; -0057:3E; -0058:00; -0059:00; -005A:00; -005B:00; -005C:00; -005D:00; -005E:00; -005F:00; -0060:00; -0061:3E; -0062:02; -0063:02; -0064:1E; -0065:02; -0066:02; -0067:02; -0068:00; -0069:00; -006A:00; -006B:00; -006C:00; -006D:00; -006E:00; -006F:00; -0070:00; -0071:3C; -0072:02; -0073:02; -0074:32; -0075:22; -0076:22; -0077:3C; -0078:00; -0079:00; -007A:00; -007B:00; -007C:00; -007D:00; -007E:00; -007F:00; -0080:00; -0081:22; -0082:22; -0083:22; -0084:3E; -0085:22; -0086:22; -0087:22; -0088:00; -0089:00; -008A:00; -008B:00; -008C:00; -008D:00; -008E:00; -008F:00; -0090:00; -0091:1C; -0092:08; -0093:08; -0094:08; -0095:08; -0096:08; -0097:1C; -0098:00; -0099:00; -009A:00; -009B:00; -009C:00; -009D:00; -009E:00; -009F:00; -00A0:00; -00A1:20; -00A2:20; -00A3:20; -00A4:20; -00A5:22; -00A6:22; -00A7:1C; -00A8:00; -00A9:00; -00AA:00; -00AB:00; -00AC:00; -00AD:00; -00AE:00; -00AF:00; -00B0:00; -00B1:22; -00B2:12; -00B3:0A; -00B4:06; -00B5:0A; -00B6:12; -00B7:22; -00B8:00; -00B9:00; -00BA:00; -00BB:00; -00BC:00; -00BD:00; -00BE:00; -00BF:00; -00C0:00; -00C1:02; -00C2:02; -00C3:02; -00C4:02; -00C5:02; -00C6:02; -00C7:3E; -00C8:00; -00C9:00; -00CA:00; -00CB:00; -00CC:00; -00CD:00; -00CE:00; -00CF:00; -00D0:00; -00D1:22; -00D2:36; -00D3:3E; -00D4:2A; -00D5:22; -00D6:22; -00D7:22; -00D8:00; -00D9:00; -00DA:00; -00DB:00; -00DC:00; -00DD:00; -00DE:00; -00DF:00; -00E0:00; -00E1:22; -00E2:22; -00E3:26; -00E4:2A; -00E5:32; -00E6:22; -00E7:22; -00E8:00; -00E9:00; -00EA:00; -00EB:00; -00EC:00; -00ED:00; -00EE:00; -00EF:00; -00F0:00; -00F1:3E; -00F2:22; -00F3:22; -00F4:22; -00F5:22; -00F6:22; -00F7:3E; -00F8:00; -00F9:00; -00FA:00; -00FB:00; -00FC:00; -00FD:00; -00FE:00; -00FF:00; -0100:00; -0101:1E; -0102:22; -0103:22; -0104:1E; -0105:02; -0106:02; -0107:02; -0108:00; -0109:00; -010A:00; -010B:00; -010C:00; -010D:00; -010E:00; -010F:00; -0110:00; -0111:1C; -0112:22; -0113:22; -0114:22; -0115:2A; -0116:12; -0117:2C; -0118:00; -0119:00; -011A:00; -011B:00; -011C:00; -011D:00; -011E:00; -011F:00; -0120:00; -0121:1E; -0122:22; -0123:22; -0124:1E; -0125:0A; -0126:12; -0127:22; -0128:00; -0129:00; -012A:00; -012B:00; -012C:00; -012D:00; -012E:00; -012F:00; -0130:00; -0131:1C; -0132:22; -0133:04; -0134:08; -0135:10; -0136:22; -0137:1C; -0138:00; -0139:00; -013A:00; -013B:00; -013C:00; -013D:00; -013E:00; -013F:00; -0140:00; -0141:3E; -0142:08; -0143:08; -0144:08; -0145:08; -0146:08; -0147:08; -0148:00; -0149:00; -014A:00; -014B:00; -014C:00; -014D:00; -014E:00; -014F:00; -0150:00; -0151:22; -0152:22; -0153:22; -0154:22; -0155:22; -0156:22; -0157:1C; -0158:00; -0159:00; -015A:00; -015B:00; -015C:00; -015D:00; -015E:00; -015F:00; -0160:00; -0161:22; -0162:22; -0163:22; -0164:14; -0165:14; -0166:08; -0167:08; -0168:00; -0169:00; -016A:00; -016B:00; -016C:00; -016D:00; -016E:00; -016F:00; -0170:00; -0171:22; -0172:22; -0173:22; -0174:2A; -0175:3E; -0176:36; -0177:22; -0178:00; -0179:00; -017A:00; -017B:00; -017C:00; -017D:00; -017E:00; -017F:00; -0180:00; -0181:22; -0182:22; -0183:14; -0184:08; -0185:14; -0186:22; -0187:22; -0188:00; -0189:00; -018A:00; -018B:00; -018C:00; -018D:00; -018E:00; -018F:00; -0190:00; -0191:22; -0192:22; -0193:14; -0194:08; -0195:08; -0196:08; -0197:08; -0198:00; -0199:00; -019A:00; -019B:00; -019C:00; -019D:00; -019E:00; -019F:00; -01A0:00; -01A1:3E; -01A2:20; -01A3:10; -01A4:08; -01A5:04; -01A6:02; -01A7:3E; -01A8:00; -01A9:00; -01AA:00; -01AB:00; -01AC:00; -01AD:00; -01AE:00; -01AF:00; -01B0:00; -01B1:1C; -01B2:04; -01B3:04; -01B4:04; -01B5:04; -01B6:04; -01B7:1C; -01B8:00; -01B9:00; -01BA:00; -01BB:00; -01BC:00; -01BD:00; -01BE:00; -01BF:00; -01C0:00; -01C1:00; -01C2:02; -01C3:04; -01C4:08; -01C5:10; -01C6:20; -01C7:00; -01C8:00; -01C9:00; -01CA:00; -01CB:00; -01CC:00; -01CD:00; -01CE:00; -01CF:00; -01D0:00; -01D1:1C; -01D2:10; -01D3:10; -01D4:10; -01D5:10; -01D6:10; -01D7:1C; -01D8:00; -01D9:00; -01DA:00; -01DB:00; -01DC:00; -01DD:00; -01DE:00; -01DF:00; -01E0:00; -01E1:08; -01E2:1C; -01E3:2A; -01E4:08; -01E5:08; -01E6:08; -01E7:08; -01E8:00; -01E9:00; -01EA:00; -01EB:00; -01EC:00; -01ED:00; -01EE:00; -01EF:00; -01F0:00; -01F1:00; -01F2:08; -01F3:04; -01F4:3E; -01F5:04; -01F6:08; -01F7:00; -01F8:00; -01F9:00; -01FA:00; -01FB:00; -01FC:00; -01FD:00; -01FE:00; -01FF:00; -0200:00; -0201:00; -0202:00; -0203:00; -0204:00; -0205:00; -0206:00; -0207:00; -0208:00; -0209:00; -020A:00; -020B:00; -020C:00; -020D:00; -020E:00; -020F:00; -0210:00; -0211:08; -0212:08; -0213:08; -0214:08; -0215:08; -0216:00; -0217:08; -0218:00; -0219:00; -021A:00; -021B:00; -021C:00; -021D:00; -021E:00; -021F:00; -0220:00; -0221:14; -0222:14; -0223:00; -0224:00; -0225:00; -0226:00; -0227:00; -0228:00; -0229:00; -022A:00; -022B:00; -022C:00; -022D:00; -022E:00; -022F:00; -0230:00; -0231:14; -0232:14; -0233:3E; -0234:14; -0235:3E; -0236:14; -0237:14; -0238:00; -0239:00; -023A:00; -023B:00; -023C:00; -023D:00; -023E:00; -023F:00; -0240:00; -0241:08; -0242:3C; -0243:02; -0244:1C; -0245:20; -0246:1E; -0247:08; -0248:00; -0249:00; -024A:00; -024B:00; -024C:00; -024D:00; -024E:00; -024F:00; -0250:00; -0251:26; -0252:26; -0253:10; -0254:08; -0255:04; -0256:32; -0257:32; -0258:00; -0259:00; -025A:00; -025B:00; -025C:00; -025D:00; -025E:00; -025F:00; -0260:00; -0261:04; -0262:0A; -0263:0A; -0264:04; -0265:2A; -0266:12; -0267:2C; -0268:00; -0269:00; -026A:00; -026B:00; -026C:00; -026D:00; -026E:00; -026F:00; -0270:00; -0271:08; -0272:08; -0273:00; -0274:00; -0275:00; -0276:00; -0277:00; -0278:00; -0279:00; -027A:00; -027B:00; -027C:00; -027D:00; -027E:00; -027F:00; -0280:00; -0281:10; -0282:08; -0283:04; -0284:04; -0285:04; -0286:08; -0287:10; -0288:00; -0289:00; -028A:00; -028B:00; -028C:00; -028D:00; -028E:00; -028F:00; -0290:00; -0291:04; -0292:08; -0293:10; -0294:10; -0295:10; -0296:08; -0297:04; -0298:00; -0299:00; -029A:00; -029B:00; -029C:00; -029D:00; -029E:00; -029F:00; -02A0:00; -02A1:00; -02A2:08; -02A3:1C; -02A4:3E; -02A5:1C; -02A6:08; -02A7:00; -02A8:00; -02A9:00; -02AA:00; -02AB:00; -02AC:00; -02AD:00; -02AE:00; -02AF:00; -02B0:00; -02B1:00; -02B2:08; -02B3:08; -02B4:3E; -02B5:08; -02B6:08; -02B7:00; -02B8:00; -02B9:00; -02BA:00; -02BB:00; -02BC:00; -02BD:00; -02BE:00; -02BF:00; -02C0:00; -02C1:00; -02C2:00; -02C3:00; -02C4:00; -02C5:0C; -02C6:0C; -02C7:08; -02C8:04; -02C9:00; -02CA:00; -02CB:00; -02CC:00; -02CD:00; -02CE:00; -02CF:00; -02D0:00; -02D1:00; -02D2:00; -02D3:00; -02D4:3E; -02D5:00; -02D6:00; -02D7:00; -02D8:00; -02D9:00; -02DA:00; -02DB:00; -02DC:00; -02DD:00; -02DE:00; -02DF:00; -02E0:00; -02E1:00; -02E2:00; -02E3:00; -02E4:00; -02E5:00; -02E6:0C; -02E7:0C; -02E8:00; -02E9:00; -02EA:00; -02EB:00; -02EC:00; -02ED:00; -02EE:00; -02EF:00; -02F0:00; -02F1:00; -02F2:20; -02F3:10; -02F4:08; -02F5:04; -02F6:02; -02F7:00; -02F8:00; -02F9:00; -02FA:00; -02FB:00; -02FC:00; -02FD:00; -02FE:00; -02FF:00; -0300:00; -0301:0C; -0302:12; -0303:12; -0304:12; -0305:12; -0306:12; -0307:0C; -0308:00; -0309:00; -030A:00; -030B:00; -030C:00; -030D:00; -030E:00; -030F:00; -0310:00; -0311:08; -0312:0C; -0313:08; -0314:08; -0315:08; -0316:08; -0317:1C; -0318:00; -0319:00; -031A:00; -031B:00; -031C:00; -031D:00; -031E:00; -031F:00; -0320:00; -0321:1C; -0322:22; -0323:20; -0324:1C; -0325:02; -0326:02; -0327:3E; -0328:00; -0329:00; -032A:00; -032B:00; -032C:00; -032D:00; -032E:00; -032F:00; -0330:00; -0331:1C; -0332:22; -0333:20; -0334:1C; -0335:20; -0336:22; -0337:1C; -0338:00; -0339:00; -033A:00; -033B:00; -033C:00; -033D:00; -033E:00; -033F:00; -0340:00; -0341:10; -0342:18; -0343:14; -0344:3E; -0345:10; -0346:10; -0347:10; -0348:00; -0349:00; -034A:00; -034B:00; -034C:00; -034D:00; -034E:00; -034F:00; -0350:00; -0351:3E; -0352:02; -0353:1E; -0354:20; -0355:20; -0356:22; -0357:1C; -0358:00; -0359:00; -035A:00; -035B:00; -035C:00; -035D:00; -035E:00; -035F:00; -0360:00; -0361:1C; -0362:02; -0363:02; -0364:1E; -0365:22; -0366:22; -0367:1C; -0368:00; -0369:00; -036A:00; -036B:00; -036C:00; -036D:00; -036E:00; -036F:00; -0370:00; -0371:3E; -0372:20; -0373:10; -0374:08; -0375:04; -0376:02; -0377:02; -0378:00; -0379:00; -037A:00; -037B:00; -037C:00; -037D:00; -037E:00; -037F:00; -0380:00; -0381:1C; -0382:22; -0383:22; -0384:1C; -0385:22; -0386:22; -0387:1C; -0388:00; -0389:00; -038A:00; -038B:00; -038C:00; -038D:00; -038E:00; -038F:00; -0390:00; -0391:1C; -0392:22; -0393:22; -0394:3C; -0395:20; -0396:20; -0397:1C; -0398:00; -0399:00; -039A:00; -039B:00; -039C:00; -039D:00; -039E:00; -039F:00; -03A0:00; -03A1:00; -03A2:0C; -03A3:0C; -03A4:00; -03A5:0C; -03A6:0C; -03A7:00; -03A8:00; -03A9:00; -03AA:00; -03AB:00; -03AC:00; -03AD:00; -03AE:00; -03AF:00; -03B0:00; -03B1:00; -03B2:0C; -03B3:0C; -03B4:00; -03B5:0C; -03B6:0C; -03B7:08; -03B8:04; -03B9:00; -03BA:00; -03BB:00; -03BC:00; -03BD:00; -03BE:00; -03BF:00; -03C0:00; -03C1:20; -03C2:10; -03C3:08; -03C4:04; -03C5:08; -03C6:10; -03C7:20; -03C8:00; -03C9:00; -03CA:00; -03CB:00; -03CC:00; -03CD:00; -03CE:00; -03CF:00; -03D0:00; -03D1:00; -03D2:00; -03D3:3E; -03D4:00; -03D5:3E; -03D6:00; -03D7:00; -03D8:00; -03D9:00; -03DA:00; -03DB:00; -03DC:00; -03DD:00; -03DE:00; -03DF:00; -03E0:00; -03E1:04; -03E2:08; -03E3:10; -03E4:20; -03E5:10; -03E6:08; -03E7:04; -03E8:00; -03E9:00; -03EA:00; -03EB:00; -03EC:00; -03ED:00; -03EE:00; -03EF:00; -03F0:00; -03F1:1C; -03F2:22; -03F3:20; -03F4:10; -03F5:08; -03F6:00; -03F7:08; -03F8:00; -03F9:00; -03FA:00; -03FB:00; -03FC:00; -03FD:00; -03FE:00; -03FF:00; -0400:FF; -0401:E3; -0402:DD; -0403:DF; -0404:D3; -0405:CD; -0406:CD; -0407:E3; -0408:FF; -0409:FF; -040A:FF; -040B:FF; -040C:00; -040D:00; -040E:00; -040F:00; -0410:FF; -0411:F7; -0412:EB; -0413:DD; -0414:DD; -0415:C1; -0416:DD; -0417:DD; -0418:FF; -0419:FF; -041A:FF; -041B:FF; -041C:00; -041D:00; -041E:00; -041F:00; -0420:FF; -0421:E1; -0422:DB; -0423:DB; -0424:E3; -0425:DB; -0426:DB; -0427:E1; -0428:FF; -0429:FF; -042A:FF; -042B:FF; -042C:00; -042D:00; -042E:00; -042F:00; -0430:FF; -0431:E3; -0432:DD; -0433:FD; -0434:FD; -0435:FD; -0436:DD; -0437:E3; -0438:FF; -0439:FF; -043A:FF; -043B:FF; -043C:00; -043D:00; -043E:00; -043F:00; -0440:FF; -0441:E1; -0442:DB; -0443:DB; -0444:DB; -0445:DB; -0446:DB; -0447:E1; -0448:FF; -0449:FF; -044A:FF; -044B:FF; -044C:00; -044D:00; -044E:00; -044F:00; -0450:FF; -0451:C1; -0452:FD; -0453:FD; -0454:F1; -0455:FD; -0456:FD; -0457:C1; -0458:FF; -0459:FF; -045A:FF; -045B:FF; -045C:00; -045D:00; -045E:00; -045F:00; -0460:FF; -0461:C1; -0462:FD; -0463:FD; -0464:E1; -0465:FD; -0466:FD; -0467:FD; -0468:FF; -0469:FF; -046A:FF; -046B:FF; -046C:00; -046D:00; -046E:00; -046F:00; -0470:FF; -0471:C3; -0472:FD; -0473:FD; -0474:CD; -0475:DD; -0476:DD; -0477:C3; -0478:FF; -0479:FF; -047A:FF; -047B:FF; -047C:00; -047D:00; -047E:00; -047F:00; -0480:FF; -0481:DD; -0482:DD; -0483:DD; -0484:C1; -0485:DD; -0486:DD; -0487:DD; -0488:FF; -0489:FF; -048A:FF; -048B:FF; -048C:00; -048D:00; -048E:00; -048F:00; -0490:FF; -0491:E3; -0492:F7; -0493:F7; -0494:F7; -0495:F7; -0496:F7; -0497:E3; -0498:FF; -0499:FF; -049A:FF; -049B:FF; -049C:00; -049D:00; -049E:00; -049F:00; -04A0:FF; -04A1:DF; -04A2:DF; -04A3:DF; -04A4:DF; -04A5:DD; -04A6:DD; -04A7:E3; -04A8:FF; -04A9:FF; -04AA:FF; -04AB:FF; -04AC:00; -04AD:00; -04AE:00; -04AF:00; -04B0:FF; -04B1:DD; -04B2:ED; -04B3:F5; -04B4:F9; -04B5:F5; -04B6:ED; -04B7:DD; -04B8:FF; -04B9:FF; -04BA:FF; -04BB:FF; -04BC:00; -04BD:00; -04BE:00; -04BF:00; -04C0:FF; -04C1:FD; -04C2:FD; -04C3:FD; -04C4:FD; -04C5:FD; -04C6:FD; -04C7:C1; -04C8:FF; -04C9:FF; -04CA:FF; -04CB:FF; -04CC:00; -04CD:00; -04CE:00; -04CF:00; -04D0:FF; -04D1:DD; -04D2:C9; -04D3:C1; -04D4:D5; -04D5:DD; -04D6:DD; -04D7:DD; -04D8:FF; -04D9:FF; -04DA:FF; -04DB:FF; -04DC:00; -04DD:00; -04DE:00; -04DF:00; -04E0:FF; -04E1:DD; -04E2:DD; -04E3:D9; -04E4:D5; -04E5:CD; -04E6:DD; -04E7:DD; -04E8:FF; -04E9:FF; -04EA:FF; -04EB:FF; -04EC:00; -04ED:00; -04EE:00; -04EF:00; -04F0:FF; -04F1:C1; -04F2:DD; -04F3:DD; -04F4:DD; -04F5:DD; -04F6:DD; -04F7:C1; -04F8:FF; -04F9:FF; -04FA:FF; -04FB:FF; -04FC:00; -04FD:00; -04FE:00; -04FF:00; -0500:FF; -0501:E1; -0502:DD; -0503:DD; -0504:E1; -0505:FD; -0506:FD; -0507:FD; -0508:FF; -0509:FF; -050A:FF; -050B:FF; -050C:00; -050D:00; -050E:00; -050F:00; -0510:FF; -0511:E3; -0512:DD; -0513:DD; -0514:DD; -0515:D5; -0516:ED; -0517:D3; -0518:FF; -0519:FF; -051A:FF; -051B:FF; -051C:00; -051D:00; -051E:00; -051F:00; -0520:FF; -0521:E1; -0522:DD; -0523:DD; -0524:E1; -0525:F5; -0526:ED; -0527:DD; -0528:FF; -0529:FF; -052A:FF; -052B:FF; -052C:00; -052D:00; -052E:00; -052F:00; -0530:FF; -0531:E3; -0532:DD; -0533:FB; -0534:F7; -0535:EF; -0536:DD; -0537:E3; -0538:FF; -0539:FF; -053A:FF; -053B:FF; -053C:00; -053D:00; -053E:00; -053F:00; -0540:FF; -0541:C1; -0542:F7; -0543:F7; -0544:F7; -0545:F7; -0546:F7; -0547:F7; -0548:FF; -0549:FF; -054A:FF; -054B:FF; -054C:00; -054D:00; -054E:00; -054F:00; -0550:FF; -0551:DD; -0552:DD; -0553:DD; -0554:DD; -0555:DD; -0556:DD; -0557:E3; -0558:FF; -0559:FF; -055A:FF; -055B:FF; -055C:00; -055D:00; -055E:00; -055F:00; -0560:FF; -0561:DD; -0562:DD; -0563:DD; -0564:EB; -0565:EB; -0566:F7; -0567:F7; -0568:FF; -0569:FF; -056A:FF; -056B:FF; -056C:00; -056D:00; -056E:00; -056F:00; -0570:FF; -0571:DD; -0572:DD; -0573:DD; -0574:D5; -0575:C1; -0576:C9; -0577:DD; -0578:FF; -0579:FF; -057A:FF; -057B:FF; -057C:00; -057D:00; -057E:00; -057F:00; -0580:FF; -0581:DD; -0582:DD; -0583:EB; -0584:F7; -0585:EB; -0586:DD; -0587:DD; -0588:FF; -0589:FF; -058A:FF; -058B:FF; -058C:00; -058D:00; -058E:00; -058F:00; -0590:FF; -0591:DD; -0592:DD; -0593:EB; -0594:F7; -0595:F7; -0596:F7; -0597:F7; -0598:FF; -0599:FF; -059A:FF; -059B:FF; -059C:00; -059D:00; -059E:00; -059F:00; -05A0:FF; -05A1:C1; -05A2:DF; -05A3:EF; -05A4:F7; -05A5:FB; -05A6:FD; -05A7:C1; -05A8:FF; -05A9:FF; -05AA:FF; -05AB:FF; -05AC:00; -05AD:00; -05AE:00; -05AF:00; -05B0:FF; -05B1:E3; -05B2:FB; -05B3:FB; -05B4:FB; -05B5:FB; -05B6:FB; -05B7:E3; -05B8:FF; -05B9:FF; -05BA:FF; -05BB:FF; -05BC:00; -05BD:00; -05BE:00; -05BF:00; -05C0:FF; -05C1:FF; -05C2:FD; -05C3:FB; -05C4:F7; -05C5:EF; -05C6:DF; -05C7:FF; -05C8:FF; -05C9:FF; -05CA:FF; -05CB:FF; -05CC:00; -05CD:00; -05CE:00; -05CF:00; -05D0:FF; -05D1:E3; -05D2:EF; -05D3:EF; -05D4:EF; -05D5:EF; -05D6:EF; -05D7:E3; -05D8:FF; -05D9:FF; -05DA:FF; -05DB:FF; -05DC:00; -05DD:00; -05DE:00; -05DF:00; -05E0:FF; -05E1:F7; -05E2:E3; -05E3:D5; -05E4:F7; -05E5:F7; -05E6:F7; -05E7:F7; -05E8:FF; -05E9:FF; -05EA:FF; -05EB:FF; -05EC:00; -05ED:00; -05EE:00; -05EF:00; -05F0:FF; -05F1:FF; -05F2:F7; -05F3:FB; -05F4:C1; -05F5:FB; -05F6:F7; -05F7:FF; -05F8:FF; -05F9:FF; -05FA:FF; -05FB:FF; -05FC:00; -05FD:00; -05FE:00; -05FF:00; -0600:FF; -0601:FF; -0602:FF; -0603:FF; -0604:FF; -0605:FF; -0606:FF; -0607:FF; -0608:FF; -0609:FF; -060A:FF; -060B:FF; -060C:00; -060D:00; -060E:00; -060F:00; -0610:FF; -0611:F7; -0612:F7; -0613:F7; -0614:F7; -0615:F7; -0616:FF; -0617:F7; -0618:FF; -0619:FF; -061A:FF; -061B:FF; -061C:00; -061D:00; -061E:00; -061F:00; -0620:FF; -0621:EB; -0622:EB; -0623:FF; -0624:FF; -0625:FF; -0626:FF; -0627:FF; -0628:FF; -0629:FF; -062A:FF; -062B:FF; -062C:00; -062D:00; -062E:00; -062F:00; -0630:FF; -0631:EB; -0632:EB; -0633:C1; -0634:EB; -0635:C1; -0636:EB; -0637:EB; -0638:FF; -0639:FF; -063A:FF; -063B:FF; -063C:00; -063D:00; -063E:00; -063F:00; -0640:FF; -0641:F7; -0642:C3; -0643:FD; -0644:E3; -0645:DF; -0646:E1; -0647:F7; -0648:FF; -0649:FF; -064A:FF; -064B:FF; -064C:00; -064D:00; -064E:00; -064F:00; -0650:FF; -0651:D9; -0652:D9; -0653:EF; -0654:F7; -0655:FB; -0656:CD; -0657:CD; -0658:FF; -0659:FF; -065A:FF; -065B:FF; -065C:00; -065D:00; -065E:00; -065F:00; -0660:FF; -0661:FB; -0662:F5; -0663:F5; -0664:FB; -0665:D5; -0666:ED; -0667:D3; -0668:FF; -0669:FF; -066A:FF; -066B:FF; -066C:00; -066D:00; -066E:00; -066F:00; -0670:FF; -0671:F7; -0672:F7; -0673:FF; -0674:FF; -0675:FF; -0676:FF; -0677:FF; -0678:FF; -0679:FF; -067A:FF; -067B:FF; -067C:00; -067D:00; -067E:00; -067F:00; -0680:FF; -0681:EF; -0682:F7; -0683:FB; -0684:FB; -0685:FB; -0686:F7; -0687:EF; -0688:FF; -0689:FF; -068A:FF; -068B:FF; -068C:00; -068D:00; -068E:00; -068F:00; -0690:FF; -0691:FB; -0692:F7; -0693:EF; -0694:EF; -0695:EF; -0696:F7; -0697:FB; -0698:FF; -0699:FF; -069A:FF; -069B:FF; -069C:00; -069D:00; -069E:00; -069F:00; -06A0:FF; -06A1:FF; -06A2:F7; -06A3:E3; -06A4:C1; -06A5:E3; -06A6:F7; -06A7:FF; -06A8:FF; -06A9:FF; -06AA:FF; -06AB:FF; -06AC:00; -06AD:00; -06AE:00; -06AF:00; -06B0:FF; -06B1:FF; -06B2:F7; -06B3:F7; -06B4:C1; -06B5:F7; -06B6:F7; -06B7:FF; -06B8:FF; -06B9:FF; -06BA:FF; -06BB:FF; -06BC:00; -06BD:00; -06BE:00; -06BF:00; -06C0:FF; -06C1:FF; -06C2:FF; -06C3:FF; -06C4:FF; -06C5:F3; -06C6:F3; -06C7:F7; -06C8:FB; -06C9:FF; -06CA:FF; -06CB:FF; -06CC:00; -06CD:00; -06CE:00; -06CF:00; -06D0:FF; -06D1:FF; -06D2:FF; -06D3:FF; -06D4:C1; -06D5:FF; -06D6:FF; -06D7:FF; -06D8:FF; -06D9:FF; -06DA:FF; -06DB:FF; -06DC:00; -06DD:00; -06DE:00; -06DF:00; -06E0:FF; -06E1:FF; -06E2:FF; -06E3:FF; -06E4:FF; -06E5:FF; -06E6:F3; -06E7:F3; -06E8:FF; -06E9:FF; -06EA:FF; -06EB:FF; -06EC:00; -06ED:00; -06EE:00; -06EF:00; -06F0:FF; -06F1:FF; -06F2:DF; -06F3:EF; -06F4:F7; -06F5:FB; -06F6:FD; -06F7:FF; -06F8:FF; -06F9:FF; -06FA:FF; -06FB:FF; -06FC:00; -06FD:00; -06FE:00; -06FF:00; -0700:FF; -0701:F3; -0702:ED; -0703:ED; -0704:ED; -0705:ED; -0706:ED; -0707:F3; -0708:FF; -0709:FF; -070A:FF; -070B:FF; -070C:00; -070D:00; -070E:00; -070F:00; -0710:FF; -0711:F7; -0712:F3; -0713:F7; -0714:F7; -0715:F7; -0716:F7; -0717:E3; -0718:FF; -0719:FF; -071A:FF; -071B:FF; -071C:00; -071D:00; -071E:00; -071F:00; -0720:FF; -0721:E3; -0722:DD; -0723:DF; -0724:E3; -0725:FD; -0726:FD; -0727:C1; -0728:FF; -0729:FF; -072A:FF; -072B:FF; -072C:00; -072D:00; -072E:00; -072F:00; -0730:FF; -0731:E3; -0732:DD; -0733:DF; -0734:E3; -0735:DF; -0736:DD; -0737:E3; -0738:FF; -0739:FF; -073A:FF; -073B:FF; -073C:00; -073D:00; -073E:00; -073F:00; -0740:FF; -0741:EF; -0742:E7; -0743:EB; -0744:C1; -0745:EF; -0746:EF; -0747:EF; -0748:FF; -0749:FF; -074A:FF; -074B:FF; -074C:00; -074D:00; -074E:00; -074F:00; -0750:FF; -0751:C1; -0752:FD; -0753:E1; -0754:DF; -0755:DF; -0756:DD; -0757:E3; -0758:FF; -0759:FF; -075A:FF; -075B:FF; -075C:00; -075D:00; -075E:00; -075F:00; -0760:FF; -0761:E3; -0762:FD; -0763:FD; -0764:E1; -0765:DD; -0766:DD; -0767:E3; -0768:FF; -0769:FF; -076A:FF; -076B:FF; -076C:00; -076D:00; -076E:00; -076F:00; -0770:FF; -0771:C1; -0772:DF; -0773:EF; -0774:F7; -0775:FB; -0776:FD; -0777:FD; -0778:FF; -0779:FF; -077A:FF; -077B:FF; -077C:00; -077D:00; -077E:00; -077F:00; -0780:FF; -0781:E3; -0782:DD; -0783:DD; -0784:E3; -0785:DD; -0786:DD; -0787:E3; -0788:FF; -0789:FF; -078A:FF; -078B:FF; -078C:00; -078D:00; -078E:00; -078F:00; -0790:FF; -0791:E3; -0792:DD; -0793:DD; -0794:C3; -0795:DF; -0796:DF; -0797:E3; -0798:FF; -0799:FF; -079A:FF; -079B:FF; -079C:00; -079D:00; -079E:00; -079F:00; -07A0:FF; -07A1:FF; -07A2:F3; -07A3:F3; -07A4:FF; -07A5:F3; -07A6:F3; -07A7:FF; -07A8:FF; -07A9:FF; -07AA:FF; -07AB:FF; -07AC:00; -07AD:00; -07AE:00; -07AF:00; -07B0:FF; -07B1:FF; -07B2:F3; -07B3:F3; -07B4:FF; -07B5:F3; -07B6:F3; -07B7:F7; -07B8:FB; -07B9:FF; -07BA:FF; -07BB:FF; -07BC:00; -07BD:00; -07BE:00; -07BF:00; -07C0:FF; -07C1:DF; -07C2:EF; -07C3:F7; -07C4:FB; -07C5:F7; -07C6:EF; -07C7:DF; -07C8:FF; -07C9:FF; -07CA:FF; -07CB:FF; -07CC:00; -07CD:00; -07CE:00; -07CF:00; -07D0:FF; -07D1:FF; -07D2:FF; -07D3:C1; -07D4:FF; -07D5:C1; -07D6:FF; -07D7:FF; -07D8:FF; -07D9:FF; -07DA:FF; -07DB:FF; -07DC:00; -07DD:00; -07DE:00; -07DF:00; -07E0:FF; -07E1:FB; -07E2:F7; -07E3:EF; -07E4:DF; -07E5:EF; -07E6:F7; -07E7:FB; -07E8:FF; -07E9:FF; -07EA:FF; -07EB:FF; -07EC:00; -07ED:00; -07EE:00; -07EF:00; -07F0:FF; -07F1:E3; -07F2:DD; -07F3:DF; -07F4:EF; -07F5:F7; -07F6:FF; -07F7:F7; -07F8:FF; -07F9:FF; -07FA:FF; -07FB:FF; -07FC:00; -07FD:00; -07FE:00; -07FF:00; -0800:00; -0801:00; -0802:00; -0803:00; -0804:00; -0805:00; -0806:00; -0807:00; -0808:00; -0809:00; -080A:00; -080B:00; -080C:00; -080D:00; -080E:00; -080F:00; -0810:00; -0811:00; -0812:00; -0813:00; -0814:00; -0815:00; -0816:F0; -0817:F0; -0818:F0; -0819:F0; -081A:F0; -081B:F0; -081C:00; -081D:00; -081E:00; -081F:00; -0820:00; -0821:00; -0822:00; -0823:00; -0824:00; -0825:00; -0826:0F; -0827:0F; -0828:0F; -0829:0F; -082A:0F; -082B:0F; -082C:00; -082D:00; -082E:00; -082F:00; -0830:00; -0831:00; -0832:00; -0833:00; -0834:00; -0835:00; -0836:FF; -0837:FF; -0838:FF; -0839:FF; -083A:FF; -083B:FF; -083C:00; -083D:00; -083E:00; -083F:00; -0840:F0; -0841:F0; -0842:F0; -0843:F0; -0844:F0; -0845:F0; -0846:00; -0847:00; -0848:00; -0849:00; -084A:00; -084B:00; -084C:00; -084D:00; -084E:00; -084F:00; -0850:F0; -0851:F0; -0852:F0; -0853:F0; -0854:F0; -0855:F0; -0856:F0; -0857:F0; -0858:F0; -0859:F0; -085A:F0; -085B:F0; -085C:00; -085D:00; -085E:00; -085F:00; -0860:F0; -0861:F0; -0862:F0; -0863:F0; -0864:F0; -0865:F0; -0866:0F; -0867:0F; -0868:0F; -0869:0F; -086A:0F; -086B:0F; -086C:00; -086D:00; -086E:00; -086F:00; -0870:F0; -0871:F0; -0872:F0; -0873:F0; -0874:F0; -0875:F0; -0876:FF; -0877:FF; -0878:FF; -0879:FF; -087A:FF; -087B:FF; -087C:00; -087D:00; -087E:00; -087F:00; -0880:0F; -0881:0F; -0882:0F; -0883:0F; -0884:0F; -0885:0F; -0886:00; -0887:00; -0888:00; -0889:00; -088A:00; -088B:00; -088C:00; -088D:00; -088E:00; -088F:00; -0890:0F; -0891:0F; -0892:0F; -0893:0F; -0894:0F; -0895:0F; -0896:F0; -0897:F0; -0898:F0; -0899:F0; -089A:F0; -089B:F0; -089C:00; -089D:00; -089E:00; -089F:00; -08A0:0F; -08A1:0F; -08A2:0F; -08A3:0F; -08A4:0F; -08A5:0F; -08A6:0F; -08A7:0F; -08A8:0F; -08A9:0F; -08AA:0F; -08AB:0F; -08AC:00; -08AD:00; -08AE:00; -08AF:00; -08B0:0F; -08B1:0F; -08B2:0F; -08B3:0F; -08B4:0F; -08B5:0F; -08B6:FF; -08B7:FF; -08B8:FF; -08B9:FF; -08BA:FF; -08BB:FF; -08BC:00; -08BD:00; -08BE:00; -08BF:00; -08C0:FF; -08C1:FF; -08C2:FF; -08C3:FF; -08C4:FF; -08C5:FF; -08C6:00; -08C7:00; -08C8:00; -08C9:00; -08CA:00; -08CB:00; -08CC:00; -08CD:00; -08CE:00; -08CF:00; -08D0:FF; -08D1:FF; -08D2:FF; -08D3:FF; -08D4:FF; -08D5:FF; -08D6:F0; -08D7:F0; -08D8:F0; -08D9:F0; -08DA:F0; -08DB:F0; -08DC:00; -08DD:00; -08DE:00; -08DF:00; -08E0:FF; -08E1:FF; -08E2:FF; -08E3:FF; -08E4:FF; -08E5:FF; -08E6:0F; -08E7:0F; -08E8:0F; -08E9:0F; -08EA:0F; -08EB:0F; -08EC:00; -08ED:00; -08EE:00; -08EF:00; -08F0:FF; -08F1:FF; -08F2:FF; -08F3:FF; -08F4:FF; -08F5:FF; -08F6:FF; -08F7:FF; -08F8:FF; -08F9:FF; -08FA:FF; -08FB:FF; -08FC:00; -08FD:00; -08FE:00; -08FF:00; -0900:00; -0901:00; -0902:00; -0903:00; -0904:00; -0905:00; -0906:00; -0907:00; -0908:00; -0909:00; -090A:00; -090B:00; -090C:00; -090D:00; -090E:00; -090F:00; -0910:00; -0911:00; -0912:00; -0913:00; -0914:00; -0915:00; -0916:F0; -0917:F0; -0918:F0; -0919:F0; -091A:F0; -091B:F0; -091C:00; -091D:00; -091E:00; -091F:00; -0920:00; -0921:00; -0922:00; -0923:00; -0924:00; -0925:00; -0926:0F; -0927:0F; -0928:0F; -0929:0F; -092A:0F; -092B:0F; -092C:00; -092D:00; -092E:00; -092F:00; -0930:00; -0931:00; -0932:00; -0933:00; -0934:00; -0935:00; -0936:FF; -0937:FF; -0938:FF; -0939:FF; -093A:FF; -093B:FF; -093C:00; -093D:00; -093E:00; -093F:00; -0940:F0; -0941:F0; -0942:F0; -0943:F0; -0944:F0; -0945:F0; -0946:00; -0947:00; -0948:00; -0949:00; -094A:00; -094B:00; -094C:00; -094D:00; -094E:00; -094F:00; -0950:F0; -0951:F0; -0952:F0; -0953:F0; -0954:F0; -0955:F0; -0956:F0; -0957:F0; -0958:F0; -0959:F0; -095A:F0; -095B:F0; -095C:00; -095D:00; -095E:00; -095F:00; -0960:F0; -0961:F0; -0962:F0; -0963:F0; -0964:F0; -0965:F0; -0966:0F; -0967:0F; -0968:0F; -0969:0F; -096A:0F; -096B:0F; -096C:00; -096D:00; -096E:00; -096F:00; -0970:F0; -0971:F0; -0972:F0; -0973:F0; -0974:F0; -0975:F0; -0976:FF; -0977:FF; -0978:FF; -0979:FF; -097A:FF; -097B:FF; -097C:00; -097D:00; -097E:00; -097F:00; -0980:0F; -0981:0F; -0982:0F; -0983:0F; -0984:0F; -0985:0F; -0986:00; -0987:00; -0988:00; -0989:00; -098A:00; -098B:00; -098C:00; -098D:00; -098E:00; -098F:00; -0990:0F; -0991:0F; -0992:0F; -0993:0F; -0994:0F; -0995:0F; -0996:F0; -0997:F0; -0998:F0; -0999:F0; -099A:F0; -099B:F0; -099C:00; -099D:00; -099E:00; -099F:00; -09A0:0F; -09A1:0F; -09A2:0F; -09A3:0F; -09A4:0F; -09A5:0F; -09A6:0F; -09A7:0F; -09A8:0F; -09A9:0F; -09AA:0F; -09AB:0F; -09AC:00; -09AD:00; -09AE:00; -09AF:00; -09B0:0F; -09B1:0F; -09B2:0F; -09B3:0F; -09B4:0F; -09B5:0F; -09B6:FF; -09B7:FF; -09B8:FF; -09B9:FF; -09BA:FF; -09BB:FF; -09BC:00; -09BD:00; -09BE:00; -09BF:00; -09C0:FF; -09C1:FF; -09C2:FF; -09C3:FF; -09C4:FF; -09C5:FF; -09C6:00; -09C7:00; -09C8:00; -09C9:00; -09CA:00; -09CB:00; -09CC:00; -09CD:00; -09CE:00; -09CF:00; -09D0:FF; -09D1:FF; -09D2:FF; -09D3:FF; -09D4:FF; -09D5:FF; -09D6:F0; -09D7:F0; -09D8:F0; -09D9:F0; -09DA:F0; -09DB:F0; -09DC:00; -09DD:00; -09DE:00; -09DF:00; -09E0:FF; -09E1:FF; -09E2:FF; -09E3:FF; -09E4:FF; -09E5:FF; -09E6:0F; -09E7:0F; -09E8:0F; -09E9:0F; -09EA:0F; -09EB:0F; -09EC:00; -09ED:00; -09EE:00; -09EF:00; -09F0:FF; -09F1:FF; -09F2:FF; -09F3:FF; -09F4:FF; -09F5:FF; -09F6:FF; -09F7:FF; -09F8:FF; -09F9:FF; -09FA:FF; -09FB:FF; -09FC:00; -09FD:00; -09FE:00; -09FF:00; -0A00:00; -0A01:00; -0A02:00; -0A03:00; -0A04:00; -0A05:00; -0A06:00; -0A07:00; -0A08:00; -0A09:00; -0A0A:00; -0A0B:00; -0A0C:00; -0A0D:00; -0A0E:00; -0A0F:00; -0A10:00; -0A11:00; -0A12:00; -0A13:00; -0A14:00; -0A15:00; -0A16:F0; -0A17:F0; -0A18:F0; -0A19:F0; -0A1A:F0; -0A1B:F0; -0A1C:00; -0A1D:00; -0A1E:00; -0A1F:00; -0A20:00; -0A21:00; -0A22:00; -0A23:00; -0A24:00; -0A25:00; -0A26:0F; -0A27:0F; -0A28:0F; -0A29:0F; -0A2A:0F; -0A2B:0F; -0A2C:00; -0A2D:00; -0A2E:00; -0A2F:00; -0A30:00; -0A31:00; -0A32:00; -0A33:00; -0A34:00; -0A35:00; -0A36:FF; -0A37:FF; -0A38:FF; -0A39:FF; -0A3A:FF; -0A3B:FF; -0A3C:00; -0A3D:00; -0A3E:00; -0A3F:00; -0A40:F0; -0A41:F0; -0A42:F0; -0A43:F0; -0A44:F0; -0A45:F0; -0A46:00; -0A47:00; -0A48:00; -0A49:00; -0A4A:00; -0A4B:00; -0A4C:00; -0A4D:00; -0A4E:00; -0A4F:00; -0A50:F0; -0A51:F0; -0A52:F0; -0A53:F0; -0A54:F0; -0A55:F0; -0A56:F0; -0A57:F0; -0A58:F0; -0A59:F0; -0A5A:F0; -0A5B:F0; -0A5C:00; -0A5D:00; -0A5E:00; -0A5F:00; -0A60:F0; -0A61:F0; -0A62:F0; -0A63:F0; -0A64:F0; -0A65:F0; -0A66:0F; -0A67:0F; -0A68:0F; -0A69:0F; -0A6A:0F; -0A6B:0F; -0A6C:00; -0A6D:00; -0A6E:00; -0A6F:00; -0A70:F0; -0A71:F0; -0A72:F0; -0A73:F0; -0A74:F0; -0A75:F0; -0A76:FF; -0A77:FF; -0A78:FF; -0A79:FF; -0A7A:FF; -0A7B:FF; -0A7C:00; -0A7D:00; -0A7E:00; -0A7F:00; -0A80:0F; -0A81:0F; -0A82:0F; -0A83:0F; -0A84:0F; -0A85:0F; -0A86:00; -0A87:00; -0A88:00; -0A89:00; -0A8A:00; -0A8B:00; -0A8C:00; -0A8D:00; -0A8E:00; -0A8F:00; -0A90:0F; -0A91:0F; -0A92:0F; -0A93:0F; -0A94:0F; -0A95:0F; -0A96:F0; -0A97:F0; -0A98:F0; -0A99:F0; -0A9A:F0; -0A9B:F0; -0A9C:00; -0A9D:00; -0A9E:00; -0A9F:00; -0AA0:0F; -0AA1:0F; -0AA2:0F; -0AA3:0F; -0AA4:0F; -0AA5:0F; -0AA6:0F; -0AA7:0F; -0AA8:0F; -0AA9:0F; -0AAA:0F; -0AAB:0F; -0AAC:00; -0AAD:00; -0AAE:00; -0AAF:00; -0AB0:0F; -0AB1:0F; -0AB2:0F; -0AB3:0F; -0AB4:0F; -0AB5:0F; -0AB6:FF; -0AB7:FF; -0AB8:FF; -0AB9:FF; -0ABA:FF; -0ABB:FF; -0ABC:00; -0ABD:00; -0ABE:00; -0ABF:00; -0AC0:FF; -0AC1:FF; -0AC2:FF; -0AC3:FF; -0AC4:FF; -0AC5:FF; -0AC6:00; -0AC7:00; -0AC8:00; -0AC9:00; -0ACA:00; -0ACB:00; -0ACC:00; -0ACD:00; -0ACE:00; -0ACF:00; -0AD0:FF; -0AD1:FF; -0AD2:FF; -0AD3:FF; -0AD4:FF; -0AD5:FF; -0AD6:F0; -0AD7:F0; -0AD8:F0; -0AD9:F0; -0ADA:F0; -0ADB:F0; -0ADC:00; -0ADD:00; -0ADE:00; -0ADF:00; -0AE0:FF; -0AE1:FF; -0AE2:FF; -0AE3:FF; -0AE4:FF; -0AE5:FF; -0AE6:0F; -0AE7:0F; -0AE8:0F; -0AE9:0F; -0AEA:0F; -0AEB:0F; -0AEC:00; -0AED:00; -0AEE:00; -0AEF:00; -0AF0:FF; -0AF1:FF; -0AF2:FF; -0AF3:FF; -0AF4:FF; -0AF5:FF; -0AF6:FF; -0AF7:FF; -0AF8:FF; -0AF9:FF; -0AFA:FF; -0AFB:FF; -0AFC:00; -0AFD:00; -0AFE:00; -0AFF:00; -0B00:00; -0B01:00; -0B02:00; -0B03:00; -0B04:00; -0B05:00; -0B06:00; -0B07:00; -0B08:00; -0B09:00; -0B0A:00; -0B0B:00; -0B0C:00; -0B0D:00; -0B0E:00; -0B0F:00; -0B10:00; -0B11:00; -0B12:00; -0B13:00; -0B14:00; -0B15:00; -0B16:F0; -0B17:F0; -0B18:F0; -0B19:F0; -0B1A:F0; -0B1B:F0; -0B1C:00; -0B1D:00; -0B1E:00; -0B1F:00; -0B20:00; -0B21:00; -0B22:00; -0B23:00; -0B24:00; -0B25:00; -0B26:0F; -0B27:0F; -0B28:0F; -0B29:0F; -0B2A:0F; -0B2B:0F; -0B2C:00; -0B2D:00; -0B2E:00; -0B2F:00; -0B30:00; -0B31:00; -0B32:00; -0B33:00; -0B34:00; -0B35:00; -0B36:FF; -0B37:FF; -0B38:FF; -0B39:FF; -0B3A:FF; -0B3B:FF; -0B3C:00; -0B3D:00; -0B3E:00; -0B3F:00; -0B40:F0; -0B41:F0; -0B42:F0; -0B43:F0; -0B44:F0; -0B45:F0; -0B46:00; -0B47:00; -0B48:00; -0B49:00; -0B4A:00; -0B4B:00; -0B4C:00; -0B4D:00; -0B4E:00; -0B4F:00; -0B50:F0; -0B51:F0; -0B52:F0; -0B53:F0; -0B54:F0; -0B55:F0; -0B56:F0; -0B57:F0; -0B58:F0; -0B59:F0; -0B5A:F0; -0B5B:F0; -0B5C:00; -0B5D:00; -0B5E:00; -0B5F:00; -0B60:F0; -0B61:F0; -0B62:F0; -0B63:F0; -0B64:F0; -0B65:F0; -0B66:0F; -0B67:0F; -0B68:0F; -0B69:0F; -0B6A:0F; -0B6B:0F; -0B6C:00; -0B6D:00; -0B6E:00; -0B6F:00; -0B70:F0; -0B71:F0; -0B72:F0; -0B73:F0; -0B74:F0; -0B75:F0; -0B76:FF; -0B77:FF; -0B78:FF; -0B79:FF; -0B7A:FF; -0B7B:FF; -0B7C:00; -0B7D:00; -0B7E:00; -0B7F:00; -0B80:0F; -0B81:0F; -0B82:0F; -0B83:0F; -0B84:0F; -0B85:0F; -0B86:00; -0B87:00; -0B88:00; -0B89:00; -0B8A:00; -0B8B:00; -0B8C:00; -0B8D:00; -0B8E:00; -0B8F:00; -0B90:0F; -0B91:0F; -0B92:0F; -0B93:0F; -0B94:0F; -0B95:0F; -0B96:F0; -0B97:F0; -0B98:F0; -0B99:F0; -0B9A:F0; -0B9B:F0; -0B9C:00; -0B9D:00; -0B9E:00; -0B9F:00; -0BA0:0F; -0BA1:0F; -0BA2:0F; -0BA3:0F; -0BA4:0F; -0BA5:0F; -0BA6:0F; -0BA7:0F; -0BA8:0F; -0BA9:0F; -0BAA:0F; -0BAB:0F; -0BAC:00; -0BAD:00; -0BAE:00; -0BAF:00; -0BB0:0F; -0BB1:0F; -0BB2:0F; -0BB3:0F; -0BB4:0F; -0BB5:0F; -0BB6:FF; -0BB7:FF; -0BB8:FF; -0BB9:FF; -0BBA:FF; -0BBB:FF; -0BBC:00; -0BBD:00; -0BBE:00; -0BBF:00; -0BC0:FF; -0BC1:FF; -0BC2:FF; -0BC3:FF; -0BC4:FF; -0BC5:FF; -0BC6:00; -0BC7:00; -0BC8:00; -0BC9:00; -0BCA:00; -0BCB:00; -0BCC:00; -0BCD:00; -0BCE:00; -0BCF:00; -0BD0:FF; -0BD1:FF; -0BD2:FF; -0BD3:FF; -0BD4:FF; -0BD5:FF; -0BD6:F0; -0BD7:F0; -0BD8:F0; -0BD9:F0; -0BDA:F0; -0BDB:F0; -0BDC:00; -0BDD:00; -0BDE:00; -0BDF:00; -0BE0:FF; -0BE1:FF; -0BE2:FF; -0BE3:FF; -0BE4:FF; -0BE5:FF; -0BE6:0F; -0BE7:0F; -0BE8:0F; -0BE9:0F; -0BEA:0F; -0BEB:0F; -0BEC:00; -0BED:00; -0BEE:00; -0BEF:00; -0BF0:FF; -0BF1:FF; -0BF2:FF; -0BF3:FF; -0BF4:FF; -0BF5:FF; -0BF6:FF; -0BF7:FF; -0BF8:FF; -0BF9:FF; -0BFA:FF; -0BFB:FF; -0BFC:00; -0BFD:00; -0BFE:00; -0BFF:00; -0C00:00; -0C01:00; -0C02:00; -0C03:00; -0C04:00; -0C05:00; -0C06:00; -0C07:00; -0C08:00; -0C09:00; -0C0A:00; -0C0B:00; -0C0C:00; -0C0D:00; -0C0E:00; -0C0F:00; -0C10:00; -0C11:00; -0C12:00; -0C13:00; -0C14:00; -0C15:00; -0C16:F0; -0C17:F0; -0C18:F0; -0C19:F0; -0C1A:F0; -0C1B:F0; -0C1C:00; -0C1D:00; -0C1E:00; -0C1F:00; -0C20:00; -0C21:00; -0C22:00; -0C23:00; -0C24:00; -0C25:00; -0C26:0F; -0C27:0F; -0C28:0F; -0C29:0F; -0C2A:0F; -0C2B:0F; -0C2C:00; -0C2D:00; -0C2E:00; -0C2F:00; -0C30:00; -0C31:00; -0C32:00; -0C33:00; -0C34:00; -0C35:00; -0C36:FF; -0C37:FF; -0C38:FF; -0C39:FF; -0C3A:FF; -0C3B:FF; -0C3C:00; -0C3D:00; -0C3E:00; -0C3F:00; -0C40:F0; -0C41:F0; -0C42:F0; -0C43:F0; -0C44:F0; -0C45:F0; -0C46:00; -0C47:00; -0C48:00; -0C49:00; -0C4A:00; -0C4B:00; -0C4C:00; -0C4D:00; -0C4E:00; -0C4F:00; -0C50:F0; -0C51:F0; -0C52:F0; -0C53:F0; -0C54:F0; -0C55:F0; -0C56:F0; -0C57:F0; -0C58:F0; -0C59:F0; -0C5A:F0; -0C5B:F0; -0C5C:00; -0C5D:00; -0C5E:00; -0C5F:00; -0C60:F0; -0C61:F0; -0C62:F0; -0C63:F0; -0C64:F0; -0C65:F0; -0C66:0F; -0C67:0F; -0C68:0F; -0C69:0F; -0C6A:0F; -0C6B:0F; -0C6C:00; -0C6D:00; -0C6E:00; -0C6F:00; -0C70:F0; -0C71:F0; -0C72:F0; -0C73:F0; -0C74:F0; -0C75:F0; -0C76:FF; -0C77:FF; -0C78:FF; -0C79:FF; -0C7A:FF; -0C7B:FF; -0C7C:00; -0C7D:00; -0C7E:00; -0C7F:00; -0C80:0F; -0C81:0F; -0C82:0F; -0C83:0F; -0C84:0F; -0C85:0F; -0C86:00; -0C87:00; -0C88:00; -0C89:00; -0C8A:00; -0C8B:00; -0C8C:00; -0C8D:00; -0C8E:00; -0C8F:00; -0C90:0F; -0C91:0F; -0C92:0F; -0C93:0F; -0C94:0F; -0C95:0F; -0C96:F0; -0C97:F0; -0C98:F0; -0C99:F0; -0C9A:F0; -0C9B:F0; -0C9C:00; -0C9D:00; -0C9E:00; -0C9F:00; -0CA0:0F; -0CA1:0F; -0CA2:0F; -0CA3:0F; -0CA4:0F; -0CA5:0F; -0CA6:0F; -0CA7:0F; -0CA8:0F; -0CA9:0F; -0CAA:0F; -0CAB:0F; -0CAC:00; -0CAD:00; -0CAE:00; -0CAF:00; -0CB0:0F; -0CB1:0F; -0CB2:0F; -0CB3:0F; -0CB4:0F; -0CB5:0F; -0CB6:FF; -0CB7:FF; -0CB8:FF; -0CB9:FF; -0CBA:FF; -0CBB:FF; -0CBC:00; -0CBD:00; -0CBE:00; -0CBF:00; -0CC0:FF; -0CC1:FF; -0CC2:FF; -0CC3:FF; -0CC4:FF; -0CC5:FF; -0CC6:00; -0CC7:00; -0CC8:00; -0CC9:00; -0CCA:00; -0CCB:00; -0CCC:00; -0CCD:00; -0CCE:00; -0CCF:00; -0CD0:FF; -0CD1:FF; -0CD2:FF; -0CD3:FF; -0CD4:FF; -0CD5:FF; -0CD6:F0; -0CD7:F0; -0CD8:F0; -0CD9:F0; -0CDA:F0; -0CDB:F0; -0CDC:00; -0CDD:00; -0CDE:00; -0CDF:00; -0CE0:FF; -0CE1:FF; -0CE2:FF; -0CE3:FF; -0CE4:FF; -0CE5:FF; -0CE6:0F; -0CE7:0F; -0CE8:0F; -0CE9:0F; -0CEA:0F; -0CEB:0F; -0CEC:00; -0CED:00; -0CEE:00; -0CEF:00; -0CF0:FF; -0CF1:FF; -0CF2:FF; -0CF3:FF; -0CF4:FF; -0CF5:FF; -0CF6:FF; -0CF7:FF; -0CF8:FF; -0CF9:FF; -0CFA:FF; -0CFB:FF; -0CFC:00; -0CFD:00; -0CFE:00; -0CFF:00; -0D00:00; -0D01:00; -0D02:00; -0D03:00; -0D04:00; -0D05:00; -0D06:00; -0D07:00; -0D08:00; -0D09:00; -0D0A:00; -0D0B:00; -0D0C:00; -0D0D:00; -0D0E:00; -0D0F:00; -0D10:00; -0D11:00; -0D12:00; -0D13:00; -0D14:00; -0D15:00; -0D16:F0; -0D17:F0; -0D18:F0; -0D19:F0; -0D1A:F0; -0D1B:F0; -0D1C:00; -0D1D:00; -0D1E:00; -0D1F:00; -0D20:00; -0D21:00; -0D22:00; -0D23:00; -0D24:00; -0D25:00; -0D26:0F; -0D27:0F; -0D28:0F; -0D29:0F; -0D2A:0F; -0D2B:0F; -0D2C:00; -0D2D:00; -0D2E:00; -0D2F:00; -0D30:00; -0D31:00; -0D32:00; -0D33:00; -0D34:00; -0D35:00; -0D36:FF; -0D37:FF; -0D38:FF; -0D39:FF; -0D3A:FF; -0D3B:FF; -0D3C:00; -0D3D:00; -0D3E:00; -0D3F:00; -0D40:F0; -0D41:F0; -0D42:F0; -0D43:F0; -0D44:F0; -0D45:F0; -0D46:00; -0D47:00; -0D48:00; -0D49:00; -0D4A:00; -0D4B:00; -0D4C:00; -0D4D:00; -0D4E:00; -0D4F:00; -0D50:F0; -0D51:F0; -0D52:F0; -0D53:F0; -0D54:F0; -0D55:F0; -0D56:F0; -0D57:F0; -0D58:F0; -0D59:F0; -0D5A:F0; -0D5B:F0; -0D5C:00; -0D5D:00; -0D5E:00; -0D5F:00; -0D60:F0; -0D61:F0; -0D62:F0; -0D63:F0; -0D64:F0; -0D65:F0; -0D66:0F; -0D67:0F; -0D68:0F; -0D69:0F; -0D6A:0F; -0D6B:0F; -0D6C:00; -0D6D:00; -0D6E:00; -0D6F:00; -0D70:F0; -0D71:F0; -0D72:F0; -0D73:F0; -0D74:F0; -0D75:F0; -0D76:FF; -0D77:FF; -0D78:FF; -0D79:FF; -0D7A:FF; -0D7B:FF; -0D7C:00; -0D7D:00; -0D7E:00; -0D7F:00; -0D80:0F; -0D81:0F; -0D82:0F; -0D83:0F; -0D84:0F; -0D85:0F; -0D86:00; -0D87:00; -0D88:00; -0D89:00; -0D8A:00; -0D8B:00; -0D8C:00; -0D8D:00; -0D8E:00; -0D8F:00; -0D90:0F; -0D91:0F; -0D92:0F; -0D93:0F; -0D94:0F; -0D95:0F; -0D96:F0; -0D97:F0; -0D98:F0; -0D99:F0; -0D9A:F0; -0D9B:F0; -0D9C:00; -0D9D:00; -0D9E:00; -0D9F:00; -0DA0:0F; -0DA1:0F; -0DA2:0F; -0DA3:0F; -0DA4:0F; -0DA5:0F; -0DA6:0F; -0DA7:0F; -0DA8:0F; -0DA9:0F; -0DAA:0F; -0DAB:0F; -0DAC:00; -0DAD:00; -0DAE:00; -0DAF:00; -0DB0:0F; -0DB1:0F; -0DB2:0F; -0DB3:0F; -0DB4:0F; -0DB5:0F; -0DB6:FF; -0DB7:FF; -0DB8:FF; -0DB9:FF; -0DBA:FF; -0DBB:FF; -0DBC:00; -0DBD:00; -0DBE:00; -0DBF:00; -0DC0:FF; -0DC1:FF; -0DC2:FF; -0DC3:FF; -0DC4:FF; -0DC5:FF; -0DC6:00; -0DC7:00; -0DC8:00; -0DC9:00; -0DCA:00; -0DCB:00; -0DCC:00; -0DCD:00; -0DCE:00; -0DCF:00; -0DD0:FF; -0DD1:FF; -0DD2:FF; -0DD3:FF; -0DD4:FF; -0DD5:FF; -0DD6:F0; -0DD7:F0; -0DD8:F0; -0DD9:F0; -0DDA:F0; -0DDB:F0; -0DDC:00; -0DDD:00; -0DDE:00; -0DDF:00; -0DE0:FF; -0DE1:FF; -0DE2:FF; -0DE3:FF; -0DE4:FF; -0DE5:FF; -0DE6:0F; -0DE7:0F; -0DE8:0F; -0DE9:0F; -0DEA:0F; -0DEB:0F; -0DEC:00; -0DED:00; -0DEE:00; -0DEF:00; -0DF0:FF; -0DF1:FF; -0DF2:FF; -0DF3:FF; -0DF4:FF; -0DF5:FF; -0DF6:FF; -0DF7:FF; -0DF8:FF; -0DF9:FF; -0DFA:FF; -0DFB:FF; -0DFC:00; -0DFD:00; -0DFE:00; -0DFF:00; -0E00:00; -0E01:00; -0E02:00; -0E03:00; -0E04:00; -0E05:00; -0E06:00; -0E07:00; -0E08:00; -0E09:00; -0E0A:00; -0E0B:00; -0E0C:00; -0E0D:00; -0E0E:00; -0E0F:00; -0E10:00; -0E11:00; -0E12:00; -0E13:00; -0E14:00; -0E15:00; -0E16:F0; -0E17:F0; -0E18:F0; -0E19:F0; -0E1A:F0; -0E1B:F0; -0E1C:00; -0E1D:00; -0E1E:00; -0E1F:00; -0E20:00; -0E21:00; -0E22:00; -0E23:00; -0E24:00; -0E25:00; -0E26:0F; -0E27:0F; -0E28:0F; -0E29:0F; -0E2A:0F; -0E2B:0F; -0E2C:00; -0E2D:00; -0E2E:00; -0E2F:00; -0E30:00; -0E31:00; -0E32:00; -0E33:00; -0E34:00; -0E35:00; -0E36:FF; -0E37:FF; -0E38:FF; -0E39:FF; -0E3A:FF; -0E3B:FF; -0E3C:00; -0E3D:00; -0E3E:00; -0E3F:00; -0E40:F0; -0E41:F0; -0E42:F0; -0E43:F0; -0E44:F0; -0E45:F0; -0E46:00; -0E47:00; -0E48:00; -0E49:00; -0E4A:00; -0E4B:00; -0E4C:00; -0E4D:00; -0E4E:00; -0E4F:00; -0E50:F0; -0E51:F0; -0E52:F0; -0E53:F0; -0E54:F0; -0E55:F0; -0E56:F0; -0E57:F0; -0E58:F0; -0E59:F0; -0E5A:F0; -0E5B:F0; -0E5C:00; -0E5D:00; -0E5E:00; -0E5F:00; -0E60:F0; -0E61:F0; -0E62:F0; -0E63:F0; -0E64:F0; -0E65:F0; -0E66:0F; -0E67:0F; -0E68:0F; -0E69:0F; -0E6A:0F; -0E6B:0F; -0E6C:00; -0E6D:00; -0E6E:00; -0E6F:00; -0E70:F0; -0E71:F0; -0E72:F0; -0E73:F0; -0E74:F0; -0E75:F0; -0E76:FF; -0E77:FF; -0E78:FF; -0E79:FF; -0E7A:FF; -0E7B:FF; -0E7C:00; -0E7D:00; -0E7E:00; -0E7F:00; -0E80:0F; -0E81:0F; -0E82:0F; -0E83:0F; -0E84:0F; -0E85:0F; -0E86:00; -0E87:00; -0E88:00; -0E89:00; -0E8A:00; -0E8B:00; -0E8C:00; -0E8D:00; -0E8E:00; -0E8F:00; -0E90:0F; -0E91:0F; -0E92:0F; -0E93:0F; -0E94:0F; -0E95:0F; -0E96:F0; -0E97:F0; -0E98:F0; -0E99:F0; -0E9A:F0; -0E9B:F0; -0E9C:00; -0E9D:00; -0E9E:00; -0E9F:00; -0EA0:0F; -0EA1:0F; -0EA2:0F; -0EA3:0F; -0EA4:0F; -0EA5:0F; -0EA6:0F; -0EA7:0F; -0EA8:0F; -0EA9:0F; -0EAA:0F; -0EAB:0F; -0EAC:00; -0EAD:00; -0EAE:00; -0EAF:00; -0EB0:0F; -0EB1:0F; -0EB2:0F; -0EB3:0F; -0EB4:0F; -0EB5:0F; -0EB6:FF; -0EB7:FF; -0EB8:FF; -0EB9:FF; -0EBA:FF; -0EBB:FF; -0EBC:00; -0EBD:00; -0EBE:00; -0EBF:00; -0EC0:FF; -0EC1:FF; -0EC2:FF; -0EC3:FF; -0EC4:FF; -0EC5:FF; -0EC6:00; -0EC7:00; -0EC8:00; -0EC9:00; -0ECA:00; -0ECB:00; -0ECC:00; -0ECD:00; -0ECE:00; -0ECF:00; -0ED0:FF; -0ED1:FF; -0ED2:FF; -0ED3:FF; -0ED4:FF; -0ED5:FF; -0ED6:F0; -0ED7:F0; -0ED8:F0; -0ED9:F0; -0EDA:F0; -0EDB:F0; -0EDC:00; -0EDD:00; -0EDE:00; -0EDF:00; -0EE0:FF; -0EE1:FF; -0EE2:FF; -0EE3:FF; -0EE4:FF; -0EE5:FF; -0EE6:0F; -0EE7:0F; -0EE8:0F; -0EE9:0F; -0EEA:0F; -0EEB:0F; -0EEC:00; -0EED:00; -0EEE:00; -0EEF:00; -0EF0:FF; -0EF1:FF; -0EF2:FF; -0EF3:FF; -0EF4:FF; -0EF5:FF; -0EF6:FF; -0EF7:FF; -0EF8:FF; -0EF9:FF; -0EFA:FF; -0EFB:FF; -0EFC:00; -0EFD:00; -0EFE:00; -0EFF:00; -0F00:00; -0F01:00; -0F02:00; -0F03:00; -0F04:00; -0F05:00; -0F06:00; -0F07:00; -0F08:00; -0F09:00; -0F0A:00; -0F0B:00; -0F0C:00; -0F0D:00; -0F0E:00; -0F0F:00; -0F10:00; -0F11:00; -0F12:00; -0F13:00; -0F14:00; -0F15:00; -0F16:F0; -0F17:F0; -0F18:F0; -0F19:F0; -0F1A:F0; -0F1B:F0; -0F1C:00; -0F1D:00; -0F1E:00; -0F1F:00; -0F20:00; -0F21:00; -0F22:00; -0F23:00; -0F24:00; -0F25:00; -0F26:0F; -0F27:0F; -0F28:0F; -0F29:0F; -0F2A:0F; -0F2B:0F; -0F2C:00; -0F2D:00; -0F2E:00; -0F2F:00; -0F30:00; -0F31:00; -0F32:00; -0F33:00; -0F34:00; -0F35:00; -0F36:FF; -0F37:FF; -0F38:FF; -0F39:FF; -0F3A:FF; -0F3B:FF; -0F3C:00; -0F3D:00; -0F3E:00; -0F3F:00; -0F40:F0; -0F41:F0; -0F42:F0; -0F43:F0; -0F44:F0; -0F45:F0; -0F46:00; -0F47:00; -0F48:00; -0F49:00; -0F4A:00; -0F4B:00; -0F4C:00; -0F4D:00; -0F4E:00; -0F4F:00; -0F50:F0; -0F51:F0; -0F52:F0; -0F53:F0; -0F54:F0; -0F55:F0; -0F56:F0; -0F57:F0; -0F58:F0; -0F59:F0; -0F5A:F0; -0F5B:F0; -0F5C:00; -0F5D:00; -0F5E:00; -0F5F:00; -0F60:F0; -0F61:F0; -0F62:F0; -0F63:F0; -0F64:F0; -0F65:F0; -0F66:0F; -0F67:0F; -0F68:0F; -0F69:0F; -0F6A:0F; -0F6B:0F; -0F6C:00; -0F6D:00; -0F6E:00; -0F6F:00; -0F70:F0; -0F71:F0; -0F72:F0; -0F73:F0; -0F74:F0; -0F75:F0; -0F76:FF; -0F77:FF; -0F78:FF; -0F79:FF; -0F7A:FF; -0F7B:FF; -0F7C:00; -0F7D:00; -0F7E:00; -0F7F:00; -0F80:0F; -0F81:0F; -0F82:0F; -0F83:0F; -0F84:0F; -0F85:0F; -0F86:00; -0F87:00; -0F88:00; -0F89:00; -0F8A:00; -0F8B:00; -0F8C:00; -0F8D:00; -0F8E:00; -0F8F:00; -0F90:0F; -0F91:0F; -0F92:0F; -0F93:0F; -0F94:0F; -0F95:0F; -0F96:F0; -0F97:F0; -0F98:F0; -0F99:F0; -0F9A:F0; -0F9B:F0; -0F9C:00; -0F9D:00; -0F9E:00; -0F9F:00; -0FA0:0F; -0FA1:0F; -0FA2:0F; -0FA3:0F; -0FA4:0F; -0FA5:0F; -0FA6:0F; -0FA7:0F; -0FA8:0F; -0FA9:0F; -0FAA:0F; -0FAB:0F; -0FAC:00; -0FAD:00; -0FAE:00; -0FAF:00; -0FB0:0F; -0FB1:0F; -0FB2:0F; -0FB3:0F; -0FB4:0F; -0FB5:0F; -0FB6:FF; -0FB7:FF; -0FB8:FF; -0FB9:FF; -0FBA:FF; -0FBB:FF; -0FBC:00; -0FBD:00; -0FBE:00; -0FBF:00; -0FC0:FF; -0FC1:FF; -0FC2:FF; -0FC3:FF; -0FC4:FF; -0FC5:FF; -0FC6:00; -0FC7:00; -0FC8:00; -0FC9:00; -0FCA:00; -0FCB:00; -0FCC:00; -0FCD:00; -0FCE:00; -0FCF:00; -0FD0:FF; -0FD1:FF; -0FD2:FF; -0FD3:FF; -0FD4:FF; -0FD5:FF; -0FD6:F0; -0FD7:F0; -0FD8:F0; -0FD9:F0; -0FDA:F0; -0FDB:F0; -0FDC:00; -0FDD:00; -0FDE:00; -0FDF:00; -0FE0:FF; -0FE1:FF; -0FE2:FF; -0FE3:FF; -0FE4:FF; -0FE5:FF; -0FE6:0F; -0FE7:0F; -0FE8:0F; -0FE9:0F; -0FEA:0F; -0FEB:0F; -0FEC:00; -0FED:00; -0FEE:00; -0FEF:00; -0FF0:FF; -0FF1:FF; -0FF2:FF; -0FF3:FF; -0FF4:FF; -0FF5:FF; -0FF6:FF; -0FF7:FF; -0FF8:FF; -0FF9:FF; -0FFA:FF; -0FFB:FF; -0FFC:00; -0FFD:00; -0FFE:00; -0FFF:00; -END; diff --git a/Computer_MiST/Laser310_MiST/rtl/roms/dosrom.mif b/Computer_MiST/Laser310_MiST/rtl/roms/dosrom.mif deleted file mode 100644 index dc81212c..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/roms/dosrom.mif +++ /dev/null @@ -1,8199 +0,0 @@ -DEPTH = 8192; -WIDTH = 8; -ADDRESS_RADIX = HEX; -DATA_RADIX = HEX; -CONTENT -BEGIN -0000:AA; -0001:55; -0002:E7; -0003:18; -0004:F3; -0005:C3; -0006:47; -0007:40; -0008:C3; -0009:41; -000A:5F; -000B:C3; -000C:52; -000D:5F; -000E:C3; -000F:41; -0010:42; -0011:C3; -0012:17; -0013:47; -0014:C3; -0015:49; -0016:47; -0017:C3; -0018:54; -0019:47; -001A:C3; -001B:08; -001C:4B; -001D:C3; -001E:67; -001F:53; -0020:C3; -0021:B9; -0022:53; -0023:C3; -0024:EA; -0025:53; -0026:C3; -0027:7B; -0028:58; -0029:C3; -002A:BF; -002B:58; -002C:C3; -002D:13; -002E:59; -002F:C3; -0030:68; -0031:59; -0032:C3; -0033:A1; -0034:59; -0035:C3; -0036:27; -0037:5B; -0038:C3; -0039:BE; -003A:5E; -003B:C3; -003C:CE; -003D:5E; -003E:C3; -003F:01; -0040:5F; -0041:C3; -0042:B1; -0043:43; -0044:C3; -0045:6E; -0046:44; -0047:3E; -0048:61; -0049:D3; -004A:10; -004B:2A; -004C:B1; -004D:78; -004E:E5; -004F:11; -0050:CA; -0051:FE; -0052:19; -0053:E5; -0054:FD; -0055:E1; -0056:E1; -0057:11; -0058:00; -0059:80; -005A:B7; -005B:ED; -005C:52; -005D:D2; -005E:6A; -005F:40; -0060:21; -0061:44; -0062:41; -0063:FB; -0064:CD; -0065:A7; -0066:28; -0067:C3; -0068:19; -0069:1A; -006A:19; -006B:11; -006C:37; -006D:01; -006E:ED; -006F:52; -0070:22; -0071:B1; -0072:78; -0073:22; -0074:D6; -0075:78; -0076:11; -0077:32; -0078:00; -0079:B7; -007A:ED; -007B:52; -007C:22; -007D:A0; -007E:78; -007F:2B; -0080:2B; -0081:22; -0082:E8; -0083:78; -0084:23; -0085:23; -0086:F9; -0087:FD; -0088:36; -0089:14; -008A:00; -008B:FD; -008C:36; -008D:12; -008E:00; -008F:FD; -0090:36; -0091:11; -0092:00; -0093:FD; -0094:36; -0095:13; -0096:0A; -0097:FD; -0098:36; -0099:16; -009A:00; -009B:FD; -009C:36; -009D:15; -009E:00; -009F:FD; -00A0:36; -00A1:17; -00A2:00; -00A3:FD; -00A4:36; -00A5:24; -00A6:00; -00A7:FD; -00A8:36; -00A9:39; -00AA:00; -00AB:FD; -00AC:36; -00AD:0B; -00AE:10; -00AF:FD; -00B0:36; -00B1:33; -00B2:61; -00B3:FD; -00B4:36; -00B5:38; -00B6:11; -00B7:FD; -00B8:E5; -00B9:E1; -00BA:11; -00BB:4D; -00BC:00; -00BD:19; -00BE:FD; -00BF:75; -00C0:31; -00C1:FD; -00C2:74; -00C3:32; -00C4:11; -00C5:F6; -00C6:FF; -00C7:19; -00C8:EB; -00C9:21; -00CA:5D; -00CB:4D; -00CC:01; -00CD:0A; -00CE:00; -00CF:ED; -00D0:B0; -00D1:FD; -00D2:E5; -00D3:E1; -00D4:11; -00D5:E7; -00D6:00; -00D7:19; -00D8:FD; -00D9:75; -00DA:34; -00DB:FD; -00DC:74; -00DD:35; -00DE:CD; -00DF:41; -00E0:5F; -00E1:06; -00E2:28; -00E3:CD; -00E4:01; -00E5:5F; -00E6:CD; -00E7:52; -00E8:5F; -00E9:21; -00EA:93; -00EB:42; -00EC:22; -00ED:04; -00EE:78; -00EF:21; -00F0:13; -00F1:41; -00F2:FB; -00F3:CD; -00F4:A7; -00F5:28; -00F6:21; -00F7:00; -00F8:60; -00F9:3E; -00FA:AA; -00FB:BE; -00FC:23; -00FD:20; -00FE:10; -00FF:3E; -0100:55; -0101:BE; -0102:23; -0103:20; -0104:0A; -0105:3E; -0106:E7; -0107:BE; -0108:23; -0109:20; -010A:04; -010B:3E; -010C:18; -010D:BE; -010E:23; -010F:C2; -0110:19; -0111:1A; -0112:E9; -0113:1B; -0114:1B; -0115:44; -0116:4F; -0117:53; -0118:20; -0119:42; -011A:41; -011B:53; -011C:49; -011D:43; -011E:20; -011F:56; -0120:31; -0121:2E; -0122:32; -0123:0D; -0124:0D; -0125:00; -0126:62; -0127:41; -0128:77; -0129:41; -012A:87; -012B:41; -012C:9D; -012D:41; -012E:AC; -012F:41; -0130:BC; -0131:41; -0132:C7; -0133:41; -0134:AC; -0135:41; -0136:AC; -0137:41; -0138:DA; -0139:41; -013A:EE; -013B:41; -013C:02; -013D:42; -013E:12; -013F:42; -0140:24; -0141:42; -0142:32; -0143:42; -0144:3F; -0145:49; -0146:4E; -0147:53; -0148:55; -0149:46; -014A:46; -014B:49; -014C:43; -014D:49; -014E:45; -014F:4E; -0150:54; -0151:20; -0152:4D; -0153:45; -0154:4D; -0155:4F; -0156:52; -0157:59; -0158:20; -0159:46; -015A:4F; -015B:52; -015C:20; -015D:44; -015E:4F; -015F:53; -0160:0D; -0161:00; -0162:3F; -0163:46; -0164:49; -0165:4C; -0166:45; -0167:20; -0168:41; -0169:4C; -016A:52; -016B:45; -016C:41; -016D:44; -016E:59; -016F:20; -0170:45; -0171:58; -0172:49; -0173:53; -0174:54; -0175:53; -0176:00; -0177:3F; -0178:44; -0179:49; -017A:52; -017B:45; -017C:43; -017D:54; -017E:4F; -017F:52; -0180:59; -0181:20; -0182:46; -0183:55; -0184:4C; -0185:4C; -0186:00; -0187:3F; -0188:44; -0189:49; -018A:53; -018B:4B; -018C:20; -018D:57; -018E:52; -018F:49; -0190:54; -0191:45; -0192:20; -0193:50; -0194:52; -0195:4F; -0196:54; -0197:45; -0198:43; -0199:54; -019A:45; -019B:44; -019C:00; -019D:3F; -019E:46; -019F:49; -01A0:4C; -01A1:45; -01A2:20; -01A3:4E; -01A4:4F; -01A5:54; -01A6:20; -01A7:4F; -01A8:50; -01A9:45; -01AA:4E; -01AB:00; -01AC:3F; -01AD:44; -01AE:49; -01AF:53; -01B0:4B; -01B1:20; -01B2:49; -01B3:2F; -01B4:4F; -01B5:20; -01B6:45; -01B7:52; -01B8:52; -01B9:4F; -01BA:52; -01BB:00; -01BC:3F; -01BD:44; -01BE:49; -01BF:53; -01C0:4B; -01C1:20; -01C2:46; -01C3:55; -01C4:4C; -01C5:4C; -01C6:00; -01C7:3F; -01C8:46; -01C9:49; -01CA:4C; -01CB:45; -01CC:20; -01CD:41; -01CE:4C; -01CF:52; -01D0:45; -01D1:41; -01D2:44; -01D3:59; -01D4:20; -01D5:4F; -01D6:50; -01D7:45; -01D8:4E; -01D9:00; -01DA:3F; -01DB:55; -01DC:4E; -01DD:53; -01DE:55; -01DF:50; -01E0:50; -01E1:4F; -01E2:52; -01E3:54; -01E4:45; -01E5:44; -01E6:20; -01E7:44; -01E8:45; -01E9:56; -01EA:49; -01EB:43; -01EC:45; -01ED:00; -01EE:3F; -01EF:46; -01F0:49; -01F1:4C; -01F2:45; -01F3:20; -01F4:54; -01F5:59; -01F6:50; -01F7:45; -01F8:20; -01F9:4D; -01FA:49; -01FB:53; -01FC:4D; -01FD:41; -01FE:54; -01FF:43; -0200:48; -0201:00; -0202:3F; -0203:46; -0204:49; -0205:4C; -0206:45; -0207:20; -0208:4E; -0209:4F; -020A:54; -020B:20; -020C:46; -020D:4F; -020E:55; -020F:4E; -0210:44; -0211:00; -0212:3F; -0213:44; -0214:49; -0215:53; -0216:4B; -0217:20; -0218:42; -0219:55; -021A:46; -021B:46; -021C:45; -021D:52; -021E:20; -021F:46; -0220:55; -0221:4C; -0222:4C; -0223:00; -0224:3F; -0225:49; -0226:4C; -0227:4C; -0228:45; -0229:47; -022A:41; -022B:4C; -022C:20; -022D:52; -022E:45; -022F:41; -0230:44; -0231:00; -0232:3F; -0233:49; -0234:4C; -0235:4C; -0236:45; -0237:47; -0238:41; -0239:4C; -023A:20; -023B:57; -023C:52; -023D:49; -023E:54; -023F:45; -0240:00; -0241:F5; -0242:FD; -0243:7E; -0244:39; -0245:B7; -0246:C4; -0247:44; -0248:51; -0249:F1; -024A:B7; -024B:28; -024C:34; -024D:FE; -024E:01; -024F:CA; -0250:97; -0251:19; -0252:FE; -0253:11; -0254:CA; -0255:8A; -0256:42; -0257:F5; -0258:CD; -0259:F9; -025A:20; -025B:F1; -025C:21; -025D:22; -025E:41; -025F:CB; -0260:27; -0261:85; -0262:6F; -0263:3E; -0264:00; -0265:8C; -0266:67; -0267:5E; -0268:23; -0269:56; -026A:EB; -026B:CD; -026C:52; -026D:5F; -026E:CD; -026F:A7; -0270:28; -0271:2A; -0272:A2; -0273:78; -0274:22; -0275:EA; -0276:78; -0277:22; -0278:EC; -0279:78; -027A:23; -027B:7D; -027C:B4; -027D:2B; -027E:C4; -027F:A7; -0280:0F; -0281:01; -0282:19; -0283:1A; -0284:2A; -0285:E8; -0286:78; -0287:C3; -0288:9A; -0289:1B; -028A:CD; -028B:52; -028C:5F; -028D:3E; -028E:01; -028F:FB; -0290:C3; -0291:A0; -0292:1D; -0293:D9; -0294:21; -0295:5B; -0296:1D; -0297:D1; -0298:B7; -0299:ED; -029A:52; -029B:D5; -029C:D9; -029D:C2; -029E:78; -029F:1D; -02A0:E5; -02A1:CD; -02A2:78; -02A3:1D; -02A4:20; -02A5:02; -02A6:D1; -02A7:C9; -02A8:B7; -02A9:F2; -02AA:EF; -02AB:42; -02AC:FE; -02AD:8E; -02AE:20; -02AF:F6; -02B0:23; -02B1:7E; -02B2:B7; -02B3:28; -02B4:10; -02B5:FE; -02B6:20; -02B7:28; -02B8:F7; -02B9:FE; -02BA:22; -02BB:20; -02BC:08; -02BD:D1; -02BE:01; -02BF:DB; -02C0:45; -02C1:2B; -02C2:EB; -02C3:18; -02C4:61; -02C5:E1; -02C6:C3; -02C7:78; -02C8:1D; -02C9:E1; -02CA:E5; -02CB:23; -02CC:7E; -02CD:FE; -02CE:42; -02CF:20; -02D0:0B; -02D1:23; -02D2:7E; -02D3:FE; -02D4:8E; -02D5:20; -02D6:14; -02D7:06; -02D8:06; -02D9:C5; -02DA:18; -02DB:39; -02DC:FE; -02DD:44; -02DE:20; -02DF:0B; -02E0:23; -02E1:7E; -02E2:FE; -02E3:96; -02E4:20; -02E5:05; -02E6:06; -02E7:0E; -02E8:C5; -02E9:18; -02EA:2A; -02EB:E1; -02EC:C3; -02ED:78; -02EE:1D; -02EF:11; -02F0:2D; -02F1:43; -02F2:06; -02F3:FF; -02F4:4E; -02F5:EB; -02F6:23; -02F7:B6; -02F8:F2; -02F9:F6; -02FA:42; -02FB:04; -02FC:7E; -02FD:E6; -02FE:7F; -02FF:28; -0300:C8; -0301:B9; -0302:20; -0303:F2; -0304:EB; -0305:E5; -0306:13; -0307:1A; -0308:B7; -0309:FA; -030A:15; -030B:43; -030C:4F; -030D:23; -030E:7E; -030F:B9; -0310:28; -0311:F4; -0312:E1; -0313:18; -0314:DF; -0315:78; -0316:C1; -0317:C1; -0318:C1; -0319:CB; -031A:27; -031B:4F; -031C:06; -031D:00; -031E:EB; -031F:21; -0320:71; -0321:43; -0322:09; -0323:4E; -0324:23; -0325:46; -0326:21; -0327:1E; -0328:1D; -0329:E5; -032A:EB; -032B:23; -032C:C5; -032D:C9; -032E:CC; -032F:4F; -0330:41; -0331:44; -0332:D3; -0333:41; -0334:56; -0335:45; -0336:CF; -0337:50; -0338:45; -0339:4E; -033A:C3; -033B:4C; -033C:4F; -033D:53; -033E:45; -033F:C2; -0340:53; -0341:41; -0342:56; -0343:45; -0344:C2; -0345:4C; -0346:4F; -0347:41; -0348:44; -0349:C2; -034A:52; -034B:55; -034C:4E; -034D:C4; -034E:49; -034F:52; -0350:C5; -0351:52; -0352:41; -0353:D2; -0354:45; -0355:4E; -0356:C9; -0357:4E; -0358:49; -0359:54; -035A:C4; -035B:52; -035C:49; -035D:56; -035E:45; -035F:C9; -0360:4E; -0361:23; -0362:D0; -0363:52; -0364:23; -0365:C4; -0366:43; -0367:4F; -0368:50; -0369:59; -036A:D3; -036B:54; -036C:41; -036D:54; -036E:55; -036F:53; -0370:80; -0371:91; -0372:43; -0373:4E; -0374:44; -0375:F5; -0376:45; -0377:DD; -0378:47; -0379:39; -037A:48; -037B:C4; -037C:48; -037D:EF; -037E:48; -037F:06; -0380:49; -0381:94; -0382:49; -0383:80; -0384:4A; -0385:08; -0386:4B; -0387:78; -0388:4D; -0389:92; -038A:4D; -038B:64; -038C:4E; -038D:FB; -038E:4F; -038F:D5; -0390:52; -0391:CD; -0392:67; -0393:53; -0394:E5; -0395:B7; -0396:C2; -0397:41; -0398:42; -0399:FD; -039A:36; -039B:09; -039C:54; -039D:CD; -039E:B1; -039F:43; -03A0:B7; -03A1:C2; -03A2:41; -03A3:42; -03A4:21; -03A5:29; -03A6:19; -03A7:CD; -03A8:A7; -03A9:28; -03AA:2A; -03AB:A4; -03AC:78; -03AD:E5; -03AE:C3; -03AF:E8; -03B0:1A; -03B1:F3; -03B2:CD; -03B3:41; -03B4:5F; -03B5:C5; -03B6:01; -03B7:32; -03B8:00; -03B9:CD; -03BA:BE; -03BB:5E; -03BC:C1; -03BD:CD; -03BE:13; -03BF:59; -03C0:FE; -03C1:02; -03C2:CA; -03C3:CA; -03C4:43; -03C5:B7; -03C6:C0; -03C7:3E; -03C8:0D; -03C9:C9; -03CA:FD; -03CB:7E; -03CC:09; -03CD:FD; -03CE:BE; -03CF:0A; -03D0:3E; -03D1:0C; -03D2:C0; -03D3:1A; -03D4:13; -03D5:FD; -03D6:77; -03D7:12; -03D8:1A; -03D9:13; -03DA:FD; -03DB:77; -03DC:11; -03DD:EB; -03DE:5E; -03DF:23; -03E0:56; -03E1:23; -03E2:ED; -03E3:53; -03E4:A4; -03E5:78; -03E6:FD; -03E7:73; -03E8:0E; -03E9:FD; -03EA:72; -03EB:0F; -03EC:5E; -03ED:23; -03EE:56; -03EF:ED; -03F0:53; -03F1:F9; -03F2:78; -03F3:CD; -03F4:27; -03F5:5B; -03F6:B7; -03F7:C2; -03F8:41; -03F9:44; -03FA:FD; -03FB:6E; -03FC:31; -03FD:FD; -03FE:66; -03FF:32; -0400:E5; -0401:11; -0402:7E; -0403:00; -0404:19; -0405:7E; -0406:23; -0407:FD; -0408:77; -0409:12; -040A:7E; -040B:FD; -040C:77; -040D:11; -040E:E1; -040F:FD; -0410:5E; -0411:0E; -0412:FD; -0413:56; -0414:0F; -0415:01; -0416:7E; -0417:00; -0418:FD; -0419:7E; -041A:12; -041B:FD; -041C:B6; -041D:11; -041E:28; -041F:10; -0420:ED; -0421:B0; -0422:FD; -0423:73; -0424:0E; -0425:FD; -0426:72; -0427:0F; -0428:FD; -0429:7E; -042A:12; -042B:FD; -042C:B6; -042D:11; -042E:18; -042F:C3; -0430:E5; -0431:2A; -0432:F9; -0433:78; -0434:B7; -0435:ED; -0436:52; -0437:4D; -0438:44; -0439:E1; -043A:ED; -043B:B0; -043C:CD; -043D:52; -043E:5F; -043F:AF; -0440:C9; -0441:2A; -0442:A4; -0443:78; -0444:36; -0445:00; -0446:23; -0447:36; -0448:00; -0449:23; -044A:22; -044B:F9; -044C:78; -044D:C9; -044E:CD; -044F:67; -0450:53; -0451:E5; -0452:B7; -0453:C2; -0454:41; -0455:42; -0456:CD; -0457:41; -0458:5F; -0459:C5; -045A:01; -045B:02; -045C:00; -045D:CD; -045E:BE; -045F:5E; -0460:C1; -0461:DB; -0462:13; -0463:B7; -0464:3E; -0465:04; -0466:FA; -0467:41; -0468:42; -0469:FD; -046A:36; -046B:09; -046C:54; -046D:E1; -046E:ED; -046F:5B; -0470:F9; -0471:78; -0472:D5; -0473:ED; -0474:5B; -0475:A4; -0476:78; -0477:D5; -0478:E5; -0479:F3; -047A:C5; -047B:01; -047C:32; -047D:00; -047E:CD; -047F:BE; -0480:5E; -0481:C1; -0482:ED; -0483:5B; -0484:A4; -0485:78; -0486:FD; -0487:73; -0488:0E; -0489:FD; -048A:72; -048B:0F; -048C:FD; -048D:36; -048E:12; -048F:00; -0490:FD; -0491:36; -0492:11; -0493:0F; -0494:CD; -0495:27; -0496:5B; -0497:B7; -0498:C2; -0499:9A; -049A:48; -049B:FD; -049C:5E; -049D:34; -049E:FD; -049F:56; -04A0:35; -04A1:FD; -04A2:6E; -04A3:31; -04A4:FD; -04A5:66; -04A6:32; -04A7:01; -04A8:50; -04A9:00; -04AA:ED; -04AB:B0; -04AC:CD; -04AD:7B; -04AE:58; -04AF:B7; -04B0:C2; -04B1:9A; -04B2:48; -04B3:FD; -04B4:7E; -04B5:16; -04B6:FD; -04B7:B6; -04B8:15; -04B9:CA; -04BA:7C; -04BB:45; -04BC:FD; -04BD:56; -04BE:16; -04BF:FD; -04C0:5E; -04C1:15; -04C2:CD; -04C3:BF; -04C4:58; -04C5:FE; -04C6:07; -04C7:20; -04C8:19; -04C9:CD; -04CA:13; -04CB:59; -04CC:FE; -04CD:02; -04CE:3E; -04CF:06; -04D0:C2; -04D1:9A; -04D2:48; -04D3:EB; -04D4:11; -04D5:F6; -04D6:FF; -04D7:19; -04D8:36; -04D9:01; -04DA:CD; -04DB:A1; -04DC:59; -04DD:3E; -04DE:07; -04DF:C3; -04E0:9A; -04E1:48; -04E2:B7; -04E3:C2; -04E4:9A; -04E5:48; -04E6:FD; -04E7:72; -04E8:12; -04E9:FD; -04EA:73; -04EB:11; -04EC:FD; -04ED:6E; -04EE:31; -04EF:FD; -04F0:66; -04F1:32; -04F2:E5; -04F3:5D; -04F4:54; -04F5:13; -04F6:36; -04F7:00; -04F8:01; -04F9:80; -04FA:00; -04FB:ED; -04FC:B0; -04FD:FD; -04FE:6E; -04FF:0E; -0500:FD; -0501:66; -0502:0F; -0503:E5; -0504:ED; -0505:5B; -0506:F9; -0507:78; -0508:B7; -0509:ED; -050A:52; -050B:D2; -050C:3A; -050D:45; -050E:11; -050F:7E; -0510:00; -0511:19; -0512:DA; -0513:76; -0514:45; -0515:ED; -0516:5B; -0517:F9; -0518:78; -0519:19; -051A:FD; -051B:75; -051C:0E; -051D:FD; -051E:74; -051F:0F; -0520:E1; -0521:D1; -0522:01; -0523:7E; -0524:00; -0525:ED; -0526:B0; -0527:FD; -0528:7E; -0529:16; -052A:12; -052B:13; -052C:FD; -052D:7E; -052E:15; -052F:12; -0530:CD; -0531:A1; -0532:59; -0533:B7; -0534:C2; -0535:9A; -0536:48; -0537:C3; -0538:B3; -0539:44; -053A:E5; -053B:FD; -053C:6E; -053D:34; -053E:FD; -053F:66; -0540:35; -0541:FD; -0542:7E; -0543:16; -0544:3D; -0545:CB; -0546:27; -0547:5F; -0548:16; -0549:00; -054A:FD; -054B:7E; -054C:15; -054D:FE; -054E:08; -054F:3F; -0550:ED; -0551:5A; -0552:E6; -0553:07; -0554:3C; -0555:47; -0556:4E; -0557:CB; -0558:01; -0559:CB; -055A:09; -055B:10; -055C:FC; -055D:CB; -055E:81; -055F:47; -0560:CB; -0561:09; -0562:CB; -0563:01; -0564:10; -0565:FC; -0566:71; -0567:C1; -0568:E1; -0569:D1; -056A:ED; -056B:B0; -056C:FD; -056D:36; -056E:16; -056F:00; -0570:FD; -0571:36; -0572:15; -0573:00; -0574:18; -0575:BA; -0576:EB; -0577:B7; -0578:ED; -0579:52; -057A:18; -057B:BE; -057C:CD; -057D:13; -057E:59; -057F:FE; -0580:02; -0581:C2; -0582:9A; -0583:48; -0584:13; -0585:13; -0586:2A; -0587:A4; -0588:78; -0589:EB; -058A:73; -058B:23; -058C:72; -058D:23; -058E:EB; -058F:2A; -0590:F9; -0591:78; -0592:EB; -0593:73; -0594:23; -0595:72; -0596:CD; -0597:A1; -0598:59; -0599:B7; -059A:C2; -059B:9A; -059C:48; -059D:FD; -059E:6E; -059F:31; -05A0:FD; -05A1:66; -05A2:32; -05A3:E5; -05A4:5D; -05A5:54; -05A6:13; -05A7:36; -05A8:00; -05A9:01; -05AA:80; -05AB:00; -05AC:ED; -05AD:B0; -05AE:E1; -05AF:FD; -05B0:5E; -05B1:34; -05B2:FD; -05B3:56; -05B4:35; -05B5:EB; -05B6:01; -05B7:50; -05B8:00; -05B9:ED; -05BA:B0; -05BB:FD; -05BC:36; -05BD:12; -05BE:00; -05BF:FD; -05C0:36; -05C1:11; -05C2:0F; -05C3:CD; -05C4:A1; -05C5:59; -05C6:F5; -05C7:CD; -05C8:52; -05C9:5F; -05CA:F1; -05CB:E1; -05CC:D1; -05CD:ED; -05CE:53; -05CF:A4; -05D0:78; -05D1:D1; -05D2:ED; -05D3:53; -05D4:F9; -05D5:78; -05D6:B7; -05D7:C2; -05D8:41; -05D9:42; -05DA:C9; -05DB:CD; -05DC:67; -05DD:53; -05DE:E5; -05DF:B7; -05E0:C2; -05E1:41; -05E2:42; -05E3:FD; -05E4:36; -05E5:09; -05E6:54; -05E7:CD; -05E8:B1; -05E9:43; -05EA:B7; -05EB:C2; -05EC:41; -05ED:42; -05EE:ED; -05EF:5B; -05F0:A4; -05F1:78; -05F2:C3; -05F3:E9; -05F4:36; -05F5:CD; -05F6:28; -05F7:28; -05F8:CD; -05F9:78; -05FA:53; -05FB:E5; -05FC:B7; -05FD:C2; -05FE:41; -05FF:42; -0600:F1; -0601:CF; -0602:2C; -0603:CD; -0604:1C; -0605:2B; -0606:B7; -0607:28; -0608:05; -0609:FE; -060A:02; -060B:D2; -060C:4A; -060D:1E; -060E:FD; -060F:77; -0610:0C; -0611:E5; -0612:CD; -0613:78; -0614:47; -0615:FE; -0616:05; -0617:C2; -0618:41; -0619:42; -061A:E5; -061B:CD; -061C:A5; -061D:4F; -061E:E1; -061F:36; -0620:01; -0621:23; -0622:FD; -0623:7E; -0624:0C; -0625:77; -0626:23; -0627:FD; -0628:E5; -0629:D1; -062A:13; -062B:EB; -062C:01; -062D:08; -062E:00; -062F:ED; -0630:B0; -0631:D5; -0632:F3; -0633:CD; -0634:41; -0635:5F; -0636:C5; -0637:01; -0638:32; -0639:00; -063A:CD; -063B:BE; -063C:5E; -063D:C1; -063E:CD; -063F:13; -0640:59; -0641:FE; -0642:02; -0643:C2; -0644:6B; -0645:46; -0646:FD; -0647:7E; -0648:0A; -0649:FE; -064A:44; -064B:3E; -064C:0C; -064D:C2; -064E:41; -064F:42; -0650:E1; -0651:1A; -0652:77; -0653:FD; -0654:77; -0655:12; -0656:13; -0657:23; -0658:1A; -0659:77; -065A:FD; -065B:77; -065C:11; -065D:AF; -065E:23; -065F:77; -0660:FD; -0661:7E; -0662:0C; -0663:B7; -0664:20; -0665:53; -0666:CD; -0667:52; -0668:5F; -0669:E1; -066A:C9; -066B:4F; -066C:FD; -066D:7E; -066E:0C; -066F:B7; -0670:79; -0671:CA; -0672:A8; -0673:46; -0674:DB; -0675:13; -0676:B7; -0677:0E; -0678:04; -0679:FA; -067A:A8; -067B:46; -067C:CD; -067D:17; -067E:47; -067F:FD; -0680:36; -0681:09; -0682:44; -0683:CD; -0684:7B; -0685:58; -0686:B7; -0687:C2; -0688:41; -0689:42; -068A:E1; -068B:FD; -068C:7E; -068D:16; -068E:FD; -068F:77; -0690:12; -0691:77; -0692:23; -0693:FD; -0694:7E; -0695:15; -0696:FD; -0697:77; -0698:11; -0699:77; -069A:23; -069B:36; -069C:00; -069D:CD; -069E:49; -069F:47; -06A0:CD; -06A1:54; -06A2:47; -06A3:CD; -06A4:52; -06A5:5F; -06A6:E1; -06A7:C9; -06A8:E1; -06A9:11; -06AA:F6; -06AB:FF; -06AC:19; -06AD:36; -06AE:00; -06AF:79; -06B0:B7; -06B1:C2; -06B2:41; -06B3:42; -06B4:3E; -06B5:0D; -06B6:C3; -06B7:41; -06B8:42; -06B9:E5; -06BA:CD; -06BB:27; -06BC:5B; -06BD:B7; -06BE:C2; -06BF:41; -06C0:42; -06C1:FD; -06C2:6E; -06C3:31; -06C4:FD; -06C5:66; -06C6:32; -06C7:11; -06C8:7E; -06C9:00; -06CA:19; -06CB:7E; -06CC:B7; -06CD:28; -06CE:0A; -06CF:23; -06D0:FD; -06D1:77; -06D2:12; -06D3:7E; -06D4:FD; -06D5:77; -06D6:11; -06D7:18; -06D8:E1; -06D9:06; -06DA:7E; -06DB:FD; -06DC:6E; -06DD:31; -06DE:FD; -06DF:66; -06E0:32; -06E1:7E; -06E2:23; -06E3:B7; -06E4:28; -06E5:1D; -06E6:10; -06E7:F9; -06E8:CD; -06E9:17; -06EA:47; -06EB:CD; -06EC:BF; -06ED:58; -06EE:B7; -06EF:C2; -06F0:41; -06F1:42; -06F2:FD; -06F3:7E; -06F4:16; -06F5:FD; -06F6:77; -06F7:12; -06F8:FD; -06F9:7E; -06FA:15; -06FB:FD; -06FC:77; -06FD:11; -06FE:CD; -06FF:49; -0700:47; -0701:06; -0702:7E; -0703:3E; -0704:7E; -0705:90; -0706:E1; -0707:77; -0708:2B; -0709:FD; -070A:7E; -070B:11; -070C:77; -070D:2B; -070E:FD; -070F:7E; -0710:12; -0711:77; -0712:CD; -0713:52; -0714:5F; -0715:E1; -0716:C9; -0717:FD; -0718:36; -0719:12; -071A:00; -071B:FD; -071C:36; -071D:11; -071E:0F; -071F:CD; -0720:27; -0721:5B; -0722:B7; -0723:C2; -0724:41; -0725:42; -0726:FD; -0727:5E; -0728:34; -0729:FD; -072A:56; -072B:35; -072C:FD; -072D:6E; -072E:31; -072F:FD; -0730:66; -0731:32; -0732:01; -0733:50; -0734:00; -0735:ED; -0736:B0; -0737:C9; -0738:FD; -0739:6E; -073A:31; -073B:FD; -073C:66; -073D:32; -073E:36; -073F:00; -0740:5D; -0741:54; -0742:13; -0743:01; -0744:80; -0745:00; -0746:ED; -0747:B0; -0748:C9; -0749:CD; -074A:38; -074B:47; -074C:CD; -074D:A1; -074E:59; -074F:B7; -0750:C2; -0751:41; -0752:42; -0753:C9; -0754:CD; -0755:38; -0756:47; -0757:FD; -0758:36; -0759:12; -075A:00; -075B:FD; -075C:36; -075D:11; -075E:0F; -075F:FD; -0760:5E; -0761:31; -0762:FD; -0763:56; -0764:32; -0765:FD; -0766:6E; -0767:34; -0768:FD; -0769:66; -076A:35; -076B:01; -076C:50; -076D:00; -076E:ED; -076F:B0; -0770:CD; -0771:A1; -0772:59; -0773:B7; -0774:C2; -0775:41; -0776:42; -0777:C9; -0778:FD; -0779:E5; -077A:E1; -077B:FD; -077C:36; -077D:00; -077E:00; -077F:11; -0780:17; -0781:00; -0782:19; -0783:7E; -0784:B7; -0785:28; -0786:09; -0787:CD; -0788:BF; -0789:47; -078A:FE; -078B:08; -078C:C8; -078D:FD; -078E:34; -078F:00; -0790:11; -0791:0D; -0792:00; -0793:19; -0794:7E; -0795:B7; -0796:20; -0797:14; -0798:FD; -0799:E5; -079A:E1; -079B:11; -079C:17; -079D:00; -079E:19; -079F:FD; -07A0:7E; -07A1:00; -07A2:B7; -07A3:28; -07A4:04; -07A5:11; -07A6:0D; -07A7:00; -07A8:19; -07A9:3E; -07AA:05; -07AB:C9; -07AC:CD; -07AD:BF; -07AE:47; -07AF:FE; -07B0:08; -07B1:C8; -07B2:B7; -07B3:ED; -07B4:52; -07B5:FD; -07B6:7E; -07B7:17; -07B8:B7; -07B9:3E; -07BA:0E; -07BB:C0; -07BC:3E; -07BD:05; -07BE:C9; -07BF:FD; -07C0:E5; -07C1:E5; -07C2:06; -07C3:08; -07C4:23; -07C5:23; -07C6:FD; -07C7:7E; -07C8:01; -07C9:BE; -07CA:23; -07CB:FD; -07CC:23; -07CD:20; -07CE:08; -07CF:10; -07D0:F5; -07D1:3E; -07D2:08; -07D3:D1; -07D4:FD; -07D5:E1; -07D6:C9; -07D7:E1; -07D8:FD; -07D9:E1; -07DA:3E; -07DB:05; -07DC:C9; -07DD:CD; -07DE:67; -07DF:53; -07E0:B7; -07E1:C2; -07E2:41; -07E3:42; -07E4:E5; -07E5:2A; -07E6:A2; -07E7:78; -07E8:23; -07E9:7C; -07EA:B5; -07EB:20; -07EC:0A; -07ED:CD; -07EE:78; -07EF:47; -07F0:E1; -07F1:FE; -07F2:08; -07F3:C0; -07F4:AF; -07F5:12; -07F6:C9; -07F7:CD; -07F8:78; -07F9:47; -07FA:E1; -07FB:FE; -07FC:08; -07FD:C0; -07FE:1A; -07FF:FE; -0800:02; -0801:3E; -0802:00; -0803:12; -0804:C0; -0805:13; -0806:1A; -0807:B7; -0808:C8; -0809:E5; -080A:EB; -080B:11; -080C:09; -080D:00; -080E:19; -080F:7E; -0810:23; -0811:FD; -0812:77; -0813:12; -0814:7E; -0815:FD; -0816:77; -0817:11; -0818:F3; -0819:CD; -081A:41; -081B:5F; -081C:C5; -081D:01; -081E:32; -081F:00; -0820:CD; -0821:BE; -0822:5E; -0823:C1; -0824:DB; -0825:13; -0826:B7; -0827:3E; -0828:04; -0829:FA; -082A:41; -082B:42; -082C:CD; -082D:A1; -082E:59; -082F:B7; -0830:C2; -0831:41; -0832:42; -0833:FB; -0834:CD; -0835:52; -0836:5F; -0837:E1; -0838:C9; -0839:CD; -083A:78; -083B:53; -083C:E5; -083D:B7; -083E:C2; -083F:41; -0840:42; -0841:E1; -0842:CF; -0843:2C; -0844:ED; -0845:5B; -0846:F9; -0847:78; -0848:D5; -0849:ED; -084A:5B; -084B:A4; -084C:78; -084D:D5; -084E:CD; -084F:B9; -0850:53; -0851:3E; -0852:01; -0853:DA; -0854:B7; -0855:48; -0856:ED; -0857:53; -0858:A4; -0859:78; -085A:CF; -085B:2C; -085C:CD; -085D:B9; -085E:53; -085F:3E; -0860:01; -0861:DA; -0862:B7; -0863:48; -0864:13; -0865:ED; -0866:53; -0867:F9; -0868:78; -0869:7E; -086A:B7; -086B:28; -086C:07; -086D:FE; -086E:3A; -086F:3E; -0870:01; -0871:C2; -0872:B7; -0873:48; -0874:FD; -0875:36; -0876:09; -0877:42; -0878:E5; -0879:2A; -087A:A4; -087B:78; -087C:B7; -087D:ED; -087E:52; -087F:3E; -0880:01; -0881:D2; -0882:9A; -0883:48; -0884:CD; -0885:41; -0886:5F; -0887:C5; -0888:01; -0889:02; -088A:00; -088B:CD; -088C:BE; -088D:5E; -088E:C1; -088F:DB; -0890:13; -0891:B7; -0892:3E; -0893:04; -0894:FA; -0895:9A; -0896:48; -0897:C3; -0898:79; -0899:44; -089A:FE; -089B:11; -089C:20; -089D:18; -089E:CD; -089F:13; -08A0:59; -08A1:FE; -08A2:02; -08A3:3E; -08A4:11; -08A5:20; -08A6:0F; -08A7:EB; -08A8:11; -08A9:F6; -08AA:FF; -08AB:19; -08AC:36; -08AD:01; -08AE:CD; -08AF:A1; -08B0:59; -08B1:B7; -08B2:20; -08B3:02; -08B4:3E; -08B5:11; -08B6:E1; -08B7:D1; -08B8:ED; -08B9:53; -08BA:A4; -08BB:78; -08BC:D1; -08BD:ED; -08BE:53; -08BF:F9; -08C0:78; -08C1:C3; -08C2:41; -08C3:42; -08C4:CD; -08C5:67; -08C6:53; -08C7:E5; -08C8:B7; -08C9:C2; -08CA:41; -08CB:42; -08CC:FD; -08CD:36; -08CE:09; -08CF:42; -08D0:E1; -08D1:ED; -08D2:5B; -08D3:F9; -08D4:78; -08D5:D5; -08D6:ED; -08D7:5B; -08D8:A4; -08D9:78; -08DA:D5; -08DB:E5; -08DC:CD; -08DD:B1; -08DE:43; -08DF:E1; -08E0:D1; -08E1:ED; -08E2:53; -08E3:A4; -08E4:78; -08E5:D1; -08E6:ED; -08E7:53; -08E8:F9; -08E9:78; -08EA:B7; -08EB:C2; -08EC:41; -08ED:42; -08EE:C9; -08EF:CD; -08F0:67; -08F1:53; -08F2:E5; -08F3:B7; -08F4:C2; -08F5:41; -08F6:42; -08F7:FD; -08F8:36; -08F9:09; -08FA:42; -08FB:CD; -08FC:B1; -08FD:43; -08FE:B7; -08FF:C2; -0900:41; -0901:42; -0902:2A; -0903:A4; -0904:78; -0905:E9; -0906:E5; -0907:F3; -0908:CD; -0909:41; -090A:5F; -090B:C5; -090C:01; -090D:32; -090E:00; -090F:CD; -0910:BE; -0911:5E; -0912:C1; -0913:FD; -0914:36; -0915:12; -0916:00; -0917:FD; -0918:36; -0919:11; -091A:00; -091B:F3; -091C:CD; -091D:27; -091E:5B; -091F:B7; -0920:C2; -0921:41; -0922:42; -0923:FD; -0924:6E; -0925:31; -0926:FD; -0927:66; -0928:32; -0929:11; -092A:06; -092B:00; -092C:0E; -092D:08; -092E:7E; -092F:B7; -0930:28; -0931:5D; -0932:FE; -0933:01; -0934:20; -0935:08; -0936:C5; -0937:01; -0938:0A; -0939:00; -093A:09; -093B:C1; -093C:18; -093D:0E; -093E:06; -093F:0A; -0940:7E; -0941:CD; -0942:2A; -0943:03; -0944:23; -0945:10; -0946:F9; -0947:3E; -0948:0D; -0949:CD; -094A:2A; -094B:03; -094C:F3; -094D:3A; -094E:EF; -094F:68; -0950:CB; -0951:67; -0952:20; -0953:2D; -0954:C5; -0955:01; -0956:14; -0957:00; -0958:CD; -0959:BE; -095A:5E; -095B:C1; -095C:3A; -095D:EF; -095E:68; -095F:CB; -0960:67; -0961:28; -0962:F9; -0963:C5; -0964:01; -0965:14; -0966:00; -0967:CD; -0968:BE; -0969:5E; -096A:C1; -096B:3A; -096C:EF; -096D:68; -096E:CB; -096F:67; -0970:20; -0971:F9; -0972:C5; -0973:01; -0974:14; -0975:00; -0976:CD; -0977:BE; -0978:5E; -0979:C1; -097A:3A; -097B:EF; -097C:68; -097D:CB; -097E:67; -097F:28; -0980:F9; -0981:19; -0982:0D; -0983:20; -0984:A9; -0985:FD; -0986:34; -0987:11; -0988:FD; -0989:7E; -098A:11; -098B:FE; -098C:0F; -098D:20; -098E:8C; -098F:CD; -0990:52; -0991:5F; -0992:E1; -0993:C9; -0994:CD; -0995:67; -0996:53; -0997:E5; -0998:B7; -0999:C2; -099A:41; -099B:42; -099C:F3; -099D:CD; -099E:41; -099F:5F; -09A0:C5; -09A1:01; -09A2:32; -09A3:00; -09A4:CD; -09A5:BE; -09A6:5E; -09A7:C1; -09A8:DB; -09A9:13; -09AA:B7; -09AB:3E; -09AC:04; -09AD:FA; -09AE:41; -09AF:42; -09B0:CD; -09B1:13; -09B2:59; -09B3:FE; -09B4:02; -09B5:28; -09B6:09; -09B7:B7; -09B8:C2; -09B9:41; -09BA:42; -09BB:3E; -09BC:0D; -09BD:C3; -09BE:41; -09BF:42; -09C0:1A; -09C1:13; -09C2:FD; -09C3:77; -09C4:16; -09C5:1A; -09C6:FD; -09C7:77; -09C8:15; -09C9:EB; -09CA:11; -09CB:F5; -09CC:FF; -09CD:19; -09CE:36; -09CF:01; -09D0:CD; -09D1:A1; -09D2:59; -09D3:B7; -09D4:C2; -09D5:41; -09D6:42; -09D7:FD; -09D8:36; -09D9:12; -09DA:00; -09DB:FD; -09DC:36; -09DD:11; -09DE:0F; -09DF:CD; -09E0:27; -09E1:5B; -09E2:B7; -09E3:C2; -09E4:41; -09E5:42; -09E6:FD; -09E7:5E; -09E8:34; -09E9:FD; -09EA:56; -09EB:35; -09EC:FD; -09ED:6E; -09EE:31; -09EF:FD; -09F0:66; -09F1:32; -09F2:01; -09F3:50; -09F4:00; -09F5:ED; -09F6:B0; -09F7:FD; -09F8:7E; -09F9:16; -09FA:B7; -09FB:CA; -09FC:4F; -09FD:4A; -09FE:FD; -09FF:77; -0A00:12; -0A01:FD; -0A02:7E; -0A03:15; -0A04:FD; -0A05:77; -0A06:11; -0A07:CD; -0A08:27; -0A09:5B; -0A0A:B7; -0A0B:C2; -0A0C:41; -0A0D:42; -0A0E:FD; -0A0F:6E; -0A10:31; -0A11:FD; -0A12:66; -0A13:32; -0A14:11; -0A15:7E; -0A16:00; -0A17:19; -0A18:7E; -0A19:FD; -0A1A:77; -0A1B:16; -0A1C:23; -0A1D:7E; -0A1E:FD; -0A1F:77; -0A20:15; -0A21:FD; -0A22:6E; -0A23:34; -0A24:FD; -0A25:66; -0A26:35; -0A27:FD; -0A28:7E; -0A29:12; -0A2A:3D; -0A2B:CB; -0A2C:27; -0A2D:5F; -0A2E:16; -0A2F:00; -0A30:FD; -0A31:7E; -0A32:11; -0A33:FE; -0A34:08; -0A35:3F; -0A36:ED; -0A37:5A; -0A38:E6; -0A39:07; -0A3A:3C; -0A3B:47; -0A3C:4E; -0A3D:CB; -0A3E:01; -0A3F:CB; -0A40:09; -0A41:10; -0A42:FC; -0A43:CB; -0A44:81; -0A45:47; -0A46:CB; -0A47:09; -0A48:CB; -0A49:01; -0A4A:10; -0A4B:FC; -0A4C:71; -0A4D:18; -0A4E:A8; -0A4F:FD; -0A50:6E; -0A51:31; -0A52:FD; -0A53:66; -0A54:32; -0A55:E5; -0A56:36; -0A57:00; -0A58:5D; -0A59:54; -0A5A:13; -0A5B:01; -0A5C:7F; -0A5D:00; -0A5E:ED; -0A5F:B0; -0A60:D1; -0A61:FD; -0A62:6E; -0A63:34; -0A64:FD; -0A65:66; -0A66:35; -0A67:01; -0A68:50; -0A69:00; -0A6A:ED; -0A6B:B0; -0A6C:FD; -0A6D:36; -0A6E:12; -0A6F:00; -0A70:FD; -0A71:36; -0A72:11; -0A73:0F; -0A74:CD; -0A75:A1; -0A76:59; -0A77:B7; -0A78:C2; -0A79:41; -0A7A:42; -0A7B:CD; -0A7C:52; -0A7D:5F; -0A7E:E1; -0A7F:C9; -0A80:E5; -0A81:CD; -0A82:78; -0A83:53; -0A84:B7; -0A85:C2; -0A86:41; -0A87:42; -0A88:CF; -0A89:2C; -0A8A:CD; -0A8B:67; -0A8C:53; -0A8D:B7; -0A8E:C2; -0A8F:41; -0A90:42; -0A91:E1; -0A92:E5; -0A93:CD; -0A94:78; -0A95:53; -0A96:23; -0A97:E5; -0A98:F3; -0A99:CD; -0A9A:41; -0A9B:5F; -0A9C:C5; -0A9D:01; -0A9E:32; -0A9F:00; -0AA0:CD; -0AA1:BE; -0AA2:5E; -0AA3:C1; -0AA4:DB; -0AA5:13; -0AA6:B7; -0AA7:3E; -0AA8:04; -0AA9:FA; -0AAA:41; -0AAB:42; -0AAC:CD; -0AAD:13; -0AAE:59; -0AAF:FE; -0AB0:02; -0AB1:CA; -0AB2:BD; -0AB3:4A; -0AB4:B7; -0AB5:C2; -0AB6:41; -0AB7:42; -0AB8:3E; -0AB9:0D; -0ABA:C3; -0ABB:41; -0ABC:42; -0ABD:E1; -0ABE:CD; -0ABF:67; -0AC0:53; -0AC1:E3; -0AC2:E5; -0AC3:CD; -0AC4:13; -0AC5:59; -0AC6:FE; -0AC7:0D; -0AC8:28; -0AC9:04; -0ACA:B7; -0ACB:C2; -0ACC:41; -0ACD:42; -0ACE:E1; -0ACF:CD; -0AD0:78; -0AD1:53; -0AD2:23; -0AD3:E5; -0AD4:CD; -0AD5:13; -0AD6:59; -0AD7:FE; -0AD8:02; -0AD9:C2; -0ADA:41; -0ADB:42; -0ADC:C1; -0ADD:E5; -0ADE:D5; -0ADF:69; -0AE0:60; -0AE1:CD; -0AE2:67; -0AE3:53; -0AE4:D1; -0AE5:E1; -0AE6:01; -0AE7:F8; -0AE8:FF; -0AE9:09; -0AEA:EB; -0AEB:09; -0AEC:2B; -0AED:2B; -0AEE:FD; -0AEF:7E; -0AF0:0A; -0AF1:77; -0AF2:23; -0AF3:36; -0AF4:3A; -0AF5:23; -0AF6:EB; -0AF7:01; -0AF8:08; -0AF9:00; -0AFA:ED; -0AFB:B0; -0AFC:CD; -0AFD:A1; -0AFE:59; -0AFF:B7; -0B00:C2; -0B01:41; -0B02:42; -0B03:CD; -0B04:52; -0B05:5F; -0B06:E1; -0B07:C9; -0B08:F3; -0B09:CD; -0B0A:41; -0B0B:5F; -0B0C:C5; -0B0D:01; -0B0E:E8; -0B0F:03; -0B10:CD; -0B11:BE; -0B12:5E; -0B13:C1; -0B14:DB; -0B15:13; -0B16:B7; -0B17:3E; -0B18:04; -0B19:FA; -0B1A:41; -0B1B:42; -0B1C:E5; -0B1D:FD; -0B1E:E5; -0B1F:E1; -0B20:11; -0B21:4D; -0B22:00; -0B23:19; -0B24:FD; -0B25:36; -0B26:12; -0B27:00; -0B28:FD; -0B29:36; -0B2A:11; -0B2B:00; -0B2C:FD; -0B2D:75; -0B2E:0E; -0B2F:FD; -0B30:74; -0B31:0F; -0B32:EB; -0B33:21; -0B34:4F; -0B35:4D; -0B36:01; -0B37:18; -0B38:00; -0B39:ED; -0B3A:B0; -0B3B:62; -0B3C:6B; -0B3D:36; -0B3E:00; -0B3F:13; -0B40:01; -0B41:82; -0B42:00; -0B43:ED; -0B44:B0; -0B45:FD; -0B46:36; -0B47:38; -0B48:11; -0B49:06; -0B4A:28; -0B4B:CD; -0B4C:01; -0B4D:5F; -0B4E:C5; -0B4F:01; -0B50:90; -0B51:01; -0B52:CD; -0B53:BE; -0B54:5E; -0B55:C1; -0B56:FD; -0B57:6E; -0B58:0E; -0B59:FD; -0B5A:66; -0B5B:0F; -0B5C:11; -0B5D:0B; -0B5E:00; -0B5F:19; -0B60:54; -0B61:5D; -0B62:13; -0B63:42; -0B64:4B; -0B65:03; -0B66:D9; -0B67:C5; -0B68:01; -0B69:64; -0B6A:00; -0B6B:CD; -0B6C:BE; -0B6D:5E; -0B6E:C1; -0B6F:FD; -0B70:7E; -0B71:33; -0B72:CB; -0B73:B7; -0B74:FD; -0B75:77; -0B76:33; -0B77:D3; -0B78:10; -0B79:C5; -0B7A:01; -0B7B:64; -0B7C:00; -0B7D:CD; -0B7E:BE; -0B7F:5E; -0B80:C1; -0B81:DD; -0B82:21; -0B83:67; -0B84:4D; -0B85:FD; -0B86:6E; -0B87:0E; -0B88:FD; -0B89:66; -0B8A:0F; -0B8B:FD; -0B8C:56; -0B8D:33; -0B8E:06; -0B8F:9A; -0B90:4E; -0B91:3E; -0B92:20; -0B93:AA; -0B94:CB; -0B95:11; -0B96:D2; -0B97:A4; -0B98:4B; -0B99:D3; -0B9A:10; -0B9B:EE; -0B9C:20; -0B9D:57; -0B9E:2B; -0B9F:D3; -0BA0:10; -0BA1:C3; -0BA2:AF; -0BA3:4B; -0BA4:D3; -0BA5:10; -0BA6:EE; -0BA7:00; -0BA8:57; -0BA9:2B; -0BAA:D3; -0BAB:10; -0BAC:C3; -0BAD:AF; -0BAE:4B; -0BAF:23; -0BB0:C3; -0BB1:B3; -0BB2:4B; -0BB3:C3; -0BB4:B6; -0BB5:4B; -0BB6:DB; -0BB7:12; -0BB8:3E; -0BB9:20; -0BBA:AA; -0BBB:CB; -0BBC:11; -0BBD:D2; -0BBE:CB; -0BBF:4B; -0BC0:D3; -0BC1:10; -0BC2:EE; -0BC3:20; -0BC4:57; -0BC5:2B; -0BC6:D3; -0BC7:10; -0BC8:C3; -0BC9:D6; -0BCA:4B; -0BCB:D3; -0BCC:10; -0BCD:EE; -0BCE:00; -0BCF:57; -0BD0:2B; -0BD1:D3; -0BD2:10; -0BD3:C3; -0BD4:D6; -0BD5:4B; -0BD6:23; -0BD7:C3; -0BD8:DA; -0BD9:4B; -0BDA:C3; -0BDB:DD; -0BDC:4B; -0BDD:DB; -0BDE:12; -0BDF:3E; -0BE0:20; -0BE1:AA; -0BE2:CB; -0BE3:11; -0BE4:D2; -0BE5:F2; -0BE6:4B; -0BE7:D3; -0BE8:10; -0BE9:EE; -0BEA:20; -0BEB:57; -0BEC:2B; -0BED:D3; -0BEE:10; -0BEF:C3; -0BF0:FD; -0BF1:4B; -0BF2:D3; -0BF3:10; -0BF4:EE; -0BF5:00; -0BF6:57; -0BF7:2B; -0BF8:D3; -0BF9:10; -0BFA:C3; -0BFB:FD; -0BFC:4B; -0BFD:23; -0BFE:C3; -0BFF:01; -0C00:4C; -0C01:C3; -0C02:04; -0C03:4C; -0C04:DB; -0C05:12; -0C06:3E; -0C07:20; -0C08:AA; -0C09:CB; -0C0A:11; -0C0B:D2; -0C0C:19; -0C0D:4C; -0C0E:D3; -0C0F:10; -0C10:EE; -0C11:20; -0C12:57; -0C13:2B; -0C14:D3; -0C15:10; -0C16:C3; -0C17:24; -0C18:4C; -0C19:D3; -0C1A:10; -0C1B:EE; -0C1C:00; -0C1D:57; -0C1E:2B; -0C1F:D3; -0C20:10; -0C21:C3; -0C22:24; -0C23:4C; -0C24:23; -0C25:C3; -0C26:28; -0C27:4C; -0C28:C3; -0C29:2B; -0C2A:4C; -0C2B:DB; -0C2C:12; -0C2D:3E; -0C2E:20; -0C2F:AA; -0C30:CB; -0C31:11; -0C32:D2; -0C33:40; -0C34:4C; -0C35:D3; -0C36:10; -0C37:EE; -0C38:20; -0C39:57; -0C3A:2B; -0C3B:D3; -0C3C:10; -0C3D:C3; -0C3E:4B; -0C3F:4C; -0C40:D3; -0C41:10; -0C42:EE; -0C43:00; -0C44:57; -0C45:2B; -0C46:D3; -0C47:10; -0C48:C3; -0C49:4B; -0C4A:4C; -0C4B:23; -0C4C:C3; -0C4D:4F; -0C4E:4C; -0C4F:C3; -0C50:52; -0C51:4C; -0C52:DB; -0C53:12; -0C54:3E; -0C55:20; -0C56:AA; -0C57:CB; -0C58:11; -0C59:D2; -0C5A:67; -0C5B:4C; -0C5C:D3; -0C5D:10; -0C5E:EE; -0C5F:20; -0C60:57; -0C61:2B; -0C62:D3; -0C63:10; -0C64:C3; -0C65:72; -0C66:4C; -0C67:D3; -0C68:10; -0C69:EE; -0C6A:00; -0C6B:57; -0C6C:2B; -0C6D:D3; -0C6E:10; -0C6F:C3; -0C70:72; -0C71:4C; -0C72:23; -0C73:C3; -0C74:76; -0C75:4C; -0C76:C3; -0C77:79; -0C78:4C; -0C79:DB; -0C7A:12; -0C7B:3E; -0C7C:20; -0C7D:AA; -0C7E:CB; -0C7F:11; -0C80:D2; -0C81:8E; -0C82:4C; -0C83:D3; -0C84:10; -0C85:EE; -0C86:20; -0C87:57; -0C88:2B; -0C89:D3; -0C8A:10; -0C8B:C3; -0C8C:99; -0C8D:4C; -0C8E:D3; -0C8F:10; -0C90:EE; -0C91:00; -0C92:57; -0C93:2B; -0C94:D3; -0C95:10; -0C96:C3; -0C97:99; -0C98:4C; -0C99:23; -0C9A:C3; -0C9B:9D; -0C9C:4C; -0C9D:C3; -0C9E:A0; -0C9F:4C; -0CA0:DB; -0CA1:12; -0CA2:3E; -0CA3:20; -0CA4:AA; -0CA5:CB; -0CA6:11; -0CA7:D2; -0CA8:B5; -0CA9:4C; -0CAA:D3; -0CAB:10; -0CAC:EE; -0CAD:20; -0CAE:57; -0CAF:2B; -0CB0:D3; -0CB1:10; -0CB2:C3; -0CB3:C0; -0CB4:4C; -0CB5:D3; -0CB6:10; -0CB7:EE; -0CB8:00; -0CB9:57; -0CBA:2B; -0CBB:D3; -0CBC:10; -0CBD:C3; -0CBE:C0; -0CBF:4C; -0CC0:23; -0CC1:23; -0CC2:00; -0CC3:05; -0CC4:C2; -0CC5:90; -0CC6:4B; -0CC7:FD; -0CC8:72; -0CC9:33; -0CCA:D9; -0CCB:DD; -0CCC:7E; -0CCD:01; -0CCE:DD; -0CCF:23; -0CD0:12; -0CD1:86; -0CD2:02; -0CD3:1A; -0CD4:D9; -0CD5:FE; -0CD6:FF; -0CD7:C2; -0CD8:85; -0CD9:4B; -0CDA:D9; -0CDB:AF; -0CDC:12; -0CDD:7E; -0CDE:3C; -0CDF:77; -0CE0:02; -0CE1:D9; -0CE2:FE; -0CE3:28; -0CE4:CA; -0CE5:F9; -0CE6:4C; -0CE7:FD; -0CE8:7E; -0CE9:33; -0CEA:F6; -0CEB:40; -0CEC:FD; -0CED:77; -0CEE:33; -0CEF:D3; -0CF0:10; -0CF1:06; -0CF2:01; -0CF3:CD; -0CF4:CE; -0CF5:5E; -0CF6:C3; -0CF7:67; -0CF8:4B; -0CF9:FD; -0CFA:7E; -0CFB:33; -0CFC:F6; -0CFD:40; -0CFE:FD; -0CFF:77; -0D00:33; -0D01:D3; -0D02:10; -0D03:06; -0D04:27; -0D05:CD; -0D06:01; -0D07:5F; -0D08:FD; -0D09:36; -0D0A:12; -0D0B:00; -0D0C:FD; -0D0D:36; -0D0E:11; -0D0F:00; -0D10:DD; -0D11:21; -0D12:67; -0D13:4D; -0D14:CD; -0D15:EA; -0D16:53; -0D17:20; -0D18:2C; -0D19:DD; -0D1A:7E; -0D1B:01; -0D1C:DD; -0D1D:23; -0D1E:FD; -0D1F:77; -0D20:11; -0D21:FE; -0D22:FF; -0D23:20; -0D24:EF; -0D25:AF; -0D26:FD; -0D27:77; -0D28:11; -0D29:FD; -0D2A:7E; -0D2B:12; -0D2C:3C; -0D2D:FD; -0D2E:77; -0D2F:12; -0D30:FE; -0D31:28; -0D32:28; -0D33:07; -0D34:06; -0D35:01; -0D36:CD; -0D37:CE; -0D38:5E; -0D39:18; -0D3A:D5; -0D3B:06; -0D3C:27; -0D3D:CD; -0D3E:01; -0D3F:5F; -0D40:CD; -0D41:52; -0D42:5F; -0D43:E1; -0D44:C9; -0D45:FE; -0D46:11; -0D47:CA; -0D48:41; -0D49:42; -0D4A:3E; -0D4B:06; -0D4C:C3; -0D4D:41; -0D4E:42; -0D4F:80; -0D50:80; -0D51:80; -0D52:80; -0D53:80; -0D54:80; -0D55:00; -0D56:FE; -0D57:E7; -0D58:18; -0D59:C3; -0D5A:00; -0D5B:00; -0D5C:00; -0D5D:80; -0D5E:80; -0D5F:80; -0D60:80; -0D61:80; -0D62:00; -0D63:C3; -0D64:18; -0D65:E7; -0D66:FE; -0D67:00; -0D68:0B; -0D69:06; -0D6A:01; -0D6B:0C; -0D6C:07; -0D6D:02; -0D6E:0D; -0D6F:08; -0D70:03; -0D71:0E; -0D72:09; -0D73:04; -0D74:0F; -0D75:0A; -0D76:05; -0D77:FF; -0D78:CD; -0D79:1C; -0D7A:2B; -0D7B:B7; -0D7C:CA; -0D7D:4A; -0D7E:1E; -0D7F:FE; -0D80:03; -0D81:D2; -0D82:4A; -0D83:1E; -0D84:FE; -0D85:01; -0D86:20; -0D87:05; -0D88:FD; -0D89:36; -0D8A:0B; -0D8B:10; -0D8C:C9; -0D8D:FD; -0D8E:36; -0D8F:0B; -0D90:80; -0D91:C9; -0D92:CD; -0D93:28; -0D94:28; -0D95:CD; -0D96:78; -0D97:53; -0D98:B7; -0D99:C2; -0D9A:41; -0D9B:42; -0D9C:CF; -0D9D:2C; -0D9E:E5; -0D9F:CD; -0DA0:78; -0DA1:47; -0DA2:FE; -0DA3:08; -0DA4:3E; -0DA5:05; -0DA6:C2; -0DA7:41; -0DA8:42; -0DA9:13; -0DAA:1A; -0DAB:B7; -0DAC:3E; -0DAD:0F; -0DAE:C2; -0DAF:41; -0DB0:42; -0DB1:1B; -0DB2:1A; -0DB3:FE; -0DB4:02; -0DB5:28; -0DB6:2B; -0DB7:CD; -0DB8:A5; -0DB9:4F; -0DBA:3E; -0DBB:02; -0DBC:12; -0DBD:EB; -0DBE:11; -0DBF:0A; -0DC0:00; -0DC1:19; -0DC2:7E; -0DC3:23; -0DC4:FD; -0DC5:77; -0DC6:12; -0DC7:7E; -0DC8:FD; -0DC9:77; -0DCA:11; -0DCB:F3; -0DCC:CD; -0DCD:41; -0DCE:5F; -0DCF:C5; -0DD0:01; -0DD1:32; -0DD2:00; -0DD3:CD; -0DD4:BE; -0DD5:5E; -0DD6:C1; -0DD7:CD; -0DD8:27; -0DD9:5B; -0DDA:B7; -0DDB:C2; -0DDC:41; -0DDD:42; -0DDE:FB; -0DDF:CD; -0DE0:52; -0DE1:5F; -0DE2:06; -0DE3:C7; -0DE4:2A; -0DE5:A7; -0DE6:78; -0DE7:CD; -0DE8:F9; -0DE9:4D; -0DEA:77; -0DEB:23; -0DEC:FE; -0DED:0D; -0DEE:28; -0DEF:02; -0DF0:10; -0DF1:F5; -0DF2:AF; -0DF3:32; -0DF4:A9; -0DF5:78; -0DF6:C3; -0DF7:BD; -0DF8:21; -0DF9:E5; -0DFA:D5; -0DFB:C5; -0DFC:CD; -0DFD:78; -0DFE:47; -0DFF:21; -0E00:0C; -0E01:00; -0E02:EB; -0E03:19; -0E04:7E; -0E05:EB; -0E06:FD; -0E07:6E; -0E08:31; -0E09:FD; -0E0A:66; -0E0B:32; -0E0C:85; -0E0D:6F; -0E0E:3E; -0E0F:00; -0E10:8C; -0E11:67; -0E12:7E; -0E13:B7; -0E14:20; -0E15:04; -0E16:0E; -0E17:0D; -0E18:18; -0E19:40; -0E1A:4F; -0E1B:1A; -0E1C:3C; -0E1D:12; -0E1E:FE; -0E1F:7E; -0E20:20; -0E21:38; -0E22:AF; -0E23:12; -0E24:FD; -0E25:6E; -0E26:31; -0E27:FD; -0E28:66; -0E29:32; -0E2A:D5; -0E2B:11; -0E2C:7E; -0E2D:00; -0E2E:19; -0E2F:D1; -0E30:7E; -0E31:B7; -0E32:28; -0E33:2B; -0E34:FD; -0E35:77; -0E36:12; -0E37:1B; -0E38:1B; -0E39:12; -0E3A:23; -0E3B:7E; -0E3C:FD; -0E3D:77; -0E3E:11; -0E3F:13; -0E40:12; -0E41:F3; -0E42:CD; -0E43:41; -0E44:5F; -0E45:C5; -0E46:01; -0E47:32; -0E48:00; -0E49:CD; -0E4A:BE; -0E4B:5E; -0E4C:C1; -0E4D:C5; -0E4E:CD; -0E4F:27; -0E50:5B; -0E51:C1; -0E52:B7; -0E53:C2; -0E54:41; -0E55:42; -0E56:CD; -0E57:52; -0E58:5F; -0E59:FB; -0E5A:79; -0E5B:C1; -0E5C:D1; -0E5D:E1; -0E5E:C9; -0E5F:3E; -0E60:7F; -0E61:12; -0E62:18; -0E63:F6; -0E64:CD; -0E65:28; -0E66:28; -0E67:CD; -0E68:78; -0E69:53; -0E6A:B7; -0E6B:C2; -0E6C:41; -0E6D:42; -0E6E:E5; -0E6F:CD; -0E70:78; -0E71:47; -0E72:FE; -0E73:08; -0E74:3E; -0E75:05; -0E76:C2; -0E77:41; -0E78:42; -0E79:E1; -0E7A:CF; -0E7B:2C; -0E7C:2B; -0E7D:D7; -0E7E:CC; -0E7F:AC; -0E80:4E; -0E81:C8; -0E82:E5; -0E83:FE; -0E84:2C; -0E85:CA; -0E86:B3; -0E87:4E; -0E88:FE; -0E89:3A; -0E8A:28; -0E8B:2B; -0E8C:C1; -0E8D:CD; -0E8E:37; -0E8F:23; -0E90:E5; -0E91:E7; -0E92:28; -0E93:12; -0E94:CD; -0E95:BD; -0E96:0F; -0E97:CD; -0E98:65; -0E99:28; -0E9A:2A; -0E9B:21; -0E9C:79; -0E9D:CD; -0E9E:BA; -0E9F:4E; -0EA0:3E; -0EA1:20; -0EA2:CD; -0EA3:CA; -0EA4:4E; -0EA5:B7; -0EA6:CC; -0EA7:BA; -0EA8:4E; -0EA9:E1; -0EAA:18; -0EAB:D0; -0EAC:3E; -0EAD:0D; -0EAE:CD; -0EAF:CA; -0EB0:4E; -0EB1:AF; -0EB2:C9; -0EB3:CD; -0EB4:CA; -0EB5:4E; -0EB6:E1; -0EB7:D7; -0EB8:18; -0EB9:C7; -0EBA:CD; -0EBB:DA; -0EBC:29; -0EBD:CD; -0EBE:C4; -0EBF:09; -0EC0:14; -0EC1:15; -0EC2:C8; -0EC3:0A; -0EC4:CD; -0EC5:CA; -0EC6:4E; -0EC7:03; -0EC8:18; -0EC9:F7; -0ECA:E5; -0ECB:D5; -0ECC:C5; -0ECD:F5; -0ECE:CD; -0ECF:78; -0ED0:47; -0ED1:EB; -0ED2:23; -0ED3:7E; -0ED4:B7; -0ED5:3E; -0ED6:10; -0ED7:CA; -0ED8:41; -0ED9:42; -0EDA:2B; -0EDB:7E; -0EDC:FE; -0EDD:02; -0EDE:28; -0EDF:2C; -0EE0:CD; -0EE1:A5; -0EE2:4F; -0EE3:11; -0EE4:0A; -0EE5:00; -0EE6:19; -0EE7:7E; -0EE8:23; -0EE9:FD; -0EEA:77; -0EEB:12; -0EEC:7E; -0EED:23; -0EEE:FD; -0EEF:77; -0EF0:11; -0EF1:F3; -0EF2:CD; -0EF3:41; -0EF4:5F; -0EF5:DB; -0EF6:13; -0EF7:B7; -0EF8:3E; -0EF9:04; -0EFA:FA; -0EFB:41; -0EFC:42; -0EFD:E5; -0EFE:CD; -0EFF:27; -0F00:5B; -0F01:B7; -0F02:C2; -0F03:41; -0F04:42; -0F05:E1; -0F06:11; -0F07:F4; -0F08:FF; -0F09:19; -0F0A:36; -0F0B:02; -0F0C:11; -0F0D:0C; -0F0E:00; -0F0F:19; -0F10:5E; -0F11:34; -0F12:16; -0F13:00; -0F14:FD; -0F15:6E; -0F16:31; -0F17:FD; -0F18:66; -0F19:32; -0F1A:19; -0F1B:F1; -0F1C:F5; -0F1D:77; -0F1E:7B; -0F1F:3C; -0F20:FE; -0F21:7E; -0F22:20; -0F23:78; -0F24:F3; -0F25:CD; -0F26:41; -0F27:5F; -0F28:C5; -0F29:01; -0F2A:02; -0F2B:00; -0F2C:CD; -0F2D:BE; -0F2E:5E; -0F2F:C1; -0F30:DB; -0F31:13; -0F32:B7; -0F33:3E; -0F34:04; -0F35:FA; -0F36:41; -0F37:42; -0F38:FD; -0F39:5E; -0F3A:11; -0F3B:FD; -0F3C:56; -0F3D:12; -0F3E:D5; -0F3F:CD; -0F40:A1; -0F41:59; -0F42:B7; -0F43:C2; -0F44:41; -0F45:42; -0F46:CD; -0F47:17; -0F48:47; -0F49:B7; -0F4A:C2; -0F4B:41; -0F4C:42; -0F4D:CD; -0F4E:BF; -0F4F:58; -0F50:B7; -0F51:C2; -0F52:41; -0F53:42; -0F54:CD; -0F55:54; -0F56:47; -0F57:D1; -0F58:FD; -0F59:73; -0F5A:11; -0F5B:FD; -0F5C:72; -0F5D:12; -0F5E:CD; -0F5F:27; -0F60:5B; -0F61:B7; -0F62:C2; -0F63:41; -0F64:42; -0F65:FD; -0F66:6E; -0F67:31; -0F68:FD; -0F69:66; -0F6A:32; -0F6B:11; -0F6C:7E; -0F6D:00; -0F6E:19; -0F6F:FD; -0F70:7E; -0F71:16; -0F72:77; -0F73:23; -0F74:FD; -0F75:7E; -0F76:15; -0F77:77; -0F78:CD; -0F79:A1; -0F7A:59; -0F7B:B7; -0F7C:C2; -0F7D:41; -0F7E:42; -0F7F:CD; -0F80:78; -0F81:47; -0F82:EB; -0F83:11; -0F84:0A; -0F85:00; -0F86:19; -0F87:FD; -0F88:7E; -0F89:16; -0F8A:FD; -0F8B:77; -0F8C:12; -0F8D:77; -0F8E:23; -0F8F:FD; -0F90:7E; -0F91:15; -0F92:FD; -0F93:77; -0F94:11; -0F95:77; -0F96:23; -0F97:AF; -0F98:77; -0F99:CD; -0F9A:49; -0F9B:47; -0F9C:CD; -0F9D:52; -0F9E:5F; -0F9F:FB; -0FA0:F1; -0FA1:C1; -0FA2:D1; -0FA3:E1; -0FA4:C9; -0FA5:E5; -0FA6:D5; -0FA7:FD; -0FA8:E5; -0FA9:E1; -0FAA:11; -0FAB:17; -0FAC:00; -0FAD:19; -0FAE:CD; -0FAF:BB; -0FB0:4F; -0FB1:11; -0FB2:0D; -0FB3:00; -0FB4:19; -0FB5:CD; -0FB6:BB; -0FB7:4F; -0FB8:D1; -0FB9:E1; -0FBA:C9; -0FBB:7E; -0FBC:B7; -0FBD:C8; -0FBE:FE; -0FBF:02; -0FC0:C0; -0FC1:36; -0FC2:01; -0FC3:23; -0FC4:7E; -0FC5:B7; -0FC6:2B; -0FC7:C8; -0FC8:11; -0FC9:0A; -0FCA:00; -0FCB:19; -0FCC:7E; -0FCD:FD; -0FCE:77; -0FCF:12; -0FD0:23; -0FD1:7E; -0FD2:FD; -0FD3:77; -0FD4:11; -0FD5:F3; -0FD6:CD; -0FD7:41; -0FD8:5F; -0FD9:C5; -0FDA:01; -0FDB:32; -0FDC:00; -0FDD:CD; -0FDE:BE; -0FDF:5E; -0FE0:C1; -0FE1:DB; -0FE2:13; -0FE3:B7; -0FE4:3E; -0FE5:04; -0FE6:FA; -0FE7:41; -0FE8:42; -0FE9:E5; -0FEA:CD; -0FEB:A1; -0FEC:59; -0FED:E1; -0FEE:B7; -0FEF:C2; -0FF0:41; -0FF1:42; -0FF2:11; -0FF3:F5; -0FF4:FF; -0FF5:19; -0FF6:CD; -0FF7:52; -0FF8:5F; -0FF9:FB; -0FFA:C9; -0FFB:ED; -0FFC:5B; -0FFD:A2; -0FFE:78; -0FFF:13; -1000:7A; -1001:B3; -1002:1E; -1003:16; -1004:C2; -1005:A2; -1006:19; -1007:FD; -1008:36; -1009:39; -100A:01; -100B:2B; -100C:D7; -100D:28; -100E:4E; -100F:CD; -1010:67; -1011:53; -1012:B7; -1013:C2; -1014:41; -1015:42; -1016:E5; -1017:CD; -1018:68; -1019:51; -101A:CD; -101B:19; -101C:52; -101D:F3; -101E:CD; -101F:41; -1020:5F; -1021:C5; -1022:01; -1023:32; -1024:00; -1025:CD; -1026:BE; -1027:5E; -1028:C1; -1029:CD; -102A:13; -102B:59; -102C:FE; -102D:02; -102E:28; -102F:09; -1030:B7; -1031:C2; -1032:41; -1033:42; -1034:3E; -1035:0D; -1036:C3; -1037:41; -1038:42; -1039:FD; -103A:7E; -103B:0A; -103C:FD; -103D:77; -103E:09; -103F:FE; -1040:44; -1041:3E; -1042:0C; -1043:CA; -1044:41; -1045:42; -1046:CD; -1047:D3; -1048:43; -1049:B7; -104A:C2; -104B:62; -104C:51; -104D:CD; -104E:75; -104F:52; -1050:CD; -1051:41; -1052:5F; -1053:CD; -1054:6E; -1055:44; -1056:B7; -1057:C2; -1058:62; -1059:51; -105A:C3; -105B:37; -105C:51; -105D:E5; -105E:21; -105F:C6; -1060:FF; -1061:39; -1062:11; -1063:E9; -1064:7A; -1065:B7; -1066:ED; -1067:52; -1068:CB; -1069:3C; -106A:CB; -106B:3C; -106C:CB; -106D:3C; -106E:FD; -106F:74; -1070:36; -1071:FD; -1072:36; -1073:37; -1074:00; -1075:FD; -1076:36; -1077:12; -1078:00; -1079:FD; -107A:36; -107B:11; -107C:00; -107D:CD; -107E:A5; -107F:4F; -1080:CD; -1081:68; -1082:51; -1083:11; -1084:E9; -1085:7A; -1086:ED; -1087:53; -1088:A4; -1089:78; -108A:CD; -108B:19; -108C:52; -108D:F3; -108E:CD; -108F:41; -1090:5F; -1091:CD; -1092:27; -1093:5B; -1094:B7; -1095:C2; -1096:62; -1097:51; -1098:FD; -1099:6E; -109A:31; -109B:FD; -109C:66; -109D:32; -109E:ED; -109F:5B; -10A0:A4; -10A1:78; -10A2:01; -10A3:80; -10A4:00; -10A5:ED; -10A6:B0; -10A7:ED; -10A8:53; -10A9:A4; -10AA:78; -10AB:FD; -10AC:34; -10AD:11; -10AE:FD; -10AF:7E; -10B0:11; -10B1:FE; -10B2:10; -10B3:20; -10B4:DC; -10B5:FD; -10B6:36; -10B7:11; -10B8:00; -10B9:FD; -10BA:34; -10BB:12; -10BC:FD; -10BD:7E; -10BE:12; -10BF:FE; -10C0:28; -10C1:28; -10C2:08; -10C3:FD; -10C4:96; -10C5:37; -10C6:FD; -10C7:96; -10C8:36; -10C9:20; -10CA:C6; -10CB:FD; -10CC:7E; -10CD:37; -10CE:FD; -10CF:77; -10D0:12; -10D1:CD; -10D2:52; -10D3:5F; -10D4:CD; -10D5:75; -10D6:52; -10D7:F3; -10D8:CD; -10D9:41; -10DA:5F; -10DB:C5; -10DC:01; -10DD:02; -10DE:00; -10DF:CD; -10E0:BE; -10E1:5E; -10E2:C1; -10E3:DB; -10E4:13; -10E5:B7; -10E6:3E; -10E7:04; -10E8:FA; -10E9:62; -10EA:51; -10EB:21; -10EC:E9; -10ED:7A; -10EE:22; -10EF:A4; -10F0:78; -10F1:2A; -10F2:A4; -10F3:78; -10F4:FD; -10F5:5E; -10F6:31; -10F7:FD; -10F8:56; -10F9:32; -10FA:01; -10FB:80; -10FC:00; -10FD:ED; -10FE:B0; -10FF:22; -1100:A4; -1101:78; -1102:CD; -1103:A1; -1104:59; -1105:B7; -1106:20; -1107:5A; -1108:FD; -1109:34; -110A:11; -110B:FD; -110C:7E; -110D:11; -110E:FE; -110F:10; -1110:20; -1111:DF; -1112:FD; -1113:36; -1114:11; -1115:00; -1116:FD; -1117:34; -1118:12; -1119:FD; -111A:7E; -111B:12; -111C:FE; -111D:28; -111E:28; -111F:17; -1120:FD; -1121:96; -1122:37; -1123:FD; -1124:96; -1125:36; -1126:20; -1127:C9; -1128:FD; -1129:7E; -112A:36; -112B:FD; -112C:86; -112D:37; -112E:FD; -112F:77; -1130:37; -1131:CD; -1132:52; -1133:5F; -1134:C3; -1135:83; -1136:50; -1137:CD; -1138:52; -1139:5F; -113A:CD; -113B:44; -113C:51; -113D:01; -113E:19; -113F:1A; -1140:C5; -1141:C3; -1142:4D; -1143:1B; -1144:21; -1145:E9; -1146:7A; -1147:22; -1148:A4; -1149:78; -114A:36; -114B:00; -114C:23; -114D:36; -114E:00; -114F:23; -1150:22; -1151:F9; -1152:78; -1153:22; -1154:FB; -1155:78; -1156:22; -1157:FD; -1158:78; -1159:FD; -115A:36; -115B:0B; -115C:10; -115D:FD; -115E:36; -115F:39; -1160:00; -1161:C9; -1162:CD; -1163:44; -1164:51; -1165:C3; -1166:41; -1167:42; -1168:21; -1169:EC; -116A:51; -116B:CD; -116C:A7; -116D:28; -116E:CD; -116F:92; -1170:51; -1171:79; -1172:CD; -1173:2A; -1174:03; -1175:E6; -1176:03; -1177:FD; -1178:77; -1179:0D; -117A:21; -117B:00; -117C:52; -117D:CD; -117E:A7; -117F:28; -1180:CD; -1181:92; -1182:51; -1183:79; -1184:CD; -1185:2A; -1186:03; -1187:E6; -1188:03; -1189:FD; -118A:77; -118B:10; -118C:3E; -118D:0D; -118E:CD; -118F:2A; -1190:03; -1191:C9; -1192:3A; -1193:AF; -1194:7A; -1195:B7; -1196:20; -1197:FA; -1198:F3; -1199:1E; -119A:10; -119B:53; -119C:2A; -119D:20; -119E:78; -119F:3A; -11A0:00; -11A1:68; -11A2:B7; -11A3:FA; -11A4:9F; -11A5:51; -11A6:15; -11A7:20; -11A8:05; -11A9:53; -11AA:3E; -11AB:40; -11AC:AE; -11AD:77; -11AE:3A; -11AF:00; -11B0:68; -11B1:B7; -11B2:F2; -11B3:AE; -11B4:51; -11B5:3A; -11B6:DF; -11B7:68; -11B8:CB; -11B9:57; -11BA:20; -11BB:0F; -11BC:3A; -11BD:FD; -11BE:68; -11BF:CB; -11C0:57; -11C1:20; -11C2:08; -11C3:CD; -11C4:44; -11C5:51; -11C6:3E; -11C7:11; -11C8:C3; -11C9:41; -11CA:42; -11CB:3A; -11CC:F7; -11CD:68; -11CE:CB; -11CF:67; -11D0:0E; -11D1:31; -11D2:28; -11D3:06; -11D4:CB; -11D5:4F; -11D6:0E; -11D7:32; -11D8:20; -11D9:C5; -11DA:C5; -11DB:01; -11DC:64; -11DD:00; -11DE:CD; -11DF:BE; -11E0:5E; -11E1:C1; -11E2:3A; -11E3:00; -11E4:68; -11E5:F6; -11E6:80; -11E7:3C; -11E8:20; -11E9:F8; -11EA:FB; -11EB:C9; -11EC:0D; -11ED:53; -11EE:4F; -11EF:55; -11F0:52; -11F1:43; -11F2:45; -11F3:20; -11F4:44; -11F5:49; -11F6:53; -11F7:4B; -11F8:28; -11F9:31; -11FA:2F; -11FB:32; -11FC:29; -11FD:3F; -11FE:20; -11FF:00; -1200:0D; -1201:44; -1202:45; -1203:53; -1204:54; -1205:49; -1206:4E; -1207:41; -1208:54; -1209:49; -120A:4F; -120B:4E; -120C:20; -120D:44; -120E:49; -120F:53; -1210:4B; -1211:28; -1212:31; -1213:2F; -1214:32; -1215:29; -1216:3F; -1217:20; -1218:00; -1219:FD; -121A:7E; -121B:0D; -121C:CD; -121D:84; -121E:4D; -121F:FD; -1220:BE; -1221:10; -1222:C0; -1223:21; -1224:84; -1225:52; -1226:CD; -1227:A7; -1228:28; -1229:21; -122A:9D; -122B:52; -122C:CD; -122D:A7; -122E:28; -122F:3A; -1230:AF; -1231:7A; -1232:B7; -1233:20; -1234:FA; -1235:F3; -1236:1E; -1237:10; -1238:53; -1239:2A; -123A:20; -123B:78; -123C:3A; -123D:00; -123E:68; -123F:B7; -1240:FA; -1241:3C; -1242:52; -1243:15; -1244:20; -1245:05; -1246:53; -1247:3E; -1248:40; -1249:AE; -124A:77; -124B:3A; -124C:00; -124D:68; -124E:B7; -124F:F2; -1250:4B; -1251:52; -1252:3A; -1253:DF; -1254:68; -1255:CB; -1256:57; -1257:20; -1258:0F; -1259:3A; -125A:FD; -125B:68; -125C:CB; -125D:57; -125E:20; -125F:08; -1260:CD; -1261:44; -1262:51; -1263:3E; -1264:11; -1265:C3; -1266:41; -1267:42; -1268:3A; -1269:EF; -126A:68; -126B:CB; -126C:67; -126D:20; -126E:CD; -126F:3A; -1270:3C; -1271:78; -1272:77; -1273:FB; -1274:C9; -1275:FD; -1276:7E; -1277:10; -1278:CD; -1279:84; -127A:4D; -127B:FD; -127C:BE; -127D:0D; -127E:C0; -127F:21; -1280:B7; -1281:52; -1282:18; -1283:A2; -1284:0D; -1285:49; -1286:4E; -1287:53; -1288:45; -1289:52; -128A:54; -128B:20; -128C:53; -128D:4F; -128E:55; -128F:52; -1290:43; -1291:45; -1292:20; -1293:44; -1294:49; -1295:53; -1296:4B; -1297:45; -1298:54; -1299:54; -129A:45; -129B:0D; -129C:00; -129D:28; -129E:50; -129F:52; -12A0:45; -12A1:53; -12A2:53; -12A3:20; -12A4:53; -12A5:50; -12A6:41; -12A7:43; -12A8:45; -12A9:20; -12AA:57; -12AB:48; -12AC:45; -12AD:4E; -12AE:20; -12AF:52; -12B0:45; -12B1:41; -12B2:44; -12B3:59; -12B4:29; -12B5:0D; -12B6:00; -12B7:0D; -12B8:49; -12B9:4E; -12BA:53; -12BB:45; -12BC:52; -12BD:54; -12BE:20; -12BF:44; -12C0:45; -12C1:53; -12C2:54; -12C3:49; -12C4:4E; -12C5:41; -12C6:54; -12C7:49; -12C8:4F; -12C9:4E; -12CA:20; -12CB:44; -12CC:49; -12CD:53; -12CE:4B; -12CF:45; -12D0:54; -12D1:54; -12D2:45; -12D3:0D; -12D4:00; -12D5:E5; -12D6:F3; -12D7:CD; -12D8:41; -12D9:5F; -12DA:C5; -12DB:01; -12DC:32; -12DD:00; -12DE:CD; -12DF:BE; -12E0:5E; -12E1:C1; -12E2:FD; -12E3:36; -12E4:12; -12E5:00; -12E6:FD; -12E7:36; -12E8:11; -12E9:0F; -12EA:CD; -12EB:27; -12EC:5B; -12ED:B7; -12EE:C2; -12EF:41; -12F0:42; -12F1:CD; -12F2:52; -12F3:5F; -12F4:FD; -12F5:6E; -12F6:31; -12F7:FD; -12F8:66; -12F9:32; -12FA:1E; -12FB:00; -12FC:16; -12FD:00; -12FE:0E; -12FF:4E; -1300:06; -1301:08; -1302:7E; -1303:CB; -1304:0F; -1305:38; -1306:01; -1307:13; -1308:10; -1309:F9; -130A:23; -130B:0D; -130C:20; -130D:F2; -130E:6B; -130F:62; -1310:E5; -1311:CD; -1312:AF; -1313:0F; -1314:21; -1315:4A; -1316:53; -1317:CD; -1318:A7; -1319:28; -131A:E1; -131B:E5; -131C:CB; -131D:3C; -131E:CB; -131F:1D; -1320:CB; -1321:3C; -1322:CB; -1323:1D; -1324:CB; -1325:3C; -1326:CB; -1327:1D; -1328:CD; -1329:AF; -132A:0F; -132B:3E; -132C:2E; -132D:CD; -132E:2A; -132F:03; -1330:E1; -1331:3E; -1332:07; -1333:A5; -1334:3C; -1335:47; -1336:21; -1337:83; -1338:FF; -1339:11; -133A:7D; -133B:00; -133C:19; -133D:10; -133E:FD; -133F:CD; -1340:AF; -1341:0F; -1342:21; -1343:59; -1344:53; -1345:CD; -1346:A7; -1347:28; -1348:E1; -1349:C9; -134A:20; -134B:52; -134C:45; -134D:43; -134E:4F; -134F:52; -1350:44; -1351:53; -1352:20; -1353:46; -1354:52; -1355:45; -1356:45; -1357:0D; -1358:00; -1359:4B; -135A:20; -135B:42; -135C:59; -135D:54; -135E:45; -135F:53; -1360:20; -1361:46; -1362:52; -1363:45; -1364:45; -1365:0D; -1366:00; -1367:CD; -1368:78; -1369:53; -136A:B7; -136B:C2; -136C:41; -136D:42; -136E:7E; -136F:B7; -1370:C8; -1371:FE; -1372:3A; -1373:C2; -1374:97; -1375:19; -1376:AF; -1377:C9; -1378:FD; -1379:E5; -137A:06; -137B:08; -137C:FD; -137D:36; -137E:01; -137F:20; -1380:FD; -1381:23; -1382:10; -1383:F8; -1384:FD; -1385:E1; -1386:7E; -1387:23; -1388:FE; -1389:20; -138A:28; -138B:FA; -138C:2B; -138D:CF; -138E:22; -138F:06; -1390:08; -1391:7E; -1392:FE; -1393:22; -1394:20; -1395:03; -1396:3E; -1397:01; -1398:C9; -1399:FD; -139A:E5; -139B:7E; -139C:23; -139D:FE; -139E:22; -139F:28; -13A0:14; -13A1:FD; -13A2:77; -13A3:01; -13A4:FD; -13A5:23; -13A6:10; -13A7:F3; -13A8:FD; -13A9:E1; -13AA:7E; -13AB:23; -13AC:B7; -13AD:28; -13AE:E7; -13AF:FE; -13B0:22; -13B1:28; -13B2:04; -13B3:18; -13B4:F5; -13B5:FD; -13B6:E1; -13B7:AF; -13B8:C9; -13B9:CD; -13BA:C1; -13BB:53; -13BC:D8; -13BD:53; -13BE:C3; -13BF:C1; -13C0:53; -13C1:7E; -13C2:23; -13C3:CD; -13C4:D5; -13C5:53; -13C6:D8; -13C7:17; -13C8:17; -13C9:17; -13CA:17; -13CB:5F; -13CC:7E; -13CD:23; -13CE:CD; -13CF:D5; -13D0:53; -13D1:D8; -13D2:B3; -13D3:5F; -13D4:C9; -13D5:FE; -13D6:30; -13D7:D8; -13D8:FE; -13D9:3A; -13DA:30; -13DB:03; -13DC:E6; -13DD:0F; -13DE:C9; -13DF:FE; -13E0:41; -13E1:D8; -13E2:FE; -13E3:47; -13E4:30; -13E5:02; -13E6:C6; -13E7:C9; -13E8:3F; -13E9:C9; -13EA:26; -13EB:A5; -13EC:2E; -13ED:0A; -13EE:18; -13EF:0B; -13F0:2E; -13F1:0A; -13F2:FD; -13F3:36; -13F4:38; -13F5:11; -13F6:06; -13F7:28; -13F8:CD; -13F9:01; -13FA:5F; -13FB:FD; -13FC:7E; -13FD:12; -13FE:FD; -13FF:96; -1400:14; -1401:28; -1402:1A; -1403:F2; -1404:11; -1405:54; -1406:ED; -1407:44; -1408:47; -1409:CD; -140A:01; -140B:5F; -140C:18; -140D:0F; -140E:C3; -140F:A4; -1410:5E; -1411:47; -1412:CD; -1413:CE; -1414:5E; -1415:C5; -1416:01; -1417:64; -1418:00; -1419:CD; -141A:BE; -141B:5E; -141C:C1; -141D:0E; -141E:12; -141F:FD; -1420:7E; -1421:12; -1422:FD; -1423:86; -1424:11; -1425:57; -1426:DB; -1427:11; -1428:ED; -1429:78; -142A:F2; -142B:28; -142C:54; -142D:00; -142E:00; -142F:00; -1430:00; -1431:3A; -1432:DF; -1433:68; -1434:E6; -1435:04; -1436:28; -1437:D6; -1438:DB; -1439:11; -143A:47; -143B:ED; -143C:78; -143D:F2; -143E:3B; -143F:54; -1440:78; -1441:FE; -1442:80; -1443:C2; -1444:31; -1445:54; -1446:00; -1447:00; -1448:00; -1449:3E; -144A:00; -144B:3E; -144C:00; -144D:DB; -144E:11; -144F:ED; -1450:78; -1451:F2; -1452:4F; -1453:54; -1454:2B; -1455:23; -1456:2B; -1457:23; -1458:2B; -1459:23; -145A:00; -145B:3E; -145C:00; -145D:DB; -145E:11; -145F:ED; -1460:78; -1461:F2; -1462:5F; -1463:54; -1464:2B; -1465:23; -1466:2B; -1467:23; -1468:2B; -1469:23; -146A:00; -146B:3E; -146C:00; -146D:DB; -146E:11; -146F:ED; -1470:78; -1471:F2; -1472:6F; -1473:54; -1474:2B; -1475:23; -1476:2B; -1477:23; -1478:2B; -1479:23; -147A:00; -147B:3E; -147C:00; -147D:DB; -147E:11; -147F:ED; -1480:78; -1481:F2; -1482:7F; -1483:54; -1484:2B; -1485:23; -1486:2B; -1487:23; -1488:2B; -1489:23; -148A:00; -148B:3E; -148C:00; -148D:DB; -148E:11; -148F:ED; -1490:78; -1491:F2; -1492:8F; -1493:54; -1494:2B; -1495:23; -1496:2B; -1497:23; -1498:2B; -1499:23; -149A:00; -149B:3E; -149C:00; -149D:DB; -149E:11; -149F:ED; -14A0:78; -14A1:F2; -14A2:9F; -14A3:54; -14A4:2B; -14A5:23; -14A6:2B; -14A7:23; -14A8:2B; -14A9:23; -14AA:00; -14AB:3E; -14AC:00; -14AD:DB; -14AE:11; -14AF:ED; -14B0:78; -14B1:F2; -14B2:AF; -14B3:54; -14B4:2B; -14B5:23; -14B6:2B; -14B7:23; -14B8:2B; -14B9:23; -14BA:00; -14BB:3E; -14BC:00; -14BD:DB; -14BE:11; -14BF:47; -14C0:ED; -14C1:78; -14C2:F2; -14C3:C0; -14C4:54; -14C5:78; -14C6:FE; -14C7:80; -14C8:CA; -14C9:46; -14CA:54; -14CB:00; -14CC:00; -14CD:00; -14CE:3E; -14CF:00; -14D0:3E; -14D1:00; -14D2:DB; -14D3:11; -14D4:ED; -14D5:78; -14D6:F2; -14D7:D4; -14D8:54; -14D9:2B; -14DA:23; -14DB:2B; -14DC:23; -14DD:2B; -14DE:23; -14DF:00; -14E0:3E; -14E1:00; -14E2:DB; -14E3:11; -14E4:ED; -14E5:78; -14E6:F2; -14E7:E4; -14E8:54; -14E9:2B; -14EA:23; -14EB:2B; -14EC:23; -14ED:2B; -14EE:23; -14EF:00; -14F0:3E; -14F1:00; -14F2:DB; -14F3:11; -14F4:ED; -14F5:78; -14F6:F2; -14F7:F4; -14F8:54; -14F9:2B; -14FA:23; -14FB:2B; -14FC:23; -14FD:2B; -14FE:23; -14FF:00; -1500:3E; -1501:00; -1502:DB; -1503:11; -1504:ED; -1505:78; -1506:F2; -1507:04; -1508:55; -1509:2B; -150A:23; -150B:2B; -150C:23; -150D:2B; -150E:23; -150F:00; -1510:3E; -1511:00; -1512:DB; -1513:11; -1514:ED; -1515:78; -1516:F2; -1517:14; -1518:55; -1519:2B; -151A:23; -151B:2B; -151C:23; -151D:2B; -151E:23; -151F:00; -1520:3E; -1521:00; -1522:DB; -1523:11; -1524:ED; -1525:78; -1526:F2; -1527:24; -1528:55; -1529:2B; -152A:23; -152B:2B; -152C:23; -152D:2B; -152E:23; -152F:00; -1530:3E; -1531:00; -1532:DB; -1533:11; -1534:ED; -1535:78; -1536:F2; -1537:34; -1538:55; -1539:2B; -153A:23; -153B:2B; -153C:23; -153D:2B; -153E:23; -153F:00; -1540:3E; -1541:00; -1542:DB; -1543:11; -1544:47; -1545:ED; -1546:78; -1547:F2; -1548:45; -1549:55; -154A:78; -154B:FE; -154C:FE; -154D:C2; -154E:31; -154F:54; -1550:00; -1551:00; -1552:00; -1553:3E; -1554:00; -1555:3E; -1556:00; -1557:DB; -1558:11; -1559:ED; -155A:78; -155B:F2; -155C:59; -155D:55; -155E:2B; -155F:23; -1560:2B; -1561:23; -1562:2B; -1563:23; -1564:00; -1565:3E; -1566:00; -1567:DB; -1568:11; -1569:ED; -156A:78; -156B:F2; -156C:69; -156D:55; -156E:2B; -156F:23; -1570:2B; -1571:23; -1572:2B; -1573:23; -1574:00; -1575:3E; -1576:00; -1577:DB; -1578:11; -1579:ED; -157A:78; -157B:F2; -157C:79; -157D:55; -157E:2B; -157F:23; -1580:2B; -1581:23; -1582:2B; -1583:23; -1584:00; -1585:3E; -1586:00; -1587:DB; -1588:11; -1589:ED; -158A:78; -158B:F2; -158C:89; -158D:55; -158E:2B; -158F:23; -1590:2B; -1591:23; -1592:2B; -1593:23; -1594:00; -1595:3E; -1596:00; -1597:DB; -1598:11; -1599:ED; -159A:78; -159B:F2; -159C:99; -159D:55; -159E:2B; -159F:23; -15A0:2B; -15A1:23; -15A2:2B; -15A3:23; -15A4:00; -15A5:3E; -15A6:00; -15A7:DB; -15A8:11; -15A9:ED; -15AA:78; -15AB:F2; -15AC:A9; -15AD:55; -15AE:2B; -15AF:23; -15B0:2B; -15B1:23; -15B2:2B; -15B3:23; -15B4:00; -15B5:3E; -15B6:00; -15B7:DB; -15B8:11; -15B9:ED; -15BA:78; -15BB:F2; -15BC:B9; -15BD:55; -15BE:2B; -15BF:23; -15C0:2B; -15C1:23; -15C2:2B; -15C3:23; -15C4:00; -15C5:3E; -15C6:00; -15C7:DB; -15C8:11; -15C9:47; -15CA:ED; -15CB:78; -15CC:F2; -15CD:CA; -15CE:55; -15CF:78; -15D0:FE; -15D1:E7; -15D2:C2; -15D3:31; -15D4:54; -15D5:00; -15D6:00; -15D7:00; -15D8:3E; -15D9:00; -15DA:3E; -15DB:00; -15DC:DB; -15DD:11; -15DE:ED; -15DF:78; -15E0:F2; -15E1:DE; -15E2:55; -15E3:2B; -15E4:23; -15E5:2B; -15E6:23; -15E7:2B; -15E8:23; -15E9:00; -15EA:3E; -15EB:00; -15EC:DB; -15ED:11; -15EE:ED; -15EF:78; -15F0:F2; -15F1:EE; -15F2:55; -15F3:2B; -15F4:23; -15F5:2B; -15F6:23; -15F7:2B; -15F8:23; -15F9:00; -15FA:3E; -15FB:00; -15FC:DB; -15FD:11; -15FE:ED; -15FF:78; -1600:F2; -1601:FE; -1602:55; -1603:2B; -1604:23; -1605:2B; -1606:23; -1607:2B; -1608:23; -1609:00; -160A:3E; -160B:00; -160C:DB; -160D:11; -160E:ED; -160F:78; -1610:F2; -1611:0E; -1612:56; -1613:2B; -1614:23; -1615:2B; -1616:23; -1617:2B; -1618:23; -1619:00; -161A:3E; -161B:00; -161C:DB; -161D:11; -161E:ED; -161F:78; -1620:F2; -1621:1E; -1622:56; -1623:2B; -1624:23; -1625:2B; -1626:23; -1627:2B; -1628:23; -1629:00; -162A:3E; -162B:00; -162C:DB; -162D:11; -162E:ED; -162F:78; -1630:F2; -1631:2E; -1632:56; -1633:2B; -1634:23; -1635:2B; -1636:23; -1637:2B; -1638:23; -1639:00; -163A:3E; -163B:00; -163C:DB; -163D:11; -163E:ED; -163F:78; -1640:F2; -1641:3E; -1642:56; -1643:2B; -1644:23; -1645:2B; -1646:23; -1647:2B; -1648:23; -1649:00; -164A:3E; -164B:00; -164C:DB; -164D:11; -164E:47; -164F:ED; -1650:78; -1651:F2; -1652:4F; -1653:56; -1654:78; -1655:FE; -1656:18; -1657:C2; -1658:31; -1659:54; -165A:00; -165B:00; -165C:00; -165D:3E; -165E:00; -165F:3E; -1660:00; -1661:DB; -1662:11; -1663:ED; -1664:78; -1665:F2; -1666:63; -1667:56; -1668:2B; -1669:23; -166A:2B; -166B:23; -166C:2B; -166D:23; -166E:00; -166F:3E; -1670:00; -1671:3E; -1672:00; -1673:DB; -1674:11; -1675:ED; -1676:78; -1677:F2; -1678:73; -1679:56; -167A:2B; -167B:23; -167C:2B; -167D:23; -167E:2B; -167F:23; -1680:00; -1681:3E; -1682:00; -1683:DB; -1684:11; -1685:ED; -1686:78; -1687:F2; -1688:83; -1689:56; -168A:2B; -168B:23; -168C:2B; -168D:23; -168E:2B; -168F:23; -1690:00; -1691:DB; -1692:11; -1693:ED; -1694:78; -1695:F2; -1696:93; -1697:56; -1698:2B; -1699:23; -169A:2B; -169B:23; -169C:2B; -169D:23; -169E:00; -169F:3E; -16A0:00; -16A1:DB; -16A2:11; -16A3:ED; -16A4:78; -16A5:F2; -16A6:A3; -16A7:56; -16A8:2B; -16A9:23; -16AA:2B; -16AB:23; -16AC:2B; -16AD:23; -16AE:00; -16AF:3E; -16B0:00; -16B1:DB; -16B2:11; -16B3:ED; -16B4:78; -16B5:F2; -16B6:B3; -16B7:56; -16B8:2B; -16B9:23; -16BA:2B; -16BB:23; -16BC:2B; -16BD:23; -16BE:00; -16BF:3E; -16C0:00; -16C1:DB; -16C2:11; -16C3:ED; -16C4:78; -16C5:F2; -16C6:C3; -16C7:56; -16C8:2B; -16C9:23; -16CA:2B; -16CB:23; -16CC:2B; -16CD:23; -16CE:00; -16CF:3E; -16D0:00; -16D1:DB; -16D2:11; -16D3:47; -16D4:ED; -16D5:78; -16D6:F2; -16D7:D4; -16D8:56; -16D9:78; -16DA:FE; -16DB:C3; -16DC:C2; -16DD:31; -16DE:54; -16DF:00; -16E0:00; -16E1:00; -16E2:3E; -16E3:00; -16E4:3E; -16E5:00; -16E6:DB; -16E7:11; -16E8:ED; -16E9:78; -16EA:F2; -16EB:E8; -16EC:56; -16ED:2B; -16EE:23; -16EF:2B; -16F0:23; -16F1:2B; -16F2:23; -16F3:00; -16F4:3E; -16F5:00; -16F6:DB; -16F7:11; -16F8:ED; -16F9:78; -16FA:F2; -16FB:F8; -16FC:56; -16FD:2B; -16FE:23; -16FF:2B; -1700:23; -1701:2B; -1702:23; -1703:00; -1704:3E; -1705:00; -1706:DB; -1707:11; -1708:ED; -1709:78; -170A:F2; -170B:08; -170C:57; -170D:2B; -170E:23; -170F:2B; -1710:23; -1711:2B; -1712:23; -1713:00; -1714:3E; -1715:00; -1716:DB; -1717:11; -1718:ED; -1719:78; -171A:F2; -171B:18; -171C:57; -171D:2B; -171E:23; -171F:2B; -1720:23; -1721:2B; -1722:23; -1723:00; -1724:3E; -1725:00; -1726:DB; -1727:11; -1728:ED; -1729:78; -172A:F2; -172B:28; -172C:57; -172D:2B; -172E:23; -172F:2B; -1730:23; -1731:2B; -1732:23; -1733:00; -1734:3E; -1735:00; -1736:DB; -1737:11; -1738:ED; -1739:78; -173A:F2; -173B:38; -173C:57; -173D:2B; -173E:23; -173F:2B; -1740:23; -1741:2B; -1742:23; -1743:00; -1744:3E; -1745:00; -1746:DB; -1747:11; -1748:ED; -1749:78; -174A:F2; -174B:48; -174C:57; -174D:FD; -174E:7E; -174F:12; -1750:47; -1751:00; -1752:C3; -1753:55; -1754:57; -1755:C3; -1756:58; -1757:57; -1758:DB; -1759:11; -175A:08; -175B:ED; -175C:78; -175D:F2; -175E:5B; -175F:57; -1760:08; -1761:B8; -1762:CA; -1763:6C; -1764:57; -1765:2D; -1766:C2; -1767:FB; -1768:53; -1769:C3; -176A:F0; -176B:53; -176C:00; -176D:00; -176E:00; -176F:C3; -1770:72; -1771:57; -1772:3E; -1773:00; -1774:DB; -1775:11; -1776:ED; -1777:78; -1778:F2; -1779:76; -177A:57; -177B:2B; -177C:23; -177D:2B; -177E:23; -177F:2B; -1780:23; -1781:00; -1782:3E; -1783:00; -1784:DB; -1785:11; -1786:ED; -1787:78; -1788:F2; -1789:86; -178A:57; -178B:2B; -178C:23; -178D:2B; -178E:23; -178F:2B; -1790:23; -1791:00; -1792:3E; -1793:00; -1794:DB; -1795:11; -1796:ED; -1797:78; -1798:F2; -1799:96; -179A:57; -179B:2B; -179C:23; -179D:2B; -179E:23; -179F:2B; -17A0:23; -17A1:00; -17A2:3E; -17A3:00; -17A4:DB; -17A5:11; -17A6:ED; -17A7:78; -17A8:F2; -17A9:A6; -17AA:57; -17AB:2B; -17AC:23; -17AD:2B; -17AE:23; -17AF:2B; -17B0:23; -17B1:00; -17B2:3E; -17B3:00; -17B4:DB; -17B5:11; -17B6:ED; -17B7:78; -17B8:F2; -17B9:B6; -17BA:57; -17BB:2B; -17BC:23; -17BD:2B; -17BE:23; -17BF:2B; -17C0:23; -17C1:00; -17C2:3E; -17C3:00; -17C4:DB; -17C5:11; -17C6:ED; -17C7:78; -17C8:F2; -17C9:C6; -17CA:57; -17CB:2B; -17CC:23; -17CD:2B; -17CE:23; -17CF:2B; -17D0:23; -17D1:00; -17D2:3E; -17D3:00; -17D4:DB; -17D5:11; -17D6:ED; -17D7:78; -17D8:F2; -17D9:D6; -17DA:57; -17DB:FD; -17DC:7E; -17DD:11; -17DE:47; -17DF:00; -17E0:C3; -17E1:E3; -17E2:57; -17E3:C3; -17E4:E6; -17E5:57; -17E6:DB; -17E7:11; -17E8:08; -17E9:ED; -17EA:78; -17EB:F2; -17EC:E9; -17ED:57; -17EE:08; -17EF:B8; -17F0:CA; -17F1:FB; -17F2:57; -17F3:25; -17F4:C2; -17F5:31; -17F6:54; -17F7:3E; -17F8:09; -17F9:B7; -17FA:C9; -17FB:00; -17FC:00; -17FD:00; -17FE:C3; -17FF:01; -1800:58; -1801:3E; -1802:00; -1803:DB; -1804:11; -1805:ED; -1806:78; -1807:F2; -1808:05; -1809:58; -180A:2B; -180B:23; -180C:2B; -180D:23; -180E:2B; -180F:23; -1810:00; -1811:3E; -1812:00; -1813:DB; -1814:11; -1815:ED; -1816:78; -1817:F2; -1818:15; -1819:58; -181A:2B; -181B:23; -181C:2B; -181D:23; -181E:2B; -181F:23; -1820:00; -1821:3E; -1822:00; -1823:DB; -1824:11; -1825:ED; -1826:78; -1827:F2; -1828:25; -1829:58; -182A:2B; -182B:23; -182C:2B; -182D:23; -182E:2B; -182F:23; -1830:00; -1831:3E; -1832:00; -1833:DB; -1834:11; -1835:ED; -1836:78; -1837:F2; -1838:35; -1839:58; -183A:2B; -183B:23; -183C:2B; -183D:23; -183E:2B; -183F:23; -1840:00; -1841:3E; -1842:00; -1843:DB; -1844:11; -1845:ED; -1846:78; -1847:F2; -1848:45; -1849:58; -184A:2B; -184B:23; -184C:2B; -184D:23; -184E:2B; -184F:23; -1850:00; -1851:3E; -1852:00; -1853:DB; -1854:11; -1855:ED; -1856:78; -1857:F2; -1858:55; -1859:58; -185A:2B; -185B:23; -185C:2B; -185D:23; -185E:2B; -185F:23; -1860:00; -1861:3E; -1862:00; -1863:DB; -1864:11; -1865:ED; -1866:78; -1867:F2; -1868:65; -1869:58; -186A:2B; -186B:23; -186C:2B; -186D:23; -186E:2B; -186F:23; -1870:00; -1871:3E; -1872:00; -1873:DB; -1874:11; -1875:BA; -1876:C2; -1877:31; -1878:54; -1879:AF; -187A:C9; -187B:CD; -187C:13; -187D:59; -187E:FE; -187F:0D; -1880:28; -1881:02; -1882:B7; -1883:C0; -1884:CD; -1885:68; -1886:59; -1887:B7; -1888:C0; -1889:FD; -188A:56; -188B:11; -188C:D5; -188D:E5; -188E:CD; -188F:BF; -1890:58; -1891:E1; -1892:D1; -1893:B7; -1894:C0; -1895:FD; -1896:72; -1897:11; -1898:E5; -1899:CD; -189A:27; -189B:5B; -189C:E1; -189D:B7; -189E:C0; -189F:EB; -18A0:FD; -18A1:7E; -18A2:09; -18A3:12; -18A4:13; -18A5:3E; -18A6:3A; -18A7:12; -18A8:13; -18A9:FD; -18AA:E5; -18AB:E1; -18AC:23; -18AD:01; -18AE:08; -18AF:00; -18B0:ED; -18B1:B0; -18B2:FD; -18B3:7E; -18B4:16; -18B5:12; -18B6:13; -18B7:FD; -18B8:7E; -18B9:15; -18BA:12; -18BB:CD; -18BC:A1; -18BD:59; -18BE:C9; -18BF:FD; -18C0:36; -18C1:16; -18C2:01; -18C3:FD; -18C4:36; -18C5:15; -18C6:00; -18C7:FD; -18C8:6E; -18C9:34; -18CA:FD; -18CB:66; -18CC:35; -18CD:2B; -18CE:23; -18CF:4E; -18D0:CB; -18D1:09; -18D2:30; -18D3:2B; -18D4:FD; -18D5:34; -18D6:15; -18D7:FD; -18D8:7E; -18D9:15; -18DA:FE; -18DB:08; -18DC:20; -18DD:F2; -18DE:23; -18DF:4E; -18E0:CB; -18E1:09; -18E2:30; -18E3:1B; -18E4:FD; -18E5:34; -18E6:15; -18E7:FD; -18E8:7E; -18E9:15; -18EA:FE; -18EB:10; -18EC:20; -18ED:F2; -18EE:FD; -18EF:36; -18F0:15; -18F1:00; -18F2:FD; -18F3:34; -18F4:16; -18F5:FD; -18F6:7E; -18F7:16; -18F8:FE; -18F9:28; -18FA:20; -18FB:D2; -18FC:3E; -18FD:07; -18FE:C9; -18FF:CB; -1900:01; -1901:CB; -1902:C1; -1903:FD; -1904:7E; -1905:15; -1906:E6; -1907:07; -1908:3C; -1909:47; -190A:CB; -190B:09; -190C:CB; -190D:01; -190E:10; -190F:FC; -1910:71; -1911:AF; -1912:C9; -1913:FD; -1914:6E; -1915:31; -1916:FD; -1917:66; -1918:32; -1919:FD; -191A:36; -191B:12; -191C:00; -191D:FD; -191E:36; -191F:11; -1920:00; -1921:CD; -1922:27; -1923:5B; -1924:B7; -1925:C2; -1926:41; -1927:42; -1928:06; -1929:08; -192A:FD; -192B:6E; -192C:31; -192D:FD; -192E:66; -192F:32; -1930:FD; -1931:E5; -1932:D1; -1933:13; -1934:7E; -1935:B7; -1936:C8; -1937:D5; -1938:E5; -1939:FE; -193A:01; -193B:28; -193C:16; -193D:FD; -193E:77; -193F:0A; -1940:23; -1941:23; -1942:0E; -1943:08; -1944:EB; -1945:1A; -1946:BE; -1947:20; -1948:0A; -1949:23; -194A:13; -194B:0D; -194C:20; -194D:F7; -194E:F1; -194F:F1; -1950:3E; -1951:02; -1952:C9; -1953:E1; -1954:11; -1955:10; -1956:00; -1957:19; -1958:D1; -1959:10; -195A:D9; -195B:FD; -195C:34; -195D:11; -195E:FD; -195F:7E; -1960:11; -1961:FE; -1962:0F; -1963:20; -1964:BC; -1965:3E; -1966:0D; -1967:C9; -1968:FD; -1969:6E; -196A:31; -196B:FD; -196C:66; -196D:32; -196E:FD; -196F:36; -1970:12; -1971:00; -1972:FD; -1973:36; -1974:11; -1975:00; -1976:CD; -1977:27; -1978:5B; -1979:B7; -197A:C2; -197B:41; -197C:42; -197D:06; -197E:08; -197F:FD; -1980:6E; -1981:31; -1982:FD; -1983:66; -1984:32; -1985:7E; -1986:B7; -1987:C8; -1988:FE; -1989:01; -198A:20; -198B:02; -198C:AF; -198D:C9; -198E:11; -198F:10; -1990:00; -1991:19; -1992:10; -1993:F1; -1994:FD; -1995:34; -1996:11; -1997:FD; -1998:7E; -1999:11; -199A:FE; -199B:0F; -199C:20; -199D:D8; -199E:3E; -199F:03; -19A0:C9; -19A1:CD; -19A2:10; -19A3:5B; -19A4:D5; -19A5:FD; -19A6:E5; -19A7:E1; -19A8:11; -19A9:CD; -19AA:00; -19AB:19; -19AC:D1; -19AD:73; -19AE:23; -19AF:72; -19B0:FD; -19B1:E5; -19B2:E1; -19B3:11; -19B4:43; -19B5:00; -19B6:19; -19B7:06; -19B8:8C; -19B9:D9; -19BA:CD; -19BB:EA; -19BC:53; -19BD:CA; -19BE:C6; -19BF:59; -19C0:FE; -19C1:11; -19C2:C8; -19C3:3E; -19C4:09; -19C5:C9; -19C6:D9; -19C7:FD; -19C8:56; -19C9:33; -19CA:CB; -19CB:B2; -19CC:7A; -19CD:D3; -19CE:10; -19CF:4E; -19D0:3E; -19D1:20; -19D2:AA; -19D3:CB; -19D4:11; -19D5:D2; -19D6:E3; -19D7:59; -19D8:D3; -19D9:10; -19DA:EE; -19DB:20; -19DC:57; -19DD:2B; -19DE:D3; -19DF:10; -19E0:C3; -19E1:EE; -19E2:59; -19E3:D3; -19E4:10; -19E5:EE; -19E6:00; -19E7:57; -19E8:2B; -19E9:D3; -19EA:10; -19EB:C3; -19EC:EE; -19ED:59; -19EE:23; -19EF:C3; -19F0:F2; -19F1:59; -19F2:C3; -19F3:F5; -19F4:59; -19F5:DB; -19F6:12; -19F7:3E; -19F8:20; -19F9:AA; -19FA:CB; -19FB:11; -19FC:D2; -19FD:0A; -19FE:5A; -19FF:D3; -1A00:10; -1A01:EE; -1A02:20; -1A03:57; -1A04:2B; -1A05:D3; -1A06:10; -1A07:C3; -1A08:15; -1A09:5A; -1A0A:D3; -1A0B:10; -1A0C:EE; -1A0D:00; -1A0E:57; -1A0F:2B; -1A10:D3; -1A11:10; -1A12:C3; -1A13:15; -1A14:5A; -1A15:23; -1A16:C3; -1A17:19; -1A18:5A; -1A19:C3; -1A1A:1C; -1A1B:5A; -1A1C:DB; -1A1D:12; -1A1E:3E; -1A1F:20; -1A20:AA; -1A21:CB; -1A22:11; -1A23:D2; -1A24:31; -1A25:5A; -1A26:D3; -1A27:10; -1A28:EE; -1A29:20; -1A2A:57; -1A2B:2B; -1A2C:D3; -1A2D:10; -1A2E:C3; -1A2F:3C; -1A30:5A; -1A31:D3; -1A32:10; -1A33:EE; -1A34:00; -1A35:57; -1A36:2B; -1A37:D3; -1A38:10; -1A39:C3; -1A3A:3C; -1A3B:5A; -1A3C:23; -1A3D:C3; -1A3E:40; -1A3F:5A; -1A40:C3; -1A41:43; -1A42:5A; -1A43:DB; -1A44:12; -1A45:3E; -1A46:20; -1A47:AA; -1A48:CB; -1A49:11; -1A4A:D2; -1A4B:58; -1A4C:5A; -1A4D:D3; -1A4E:10; -1A4F:EE; -1A50:20; -1A51:57; -1A52:2B; -1A53:D3; -1A54:10; -1A55:C3; -1A56:63; -1A57:5A; -1A58:D3; -1A59:10; -1A5A:EE; -1A5B:00; -1A5C:57; -1A5D:2B; -1A5E:D3; -1A5F:10; -1A60:C3; -1A61:63; -1A62:5A; -1A63:23; -1A64:C3; -1A65:67; -1A66:5A; -1A67:C3; -1A68:6A; -1A69:5A; -1A6A:DB; -1A6B:12; -1A6C:3E; -1A6D:20; -1A6E:AA; -1A6F:CB; -1A70:11; -1A71:D2; -1A72:7F; -1A73:5A; -1A74:D3; -1A75:10; -1A76:EE; -1A77:20; -1A78:57; -1A79:2B; -1A7A:D3; -1A7B:10; -1A7C:C3; -1A7D:8A; -1A7E:5A; -1A7F:D3; -1A80:10; -1A81:EE; -1A82:00; -1A83:57; -1A84:2B; -1A85:D3; -1A86:10; -1A87:C3; -1A88:8A; -1A89:5A; -1A8A:23; -1A8B:C3; -1A8C:8E; -1A8D:5A; -1A8E:C3; -1A8F:91; -1A90:5A; -1A91:DB; -1A92:12; -1A93:3E; -1A94:20; -1A95:AA; -1A96:CB; -1A97:11; -1A98:D2; -1A99:A6; -1A9A:5A; -1A9B:D3; -1A9C:10; -1A9D:EE; -1A9E:20; -1A9F:57; -1AA0:2B; -1AA1:D3; -1AA2:10; -1AA3:C3; -1AA4:B1; -1AA5:5A; -1AA6:D3; -1AA7:10; -1AA8:EE; -1AA9:00; -1AAA:57; -1AAB:2B; -1AAC:D3; -1AAD:10; -1AAE:C3; -1AAF:B1; -1AB0:5A; -1AB1:23; -1AB2:C3; -1AB3:B5; -1AB4:5A; -1AB5:C3; -1AB6:B8; -1AB7:5A; -1AB8:DB; -1AB9:12; -1ABA:3E; -1ABB:20; -1ABC:AA; -1ABD:CB; -1ABE:11; -1ABF:D2; -1AC0:CD; -1AC1:5A; -1AC2:D3; -1AC3:10; -1AC4:EE; -1AC5:20; -1AC6:57; -1AC7:2B; -1AC8:D3; -1AC9:10; -1ACA:C3; -1ACB:D8; -1ACC:5A; -1ACD:D3; -1ACE:10; -1ACF:EE; -1AD0:00; -1AD1:57; -1AD2:2B; -1AD3:D3; -1AD4:10; -1AD5:C3; -1AD6:D8; -1AD7:5A; -1AD8:23; -1AD9:C3; -1ADA:DC; -1ADB:5A; -1ADC:C3; -1ADD:DF; -1ADE:5A; -1ADF:DB; -1AE0:12; -1AE1:3E; -1AE2:20; -1AE3:AA; -1AE4:CB; -1AE5:11; -1AE6:D2; -1AE7:F4; -1AE8:5A; -1AE9:D3; -1AEA:10; -1AEB:EE; -1AEC:20; -1AED:57; -1AEE:2B; -1AEF:D3; -1AF0:10; -1AF1:C3; -1AF2:FF; -1AF3:5A; -1AF4:D3; -1AF5:10; -1AF6:EE; -1AF7:00; -1AF8:57; -1AF9:2B; -1AFA:D3; -1AFB:10; -1AFC:C3; -1AFD:FF; -1AFE:5A; -1AFF:23; -1B00:23; -1B01:00; -1B02:05; -1B03:C2; -1B04:CF; -1B05:59; -1B06:CB; -1B07:F2; -1B08:7A; -1B09:D3; -1B0A:10; -1B0B:FD; -1B0C:77; -1B0D:33; -1B0E:AF; -1B0F:C9; -1B10:FD; -1B11:E5; -1B12:E1; -1B13:11; -1B14:4D; -1B15:00; -1B16:19; -1B17:5E; -1B18:16; -1B19:00; -1B1A:06; -1B1B:7F; -1B1C:23; -1B1D:7B; -1B1E:86; -1B1F:5F; -1B20:3E; -1B21:00; -1B22:8A; -1B23:57; -1B24:10; -1B25:F6; -1B26:C9; -1B27:FD; -1B28:36; -1B29:13; -1B2A:0A; -1B2B:CD; -1B2C:EA; -1B2D:53; -1B2E:CA; -1B2F:37; -1B30:5B; -1B31:FE; -1B32:11; -1B33:C8; -1B34:3E; -1B35:09; -1B36:C9; -1B37:FD; -1B38:E5; -1B39:E1; -1B3A:11; -1B3B:4C; -1B3C:00; -1B3D:19; -1B3E:1E; -1B3F:83; -1B40:18; -1B41:03; -1B42:C3; -1B43:A4; -1B44:5E; -1B45:DB; -1B46:11; -1B47:ED; -1B48:78; -1B49:F2; -1B4A:47; -1B4B:5B; -1B4C:00; -1B4D:00; -1B4E:00; -1B4F:00; -1B50:3A; -1B51:DF; -1B52:68; -1B53:E6; -1B54:04; -1B55:28; -1B56:EB; -1B57:DB; -1B58:11; -1B59:47; -1B5A:ED; -1B5B:78; -1B5C:F2; -1B5D:5A; -1B5E:5B; -1B5F:78; -1B60:FE; -1B61:80; -1B62:C2; -1B63:50; -1B64:5B; -1B65:00; -1B66:00; -1B67:00; -1B68:3E; -1B69:00; -1B6A:3E; -1B6B:00; -1B6C:DB; -1B6D:11; -1B6E:ED; -1B6F:78; -1B70:F2; -1B71:6E; -1B72:5B; -1B73:2B; -1B74:23; -1B75:2B; -1B76:23; -1B77:2B; -1B78:23; -1B79:00; -1B7A:3E; -1B7B:00; -1B7C:DB; -1B7D:11; -1B7E:ED; -1B7F:78; -1B80:F2; -1B81:7E; -1B82:5B; -1B83:2B; -1B84:23; -1B85:2B; -1B86:23; -1B87:2B; -1B88:23; -1B89:00; -1B8A:3E; -1B8B:00; -1B8C:DB; -1B8D:11; -1B8E:ED; -1B8F:78; -1B90:F2; -1B91:8E; -1B92:5B; -1B93:2B; -1B94:23; -1B95:2B; -1B96:23; -1B97:2B; -1B98:23; -1B99:00; -1B9A:3E; -1B9B:00; -1B9C:DB; -1B9D:11; -1B9E:ED; -1B9F:78; -1BA0:F2; -1BA1:9E; -1BA2:5B; -1BA3:2B; -1BA4:23; -1BA5:2B; -1BA6:23; -1BA7:2B; -1BA8:23; -1BA9:00; -1BAA:3E; -1BAB:00; -1BAC:DB; -1BAD:11; -1BAE:ED; -1BAF:78; -1BB0:F2; -1BB1:AE; -1BB2:5B; -1BB3:2B; -1BB4:23; -1BB5:2B; -1BB6:23; -1BB7:2B; -1BB8:23; -1BB9:00; -1BBA:3E; -1BBB:00; -1BBC:DB; -1BBD:11; -1BBE:ED; -1BBF:78; -1BC0:F2; -1BC1:BE; -1BC2:5B; -1BC3:2B; -1BC4:23; -1BC5:2B; -1BC6:23; -1BC7:2B; -1BC8:23; -1BC9:00; -1BCA:3E; -1BCB:00; -1BCC:DB; -1BCD:11; -1BCE:ED; -1BCF:78; -1BD0:F2; -1BD1:CE; -1BD2:5B; -1BD3:2B; -1BD4:23; -1BD5:2B; -1BD6:23; -1BD7:2B; -1BD8:23; -1BD9:00; -1BDA:3E; -1BDB:00; -1BDC:DB; -1BDD:11; -1BDE:47; -1BDF:ED; -1BE0:78; -1BE1:F2; -1BE2:DF; -1BE3:5B; -1BE4:78; -1BE5:FE; -1BE6:80; -1BE7:CA; -1BE8:65; -1BE9:5B; -1BEA:00; -1BEB:00; -1BEC:00; -1BED:3E; -1BEE:00; -1BEF:3E; -1BF0:00; -1BF1:DB; -1BF2:11; -1BF3:ED; -1BF4:78; -1BF5:F2; -1BF6:F3; -1BF7:5B; -1BF8:2B; -1BF9:23; -1BFA:2B; -1BFB:23; -1BFC:2B; -1BFD:23; -1BFE:00; -1BFF:3E; -1C00:00; -1C01:DB; -1C02:11; -1C03:ED; -1C04:78; -1C05:F2; -1C06:03; -1C07:5C; -1C08:2B; -1C09:23; -1C0A:2B; -1C0B:23; -1C0C:2B; -1C0D:23; -1C0E:00; -1C0F:3E; -1C10:00; -1C11:DB; -1C12:11; -1C13:ED; -1C14:78; -1C15:F2; -1C16:13; -1C17:5C; -1C18:2B; -1C19:23; -1C1A:2B; -1C1B:23; -1C1C:2B; -1C1D:23; -1C1E:00; -1C1F:3E; -1C20:00; -1C21:DB; -1C22:11; -1C23:ED; -1C24:78; -1C25:F2; -1C26:23; -1C27:5C; -1C28:2B; -1C29:23; -1C2A:2B; -1C2B:23; -1C2C:2B; -1C2D:23; -1C2E:00; -1C2F:3E; -1C30:00; -1C31:DB; -1C32:11; -1C33:ED; -1C34:78; -1C35:F2; -1C36:33; -1C37:5C; -1C38:2B; -1C39:23; -1C3A:2B; -1C3B:23; -1C3C:2B; -1C3D:23; -1C3E:00; -1C3F:3E; -1C40:00; -1C41:DB; -1C42:11; -1C43:ED; -1C44:78; -1C45:F2; -1C46:43; -1C47:5C; -1C48:2B; -1C49:23; -1C4A:2B; -1C4B:23; -1C4C:2B; -1C4D:23; -1C4E:00; -1C4F:3E; -1C50:00; -1C51:DB; -1C52:11; -1C53:ED; -1C54:78; -1C55:F2; -1C56:53; -1C57:5C; -1C58:2B; -1C59:23; -1C5A:2B; -1C5B:23; -1C5C:2B; -1C5D:23; -1C5E:00; -1C5F:3E; -1C60:00; -1C61:DB; -1C62:11; -1C63:47; -1C64:ED; -1C65:78; -1C66:F2; -1C67:64; -1C68:5C; -1C69:78; -1C6A:FE; -1C6B:C3; -1C6C:C2; -1C6D:50; -1C6E:5B; -1C6F:00; -1C70:00; -1C71:00; -1C72:3E; -1C73:00; -1C74:3E; -1C75:00; -1C76:DB; -1C77:11; -1C78:ED; -1C79:78; -1C7A:F2; -1C7B:78; -1C7C:5C; -1C7D:2B; -1C7E:23; -1C7F:2B; -1C80:23; -1C81:2B; -1C82:23; -1C83:00; -1C84:3E; -1C85:00; -1C86:DB; -1C87:11; -1C88:ED; -1C89:78; -1C8A:F2; -1C8B:88; -1C8C:5C; -1C8D:2B; -1C8E:23; -1C8F:2B; -1C90:23; -1C91:2B; -1C92:23; -1C93:00; -1C94:3E; -1C95:00; -1C96:DB; -1C97:11; -1C98:ED; -1C99:78; -1C9A:F2; -1C9B:98; -1C9C:5C; -1C9D:2B; -1C9E:23; -1C9F:2B; -1CA0:23; -1CA1:2B; -1CA2:23; -1CA3:00; -1CA4:3E; -1CA5:00; -1CA6:DB; -1CA7:11; -1CA8:ED; -1CA9:78; -1CAA:F2; -1CAB:A8; -1CAC:5C; -1CAD:2B; -1CAE:23; -1CAF:2B; -1CB0:23; -1CB1:2B; -1CB2:23; -1CB3:00; -1CB4:3E; -1CB5:00; -1CB6:DB; -1CB7:11; -1CB8:ED; -1CB9:78; -1CBA:F2; -1CBB:B8; -1CBC:5C; -1CBD:2B; -1CBE:23; -1CBF:2B; -1CC0:23; -1CC1:2B; -1CC2:23; -1CC3:00; -1CC4:3E; -1CC5:00; -1CC6:DB; -1CC7:11; -1CC8:ED; -1CC9:78; -1CCA:F2; -1CCB:C8; -1CCC:5C; -1CCD:2B; -1CCE:23; -1CCF:2B; -1CD0:23; -1CD1:2B; -1CD2:23; -1CD3:00; -1CD4:3E; -1CD5:00; -1CD6:DB; -1CD7:11; -1CD8:ED; -1CD9:78; -1CDA:F2; -1CDB:D8; -1CDC:5C; -1CDD:2B; -1CDE:23; -1CDF:2B; -1CE0:23; -1CE1:2B; -1CE2:23; -1CE3:00; -1CE4:3E; -1CE5:00; -1CE6:DB; -1CE7:11; -1CE8:47; -1CE9:ED; -1CEA:78; -1CEB:F2; -1CEC:E9; -1CED:5C; -1CEE:78; -1CEF:FE; -1CF0:18; -1CF1:C2; -1CF2:27; -1CF3:5B; -1CF4:00; -1CF5:00; -1CF6:00; -1CF7:3E; -1CF8:00; -1CF9:3E; -1CFA:00; -1CFB:DB; -1CFC:11; -1CFD:ED; -1CFE:78; -1CFF:F2; -1D00:FD; -1D01:5C; -1D02:2B; -1D03:23; -1D04:2B; -1D05:23; -1D06:2B; -1D07:23; -1D08:00; -1D09:3E; -1D0A:00; -1D0B:DB; -1D0C:11; -1D0D:ED; -1D0E:78; -1D0F:F2; -1D10:0D; -1D11:5D; -1D12:2B; -1D13:23; -1D14:2B; -1D15:23; -1D16:2B; -1D17:23; -1D18:00; -1D19:3E; -1D1A:00; -1D1B:DB; -1D1C:11; -1D1D:ED; -1D1E:78; -1D1F:F2; -1D20:1D; -1D21:5D; -1D22:2B; -1D23:23; -1D24:2B; -1D25:23; -1D26:2B; -1D27:23; -1D28:00; -1D29:3E; -1D2A:00; -1D2B:DB; -1D2C:11; -1D2D:ED; -1D2E:78; -1D2F:F2; -1D30:2D; -1D31:5D; -1D32:2B; -1D33:23; -1D34:2B; -1D35:23; -1D36:2B; -1D37:23; -1D38:00; -1D39:3E; -1D3A:00; -1D3B:DB; -1D3C:11; -1D3D:ED; -1D3E:78; -1D3F:F2; -1D40:3D; -1D41:5D; -1D42:2B; -1D43:23; -1D44:2B; -1D45:23; -1D46:2B; -1D47:23; -1D48:00; -1D49:3E; -1D4A:00; -1D4B:DB; -1D4C:11; -1D4D:ED; -1D4E:78; -1D4F:F2; -1D50:4D; -1D51:5D; -1D52:2B; -1D53:23; -1D54:2B; -1D55:23; -1D56:2B; -1D57:23; -1D58:00; -1D59:3E; -1D5A:00; -1D5B:DB; -1D5C:11; -1D5D:ED; -1D5E:78; -1D5F:F2; -1D60:5D; -1D61:5D; -1D62:2B; -1D63:23; -1D64:2B; -1D65:23; -1D66:2B; -1D67:23; -1D68:00; -1D69:3E; -1D6A:00; -1D6B:DB; -1D6C:11; -1D6D:47; -1D6E:ED; -1D6F:78; -1D70:F2; -1D71:6E; -1D72:5D; -1D73:78; -1D74:FE; -1D75:E7; -1D76:C2; -1D77:27; -1D78:5B; -1D79:00; -1D7A:00; -1D7B:00; -1D7C:3E; -1D7D:00; -1D7E:3E; -1D7F:00; -1D80:DB; -1D81:11; -1D82:ED; -1D83:78; -1D84:F2; -1D85:82; -1D86:5D; -1D87:2B; -1D88:23; -1D89:2B; -1D8A:23; -1D8B:2B; -1D8C:23; -1D8D:00; -1D8E:3E; -1D8F:00; -1D90:DB; -1D91:11; -1D92:ED; -1D93:78; -1D94:F2; -1D95:92; -1D96:5D; -1D97:2B; -1D98:23; -1D99:2B; -1D9A:23; -1D9B:2B; -1D9C:23; -1D9D:00; -1D9E:3E; -1D9F:00; -1DA0:DB; -1DA1:11; -1DA2:ED; -1DA3:78; -1DA4:F2; -1DA5:A2; -1DA6:5D; -1DA7:2B; -1DA8:23; -1DA9:2B; -1DAA:23; -1DAB:2B; -1DAC:23; -1DAD:00; -1DAE:3E; -1DAF:00; -1DB0:DB; -1DB1:11; -1DB2:ED; -1DB3:78; -1DB4:F2; -1DB5:B2; -1DB6:5D; -1DB7:2B; -1DB8:23; -1DB9:2B; -1DBA:23; -1DBB:2B; -1DBC:23; -1DBD:00; -1DBE:3E; -1DBF:00; -1DC0:DB; -1DC1:11; -1DC2:ED; -1DC3:78; -1DC4:F2; -1DC5:C2; -1DC6:5D; -1DC7:2B; -1DC8:23; -1DC9:2B; -1DCA:23; -1DCB:2B; -1DCC:23; -1DCD:00; -1DCE:3E; -1DCF:00; -1DD0:DB; -1DD1:11; -1DD2:ED; -1DD3:78; -1DD4:F2; -1DD5:D2; -1DD6:5D; -1DD7:2B; -1DD8:23; -1DD9:2B; -1DDA:23; -1DDB:2B; -1DDC:23; -1DDD:00; -1DDE:3E; -1DDF:00; -1DE0:DB; -1DE1:11; -1DE2:ED; -1DE3:78; -1DE4:F2; -1DE5:E2; -1DE6:5D; -1DE7:2B; -1DE8:23; -1DE9:2B; -1DEA:23; -1DEB:2B; -1DEC:23; -1DED:00; -1DEE:3E; -1DEF:00; -1DF0:DB; -1DF1:11; -1DF2:47; -1DF3:ED; -1DF4:78; -1DF5:F2; -1DF6:F3; -1DF7:5D; -1DF8:78; -1DF9:FE; -1DFA:FE; -1DFB:C2; -1DFC:27; -1DFD:5B; -1DFE:00; -1DFF:00; -1E00:00; -1E01:3E; -1E02:00; -1E03:3E; -1E04:00; -1E05:DB; -1E06:11; -1E07:ED; -1E08:78; -1E09:F2; -1E0A:07; -1E0B:5E; -1E0C:2B; -1E0D:23; -1E0E:2B; -1E0F:23; -1E10:2B; -1E11:23; -1E12:00; -1E13:3E; -1E14:00; -1E15:DB; -1E16:11; -1E17:ED; -1E18:78; -1E19:F2; -1E1A:17; -1E1B:5E; -1E1C:2B; -1E1D:23; -1E1E:2B; -1E1F:23; -1E20:2B; -1E21:23; -1E22:00; -1E23:3E; -1E24:00; -1E25:DB; -1E26:11; -1E27:ED; -1E28:78; -1E29:F2; -1E2A:27; -1E2B:5E; -1E2C:2B; -1E2D:23; -1E2E:2B; -1E2F:23; -1E30:2B; -1E31:23; -1E32:00; -1E33:3E; -1E34:00; -1E35:DB; -1E36:11; -1E37:ED; -1E38:78; -1E39:F2; -1E3A:37; -1E3B:5E; -1E3C:2B; -1E3D:23; -1E3E:2B; -1E3F:23; -1E40:2B; -1E41:23; -1E42:00; -1E43:3E; -1E44:00; -1E45:DB; -1E46:11; -1E47:ED; -1E48:78; -1E49:F2; -1E4A:47; -1E4B:5E; -1E4C:2B; -1E4D:23; -1E4E:2B; -1E4F:23; -1E50:2B; -1E51:23; -1E52:00; -1E53:3E; -1E54:00; -1E55:DB; -1E56:11; -1E57:ED; -1E58:78; -1E59:F2; -1E5A:57; -1E5B:5E; -1E5C:2B; -1E5D:23; -1E5E:2B; -1E5F:23; -1E60:2B; -1E61:23; -1E62:00; -1E63:3E; -1E64:00; -1E65:DB; -1E66:11; -1E67:ED; -1E68:78; -1E69:F2; -1E6A:67; -1E6B:5E; -1E6C:2B; -1E6D:23; -1E6E:2B; -1E6F:23; -1E70:2B; -1E71:23; -1E72:00; -1E73:3E; -1E74:00; -1E75:DB; -1E76:11; -1E77:08; -1E78:ED; -1E79:78; -1E7A:F2; -1E7B:78; -1E7C:5E; -1E7D:23; -1E7E:1D; -1E7F:28; -1E80:07; -1E81:08; -1E82:77; -1E83:ED; -1E84:5F; -1E85:C3; -1E86:05; -1E87:5E; -1E88:CD; -1E89:10; -1E8A:5B; -1E8B:23; -1E8C:7E; -1E8D:BB; -1E8E:20; -1E8F:05; -1E90:23; -1E91:7E; -1E92:BA; -1E93:28; -1E94:0D; -1E95:FD; -1E96:7E; -1E97:13; -1E98:3D; -1E99:FD; -1E9A:77; -1E9B:13; -1E9C:C2; -1E9D:2B; -1E9E:5B; -1E9F:3E; -1EA0:0A; -1EA1:C9; -1EA2:AF; -1EA3:C9; -1EA4:3A; -1EA5:DF; -1EA6:68; -1EA7:E6; -1EA8:04; -1EA9:28; -1EAA:F9; -1EAB:C5; -1EAC:01; -1EAD:14; -1EAE:00; -1EAF:CD; -1EB0:BE; -1EB1:5E; -1EB2:C1; -1EB3:3A; -1EB4:DF; -1EB5:68; -1EB6:E6; -1EB7:04; -1EB8:28; -1EB9:EA; -1EBA:3E; -1EBB:11; -1EBC:B7; -1EBD:C9; -1EBE:C5; -1EBF:01; -1EC0:89; -1EC1:00; -1EC2:0B; -1EC3:78; -1EC4:B1; -1EC5:20; -1EC6:FB; -1EC7:C1; -1EC8:0B; -1EC9:78; -1ECA:B1; -1ECB:20; -1ECC:F1; -1ECD:C9; -1ECE:FD; -1ECF:7E; -1ED0:14; -1ED1:80; -1ED2:FE; -1ED3:28; -1ED4:38; -1ED5:02; -1ED6:3E; -1ED7:27; -1ED8:FD; -1ED9:77; -1EDA:14; -1EDB:CB; -1EDC:20; -1EDD:FD; -1EDE:7E; -1EDF:38; -1EE0:4F; -1EE1:07; -1EE2:F5; -1EE3:FD; -1EE4:77; -1EE5:38; -1EE6:B1; -1EE7:CD; -1EE8:32; -1EE9:5F; -1EEA:C5; -1EEB:01; -1EEC:02; -1EED:00; -1EEE:CD; -1EEF:BE; -1EF0:5E; -1EF1:C1; -1EF2:F1; -1EF3:CD; -1EF4:32; -1EF5:5F; -1EF6:C5; -1EF7:01; -1EF8:0E; -1EF9:00; -1EFA:CD; -1EFB:BE; -1EFC:5E; -1EFD:C1; -1EFE:10; -1EFF:DD; -1F00:C9; -1F01:FD; -1F02:7E; -1F03:14; -1F04:90; -1F05:F2; -1F06:09; -1F07:5F; -1F08:AF; -1F09:FD; -1F0A:77; -1F0B:14; -1F0C:CB; -1F0D:20; -1F0E:FD; -1F0F:7E; -1F10:38; -1F11:4F; -1F12:0F; -1F13:F5; -1F14:FD; -1F15:77; -1F16:38; -1F17:B1; -1F18:CD; -1F19:32; -1F1A:5F; -1F1B:C5; -1F1C:01; -1F1D:02; -1F1E:00; -1F1F:CD; -1F20:BE; -1F21:5E; -1F22:C1; -1F23:F1; -1F24:CD; -1F25:32; -1F26:5F; -1F27:C5; -1F28:01; -1F29:0E; -1F2A:00; -1F2B:CD; -1F2C:BE; -1F2D:5E; -1F2E:C1; -1F2F:10; -1F30:DD; -1F31:C9; -1F32:E6; -1F33:0F; -1F34:4F; -1F35:3E; -1F36:F0; -1F37:FD; -1F38:A6; -1F39:33; -1F3A:B1; -1F3B:FD; -1F3C:77; -1F3D:33; -1F3E:D3; -1F3F:10; -1F40:C9; -1F41:FD; -1F42:7E; -1F43:38; -1F44:E6; -1F45:0F; -1F46:FD; -1F47:B6; -1F48:33; -1F49:FD; -1F4A:B6; -1F4B:0B; -1F4C:FD; -1F4D:77; -1F4E:33; -1F4F:D3; -1F50:10; -1F51:C9; -1F52:FD; -1F53:7E; -1F54:33; -1F55:F6; -1F56:40; -1F57:E6; -1F58:60; -1F59:FD; -1F5A:77; -1F5B:33; -1F5C:D3; -1F5D:10; -1F5E:C9; -1F5F:00; -1F60:00; -1F61:00; -1F62:00; -1F63:00; -1F64:00; -1F65:00; -1F66:00; -1F67:00; -1F68:00; -1F69:00; -1F6A:00; -1F6B:00; -1F6C:00; -1F6D:00; -1F6E:00; -1F6F:00; -1F70:00; -1F71:00; -1F72:00; -1F73:00; -1F74:00; -1F75:00; -1F76:00; -1F77:00; -1F78:00; -1F79:00; -1F7A:00; -1F7B:00; -1F7C:00; -1F7D:FF; -1F7E:FF; -1F7F:FF; -1F80:FF; -1F81:FF; -1F82:FF; -1F83:FF; -1F84:FF; -1F85:FF; -1F86:FF; -1F87:FF; -1F88:FF; -1F89:FF; -1F8A:FF; -1F8B:FF; -1F8C:FF; -1F8D:FF; -1F8E:FF; -1F8F:FF; -1F90:FF; -1F91:FF; -1F92:FF; -1F93:FF; -1F94:FF; -1F95:FF; -1F96:FF; -1F97:FF; -1F98:FF; -1F99:FF; -1F9A:FF; -1F9B:FF; -1F9C:FF; -1F9D:FF; -1F9E:FF; -1F9F:FF; -1FA0:FF; -1FA1:FF; -1FA2:FF; -1FA3:FF; -1FA4:FF; -1FA5:FF; -1FA6:FF; -1FA7:FF; -1FA8:FF; -1FA9:FF; -1FAA:FF; -1FAB:FF; -1FAC:FF; -1FAD:FF; -1FAE:FF; -1FAF:FF; -1FB0:FF; -1FB1:FF; -1FB2:FF; -1FB3:FF; -1FB4:FF; -1FB5:FF; -1FB6:FF; -1FB7:FF; -1FB8:FF; -1FB9:FF; -1FBA:FF; -1FBB:FF; -1FBC:FF; -1FBD:FF; -1FBE:FF; -1FBF:FF; -1FC0:FF; -1FC1:FF; -1FC2:FF; -1FC3:FF; -1FC4:FF; -1FC5:FF; -1FC6:FF; -1FC7:FF; -1FC8:FF; -1FC9:FF; -1FCA:FF; -1FCB:FF; -1FCC:FF; -1FCD:FF; -1FCE:FF; -1FCF:FF; -1FD0:FF; -1FD1:FF; -1FD2:FF; -1FD3:FF; -1FD4:FF; -1FD5:FF; -1FD6:FF; -1FD7:FF; -1FD8:FF; -1FD9:FF; -1FDA:FF; -1FDB:FF; -1FDC:FF; -1FDD:FF; -1FDE:FF; -1FDF:FF; -1FE0:FF; -1FE1:FF; -1FE2:FF; -1FE3:FF; -1FE4:FF; -1FE5:FF; -1FE6:FF; -1FE7:FF; -1FE8:FF; -1FE9:FF; -1FEA:FF; -1FEB:FF; -1FEC:FF; -1FED:FF; -1FEE:FF; -1FEF:FF; -1FF0:FF; -1FF1:FF; -1FF2:FF; -1FF3:FF; -1FF4:FF; -1FF5:FF; -1FF6:FF; -1FF7:FF; -1FF8:FF; -1FF9:FF; -1FFA:FF; -1FFB:FF; -1FFC:FF; -1FFD:FF; -1FFE:FF; -1FFF:FF; -END; diff --git a/Computer_MiST/Laser310_MiST/rtl/roms/sysrom.mif b/Computer_MiST/Laser310_MiST/rtl/roms/sysrom.mif deleted file mode 100644 index e125b8a7..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/roms/sysrom.mif +++ /dev/null @@ -1,16391 +0,0 @@ -DEPTH = 16384; -WIDTH = 8; -ADDRESS_RADIX = HEX; -DATA_RADIX = HEX; -CONTENT -BEGIN -0000:F3; -0001:AF; -0002:32; -0003:00; -0004:68; -0005:C3; -0006:74; -0007:06; -0008:C3; -0009:00; -000A:78; -000B:E1; -000C:E9; -000D:00; -000E:00; -000F:00; -0010:C3; -0011:03; -0012:78; -0013:C5; -0014:06; -0015:01; -0016:18; -0017:2E; -0018:C3; -0019:06; -001A:78; -001B:C5; -001C:06; -001D:02; -001E:18; -001F:26; -0020:C3; -0021:09; -0022:78; -0023:C5; -0024:06; -0025:04; -0026:18; -0027:1E; -0028:C3; -0029:0C; -002A:78; -002B:11; -002C:15; -002D:78; -002E:18; -002F:E3; -0030:C3; -0031:0F; -0032:78; -0033:11; -0034:1D; -0035:78; -0036:18; -0037:E3; -0038:C3; -0039:B8; -003A:2E; -003B:11; -003C:25; -003D:78; -003E:18; -003F:DB; -0040:C3; -0041:FD; -0042:2E; -0043:C9; -0044:00; -0045:00; -0046:C3; -0047:C2; -0048:03; -0049:CD; -004A:2B; -004B:00; -004C:B7; -004D:C0; -004E:18; -004F:F9; -0050:2A; -0051:20; -0052:78; -0053:7E; -0054:32; -0055:3C; -0056:78; -0057:C9; -0058:4C; -0059:FE; -005A:54; -005B:20; -005C:D6; -005D:FD; -005E:21; -005F:F1; -0060:0B; -0061:78; -0062:B1; -0063:20; -0064:FB; -0065:C9; -0066:31; -0067:00; -0068:06; -0069:3A; -006A:EC; -006B:68; -006C:3C; -006D:FE; -006E:02; -006F:D2; -0070:00; -0071:00; -0072:C3; -0073:CC; -0074:06; -0075:11; -0076:80; -0077:78; -0078:21; -0079:F7; -007A:18; -007B:01; -007C:27; -007D:00; -007E:ED; -007F:B0; -0080:21; -0081:E5; -0082:79; -0083:36; -0084:3A; -0085:23; -0086:70; -0087:23; -0088:36; -0089:2C; -008A:23; -008B:22; -008C:A7; -008D:78; -008E:11; -008F:2D; -0090:01; -0091:06; -0092:1C; -0093:21; -0094:52; -0095:79; -0096:36; -0097:C3; -0098:23; -0099:73; -009A:23; -009B:72; -009C:23; -009D:10; -009E:F7; -009F:06; -00A0:15; -00A1:36; -00A2:C9; -00A3:23; -00A4:23; -00A5:23; -00A6:10; -00A7:F9; -00A8:21; -00A9:E8; -00AA:7A; -00AB:70; -00AC:31; -00AD:F8; -00AE:79; -00AF:CD; -00B0:8F; -00B1:1B; -00B2:CD; -00B3:C9; -00B4:01; -00B5:00; -00B6:00; -00B7:00; -00B8:00; -00B9:00; -00BA:00; -00BB:00; -00BC:00; -00BD:00; -00BE:18; -00BF:04; -00C0:D7; -00C1:B7; -00C2:20; -00C3:12; -00C4:21; -00C5:4C; -00C6:7B; -00C7:23; -00C8:7C; -00C9:B5; -00CA:28; -00CB:1B; -00CC:7E; -00CD:47; -00CE:2F; -00CF:77; -00D0:BE; -00D1:70; -00D2:28; -00D3:F3; -00D4:18; -00D5:11; -00D6:CD; -00D7:5A; -00D8:1E; -00D9:B7; -00DA:C2; -00DB:97; -00DC:19; -00DD:EB; -00DE:2B; -00DF:3E; -00E0:8F; -00E1:46; -00E2:77; -00E3:BE; -00E4:70; -00E5:20; -00E6:CE; -00E7:2B; -00E8:11; -00E9:14; -00EA:7C; -00EB:DF; -00EC:DA; -00ED:7A; -00EE:19; -00EF:11; -00F0:CE; -00F1:FF; -00F2:22; -00F3:B1; -00F4:78; -00F5:19; -00F6:22; -00F7:A0; -00F8:78; -00F9:CD; -00FA:4D; -00FB:1B; -00FC:CD; -00FD:84; -00FE:34; -00FF:21; -0100:0F; -0101:01; -0102:CD; -0103:A7; -0104:28; -0105:ED; -0106:56; -0107:C3; -0108:8E; -0109:06; -010A:00; -010B:7E; -010C:23; -010D:FE; -010E:0D; -010F:56; -0110:49; -0111:44; -0112:45; -0113:4F; -0114:20; -0115:54; -0116:45; -0117:43; -0118:48; -0119:4E; -011A:4F; -011B:4C; -011C:4F; -011D:47; -011E:59; -011F:0D; -0120:42; -0121:41; -0122:53; -0123:49; -0124:43; -0125:20; -0126:56; -0127:32; -0128:2E; -0129:30; -012A:0D; -012B:0D; -012C:00; -012D:1E; -012E:2C; -012F:C3; -0130:A2; -0131:19; -0132:D7; -0133:AF; -0134:01; -0135:3E; -0136:80; -0137:01; -0138:3E; -0139:01; -013A:F5; -013B:CF; -013C:28; -013D:CD; -013E:1C; -013F:2B; -0140:FE; -0141:80; -0142:D2; -0143:4A; -0144:1E; -0145:F5; -0146:CF; -0147:2C; -0148:CD; -0149:1C; -014A:2B; -014B:FE; -014C:40; -014D:D2; -014E:4A; -014F:1E; -0150:5F; -0151:AF; -0152:57; -0153:EB; -0154:29; -0155:29; -0156:29; -0157:29; -0158:29; -0159:EB; -015A:F1; -015B:F5; -015C:CB; -015D:3F; -015E:CB; -015F:3F; -0160:83; -0161:5F; -0162:7A; -0163:F6; -0164:70; -0165:57; -0166:F1; -0167:E6; -0168:03; -0169:87; -016A:47; -016B:F1; -016C:B7; -016D:CA; -016E:E7; -016F:38; -0170:F5; -0171:0E; -0172:3F; -0173:3A; -0174:46; -0175:78; -0176:CB; -0177:27; -0178:CB; -0179:27; -017A:CB; -017B:0F; -017C:CB; -017D:09; -017E:10; -017F:FA; -0180:C3; -0181:03; -0182:39; -0183:21; -0184:39; -0185:78; -0186:CB; -0187:9E; -0188:21; -0189:84; -018A:03; -018B:CD; -018C:A7; -018D:28; -018E:C3; -018F:CF; -0190:36; -0191:F1; -0192:FE; -0193:20; -0194:20; -0195:14; -0196:1A; -0197:13; -0198:FE; -0199:20; -019A:28; -019B:FA; -019C:FE; -019D:D7; -019E:E5; -019F:3A; -01A0:99; -01A1:78; -01A2:B7; -01A3:20; -01A4:06; -01A5:CD; -01A6:58; -01A7:03; -01A8:B7; -01A9:28; -01AA:11; -01AB:F5; -01AC:AF; -01AD:32; -01AE:99; -01AF:78; -01B0:3C; -01B1:CD; -01B2:57; -01B3:28; -01B4:F1; -01B5:2A; -01B6:D4; -01B7:78; -01B8:77; -01B9:C3; -01BA:84; -01BB:28; -01BC:21; -01BD:28; -01BE:19; -01BF:22; -01C0:21; -01C1:79; -01C2:3E; -01C3:03; -01C4:32; -01C5:AF; -01C6:78; -01C7:E1; -01C8:C9; -01C9:3E; -01CA:1C; -01CB:CD; -01CC:3A; -01CD:03; -01CE:3E; -01CF:1F; -01D0:C3; -01D1:3A; -01D2:03; -01D3:ED; -01D4:5F; -01D5:32; -01D6:AB; -01D7:78; -01D8:C9; -01D9:54; -01DA:47; -01DB:42; -01DC:35; -01DD:4E; -01DE:36; -01DF:59; -01E0:48; -01E1:57; -01E2:53; -01E3:58; -01E4:32; -01E5:2E; -01E6:39; -01E7:4F; -01E8:4C; -01E9:00; -01EA:00; -01EB:00; -01EC:00; -01ED:00; -01EE:2D; -01EF:0D; -01F0:3A; -01F1:45; -01F2:44; -01F3:43; -01F4:33; -01F5:2C; -01F6:38; -01F7:49; -01F8:4B; -01F9:51; -01FA:41; -01FB:5A; -01FC:31; -01FD:20; -01FE:30; -01FF:50; -0200:3B; -0201:52; -0202:46; -0203:56; -0204:34; -0205:4D; -0206:37; -0207:55; -0208:4A; -0209:8C; -020A:89; -020B:00; -020C:25; -020D:5E; -020E:26; -020F:83; -0210:86; -0211:8D; -0212:82; -0213:00; -0214:22; -0215:3E; -0216:29; -0217:5B; -0218:3F; -0219:00; -021A:00; -021B:00; -021C:00; -021D:00; -021E:3D; -021F:0D; -0220:2A; -0221:8B; -0222:84; -0223:00; -0224:23; -0225:3C; -0226:28; -0227:85; -0228:2F; -0229:8E; -022A:81; -022B:80; -022C:21; -022D:20; -022E:40; -022F:5D; -0230:2B; -0231:87; -0232:88; -0233:00; -0234:24; -0235:5C; -0236:27; -0237:8A; -0238:8F; -0239:CA; -023A:8D; -023B:B5; -023C:B4; -023D:97; -023E:8E; -023F:95; -0240:84; -0241:BD; -0242:CC; -0243:B1; -0244:B9; -0245:1B; -0246:8B; -0247:8C; -0248:15; -0249:00; -024A:00; -024B:00; -024C:00; -024D:00; -024E:01; -024F:00; -0250:00; -0251:87; -0252:8A; -0253:B3; -0254:9C; -0255:09; -0256:BB; -0257:89; -0258:BC; -0259:81; -025A:9D; -025B:E5; -025C:BA; -025D:0A; -025E:88; -025F:B2; -0260:7F; -0261:92; -0262:91; -0263:AF; -0264:98; -0265:08; -0266:80; -0267:8F; -0268:93; -0269:FA; -026A:94; -026B:9E; -026C:DF; -026D:BF; -026E:E0; -026F:F9; -0270:83; -0271:F5; -0272:F4; -0273:A0; -0274:E1; -0275:00; -0276:D9; -0277:D3; -0278:00; -0279:00; -027A:00; -027B:00; -027C:00; -027D:00; -027E:01; -027F:00; -0280:00; -0281:F3; -0282:90; -0283:96; -0284:E3; -0285:00; -0286:DD; -0287:D2; -0288:C6; -0289:F7; -028A:F6; -028B:DB; -028C:E2; -028D:00; -028E:D8; -028F:CB; -0290:00; -0291:F8; -0292:DE; -0293:C1; -0294:E4; -0295:00; -0296:D7; -0297:C9; -0298:82; -0299:E2; -029A:E1; -029B:E3; -029C:E4; -029D:DF; -029E:E0; -029F:D7; -02A0:DD; -02A1:D9; -02A2:D8; -02A3:F7; -02A4:F5; -02A5:F3; -02A6:F8; -02A7:F7; -02A8:F9; -02A9:9D; -02AA:F6; -02AB:F4; -02AC:DE; -02AD:E5; -02AE:FA; -02AF:80; -02B0:80; -02B1:80; -02B2:B8; -02B3:B8; -02B4:80; -02B5:B8; -02B6:B8; -02B7:80; -02B8:87; -02B9:80; -02BA:BF; -02BB:B8; -02BC:87; -02BD:B8; -02BE:BF; -02BF:87; -02C0:80; -02C1:87; -02C2:B8; -02C3:BF; -02C4:80; -02C5:BF; -02C6:B8; -02C7:87; -02C8:87; -02C9:87; -02CA:BF; -02CB:BF; -02CC:87; -02CD:BF; -02CE:BF; -02CF:72; -02D0:02; -02D1:4F; -02D2:02; -02D3:2E; -02D4:02; -02D5:0E; -02D6:02; -02D7:F1; -02D8:01; -02D9:D5; -02DA:01; -02DB:B7; -02DC:01; -02DD:9E; -02DE:01; -02DF:86; -02E0:01; -02E1:70; -02E2:01; -02E3:5B; -02E4:01; -02E5:48; -02E6:01; -02E7:35; -02E8:01; -02E9:23; -02EA:01; -02EB:13; -02EC:01; -02ED:03; -02EE:01; -02EF:F4; -02F0:00; -02F1:E6; -02F2:00; -02F3:D9; -02F4:00; -02F5:CD; -02F6:00; -02F7:C1; -02F8:00; -02F9:B6; -02FA:00; -02FB:AB; -02FC:00; -02FD:A1; -02FE:00; -02FF:98; -0300:00; -0301:8F; -0302:00; -0303:87; -0304:00; -0305:7F; -0306:00; -0307:78; -0308:00; -0309:70; -030A:00; -030B:6A; -030C:00; -030D:47; -030E:3A; -030F:3C; -0310:78; -0311:2A; -0312:20; -0313:78; -0314:77; -0315:78; -0316:C9; -0317:01; -0318:20; -0319:00; -031A:B7; -031B:ED; -031C:42; -031D:22; -031E:20; -031F:78; -0320:C9; -0321:01; -0322:02; -0323:03; -0324:04; -0325:06; -0326:08; -0327:0C; -0328:10; -0329:18; -032A:C5; -032B:4F; -032C:CD; -032D:C1; -032E:79; -032F:3A; -0330:9C; -0331:78; -0332:B7; -0333:79; -0334:C1; -0335:FA; -0336:54; -0337:3B; -0338:20; -0339:62; -033A:D5; -033B:F5; -033C:C5; -033D:E5; -033E:CD; -033F:8B; -0340:30; -0341:E1; -0342:C1; -0343:00; -0344:00; -0345:F1; -0346:D1; -0347:C9; -0348:3A; -0349:3D; -034A:78; -034B:E6; -034C:08; -034D:3A; -034E:20; -034F:78; -0350:28; -0351:03; -0352:0F; -0353:E6; -0354:1F; -0355:E6; -0356:1F; -0357:C9; -0358:CD; -0359:C4; -035A:79; -035B:D5; -035C:CD; -035D:2B; -035E:00; -035F:D1; -0360:C9; -0361:0A; -0362:0B; -0363:0C; -0364:0C; -0365:0D; -0366:0E; -0367:0F; -0368:0F; -0369:10; -036A:11; -036B:12; -036C:13; -036D:15; -036E:16; -036F:17; -0370:19; -0371:1A; -0372:1C; -0373:1D; -0374:1F; -0375:21; -0376:23; -0377:25; -0378:27; -0379:29; -037A:2C; -037B:2E; -037C:31; -037D:34; -037E:35; -037F:3A; -0380:4F; -0381:4B; -0382:0D; -0383:00; -0384:45; -0385:52; -0386:52; -0387:4F; -0388:52; -0389:0D; -038A:00; -038B:AF; -038C:32; -038D:9C; -038E:78; -038F:3A; -0390:9B; -0391:78; -0392:B7; -0393:C8; -0394:3E; -0395:0D; -0396:D5; -0397:CD; -0398:9C; -0399:03; -039A:D1; -039B:C9; -039C:F5; -039D:D5; -039E:C5; -039F:4F; -03A0:1E; -03A1:00; -03A2:FE; -03A3:0C; -03A4:28; -03A5:10; -03A6:FE; -03A7:0A; -03A8:20; -03A9:03; -03AA:3E; -03AB:0D; -03AC:4F; -03AD:FE; -03AE:0D; -03AF:28; -03B0:05; -03B1:3A; -03B2:9B; -03B3:78; -03B4:3C; -03B5:5F; -03B6:7B; -03B7:32; -03B8:9B; -03B9:78; -03BA:79; -03BB:CD; -03BC:3B; -03BD:00; -03BE:C1; -03BF:D1; -03C0:F1; -03C1:C9; -03C2:E5; -03C3:DD; -03C4:E5; -03C5:D5; -03C6:DD; -03C7:E1; -03C8:D5; -03C9:21; -03CA:DD; -03CB:03; -03CC:E5; -03CD:4F; -03CE:1A; -03CF:A0; -03D0:B8; -03D1:C2; -03D2:33; -03D3:78; -03D4:FE; -03D5:02; -03D6:DD; -03D7:6E; -03D8:01; -03D9:DD; -03DA:66; -03DB:02; -03DC:E9; -03DD:D1; -03DE:DD; -03DF:E1; -03E0:E1; -03E1:C1; -03E2:C9; -03E3:21; -03E4:39; -03E5:78; -03E6:CB; -03E7:EE; -03E8:2A; -03E9:20; -03EA:78; -03EB:CD; -03EC:53; -03ED:00; -03EE:7C; -03EF:FE; -03F0:71; -03F1:20; -03F2:10; -03F3:7D; -03F4:FE; -03F5:E0; -03F6:20; -03F7:0B; -03F8:3A; -03F9:D7; -03FA:7A; -03FB:B7; -03FC:20; -03FD:05; -03FE:3E; -03FF:0D; -0400:CD; -0401:8B; -0402:30; -0403:41; -0404:C5; -0405:21; -0406:39; -0407:78; -0408:CB; -0409:86; -040A:CB; -040B:96; -040C:CB; -040D:46; -040E:28; -040F:FC; -0410:3A; -0411:A6; -0412:78; -0413:4F; -0414:AF; -0415:32; -0416:A6; -0417:78; -0418:47; -0419:2A; -041A:20; -041B:78; -041C:ED; -041D:42; -041E:22; -041F:20; -0420:78; -0421:11; -0422:E8; -0423:79; -0424:C1; -0425:21; -0426:39; -0427:78; -0428:CB; -0429:66; -042A:2A; -042B:20; -042C:78; -042D:28; -042E:42; -042F:C5; -0430:E5; -0431:CD; -0432:A8; -0433:33; -0434:E1; -0435:C1; -0436:B7; -0437:20; -0438:08; -0439:7D; -043A:D6; -043B:20; -043C:6F; -043D:7C; -043E:DE; -043F:00; -0440:67; -0441:48; -0442:1A; -0443:BE; -0444:20; -0445:07; -0446:23; -0447:13; -0448:10; -0449:F8; -044A:C5; -044B:18; -044C:04; -044D:01; -044E:00; -044F:00; -0450:C5; -0451:E5; -0452:CD; -0453:A8; -0454:33; -0455:E1; -0456:C1; -0457:C5; -0458:FE; -0459:80; -045A:28; -045B:0A; -045C:3E; -045D:40; -045E:91; -045F:47; -0460:D1; -0461:1E; -0462:00; -0463:D5; -0464:18; -0465:05; -0466:06; -0467:20; -0468:2A; -0469:20; -046A:78; -046B:11; -046C:E8; -046D:79; -046E:C3; -046F:A8; -0470:3E; -0471:01; -0472:00; -0473:00; -0474:C5; -0475:E5; -0476:CD; -0477:A8; -0478:33; -0479:E1; -047A:FE; -047B:80; -047C:28; -047D:0E; -047E:FE; -047F:81; -0480:28; -0481:06; -0482:01; -0483:20; -0484:00; -0485:B7; -0486:ED; -0487:42; -0488:06; -0489:40; -048A:18; -048B:02; -048C:06; -048D:20; -048E:3A; -048F:18; -0490:78; -0491:B7; -0492:CA; -0493:40; -0494:3E; -0495:7E; -0496:FE; -0497:40; -0498:DA; -0499:AE; -049A:04; -049B:C1; -049C:11; -049D:A4; -049E:04; -049F:D5; -04A0:C5; -04A1:C3; -04A2:02; -04A3:05; -04A4:D8; -04A5:21; -04A6:1A; -04A7:3E; -04A8:CD; -04A9:A7; -04AA:28; -04AB:C3; -04AC:E3; -04AD:03; -04AE:FE; -04AF:22; -04B0:20; -04B1:31; -04B2:12; -04B3:23; -04B4:13; -04B5:05; -04B6:28; -04B7:36; -04B8:7E; -04B9:FE; -04BA:40; -04BB:DA; -04BC:C9; -04BD:04; -04BE:FE; -04BF:80; -04C0:DA; -04C1:C5; -04C2:04; -04C3:E6; -04C4:8F; -04C5:F6; -04C6:80; -04C7:18; -04C8:13; -04C9:FE; -04CA:22; -04CB:20; -04CC:09; -04CD:E5; -04CE:21; -04CF:39; -04D0:78; -04D1:CB; -04D2:66; -04D3:E1; -04D4:28; -04D5:0D; -04D6:CB; -04D7:6F; -04D8:20; -04D9:02; -04DA:F6; -04DB:40; -04DC:12; -04DD:23; -04DE:13; -04DF:10; -04E0:D7; -04E1:18; -04E2:0B; -04E3:CB; -04E4:6F; -04E5:20; -04E6:02; -04E7:F6; -04E8:40; -04E9:12; -04EA:23; -04EB:13; -04EC:10; -04ED:A7; -04EE:1B; -04EF:7A; -04F0:FE; -04F1:79; -04F2:20; -04F3:06; -04F4:7B; -04F5:FE; -04F6:E8; -04F7:DA; -04F8:FF; -04F9:04; -04FA:1A; -04FB:FE; -04FC:20; -04FD:28; -04FE:EF; -04FF:13; -0500:AF; -0501:12; -0502:CD; -0503:A8; -0504:33; -0505:2A; -0506:20; -0507:78; -0508:FE; -0509:81; -050A:CD; -050B:53; -050C:00; -050D:20; -050E:04; -050F:AF; -0510:CD; -0511:8B; -0512:30; -0513:AF; -0514:CD; -0515:8B; -0516:30; -0517:3A; -0518:38; -0519:78; -051A:E6; -051B:FD; -051C:32; -051D:38; -051E:78; -051F:21; -0520:39; -0521:78; -0522:CB; -0523:56; -0524:28; -0525:05; -0526:3E; -0527:01; -0528:37; -0529:18; -052A:01; -052B:AF; -052C:21; -052D:39; -052E:78; -052F:CB; -0530:A6; -0531:21; -0532:E8; -0533:79; -0534:C1; -0535:F5; -0536:09; -0537:C3; -0538:29; -0539:3E; -053A:3A; -053B:AF; -053C:7A; -053D:B7; -053E:20; -053F:FA; -0540:06; -0541:40; -0542:21; -0543:E8; -0544:79; -0545:3E; -0546:20; -0547:77; -0548:23; -0549:10; -054A:FC; -054B:AF; -054C:77; -054D:CD; -054E:A8; -054F:33; -0550:B7; -0551:3A; -0552:A6; -0553:78; -0554:20; -0555:02; -0556:C6; -0557:20; -0558:4F; -0559:AF; -055A:47; -055B:2A; -055C:20; -055D:78; -055E:ED; -055F:42; -0560:11; -0561:E8; -0562:79; -0563:C5; -0564:ED; -0565:B0; -0566:C1; -0567:21; -0568:39; -0569:78; -056A:CB; -056B:E6; -056C:CD; -056D:E3; -056E:03; -056F:C9; -0570:52; -0571:55; -0572:4E; -0573:00; -0574:C4; -0575:33; -0576:32; -0577:CD; -0578:A3; -0579:1A; -057A:CD; -057B:D8; -057C:17; -057D:CD; -057E:0D; -057F:19; -0580:CA; -0581:5A; -0582:12; -0583:CD; -0584:49; -0585:1F; -0586:38; -0587:18; -0588:EF; -0589:3A; -058A:38; -058B:04; -058C:DD; -058D:79; -058E:B7; -058F:28; -0590:33; -0591:FE; -0592:0B; -0593:28; -0594:0A; -0595:FE; -0596:0C; -0597:20; -0598:14; -0599:AF; -059A:DD; -059B:B6; -059C:03; -059D:28; -059E:0E; -059F:DD; -05A0:7E; -05A1:03; -05A2:DD; -05A3:96; -05A4:04; -05A5:47; -05A6:CD; -05A7:E2; -05A8:3A; -05A9:10; -05AA:FB; -05AB:18; -05AC:12; -05AD:CD; -05AE:B6; -05AF:3A; -05B0:79; -05B1:FE; -05B2:0D; -05B3:C0; -05B4:DD; -05B5:34; -05B6:04; -05B7:DD; -05B8:7E; -05B9:04; -05BA:DD; -05BB:BE; -05BC:03; -05BD:79; -05BE:C0; -05BF:DD; -05C0:36; -05C1:04; -05C2:00; -05C3:C9; -05C4:DB; -05C5:00; -05C6:E6; -05C7:01; -05C8:C9; -05C9:C5; -05CA:E5; -05CB:06; -05CC:04; -05CD:21; -05CE:D2; -05CF:7A; -05D0:77; -05D1:23; -05D2:10; -05D3:FC; -05D4:E1; -05D5:C1; -05D6:C9; -05D7:21; -05D8:38; -05D9:78; -05DA:CB; -05DB:56; -05DC:28; -05DD:15; -05DE:57; -05DF:3A; -05E0:3A; -05E1:78; -05E2:B7; -05E3:28; -05E4:0F; -05E5:3C; -05E6:32; -05E7:3A; -05E8:78; -05E9:FE; -05EA:2A; -05EB:28; -05EC:02; -05ED:AF; -05EE:C9; -05EF:CB; -05F0:96; -05F1:AF; -05F2:C9; -05F3:57; -05F4:21; -05F5:38; -05F6:78; -05F7:7E; -05F8:E6; -05F9:18; -05FA:20; -05FB:0B; -05FC:CB; -05FD:DE; -05FE:AF; -05FF:32; -0600:37; -0601:78; -0602:7A; -0603:32; -0604:36; -0605:78; -0606:C9; -0607:CB; -0608:66; -0609:20; -060A:2A; -060B:3A; -060C:36; -060D:78; -060E:BA; -060F:20; -0610:21; -0611:ED; -0612:4B; -0613:42; -0614:78; -0615:2A; -0616:44; -0617:78; -0618:7B; -0619:CD; -061A:35; -061B:2F; -061C:BA; -061D:CA; -061E:D7; -061F:2F; -0620:FE; -0621:00; -0622:CA; -0623:D7; -0624:2F; -0625:21; -0626:38; -0627:78; -0628:CB; -0629:DE; -062A:CB; -062B:E6; -062C:CB; -062D:96; -062E:32; -062F:37; -0630:78; -0631:C9; -0632:7A; -0633:18; -0634:F0; -0635:3A; -0636:36; -0637:78; -0638:BA; -0639:28; -063A:08; -063B:3A; -063C:37; -063D:78; -063E:BA; -063F:28; -0640:02; -0641:AF; -0642:C9; -0643:ED; -0644:4B; -0645:42; -0646:78; -0647:2A; -0648:44; -0649:78; -064A:7B; -064B:CD; -064C:35; -064D:2F; -064E:BA; -064F:28; -0650:05; -0651:FE; -0652:00; -0653:C2; -0654:D7; -0655:2F; -0656:21; -0657:38; -0658:78; -0659:CB; -065A:DE; -065B:CB; -065C:A6; -065D:3A; -065E:36; -065F:78; -0660:BA; -0661:20; -0662:05; -0663:AF; -0664:32; -0665:37; -0666:78; -0667:C9; -0668:3A; -0669:37; -066A:78; -066B:32; -066C:36; -066D:78; -066E:18; -066F:F3; -0670:DD; -0671:CB; -0672:09; -0673:D6; -0674:00; -0675:00; -0676:21; -0677:D2; -0678:06; -0679:11; -067A:00; -067B:78; -067C:01; -067D:36; -067E:00; -067F:ED; -0680:B0; -0681:3D; -0682:3D; -0683:20; -0684:F1; -0685:06; -0686:27; -0687:12; -0688:13; -0689:10; -068A:FC; -068B:C3; -068C:75; -068D:00; -068E:21; -068F:00; -0690:40; -0691:CD; -0692:A4; -0693:06; -0694:21; -0695:00; -0696:60; -0697:CD; -0698:A4; -0699:06; -069A:21; -069B:00; -069C:80; -069D:CD; -069E:A4; -069F:06; -06A0:FB; -06A1:C3; -06A2:19; -06A3:1A; -06A4:3E; -06A5:AA; -06A6:BE; -06A7:23; -06A8:C0; -06A9:2F; -06AA:BE; -06AB:23; -06AC:C0; -06AD:3E; -06AE:E7; -06AF:BE; -06B0:23; -06B1:C0; -06B2:2F; -06B3:BE; -06B4:23; -06B5:C0; -06B6:FB; -06B7:E9; -06B8:0E; -06B9:02; -06BA:CD; -06BB:59; -06BC:1A; -06BD:CD; -06BE:B8; -06BF:34; -06C0:CD; -06C1:E3; -06C2:18; -06C3:28; -06C4:C0; -06C5:EF; -06C6:2C; -06C7:28; -06C8:14; -06C9:CD; -06CA:F1; -06CB:34; -06CC:01; -06CD:18; -06CE:1A; -06CF:C3; -06D0:AE; -06D1:19; -06D2:C3; -06D3:96; -06D4:1C; -06D5:C3; -06D6:78; -06D7:1D; -06D8:C3; -06D9:90; -06DA:1C; -06DB:C3; -06DC:D9; -06DD:25; -06DE:C9; -06DF:00; -06E0:00; -06E1:C9; -06E2:00; -06E3:00; -06E4:FB; -06E5:C9; -06E6:00; -06E7:01; -06E8:F4; -06E9:2E; -06EA:00; -06EB:00; -06EC:00; -06ED:4B; -06EE:49; -06EF:00; -06F0:00; -06F1:00; -06F2:00; -06F3:70; -06F4:00; -06F5:00; -06F6:00; -06F7:06; -06F8:8D; -06F9:05; -06FA:43; -06FB:00; -06FC:00; -06FD:50; -06FE:52; -06FF:C3; -0700:00; -0701:50; -0702:C7; -0703:00; -0704:00; -0705:3E; -0706:00; -0707:C9; -0708:21; -0709:80; -070A:13; -070B:CD; -070C:C2; -070D:09; -070E:18; -070F:06; -0710:CD; -0711:C2; -0712:09; -0713:CD; -0714:82; -0715:09; -0716:78; -0717:B7; -0718:C8; -0719:3A; -071A:24; -071B:79; -071C:B7; -071D:CA; -071E:B4; -071F:09; -0720:90; -0721:30; -0722:0C; -0723:2F; -0724:3C; -0725:EB; -0726:CD; -0727:A4; -0728:09; -0729:EB; -072A:CD; -072B:B4; -072C:09; -072D:C1; -072E:D1; -072F:FE; -0730:19; -0731:D0; -0732:F5; -0733:CD; -0734:DF; -0735:09; -0736:67; -0737:F1; -0738:CD; -0739:D7; -073A:07; -073B:B4; -073C:21; -073D:21; -073E:79; -073F:F2; -0740:54; -0741:07; -0742:CD; -0743:B7; -0744:07; -0745:D2; -0746:96; -0747:07; -0748:23; -0749:34; -074A:CA; -074B:B2; -074C:07; -074D:2E; -074E:01; -074F:CD; -0750:EB; -0751:07; -0752:18; -0753:42; -0754:AF; -0755:90; -0756:47; -0757:7E; -0758:9B; -0759:5F; -075A:23; -075B:7E; -075C:9A; -075D:57; -075E:23; -075F:7E; -0760:99; -0761:4F; -0762:DC; -0763:C3; -0764:07; -0765:68; -0766:63; -0767:AF; -0768:47; -0769:79; -076A:B7; -076B:20; -076C:18; -076D:4A; -076E:54; -076F:65; -0770:6F; -0771:78; -0772:D6; -0773:08; -0774:FE; -0775:E0; -0776:20; -0777:F0; -0778:AF; -0779:32; -077A:24; -077B:79; -077C:C9; -077D:05; -077E:29; -077F:7A; -0780:17; -0781:57; -0782:79; -0783:8F; -0784:4F; -0785:F2; -0786:7D; -0787:07; -0788:78; -0789:5C; -078A:45; -078B:B7; -078C:28; -078D:08; -078E:21; -078F:24; -0790:79; -0791:86; -0792:77; -0793:30; -0794:E3; -0795:C8; -0796:78; -0797:21; -0798:24; -0799:79; -079A:B7; -079B:FC; -079C:A8; -079D:07; -079E:46; -079F:23; -07A0:7E; -07A1:E6; -07A2:80; -07A3:A9; -07A4:4F; -07A5:C3; -07A6:B4; -07A7:09; -07A8:1C; -07A9:C0; -07AA:14; -07AB:C0; -07AC:0C; -07AD:C0; -07AE:0E; -07AF:80; -07B0:34; -07B1:C0; -07B2:1E; -07B3:0A; -07B4:C3; -07B5:A2; -07B6:19; -07B7:7E; -07B8:83; -07B9:5F; -07BA:23; -07BB:7E; -07BC:8A; -07BD:57; -07BE:23; -07BF:7E; -07C0:89; -07C1:4F; -07C2:C9; -07C3:21; -07C4:25; -07C5:79; -07C6:7E; -07C7:2F; -07C8:77; -07C9:AF; -07CA:6F; -07CB:90; -07CC:47; -07CD:7D; -07CE:9B; -07CF:5F; -07D0:7D; -07D1:9A; -07D2:57; -07D3:7D; -07D4:99; -07D5:4F; -07D6:C9; -07D7:06; -07D8:00; -07D9:D6; -07DA:08; -07DB:38; -07DC:07; -07DD:43; -07DE:5A; -07DF:51; -07E0:0E; -07E1:00; -07E2:18; -07E3:F5; -07E4:C6; -07E5:09; -07E6:6F; -07E7:AF; -07E8:2D; -07E9:C8; -07EA:79; -07EB:1F; -07EC:4F; -07ED:7A; -07EE:1F; -07EF:57; -07F0:7B; -07F1:1F; -07F2:5F; -07F3:78; -07F4:1F; -07F5:47; -07F6:18; -07F7:EF; -07F8:00; -07F9:00; -07FA:00; -07FB:81; -07FC:03; -07FD:AA; -07FE:56; -07FF:19; -0800:80; -0801:F1; -0802:22; -0803:76; -0804:80; -0805:45; -0806:AA; -0807:38; -0808:82; -0809:CD; -080A:55; -080B:09; -080C:B7; -080D:EA; -080E:4A; -080F:1E; -0810:21; -0811:24; -0812:79; -0813:7E; -0814:01; -0815:35; -0816:80; -0817:11; -0818:F3; -0819:04; -081A:90; -081B:F5; -081C:70; -081D:D5; -081E:C5; -081F:CD; -0820:16; -0821:07; -0822:C1; -0823:D1; -0824:04; -0825:CD; -0826:A2; -0827:08; -0828:21; -0829:F8; -082A:07; -082B:CD; -082C:10; -082D:07; -082E:21; -082F:FC; -0830:07; -0831:CD; -0832:9A; -0833:14; -0834:01; -0835:80; -0836:80; -0837:11; -0838:00; -0839:00; -083A:CD; -083B:16; -083C:07; -083D:F1; -083E:CD; -083F:89; -0840:0F; -0841:01; -0842:31; -0843:80; -0844:11; -0845:18; -0846:72; -0847:CD; -0848:55; -0849:09; -084A:C8; -084B:2E; -084C:00; -084D:CD; -084E:14; -084F:09; -0850:79; -0851:32; -0852:4F; -0853:79; -0854:EB; -0855:22; -0856:50; -0857:79; -0858:01; -0859:00; -085A:00; -085B:50; -085C:58; -085D:21; -085E:65; -085F:07; -0860:E5; -0861:21; -0862:69; -0863:08; -0864:E5; -0865:E5; -0866:21; -0867:21; -0868:79; -0869:7E; -086A:23; -086B:B7; -086C:28; -086D:24; -086E:E5; -086F:2E; -0870:08; -0871:1F; -0872:67; -0873:79; -0874:30; -0875:0B; -0876:E5; -0877:2A; -0878:50; -0879:79; -087A:19; -087B:EB; -087C:E1; -087D:3A; -087E:4F; -087F:79; -0880:89; -0881:1F; -0882:4F; -0883:7A; -0884:1F; -0885:57; -0886:7B; -0887:1F; -0888:5F; -0889:78; -088A:1F; -088B:47; -088C:2D; -088D:7C; -088E:20; -088F:E1; -0890:E1; -0891:C9; -0892:43; -0893:5A; -0894:51; -0895:4F; -0896:C9; -0897:CD; -0898:A4; -0899:09; -089A:21; -089B:D8; -089C:0D; -089D:CD; -089E:B1; -089F:09; -08A0:C1; -08A1:D1; -08A2:CD; -08A3:55; -08A4:09; -08A5:CA; -08A6:9A; -08A7:19; -08A8:2E; -08A9:FF; -08AA:CD; -08AB:14; -08AC:09; -08AD:34; -08AE:34; -08AF:2B; -08B0:7E; -08B1:32; -08B2:89; -08B3:78; -08B4:2B; -08B5:7E; -08B6:32; -08B7:85; -08B8:78; -08B9:2B; -08BA:7E; -08BB:32; -08BC:81; -08BD:78; -08BE:41; -08BF:EB; -08C0:AF; -08C1:4F; -08C2:57; -08C3:5F; -08C4:32; -08C5:8C; -08C6:78; -08C7:E5; -08C8:C5; -08C9:7D; -08CA:CD; -08CB:80; -08CC:78; -08CD:DE; -08CE:00; -08CF:3F; -08D0:30; -08D1:07; -08D2:32; -08D3:8C; -08D4:78; -08D5:F1; -08D6:F1; -08D7:37; -08D8:D2; -08D9:C1; -08DA:E1; -08DB:79; -08DC:3C; -08DD:3D; -08DE:1F; -08DF:FA; -08E0:97; -08E1:07; -08E2:17; -08E3:7B; -08E4:17; -08E5:5F; -08E6:7A; -08E7:17; -08E8:57; -08E9:79; -08EA:17; -08EB:4F; -08EC:29; -08ED:78; -08EE:17; -08EF:47; -08F0:3A; -08F1:8C; -08F2:78; -08F3:17; -08F4:32; -08F5:8C; -08F6:78; -08F7:79; -08F8:B2; -08F9:B3; -08FA:20; -08FB:CB; -08FC:E5; -08FD:21; -08FE:24; -08FF:79; -0900:35; -0901:E1; -0902:20; -0903:C3; -0904:C3; -0905:B2; -0906:07; -0907:3E; -0908:FF; -0909:2E; -090A:AF; -090B:21; -090C:2D; -090D:79; -090E:4E; -090F:23; -0910:AE; -0911:47; -0912:2E; -0913:00; -0914:78; -0915:B7; -0916:28; -0917:1F; -0918:7D; -0919:21; -091A:24; -091B:79; -091C:AE; -091D:80; -091E:47; -091F:1F; -0920:A8; -0921:78; -0922:F2; -0923:36; -0924:09; -0925:C6; -0926:80; -0927:77; -0928:CA; -0929:90; -092A:08; -092B:CD; -092C:DF; -092D:09; -092E:77; -092F:2B; -0930:C9; -0931:CD; -0932:55; -0933:09; -0934:2F; -0935:E1; -0936:B7; -0937:E1; -0938:F2; -0939:78; -093A:07; -093B:C3; -093C:B2; -093D:07; -093E:CD; -093F:BF; -0940:09; -0941:78; -0942:B7; -0943:C8; -0944:C6; -0945:02; -0946:DA; -0947:B2; -0948:07; -0949:47; -094A:CD; -094B:16; -094C:07; -094D:21; -094E:24; -094F:79; -0950:34; -0951:C0; -0952:C3; -0953:B2; -0954:07; -0955:3A; -0956:24; -0957:79; -0958:B7; -0959:C8; -095A:3A; -095B:23; -095C:79; -095D:FE; -095E:2F; -095F:17; -0960:9F; -0961:C0; -0962:3C; -0963:C9; -0964:06; -0965:88; -0966:11; -0967:00; -0968:00; -0969:21; -096A:24; -096B:79; -096C:4F; -096D:70; -096E:06; -096F:00; -0970:23; -0971:36; -0972:80; -0973:17; -0974:C3; -0975:62; -0976:07; -0977:CD; -0978:94; -0979:09; -097A:F0; -097B:E7; -097C:FA; -097D:5B; -097E:0C; -097F:CA; -0980:F6; -0981:0A; -0982:21; -0983:23; -0984:79; -0985:7E; -0986:EE; -0987:80; -0988:77; -0989:C9; -098A:CD; -098B:94; -098C:09; -098D:6F; -098E:17; -098F:9F; -0990:67; -0991:C3; -0992:9A; -0993:0A; -0994:E7; -0995:CA; -0996:F6; -0997:0A; -0998:F2; -0999:55; -099A:09; -099B:2A; -099C:21; -099D:79; -099E:7C; -099F:B5; -09A0:C8; -09A1:7C; -09A2:18; -09A3:BB; -09A4:EB; -09A5:2A; -09A6:21; -09A7:79; -09A8:E3; -09A9:E5; -09AA:2A; -09AB:23; -09AC:79; -09AD:E3; -09AE:E5; -09AF:EB; -09B0:C9; -09B1:CD; -09B2:C2; -09B3:09; -09B4:EB; -09B5:22; -09B6:21; -09B7:79; -09B8:60; -09B9:69; -09BA:22; -09BB:23; -09BC:79; -09BD:EB; -09BE:C9; -09BF:21; -09C0:21; -09C1:79; -09C2:5E; -09C3:23; -09C4:56; -09C5:23; -09C6:4E; -09C7:23; -09C8:46; -09C9:23; -09CA:C9; -09CB:11; -09CC:21; -09CD:79; -09CE:06; -09CF:04; -09D0:18; -09D1:05; -09D2:EB; -09D3:3A; -09D4:AF; -09D5:78; -09D6:47; -09D7:1A; -09D8:77; -09D9:13; -09DA:23; -09DB:05; -09DC:20; -09DD:F9; -09DE:C9; -09DF:21; -09E0:23; -09E1:79; -09E2:7E; -09E3:07; -09E4:37; -09E5:1F; -09E6:77; -09E7:3F; -09E8:1F; -09E9:23; -09EA:23; -09EB:77; -09EC:79; -09ED:07; -09EE:37; -09EF:1F; -09F0:4F; -09F1:1F; -09F2:AE; -09F3:C9; -09F4:21; -09F5:27; -09F6:79; -09F7:11; -09F8:D2; -09F9:09; -09FA:18; -09FB:06; -09FC:21; -09FD:27; -09FE:79; -09FF:11; -0A00:D3; -0A01:09; -0A02:D5; -0A03:11; -0A04:21; -0A05:79; -0A06:E7; -0A07:D8; -0A08:11; -0A09:1D; -0A0A:79; -0A0B:C9; -0A0C:78; -0A0D:B7; -0A0E:CA; -0A0F:55; -0A10:09; -0A11:21; -0A12:5E; -0A13:09; -0A14:E5; -0A15:CD; -0A16:55; -0A17:09; -0A18:79; -0A19:C8; -0A1A:21; -0A1B:23; -0A1C:79; -0A1D:AE; -0A1E:79; -0A1F:F8; -0A20:CD; -0A21:26; -0A22:0A; -0A23:1F; -0A24:A9; -0A25:C9; -0A26:23; -0A27:78; -0A28:BE; -0A29:C0; -0A2A:2B; -0A2B:79; -0A2C:BE; -0A2D:C0; -0A2E:2B; -0A2F:7A; -0A30:BE; -0A31:C0; -0A32:2B; -0A33:7B; -0A34:96; -0A35:C0; -0A36:E1; -0A37:E1; -0A38:C9; -0A39:7A; -0A3A:AC; -0A3B:7C; -0A3C:FA; -0A3D:5F; -0A3E:09; -0A3F:BA; -0A40:C2; -0A41:60; -0A42:09; -0A43:7D; -0A44:93; -0A45:C2; -0A46:60; -0A47:09; -0A48:C9; -0A49:21; -0A4A:27; -0A4B:79; -0A4C:CD; -0A4D:D3; -0A4E:09; -0A4F:11; -0A50:2E; -0A51:79; -0A52:1A; -0A53:B7; -0A54:CA; -0A55:55; -0A56:09; -0A57:21; -0A58:5E; -0A59:09; -0A5A:E5; -0A5B:CD; -0A5C:55; -0A5D:09; -0A5E:1B; -0A5F:1A; -0A60:4F; -0A61:C8; -0A62:21; -0A63:23; -0A64:79; -0A65:AE; -0A66:79; -0A67:F8; -0A68:13; -0A69:23; -0A6A:06; -0A6B:08; -0A6C:1A; -0A6D:96; -0A6E:C2; -0A6F:23; -0A70:0A; -0A71:1B; -0A72:2B; -0A73:05; -0A74:20; -0A75:F6; -0A76:C1; -0A77:C9; -0A78:CD; -0A79:4F; -0A7A:0A; -0A7B:C2; -0A7C:5E; -0A7D:09; -0A7E:C9; -0A7F:E7; -0A80:2A; -0A81:21; -0A82:79; -0A83:F8; -0A84:CA; -0A85:F6; -0A86:0A; -0A87:D4; -0A88:B9; -0A89:0A; -0A8A:21; -0A8B:B2; -0A8C:07; -0A8D:E5; -0A8E:3A; -0A8F:24; -0A90:79; -0A91:FE; -0A92:90; -0A93:30; -0A94:0E; -0A95:CD; -0A96:FB; -0A97:0A; -0A98:EB; -0A99:D1; -0A9A:22; -0A9B:21; -0A9C:79; -0A9D:3E; -0A9E:02; -0A9F:32; -0AA0:AF; -0AA1:78; -0AA2:C9; -0AA3:01; -0AA4:80; -0AA5:90; -0AA6:11; -0AA7:00; -0AA8:00; -0AA9:CD; -0AAA:0C; -0AAB:0A; -0AAC:C0; -0AAD:61; -0AAE:6A; -0AAF:18; -0AB0:E8; -0AB1:E7; -0AB2:E0; -0AB3:FA; -0AB4:CC; -0AB5:0A; -0AB6:CA; -0AB7:F6; -0AB8:0A; -0AB9:CD; -0ABA:BF; -0ABB:09; -0ABC:CD; -0ABD:EF; -0ABE:0A; -0ABF:78; -0AC0:B7; -0AC1:C8; -0AC2:CD; -0AC3:DF; -0AC4:09; -0AC5:21; -0AC6:20; -0AC7:79; -0AC8:46; -0AC9:C3; -0ACA:96; -0ACB:07; -0ACC:2A; -0ACD:21; -0ACE:79; -0ACF:CD; -0AD0:EF; -0AD1:0A; -0AD2:7C; -0AD3:55; -0AD4:1E; -0AD5:00; -0AD6:06; -0AD7:90; -0AD8:C3; -0AD9:69; -0ADA:09; -0ADB:E7; -0ADC:D0; -0ADD:CA; -0ADE:F6; -0ADF:0A; -0AE0:FC; -0AE1:CC; -0AE2:0A; -0AE3:21; -0AE4:00; -0AE5:00; -0AE6:22; -0AE7:1D; -0AE8:79; -0AE9:22; -0AEA:1F; -0AEB:79; -0AEC:3E; -0AED:08; -0AEE:01; -0AEF:3E; -0AF0:04; -0AF1:C3; -0AF2:9F; -0AF3:0A; -0AF4:E7; -0AF5:C8; -0AF6:1E; -0AF7:18; -0AF8:C3; -0AF9:A2; -0AFA:19; -0AFB:47; -0AFC:4F; -0AFD:57; -0AFE:5F; -0AFF:B7; -0B00:C8; -0B01:E5; -0B02:CD; -0B03:BF; -0B04:09; -0B05:CD; -0B06:DF; -0B07:09; -0B08:AE; -0B09:67; -0B0A:FC; -0B0B:1F; -0B0C:0B; -0B0D:3E; -0B0E:98; -0B0F:90; -0B10:CD; -0B11:D7; -0B12:07; -0B13:7C; -0B14:17; -0B15:DC; -0B16:A8; -0B17:07; -0B18:06; -0B19:00; -0B1A:DC; -0B1B:C3; -0B1C:07; -0B1D:E1; -0B1E:C9; -0B1F:1B; -0B20:7A; -0B21:A3; -0B22:3C; -0B23:C0; -0B24:0B; -0B25:C9; -0B26:E7; -0B27:F8; -0B28:CD; -0B29:55; -0B2A:09; -0B2B:F2; -0B2C:37; -0B2D:0B; -0B2E:CD; -0B2F:82; -0B30:09; -0B31:CD; -0B32:37; -0B33:0B; -0B34:C3; -0B35:7B; -0B36:09; -0B37:E7; -0B38:F8; -0B39:30; -0B3A:1E; -0B3B:28; -0B3C:B9; -0B3D:CD; -0B3E:8E; -0B3F:0A; -0B40:21; -0B41:24; -0B42:79; -0B43:7E; -0B44:FE; -0B45:98; -0B46:3A; -0B47:21; -0B48:79; -0B49:D0; -0B4A:7E; -0B4B:CD; -0B4C:FB; -0B4D:0A; -0B4E:36; -0B4F:98; -0B50:7B; -0B51:F5; -0B52:79; -0B53:17; -0B54:CD; -0B55:62; -0B56:07; -0B57:F1; -0B58:C9; -0B59:21; -0B5A:24; -0B5B:79; -0B5C:7E; -0B5D:FE; -0B5E:90; -0B5F:DA; -0B60:7F; -0B61:0A; -0B62:20; -0B63:14; -0B64:4F; -0B65:2B; -0B66:7E; -0B67:EE; -0B68:80; -0B69:06; -0B6A:06; -0B6B:2B; -0B6C:B6; -0B6D:05; -0B6E:20; -0B6F:FB; -0B70:B7; -0B71:21; -0B72:00; -0B73:80; -0B74:CA; -0B75:9A; -0B76:0A; -0B77:79; -0B78:FE; -0B79:B8; -0B7A:D0; -0B7B:F5; -0B7C:CD; -0B7D:BF; -0B7E:09; -0B7F:CD; -0B80:DF; -0B81:09; -0B82:AE; -0B83:2B; -0B84:36; -0B85:B8; -0B86:F5; -0B87:FC; -0B88:A0; -0B89:0B; -0B8A:21; -0B8B:23; -0B8C:79; -0B8D:3E; -0B8E:B8; -0B8F:90; -0B90:CD; -0B91:69; -0B92:0D; -0B93:F1; -0B94:FC; -0B95:20; -0B96:0D; -0B97:AF; -0B98:32; -0B99:1C; -0B9A:79; -0B9B:F1; -0B9C:D0; -0B9D:C3; -0B9E:D8; -0B9F:0C; -0BA0:21; -0BA1:1D; -0BA2:79; -0BA3:7E; -0BA4:35; -0BA5:B7; -0BA6:23; -0BA7:28; -0BA8:FA; -0BA9:C9; -0BAA:E5; -0BAB:21; -0BAC:00; -0BAD:00; -0BAE:78; -0BAF:B1; -0BB0:28; -0BB1:12; -0BB2:3E; -0BB3:10; -0BB4:29; -0BB5:DA; -0BB6:3D; -0BB7:27; -0BB8:EB; -0BB9:29; -0BBA:EB; -0BBB:30; -0BBC:04; -0BBD:09; -0BBE:DA; -0BBF:3D; -0BC0:27; -0BC1:3D; -0BC2:20; -0BC3:F0; -0BC4:EB; -0BC5:E1; -0BC6:C9; -0BC7:7C; -0BC8:17; -0BC9:9F; -0BCA:47; -0BCB:CD; -0BCC:51; -0BCD:0C; -0BCE:79; -0BCF:98; -0BD0:18; -0BD1:03; -0BD2:7C; -0BD3:17; -0BD4:9F; -0BD5:47; -0BD6:E5; -0BD7:7A; -0BD8:17; -0BD9:9F; -0BDA:19; -0BDB:88; -0BDC:0F; -0BDD:AC; -0BDE:F2; -0BDF:99; -0BE0:0A; -0BE1:C5; -0BE2:EB; -0BE3:CD; -0BE4:CF; -0BE5:0A; -0BE6:F1; -0BE7:E1; -0BE8:CD; -0BE9:A4; -0BEA:09; -0BEB:EB; -0BEC:CD; -0BED:6B; -0BEE:0C; -0BEF:C3; -0BF0:8F; -0BF1:0F; -0BF2:7C; -0BF3:B5; -0BF4:CA; -0BF5:9A; -0BF6:0A; -0BF7:E5; -0BF8:D5; -0BF9:CD; -0BFA:45; -0BFB:0C; -0BFC:C5; -0BFD:44; -0BFE:4D; -0BFF:21; -0C00:00; -0C01:00; -0C02:3E; -0C03:10; -0C04:29; -0C05:38; -0C06:1F; -0C07:EB; -0C08:29; -0C09:EB; -0C0A:30; -0C0B:04; -0C0C:09; -0C0D:DA; -0C0E:26; -0C0F:0C; -0C10:3D; -0C11:20; -0C12:F1; -0C13:C1; -0C14:D1; -0C15:7C; -0C16:B7; -0C17:FA; -0C18:1F; -0C19:0C; -0C1A:D1; -0C1B:78; -0C1C:C3; -0C1D:4D; -0C1E:0C; -0C1F:EE; -0C20:80; -0C21:B5; -0C22:28; -0C23:13; -0C24:EB; -0C25:01; -0C26:C1; -0C27:E1; -0C28:CD; -0C29:CF; -0C2A:0A; -0C2B:E1; -0C2C:CD; -0C2D:A4; -0C2E:09; -0C2F:CD; -0C30:CF; -0C31:0A; -0C32:C1; -0C33:D1; -0C34:C3; -0C35:47; -0C36:08; -0C37:78; -0C38:B7; -0C39:C1; -0C3A:FA; -0C3B:9A; -0C3C:0A; -0C3D:D5; -0C3E:CD; -0C3F:CF; -0C40:0A; -0C41:D1; -0C42:C3; -0C43:82; -0C44:09; -0C45:7C; -0C46:AA; -0C47:47; -0C48:CD; -0C49:4C; -0C4A:0C; -0C4B:EB; -0C4C:7C; -0C4D:B7; -0C4E:F2; -0C4F:9A; -0C50:0A; -0C51:AF; -0C52:4F; -0C53:95; -0C54:6F; -0C55:79; -0C56:9C; -0C57:67; -0C58:C3; -0C59:9A; -0C5A:0A; -0C5B:2A; -0C5C:21; -0C5D:79; -0C5E:CD; -0C5F:51; -0C60:0C; -0C61:7C; -0C62:EE; -0C63:80; -0C64:B5; -0C65:C0; -0C66:EB; -0C67:CD; -0C68:EF; -0C69:0A; -0C6A:AF; -0C6B:06; -0C6C:98; -0C6D:C3; -0C6E:69; -0C6F:09; -0C70:21; -0C71:2D; -0C72:79; -0C73:7E; -0C74:EE; -0C75:80; -0C76:77; -0C77:21; -0C78:2E; -0C79:79; -0C7A:7E; -0C7B:B7; -0C7C:C8; -0C7D:47; -0C7E:2B; -0C7F:4E; -0C80:11; -0C81:24; -0C82:79; -0C83:1A; -0C84:B7; -0C85:CA; -0C86:F4; -0C87:09; -0C88:90; -0C89:30; -0C8A:16; -0C8B:2F; -0C8C:3C; -0C8D:F5; -0C8E:0E; -0C8F:08; -0C90:23; -0C91:E5; -0C92:1A; -0C93:46; -0C94:77; -0C95:78; -0C96:12; -0C97:1B; -0C98:2B; -0C99:0D; -0C9A:20; -0C9B:F6; -0C9C:E1; -0C9D:46; -0C9E:2B; -0C9F:4E; -0CA0:F1; -0CA1:FE; -0CA2:39; -0CA3:D0; -0CA4:F5; -0CA5:CD; -0CA6:DF; -0CA7:09; -0CA8:23; -0CA9:36; -0CAA:00; -0CAB:47; -0CAC:F1; -0CAD:21; -0CAE:2D; -0CAF:79; -0CB0:CD; -0CB1:69; -0CB2:0D; -0CB3:3A; -0CB4:26; -0CB5:79; -0CB6:32; -0CB7:1C; -0CB8:79; -0CB9:78; -0CBA:B7; -0CBB:F2; -0CBC:CF; -0CBD:0C; -0CBE:CD; -0CBF:33; -0CC0:0D; -0CC1:D2; -0CC2:0E; -0CC3:0D; -0CC4:EB; -0CC5:34; -0CC6:CA; -0CC7:B2; -0CC8:07; -0CC9:CD; -0CCA:90; -0CCB:0D; -0CCC:C3; -0CCD:0E; -0CCE:0D; -0CCF:CD; -0CD0:45; -0CD1:0D; -0CD2:21; -0CD3:25; -0CD4:79; -0CD5:DC; -0CD6:57; -0CD7:0D; -0CD8:AF; -0CD9:47; -0CDA:3A; -0CDB:23; -0CDC:79; -0CDD:B7; -0CDE:20; -0CDF:1E; -0CE0:21; -0CE1:1C; -0CE2:79; -0CE3:0E; -0CE4:08; -0CE5:56; -0CE6:77; -0CE7:7A; -0CE8:23; -0CE9:0D; -0CEA:20; -0CEB:F9; -0CEC:78; -0CED:D6; -0CEE:08; -0CEF:FE; -0CF0:C0; -0CF1:20; -0CF2:E6; -0CF3:C3; -0CF4:78; -0CF5:07; -0CF6:05; -0CF7:21; -0CF8:1C; -0CF9:79; -0CFA:CD; -0CFB:97; -0CFC:0D; -0CFD:B7; -0CFE:F2; -0CFF:F6; -0D00:0C; -0D01:78; -0D02:B7; -0D03:28; -0D04:09; -0D05:21; -0D06:24; -0D07:79; -0D08:86; -0D09:77; -0D0A:D2; -0D0B:78; -0D0C:07; -0D0D:C8; -0D0E:3A; -0D0F:1C; -0D10:79; -0D11:B7; -0D12:FC; -0D13:20; -0D14:0D; -0D15:21; -0D16:25; -0D17:79; -0D18:7E; -0D19:E6; -0D1A:80; -0D1B:2B; -0D1C:2B; -0D1D:AE; -0D1E:77; -0D1F:C9; -0D20:21; -0D21:1D; -0D22:79; -0D23:06; -0D24:07; -0D25:34; -0D26:C0; -0D27:23; -0D28:05; -0D29:20; -0D2A:FA; -0D2B:34; -0D2C:CA; -0D2D:B2; -0D2E:07; -0D2F:2B; -0D30:36; -0D31:80; -0D32:C9; -0D33:21; -0D34:27; -0D35:79; -0D36:11; -0D37:1D; -0D38:79; -0D39:0E; -0D3A:07; -0D3B:AF; -0D3C:1A; -0D3D:8E; -0D3E:12; -0D3F:13; -0D40:23; -0D41:0D; -0D42:20; -0D43:F8; -0D44:C9; -0D45:21; -0D46:27; -0D47:79; -0D48:11; -0D49:1D; -0D4A:79; -0D4B:0E; -0D4C:07; -0D4D:AF; -0D4E:1A; -0D4F:9E; -0D50:12; -0D51:13; -0D52:23; -0D53:0D; -0D54:20; -0D55:F8; -0D56:C9; -0D57:7E; -0D58:2F; -0D59:77; -0D5A:21; -0D5B:1C; -0D5C:79; -0D5D:06; -0D5E:08; -0D5F:AF; -0D60:4F; -0D61:79; -0D62:9E; -0D63:77; -0D64:23; -0D65:05; -0D66:20; -0D67:F9; -0D68:C9; -0D69:71; -0D6A:E5; -0D6B:D6; -0D6C:08; -0D6D:38; -0D6E:0E; -0D6F:E1; -0D70:E5; -0D71:11; -0D72:00; -0D73:08; -0D74:4E; -0D75:73; -0D76:59; -0D77:2B; -0D78:15; -0D79:20; -0D7A:F9; -0D7B:18; -0D7C:EE; -0D7D:C6; -0D7E:09; -0D7F:57; -0D80:AF; -0D81:E1; -0D82:15; -0D83:C8; -0D84:E5; -0D85:1E; -0D86:08; -0D87:7E; -0D88:1F; -0D89:77; -0D8A:2B; -0D8B:1D; -0D8C:20; -0D8D:F9; -0D8E:18; -0D8F:F0; -0D90:21; -0D91:23; -0D92:79; -0D93:16; -0D94:01; -0D95:18; -0D96:ED; -0D97:0E; -0D98:08; -0D99:7E; -0D9A:17; -0D9B:77; -0D9C:23; -0D9D:0D; -0D9E:20; -0D9F:F9; -0DA0:C9; -0DA1:CD; -0DA2:55; -0DA3:09; -0DA4:C8; -0DA5:CD; -0DA6:0A; -0DA7:09; -0DA8:CD; -0DA9:39; -0DAA:0E; -0DAB:71; -0DAC:13; -0DAD:06; -0DAE:07; -0DAF:1A; -0DB0:13; -0DB1:B7; -0DB2:D5; -0DB3:28; -0DB4:17; -0DB5:0E; -0DB6:08; -0DB7:C5; -0DB8:1F; -0DB9:47; -0DBA:DC; -0DBB:33; -0DBC:0D; -0DBD:CD; -0DBE:90; -0DBF:0D; -0DC0:78; -0DC1:C1; -0DC2:0D; -0DC3:20; -0DC4:F2; -0DC5:D1; -0DC6:05; -0DC7:20; -0DC8:E6; -0DC9:C3; -0DCA:D8; -0DCB:0C; -0DCC:21; -0DCD:23; -0DCE:79; -0DCF:CD; -0DD0:70; -0DD1:0D; -0DD2:18; -0DD3:F1; -0DD4:00; -0DD5:00; -0DD6:00; -0DD7:00; -0DD8:00; -0DD9:00; -0DDA:20; -0DDB:84; -0DDC:11; -0DDD:D4; -0DDE:0D; -0DDF:21; -0DE0:27; -0DE1:79; -0DE2:CD; -0DE3:D3; -0DE4:09; -0DE5:3A; -0DE6:2E; -0DE7:79; -0DE8:B7; -0DE9:CA; -0DEA:9A; -0DEB:19; -0DEC:CD; -0DED:07; -0DEE:09; -0DEF:34; -0DF0:34; -0DF1:CD; -0DF2:39; -0DF3:0E; -0DF4:21; -0DF5:51; -0DF6:79; -0DF7:71; -0DF8:41; -0DF9:11; -0DFA:4A; -0DFB:79; -0DFC:21; -0DFD:27; -0DFE:79; -0DFF:CD; -0E00:4B; -0E01:0D; -0E02:1A; -0E03:99; -0E04:3F; -0E05:38; -0E06:0B; -0E07:11; -0E08:4A; -0E09:79; -0E0A:21; -0E0B:27; -0E0C:79; -0E0D:CD; -0E0E:39; -0E0F:0D; -0E10:AF; -0E11:DA; -0E12:12; -0E13:04; -0E14:3A; -0E15:23; -0E16:79; -0E17:3C; -0E18:3D; -0E19:1F; -0E1A:FA; -0E1B:11; -0E1C:0D; -0E1D:17; -0E1E:21; -0E1F:1D; -0E20:79; -0E21:0E; -0E22:07; -0E23:CD; -0E24:99; -0E25:0D; -0E26:21; -0E27:4A; -0E28:79; -0E29:CD; -0E2A:97; -0E2B:0D; -0E2C:78; -0E2D:B7; -0E2E:20; -0E2F:C9; -0E30:21; -0E31:24; -0E32:79; -0E33:35; -0E34:20; -0E35:C3; -0E36:C3; -0E37:B2; -0E38:07; -0E39:79; -0E3A:32; -0E3B:2D; -0E3C:79; -0E3D:2B; -0E3E:11; -0E3F:50; -0E40:79; -0E41:01; -0E42:00; -0E43:07; -0E44:7E; -0E45:12; -0E46:71; -0E47:1B; -0E48:2B; -0E49:05; -0E4A:20; -0E4B:F8; -0E4C:C9; -0E4D:CD; -0E4E:FC; -0E4F:09; -0E50:EB; -0E51:2B; -0E52:7E; -0E53:B7; -0E54:C8; -0E55:C6; -0E56:02; -0E57:DA; -0E58:B2; -0E59:07; -0E5A:77; -0E5B:E5; -0E5C:CD; -0E5D:77; -0E5E:0C; -0E5F:E1; -0E60:34; -0E61:C0; -0E62:C3; -0E63:B2; -0E64:07; -0E65:CD; -0E66:78; -0E67:07; -0E68:CD; -0E69:EC; -0E6A:0A; -0E6B:F6; -0E6C:AF; -0E6D:EB; -0E6E:01; -0E6F:FF; -0E70:00; -0E71:60; -0E72:68; -0E73:CC; -0E74:9A; -0E75:0A; -0E76:EB; -0E77:7E; -0E78:FE; -0E79:2D; -0E7A:F5; -0E7B:CA; -0E7C:83; -0E7D:0E; -0E7E:FE; -0E7F:2B; -0E80:28; -0E81:01; -0E82:2B; -0E83:D7; -0E84:DA; -0E85:29; -0E86:0F; -0E87:FE; -0E88:2E; -0E89:CA; -0E8A:E4; -0E8B:0E; -0E8C:FE; -0E8D:45; -0E8E:28; -0E8F:14; -0E90:FE; -0E91:25; -0E92:CA; -0E93:EE; -0E94:0E; -0E95:FE; -0E96:23; -0E97:CA; -0E98:F5; -0E99:0E; -0E9A:FE; -0E9B:21; -0E9C:CA; -0E9D:F6; -0E9E:0E; -0E9F:FE; -0EA0:44; -0EA1:20; -0EA2:24; -0EA3:B7; -0EA4:CD; -0EA5:FB; -0EA6:0E; -0EA7:E5; -0EA8:21; -0EA9:BD; -0EAA:0E; -0EAB:E3; -0EAC:D7; -0EAD:15; -0EAE:FE; -0EAF:CE; -0EB0:C8; -0EB1:FE; -0EB2:2D; -0EB3:C8; -0EB4:14; -0EB5:FE; -0EB6:CD; -0EB7:C8; -0EB8:FE; -0EB9:2B; -0EBA:C8; -0EBB:2B; -0EBC:F1; -0EBD:D7; -0EBE:DA; -0EBF:94; -0EC0:0F; -0EC1:14; -0EC2:20; -0EC3:03; -0EC4:AF; -0EC5:93; -0EC6:5F; -0EC7:E5; -0EC8:7B; -0EC9:90; -0ECA:F4; -0ECB:0A; -0ECC:0F; -0ECD:FC; -0ECE:18; -0ECF:0F; -0ED0:20; -0ED1:F8; -0ED2:E1; -0ED3:F1; -0ED4:E5; -0ED5:CC; -0ED6:7B; -0ED7:09; -0ED8:E1; -0ED9:E7; -0EDA:E8; -0EDB:E5; -0EDC:21; -0EDD:90; -0EDE:08; -0EDF:E5; -0EE0:CD; -0EE1:A3; -0EE2:0A; -0EE3:C9; -0EE4:E7; -0EE5:0C; -0EE6:20; -0EE7:DF; -0EE8:DC; -0EE9:FB; -0EEA:0E; -0EEB:C3; -0EEC:83; -0EED:0E; -0EEE:E7; -0EEF:F2; -0EF0:97; -0EF1:19; -0EF2:23; -0EF3:18; -0EF4:D2; -0EF5:B7; -0EF6:CD; -0EF7:FB; -0EF8:0E; -0EF9:18; -0EFA:F7; -0EFB:E5; -0EFC:D5; -0EFD:C5; -0EFE:F5; -0EFF:CC; -0F00:B1; -0F01:0A; -0F02:F1; -0F03:C4; -0F04:DB; -0F05:0A; -0F06:C1; -0F07:D1; -0F08:E1; -0F09:C9; -0F0A:C8; -0F0B:F5; -0F0C:E7; -0F0D:F5; -0F0E:E4; -0F0F:3E; -0F10:09; -0F11:F1; -0F12:EC; -0F13:4D; -0F14:0E; -0F15:F1; -0F16:3D; -0F17:C9; -0F18:D5; -0F19:E5; -0F1A:F5; -0F1B:E7; -0F1C:F5; -0F1D:E4; -0F1E:97; -0F1F:08; -0F20:F1; -0F21:EC; -0F22:DC; -0F23:0D; -0F24:F1; -0F25:E1; -0F26:D1; -0F27:3C; -0F28:C9; -0F29:D5; -0F2A:78; -0F2B:89; -0F2C:47; -0F2D:C5; -0F2E:E5; -0F2F:7E; -0F30:D6; -0F31:30; -0F32:F5; -0F33:E7; -0F34:F2; -0F35:5D; -0F36:0F; -0F37:2A; -0F38:21; -0F39:79; -0F3A:11; -0F3B:CD; -0F3C:0C; -0F3D:DF; -0F3E:30; -0F3F:19; -0F40:54; -0F41:5D; -0F42:29; -0F43:29; -0F44:19; -0F45:29; -0F46:F1; -0F47:4F; -0F48:09; -0F49:7C; -0F4A:B7; -0F4B:FA; -0F4C:57; -0F4D:0F; -0F4E:22; -0F4F:21; -0F50:79; -0F51:E1; -0F52:C1; -0F53:D1; -0F54:C3; -0F55:83; -0F56:0E; -0F57:79; -0F58:F5; -0F59:CD; -0F5A:CC; -0F5B:0A; -0F5C:37; -0F5D:30; -0F5E:18; -0F5F:01; -0F60:74; -0F61:94; -0F62:11; -0F63:00; -0F64:24; -0F65:CD; -0F66:0C; -0F67:0A; -0F68:F2; -0F69:74; -0F6A:0F; -0F6B:CD; -0F6C:3E; -0F6D:09; -0F6E:F1; -0F6F:CD; -0F70:89; -0F71:0F; -0F72:18; -0F73:DD; -0F74:CD; -0F75:E3; -0F76:0A; -0F77:CD; -0F78:4D; -0F79:0E; -0F7A:CD; -0F7B:FC; -0F7C:09; -0F7D:F1; -0F7E:CD; -0F7F:64; -0F80:09; -0F81:CD; -0F82:E3; -0F83:0A; -0F84:CD; -0F85:77; -0F86:0C; -0F87:18; -0F88:C8; -0F89:CD; -0F8A:A4; -0F8B:09; -0F8C:CD; -0F8D:64; -0F8E:09; -0F8F:C1; -0F90:D1; -0F91:C3; -0F92:16; -0F93:07; -0F94:7B; -0F95:FE; -0F96:0A; -0F97:30; -0F98:09; -0F99:07; -0F9A:07; -0F9B:83; -0F9C:07; -0F9D:86; -0F9E:D6; -0F9F:30; -0FA0:5F; -0FA1:FA; -0FA2:1E; -0FA3:32; -0FA4:C3; -0FA5:BD; -0FA6:0E; -0FA7:E5; -0FA8:21; -0FA9:24; -0FAA:19; -0FAB:CD; -0FAC:A7; -0FAD:28; -0FAE:E1; -0FAF:CD; -0FB0:9A; -0FB1:0A; -0FB2:AF; -0FB3:CD; -0FB4:34; -0FB5:10; -0FB6:B6; -0FB7:CD; -0FB8:D9; -0FB9:0F; -0FBA:C3; -0FBB:A6; -0FBC:28; -0FBD:AF; -0FBE:CD; -0FBF:34; -0FC0:10; -0FC1:E6; -0FC2:08; -0FC3:28; -0FC4:02; -0FC5:36; -0FC6:2B; -0FC7:EB; -0FC8:CD; -0FC9:94; -0FCA:09; -0FCB:EB; -0FCC:F2; -0FCD:D9; -0FCE:0F; -0FCF:36; -0FD0:2D; -0FD1:C5; -0FD2:E5; -0FD3:CD; -0FD4:7B; -0FD5:09; -0FD6:E1; -0FD7:C1; -0FD8:B4; -0FD9:23; -0FDA:36; -0FDB:30; -0FDC:3A; -0FDD:D8; -0FDE:78; -0FDF:57; -0FE0:17; -0FE1:3A; -0FE2:AF; -0FE3:78; -0FE4:DA; -0FE5:9A; -0FE6:10; -0FE7:CA; -0FE8:92; -0FE9:10; -0FEA:FE; -0FEB:04; -0FEC:D2; -0FED:3D; -0FEE:10; -0FEF:01; -0FF0:00; -0FF1:00; -0FF2:CD; -0FF3:2F; -0FF4:13; -0FF5:21; -0FF6:30; -0FF7:79; -0FF8:46; -0FF9:0E; -0FFA:20; -0FFB:3A; -0FFC:D8; -0FFD:78; -0FFE:5F; -0FFF:E6; -1000:20; -1001:28; -1002:07; -1003:78; -1004:B9; -1005:0E; -1006:2A; -1007:20; -1008:01; -1009:41; -100A:71; -100B:D7; -100C:28; -100D:14; -100E:FE; -100F:45; -1010:28; -1011:10; -1012:FE; -1013:44; -1014:28; -1015:0C; -1016:FE; -1017:30; -1018:28; -1019:F0; -101A:FE; -101B:2C; -101C:28; -101D:EC; -101E:FE; -101F:2E; -1020:20; -1021:03; -1022:2B; -1023:36; -1024:30; -1025:7B; -1026:E6; -1027:10; -1028:28; -1029:03; -102A:2B; -102B:36; -102C:24; -102D:7B; -102E:E6; -102F:04; -1030:C0; -1031:2B; -1032:70; -1033:C9; -1034:32; -1035:D8; -1036:78; -1037:21; -1038:30; -1039:79; -103A:36; -103B:20; -103C:C9; -103D:FE; -103E:05; -103F:E5; -1040:DE; -1041:00; -1042:17; -1043:57; -1044:14; -1045:CD; -1046:01; -1047:12; -1048:01; -1049:00; -104A:03; -104B:82; -104C:FA; -104D:57; -104E:10; -104F:14; -1050:BA; -1051:30; -1052:04; -1053:3C; -1054:47; -1055:3E; -1056:02; -1057:D6; -1058:02; -1059:E1; -105A:F5; -105B:CD; -105C:91; -105D:12; -105E:36; -105F:30; -1060:CC; -1061:C9; -1062:09; -1063:CD; -1064:A4; -1065:12; -1066:2B; -1067:7E; -1068:FE; -1069:30; -106A:28; -106B:FA; -106C:FE; -106D:2E; -106E:C4; -106F:C9; -1070:09; -1071:F1; -1072:28; -1073:1F; -1074:F5; -1075:E7; -1076:3E; -1077:22; -1078:8F; -1079:77; -107A:23; -107B:F1; -107C:36; -107D:2B; -107E:F2; -107F:85; -1080:10; -1081:36; -1082:2D; -1083:2F; -1084:3C; -1085:06; -1086:2F; -1087:04; -1088:D6; -1089:0A; -108A:30; -108B:FB; -108C:C6; -108D:3A; -108E:23; -108F:70; -1090:23; -1091:77; -1092:23; -1093:36; -1094:00; -1095:EB; -1096:21; -1097:30; -1098:79; -1099:C9; -109A:23; -109B:C5; -109C:FE; -109D:04; -109E:7A; -109F:D2; -10A0:09; -10A1:11; -10A2:1F; -10A3:DA; -10A4:A3; -10A5:11; -10A6:01; -10A7:03; -10A8:06; -10A9:CD; -10AA:89; -10AB:12; -10AC:D1; -10AD:7A; -10AE:D6; -10AF:05; -10B0:F4; -10B1:69; -10B2:12; -10B3:CD; -10B4:2F; -10B5:13; -10B6:7B; -10B7:B7; -10B8:CC; -10B9:2F; -10BA:09; -10BB:3D; -10BC:F4; -10BD:69; -10BE:12; -10BF:E5; -10C0:CD; -10C1:F5; -10C2:0F; -10C3:E1; -10C4:28; -10C5:02; -10C6:70; -10C7:23; -10C8:36; -10C9:00; -10CA:21; -10CB:2F; -10CC:79; -10CD:23; -10CE:3A; -10CF:F3; -10D0:78; -10D1:95; -10D2:92; -10D3:C8; -10D4:7E; -10D5:FE; -10D6:20; -10D7:28; -10D8:F4; -10D9:FE; -10DA:2A; -10DB:28; -10DC:F0; -10DD:2B; -10DE:E5; -10DF:F5; -10E0:01; -10E1:DF; -10E2:10; -10E3:C5; -10E4:D7; -10E5:FE; -10E6:2D; -10E7:C8; -10E8:FE; -10E9:2B; -10EA:C8; -10EB:FE; -10EC:24; -10ED:C8; -10EE:C1; -10EF:FE; -10F0:30; -10F1:20; -10F2:0F; -10F3:23; -10F4:D7; -10F5:30; -10F6:0B; -10F7:2B; -10F8:01; -10F9:2B; -10FA:77; -10FB:F1; -10FC:28; -10FD:FB; -10FE:C1; -10FF:C3; -1100:CE; -1101:10; -1102:F1; -1103:28; -1104:FD; -1105:E1; -1106:36; -1107:25; -1108:C9; -1109:E5; -110A:1F; -110B:DA; -110C:AA; -110D:11; -110E:28; -110F:14; -1110:11; -1111:84; -1112:13; -1113:CD; -1114:49; -1115:0A; -1116:16; -1117:10; -1118:FA; -1119:32; -111A:11; -111B:E1; -111C:C1; -111D:CD; -111E:BD; -111F:0F; -1120:2B; -1121:36; -1122:25; -1123:C9; -1124:01; -1125:0E; -1126:B6; -1127:11; -1128:CA; -1129:1B; -112A:CD; -112B:0C; -112C:0A; -112D:F2; -112E:1B; -112F:11; -1130:16; -1131:06; -1132:CD; -1133:55; -1134:09; -1135:C4; -1136:01; -1137:12; -1138:E1; -1139:C1; -113A:FA; -113B:57; -113C:11; -113D:C5; -113E:5F; -113F:78; -1140:92; -1141:93; -1142:F4; -1143:69; -1144:12; -1145:CD; -1146:7D; -1147:12; -1148:CD; -1149:A4; -114A:12; -114B:B3; -114C:C4; -114D:77; -114E:12; -114F:B3; -1150:C4; -1151:91; -1152:12; -1153:D1; -1154:C3; -1155:B6; -1156:10; -1157:5F; -1158:79; -1159:B7; -115A:C4; -115B:16; -115C:0F; -115D:83; -115E:FA; -115F:62; -1160:11; -1161:AF; -1162:C5; -1163:F5; -1164:FC; -1165:18; -1166:0F; -1167:FA; -1168:64; -1169:11; -116A:C1; -116B:7B; -116C:90; -116D:C1; -116E:5F; -116F:82; -1170:78; -1171:FA; -1172:7F; -1173:11; -1174:92; -1175:93; -1176:F4; -1177:69; -1178:12; -1179:C5; -117A:CD; -117B:7D; -117C:12; -117D:18; -117E:11; -117F:CD; -1180:69; -1181:12; -1182:79; -1183:CD; -1184:94; -1185:12; -1186:4F; -1187:AF; -1188:92; -1189:93; -118A:CD; -118B:69; -118C:12; -118D:C5; -118E:47; -118F:4F; -1190:CD; -1191:A4; -1192:12; -1193:C1; -1194:B1; -1195:20; -1196:03; -1197:2A; -1198:F3; -1199:78; -119A:83; -119B:3D; -119C:F4; -119D:69; -119E:12; -119F:50; -11A0:C3; -11A1:BF; -11A2:10; -11A3:E5; -11A4:D5; -11A5:CD; -11A6:CC; -11A7:0A; -11A8:D1; -11A9:AF; -11AA:CA; -11AB:B0; -11AC:11; -11AD:1E; -11AE:10; -11AF:01; -11B0:1E; -11B1:06; -11B2:CD; -11B3:55; -11B4:09; -11B5:37; -11B6:C4; -11B7:01; -11B8:12; -11B9:E1; -11BA:C1; -11BB:F5; -11BC:79; -11BD:B7; -11BE:F5; -11BF:C4; -11C0:16; -11C1:0F; -11C2:80; -11C3:4F; -11C4:7A; -11C5:E6; -11C6:04; -11C7:FE; -11C8:01; -11C9:9F; -11CA:57; -11CB:81; -11CC:4F; -11CD:93; -11CE:F5; -11CF:C5; -11D0:FC; -11D1:18; -11D2:0F; -11D3:FA; -11D4:D0; -11D5:11; -11D6:C1; -11D7:F1; -11D8:C5; -11D9:F5; -11DA:FA; -11DB:DE; -11DC:11; -11DD:AF; -11DE:2F; -11DF:3C; -11E0:80; -11E1:3C; -11E2:82; -11E3:47; -11E4:0E; -11E5:00; -11E6:CD; -11E7:A4; -11E8:12; -11E9:F1; -11EA:F4; -11EB:71; -11EC:12; -11ED:C1; -11EE:F1; -11EF:CC; -11F0:2F; -11F1:09; -11F2:F1; -11F3:38; -11F4:03; -11F5:83; -11F6:90; -11F7:92; -11F8:C5; -11F9:CD; -11FA:74; -11FB:10; -11FC:EB; -11FD:D1; -11FE:C3; -11FF:BF; -1200:10; -1201:D5; -1202:AF; -1203:F5; -1204:E7; -1205:E2; -1206:22; -1207:12; -1208:3A; -1209:24; -120A:79; -120B:FE; -120C:91; -120D:D2; -120E:22; -120F:12; -1210:11; -1211:64; -1212:13; -1213:21; -1214:27; -1215:79; -1216:CD; -1217:D3; -1218:09; -1219:CD; -121A:A1; -121B:0D; -121C:F1; -121D:D6; -121E:0A; -121F:F5; -1220:18; -1221:E6; -1222:CD; -1223:4F; -1224:12; -1225:E7; -1226:EA; -1227:34; -1228:12; -1229:01; -122A:43; -122B:91; -122C:11; -122D:F9; -122E:4F; -122F:CD; -1230:0C; -1231:0A; -1232:18; -1233:06; -1234:11; -1235:6C; -1236:13; -1237:CD; -1238:49; -1239:0A; -123A:F2; -123B:4C; -123C:12; -123D:F1; -123E:CD; -123F:0B; -1240:0F; -1241:F5; -1242:18; -1243:E1; -1244:F1; -1245:CD; -1246:18; -1247:0F; -1248:F5; -1249:CD; -124A:4F; -124B:12; -124C:F1; -124D:D1; -124E:C9; -124F:E7; -1250:EA; -1251:5E; -1252:12; -1253:01; -1254:74; -1255:94; -1256:11; -1257:F8; -1258:23; -1259:CD; -125A:0C; -125B:0A; -125C:18; -125D:06; -125E:11; -125F:74; -1260:13; -1261:CD; -1262:49; -1263:0A; -1264:E1; -1265:F2; -1266:44; -1267:12; -1268:E9; -1269:B7; -126A:C8; -126B:3D; -126C:36; -126D:30; -126E:23; -126F:18; -1270:F9; -1271:20; -1272:04; -1273:C8; -1274:CD; -1275:91; -1276:12; -1277:36; -1278:30; -1279:23; -127A:3D; -127B:18; -127C:F6; -127D:7B; -127E:82; -127F:3C; -1280:47; -1281:3C; -1282:D6; -1283:03; -1284:30; -1285:FC; -1286:C6; -1287:05; -1288:4F; -1289:3A; -128A:D8; -128B:78; -128C:E6; -128D:40; -128E:C0; -128F:4F; -1290:C9; -1291:05; -1292:20; -1293:08; -1294:36; -1295:2E; -1296:22; -1297:F3; -1298:78; -1299:23; -129A:48; -129B:C9; -129C:0D; -129D:C0; -129E:36; -129F:2C; -12A0:23; -12A1:0E; -12A2:03; -12A3:C9; -12A4:D5; -12A5:E7; -12A6:E2; -12A7:EA; -12A8:12; -12A9:C5; -12AA:E5; -12AB:CD; -12AC:FC; -12AD:09; -12AE:21; -12AF:7C; -12B0:13; -12B1:CD; -12B2:F7; -12B3:09; -12B4:CD; -12B5:77; -12B6:0C; -12B7:AF; -12B8:CD; -12B9:7B; -12BA:0B; -12BB:E1; -12BC:C1; -12BD:11; -12BE:8C; -12BF:13; -12C0:3E; -12C1:0A; -12C2:CD; -12C3:91; -12C4:12; -12C5:C5; -12C6:F5; -12C7:E5; -12C8:D5; -12C9:06; -12CA:2F; -12CB:04; -12CC:E1; -12CD:E5; -12CE:CD; -12CF:48; -12D0:0D; -12D1:30; -12D2:F8; -12D3:E1; -12D4:CD; -12D5:36; -12D6:0D; -12D7:EB; -12D8:E1; -12D9:70; -12DA:23; -12DB:F1; -12DC:C1; -12DD:3D; -12DE:20; -12DF:E2; -12E0:C5; -12E1:E5; -12E2:21; -12E3:1D; -12E4:79; -12E5:CD; -12E6:B1; -12E7:09; -12E8:18; -12E9:0C; -12EA:C5; -12EB:E5; -12EC:CD; -12ED:08; -12EE:07; -12EF:3C; -12F0:CD; -12F1:FB; -12F2:0A; -12F3:CD; -12F4:B4; -12F5:09; -12F6:E1; -12F7:C1; -12F8:AF; -12F9:11; -12FA:D2; -12FB:13; -12FC:3F; -12FD:CD; -12FE:91; -12FF:12; -1300:C5; -1301:F5; -1302:E5; -1303:D5; -1304:CD; -1305:BF; -1306:09; -1307:E1; -1308:06; -1309:2F; -130A:04; -130B:7B; -130C:96; -130D:5F; -130E:23; -130F:7A; -1310:9E; -1311:57; -1312:23; -1313:79; -1314:9E; -1315:4F; -1316:2B; -1317:2B; -1318:30; -1319:F0; -131A:CD; -131B:B7; -131C:07; -131D:23; -131E:CD; -131F:B4; -1320:09; -1321:EB; -1322:E1; -1323:70; -1324:23; -1325:F1; -1326:C1; -1327:38; -1328:D3; -1329:13; -132A:13; -132B:3E; -132C:04; -132D:18; -132E:06; -132F:D5; -1330:11; -1331:D8; -1332:13; -1333:3E; -1334:05; -1335:CD; -1336:91; -1337:12; -1338:C5; -1339:F5; -133A:E5; -133B:EB; -133C:4E; -133D:23; -133E:46; -133F:C5; -1340:23; -1341:E3; -1342:EB; -1343:2A; -1344:21; -1345:79; -1346:06; -1347:2F; -1348:04; -1349:7D; -134A:93; -134B:6F; -134C:7C; -134D:9A; -134E:67; -134F:30; -1350:F7; -1351:19; -1352:22; -1353:21; -1354:79; -1355:D1; -1356:E1; -1357:70; -1358:23; -1359:F1; -135A:C1; -135B:3D; -135C:20; -135D:D7; -135E:CD; -135F:91; -1360:12; -1361:77; -1362:D1; -1363:C9; -1364:00; -1365:00; -1366:00; -1367:00; -1368:F9; -1369:02; -136A:15; -136B:A2; -136C:FD; -136D:FF; -136E:9F; -136F:31; -1370:A9; -1371:5F; -1372:63; -1373:B2; -1374:FE; -1375:FF; -1376:03; -1377:BF; -1378:C9; -1379:1B; -137A:0E; -137B:B6; -137C:00; -137D:00; -137E:00; -137F:00; -1380:00; -1381:00; -1382:00; -1383:80; -1384:00; -1385:00; -1386:04; -1387:BF; -1388:C9; -1389:1B; -138A:0E; -138B:B6; -138C:00; -138D:80; -138E:C6; -138F:A4; -1390:7E; -1391:8D; -1392:03; -1393:00; -1394:40; -1395:7A; -1396:10; -1397:F3; -1398:5A; -1399:00; -139A:00; -139B:A0; -139C:72; -139D:4E; -139E:18; -139F:09; -13A0:00; -13A1:00; -13A2:10; -13A3:A5; -13A4:D4; -13A5:E8; -13A6:00; -13A7:00; -13A8:00; -13A9:E8; -13AA:76; -13AB:48; -13AC:17; -13AD:00; -13AE:00; -13AF:00; -13B0:E4; -13B1:0B; -13B2:54; -13B3:02; -13B4:00; -13B5:00; -13B6:00; -13B7:CA; -13B8:9A; -13B9:3B; -13BA:00; -13BB:00; -13BC:00; -13BD:00; -13BE:E1; -13BF:F5; -13C0:05; -13C1:00; -13C2:00; -13C3:00; -13C4:80; -13C5:96; -13C6:98; -13C7:00; -13C8:00; -13C9:00; -13CA:00; -13CB:40; -13CC:42; -13CD:0F; -13CE:00; -13CF:00; -13D0:00; -13D1:00; -13D2:A0; -13D3:86; -13D4:01; -13D5:10; -13D6:27; -13D7:00; -13D8:10; -13D9:27; -13DA:E8; -13DB:03; -13DC:64; -13DD:00; -13DE:0A; -13DF:00; -13E0:01; -13E1:00; -13E2:21; -13E3:82; -13E4:09; -13E5:E3; -13E6:E9; -13E7:CD; -13E8:A4; -13E9:09; -13EA:21; -13EB:80; -13EC:13; -13ED:CD; -13EE:B1; -13EF:09; -13F0:18; -13F1:03; -13F2:CD; -13F3:B1; -13F4:0A; -13F5:C1; -13F6:D1; -13F7:CD; -13F8:55; -13F9:09; -13FA:78; -13FB:28; -13FC:3C; -13FD:F2; -13FE:04; -13FF:14; -1400:B7; -1401:CA; -1402:9A; -1403:19; -1404:B7; -1405:CA; -1406:79; -1407:07; -1408:D5; -1409:C5; -140A:79; -140B:F6; -140C:7F; -140D:CD; -140E:BF; -140F:09; -1410:F2; -1411:21; -1412:14; -1413:D5; -1414:C5; -1415:CD; -1416:40; -1417:0B; -1418:C1; -1419:D1; -141A:F5; -141B:CD; -141C:0C; -141D:0A; -141E:E1; -141F:7C; -1420:1F; -1421:E1; -1422:22; -1423:23; -1424:79; -1425:E1; -1426:22; -1427:21; -1428:79; -1429:DC; -142A:E2; -142B:13; -142C:CC; -142D:82; -142E:09; -142F:D5; -1430:C5; -1431:CD; -1432:09; -1433:08; -1434:C1; -1435:D1; -1436:CD; -1437:47; -1438:08; -1439:CD; -143A:A4; -143B:09; -143C:01; -143D:38; -143E:81; -143F:11; -1440:3B; -1441:AA; -1442:CD; -1443:47; -1444:08; -1445:3A; -1446:24; -1447:79; -1448:FE; -1449:88; -144A:D2; -144B:31; -144C:09; -144D:CD; -144E:40; -144F:0B; -1450:C6; -1451:80; -1452:C6; -1453:02; -1454:DA; -1455:31; -1456:09; -1457:F5; -1458:21; -1459:F8; -145A:07; -145B:CD; -145C:0B; -145D:07; -145E:CD; -145F:41; -1460:08; -1461:F1; -1462:C1; -1463:D1; -1464:F5; -1465:CD; -1466:13; -1467:07; -1468:CD; -1469:82; -146A:09; -146B:21; -146C:79; -146D:14; -146E:CD; -146F:A9; -1470:14; -1471:11; -1472:00; -1473:00; -1474:C1; -1475:4A; -1476:C3; -1477:47; -1478:08; -1479:08; -147A:40; -147B:2E; -147C:94; -147D:74; -147E:70; -147F:4F; -1480:2E; -1481:77; -1482:6E; -1483:02; -1484:88; -1485:7A; -1486:E6; -1487:A0; -1488:2A; -1489:7C; -148A:50; -148B:AA; -148C:AA; -148D:7E; -148E:FF; -148F:FF; -1490:7F; -1491:7F; -1492:00; -1493:00; -1494:80; -1495:81; -1496:00; -1497:00; -1498:00; -1499:81; -149A:CD; -149B:A4; -149C:09; -149D:11; -149E:32; -149F:0C; -14A0:D5; -14A1:E5; -14A2:CD; -14A3:BF; -14A4:09; -14A5:CD; -14A6:47; -14A7:08; -14A8:E1; -14A9:CD; -14AA:A4; -14AB:09; -14AC:7E; -14AD:23; -14AE:CD; -14AF:B1; -14B0:09; -14B1:06; -14B2:F1; -14B3:C1; -14B4:D1; -14B5:3D; -14B6:C8; -14B7:D5; -14B8:C5; -14B9:F5; -14BA:E5; -14BB:CD; -14BC:47; -14BD:08; -14BE:E1; -14BF:CD; -14C0:C2; -14C1:09; -14C2:E5; -14C3:CD; -14C4:16; -14C5:07; -14C6:E1; -14C7:18; -14C8:E9; -14C9:CD; -14CA:7F; -14CB:0A; -14CC:7C; -14CD:B7; -14CE:FA; -14CF:4A; -14D0:1E; -14D1:B5; -14D2:CA; -14D3:F0; -14D4:14; -14D5:E5; -14D6:CD; -14D7:F0; -14D8:14; -14D9:CD; -14DA:BF; -14DB:09; -14DC:EB; -14DD:E3; -14DE:C5; -14DF:CD; -14E0:CF; -14E1:0A; -14E2:C1; -14E3:D1; -14E4:CD; -14E5:47; -14E6:08; -14E7:21; -14E8:F8; -14E9:07; -14EA:CD; -14EB:0B; -14EC:07; -14ED:C3; -14EE:40; -14EF:0B; -14F0:21; -14F1:90; -14F2:78; -14F3:E5; -14F4:11; -14F5:00; -14F6:00; -14F7:4B; -14F8:26; -14F9:03; -14FA:2E; -14FB:08; -14FC:EB; -14FD:29; -14FE:EB; -14FF:79; -1500:17; -1501:4F; -1502:E3; -1503:7E; -1504:07; -1505:77; -1506:E3; -1507:D2; -1508:16; -1509:15; -150A:E5; -150B:2A; -150C:AA; -150D:78; -150E:19; -150F:EB; -1510:3A; -1511:AC; -1512:78; -1513:89; -1514:4F; -1515:E1; -1516:2D; -1517:C2; -1518:FC; -1519:14; -151A:E3; -151B:23; -151C:E3; -151D:25; -151E:C2; -151F:FA; -1520:14; -1521:E1; -1522:21; -1523:65; -1524:B0; -1525:19; -1526:22; -1527:AA; -1528:78; -1529:CD; -152A:EF; -152B:0A; -152C:3E; -152D:05; -152E:89; -152F:32; -1530:AC; -1531:78; -1532:EB; -1533:06; -1534:80; -1535:21; -1536:25; -1537:79; -1538:70; -1539:2B; -153A:70; -153B:4F; -153C:06; -153D:00; -153E:C3; -153F:65; -1540:07; -1541:21; -1542:8B; -1543:15; -1544:CD; -1545:0B; -1546:07; -1547:CD; -1548:A4; -1549:09; -154A:01; -154B:49; -154C:83; -154D:11; -154E:DB; -154F:0F; -1550:CD; -1551:B4; -1552:09; -1553:C1; -1554:D1; -1555:CD; -1556:A2; -1557:08; -1558:CD; -1559:A4; -155A:09; -155B:CD; -155C:40; -155D:0B; -155E:C1; -155F:D1; -1560:CD; -1561:13; -1562:07; -1563:21; -1564:8F; -1565:15; -1566:CD; -1567:10; -1568:07; -1569:CD; -156A:55; -156B:09; -156C:37; -156D:F2; -156E:77; -156F:15; -1570:CD; -1571:08; -1572:07; -1573:CD; -1574:55; -1575:09; -1576:B7; -1577:F5; -1578:F4; -1579:82; -157A:09; -157B:21; -157C:8F; -157D:15; -157E:CD; -157F:0B; -1580:07; -1581:F1; -1582:D4; -1583:82; -1584:09; -1585:21; -1586:93; -1587:15; -1588:C3; -1589:9A; -158A:14; -158B:DB; -158C:0F; -158D:49; -158E:81; -158F:00; -1590:00; -1591:00; -1592:7F; -1593:05; -1594:BA; -1595:D7; -1596:1E; -1597:86; -1598:64; -1599:26; -159A:99; -159B:87; -159C:58; -159D:34; -159E:23; -159F:87; -15A0:E0; -15A1:5D; -15A2:A5; -15A3:86; -15A4:DA; -15A5:0F; -15A6:49; -15A7:83; -15A8:CD; -15A9:A4; -15AA:09; -15AB:CD; -15AC:47; -15AD:15; -15AE:C1; -15AF:E1; -15B0:CD; -15B1:A4; -15B2:09; -15B3:EB; -15B4:CD; -15B5:B4; -15B6:09; -15B7:CD; -15B8:41; -15B9:15; -15BA:C3; -15BB:A0; -15BC:08; -15BD:CD; -15BE:55; -15BF:09; -15C0:FC; -15C1:E2; -15C2:13; -15C3:FC; -15C4:82; -15C5:09; -15C6:3A; -15C7:24; -15C8:79; -15C9:FE; -15CA:81; -15CB:38; -15CC:0C; -15CD:01; -15CE:00; -15CF:81; -15D0:51; -15D1:59; -15D2:CD; -15D3:A2; -15D4:08; -15D5:21; -15D6:10; -15D7:07; -15D8:E5; -15D9:21; -15DA:E3; -15DB:15; -15DC:CD; -15DD:9A; -15DE:14; -15DF:21; -15E0:8B; -15E1:15; -15E2:C9; -15E3:09; -15E4:4A; -15E5:D7; -15E6:3B; -15E7:78; -15E8:02; -15E9:6E; -15EA:84; -15EB:7B; -15EC:FE; -15ED:C1; -15EE:2F; -15EF:7C; -15F0:74; -15F1:31; -15F2:9A; -15F3:7D; -15F4:84; -15F5:3D; -15F6:5A; -15F7:7D; -15F8:C8; -15F9:7F; -15FA:91; -15FB:7E; -15FC:E4; -15FD:BB; -15FE:4C; -15FF:7E; -1600:6C; -1601:AA; -1602:AA; -1603:7F; -1604:00; -1605:00; -1606:00; -1607:81; -1608:8A; -1609:09; -160A:37; -160B:0B; -160C:77; -160D:09; -160E:D4; -160F:27; -1610:EF; -1611:2A; -1612:F5; -1613:27; -1614:E7; -1615:13; -1616:C9; -1617:14; -1618:09; -1619:08; -161A:39; -161B:14; -161C:41; -161D:15; -161E:47; -161F:15; -1620:A8; -1621:15; -1622:BD; -1623:15; -1624:AA; -1625:2C; -1626:52; -1627:79; -1628:58; -1629:79; -162A:5E; -162B:79; -162C:61; -162D:79; -162E:64; -162F:79; -1630:67; -1631:79; -1632:6A; -1633:79; -1634:6D; -1635:79; -1636:70; -1637:79; -1638:7F; -1639:0A; -163A:B1; -163B:0A; -163C:DB; -163D:0A; -163E:26; -163F:0B; -1640:03; -1641:2A; -1642:36; -1643:28; -1644:C5; -1645:2A; -1646:0F; -1647:2A; -1648:1F; -1649:2A; -164A:61; -164B:2A; -164C:91; -164D:2A; -164E:9A; -164F:2A; -1650:C5; -1651:4E; -1652:44; -1653:C6; -1654:4F; -1655:52; -1656:D2; -1657:45; -1658:53; -1659:45; -165A:54; -165B:D3; -165C:45; -165D:54; -165E:C3; -165F:4C; -1660:53; -1661:81; -1662:00; -1663:00; -1664:81; -1665:00; -1666:00; -1667:00; -1668:00; -1669:00; -166A:CE; -166B:45; -166C:58; -166D:54; -166E:C4; -166F:41; -1670:54; -1671:41; -1672:C9; -1673:4E; -1674:50; -1675:55; -1676:54; -1677:C4; -1678:49; -1679:4D; -167A:D2; -167B:45; -167C:41; -167D:44; -167E:CC; -167F:45; -1680:54; -1681:C7; -1682:4F; -1683:54; -1684:4F; -1685:D2; -1686:55; -1687:4E; -1688:C9; -1689:46; -168A:D2; -168B:45; -168C:53; -168D:54; -168E:4F; -168F:52; -1690:45; -1691:C7; -1692:4F; -1693:53; -1694:55; -1695:42; -1696:D2; -1697:45; -1698:54; -1699:55; -169A:52; -169B:4E; -169C:D2; -169D:45; -169E:4D; -169F:D3; -16A0:54; -16A1:4F; -16A2:50; -16A3:C5; -16A4:4C; -16A5:53; -16A6:45; -16A7:C3; -16A8:4F; -16A9:50; -16AA:59; -16AB:C3; -16AC:4F; -16AD:4C; -16AE:4F; -16AF:52; -16B0:D6; -16B1:45; -16B2:52; -16B3:49; -16B4:46; -16B5:59; -16B6:81; -16B7:00; -16B8:00; -16B9:00; -16BA:00; -16BB:00; -16BC:81; -16BD:00; -16BE:00; -16BF:00; -16C0:00; -16C1:00; -16C2:81; -16C3:00; -16C4:00; -16C5:00; -16C6:00; -16C7:00; -16C8:C3; -16C9:52; -16CA:55; -16CB:4E; -16CC:CD; -16CD:4F; -16CE:44; -16CF:45; -16D0:D3; -16D1:4F; -16D2:55; -16D3:4E; -16D4:44; -16D5:81; -16D6:00; -16D7:00; -16D8:00; -16D9:00; -16DA:00; -16DB:CF; -16DC:55; -16DD:54; -16DE:81; -16DF:00; -16E0:81; -16E1:00; -16E2:00; -16E3:00; -16E4:81; -16E5:00; -16E6:00; -16E7:00; -16E8:00; -16E9:81; -16EA:00; -16EB:00; -16EC:81; -16ED:00; -16EE:00; -16EF:81; -16F0:00; -16F1:00; -16F2:00; -16F3:00; -16F4:81; -16F5:00; -16F6:00; -16F7:00; -16F8:81; -16F9:00; -16FA:00; -16FB:00; -16FC:00; -16FD:81; -16FE:00; -16FF:00; -1700:00; -1701:81; -1702:00; -1703:00; -1704:00; -1705:81; -1706:00; -1707:00; -1708:00; -1709:81; -170A:00; -170B:00; -170C:00; -170D:81; -170E:00; -170F:00; -1710:00; -1711:81; -1712:00; -1713:00; -1714:00; -1715:00; -1716:00; -1717:CC; -1718:50; -1719:52; -171A:49; -171B:4E; -171C:54; -171D:81; -171E:00; -171F:00; -1720:D0; -1721:4F; -1722:4B; -1723:45; -1724:D0; -1725:52; -1726:49; -1727:4E; -1728:54; -1729:C3; -172A:4F; -172B:4E; -172C:54; -172D:CC; -172E:49; -172F:53; -1730:54; -1731:CC; -1732:4C; -1733:49; -1734:53; -1735:54; -1736:81; -1737:00; -1738:00; -1739:00; -173A:00; -173B:00; -173C:81; -173D:00; -173E:00; -173F:00; -1740:C3; -1741:4C; -1742:45; -1743:41; -1744:52; -1745:C3; -1746:4C; -1747:4F; -1748:41; -1749:44; -174A:C3; -174B:53; -174C:41; -174D:56; -174E:45; -174F:CE; -1750:45; -1751:57; -1752:D4; -1753:41; -1754:42; -1755:28; -1756:D4; -1757:4F; -1758:81; -1759:00; -175A:D5; -175B:53; -175C:49; -175D:4E; -175E:47; -175F:81; -1760:00; -1761:00; -1762:00; -1763:00; -1764:00; -1765:D5; -1766:53; -1767:52; -1768:81; -1769:00; -176A:00; -176B:81; -176C:00; -176D:00; -176E:81; -176F:00; -1770:00; -1771:00; -1772:00; -1773:00; -1774:00; -1775:81; -1776:00; -1777:00; -1778:00; -1779:00; -177A:D0; -177B:4F; -177C:49; -177D:4E; -177E:54; -177F:81; -1780:00; -1781:00; -1782:00; -1783:00; -1784:81; -1785:00; -1786:00; -1787:C9; -1788:4E; -1789:4B; -178A:45; -178B:59; -178C:24; -178D:D4; -178E:48; -178F:45; -1790:4E; -1791:CE; -1792:4F; -1793:54; -1794:D3; -1795:54; -1796:45; -1797:50; -1798:AB; -1799:AD; -179A:AA; -179B:AF; -179C:DE; -179D:C1; -179E:4E; -179F:44; -17A0:CF; -17A1:52; -17A2:BE; -17A3:BD; -17A4:BC; -17A5:D3; -17A6:47; -17A7:4E; -17A8:C9; -17A9:4E; -17AA:54; -17AB:C1; -17AC:42; -17AD:53; -17AE:81; -17AF:00; -17B0:00; -17B1:C9; -17B2:4E; -17B3:50; -17B4:81; -17B5:00; -17B6:00; -17B7:D3; -17B8:51; -17B9:52; -17BA:D2; -17BB:4E; -17BC:44; -17BD:CC; -17BE:4F; -17BF:47; -17C0:C5; -17C1:58; -17C2:50; -17C3:C3; -17C4:4F; -17C5:53; -17C6:D3; -17C7:49; -17C8:4E; -17C9:D4; -17CA:41; -17CB:4E; -17CC:C1; -17CD:54; -17CE:4E; -17CF:D0; -17D0:45; -17D1:45; -17D2:4B; -17D3:81; -17D4:00; -17D5:00; -17D6:81; -17D7:00; -17D8:00; -17D9:81; -17DA:00; -17DB:00; -17DC:81; -17DD:00; -17DE:00; -17DF:81; -17E0:00; -17E1:00; -17E2:81; -17E3:00; -17E4:00; -17E5:81; -17E6:00; -17E7:00; -17E8:00; -17E9:81; -17EA:00; -17EB:00; -17EC:00; -17ED:81; -17EE:00; -17EF:00; -17F0:00; -17F1:81; -17F2:00; -17F3:00; -17F4:00; -17F5:81; -17F6:00; -17F7:00; -17F8:00; -17F9:81; -17FA:00; -17FB:00; -17FC:00; -17FD:81; -17FE:00; -17FF:00; -1800:CC; -1801:45; -1802:4E; -1803:D3; -1804:54; -1805:52; -1806:24; -1807:D6; -1808:41; -1809:4C; -180A:C1; -180B:53; -180C:43; -180D:C3; -180E:48; -180F:52; -1810:24; -1811:CC; -1812:45; -1813:46; -1814:54; -1815:24; -1816:D2; -1817:49; -1818:47; -1819:48; -181A:54; -181B:24; -181C:CD; -181D:49; -181E:44; -181F:24; -1820:A7; -1821:80; -1822:AE; -1823:1D; -1824:A1; -1825:1C; -1826:38; -1827:01; -1828:35; -1829:01; -182A:C9; -182B:01; -182C:73; -182D:79; -182E:D3; -182F:01; -1830:B6; -1831:22; -1832:05; -1833:1F; -1834:9A; -1835:21; -1836:08; -1837:26; -1838:EF; -1839:21; -183A:21; -183B:1F; -183C:C2; -183D:1E; -183E:A3; -183F:1E; -1840:39; -1841:20; -1842:91; -1843:1D; -1844:B1; -1845:1E; -1846:DE; -1847:1E; -1848:07; -1849:1F; -184A:A9; -184B:1D; -184C:07; -184D:1F; -184E:12; -184F:39; -1850:9D; -1851:38; -1852:38; -1853:37; -1854:03; -1855:1E; -1856:06; -1857:1E; -1858:09; -1859:1E; -185A:2E; -185B:37; -185C:63; -185D:2E; -185E:F5; -185F:2B; -1860:AF; -1861:1F; -1862:FB; -1863:2A; -1864:6C; -1865:1F; -1866:79; -1867:79; -1868:7C; -1869:79; -186A:7F; -186B:79; -186C:82; -186D:79; -186E:85; -186F:79; -1870:88; -1871:79; -1872:8B; -1873:79; -1874:8E; -1875:79; -1876:91; -1877:79; -1878:97; -1879:79; -187A:9A; -187B:79; -187C:A0; -187D:79; -187E:00; -187F:00; -1880:67; -1881:20; -1882:5B; -1883:79; -1884:B1; -1885:2C; -1886:6F; -1887:20; -1888:E4; -1889:1D; -188A:2E; -188B:2B; -188C:29; -188D:2B; -188E:C6; -188F:2B; -1890:08; -1891:20; -1892:7A; -1893:1E; -1894:56; -1895:36; -1896:A9; -1897:34; -1898:49; -1899:1B; -189A:79; -189B:79; -189C:7C; -189D:7C; -189E:7F; -189F:50; -18A0:46; -18A1:DB; -18A2:0A; -18A3:00; -18A4:00; -18A5:7F; -18A6:0A; -18A7:F4; -18A8:0A; -18A9:B1; -18AA:0A; -18AB:77; -18AC:0C; -18AD:70; -18AE:0C; -18AF:A1; -18B0:0D; -18B1:E5; -18B2:0D; -18B3:78; -18B4:0A; -18B5:16; -18B6:07; -18B7:13; -18B8:07; -18B9:47; -18BA:08; -18BB:A2; -18BC:08; -18BD:0C; -18BE:0A; -18BF:D2; -18C0:0B; -18C1:C7; -18C2:0B; -18C3:F2; -18C4:0B; -18C5:90; -18C6:24; -18C7:39; -18C8:0A; -18C9:4E; -18CA:46; -18CB:53; -18CC:4E; -18CD:52; -18CE:47; -18CF:4F; -18D0:44; -18D1:46; -18D2:43; -18D3:4F; -18D4:56; -18D5:4F; -18D6:4D; -18D7:55; -18D8:4C; -18D9:42; -18DA:53; -18DB:44; -18DC:44; -18DD:2F; -18DE:30; -18DF:49; -18E0:44; -18E1:54; -18E2:4D; -18E3:4F; -18E4:53; -18E5:4C; -18E6:53; -18E7:53; -18E8:54; -18E9:43; -18EA:4E; -18EB:4E; -18EC:52; -18ED:52; -18EE:57; -18EF:55; -18F0:45; -18F1:4D; -18F2:4F; -18F3:46; -18F4:44; -18F5:4C; -18F6:33; -18F7:D6; -18F8:00; -18F9:6F; -18FA:7C; -18FB:DE; -18FC:00; -18FD:67; -18FE:78; -18FF:DE; -1900:00; -1901:47; -1902:3E; -1903:00; -1904:C9; -1905:4A; -1906:1E; -1907:40; -1908:E6; -1909:4D; -190A:DB; -190B:00; -190C:C9; -190D:D3; -190E:00; -190F:C9; -1910:00; -1911:00; -1912:00; -1913:00; -1914:40; -1915:30; -1916:00; -1917:4C; -1918:7B; -1919:FE; -191A:FF; -191B:E9; -191C:7A; -191D:20; -191E:45; -191F:52; -1920:52; -1921:4F; -1922:52; -1923:00; -1924:20; -1925:49; -1926:4E; -1927:20; -1928:00; -1929:52; -192A:45; -192B:41; -192C:44; -192D:59; -192E:0D; -192F:00; -1930:42; -1931:52; -1932:45; -1933:41; -1934:4B; -1935:00; -1936:21; -1937:04; -1938:00; -1939:39; -193A:7E; -193B:23; -193C:FE; -193D:81; -193E:C0; -193F:4E; -1940:23; -1941:46; -1942:23; -1943:E5; -1944:69; -1945:60; -1946:7A; -1947:B3; -1948:EB; -1949:28; -194A:02; -194B:EB; -194C:DF; -194D:01; -194E:0E; -194F:00; -1950:E1; -1951:C8; -1952:09; -1953:18; -1954:E5; -1955:CD; -1956:6C; -1957:19; -1958:C5; -1959:E3; -195A:C1; -195B:DF; -195C:7E; -195D:02; -195E:C8; -195F:0B; -1960:2B; -1961:18; -1962:F8; -1963:E5; -1964:2A; -1965:FD; -1966:78; -1967:06; -1968:00; -1969:09; -196A:09; -196B:3E; -196C:E5; -196D:3E; -196E:C6; -196F:95; -1970:6F; -1971:3E; -1972:FF; -1973:9C; -1974:38; -1975:04; -1976:67; -1977:39; -1978:E1; -1979:D8; -197A:1E; -197B:0C; -197C:18; -197D:24; -197E:2A; -197F:A2; -1980:78; -1981:7C; -1982:A5; -1983:3C; -1984:28; -1985:08; -1986:3A; -1987:F2; -1988:78; -1989:B7; -198A:1E; -198B:22; -198C:20; -198D:14; -198E:C3; -198F:C1; -1990:1D; -1991:2A; -1992:DA; -1993:78; -1994:22; -1995:A2; -1996:78; -1997:1E; -1998:02; -1999:01; -199A:1E; -199B:14; -199C:01; -199D:1E; -199E:00; -199F:01; -19A0:1E; -19A1:24; -19A2:2A; -19A3:A2; -19A4:78; -19A5:22; -19A6:EA; -19A7:78; -19A8:22; -19A9:EC; -19AA:78; -19AB:01; -19AC:B4; -19AD:19; -19AE:2A; -19AF:E8; -19B0:78; -19B1:C3; -19B2:9A; -19B3:1B; -19B4:C1; -19B5:7B; -19B6:4B; -19B7:32; -19B8:9A; -19B9:78; -19BA:2A; -19BB:E6; -19BC:78; -19BD:22; -19BE:EE; -19BF:78; -19C0:EB; -19C1:2A; -19C2:EA; -19C3:78; -19C4:7C; -19C5:A5; -19C6:3C; -19C7:28; -19C8:07; -19C9:22; -19CA:F5; -19CB:78; -19CC:EB; -19CD:22; -19CE:F7; -19CF:78; -19D0:2A; -19D1:F0; -19D2:78; -19D3:7C; -19D4:B5; -19D5:EB; -19D6:21; -19D7:F2; -19D8:78; -19D9:28; -19DA:08; -19DB:A6; -19DC:20; -19DD:05; -19DE:35; -19DF:EB; -19E0:C3; -19E1:36; -19E2:1D; -19E3:AF; -19E4:77; -19E5:59; -19E6:CD; -19E7:F9; -19E8:20; -19E9:21; -19EA:EC; -19EB:3C; -19EC:CD; -19ED:A6; -19EE:79; -19EF:57; -19F0:3E; -19F1:3F; -19F2:CD; -19F3:2A; -19F4:03; -19F5:CD; -19F6:D4; -19F7:3C; -19F8:00; -19F9:00; -19FA:00; -19FB:00; -19FC:00; -19FD:00; -19FE:21; -19FF:1D; -1A00:19; -1A01:E5; -1A02:2A; -1A03:EA; -1A04:78; -1A05:E3; -1A06:CD; -1A07:A7; -1A08:28; -1A09:E1; -1A0A:11; -1A0B:FE; -1A0C:FF; -1A0D:DF; -1A0E:CA; -1A0F:74; -1A10:06; -1A11:7C; -1A12:A5; -1A13:3C; -1A14:C4; -1A15:A7; -1A16:0F; -1A17:3E; -1A18:C1; -1A19:CD; -1A1A:8B; -1A1B:03; -1A1C:CD; -1A1D:AC; -1A1E:79; -1A1F:00; -1A20:00; -1A21:00; -1A22:CD; -1A23:F9; -1A24:20; -1A25:21; -1A26:29; -1A27:19; -1A28:CD; -1A29:A7; -1A2A:28; -1A2B:3A; -1A2C:9A; -1A2D:78; -1A2E:D6; -1A2F:02; -1A30:00; -1A31:00; -1A32:00; -1A33:21; -1A34:FF; -1A35:FF; -1A36:22; -1A37:A2; -1A38:78; -1A39:3A; -1A3A:E1; -1A3B:78; -1A3C:B7; -1A3D:28; -1A3E:3A; -1A3F:2A; -1A40:E2; -1A41:78; -1A42:E5; -1A43:CD; -1A44:AF; -1A45:0F; -1A46:3E; -1A47:20; -1A48:CD; -1A49:2A; -1A4A:03; -1A4B:D1; -1A4C:D5; -1A4D:CD; -1A4E:2C; -1A4F:1B; -1A50:DC; -1A51:53; -1A52:2E; -1A53:00; -1A54:CD; -1A55:E3; -1A56:03; -1A57:D1; -1A58:30; -1A59:06; -1A5A:AF; -1A5B:32; -1A5C:E1; -1A5D:78; -1A5E:18; -1A5F:B9; -1A60:2A; -1A61:E4; -1A62:78; -1A63:19; -1A64:38; -1A65:F4; -1A66:D5; -1A67:11; -1A68:F9; -1A69:FF; -1A6A:DF; -1A6B:D1; -1A6C:30; -1A6D:EC; -1A6E:22; -1A6F:E2; -1A70:78; -1A71:00; -1A72:00; -1A73:21; -1A74:E7; -1A75:79; -1A76:C3; -1A77:81; -1A78:1A; -1A79:00; -1A7A:00; -1A7B:CD; -1A7C:E3; -1A7D:03; -1A7E:DA; -1A7F:33; -1A80:1A; -1A81:D7; -1A82:3C; -1A83:3D; -1A84:CA; -1A85:33; -1A86:1A; -1A87:F5; -1A88:CD; -1A89:5A; -1A8A:1E; -1A8B:2B; -1A8C:7E; -1A8D:FE; -1A8E:20; -1A8F:28; -1A90:FA; -1A91:23; -1A92:7E; -1A93:FE; -1A94:20; -1A95:CC; -1A96:C9; -1A97:09; -1A98:D5; -1A99:CD; -1A9A:C0; -1A9B:1B; -1A9C:D1; -1A9D:F1; -1A9E:22; -1A9F:E6; -1AA0:78; -1AA1:CD; -1AA2:B2; -1AA3:79; -1AA4:D2; -1AA5:5A; -1AA6:1D; -1AA7:D5; -1AA8:C5; -1AA9:AF; -1AAA:32; -1AAB:DD; -1AAC:78; -1AAD:D7; -1AAE:B7; -1AAF:F5; -1AB0:EB; -1AB1:22; -1AB2:EC; -1AB3:78; -1AB4:EB; -1AB5:CD; -1AB6:2C; -1AB7:1B; -1AB8:C5; -1AB9:DC; -1ABA:E4; -1ABB:2B; -1ABC:D1; -1ABD:F1; -1ABE:D5; -1ABF:28; -1AC0:27; -1AC1:D1; -1AC2:2A; -1AC3:F9; -1AC4:78; -1AC5:E3; -1AC6:C1; -1AC7:09; -1AC8:E5; -1AC9:CD; -1ACA:55; -1ACB:19; -1ACC:E1; -1ACD:22; -1ACE:F9; -1ACF:78; -1AD0:EB; -1AD1:74; -1AD2:D1; -1AD3:E5; -1AD4:23; -1AD5:23; -1AD6:73; -1AD7:23; -1AD8:72; -1AD9:23; -1ADA:EB; -1ADB:2A; -1ADC:A7; -1ADD:78; -1ADE:EB; -1ADF:1B; -1AE0:1B; -1AE1:1A; -1AE2:77; -1AE3:23; -1AE4:13; -1AE5:B7; -1AE6:20; -1AE7:F9; -1AE8:D1; -1AE9:CD; -1AEA:FC; -1AEB:1A; -1AEC:CD; -1AED:B5; -1AEE:79; -1AEF:CD; -1AF0:5D; -1AF1:1B; -1AF2:CD; -1AF3:B8; -1AF4:79; -1AF5:C3; -1AF6:33; -1AF7:1A; -1AF8:2A; -1AF9:A4; -1AFA:78; -1AFB:EB; -1AFC:62; -1AFD:6B; -1AFE:7E; -1AFF:23; -1B00:B6; -1B01:C8; -1B02:23; -1B03:23; -1B04:23; -1B05:AF; -1B06:BE; -1B07:23; -1B08:20; -1B09:FC; -1B0A:EB; -1B0B:73; -1B0C:23; -1B0D:72; -1B0E:18; -1B0F:EC; -1B10:11; -1B11:00; -1B12:00; -1B13:D5; -1B14:28; -1B15:09; -1B16:D1; -1B17:CD; -1B18:4F; -1B19:1E; -1B1A:D5; -1B1B:28; -1B1C:0B; -1B1D:CF; -1B1E:CE; -1B1F:11; -1B20:FA; -1B21:FF; -1B22:C4; -1B23:4F; -1B24:1E; -1B25:C2; -1B26:97; -1B27:19; -1B28:EB; -1B29:D1; -1B2A:E3; -1B2B:E5; -1B2C:2A; -1B2D:A4; -1B2E:78; -1B2F:44; -1B30:4D; -1B31:7E; -1B32:23; -1B33:B6; -1B34:2B; -1B35:C8; -1B36:23; -1B37:23; -1B38:7E; -1B39:23; -1B3A:66; -1B3B:6F; -1B3C:DF; -1B3D:60; -1B3E:69; -1B3F:7E; -1B40:23; -1B41:66; -1B42:6F; -1B43:3F; -1B44:C8; -1B45:3F; -1B46:D0; -1B47:18; -1B48:E6; -1B49:C0; -1B4A:CD; -1B4B:C9; -1B4C:01; -1B4D:2A; -1B4E:A4; -1B4F:78; -1B50:CD; -1B51:F8; -1B52:1D; -1B53:32; -1B54:E1; -1B55:78; -1B56:77; -1B57:23; -1B58:77; -1B59:23; -1B5A:22; -1B5B:F9; -1B5C:78; -1B5D:2A; -1B5E:A4; -1B5F:78; -1B60:2B; -1B61:22; -1B62:DF; -1B63:78; -1B64:06; -1B65:1A; -1B66:21; -1B67:01; -1B68:79; -1B69:36; -1B6A:04; -1B6B:23; -1B6C:10; -1B6D:FB; -1B6E:AF; -1B6F:32; -1B70:F2; -1B71:78; -1B72:6F; -1B73:67; -1B74:22; -1B75:F0; -1B76:78; -1B77:22; -1B78:F7; -1B79:78; -1B7A:2A; -1B7B:B1; -1B7C:78; -1B7D:22; -1B7E:D6; -1B7F:78; -1B80:CD; -1B81:91; -1B82:1D; -1B83:2A; -1B84:F9; -1B85:78; -1B86:22; -1B87:FB; -1B88:78; -1B89:22; -1B8A:FD; -1B8B:78; -1B8C:CD; -1B8D:BB; -1B8E:79; -1B8F:C1; -1B90:2A; -1B91:A0; -1B92:78; -1B93:2B; -1B94:2B; -1B95:22; -1B96:E8; -1B97:78; -1B98:23; -1B99:23; -1B9A:F9; -1B9B:21; -1B9C:B5; -1B9D:78; -1B9E:22; -1B9F:B3; -1BA0:78; -1BA1:CD; -1BA2:8B; -1BA3:03; -1BA4:CD; -1BA5:69; -1BA6:21; -1BA7:AF; -1BA8:67; -1BA9:6F; -1BAA:32; -1BAB:DC; -1BAC:78; -1BAD:E5; -1BAE:C5; -1BAF:2A; -1BB0:DF; -1BB1:78; -1BB2:C9; -1BB3:3E; -1BB4:3F; -1BB5:CD; -1BB6:2A; -1BB7:03; -1BB8:3E; -1BB9:20; -1BBA:CD; -1BBB:2A; -1BBC:03; -1BBD:C3; -1BBE:3A; -1BBF:05; -1BC0:AF; -1BC1:32; -1BC2:B0; -1BC3:78; -1BC4:4F; -1BC5:EB; -1BC6:2A; -1BC7:A7; -1BC8:78; -1BC9:2B; -1BCA:2B; -1BCB:EB; -1BCC:7E; -1BCD:FE; -1BCE:20; -1BCF:CA; -1BD0:5B; -1BD1:1C; -1BD2:47; -1BD3:FE; -1BD4:22; -1BD5:CA; -1BD6:77; -1BD7:1C; -1BD8:B7; -1BD9:CA; -1BDA:7D; -1BDB:1C; -1BDC:3A; -1BDD:B0; -1BDE:78; -1BDF:B7; -1BE0:7E; -1BE1:C2; -1BE2:5B; -1BE3:1C; -1BE4:FE; -1BE5:3F; -1BE6:3E; -1BE7:B2; -1BE8:CA; -1BE9:5B; -1BEA:1C; -1BEB:7E; -1BEC:FE; -1BED:30; -1BEE:38; -1BEF:05; -1BF0:FE; -1BF1:3C; -1BF2:DA; -1BF3:5B; -1BF4:1C; -1BF5:D5; -1BF6:11; -1BF7:4F; -1BF8:16; -1BF9:C5; -1BFA:01; -1BFB:3D; -1BFC:1C; -1BFD:C5; -1BFE:06; -1BFF:7F; -1C00:7E; -1C01:FE; -1C02:61; -1C03:38; -1C04:07; -1C05:FE; -1C06:7B; -1C07:30; -1C08:03; -1C09:E6; -1C0A:5F; -1C0B:77; -1C0C:4E; -1C0D:EB; -1C0E:23; -1C0F:B6; -1C10:F2; -1C11:0E; -1C12:1C; -1C13:04; -1C14:7E; -1C15:E6; -1C16:7F; -1C17:C8; -1C18:B9; -1C19:20; -1C1A:F3; -1C1B:EB; -1C1C:E5; -1C1D:13; -1C1E:1A; -1C1F:B7; -1C20:FA; -1C21:39; -1C22:1C; -1C23:4F; -1C24:78; -1C25:FE; -1C26:8D; -1C27:20; -1C28:02; -1C29:D7; -1C2A:2B; -1C2B:23; -1C2C:7E; -1C2D:FE; -1C2E:61; -1C2F:38; -1C30:02; -1C31:E6; -1C32:5F; -1C33:B9; -1C34:28; -1C35:E7; -1C36:E1; -1C37:18; -1C38:D3; -1C39:48; -1C3A:F1; -1C3B:EB; -1C3C:C9; -1C3D:EB; -1C3E:79; -1C3F:C1; -1C40:D1; -1C41:EB; -1C42:FE; -1C43:95; -1C44:36; -1C45:3A; -1C46:20; -1C47:02; -1C48:0C; -1C49:23; -1C4A:FE; -1C4B:FB; -1C4C:20; -1C4D:0C; -1C4E:36; -1C4F:3A; -1C50:23; -1C51:06; -1C52:93; -1C53:70; -1C54:23; -1C55:EB; -1C56:0C; -1C57:0C; -1C58:18; -1C59:1D; -1C5A:EB; -1C5B:23; -1C5C:12; -1C5D:13; -1C5E:0C; -1C5F:D6; -1C60:3A; -1C61:28; -1C62:04; -1C63:FE; -1C64:4E; -1C65:20; -1C66:03; -1C67:32; -1C68:B0; -1C69:78; -1C6A:D6; -1C6B:59; -1C6C:C2; -1C6D:CC; -1C6E:1B; -1C6F:47; -1C70:7E; -1C71:B7; -1C72:28; -1C73:09; -1C74:B8; -1C75:28; -1C76:E4; -1C77:23; -1C78:12; -1C79:0C; -1C7A:13; -1C7B:18; -1C7C:F3; -1C7D:21; -1C7E:05; -1C7F:00; -1C80:44; -1C81:09; -1C82:44; -1C83:4D; -1C84:2A; -1C85:A7; -1C86:78; -1C87:2B; -1C88:2B; -1C89:2B; -1C8A:12; -1C8B:13; -1C8C:12; -1C8D:13; -1C8E:12; -1C8F:C9; -1C90:7C; -1C91:92; -1C92:C0; -1C93:7D; -1C94:93; -1C95:C9; -1C96:7E; -1C97:E3; -1C98:BE; -1C99:23; -1C9A:E3; -1C9B:CA; -1C9C:78; -1C9D:1D; -1C9E:C3; -1C9F:97; -1CA0:19; -1CA1:3E; -1CA2:64; -1CA3:32; -1CA4:DC; -1CA5:78; -1CA6:CD; -1CA7:21; -1CA8:1F; -1CA9:E3; -1CAA:CD; -1CAB:36; -1CAC:19; -1CAD:D1; -1CAE:20; -1CAF:05; -1CB0:09; -1CB1:F9; -1CB2:22; -1CB3:E8; -1CB4:78; -1CB5:EB; -1CB6:0E; -1CB7:08; -1CB8:CD; -1CB9:63; -1CBA:19; -1CBB:E5; -1CBC:CD; -1CBD:05; -1CBE:1F; -1CBF:E3; -1CC0:E5; -1CC1:2A; -1CC2:A2; -1CC3:78; -1CC4:E3; -1CC5:CF; -1CC6:BD; -1CC7:E7; -1CC8:CA; -1CC9:F6; -1CCA:0A; -1CCB:D2; -1CCC:F6; -1CCD:0A; -1CCE:F5; -1CCF:CD; -1CD0:37; -1CD1:23; -1CD2:F1; -1CD3:E5; -1CD4:F2; -1CD5:EC; -1CD6:1C; -1CD7:CD; -1CD8:7F; -1CD9:0A; -1CDA:E3; -1CDB:11; -1CDC:01; -1CDD:00; -1CDE:7E; -1CDF:FE; -1CE0:CC; -1CE1:CC; -1CE2:01; -1CE3:2B; -1CE4:D5; -1CE5:E5; -1CE6:EB; -1CE7:CD; -1CE8:9E; -1CE9:09; -1CEA:18; -1CEB:22; -1CEC:CD; -1CED:B1; -1CEE:0A; -1CEF:CD; -1CF0:BF; -1CF1:09; -1CF2:E1; -1CF3:C5; -1CF4:D5; -1CF5:01; -1CF6:00; -1CF7:81; -1CF8:51; -1CF9:5A; -1CFA:7E; -1CFB:FE; -1CFC:CC; -1CFD:3E; -1CFE:01; -1CFF:20; -1D00:0E; -1D01:CD; -1D02:38; -1D03:23; -1D04:E5; -1D05:CD; -1D06:B1; -1D07:0A; -1D08:CD; -1D09:BF; -1D0A:09; -1D0B:CD; -1D0C:55; -1D0D:09; -1D0E:E1; -1D0F:C5; -1D10:D5; -1D11:4F; -1D12:E7; -1D13:47; -1D14:C5; -1D15:E5; -1D16:2A; -1D17:DF; -1D18:78; -1D19:E3; -1D1A:06; -1D1B:81; -1D1C:C5; -1D1D:33; -1D1E:CD; -1D1F:58; -1D20:03; -1D21:B7; -1D22:C4; -1D23:A0; -1D24:1D; -1D25:22; -1D26:E6; -1D27:78; -1D28:ED; -1D29:73; -1D2A:E8; -1D2B:78; -1D2C:7E; -1D2D:FE; -1D2E:3A; -1D2F:28; -1D30:29; -1D31:B7; -1D32:C2; -1D33:97; -1D34:19; -1D35:23; -1D36:7E; -1D37:23; -1D38:B6; -1D39:CA; -1D3A:7E; -1D3B:19; -1D3C:23; -1D3D:5E; -1D3E:23; -1D3F:56; -1D40:EB; -1D41:22; -1D42:A2; -1D43:78; -1D44:3A; -1D45:1B; -1D46:79; -1D47:B7; -1D48:28; -1D49:0F; -1D4A:D5; -1D4B:3E; -1D4C:3C; -1D4D:CD; -1D4E:2A; -1D4F:03; -1D50:CD; -1D51:AF; -1D52:0F; -1D53:3E; -1D54:3E; -1D55:CD; -1D56:2A; -1D57:03; -1D58:D1; -1D59:EB; -1D5A:D7; -1D5B:11; -1D5C:1E; -1D5D:1D; -1D5E:D5; -1D5F:C8; -1D60:D6; -1D61:80; -1D62:DA; -1D63:21; -1D64:1F; -1D65:FE; -1D66:3C; -1D67:D2; -1D68:E7; -1D69:2A; -1D6A:07; -1D6B:4F; -1D6C:06; -1D6D:00; -1D6E:EB; -1D6F:21; -1D70:22; -1D71:18; -1D72:09; -1D73:4E; -1D74:23; -1D75:46; -1D76:C5; -1D77:EB; -1D78:23; -1D79:7E; -1D7A:FE; -1D7B:3A; -1D7C:D0; -1D7D:FE; -1D7E:20; -1D7F:CA; -1D80:78; -1D81:1D; -1D82:FE; -1D83:0B; -1D84:30; -1D85:05; -1D86:FE; -1D87:09; -1D88:D2; -1D89:78; -1D8A:1D; -1D8B:FE; -1D8C:30; -1D8D:3F; -1D8E:3C; -1D8F:3D; -1D90:C9; -1D91:EB; -1D92:2A; -1D93:A4; -1D94:78; -1D95:2B; -1D96:22; -1D97:FF; -1D98:78; -1D99:EB; -1D9A:C9; -1D9B:CD; -1D9C:58; -1D9D:03; -1D9E:B7; -1D9F:C8; -1DA0:00; -1DA1:00; -1DA2:00; -1DA3:00; -1DA4:00; -1DA5:32; -1DA6:99; -1DA7:78; -1DA8:3D; -1DA9:C0; -1DAA:3C; -1DAB:C3; -1DAC:B4; -1DAD:1D; -1DAE:C0; -1DAF:F5; -1DB0:CC; -1DB1:BB; -1DB2:79; -1DB3:F1; -1DB4:22; -1DB5:E6; -1DB6:78; -1DB7:21; -1DB8:B5; -1DB9:78; -1DBA:22; -1DBB:B3; -1DBC:78; -1DBD:21; -1DBE:F6; -1DBF:FF; -1DC0:C1; -1DC1:2A; -1DC2:A2; -1DC3:78; -1DC4:E5; -1DC5:F5; -1DC6:7D; -1DC7:A4; -1DC8:3C; -1DC9:28; -1DCA:09; -1DCB:22; -1DCC:F5; -1DCD:78; -1DCE:2A; -1DCF:E6; -1DD0:78; -1DD1:22; -1DD2:F7; -1DD3:78; -1DD4:CD; -1DD5:8B; -1DD6:03; -1DD7:CD; -1DD8:F9; -1DD9:20; -1DDA:F1; -1DDB:21; -1DDC:30; -1DDD:19; -1DDE:C2; -1DDF:06; -1DE0:1A; -1DE1:C3; -1DE2:18; -1DE3:1A; -1DE4:2A; -1DE5:F7; -1DE6:78; -1DE7:7C; -1DE8:B5; -1DE9:1E; -1DEA:20; -1DEB:CA; -1DEC:A2; -1DED:19; -1DEE:EB; -1DEF:2A; -1DF0:F5; -1DF1:78; -1DF2:22; -1DF3:A2; -1DF4:78; -1DF5:EB; -1DF6:C9; -1DF7:3E; -1DF8:AF; -1DF9:32; -1DFA:1B; -1DFB:79; -1DFC:C9; -1DFD:F1; -1DFE:E1; -1DFF:C9; -1E00:1E; -1E01:03; -1E02:01; -1E03:1E; -1E04:02; -1E05:01; -1E06:1E; -1E07:04; -1E08:01; -1E09:1E; -1E0A:08; -1E0B:CD; -1E0C:3D; -1E0D:1E; -1E0E:01; -1E0F:97; -1E10:19; -1E11:C5; -1E12:D8; -1E13:D6; -1E14:41; -1E15:4F; -1E16:47; -1E17:D7; -1E18:FE; -1E19:CE; -1E1A:20; -1E1B:09; -1E1C:D7; -1E1D:CD; -1E1E:3D; -1E1F:1E; -1E20:D8; -1E21:D6; -1E22:41; -1E23:47; -1E24:D7; -1E25:78; -1E26:91; -1E27:D8; -1E28:3C; -1E29:E3; -1E2A:21; -1E2B:01; -1E2C:79; -1E2D:06; -1E2E:00; -1E2F:09; -1E30:73; -1E31:23; -1E32:3D; -1E33:20; -1E34:FB; -1E35:E1; -1E36:7E; -1E37:FE; -1E38:2C; -1E39:C0; -1E3A:D7; -1E3B:18; -1E3C:CE; -1E3D:7E; -1E3E:FE; -1E3F:41; -1E40:D8; -1E41:FE; -1E42:5B; -1E43:3F; -1E44:C9; -1E45:D7; -1E46:CD; -1E47:02; -1E48:2B; -1E49:F0; -1E4A:1E; -1E4B:08; -1E4C:C3; -1E4D:A2; -1E4E:19; -1E4F:7E; -1E50:FE; -1E51:2E; -1E52:EB; -1E53:2A; -1E54:EC; -1E55:78; -1E56:EB; -1E57:CA; -1E58:78; -1E59:1D; -1E5A:2B; -1E5B:11; -1E5C:00; -1E5D:00; -1E5E:D7; -1E5F:D0; -1E60:E5; -1E61:F5; -1E62:21; -1E63:98; -1E64:19; -1E65:DF; -1E66:DA; -1E67:97; -1E68:19; -1E69:62; -1E6A:6B; -1E6B:19; -1E6C:29; -1E6D:19; -1E6E:29; -1E6F:F1; -1E70:D6; -1E71:30; -1E72:5F; -1E73:16; -1E74:00; -1E75:19; -1E76:EB; -1E77:E1; -1E78:18; -1E79:E4; -1E7A:CA; -1E7B:61; -1E7C:1B; -1E7D:CD; -1E7E:46; -1E7F:1E; -1E80:2B; -1E81:D7; -1E82:C0; -1E83:E5; -1E84:2A; -1E85:B1; -1E86:78; -1E87:7D; -1E88:93; -1E89:5F; -1E8A:7C; -1E8B:9A; -1E8C:57; -1E8D:DA; -1E8E:7A; -1E8F:19; -1E90:2A; -1E91:F9; -1E92:78; -1E93:01; -1E94:28; -1E95:00; -1E96:09; -1E97:DF; -1E98:D2; -1E99:7A; -1E9A:19; -1E9B:EB; -1E9C:22; -1E9D:A0; -1E9E:78; -1E9F:E1; -1EA0:C3; -1EA1:61; -1EA2:1B; -1EA3:CA; -1EA4:5D; -1EA5:1B; -1EA6:CD; -1EA7:C7; -1EA8:79; -1EA9:CD; -1EAA:61; -1EAB:1B; -1EAC:01; -1EAD:1E; -1EAE:1D; -1EAF:18; -1EB0:10; -1EB1:0E; -1EB2:03; -1EB3:CD; -1EB4:63; -1EB5:19; -1EB6:C1; -1EB7:E5; -1EB8:E5; -1EB9:2A; -1EBA:A2; -1EBB:78; -1EBC:E3; -1EBD:3E; -1EBE:91; -1EBF:F5; -1EC0:33; -1EC1:C5; -1EC2:CD; -1EC3:5A; -1EC4:1E; -1EC5:CD; -1EC6:07; -1EC7:1F; -1EC8:E5; -1EC9:2A; -1ECA:A2; -1ECB:78; -1ECC:DF; -1ECD:E1; -1ECE:23; -1ECF:DC; -1ED0:2F; -1ED1:1B; -1ED2:D4; -1ED3:2C; -1ED4:1B; -1ED5:60; -1ED6:69; -1ED7:2B; -1ED8:D8; -1ED9:1E; -1EDA:0E; -1EDB:C3; -1EDC:A2; -1EDD:19; -1EDE:C0; -1EDF:16; -1EE0:FF; -1EE1:CD; -1EE2:36; -1EE3:19; -1EE4:F9; -1EE5:22; -1EE6:E8; -1EE7:78; -1EE8:FE; -1EE9:91; -1EEA:1E; -1EEB:04; -1EEC:C2; -1EED:A2; -1EEE:19; -1EEF:E1; -1EF0:22; -1EF1:A2; -1EF2:78; -1EF3:23; -1EF4:7C; -1EF5:B5; -1EF6:20; -1EF7:07; -1EF8:3A; -1EF9:DD; -1EFA:78; -1EFB:B7; -1EFC:C2; -1EFD:18; -1EFE:1A; -1EFF:21; -1F00:1E; -1F01:1D; -1F02:E3; -1F03:3E; -1F04:E1; -1F05:01; -1F06:3A; -1F07:0E; -1F08:00; -1F09:06; -1F0A:00; -1F0B:79; -1F0C:48; -1F0D:47; -1F0E:7E; -1F0F:B7; -1F10:C8; -1F11:B8; -1F12:C8; -1F13:23; -1F14:FE; -1F15:22; -1F16:28; -1F17:F3; -1F18:D6; -1F19:8F; -1F1A:20; -1F1B:F2; -1F1C:B8; -1F1D:8A; -1F1E:57; -1F1F:18; -1F20:ED; -1F21:CD; -1F22:0D; -1F23:26; -1F24:CF; -1F25:D5; -1F26:EB; -1F27:22; -1F28:DF; -1F29:78; -1F2A:EB; -1F2B:D5; -1F2C:E7; -1F2D:F5; -1F2E:CD; -1F2F:37; -1F30:23; -1F31:F1; -1F32:E3; -1F33:C6; -1F34:03; -1F35:CD; -1F36:19; -1F37:28; -1F38:CD; -1F39:03; -1F3A:0A; -1F3B:E5; -1F3C:20; -1F3D:28; -1F3E:2A; -1F3F:21; -1F40:79; -1F41:E5; -1F42:23; -1F43:5E; -1F44:23; -1F45:56; -1F46:2A; -1F47:A4; -1F48:78; -1F49:DF; -1F4A:30; -1F4B:0E; -1F4C:2A; -1F4D:A0; -1F4E:78; -1F4F:DF; -1F50:D1; -1F51:30; -1F52:0F; -1F53:2A; -1F54:F9; -1F55:78; -1F56:DF; -1F57:30; -1F58:09; -1F59:3E; -1F5A:D1; -1F5B:CD; -1F5C:F5; -1F5D:29; -1F5E:EB; -1F5F:CD; -1F60:43; -1F61:28; -1F62:CD; -1F63:F5; -1F64:29; -1F65:E3; -1F66:CD; -1F67:D3; -1F68:09; -1F69:D1; -1F6A:E1; -1F6B:C9; -1F6C:FE; -1F6D:9E; -1F6E:20; -1F6F:25; -1F70:D7; -1F71:CF; -1F72:8D; -1F73:CD; -1F74:5A; -1F75:1E; -1F76:7A; -1F77:B3; -1F78:28; -1F79:09; -1F7A:CD; -1F7B:2A; -1F7C:1B; -1F7D:50; -1F7E:59; -1F7F:E1; -1F80:D2; -1F81:D9; -1F82:1E; -1F83:EB; -1F84:22; -1F85:F0; -1F86:78; -1F87:EB; -1F88:D8; -1F89:3A; -1F8A:F2; -1F8B:78; -1F8C:B7; -1F8D:C8; -1F8E:3A; -1F8F:9A; -1F90:78; -1F91:5F; -1F92:C3; -1F93:AB; -1F94:19; -1F95:CD; -1F96:1C; -1F97:2B; -1F98:7E; -1F99:47; -1F9A:FE; -1F9B:91; -1F9C:28; -1F9D:03; -1F9E:CF; -1F9F:8D; -1FA0:2B; -1FA1:4B; -1FA2:0D; -1FA3:78; -1FA4:CA; -1FA5:60; -1FA6:1D; -1FA7:CD; -1FA8:5B; -1FA9:1E; -1FAA:FE; -1FAB:2C; -1FAC:C0; -1FAD:18; -1FAE:F3; -1FAF:11; -1FB0:F2; -1FB1:78; -1FB2:1A; -1FB3:B7; -1FB4:CA; -1FB5:A0; -1FB6:19; -1FB7:3C; -1FB8:32; -1FB9:9A; -1FBA:78; -1FBB:12; -1FBC:7E; -1FBD:FE; -1FBE:87; -1FBF:28; -1FC0:0C; -1FC1:CD; -1FC2:5A; -1FC3:1E; -1FC4:C0; -1FC5:7A; -1FC6:B3; -1FC7:C2; -1FC8:C5; -1FC9:1E; -1FCA:3C; -1FCB:18; -1FCC:02; -1FCD:D7; -1FCE:C0; -1FCF:2A; -1FD0:EE; -1FD1:78; -1FD2:EB; -1FD3:2A; -1FD4:EA; -1FD5:78; -1FD6:22; -1FD7:A2; -1FD8:78; -1FD9:EB; -1FDA:C0; -1FDB:7E; -1FDC:B7; -1FDD:20; -1FDE:04; -1FDF:23; -1FE0:23; -1FE1:23; -1FE2:23; -1FE3:23; -1FE4:7A; -1FE5:A3; -1FE6:3C; -1FE7:C2; -1FE8:05; -1FE9:1F; -1FEA:3A; -1FEB:DD; -1FEC:78; -1FED:3D; -1FEE:CA; -1FEF:BE; -1FF0:1D; -1FF1:C3; -1FF2:05; -1FF3:1F; -1FF4:CD; -1FF5:1C; -1FF6:2B; -1FF7:C0; -1FF8:B7; -1FF9:CA; -1FFA:4A; -1FFB:1E; -1FFC:3D; -1FFD:87; -1FFE:5F; -1FFF:FE; -2000:2D; -2001:38; -2002:02; -2003:1E; -2004:26; -2005:C3; -2006:A2; -2007:19; -2008:11; -2009:0A; -200A:00; -200B:D5; -200C:28; -200D:17; -200E:CD; -200F:4F; -2010:1E; -2011:EB; -2012:E3; -2013:28; -2014:11; -2015:EB; -2016:CF; -2017:2C; -2018:EB; -2019:2A; -201A:E4; -201B:78; -201C:EB; -201D:28; -201E:06; -201F:CD; -2020:5A; -2021:1E; -2022:C2; -2023:97; -2024:19; -2025:EB; -2026:7C; -2027:B5; -2028:CA; -2029:4A; -202A:1E; -202B:22; -202C:E4; -202D:78; -202E:32; -202F:E1; -2030:78; -2031:E1; -2032:22; -2033:E2; -2034:78; -2035:C1; -2036:C3; -2037:33; -2038:1A; -2039:CD; -203A:37; -203B:23; -203C:7E; -203D:FE; -203E:2C; -203F:CC; -2040:78; -2041:1D; -2042:FE; -2043:CA; -2044:CC; -2045:78; -2046:1D; -2047:2B; -2048:E5; -2049:CD; -204A:94; -204B:09; -204C:E1; -204D:28; -204E:07; -204F:D7; -2050:DA; -2051:C2; -2052:1E; -2053:C3; -2054:5F; -2055:1D; -2056:16; -2057:01; -2058:CD; -2059:05; -205A:1F; -205B:B7; -205C:C8; -205D:D7; -205E:FE; -205F:95; -2060:20; -2061:F6; -2062:15; -2063:20; -2064:F3; -2065:18; -2066:E8; -2067:3E; -2068:01; -2069:32; -206A:9C; -206B:78; -206C:C3; -206D:9B; -206E:20; -206F:CD; -2070:CA; -2071:79; -2072:FE; -2073:40; -2074:20; -2075:19; -2076:CD; -2077:01; -2078:2B; -2079:FE; -207A:02; -207B:D2; -207C:4A; -207D:1E; -207E:E5; -207F:21; -2080:00; -2081:70; -2082:19; -2083:22; -2084:20; -2085:78; -2086:7B; -2087:E6; -2088:1F; -2089:32; -208A:A6; -208B:78; -208C:E1; -208D:CF; -208E:2C; -208F:FE; -2090:23; -2091:20; -2092:08; -2093:CD; -2094:58; -2095:3B; -2096:3E; -2097:80; -2098:32; -2099:9C; -209A:78; -209B:2B; -209C:D7; -209D:CC; -209E:FE; -209F:20; -20A0:CA; -20A1:69; -20A2:21; -20A3:FE; -20A4:BF; -20A5:CA; -20A6:BD; -20A7:2C; -20A8:FE; -20A9:BC; -20AA:CA; -20AB:37; -20AC:21; -20AD:E5; -20AE:FE; -20AF:2C; -20B0:CA; -20B1:08; -20B2:21; -20B3:FE; -20B4:3B; -20B5:CA; -20B6:0C; -20B7:3B; -20B8:C1; -20B9:CD; -20BA:37; -20BB:23; -20BC:E5; -20BD:E7; -20BE:28; -20BF:32; -20C0:CD; -20C1:BD; -20C2:0F; -20C3:CD; -20C4:65; -20C5:28; -20C6:CD; -20C7:CD; -20C8:79; -20C9:2A; -20CA:21; -20CB:79; -20CC:3A; -20CD:9C; -20CE:78; -20CF:B7; -20D0:FA; -20D1:E9; -20D2:20; -20D3:28; -20D4:08; -20D5:3A; -20D6:9B; -20D7:78; -20D8:86; -20D9:FE; -20DA:84; -20DB:18; -20DC:09; -20DD:3A; -20DE:9D; -20DF:78; -20E0:47; -20E1:3A; -20E2:A6; -20E3:78; -20E4:86; -20E5:B8; -20E6:D4; -20E7:FE; -20E8:20; -20E9:CD; -20EA:AA; -20EB:28; -20EC:3E; -20ED:20; -20EE:CD; -20EF:2A; -20F0:03; -20F1:B7; -20F2:CC; -20F3:AA; -20F4:28; -20F5:E1; -20F6:C3; -20F7:9B; -20F8:20; -20F9:CD; -20FA:1C; -20FB:3B; -20FC:B7; -20FD:C8; -20FE:3E; -20FF:0D; -2100:CD; -2101:2A; -2102:03; -2103:CD; -2104:D0; -2105:79; -2106:AF; -2107:C9; -2108:CD; -2109:D3; -210A:79; -210B:3A; -210C:9C; -210D:78; -210E:B7; -210F:F2; -2110:19; -2111:21; -2112:3E; -2113:2C; -2114:CD; -2115:2A; -2116:03; -2117:18; -2118:4B; -2119:28; -211A:08; -211B:3A; -211C:9B; -211D:78; -211E:FE; -211F:70; -2120:C3; -2121:2B; -2122:21; -2123:3A; -2124:9E; -2125:78; -2126:47; -2127:3A; -2128:AE; -2129:7A; -212A:B8; -212B:D4; -212C:FE; -212D:20; -212E:30; -212F:34; -2130:D6; -2131:10; -2132:30; -2133:FC; -2134:2F; -2135:18; -2136:23; -2137:CD; -2138:1B; -2139:2B; -213A:E6; -213B:3F; -213C:5F; -213D:CF; -213E:29; -213F:2B; -2140:E5; -2141:CD; -2142:D3; -2143:79; -2144:3A; -2145:9C; -2146:78; -2147:B7; -2148:FA; -2149:4A; -214A:1E; -214B:CA; -214C:53; -214D:21; -214E:3A; -214F:9B; -2150:78; -2151:18; -2152:03; -2153:3A; -2154:A6; -2155:78; -2156:2F; -2157:83; -2158:30; -2159:0A; -215A:3C; -215B:47; -215C:3E; -215D:20; -215E:CD; -215F:2A; -2160:03; -2161:05; -2162:20; -2163:FA; -2164:E1; -2165:D7; -2166:C3; -2167:A0; -2168:20; -2169:3A; -216A:9C; -216B:78; -216C:00; -216D:00; -216E:00; -216F:00; -2170:AF; -2171:32; -2172:9C; -2173:78; -2174:CD; -2175:BE; -2176:79; -2177:C9; -2178:3F; -2179:52; -217A:45; -217B:44; -217C:4F; -217D:0D; -217E:00; -217F:3A; -2180:DE; -2181:78; -2182:B7; -2183:C2; -2184:91; -2185:19; -2186:3A; -2187:A9; -2188:78; -2189:B7; -218A:1E; -218B:2A; -218C:CA; -218D:A2; -218E:19; -218F:C1; -2190:21; -2191:78; -2192:21; -2193:CD; -2194:A7; -2195:28; -2196:2A; -2197:E6; -2198:78; -2199:C9; -219A:CD; -219B:28; -219C:28; -219D:7E; -219E:CD; -219F:D6; -21A0:79; -21A1:D6; -21A2:23; -21A3:32; -21A4:A9; -21A5:78; -21A6:7E; -21A7:20; -21A8:20; -21A9:CD; -21AA:68; -21AB:3B; -21AC:E5; -21AD:06; -21AE:FA; -21AF:2A; -21B0:A7; -21B1:78; -21B2:CD; -21B3:88; -21B4:3B; -21B5:77; -21B6:23; -21B7:FE; -21B8:0D; -21B9:28; -21BA:02; -21BB:10; -21BC:F5; -21BD:2B; -21BE:36; -21BF:00; -21C0:00; -21C1:00; -21C2:00; -21C3:2A; -21C4:A7; -21C5:78; -21C6:2B; -21C7:18; -21C8:22; -21C9:01; -21CA:DB; -21CB:21; -21CC:C5; -21CD:FE; -21CE:22; -21CF:C0; -21D0:CD; -21D1:66; -21D2:28; -21D3:CF; -21D4:3B; -21D5:E5; -21D6:CD; -21D7:AA; -21D8:28; -21D9:E1; -21DA:C9; -21DB:E5; -21DC:CD; -21DD:B3; -21DE:1B; -21DF:C1; -21E0:DA; -21E1:BE; -21E2:1D; -21E3:23; -21E4:7E; -21E5:B7; -21E6:2B; -21E7:C5; -21E8:CA; -21E9:04; -21EA:1F; -21EB:36; -21EC:2C; -21ED:18; -21EE:05; -21EF:E5; -21F0:2A; -21F1:FF; -21F2:78; -21F3:F6; -21F4:AF; -21F5:32; -21F6:DE; -21F7:78; -21F8:E3; -21F9:18; -21FA:02; -21FB:CF; -21FC:2C; -21FD:CD; -21FE:0D; -21FF:26; -2200:E3; -2201:D5; -2202:7E; -2203:FE; -2204:2C; -2205:28; -2206:26; -2207:3A; -2208:DE; -2209:78; -220A:B7; -220B:C2; -220C:96; -220D:22; -220E:3A; -220F:A9; -2210:78; -2211:B7; -2212:1E; -2213:06; -2214:CA; -2215:A2; -2216:19; -2217:3E; -2218:3F; -2219:CD; -221A:2A; -221B:03; -221C:CD; -221D:B3; -221E:1B; -221F:D1; -2220:C1; -2221:DA; -2222:BE; -2223:1D; -2224:23; -2225:7E; -2226:B7; -2227:2B; -2228:C5; -2229:CA; -222A:04; -222B:1F; -222C:D5; -222D:CD; -222E:DC; -222F:79; -2230:E7; -2231:F5; -2232:20; -2233:19; -2234:D7; -2235:57; -2236:47; -2237:FE; -2238:22; -2239:28; -223A:05; -223B:16; -223C:3A; -223D:06; -223E:2C; -223F:2B; -2240:CD; -2241:69; -2242:28; -2243:F1; -2244:EB; -2245:21; -2246:5A; -2247:22; -2248:E3; -2249:D5; -224A:C3; -224B:33; -224C:1F; -224D:D7; -224E:F1; -224F:F5; -2250:01; -2251:43; -2252:22; -2253:C5; -2254:DA; -2255:6C; -2256:0E; -2257:D2; -2258:65; -2259:0E; -225A:2B; -225B:D7; -225C:28; -225D:05; -225E:FE; -225F:2C; -2260:C2; -2261:7F; -2262:21; -2263:E3; -2264:2B; -2265:D7; -2266:C2; -2267:FB; -2268:21; -2269:D1; -226A:00; -226B:00; -226C:00; -226D:00; -226E:00; -226F:3A; -2270:DE; -2271:78; -2272:B7; -2273:EB; -2274:C2; -2275:96; -2276:1D; -2277:D5; -2278:CD; -2279:DF; -227A:79; -227B:B6; -227C:21; -227D:86; -227E:22; -227F:C4; -2280:A7; -2281:28; -2282:E1; -2283:C3; -2284:69; -2285:21; -2286:3F; -2287:45; -2288:58; -2289:54; -228A:52; -228B:41; -228C:20; -228D:49; -228E:47; -228F:4E; -2290:4F; -2291:52; -2292:45; -2293:44; -2294:0D; -2295:00; -2296:CD; -2297:05; -2298:1F; -2299:B7; -229A:20; -229B:12; -229C:23; -229D:7E; -229E:23; -229F:B6; -22A0:1E; -22A1:06; -22A2:CA; -22A3:A2; -22A4:19; -22A5:23; -22A6:5E; -22A7:23; -22A8:56; -22A9:EB; -22AA:22; -22AB:DA; -22AC:78; -22AD:EB; -22AE:D7; -22AF:FE; -22B0:88; -22B1:20; -22B2:E3; -22B3:C3; -22B4:2D; -22B5:22; -22B6:11; -22B7:00; -22B8:00; -22B9:C4; -22BA:0D; -22BB:26; -22BC:22; -22BD:DF; -22BE:78; -22BF:CD; -22C0:36; -22C1:19; -22C2:C2; -22C3:9D; -22C4:19; -22C5:F9; -22C6:22; -22C7:E8; -22C8:78; -22C9:D5; -22CA:7E; -22CB:23; -22CC:F5; -22CD:D5; -22CE:7E; -22CF:23; -22D0:B7; -22D1:FA; -22D2:EA; -22D3:22; -22D4:CD; -22D5:B1; -22D6:09; -22D7:E3; -22D8:E5; -22D9:CD; -22DA:0B; -22DB:07; -22DC:E1; -22DD:CD; -22DE:CB; -22DF:09; -22E0:E1; -22E1:CD; -22E2:C2; -22E3:09; -22E4:E5; -22E5:CD; -22E6:0C; -22E7:0A; -22E8:18; -22E9:29; -22EA:23; -22EB:23; -22EC:23; -22ED:23; -22EE:4E; -22EF:23; -22F0:46; -22F1:23; -22F2:E3; -22F3:5E; -22F4:23; -22F5:56; -22F6:E5; -22F7:69; -22F8:60; -22F9:CD; -22FA:D2; -22FB:0B; -22FC:3A; -22FD:AF; -22FE:78; -22FF:FE; -2300:04; -2301:CA; -2302:B2; -2303:07; -2304:EB; -2305:E1; -2306:72; -2307:2B; -2308:73; -2309:E1; -230A:D5; -230B:5E; -230C:23; -230D:56; -230E:23; -230F:E3; -2310:CD; -2311:39; -2312:0A; -2313:E1; -2314:C1; -2315:90; -2316:CD; -2317:C2; -2318:09; -2319:28; -231A:09; -231B:EB; -231C:22; -231D:A2; -231E:78; -231F:69; -2320:60; -2321:C3; -2322:1A; -2323:1D; -2324:F9; -2325:22; -2326:E8; -2327:78; -2328:2A; -2329:DF; -232A:78; -232B:7E; -232C:FE; -232D:2C; -232E:C2; -232F:1E; -2330:1D; -2331:D7; -2332:CD; -2333:B9; -2334:22; -2335:CF; -2336:28; -2337:2B; -2338:16; -2339:00; -233A:D5; -233B:0E; -233C:01; -233D:CD; -233E:63; -233F:19; -2340:CD; -2341:9F; -2342:24; -2343:22; -2344:F3; -2345:78; -2346:2A; -2347:F3; -2348:78; -2349:C1; -234A:7E; -234B:16; -234C:00; -234D:D6; -234E:D4; -234F:38; -2350:13; -2351:FE; -2352:03; -2353:30; -2354:0F; -2355:FE; -2356:01; -2357:17; -2358:AA; -2359:BA; -235A:57; -235B:DA; -235C:97; -235D:19; -235E:22; -235F:D8; -2360:78; -2361:D7; -2362:18; -2363:E9; -2364:7A; -2365:B7; -2366:C2; -2367:EC; -2368:23; -2369:7E; -236A:22; -236B:D8; -236C:78; -236D:D6; -236E:CD; -236F:D8; -2370:FE; -2371:07; -2372:D0; -2373:5F; -2374:3A; -2375:AF; -2376:78; -2377:D6; -2378:03; -2379:B3; -237A:CA; -237B:8F; -237C:29; -237D:21; -237E:9A; -237F:18; -2380:19; -2381:78; -2382:56; -2383:BA; -2384:D0; -2385:C5; -2386:01; -2387:46; -2388:23; -2389:C5; -238A:7A; -238B:FE; -238C:7F; -238D:CA; -238E:D4; -238F:23; -2390:FE; -2391:51; -2392:DA; -2393:E1; -2394:23; -2395:21; -2396:21; -2397:79; -2398:B7; -2399:3A; -239A:AF; -239B:78; -239C:3D; -239D:3D; -239E:3D; -239F:CA; -23A0:F6; -23A1:0A; -23A2:4E; -23A3:23; -23A4:46; -23A5:C5; -23A6:FA; -23A7:C5; -23A8:23; -23A9:23; -23AA:4E; -23AB:23; -23AC:46; -23AD:C5; -23AE:F5; -23AF:B7; -23B0:E2; -23B1:C4; -23B2:23; -23B3:F1; -23B4:23; -23B5:38; -23B6:03; -23B7:21; -23B8:1D; -23B9:79; -23BA:4E; -23BB:23; -23BC:46; -23BD:23; -23BE:C5; -23BF:4E; -23C0:23; -23C1:46; -23C2:C5; -23C3:06; -23C4:F1; -23C5:C6; -23C6:03; -23C7:4B; -23C8:47; -23C9:C5; -23CA:01; -23CB:06; -23CC:24; -23CD:C5; -23CE:2A; -23CF:D8; -23D0:78; -23D1:C3; -23D2:3A; -23D3:23; -23D4:CD; -23D5:B1; -23D6:0A; -23D7:CD; -23D8:A4; -23D9:09; -23DA:01; -23DB:F2; -23DC:13; -23DD:16; -23DE:7F; -23DF:18; -23E0:EC; -23E1:D5; -23E2:CD; -23E3:7F; -23E4:0A; -23E5:D1; -23E6:E5; -23E7:01; -23E8:E9; -23E9:25; -23EA:18; -23EB:E1; -23EC:78; -23ED:FE; -23EE:64; -23EF:D0; -23F0:C5; -23F1:D5; -23F2:11; -23F3:04; -23F4:64; -23F5:21; -23F6:B8; -23F7:25; -23F8:E5; -23F9:E7; -23FA:C2; -23FB:95; -23FC:23; -23FD:2A; -23FE:21; -23FF:79; -2400:E5; -2401:01; -2402:8C; -2403:25; -2404:18; -2405:C7; -2406:C1; -2407:79; -2408:32; -2409:B0; -240A:78; -240B:78; -240C:FE; -240D:08; -240E:28; -240F:28; -2410:3A; -2411:AF; -2412:78; -2413:FE; -2414:08; -2415:CA; -2416:60; -2417:24; -2418:57; -2419:78; -241A:FE; -241B:04; -241C:CA; -241D:72; -241E:24; -241F:7A; -2420:FE; -2421:03; -2422:CA; -2423:F6; -2424:0A; -2425:D2; -2426:7C; -2427:24; -2428:21; -2429:BF; -242A:18; -242B:06; -242C:00; -242D:09; -242E:09; -242F:4E; -2430:23; -2431:46; -2432:D1; -2433:2A; -2434:21; -2435:79; -2436:C5; -2437:C9; -2438:CD; -2439:DB; -243A:0A; -243B:CD; -243C:FC; -243D:09; -243E:E1; -243F:22; -2440:1F; -2441:79; -2442:E1; -2443:22; -2444:1D; -2445:79; -2446:C1; -2447:D1; -2448:CD; -2449:B4; -244A:09; -244B:CD; -244C:DB; -244D:0A; -244E:21; -244F:AB; -2450:18; -2451:3A; -2452:B0; -2453:78; -2454:07; -2455:C5; -2456:4F; -2457:06; -2458:00; -2459:09; -245A:C1; -245B:7E; -245C:23; -245D:66; -245E:6F; -245F:E9; -2460:C5; -2461:CD; -2462:FC; -2463:09; -2464:F1; -2465:32; -2466:AF; -2467:78; -2468:FE; -2469:04; -246A:28; -246B:DA; -246C:E1; -246D:22; -246E:21; -246F:79; -2470:18; -2471:D9; -2472:CD; -2473:B1; -2474:0A; -2475:C1; -2476:D1; -2477:21; -2478:B5; -2479:18; -247A:18; -247B:D5; -247C:E1; -247D:CD; -247E:A4; -247F:09; -2480:CD; -2481:CF; -2482:0A; -2483:CD; -2484:BF; -2485:09; -2486:E1; -2487:22; -2488:23; -2489:79; -248A:E1; -248B:22; -248C:21; -248D:79; -248E:18; -248F:E7; -2490:E5; -2491:EB; -2492:CD; -2493:CF; -2494:0A; -2495:E1; -2496:CD; -2497:A4; -2498:09; -2499:CD; -249A:CF; -249B:0A; -249C:C3; -249D:A0; -249E:08; -249F:D7; -24A0:1E; -24A1:28; -24A2:CA; -24A3:A2; -24A4:19; -24A5:DA; -24A6:6C; -24A7:0E; -24A8:CD; -24A9:3D; -24AA:1E; -24AB:D2; -24AC:40; -24AD:25; -24AE:FE; -24AF:CD; -24B0:28; -24B1:ED; -24B2:FE; -24B3:2E; -24B4:CA; -24B5:6C; -24B6:0E; -24B7:FE; -24B8:CE; -24B9:CA; -24BA:32; -24BB:25; -24BC:FE; -24BD:22; -24BE:CA; -24BF:66; -24C0:28; -24C1:FE; -24C2:CB; -24C3:CA; -24C4:C4; -24C5:25; -24C6:FE; -24C7:26; -24C8:CA; -24C9:94; -24CA:79; -24CB:FE; -24CC:C3; -24CD:20; -24CE:0A; -24CF:D7; -24D0:3A; -24D1:9A; -24D2:78; -24D3:E5; -24D4:CD; -24D5:F8; -24D6:27; -24D7:E1; -24D8:C9; -24D9:FE; -24DA:C2; -24DB:20; -24DC:0A; -24DD:D7; -24DE:E5; -24DF:2A; -24E0:EA; -24E1:78; -24E2:CD; -24E3:66; -24E4:0C; -24E5:E1; -24E6:C9; -24E7:FE; -24E8:C0; -24E9:20; -24EA:14; -24EB:D7; -24EC:CF; -24ED:28; -24EE:CD; -24EF:0D; -24F0:26; -24F1:CF; -24F2:29; -24F3:E5; -24F4:EB; -24F5:7C; -24F6:B5; -24F7:CA; -24F8:4A; -24F9:1E; -24FA:CD; -24FB:9A; -24FC:0A; -24FD:E1; -24FE:C9; -24FF:FE; -2500:C1; -2501:CA; -2502:FE; -2503:27; -2504:FE; -2505:C5; -2506:CA; -2507:9D; -2508:79; -2509:FE; -250A:C8; -250B:CA; -250C:C9; -250D:27; -250E:FE; -250F:C7; -2510:CA; -2511:76; -2512:79; -2513:FE; -2514:C6; -2515:CA; -2516:32; -2517:01; -2518:FE; -2519:C9; -251A:CA; -251B:9D; -251C:01; -251D:FE; -251E:C4; -251F:CA; -2520:2F; -2521:2A; -2522:FE; -2523:BE; -2524:CA; -2525:55; -2526:79; -2527:D6; -2528:D7; -2529:D2; -252A:4E; -252B:25; -252C:CD; -252D:35; -252E:23; -252F:CF; -2530:29; -2531:C9; -2532:16; -2533:7D; -2534:CD; -2535:3A; -2536:23; -2537:2A; -2538:F3; -2539:78; -253A:E5; -253B:CD; -253C:7B; -253D:09; -253E:E1; -253F:C9; -2540:CD; -2541:0D; -2542:26; -2543:E5; -2544:EB; -2545:22; -2546:21; -2547:79; -2548:E7; -2549:C4; -254A:F7; -254B:09; -254C:E1; -254D:C9; -254E:06; -254F:00; -2550:07; -2551:4F; -2552:C5; -2553:D7; -2554:79; -2555:FE; -2556:41; -2557:38; -2558:16; -2559:CD; -255A:35; -255B:23; -255C:CF; -255D:2C; -255E:CD; -255F:F4; -2560:0A; -2561:EB; -2562:2A; -2563:21; -2564:79; -2565:E3; -2566:E5; -2567:EB; -2568:CD; -2569:1C; -256A:2B; -256B:EB; -256C:E3; -256D:18; -256E:14; -256F:CD; -2570:2C; -2571:25; -2572:E3; -2573:7D; -2574:FE; -2575:0C; -2576:38; -2577:07; -2578:FE; -2579:1B; -257A:E5; -257B:DC; -257C:B1; -257D:0A; -257E:E1; -257F:11; -2580:3E; -2581:25; -2582:D5; -2583:01; -2584:08; -2585:16; -2586:09; -2587:4E; -2588:23; -2589:66; -258A:69; -258B:E9; -258C:CD; -258D:D7; -258E:29; -258F:7E; -2590:23; -2591:4E; -2592:23; -2593:46; -2594:D1; -2595:C5; -2596:F5; -2597:CD; -2598:DE; -2599:29; -259A:D1; -259B:5E; -259C:23; -259D:4E; -259E:23; -259F:46; -25A0:E1; -25A1:7B; -25A2:B2; -25A3:C8; -25A4:7A; -25A5:D6; -25A6:01; -25A7:D8; -25A8:AF; -25A9:BB; -25AA:3C; -25AB:D0; -25AC:15; -25AD:1D; -25AE:0A; -25AF:BE; -25B0:23; -25B1:03; -25B2:28; -25B3:ED; -25B4:3F; -25B5:C3; -25B6:60; -25B7:09; -25B8:3C; -25B9:8F; -25BA:C1; -25BB:A0; -25BC:C6; -25BD:FF; -25BE:9F; -25BF:CD; -25C0:8D; -25C1:09; -25C2:18; -25C3:12; -25C4:16; -25C5:5A; -25C6:CD; -25C7:3A; -25C8:23; -25C9:CD; -25CA:7F; -25CB:0A; -25CC:7D; -25CD:2F; -25CE:6F; -25CF:7C; -25D0:2F; -25D1:67; -25D2:22; -25D3:21; -25D4:79; -25D5:C1; -25D6:C3; -25D7:46; -25D8:23; -25D9:3A; -25DA:AF; -25DB:78; -25DC:FE; -25DD:08; -25DE:30; -25DF:05; -25E0:D6; -25E1:03; -25E2:B7; -25E3:37; -25E4:C9; -25E5:D6; -25E6:03; -25E7:B7; -25E8:C9; -25E9:C5; -25EA:CD; -25EB:7F; -25EC:0A; -25ED:F1; -25EE:D1; -25EF:01; -25F0:FA; -25F1:27; -25F2:C5; -25F3:FE; -25F4:46; -25F5:20; -25F6:06; -25F7:7B; -25F8:B5; -25F9:6F; -25FA:7C; -25FB:B2; -25FC:C9; -25FD:7B; -25FE:A5; -25FF:6F; -2600:7C; -2601:A2; -2602:C9; -2603:2B; -2604:D7; -2605:C8; -2606:CF; -2607:2C; -2608:01; -2609:03; -260A:26; -260B:C5; -260C:F6; -260D:AF; -260E:32; -260F:AE; -2610:78; -2611:46; -2612:CD; -2613:3D; -2614:1E; -2615:DA; -2616:97; -2617:19; -2618:AF; -2619:4F; -261A:D7; -261B:38; -261C:05; -261D:CD; -261E:3D; -261F:1E; -2620:38; -2621:09; -2622:4F; -2623:D7; -2624:38; -2625:FD; -2626:CD; -2627:3D; -2628:1E; -2629:30; -262A:F8; -262B:11; -262C:52; -262D:26; -262E:D5; -262F:16; -2630:02; -2631:FE; -2632:25; -2633:C8; -2634:14; -2635:FE; -2636:24; -2637:C8; -2638:00; -2639:00; -263A:00; -263B:00; -263C:00; -263D:00; -263E:00; -263F:00; -2640:00; -2641:78; -2642:D6; -2643:41; -2644:E6; -2645:7F; -2646:5F; -2647:16; -2648:00; -2649:E5; -264A:21; -264B:01; -264C:79; -264D:19; -264E:56; -264F:E1; -2650:2B; -2651:C9; -2652:7A; -2653:32; -2654:AF; -2655:78; -2656:D7; -2657:3A; -2658:DC; -2659:78; -265A:B7; -265B:C2; -265C:64; -265D:26; -265E:7E; -265F:D6; -2660:28; -2661:CA; -2662:E9; -2663:26; -2664:AF; -2665:32; -2666:DC; -2667:78; -2668:E5; -2669:D5; -266A:2A; -266B:F9; -266C:78; -266D:EB; -266E:2A; -266F:FB; -2670:78; -2671:DF; -2672:E1; -2673:28; -2674:19; -2675:1A; -2676:6F; -2677:BC; -2678:13; -2679:20; -267A:0B; -267B:1A; -267C:B9; -267D:20; -267E:07; -267F:13; -2680:1A; -2681:B8; -2682:CA; -2683:CC; -2684:26; -2685:3E; -2686:13; -2687:13; -2688:E5; -2689:26; -268A:00; -268B:19; -268C:18; -268D:DF; -268E:7C; -268F:E1; -2690:E3; -2691:F5; -2692:D5; -2693:11; -2694:F1; -2695:24; -2696:DF; -2697:28; -2698:36; -2699:11; -269A:43; -269B:25; -269C:DF; -269D:D1; -269E:28; -269F:35; -26A0:F1; -26A1:E3; -26A2:E5; -26A3:C5; -26A4:4F; -26A5:06; -26A6:00; -26A7:C5; -26A8:03; -26A9:03; -26AA:03; -26AB:2A; -26AC:FD; -26AD:78; -26AE:E5; -26AF:09; -26B0:C1; -26B1:E5; -26B2:CD; -26B3:55; -26B4:19; -26B5:E1; -26B6:22; -26B7:FD; -26B8:78; -26B9:60; -26BA:69; -26BB:22; -26BC:FB; -26BD:78; -26BE:2B; -26BF:36; -26C0:00; -26C1:DF; -26C2:20; -26C3:FA; -26C4:D1; -26C5:73; -26C6:23; -26C7:D1; -26C8:73; -26C9:23; -26CA:72; -26CB:EB; -26CC:13; -26CD:E1; -26CE:C9; -26CF:57; -26D0:5F; -26D1:F1; -26D2:F1; -26D3:E3; -26D4:C9; -26D5:32; -26D6:24; -26D7:79; -26D8:C1; -26D9:67; -26DA:6F; -26DB:22; -26DC:21; -26DD:79; -26DE:E7; -26DF:20; -26E0:06; -26E1:21; -26E2:28; -26E3:19; -26E4:22; -26E5:21; -26E6:79; -26E7:E1; -26E8:C9; -26E9:E5; -26EA:2A; -26EB:AE; -26EC:78; -26ED:E3; -26EE:57; -26EF:D5; -26F0:C5; -26F1:CD; -26F2:45; -26F3:1E; -26F4:C1; -26F5:F1; -26F6:EB; -26F7:E3; -26F8:E5; -26F9:EB; -26FA:3C; -26FB:57; -26FC:7E; -26FD:FE; -26FE:2C; -26FF:28; -2700:EE; -2701:CF; -2702:29; -2703:22; -2704:F3; -2705:78; -2706:E1; -2707:22; -2708:AE; -2709:78; -270A:D5; -270B:2A; -270C:FB; -270D:78; -270E:3E; -270F:19; -2710:EB; -2711:2A; -2712:FD; -2713:78; -2714:EB; -2715:DF; -2716:3A; -2717:AF; -2718:78; -2719:28; -271A:27; -271B:BE; -271C:23; -271D:20; -271E:08; -271F:7E; -2720:B9; -2721:23; -2722:20; -2723:04; -2724:7E; -2725:B8; -2726:3E; -2727:23; -2728:23; -2729:5E; -272A:23; -272B:56; -272C:23; -272D:20; -272E:E0; -272F:3A; -2730:AE; -2731:78; -2732:B7; -2733:1E; -2734:12; -2735:C2; -2736:A2; -2737:19; -2738:F1; -2739:96; -273A:CA; -273B:95; -273C:27; -273D:1E; -273E:10; -273F:C3; -2740:A2; -2741:19; -2742:77; -2743:23; -2744:5F; -2745:16; -2746:00; -2747:F1; -2748:71; -2749:23; -274A:70; -274B:23; -274C:4F; -274D:CD; -274E:63; -274F:19; -2750:23; -2751:23; -2752:22; -2753:D8; -2754:78; -2755:71; -2756:23; -2757:3A; -2758:AE; -2759:78; -275A:17; -275B:79; -275C:01; -275D:0B; -275E:00; -275F:30; -2760:02; -2761:C1; -2762:03; -2763:71; -2764:23; -2765:70; -2766:23; -2767:F5; -2768:CD; -2769:AA; -276A:0B; -276B:F1; -276C:3D; -276D:20; -276E:ED; -276F:F5; -2770:42; -2771:4B; -2772:EB; -2773:19; -2774:38; -2775:C7; -2776:CD; -2777:6C; -2778:19; -2779:22; -277A:FD; -277B:78; -277C:2B; -277D:36; -277E:00; -277F:DF; -2780:20; -2781:FA; -2782:03; -2783:57; -2784:2A; -2785:D8; -2786:78; -2787:5E; -2788:EB; -2789:29; -278A:09; -278B:EB; -278C:2B; -278D:2B; -278E:73; -278F:23; -2790:72; -2791:23; -2792:F1; -2793:38; -2794:30; -2795:47; -2796:4F; -2797:7E; -2798:23; -2799:16; -279A:E1; -279B:5E; -279C:23; -279D:56; -279E:23; -279F:E3; -27A0:F5; -27A1:DF; -27A2:D2; -27A3:3D; -27A4:27; -27A5:CD; -27A6:AA; -27A7:0B; -27A8:19; -27A9:F1; -27AA:3D; -27AB:44; -27AC:4D; -27AD:20; -27AE:EB; -27AF:3A; -27B0:AF; -27B1:78; -27B2:44; -27B3:4D; -27B4:29; -27B5:D6; -27B6:04; -27B7:38; -27B8:04; -27B9:29; -27BA:28; -27BB:06; -27BC:29; -27BD:B7; -27BE:E2; -27BF:C2; -27C0:27; -27C1:09; -27C2:C1; -27C3:09; -27C4:EB; -27C5:2A; -27C6:F3; -27C7:78; -27C8:C9; -27C9:AF; -27CA:E5; -27CB:32; -27CC:AF; -27CD:78; -27CE:CD; -27CF:D4; -27D0:27; -27D1:E1; -27D2:D7; -27D3:C9; -27D4:2A; -27D5:FD; -27D6:78; -27D7:EB; -27D8:21; -27D9:00; -27DA:00; -27DB:39; -27DC:E7; -27DD:20; -27DE:0D; -27DF:CD; -27E0:DA; -27E1:29; -27E2:CD; -27E3:E6; -27E4:28; -27E5:2A; -27E6:A0; -27E7:78; -27E8:EB; -27E9:2A; -27EA:D6; -27EB:78; -27EC:7D; -27ED:93; -27EE:6F; -27EF:7C; -27F0:9A; -27F1:67; -27F2:C3; -27F3:66; -27F4:0C; -27F5:3A; -27F6:A6; -27F7:78; -27F8:6F; -27F9:AF; -27FA:67; -27FB:C3; -27FC:9A; -27FD:0A; -27FE:CD; -27FF:A9; -2800:79; -2801:D7; -2802:CD; -2803:2C; -2804:25; -2805:E5; -2806:21; -2807:90; -2808:08; -2809:E5; -280A:3A; -280B:AF; -280C:78; -280D:F5; -280E:FE; -280F:03; -2810:CC; -2811:DA; -2812:29; -2813:F1; -2814:EB; -2815:2A; -2816:8E; -2817:78; -2818:E9; -2819:E5; -281A:E6; -281B:07; -281C:21; -281D:A1; -281E:18; -281F:4F; -2820:06; -2821:00; -2822:09; -2823:CD; -2824:86; -2825:25; -2826:E1; -2827:C9; -2828:E5; -2829:2A; -282A:A2; -282B:78; -282C:23; -282D:7C; -282E:B5; -282F:E1; -2830:C0; -2831:1E; -2832:16; -2833:C3; -2834:A2; -2835:19; -2836:CD; -2837:BD; -2838:0F; -2839:CD; -283A:65; -283B:28; -283C:CD; -283D:DA; -283E:29; -283F:01; -2840:2B; -2841:2A; -2842:C5; -2843:7E; -2844:23; -2845:E5; -2846:CD; -2847:BF; -2848:28; -2849:E1; -284A:4E; -284B:23; -284C:46; -284D:CD; -284E:5A; -284F:28; -2850:E5; -2851:6F; -2852:CD; -2853:CE; -2854:29; -2855:D1; -2856:C9; -2857:CD; -2858:BF; -2859:28; -285A:21; -285B:D3; -285C:78; -285D:E5; -285E:77; -285F:23; -2860:73; -2861:23; -2862:72; -2863:E1; -2864:C9; -2865:2B; -2866:06; -2867:22; -2868:50; -2869:E5; -286A:0E; -286B:FF; -286C:23; -286D:7E; -286E:0C; -286F:B7; -2870:28; -2871:06; -2872:BA; -2873:28; -2874:03; -2875:B8; -2876:20; -2877:F4; -2878:FE; -2879:22; -287A:CC; -287B:78; -287C:1D; -287D:E3; -287E:23; -287F:EB; -2880:79; -2881:CD; -2882:5A; -2883:28; -2884:11; -2885:D3; -2886:78; -2887:3E; -2888:D5; -2889:2A; -288A:B3; -288B:78; -288C:22; -288D:21; -288E:79; -288F:3E; -2890:03; -2891:32; -2892:AF; -2893:78; -2894:CD; -2895:D3; -2896:09; -2897:11; -2898:D6; -2899:78; -289A:DF; -289B:22; -289C:B3; -289D:78; -289E:E1; -289F:7E; -28A0:C0; -28A1:1E; -28A2:1E; -28A3:C3; -28A4:A2; -28A5:19; -28A6:23; -28A7:CD; -28A8:65; -28A9:28; -28AA:CD; -28AB:DA; -28AC:29; -28AD:CD; -28AE:C4; -28AF:09; -28B0:14; -28B1:15; -28B2:C8; -28B3:0A; -28B4:CD; -28B5:2A; -28B6:03; -28B7:FE; -28B8:0D; -28B9:CC; -28BA:03; -28BB:21; -28BC:03; -28BD:18; -28BE:F2; -28BF:B7; -28C0:0E; -28C1:F1; -28C2:F5; -28C3:2A; -28C4:A0; -28C5:78; -28C6:EB; -28C7:2A; -28C8:D6; -28C9:78; -28CA:2F; -28CB:4F; -28CC:06; -28CD:FF; -28CE:09; -28CF:23; -28D0:DF; -28D1:38; -28D2:07; -28D3:22; -28D4:D6; -28D5:78; -28D6:23; -28D7:EB; -28D8:F1; -28D9:C9; -28DA:F1; -28DB:1E; -28DC:1A; -28DD:CA; -28DE:A2; -28DF:19; -28E0:BF; -28E1:F5; -28E2:01; -28E3:C1; -28E4:28; -28E5:C5; -28E6:2A; -28E7:B1; -28E8:78; -28E9:22; -28EA:D6; -28EB:78; -28EC:21; -28ED:00; -28EE:00; -28EF:E5; -28F0:2A; -28F1:A0; -28F2:78; -28F3:E5; -28F4:21; -28F5:B5; -28F6:78; -28F7:EB; -28F8:2A; -28F9:B3; -28FA:78; -28FB:EB; -28FC:DF; -28FD:01; -28FE:F7; -28FF:28; -2900:C2; -2901:4A; -2902:29; -2903:2A; -2904:F9; -2905:78; -2906:EB; -2907:2A; -2908:FB; -2909:78; -290A:EB; -290B:DF; -290C:28; -290D:13; -290E:7E; -290F:23; -2910:23; -2911:23; -2912:FE; -2913:03; -2914:20; -2915:04; -2916:CD; -2917:4B; -2918:29; -2919:AF; -291A:5F; -291B:16; -291C:00; -291D:19; -291E:18; -291F:E6; -2920:C1; -2921:EB; -2922:2A; -2923:FD; -2924:78; -2925:EB; -2926:DF; -2927:CA; -2928:6B; -2929:29; -292A:7E; -292B:23; -292C:CD; -292D:C2; -292E:09; -292F:E5; -2930:09; -2931:FE; -2932:03; -2933:20; -2934:EB; -2935:22; -2936:D8; -2937:78; -2938:E1; -2939:4E; -293A:06; -293B:00; -293C:09; -293D:09; -293E:23; -293F:EB; -2940:2A; -2941:D8; -2942:78; -2943:EB; -2944:DF; -2945:28; -2946:DA; -2947:01; -2948:3F; -2949:29; -294A:C5; -294B:AF; -294C:B6; -294D:23; -294E:5E; -294F:23; -2950:56; -2951:23; -2952:C8; -2953:44; -2954:4D; -2955:2A; -2956:D6; -2957:78; -2958:DF; -2959:60; -295A:69; -295B:D8; -295C:E1; -295D:E3; -295E:DF; -295F:E3; -2960:E5; -2961:60; -2962:69; -2963:D0; -2964:C1; -2965:F1; -2966:F1; -2967:E5; -2968:D5; -2969:C5; -296A:C9; -296B:D1; -296C:E1; -296D:7D; -296E:B4; -296F:C8; -2970:2B; -2971:46; -2972:2B; -2973:4E; -2974:E5; -2975:2B; -2976:6E; -2977:26; -2978:00; -2979:09; -297A:50; -297B:59; -297C:2B; -297D:44; -297E:4D; -297F:2A; -2980:D6; -2981:78; -2982:CD; -2983:58; -2984:19; -2985:E1; -2986:71; -2987:23; -2988:70; -2989:69; -298A:60; -298B:2B; -298C:C3; -298D:E9; -298E:28; -298F:C5; -2990:E5; -2991:2A; -2992:21; -2993:79; -2994:E3; -2995:CD; -2996:9F; -2997:24; -2998:E3; -2999:CD; -299A:F4; -299B:0A; -299C:7E; -299D:E5; -299E:2A; -299F:21; -29A0:79; -29A1:E5; -29A2:86; -29A3:1E; -29A4:1C; -29A5:DA; -29A6:A2; -29A7:19; -29A8:CD; -29A9:57; -29AA:28; -29AB:D1; -29AC:CD; -29AD:DE; -29AE:29; -29AF:E3; -29B0:CD; -29B1:DD; -29B2:29; -29B3:E5; -29B4:2A; -29B5:D4; -29B6:78; -29B7:EB; -29B8:CD; -29B9:C6; -29BA:29; -29BB:CD; -29BC:C6; -29BD:29; -29BE:21; -29BF:49; -29C0:23; -29C1:E3; -29C2:E5; -29C3:C3; -29C4:84; -29C5:28; -29C6:E1; -29C7:E3; -29C8:7E; -29C9:23; -29CA:4E; -29CB:23; -29CC:46; -29CD:6F; -29CE:2C; -29CF:2D; -29D0:C8; -29D1:0A; -29D2:12; -29D3:03; -29D4:13; -29D5:18; -29D6:F8; -29D7:CD; -29D8:F4; -29D9:0A; -29DA:2A; -29DB:21; -29DC:79; -29DD:EB; -29DE:CD; -29DF:F5; -29E0:29; -29E1:EB; -29E2:C0; -29E3:D5; -29E4:50; -29E5:59; -29E6:1B; -29E7:4E; -29E8:2A; -29E9:D6; -29EA:78; -29EB:DF; -29EC:20; -29ED:05; -29EE:47; -29EF:09; -29F0:22; -29F1:D6; -29F2:78; -29F3:E1; -29F4:C9; -29F5:2A; -29F6:B3; -29F7:78; -29F8:2B; -29F9:46; -29FA:2B; -29FB:4E; -29FC:2B; -29FD:DF; -29FE:C0; -29FF:22; -2A00:B3; -2A01:78; -2A02:C9; -2A03:01; -2A04:F8; -2A05:27; -2A06:C5; -2A07:CD; -2A08:D7; -2A09:29; -2A0A:AF; -2A0B:57; -2A0C:7E; -2A0D:B7; -2A0E:C9; -2A0F:01; -2A10:F8; -2A11:27; -2A12:C5; -2A13:CD; -2A14:07; -2A15:2A; -2A16:CA; -2A17:4A; -2A18:1E; -2A19:23; -2A1A:5E; -2A1B:23; -2A1C:56; -2A1D:1A; -2A1E:C9; -2A1F:3E; -2A20:01; -2A21:CD; -2A22:57; -2A23:28; -2A24:CD; -2A25:1F; -2A26:2B; -2A27:2A; -2A28:D4; -2A29:78; -2A2A:73; -2A2B:C1; -2A2C:C3; -2A2D:84; -2A2E:28; -2A2F:D7; -2A30:CF; -2A31:28; -2A32:CD; -2A33:1C; -2A34:2B; -2A35:D5; -2A36:CF; -2A37:2C; -2A38:CD; -2A39:37; -2A3A:23; -2A3B:CF; -2A3C:29; -2A3D:E3; -2A3E:E5; -2A3F:E7; -2A40:28; -2A41:05; -2A42:CD; -2A43:1F; -2A44:2B; -2A45:18; -2A46:03; -2A47:CD; -2A48:13; -2A49:2A; -2A4A:D1; -2A4B:F5; -2A4C:F5; -2A4D:7B; -2A4E:CD; -2A4F:57; -2A50:28; -2A51:5F; -2A52:F1; -2A53:1C; -2A54:1D; -2A55:28; -2A56:D4; -2A57:2A; -2A58:D4; -2A59:78; -2A5A:77; -2A5B:23; -2A5C:1D; -2A5D:20; -2A5E:FB; -2A5F:18; -2A60:CA; -2A61:CD; -2A62:DF; -2A63:2A; -2A64:AF; -2A65:E3; -2A66:4F; -2A67:3E; -2A68:E5; -2A69:E5; -2A6A:7E; -2A6B:B8; -2A6C:38; -2A6D:02; -2A6E:78; -2A6F:11; -2A70:0E; -2A71:00; -2A72:C5; -2A73:CD; -2A74:BF; -2A75:28; -2A76:C1; -2A77:E1; -2A78:E5; -2A79:23; -2A7A:46; -2A7B:23; -2A7C:66; -2A7D:68; -2A7E:06; -2A7F:00; -2A80:09; -2A81:44; -2A82:4D; -2A83:CD; -2A84:5A; -2A85:28; -2A86:6F; -2A87:CD; -2A88:CE; -2A89:29; -2A8A:D1; -2A8B:CD; -2A8C:DE; -2A8D:29; -2A8E:C3; -2A8F:84; -2A90:28; -2A91:CD; -2A92:DF; -2A93:2A; -2A94:D1; -2A95:D5; -2A96:1A; -2A97:90; -2A98:18; -2A99:CB; -2A9A:EB; -2A9B:7E; -2A9C:CD; -2A9D:E2; -2A9E:2A; -2A9F:04; -2AA0:05; -2AA1:CA; -2AA2:4A; -2AA3:1E; -2AA4:C5; -2AA5:1E; -2AA6:FF; -2AA7:FE; -2AA8:29; -2AA9:28; -2AAA:05; -2AAB:CF; -2AAC:2C; -2AAD:CD; -2AAE:1C; -2AAF:2B; -2AB0:CF; -2AB1:29; -2AB2:F1; -2AB3:E3; -2AB4:01; -2AB5:69; -2AB6:2A; -2AB7:C5; -2AB8:3D; -2AB9:BE; -2ABA:06; -2ABB:00; -2ABC:D0; -2ABD:4F; -2ABE:7E; -2ABF:91; -2AC0:BB; -2AC1:47; -2AC2:D8; -2AC3:43; -2AC4:C9; -2AC5:CD; -2AC6:07; -2AC7:2A; -2AC8:CA; -2AC9:F8; -2ACA:27; -2ACB:5F; -2ACC:23; -2ACD:7E; -2ACE:23; -2ACF:66; -2AD0:6F; -2AD1:E5; -2AD2:19; -2AD3:46; -2AD4:72; -2AD5:E3; -2AD6:C5; -2AD7:7E; -2AD8:CD; -2AD9:65; -2ADA:0E; -2ADB:C1; -2ADC:E1; -2ADD:70; -2ADE:C9; -2ADF:EB; -2AE0:CF; -2AE1:29; -2AE2:C1; -2AE3:D1; -2AE4:C5; -2AE5:43; -2AE6:C9; -2AE7:FE; -2AE8:7A; -2AE9:C2; -2AEA:97; -2AEB:19; -2AEC:C3; -2AED:D9; -2AEE:79; -2AEF:CD; -2AF0:1F; -2AF1:2B; -2AF2:32; -2AF3:94; -2AF4:78; -2AF5:CD; -2AF6:93; -2AF7:78; -2AF8:C3; -2AF9:F8; -2AFA:27; -2AFB:CD; -2AFC:0E; -2AFD:2B; -2AFE:C3; -2AFF:96; -2B00:78; -2B01:D7; -2B02:CD; -2B03:37; -2B04:23; -2B05:E5; -2B06:CD; -2B07:7F; -2B08:0A; -2B09:EB; -2B0A:E1; -2B0B:7A; -2B0C:B7; -2B0D:C9; -2B0E:CD; -2B0F:1C; -2B10:2B; -2B11:32; -2B12:94; -2B13:78; -2B14:32; -2B15:97; -2B16:78; -2B17:CF; -2B18:2C; -2B19:18; -2B1A:01; -2B1B:D7; -2B1C:CD; -2B1D:37; -2B1E:23; -2B1F:CD; -2B20:05; -2B21:2B; -2B22:C2; -2B23:4A; -2B24:1E; -2B25:2B; -2B26:D7; -2B27:7B; -2B28:C9; -2B29:3E; -2B2A:01; -2B2B:32; -2B2C:9C; -2B2D:78; -2B2E:C1; -2B2F:CD; -2B30:10; -2B31:1B; -2B32:C5; -2B33:CD; -2B34:25; -2B35:3B; -2B36:22; -2B37:A2; -2B38:78; -2B39:E1; -2B3A:D1; -2B3B:4E; -2B3C:23; -2B3D:46; -2B3E:23; -2B3F:78; -2B40:B1; -2B41:CA; -2B42:19; -2B43:1A; -2B44:CD; -2B45:DF; -2B46:79; -2B47:CD; -2B48:9B; -2B49:1D; -2B4A:C5; -2B4B:4E; -2B4C:23; -2B4D:46; -2B4E:23; -2B4F:C5; -2B50:E3; -2B51:EB; -2B52:DF; -2B53:C1; -2B54:DA; -2B55:18; -2B56:1A; -2B57:E3; -2B58:E5; -2B59:C5; -2B5A:EB; -2B5B:22; -2B5C:EC; -2B5D:78; -2B5E:CD; -2B5F:AF; -2B60:0F; -2B61:3E; -2B62:20; -2B63:E1; -2B64:CD; -2B65:2A; -2B66:03; -2B67:CD; -2B68:7E; -2B69:2B; -2B6A:2A; -2B6B:A7; -2B6C:78; -2B6D:CD; -2B6E:75; -2B6F:2B; -2B70:CD; -2B71:FE; -2B72:20; -2B73:18; -2B74:BE; -2B75:7E; -2B76:B7; -2B77:C8; -2B78:CD; -2B79:2A; -2B7A:03; -2B7B:23; -2B7C:18; -2B7D:F7; -2B7E:E5; -2B7F:2A; -2B80:A7; -2B81:78; -2B82:44; -2B83:4D; -2B84:E1; -2B85:16; -2B86:FF; -2B87:18; -2B88:03; -2B89:03; -2B8A:15; -2B8B:C8; -2B8C:7E; -2B8D:B7; -2B8E:23; -2B8F:02; -2B90:C8; -2B91:C3; -2B92:9D; -2B93:2E; -2B94:FE; -2B95:FB; -2B96:20; -2B97:08; -2B98:0B; -2B99:0B; -2B9A:0B; -2B9B:0B; -2B9C:14; -2B9D:14; -2B9E:14; -2B9F:14; -2BA0:FE; -2BA1:95; -2BA2:CC; -2BA3:24; -2BA4:0B; -2BA5:D6; -2BA6:7F; -2BA7:E5; -2BA8:5F; -2BA9:21; -2BAA:50; -2BAB:16; -2BAC:7E; -2BAD:B7; -2BAE:23; -2BAF:F2; -2BB0:AC; -2BB1:2B; -2BB2:1D; -2BB3:20; -2BB4:F7; -2BB5:E6; -2BB6:7F; -2BB7:02; -2BB8:03; -2BB9:15; -2BBA:CA; -2BBB:D8; -2BBC:28; -2BBD:7E; -2BBE:23; -2BBF:B7; -2BC0:F2; -2BC1:B7; -2BC2:2B; -2BC3:E1; -2BC4:18; -2BC5:C6; -2BC6:CD; -2BC7:10; -2BC8:1B; -2BC9:D1; -2BCA:C5; -2BCB:C5; -2BCC:CD; -2BCD:2C; -2BCE:1B; -2BCF:30; -2BD0:05; -2BD1:54; -2BD2:5D; -2BD3:E3; -2BD4:E5; -2BD5:DF; -2BD6:D2; -2BD7:4A; -2BD8:1E; -2BD9:21; -2BDA:29; -2BDB:19; -2BDC:CD; -2BDD:A7; -2BDE:28; -2BDF:C1; -2BE0:21; -2BE1:E8; -2BE2:1A; -2BE3:E3; -2BE4:EB; -2BE5:2A; -2BE6:F9; -2BE7:78; -2BE8:1A; -2BE9:02; -2BEA:03; -2BEB:13; -2BEC:DF; -2BED:20; -2BEE:F9; -2BEF:60; -2BF0:69; -2BF1:22; -2BF2:F9; -2BF3:78; -2BF4:C9; -2BF5:CD; -2BF6:1C; -2BF7:2B; -2BF8:FE; -2BF9:20; -2BFA:D2; -2BFB:4A; -2BFC:1E; -2BFD:32; -2BFE:D2; -2BFF:7A; -2C00:CF; -2C01:2C; -2C02:CD; -2C03:1C; -2C04:2B; -2C05:B7; -2C06:CA; -2C07:4A; -2C08:1E; -2C09:FE; -2C0A:0A; -2C0B:D2; -2C0C:4A; -2C0D:1E; -2C0E:F3; -2C0F:E5; -2C10:3D; -2C11:F5; -2C12:3A; -2C13:D2; -2C14:7A; -2C15:B7; -2C16:28; -2C17:40; -2C18:3D; -2C19:CB; -2C1A:27; -2C1B:4F; -2C1C:AF; -2C1D:47; -2C1E:F1; -2C1F:21; -2C20:CF; -2C21:02; -2C22:09; -2C23:5E; -2C24:23; -2C25:56; -2C26:D5; -2C27:21; -2C28:61; -2C29:03; -2C2A:CB; -2C2B:39; -2C2C:09; -2C2D:5E; -2C2E:16; -2C2F:00; -2C30:21; -2C31:21; -2C32:03; -2C33:4F; -2C34:09; -2C35:46; -2C36:D5; -2C37:E1; -2C38:19; -2C39:10; -2C3A:FD; -2C3B:E5; -2C3C:C1; -2C3D:E1; -2C3E:CD; -2C3F:F8; -2C40:3A; -2C41:3A; -2C42:3B; -2C43:78; -2C44:57; -2C45:CD; -2C46:69; -2C47:34; -2C48:0B; -2C49:79; -2C4A:B0; -2C4B:20; -2C4C:F1; -2C4D:E1; -2C4E:FB; -2C4F:7E; -2C50:23; -2C51:FE; -2C52:3B; -2C53:CA; -2C54:F5; -2C55:2B; -2C56:2B; -2C57:C9; -2C58:F1; -2C59:4F; -2C5A:AF; -2C5B:47; -2C5C:21; -2C5D:21; -2C5E:03; -2C5F:09; -2C60:46; -2C61:21; -2C62:36; -2C63:19; -2C64:E5; -2C65:D1; -2C66:19; -2C67:10; -2C68:FD; -2C69:CD; -2C6A:F8; -2C6B:3A; -2C6C:2B; -2C6D:7D; -2C6E:B4; -2C6F:20; -2C70:F8; -2C71:18; -2C72:DA; -2C73:C5; -2C74:47; -2C75:3E; -2C76:08; -2C77:CD; -2C78:BA; -2C79:3A; -2C7A:78; -2C7B:E6; -2C7C:0F; -2C7D:E5; -2C7E:CB; -2C7F:27; -2C80:4F; -2C81:AF; -2C82:47; -2C83:21; -2C84:AF; -2C85:02; -2C86:09; -2C87:7E; -2C88:47; -2C89:23; -2C8A:7E; -2C8B:4F; -2C8C:78; -2C8D:CD; -2C8E:BA; -2C8F:3A; -2C90:CD; -2C91:BA; -2C92:3A; -2C93:CD; -2C94:BA; -2C95:3A; -2C96:79; -2C97:CD; -2C98:BA; -2C99:3A; -2C9A:CD; -2C9B:BA; -2C9C:3A; -2C9D:CD; -2C9E:BA; -2C9F:3A; -2CA0:E1; -2CA1:C1; -2CA2:3E; -2CA3:0F; -2CA4:CD; -2CA5:BA; -2CA6:3A; -2CA7:C9; -2CA8:30; -2CA9:9D; -2CAA:CD; -2CAB:7F; -2CAC:0A; -2CAD:7E; -2CAE:C3; -2CAF:F8; -2CB0:27; -2CB1:CD; -2CB2:02; -2CB3:2B; -2CB4:D5; -2CB5:CF; -2CB6:2C; -2CB7:CD; -2CB8:1C; -2CB9:2B; -2CBA:D1; -2CBB:12; -2CBC:C9; -2CBD:CD; -2CBE:38; -2CBF:23; -2CC0:CD; -2CC1:F4; -2CC2:0A; -2CC3:CF; -2CC4:3B; -2CC5:EB; -2CC6:2A; -2CC7:21; -2CC8:79; -2CC9:18; -2CCA:08; -2CCB:3A; -2CCC:DE; -2CCD:78; -2CCE:B7; -2CCF:28; -2CD0:0C; -2CD1:D1; -2CD2:EB; -2CD3:E5; -2CD4:AF; -2CD5:32; -2CD6:DE; -2CD7:78; -2CD8:BA; -2CD9:F5; -2CDA:D5; -2CDB:46; -2CDC:B0; -2CDD:CA; -2CDE:4A; -2CDF:1E; -2CE0:23; -2CE1:4E; -2CE2:23; -2CE3:66; -2CE4:69; -2CE5:18; -2CE6:1C; -2CE7:58; -2CE8:E5; -2CE9:0E; -2CEA:02; -2CEB:7E; -2CEC:23; -2CED:FE; -2CEE:25; -2CEF:CA; -2CF0:17; -2CF1:2E; -2CF2:FE; -2CF3:20; -2CF4:20; -2CF5:03; -2CF6:0C; -2CF7:10; -2CF8:F2; -2CF9:E1; -2CFA:43; -2CFB:3E; -2CFC:25; -2CFD:CD; -2CFE:49; -2CFF:2E; -2D00:CD; -2D01:2A; -2D02:03; -2D03:AF; -2D04:5F; -2D05:57; -2D06:CD; -2D07:49; -2D08:2E; -2D09:57; -2D0A:7E; -2D0B:23; -2D0C:FE; -2D0D:21; -2D0E:CA; -2D0F:14; -2D10:2E; -2D11:FE; -2D12:23; -2D13:28; -2D14:37; -2D15:05; -2D16:CA; -2D17:FE; -2D18:2D; -2D19:FE; -2D1A:2B; -2D1B:3E; -2D1C:08; -2D1D:28; -2D1E:E7; -2D1F:2B; -2D20:7E; -2D21:23; -2D22:FE; -2D23:2E; -2D24:28; -2D25:40; -2D26:FE; -2D27:25; -2D28:28; -2D29:BD; -2D2A:BE; -2D2B:20; -2D2C:D0; -2D2D:FE; -2D2E:24; -2D2F:28; -2D30:14; -2D31:FE; -2D32:2A; -2D33:20; -2D34:C8; -2D35:78; -2D36:FE; -2D37:02; -2D38:23; -2D39:38; -2D3A:03; -2D3B:7E; -2D3C:FE; -2D3D:24; -2D3E:3E; -2D3F:20; -2D40:20; -2D41:07; -2D42:05; -2D43:1C; -2D44:FE; -2D45:AF; -2D46:C6; -2D47:10; -2D48:23; -2D49:1C; -2D4A:82; -2D4B:57; -2D4C:1C; -2D4D:0E; -2D4E:00; -2D4F:05; -2D50:28; -2D51:47; -2D52:7E; -2D53:23; -2D54:FE; -2D55:2E; -2D56:28; -2D57:18; -2D58:FE; -2D59:23; -2D5A:28; -2D5B:F0; -2D5C:FE; -2D5D:2C; -2D5E:20; -2D5F:1A; -2D60:7A; -2D61:F6; -2D62:40; -2D63:57; -2D64:18; -2D65:E6; -2D66:7E; -2D67:FE; -2D68:23; -2D69:3E; -2D6A:2E; -2D6B:20; -2D6C:90; -2D6D:0E; -2D6E:01; -2D6F:23; -2D70:0C; -2D71:05; -2D72:28; -2D73:25; -2D74:7E; -2D75:23; -2D76:FE; -2D77:23; -2D78:28; -2D79:F6; -2D7A:D5; -2D7B:11; -2D7C:97; -2D7D:2D; -2D7E:D5; -2D7F:54; -2D80:5D; -2D81:FE; -2D82:5B; -2D83:C0; -2D84:BE; -2D85:C0; -2D86:23; -2D87:BE; -2D88:C0; -2D89:23; -2D8A:BE; -2D8B:C0; -2D8C:23; -2D8D:78; -2D8E:D6; -2D8F:04; -2D90:D8; -2D91:D1; -2D92:D1; -2D93:47; -2D94:14; -2D95:23; -2D96:CA; -2D97:EB; -2D98:D1; -2D99:7A; -2D9A:2B; -2D9B:1C; -2D9C:E6; -2D9D:08; -2D9E:20; -2D9F:15; -2DA0:1D; -2DA1:78; -2DA2:B7; -2DA3:28; -2DA4:10; -2DA5:7E; -2DA6:D6; -2DA7:2D; -2DA8:28; -2DA9:06; -2DAA:FE; -2DAB:FE; -2DAC:20; -2DAD:07; -2DAE:3E; -2DAF:08; -2DB0:C6; -2DB1:04; -2DB2:82; -2DB3:57; -2DB4:05; -2DB5:E1; -2DB6:F1; -2DB7:28; -2DB8:50; -2DB9:C5; -2DBA:D5; -2DBB:CD; -2DBC:37; -2DBD:23; -2DBE:D1; -2DBF:C1; -2DC0:C5; -2DC1:E5; -2DC2:43; -2DC3:78; -2DC4:81; -2DC5:FE; -2DC6:19; -2DC7:D2; -2DC8:4A; -2DC9:1E; -2DCA:7A; -2DCB:F6; -2DCC:80; -2DCD:CD; -2DCE:BE; -2DCF:0F; -2DD0:CD; -2DD1:A7; -2DD2:28; -2DD3:E1; -2DD4:2B; -2DD5:D7; -2DD6:37; -2DD7:28; -2DD8:0D; -2DD9:32; -2DDA:DE; -2DDB:78; -2DDC:FE; -2DDD:3B; -2DDE:28; -2DDF:05; -2DE0:FE; -2DE1:2C; -2DE2:C2; -2DE3:97; -2DE4:19; -2DE5:D7; -2DE6:C1; -2DE7:EB; -2DE8:E1; -2DE9:E5; -2DEA:F5; -2DEB:D5; -2DEC:7E; -2DED:90; -2DEE:23; -2DEF:4E; -2DF0:23; -2DF1:66; -2DF2:69; -2DF3:16; -2DF4:00; -2DF5:5F; -2DF6:19; -2DF7:78; -2DF8:B7; -2DF9:C2; -2DFA:03; -2DFB:2D; -2DFC:18; -2DFD:06; -2DFE:CD; -2DFF:49; -2E00:2E; -2E01:CD; -2E02:2A; -2E03:03; -2E04:E1; -2E05:F1; -2E06:C2; -2E07:CB; -2E08:2C; -2E09:DC; -2E0A:FE; -2E0B:20; -2E0C:E3; -2E0D:CD; -2E0E:DD; -2E0F:29; -2E10:E1; -2E11:C3; -2E12:69; -2E13:21; -2E14:0E; -2E15:01; -2E16:3E; -2E17:F1; -2E18:05; -2E19:CD; -2E1A:49; -2E1B:2E; -2E1C:E1; -2E1D:F1; -2E1E:28; -2E1F:E9; -2E20:C5; -2E21:CD; -2E22:37; -2E23:23; -2E24:CD; -2E25:F4; -2E26:0A; -2E27:C1; -2E28:C5; -2E29:E5; -2E2A:2A; -2E2B:21; -2E2C:79; -2E2D:41; -2E2E:0E; -2E2F:00; -2E30:C5; -2E31:CD; -2E32:68; -2E33:2A; -2E34:CD; -2E35:AA; -2E36:28; -2E37:2A; -2E38:21; -2E39:79; -2E3A:F1; -2E3B:96; -2E3C:47; -2E3D:3E; -2E3E:20; -2E3F:04; -2E40:05; -2E41:CA; -2E42:D3; -2E43:2D; -2E44:CD; -2E45:2A; -2E46:03; -2E47:18; -2E48:F7; -2E49:F5; -2E4A:7A; -2E4B:B7; -2E4C:3E; -2E4D:2B; -2E4E:C4; -2E4F:2A; -2E50:03; -2E51:F1; -2E52:C9; -2E53:60; -2E54:69; -2E55:23; -2E56:23; -2E57:23; -2E58:23; -2E59:CD; -2E5A:7E; -2E5B:2B; -2E5C:2A; -2E5D:A7; -2E5E:78; -2E5F:CD; -2E60:75; -2E61:2B; -2E62:C9; -2E63:CF; -2E64:28; -2E65:CD; -2E66:1C; -2E67:2B; -2E68:B7; -2E69:28; -2E6A:12; -2E6B:3D; -2E6C:28; -2E6D:03; -2E6E:C3; -2E6F:4A; -2E70:1E; -2E71:16; -2E72:00; -2E73:3A; -2E74:3B; -2E75:78; -2E76:F6; -2E77:08; -2E78:32; -2E79:3B; -2E7A:78; -2E7B:18; -2E7C:0A; -2E7D:16; -2E7E:20; -2E7F:3A; -2E80:3B; -2E81:78; -2E82:E6; -2E83:F7; -2E84:32; -2E85:3B; -2E86:78; -2E87:32; -2E88:00; -2E89:68; -2E8A:E5; -2E8B:21; -2E8C:00; -2E8D:70; -2E8E:01; -2E8F:00; -2E90:08; -2E91:7A; -2E92:77; -2E93:23; -2E94:0B; -2E95:78; -2E96:B1; -2E97:20; -2E98:F8; -2E99:E1; -2E9A:CF; -2E9B:29; -2E9C:C9; -2E9D:FE; -2E9E:22; -2E9F:CA; -2EA0:B3; -2EA1:2E; -2EA2:B7; -2EA3:F2; -2EA4:89; -2EA5:2B; -2EA6:C3; -2EA7:94; -2EA8:2B; -2EA9:7E; -2EAA:B7; -2EAB:23; -2EAC:02; -2EAD:C8; -2EAE:FE; -2EAF:22; -2EB0:CA; -2EB1:89; -2EB2:2B; -2EB3:03; -2EB4:15; -2EB5:C8; -2EB6:18; -2EB7:F1; -2EB8:F5; -2EB9:C5; -2EBA:D5; -2EBB:E5; -2EBC:CD; -2EBD:7D; -2EBE:78; -2EBF:CD; -2EC0:7B; -2EC1:3F; -2EC2:CD; -2EC3:DC; -2EC4:2E; -2EC5:CD; -2EC6:FD; -2EC7:2E; -2EC8:F5; -2EC9:21; -2ECA:39; -2ECB:78; -2ECC:CB; -2ECD:46; -2ECE:CC; -2ECF:1B; -2ED0:30; -2ED1:F1; -2ED2:CD; -2ED3:30; -2ED4:34; -2ED5:E1; -2ED6:D1; -2ED7:C1; -2ED8:F1; -2ED9:FB; -2EDA:ED; -2EDB:4D; -2EDC:3A; -2EDD:39; -2EDE:78; -2EDF:CB; -2EE0:47; -2EE1:C0; -2EE2:21; -2EE3:41; -2EE4:78; -2EE5:35; -2EE6:C0; -2EE7:3E; -2EE8:10; -2EE9:32; -2EEA:41; -2EEB:78; -2EEC:2A; -2EED:20; -2EEE:78; -2EEF:3E; -2EF0:40; -2EF1:AE; -2EF2:77; -2EF3:C9; -2EF4:CD; -2EF5:FD; -2EF6:2E; -2EF7:F5; -2EF8:CD; -2EF9:0E; -2EFA:2F; -2EFB:F1; -2EFC:C9; -2EFD:3A; -2EFE:00; -2EFF:68; -2F00:F6; -2F01:C0; -2F02:2F; -2F03:FE; -2F04:00; -2F05:28; -2F06:07; -2F07:CD; -2F08:28; -2F09:2F; -2F0A:B7; -2F0B:C2; -2F0C:D7; -2F0D:05; -2F0E:21; -2F0F:38; -2F10:78; -2F11:CB; -2F12:56; -2F13:28; -2F14:08; -2F15:3A; -2F16:3A; -2F17:78; -2F18:B7; -2F19:28; -2F1A:02; -2F1B:CB; -2F1C:96; -2F1D:7E; -2F1E:E6; -2F1F:06; -2F20:32; -2F21:38; -2F22:78; -2F23:AF; -2F24:32; -2F25:36; -2F26:78; -2F27:C9; -2F28:21; -2F29:FE; -2F2A:68; -2F2B:0E; -2F2C:08; -2F2D:06; -2F2E:06; -2F2F:7E; -2F30:F6; -2F31:04; -2F32:1F; -2F33:30; -2F34:2D; -2F35:10; -2F36:FB; -2F37:CB; -2F38:05; -2F39:0D; -2F3A:20; -2F3B:F1; -2F3C:06; -2F3D:04; -2F3E:21; -2F3F:DF; -2F40:68; -2F41:7E; -2F42:CB; -2F43:57; -2F44:28; -2F45:10; -2F46:CB; -2F47:05; -2F48:7E; -2F49:CB; -2F4A:57; -2F4B:28; -2F4C:0D; -2F4D:CB; -2F4E:05; -2F4F:7E; -2F50:CB; -2F51:57; -2F52:28; -2F53:0A; -2F54:AF; -2F55:C9; -2F56:0E; -2F57:03; -2F58:18; -2F59:06; -2F5A:0E; -2F5B:02; -2F5C:18; -2F5D:02; -2F5E:0E; -2F5F:01; -2F60:F6; -2F61:04; -2F62:5F; -2F63:3E; -2F64:06; -2F65:90; -2F66:CB; -2F67:27; -2F68:CB; -2F69:27; -2F6A:CB; -2F6B:27; -2F6C:C6; -2F6D:08; -2F6E:91; -2F6F:ED; -2F70:43; -2F71:42; -2F72:78; -2F73:22; -2F74:44; -2F75:78; -2F76:21; -2F77:D9; -2F78:01; -2F79:4F; -2F7A:06; -2F7B:00; -2F7C:3A; -2F7D:FB; -2F7E:68; -2F7F:CB; -2F80:57; -2F81:20; -2F82:0A; -2F83:21; -2F84:38; -2F85:78; -2F86:CB; -2F87:C6; -2F88:21; -2F89:09; -2F8A:02; -2F8B:18; -2F8C:3D; -2F8D:3A; -2F8E:FD; -2F8F:68; -2F90:CB; -2F91:57; -2F92:20; -2F93:39; -2F94:3A; -2F95:7F; -2F96:68; -2F97:CB; -2F98:57; -2F99:20; -2F9A:0E; -2F9B:21; -2F9C:38; -2F9D:78; -2F9E:CB; -2F9F:6E; -2FA0:20; -2FA1:04; -2FA2:7E; -2FA3:EE; -2FA4:22; -2FA5:77; -2FA6:AF; -2FA7:C1; -2FA8:C9; -2FA9:21; -2FAA:38; -2FAB:78; -2FAC:CB; -2FAD:FE; -2FAE:CB; -2FAF:56; -2FB0:28; -2FB1:05; -2FB2:21; -2FB3:69; -2FB4:02; -2FB5:18; -2FB6:13; -2FB7:3A; -2FB8:BF; -2FB9:68; -2FBA:CB; -2FBB:57; -2FBC:20; -2FBD:07; -2FBE:CB; -2FBF:D6; -2FC0:AF; -2FC1:32; -2FC2:3A; -2FC3:78; -2FC4:C9; -2FC5:CB; -2FC6:96; -2FC7:21; -2FC8:39; -2FC9:02; -2FCA:09; -2FCB:7E; -2FCC:C9; -2FCD:3A; -2FCE:38; -2FCF:78; -2FD0:E6; -2FD1:81; -2FD2:28; -2FD3:F6; -2FD4:AF; -2FD5:E1; -2FD6:C9; -2FD7:21; -2FD8:38; -2FD9:78; -2FDA:CB; -2FDB:6E; -2FDC:28; -2FDD:25; -2FDE:3A; -2FDF:3A; -2FE0:78; -2FE1:3C; -2FE2:32; -2FE3:3A; -2FE4:78; -2FE5:FE; -2FE6:2A; -2FE7:28; -2FE8:02; -2FE9:AF; -2FEA:C9; -2FEB:7E; -2FEC:E6; -2FED:DF; -2FEE:F6; -2FEF:40; -2FF0:32; -2FF1:38; -2FF2:78; -2FF3:AF; -2FF4:32; -2FF5:3A; -2FF6:78; -2FF7:CB; -2FF8:66; -2FF9:20; -2FFA:04; -2FFB:3A; -2FFC:36; -2FFD:78; -2FFE:C9; -2FFF:3A; -3000:37; -3001:78; -3002:C9; -3003:CB; -3004:76; -3005:20; -3006:07; -3007:CB; -3008:EE; -3009:AF; -300A:32; -300B:3A; -300C:78; -300D:C9; -300E:3A; -300F:3A; -3010:78; -3011:3C; -3012:32; -3013:3A; -3014:78; -3015:FE; -3016:06; -3017:28; -3018:DA; -3019:AF; -301A:C9; -301B:B7; -301C:C8; -301D:F5; -301E:CD; -301F:39; -3020:30; -3021:F1; -3022:FE; -3023:0D; -3024:C8; -3025:FE; -3026:01; -3027:C8; -3028:3A; -3029:39; -302A:78; -302B:CB; -302C:47; -302D:C0; -302E:3E; -302F:20; -3030:32; -3031:41; -3032:78; -3033:2A; -3034:20; -3035:78; -3036:C3; -3037:B2; -3038:3E; -3039:21; -303A:38; -303B:78; -303C:CB; -303D:7E; -303E:CA; -303F:57; -3040:31; -3041:B7; -3042:F2; -3043:57; -3044:31; -3045:F5; -3046:D6; -3047:80; -3048:3C; -3049:47; -304A:21; -304B:4F; -304C:16; -304D:23; -304E:CB; -304F:7E; -3050:28; -3051:FB; -3052:10; -3053:F9; -3054:7E; -3055:CD; -3056:82; -3057:30; -3058:7E; -3059:CB; -305A:7F; -305B:28; -305C:F8; -305D:F1; -305E:06; -305F:16; -3060:21; -3061:99; -3062:02; -3063:BE; -3064:28; -3065:16; -3066:23; -3067:10; -3068:FA; -3069:FE; -306A:B0; -306B:C0; -306C:3E; -306D:20; -306E:CD; -306F:82; -3070:30; -3071:3E; -3072:46; -3073:CD; -3074:82; -3075:30; -3076:3E; -3077:4E; -3078:CD; -3079:82; -307A:30; -307B:C9; -307C:3E; -307D:28; -307E:CD; -307F:82; -3080:30; -3081:C9; -3082:E6; -3083:7F; -3084:E5; -3085:CD; -3086:57; -3087:31; -3088:E1; -3089:23; -308A:C9; -308B:F5; -308C:3A; -308D:3B; -308E:78; -308F:CB; -3090:5F; -3091:28; -3092:17; -3093:E6; -3094:F7; -3095:32; -3096:3B; -3097:78; -3098:32; -3099:00; -309A:68; -309B:01; -309C:00; -309D:02; -309E:21; -309F:00; -30A0:70; -30A1:CD; -30A2:BE; -30A3:3E; -30A4:23; -30A5:0B; -30A6:79; -30A7:B0; -30A8:20; -30A9:F7; -30AA:F1; -30AB:21; -30AC:39; -30AD:78; -30AE:CB; -30AF:6E; -30B0:CA; -30B1:06; -30B2:31; -30B3:FE; -30B4:20; -30B5:D2; -30B6:C0; -30B7:30; -30B8:F5; -30B9:3A; -30BA:AF; -30BB:7A; -30BC:B7; -30BD:20; -30BE:FA; -30BF:F1; -30C0:F3; -30C1:2A; -30C2:B0; -30C3:7A; -30C4:77; -30C5:23; -30C6:22; -30C7:B0; -30C8:7A; -30C9:21; -30CA:AF; -30CB:7A; -30CC:34; -30CD:F5; -30CE:3A; -30CF:A6; -30D0:78; -30D1:86; -30D2:32; -30D3:AE; -30D4:7A; -30D5:F1; -30D6:FB; -30D7:FE; -30D8:20; -30D9:DA; -30DA:E3; -30DB:30; -30DC:3E; -30DD:14; -30DE:BE; -30DF:DA; -30E0:DE; -30E1:30; -30E2:C9; -30E3:AF; -30E4:BE; -30E5:20; -30E6:FD; -30E7:C9; -30E8:3A; -30E9:AF; -30EA:7A; -30EB:B7; -30EC:C8; -30ED:47; -30EE:21; -30EF:B2; -30F0:7A; -30F1:E5; -30F2:7E; -30F3:23; -30F4:E5; -30F5:C5; -30F6:CD; -30F7:06; -30F8:31; -30F9:C1; -30FA:E1; -30FB:10; -30FC:F5; -30FD:E1; -30FE:22; -30FF:B0; -3100:7A; -3101:AF; -3102:32; -3103:AF; -3104:7A; -3105:C9; -3106:CD; -3107:0D; -3108:03; -3109:B7; -310A:28; -310B:04; -310C:FE; -310D:0D; -310E:20; -310F:4A; -3110:F5; -3111:2A; -3112:20; -3113:78; -3114:3A; -3115:A6; -3116:78; -3117:4F; -3118:AF; -3119:47; -311A:32; -311B:A6; -311C:78; -311D:ED; -311E:42; -311F:01; -3120:20; -3121:00; -3122:09; -3123:7C; -3124:FE; -3125:72; -3126:F4; -3127:F3; -3128:33; -3129:22; -312A:20; -312B:78; -312C:CD; -312D:53; -312E:00; -312F:F1; -3130:B7; -3131:C8; -3132:CD; -3133:A8; -3134:33; -3135:FE; -3136:80; -3137:C8; -3138:FE; -3139:81; -313A:20; -313B:05; -313C:3D; -313D:77; -313E:23; -313F:77; -3140:C9; -3141:3E; -3142:80; -3143:77; -3144:C9; -3145:CB; -3146:77; -3147:28; -3148:04; -3149:C3; -314A:60; -314B:3F; -314C:00; -314D:E6; -314E:8F; -314F:47; -3150:3A; -3151:46; -3152:78; -3153:B0; -3154:47; -3155:18; -3156:5F; -3157:CD; -3158:0D; -3159:03; -315A:B7; -315B:FA; -315C:45; -315D:31; -315E:FE; -315F:0D; -3160:C8; -3161:FE; -3162:08; -3163:CA; -3164:27; -3165:32; -3166:FE; -3167:1B; -3168:CA; -3169:53; -316A:32; -316B:FE; -316C:0A; -316D:CA; -316E:6D; -316F:32; -3170:FE; -3171:08; -3172:CA; -3173:27; -3174:32; -3175:FE; -3176:09; -3177:CA; -3178:B8; -3179:31; -317A:FE; -317B:01; -317C:C8; -317D:FE; -317E:7F; -317F:CA; -3180:CB; -3181:33; -3182:FE; -3183:15; -3184:CA; -3185:C6; -3186:32; -3187:FE; -3188:18; -3189:CA; -318A:27; -318B:32; -318C:FE; -318D:19; -318E:CA; -318F:B8; -3190:31; -3191:FE; -3192:1B; -3193:CA; -3194:53; -3195:32; -3196:FE; -3197:1C; -3198:CA; -3199:87; -319A:32; -319B:FE; -319C:1D; -319D:CA; -319E:B4; -319F:32; -31A0:FE; -31A1:1F; -31A2:CA; -31A3:92; -31A4:32; -31A5:FE; -31A6:20; -31A7:F8; -31A8:C3; -31A9:CA; -31AA:3E; -31AB:21; -31AC:38; -31AD:78; -31AE:CB; -31AF:4E; -31B0:E1; -31B1:28; -31B2:02; -31B3:F6; -31B4:40; -31B5:47; -31B6:78; -31B7:77; -31B8:CD; -31B9:BF; -31BA:31; -31BB:CD; -31BC:50; -31BD:00; -31BE:C9; -31BF:3A; -31C0:A6; -31C1:78; -31C2:3C; -31C3:FE; -31C4:20; -31C5:20; -31C6:2B; -31C7:CD; -31C8:A8; -31C9:33; -31CA:FE; -31CB:81; -31CC:28; -31CD:23; -31CE:B7; -31CF:20; -31D0:35; -31D1:47; -31D2:3A; -31D3:39; -31D4:78; -31D5:CB; -31D6:47; -31D7:78; -31D8:C8; -31D9:AF; -31DA:23; -31DB:77; -31DC:23; -31DD:E5; -31DE:ED; -31DF:4B; -31E0:A4; -31E1:78; -31E2:0B; -31E3:0B; -31E4:B7; -31E5:ED; -31E6:42; -31E7:E1; -31E8:30; -31E9:07; -31EA:7E; -31EB:B7; -31EC:20; -31ED:03; -31EE:3E; -31EF:80; -31F0:77; -31F1:AF; -31F2:32; -31F3:A6; -31F4:78; -31F5:2A; -31F6:20; -31F7:78; -31F8:01; -31F9:01; -31FA:00; -31FB:09; -31FC:7C; -31FD:FE; -31FE:72; -31FF:F4; -3200:F3; -3201:33; -3202:22; -3203:20; -3204:78; -3205:C9; -3206:F5; -3207:ED; -3208:5B; -3209:20; -320A:78; -320B:13; -320C:7A; -320D:FE; -320E:72; -320F:28; -3210:10; -3211:E5; -3212:21; -3213:39; -3214:78; -3215:CB; -3216:46; -3217:20; -3218:07; -3219:CB; -321A:66; -321B:20; -321C:03; -321D:CD; -321E:2C; -321F:33; -3220:E1; -3221:F1; -3222:3C; -3223:77; -3224:C3; -3225:D9; -3226:31; -3227:3A; -3228:A6; -3229:78; -322A:3D; -322B:F2; -322C:35; -322D:32; -322E:CD; -322F:A8; -3230:33; -3231:B7; -3232:C0; -3233:3E; -3234:1F; -3235:32; -3236:A6; -3237:78; -3238:01; -3239:01; -323A:00; -323B:2A; -323C:20; -323D:78; -323E:AF; -323F:ED; -3240:42; -3241:7C; -3242:FE; -3243:70; -3244:DA; -3245:4E; -3246:32; -3247:22; -3248:20; -3249:78; -324A:CD; -324B:53; -324C:00; -324D:C9; -324E:AF; -324F:32; -3250:A6; -3251:78; -3252:C9; -3253:21; -3254:39; -3255:78; -3256:CB; -3257:66; -3258:C0; -3259:01; -325A:20; -325B:00; -325C:2A; -325D:20; -325E:78; -325F:AF; -3260:ED; -3261:42; -3262:7C; -3263:FE; -3264:70; -3265:F8; -3266:22; -3267:20; -3268:78; -3269:CD; -326A:53; -326B:00; -326C:C9; -326D:21; -326E:39; -326F:78; -3270:CB; -3271:66; -3272:C0; -3273:01; -3274:20; -3275:00; -3276:2A; -3277:20; -3278:78; -3279:09; -327A:7C; -327B:FE; -327C:72; -327D:F4; -327E:24; -327F:34; -3280:22; -3281:20; -3282:78; -3283:CD; -3284:53; -3285:00; -3286:C9; -3287:21; -3288:00; -3289:70; -328A:22; -328B:20; -328C:78; -328D:AF; -328E:32; -328F:A6; -3290:78; -3291:C9; -3292:21; -3293:00; -3294:70; -3295:22; -3296:20; -3297:78; -3298:01; -3299:00; -329A:02; -329B:CD; -329C:BE; -329D:3E; -329E:23; -329F:0B; -32A0:79; -32A1:B0; -32A2:20; -32A3:F7; -32A4:AF; -32A5:32; -32A6:A6; -32A7:78; -32A8:06; -32A9:10; -32AA:3E; -32AB:80; -32AC:21; -32AD:D7; -32AE:7A; -32AF:77; -32B0:23; -32B1:10; -32B2:FC; -32B3:C9; -32B4:2A; -32B5:20; -32B6:78; -32B7:3A; -32B8:A6; -32B9:78; -32BA:4F; -32BB:AF; -32BC:47; -32BD:32; -32BE:A6; -32BF:78; -32C0:ED; -32C1:42; -32C2:22; -32C3:20; -32C4:78; -32C5:C9; -32C6:CD; -32C7:A8; -32C8:33; -32C9:FE; -32CA:81; -32CB:28; -32CC:31; -32CD:3A; -32CE:A6; -32CF:78; -32D0:FE; -32D1:1F; -32D2:28; -32D3:25; -32D4:4F; -32D5:AF; -32D6:47; -32D7:2A; -32D8:20; -32D9:78; -32DA:ED; -32DB:42; -32DC:01; -32DD:1F; -32DE:00; -32DF:09; -32E0:CD; -32E1:E9; -32E2:3E; -32E3:20; -32E4:14; -32E5:E5; -32E6:D1; -32E7:2B; -32E8:3A; -32E9:A6; -32EA:78; -32EB:4F; -32EC:3E; -32ED:1F; -32EE:91; -32EF:4F; -32F0:ED; -32F1:B8; -32F2:CD; -32F3:F6; -32F4:3E; -32F5:32; -32F6:3C; -32F7:78; -32F8:C9; -32F9:CD; -32FA:A8; -32FB:33; -32FC:B7; -32FD:C8; -32FE:FE; -32FF:80; -3300:28; -3301:1E; -3302:3A; -3303:A6; -3304:78; -3305:4F; -3306:AF; -3307:47; -3308:2A; -3309:20; -330A:78; -330B:ED; -330C:42; -330D:01; -330E:3F; -330F:00; -3310:09; -3311:CD; -3312:E9; -3313:3E; -3314:C0; -3315:E5; -3316:D1; -3317:2B; -3318:3A; -3319:A6; -331A:78; -331B:4F; -331C:3E; -331D:3F; -331E:18; -331F:CE; -3320:E5; -3321:CD; -3322:2C; -3323:33; -3324:E1; -3325:3E; -3326:81; -3327:77; -3328:23; -3329:AF; -332A:77; -332B:C9; -332C:2A; -332D:20; -332E:78; -332F:7C; -3330:FE; -3331:71; -3332:20; -3333:2B; -3334:7D; -3335:FE; -3336:E0; -3337:DA; -3338:5F; -3339:33; -333A:3A; -333B:A6; -333C:78; -333D:F5; -333E:3A; -333F:D7; -3340:7A; -3341:FE; -3342:81; -3343:20; -3344:08; -3345:E5; -3346:CD; -3347:F3; -3348:33; -3349:E1; -334A:CD; -334B:17; -334C:03; -334D:E5; -334E:CD; -334F:F3; -3350:33; -3351:E1; -3352:CD; -3353:17; -3354:03; -3355:F1; -3356:32; -3357:A6; -3358:78; -3359:D1; -335A:E1; -335B:2B; -335C:E5; -335D:D5; -335E:C9; -335F:3A; -3360:A6; -3361:78; -3362:4F; -3363:AF; -3364:47; -3365:ED; -3366:42; -3367:01; -3368:40; -3369:00; -336A:09; -336B:E5; -336C:EB; -336D:21; -336E:00; -336F:72; -3370:ED; -3371:52; -3372:E5; -3373:C1; -3374:21; -3375:DF; -3376:71; -3377:11; -3378:FF; -3379:71; -337A:79; -337B:B0; -337C:28; -337D:02; -337E:ED; -337F:B8; -3380:E1; -3381:CD; -3382:02; -3383:3F; -3384:00; -3385:12; -3386:1B; -3387:10; -3388:FC; -3389:CD; -338A:A8; -338B:33; -338C:E5; -338D:C1; -338E:21; -338F:E6; -3390:7A; -3391:E5; -3392:B7; -3393:ED; -3394:42; -3395:E5; -3396:C1; -3397:E1; -3398:E5; -3399:D1; -339A:2B; -339B:ED; -339C:B8; -339D:3A; -339E:E6; -339F:7A; -33A0:FE; -33A1:81; -33A2:C0; -33A3:2A; -33A4:20; -33A5:78; -33A6:18; -33A7:B7; -33A8:3A; -33A9:A6; -33AA:78; -33AB:4F; -33AC:AF; -33AD:47; -33AE:2A; -33AF:20; -33B0:78; -33B1:ED; -33B2:42; -33B3:E5; -33B4:C1; -33B5:78; -33B6:E6; -33B7:0F; -33B8:CB; -33B9:3F; -33BA:47; -33BB:CB; -33BC:19; -33BD:CB; -33BE:39; -33BF:CB; -33C0:39; -33C1:CB; -33C2:39; -33C3:CB; -33C4:39; -33C5:21; -33C6:D7; -33C7:7A; -33C8:09; -33C9:7E; -33CA:C9; -33CB:CD; -33CC:A8; -33CD:33; -33CE:FE; -33CF:81; -33D0:2A; -33D1:20; -33D2:78; -33D3:E5; -33D4:D1; -33D5:23; -33D6:3A; -33D7:A6; -33D8:78; -33D9:4F; -33DA:28; -33DB:13; -33DC:FE; -33DD:1F; -33DE:28; -33DF:08; -33E0:3E; -33E1:1F; -33E2:91; -33E3:4F; -33E4:AF; -33E5:47; -33E6:ED; -33E7:B0; -33E8:CD; -33E9:F6; -33EA:3E; -33EB:CD; -33EC:50; -33ED:00; -33EE:C9; -33EF:3E; -33F0:3F; -33F1:18; -33F2:EF; -33F3:11; -33F4:00; -33F5:70; -33F6:21; -33F7:20; -33F8:70; -33F9:01; -33FA:E0; -33FB:01; -33FC:ED; -33FD:B0; -33FE:CD; -33FF:02; -3400:3F; -3401:00; -3402:12; -3403:13; -3404:10; -3405:FC; -3406:21; -3407:D7; -3408:7A; -3409:E5; -340A:D1; -340B:23; -340C:01; -340D:0F; -340E:00; -340F:ED; -3410:B0; -3411:1A; -3412:FE; -3413:81; -3414:20; -3415:03; -3416:AF; -3417:18; -3418:02; -3419:3E; -341A:80; -341B:12; -341C:AF; -341D:32; -341E:A6; -341F:78; -3420:21; -3421:E0; -3422:71; -3423:C9; -3424:3A; -3425:D7; -3426:7A; -3427:FE; -3428:81; -3429:CC; -342A:F3; -342B:33; -342C:CD; -342D:F3; -342E:33; -342F:C9; -3430:21; -3431:39; -3432:78; -3433:B7; -3434:20; -3435:0B; -3436:CB; -3437:CE; -3438:01; -3439:FF; -343A:03; -343B:0B; -343C:79; -343D:B0; -343E:20; -343F:FB; -3440:C9; -3441:CB; -3442:46; -3443:C0; -3444:FE; -3445:0D; -3446:28; -3447:06; -3448:FE; -3449:01; -344A:20; -344B:04; -344C:CB; -344D:D6; -344E:CB; -344F:C6; -3450:E5; -3451:21; -3452:A0; -3453:00; -3454:01; -3455:06; -3456:00; -3457:CD; -3458:5C; -3459:34; -345A:E1; -345B:C9; -345C:3A; -345D:3B; -345E:78; -345F:57; -3460:CD; -3461:69; -3462:34; -3463:0B; -3464:79; -3465:B0; -3466:20; -3467:F8; -3468:C9; -3469:C5; -346A:7A; -346B:EE; -346C:21; -346D:32; -346E:00; -346F:68; -3470:E5; -3471:C1; -3472:0B; -3473:79; -3474:B0; -3475:20; -3476:FB; -3477:7A; -3478:32; -3479:00; -347A:68; -347B:E5; -347C:C1; -347D:0B; -347E:79; -347F:B0; -3480:20; -3481:FB; -3482:C1; -3483:C9; -3484:CD; -3485:A0; -3486:3F; -3487:3E; -3488:20; -3489:32; -348A:3B; -348B:78; -348C:32; -348D:00; -348E:68; -348F:3E; -3490:3C; -3491:32; -3492:3A; -3493:78; -3494:3E; -3495:10; -3496:32; -3497:41; -3498:78; -3499:AF; -349A:32; -349B:AF; -349C:7A; -349D:21; -349E:B2; -349F:7A; -34A0:22; -34A1:B0; -34A2:7A; -34A3:3E; -34A4:C9; -34A5:C3; -34A6:37; -34A7:3E; -34A8:C9; -34A9:F3; -34AA:0E; -34AB:F0; -34AC:CD; -34AD:58; -34AE:35; -34AF:DA; -34B0:FE; -34B1:3A; -34B2:E5; -34B3:01; -34B4:9A; -34B5:01; -34B6:0B; -34B7:79; -34B8:B0; -34B9:20; -34BA:FB; -34BB:CD; -34BC:F8; -34BD:3A; -34BE:DD; -34BF:21; -34C0:23; -34C1:78; -34C2:2A; -34C3:A4; -34C4:78; -34C5:7D; -34C6:CD; -34C7:11; -34C8:35; -34C9:DD; -34CA:77; -34CB:00; -34CC:AF; -34CD:DD; -34CE:77; -34CF:01; -34D0:7C; -34D1:CD; -34D2:11; -34D3:35; -34D4:CD; -34D5:8E; -34D6:38; -34D7:EB; -34D8:2A; -34D9:F9; -34DA:78; -34DB:7D; -34DC:CD; -34DD:11; -34DE:35; -34DF:CD; -34E0:8E; -34E1:38; -34E2:7C; -34E3:CD; -34E4:11; -34E5:35; -34E6:CD; -34E7:8E; -34E8:38; -34E9:CD; -34EA:F8; -34EB:3A; -34EC:1A; -34ED:13; -34EE:CD; -34EF:11; -34F0:35; -34F1:CD; -34F2:8E; -34F3:38; -34F4:CD; -34F5:F8; -34F6:3A; -34F7:DF; -34F8:20; -34F9:F2; -34FA:DD; -34FB:7E; -34FC:00; -34FD:CD; -34FE:11; -34FF:35; -3500:DD; -3501:7E; -3502:01; -3503:CD; -3504:11; -3505:35; -3506:06; -3507:14; -3508:AF; -3509:CD; -350A:11; -350B:35; -350C:10; -350D:FB; -350E:E1; -350F:FB; -3510:C9; -3511:F5; -3512:C5; -3513:E5; -3514:2E; -3515:08; -3516:67; -3517:CD; -3518:42; -3519:35; -351A:CB; -351B:04; -351C:30; -351D:0D; -351E:CD; -351F:42; -3520:35; -3521:CD; -3522:42; -3523:35; -3524:2D; -3525:20; -3526:F0; -3527:E1; -3528:C1; -3529:F1; -352A:C9; -352B:3A; -352C:3B; -352D:78; -352E:F6; -352F:06; -3530:32; -3531:00; -3532:68; -3533:06; -3534:99; -3535:10; -3536:FE; -3537:E6; -3538:F9; -3539:32; -353A:00; -353B:68; -353C:06; -353D:99; -353E:10; -353F:FE; -3540:18; -3541:E2; -3542:3A; -3543:3B; -3544:78; -3545:F6; -3546:06; -3547:32; -3548:00; -3549:68; -354A:06; -354B:4C; -354C:10; -354D:FE; -354E:E6; -354F:F9; -3550:32; -3551:00; -3552:68; -3553:06; -3554:4C; -3555:10; -3556:FE; -3557:C9; -3558:CD; -3559:8C; -355A:35; -355B:06; -355C:FF; -355D:3E; -355E:80; -355F:CD; -3560:11; -3561:35; -3562:CD; -3563:E8; -3564:3A; -3565:D8; -3566:10; -3567:F5; -3568:06; -3569:05; -356A:3E; -356B:FE; -356C:CD; -356D:11; -356E:35; -356F:CD; -3570:E8; -3571:3A; -3572:D8; -3573:10; -3574:F5; -3575:79; -3576:CD; -3577:11; -3578:35; -3579:CD; -357A:E8; -357B:3A; -357C:D8; -357D:3A; -357E:D6; -357F:7A; -3580:47; -3581:11; -3582:9D; -3583:7A; -3584:1A; -3585:13; -3586:CD; -3587:11; -3588:35; -3589:10; -358A:F9; -358B:C9; -358C:06; -358D:10; -358E:11; -358F:9D; -3590:7A; -3591:7E; -3592:FE; -3593:3A; -3594:28; -3595:12; -3596:B7; -3597:28; -3598:0F; -3599:CF; -359A:22; -359B:7E; -359C:B7; -359D:28; -359E:09; -359F:23; -35A0:FE; -35A1:22; -35A2:28; -35A3:04; -35A4:12; -35A5:13; -35A6:10; -35A7:F3; -35A8:AF; -35A9:12; -35AA:3E; -35AB:11; -35AC:90; -35AD:32; -35AE:D6; -35AF:7A; -35B0:C9; -35B1:3A; -35B2:4C; -35B3:78; -35B4:B7; -35B5:C0; -35B6:3A; -35B7:3B; -35B8:78; -35B9:CB; -35BA:5F; -35BB:28; -35BC:0B; -35BD:E6; -35BE:F7; -35BF:32; -35C0:3B; -35C1:78; -35C2:32; -35C3:00; -35C4:68; -35C5:CD; -35C6:92; -35C7:32; -35C8:21; -35C9:FF; -35CA:71; -35CB:22; -35CC:20; -35CD:78; -35CE:3E; -35CF:1F; -35D0:32; -35D1:A6; -35D2:78; -35D3:3A; -35D4:E5; -35D5:7A; -35D6:FE; -35D7:81; -35D8:C0; -35D9:3D; -35DA:32; -35DB:E5; -35DC:7A; -35DD:32; -35DE:E6; -35DF:7A; -35E0:C9; -35E1:21; -35E2:42; -35E3:38; -35E4:CD; -35E5:F4; -35E6:37; -35E7:CD; -35E8:F8; -35E9:3A; -35EA:3A; -35EB:00; -35EC:68; -35ED:CB; -35EE:77; -35EF:20; -35F0:F6; -35F1:CD; -35F2:8F; -35F3:37; -35F4:38; -35F5:F1; -35F6:CB; -35F7:47; -35F8:28; -35F9:F7; -35FA:06; -35FB:07; -35FC:CD; -35FD:8F; -35FE:37; -35FF:38; -3600:E6; -3601:10; -3602:F9; -3603:FE; -3604:80; -3605:20; -3606:E0; -3607:CD; -3608:75; -3609:37; -360A:DA; -360B:E7; -360C:35; -360D:FE; -360E:80; -360F:28; -3610:F6; -3611:06; -3612:04; -3613:FE; -3614:FE; -3615:C2; -3616:E7; -3617:35; -3618:CD; -3619:75; -361A:37; -361B:DA; -361C:E7; -361D:35; -361E:10; -361F:F3; -3620:CD; -3621:75; -3622:37; -3623:32; -3624:D2; -3625:7A; -3626:21; -3627:B2; -3628:7A; -3629:06; -362A:12; -362B:CD; -362C:75; -362D:37; -362E:77; -362F:B7; -3630:28; -3631:06; -3632:23; -3633:10; -3634:F6; -3635:C3; -3636:E7; -3637:35; -3638:21; -3639:5A; -363A:38; -363B:CD; -363C:F4; -363D:37; -363E:21; -363F:B2; -3640:7A; -3641:CD; -3642:14; -3643:38; -3644:21; -3645:B2; -3646:7A; -3647:11; -3648:9D; -3649:7A; -364A:1A; -364B:B7; -364C:C8; -364D:BE; -364E:C2; -364F:E7; -3650:35; -3651:23; -3652:13; -3653:18; -3654:F5; -3655:C9; -3656:E5; -3657:21; -3658:39; -3659:78; -365A:CB; -365B:B6; -365C:CB; -365D:9E; -365E:E1; -365F:F3; -3660:CD; -3661:8C; -3662:35; -3663:E5; -3664:CD; -3665:B1; -3666:35; -3667:21; -3668:42; -3669:38; -366A:CD; -366B:F4; -366C:37; -366D:CD; -366E:E7; -366F:35; -3670:3A; -3671:D2; -3672:7A; -3673:FE; -3674:F2; -3675:28; -3676:F6; -3677:21; -3678:60; -3679:38; -367A:CD; -367B:04; -367C:38; -367D:DD; -367E:21; -367F:23; -3680:78; -3681:CD; -3682:68; -3683:38; -3684:DA; -3685:11; -3686:37; -3687:E5; -3688:ED; -3689:52; -368A:DA; -368B:11; -368C:37; -368D:ED; -368E:53; -368F:1E; -3690:78; -3691:E5; -3692:C1; -3693:E1; -3694:3A; -3695:39; -3696:78; -3697:CB; -3698:5F; -3699:C2; -369A:42; -369B:37; -369C:CD; -369D:73; -369E:3F; -369F:12; -36A0:CD; -36A1:8E; -36A2:38; -36A3:13; -36A4:0B; -36A5:79; -36A6:B0; -36A7:20; -36A8:F3; -36A9:CD; -36AA:75; -36AB:37; -36AC:DD; -36AD:BE; -36AE:00; -36AF:C2; -36B0:11; -36B1:37; -36B2:CD; -36B3:75; -36B4:37; -36B5:DD; -36B6:BE; -36B7:01; -36B8:C2; -36B9:11; -36BA:37; -36BB:22; -36BC:F9; -36BD:78; -36BE:FB; -36BF:3E; -36C0:0D; -36C1:CD; -36C2:8B; -36C3:30; -36C4:3A; -36C5:D2; -36C6:7A; -36C7:FE; -36C8:F1; -36C9:20; -36CA:04; -36CB:2A; -36CC:1E; -36CD:78; -36CE:E9; -36CF:21; -36D0:29; -36D1:19; -36D2:CD; -36D3:A7; -36D4:28; -36D5:2A; -36D6:A4; -36D7:78; -36D8:E5; -36D9:21; -36DA:39; -36DB:78; -36DC:CB; -36DD:76; -36DE:20; -36DF:03; -36E0:C3; -36E1:E8; -36E2:1A; -36E3:21; -36E4:39; -36E5:78; -36E6:CB; -36E7:B6; -36E8:D1; -36E9:CD; -36EA:FC; -36EB:1A; -36EC:CD; -36ED:B5; -36EE:79; -36EF:CD; -36F0:5D; -36F1:1B; -36F2:CD; -36F3:B8; -36F4:79; -36F5:21; -36F6:FF; -36F7:FF; -36F8:22; -36F9:A2; -36FA:78; -36FB:21; -36FC:E8; -36FD:79; -36FE:11; -36FF:70; -3700:05; -3701:1A; -3702:77; -3703:B7; -3704:28; -3705:04; -3706:23; -3707:13; -3708:18; -3709:F7; -370A:21; -370B:E7; -370C:79; -370D:AF; -370E:C3; -370F:81; -3710:1A; -3711:21; -3712:4A; -3713:38; -3714:FB; -3715:CD; -3716:A7; -3717:28; -3718:F3; -3719:3A; -371A:4C; -371B:78; -371C:B7; -371D:C2; -371E:67; -371F:36; -3720:21; -3721:FF; -3722:71; -3723:22; -3724:20; -3725:78; -3726:3E; -3727:1F; -3728:32; -3729:A6; -372A:78; -372B:C3; -372C:67; -372D:36; -372E:E5; -372F:21; -3730:39; -3731:78; -3732:CB; -3733:F6; -3734:E1; -3735:C3; -3736:5F; -3737:36; -3738:E5; -3739:21; -373A:39; -373B:78; -373C:CB; -373D:DE; -373E:E1; -373F:C3; -3740:5F; -3741:36; -3742:EB; -3743:CD; -3744:75; -3745:37; -3746:BE; -3747:28; -3748:09; -3749:21; -374A:6C; -374B:37; -374C:CD; -374D:A7; -374E:28; -374F:C3; -3750:83; -3751:01; -3752:23; -3753:0B; -3754:79; -3755:B0; -3756:20; -3757:EB; -3758:21; -3759:39; -375A:78; -375B:CB; -375C:9E; -375D:21; -375E:6C; -375F:37; -3760:CD; -3761:A7; -3762:28; -3763:21; -3764:80; -3765:03; -3766:CD; -3767:A7; -3768:28; -3769:C3; -376A:CF; -376B:36; -376C:0D; -376D:56; -376E:45; -376F:52; -3770:49; -3771:46; -3772:59; -3773:20; -3774:00; -3775:C5; -3776:D5; -3777:06; -3778:08; -3779:CD; -377A:8F; -377B:37; -377C:38; -377D:0E; -377E:10; -377F:F9; -3780:D1; -3781:C1; -3782:32; -3783:D3; -3784:7A; -3785:CD; -3786:F8; -3787:3A; -3788:3A; -3789:D3; -378A:7A; -378B:C9; -378C:D1; -378D:C1; -378E:C9; -378F:C5; -3790:01; -3791:FF; -3792:07; -3793:3A; -3794:00; -3795:68; -3796:CB; -3797:77; -3798:28; -3799:08; -379A:0B; -379B:79; -379C:B0; -379D:20; -379E:F4; -379F:C1; -37A0:37; -37A1:C9; -37A2:3A; -37A3:00; -37A4:68; -37A5:CB; -37A6:77; -37A7:20; -37A8:EA; -37A9:3A; -37AA:00; -37AB:68; -37AC:CB; -37AD:77; -37AE:20; -37AF:E3; -37B0:06; -37B1:52; -37B2:10; -37B3:FE; -37B4:3A; -37B5:00; -37B6:68; -37B7:CB; -37B8:77; -37B9:20; -37BA:09; -37BB:3A; -37BC:00; -37BD:68; -37BE:CB; -37BF:77; -37C0:28; -37C1:F9; -37C2:18; -37C3:CC; -37C4:06; -37C5:5A; -37C6:0E; -37C7:00; -37C8:3A; -37C9:00; -37CA:68; -37CB:CB; -37CC:77; -37CD:28; -37CE:0B; -37CF:10; -37D0:F7; -37D1:79; -37D2:3D; -37D3:1F; -37D4:CB; -37D5:12; -37D6:C1; -37D7:7A; -37D8:B7; -37D9:C9; -37DA:3A; -37DB:00; -37DC:68; -37DD:CB; -37DE:77; -37DF:20; -37E0:EE; -37E1:3A; -37E2:00; -37E3:68; -37E4:CB; -37E5:77; -37E6:20; -37E7:E7; -37E8:0C; -37E9:3A; -37EA:00; -37EB:68; -37EC:CB; -37ED:77; -37EE:20; -37EF:DF; -37F0:10; -37F1:F7; -37F2:18; -37F3:DD; -37F4:3A; -37F5:4C; -37F6:78; -37F7:B7; -37F8:C0; -37F9:11; -37FA:E0; -37FB:71; -37FC:06; -37FD:20; -37FE:CD; -37FF:F6; -3800:3E; -3801:13; -3802:10; -3803:FA; -3804:3A; -3805:4C; -3806:78; -3807:B7; -3808:C0; -3809:CD; -380A:0E; -380B:3F; -380C:7E; -380D:B7; -380E:C8; -380F:12; -3810:13; -3811:23; -3812:18; -3813:F8; -3814:3A; -3815:4C; -3816:78; -3817:B7; -3818:C0; -3819:11; -381A:E9; -381B:71; -381C:E5; -381D:3A; -381E:D2; -381F:7A; -3820:E6; -3821:0F; -3822:21; -3823:3F; -3824:38; -3825:85; -3826:6F; -3827:3E; -3828:00; -3829:8C; -382A:67; -382B:CD; -382C:21; -382D:3F; -382E:00; -382F:00; -3830:12; -3831:13; -3832:13; -3833:E1; -3834:7E; -3835:B7; -3836:C8; -3837:CD; -3838:33; -3839:3F; -383A:13; -383B:23; -383C:18; -383D:F6; -383E:C9; -383F:14; -3840:02; -3841:04; -3842:57; -3843:41; -3844:49; -3845:54; -3846:49; -3847:4E; -3848:47; -3849:00; -384A:0D; -384B:4C; -384C:4F; -384D:41; -384E:44; -384F:49; -3850:4E; -3851:47; -3852:20; -3853:45; -3854:52; -3855:52; -3856:4F; -3857:52; -3858:0D; -3859:00; -385A:46; -385B:4F; -385C:55; -385D:4E; -385E:44; -385F:00; -3860:4C; -3861:4F; -3862:41; -3863:44; -3864:49; -3865:4E; -3866:47; -3867:00; -3868:CD; -3869:75; -386A:37; -386B:D8; -386C:5F; -386D:DD; -386E:77; -386F:00; -3870:AF; -3871:DD; -3872:77; -3873:01; -3874:CD; -3875:75; -3876:37; -3877:D8; -3878:57; -3879:CD; -387A:8E; -387B:38; -387C:CD; -387D:75; -387E:37; -387F:D8; -3880:6F; -3881:CD; -3882:8E; -3883:38; -3884:CD; -3885:75; -3886:37; -3887:D8; -3888:67; -3889:CD; -388A:8E; -388B:38; -388C:B7; -388D:C9; -388E:DD; -388F:86; -3890:00; -3891:DD; -3892:77; -3893:00; -3894:3E; -3895:00; -3896:DD; -3897:8E; -3898:01; -3899:DD; -389A:77; -389B:01; -389C:C9; -389D:7E; -389E:FE; -389F:2C; -38A0:28; -38A1:20; -38A2:CD; -38A3:1C; -38A4:2B; -38A5:B7; -38A6:CA; -38A7:4A; -38A8:1E; -38A9:FE; -38AA:09; -38AB:D2; -38AC:4A; -38AD:1E; -38AE:3D; -38AF:E6; -38B0:07; -38B1:CB; -38B2:27; -38B3:CB; -38B4:27; -38B5:CB; -38B6:27; -38B7:CB; -38B8:27; -38B9:32; -38BA:46; -38BB:78; -38BC:7E; -38BD:B7; -38BE:C8; -38BF:FE; -38C0:3A; -38C1:C8; -38C2:CF; -38C3:2C; -38C4:CD; -38C5:1C; -38C6:2B; -38C7:B7; -38C8:20; -38C9:0C; -38CA:3A; -38CB:3B; -38CC:78; -38CD:CB; -38CE:A7; -38CF:32; -38D0:3B; -38D1:78; -38D2:32; -38D3:00; -38D4:68; -38D5:C9; -38D6:FE; -38D7:01; -38D8:C2; -38D9:4A; -38DA:1E; -38DB:3A; -38DC:3B; -38DD:78; -38DE:CB; -38DF:E7; -38E0:32; -38E1:3B; -38E2:78; -38E3:32; -38E4:00; -38E5:68; -38E6:C9; -38E7:0E; -38E8:C0; -38E9:CB; -38EA:09; -38EB:10; -38EC:FC; -38ED:1A; -38EE:A1; -38EF:47; -38F0:79; -38F1:CB; -38F2:08; -38F3:CB; -38F4:0F; -38F5:FE; -38F6:03; -38F7:20; -38F8:F8; -38F9:78; -38FA:3C; -38FB:E5; -38FC:CD; -38FD:8D; -38FE:09; -38FF:E1; -3900:C3; -3901:0F; -3902:39; -3903:47; -3904:1A; -3905:A1; -3906:12; -3907:F1; -3908:B7; -3909:F2; -390A:0F; -390B:39; -390C:1A; -390D:B0; -390E:12; -390F:CF; -3910:29; -3911:C9; -3912:F3; -3913:E5; -3914:3A; -3915:3B; -3916:78; -3917:CB; -3918:5F; -3919:C2; -391A:8E; -391B:39; -391C:21; -391D:00; -391E:70; -391F:0E; -3920:10; -3921:06; -3922:20; -3923:7E; -3924:B7; -3925:F2; -3926:2D; -3927:39; -3928:CD; -3929:73; -392A:2C; -392B:18; -392C:16; -392D:C3; -392E:44; -392F:3F; -3930:00; -3931:E6; -3932:3F; -3933:CD; -3934:56; -3935:39; -3936:18; -3937:0B; -3938:E6; -3939:3F; -393A:CB; -393B:6F; -393C:20; -393D:02; -393E:F6; -393F:40; -3940:CD; -3941:BA; -3942:3A; -3943:23; -3944:10; -3945:DD; -3946:3E; -3947:0D; -3948:CD; -3949:BA; -394A:3A; -394B:CD; -394C:F8; -394D:3A; -394E:0D; -394F:79; -3950:B7; -3951:20; -3952:CE; -3953:E1; -3954:FB; -3955:C9; -3956:F5; -3957:C5; -3958:D5; -3959:E5; -395A:6F; -395B:26; -395C:00; -395D:3E; -395E:08; -395F:CD; -3960:BA; -3961:3A; -3962:06; -3963:04; -3964:E5; -3965:D1; -3966:B7; -3967:ED; -3968:5A; -3969:10; -396A:FC; -396B:E5; -396C:C1; -396D:21; -396E:94; -396F:3B; -3970:09; -3971:3E; -3972:FF; -3973:CD; -3974:BA; -3975:3A; -3976:06; -3977:05; -3978:7E; -3979:23; -397A:CD; -397B:BA; -397C:3A; -397D:10; -397E:F9; -397F:3E; -3980:FF; -3981:CD; -3982:BA; -3983:3A; -3984:3E; -3985:0F; -3986:CD; -3987:BA; -3988:3A; -3989:E1; -398A:D1; -398B:C1; -398C:F1; -398D:C9; -398E:AF; -398F:32; -3990:D6; -3991:7A; -3992:32; -3993:D6; -3994:7A; -3995:3E; -3996:08; -3997:CD; -3998:BA; -3999:3A; -399A:DD; -399B:21; -399C:D2; -399D:7A; -399E:21; -399F:00; -39A0:70; -39A1:11; -39A2:00; -39A3:00; -39A4:0E; -39A5:C0; -39A6:CD; -39A7:F8; -39A8:3A; -39A9:E5; -39AA:CD; -39AB:C9; -39AC:05; -39AD:06; -39AE:03; -39AF:7E; -39B0:A1; -39B1:C5; -39B2:47; -39B3:CB; -39B4:08; -39B5:CB; -39B6:08; -39B7:CB; -39B8:09; -39B9:CB; -39BA:09; -39BB:79; -39BC:FE; -39BD:03; -39BE:C2; -39BF:B3; -39C0:39; -39C1:78; -39C2:C1; -39C3:FE; -39C4:03; -39C5:28; -39C6:0D; -39C7:FE; -39C8:02; -39C9:28; -39CA:0E; -39CB:FE; -39CC:01; -39CD:28; -39CE:10; -39CF:11; -39D0:00; -39D1:00; -39D2:18; -39D3:0F; -39D4:11; -39D5:E0; -39D6:E0; -39D7:18; -39D8:0A; -39D9:16; -39DA:40; -39DB:1E; -39DC:A0; -39DD:18; -39DE:04; -39DF:16; -39E0:A0; -39E1:1E; -39E2:40; -39E3:DD; -39E4:7E; -39E5:00; -39E6:CB; -39E7:3F; -39E8:CB; -39E9:3F; -39EA:CB; -39EB:3F; -39EC:E5; -39ED:21; -39EE:D3; -39EF:7A; -39F0:CD; -39F1:6A; -39F2:3A; -39F3:E1; -39F4:B2; -39F5:DD; -39F6:77; -39F7:00; -39F8:DD; -39F9:7E; -39FA:02; -39FB:CB; -39FC:3F; -39FD:CB; -39FE:3F; -39FF:CB; -3A00:3F; -3A01:E5; -3A02:21; -3A03:D5; -3A04:7A; -3A05:CD; -3A06:6A; -3A07:3A; -3A08:E1; -3A09:B3; -3A0A:DD; -3A0B:77; -3A0C:02; -3A0D:3E; -3A0E:20; -3A0F:85; -3A10:6F; -3A11:3E; -3A12:00; -3A13:8C; -3A14:67; -3A15:10; -3A16:50; -3A17:CD; -3A18:73; -3A19:3A; -3A1A:E1; -3A1B:CB; -3A1C:39; -3A1D:CB; -3A1E:39; -3A1F:79; -3A20:B7; -3A21:20; -3A22:83; -3A23:23; -3A24:7D; -3A25:E6; -3A26:1F; -3A27:C2; -3A28:A4; -3A29:39; -3A2A:CD; -3A2B:E2; -3A2C:3A; -3A2D:3A; -3A2E:D6; -3A2F:7A; -3A30:3C; -3A31:FE; -3A32:03; -3A33:20; -3A34:01; -3A35:AF; -3A36:32; -3A37:D6; -3A38:7A; -3A39:20; -3A3A:04; -3A3B:3E; -3A3C:40; -3A3D:18; -3A3E:02; -3A3F:3E; -3A40:20; -3A41:85; -3A42:6F; -3A43:3E; -3A44:00; -3A45:8C; -3A46:67; -3A47:FE; -3A48:78; -3A49:D2; -3A4A:5F; -3A4B:3A; -3A4C:FE; -3A4D:77; -3A4E:C2; -3A4F:A4; -3A50:39; -3A51:7D; -3A52:FE; -3A53:E0; -3A54:DA; -3A55:A4; -3A56:39; -3A57:3E; -3A58:FF; -3A59:32; -3A5A:D6; -3A5B:7A; -3A5C:C3; -3A5D:A4; -3A5E:39; -3A5F:3E; -3A60:0F; -3A61:CD; -3A62:BA; -3A63:3A; -3A64:E1; -3A65:FB; -3A66:C9; -3A67:C3; -3A68:AF; -3A69:39; -3A6A:D2; -3A6B:70; -3A6C:3A; -3A6D:CB; -3A6E:C6; -3A6F:C9; -3A70:CB; -3A71:86; -3A72:C9; -3A73:CD; -3A74:85; -3A75:3A; -3A76:DD; -3A77:23; -3A78:DD; -3A79:23; -3A7A:CD; -3A7B:85; -3A7C:3A; -3A7D:DD; -3A7E:2B; -3A7F:DD; -3A80:2B; -3A81:CD; -3A82:85; -3A83:3A; -3A84:C9; -3A85:DD; -3A86:7E; -3A87:01; -3A88:CB; -3A89:0F; -3A8A:DD; -3A8B:7E; -3A8C:00; -3A8D:F5; -3A8E:3A; -3A8F:D6; -3A90:7A; -3A91:FE; -3A92:02; -3A93:28; -3A94:1D; -3A95:FE; -3A96:01; -3A97:28; -3A98:16; -3A99:F1; -3A9A:17; -3A9B:F5; -3A9C:3A; -3A9D:D6; -3A9E:7A; -3A9F:FE; -3AA0:FF; -3AA1:20; -3AA2:05; -3AA3:F1; -3AA4:E6; -3AA5:07; -3AA6:18; -3AA7:01; -3AA8:F1; -3AA9:F6; -3AAA:80; -3AAB:CD; -3AAC:BA; -3AAD:3A; -3AAE:C9; -3AAF:F1; -3AB0:18; -3AB1:E9; -3AB2:F1; -3AB3:1F; -3AB4:18; -3AB5:E5; -3AB6:B7; -3AB7:FA; -3AB8:D8; -3AB9:3A; -3ABA:F5; -3ABB:CD; -3ABC:E8; -3ABD:3A; -3ABE:D2; -3ABF:C4; -3AC0:3A; -3AC1:F1; -3AC2:37; -3AC3:C9; -3AC4:DB; -3AC5:00; -3AC6:CB; -3AC7:47; -3AC8:20; -3AC9:F1; -3ACA:F1; -3ACB:D3; -3ACC:0E; -3ACD:D3; -3ACE:0D; -3ACF:FE; -3AD0:0D; -3AD1:37; -3AD2:3F; -3AD3:C0; -3AD4:3E; -3AD5:0A; -3AD6:18; -3AD7:E2; -3AD8:CB; -3AD9:77; -3ADA:CA; -3ADB:73; -3ADC:2C; -3ADD:E6; -3ADE:3F; -3ADF:C3; -3AE0:56; -3AE1:39; -3AE2:3E; -3AE3:0D; -3AE4:CD; -3AE5:BA; -3AE6:3A; -3AE7:C9; -3AE8:B7; -3AE9:3A; -3AEA:FD; -3AEB:68; -3AEC:CB; -3AED:57; -3AEE:C0; -3AEF:3A; -3AF0:DF; -3AF1:68; -3AF2:37; -3AF3:CB; -3AF4:57; -3AF5:C8; -3AF6:3F; -3AF7:C9; -3AF8:CD; -3AF9:E8; -3AFA:3A; -3AFB:D0; -3AFC:E1; -3AFD:E1; -3AFE:3A; -3AFF:39; -3B00:78; -3B01:E6; -3B02:B7; -3B03:32; -3B04:39; -3B05:78; -3B06:3E; -3B07:01; -3B08:FB; -3B09:C3; -3B0A:A0; -3B0B:1D; -3B0C:3A; -3B0D:9C; -3B0E:78; -3B0F:B7; -3B10:C2; -3B11:64; -3B12:21; -3B13:3A; -3B14:AF; -3B15:7A; -3B16:B7; -3B17:20; -3B18:FA; -3B19:C3; -3B1A:64; -3B1B:21; -3B1C:3A; -3B1D:AF; -3B1E:7A; -3B1F:B7; -3B20:C0; -3B21:3A; -3B22:A6; -3B23:78; -3B24:C9; -3B25:21; -3B26:EF; -3B27:68; -3B28:CB; -3B29:66; -3B2A:20; -3B2B:18; -3B2C:CD; -3B2D:48; -3B2E:3B; -3B2F:CB; -3B30:66; -3B31:28; -3B32:FC; -3B33:CD; -3B34:48; -3B35:3B; -3B36:CD; -3B37:F8; -3B38:3A; -3B39:CB; -3B3A:66; -3B3B:20; -3B3C:F9; -3B3D:CD; -3B3E:48; -3B3F:3B; -3B40:CB; -3B41:66; -3B42:28; -3B43:FC; -3B44:21; -3B45:FF; -3B46:FF; -3B47:C9; -3B48:21; -3B49:FF; -3B4A:07; -3B4B:2B; -3B4C:7D; -3B4D:B4; -3B4E:20; -3B4F:FB; -3B50:21; -3B51:EF; -3B52:68; -3B53:C9; -3B54:CD; -3B55:11; -3B56:35; -3B57:C9; -3B58:F3; -3B59:23; -3B5A:0E; -3B5B:F2; -3B5C:CD; -3B5D:58; -3B5E:35; -3B5F:DA; -3B60:FE; -3B61:3A; -3B62:2B; -3B63:CF; -3B64:22; -3B65:CF; -3B66:2C; -3B67:C9; -3B68:F3; -3B69:23; -3B6A:CD; -3B6B:8C; -3B6C:35; -3B6D:2B; -3B6E:CF; -3B6F:22; -3B70:CF; -3B71:2C; -3B72:E5; -3B73:CD; -3B74:B1; -3B75:35; -3B76:21; -3B77:42; -3B78:38; -3B79:CD; -3B7A:F4; -3B7B:37; -3B7C:CD; -3B7D:E7; -3B7E:35; -3B7F:3A; -3B80:D2; -3B81:7A; -3B82:FE; -3B83:F2; -3B84:20; -3B85:F6; -3B86:E1; -3B87:C9; -3B88:CD; -3B89:75; -3B8A:37; -3B8B:FE; -3B8C:0D; -3B8D:C0; -3B8E:F5; -3B8F:CD; -3B90:F9; -3B91:20; -3B92:F1; -3B93:C9; -3B94:C1; -3B95:BE; -3B96:A2; -3B97:AE; -3B98:B1; -3B99:83; -3B9A:ED; -3B9B:EE; -3B9C:ED; -3B9D:83; -3B9E:80; -3B9F:B6; -3BA0:B6; -3BA1:B6; -3BA2:C1; -3BA3:C1; -3BA4:BE; -3BA5:BE; -3BA6:BE; -3BA7:DD; -3BA8:80; -3BA9:BE; -3BAA:BE; -3BAB:BE; -3BAC:C1; -3BAD:80; -3BAE:B6; -3BAF:B6; -3BB0:B6; -3BB1:BE; -3BB2:80; -3BB3:F6; -3BB4:F6; -3BB5:F6; -3BB6:FE; -3BB7:C1; -3BB8:BE; -3BB9:BE; -3BBA:AE; -3BBB:8C; -3BBC:80; -3BBD:F7; -3BBE:F7; -3BBF:F7; -3BC0:80; -3BC1:FF; -3BC2:BE; -3BC3:80; -3BC4:BE; -3BC5:FF; -3BC6:DF; -3BC7:BF; -3BC8:BF; -3BC9:C0; -3BCA:FE; -3BCB:80; -3BCC:F7; -3BCD:EB; -3BCE:DD; -3BCF:BE; -3BD0:80; -3BD1:BF; -3BD2:BF; -3BD3:BF; -3BD4:BF; -3BD5:80; -3BD6:FD; -3BD7:F3; -3BD8:FD; -3BD9:80; -3BDA:80; -3BDB:FD; -3BDC:FB; -3BDD:F7; -3BDE:80; -3BDF:C1; -3BE0:BE; -3BE1:BE; -3BE2:BE; -3BE3:C1; -3BE4:80; -3BE5:F6; -3BE6:F6; -3BE7:F6; -3BE8:F9; -3BE9:C1; -3BEA:BE; -3BEB:AE; -3BEC:DE; -3BED:A1; -3BEE:80; -3BEF:F6; -3BF0:E6; -3BF1:D6; -3BF2:B9; -3BF3:D9; -3BF4:B6; -3BF5:B6; -3BF6:B6; -3BF7:CD; -3BF8:FE; -3BF9:FE; -3BFA:80; -3BFB:FE; -3BFC:FE; -3BFD:C0; -3BFE:BF; -3BFF:BF; -3C00:BF; -3C01:C0; -3C02:F8; -3C03:E7; -3C04:9F; -3C05:E7; -3C06:F8; -3C07:80; -3C08:DF; -3C09:E7; -3C0A:DF; -3C0B:80; -3C0C:9C; -3C0D:ED; -3C0E:F7; -3C0F:EB; -3C10:9C; -3C11:FC; -3C12:FB; -3C13:87; -3C14:FB; -3C15:FC; -3C16:9E; -3C17:AE; -3C18:B6; -3C19:BA; -3C1A:BC; -3C1B:FF; -3C1C:80; -3C1D:BE; -3C1E:BE; -3C1F:FF; -3C20:FD; -3C21:FB; -3C22:F7; -3C23:EF; -3C24:DF; -3C25:FF; -3C26:BE; -3C27:BE; -3C28:80; -3C29:FF; -3C2A:FB; -3C2B:FD; -3C2C:80; -3C2D:FD; -3C2E:FB; -3C2F:F7; -3C30:E3; -3C31:D6; -3C32:F7; -3C33:F7; -3C34:FF; -3C35:FF; -3C36:FF; -3C37:FF; -3C38:FF; -3C39:FF; -3C3A:FF; -3C3B:A0; -3C3C:FF; -3C3D:FF; -3C3E:FF; -3C3F:F8; -3C40:FF; -3C41:F8; -3C42:FF; -3C43:EB; -3C44:80; -3C45:EB; -3C46:80; -3C47:ED; -3C48:DB; -3C49:D6; -3C4A:80; -3C4B:D6; -3C4C:ED; -3C4D:D9; -3C4E:E9; -3C4F:F7; -3C50:CB; -3C51:CD; -3C52:C9; -3C53:D6; -3C54:A9; -3C55:DF; -3C56:AF; -3C57:F7; -3C58:F8; -3C59:FC; -3C5A:FF; -3C5B:FF; -3C5C:FF; -3C5D:E3; -3C5E:DD; -3C5F:BE; -3C60:FF; -3C61:FF; -3C62:BE; -3C63:DD; -3C64:E3; -3C65:FF; -3C66:D6; -3C67:E3; -3C68:80; -3C69:E3; -3C6A:D5; -3C6B:F7; -3C6C:F7; -3C6D:C1; -3C6E:F7; -3C6F:F7; -3C70:DF; -3C71:C7; -3C72:F7; -3C73:FF; -3C74:FF; -3C75:F7; -3C76:F7; -3C77:F7; -3C78:F7; -3C79:F7; -3C7A:FF; -3C7B:9F; -3C7C:9F; -3C7D:FF; -3C7E:FF; -3C7F:DF; -3C80:EF; -3C81:F7; -3C82:FB; -3C83:FD; -3C84:C1; -3C85:AE; -3C86:B6; -3C87:BA; -3C88:C1; -3C89:FF; -3C8A:BD; -3C8B:80; -3C8C:BF; -3C8D:FF; -3C8E:9D; -3C8F:AE; -3C90:B6; -3C91:BA; -3C92:BD; -3C93:DD; -3C94:BB; -3C95:BB; -3C96:BB; -3C97:C9; -3C98:E7; -3C99:EB; -3C9A:ED; -3C9B:80; -3C9C:EF; -3C9D:D8; -3C9E:BA; -3C9F:DA; -3CA0:DA; -3CA1:C6; -3CA2:C1; -3CA3:B6; -3CA4:B6; -3CA5:B6; -3CA6:CF; -3CA7:FC; -3CA8:FE; -3CA9:86; -3CAA:FA; -3CAB:FC; -3CAC:C9; -3CAD:B6; -3CAE:B6; -3CAF:B6; -3CB0:C9; -3CB1:F9; -3CB2:B6; -3CB3:B6; -3CB4:B6; -3CB5:C1; -3CB6:FF; -3CB7:C9; -3CB8:C9; -3CB9:FF; -3CBA:FF; -3CBB:BF; -3CBC:C4; -3CBD:E4; -3CBE:FF; -3CBF:FF; -3CC0:F7; -3CC1:EB; -3CC2:DD; -3CC3:DE; -3CC4:DE; -3CC5:EB; -3CC6:EB; -3CC7:EB; -3CC8:EB; -3CC9:EB; -3CCA:DE; -3CCB:DE; -3CCC:DD; -3CCD:EB; -3CCE:F7; -3CCF:FD; -3CD0:FE; -3CD1:A6; -3CD2:FA; -3CD3:FD; -3CD4:CB; -3CD5:3B; -3CD6:1C; -3CD7:7E; -3CD8:23; -3CD9:B7; -3CDA:F2; -3CDB:D7; -3CDC:3C; -3CDD:1D; -3CDE:20; -3CDF:F7; -3CE0:E6; -3CE1:7F; -3CE2:CD; -3CE3:2A; -3CE4:03; -3CE5:7E; -3CE6:23; -3CE7:B7; -3CE8:F2; -3CE9:E2; -3CEA:3C; -3CEB:C9; -3CEC:CE; -3CED:45; -3CEE:58; -3CEF:54; -3CF0:20; -3CF1:57; -3CF2:49; -3CF3:54; -3CF4:48; -3CF5:4F; -3CF6:55; -3CF7:54; -3CF8:20; -3CF9:46; -3CFA:4F; -3CFB:52; -3CFC:D3; -3CFD:59; -3CFE:4E; -3CFF:54; -3D00:41; -3D01:58; -3D02:D2; -3D03:45; -3D04:54; -3D05:27; -3D06:4E; -3D07:20; -3D08:57; -3D09:49; -3D0A:54; -3D0B:48; -3D0C:4F; -3D0D:55; -3D0E:54; -3D0F:20; -3D10:47; -3D11:4F; -3D12:53; -3D13:55; -3D14:42; -3D15:CF; -3D16:55; -3D17:54; -3D18:20; -3D19:4F; -3D1A:46; -3D1B:20; -3D1C:44; -3D1D:41; -3D1E:54; -3D1F:41; -3D20:C6; -3D21:55; -3D22:4E; -3D23:43; -3D24:54; -3D25:49; -3D26:4F; -3D27:4E; -3D28:20; -3D29:43; -3D2A:4F; -3D2B:44; -3D2C:45; -3D2D:CF; -3D2E:56; -3D2F:45; -3D30:52; -3D31:46; -3D32:4C; -3D33:4F; -3D34:57; -3D35:CF; -3D36:55; -3D37:54; -3D38:20; -3D39:4F; -3D3A:46; -3D3B:20; -3D3C:4D; -3D3D:45; -3D3E:4D; -3D3F:4F; -3D40:52; -3D41:59; -3D42:D5; -3D43:4E; -3D44:44; -3D45:45; -3D46:46; -3D47:27; -3D48:44; -3D49:20; -3D4A:53; -3D4B:54; -3D4C:41; -3D4D:54; -3D4E:45; -3D4F:4D; -3D50:45; -3D51:4E; -3D52:54; -3D53:C2; -3D54:41; -3D55:44; -3D56:20; -3D57:53; -3D58:55; -3D59:42; -3D5A:53; -3D5B:43; -3D5C:52; -3D5D:49; -3D5E:50; -3D5F:54; -3D60:D2; -3D61:45; -3D62:44; -3D63:49; -3D64:4D; -3D65:27; -3D66:44; -3D67:20; -3D68:41; -3D69:52; -3D6A:52; -3D6B:41; -3D6C:59; -3D6D:C4; -3D6E:49; -3D6F:56; -3D70:49; -3D71:53; -3D72:49; -3D73:4F; -3D74:4E; -3D75:20; -3D76:42; -3D77:59; -3D78:20; -3D79:5A; -3D7A:45; -3D7B:52; -3D7C:4F; -3D7D:C9; -3D7E:4C; -3D7F:4C; -3D80:45; -3D81:47; -3D82:41; -3D83:4C; -3D84:20; -3D85:44; -3D86:49; -3D87:52; -3D88:45; -3D89:43; -3D8A:54; -3D8B:D4; -3D8C:59; -3D8D:50; -3D8E:45; -3D8F:20; -3D90:4D; -3D91:49; -3D92:53; -3D93:4D; -3D94:41; -3D95:54; -3D96:43; -3D97:48; -3D98:CF; -3D99:55; -3D9A:54; -3D9B:20; -3D9C:4F; -3D9D:46; -3D9E:20; -3D9F:53; -3DA0:50; -3DA1:41; -3DA2:43; -3DA3:45; -3DA4:D3; -3DA5:54; -3DA6:52; -3DA7:49; -3DA8:4E; -3DA9:47; -3DAA:20; -3DAB:54; -3DAC:4F; -3DAD:4F; -3DAE:20; -3DAF:4C; -3DB0:4F; -3DB1:4E; -3DB2:47; -3DB3:C6; -3DB4:4F; -3DB5:52; -3DB6:4D; -3DB7:55; -3DB8:4C; -3DB9:41; -3DBA:20; -3DBB:54; -3DBC:4F; -3DBD:4F; -3DBE:20; -3DBF:43; -3DC0:4F; -3DC1:4D; -3DC2:50; -3DC3:4C; -3DC4:45; -3DC5:58; -3DC6:C3; -3DC7:41; -3DC8:4E; -3DC9:27; -3DCA:54; -3DCB:20; -3DCC:43; -3DCD:4F; -3DCE:4E; -3DCF:54; -3DD0:CE; -3DD1:4F; -3DD2:20; -3DD3:52; -3DD4:45; -3DD5:53; -3DD6:55; -3DD7:4D; -3DD8:45; -3DD9:D2; -3DDA:45; -3DDB:53; -3DDC:55; -3DDD:4D; -3DDE:45; -3DDF:20; -3DE0:57; -3DE1:49; -3DE2:54; -3DE3:48; -3DE4:4F; -3DE5:55; -3DE6:54; -3DE7:D5; -3DE8:4E; -3DE9:50; -3DEA:52; -3DEB:49; -3DEC:4E; -3DED:54; -3DEE:41; -3DEF:42; -3DF0:4C; -3DF1:45; -3DF2:CD; -3DF3:49; -3DF4:53; -3DF5:53; -3DF6:49; -3DF7:4E; -3DF8:47; -3DF9:20; -3DFA:4F; -3DFB:50; -3DFC:45; -3DFD:52; -3DFE:41; -3DFF:4E; -3E00:44; -3E01:C2; -3E02:41; -3E03:44; -3E04:20; -3E05:46; -3E06:49; -3E07:4C; -3E08:45; -3E09:20; -3E0A:44; -3E0B:41; -3E0C:54; -3E0D:41; -3E0E:C4; -3E0F:49; -3E10:53; -3E11:4B; -3E12:20; -3E13:43; -3E14:4F; -3E15:4D; -3E16:4D; -3E17:41; -3E18:4E; -3E19:44; -3E1A:3F; -3E1B:53; -3E1C:59; -3E1D:4E; -3E1E:54; -3E1F:41; -3E20:58; -3E21:20; -3E22:45; -3E23:52; -3E24:52; -3E25:4F; -3E26:52; -3E27:0D; -3E28:00; -3E29:7E; -3E2A:B7; -3E2B:20; -3E2C:07; -3E2D:3E; -3E2E:20; -3E2F:77; -3E30:23; -3E31:AF; -3E32:77; -3E33:2B; -3E34:2B; -3E35:F1; -3E36:C9; -3E37:32; -3E38:7D; -3E39:78; -3E3A:3E; -3E3B:10; -3E3C:32; -3E3D:46; -3E3E:78; -3E3F:C9; -3E40:7E; -3E41:CB; -3E42:77; -3E43:28; -3E44:05; -3E45:FE; -3E46:80; -3E47:DA; -3E48:5D; -3E49:3E; -3E4A:C1; -3E4B:11; -3E4C:53; -3E4D:3E; -3E4E:D5; -3E4F:C5; -3E50:C3; -3E51:02; -3E52:05; -3E53:D8; -3E54:21; -3E55:1A; -3E56:3E; -3E57:CD; -3E58:A7; -3E59:28; -3E5A:C3; -3E5B:E3; -3E5C:03; -3E5D:FE; -3E5E:62; -3E5F:20; -3E60:39; -3E61:E6; -3E62:BF; -3E63:12; -3E64:23; -3E65:13; -3E66:05; -3E67:CA; -3E68:EE; -3E69:04; -3E6A:7E; -3E6B:CB; -3E6C:7F; -3E6D:20; -3E6E:06; -3E6F:CB; -3E70:77; -3E71:20; -3E72:0C; -3E73:18; -3E74:06; -3E75:E6; -3E76:8F; -3E77:F6; -3E78:80; -3E79:18; -3E7A:17; -3E7B:F6; -3E7C:C0; -3E7D:18; -3E7E:13; -3E7F:FE; -3E80:62; -3E81:20; -3E82:09; -3E83:E5; -3E84:21; -3E85:39; -3E86:78; -3E87:CB; -3E88:66; -3E89:E1; -3E8A:28; -3E8B:0E; -3E8C:CB; -3E8D:6F; -3E8E:28; -3E8F:02; -3E90:E6; -3E91:BF; -3E92:12; -3E93:23; -3E94:13; -3E95:10; -3E96:D3; -3E97:C3; -3E98:EE; -3E99:04; -3E9A:CB; -3E9B:6F; -3E9C:28; -3E9D:02; -3E9E:E6; -3E9F:BF; -3EA0:12; -3EA1:23; -3EA2:13; -3EA3:10; -3EA4:9B; -3EA5:C3; -3EA6:EE; -3EA7:04; -3EA8:3A; -3EA9:18; -3EAA:78; -3EAB:B7; -3EAC:C2; -3EAD:B8; -3EAE:04; -3EAF:C3; -3EB0:6A; -3EB1:3E; -3EB2:3A; -3EB3:18; -3EB4:78; -3EB5:B7; -3EB6:20; -3EB7:03; -3EB8:CB; -3EB9:B6; -3EBA:C9; -3EBB:CB; -3EBC:F6; -3EBD:C9; -3EBE:3A; -3EBF:18; -3EC0:78; -3EC1:B7; -3EC2:3E; -3EC3:20; -3EC4:20; -3EC5:02; -3EC6:F6; -3EC7:40; -3EC8:77; -3EC9:C9; -3ECA:F5; -3ECB:3A; -3ECC:18; -3ECD:78; -3ECE:B7; -3ECF:28; -3ED0:07; -3ED1:F1; -3ED2:E6; -3ED3:3F; -3ED4:E5; -3ED5:C3; -3ED6:AB; -3ED7:31; -3ED8:F1; -3ED9:F6; -3EDA:40; -3EDB:E5; -3EDC:21; -3EDD:38; -3EDE:78; -3EDF:CB; -3EE0:4E; -3EE1:E1; -3EE2:28; -3EE3:02; -3EE4:E6; -3EE5:BF; -3EE6:C3; -3EE7:B5; -3EE8:31; -3EE9:3A; -3EEA:18; -3EEB:78; -3EEC:B7; -3EED:7E; -3EEE:20; -3EEF:03; -3EF0:FE; -3EF1:60; -3EF2:C9; -3EF3:FE; -3EF4:20; -3EF5:C9; -3EF6:3A; -3EF7:18; -3EF8:78; -3EF9:B7; -3EFA:3E; -3EFB:20; -3EFC:20; -3EFD:02; -3EFE:F6; -3EFF:40; -3F00:12; -3F01:C9; -3F02:06; -3F03:20; -3F04:3A; -3F05:18; -3F06:78; -3F07:B7; -3F08:3E; -3F09:20; -3F0A:C0; -3F0B:F6; -3F0C:40; -3F0D:C9; -3F0E:11; -3F0F:E0; -3F10:71; -3F11:3A; -3F12:18; -3F13:78; -3F14:B7; -3F15:C0; -3F16:F1; -3F17:7E; -3F18:B7; -3F19:C8; -3F1A:CB; -3F1B:B7; -3F1C:12; -3F1D:13; -3F1E:23; -3F1F:18; -3F20:F6; -3F21:3A; -3F22:18; -3F23:78; -3F24:B7; -3F25:7E; -3F26:20; -3F27:07; -3F28:CB; -3F29:F7; -3F2A:12; -3F2B:13; -3F2C:3E; -3F2D:7A; -3F2E:C9; -3F2F:12; -3F30:3E; -3F31:3A; -3F32:C9; -3F33:F5; -3F34:3A; -3F35:18; -3F36:78; -3F37:B7; -3F38:20; -3F39:05; -3F3A:F1; -3F3B:F6; -3F3C:40; -3F3D:12; -3F3E:C9; -3F3F:F1; -3F40:E6; -3F41:3F; -3F42:12; -3F43:C9; -3F44:F5; -3F45:3A; -3F46:18; -3F47:78; -3F48:B7; -3F49:20; -3F4A:09; -3F4B:F1; -3F4C:CB; -3F4D:77; -3F4E:C2; -3F4F:38; -3F50:39; -3F51:C3; -3F52:31; -3F53:39; -3F54:F1; -3F55:CB; -3F56:77; -3F57:CA; -3F58:38; -3F59:39; -3F5A:C3; -3F5B:31; -3F5C:39; -3F5D:C3; -3F5E:31; -3F5F:39; -3F60:F5; -3F61:3A; -3F62:18; -3F63:78; -3F64:B7; -3F65:20; -3F66:06; -3F67:F1; -3F68:E6; -3F69:3F; -3F6A:C3; -3F6B:54; -3F6C:31; -3F6D:F1; -3F6E:E6; -3F6F:7F; -3F70:C3; -3F71:54; -3F72:31; -3F73:CD; -3F74:75; -3F75:37; -3F76:D0; -3F77:E1; -3F78:C3; -3F79:11; -3F7A:37; -3F7B:3A; -3F7C:19; -3F7D:78; -3F7E:47; -3F7F:3A; -3F80:18; -3F81:78; -3F82:B8; -3F83:CA; -3F84:E8; -3F85:30; -3F86:32; -3F87:19; -3F88:78; -3F89:21; -3F8A:00; -3F8B:70; -3F8C:01; -3F8D:00; -3F8E:02; -3F8F:7E; -3F90:B7; -3F91:FA; -3F92:97; -3F93:3F; -3F94:EE; -3F95:40; -3F96:77; -3F97:23; -3F98:0B; -3F99:78; -3F9A:B1; -3F9B:20; -3F9C:F2; -3F9D:C3; -3F9E:E8; -3F9F:30; -3FA0:3A; -3FA1:FD; -3FA2:68; -3FA3:CB; -3FA4:57; -3FA5:3E; -3FA6:20; -3FA7:20; -3FA8:08; -3FA9:F6; -3FAA:40; -3FAB:32; -3FAC:18; -3FAD:78; -3FAE:32; -3FAF:19; -3FB0:78; -3FB1:32; -3FB2:3C; -3FB3:78; -3FB4:C3; -3FB5:C9; -3FB6:01; -3FB7:00; -3FB8:00; -3FB9:00; -3FBA:00; -3FBB:00; -3FBC:00; -3FBD:00; -3FBE:00; -3FBF:00; -3FC0:00; -3FC1:00; -3FC2:00; -3FC3:00; -3FC4:00; -3FC5:00; -3FC6:00; -3FC7:00; -3FC8:00; -3FC9:00; -3FCA:00; -3FCB:00; -3FCC:00; -3FCD:00; -3FCE:00; -3FCF:00; -3FD0:00; -3FD1:00; -3FD2:00; -3FD3:00; -3FD4:00; -3FD5:00; -3FD6:00; -3FD7:00; -3FD8:00; -3FD9:00; -3FDA:00; -3FDB:00; -3FDC:00; -3FDD:00; -3FDE:00; -3FDF:00; -3FE0:00; -3FE1:00; -3FE2:00; -3FE3:00; -3FE4:00; -3FE5:00; -3FE6:00; -3FE7:00; -3FE8:00; -3FE9:00; -3FEA:00; -3FEB:00; -3FEC:00; -3FED:00; -3FEE:00; -3FEF:00; -3FF0:FF; -3FF1:FF; -3FF2:FF; -3FF3:FF; -3FF4:FF; -3FF5:FF; -3FF6:FF; -3FF7:FF; -3FF8:FF; -3FF9:FF; -3FFA:FF; -3FFB:FF; -3FFC:FF; -3FFD:FF; -3FFE:FF; -3FFF:FF; -END; diff --git a/Computer_MiST/Laser310_MiST/rtl/sn76489/COPYING b/Computer_MiST/Laser310_MiST/rtl/sn76489/COPYING deleted file mode 100644 index 60549be5..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/sn76489/COPYING +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) 19yy - - This program 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 2 of the License, or - (at your option) any later version. - - This program 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, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) 19yy name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/Computer_MiST/Laser310_MiST/rtl/sn76489/README b/Computer_MiST/Laser310_MiST/rtl/sn76489/README deleted file mode 100644 index 33630144..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/sn76489/README +++ /dev/null @@ -1,143 +0,0 @@ - -An SN76489AN Compatible Implementation in VHDL -============================================== -Version: $Date: 2006/06/18 19:28:40 $ - -Copyright (c) 2005, 2006, Arnim Laeuger (arnim.laeuger@gmx.net) -See the file COPYING. - - -Integration ------------ - -The sn76489 design exhibits all interface signals as the original chip. It -only differs in the audio data output which is provided as an 8 bit signed -vector instead of an analog output pin. - - generic ( - clock_div_16_g : integer := 1 - -- Set to '1' when operating the design in SN76489 mode. The primary clock - -- input is divided by 16 in this variant. The data sheet mentions the - -- SN76494 which contains a divide-by-2 clock input stage. Set the generic - -- to '0' to enable this mode. - ); - port ( - clock_i : in std_logic; - -- Primary clock input - -- Drive with the target frequency or any integer multiple of it. - - clock_en_i : in std_logic; - -- Clock enable - -- A '1' on this input qualifies a valid rising edge on clock_i. A '0' - -- disables the next rising clock edge, effectivley halting the design - -- until the next enabled rising clock edge. - -- Can be used to run the core at lower frequencies than applied on - -- clock_i. - - res_n_i : in std_logic; - -- Asynchronous low active reset input. - -- Sets all sequential elements to a known state. - - ce_n_i : in std_logic; - -- Chip enable, low active. - - we_n_i : in std_logic; - -- Write enable, low active. - - ready_o : out std_logic; - -- Ready indication to microprocessor. - - d_i : in std_logic_vector(0 to 7); - -- Data input - -- MSB 0 ... 7 LSB - - aout_o : out signed(0 to 7) - -- Audio output, signed vector - -- MSB/SIGN 0 ... 7 LSB - ); - - -Both 8 bit vector ports are defined (0 to 7) which declares bit 0 to be the -MSB and bit 7 to be the LSB. This has been implemented according to TI's data -sheet, thus all register/data format figures apply 1:1 for this design. -Many systems will flip the system data bus bit wise before it is connected to -this PSG. This is simply achieved with the following VHDL construct: - - signal data_s : std_logic_vector(7 downto 0); - - ... - d_i => data_s, - ... - -d_i and data_s will be assigned from left to right, resulting in the expected -bit assignment: - - d_i data_s - 0 7 - 1 6 - ... - 6 1 - 7 0 - - -As this design is fully synchronous, care has to be taken when the design -replaces an SN76489 in asynchronous mode. No problems are expected when -interfacing the code to other synchronous components. - - -Design Hierarchy ----------------- - - sn76489_top - | - +-- sn76489_latch_ctrl - | - +-- sn76489_clock_div - | - +-- sn76489_tone - | | - | \-- sn76489_attentuator - | - +-- sn76489_tone - | | - | \-- sn76489_attentuator - | - +-- sn76489_tone - | | - | \-- sn76489_attentuator - | - \-- sn76489_noise - | - \-- sn76489_attentuator - -Resulting compilation sequence: - - sn76489_comp_pack-p.vhd - sn76489_top.vhd - sn76489_latch_ctrl.vhd - sn76489_latch_ctrl-c.vhd - sn76489_clock_div.vhd - sn76489_clock_div-c.vhd - sn76489_attenuator.vhd - sn76489_attenuator-c.vhd - sn76489_tone.vhd - sn76489_tone-c.vhd - sn76489_noise.vhd - sn76489_noise-c.vhd - sn76489_top-c.vhd - -Skip the files containing VHDL configurations when analyzing the code for -synthesis. - - -References ----------- - -* TI Data sheet SN76489.pdf - ftp://ftp.whtech.com/datasheets%20&%20manuals/SN76489.pdf - -* John Kortink's article on the SN76489: - http://web.inter.nl.net/users/J.Kortink/home/articles/sn76489/ - -* Maxim's "SN76489 notes" in - http://www.smspower.org/maxim/docs/SN76489.txt diff --git a/Computer_MiST/Laser310_MiST/rtl/sn76489/sn76489_attenuator.vhd b/Computer_MiST/Laser310_MiST/rtl/sn76489/sn76489_attenuator.vhd deleted file mode 100644 index 444064e5..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/sn76489/sn76489_attenuator.vhd +++ /dev/null @@ -1,114 +0,0 @@ -------------------------------------------------------------------------------- --- --- Synthesizable model of TI's SN76489AN. --- --- $Id: sn76489_attenuator.vhd,v 1.7 2006/02/27 20:30:10 arnim Exp $ --- --- Attenuator Module --- -------------------------------------------------------------------------------- --- --- Copyright (c) 2005, 2006, Arnim Laeuger (arnim.laeuger@gmx.net) --- --- All rights reserved --- --- Redistribution and use in source and synthezised forms, with or without --- modification, are permitted provided that the following conditions are met: --- --- Redistributions of source code must retain the above copyright notice, --- this list of conditions and the following disclaimer. --- --- Redistributions in synthesized form must reproduce the above copyright --- notice, this list of conditions and the following disclaimer in the --- documentation and/or other materials provided with the distribution. --- --- Neither the name of the author nor the names of other contributors may --- be used to endorse or promote products derived from this software without --- specific prior written permission. --- --- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" --- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, --- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR --- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE --- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR --- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF --- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS --- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN --- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) --- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE --- POSSIBILITY OF SUCH DAMAGE. --- --- Please report bugs to the author, but before you do so, please --- make sure that this is not a derivative work and that --- you have the latest version of this file. --- -------------------------------------------------------------------------------- - -library ieee; -use ieee.std_logic_1164.all; -use ieee.numeric_std.all; - -entity sn76489_attenuator is - - port ( - attenuation_i : in std_logic_vector(0 to 3); - factor_i : in signed(0 to 1); - product_o : out signed(0 to 7) - ); - -end sn76489_attenuator; - - -architecture rtl of sn76489_attenuator is - -begin - - ----------------------------------------------------------------------------- - -- Process attenuate - -- - -- Purpose: - -- Determine the attenuation and generate the resulting product. - -- - -- The maximum attenuation value is 31 which corresponds to volume off. - -- As described in the data sheet, the maximum "playing" attenuation is - -- 28 = 16 + 8 + 4 - -- - -- The table for the volume constants is derived from the following - -- formula (each step is 2dB voltage): - -- v(0) = 31 - -- v(n+1) = v(n) * 0.79432823 - -- - attenuate: process (attenuation_i, - factor_i) - - type volume_t is array (natural range 0 to 15) of natural; - constant volume_c : volume_t := - (31, 25, 20, 16, 12, 10, 8, 6, 5, 4, 3, 2, 2, 2, 1, 0); - - variable attenuation_v : unsigned(attenuation_i'range); - variable volume_v : signed(product_o'range); - - begin - - attenuation_v := unsigned(attenuation_i); - - -- volume look-up table - volume_v := to_signed(volume_c(to_integer(attenuation_v)), - product_o'length); - - -- this replaces a multiplier and consumes a bit fewer - -- resources - case to_integer(factor_i) is - when +1 => - product_o <= volume_v; - when -1 => - product_o <= -volume_v; - when others => - product_o <= (others => '0'); - end case; - - end process attenuate; - -- - ----------------------------------------------------------------------------- - -end rtl; diff --git a/Computer_MiST/Laser310_MiST/rtl/sn76489/sn76489_clock_div.vhd b/Computer_MiST/Laser310_MiST/rtl/sn76489/sn76489_clock_div.vhd deleted file mode 100644 index eab86beb..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/sn76489/sn76489_clock_div.vhd +++ /dev/null @@ -1,134 +0,0 @@ -------------------------------------------------------------------------------- --- --- Synthesizable model of TI's SN76489AN. --- --- $Id: sn76489_clock_div.vhd,v 1.4 2005/10/10 21:51:27 arnim Exp $ --- --- Clock Divider Circuit --- -------------------------------------------------------------------------------- --- --- Copyright (c) 2005, Arnim Laeuger (arnim.laeuger@gmx.net) --- --- All rights reserved --- --- Redistribution and use in source and synthezised forms, with or without --- modification, are permitted provided that the following conditions are met: --- --- Redistributions of source code must retain the above copyright notice, --- this list of conditions and the following disclaimer. --- --- Redistributions in synthesized form must reproduce the above copyright --- notice, this list of conditions and the following disclaimer in the --- documentation and/or other materials provided with the distribution. --- --- Neither the name of the author nor the names of other contributors may --- be used to endorse or promote products derived from this software without --- specific prior written permission. --- --- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" --- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, --- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR --- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE --- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR --- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF --- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS --- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN --- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) --- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE --- POSSIBILITY OF SUCH DAMAGE. --- --- Please report bugs to the author, but before you do so, please --- make sure that this is not a derivative work and that --- you have the latest version of this file. --- -------------------------------------------------------------------------------- - -library ieee; -use ieee.std_logic_1164.all; - -entity sn76489_clock_div is - - generic ( - clock_div_16_g : integer := 1 - ); - port ( - clock_i : in std_logic; - clock_en_i : in std_logic; - res_n_i : in std_logic; - clk_en_o : out boolean - ); - -end sn76489_clock_div; - - -library ieee; -use ieee.numeric_std.all; - -architecture rtl of sn76489_clock_div is - - signal cnt_s, - cnt_q : unsigned(3 downto 0); - -begin - - ----------------------------------------------------------------------------- - -- Process seq - -- - -- Purpose: - -- Implements the sequential counter element. - -- - seq: process (clock_i, res_n_i) - begin - if res_n_i = '0' then - cnt_q <= (others => '0'); - elsif clock_i'event and clock_i = '1' then - cnt_q <= cnt_s; - end if; - end process seq; - -- - ----------------------------------------------------------------------------- - - - ----------------------------------------------------------------------------- - -- Process comb - -- - -- Purpose: - -- Implements the combinational counter logic. - -- - comb: process (clock_en_i, - cnt_q) - begin - -- default assignments - cnt_s <= cnt_q; - clk_en_o <= false; - - if clock_en_i = '1' then - - if cnt_q = 0 then - clk_en_o <= true; - - if clock_div_16_g = 1 then - cnt_s <= to_unsigned(15, cnt_q'length); - elsif clock_div_16_g = 0 then - cnt_s <= to_unsigned( 1, cnt_q'length); - else - -- pragma translate_off - assert false - report "Generic clock_div_16_g must be either 0 or 1." - severity failure; - -- pragma translate_on - end if; - - else - cnt_s <= cnt_q - 1; - - end if; - - end if; - - end process comb; - -- - ----------------------------------------------------------------------------- - -end rtl; diff --git a/Computer_MiST/Laser310_MiST/rtl/sn76489/sn76489_latch_ctrl.vhd b/Computer_MiST/Laser310_MiST/rtl/sn76489/sn76489_latch_ctrl.vhd deleted file mode 100644 index 789720c2..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/sn76489/sn76489_latch_ctrl.vhd +++ /dev/null @@ -1,138 +0,0 @@ -------------------------------------------------------------------------------- --- --- Synthesizable model of TI's SN76489AN. --- --- $Id: sn76489_latch_ctrl.vhd,v 1.6 2006/02/27 20:30:10 arnim Exp $ --- --- Latch Control Unit --- -------------------------------------------------------------------------------- --- --- Copyright (c) 2005, 2006, Arnim Laeuger (arnim.laeuger@gmx.net) --- --- All rights reserved --- --- Redistribution and use in source and synthezised forms, with or without --- modification, are permitted provided that the following conditions are met: --- --- Redistributions of source code must retain the above copyright notice, --- this list of conditions and the following disclaimer. --- --- Redistributions in synthesized form must reproduce the above copyright --- notice, this list of conditions and the following disclaimer in the --- documentation and/or other materials provided with the distribution. --- --- Neither the name of the author nor the names of other contributors may --- be used to endorse or promote products derived from this software without --- specific prior written permission. --- --- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" --- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, --- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR --- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE --- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR --- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF --- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS --- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN --- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) --- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE --- POSSIBILITY OF SUCH DAMAGE. --- --- Please report bugs to the author, but before you do so, please --- make sure that this is not a derivative work and that --- you have the latest version of this file. --- -------------------------------------------------------------------------------- - -library ieee; -use ieee.std_logic_1164.all; - -entity sn76489_latch_ctrl is - - port ( - clock_i : in std_logic; - clk_en_i : in boolean; - res_n_i : in std_logic; - ce_n_i : in std_logic; - we_n_i : in std_logic; - d_i : in std_logic_vector(0 to 7); - ready_o : out std_logic; - tone1_we_o : out boolean; - tone2_we_o : out boolean; - tone3_we_o : out boolean; - noise_we_o : out boolean; - r2_o : out std_logic - ); - -end sn76489_latch_ctrl; - - -library ieee; -use ieee.numeric_std.all; - -architecture rtl of sn76489_latch_ctrl is - - signal reg_q : std_logic_vector(0 to 2); - signal we_q : boolean; - signal ready_q : std_logic; - -begin - - ----------------------------------------------------------------------------- - -- Process seq - -- - -- Purpose: - -- Implements the sequential elements. - -- - seq: process (clock_i, res_n_i) - begin - if res_n_i = '0' then - reg_q <= (others => '0'); - we_q <= false; - ready_q <= '0'; - - elsif clock_i'event and clock_i = '1' then - -- READY Flag Output ---------------------------------------------------- - if ready_q = '0' and we_q then - if clk_en_i then - -- assert READY when write access happened - ready_q <= '1'; - end if; - elsif ce_n_i = '1' then - -- deassert READY when access has finished - ready_q <= '0'; - end if; - - -- Register Selection --------------------------------------------------- - if ce_n_i = '0' and we_n_i = '0' then - if clk_en_i then - if d_i(0) = '1' then - reg_q <= d_i(1 to 3); - end if; - we_q <= true; - end if; - else - we_q <= false; - end if; - - end if; - end process seq; - -- - ----------------------------------------------------------------------------- - - - ----------------------------------------------------------------------------- - -- Output mapping - ----------------------------------------------------------------------------- - tone1_we_o <= reg_q(0 to 1) = "00" and we_q; - tone2_we_o <= reg_q(0 to 1) = "01" and we_q; - tone3_we_o <= reg_q(0 to 1) = "10" and we_q; - noise_we_o <= reg_q(0 to 1) = "11" and we_q; - - r2_o <= reg_q(2); - - ready_o <= ready_q - when ce_n_i = '0' else - '1'; - -end rtl; diff --git a/Computer_MiST/Laser310_MiST/rtl/sn76489/sn76489_noise.vhd b/Computer_MiST/Laser310_MiST/rtl/sn76489/sn76489_noise.vhd deleted file mode 100644 index 688bdd56..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/sn76489/sn76489_noise.vhd +++ /dev/null @@ -1,278 +0,0 @@ -------------------------------------------------------------------------------- --- --- Synthesizable model of TI's SN76489AN. --- --- $Id: sn76489_noise.vhd,v 1.6 2006/02/27 20:30:10 arnim Exp $ --- --- Noise Generator --- -------------------------------------------------------------------------------- --- --- Copyright (c) 2005, 2006, Arnim Laeuger (arnim.laeuger@gmx.net) --- --- All rights reserved --- --- Redistribution and use in source and synthezised forms, with or without --- modification, are permitted provided that the following conditions are met: --- --- Redistributions of source code must retain the above copyright notice, --- this list of conditions and the following disclaimer. --- --- Redistributions in synthesized form must reproduce the above copyright --- notice, this list of conditions and the following disclaimer in the --- documentation and/or other materials provided with the distribution. --- --- Neither the name of the author nor the names of other contributors may --- be used to endorse or promote products derived from this software without --- specific prior written permission. --- --- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" --- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, --- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR --- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE --- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR --- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF --- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS --- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN --- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) --- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE --- POSSIBILITY OF SUCH DAMAGE. --- --- Please report bugs to the author, but before you do so, please --- make sure that this is not a derivative work and that --- you have the latest version of this file. --- -------------------------------------------------------------------------------- - -library ieee; -use ieee.std_logic_1164.all; -use ieee.numeric_std.all; - -entity sn76489_noise is - - port ( - clock_i : in std_logic; - clk_en_i : in boolean; - res_n_i : in std_logic; - we_i : in boolean; - d_i : in std_logic_vector(0 to 7); - r2_i : in std_logic; - tone3_ff_i : in std_logic; - noise_o : out signed(0 to 7) - ); - -end sn76489_noise; - -architecture rtl of sn76489_noise is - - signal nf_q : std_logic_vector(0 to 1); - signal fb_q : std_logic; - signal a_q : std_logic_vector(0 to 3); - signal freq_cnt_q : unsigned(0 to 6); - signal freq_ff_q : std_logic; - - signal shift_source_s, - shift_source_q : std_logic; - signal shift_rise_edge_s : boolean; - - signal lfsr_q : std_logic_vector(0 to 15); - - signal freq_s : signed(0 to 1); - -begin - - ----------------------------------------------------------------------------- - -- Process cpu_regs - -- - -- Purpose: - -- Implements the registers writable by the CPU. - -- - cpu_regs: process (clock_i, res_n_i) - begin - if res_n_i = '0' then - nf_q <= (others => '0'); - fb_q <= '0'; - a_q <= (others => '1'); - - elsif clock_i'event and clock_i = '1' then - if clk_en_i and we_i then - if r2_i = '0' then - -- access to control register - -- both access types can write to the control register! - nf_q <= d_i(6 to 7); - fb_q <= d_i(5); - - else - -- access to attenuator register - -- both access types can write to the attenuator register! - a_q <= d_i(4 to 7); - - end if; - end if; - end if; - end process cpu_regs; - -- - ----------------------------------------------------------------------------- - - - ----------------------------------------------------------------------------- - -- Process freq_gen - -- - -- Purpose: - -- Implements the frequency generation components. - -- - freq_gen: process (clock_i, res_n_i) - begin - if res_n_i = '0' then - freq_cnt_q <= (others => '0'); - freq_ff_q <= '0'; - - elsif clock_i'event and clock_i = '1' then - if clk_en_i then - if freq_cnt_q = 0 then - -- reload frequency counter according to NF setting - case nf_q is - when "00" => - freq_cnt_q <= to_unsigned(16 * 2 - 1, freq_cnt_q'length); - when "01" => - freq_cnt_q <= to_unsigned(16 * 4 - 1, freq_cnt_q'length); - when "10" => - freq_cnt_q <= to_unsigned(16 * 8 - 1, freq_cnt_q'length); - when others => - null; - end case; - - freq_ff_q <= not freq_ff_q; - - else - -- decrement frequency counter - freq_cnt_q <= freq_cnt_q - 1; - - end if; - - end if; - end if; - end process freq_gen; - -- - ----------------------------------------------------------------------------- - - - ----------------------------------------------------------------------------- - -- Multiplex the source of the LFSR's shift enable - ----------------------------------------------------------------------------- - shift_source_s <= tone3_ff_i - when nf_q = "11" else - freq_ff_q; - - ----------------------------------------------------------------------------- - -- Process rise_edge - -- - -- Purpose: - -- Detect the rising edge of the selected LFSR shift source. - -- - rise_edge: process (clock_i, res_n_i) - begin - if res_n_i = '0' then - shift_source_q <= '0'; - - elsif clock_i'event and clock_i = '1' then - if clk_en_i then - shift_source_q <= shift_source_s; - end if; - end if; - end process rise_edge; - -- - ----------------------------------------------------------------------------- - - -- detect rising edge on shift source - shift_rise_edge_s <= shift_source_q = '0' and shift_source_s = '1'; - - - ----------------------------------------------------------------------------- - -- Process lfsr - -- - -- Purpose: - -- Implements the LFSR that generates noise. - -- Note: This implementation shifts the register right, i.e. from index - -- 15 towards 0 => bit 15 is the input, bit 0 is the output - -- - -- Tapped bits according to MAME's sn76496.c, implemented in function - -- lfsr_tapped_f. - -- - lfsr: process (clock_i, res_n_i) - - function lfsr_tapped_f(lfsr : in std_logic_vector) return std_logic is - constant tapped_bits_c : std_logic_vector(0 to 15) - -- tapped bits are 0, 2, 15 - := "1010000000000001"; - variable parity_v : std_logic; - begin - parity_v := '0'; - - for idx in lfsr'low to lfsr'high loop - parity_v := parity_v xor (lfsr(idx) and tapped_bits_c(idx)); - end loop; - - return parity_v; - end; - - begin - if res_n_i = '0' then - -- reset LFSR to "0000000000000001" - lfsr_q <= (others => '0'); - lfsr_q(lfsr_q'right) <= '1'; - - elsif clock_i'event and clock_i = '1' then - if clk_en_i then - if we_i and r2_i = '0' then - -- write to noise register - -- -> reset LFSR - lfsr_q <= (others => '0'); - lfsr_q(lfsr_q'right) <= '1'; - - elsif shift_rise_edge_s then - - -- shift LFSR left towards MSB - for idx in lfsr_q'right-1 downto lfsr_q'left loop - lfsr_q(idx) <= lfsr_q(idx+1); - end loop; - - -- determine input bit - if fb_q = '0' then - -- "Periodic" Noise - -- -> input to LFSR is output - lfsr_q(lfsr_q'right) <= lfsr_q(lfsr_q'left); - else - -- "White" Noise - -- -> input to LFSR is parity of tapped bits - lfsr_q(lfsr_q'right) <= lfsr_tapped_f(lfsr_q); - end if; - - end if; - - end if; - end if; - end process lfsr; - -- - ----------------------------------------------------------------------------- - - - ----------------------------------------------------------------------------- - -- Map output of LFSR to signed value for attenuator. - ----------------------------------------------------------------------------- - freq_s <= to_signed(+1, 2) - when lfsr_q(0) = '1' else - to_signed( 0, 2); - - - ----------------------------------------------------------------------------- - -- The attenuator itself - ----------------------------------------------------------------------------- - attenuator_b : entity work.sn76489_attenuator - port map ( - attenuation_i => a_q, - factor_i => freq_s, - product_o => noise_o - ); - -end rtl; diff --git a/Computer_MiST/Laser310_MiST/rtl/sn76489/sn76489_tone.vhd b/Computer_MiST/Laser310_MiST/rtl/sn76489/sn76489_tone.vhd deleted file mode 100644 index 3658efcc..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/sn76489/sn76489_tone.vhd +++ /dev/null @@ -1,188 +0,0 @@ -------------------------------------------------------------------------------- --- --- Synthesizable model of TI's SN76489AN. --- --- $Id: sn76489_tone.vhd,v 1.5 2006/02/27 20:30:10 arnim Exp $ --- --- Tone Generator --- -------------------------------------------------------------------------------- --- --- Copyright (c) 2005, 2006, Arnim Laeuger (arnim.laeuger@gmx.net) --- --- All rights reserved --- --- Redistribution and use in source and synthezised forms, with or without --- modification, are permitted provided that the following conditions are met: --- --- Redistributions of source code must retain the above copyright notice, --- this list of conditions and the following disclaimer. --- --- Redistributions in synthesized form must reproduce the above copyright --- notice, this list of conditions and the following disclaimer in the --- documentation and/or other materials provided with the distribution. --- --- Neither the name of the author nor the names of other contributors may --- be used to endorse or promote products derived from this software without --- specific prior written permission. --- --- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" --- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, --- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR --- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE --- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR --- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF --- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS --- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN --- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) --- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE --- POSSIBILITY OF SUCH DAMAGE. --- --- Please report bugs to the author, but before you do so, please --- make sure that this is not a derivative work and that --- you have the latest version of this file. --- -------------------------------------------------------------------------------- - -library ieee; -use ieee.std_logic_1164.all; -use ieee.numeric_std.all; - -entity sn76489_tone is - - port ( - clock_i : in std_logic; - clk_en_i : in boolean; - res_n_i : in std_logic; - we_i : in boolean; - d_i : in std_logic_vector(0 to 7); - r2_i : in std_logic; - ff_o : out std_logic; - tone_o : out signed(0 to 7) - ); - -end sn76489_tone; - -architecture rtl of sn76489_tone is - - signal f_q : std_logic_vector(0 to 9); - signal a_q : std_logic_vector(0 to 3); - signal freq_cnt_q : unsigned(0 to 9); - signal freq_ff_q : std_logic; - - signal freq_s : signed(0 to 1); - - function all_zero(a : in std_logic_vector) return boolean is - variable result_v : boolean; - begin - result_v := true; - - for idx in a'low to a'high loop - if a(idx) /= '0' then - result_v := false; - end if; - end loop; - - return result_v; - end; - -begin - - ----------------------------------------------------------------------------- - -- Process cpu_regs - -- - -- Purpose: - -- Implements the registers writable by the CPU. - -- - cpu_regs: process (clock_i, res_n_i) - begin - if res_n_i = '0' then - f_q <= (others => '0'); - a_q <= (others => '1'); - - elsif clock_i'event and clock_i = '1' then - if clk_en_i and we_i then - if r2_i = '0' then - -- access to frequency register - if d_i(0) = '0' then - f_q(0 to 5) <= d_i(2 to 7); - else - f_q(6 to 9) <= d_i(4 to 7); - end if; - - else - -- access to attenuator register - -- both access types can write to the attenuator register! - a_q <= d_i(4 to 7); - - end if; - end if; - end if; - end process cpu_regs; - -- - ----------------------------------------------------------------------------- - - - ----------------------------------------------------------------------------- - -- Process freq_gen - -- - -- Purpose: - -- Implements the frequency generation components. - -- - freq_gen: process (clock_i, res_n_i) - begin - if res_n_i = '0' then - freq_cnt_q <= (others => '0'); - freq_ff_q <= '0'; - - elsif clock_i'event and clock_i = '1' then - if clk_en_i then - if freq_cnt_q = 0 then - -- update counter from frequency register - freq_cnt_q <= unsigned(f_q); - - -- and toggle the frequency flip-flop if enabled - if not all_zero(f_q) then - freq_ff_q <= not freq_ff_q; - else - -- if frequency setting is 0, then keep flip-flop at +1 - freq_ff_q <= '1'; - end if; - - else - -- decrement frequency counter - freq_cnt_q <= freq_cnt_q - 1; - - end if; - end if; - end if; - end process freq_gen; - -- - ----------------------------------------------------------------------------- - - - ----------------------------------------------------------------------------- - -- Map frequency flip-flop to signed value for attenuator. - ----------------------------------------------------------------------------- - freq_s <= to_signed(+1, 2) - when freq_ff_q = '1' else - to_signed(-1, 2); - - - ----------------------------------------------------------------------------- - -- The attenuator itself - ----------------------------------------------------------------------------- - attenuator_b : entity work.sn76489_attenuator - port map ( - attenuation_i => a_q, - factor_i => freq_s, - product_o => tone_o - ); - - - ----------------------------------------------------------------------------- - -- Output mapping - ----------------------------------------------------------------------------- - ff_o <= freq_ff_q; - -end rtl; diff --git a/Computer_MiST/Laser310_MiST/rtl/sn76489/sn76489_top.vhd b/Computer_MiST/Laser310_MiST/rtl/sn76489/sn76489_top.vhd deleted file mode 100644 index c26d0e1a..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/sn76489/sn76489_top.vhd +++ /dev/null @@ -1,200 +0,0 @@ -------------------------------------------------------------------------------- --- --- Synthesizable model of TI's SN76489AN. --- --- $Id: sn76489_top.vhd,v 1.9 2006/02/27 20:30:10 arnim Exp $ --- --- Chip Toplevel --- --- References: --- --- * TI Data sheet SN76489.pdf --- ftp://ftp.whtech.com/datasheets%20&%20manuals/SN76489.pdf --- --- * John Kortink's article on the SN76489: --- http://web.inter.nl.net/users/J.Kortink/home/articles/sn76489/ --- --- * Maxim's "SN76489 notes" in --- http://www.smspower.org/maxim/docs/SN76489.txt --- -------------------------------------------------------------------------------- --- --- Copyright (c) 2005, 2006, Arnim Laeuger (arnim.laeuger@gmx.net) --- --- All rights reserved --- --- Redistribution and use in source and synthezised forms, with or without --- modification, are permitted provided that the following conditions are met: --- --- Redistributions of source code must retain the above copyright notice, --- this list of conditions and the following disclaimer. --- --- Redistributions in synthesized form must reproduce the above copyright --- notice, this list of conditions and the following disclaimer in the --- documentation and/or other materials provided with the distribution. --- --- Neither the name of the author nor the names of other contributors may --- be used to endorse or promote products derived from this software without --- specific prior written permission. --- --- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" --- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, --- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR --- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE --- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR --- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF --- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS --- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN --- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) --- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE --- POSSIBILITY OF SUCH DAMAGE. --- --- Please report bugs to the author, but before you do so, please --- make sure that this is not a derivative work and that --- you have the latest version of this file. --- -------------------------------------------------------------------------------- - -library ieee; -use ieee.std_logic_1164.all; -use ieee.numeric_std.all; - -library ieee; -use ieee.numeric_std.all; - -entity sn76489_top is - - generic ( - clock_div_16_g : integer := 1 - ); - port ( - clock_i : in std_logic; - clock_en_i : in std_logic; - res_n_i : in std_logic; - ce_n_i : in std_logic; - we_n_i : in std_logic; - ready_o : out std_logic; - d_i : in std_logic_vector(0 to 7); - aout_o : out signed(0 to 7) - ); - -end sn76489_top; - -architecture struct of sn76489_top is - - signal clk_en_s : boolean; - - signal tone1_we_s, - tone2_we_s, - tone3_we_s, - noise_we_s : boolean; - signal r2_s : std_logic; - - signal tone1_s, - tone2_s, - tone3_s, - noise_s : signed(0 to 7); - - signal tone3_ff_s : std_logic; - -begin - - ----------------------------------------------------------------------------- - -- Clock Divider - ----------------------------------------------------------------------------- - clock_div_b : entity work.sn76489_clock_div - generic map ( - clock_div_16_g => clock_div_16_g - ) - port map ( - clock_i => clock_i, - clock_en_i => clock_en_i, - res_n_i => res_n_i, - clk_en_o => clk_en_s - ); - - - ----------------------------------------------------------------------------- - -- Latch Control = CPU Interface - ----------------------------------------------------------------------------- - latch_ctrl_b : entity work.sn76489_latch_ctrl - port map ( - clock_i => clock_i, - clk_en_i => clk_en_s, - res_n_i => res_n_i, - ce_n_i => ce_n_i, - we_n_i => we_n_i, - d_i => d_i, - ready_o => ready_o, - tone1_we_o => tone1_we_s, - tone2_we_o => tone2_we_s, - tone3_we_o => tone3_we_s, - noise_we_o => noise_we_s, - r2_o => r2_s - ); - - - ----------------------------------------------------------------------------- - -- Tone Channel 1 - ----------------------------------------------------------------------------- - tone1_b : entity work.sn76489_tone - port map ( - clock_i => clock_i, - clk_en_i => clk_en_s, - res_n_i => res_n_i, - we_i => tone1_we_s, - d_i => d_i, - r2_i => r2_s, - ff_o => open, - tone_o => tone1_s - ); - - ----------------------------------------------------------------------------- - -- Tone Channel 2 - ----------------------------------------------------------------------------- - tone2_b : entity work.sn76489_tone - port map ( - clock_i => clock_i, - clk_en_i => clk_en_s, - res_n_i => res_n_i, - we_i => tone2_we_s, - d_i => d_i, - r2_i => r2_s, - ff_o => open, - tone_o => tone2_s - ); - - ----------------------------------------------------------------------------- - -- Tone Channel 3 - ----------------------------------------------------------------------------- - tone3_b : entity work.sn76489_tone - port map ( - clock_i => clock_i, - clk_en_i => clk_en_s, - res_n_i => res_n_i, - we_i => tone3_we_s, - d_i => d_i, - r2_i => r2_s, - ff_o => tone3_ff_s, - tone_o => tone3_s - ); - - ----------------------------------------------------------------------------- - -- Noise Channel - ----------------------------------------------------------------------------- - noise_b : entity work.sn76489_noise - port map ( - clock_i => clock_i, - clk_en_i => clk_en_s, - res_n_i => res_n_i, - we_i => noise_we_s, - d_i => d_i, - r2_i => r2_s, - tone3_ff_i => tone3_ff_s, - noise_o => noise_s - ); - - - aout_o <= tone1_s + tone2_s + tone3_s + noise_s; - -end struct; diff --git a/Computer_MiST/Laser310_MiST/rtl/spram.vhd b/Computer_MiST/Laser310_MiST/rtl/spram.vhd deleted file mode 100644 index d8043481..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/spram.vhd +++ /dev/null @@ -1,55 +0,0 @@ -LIBRARY ieee; -USE ieee.std_logic_1164.all; - -LIBRARY altera_mf; -USE altera_mf.altera_mf_components.all; - -ENTITY spram IS - generic ( - addr_width_g : integer := 8; - data_width_g : integer := 8 - ); - PORT - ( - address : IN STD_LOGIC_VECTOR (addr_width_g-1 DOWNTO 0); - clken : IN STD_LOGIC := '1'; - clock : IN STD_LOGIC := '1'; - data : IN STD_LOGIC_VECTOR (data_width_g-1 DOWNTO 0); - wren : IN STD_LOGIC ; - q : OUT STD_LOGIC_VECTOR (data_width_g-1 DOWNTO 0) - ); -END spram; - - -ARCHITECTURE SYN OF spram IS - -BEGIN - altsyncram_component : altsyncram - GENERIC MAP ( - clock_enable_input_a => "NORMAL", - clock_enable_output_a => "BYPASS", - intended_device_family => "Cyclone III", - lpm_hint => "ENABLE_RUNTIME_MOD=NO", - lpm_type => "altsyncram", - numwords_a => 2**addr_width_g, - operation_mode => "SINGLE_PORT", - outdata_aclr_a => "NONE", - outdata_reg_a => "UNREGISTERED", - power_up_uninitialized => "FALSE", - read_during_write_mode_port_a => "NEW_DATA_NO_NBE_READ", - widthad_a => addr_width_g, - width_a => data_width_g, - width_byteena_a => 1 - ) - PORT MAP ( - address_a => address, - clock0 => clock, - clocken0 => clken, - data_a => data, - wren_a => wren, - q_a => q - ); - - - -END SYN; diff --git a/Computer_MiST/Laser310_MiST/rtl/sprom.vhd b/Computer_MiST/Laser310_MiST/rtl/sprom.vhd deleted file mode 100644 index a81ac959..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/sprom.vhd +++ /dev/null @@ -1,82 +0,0 @@ -LIBRARY ieee; -USE ieee.std_logic_1164.all; - -LIBRARY altera_mf; -USE altera_mf.all; - -ENTITY sprom IS - GENERIC - ( - init_file : string := ""; - 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/Computer_MiST/Laser310_MiST/rtl/tv80/tv80_alu.v b/Computer_MiST/Laser310_MiST/rtl/tv80/tv80_alu.v deleted file mode 100644 index f90bc70a..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/tv80/tv80_alu.v +++ /dev/null @@ -1,442 +0,0 @@ -// -// TV80 8-Bit Microprocessor Core -// Based on the VHDL T80 core by Daniel Wallner (jesus@opencores.org) -// -// Copyright (c) 2004 Guy Hutchison (ghutchis@opencores.org) -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the "Software"), -// to deal in the Software without restriction, including without limitation -// the rights to use, copy, modify, merge, publish, distribute, sublicense, -// and/or sell copies of the Software, and to permit persons to whom the -// Software is furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -module tv80_alu (/*AUTOARG*/ - // Outputs - Q, F_Out, - // Inputs - Arith16, Z16, ALU_Op, IR, ISet, BusA, BusB, F_In - ); - - parameter Mode = 0; - parameter Flag_C = 0; - parameter Flag_N = 1; - parameter Flag_P = 2; - parameter Flag_X = 3; - parameter Flag_H = 4; - parameter Flag_Y = 5; - parameter Flag_Z = 6; - parameter Flag_S = 7; - - input Arith16; - input Z16; - input [3:0] ALU_Op ; - input [5:0] IR; - input [1:0] ISet; - input [7:0] BusA; - input [7:0] BusB; - input [7:0] F_In; - output [7:0] Q; - output [7:0] F_Out; - reg [7:0] Q; - reg [7:0] F_Out; - - function [4:0] AddSub4; - input [3:0] A; - input [3:0] B; - input Sub; - input Carry_In; - begin - AddSub4 = { 1'b0, A } + { 1'b0, (Sub)?~B:B } + {4'h0,Carry_In}; - end - endfunction // AddSub4 - - function [3:0] AddSub3; - input [2:0] A; - input [2:0] B; - input Sub; - input Carry_In; - begin - AddSub3 = { 1'b0, A } + { 1'b0, (Sub)?~B:B } + {3'h0,Carry_In}; - end - endfunction // AddSub4 - - function [1:0] AddSub1; - input A; - input B; - input Sub; - input Carry_In; - begin - AddSub1 = { 1'b0, A } + { 1'b0, (Sub)?~B:B } + {1'h0,Carry_In}; - end - endfunction // AddSub4 - - // AddSub variables (temporary signals) - reg UseCarry; - reg Carry7_v; - reg OverFlow_v; - reg HalfCarry_v; - reg Carry_v; - reg [7:0] Q_v; - - reg [7:0] BitMask; - - - always @(/*AUTOSENSE*/ALU_Op or BusA or BusB or F_In or IR) - begin - case (IR[5:3]) - 3'b000 : BitMask = 8'b00000001; - 3'b001 : BitMask = 8'b00000010; - 3'b010 : BitMask = 8'b00000100; - 3'b011 : BitMask = 8'b00001000; - 3'b100 : BitMask = 8'b00010000; - 3'b101 : BitMask = 8'b00100000; - 3'b110 : BitMask = 8'b01000000; - default: BitMask = 8'b10000000; - endcase // case(IR[5:3]) - - UseCarry = ~ ALU_Op[2] && ALU_Op[0]; - { HalfCarry_v, Q_v[3:0] } = AddSub4(BusA[3:0], BusB[3:0], ALU_Op[1], ALU_Op[1] ^ (UseCarry && F_In[Flag_C]) ); - { Carry7_v, Q_v[6:4] } = AddSub3(BusA[6:4], BusB[6:4], ALU_Op[1], HalfCarry_v); - { Carry_v, Q_v[7] } = AddSub1(BusA[7], BusB[7], ALU_Op[1], Carry7_v); - OverFlow_v = Carry_v ^ Carry7_v; - end // always @ * - - reg [7:0] Q_t; - reg [8:0] DAA_Q; - - always @ (/*AUTOSENSE*/ALU_Op or Arith16 or BitMask or BusA or BusB - or Carry_v or F_In or HalfCarry_v or IR or ISet - or OverFlow_v or Q_v or Z16) - begin - Q_t = 8'hxx; - DAA_Q = {9{1'bx}}; - - F_Out = F_In; - case (ALU_Op) - 4'b0000, 4'b0001, 4'b0010, 4'b0011, 4'b0100, 4'b0101, 4'b0110, 4'b0111 : - begin - F_Out[Flag_N] = 1'b0; - F_Out[Flag_C] = 1'b0; - - case (ALU_Op[2:0]) - - 3'b000, 3'b001 : // ADD, ADC - begin - Q_t = Q_v; - F_Out[Flag_C] = Carry_v; - F_Out[Flag_H] = HalfCarry_v; - F_Out[Flag_P] = OverFlow_v; - end - - 3'b010, 3'b011, 3'b111 : // SUB, SBC, CP - begin - Q_t = Q_v; - F_Out[Flag_N] = 1'b1; - F_Out[Flag_C] = ~ Carry_v; - F_Out[Flag_H] = ~ HalfCarry_v; - F_Out[Flag_P] = OverFlow_v; - end - - 3'b100 : // AND - begin - Q_t[7:0] = BusA & BusB; - F_Out[Flag_H] = 1'b1; - end - - 3'b101 : // XOR - begin - Q_t[7:0] = BusA ^ BusB; - F_Out[Flag_H] = 1'b0; - end - - default : // OR 3'b110 - begin - Q_t[7:0] = BusA | BusB; - F_Out[Flag_H] = 1'b0; - end - - endcase // case(ALU_OP[2:0]) - - if (ALU_Op[2:0] == 3'b111 ) - begin // CP - F_Out[Flag_X] = BusB[3]; - F_Out[Flag_Y] = BusB[5]; - end - else - begin - F_Out[Flag_X] = Q_t[3]; - F_Out[Flag_Y] = Q_t[5]; - end - - if (Q_t[7:0] == 8'b00000000 ) - begin - F_Out[Flag_Z] = 1'b1; - if (Z16 == 1'b1 ) - begin - F_Out[Flag_Z] = F_In[Flag_Z]; // 16 bit ADC,SBC - end - end - else - begin - F_Out[Flag_Z] = 1'b0; - end // else: !if(Q_t[7:0] == 8'b00000000 ) - - F_Out[Flag_S] = Q_t[7]; - case (ALU_Op[2:0]) - 3'b000, 3'b001, 3'b010, 3'b011, 3'b111 : // ADD, ADC, SUB, SBC, CP - ; - - default : - F_Out[Flag_P] = ~(^Q_t); - endcase // case(ALU_Op[2:0]) - - if (Arith16 == 1'b1 ) - begin - F_Out[Flag_S] = F_In[Flag_S]; - F_Out[Flag_Z] = F_In[Flag_Z]; - F_Out[Flag_P] = F_In[Flag_P]; - end - end // case: 4'b0000, 4'b0001, 4'b0010, 4'b0011, 4'b0100, 4'b0101, 4'b0110, 4'b0111 - - 4'b1100 : - begin - // DAA - F_Out[Flag_H] = F_In[Flag_H]; - F_Out[Flag_C] = F_In[Flag_C]; - DAA_Q[7:0] = BusA; - DAA_Q[8] = 1'b0; - if (F_In[Flag_N] == 1'b0 ) - begin - // After addition - // Alow > 9 || H == 1 - if (DAA_Q[3:0] > 9 || F_In[Flag_H] == 1'b1 ) - begin - if ((DAA_Q[3:0] > 9) ) - begin - F_Out[Flag_H] = 1'b1; - end - else - begin - F_Out[Flag_H] = 1'b0; - end - DAA_Q = DAA_Q + 6; - end // if (DAA_Q[3:0] > 9 || F_In[Flag_H] == 1'b1 ) - - // new Ahigh > 9 || C == 1 - if (DAA_Q[8:4] > 9 || F_In[Flag_C] == 1'b1 ) - begin - DAA_Q = DAA_Q + 96; // 0x60 - end - end - else - begin - // After subtraction - if (DAA_Q[3:0] > 9 || F_In[Flag_H] == 1'b1 ) - begin - if (DAA_Q[3:0] > 5 ) - begin - F_Out[Flag_H] = 1'b0; - end - DAA_Q[7:0] = DAA_Q[7:0] - 6; - end - if (BusA > 153 || F_In[Flag_C] == 1'b1 ) - begin - DAA_Q = DAA_Q - 352; // 0x160 - end - end // else: !if(F_In[Flag_N] == 1'b0 ) - - F_Out[Flag_X] = DAA_Q[3]; - F_Out[Flag_Y] = DAA_Q[5]; - F_Out[Flag_C] = F_In[Flag_C] || DAA_Q[8]; - Q_t = DAA_Q[7:0]; - - if (DAA_Q[7:0] == 8'b00000000 ) - begin - F_Out[Flag_Z] = 1'b1; - end - else - begin - F_Out[Flag_Z] = 1'b0; - end - - F_Out[Flag_S] = DAA_Q[7]; - F_Out[Flag_P] = ~ (^DAA_Q); - end // case: 4'b1100 - - 4'b1101, 4'b1110 : - begin - // RLD, RRD - Q_t[7:4] = BusA[7:4]; - if (ALU_Op[0] == 1'b1 ) - begin - Q_t[3:0] = BusB[7:4]; - end - else - begin - Q_t[3:0] = BusB[3:0]; - end - F_Out[Flag_H] = 1'b0; - F_Out[Flag_N] = 1'b0; - F_Out[Flag_X] = Q_t[3]; - F_Out[Flag_Y] = Q_t[5]; - if (Q_t[7:0] == 8'b00000000 ) - begin - F_Out[Flag_Z] = 1'b1; - end - else - begin - F_Out[Flag_Z] = 1'b0; - end - F_Out[Flag_S] = Q_t[7]; - F_Out[Flag_P] = ~(^Q_t); - end // case: when 4'b1101, 4'b1110 - - 4'b1001 : - begin - // BIT - Q_t[7:0] = BusB & BitMask; - F_Out[Flag_S] = Q_t[7]; - if (Q_t[7:0] == 8'b00000000 ) - begin - F_Out[Flag_Z] = 1'b1; - F_Out[Flag_P] = 1'b1; - end - else - begin - F_Out[Flag_Z] = 1'b0; - F_Out[Flag_P] = 1'b0; - end - F_Out[Flag_H] = 1'b1; - F_Out[Flag_N] = 1'b0; - F_Out[Flag_X] = 1'b0; - F_Out[Flag_Y] = 1'b0; - if (IR[2:0] != 3'b110 ) - begin - F_Out[Flag_X] = BusB[3]; - F_Out[Flag_Y] = BusB[5]; - end - end // case: when 4'b1001 - - 4'b1010 : - // SET - Q_t[7:0] = BusB | BitMask; - - 4'b1011 : - // RES - Q_t[7:0] = BusB & ~ BitMask; - - 4'b1000 : - begin - // ROT - case (IR[5:3]) - 3'b000 : // RLC - begin - Q_t[7:1] = BusA[6:0]; - Q_t[0] = BusA[7]; - F_Out[Flag_C] = BusA[7]; - end - - 3'b010 : // RL - begin - Q_t[7:1] = BusA[6:0]; - Q_t[0] = F_In[Flag_C]; - F_Out[Flag_C] = BusA[7]; - end - - 3'b001 : // RRC - begin - Q_t[6:0] = BusA[7:1]; - Q_t[7] = BusA[0]; - F_Out[Flag_C] = BusA[0]; - end - - 3'b011 : // RR - begin - Q_t[6:0] = BusA[7:1]; - Q_t[7] = F_In[Flag_C]; - F_Out[Flag_C] = BusA[0]; - end - - 3'b100 : // SLA - begin - Q_t[7:1] = BusA[6:0]; - Q_t[0] = 1'b0; - F_Out[Flag_C] = BusA[7]; - end - - 3'b110 : // SLL (Undocumented) / SWAP - begin - if (Mode == 3 ) - begin - Q_t[7:4] = BusA[3:0]; - Q_t[3:0] = BusA[7:4]; - F_Out[Flag_C] = 1'b0; - end - else - begin - Q_t[7:1] = BusA[6:0]; - Q_t[0] = 1'b1; - F_Out[Flag_C] = BusA[7]; - end // else: !if(Mode == 3 ) - end // case: 3'b110 - - 3'b101 : // SRA - begin - Q_t[6:0] = BusA[7:1]; - Q_t[7] = BusA[7]; - F_Out[Flag_C] = BusA[0]; - end - - default : // SRL - begin - Q_t[6:0] = BusA[7:1]; - Q_t[7] = 1'b0; - F_Out[Flag_C] = BusA[0]; - end - endcase // case(IR[5:3]) - - F_Out[Flag_H] = 1'b0; - F_Out[Flag_N] = 1'b0; - F_Out[Flag_X] = Q_t[3]; - F_Out[Flag_Y] = Q_t[5]; - F_Out[Flag_S] = Q_t[7]; - if (Q_t[7:0] == 8'b00000000 ) - begin - F_Out[Flag_Z] = 1'b1; - end - else - begin - F_Out[Flag_Z] = 1'b0; - end - F_Out[Flag_P] = ~(^Q_t); - - if (ISet == 2'b00 ) - begin - F_Out[Flag_P] = F_In[Flag_P]; - F_Out[Flag_S] = F_In[Flag_S]; - F_Out[Flag_Z] = F_In[Flag_Z]; - end - end // case: 4'b1000 - - - default : - ; - - endcase // case(ALU_Op) - - Q = Q_t; - end // always @ (Arith16, ALU_OP, F_In, BusA, BusB, IR, Q_v, Carry_v, HalfCarry_v, OverFlow_v, BitMask, ISet, Z16) - -endmodule // T80_ALU diff --git a/Computer_MiST/Laser310_MiST/rtl/tv80/tv80_core.v b/Computer_MiST/Laser310_MiST/rtl/tv80/tv80_core.v deleted file mode 100644 index e3f7d247..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/tv80/tv80_core.v +++ /dev/null @@ -1,1389 +0,0 @@ -// -// TV80 8-Bit Microprocessor Core -// Based on the VHDL T80 core by Daniel Wallner (jesus@opencores.org) -// -// Copyright (c) 2004 Guy Hutchison (ghutchis@opencores.org) -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the "Software"), -// to deal in the Software without restriction, including without limitation -// the rights to use, copy, modify, merge, publish, distribute, sublicense, -// and/or sell copies of the Software, and to permit persons to whom the -// Software is furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -module tv80_core (/*AUTOARG*/ - // Outputs - m1_n, iorq, no_read, write, rfsh_n, halt_n, busak_n, A, dout, mc, - ts, intcycle_n, IntE, stop, - // Inputs - reset_n, clk, cen, wait_n, int_n, nmi_n, busrq_n, dinst, di - ); - // Beginning of automatic inputs (from unused autoinst inputs) - // End of automatics - - parameter Mode = 1; // 0 => Z80, 1 => Fast Z80, 2 => 8080, 3 => GB - parameter IOWait = 1; // 0 => Single cycle I/O, 1 => Std I/O cycle - parameter Flag_C = 0; - parameter Flag_N = 1; - parameter Flag_P = 2; - parameter Flag_X = 3; - parameter Flag_H = 4; - parameter Flag_Y = 5; - parameter Flag_Z = 6; - parameter Flag_S = 7; - - input reset_n; - input clk; - input cen; - input wait_n; - input int_n; - input nmi_n; - input busrq_n; - output m1_n; - output iorq; - output no_read; - output write; - output rfsh_n; - output halt_n; - output busak_n; - output [15:0] A; - input [7:0] dinst; - input [7:0] di; - output [7:0] dout; - output [6:0] mc; - output [6:0] ts; - output intcycle_n; - output IntE; - output stop; - - reg m1_n; - reg iorq; -`ifdef TV80_REFRESH - reg rfsh_n; -`endif - reg halt_n; - reg busak_n; - reg [15:0] A; - reg [7:0] dout; - reg [6:0] mc; - reg [6:0] ts; - reg intcycle_n; - reg IntE; - reg stop; - - parameter aNone = 3'b111; - parameter aBC = 3'b000; - parameter aDE = 3'b001; - parameter aXY = 3'b010; - parameter aIOA = 3'b100; - parameter aSP = 3'b101; - parameter aZI = 3'b110; - - // Registers - reg [7:0] ACC, F; - reg [7:0] Ap, Fp; - reg [7:0] I; -`ifdef TV80_REFRESH - reg [7:0] R; -`endif - reg [15:0] SP, PC; - reg [7:0] RegDIH; - reg [7:0] RegDIL; - wire [15:0] RegBusA; - wire [15:0] RegBusB; - wire [15:0] RegBusC; - reg [2:0] RegAddrA_r; - reg [2:0] RegAddrA; - reg [2:0] RegAddrB_r; - reg [2:0] RegAddrB; - reg [2:0] RegAddrC; - reg RegWEH; - reg RegWEL; - reg Alternate; - - // Help Registers - reg [15:0] TmpAddr; // Temporary address register - reg [7:0] IR; // Instruction register - reg [1:0] ISet; // Instruction set selector - reg [15:0] RegBusA_r; - - reg [15:0] ID16; - reg [7:0] Save_Mux; - - reg [6:0] tstate; - reg [6:0] mcycle; - reg last_mcycle, last_tstate; - reg IntE_FF1; - reg IntE_FF2; - reg Halt_FF; - reg BusReq_s; - reg BusAck; - reg ClkEn; - reg NMI_s; - reg INT_s; - reg [1:0] IStatus; - - reg [7:0] DI_Reg; - reg T_Res; - reg [1:0] XY_State; - reg [2:0] Pre_XY_F_M; - reg NextIs_XY_Fetch; - reg XY_Ind; - reg No_BTR; - reg BTR_r; - reg Auto_Wait; - reg Auto_Wait_t1; - reg Auto_Wait_t2; - reg IncDecZ; - - // ALU signals - reg [7:0] BusB; - reg [7:0] BusA; - wire [7:0] ALU_Q; - wire [7:0] F_Out; - - // Registered micro code outputs - reg [4:0] Read_To_Reg_r; - reg Arith16_r; - reg Z16_r; - reg [3:0] ALU_Op_r; - reg Save_ALU_r; - reg PreserveC_r; - reg [2:0] mcycles; - - // Micro code outputs - wire [2:0] mcycles_d; - wire [2:0] tstates; - reg IntCycle; - reg NMICycle; - wire Inc_PC; - wire Inc_WZ; - wire [3:0] IncDec_16; - wire [1:0] Prefix; - wire Read_To_Acc; - wire Read_To_Reg; - wire [3:0] Set_BusB_To; - wire [3:0] Set_BusA_To; - wire [3:0] ALU_Op; - wire Save_ALU; - wire PreserveC; - wire Arith16; - wire [2:0] Set_Addr_To; - wire Jump; - wire JumpE; - wire JumpXY; - wire Call; - wire RstP; - wire LDZ; - wire LDW; - wire LDSPHL; - wire iorq_i; - wire [2:0] Special_LD; - wire ExchangeDH; - wire ExchangeRp; - wire ExchangeAF; - wire ExchangeRS; - wire I_DJNZ; - wire I_CPL; - wire I_CCF; - wire I_SCF; - wire I_RETN; - wire I_BT; - wire I_BC; - wire I_BTR; - wire I_RLD; - wire I_RRD; - wire I_INRC; - wire SetDI; - wire SetEI; - wire [1:0] IMode; - wire Halt; - - reg [15:0] PC16; - reg [15:0] PC16_B; - reg [15:0] SP16, SP16_A, SP16_B; - reg [15:0] ID16_B; - reg Oldnmi_n; - - tv80_mcode #(Mode, Flag_C, Flag_N, Flag_P, Flag_X, Flag_H, Flag_Y, Flag_Z, Flag_S) i_mcode - ( - .IR (IR), - .ISet (ISet), - .MCycle (mcycle), - .F (F), - .NMICycle (NMICycle), - .IntCycle (IntCycle), - .MCycles (mcycles_d), - .TStates (tstates), - .Prefix (Prefix), - .Inc_PC (Inc_PC), - .Inc_WZ (Inc_WZ), - .IncDec_16 (IncDec_16), - .Read_To_Acc (Read_To_Acc), - .Read_To_Reg (Read_To_Reg), - .Set_BusB_To (Set_BusB_To), - .Set_BusA_To (Set_BusA_To), - .ALU_Op (ALU_Op), - .Save_ALU (Save_ALU), - .PreserveC (PreserveC), - .Arith16 (Arith16), - .Set_Addr_To (Set_Addr_To), - .IORQ (iorq_i), - .Jump (Jump), - .JumpE (JumpE), - .JumpXY (JumpXY), - .Call (Call), - .RstP (RstP), - .LDZ (LDZ), - .LDW (LDW), - .LDSPHL (LDSPHL), - .Special_LD (Special_LD), - .ExchangeDH (ExchangeDH), - .ExchangeRp (ExchangeRp), - .ExchangeAF (ExchangeAF), - .ExchangeRS (ExchangeRS), - .I_DJNZ (I_DJNZ), - .I_CPL (I_CPL), - .I_CCF (I_CCF), - .I_SCF (I_SCF), - .I_RETN (I_RETN), - .I_BT (I_BT), - .I_BC (I_BC), - .I_BTR (I_BTR), - .I_RLD (I_RLD), - .I_RRD (I_RRD), - .I_INRC (I_INRC), - .SetDI (SetDI), - .SetEI (SetEI), - .IMode (IMode), - .Halt (Halt), - .NoRead (no_read), - .Write (write) - ); - - tv80_alu #(Mode, Flag_C, Flag_N, Flag_P, Flag_X, Flag_H, Flag_Y, Flag_Z, Flag_S) i_alu - ( - .Arith16 (Arith16_r), - .Z16 (Z16_r), - .ALU_Op (ALU_Op_r), - .IR (IR[5:0]), - .ISet (ISet), - .BusA (BusA), - .BusB (BusB), - .F_In (F), - .Q (ALU_Q), - .F_Out (F_Out) - ); - - function [6:0] number_to_bitvec; - input [2:0] num; - begin - case (num) - 1 : number_to_bitvec = 7'b0000001; - 2 : number_to_bitvec = 7'b0000010; - 3 : number_to_bitvec = 7'b0000100; - 4 : number_to_bitvec = 7'b0001000; - 5 : number_to_bitvec = 7'b0010000; - 6 : number_to_bitvec = 7'b0100000; - 7 : number_to_bitvec = 7'b1000000; - default : number_to_bitvec = 7'bx; - endcase // case(num) - end - endfunction // number_to_bitvec - - function [2:0] mcyc_to_number; - input [6:0] mcyc; - begin - casez (mcyc) - 7'b1zzzzzz : mcyc_to_number = 3'h7; - 7'b01zzzzz : mcyc_to_number = 3'h6; - 7'b001zzzz : mcyc_to_number = 3'h5; - 7'b0001zzz : mcyc_to_number = 3'h4; - 7'b00001zz : mcyc_to_number = 3'h3; - 7'b000001z : mcyc_to_number = 3'h2; - 7'b0000001 : mcyc_to_number = 3'h1; - default : mcyc_to_number = 3'h1; - endcase - end - endfunction - - always @(/*AUTOSENSE*/mcycle or mcycles or tstate or tstates) - begin - case (mcycles) - 1 : last_mcycle = mcycle[0]; - 2 : last_mcycle = mcycle[1]; - 3 : last_mcycle = mcycle[2]; - 4 : last_mcycle = mcycle[3]; - 5 : last_mcycle = mcycle[4]; - 6 : last_mcycle = mcycle[5]; - 7 : last_mcycle = mcycle[6]; - default : last_mcycle = 1'bx; - endcase // case(mcycles) - - case (tstates) - 0 : last_tstate = tstate[0]; - 1 : last_tstate = tstate[1]; - 2 : last_tstate = tstate[2]; - 3 : last_tstate = tstate[3]; - 4 : last_tstate = tstate[4]; - 5 : last_tstate = tstate[5]; - 6 : last_tstate = tstate[6]; - default : last_tstate = 1'bx; - endcase - end // always @ (... - - - always @(/*AUTOSENSE*/ALU_Q or BusAck or BusB or DI_Reg - or ExchangeRp or IR or Save_ALU_r or Set_Addr_To or XY_Ind - or XY_State or cen or last_tstate or mcycle) - begin - ClkEn = cen && ~ BusAck; - - if (last_tstate) - T_Res = 1'b1; - else T_Res = 1'b0; - - if (XY_State != 2'b00 && XY_Ind == 1'b0 && - ((Set_Addr_To == aXY) || - (mcycle[0] && IR == 8'b11001011) || - (mcycle[0] && IR == 8'b00110110))) - NextIs_XY_Fetch = 1'b1; - else - NextIs_XY_Fetch = 1'b0; - - if (ExchangeRp) - Save_Mux = BusB; - else if (!Save_ALU_r) - Save_Mux = DI_Reg; - else - Save_Mux = ALU_Q; - end // always @ * - - always @ (posedge clk or negedge reset_n) - begin - if (reset_n == 1'b0 ) - begin - PC <= #1 0; // Program Counter - A <= #1 0; - TmpAddr <= #1 0; - IR <= #1 8'b00000000; - ISet <= #1 2'b00; - XY_State <= #1 2'b00; - IStatus <= #1 2'b00; - mcycles <= #1 3'b000; - dout <= #1 8'b00000000; - - ACC <= #1 8'hFF; - F <= #1 8'hFF; - Ap <= #1 8'hFF; - Fp <= #1 8'hFF; - I <= #1 0; - `ifdef TV80_REFRESH - R <= #1 0; - `endif - SP <= #1 16'hFFFF; - Alternate <= #1 1'b0; - - Read_To_Reg_r <= #1 5'b00000; - Arith16_r <= #1 1'b0; - BTR_r <= #1 1'b0; - Z16_r <= #1 1'b0; - ALU_Op_r <= #1 4'b0000; - Save_ALU_r <= #1 1'b0; - PreserveC_r <= #1 1'b0; - XY_Ind <= #1 1'b0; - end - else - begin - - if (ClkEn == 1'b1 ) - begin - - ALU_Op_r <= #1 4'b0000; - Save_ALU_r <= #1 1'b0; - Read_To_Reg_r <= #1 5'b00000; - - mcycles <= #1 mcycles_d; - - if (IMode != 2'b11 ) - begin - IStatus <= #1 IMode; - end - - Arith16_r <= #1 Arith16; - PreserveC_r <= #1 PreserveC; - if (ISet == 2'b10 && ALU_Op[2] == 1'b0 && ALU_Op[0] == 1'b1 && mcycle[2] ) - begin - Z16_r <= #1 1'b1; - end - else - begin - Z16_r <= #1 1'b0; - end - - if (mcycle[0] && (tstate[1] | tstate[2] | tstate[3] )) - begin - // mcycle == 1 && tstate == 1, 2, || 3 - if (tstate[2] && wait_n == 1'b1 ) - begin - `ifdef TV80_REFRESH - if (Mode < 2 ) - begin - A[7:0] <= #1 R; - A[15:8] <= #1 I; - R[6:0] <= #1 R[6:0] + 1; - end - `endif - if (Jump == 1'b0 && Call == 1'b0 && NMICycle == 1'b0 && IntCycle == 1'b0 && ~ (Halt_FF == 1'b1 || Halt == 1'b1) ) - begin - PC <= #1 PC16; - end - - if (IntCycle == 1'b1 && IStatus == 2'b01 ) - begin - IR <= #1 8'b11111111; - end - else if (Halt_FF == 1'b1 || (IntCycle == 1'b1 && IStatus == 2'b10) || NMICycle == 1'b1 ) - begin - IR <= #1 8'b00000000; - TmpAddr[7:0] <= #1 dinst; // Special M1 vector fetch - end - else - begin - IR <= #1 dinst; - end - - ISet <= #1 2'b00; - if (Prefix != 2'b00 ) - begin - if (Prefix == 2'b11 ) - begin - if (IR[5] == 1'b1 ) - begin - XY_State <= #1 2'b10; - end - else - begin - XY_State <= #1 2'b01; - end - end - else - begin - if (Prefix == 2'b10 ) - begin - XY_State <= #1 2'b00; - XY_Ind <= #1 1'b0; - end - ISet <= #1 Prefix; - end - end - else - begin - XY_State <= #1 2'b00; - XY_Ind <= #1 1'b0; - end - end // if (tstate == 2 && wait_n == 1'b1 ) - - - end - else - begin - // either (mcycle > 1) OR (mcycle == 1 AND tstate > 3) - - if (mcycle[5] ) - begin - XY_Ind <= #1 1'b1; - if (Prefix == 2'b01 ) - begin - ISet <= #1 2'b01; - end - end - - if (T_Res == 1'b1 ) - begin - BTR_r <= #1 (I_BT || I_BC || I_BTR) && ~ No_BTR; - if (Jump == 1'b1 ) - begin - A[15:8] <= #1 DI_Reg; - A[7:0] <= #1 TmpAddr[7:0]; - PC[15:8] <= #1 DI_Reg; - PC[7:0] <= #1 TmpAddr[7:0]; - end - else if (JumpXY == 1'b1 ) - begin - A <= #1 RegBusC; - PC <= #1 RegBusC; - end else if (Call == 1'b1 || RstP == 1'b1 ) - begin - A <= #1 TmpAddr; - PC <= #1 TmpAddr; - end - else if (last_mcycle && NMICycle == 1'b1 ) - begin - A <= #1 16'b0000000001100110; - PC <= #1 16'b0000000001100110; - end - else if (mcycle[2] && IntCycle == 1'b1 && IStatus == 2'b10 ) - begin - A[15:8] <= #1 I; - A[7:0] <= #1 TmpAddr[7:0]; - PC[15:8] <= #1 I; - PC[7:0] <= #1 TmpAddr[7:0]; - end - else - begin - case (Set_Addr_To) - aXY : - begin - if (XY_State == 2'b00 ) - begin - A <= #1 RegBusC; - end - else - begin - if (NextIs_XY_Fetch == 1'b1 ) - begin - A <= #1 PC; - end - else - begin - A <= #1 TmpAddr; - end - end // else: !if(XY_State == 2'b00 ) - end // case: aXY - - aIOA : - begin - if (Mode == 3 ) - begin - // Memory map I/O on GBZ80 - A[15:8] <= #1 8'hFF; - end - else if (Mode == 2 ) - begin - // Duplicate I/O address on 8080 - A[15:8] <= #1 DI_Reg; - end - else - begin - A[15:8] <= #1 ACC; - end - A[7:0] <= #1 DI_Reg; - end // case: aIOA - - - aSP : - begin - A <= #1 SP; - end - - aBC : - begin - if (Mode == 3 && iorq_i == 1'b1 ) - begin - // Memory map I/O on GBZ80 - A[15:8] <= #1 8'hFF; - A[7:0] <= #1 RegBusC[7:0]; - end - else - begin - A <= #1 RegBusC; - end - end // case: aBC - - aDE : - begin - A <= #1 RegBusC; - end - - aZI : - begin - if (Inc_WZ == 1'b1 ) - begin - A <= #1 TmpAddr + 1; - end - else - begin - A[15:8] <= #1 DI_Reg; - A[7:0] <= #1 TmpAddr[7:0]; - end - end // case: aZI - - default : - begin - A <= #1 PC; - end - endcase // case(Set_Addr_To) - - end // else: !if(mcycle[2] && IntCycle == 1'b1 && IStatus == 2'b10 ) - - - Save_ALU_r <= #1 Save_ALU; - ALU_Op_r <= #1 ALU_Op; - - if (I_CPL == 1'b1 ) - begin - // CPL - ACC <= #1 ~ ACC; - F[Flag_Y] <= #1 ~ ACC[5]; - F[Flag_H] <= #1 1'b1; - F[Flag_X] <= #1 ~ ACC[3]; - F[Flag_N] <= #1 1'b1; - end - if (I_CCF == 1'b1 ) - begin - // CCF - F[Flag_C] <= #1 ~ F[Flag_C]; - F[Flag_Y] <= #1 ACC[5]; - F[Flag_H] <= #1 F[Flag_C]; - F[Flag_X] <= #1 ACC[3]; - F[Flag_N] <= #1 1'b0; - end - if (I_SCF == 1'b1 ) - begin - // SCF - F[Flag_C] <= #1 1'b1; - F[Flag_Y] <= #1 ACC[5]; - F[Flag_H] <= #1 1'b0; - F[Flag_X] <= #1 ACC[3]; - F[Flag_N] <= #1 1'b0; - end - end // if (T_Res == 1'b1 ) - - - if (tstate[2] && wait_n == 1'b1 ) - begin - if (ISet == 2'b01 && mcycle[6] ) - begin - IR <= #1 dinst; - end - if (JumpE == 1'b1 ) - begin - PC <= #1 PC16; - end - else if (Inc_PC == 1'b1 ) - begin - //PC <= #1 PC + 1; - PC <= #1 PC16; - end - if (BTR_r == 1'b1 ) - begin - //PC <= #1 PC - 2; - PC <= #1 PC16; - end - if (RstP == 1'b1 ) - begin - TmpAddr <= #1 { 10'h0, IR[5:3], 3'h0 }; - //TmpAddr <= #1 (others =>1'b0); - //TmpAddr[5:3] <= #1 IR[5:3]; - end - end - if (tstate[3] && mcycle[5] ) - begin - TmpAddr <= #1 SP16; - end - - if ((tstate[2] && wait_n == 1'b1) || (tstate[4] && mcycle[0]) ) - begin - if (IncDec_16[2:0] == 3'b111 ) - begin - SP <= #1 SP16; - end - end - - if (LDSPHL == 1'b1 ) - begin - SP <= #1 RegBusC; - end - if (ExchangeAF == 1'b1 ) - begin - Ap <= #1 ACC; - ACC <= #1 Ap; - Fp <= #1 F; - F <= #1 Fp; - end - if (ExchangeRS == 1'b1 ) - begin - Alternate <= #1 ~ Alternate; - end - end // else: !if(mcycle == 3'b001 && tstate(2) == 1'b0 ) - - - if (tstate[3] ) - begin - if (LDZ == 1'b1 ) - begin - TmpAddr[7:0] <= #1 DI_Reg; - end - if (LDW == 1'b1 ) - begin - TmpAddr[15:8] <= #1 DI_Reg; - end - - if (Special_LD[2] == 1'b1 ) - begin - case (Special_LD[1:0]) - 2'b00 : - begin - ACC <= #1 I; - F[Flag_P] <= #1 IntE_FF2; - F[Flag_Z] <= (I == 0); - F[Flag_S] <= I[7]; - F[Flag_H] <= 0; - F[Flag_N] <= 0; - end - - 2'b01 : - begin - `ifdef TV80_REFRESH - ACC <= #1 R; - `else - ACC <= #1 0; - `endif - F[Flag_P] <= #1 IntE_FF2; - F[Flag_Z] <= (I == 0); - F[Flag_S] <= I[7]; - F[Flag_H] <= 0; - F[Flag_N] <= 0; - end - - 2'b10 : - I <= #1 ACC; - - `ifdef TV80_REFRESH - default : - R <= #1 ACC; - `else - default : ; - `endif - endcase - end - end // if (tstate == 3 ) - - - if ((I_DJNZ == 1'b0 && Save_ALU_r == 1'b1) || ALU_Op_r == 4'b1001 ) - begin - if (Mode == 3 ) - begin - F[6] <= #1 F_Out[6]; - F[5] <= #1 F_Out[5]; - F[7] <= #1 F_Out[7]; - if (PreserveC_r == 1'b0 ) - begin - F[4] <= #1 F_Out[4]; - end - end - else - begin - F[7:1] <= #1 F_Out[7:1]; - if (PreserveC_r == 1'b0 ) - begin - F[Flag_C] <= #1 F_Out[0]; - end - end - end // if ((I_DJNZ == 1'b0 && Save_ALU_r == 1'b1) || ALU_Op_r == 4'b1001 ) - - if (T_Res == 1'b1 && I_INRC == 1'b1 ) - begin - F[Flag_H] <= #1 1'b0; - F[Flag_N] <= #1 1'b0; - if (DI_Reg[7:0] == 8'b00000000 ) - begin - F[Flag_Z] <= #1 1'b1; - end - else - begin - F[Flag_Z] <= #1 1'b0; - end - F[Flag_S] <= #1 DI_Reg[7]; - F[Flag_P] <= #1 ~ (^DI_Reg[7:0]); - end // if (T_Res == 1'b1 && I_INRC == 1'b1 ) - - - if (tstate[1] && Auto_Wait_t1 == 1'b0 ) - begin - dout <= #1 BusB; - if (I_RLD == 1'b1 ) - begin - dout[3:0] <= #1 BusA[3:0]; - dout[7:4] <= #1 BusB[3:0]; - end - if (I_RRD == 1'b1 ) - begin - dout[3:0] <= #1 BusB[7:4]; - dout[7:4] <= #1 BusA[3:0]; - end - end - - if (T_Res == 1'b1 ) - begin - Read_To_Reg_r[3:0] <= #1 Set_BusA_To; - Read_To_Reg_r[4] <= #1 Read_To_Reg; - if (Read_To_Acc == 1'b1 ) - begin - Read_To_Reg_r[3:0] <= #1 4'b0111; - Read_To_Reg_r[4] <= #1 1'b1; - end - end - - if (tstate[1] && I_BT == 1'b1 ) - begin - F[Flag_X] <= #1 ALU_Q[3]; - F[Flag_Y] <= #1 ALU_Q[1]; - F[Flag_H] <= #1 1'b0; - F[Flag_N] <= #1 1'b0; - end - if (I_BC == 1'b1 || I_BT == 1'b1 ) - begin - F[Flag_P] <= #1 IncDecZ; - end - - if ((tstate[1] && Save_ALU_r == 1'b0 && Auto_Wait_t1 == 1'b0) || - (Save_ALU_r == 1'b1 && ALU_Op_r != 4'b0111) ) - begin - case (Read_To_Reg_r) - 5'b10111 : - ACC <= #1 Save_Mux; - 5'b10110 : - dout <= #1 Save_Mux; - 5'b11000 : - SP[7:0] <= #1 Save_Mux; - 5'b11001 : - SP[15:8] <= #1 Save_Mux; - 5'b11011 : - F <= #1 Save_Mux; - default : ; - endcase - end // if ((tstate == 1 && Save_ALU_r == 1'b0 && Auto_Wait_t1 == 1'b0) ||... - end // if (ClkEn == 1'b1 ) - end // else: !if(reset_n == 1'b0 ) - end - - - //------------------------------------------------------------------------- - // - // BC('), DE('), HL('), IX && IY - // - //------------------------------------------------------------------------- - always @ (posedge clk) - begin - if (ClkEn == 1'b1 ) - begin - // Bus A / Write - RegAddrA_r <= #1 { Alternate, Set_BusA_To[2:1] }; - if (XY_Ind == 1'b0 && XY_State != 2'b00 && Set_BusA_To[2:1] == 2'b10 ) - begin - RegAddrA_r <= #1 { XY_State[1], 2'b11 }; - end - - // Bus B - RegAddrB_r <= #1 { Alternate, Set_BusB_To[2:1] }; - if (XY_Ind == 1'b0 && XY_State != 2'b00 && Set_BusB_To[2:1] == 2'b10 ) - begin - RegAddrB_r <= #1 { XY_State[1], 2'b11 }; - end - - // Address from register - RegAddrC <= #1 { Alternate, Set_Addr_To[1:0] }; - // Jump (HL), LD SP,HL - if ((JumpXY == 1'b1 || LDSPHL == 1'b1) ) - begin - RegAddrC <= #1 { Alternate, 2'b10 }; - end - if (((JumpXY == 1'b1 || LDSPHL == 1'b1) && XY_State != 2'b00) || (mcycle[5]) ) - begin - RegAddrC <= #1 { XY_State[1], 2'b11 }; - end - - if (I_DJNZ == 1'b1 && Save_ALU_r == 1'b1 && Mode < 2 ) - begin - IncDecZ <= #1 F_Out[Flag_Z]; - end - if ((tstate[2] || (tstate[3] && mcycle[0])) && IncDec_16[2:0] == 3'b100 ) - begin - if (ID16 == 0 ) - begin - IncDecZ <= #1 1'b0; - end - else - begin - IncDecZ <= #1 1'b1; - end - end - - RegBusA_r <= #1 RegBusA; - end - - end // always @ (posedge clk) - - - always @(/*AUTOSENSE*/Alternate or ExchangeDH or IncDec_16 - or RegAddrA_r or RegAddrB_r or XY_State or mcycle or tstate) - begin - if ((tstate[2] || (tstate[3] && mcycle[0] && IncDec_16[2] == 1'b1)) && XY_State == 2'b00) - RegAddrA = { Alternate, IncDec_16[1:0] }; - else if ((tstate[2] || (tstate[3] && mcycle[0] && IncDec_16[2] == 1'b1)) && IncDec_16[1:0] == 2'b10) - RegAddrA = { XY_State[1], 2'b11 }; - else if (ExchangeDH == 1'b1 && tstate[3]) - RegAddrA = { Alternate, 2'b10 }; - else if (ExchangeDH == 1'b1 && tstate[4]) - RegAddrA = { Alternate, 2'b01 }; - else - RegAddrA = RegAddrA_r; - - if (ExchangeDH == 1'b1 && tstate[3]) - RegAddrB = { Alternate, 2'b01 }; - else - RegAddrB = RegAddrB_r; - end // always @ * - - - always @(/*AUTOSENSE*/ALU_Op_r or Auto_Wait_t1 or ExchangeDH - or IncDec_16 or Read_To_Reg_r or Save_ALU_r or mcycle - or tstate or wait_n) - begin - RegWEH = 1'b0; - RegWEL = 1'b0; - if ((tstate[1] && ~Save_ALU_r && ~Auto_Wait_t1) || - (Save_ALU_r && (ALU_Op_r != 4'b0111)) ) - begin - case (Read_To_Reg_r) - 5'b10000 , 5'b10001 , 5'b10010 , 5'b10011 , 5'b10100 , 5'b10101 : - begin - RegWEH = ~ Read_To_Reg_r[0]; - RegWEL = Read_To_Reg_r[0]; - end // UNMATCHED !! - default : ; - endcase // case(Read_To_Reg_r) - - end // if ((tstate == 1 && Save_ALU_r == 1'b0 && Auto_Wait_t1 == 1'b0) ||... - - - if (ExchangeDH && (tstate[3] || tstate[4]) ) - begin - RegWEH = 1'b1; - RegWEL = 1'b1; - end - - if (IncDec_16[2] && ((tstate[2] && wait_n && ~mcycle[0]) || (tstate[3] && mcycle[0])) ) - begin - case (IncDec_16[1:0]) - 2'b00 , 2'b01 , 2'b10 : - begin - RegWEH = 1'b1; - RegWEL = 1'b1; - end // UNMATCHED !! - default : ; - endcase - end - end // always @ * - - - always @(/*AUTOSENSE*/ExchangeDH or ID16 or IncDec_16 or RegBusA_r - or RegBusB or Save_Mux or mcycle or tstate) - begin - RegDIH = Save_Mux; - RegDIL = Save_Mux; - - if (ExchangeDH == 1'b1 && tstate[3] ) - begin - RegDIH = RegBusB[15:8]; - RegDIL = RegBusB[7:0]; - end - else if (ExchangeDH == 1'b1 && tstate[4] ) - begin - RegDIH = RegBusA_r[15:8]; - RegDIL = RegBusA_r[7:0]; - end - else if (IncDec_16[2] == 1'b1 && ((tstate[2] && ~mcycle[0]) || (tstate[3] && mcycle[0])) ) - begin - RegDIH = ID16[15:8]; - RegDIL = ID16[7:0]; - end - end - - tv80_reg i_reg - ( - .clk (clk), - .CEN (ClkEn), - .WEH (RegWEH), - .WEL (RegWEL), - .AddrA (RegAddrA), - .AddrB (RegAddrB), - .AddrC (RegAddrC), - .DIH (RegDIH), - .DIL (RegDIL), - .DOAH (RegBusA[15:8]), - .DOAL (RegBusA[7:0]), - .DOBH (RegBusB[15:8]), - .DOBL (RegBusB[7:0]), - .DOCH (RegBusC[15:8]), - .DOCL (RegBusC[7:0]) - ); - - //------------------------------------------------------------------------- - // - // Buses - // - //------------------------------------------------------------------------- - - always @ (posedge clk) - begin - if (ClkEn == 1'b1 ) - begin - case (Set_BusB_To) - 4'b0111 : - BusB <= #1 ACC; - 4'b0000 , 4'b0001 , 4'b0010 , 4'b0011 , 4'b0100 , 4'b0101 : - begin - if (Set_BusB_To[0] == 1'b1 ) - begin - BusB <= #1 RegBusB[7:0]; - end - else - begin - BusB <= #1 RegBusB[15:8]; - end - end - 4'b0110 : - BusB <= #1 DI_Reg; - 4'b1000 : - BusB <= #1 SP[7:0]; - 4'b1001 : - BusB <= #1 SP[15:8]; - 4'b1010 : - BusB <= #1 8'b00000001; - 4'b1011 : - BusB <= #1 F; - 4'b1100 : - BusB <= #1 PC[7:0]; - 4'b1101 : - BusB <= #1 PC[15:8]; - 4'b1110 : - BusB <= #1 8'b00000000; - default : - BusB <= #1 8'h0; - endcase - - case (Set_BusA_To) - 4'b0111 : - BusA <= #1 ACC; - 4'b0000 , 4'b0001 , 4'b0010 , 4'b0011 , 4'b0100 , 4'b0101 : - begin - if (Set_BusA_To[0] == 1'b1 ) - begin - BusA <= #1 RegBusA[7:0]; - end - else - begin - BusA <= #1 RegBusA[15:8]; - end - end - 4'b0110 : - BusA <= #1 DI_Reg; - 4'b1000 : - BusA <= #1 SP[7:0]; - 4'b1001 : - BusA <= #1 SP[15:8]; - 4'b1010 : - BusA <= #1 8'b00000000; - default : - BusA <= #1 8'h0; - endcase - end - end - - //------------------------------------------------------------------------- - // - // Generate external control signals - // - //------------------------------------------------------------------------- -`ifdef TV80_REFRESH - always @ (posedge clk or negedge reset_n) - begin - if (reset_n == 1'b0 ) - begin - rfsh_n <= #1 1'b1; - end - else - begin - if (cen == 1'b1 ) - begin - if (mcycle[0] && ((tstate[2] && wait_n == 1'b1) || tstate[3]) ) - begin - rfsh_n <= #1 1'b0; - end - else - begin - rfsh_n <= #1 1'b1; - end - end - end - end // always @ (posedge clk or negedge reset_n) -`else // !`ifdef TV80_REFRESH - assign rfsh_n = 1'b1; -`endif - - always @(/*AUTOSENSE*/BusAck or Halt_FF or I_DJNZ or IntCycle - or IntE_FF1 or di or iorq_i or mcycle or tstate) - begin - mc = mcycle; - ts = tstate; - DI_Reg = di; - halt_n = ~ Halt_FF; - busak_n = ~ BusAck; - intcycle_n = ~ IntCycle; - IntE = IntE_FF1; - iorq = iorq_i; - stop = I_DJNZ; - end - - //----------------------------------------------------------------------- - // - // Syncronise inputs - // - //----------------------------------------------------------------------- - - always @ (posedge clk or negedge reset_n) - begin : sync_inputs - if (~reset_n) - begin - BusReq_s <= #1 1'b0; - INT_s <= #1 1'b0; - NMI_s <= #1 1'b0; - Oldnmi_n <= #1 1'b0; - end - else - begin - if (cen == 1'b1 ) - begin - BusReq_s <= #1 ~ busrq_n; - INT_s <= #1 ~ int_n; - if (NMICycle == 1'b1 ) - begin - NMI_s <= #1 1'b0; - end - else if (nmi_n == 1'b0 && Oldnmi_n == 1'b1 ) - begin - NMI_s <= #1 1'b1; - end - Oldnmi_n <= #1 nmi_n; - end - end - end - - //----------------------------------------------------------------------- - // - // Main state machine - // - //----------------------------------------------------------------------- - - always @ (posedge clk or negedge reset_n) - begin - if (reset_n == 1'b0 ) - begin - mcycle <= #1 7'b0000001; - tstate <= #1 7'b0000001; - Pre_XY_F_M <= #1 3'b000; - Halt_FF <= #1 1'b0; - BusAck <= #1 1'b0; - NMICycle <= #1 1'b0; - IntCycle <= #1 1'b0; - IntE_FF1 <= #1 1'b0; - IntE_FF2 <= #1 1'b0; - No_BTR <= #1 1'b0; - Auto_Wait_t1 <= #1 1'b0; - Auto_Wait_t2 <= #1 1'b0; - m1_n <= #1 1'b1; - end - else - begin - if (cen == 1'b1 ) - begin - if (T_Res == 1'b1 ) - begin - Auto_Wait_t1 <= #1 1'b0; - end - else - begin - Auto_Wait_t1 <= #1 Auto_Wait || (iorq_i & ~Auto_Wait_t2); - end - Auto_Wait_t2 <= #1 Auto_Wait_t1 & !T_Res; - No_BTR <= #1 (I_BT && (~ IR[4] || ~ F[Flag_P])) || - (I_BC && (~ IR[4] || F[Flag_Z] || ~ F[Flag_P])) || - (I_BTR && (~ IR[4] || F[Flag_Z])); - if (tstate[2] ) - begin - if (SetEI == 1'b1 ) - begin - if (!NMICycle) - IntE_FF1 <= #1 1'b1; - IntE_FF2 <= #1 1'b1; - end - if (I_RETN == 1'b1 ) - begin - IntE_FF1 <= #1 IntE_FF2; - end - end - if (tstate[3] ) - begin - if (SetDI == 1'b1 ) - begin - IntE_FF1 <= #1 1'b0; - IntE_FF2 <= #1 1'b0; - end - end - if (IntCycle == 1'b1 || NMICycle == 1'b1 ) - begin - Halt_FF <= #1 1'b0; - end - if (mcycle[0] && tstate[2] && wait_n == 1'b1 ) - begin - m1_n <= #1 1'b1; - end - if (BusReq_s == 1'b1 && BusAck == 1'b1 ) - begin - end - else - begin - BusAck <= #1 1'b0; - if (tstate[2] && wait_n == 1'b0 ) - begin - end - else if (T_Res == 1'b1 ) - begin - if (Halt == 1'b1 ) - begin - Halt_FF <= #1 1'b1; - end - if (BusReq_s == 1'b1 ) - begin - BusAck <= #1 1'b1; - end - else - begin - tstate <= #1 7'b0000010; - if (NextIs_XY_Fetch == 1'b1 ) - begin - mcycle <= #1 7'b0100000; - Pre_XY_F_M <= #1 mcyc_to_number(mcycle); - if (IR == 8'b00110110 && Mode == 0 ) - begin - Pre_XY_F_M <= #1 3'b010; - end - end - else if ((mcycle[6]) || (mcycle[5] && Mode == 1 && ISet != 2'b01) ) - begin - mcycle <= #1 number_to_bitvec(Pre_XY_F_M + 1); - end - else if ((last_mcycle) || - No_BTR == 1'b1 || - (mcycle[1] && I_DJNZ == 1'b1 && IncDecZ == 1'b1) ) - begin - m1_n <= #1 1'b0; - mcycle <= #1 7'b0000001; - IntCycle <= #1 1'b0; - NMICycle <= #1 1'b0; - if (NMI_s == 1'b1 && Prefix == 2'b00 ) - begin - NMICycle <= #1 1'b1; - IntE_FF1 <= #1 1'b0; - end - else if ((IntE_FF1 == 1'b1 && INT_s == 1'b1) && Prefix == 2'b00 && SetEI == 1'b0 ) - begin - IntCycle <= #1 1'b1; - IntE_FF1 <= #1 1'b0; - IntE_FF2 <= #1 1'b0; - end - end - else - begin - mcycle <= #1 { mcycle[5:0], mcycle[6] }; - end - end - end - else - begin // verilog has no "nor" operator - if ( ~(Auto_Wait == 1'b1 && Auto_Wait_t2 == 1'b0) && - ~(IOWait == 1 && iorq_i == 1'b1 && Auto_Wait_t1 == 1'b0) ) - begin - tstate <= #1 { tstate[5:0], tstate[6] }; - end - end - end - if (tstate[0]) - begin - m1_n <= #1 1'b0; - end - end - end - end - - always @(/*AUTOSENSE*/BTR_r or DI_Reg or IncDec_16 or JumpE or PC - or RegBusA or RegBusC or SP or tstate) - begin - if (JumpE == 1'b1 ) - begin - PC16_B = { {8{DI_Reg[7]}}, DI_Reg }; - end - else if (BTR_r == 1'b1 ) - begin - PC16_B = -2; - end - else - begin - PC16_B = 1; - end - - if (tstate[3]) - begin - SP16_A = RegBusC; - SP16_B = { {8{DI_Reg[7]}}, DI_Reg }; - end - else - begin - // suspect that ID16 and SP16 could be shared - SP16_A = SP; - - if (IncDec_16[3] == 1'b1) - SP16_B = -1; - else - SP16_B = 1; - end - - if (IncDec_16[3]) - ID16_B = -1; - else - ID16_B = 1; - - ID16 = RegBusA + ID16_B; - PC16 = PC + PC16_B; - SP16 = SP16_A + SP16_B; - end // always @ * - - - always @(/*AUTOSENSE*/IntCycle or NMICycle or mcycle) - begin - Auto_Wait = 1'b0; - if (IntCycle == 1'b1 || NMICycle == 1'b1 ) - begin - if (mcycle[0] ) - begin - Auto_Wait = 1'b1; - end - end - end // always @ * - -endmodule // T80 - diff --git a/Computer_MiST/Laser310_MiST/rtl/tv80/tv80_mcode.v b/Computer_MiST/Laser310_MiST/rtl/tv80/tv80_mcode.v deleted file mode 100644 index 40622d2b..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/tv80/tv80_mcode.v +++ /dev/null @@ -1,2650 +0,0 @@ -// -// TV80 8-Bit Microprocessor Core -// Based on the VHDL T80 core by Daniel Wallner (jesus@opencores.org) -// -// Copyright (c) 2004,2007 Guy Hutchison (ghutchis@opencores.org) -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the "Software"), -// to deal in the Software without restriction, including without limitation -// the rights to use, copy, modify, merge, publish, distribute, sublicense, -// and/or sell copies of the Software, and to permit persons to whom the -// Software is furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -module tv80_mcode - (/*AUTOARG*/ - // Outputs - MCycles, TStates, Prefix, Inc_PC, Inc_WZ, IncDec_16, Read_To_Reg, - Read_To_Acc, Set_BusA_To, Set_BusB_To, ALU_Op, Save_ALU, PreserveC, - Arith16, Set_Addr_To, IORQ, Jump, JumpE, JumpXY, Call, RstP, LDZ, - LDW, LDSPHL, Special_LD, ExchangeDH, ExchangeRp, ExchangeAF, - ExchangeRS, I_DJNZ, I_CPL, I_CCF, I_SCF, I_RETN, I_BT, I_BC, I_BTR, - I_RLD, I_RRD, I_INRC, SetDI, SetEI, IMode, Halt, NoRead, Write, - // Inputs - IR, ISet, MCycle, F, NMICycle, IntCycle - ); - - parameter Mode = 0; - parameter Flag_C = 0; - parameter Flag_N = 1; - parameter Flag_P = 2; - parameter Flag_X = 3; - parameter Flag_H = 4; - parameter Flag_Y = 5; - parameter Flag_Z = 6; - parameter Flag_S = 7; - - input [7:0] IR; - input [1:0] ISet ; - input [6:0] MCycle ; - input [7:0] F ; - input NMICycle ; - input IntCycle ; - output [2:0] MCycles ; - output [2:0] TStates ; - output [1:0] Prefix ; // None,BC,ED,DD/FD - output Inc_PC ; - output Inc_WZ ; - output [3:0] IncDec_16 ; // BC,DE,HL,SP 0 is inc - output Read_To_Reg ; - output Read_To_Acc ; - output [3:0] Set_BusA_To ; // B,C,D,E,H,L,DI/DB,A,SP(L),SP(M),0,F - output [3:0] Set_BusB_To ; // B,C,D,E,H,L,DI,A,SP(L),SP(M),1,F,PC(L),PC(M),0 - output [3:0] ALU_Op ; - output Save_ALU ; - output PreserveC ; - output Arith16 ; - output [2:0] Set_Addr_To ; // aNone,aXY,aIOA,aSP,aBC,aDE,aZI - output IORQ ; - output Jump ; - output JumpE ; - output JumpXY ; - output Call ; - output RstP ; - output LDZ ; - output LDW ; - output LDSPHL ; - output [2:0] Special_LD ; // A,I;A,R;I,A;R,A;None - output ExchangeDH ; - output ExchangeRp ; - output ExchangeAF ; - output ExchangeRS ; - output I_DJNZ ; - output I_CPL ; - output I_CCF ; - output I_SCF ; - output I_RETN ; - output I_BT ; - output I_BC ; - output I_BTR ; - output I_RLD ; - output I_RRD ; - output I_INRC ; - output SetDI ; - output SetEI ; - output [1:0] IMode ; - output Halt ; - output NoRead ; - output Write ; - - // regs - reg [2:0] MCycles ; - reg [2:0] TStates ; - reg [1:0] Prefix ; // None,BC,ED,DD/FD - reg Inc_PC ; - reg Inc_WZ ; - reg [3:0] IncDec_16 ; // BC,DE,HL,SP 0 is inc - reg Read_To_Reg ; - reg Read_To_Acc ; - reg [3:0] Set_BusA_To ; // B,C,D,E,H,L,DI/DB,A,SP(L),SP(M),0,F - reg [3:0] Set_BusB_To ; // B,C,D,E,H,L,DI,A,SP(L),SP(M),1,F,PC(L),PC(M),0 - reg [3:0] ALU_Op ; - reg Save_ALU ; - reg PreserveC ; - reg Arith16 ; - reg [2:0] Set_Addr_To ; // aNone,aXY,aIOA,aSP,aBC,aDE,aZI - reg IORQ ; - reg Jump ; - reg JumpE ; - reg JumpXY ; - reg Call ; - reg RstP ; - reg LDZ ; - reg LDW ; - reg LDSPHL ; - reg [2:0] Special_LD ; // A,I;A,R;I,A;R,A;None - reg ExchangeDH ; - reg ExchangeRp ; - reg ExchangeAF ; - reg ExchangeRS ; - reg I_DJNZ ; - reg I_CPL ; - reg I_CCF ; - reg I_SCF ; - reg I_RETN ; - reg I_BT ; - reg I_BC ; - reg I_BTR ; - reg I_RLD ; - reg I_RRD ; - reg I_INRC ; - reg SetDI ; - reg SetEI ; - reg [1:0] IMode ; - reg Halt ; - reg NoRead ; - reg Write ; - - parameter aNone = 3'b111; - parameter aBC = 3'b000; - parameter aDE = 3'b001; - parameter aXY = 3'b010; - parameter aIOA = 3'b100; - parameter aSP = 3'b101; - parameter aZI = 3'b110; - // constant aNone : std_logic_vector[2:0] = 3'b000; - // constant aXY : std_logic_vector[2:0] = 3'b001; - // constant aIOA : std_logic_vector[2:0] = 3'b010; - // constant aSP : std_logic_vector[2:0] = 3'b011; - // constant aBC : std_logic_vector[2:0] = 3'b100; - // constant aDE : std_logic_vector[2:0] = 3'b101; - // constant aZI : std_logic_vector[2:0] = 3'b110; - - function is_cc_true; - input [7:0] FF; - input [2:0] cc; - begin - if (Mode == 3 ) - begin - case (cc) - 3'b000 : is_cc_true = FF[7] == 1'b0; // NZ - 3'b001 : is_cc_true = FF[7] == 1'b1; // Z - 3'b010 : is_cc_true = FF[4] == 1'b0; // NC - 3'b011 : is_cc_true = FF[4] == 1'b1; // C - 3'b100 : is_cc_true = 0; - 3'b101 : is_cc_true = 0; - 3'b110 : is_cc_true = 0; - 3'b111 : is_cc_true = 0; - endcase - end - else - begin - case (cc) - 3'b000 : is_cc_true = FF[6] == 1'b0; // NZ - 3'b001 : is_cc_true = FF[6] == 1'b1; // Z - 3'b010 : is_cc_true = FF[0] == 1'b0; // NC - 3'b011 : is_cc_true = FF[0] == 1'b1; // C - 3'b100 : is_cc_true = FF[2] == 1'b0; // PO - 3'b101 : is_cc_true = FF[2] == 1'b1; // PE - 3'b110 : is_cc_true = FF[7] == 1'b0; // P - 3'b111 : is_cc_true = FF[7] == 1'b1; // M - endcase - end - end - endfunction // is_cc_true - - - reg [2:0] DDD; - reg [2:0] SSS; - reg [1:0] DPAIR; - - always @ (/*AUTOSENSE*/F or IR or ISet or IntCycle or MCycle - or NMICycle) - begin - DDD = IR[5:3]; - SSS = IR[2:0]; - DPAIR = IR[5:4]; - - MCycles = 3'b001; - if (MCycle[0] ) - begin - TStates = 3'b100; - end - else - begin - TStates = 3'b011; - end - Prefix = 2'b00; - Inc_PC = 1'b0; - Inc_WZ = 1'b0; - IncDec_16 = 4'b0000; - Read_To_Acc = 1'b0; - Read_To_Reg = 1'b0; - Set_BusB_To = 4'b0000; - Set_BusA_To = 4'b0000; - ALU_Op = { 1'b0, IR[5:3] }; - Save_ALU = 1'b0; - PreserveC = 1'b0; - Arith16 = 1'b0; - IORQ = 1'b0; - Set_Addr_To = aNone; - Jump = 1'b0; - JumpE = 1'b0; - JumpXY = 1'b0; - Call = 1'b0; - RstP = 1'b0; - LDZ = 1'b0; - LDW = 1'b0; - LDSPHL = 1'b0; - Special_LD = 3'b000; - ExchangeDH = 1'b0; - ExchangeRp = 1'b0; - ExchangeAF = 1'b0; - ExchangeRS = 1'b0; - I_DJNZ = 1'b0; - I_CPL = 1'b0; - I_CCF = 1'b0; - I_SCF = 1'b0; - I_RETN = 1'b0; - I_BT = 1'b0; - I_BC = 1'b0; - I_BTR = 1'b0; - I_RLD = 1'b0; - I_RRD = 1'b0; - I_INRC = 1'b0; - SetDI = 1'b0; - SetEI = 1'b0; - IMode = 2'b11; - Halt = 1'b0; - NoRead = 1'b0; - Write = 1'b0; - - case (ISet) - 2'b00 : - begin - - //---------------------------------------------------------------------------- - // - // Unprefixed instructions - // - //---------------------------------------------------------------------------- - - casez (IR) - // 8 BIT LOAD GROUP - 8'b01zzzzzz : - begin - if (IR[5:0] == 6'b110110) - Halt = 1'b1; - else if (IR[2:0] == 3'b110) - begin - // LD r,(HL) - MCycles = 3'b010; - if (MCycle[0]) - Set_Addr_To = aXY; - if (MCycle[1]) - begin - Set_BusA_To[2:0] = DDD; - Read_To_Reg = 1'b1; - end - end // if (IR[2:0] == 3'b110) - else if (IR[5:3] == 3'b110) - begin - // LD (HL),r - MCycles = 3'b010; - if (MCycle[0]) - begin - Set_Addr_To = aXY; - Set_BusB_To[2:0] = SSS; - Set_BusB_To[3] = 1'b0; - end - if (MCycle[1]) - Write = 1'b1; - end // if (IR[5:3] == 3'b110) - else - begin - Set_BusB_To[2:0] = SSS; - ExchangeRp = 1'b1; - Set_BusA_To[2:0] = DDD; - Read_To_Reg = 1'b1; - end // else: !if(IR[5:3] == 3'b110) - end // case: 8'b01zzzzzz - - 8'b00zzz110 : - begin - if (IR[5:3] == 3'b110) - begin - // LD (HL),n - MCycles = 3'b011; - if (MCycle[1]) - begin - Inc_PC = 1'b1; - Set_Addr_To = aXY; - Set_BusB_To[2:0] = SSS; - Set_BusB_To[3] = 1'b0; - end - if (MCycle[2]) - Write = 1'b1; - end // if (IR[5:3] == 3'b110) - else - begin - // LD r,n - MCycles = 3'b010; - if (MCycle[1]) - begin - Inc_PC = 1'b1; - Set_BusA_To[2:0] = DDD; - Read_To_Reg = 1'b1; - end - end - end - - 8'b00001010 : - begin - // LD A,(BC) - MCycles = 3'b010; - if (MCycle[0]) - Set_Addr_To = aBC; - if (MCycle[1]) - Read_To_Acc = 1'b1; - end // case: 8'b00001010 - - 8'b00011010 : - begin - // LD A,(DE) - MCycles = 3'b010; - if (MCycle[0]) - Set_Addr_To = aDE; - if (MCycle[1]) - Read_To_Acc = 1'b1; - end // case: 8'b00011010 - - 8'b00111010 : - begin - if (Mode == 3 ) - begin - // LDD A,(HL) - MCycles = 3'b010; - if (MCycle[0]) - Set_Addr_To = aXY; - if (MCycle[1]) - begin - Read_To_Acc = 1'b1; - IncDec_16 = 4'b1110; - end - end - else - begin - // LD A,(nn) - MCycles = 3'b100; - if (MCycle[1]) - begin - Inc_PC = 1'b1; - LDZ = 1'b1; - end - if (MCycle[2]) - begin - Set_Addr_To = aZI; - Inc_PC = 1'b1; - end - if (MCycle[3]) - begin - Read_To_Acc = 1'b1; - end - end // else: !if(Mode == 3 ) - end // case: 8'b00111010 - - 8'b00000010 : - begin - // LD (BC),A - MCycles = 3'b010; - if (MCycle[0]) - begin - Set_Addr_To = aBC; - Set_BusB_To = 4'b0111; - end - if (MCycle[1]) - begin - Write = 1'b1; - end - end // case: 8'b00000010 - - 8'b00010010 : - begin - // LD (DE),A - MCycles = 3'b010; - case (1'b1) // MCycle - MCycle[0] : - begin - Set_Addr_To = aDE; - Set_BusB_To = 4'b0111; - end - MCycle[1] : - Write = 1'b1; - default :; - endcase // case(MCycle) - end // case: 8'b00010010 - - 8'b00110010 : - begin - if (Mode == 3 ) - begin - // LDD (HL),A - MCycles = 3'b010; - case (1'b1) // MCycle - MCycle[0] : - begin - Set_Addr_To = aXY; - Set_BusB_To = 4'b0111; - end - MCycle[1] : - begin - Write = 1'b1; - IncDec_16 = 4'b1110; - end - default :; - endcase // case(MCycle) - - end - else - begin - // LD (nn),A - MCycles = 3'b100; - case (1'b1) // MCycle - MCycle[1] : - begin - Inc_PC = 1'b1; - LDZ = 1'b1; - end - MCycle[2] : - begin - Set_Addr_To = aZI; - Inc_PC = 1'b1; - Set_BusB_To = 4'b0111; - end - MCycle[3] : - begin - Write = 1'b1; - end - default :; - endcase - end // else: !if(Mode == 3 ) - end // case: 8'b00110010 - - - // 16 BIT LOAD GROUP - 8'b00000001,8'b00010001,8'b00100001,8'b00110001 : - begin - // LD dd,nn - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[1] : - begin - Inc_PC = 1'b1; - Read_To_Reg = 1'b1; - if (DPAIR == 2'b11 ) - begin - Set_BusA_To[3:0] = 4'b1000; - end - else - begin - Set_BusA_To[2:1] = DPAIR; - Set_BusA_To[0] = 1'b1; - end - end // case: 2 - - MCycle[2] : - begin - Inc_PC = 1'b1; - Read_To_Reg = 1'b1; - if (DPAIR == 2'b11 ) - begin - Set_BusA_To[3:0] = 4'b1001; - end - else - begin - Set_BusA_To[2:1] = DPAIR; - Set_BusA_To[0] = 1'b0; - end - end // case: 3 - - default :; - endcase // case(MCycle) - end // case: 8'b00000001,8'b00010001,8'b00100001,8'b00110001 - - 8'b00101010 : - begin - if (Mode == 3 ) - begin - // LDI A,(HL) - MCycles = 3'b010; - case (1'b1) // MCycle - MCycle[0] : - Set_Addr_To = aXY; - MCycle[1] : - begin - Read_To_Acc = 1'b1; - IncDec_16 = 4'b0110; - end - - default :; - endcase - end - else - begin - // LD HL,(nn) - MCycles = 3'b101; - case (1'b1) // MCycle - MCycle[1] : - begin - Inc_PC = 1'b1; - LDZ = 1'b1; - end - MCycle[2] : - begin - Set_Addr_To = aZI; - Inc_PC = 1'b1; - LDW = 1'b1; - end - MCycle[3] : - begin - Set_BusA_To[2:0] = 3'b101; // L - Read_To_Reg = 1'b1; - Inc_WZ = 1'b1; - Set_Addr_To = aZI; - end - MCycle[4] : - begin - Set_BusA_To[2:0] = 3'b100; // H - Read_To_Reg = 1'b1; - end - default :; - endcase - end // else: !if(Mode == 3 ) - end // case: 8'b00101010 - - 8'b00100010 : - begin - if (Mode == 3 ) - begin - // LDI (HL),A - MCycles = 3'b010; - case (1'b1) // MCycle - MCycle[0] : - begin - Set_Addr_To = aXY; - Set_BusB_To = 4'b0111; - end - MCycle[1] : - begin - Write = 1'b1; - IncDec_16 = 4'b0110; - end - default :; - endcase - end - else - begin - // LD (nn),HL - MCycles = 3'b101; - case (1'b1) // MCycle - MCycle[1] : - begin - Inc_PC = 1'b1; - LDZ = 1'b1; - end - - MCycle[2] : - begin - Set_Addr_To = aZI; - Inc_PC = 1'b1; - LDW = 1'b1; - Set_BusB_To = 4'b0101; // L - end - - MCycle[3] : - begin - Inc_WZ = 1'b1; - Set_Addr_To = aZI; - Write = 1'b1; - Set_BusB_To = 4'b0100; // H - end - MCycle[4] : - Write = 1'b1; - default :; - endcase - end // else: !if(Mode == 3 ) - end // case: 8'b00100010 - - 8'b11111001 : - begin - // LD SP,HL - TStates = 3'b110; - LDSPHL = 1'b1; - end - - 8'b11zz0101 : - begin - // PUSH qq - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[0] : - begin - TStates = 3'b101; - IncDec_16 = 4'b1111; - Set_Addr_To = aSP; - if (DPAIR == 2'b11 ) - begin - Set_BusB_To = 4'b0111; - end - else - begin - Set_BusB_To[2:1] = DPAIR; - Set_BusB_To[0] = 1'b0; - Set_BusB_To[3] = 1'b0; - end - end // case: 1 - - MCycle[1] : - begin - IncDec_16 = 4'b1111; - Set_Addr_To = aSP; - if (DPAIR == 2'b11 ) - begin - Set_BusB_To = 4'b1011; - end - else - begin - Set_BusB_To[2:1] = DPAIR; - Set_BusB_To[0] = 1'b1; - Set_BusB_To[3] = 1'b0; - end - Write = 1'b1; - end // case: 2 - - MCycle[2] : - Write = 1'b1; - default :; - endcase // case(MCycle) - end // case: 8'b11000101,8'b11010101,8'b11100101,8'b11110101 - - 8'b11zz0001 : - begin - // POP qq - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[0] : - Set_Addr_To = aSP; - MCycle[1] : - begin - IncDec_16 = 4'b0111; - Set_Addr_To = aSP; - Read_To_Reg = 1'b1; - if (DPAIR == 2'b11 ) - begin - Set_BusA_To[3:0] = 4'b1011; - end - else - begin - Set_BusA_To[2:1] = DPAIR; - Set_BusA_To[0] = 1'b1; - end - end // case: 2 - - MCycle[2] : - begin - IncDec_16 = 4'b0111; - Read_To_Reg = 1'b1; - if (DPAIR == 2'b11 ) - begin - Set_BusA_To[3:0] = 4'b0111; - end - else - begin - Set_BusA_To[2:1] = DPAIR; - Set_BusA_To[0] = 1'b0; - end - end // case: 3 - - default :; - endcase // case(MCycle) - end // case: 8'b11000001,8'b11010001,8'b11100001,8'b11110001 - - - // EXCHANGE, BLOCK TRANSFER AND SEARCH GROUP - 8'b11101011 : - begin - if (Mode != 3 ) - begin - // EX DE,HL - ExchangeDH = 1'b1; - end - end - - 8'b00001000 : - begin - if (Mode == 3 ) - begin - // LD (nn),SP - MCycles = 3'b101; - case (1'b1) // MCycle - MCycle[1] : - begin - Inc_PC = 1'b1; - LDZ = 1'b1; - end - - MCycle[2] : - begin - Set_Addr_To = aZI; - Inc_PC = 1'b1; - LDW = 1'b1; - Set_BusB_To = 4'b1000; - end - - MCycle[3] : - begin - Inc_WZ = 1'b1; - Set_Addr_To = aZI; - Write = 1'b1; - Set_BusB_To = 4'b1001; - end - - MCycle[4] : - Write = 1'b1; - default :; - endcase - end - else if (Mode < 2 ) - begin - // EX AF,AF' - ExchangeAF = 1'b1; - end - end // case: 8'b00001000 - - 8'b11011001 : - begin - if (Mode == 3 ) - begin - // RETI - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[0] : - Set_Addr_To = aSP; - MCycle[1] : - begin - IncDec_16 = 4'b0111; - Set_Addr_To = aSP; - LDZ = 1'b1; - end - - MCycle[2] : - begin - Jump = 1'b1; - IncDec_16 = 4'b0111; - I_RETN = 1'b1; - SetEI = 1'b1; - end - default :; - endcase - end - else if (Mode < 2 ) - begin - // EXX - ExchangeRS = 1'b1; - end - end // case: 8'b11011001 - - 8'b11100011 : - begin - if (Mode != 3 ) - begin - // EX (SP),HL - MCycles = 3'b101; - case (1'b1) // MCycle - MCycle[0] : - Set_Addr_To = aSP; - MCycle[1] : - begin - Read_To_Reg = 1'b1; - Set_BusA_To = 4'b0101; - Set_BusB_To = 4'b0101; - Set_Addr_To = aSP; - end - MCycle[2] : - begin - IncDec_16 = 4'b0111; - Set_Addr_To = aSP; - TStates = 3'b100; - Write = 1'b1; - end - MCycle[3] : - begin - Read_To_Reg = 1'b1; - Set_BusA_To = 4'b0100; - Set_BusB_To = 4'b0100; - Set_Addr_To = aSP; - end - MCycle[4] : - begin - IncDec_16 = 4'b1111; - TStates = 3'b101; - Write = 1'b1; - end - - default :; - endcase - end // if (Mode != 3 ) - end // case: 8'b11100011 - - - // 8 BIT ARITHMETIC AND LOGICAL GROUP - 8'b10zzzzzz : - begin - if (IR[2:0] == 3'b110) - begin - // ADD A,(HL) - // ADC A,(HL) - // SUB A,(HL) - // SBC A,(HL) - // AND A,(HL) - // OR A,(HL) - // XOR A,(HL) - // CP A,(HL) - MCycles = 3'b010; - case (1'b1) // MCycle - MCycle[0] : - Set_Addr_To = aXY; - MCycle[1] : - begin - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - Set_BusB_To[2:0] = SSS; - Set_BusA_To[2:0] = 3'b111; - end - - default :; - endcase // case(MCycle) - end // if (IR[2:0] == 3'b110) - else - begin - // ADD A,r - // ADC A,r - // SUB A,r - // SBC A,r - // AND A,r - // OR A,r - // XOR A,r - // CP A,r - Set_BusB_To[2:0] = SSS; - Set_BusA_To[2:0] = 3'b111; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - end // else: !if(IR[2:0] == 3'b110) - end // case: 8'b10000000,8'b10000001,8'b10000010,8'b10000011,8'b10000100,8'b10000101,8'b10000111,... - - 8'b11zzz110 : - begin - // ADD A,n - // ADC A,n - // SUB A,n - // SBC A,n - // AND A,n - // OR A,n - // XOR A,n - // CP A,n - MCycles = 3'b010; - if (MCycle[1] ) - begin - Inc_PC = 1'b1; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - Set_BusB_To[2:0] = SSS; - Set_BusA_To[2:0] = 3'b111; - end - end - - 8'b00zzz100 : - begin - if (IR[5:3] == 3'b110) - begin - // INC (HL) - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[0] : - Set_Addr_To = aXY; - MCycle[1] : - begin - TStates = 3'b100; - Set_Addr_To = aXY; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - PreserveC = 1'b1; - ALU_Op = 4'b0000; - Set_BusB_To = 4'b1010; - Set_BusA_To[2:0] = DDD; - end // case: 2 - - MCycle[2] : - Write = 1'b1; - default :; - endcase // case(MCycle) - end // case: 8'b00110100 - else - begin - // INC r - Set_BusB_To = 4'b1010; - Set_BusA_To[2:0] = DDD; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - PreserveC = 1'b1; - ALU_Op = 4'b0000; - end - end - - 8'b00zzz101 : - begin - if (IR[5:3] == 3'b110) - begin - // DEC (HL) - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[0] : - Set_Addr_To = aXY; - MCycle[1] : - begin - TStates = 3'b100; - Set_Addr_To = aXY; - ALU_Op = 4'b0010; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - PreserveC = 1'b1; - Set_BusB_To = 4'b1010; - Set_BusA_To[2:0] = DDD; - end // case: 2 - - MCycle[2] : - Write = 1'b1; - default :; - endcase // case(MCycle) - end - else - begin - // DEC r - Set_BusB_To = 4'b1010; - Set_BusA_To[2:0] = DDD; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - PreserveC = 1'b1; - ALU_Op = 4'b0010; - end - end - - // GENERAL PURPOSE ARITHMETIC AND CPU CONTROL GROUPS - 8'b00100111 : - begin - // DAA - Set_BusA_To[2:0] = 3'b111; - Read_To_Reg = 1'b1; - ALU_Op = 4'b1100; - Save_ALU = 1'b1; - end - - 8'b00101111 : - // CPL - I_CPL = 1'b1; - - 8'b00111111 : - // CCF - I_CCF = 1'b1; - - 8'b00110111 : - // SCF - I_SCF = 1'b1; - - 8'b00000000 : - begin - if (NMICycle == 1'b1 ) - begin - // NMI - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[0] : - begin - TStates = 3'b101; - IncDec_16 = 4'b1111; - Set_Addr_To = aSP; - Set_BusB_To = 4'b1101; - end - - MCycle[1] : - begin - TStates = 3'b100; - Write = 1'b1; - IncDec_16 = 4'b1111; - Set_Addr_To = aSP; - Set_BusB_To = 4'b1100; - end - - MCycle[2] : - begin - TStates = 3'b100; - Write = 1'b1; - end - - default :; - endcase // case(MCycle) - - end - else if (IntCycle == 1'b1 ) - begin - // INT (IM 2) - MCycles = 3'b101; - case (1'b1) // MCycle - MCycle[0] : - begin - LDZ = 1'b1; - TStates = 3'b101; - IncDec_16 = 4'b1111; - Set_Addr_To = aSP; - Set_BusB_To = 4'b1101; - end - - MCycle[1] : - begin - TStates = 3'b100; - Write = 1'b1; - IncDec_16 = 4'b1111; - Set_Addr_To = aSP; - Set_BusB_To = 4'b1100; - end - - MCycle[2] : - begin - TStates = 3'b100; - Write = 1'b1; - end - - MCycle[3] : - begin - Inc_PC = 1'b1; - LDZ = 1'b1; - end - - MCycle[4] : - Jump = 1'b1; - default :; - endcase - end - end // case: 8'b00000000 - - 8'b11110011 : - // DI - SetDI = 1'b1; - - 8'b11111011 : - // EI - SetEI = 1'b1; - - // 16 BIT ARITHMETIC GROUP - 8'b00zz1001 : - begin - // ADD HL,ss - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[1] : - begin - NoRead = 1'b1; - ALU_Op = 4'b0000; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - Set_BusA_To[2:0] = 3'b101; - case (IR[5:4]) - 0,1,2 : - begin - Set_BusB_To[2:1] = IR[5:4]; - Set_BusB_To[0] = 1'b1; - end - - default : - Set_BusB_To = 4'b1000; - endcase // case(IR[5:4]) - - TStates = 3'b100; - Arith16 = 1'b1; - end // case: 2 - - MCycle[2] : - begin - NoRead = 1'b1; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - ALU_Op = 4'b0001; - Set_BusA_To[2:0] = 3'b100; - case (IR[5:4]) - 0,1,2 : - Set_BusB_To[2:1] = IR[5:4]; - default : - Set_BusB_To = 4'b1001; - endcase - Arith16 = 1'b1; - end // case: 3 - - default :; - endcase // case(MCycle) - end // case: 8'b00001001,8'b00011001,8'b00101001,8'b00111001 - - 8'b00zz0011 : - begin - // INC ss - TStates = 3'b110; - IncDec_16[3:2] = 2'b01; - IncDec_16[1:0] = DPAIR; - end - - 8'b00zz1011 : - begin - // DEC ss - TStates = 3'b110; - IncDec_16[3:2] = 2'b11; - IncDec_16[1:0] = DPAIR; - end - - // ROTATE AND SHIFT GROUP - 8'b00000111, - // RLCA - 8'b00010111, - // RLA - 8'b00001111, - // RRCA - 8'b00011111 : - // RRA - begin - Set_BusA_To[2:0] = 3'b111; - ALU_Op = 4'b1000; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - end // case: 8'b00000111,... - - - // JUMP GROUP - 8'b11000011 : - begin - // JP nn - MCycles = 3'b011; - if (MCycle[1]) - begin - Inc_PC = 1'b1; - LDZ = 1'b1; - end - - if (MCycle[2]) - begin - Inc_PC = 1'b1; - Jump = 1'b1; - end - - end // case: 8'b11000011 - - 8'b11zzz010 : - begin - if (IR[5] == 1'b1 && Mode == 3 ) - begin - case (IR[4:3]) - 2'b00 : - begin - // LD ($FF00+C),A - MCycles = 3'b010; - case (1'b1) // MCycle - MCycle[0] : - begin - Set_Addr_To = aBC; - Set_BusB_To = 4'b0111; - end - MCycle[1] : - begin - Write = 1'b1; - IORQ = 1'b1; - end - - default :; - endcase // case(MCycle) - end // case: 2'b00 - - 2'b01 : - begin - // LD (nn),A - MCycles = 3'b100; - case (1'b1) // MCycle - MCycle[1] : - begin - Inc_PC = 1'b1; - LDZ = 1'b1; - end - - MCycle[2] : - begin - Set_Addr_To = aZI; - Inc_PC = 1'b1; - Set_BusB_To = 4'b0111; - end - - MCycle[3] : - Write = 1'b1; - default :; - endcase // case(MCycle) - end // case: default :... - - 2'b10 : - begin - // LD A,($FF00+C) - MCycles = 3'b010; - case (1'b1) // MCycle - MCycle[0] : - Set_Addr_To = aBC; - MCycle[1] : - begin - Read_To_Acc = 1'b1; - IORQ = 1'b1; - end - default :; - endcase // case(MCycle) - end // case: 2'b10 - - 2'b11 : - begin - // LD A,(nn) - MCycles = 3'b100; - case (1'b1) // MCycle - MCycle[1] : - begin - Inc_PC = 1'b1; - LDZ = 1'b1; - end - MCycle[2] : - begin - Set_Addr_To = aZI; - Inc_PC = 1'b1; - end - MCycle[3] : - Read_To_Acc = 1'b1; - default :; - endcase // case(MCycle) - end - endcase - end - else - begin - // JP cc,nn - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[1] : - begin - Inc_PC = 1'b1; - LDZ = 1'b1; - end - MCycle[2] : - begin - Inc_PC = 1'b1; - if (is_cc_true(F, IR[5:3]) ) - begin - Jump = 1'b1; - end - end - - default :; - endcase - end // else: !if(DPAIR == 2'b11 ) - end // case: 8'b11000010,8'b11001010,8'b11010010,8'b11011010,8'b11100010,8'b11101010,8'b11110010,8'b11111010 - - 8'b00011000 : - begin - if (Mode != 2 ) - begin - // JR e - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[1] : - Inc_PC = 1'b1; - MCycle[2] : - begin - NoRead = 1'b1; - JumpE = 1'b1; - TStates = 3'b101; - end - default :; - endcase - end // if (Mode != 2 ) - end // case: 8'b00011000 - - // Conditional relative jumps (JR [C/NC/Z/NZ], e) - 8'b001zz000 : - begin - if (Mode != 2 ) - begin - MCycles = 3'd3; - case (1'b1) // MCycle - MCycle[1] : - begin - Inc_PC = 1'b1; - - case (IR[4:3]) - 0 : MCycles = (F[Flag_Z]) ? 3'd2 : 3'd3; - 1 : MCycles = (!F[Flag_Z]) ? 3'd2 : 3'd3; - 2 : MCycles = (F[Flag_C]) ? 3'd2 : 3'd3; - 3 : MCycles = (!F[Flag_C]) ? 3'd2 : 3'd3; - endcase - end - - MCycle[2] : - begin - NoRead = 1'b1; - JumpE = 1'b1; - TStates = 3'd5; - end - default :; - endcase - end // if (Mode != 2 ) - end // case: 8'b00111000 - - 8'b11101001 : - // JP (HL) - JumpXY = 1'b1; - - 8'b00010000 : - begin - if (Mode == 3 ) - begin - I_DJNZ = 1'b1; - end - else if (Mode < 2 ) - begin - // DJNZ,e - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[0] : - begin - TStates = 3'b101; - I_DJNZ = 1'b1; - Set_BusB_To = 4'b1010; - Set_BusA_To[2:0] = 3'b000; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - ALU_Op = 4'b0010; - end - MCycle[1] : - begin - I_DJNZ = 1'b1; - Inc_PC = 1'b1; - end - MCycle[2] : - begin - NoRead = 1'b1; - JumpE = 1'b1; - TStates = 3'b101; - end - default :; - endcase - end // if (Mode < 2 ) - end // case: 8'b00010000 - - - // CALL AND RETURN GROUP - 8'b11001101 : - begin - // CALL nn - MCycles = 3'b101; - case (1'b1) // MCycle - MCycle[1] : - begin - Inc_PC = 1'b1; - LDZ = 1'b1; - end - MCycle[2] : - begin - IncDec_16 = 4'b1111; - Inc_PC = 1'b1; - TStates = 3'b100; - Set_Addr_To = aSP; - LDW = 1'b1; - Set_BusB_To = 4'b1101; - end - MCycle[3] : - begin - Write = 1'b1; - IncDec_16 = 4'b1111; - Set_Addr_To = aSP; - Set_BusB_To = 4'b1100; - end - MCycle[4] : - begin - Write = 1'b1; - Call = 1'b1; - end - default :; - endcase // case(MCycle) - end // case: 8'b11001101 - - 8'b11zzz100 : - begin - if (IR[5] == 1'b0 || Mode != 3 ) - begin - // CALL cc,nn - MCycles = 3'b101; - case (1'b1) // MCycle - MCycle[1] : - begin - Inc_PC = 1'b1; - LDZ = 1'b1; - end - MCycle[2] : - begin - Inc_PC = 1'b1; - LDW = 1'b1; - if (is_cc_true(F, IR[5:3]) ) - begin - IncDec_16 = 4'b1111; - Set_Addr_To = aSP; - TStates = 3'b100; - Set_BusB_To = 4'b1101; - end - else - begin - MCycles = 3'b011; - end // else: !if(is_cc_true(F, IR[5:3]) ) - end // case: 3 - - MCycle[3] : - begin - Write = 1'b1; - IncDec_16 = 4'b1111; - Set_Addr_To = aSP; - Set_BusB_To = 4'b1100; - end - - MCycle[4] : - begin - Write = 1'b1; - Call = 1'b1; - end - - default :; - endcase - end // if (IR[5] == 1'b0 || Mode != 3 ) - end // case: 8'b11000100,8'b11001100,8'b11010100,8'b11011100,8'b11100100,8'b11101100,8'b11110100,8'b11111100 - - 8'b11001001 : - begin - // RET - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[0] : - begin - TStates = 3'b101; - Set_Addr_To = aSP; - end - - MCycle[1] : - begin - IncDec_16 = 4'b0111; - Set_Addr_To = aSP; - LDZ = 1'b1; - end - - MCycle[2] : - begin - Jump = 1'b1; - IncDec_16 = 4'b0111; - end - - default :; - endcase // case(MCycle) - end // case: 8'b11001001 - - 8'b11000000,8'b11001000,8'b11010000,8'b11011000,8'b11100000,8'b11101000,8'b11110000,8'b11111000 : - begin - if (IR[5] == 1'b1 && Mode == 3 ) - begin - case (IR[4:3]) - 2'b00 : - begin - // LD ($FF00+nn),A - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[1] : - begin - Inc_PC = 1'b1; - Set_Addr_To = aIOA; - Set_BusB_To = 4'b0111; - end - - MCycle[2] : - Write = 1'b1; - default :; - endcase // case(MCycle) - end // case: 2'b00 - - 2'b01 : - begin - // ADD SP,n - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[1] : - begin - ALU_Op = 4'b0000; - Inc_PC = 1'b1; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - Set_BusA_To = 4'b1000; - Set_BusB_To = 4'b0110; - end - - MCycle[2] : - begin - NoRead = 1'b1; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - ALU_Op = 4'b0001; - Set_BusA_To = 4'b1001; - Set_BusB_To = 4'b1110; // Incorrect unsigned !!!!!!!!!!!!!!!!!!!!! - end - - default :; - endcase // case(MCycle) - end // case: 2'b01 - - 2'b10 : - begin - // LD A,($FF00+nn) - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[1] : - begin - Inc_PC = 1'b1; - Set_Addr_To = aIOA; - end - - MCycle[2] : - Read_To_Acc = 1'b1; - default :; - endcase // case(MCycle) - end // case: 2'b10 - - 2'b11 : - begin - // LD HL,SP+n -- Not correct !!!!!!!!!!!!!!!!!!! - MCycles = 3'b101; - case (1'b1) // MCycle - MCycle[1] : - begin - Inc_PC = 1'b1; - LDZ = 1'b1; - end - - MCycle[2] : - begin - Set_Addr_To = aZI; - Inc_PC = 1'b1; - LDW = 1'b1; - end - - MCycle[3] : - begin - Set_BusA_To[2:0] = 3'b101; // L - Read_To_Reg = 1'b1; - Inc_WZ = 1'b1; - Set_Addr_To = aZI; - end - - MCycle[4] : - begin - Set_BusA_To[2:0] = 3'b100; // H - Read_To_Reg = 1'b1; - end - - default :; - endcase // case(MCycle) - end // case: 2'b11 - - endcase // case(IR[4:3]) - - end - else - begin - // RET cc - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[0] : - begin - if (is_cc_true(F, IR[5:3]) ) - begin - Set_Addr_To = aSP; - end - else - begin - MCycles = 3'b001; - end - TStates = 3'b101; - end // case: 1 - - MCycle[1] : - begin - IncDec_16 = 4'b0111; - Set_Addr_To = aSP; - LDZ = 1'b1; - end - MCycle[2] : - begin - Jump = 1'b1; - IncDec_16 = 4'b0111; - end - default :; - endcase - end // else: !if(IR[5] == 1'b1 && Mode == 3 ) - end // case: 8'b11000000,8'b11001000,8'b11010000,8'b11011000,8'b11100000,8'b11101000,8'b11110000,8'b11111000 - - 8'b11000111,8'b11001111,8'b11010111,8'b11011111,8'b11100111,8'b11101111,8'b11110111,8'b11111111 : - begin - // RST p - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[0] : - begin - TStates = 3'b101; - IncDec_16 = 4'b1111; - Set_Addr_To = aSP; - Set_BusB_To = 4'b1101; - end - - MCycle[1] : - begin - Write = 1'b1; - IncDec_16 = 4'b1111; - Set_Addr_To = aSP; - Set_BusB_To = 4'b1100; - end - - MCycle[2] : - begin - Write = 1'b1; - RstP = 1'b1; - end - - default :; - endcase // case(MCycle) - end // case: 8'b11000111,8'b11001111,8'b11010111,8'b11011111,8'b11100111,8'b11101111,8'b11110111,8'b11111111 - - // INPUT AND OUTPUT GROUP - 8'b11011011 : - begin - if (Mode != 3 ) - begin - // IN A,(n) - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[1] : - begin - Inc_PC = 1'b1; - Set_Addr_To = aIOA; - end - - MCycle[2] : - begin - Read_To_Acc = 1'b1; - IORQ = 1'b1; - end - - default :; - endcase - end // if (Mode != 3 ) - end // case: 8'b11011011 - - 8'b11010011 : - begin - if (Mode != 3 ) - begin - // OUT (n),A - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[1] : - begin - Inc_PC = 1'b1; - Set_Addr_To = aIOA; - Set_BusB_To = 4'b0111; - end - - MCycle[2] : - begin - Write = 1'b1; - IORQ = 1'b1; - end - - default :; - endcase - end // if (Mode != 3 ) - end // case: 8'b11010011 - - - //---------------------------------------------------------------------------- - //---------------------------------------------------------------------------- - // MULTIBYTE INSTRUCTIONS - //---------------------------------------------------------------------------- - //---------------------------------------------------------------------------- - - 8'b11001011 : - begin - if (Mode != 2 ) - begin - Prefix = 2'b01; - end - end - - 8'b11101101 : - begin - if (Mode < 2 ) - begin - Prefix = 2'b10; - end - end - - 8'b11011101,8'b11111101 : - begin - if (Mode < 2 ) - begin - Prefix = 2'b11; - end - end - - endcase // case(IR) - end // case: 2'b00 - - - 2'b01 : - begin - - - //---------------------------------------------------------------------------- - // - // CB prefixed instructions - // - //---------------------------------------------------------------------------- - - Set_BusA_To[2:0] = IR[2:0]; - Set_BusB_To[2:0] = IR[2:0]; - - casez (IR) - 8'b00000000,8'b00000001,8'b00000010,8'b00000011,8'b00000100,8'b00000101,8'b00000111, - 8'b00010000,8'b00010001,8'b00010010,8'b00010011,8'b00010100,8'b00010101,8'b00010111, - 8'b00001000,8'b00001001,8'b00001010,8'b00001011,8'b00001100,8'b00001101,8'b00001111, - 8'b00011000,8'b00011001,8'b00011010,8'b00011011,8'b00011100,8'b00011101,8'b00011111, - 8'b00100000,8'b00100001,8'b00100010,8'b00100011,8'b00100100,8'b00100101,8'b00100111, - 8'b00101000,8'b00101001,8'b00101010,8'b00101011,8'b00101100,8'b00101101,8'b00101111, - 8'b00110000,8'b00110001,8'b00110010,8'b00110011,8'b00110100,8'b00110101,8'b00110111, - 8'b00111000,8'b00111001,8'b00111010,8'b00111011,8'b00111100,8'b00111101,8'b00111111 : - begin - // RLC r - // RL r - // RRC r - // RR r - // SLA r - // SRA r - // SRL r - // SLL r (Undocumented) / SWAP r - if (MCycle[0] ) begin - ALU_Op = 4'b1000; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - end - end // case: 8'b00000000,8'b00000001,8'b00000010,8'b00000011,8'b00000100,8'b00000101,8'b00000111,... - - 8'b00zzz110 : - begin - // RLC (HL) - // RL (HL) - // RRC (HL) - // RR (HL) - // SRA (HL) - // SRL (HL) - // SLA (HL) - // SLL (HL) (Undocumented) / SWAP (HL) - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[0], MCycle[6] : - Set_Addr_To = aXY; - MCycle[1] : - begin - ALU_Op = 4'b1000; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - Set_Addr_To = aXY; - TStates = 3'b100; - end - - MCycle[2] : - Write = 1'b1; - default :; - endcase // case(MCycle) - end // case: 8'b00000110,8'b00010110,8'b00001110,8'b00011110,8'b00101110,8'b00111110,8'b00100110,8'b00110110 - - 8'b01000000,8'b01000001,8'b01000010,8'b01000011,8'b01000100,8'b01000101,8'b01000111, - 8'b01001000,8'b01001001,8'b01001010,8'b01001011,8'b01001100,8'b01001101,8'b01001111, - 8'b01010000,8'b01010001,8'b01010010,8'b01010011,8'b01010100,8'b01010101,8'b01010111, - 8'b01011000,8'b01011001,8'b01011010,8'b01011011,8'b01011100,8'b01011101,8'b01011111, - 8'b01100000,8'b01100001,8'b01100010,8'b01100011,8'b01100100,8'b01100101,8'b01100111, - 8'b01101000,8'b01101001,8'b01101010,8'b01101011,8'b01101100,8'b01101101,8'b01101111, - 8'b01110000,8'b01110001,8'b01110010,8'b01110011,8'b01110100,8'b01110101,8'b01110111, - 8'b01111000,8'b01111001,8'b01111010,8'b01111011,8'b01111100,8'b01111101,8'b01111111 : - begin - // BIT b,r - if (MCycle[0] ) - begin - Set_BusB_To[2:0] = IR[2:0]; - ALU_Op = 4'b1001; - end - end // case: 8'b01000000,8'b01000001,8'b01000010,8'b01000011,8'b01000100,8'b01000101,8'b01000111,... - - 8'b01000110,8'b01001110,8'b01010110,8'b01011110,8'b01100110,8'b01101110,8'b01110110,8'b01111110 : - begin - // BIT b,(HL) - MCycles = 3'b010; - case (1'b1) // MCycle - MCycle[0], MCycle[6] : - Set_Addr_To = aXY; - MCycle[1] : - begin - ALU_Op = 4'b1001; - TStates = 3'b100; - end - - default :; - endcase // case(MCycle) - end // case: 8'b01000110,8'b01001110,8'b01010110,8'b01011110,8'b01100110,8'b01101110,8'b01110110,8'b01111110 - - 8'b11000000,8'b11000001,8'b11000010,8'b11000011,8'b11000100,8'b11000101,8'b11000111, - 8'b11001000,8'b11001001,8'b11001010,8'b11001011,8'b11001100,8'b11001101,8'b11001111, - 8'b11010000,8'b11010001,8'b11010010,8'b11010011,8'b11010100,8'b11010101,8'b11010111, - 8'b11011000,8'b11011001,8'b11011010,8'b11011011,8'b11011100,8'b11011101,8'b11011111, - 8'b11100000,8'b11100001,8'b11100010,8'b11100011,8'b11100100,8'b11100101,8'b11100111, - 8'b11101000,8'b11101001,8'b11101010,8'b11101011,8'b11101100,8'b11101101,8'b11101111, - 8'b11110000,8'b11110001,8'b11110010,8'b11110011,8'b11110100,8'b11110101,8'b11110111, - 8'b11111000,8'b11111001,8'b11111010,8'b11111011,8'b11111100,8'b11111101,8'b11111111 : - begin - // SET b,r - if (MCycle[0] ) - begin - ALU_Op = 4'b1010; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - end - end // case: 8'b11000000,8'b11000001,8'b11000010,8'b11000011,8'b11000100,8'b11000101,8'b11000111,... - - 8'b11000110,8'b11001110,8'b11010110,8'b11011110,8'b11100110,8'b11101110,8'b11110110,8'b11111110 : - begin - // SET b,(HL) - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[0], MCycle[6] : - Set_Addr_To = aXY; - MCycle[1] : - begin - ALU_Op = 4'b1010; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - Set_Addr_To = aXY; - TStates = 3'b100; - end - MCycle[2] : - Write = 1'b1; - default :; - endcase // case(MCycle) - end // case: 8'b11000110,8'b11001110,8'b11010110,8'b11011110,8'b11100110,8'b11101110,8'b11110110,8'b11111110 - - 8'b10000000,8'b10000001,8'b10000010,8'b10000011,8'b10000100,8'b10000101,8'b10000111, - 8'b10001000,8'b10001001,8'b10001010,8'b10001011,8'b10001100,8'b10001101,8'b10001111, - 8'b10010000,8'b10010001,8'b10010010,8'b10010011,8'b10010100,8'b10010101,8'b10010111, - 8'b10011000,8'b10011001,8'b10011010,8'b10011011,8'b10011100,8'b10011101,8'b10011111, - 8'b10100000,8'b10100001,8'b10100010,8'b10100011,8'b10100100,8'b10100101,8'b10100111, - 8'b10101000,8'b10101001,8'b10101010,8'b10101011,8'b10101100,8'b10101101,8'b10101111, - 8'b10110000,8'b10110001,8'b10110010,8'b10110011,8'b10110100,8'b10110101,8'b10110111, - 8'b10111000,8'b10111001,8'b10111010,8'b10111011,8'b10111100,8'b10111101,8'b10111111 : - begin - // RES b,r - if (MCycle[0] ) - begin - ALU_Op = 4'b1011; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - end - end // case: 8'b10000000,8'b10000001,8'b10000010,8'b10000011,8'b10000100,8'b10000101,8'b10000111,... - - 8'b10000110,8'b10001110,8'b10010110,8'b10011110,8'b10100110,8'b10101110,8'b10110110,8'b10111110 : - begin - // RES b,(HL) - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[0], MCycle[6] : - Set_Addr_To = aXY; - MCycle[1] : - begin - ALU_Op = 4'b1011; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - Set_Addr_To = aXY; - TStates = 3'b100; - end - - MCycle[2] : - Write = 1'b1; - default :; - endcase // case(MCycle) - end // case: 8'b10000110,8'b10001110,8'b10010110,8'b10011110,8'b10100110,8'b10101110,8'b10110110,8'b10111110 - - endcase // case(IR) - end // case: 2'b01 - - - default : - begin : default_ed_block - - //---------------------------------------------------------------------------- - // - // ED prefixed instructions - // - //---------------------------------------------------------------------------- - - casez (IR) - /* - * Undocumented NOP instructions commented out to reduce size of mcode - * - 8'b00000000,8'b00000001,8'b00000010,8'b00000011,8'b00000100,8'b00000101,8'b00000110,8'b00000111 - ,8'b00001000,8'b00001001,8'b00001010,8'b00001011,8'b00001100,8'b00001101,8'b00001110,8'b00001111 - ,8'b00010000,8'b00010001,8'b00010010,8'b00010011,8'b00010100,8'b00010101,8'b00010110,8'b00010111 - ,8'b00011000,8'b00011001,8'b00011010,8'b00011011,8'b00011100,8'b00011101,8'b00011110,8'b00011111 - ,8'b00100000,8'b00100001,8'b00100010,8'b00100011,8'b00100100,8'b00100101,8'b00100110,8'b00100111 - ,8'b00101000,8'b00101001,8'b00101010,8'b00101011,8'b00101100,8'b00101101,8'b00101110,8'b00101111 - ,8'b00110000,8'b00110001,8'b00110010,8'b00110011,8'b00110100,8'b00110101,8'b00110110,8'b00110111 - ,8'b00111000,8'b00111001,8'b00111010,8'b00111011,8'b00111100,8'b00111101,8'b00111110,8'b00111111 - - - ,8'b10000000,8'b10000001,8'b10000010,8'b10000011,8'b10000100,8'b10000101,8'b10000110,8'b10000111 - ,8'b10001000,8'b10001001,8'b10001010,8'b10001011,8'b10001100,8'b10001101,8'b10001110,8'b10001111 - ,8'b10010000,8'b10010001,8'b10010010,8'b10010011,8'b10010100,8'b10010101,8'b10010110,8'b10010111 - ,8'b10011000,8'b10011001,8'b10011010,8'b10011011,8'b10011100,8'b10011101,8'b10011110,8'b10011111 - , 8'b10100100,8'b10100101,8'b10100110,8'b10100111 - , 8'b10101100,8'b10101101,8'b10101110,8'b10101111 - , 8'b10110100,8'b10110101,8'b10110110,8'b10110111 - , 8'b10111100,8'b10111101,8'b10111110,8'b10111111 - ,8'b11000000,8'b11000001,8'b11000010,8'b11000011,8'b11000100,8'b11000101,8'b11000110,8'b11000111 - ,8'b11001000,8'b11001001,8'b11001010,8'b11001011,8'b11001100,8'b11001101,8'b11001110,8'b11001111 - ,8'b11010000,8'b11010001,8'b11010010,8'b11010011,8'b11010100,8'b11010101,8'b11010110,8'b11010111 - ,8'b11011000,8'b11011001,8'b11011010,8'b11011011,8'b11011100,8'b11011101,8'b11011110,8'b11011111 - ,8'b11100000,8'b11100001,8'b11100010,8'b11100011,8'b11100100,8'b11100101,8'b11100110,8'b11100111 - ,8'b11101000,8'b11101001,8'b11101010,8'b11101011,8'b11101100,8'b11101101,8'b11101110,8'b11101111 - ,8'b11110000,8'b11110001,8'b11110010,8'b11110011,8'b11110100,8'b11110101,8'b11110110,8'b11110111 - ,8'b11111000,8'b11111001,8'b11111010,8'b11111011,8'b11111100,8'b11111101,8'b11111110,8'b11111111 : - ; // NOP, undocumented - - 8'b01111110,8'b01111111 : - // NOP, undocumented - ; - */ - - // 8 BIT LOAD GROUP - 8'b01010111 : - begin - // LD A,I - Special_LD = 3'b100; - TStates = 3'b101; - end - - 8'b01011111 : - begin - // LD A,R - Special_LD = 3'b101; - TStates = 3'b101; - end - - 8'b01000111 : - begin - // LD I,A - Special_LD = 3'b110; - TStates = 3'b101; - end - - 8'b01001111 : - begin - // LD R,A - Special_LD = 3'b111; - TStates = 3'b101; - end - - // 16 BIT LOAD GROUP - 8'b01001011,8'b01011011,8'b01101011,8'b01111011 : - begin - // LD dd,(nn) - MCycles = 3'b101; - case (1'b1) // MCycle - MCycle[1] : - begin - Inc_PC = 1'b1; - LDZ = 1'b1; - end - - MCycle[2] : - begin - Set_Addr_To = aZI; - Inc_PC = 1'b1; - LDW = 1'b1; - end - - MCycle[3] : - begin - Read_To_Reg = 1'b1; - if (IR[5:4] == 2'b11 ) - begin - Set_BusA_To = 4'b1000; - end - else - begin - Set_BusA_To[2:1] = IR[5:4]; - Set_BusA_To[0] = 1'b1; - end - Inc_WZ = 1'b1; - Set_Addr_To = aZI; - end // case: 4 - - MCycle[4] : - begin - Read_To_Reg = 1'b1; - if (IR[5:4] == 2'b11 ) - begin - Set_BusA_To = 4'b1001; - end - else - begin - Set_BusA_To[2:1] = IR[5:4]; - Set_BusA_To[0] = 1'b0; - end - end // case: 5 - - default :; - endcase // case(MCycle) - end // case: 8'b01001011,8'b01011011,8'b01101011,8'b01111011 - - - 8'b01000011,8'b01010011,8'b01100011,8'b01110011 : - begin - // LD (nn),dd - MCycles = 3'b101; - case (1'b1) // MCycle - MCycle[1] : - begin - Inc_PC = 1'b1; - LDZ = 1'b1; - end - - MCycle[2] : - begin - Set_Addr_To = aZI; - Inc_PC = 1'b1; - LDW = 1'b1; - if (IR[5:4] == 2'b11 ) - begin - Set_BusB_To = 4'b1000; - end - else - begin - Set_BusB_To[2:1] = IR[5:4]; - Set_BusB_To[0] = 1'b1; - Set_BusB_To[3] = 1'b0; - end - end // case: 3 - - MCycle[3] : - begin - Inc_WZ = 1'b1; - Set_Addr_To = aZI; - Write = 1'b1; - if (IR[5:4] == 2'b11 ) - begin - Set_BusB_To = 4'b1001; - end - else - begin - Set_BusB_To[2:1] = IR[5:4]; - Set_BusB_To[0] = 1'b0; - Set_BusB_To[3] = 1'b0; - end - end // case: 4 - - MCycle[4] : - begin - Write = 1'b1; - end - - default :; - endcase // case(MCycle) - end // case: 8'b01000011,8'b01010011,8'b01100011,8'b01110011 - - 8'b10100000 , 8'b10101000 , 8'b10110000 , 8'b10111000 : - begin - // LDI, LDD, LDIR, LDDR - MCycles = 3'b100; - case (1'b1) // MCycle - MCycle[0] : - begin - Set_Addr_To = aXY; - IncDec_16 = 4'b1100; // BC - end - - MCycle[1] : - begin - Set_BusB_To = 4'b0110; - Set_BusA_To[2:0] = 3'b111; - ALU_Op = 4'b0000; - Set_Addr_To = aDE; - if (IR[3] == 1'b0 ) - begin - IncDec_16 = 4'b0110; // IX - end - else - begin - IncDec_16 = 4'b1110; - end - end // case: 2 - - MCycle[2] : - begin - I_BT = 1'b1; - TStates = 3'b101; - Write = 1'b1; - if (IR[3] == 1'b0 ) - begin - IncDec_16 = 4'b0101; // DE - end - else - begin - IncDec_16 = 4'b1101; - end - end // case: 3 - - MCycle[3] : - begin - NoRead = 1'b1; - TStates = 3'b101; - end - - default :; - endcase // case(MCycle) - end // case: 8'b10100000 , 8'b10101000 , 8'b10110000 , 8'b10111000 - - 8'b10100001 , 8'b10101001 , 8'b10110001 , 8'b10111001 : - begin - // CPI, CPD, CPIR, CPDR - MCycles = 3'b100; - case (1'b1) // MCycle - MCycle[0] : - begin - Set_Addr_To = aXY; - IncDec_16 = 4'b1100; // BC - end - - MCycle[1] : - begin - Set_BusB_To = 4'b0110; - Set_BusA_To[2:0] = 3'b111; - ALU_Op = 4'b0111; - Save_ALU = 1'b1; - PreserveC = 1'b1; - if (IR[3] == 1'b0 ) - begin - IncDec_16 = 4'b0110; - end - else - begin - IncDec_16 = 4'b1110; - end - end // case: 2 - - MCycle[2] : - begin - NoRead = 1'b1; - I_BC = 1'b1; - TStates = 3'b101; - end - - MCycle[3] : - begin - NoRead = 1'b1; - TStates = 3'b101; - end - - default :; - endcase // case(MCycle) - end // case: 8'b10100001 , 8'b10101001 , 8'b10110001 , 8'b10111001 - - 8'b01000100,8'b01001100,8'b01010100,8'b01011100,8'b01100100,8'b01101100,8'b01110100,8'b01111100 : - begin - // NEG - ALU_Op = 4'b0010; - Set_BusB_To = 4'b0111; - Set_BusA_To = 4'b1010; - Read_To_Acc = 1'b1; - Save_ALU = 1'b1; - end - - 8'b01000110,8'b01001110,8'b01100110,8'b01101110 : - begin - // IM 0 - IMode = 2'b00; - end - - 8'b01010110,8'b01110110 : - // IM 1 - IMode = 2'b01; - - 8'b01011110,8'b01110111 : - // IM 2 - IMode = 2'b10; - - // 16 bit arithmetic - 8'b01001010,8'b01011010,8'b01101010,8'b01111010 : - begin - // ADC HL,ss - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[1] : - begin - NoRead = 1'b1; - ALU_Op = 4'b0001; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - Set_BusA_To[2:0] = 3'b101; - case (IR[5:4]) - 0,1,2 : - begin - Set_BusB_To[2:1] = IR[5:4]; - Set_BusB_To[0] = 1'b1; - end - default : - Set_BusB_To = 4'b1000; - endcase - TStates = 3'b100; - end // case: 2 - - MCycle[2] : - begin - NoRead = 1'b1; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - ALU_Op = 4'b0001; - Set_BusA_To[2:0] = 3'b100; - case (IR[5:4]) - 0,1,2 : - begin - Set_BusB_To[2:1] = IR[5:4]; - Set_BusB_To[0] = 1'b0; - end - default : - Set_BusB_To = 4'b1001; - endcase // case(IR[5:4]) - end // case: 3 - - default :; - endcase // case(MCycle) - end // case: 8'b01001010,8'b01011010,8'b01101010,8'b01111010 - - 8'b01000010,8'b01010010,8'b01100010,8'b01110010 : - begin - // SBC HL,ss - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[1] : - begin - NoRead = 1'b1; - ALU_Op = 4'b0011; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - Set_BusA_To[2:0] = 3'b101; - case (IR[5:4]) - 0,1,2 : - begin - Set_BusB_To[2:1] = IR[5:4]; - Set_BusB_To[0] = 1'b1; - end - default : - Set_BusB_To = 4'b1000; - endcase - TStates = 3'b100; - end // case: 2 - - MCycle[2] : - begin - NoRead = 1'b1; - ALU_Op = 4'b0011; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - Set_BusA_To[2:0] = 3'b100; - case (IR[5:4]) - 0,1,2 : - Set_BusB_To[2:1] = IR[5:4]; - default : - Set_BusB_To = 4'b1001; - endcase - end // case: 3 - - default :; - - endcase // case(MCycle) - end // case: 8'b01000010,8'b01010010,8'b01100010,8'b01110010 - - 8'b01101111 : - begin - // RLD - MCycles = 3'b100; - case (1'b1) // MCycle - MCycle[1] : - begin - NoRead = 1'b1; - Set_Addr_To = aXY; - end - - MCycle[2] : - begin - Read_To_Reg = 1'b1; - Set_BusB_To[2:0] = 3'b110; - Set_BusA_To[2:0] = 3'b111; - ALU_Op = 4'b1101; - TStates = 3'b100; - Set_Addr_To = aXY; - Save_ALU = 1'b1; - end - - MCycle[3] : - begin - I_RLD = 1'b1; - Write = 1'b1; - end - - default :; - endcase // case(MCycle) - end // case: 8'b01101111 - - 8'b01100111 : - begin - // RRD - MCycles = 3'b100; - case (1'b1) // MCycle - MCycle[1] : - Set_Addr_To = aXY; - MCycle[2] : - begin - Read_To_Reg = 1'b1; - Set_BusB_To[2:0] = 3'b110; - Set_BusA_To[2:0] = 3'b111; - ALU_Op = 4'b1110; - TStates = 3'b100; - Set_Addr_To = aXY; - Save_ALU = 1'b1; - end - - MCycle[3] : - begin - I_RRD = 1'b1; - Write = 1'b1; - end - - default :; - endcase // case(MCycle) - end // case: 8'b01100111 - - 8'b01000101,8'b01001101,8'b01010101,8'b01011101,8'b01100101,8'b01101101,8'b01110101,8'b01111101 : - begin - // RETI, RETN - MCycles = 3'b011; - case (1'b1) // MCycle - MCycle[0] : - Set_Addr_To = aSP; - - MCycle[1] : - begin - IncDec_16 = 4'b0111; - Set_Addr_To = aSP; - LDZ = 1'b1; - end - - MCycle[2] : - begin - Jump = 1'b1; - IncDec_16 = 4'b0111; - I_RETN = 1'b1; - end - - default :; - endcase // case(MCycle) - end // case: 8'b01000101,8'b01001101,8'b01010101,8'b01011101,8'b01100101,8'b01101101,8'b01110101,8'b01111101 - - 8'b01000000,8'b01001000,8'b01010000,8'b01011000,8'b01100000,8'b01101000,8'b01110000,8'b01111000 : - begin - // IN r,(C) - MCycles = 3'b010; - case (1'b1) // MCycle - MCycle[0] : - Set_Addr_To = aBC; - - MCycle[1] : - begin - IORQ = 1'b1; - if (IR[5:3] != 3'b110 ) - begin - Read_To_Reg = 1'b1; - Set_BusA_To[2:0] = IR[5:3]; - end - I_INRC = 1'b1; - end - - default :; - endcase // case(MCycle) - end // case: 8'b01000000,8'b01001000,8'b01010000,8'b01011000,8'b01100000,8'b01101000,8'b01110000,8'b01111000 - - 8'b01000001,8'b01001001,8'b01010001,8'b01011001,8'b01100001,8'b01101001,8'b01110001,8'b01111001 : - begin - // OUT (C),r - // OUT (C),0 - MCycles = 3'b010; - case (1'b1) // MCycle - MCycle[0] : - begin - Set_Addr_To = aBC; - Set_BusB_To[2:0] = IR[5:3]; - if (IR[5:3] == 3'b110 ) - begin - Set_BusB_To[3] = 1'b1; - end - end - - MCycle[1] : - begin - Write = 1'b1; - IORQ = 1'b1; - end - - default :; - endcase // case(MCycle) - end // case: 8'b01000001,8'b01001001,8'b01010001,8'b01011001,8'b01100001,8'b01101001,8'b01110001,8'b01111001 - - 8'b10100010 , 8'b10101010 , 8'b10110010 , 8'b10111010 : - begin - // INI, IND, INIR, INDR - MCycles = 3'b100; - case (1'b1) // MCycle - MCycle[0] : - begin - Set_Addr_To = aBC; - Set_BusB_To = 4'b1010; - Set_BusA_To = 4'b0000; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - ALU_Op = 4'b0010; - end - - MCycle[1] : - begin - IORQ = 1'b1; - Set_BusB_To = 4'b0110; - Set_Addr_To = aXY; - end - - MCycle[2] : - begin - if (IR[3] == 1'b0 ) - begin - IncDec_16 = 4'b0110; - end - else - begin - IncDec_16 = 4'b1110; - end - TStates = 3'b100; - Write = 1'b1; - I_BTR = 1'b1; - end // case: 3 - - MCycle[3] : - begin - NoRead = 1'b1; - TStates = 3'b101; - end - - default :; - endcase // case(MCycle) - end // case: 8'b10100010 , 8'b10101010 , 8'b10110010 , 8'b10111010 - - 8'b10100011 , 8'b10101011 , 8'b10110011 , 8'b10111011 : - begin - // OUTI, OUTD, OTIR, OTDR - MCycles = 3'b100; - case (1'b1) // MCycle - MCycle[0] : - begin - TStates = 3'b101; - Set_Addr_To = aXY; - Set_BusB_To = 4'b1010; - Set_BusA_To = 4'b0000; - Read_To_Reg = 1'b1; - Save_ALU = 1'b1; - ALU_Op = 4'b0010; - end - - MCycle[1] : - begin - Set_BusB_To = 4'b0110; - Set_Addr_To = aBC; - if (IR[3] == 1'b0 ) - begin - IncDec_16 = 4'b0110; - end - else - begin - IncDec_16 = 4'b1110; - end - end - - MCycle[2] : - begin - if (IR[3] == 1'b0 ) - begin - IncDec_16 = 4'b0010; - end - else - begin - IncDec_16 = 4'b1010; - end - IORQ = 1'b1; - Write = 1'b1; - I_BTR = 1'b1; - end // case: 3 - - MCycle[3] : - begin - NoRead = 1'b1; - TStates = 3'b101; - end - - default :; - endcase // case(MCycle) - end // case: 8'b10100011 , 8'b10101011 , 8'b10110011 , 8'b10111011 - - default : ; - - endcase // case(IR) - end // block: default_ed_block - endcase // case(ISet) - - if (Mode == 1 ) - begin - if (MCycle[0] ) - begin - //TStates = 3'b100; - end - else - begin - TStates = 3'b011; - end - end - - if (Mode == 3 ) - begin - if (MCycle[0] ) - begin - //TStates = 3'b100; - end - else - begin - TStates = 3'b100; - end - end - - if (Mode < 2 ) - begin - if (MCycle[5] ) - begin - Inc_PC = 1'b1; - if (Mode == 1 ) - begin - Set_Addr_To = aXY; - TStates = 3'b100; - Set_BusB_To[2:0] = SSS; - Set_BusB_To[3] = 1'b0; - end - if (IR == 8'b00110110 || IR == 8'b11001011 ) - begin - Set_Addr_To = aNone; - end - end - if (MCycle[6] ) - begin - if (Mode == 0 ) - begin - TStates = 3'b101; - end - if (ISet != 2'b01 ) - begin - Set_Addr_To = aXY; - end - Set_BusB_To[2:0] = SSS; - Set_BusB_To[3] = 1'b0; - if (IR == 8'b00110110 || ISet == 2'b01 ) - begin - // LD (HL),n - Inc_PC = 1'b1; - end - else - begin - NoRead = 1'b1; - end - end - end // if (Mode < 2 ) - - end // always @ (IR, ISet, MCycle, F, NMICycle, IntCycle) -endmodule // T80_MCode diff --git a/Computer_MiST/Laser310_MiST/rtl/tv80/tv80_reg.v b/Computer_MiST/Laser310_MiST/rtl/tv80/tv80_reg.v deleted file mode 100644 index 889766cf..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/tv80/tv80_reg.v +++ /dev/null @@ -1,77 +0,0 @@ -// -// TV80 8-Bit Microprocessor Core -// Based on the VHDL T80 core by Daniel Wallner (jesus@opencores.org) -// -// Copyright (c) 2004 Guy Hutchison (ghutchis@opencores.org) -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the "Software"), -// to deal in the Software without restriction, including without limitation -// the rights to use, copy, modify, merge, publish, distribute, sublicense, -// and/or sell copies of the Software, and to permit persons to whom the -// Software is furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -module tv80_reg (/*AUTOARG*/ - // Outputs - DOBH, DOAL, DOCL, DOBL, DOCH, DOAH, - // Inputs - AddrC, AddrA, AddrB, DIH, DIL, clk, CEN, WEH, WEL - ); - input [2:0] AddrC; - output [7:0] DOBH; - input [2:0] AddrA; - input [2:0] AddrB; - input [7:0] DIH; - output [7:0] DOAL; - output [7:0] DOCL; - input [7:0] DIL; - output [7:0] DOBL; - output [7:0] DOCH; - output [7:0] DOAH; - input clk, CEN, WEH, WEL; - - reg [7:0] RegsH [0:7]; - reg [7:0] RegsL [0:7]; - - always @(posedge clk) - begin - if (CEN) - begin - if (WEH) RegsH[AddrA] <= DIH; - if (WEL) RegsL[AddrA] <= DIL; - end - end - - assign DOAH = RegsH[AddrA]; - assign DOAL = RegsL[AddrA]; - assign DOBH = RegsH[AddrB]; - assign DOBL = RegsL[AddrB]; - assign DOCH = RegsH[AddrC]; - assign DOCL = RegsL[AddrC]; - - // break out ram bits for waveform debug -// synopsys translate_off - wire [7:0] B = RegsH[0]; - wire [7:0] C = RegsL[0]; - wire [7:0] D = RegsH[1]; - wire [7:0] E = RegsL[1]; - wire [7:0] H = RegsH[2]; - wire [7:0] L = RegsL[2]; - - wire [15:0] IX = { RegsH[3], RegsL[3] }; - wire [15:0] IY = { RegsH[7], RegsL[7] }; -// synopsys translate_on - -endmodule - diff --git a/Computer_MiST/Laser310_MiST/rtl/tv80/tv80n.v b/Computer_MiST/Laser310_MiST/rtl/tv80/tv80n.v deleted file mode 100644 index d672608e..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/tv80/tv80n.v +++ /dev/null @@ -1,182 +0,0 @@ -// -// TV80 8-Bit Microprocessor Core -// Based on the VHDL T80 core by Daniel Wallner (jesus@opencores.org) -// -// Copyright (c) 2004 Guy Hutchison (ghutchis@opencores.org) -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the "Software"), -// to deal in the Software without restriction, including without limitation -// the rights to use, copy, modify, merge, publish, distribute, sublicense, -// and/or sell copies of the Software, and to permit persons to whom the -// Software is furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -// Negative-edge based wrapper allows memory wait_n signal to work -// correctly without resorting to asynchronous logic. - -module tv80n (/*AUTOARG*/ - // Outputs - m1_n, mreq_n, iorq_n, rd_n, wr_n, rfsh_n, halt_n, busak_n, A, dout, - // Inputs - reset_n, clk, wait_n, int_n, nmi_n, busrq_n, di - ); - - parameter Mode = 0; // 0 => Z80, 1 => Fast Z80, 2 => 8080, 3 => GB - parameter T2Write = 0; // 0 => wr_n active in T3, /=0 => wr_n active in T2 - parameter IOWait = 1; // 0 => Single cycle I/O, 1 => Std I/O cycle - - - input reset_n; - input clk; - input wait_n; - input int_n; - input nmi_n; - input busrq_n; - output m1_n; - output mreq_n; - output iorq_n; - output rd_n; - output wr_n; - output rfsh_n; - output halt_n; - output busak_n; - output [15:0] A; - input [7:0] di; - output [7:0] dout; - - reg mreq_n; - reg iorq_n; - reg rd_n; - reg wr_n; - reg nxt_mreq_n; - reg nxt_iorq_n; - reg nxt_rd_n; - reg nxt_wr_n; - - wire cen; - wire intcycle_n; - wire no_read; - wire write; - wire iorq; - reg [7:0] di_reg; - wire [6:0] mcycle; - wire [6:0] tstate; - - assign cen = 1; - - tv80_core #(Mode, IOWait) i_tv80_core - ( - .cen (cen), - .m1_n (m1_n), - .iorq (iorq), - .no_read (no_read), - .write (write), - .rfsh_n (rfsh_n), - .halt_n (halt_n), - .wait_n (wait_n), - .int_n (int_n), - .nmi_n (nmi_n), - .reset_n (reset_n), - .busrq_n (busrq_n), - .busak_n (busak_n), - .clk (clk), - .IntE (), - .stop (), - .A (A), - .dinst (di), - .di (di_reg), - .dout (dout), - .mc (mcycle), - .ts (tstate), - .intcycle_n (intcycle_n) - ); - - always @* - begin - nxt_mreq_n = 1; - nxt_rd_n = 1; - nxt_iorq_n = 1; - nxt_wr_n = 1; - - if (mcycle[0]) - begin - if (tstate[1] || tstate[2]) - begin - nxt_rd_n = ~ intcycle_n; - nxt_mreq_n = ~ intcycle_n; - nxt_iorq_n = intcycle_n; - end - end // if (mcycle[0]) - else - begin - if ((tstate[1] || tstate[2]) && !no_read && !write) - begin - nxt_rd_n = 1'b0; - nxt_iorq_n = ~ iorq; - nxt_mreq_n = iorq; - end - if (T2Write == 0) - begin - if (tstate[2] && write) - begin - nxt_wr_n = 1'b0; - nxt_iorq_n = ~ iorq; - nxt_mreq_n = iorq; - end - end - else - begin - if ((tstate[1] || (tstate[2] && !wait_n)) && write) - begin - nxt_wr_n = 1'b0; - nxt_iorq_n = ~ iorq; - nxt_mreq_n = iorq; - end - end // else: !if(T2write == 0) - end // else: !if(mcycle[0]) - end // always @ * - - always @(negedge clk) - begin - if (!reset_n) - begin - rd_n <= #1 1'b1; - wr_n <= #1 1'b1; - iorq_n <= #1 1'b1; - mreq_n <= #1 1'b1; - end - else - begin - rd_n <= #1 nxt_rd_n; - wr_n <= #1 nxt_wr_n; - iorq_n <= #1 nxt_iorq_n; - mreq_n <= #1 nxt_mreq_n; - end // else: !if(!reset_n) - end // always @ (posedge clk or negedge reset_n) - - always @(posedge clk) - begin - if (!reset_n) - begin - di_reg <= #1 0; - end - else - begin - if (tstate[2] && wait_n == 1'b1) - di_reg <= #1 di; - end // else: !if(!reset_n) - end // always @ (posedge clk) - -endmodule // t80n - diff --git a/Computer_MiST/Laser310_MiST/rtl/tv80/tv80s.v b/Computer_MiST/Laser310_MiST/rtl/tv80/tv80s.v deleted file mode 100644 index 3d825cb7..00000000 --- a/Computer_MiST/Laser310_MiST/rtl/tv80/tv80s.v +++ /dev/null @@ -1,162 +0,0 @@ -// -// TV80 8-Bit Microprocessor Core -// Based on the VHDL T80 core by Daniel Wallner (jesus@opencores.org) -// -// Copyright (c) 2004 Guy Hutchison (ghutchis@opencores.org) -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the "Software"), -// to deal in the Software without restriction, including without limitation -// the rights to use, copy, modify, merge, publish, distribute, sublicense, -// and/or sell copies of the Software, and to permit persons to whom the -// Software is furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -module tv80s (/*AUTOARG*/ - // Outputs - m1_n, mreq_n, iorq_n, rd_n, wr_n, rfsh_n, halt_n, busak_n, A, dout, - // Inputs - reset_n, clk, wait_n, int_n, nmi_n, busrq_n, di - ); - - parameter Mode = 0; // 0 => Z80, 1 => Fast Z80, 2 => 8080, 3 => GB - parameter T2Write = 1; // 0 => wr_n active in T3, /=0 => wr_n active in T2 - parameter IOWait = 1; // 0 => Single cycle I/O, 1 => Std I/O cycle - - - input reset_n; - input clk; - input wait_n; - input int_n; - input nmi_n; - input busrq_n; - output m1_n; - output mreq_n; - output iorq_n; - output rd_n; - output wr_n; - output rfsh_n; - output halt_n; - output busak_n; - output [15:0] A; - input [7:0] di; - output [7:0] dout; - - reg mreq_n; - reg iorq_n; - reg rd_n; - reg wr_n; - - wire cen; - wire intcycle_n; - wire no_read; - wire write; - wire iorq; - reg [7:0] di_reg; - wire [6:0] mcycle; - wire [6:0] tstate; - - assign cen = 1; - - tv80_core #(Mode, IOWait) i_tv80_core - ( - .cen (cen), - .m1_n (m1_n), - .iorq (iorq), - .no_read (no_read), - .write (write), - .rfsh_n (rfsh_n), - .halt_n (halt_n), - .wait_n (wait_n), - .int_n (int_n), - .nmi_n (nmi_n), - .reset_n (reset_n), - .busrq_n (busrq_n), - .busak_n (busak_n), - .clk (clk), - .IntE (), - .stop (), - .A (A), - .dinst (di), - .di (di_reg), - .dout (dout), - .mc (mcycle), - .ts (tstate), - .intcycle_n (intcycle_n) - ); - - always @(posedge clk or negedge reset_n) - begin - if (!reset_n) - begin - rd_n <= #1 1'b1; - wr_n <= #1 1'b1; - iorq_n <= #1 1'b1; - mreq_n <= #1 1'b1; - di_reg <= #1 0; - end - else - begin - rd_n <= #1 1'b1; - wr_n <= #1 1'b1; - iorq_n <= #1 1'b1; - mreq_n <= #1 1'b1; - if (mcycle[0]) - begin - if (tstate[1] || (tstate[2] && wait_n == 1'b0)) - begin - rd_n <= #1 ~ intcycle_n; - mreq_n <= #1 ~ intcycle_n; - iorq_n <= #1 intcycle_n; - end - `ifdef TV80_REFRESH - if (tstate[3]) - mreq_n <= #1 1'b0; - `endif - end // if (mcycle[0]) - else - begin - if ((tstate[1] || (tstate[2] && wait_n == 1'b0)) && no_read == 1'b0 && write == 1'b0) - begin - rd_n <= #1 1'b0; - iorq_n <= #1 ~ iorq; - mreq_n <= #1 iorq; - end - if (T2Write == 0) - begin - if (tstate[2] && write == 1'b1) - begin - wr_n <= #1 1'b0; - iorq_n <= #1 ~ iorq; - mreq_n <= #1 iorq; - end - end - else - begin - if ((tstate[1] || (tstate[2] && wait_n == 1'b0)) && write == 1'b1) - begin - wr_n <= #1 1'b0; - iorq_n <= #1 ~ iorq; - mreq_n <= #1 iorq; - end - end // else: !if(T2write == 0) - - end // else: !if(mcycle[0]) - - if (tstate[2] && wait_n == 1'b1) - di_reg <= #1 di; - end // else: !if(!reset_n) - end // always @ (posedge clk or negedge reset_n) - -endmodule // t80s -