From 2c63c50d237486383c53f9178b328453066187d9 Mon Sep 17 00:00:00 2001 From: Gehstock Date: Sat, 12 May 2018 20:55:13 +0200 Subject: [PATCH] Add Oric Source --- Oric Atmos_MiST/Extender.qpf | 23 + Oric Atmos_MiST/Extender.qsf | 285 +++ Oric Atmos_MiST/Extender.srf | 4 + Oric Atmos_MiST/clean.bat | 37 + Oric Atmos_MiST/rtl/HC4051.qip | 4 + Oric Atmos_MiST/rtl/HC4051.vhd | 148 ++ Oric Atmos_MiST/rtl/I_PN_GEN.vhd | 100 + Oric Atmos_MiST/rtl/MIXER.vhd | 79 + Oric Atmos_MiST/rtl/RAM16X1D.qip | 3 + Oric Atmos_MiST/rtl/RAM16X1D.vhd | 224 ++ Oric Atmos_MiST/rtl/RAM16X1Dx.qip | 0 Oric Atmos_MiST/rtl/RAMB16_S18_S18.qip | 3 + Oric Atmos_MiST/rtl/RAMB16_S18_S18.vhd | 234 ++ Oric Atmos_MiST/rtl/REG_ADDR.vhd | 27 + Oric Atmos_MiST/rtl/ROM256X1.qip | 3 + Oric Atmos_MiST/rtl/ROM256X1.vhd | 146 ++ Oric Atmos_MiST/rtl/STOP_WATCH.vhd | 78 + Oric Atmos_MiST/rtl/TST_ay3819x.vhd | 174 ++ Oric Atmos_MiST/rtl/YM2149_linmix.vhd | 597 +++++ Oric Atmos_MiST/rtl/addmemux.vhd | 87 + Oric Atmos_MiST/rtl/ay3819x.vhd | 435 ++++ Oric Atmos_MiST/rtl/build_id.tcl | 35 + Oric Atmos_MiST/rtl/build_id.v | 2 + Oric Atmos_MiST/rtl/ctrlseq.vhd | 321 +++ Oric Atmos_MiST/rtl/ctrlseq_orig.vhd | 207 ++ Oric Atmos_MiST/rtl/dac.vhd | 65 + Oric Atmos_MiST/rtl/gen_clk.vhd | 44 + Oric Atmos_MiST/rtl/gen_env.vhd | 111 + Oric Atmos_MiST/rtl/hq2x.sv | 454 ++++ Oric Atmos_MiST/rtl/iodecode.vhd | 112 + Oric Atmos_MiST/rtl/keyboard.vhd | 109 + Oric Atmos_MiST/rtl/keyboardX.vhd | 30 + Oric Atmos_MiST/rtl/keymap.vhd | 180 ++ Oric Atmos_MiST/rtl/keymatrix.vhd | 68 + Oric Atmos_MiST/rtl/m6522.vhd | 886 +++++++ Oric Atmos_MiST/rtl/manage_amplitude.vhd | 95 + Oric Atmos_MiST/rtl/memmap.vhd | 78 + Oric Atmos_MiST/rtl/mist_io.v | 491 ++++ Oric Atmos_MiST/rtl/noise_generator.vhd | 80 + Oric Atmos_MiST/rtl/oricatmos.vhd | 398 ++++ Oric Atmos_MiST/rtl/osd.v | 179 ++ Oric Atmos_MiST/rtl/pack_oricatmos.vhd | 270 +++ Oric Atmos_MiST/rtl/pack_t65.vhd | 117 + Oric Atmos_MiST/rtl/pack_ula.vhd | 135 ++ Oric Atmos_MiST/rtl/pll.qip | 5 + Oric Atmos_MiST/rtl/pll.vhd | 429 ++++ Oric Atmos_MiST/rtl/ps2key.vhd | 120 + Oric Atmos_MiST/rtl/ram16k.qip | 3 + Oric Atmos_MiST/rtl/ram16k.vhd | 160 ++ Oric Atmos_MiST/rtl/ram32k.qip | 3 + Oric Atmos_MiST/rtl/ram32k.vhd | 160 ++ Oric Atmos_MiST/rtl/ram48k.vhd | 87 + Oric Atmos_MiST/rtl/rom.vhd | 2077 +++++++++++++++++ Oric Atmos_MiST/rtl/roms/Load Jumpshot.bat | 9 + Oric Atmos_MiST/rtl/roms/basic11b.hex | 1026 ++++++++ Oric Atmos_MiST/rtl/roms/basic11b.rom | Bin 0 -> 16384 bytes Oric Atmos_MiST/rtl/roms/key1.hex | 3 + Oric Atmos_MiST/rtl/roms/key2.hex | 3 + Oric Atmos_MiST/rtl/roms/key3.hex | 3 + Oric Atmos_MiST/rtl/roms/key4.hex | 3 + Oric Atmos_MiST/rtl/roms/key5.hex | 3 + Oric Atmos_MiST/rtl/roms/key6.hex | 3 + Oric Atmos_MiST/rtl/roms/key7.hex | 3 + Oric Atmos_MiST/rtl/roms/romgen.exe | Bin 0 -> 45568 bytes Oric Atmos_MiST/rtl/rrom.qip | 3 + Oric Atmos_MiST/rtl/rrom.vhd | 143 ++ Oric Atmos_MiST/rtl/scan_converter.vhd | 229 ++ Oric Atmos_MiST/rtl/scandoubler.v | 195 ++ Oric Atmos_MiST/rtl/spram.vhd | 89 + Oric Atmos_MiST/rtl/sprom.vhd | 77 + Oric Atmos_MiST/rtl/t65.vhd | 553 +++++ Oric Atmos_MiST/rtl/t65_MCode.vhd | 1047 +++++++++ Oric Atmos_MiST/rtl/t65_alu.vhd | 261 +++ Oric Atmos_MiST/rtl/tone_generator.vhd | 59 + Oric Atmos_MiST/rtl/ula.vhd | 525 +++++ Oric Atmos_MiST/rtl/vag.vhd | 125 + Oric Atmos_MiST/rtl/video.vhd | 229 ++ Oric Atmos_MiST/rtl/video_mixer.sv | 242 ++ Oric Atmos_MiST/storage/BRAIN_RAM.txt | 12 + Oric Atmos_MiST/storage/ORIC_pad.txt | 286 +++ Oric Atmos_MiST/storage/OricKbd.jpg | Bin 0 -> 150634 bytes Oric Atmos_MiST/storage/OricinFPGA.gise | 170 ++ Oric Atmos_MiST/storage/OricinFPGA.xise | 497 ++++ Oric Atmos_MiST/storage/PLLJ_PLLSPE_INFO.txt | 5 + Oric Atmos_MiST/storage/apple_interface.jpeg | Bin 0 -> 292244 bytes Oric Atmos_MiST/storage/microdisc-1.gif | Bin 0 -> 61659 bytes Oric Atmos_MiST/storage/microdisc-2.gif | Bin 0 -> 63637 bytes Oric Atmos_MiST/storage/oric1-1p.gif | Bin 0 -> 180214 bytes Oric Atmos_MiST/storage/oric1-2p.gif | Bin 0 -> 105523 bytes Oric Atmos_MiST/storage/oric_PS2_IF_pad.txt | 286 +++ Oric Atmos_MiST/storage/readme.txt | 26 + Oric Atmos_MiST/storage/rom.mem | 0 Oric Atmos_MiST/storage/rtl_o/BMP.vhd | 47 + Oric Atmos_MiST/storage/rtl_o/DISP_HEX.vhd | 80 + Oric Atmos_MiST/storage/rtl_o/DISP_UNIT.vhd | 80 + Oric Atmos_MiST/storage/rtl_o/RAM.vhd | 89 + Oric Atmos_MiST/storage/rtl_o/SRAM.vhd | 69 + Oric Atmos_MiST/storage/rtl_o/T1.vhd | 152 ++ Oric Atmos_MiST/storage/rtl_o/ULA_LOG.vhd | 81 + Oric Atmos_MiST/storage/rtl_o/U_ULA_LGO.vhd | 41 + Oric Atmos_MiST/storage/rtl_o/file_log.vhd | 67 + Oric Atmos_MiST/storage/rtl_o/gen_clk.vhd | 44 + Oric Atmos_MiST/storage/rtl_o/i_pn_gen.vhd | 100 + Oric Atmos_MiST/storage/rtl_o/mixer.vhd | 80 + Oric Atmos_MiST/storage/rtl_o/oa_test.vhd | 313 +++ Oric Atmos_MiST/storage/rtl_o/oric_ps2_if.vhd | 311 +++ .../storage/rtl_o/pack_oric_xilinx_prims.vhd | 412 ++++ Oric Atmos_MiST/storage/rtl_o/ps2kbd.vhd | 212 ++ Oric Atmos_MiST/storage/rtl_o/psg_log.vhd | 60 + Oric Atmos_MiST/storage/rtl_o/simul_test.vhd | 273 +++ Oric Atmos_MiST/storage/rtl_o/tb_oa.vhd | 321 +++ Oric Atmos_MiST/storage/rtl_o/tb_oatest.vhd | 172 ++ Oric Atmos_MiST/storage/rtl_o/txt_util.vhd | 598 +++++ Oric Atmos_MiST/storage/scenario.txt | 29 + 114 files changed, 19948 insertions(+) create mode 100644 Oric Atmos_MiST/Extender.qpf create mode 100644 Oric Atmos_MiST/Extender.qsf create mode 100644 Oric Atmos_MiST/Extender.srf create mode 100644 Oric Atmos_MiST/clean.bat create mode 100644 Oric Atmos_MiST/rtl/HC4051.qip create mode 100644 Oric Atmos_MiST/rtl/HC4051.vhd create mode 100644 Oric Atmos_MiST/rtl/I_PN_GEN.vhd create mode 100644 Oric Atmos_MiST/rtl/MIXER.vhd create mode 100644 Oric Atmos_MiST/rtl/RAM16X1D.qip create mode 100644 Oric Atmos_MiST/rtl/RAM16X1D.vhd create mode 100644 Oric Atmos_MiST/rtl/RAM16X1Dx.qip create mode 100644 Oric Atmos_MiST/rtl/RAMB16_S18_S18.qip create mode 100644 Oric Atmos_MiST/rtl/RAMB16_S18_S18.vhd create mode 100644 Oric Atmos_MiST/rtl/REG_ADDR.vhd create mode 100644 Oric Atmos_MiST/rtl/ROM256X1.qip create mode 100644 Oric Atmos_MiST/rtl/ROM256X1.vhd create mode 100644 Oric Atmos_MiST/rtl/STOP_WATCH.vhd create mode 100644 Oric Atmos_MiST/rtl/TST_ay3819x.vhd create mode 100644 Oric Atmos_MiST/rtl/YM2149_linmix.vhd create mode 100644 Oric Atmos_MiST/rtl/addmemux.vhd create mode 100644 Oric Atmos_MiST/rtl/ay3819x.vhd create mode 100644 Oric Atmos_MiST/rtl/build_id.tcl create mode 100644 Oric Atmos_MiST/rtl/build_id.v create mode 100644 Oric Atmos_MiST/rtl/ctrlseq.vhd create mode 100644 Oric Atmos_MiST/rtl/ctrlseq_orig.vhd create mode 100644 Oric Atmos_MiST/rtl/dac.vhd create mode 100644 Oric Atmos_MiST/rtl/gen_clk.vhd create mode 100644 Oric Atmos_MiST/rtl/gen_env.vhd create mode 100644 Oric Atmos_MiST/rtl/hq2x.sv create mode 100644 Oric Atmos_MiST/rtl/iodecode.vhd create mode 100644 Oric Atmos_MiST/rtl/keyboard.vhd create mode 100644 Oric Atmos_MiST/rtl/keyboardX.vhd create mode 100644 Oric Atmos_MiST/rtl/keymap.vhd create mode 100644 Oric Atmos_MiST/rtl/keymatrix.vhd create mode 100644 Oric Atmos_MiST/rtl/m6522.vhd create mode 100644 Oric Atmos_MiST/rtl/manage_amplitude.vhd create mode 100644 Oric Atmos_MiST/rtl/memmap.vhd create mode 100644 Oric Atmos_MiST/rtl/mist_io.v create mode 100644 Oric Atmos_MiST/rtl/noise_generator.vhd create mode 100644 Oric Atmos_MiST/rtl/oricatmos.vhd create mode 100644 Oric Atmos_MiST/rtl/osd.v create mode 100644 Oric Atmos_MiST/rtl/pack_oricatmos.vhd create mode 100644 Oric Atmos_MiST/rtl/pack_t65.vhd create mode 100644 Oric Atmos_MiST/rtl/pack_ula.vhd create mode 100644 Oric Atmos_MiST/rtl/pll.qip create mode 100644 Oric Atmos_MiST/rtl/pll.vhd create mode 100644 Oric Atmos_MiST/rtl/ps2key.vhd create mode 100644 Oric Atmos_MiST/rtl/ram16k.qip create mode 100644 Oric Atmos_MiST/rtl/ram16k.vhd create mode 100644 Oric Atmos_MiST/rtl/ram32k.qip create mode 100644 Oric Atmos_MiST/rtl/ram32k.vhd create mode 100644 Oric Atmos_MiST/rtl/ram48k.vhd create mode 100644 Oric Atmos_MiST/rtl/rom.vhd create mode 100644 Oric Atmos_MiST/rtl/roms/Load Jumpshot.bat create mode 100644 Oric Atmos_MiST/rtl/roms/basic11b.hex create mode 100644 Oric Atmos_MiST/rtl/roms/basic11b.rom create mode 100644 Oric Atmos_MiST/rtl/roms/key1.hex create mode 100644 Oric Atmos_MiST/rtl/roms/key2.hex create mode 100644 Oric Atmos_MiST/rtl/roms/key3.hex create mode 100644 Oric Atmos_MiST/rtl/roms/key4.hex create mode 100644 Oric Atmos_MiST/rtl/roms/key5.hex create mode 100644 Oric Atmos_MiST/rtl/roms/key6.hex create mode 100644 Oric Atmos_MiST/rtl/roms/key7.hex create mode 100644 Oric Atmos_MiST/rtl/roms/romgen.exe create mode 100644 Oric Atmos_MiST/rtl/rrom.qip create mode 100644 Oric Atmos_MiST/rtl/rrom.vhd create mode 100644 Oric Atmos_MiST/rtl/scan_converter.vhd create mode 100644 Oric Atmos_MiST/rtl/scandoubler.v create mode 100644 Oric Atmos_MiST/rtl/spram.vhd create mode 100644 Oric Atmos_MiST/rtl/sprom.vhd create mode 100644 Oric Atmos_MiST/rtl/t65.vhd create mode 100644 Oric Atmos_MiST/rtl/t65_MCode.vhd create mode 100644 Oric Atmos_MiST/rtl/t65_alu.vhd create mode 100644 Oric Atmos_MiST/rtl/tone_generator.vhd create mode 100644 Oric Atmos_MiST/rtl/ula.vhd create mode 100644 Oric Atmos_MiST/rtl/vag.vhd create mode 100644 Oric Atmos_MiST/rtl/video.vhd create mode 100644 Oric Atmos_MiST/rtl/video_mixer.sv create mode 100644 Oric Atmos_MiST/storage/BRAIN_RAM.txt create mode 100644 Oric Atmos_MiST/storage/ORIC_pad.txt create mode 100644 Oric Atmos_MiST/storage/OricKbd.jpg create mode 100644 Oric Atmos_MiST/storage/OricinFPGA.gise create mode 100644 Oric Atmos_MiST/storage/OricinFPGA.xise create mode 100644 Oric Atmos_MiST/storage/PLLJ_PLLSPE_INFO.txt create mode 100644 Oric Atmos_MiST/storage/apple_interface.jpeg create mode 100644 Oric Atmos_MiST/storage/microdisc-1.gif create mode 100644 Oric Atmos_MiST/storage/microdisc-2.gif create mode 100644 Oric Atmos_MiST/storage/oric1-1p.gif create mode 100644 Oric Atmos_MiST/storage/oric1-2p.gif create mode 100644 Oric Atmos_MiST/storage/oric_PS2_IF_pad.txt create mode 100644 Oric Atmos_MiST/storage/readme.txt create mode 100644 Oric Atmos_MiST/storage/rom.mem create mode 100644 Oric Atmos_MiST/storage/rtl_o/BMP.vhd create mode 100644 Oric Atmos_MiST/storage/rtl_o/DISP_HEX.vhd create mode 100644 Oric Atmos_MiST/storage/rtl_o/DISP_UNIT.vhd create mode 100644 Oric Atmos_MiST/storage/rtl_o/RAM.vhd create mode 100644 Oric Atmos_MiST/storage/rtl_o/SRAM.vhd create mode 100644 Oric Atmos_MiST/storage/rtl_o/T1.vhd create mode 100644 Oric Atmos_MiST/storage/rtl_o/ULA_LOG.vhd create mode 100644 Oric Atmos_MiST/storage/rtl_o/U_ULA_LGO.vhd create mode 100644 Oric Atmos_MiST/storage/rtl_o/file_log.vhd create mode 100644 Oric Atmos_MiST/storage/rtl_o/gen_clk.vhd create mode 100644 Oric Atmos_MiST/storage/rtl_o/i_pn_gen.vhd create mode 100644 Oric Atmos_MiST/storage/rtl_o/mixer.vhd create mode 100644 Oric Atmos_MiST/storage/rtl_o/oa_test.vhd create mode 100644 Oric Atmos_MiST/storage/rtl_o/oric_ps2_if.vhd create mode 100644 Oric Atmos_MiST/storage/rtl_o/pack_oric_xilinx_prims.vhd create mode 100644 Oric Atmos_MiST/storage/rtl_o/ps2kbd.vhd create mode 100644 Oric Atmos_MiST/storage/rtl_o/psg_log.vhd create mode 100644 Oric Atmos_MiST/storage/rtl_o/simul_test.vhd create mode 100644 Oric Atmos_MiST/storage/rtl_o/tb_oa.vhd create mode 100644 Oric Atmos_MiST/storage/rtl_o/tb_oatest.vhd create mode 100644 Oric Atmos_MiST/storage/rtl_o/txt_util.vhd create mode 100644 Oric Atmos_MiST/storage/scenario.txt diff --git a/Oric Atmos_MiST/Extender.qpf b/Oric Atmos_MiST/Extender.qpf new file mode 100644 index 00000000..444392eb --- /dev/null +++ b/Oric Atmos_MiST/Extender.qpf @@ -0,0 +1,23 @@ +# Copyright (C) 1991-2008 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_VERSION = "8.1" +DATE = "20:32:23 January 19, 2009" + + +# Revisions + +PROJECT_REVISION = "Extender" diff --git a/Oric Atmos_MiST/Extender.qsf b/Oric Atmos_MiST/Extender.qsf new file mode 100644 index 00000000..6ca25d6d --- /dev/null +++ b/Oric Atmos_MiST/Extender.qsf @@ -0,0 +1,285 @@ +# -------------------------------------------------------------------------- # +# +# Copyright (C) 1991-2013 Altera Corporation +# Your use of Altera Corporation's design tools, logic functions +# and other software and tools, and its AMPP partner logic +# functions, and any output files from any of the foregoing +# (including device programming or simulation files), and any +# associated documentation or information are expressly subject +# to the terms and conditions of the Altera Program License +# Subscription Agreement, Altera MegaCore Function License +# Agreement, or other applicable license agreement, including, +# without limitation, that your use is for the sole purpose of +# programming logic devices manufactured by Altera and sold by +# Altera or its authorized distributors. Please refer to the +# applicable agreement for further details. +# +# -------------------------------------------------------------------------- # +# +# Quartus II 64-Bit +# Version 13.1.0 Build 162 10/23/2013 SJ Web Edition +# Date created = 00:34:30 May 04, 2018 +# +# -------------------------------------------------------------------------- # +# +# Notes: +# +# 1) The default values for assignments are stored in the file: +# Extender_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 8.1 +set_global_assignment -name PROJECT_CREATION_TIME_DATE "20:32:23 JANUARY 19, 2009" +set_global_assignment -name LAST_QUARTUS_VERSION 13.1 +set_global_assignment -name PRE_FLOW_SCRIPT_FILE "quartus_sh:rtl/build_id.tcl" +set_global_assignment -name SMART_RECOMPILE ON +set_global_assignment -name MISC_FILE "C:/_fpga/_cone/C1Extender/SYMB_CPC/Extender.dpf" +set_global_assignment -name VHDL_FILE rtl/oricatmos.vhd +set_global_assignment -name VHDL_FILE rtl/STOP_WATCH.vhd +set_global_assignment -name VHDL_FILE rtl/t65_MCode.vhd +set_global_assignment -name VHDL_FILE rtl/t65.vhd +set_global_assignment -name VHDL_FILE rtl/t65_alu.vhd +set_global_assignment -name VHDL_FILE rtl/pack_t65.vhd +set_global_assignment -name VHDL_FILE rtl/ula.vhd +set_global_assignment -name VHDL_FILE rtl/pack_ula.vhd +set_global_assignment -name VHDL_FILE rtl/m6522.vhd +set_global_assignment -name VHDL_FILE rtl/vag.vhd +set_global_assignment -name VHDL_FILE rtl/video.vhd +set_global_assignment -name VHDL_FILE rtl/keyboard.vhd +set_global_assignment -name VHDL_FILE rtl/iodecode.vhd +set_global_assignment -name VHDL_FILE rtl/addmemux.vhd +set_global_assignment -name VHDL_FILE rtl/memmap.vhd +set_global_assignment -name VHDL_FILE rtl/dac.vhd +set_global_assignment -name VHDL_FILE rtl/ps2key.vhd +set_global_assignment -name VHDL_FILE rtl/ctrlseq.vhd +set_global_assignment -name VHDL_FILE rtl/ay3819x.vhd +set_global_assignment -name VHDL_FILE rtl/tone_generator.vhd +set_global_assignment -name VHDL_FILE rtl/noise_generator.vhd +set_global_assignment -name VHDL_FILE rtl/GEN_CLK.vhd +set_global_assignment -name VHDL_FILE rtl/MIXER.vhd +set_global_assignment -name VHDL_FILE rtl/gen_env.vhd +set_global_assignment -name VHDL_FILE rtl/manage_amplitude.vhd + +# Pin & Location Assignments +# ========================== +set_location_assignment PIN_7 -to LED +set_location_assignment PIN_54 -to CLOCK_27 +set_location_assignment PIN_144 -to VGA_R[5] +set_location_assignment PIN_143 -to VGA_R[4] +set_location_assignment PIN_142 -to VGA_R[3] +set_location_assignment PIN_141 -to VGA_R[2] +set_location_assignment PIN_137 -to VGA_R[1] +set_location_assignment PIN_135 -to VGA_R[0] +set_location_assignment PIN_133 -to VGA_B[5] +set_location_assignment PIN_132 -to VGA_B[4] +set_location_assignment PIN_125 -to VGA_B[3] +set_location_assignment PIN_121 -to VGA_B[2] +set_location_assignment PIN_120 -to VGA_B[1] +set_location_assignment PIN_115 -to VGA_B[0] +set_location_assignment PIN_114 -to VGA_G[5] +set_location_assignment PIN_113 -to VGA_G[4] +set_location_assignment PIN_112 -to VGA_G[3] +set_location_assignment PIN_111 -to VGA_G[2] +set_location_assignment PIN_110 -to VGA_G[1] +set_location_assignment PIN_106 -to VGA_G[0] +set_location_assignment PIN_136 -to VGA_VS +set_location_assignment PIN_119 -to VGA_HS +set_location_assignment PIN_65 -to AUDIO_L +set_location_assignment PIN_80 -to AUDIO_R +set_location_assignment PIN_105 -to SPI_DO +set_location_assignment PIN_88 -to SPI_DI +set_location_assignment PIN_126 -to SPI_SCK +set_location_assignment PIN_127 -to SPI_SS2 +set_location_assignment PIN_91 -to SPI_SS3 +set_location_assignment PIN_13 -to CONF_DATA0 +set_location_assignment PIN_49 -to SDRAM_A[0] +set_location_assignment PIN_44 -to SDRAM_A[1] +set_location_assignment PIN_42 -to SDRAM_A[2] +set_location_assignment PIN_39 -to SDRAM_A[3] +set_location_assignment PIN_4 -to SDRAM_A[4] +set_location_assignment PIN_6 -to SDRAM_A[5] +set_location_assignment PIN_8 -to SDRAM_A[6] +set_location_assignment PIN_10 -to SDRAM_A[7] +set_location_assignment PIN_11 -to SDRAM_A[8] +set_location_assignment PIN_28 -to SDRAM_A[9] +set_location_assignment PIN_50 -to SDRAM_A[10] +set_location_assignment PIN_30 -to SDRAM_A[11] +set_location_assignment PIN_32 -to SDRAM_A[12] +set_location_assignment PIN_83 -to SDRAM_DQ[0] +set_location_assignment PIN_79 -to SDRAM_DQ[1] +set_location_assignment PIN_77 -to SDRAM_DQ[2] +set_location_assignment PIN_76 -to SDRAM_DQ[3] +set_location_assignment PIN_72 -to SDRAM_DQ[4] +set_location_assignment PIN_71 -to SDRAM_DQ[5] +set_location_assignment PIN_69 -to SDRAM_DQ[6] +set_location_assignment PIN_68 -to SDRAM_DQ[7] +set_location_assignment PIN_86 -to SDRAM_DQ[8] +set_location_assignment PIN_87 -to SDRAM_DQ[9] +set_location_assignment PIN_98 -to SDRAM_DQ[10] +set_location_assignment PIN_99 -to SDRAM_DQ[11] +set_location_assignment PIN_100 -to SDRAM_DQ[12] +set_location_assignment PIN_101 -to SDRAM_DQ[13] +set_location_assignment PIN_103 -to SDRAM_DQ[14] +set_location_assignment PIN_104 -to SDRAM_DQ[15] +set_location_assignment PIN_58 -to SDRAM_BA[0] +set_location_assignment PIN_51 -to SDRAM_BA[1] +set_location_assignment PIN_85 -to SDRAM_DQMH +set_location_assignment PIN_67 -to SDRAM_DQML +set_location_assignment PIN_60 -to SDRAM_nRAS +set_location_assignment PIN_64 -to SDRAM_nCAS +set_location_assignment PIN_66 -to SDRAM_nWE +set_location_assignment PIN_59 -to SDRAM_nCS +set_location_assignment PIN_33 -to SDRAM_CKE +set_location_assignment PIN_43 -to SDRAM_CLK +set_location_assignment PLL_1 -to "pll:pll|altpll:altpll_component" + +# Classic Timing Assignments +# ========================== +set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0 +set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85 +set_global_assignment -name TPD_REQUIREMENT "2 ns" +set_global_assignment -name TSU_REQUIREMENT "2 ns" +set_global_assignment -name TCO_REQUIREMENT "2 ns" +set_global_assignment -name TH_REQUIREMENT "2 ns" +set_global_assignment -name FMAX_REQUIREMENT "96 MHz" + +# Analysis & Synthesis Assignments +# ================================ +set_global_assignment -name FAMILY "Cyclone III" +set_global_assignment -name DEVICE_FILTER_PIN_COUNT 144 +set_global_assignment -name DEVICE_FILTER_SPEED_GRADE 8 +set_global_assignment -name CYCLONEII_OPTIMIZATION_TECHNIQUE SPEED +set_global_assignment -name ALLOW_POWER_UP_DONT_CARE OFF +set_global_assignment -name TOP_LEVEL_ENTITY oricatmos + +# Fitter Assignments +# ================== +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 CYCLONEII_RESERVE_NCEO_AFTER_CONFIGURATION "USE AS REGULAR IO" +set_global_assignment -name RESERVE_DATA0_AFTER_CONFIGURATION "USE AS REGULAR IO" +set_global_assignment -name RESERVE_DATA1_AFTER_CONFIGURATION "USE AS REGULAR IO" +set_global_assignment -name RESERVE_FLASH_NCE_AFTER_CONFIGURATION "USE AS REGULAR IO" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "ALL PATHS" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING ON +set_global_assignment -name FITTER_EFFORT "STANDARD FIT" +set_global_assignment -name PHYSICAL_SYNTHESIS_COMBO_LOGIC OFF +set_global_assignment -name PHYSICAL_SYNTHESIS_REGISTER_DUPLICATION OFF +set_global_assignment -name PHYSICAL_SYNTHESIS_ASYNCHRONOUS_SIGNAL_PIPELINING OFF +set_global_assignment -name PHYSICAL_SYNTHESIS_REGISTER_RETIMING OFF +set_global_assignment -name PHYSICAL_SYNTHESIS_COMBO_LOGIC_FOR_AREA OFF +set_global_assignment -name PHYSICAL_SYNTHESIS_MAP_LOGIC_TO_MEMORY_FOR_AREA OFF + +# Assembler Assignments +# ===================== +set_global_assignment -name GENERATE_RBF_FILE ON +set_global_assignment -name USE_CONFIGURATION_DEVICE OFF +set_global_assignment -name ON_CHIP_BITSTREAM_DECOMPRESSION ON + +# Simulator Assignments +# ===================== +set_global_assignment -name SIMULATION_MODE FUNCTIONAL + +# SignalTap II Assignments +# ======================== +set_global_assignment -name ENABLE_SIGNALTAP OFF +set_global_assignment -name USE_SIGNALTAP_FILE stp1.stp + +# Advanced I/O Timing Assignments +# =============================== +set_global_assignment -name OUTPUT_IO_TIMING_ENDPOINT "FAR END" + +# start EDA_TOOL_SETTINGS(eda_blast_fpga) +# --------------------------------------- + + # Analysis & Synthesis Assignments + # ================================ +set_global_assignment -name USE_GENERATED_PHYSICAL_CONSTRAINTS OFF -section_id eda_blast_fpga + +# end EDA_TOOL_SETTINGS(eda_blast_fpga) +# ------------------------------------- + +# ----------------------- +# start ENTITY(oricatmos) + + # Fitter Assignments + # ================== +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_CLK +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_CLK +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_nCAS +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_nRAS +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_nWE + + # start LOGICLOCK_REGION(Root Region) + # ----------------------------------- + + # LogicLock Region Assignments + # ============================ +set_global_assignment -name LL_ROOT_REGION ON -section_id "Root Region" +set_global_assignment -name LL_MEMBER_STATE LOCKED -section_id "Root Region" + + # end LOGICLOCK_REGION(Root Region) + # --------------------------------- + + # start DESIGN_PARTITION(Top) + # --------------------------- + + # Incremental Compilation Assignments + # =================================== +set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top +set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top +set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT -section_id Top + + # end DESIGN_PARTITION(Top) + # ------------------------- + +# end ENTITY(oricatmos) +# --------------------- +set_global_assignment -name ENABLE_CONFIGURATION_PINS OFF +set_global_assignment -name ENABLE_NCE_PIN OFF +set_global_assignment -name ENABLE_BOOT_SEL_PIN OFF +set_global_assignment -name CRC_ERROR_OPEN_DRAIN OFF +set_global_assignment -name RESERVE_DATA7_THROUGH_DATA2_AFTER_CONFIGURATION "USE AS REGULAR IO" +set_global_assignment -name RESERVE_OTHER_AP_PINS_AFTER_CONFIGURATION "USE AS REGULAR IO" +set_global_assignment -name RESERVE_DCLK_AFTER_CONFIGURATION "USE AS REGULAR IO" +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 +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)" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS ON +set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files +set_global_assignment -name QIP_FILE rtl/pll.qip +set_global_assignment -name VHDL_FILE rtl/ram48k.vhd +set_global_assignment -name VHDL_FILE rtl/scan_converter.vhd +set_global_assignment -name VHDL_FILE rtl/YM2149_linmix.vhd +set_global_assignment -name QIP_FILE rtl/RAMB16_S18_S18.qip +set_global_assignment -name SYSTEMVERILOG_FILE rtl/video_mixer.sv +set_global_assignment -name VERILOG_FILE rtl/scandoubler.v +set_global_assignment -name VERILOG_FILE rtl/osd.v +set_global_assignment -name VERILOG_FILE rtl/mist_io.v +set_global_assignment -name SYSTEMVERILOG_FILE rtl/hq2x.sv +set_global_assignment -name VHDL_FILE rtl/keymap.vhd +set_global_assignment -name VHDL_FILE rtl/keymatrix.vhd +set_global_assignment -name VHDL_FILE rtl/rom.vhd +set_global_assignment -name VHDL_FILE rtl/spram.vhd +set_global_assignment -name VHDL_FILE rtl/sprom.vhd +set_global_assignment -name QIP_FILE rtl/HC4051.qip +set_global_assignment -name QIP_FILE rtl/rrom.qip +set_global_assignment -name QIP_FILE rtl/RAM16X1D.qip +set_global_assignment -name VHDL_FILE rtl/keyboardX.vhd +set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top \ No newline at end of file diff --git a/Oric Atmos_MiST/Extender.srf b/Oric Atmos_MiST/Extender.srf new file mode 100644 index 00000000..5430e36c --- /dev/null +++ b/Oric Atmos_MiST/Extender.srf @@ -0,0 +1,4 @@ +{ "" "" "" "*" { } { } 0 10036 "" 0 0 "Quartus II" 0 -1 0 ""} +{ "" "" "" "*" { } { } 0 13012 "" 0 0 "Quartus II" 0 -1 0 ""} +{ "" "" "" "*" { } { } 0 10631 "" 0 0 "Quartus II" 0 -1 0 ""} +{ "" "" "" "*" { } { } 0 10492 "" 0 0 "Quartus II" 0 -1 0 ""} diff --git a/Oric Atmos_MiST/clean.bat b/Oric Atmos_MiST/clean.bat new file mode 100644 index 00000000..b3b7c3b5 --- /dev/null +++ b/Oric Atmos_MiST/clean.bat @@ -0,0 +1,37 @@ +@echo off +del /s *.bak +del /s *.orig +del /s *.rej +del /s *~ +rmdir /s /q db +rmdir /s /q incremental_db +rmdir /s /q output_files +rmdir /s /q simulation +rmdir /s /q greybox_tmp +rmdir /s /q hc_output +rmdir /s /q .qsys_edit +rmdir /s /q hps_isw_handoff +rmdir /s /q sys\.qsys_edit +rmdir /s /q sys\vip +cd sys +for /d %%i in (*_sim) do rmdir /s /q "%%~nxi" +cd .. +for /d %%i in (*_sim) do rmdir /s /q "%%~nxi" +del build_id.v +del c5_pin_model_dump.txt +del PLLJ_PLLSPE_INFO.txt +del /s *.qws +del /s *.ppf +del /s *.ddb +del /s *.csv +del /s *.cmp +del /s *.sip +del /s *.spd +del /s *.bsf +del /s *.f +del /s *.sopcinfo +del /s *.xml +del /s new_rtl_netlist +del /s old_rtl_netlist + +pause diff --git a/Oric Atmos_MiST/rtl/HC4051.qip b/Oric Atmos_MiST/rtl/HC4051.qip new file mode 100644 index 00000000..bc5f85d8 --- /dev/null +++ b/Oric Atmos_MiST/rtl/HC4051.qip @@ -0,0 +1,4 @@ +set_global_assignment -name IP_TOOL_NAME "LPM_MUX" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "HC4051.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "HC4051.cmp"] diff --git a/Oric Atmos_MiST/rtl/HC4051.vhd b/Oric Atmos_MiST/rtl/HC4051.vhd new file mode 100644 index 00000000..55b85a69 --- /dev/null +++ b/Oric Atmos_MiST/rtl/HC4051.vhd @@ -0,0 +1,148 @@ +-- megafunction wizard: %LPM_MUX% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: LPM_MUX + +-- ============================================================ +-- File Name: HC4051.vhd +-- Megafunction Name(s): +-- LPM_MUX +-- +-- Simulation Library Files(s): +-- lpm +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 13.1.0 Build 162 10/23/2013 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2013 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY lpm; +USE lpm.lpm_components.all; + +ENTITY HC4051 IS + PORT + ( + data0 : IN STD_LOGIC ; + data1 : IN STD_LOGIC ; + data2 : IN STD_LOGIC ; + data3 : IN STD_LOGIC ; + data4 : IN STD_LOGIC ; + data5 : IN STD_LOGIC ; + data6 : IN STD_LOGIC ; + data7 : IN STD_LOGIC ; + sel : IN STD_LOGIC_VECTOR (2 DOWNTO 0); + result : OUT STD_LOGIC + ); +END HC4051; + + +ARCHITECTURE SYN OF hc4051 IS + +-- type STD_LOGIC_2D is array (NATURAL RANGE <>, NATURAL RANGE <>) of STD_LOGIC; + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC ; + SIGNAL sub_wire2 : STD_LOGIC ; + SIGNAL sub_wire3 : STD_LOGIC_2D (7 DOWNTO 0, 0 DOWNTO 0); + SIGNAL sub_wire4 : STD_LOGIC ; + SIGNAL sub_wire5 : STD_LOGIC ; + SIGNAL sub_wire6 : STD_LOGIC ; + SIGNAL sub_wire7 : STD_LOGIC ; + SIGNAL sub_wire8 : STD_LOGIC ; + SIGNAL sub_wire9 : STD_LOGIC ; + SIGNAL sub_wire10 : STD_LOGIC ; + +BEGIN + sub_wire10 <= data0; + sub_wire9 <= data1; + sub_wire8 <= data2; + sub_wire7 <= data3; + sub_wire6 <= data4; + sub_wire5 <= data5; + sub_wire4 <= data6; + sub_wire1 <= sub_wire0(0); + result <= sub_wire1; + sub_wire2 <= data7; + sub_wire3(7, 0) <= sub_wire2; + sub_wire3(6, 0) <= sub_wire4; + sub_wire3(5, 0) <= sub_wire5; + sub_wire3(4, 0) <= sub_wire6; + sub_wire3(3, 0) <= sub_wire7; + sub_wire3(2, 0) <= sub_wire8; + sub_wire3(1, 0) <= sub_wire9; + sub_wire3(0, 0) <= sub_wire10; + + LPM_MUX_component : LPM_MUX + GENERIC MAP ( + lpm_size => 8, + lpm_type => "LPM_MUX", + lpm_width => 1, + lpm_widths => 3 + ) + PORT MAP ( + data => sub_wire3, + sel => sel, + result => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: new_diagram STRING "1" +-- Retrieval info: LIBRARY: lpm lpm.lpm_components.all +-- Retrieval info: CONSTANT: LPM_SIZE NUMERIC "8" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "LPM_MUX" +-- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "1" +-- Retrieval info: CONSTANT: LPM_WIDTHS NUMERIC "3" +-- Retrieval info: USED_PORT: data0 0 0 0 0 INPUT NODEFVAL "data0" +-- Retrieval info: USED_PORT: data1 0 0 0 0 INPUT NODEFVAL "data1" +-- Retrieval info: USED_PORT: data2 0 0 0 0 INPUT NODEFVAL "data2" +-- Retrieval info: USED_PORT: data3 0 0 0 0 INPUT NODEFVAL "data3" +-- Retrieval info: USED_PORT: data4 0 0 0 0 INPUT NODEFVAL "data4" +-- Retrieval info: USED_PORT: data5 0 0 0 0 INPUT NODEFVAL "data5" +-- Retrieval info: USED_PORT: data6 0 0 0 0 INPUT NODEFVAL "data6" +-- Retrieval info: USED_PORT: data7 0 0 0 0 INPUT NODEFVAL "data7" +-- Retrieval info: USED_PORT: result 0 0 0 0 OUTPUT NODEFVAL "result" +-- Retrieval info: USED_PORT: sel 0 0 3 0 INPUT NODEFVAL "sel[2..0]" +-- Retrieval info: CONNECT: @data 1 0 1 0 data0 0 0 0 0 +-- Retrieval info: CONNECT: @data 1 1 1 0 data1 0 0 0 0 +-- Retrieval info: CONNECT: @data 1 2 1 0 data2 0 0 0 0 +-- Retrieval info: CONNECT: @data 1 3 1 0 data3 0 0 0 0 +-- Retrieval info: CONNECT: @data 1 4 1 0 data4 0 0 0 0 +-- Retrieval info: CONNECT: @data 1 5 1 0 data5 0 0 0 0 +-- Retrieval info: CONNECT: @data 1 6 1 0 data6 0 0 0 0 +-- Retrieval info: CONNECT: @data 1 7 1 0 data7 0 0 0 0 +-- Retrieval info: CONNECT: @sel 0 0 3 0 sel 0 0 3 0 +-- Retrieval info: CONNECT: result 0 0 0 0 @result 0 0 1 0 +-- Retrieval info: GEN_FILE: TYPE_NORMAL HC4051.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL HC4051.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL HC4051.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL HC4051.bsf FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL HC4051_inst.vhd FALSE +-- Retrieval info: LIB_FILE: lpm diff --git a/Oric Atmos_MiST/rtl/I_PN_GEN.vhd b/Oric Atmos_MiST/rtl/I_PN_GEN.vhd new file mode 100644 index 00000000..927558be --- /dev/null +++ b/Oric Atmos_MiST/rtl/I_PN_GEN.vhd @@ -0,0 +1,100 @@ +-- +-- fg.vhd +-- +-- Generate a random noise. +-- +-- Copyright (C)2001 SEILEBOST +-- All rights reserved. +-- +-- $Id: fg.vhd, v0.3 2001/11/14 00:00:00 SEILEBOST $ +-- +-- from XAPP211.pdf & XAPP211.ZIP (XILINX APPLICATION) +-- +--The following is example code that implements one LFSR which can be used as part of pn generators. +--The number of taps, tap points, and LFSR width are parameratizable. When targetting Xilinx (Virtex) +--all the latest synthesis vendors (Leonardo, Synplicity, and FPGA Express) will infer the shift +--register LUTS (SRL16) resulting in a very efficient implementation. +-- +--Control signals have been provided to allow external circuitry to control such things as filling, +--puncturing, stalling (augmentation), etc. +-- +--Mike Gulotta +--11/4/99 +--Revised 3/17/00: Fixed "commented" block diagram to match polynomial. +-- +-- +--################################################################################################### +-- I Polinomials: # +-- I(x) = X**17 + X**2 + 1 # +-- # +-- LFSR implementation format examples: # +--################################################################################################### +-- # +-- I(x) = X**17 + X**2 + 1 # +-- ________ # +-- | |<<......................... # +-- | Parity | | # +-- .................| |<<... | # +-- | |________| | | # +-- | | | # +-- | __________________ | ___ ___ | # +-- |...|\ | | | | | | | | | pn_out_i # +-- ||-->>| 16 | - - - -| 2 |-----| 1 | 0 | >>---------->> # +--DataIn_i.|/ |____|________|____| |___|___| # +-- | srl_i # +-- FillSel..| # +-- ---> shifting -->> # + +library ieee ; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity i_pn_gen is + generic(NumOfTaps_i : integer := 2; -- # of taps for I channel LFSR, including output tap. + Width : integer := 17); -- LFSR length (ie, total # of storage elements) + port(clk, ShiftEn, FillSel, DataIn_i, RESET : in std_logic; + pn_out_i : out std_logic); +end i_pn_gen ; + + +architecture rtl of i_pn_gen is + + type TapPointArray_i is array (NumOfTaps_i-1 downto 0) of integer; + constant Tap_i : TapPointArray_i := (2, 0); + signal srl_i : std_logic_vector(Width-1 downto 0); -- shift register. + signal par_fdbk_i : std_logic_vector(NumOfTaps_i downto 0); -- Parity feedback. + signal lfsr_in_i : std_logic; -- mux output. + + +begin + +--------------------------------------------------------------------- +------------------ I Channel ---------------------------------------- +--------------------------------------------------------------------- + + Shift_i : process (clk, reset) + begin + if (RESET = '1') then + SRL_I <= "00000000000000000"; + elsif clk'event and clk = '1' then + if (ShiftEn = '1') then + srl_i <= lfsr_in_i & srl_i(srl_i'high downto 1); + end if; + end if; + end process; + + par_fdbk_i(0) <= '0'; + + fdbk_i : for X in 0 to Tap_i'high generate -- parity generator + par_fdbk_i(X+1) <= par_fdbk_i(X) xor srl_i(Tap_i(X)); + end generate fdbk_i; + + lfsr_in_i <= DataIn_i when FillSel = '1' else par_fdbk_i(par_fdbk_i'high); + + pn_out_i <= srl_i(srl_i'low); -- PN I channel output. + + +end rtl; + + + diff --git a/Oric Atmos_MiST/rtl/MIXER.vhd b/Oric Atmos_MiST/rtl/MIXER.vhd new file mode 100644 index 00000000..1e90676f --- /dev/null +++ b/Oric Atmos_MiST/rtl/MIXER.vhd @@ -0,0 +1,79 @@ +-- +-- MIXER.vhd +-- +-- Mix tone generator and noise generator. +-- +-- Copyright (C)2001 SEILEBOST +-- All rights reserved. +-- +-- $Id: MIXER.vhd, v0.2 2001/11/02 00:00:00 SEILEBOST $ +-- +-- A lot of work !! + +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_ARITH.ALL; + +entity MIXER is + Port ( CLK : in std_logic; + CS : in std_logic; + RST : in std_logic; + WR : in std_logic; + IN_A : in std_logic; + IN_B : in std_logic; + IN_C : in std_logic; + IN_NOISE : in std_logic; + DATA : in std_logic_vector(5 downto 0); + OUT_A : out std_logic; + OUT_B : out std_logic; + OUT_C : out std_logic ); +end MIXER; + +architecture Behavioral of MIXER is + + +begin + PROCESS(CLK, RST, CS, WR, DATA, IN_A, IN_B, IN_C, IN_NOISE) + BEGIN + if (RST = '1') then + OUT_A <= '0'; + OUT_B <= '0'; + OUT_C <= '0'; + elsif ( CLK'event and CLK = '1') then + if not (CS = '1' and WR = '1') then +-- TONE A + if (DATA(0) = '0') then + if (DATA(3) = '0') then + OUT_A <= IN_A xor IN_NOISE; + else + OUT_A <= IN_A; + end if; + else + OUT_A <= '1'; + end if; + +-- TONE B + if (DATA(1) = '0') then + if (DATA(4) = '0') then + OUT_B <= IN_B xor IN_NOISE; + else + OUT_B <= IN_B; + end if; + else + OUT_B <= '1'; + end if; + +-- TONE C + if (DATA(2) = '0') then + if (DATA(5) = '0') then + OUT_C <= IN_C xor IN_NOISE; + else + OUT_C <= IN_C; + end if; + else + OUT_C <= '1'; + end if; + end if; + end if; + end process; +end Behavioral; diff --git a/Oric Atmos_MiST/rtl/RAM16X1D.qip b/Oric Atmos_MiST/rtl/RAM16X1D.qip new file mode 100644 index 00000000..b3b7768f --- /dev/null +++ b/Oric Atmos_MiST/rtl/RAM16X1D.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "RAM: 2-PORT" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "RAM16X1D.vhd"] diff --git a/Oric Atmos_MiST/rtl/RAM16X1D.vhd b/Oric Atmos_MiST/rtl/RAM16X1D.vhd new file mode 100644 index 00000000..4b522aef --- /dev/null +++ b/Oric Atmos_MiST/rtl/RAM16X1D.vhd @@ -0,0 +1,224 @@ +-- megafunction wizard: %RAM: 2-PORT% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altsyncram + +-- ============================================================ +-- File Name: RAM16X1D.vhd +-- Megafunction Name(s): +-- altsyncram +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 13.1.0 Build 162 10/23/2013 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2013 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.altera_mf_components.all; + +ENTITY RAM16X1D IS + PORT + ( + address_a : IN STD_LOGIC_VECTOR (3 DOWNTO 0); + address_b : IN STD_LOGIC_VECTOR (3 DOWNTO 0); + clock : IN STD_LOGIC := '1'; + data_a : IN STD_LOGIC_VECTOR (0 DOWNTO 0); + data_b : IN STD_LOGIC_VECTOR (0 DOWNTO 0); + wren_a : IN STD_LOGIC := '0'; + wren_b : IN STD_LOGIC := '0'; + q_a : OUT STD_LOGIC_VECTOR (0 DOWNTO 0); + q_b : OUT STD_LOGIC_VECTOR (0 DOWNTO 0) + ); +END RAM16X1D; + + +ARCHITECTURE SYN OF ram16x1d IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC_VECTOR (0 DOWNTO 0); + +BEGIN + q_a <= sub_wire0(0 DOWNTO 0); + q_b <= sub_wire1(0 DOWNTO 0); + + altsyncram_component : altsyncram + GENERIC MAP ( + address_reg_b => "CLOCK0", + clock_enable_input_a => "BYPASS", + clock_enable_input_b => "BYPASS", + clock_enable_output_a => "BYPASS", + clock_enable_output_b => "BYPASS", + indata_reg_b => "CLOCK0", + intended_device_family => "Cyclone III", + lpm_type => "altsyncram", + numwords_a => 16, + numwords_b => 16, + operation_mode => "BIDIR_DUAL_PORT", + outdata_aclr_a => "NONE", + outdata_aclr_b => "NONE", + outdata_reg_a => "CLOCK0", + outdata_reg_b => "CLOCK0", + power_up_uninitialized => "FALSE", + read_during_write_mode_mixed_ports => "DONT_CARE", + read_during_write_mode_port_a => "NEW_DATA_NO_NBE_READ", + read_during_write_mode_port_b => "NEW_DATA_NO_NBE_READ", + widthad_a => 4, + widthad_b => 4, + width_a => 1, + width_b => 1, + width_byteena_a => 1, + width_byteena_b => 1, + wrcontrol_wraddress_reg_b => "CLOCK0" + ) + PORT MAP ( + clock0 => clock, + wren_a => wren_a, + address_b => address_b, + data_b => data_b, + wren_b => wren_b, + address_a => address_a, + data_a => data_a, + q_a => sub_wire0, + q_b => sub_wire1 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ADDRESSSTALL_A NUMERIC "0" +-- Retrieval info: PRIVATE: ADDRESSSTALL_B NUMERIC "0" +-- Retrieval info: PRIVATE: BYTEENA_ACLR_A NUMERIC "0" +-- Retrieval info: PRIVATE: BYTEENA_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_ENABLE_A NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_ENABLE_B NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_SIZE NUMERIC "8" +-- Retrieval info: PRIVATE: BlankMemory NUMERIC "1" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_A NUMERIC "0" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_B NUMERIC "0" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_A NUMERIC "0" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_B NUMERIC "0" +-- Retrieval info: PRIVATE: CLRdata NUMERIC "0" +-- Retrieval info: PRIVATE: CLRq NUMERIC "0" +-- Retrieval info: PRIVATE: CLRrdaddress NUMERIC "0" +-- Retrieval info: PRIVATE: CLRrren NUMERIC "0" +-- Retrieval info: PRIVATE: CLRwraddress NUMERIC "0" +-- Retrieval info: PRIVATE: CLRwren NUMERIC "0" +-- Retrieval info: PRIVATE: Clock NUMERIC "0" +-- Retrieval info: PRIVATE: Clock_A NUMERIC "0" +-- Retrieval info: PRIVATE: Clock_B NUMERIC "0" +-- Retrieval info: PRIVATE: IMPLEMENT_IN_LES NUMERIC "0" +-- Retrieval info: PRIVATE: INDATA_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: INDATA_REG_B NUMERIC "1" +-- Retrieval info: PRIVATE: INIT_FILE_LAYOUT STRING "PORT_A" +-- Retrieval info: PRIVATE: INIT_TO_SIM_X NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" +-- Retrieval info: PRIVATE: JTAG_ID STRING "NONE" +-- Retrieval info: PRIVATE: MAXIMUM_DEPTH NUMERIC "0" +-- Retrieval info: PRIVATE: MEMSIZE NUMERIC "16" +-- Retrieval info: PRIVATE: MEM_IN_BITS NUMERIC "0" +-- Retrieval info: PRIVATE: MIFfilename STRING "" +-- Retrieval info: PRIVATE: OPERATION_MODE NUMERIC "3" +-- Retrieval info: PRIVATE: OUTDATA_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: OUTDATA_REG_B NUMERIC "1" +-- Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" +-- Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_MIXED_PORTS NUMERIC "2" +-- Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_PORT_A NUMERIC "3" +-- Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_PORT_B NUMERIC "3" +-- Retrieval info: PRIVATE: REGdata NUMERIC "1" +-- Retrieval info: PRIVATE: REGq NUMERIC "1" +-- Retrieval info: PRIVATE: REGrdaddress NUMERIC "0" +-- Retrieval info: PRIVATE: REGrren NUMERIC "0" +-- Retrieval info: PRIVATE: REGwraddress NUMERIC "1" +-- Retrieval info: PRIVATE: REGwren NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: USE_DIFF_CLKEN NUMERIC "0" +-- Retrieval info: PRIVATE: UseDPRAM NUMERIC "1" +-- Retrieval info: PRIVATE: VarWidth NUMERIC "0" +-- Retrieval info: PRIVATE: WIDTH_READ_A NUMERIC "1" +-- Retrieval info: PRIVATE: WIDTH_READ_B NUMERIC "1" +-- Retrieval info: PRIVATE: WIDTH_WRITE_A NUMERIC "1" +-- Retrieval info: PRIVATE: WIDTH_WRITE_B NUMERIC "1" +-- Retrieval info: PRIVATE: WRADDR_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: WRADDR_REG_B NUMERIC "1" +-- Retrieval info: PRIVATE: WRCTRL_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: enable NUMERIC "0" +-- Retrieval info: PRIVATE: rden NUMERIC "0" +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: CONSTANT: ADDRESS_REG_B STRING "CLOCK0" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_A STRING "BYPASS" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_B STRING "BYPASS" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_A STRING "BYPASS" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_B STRING "BYPASS" +-- Retrieval info: CONSTANT: INDATA_REG_B STRING "CLOCK0" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altsyncram" +-- Retrieval info: CONSTANT: NUMWORDS_A NUMERIC "16" +-- Retrieval info: CONSTANT: NUMWORDS_B NUMERIC "16" +-- Retrieval info: CONSTANT: OPERATION_MODE STRING "BIDIR_DUAL_PORT" +-- Retrieval info: CONSTANT: OUTDATA_ACLR_A STRING "NONE" +-- Retrieval info: CONSTANT: OUTDATA_ACLR_B STRING "NONE" +-- Retrieval info: CONSTANT: OUTDATA_REG_A STRING "CLOCK0" +-- Retrieval info: CONSTANT: OUTDATA_REG_B STRING "CLOCK0" +-- Retrieval info: CONSTANT: POWER_UP_UNINITIALIZED STRING "FALSE" +-- Retrieval info: CONSTANT: READ_DURING_WRITE_MODE_MIXED_PORTS STRING "DONT_CARE" +-- Retrieval info: CONSTANT: READ_DURING_WRITE_MODE_PORT_A STRING "NEW_DATA_NO_NBE_READ" +-- Retrieval info: CONSTANT: READ_DURING_WRITE_MODE_PORT_B STRING "NEW_DATA_NO_NBE_READ" +-- Retrieval info: CONSTANT: WIDTHAD_A NUMERIC "4" +-- Retrieval info: CONSTANT: WIDTHAD_B NUMERIC "4" +-- Retrieval info: CONSTANT: WIDTH_A NUMERIC "1" +-- Retrieval info: CONSTANT: WIDTH_B NUMERIC "1" +-- Retrieval info: CONSTANT: WIDTH_BYTEENA_A NUMERIC "1" +-- Retrieval info: CONSTANT: WIDTH_BYTEENA_B NUMERIC "1" +-- Retrieval info: CONSTANT: WRCONTROL_WRADDRESS_REG_B STRING "CLOCK0" +-- Retrieval info: USED_PORT: address_a 0 0 4 0 INPUT NODEFVAL "address_a[3..0]" +-- Retrieval info: USED_PORT: address_b 0 0 4 0 INPUT NODEFVAL "address_b[3..0]" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT VCC "clock" +-- Retrieval info: USED_PORT: data_a 0 0 1 0 INPUT NODEFVAL "data_a[0..0]" +-- Retrieval info: USED_PORT: data_b 0 0 1 0 INPUT NODEFVAL "data_b[0..0]" +-- Retrieval info: USED_PORT: q_a 0 0 1 0 OUTPUT NODEFVAL "q_a[0..0]" +-- Retrieval info: USED_PORT: q_b 0 0 1 0 OUTPUT NODEFVAL "q_b[0..0]" +-- Retrieval info: USED_PORT: wren_a 0 0 0 0 INPUT GND "wren_a" +-- Retrieval info: USED_PORT: wren_b 0 0 0 0 INPUT GND "wren_b" +-- Retrieval info: CONNECT: @address_a 0 0 4 0 address_a 0 0 4 0 +-- Retrieval info: CONNECT: @address_b 0 0 4 0 address_b 0 0 4 0 +-- Retrieval info: CONNECT: @clock0 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: @data_a 0 0 1 0 data_a 0 0 1 0 +-- Retrieval info: CONNECT: @data_b 0 0 1 0 data_b 0 0 1 0 +-- Retrieval info: CONNECT: @wren_a 0 0 0 0 wren_a 0 0 0 0 +-- Retrieval info: CONNECT: @wren_b 0 0 0 0 wren_b 0 0 0 0 +-- Retrieval info: CONNECT: q_a 0 0 1 0 @q_a 0 0 1 0 +-- Retrieval info: CONNECT: q_b 0 0 1 0 @q_b 0 0 1 0 +-- Retrieval info: GEN_FILE: TYPE_NORMAL RAM16X1D.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL RAM16X1D.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL RAM16X1D.cmp FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL RAM16X1D.bsf FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL RAM16X1D_inst.vhd FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/Oric Atmos_MiST/rtl/RAM16X1Dx.qip b/Oric Atmos_MiST/rtl/RAM16X1Dx.qip new file mode 100644 index 00000000..e69de29b diff --git a/Oric Atmos_MiST/rtl/RAMB16_S18_S18.qip b/Oric Atmos_MiST/rtl/RAMB16_S18_S18.qip new file mode 100644 index 00000000..da32ea00 --- /dev/null +++ b/Oric Atmos_MiST/rtl/RAMB16_S18_S18.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "RAM: 2-PORT" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "RAMB16_S18_S18.vhd"] diff --git a/Oric Atmos_MiST/rtl/RAMB16_S18_S18.vhd b/Oric Atmos_MiST/rtl/RAMB16_S18_S18.vhd new file mode 100644 index 00000000..0b98af60 --- /dev/null +++ b/Oric Atmos_MiST/rtl/RAMB16_S18_S18.vhd @@ -0,0 +1,234 @@ +-- megafunction wizard: %RAM: 2-PORT% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altsyncram + +-- ============================================================ +-- File Name: RAMB16_S18_S18.vhd +-- Megafunction Name(s): +-- altsyncram +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 13.1.0 Build 162 10/23/2013 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2013 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.altera_mf_components.all; + +ENTITY RAMB16_S18_S18 IS + PORT + ( + address_a : IN STD_LOGIC_VECTOR (9 DOWNTO 0); + address_b : IN STD_LOGIC_VECTOR (9 DOWNTO 0); + clock_a : IN STD_LOGIC := '1'; + clock_b : IN STD_LOGIC ; + data_a : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + data_b : IN STD_LOGIC_VECTOR (15 DOWNTO 0); + rden_a : IN STD_LOGIC := '1'; + rden_b : IN STD_LOGIC := '1'; + wren_a : IN STD_LOGIC := '0'; + wren_b : IN STD_LOGIC := '0'; + q_a : OUT STD_LOGIC_VECTOR (15 DOWNTO 0); + q_b : OUT STD_LOGIC_VECTOR (15 DOWNTO 0) + ); +END RAMB16_S18_S18; + + +ARCHITECTURE SYN OF ramb16_s18_s18 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (15 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC_VECTOR (15 DOWNTO 0); + +BEGIN + q_a <= sub_wire0(15 DOWNTO 0); + q_b <= sub_wire1(15 DOWNTO 0); + + altsyncram_component : altsyncram + GENERIC MAP ( + address_reg_b => "CLOCK1", + clock_enable_input_a => "BYPASS", + clock_enable_input_b => "BYPASS", + clock_enable_output_a => "BYPASS", + clock_enable_output_b => "BYPASS", + indata_reg_b => "CLOCK1", + intended_device_family => "Cyclone III", + lpm_type => "altsyncram", + numwords_a => 1024, + numwords_b => 1024, + operation_mode => "BIDIR_DUAL_PORT", + outdata_aclr_a => "NONE", + outdata_aclr_b => "NONE", + outdata_reg_a => "CLOCK0", + outdata_reg_b => "CLOCK1", + power_up_uninitialized => "FALSE", + read_during_write_mode_port_a => "NEW_DATA_NO_NBE_READ", + read_during_write_mode_port_b => "NEW_DATA_NO_NBE_READ", + widthad_a => 10, + widthad_b => 10, + width_a => 16, + width_b => 16, + width_byteena_a => 1, + width_byteena_b => 1, + wrcontrol_wraddress_reg_b => "CLOCK1" + ) + PORT MAP ( + clock0 => clock_a, + wren_a => wren_a, + address_b => address_b, + clock1 => clock_b, + data_b => data_b, + rden_a => rden_a, + wren_b => wren_b, + address_a => address_a, + data_a => data_a, + rden_b => rden_b, + q_a => sub_wire0, + q_b => sub_wire1 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ADDRESSSTALL_A NUMERIC "0" +-- Retrieval info: PRIVATE: ADDRESSSTALL_B NUMERIC "0" +-- Retrieval info: PRIVATE: BYTEENA_ACLR_A NUMERIC "0" +-- Retrieval info: PRIVATE: BYTEENA_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_ENABLE_A NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_ENABLE_B NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_SIZE NUMERIC "8" +-- Retrieval info: PRIVATE: BlankMemory NUMERIC "1" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_A NUMERIC "0" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_B NUMERIC "0" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_A NUMERIC "0" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_B NUMERIC "0" +-- Retrieval info: PRIVATE: CLRdata NUMERIC "0" +-- Retrieval info: PRIVATE: CLRq NUMERIC "0" +-- Retrieval info: PRIVATE: CLRrdaddress NUMERIC "0" +-- Retrieval info: PRIVATE: CLRrren NUMERIC "0" +-- Retrieval info: PRIVATE: CLRwraddress NUMERIC "0" +-- Retrieval info: PRIVATE: CLRwren NUMERIC "0" +-- Retrieval info: PRIVATE: Clock NUMERIC "5" +-- Retrieval info: PRIVATE: Clock_A NUMERIC "0" +-- Retrieval info: PRIVATE: Clock_B NUMERIC "0" +-- Retrieval info: PRIVATE: IMPLEMENT_IN_LES NUMERIC "0" +-- Retrieval info: PRIVATE: INDATA_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: INDATA_REG_B NUMERIC "1" +-- Retrieval info: PRIVATE: INIT_FILE_LAYOUT STRING "PORT_A" +-- Retrieval info: PRIVATE: INIT_TO_SIM_X NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" +-- Retrieval info: PRIVATE: JTAG_ID STRING "NONE" +-- Retrieval info: PRIVATE: MAXIMUM_DEPTH NUMERIC "0" +-- Retrieval info: PRIVATE: MEMSIZE NUMERIC "16384" +-- Retrieval info: PRIVATE: MEM_IN_BITS NUMERIC "0" +-- Retrieval info: PRIVATE: MIFfilename STRING "" +-- Retrieval info: PRIVATE: OPERATION_MODE NUMERIC "3" +-- Retrieval info: PRIVATE: OUTDATA_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: OUTDATA_REG_B NUMERIC "1" +-- Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" +-- Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_MIXED_PORTS NUMERIC "2" +-- Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_PORT_A NUMERIC "3" +-- Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_PORT_B NUMERIC "3" +-- Retrieval info: PRIVATE: REGdata NUMERIC "1" +-- Retrieval info: PRIVATE: REGq NUMERIC "1" +-- Retrieval info: PRIVATE: REGrdaddress NUMERIC "0" +-- Retrieval info: PRIVATE: REGrren NUMERIC "1" +-- Retrieval info: PRIVATE: REGwraddress NUMERIC "1" +-- Retrieval info: PRIVATE: REGwren NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: USE_DIFF_CLKEN NUMERIC "0" +-- Retrieval info: PRIVATE: UseDPRAM NUMERIC "1" +-- Retrieval info: PRIVATE: VarWidth NUMERIC "0" +-- Retrieval info: PRIVATE: WIDTH_READ_A NUMERIC "16" +-- Retrieval info: PRIVATE: WIDTH_READ_B NUMERIC "16" +-- Retrieval info: PRIVATE: WIDTH_WRITE_A NUMERIC "16" +-- Retrieval info: PRIVATE: WIDTH_WRITE_B NUMERIC "16" +-- Retrieval info: PRIVATE: WRADDR_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: WRADDR_REG_B NUMERIC "1" +-- Retrieval info: PRIVATE: WRCTRL_ACLR_B NUMERIC "0" +-- Retrieval info: PRIVATE: enable NUMERIC "0" +-- Retrieval info: PRIVATE: rden NUMERIC "1" +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: CONSTANT: ADDRESS_REG_B STRING "CLOCK1" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_A STRING "BYPASS" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_B STRING "BYPASS" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_A STRING "BYPASS" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_B STRING "BYPASS" +-- Retrieval info: CONSTANT: INDATA_REG_B STRING "CLOCK1" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altsyncram" +-- Retrieval info: CONSTANT: NUMWORDS_A NUMERIC "1024" +-- Retrieval info: CONSTANT: NUMWORDS_B NUMERIC "1024" +-- Retrieval info: CONSTANT: OPERATION_MODE STRING "BIDIR_DUAL_PORT" +-- Retrieval info: CONSTANT: OUTDATA_ACLR_A STRING "NONE" +-- Retrieval info: CONSTANT: OUTDATA_ACLR_B STRING "NONE" +-- Retrieval info: CONSTANT: OUTDATA_REG_A STRING "CLOCK0" +-- Retrieval info: CONSTANT: OUTDATA_REG_B STRING "CLOCK1" +-- Retrieval info: CONSTANT: POWER_UP_UNINITIALIZED STRING "FALSE" +-- Retrieval info: CONSTANT: READ_DURING_WRITE_MODE_PORT_A STRING "NEW_DATA_NO_NBE_READ" +-- Retrieval info: CONSTANT: READ_DURING_WRITE_MODE_PORT_B STRING "NEW_DATA_NO_NBE_READ" +-- Retrieval info: CONSTANT: WIDTHAD_A NUMERIC "10" +-- Retrieval info: CONSTANT: WIDTHAD_B NUMERIC "10" +-- Retrieval info: CONSTANT: WIDTH_A NUMERIC "16" +-- Retrieval info: CONSTANT: WIDTH_B NUMERIC "16" +-- Retrieval info: CONSTANT: WIDTH_BYTEENA_A NUMERIC "1" +-- Retrieval info: CONSTANT: WIDTH_BYTEENA_B NUMERIC "1" +-- Retrieval info: CONSTANT: WRCONTROL_WRADDRESS_REG_B STRING "CLOCK1" +-- Retrieval info: USED_PORT: address_a 0 0 10 0 INPUT NODEFVAL "address_a[9..0]" +-- Retrieval info: USED_PORT: address_b 0 0 10 0 INPUT NODEFVAL "address_b[9..0]" +-- Retrieval info: USED_PORT: clock_a 0 0 0 0 INPUT VCC "clock_a" +-- Retrieval info: USED_PORT: clock_b 0 0 0 0 INPUT NODEFVAL "clock_b" +-- Retrieval info: USED_PORT: data_a 0 0 16 0 INPUT NODEFVAL "data_a[15..0]" +-- Retrieval info: USED_PORT: data_b 0 0 16 0 INPUT NODEFVAL "data_b[15..0]" +-- Retrieval info: USED_PORT: q_a 0 0 16 0 OUTPUT NODEFVAL "q_a[15..0]" +-- Retrieval info: USED_PORT: q_b 0 0 16 0 OUTPUT NODEFVAL "q_b[15..0]" +-- Retrieval info: USED_PORT: rden_a 0 0 0 0 INPUT VCC "rden_a" +-- Retrieval info: USED_PORT: rden_b 0 0 0 0 INPUT VCC "rden_b" +-- Retrieval info: USED_PORT: wren_a 0 0 0 0 INPUT GND "wren_a" +-- Retrieval info: USED_PORT: wren_b 0 0 0 0 INPUT GND "wren_b" +-- Retrieval info: CONNECT: @address_a 0 0 10 0 address_a 0 0 10 0 +-- Retrieval info: CONNECT: @address_b 0 0 10 0 address_b 0 0 10 0 +-- Retrieval info: CONNECT: @clock0 0 0 0 0 clock_a 0 0 0 0 +-- Retrieval info: CONNECT: @clock1 0 0 0 0 clock_b 0 0 0 0 +-- Retrieval info: CONNECT: @data_a 0 0 16 0 data_a 0 0 16 0 +-- Retrieval info: CONNECT: @data_b 0 0 16 0 data_b 0 0 16 0 +-- Retrieval info: CONNECT: @rden_a 0 0 0 0 rden_a 0 0 0 0 +-- Retrieval info: CONNECT: @rden_b 0 0 0 0 rden_b 0 0 0 0 +-- Retrieval info: CONNECT: @wren_a 0 0 0 0 wren_a 0 0 0 0 +-- Retrieval info: CONNECT: @wren_b 0 0 0 0 wren_b 0 0 0 0 +-- Retrieval info: CONNECT: q_a 0 0 16 0 @q_a 0 0 16 0 +-- Retrieval info: CONNECT: q_b 0 0 16 0 @q_b 0 0 16 0 +-- Retrieval info: GEN_FILE: TYPE_NORMAL RAMB16_S18_S18.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL RAMB16_S18_S18.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL RAMB16_S18_S18.cmp FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL RAMB16_S18_S18.bsf FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL RAMB16_S18_S18_inst.vhd FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/Oric Atmos_MiST/rtl/REG_ADDR.vhd b/Oric Atmos_MiST/rtl/REG_ADDR.vhd new file mode 100644 index 00000000..c334658d --- /dev/null +++ b/Oric Atmos_MiST/rtl/REG_ADDR.vhd @@ -0,0 +1,27 @@ +-- +-- REG_ADDR.vhd +-- +-- DECODER of Registre. +-- +-- Copyright (C)2001 SEILEBOST +-- All rights reserved. +-- +-- $Id: REG_ADDR.vhd, v0.2 2001/11/02 00:00:00 SEILEBOST $ +-- + +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_ARITH.ALL; + +entity REG_ADRESSE is + Port ( REG_ADDR : in std_logic_vector(3 downto 0); + RST : in std_logic, + SEL_REG : out std_logic_vector(15 downto 0) ); +end REG_ADRESSE; + +architecture Behavioral of REG_ADRESSE is + +-- DECODER 4 -> 16 +begin + +end Behavioral; diff --git a/Oric Atmos_MiST/rtl/ROM256X1.qip b/Oric Atmos_MiST/rtl/ROM256X1.qip new file mode 100644 index 00000000..4af713a0 --- /dev/null +++ b/Oric Atmos_MiST/rtl/ROM256X1.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "ROM: 1-PORT" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "ROM256X1.vhd"] diff --git a/Oric Atmos_MiST/rtl/ROM256X1.vhd b/Oric Atmos_MiST/rtl/ROM256X1.vhd new file mode 100644 index 00000000..83b01f59 --- /dev/null +++ b/Oric Atmos_MiST/rtl/ROM256X1.vhd @@ -0,0 +1,146 @@ +-- megafunction wizard: %ROM: 1-PORT% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altsyncram + +-- ============================================================ +-- File Name: ROM256X1.vhd +-- Megafunction Name(s): +-- altsyncram +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 13.1.0 Build 162 10/23/2013 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2013 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.altera_mf_components.all; + +ENTITY ROM256X1 IS + generic ( + init_file : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + ) + PORT + ( + address : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + clock : IN STD_LOGIC := '1'; + q : OUT STD_LOGIC_VECTOR (0 DOWNTO 0) + ); +END ROM256X1; + + +ARCHITECTURE SYN OF rom256x1 IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (0 DOWNTO 0); + +BEGIN + q <= sub_wire0(0 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 => 256, + operation_mode => "ROM", + outdata_aclr_a => "NONE", + outdata_reg_a => "CLOCK0", + widthad_a => 8, + width_a => 1, + width_byteena_a => 1 + ) + PORT MAP ( + address_a => address, + clock0 => clock, + q_a => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ADDRESSSTALL_A NUMERIC "0" +-- Retrieval info: PRIVATE: AclrAddr NUMERIC "0" +-- Retrieval info: PRIVATE: AclrByte NUMERIC "0" +-- Retrieval info: PRIVATE: AclrOutput NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_ENABLE NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_SIZE NUMERIC "8" +-- Retrieval info: PRIVATE: BlankMemory NUMERIC "0" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_A NUMERIC "0" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_A NUMERIC "0" +-- Retrieval info: PRIVATE: Clken NUMERIC "0" +-- Retrieval info: PRIVATE: IMPLEMENT_IN_LES NUMERIC "0" +-- Retrieval info: PRIVATE: INIT_FILE_LAYOUT STRING "PORT_A" +-- Retrieval info: PRIVATE: INIT_TO_SIM_X NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" +-- Retrieval info: PRIVATE: JTAG_ID STRING "NONE" +-- Retrieval info: PRIVATE: MAXIMUM_DEPTH NUMERIC "0" +-- Retrieval info: PRIVATE: MIFfilename STRING "./roms/key1.hex" +-- Retrieval info: PRIVATE: NUMWORDS_A NUMERIC "256" +-- Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" +-- Retrieval info: PRIVATE: RegAddr NUMERIC "1" +-- Retrieval info: PRIVATE: RegOutput NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: SingleClock NUMERIC "1" +-- Retrieval info: PRIVATE: UseDQRAM NUMERIC "0" +-- Retrieval info: PRIVATE: WidthAddr NUMERIC "8" +-- Retrieval info: PRIVATE: WidthData NUMERIC "1" +-- Retrieval info: PRIVATE: rden NUMERIC "0" +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: CONSTANT: ADDRESS_ACLR_A STRING "NONE" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_A STRING "BYPASS" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_A STRING "BYPASS" +-- Retrieval info: CONSTANT: INIT_FILE STRING "./roms/key1.hex" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: LPM_HINT STRING "ENABLE_RUNTIME_MOD=NO" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altsyncram" +-- Retrieval info: CONSTANT: NUMWORDS_A NUMERIC "256" +-- Retrieval info: CONSTANT: OPERATION_MODE STRING "ROM" +-- Retrieval info: CONSTANT: OUTDATA_ACLR_A STRING "NONE" +-- Retrieval info: CONSTANT: OUTDATA_REG_A STRING "CLOCK0" +-- Retrieval info: CONSTANT: WIDTHAD_A NUMERIC "8" +-- Retrieval info: CONSTANT: WIDTH_A NUMERIC "1" +-- Retrieval info: CONSTANT: WIDTH_BYTEENA_A NUMERIC "1" +-- Retrieval info: USED_PORT: address 0 0 8 0 INPUT NODEFVAL "address[7..0]" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT VCC "clock" +-- Retrieval info: USED_PORT: q 0 0 1 0 OUTPUT NODEFVAL "q[0..0]" +-- Retrieval info: CONNECT: @address_a 0 0 8 0 address 0 0 8 0 +-- Retrieval info: CONNECT: @clock0 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: q 0 0 1 0 @q_a 0 0 1 0 +-- Retrieval info: GEN_FILE: TYPE_NORMAL ROM256X1.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL ROM256X1.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL ROM256X1.cmp FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL ROM256X1.bsf FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL ROM256X1_inst.vhd FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/Oric Atmos_MiST/rtl/STOP_WATCH.vhd b/Oric Atmos_MiST/rtl/STOP_WATCH.vhd new file mode 100644 index 00000000..3442b987 --- /dev/null +++ b/Oric Atmos_MiST/rtl/STOP_WATCH.vhd @@ -0,0 +1,78 @@ +--=================================== +-- Listing 4.17 +--=================================== +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +entity stop_watch is + port( + clk: in std_logic; + go, clr: in std_logic; + d2, d1, d0: out std_logic_vector(3 downto 0) + ); +end stop_watch; + +--=================================== +-- Listing 4.18 +--=================================== +architecture if_arch of stop_watch is + constant DVSR: integer:=5000000; + signal ms_reg, ms_next: unsigned(22 downto 0); + signal d2_reg, d1_reg, d0_reg: unsigned(3 downto 0); + signal d2_next, d1_next, d0_next: unsigned(3 downto 0); + signal ms_tick: std_logic; +begin + -- register + process(clk) + begin + if (clk'event and clk='1') then + ms_reg <= ms_next; + d2_reg <= d2_next; + d1_reg <= d1_next; + d0_reg <= d0_next; + end if; + end process; + + -- next-state logic + -- 0.1 sec tick generator: mod-5000000 + ms_next <= + (others=>'0') when clr='1' or + (ms_reg=DVSR and go='1') else + ms_reg + 1 when go='1' else + ms_reg; + ms_tick <= '1' when ms_reg=DVSR else '0'; + -- 0.1 sec counter + process(d0_reg,d1_reg,d2_reg,ms_tick,clr) + begin + -- defult + d0_next <= d0_reg; + d1_next <= d1_reg; + d2_next <= d2_reg; + if clr='1' then + d0_next <= "0000"; + d1_next <= "0000"; + d2_next <= "0000"; + elsif ms_tick='1' then + if (d0_reg/=9) then + d0_next <= d0_reg + 1; + else -- reach XX9 + d0_next <= "0000"; + if (d1_reg/=9) then + d1_next <= d1_reg + 1; + else -- reach X99 + d1_next <= "0000"; + if (d2_reg/=9) then + d2_next <= d2_reg + 1; + else -- reach 999 + d2_next <= "0000"; + end if; + end if; + end if; + end if; + end process; + -- output logic + d0 <= std_logic_vector(d0_reg); + d1 <= std_logic_vector(d1_reg); + d2 <= std_logic_vector(d2_reg); +end if_arch; + diff --git a/Oric Atmos_MiST/rtl/TST_ay3819x.vhd b/Oric Atmos_MiST/rtl/TST_ay3819x.vhd new file mode 100644 index 00000000..dbab8af7 --- /dev/null +++ b/Oric Atmos_MiST/rtl/TST_ay3819x.vhd @@ -0,0 +1,174 @@ + +-- VHDL Test Bench Created from source file ay3819x.vhd -- 15:33:03 12/26/2001 +-- +-- Notes: +-- This testbench has been automatically generated using types std_logic and +-- std_logic_vector for the ports of the unit under test. Xilinx recommends +-- that these types always be used for the top-level I/O of a design in order +-- to guarantee that the testbench will bind correctly to the post-implementation +-- simulation model. +-- +LIBRARY ieee; +USE ieee.std_logic_1164.ALL; +USE ieee.numeric_std.ALL; + +ENTITY testbench IS +END testbench; + +ARCHITECTURE behavior OF testbench IS + +constant CLK_PERIOD : time := 60 nS; -- system clock period + + COMPONENT ay3819x + PORT( + RESET : IN std_logic; + CLOCK : IN std_logic; + BDIR : IN std_logic; + BC1 : IN std_logic; + BC2 : IN std_logic; + D : INOUT std_logic_vector(7 downto 0); + IOA : INOUT std_logic_vector(7 downto 0); + IOB : INOUT std_logic_vector(7 downto 0); + AnalogA : OUT std_logic; + AnalogB : OUT std_logic; + AnalogC : OUT std_logic ); + END COMPONENT; + + SIGNAL D : std_logic_vector(7 downto 0); + SIGNAL RESET : std_logic; + SIGNAL CLOCK : std_logic; + SIGNAL BDIR : std_logic; + SIGNAL BC1 : std_logic; + SIGNAL BC2 : std_logic; + SIGNAL IOA : std_logic_vector(7 downto 0); + SIGNAL IOB : std_logic_vector(7 downto 0); + SIGNAL AnalogA : std_logic; + SIGNAL AnalogB : std_logic; + SIGNAL AnalogC : std_logic; + +BEGIN + +uut: ay3819x PORT MAP( + D => D, + RESET => RESET, + CLOCK => CLOCK, + BDIR => BDIR, + BC1 => BC1, + BC2 => BC2, + IOA => IOA, + IOB => IOB, + AnalogA => AnalogA, + AnalogB => AnalogB, + AnalogC => AnalogC ); + + +-- *** Test Bench - User Defined Section *** + +CREATE_CLK: process + begin + CLOCK <= '0'; + wait for CLK_PERIOD/2; + CLOCK <= '1'; + wait for CLK_PERIOD/2; +end process; + +SIMUL_RESET: process +begin + RESET <= '1'; + wait until CLOCK'event and CLOCK = '1'; + wait until CLOCK'event and CLOCK = '1'; + wait for 15 ns; + RESET <= '0'; + wait; +end process; + +SIMUL_WR_TO_R0: process +begin + BDIR <= '0'; + BC1 <= '0'; + BC2 <= '0'; + wait for 150 ns; + BDIR <= '1'; -- Latch + BC1 <= '1'; + BC2 <= '1'; + wait for 15 ns; + BDIR <= '0'; -- HIGH IMPEDANCE + BC1 <= '0'; + BC2 <= '0'; + wait for 45 ns; + BDIR <= '1'; -- write to register + BC1 <= '0'; + BC2 <= '1'; + wait for 15 ns; + BDIR <= '0'; -- HIGH IMPEDANCE + BC1 <= '0'; + BC2 <= '0'; + wait for 45 ns; + BDIR <= '1'; -- latch + BC1 <= '1'; + BC2 <= '1'; + wait for 15 ns; + BDIR <= '0'; -- High impedance + BC1 <= '0'; + BC2 <= '0'; + wait for 45 ns; + BDIR <= '1'; -- write to register + BC1 <= '0'; + BC2 <= '1'; + wait for 15 ns; + BDIR <= '0'; -- High impedance + BC1 <= '0'; + BC2 <= '0'; + wait for 45 ns; + BDIR <= '1'; -- Latch + BC1 <= '1'; + BC2 <= '1'; + wait for 15 ns; + BDIR <= '0'; -- High impedance + BC1 <= '0'; + BC2 <= '0'; + wait for 45 ns; + BDIR <= '0'; -- Read + BC1 <= '1'; + BC2 <= '1'; + wait for 15 ns; + BDIR <= '0'; -- High impedance + BC1 <= '0'; + BC2 <= '0'; + wait; + +end process; + +BUS_D : process +begin + D <= ( others => 'Z'); + wait for 150 ns; + D <= "00001110"; + wait for 30 ns; + D <= ( others => 'Z'); + wait for 30 ns; -- 195 ns + D <= "00010101"; + wait for 30 ns; -- 225 ns + D <= ( others => 'Z'); + wait for 30 ns; -- 255 ns + D <= "00000001"; + wait for 30 ns; -- 285 ns + D <= ( others => 'Z'); + wait for 30 ns; -- 315 ns + D <= "10010001"; + wait for 30 ns; -- 345 ns + D <= ( others => 'Z'); + wait for 30 ns; -- 375 ns + D <= "00001110"; + wait for 30 ns; -- 405 ns + D <= ( others => 'Z'); + wait; +end process; + +tb : PROCESS + BEGIN + wait for 1000 ns; -- will wait forever + END PROCESS; +-- *** End Test Bench - User Defined Section *** + +END; diff --git a/Oric Atmos_MiST/rtl/YM2149_linmix.vhd b/Oric Atmos_MiST/rtl/YM2149_linmix.vhd new file mode 100644 index 00000000..a530887d --- /dev/null +++ b/Oric Atmos_MiST/rtl/YM2149_linmix.vhd @@ -0,0 +1,597 @@ +-- +-- A simulation model of YM2149 (AY-3-8910 with bells on) + +-- Copyright (c) MikeJ - Jan 2005 +-- +-- All rights reserved +-- +-- Redistribution and use in source and synthezised forms, with or without +-- modification, are permitted provided that the following conditions are met: +-- +-- Redistributions of source code must retain the above copyright notice, +-- this list of conditions and the following disclaimer. +-- +-- Redistributions in synthesized form must reproduce the above copyright +-- notice, this list of conditions and the following disclaimer in the +-- documentation and/or other materials provided with the distribution. +-- +-- Neither the name of the author nor the names of other contributors may +-- be used to endorse or promote products derived from this software without +-- specific prior written permission. +-- +-- THIS CODE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +-- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +-- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +-- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE +-- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +-- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +-- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +-- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +-- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +-- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +-- POSSIBILITY OF SUCH DAMAGE. +-- +-- You are responsible for any legal issues arising from your use of this code. +-- +-- The latest version of this file can be found at: www.fpgaarcade.com +-- +-- Email support@fpgaarcade.com +-- +-- Revision list +-- +-- version 001 initial release +-- +-- Clues from MAME sound driver and Kazuhiro TSUJIKAWA +-- +-- These are the measured outputs from a real chip for a single Isolated channel into a 1K load (V) +-- vol 15 .. 0 +-- 3.27 2.995 2.741 2.588 2.452 2.372 2.301 2.258 2.220 2.198 2.178 2.166 2.155 2.148 2.141 2.132 +-- As the envelope volume is 5 bit, I have fitted a curve to the not quite log shape in order +-- to produced all the required values. +-- (The first part of the curve is a bit steeper and the last bit is more linear than expected) +-- +-- NOTE, this component uses LINEAR mixing of the three analogue channels, and is only +-- accurate for designs where the outputs are buffered and not simply wired together. +-- The ouput level is more complex in that case and requires a larger table. + +library ieee; + use ieee.std_logic_1164.all; + use ieee.std_logic_arith.all; + use ieee.std_logic_unsigned.all; + +entity YM2149 is + port ( + -- data bus + I_DA : in std_logic_vector(7 downto 0); + O_DA : out std_logic_vector(7 downto 0); + O_DA_OE_L : out std_logic; + -- control + I_A9_L : in std_logic; + I_A8 : in std_logic; + I_BDIR : in std_logic; + I_BC2 : in std_logic; + I_BC1 : in std_logic; + I_SEL_L : in std_logic; + + O_AUDIO : out std_logic_vector(7 downto 0) := (others => '0'); + -- port a +-- I_IOA : in std_logic_vector(7 downto 0); +-- O_IOA : out std_logic_vector(7 downto 0); +-- O_IOA_OE_L : out std_logic; + -- port b +-- I_IOB : in std_logic_vector(7 downto 0); +-- O_IOB : out std_logic_vector(7 downto 0); +-- O_IOB_OE_L : out std_logic; + + ENA : in std_logic; -- clock enable for higher speed operation + RESET_L : in std_logic; + CLK : in std_logic -- note 6 Mhz + ); +end; + +architecture RTL of YM2149 is + type array_16x8 is array (0 to 15) of std_logic_vector(7 downto 0); + type array_3x12 is array (1 to 3) of std_logic_vector(11 downto 0); + + signal cnt_div : std_logic_vector(3 downto 0) := (others => '0'); + + signal noise_div : std_logic := '0'; + signal ena_div : std_logic := '0'; + signal ena_div_noise : std_logic := '0'; + signal poly17 : std_logic_vector(16 downto 0) := (others => '0'); + + -- registers + signal addr : std_logic_vector(7 downto 0); + signal busctrl_addr : std_logic; + signal busctrl_we : std_logic; + signal busctrl_re : std_logic; + + signal reg : array_16x8 := (others => (others => '0')); + signal env_reset : std_logic := '1'; +-- signal ioa_inreg : std_logic_vector(7 downto 0) := (others => '0'); +-- signal iob_inreg : std_logic_vector(7 downto 0) := (others => '0'); + + signal noise_gen_cnt : std_logic_vector(4 downto 0) := (others => '0'); + signal noise_gen_op : std_logic; + signal tone_gen_cnt : array_3x12 := (others => (others => '0')); + signal tone_gen_op : std_logic_vector(3 downto 1) := (others => '0'); + + signal env_gen_cnt : std_logic_vector(15 downto 0) := (others => '0'); + signal env_ena : std_logic := '0'; + signal env_hold : std_logic := '0'; + signal env_inc : std_logic := '0'; + signal env_vol : std_logic_vector(4 downto 0) := (others => '0'); + + signal tone_ena_l : std_logic; + signal tone_src : std_logic; + signal noise_ena_l : std_logic; + signal chan_vol : std_logic_vector(4 downto 0); + + signal dac_amp : std_logic_vector(7 downto 0) := (others => '0'); + signal audio_mix : std_logic_vector(9 downto 0) := (others => '0'); + signal audio_final : std_logic_vector(9 downto 0) := (others => '0'); + +begin + -- cpu i/f + p_busdecode : process(I_BDIR, I_BC2, I_BC1, addr, I_A9_L, I_A8) + variable cs : std_logic; + variable sel : std_logic_vector(2 downto 0); + begin + -- BDIR BC2 BC1 MODE + -- 0 0 0 inactive + -- 0 0 1 address + -- 0 1 0 inactive + -- 0 1 1 read + -- 1 0 0 address + -- 1 0 1 inactive + -- 1 1 0 write + -- 1 1 1 read + busctrl_addr <= '0'; + busctrl_we <= '0'; + busctrl_re <= '0'; + + cs := '0'; + if (I_A9_L = '0') and (I_A8 = '1') and (addr(7 downto 4) = "0000") then + cs := '1'; + end if; + + sel := (I_BDIR & I_BC2 & I_BC1); + case sel is + when "000" => null; + when "001" => busctrl_addr <= '1'; + when "010" => null; + when "011" => busctrl_re <= cs; + when "100" => busctrl_addr <= '1'; + when "101" => null; + when "110" => busctrl_we <= cs; + when "111" => busctrl_addr <= '1'; + when others => null; + end case; + end process; + + p_oe : process(busctrl_re) + begin + -- if we are emulating a real chip, maybe clock this to fake up the tristate typ delay of 100ns + O_DA_OE_L <= not (busctrl_re); + end process; + + -- + -- CLOCKED + -- + p_waddr : process(RESET_L, CLK) + begin + -- looks like registers are latches in real chip, but the address is caught at the end of the address state. + if (RESET_L = '0') then + addr <= (others => '0'); + elsif rising_edge(CLK) then + if (ENA = '1') then + if (busctrl_addr = '1') then + addr <= I_DA; + end if; + end if; + end if; + end process; + + p_wdata : process(RESET_L, CLK) + begin + if (RESET_L = '0') then + reg <= (others => (others => '0')); + env_reset <= '1'; + elsif rising_edge(CLK) then + if (ENA = '1') then + env_reset <= '0'; + if (busctrl_we = '1') then + case addr(3 downto 0) is + when x"0" => reg(0) <= I_DA; + when x"1" => reg(1) <= I_DA; + when x"2" => reg(2) <= I_DA; + when x"3" => reg(3) <= I_DA; + when x"4" => reg(4) <= I_DA; + when x"5" => reg(5) <= I_DA; + when x"6" => reg(6) <= I_DA; + when x"7" => reg(7) <= I_DA; + when x"8" => reg(8) <= I_DA; + when x"9" => reg(9) <= I_DA; + when x"A" => reg(10) <= I_DA; + when x"B" => reg(11) <= I_DA; + when x"C" => reg(12) <= I_DA; + when x"D" => reg(13) <= I_DA; env_reset <= '1'; + when x"E" => reg(14) <= I_DA; + when x"F" => reg(15) <= I_DA; + when others => null; + end case; + end if; + end if; + end if; + end process; + + p_rdata : process(busctrl_re, addr, reg) --, ioa_inreg, iob_inreg) + begin + O_DA <= (others => '0'); -- 'X' + if (busctrl_re = '1') then -- not necessary, but useful for putting 'X's in the simulator + case addr(3 downto 0) is + when x"0" => O_DA <= reg(0) ; + when x"1" => O_DA <= reg(1); + when x"2" => O_DA <= reg(2); + when x"3" => O_DA <= reg(3); + when x"4" => O_DA <= reg(4); + when x"5" => O_DA <= reg(5); + when x"6" => O_DA <= reg(6); + when x"7" => O_DA <= reg(7); + when x"8" => O_DA <= reg(8); + when x"9" => O_DA <= reg(9); + when x"A" => O_DA <= reg(10); + when x"B" => O_DA <= reg(11); + when x"C" => O_DA <= reg(12); + when x"D" => O_DA <= reg(13); + when x"E" => + if (reg(7)(6) = '0') then -- input + O_DA <= x"00"; --ioa_inreg; + else + O_DA <= reg(14); -- read output reg + end if; + when x"F" => + if (Reg(7)(7) = '0') then + O_DA <= x"00"; --iob_inreg; + else + O_DA <= reg(15); + end if; + when others => null; + end case; + end if; + end process; + -- + p_divider : process + begin + wait until rising_edge(CLK); + -- / 8 when SEL is high and /16 when SEL is low + if (ENA = '1') then + ena_div <= '0'; + ena_div_noise <= '0'; + if (cnt_div = "0000") then + cnt_div <= (not I_SEL_L) & "111"; + ena_div <= '1'; + + noise_div <= not noise_div; + if (noise_div = '1') then + ena_div_noise <= '1'; + end if; + else + cnt_div <= cnt_div - "1"; + end if; + end if; + end process; + + p_noise_gen : process + variable noise_gen_comp : std_logic_vector(4 downto 0); + variable poly17_zero : std_logic; + begin + wait until rising_edge(CLK); + + if (reg(6)(4 downto 0) = "00000") then + noise_gen_comp := (others => '0'); + else + noise_gen_comp := (reg(6)(4 downto 0) - "1"); + end if; + + poly17_zero := '0'; + if (poly17 = "00000000000000000") then poly17_zero := '1'; end if; + + if (ENA = '1') then + + if (ena_div_noise = '1') then -- divider ena + + if (noise_gen_cnt >= noise_gen_comp) then + noise_gen_cnt <= (others => '0'); + poly17 <= (poly17(0) xor poly17(2) xor poly17_zero) & poly17(16 downto 1); + else + noise_gen_cnt <= (noise_gen_cnt + "1"); + end if; + end if; + end if; + end process; + noise_gen_op <= poly17(0); + + p_tone_gens : process + variable tone_gen_freq : array_3x12; + variable tone_gen_comp : array_3x12; + begin + wait until rising_edge(CLK); + + -- looks like real chips count up - we need to get the Exact behaviour .. + tone_gen_freq(1) := reg(1)(3 downto 0) & reg(0); + tone_gen_freq(2) := reg(3)(3 downto 0) & reg(2); + tone_gen_freq(3) := reg(5)(3 downto 0) & reg(4); + -- period 0 = period 1 + for i in 1 to 3 loop + if (tone_gen_freq(i) = x"000") then + tone_gen_comp(i) := (others => '0'); + else + tone_gen_comp(i) := (tone_gen_freq(i) - "1"); + end if; + end loop; + + if (ENA = '1') then + for i in 1 to 3 loop + if (ena_div = '1') then -- divider ena + + if (tone_gen_cnt(i) >= tone_gen_comp(i)) then + tone_gen_cnt(i) <= (others => '0'); + tone_gen_op(i) <= not tone_gen_op(i); + else + tone_gen_cnt(i) <= (tone_gen_cnt(i) + "1"); + end if; + end if; + end loop; + end if; + end process; + + p_envelope_freq : process + variable env_gen_freq : std_logic_vector(15 downto 0); + variable env_gen_comp : std_logic_vector(15 downto 0); + begin + wait until rising_edge(CLK); + env_gen_freq := reg(12) & reg(11); + -- envelope freqs 1 and 0 are the same. + if (env_gen_freq = x"0000") then + env_gen_comp := (others => '0'); + else + env_gen_comp := (env_gen_freq - "1"); + end if; + + if (ENA = '1') then + env_ena <= '0'; + if (ena_div = '1') then -- divider ena + if (env_gen_cnt >= env_gen_comp) then + env_gen_cnt <= (others => '0'); + env_ena <= '1'; + else + env_gen_cnt <= (env_gen_cnt + "1"); + end if; + end if; + end if; + end process; + + p_envelope_shape : process + variable is_bot : boolean; + variable is_bot_p1 : boolean; + variable is_top_m1 : boolean; + variable is_top : boolean; + begin + wait until rising_edge(CLK); + + -- envelope shapes + -- C AtAlH + -- 0 0 x x \___ + -- + -- 0 1 x x /___ + -- + -- 1 0 0 0 \\\\ + -- + -- 1 0 0 1 \___ + -- + -- 1 0 1 0 \/\/ + -- ___ + -- 1 0 1 1 \ + -- + -- 1 1 0 0 //// + -- ___ + -- 1 1 0 1 / + -- + -- 1 1 1 0 /\/\ + -- + -- 1 1 1 1 /___ + + -- synchronous reset to avoid latch warning + if (env_reset = '1') then + -- load initial state + if (reg(13)(2) = '0') then -- attack + env_vol <= (others => '1'); + env_inc <= '0'; -- -1 + else + env_vol <= (others => '0'); + env_inc <= '1'; -- +1 + end if; + + env_hold <= '0'; + + else + + is_bot := (env_vol = "00000"); + is_bot_p1 := (env_vol = "00001"); + is_top_m1 := (env_vol = "11110"); + is_top := (env_vol = "11111"); + + if (ENA = '1') then + if (env_ena = '1') then + if (env_hold = '0') then + if (env_inc = '1') then + env_vol <= (env_vol + "00001"); + else + env_vol <= (env_vol + "11111"); + end if; + end if; + + -- envelope shape control. + if (reg(13)(3) = '0') then + if (env_inc = '0') then -- down + if is_bot_p1 then env_hold <= '1'; end if; + else + if is_top then env_hold <= '1'; end if; + end if; + else + if (reg(13)(0) = '1') then -- hold = 1 + if (env_inc = '0') then -- down + if (reg(13)(1) = '1') then -- alt + if is_bot then env_hold <= '1'; end if; + else + if is_bot_p1 then env_hold <= '1'; end if; + end if; + else + if (reg(13)(1) = '1') then -- alt + if is_top then env_hold <= '1'; end if; + else + if is_top_m1 then env_hold <= '1'; end if; + end if; + end if; + + elsif (reg(13)(1) = '1') then -- alternate + if (env_inc = '0') then -- down + if is_bot_p1 then env_hold <= '1'; end if; + if is_bot then env_hold <= '0'; env_inc <= '1'; end if; + else + if is_top_m1 then env_hold <= '1'; end if; + if is_top then env_hold <= '0'; env_inc <= '0'; end if; + end if; + end if; + + end if; + end if; + end if; + end if; + end process; + + p_chan_mixer : process(cnt_div, reg, tone_gen_op) + begin + tone_ena_l <= '1'; + tone_src <= '1'; + noise_ena_l <= '1'; + chan_vol <= "00000"; + case cnt_div(1 downto 0) is + when "00" => + tone_ena_l <= reg(7)(0); + tone_src <= tone_gen_op(1); + chan_vol <= reg(8)(4 downto 0); + noise_ena_l <= reg(7)(3); + when "01" => + tone_ena_l <= reg(7)(1); + tone_src <= tone_gen_op(2); + chan_vol <= reg(9)(4 downto 0); + noise_ena_l <= reg(7)(4); + when "10" => + tone_ena_l <= reg(7)(2); + tone_src <= tone_gen_op(3); + chan_vol <= reg(10)(4 downto 0); + noise_ena_l <= reg(7)(5); + when "11" => null; -- tone gen outputs become valid on this clock + when others => null; + end case; + end process; + + p_op_mixer : process + variable chan_mixed : std_logic; + variable chan_amp : std_logic_vector(4 downto 0); + begin + wait until rising_edge(CLK); + if (ENA = '1') then + + chan_mixed := (tone_ena_l or tone_src) and (noise_ena_l or noise_gen_op); + + chan_amp := (others => '0'); + if (chan_mixed = '1') then + if (chan_vol(4) = '0') then + if (chan_vol(3 downto 0) = "0000") then -- nothing is easy ! make sure quiet is quiet + chan_amp := (others => '0'); + else + chan_amp := chan_vol(3 downto 0) & '1'; -- make sure level 31 (env) = level 15 (tone) + end if; + else + chan_amp := env_vol(4 downto 0); + end if; + end if; + + dac_amp <= (others => '0'); + case chan_amp is + when "11111" => dac_amp <= x"FF"; + when "11110" => dac_amp <= x"D9"; + when "11101" => dac_amp <= x"BA"; + when "11100" => dac_amp <= x"9F"; + when "11011" => dac_amp <= x"88"; + when "11010" => dac_amp <= x"74"; + when "11001" => dac_amp <= x"63"; + when "11000" => dac_amp <= x"54"; + when "10111" => dac_amp <= x"48"; + when "10110" => dac_amp <= x"3D"; + when "10101" => dac_amp <= x"34"; + when "10100" => dac_amp <= x"2C"; + when "10011" => dac_amp <= x"25"; + when "10010" => dac_amp <= x"1F"; + when "10001" => dac_amp <= x"1A"; + when "10000" => dac_amp <= x"16"; + when "01111" => dac_amp <= x"13"; + when "01110" => dac_amp <= x"10"; + when "01101" => dac_amp <= x"0D"; + when "01100" => dac_amp <= x"0B"; + when "01011" => dac_amp <= x"09"; + when "01010" => dac_amp <= x"08"; + when "01001" => dac_amp <= x"07"; + when "01000" => dac_amp <= x"06"; + when "00111" => dac_amp <= x"05"; + when "00110" => dac_amp <= x"04"; + when "00101" => dac_amp <= x"03"; + when "00100" => dac_amp <= x"03"; + when "00011" => dac_amp <= x"02"; + when "00010" => dac_amp <= x"02"; + when "00001" => dac_amp <= x"01"; + when "00000" => dac_amp <= x"00"; + when others => null; + end case; + + if (cnt_div(1 downto 0) = "10") then + audio_mix <= (others => '0'); + audio_final <= audio_mix; + else + audio_mix <= audio_mix + ("00" & dac_amp); + end if; + end if; + end process; + + p_audio_output : process(RESET_L, CLK) + begin + if (RESET_L = '0') then + O_AUDIO <= (others => '0'); + elsif rising_edge(CLK) then + if (ENA = '1') then + O_AUDIO <= audio_final(9 downto 2); + end if; + end if; + end process; + +-- p_io_ports : process(reg) +-- begin +-- O_IOA <= reg(14); + +-- O_IOA_OE_L <= not reg(7)(6); +-- O_IOB <= reg(15); +-- O_IOB_OE_L <= not reg(7)(7); +-- end process; + +-- p_io_ports_inreg : process +-- begin +-- wait until rising_edge(CLK); +-- if (ENA = '1') then -- resync +-- ioa_inreg <= I_IOA; +-- iob_inreg <= I_IOB; +-- end if; +-- end process; +end architecture RTL; diff --git a/Oric Atmos_MiST/rtl/addmemux.vhd b/Oric Atmos_MiST/rtl/addmemux.vhd new file mode 100644 index 00000000..ea6acb53 --- /dev/null +++ b/Oric Atmos_MiST/rtl/addmemux.vhd @@ -0,0 +1,87 @@ +-- +-- addmenux.vhd +-- +-- Manage bus address multiplexer +-- +-- Copyright (C)2001 - 2005 SEILEBOST +-- All rights reserved. +-- +-- $Id: addmenux.vhd, v0.10 2009/06/25 00:00:00 SEILEBOST $ +-- MODIFICATION : +-- v0.01 : 200X/??/?? +-- v0.10 : 2009/06/25 : Intégration de la partie multiplexage de l'accès ram +-- TODO : +-- +-- TODO : +-- Remark : + +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.numeric_STD.all; +--use IEEE.std_logic_unsigned.all; + +entity addmemux is +port ( RESETn : in std_logic; + VAP1 : in std_logic_vector(15 downto 0);-- Video address phase 1 + VAP2 : in std_logic_vector(15 downto 0);-- Video address phase 2 + BAP : in std_logic_vector(15 downto 0);-- Bus address processor (A15-A0) + VA1L : in std_logic; -- Video address phase 1 LATCH + VA1R : in std_logic; -- Video address phase 1 ROW + VA1C : in std_logic; -- Video address phase 1 COLUMN + VA2L : in std_logic; -- Video address phase 2 LATCH + VA2R : in std_logic; -- Video address phase 2 ROW + VA2C : in std_logic; -- Video address phase 2 COLUMN + BAC : in std_logic; -- Bus address COLUMN + BAL : in std_logic; -- Bus address LATCH + AD_DYN : out std_logic_vector(15 downto 0) -- Address Bus dynamic + ); +end entity addmemux; + +architecture addmemux_arch of addmemux is + +signal lVAP1 : std_logic_vector(15 downto 0); +signal lVAP2 : std_logic_vector(15 downto 0); +signal lBAP : std_logic_vector(15 downto 0); + +begin + +-- Latch VAP1 +u_VAP1 : PROCESS ( VAP1, VA1L,resetn ) +begin + if (resetn = '0') then + lVAP1 <= (OTHERS => '0'); + elsif rising_edge(VA1L) then + lVAP1 <= VAP1; + end if; +end process; + +-- Latch VAP2 +u_VAP2 : PROCESS ( VAP2, VA2L, resetn ) +begin + if (resetn = '0') then + lVAP2 <= (OTHERS => '0'); + elsif rising_edge(VA2L) then + lVAP2 <= VAP2; + end if; +end process; + +-- Latch BAP +u_BAP: PROCESS ( BAP, BAL, resetn ) +begin + if (resetn = '0') then + lBAP<= (OTHERS => '0'); + elsif rising_edge(BAL) then + lBAP<= BAP; + end if; +end process; + +-- Assignation + + AD_DYN <= lVAP1(15 downto 0) when VA1R = '1' else + -- lVAP1(7 downto 0) when VA1C = '1' else + lVAP2(15 downto 0) when VA2R = '1' else + -- lVAP2(7 downto 0) when VA2C = '1' else + -- lBAP when BAL = '1' else + -- (OTHERS => 'Z'); + lBAP; +end architecture addmemux_arch; diff --git a/Oric Atmos_MiST/rtl/ay3819x.vhd b/Oric Atmos_MiST/rtl/ay3819x.vhd new file mode 100644 index 00000000..c6baa5f8 --- /dev/null +++ b/Oric Atmos_MiST/rtl/ay3819x.vhd @@ -0,0 +1,435 @@ +-- +-- A simulation model of PSG hardware +-- +-- All rights reserved +-- +-- Redistribution and use in source and synthezised forms, with or without +-- modification, are permitted provided that the following conditions are met: +-- +-- Redistributions of source code must retain the above copyright notice, +-- this list of conditions and the following disclaimer. +-- +-- Redistributions in synthesized form must reproduce the above copyright +-- notice, this list of conditions and the following disclaimer in the +-- documentation and/or other materials provided with the distribution. +-- +-- Neither the name of the author nor the names of other contributors may +-- be used to endorse or promote products derived from this software without +-- specific prior written permission. +-- +-- THIS CODE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +-- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +-- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +-- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE +-- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +-- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +-- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +-- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +-- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +-- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +-- POSSIBILITY OF SUCH DAMAGE. +-- +-- You are responsible for any legal issues arising from your use of this code. +-- +-- The latest version of this file can be found at: passionoric.free.fr +-- +-- Email seilebost@free.fr +-- +-- +-- Revision list +-- +-- v0.42 2002/01/03 : It seems ok +-- v0.43 2009/01/21 : bus bidirectionnel => bus unidirectionnel +-- v0.44 2009/10/11 : Reset asynchrone pour le process U_TRAIT +-- v0.45 2010/01/03 : Ajout d'une horloge pour le DAC +-- v0.46 2010/01/06 : Modification du générateur de fréquence +-- pour ajouter la division par 16 et par 256 +-- v0.50 2010/01/19 : Reorganisation du code +-- +-- AY3819X.vhd +-- +-- Top entity of AY3819X. +-- +-- Copyright (C)2001-2010 SEILEBOST +-- All rights reserved. +-- +-- $Id: AY3819.vhd, v0.50 2010/01/19 00:00:00 SEILEBOST $ +-- +-- TODO : +-- Many verification !! +-- Remark : + +library IEEE; +library UNISIM; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.numeric_STD.all; +use IEEE.STD_LOGIC_UNSIGNED.ALL; +--use UNISIM.Vcomponents.ALL; -- for IOBUF and OBUF + +entity AY3819X is + Port ( DATA_IN : in std_logic_vector(7 downto 0); + DATA_OUT : out std_logic_vector(7 downto 0); + O_DATA_OE_L : out std_logic; + RESET : in std_logic; + CLOCK : in std_logic; + CLOCK_DAC : in std_logic; -- 24 MHz pour le DAC + BDIR : in std_logic; + BC1 : in std_logic; + BC2 : in std_logic; + IOA : inout std_logic_vector(7 downto 0); + IOB : inout std_logic_vector(7 downto 0); + AnalogA : out std_logic; + AnalogB : out std_logic; + AnalogC : out std_logic ); +end AY3819X; + + +architecture Behavioral of AY3819X is + + SIGNAL BUS_CS : std_logic_vector(15 downto 0); -- Select the different module when Read / Write Register + + -- Create register + SIGNAL R0 : std_logic_vector(7 downto 0); -- Tone generator frequency Fine Tune channel A + SIGNAL R1 : std_logic_vector(7 downto 0); -- Tone generator frequency Coarse Tune channel A + SIGNAL R2 : std_logic_vector(7 downto 0); -- Tone generator frequency Fine Tune channel B + SIGNAL R3 : std_logic_vector(7 downto 0); -- Tone generator frequency Coarse Tune channel B + SIGNAL R4 : std_logic_vector(7 downto 0); -- Tone generator frequency Fine Tune channel C + SIGNAL R5 : std_logic_vector(7 downto 0); -- Tone generator frequency Coarse Tune channel B + SIGNAL R6 : std_logic_vector(7 downto 0); -- Noise generator frequency + SIGNAL R7 : std_logic_vector(7 downto 0); -- Mixer Control I/O Enable + SIGNAL R8 : std_logic_vector(7 downto 0); -- Amplitude control channel A + SIGNAL R9 : std_logic_vector(7 downto 0); -- Amplitude control channel B + SIGNAL R10 : std_logic_vector(7 downto 0); -- Amplitude control channel C + SIGNAL R11 : std_logic_vector(7 downto 0); -- Envelope period control fine tune + SIGNAL R12 : std_logic_vector(7 downto 0); -- Envelope period control coarse tune + SIGNAL R13 : std_logic_vector(7 downto 0); -- Envelope shape/cycle control + + SIGNAL REG_ADDR : std_logic_vector(3 downto 0); -- Keep the number of register addressed + + SIGNAL WR : std_logic; -- WRITE (FLAG) + + SIGNAL CLK_A : std_logic; -- CLOCK TONE VOICE A + SIGNAL CLK_B : std_logic; -- CLOCK TONE VOICE B + SIGNAL CLK_C : std_logic; -- CLOCK TONE VOICE C + SIGNAL CLK_TONE_A : std_logic; -- CLOCK TONE VOICE A +/- CLOCK NOISE + SIGNAL CLK_TONE_B : std_logic; -- CLOCK TONE VOICE B +/- CLOCK NOISE + SIGNAL CLK_TONE_C : std_logic; -- CLOCK TONE VOICE C +/- CLOCK NOISE + SIGNAL CLK_E : std_logic; -- CLOCK Envelope Generator + SIGNAL CLK_N : std_logic; -- CLOCK FROM NOISE GENERATOR + SIGNAL CLK_16 : std_logic; -- CLOCK (=1 MHz) / 16 pour le "tone" + SIGNAL CLK_256 : std_logic; -- CLOCK (=1 MHz) / 256 pour l'enveloppe + + SIGNAL OUT_AMPL_E : std_logic_vector(3 downto 0); -- Amplitude of signal from Envelope generator + + SIGNAL IAnalogA : std_logic; -- FOR IOPAD, exit from DAC VOICE A + SIGNAL IAnalogB : std_logic; -- FOR IOPAD, exit from DAC VOICE B + SIGNAL IAnalogC : std_logic; -- FOR IOPAD, exit from DAC VOICE C + + SIGNAL RST_ENV : std_logic; -- FOR RESET THE VALUE OF ENVELOPPE + + COMPONENT TONE_GENERATOR PORT ( CLK : in std_logic; + --CLK_TONE : in std_logic; + RST : in std_logic; + WR : in std_logic; + --CS_COARSE : in std_logic; + --CS_FINE : in std_logic; + DATA_COARSE : in std_logic_vector(7 downto 0); + DATA_FINE : in std_logic_vector(7 downto 0); + OUT_TONE : inout std_logic ); + END COMPONENT; + + COMPONENT NOISE_GENERATOR PORT ( CLK : in std_logic; + RST : in std_logic; + --WR : in std_logic; + --CS : in std_logic; + DATA : in std_logic_vector(4 downto 0); + CLK_N : out std_logic ); + END COMPONENT; + + COMPONENT GEN_CLK PORT ( CLK : in std_logic; + RST : in std_logic; + CLK_16 : out std_logic; + CLK_256 : out std_logic); + END COMPONENT; + +-- COMPONENT MIXER PORT ( CLK : in std_logic; + -- CS : in std_logic; + -- RST : in std_logic; + -- WR : in std_logic; + -- IN_A : in std_logic; + -- IN_B : in std_logic; + -- IN_C : in std_logic; + -- IN_NOISE : in std_logic; + -- DATA : in std_logic_vector(5 downto 0); + -- OUT_A : out std_logic; + -- OUT_B : out std_logic; + -- OUT_C : out std_logic ); + --END COMPONENT; + + COMPONENT GEN_ENV PORT ( CLK_ENV : in std_logic; + DATA : in std_logic_vector(3 downto 0); + RST_ENV : in std_logic; + WR : in std_logic; + --CS : in std_logic; + OUT_DATA : inout std_logic_vector(3 downto 0)); + END COMPONENT; + + COMPONENT MANAGE_AMPLITUDE PORT ( CLK : in std_logic; + CLK_DAC : in std_logic; + CLK_TONE : in std_logic; + CLK_NOISE : in std_logic; + RST : in std_logic; + CLK_TONE_ENA : in std_logic; + CLK_NOISE_ENA : in std_logic; + AMPLITUDE : in std_logic_vector(4 downto 0); + AMPLITUDE_E : in std_logic_vector(3 downto 0); + OUT_DAC : out std_logic ); + END COMPONENT; + + --COMPONENT IOBUF_F_12 port ( O : out std_logic; + -- IO : inout std_logic; + -- I : in std_logic; + -- T : in std_logic ); + --END COMPONENT; + + --COMPONENT OBUF_F_12 port ( O : out std_logic; + -- IO : inout std_logic; + -- I : in std_logic; + -- T : in std_logic ); + --END COMPONENT; + + --component OBUF_F_24 + --port ( + -- I : in std_logic; + -- O : out std_logic ); + --end component; + +BEGIN + +U_TRAIT : PROCESS(CLOCK, RESET, BC1, BC2, BDIR, REG_ADDR, DATA_IN) +BEGIN + + if (RESET = '1') then + WR <= '0'; + R0 <= "00000000"; + R1 <= "00000000"; + R2 <= "00000000"; + R3 <= "00000000"; + R4 <= "00000000"; + R5 <= "00000000"; + R6 <= "00000000"; + R7 <= "00000000"; + R8 <= "00000000"; + R9 <= "00000000"; + R10 <= "00000000"; + R11 <= "00000000"; + R12 <= "00000000"; + R13 <= "00000000"; + IOA <= "00000000"; + IOB <= "00000000"; + DATA_OUT <= "00000000"; + RST_ENV <= '1'; + else + if rising_edge(CLOCK) then -- edge clock + -- READ FROM REGISTER + RST_ENV <= '0'; + if ((BDIR = '0') and (BC2 = '1') and (BC1 = '1')) then + CASE REG_ADDR is + WHEN "0000" => DATA_OUT <= R0; + WHEN "0001" => DATA_OUT <= R1; + WHEN "0010" => DATA_OUT <= R2; + WHEN "0011" => DATA_OUT <= R3; + WHEN "0100" => DATA_OUT <= R4; + WHEN "0101" => DATA_OUT <= R5; + WHEN "0110" => DATA_OUT <= R6; + WHEN "0111" => DATA_OUT <= R7; + WHEN "1000" => DATA_OUT <= R8; + WHEN "1001" => DATA_OUT <= R9; + WHEN "1010" => DATA_OUT <= R10; + WHEN "1011" => DATA_OUT <= R11; + WHEN "1100" => DATA_OUT <= R12; + WHEN "1101" => DATA_OUT <= R13; + WHEN "1110" => DATA_OUT <= IOA; + WHEN "1111" => DATA_OUT <= IOB; + WHEN OTHERS => NULL; + END CASE; + WR <= '0'; + else + DATA_OUT <= "00000000"; + WR <= '0'; + end if; + end if; + end if; + + -- LATCH WHAT REGISTER + if ((BDIR = '1') and (BC2 = '1') and (BC1 = '1')) then + REG_ADDR <= DATA_IN(3 downto 0); + WR <= '0'; + end if; + + -- WRITE TO REGISTER OR IOA/IOB + if ( (BDIR = '1') and (BC2 = '1') and (BC1 = '0')) then WR <= '1'; end if; + if ( (BDIR = '1') and (BC2 = '1') and (BC1 = '0') and (REG_ADDR = "0000") ) then R0 <= DATA_IN;end if; + if ( (BDIR = '1') and (BC2 = '1') and (BC1 = '0') and (REG_ADDR = "0001") ) then R1 <= DATA_IN;end if; + if ( (BDIR = '1') and (BC2 = '1') and (BC1 = '0') and (REG_ADDR = "0010") ) then R2 <= DATA_IN;end if; + if ( (BDIR = '1') and (BC2 = '1') and (BC1 = '0') and (REG_ADDR = "0011") ) then R3 <= DATA_IN;end if; + if ( (BDIR = '1') and (BC2 = '1') and (BC1 = '0') and (REG_ADDR = "0100") ) then R4 <= DATA_IN;end if; + if ( (BDIR = '1') and (BC2 = '1') and (BC1 = '0') and (REG_ADDR = "0101") ) then R5 <= DATA_IN;end if; + if ( (BDIR = '1') and (BC2 = '1') and (BC1 = '0') and (REG_ADDR = "0110") ) then R6 <= DATA_IN;end if; + if ( (BDIR = '1') and (BC2 = '1') and (BC1 = '0') and (REG_ADDR = "0111") ) then R7 <= DATA_IN;end if; + if ( (BDIR = '1') and (BC2 = '1') and (BC1 = '0') and (REG_ADDR = "1000") ) then R8 <= DATA_IN;end if; + if ( (BDIR = '1') and (BC2 = '1') and (BC1 = '0') and (REG_ADDR = "1001") ) then R9 <= DATA_IN;end if; + if ( (BDIR = '1') and (BC2 = '1') and (BC1 = '0') and (REG_ADDR = "1010") ) then R10 <= DATA_IN;end if; + if ( (BDIR = '1') and (BC2 = '1') and (BC1 = '0') and (REG_ADDR = "1011") ) then R11 <= DATA_IN;end if; + if ( (BDIR = '1') and (BC2 = '1') and (BC1 = '0') and (REG_ADDR = "1100") ) then R12 <= DATA_IN;end if; + if ( (BDIR = '1') and (BC2 = '1') and (BC1 = '0') and (REG_ADDR = "1101") ) then R13 <= DATA_IN; RST_ENV <= '1'; end if; + if ( (BDIR = '1') and (BC2 = '1') and (BC1 = '0') and (REG_ADDR = "1110") ) then IOA <= DATA_IN;end if; + if ( (BDIR = '1') and (BC2 = '1') and (BC1 = '0') and (REG_ADDR = "1111") ) then IOB <= DATA_IN;end if; + +end PROCESS; + +URA: PROCESS(REG_ADDR, RESET) +BEGIN + if (RESET = '1') then + BUS_CS <= "0000000000000000"; + else + case REG_ADDR is + when "0000" => BUS_CS <= "0000000000000001"; + when "0001" => BUS_CS <= "0000000000000010"; + when "0010" => BUS_CS <= "0000000000000100"; + when "0011" => BUS_CS <= "0000000000001000"; + when "0100" => BUS_CS <= "0000000000010000"; + when "0101" => BUS_CS <= "0000000000100000"; + when "0110" => BUS_CS <= "0000000001000000"; + when "0111" => BUS_CS <= "0000000010000000"; + when "1000" => BUS_CS <= "0000000100000000"; + when "1001" => BUS_CS <= "0000001000000000"; + when "1010" => BUS_CS <= "0000010000000000"; + when "1011" => BUS_CS <= "0000100000000000"; + when "1100" => BUS_CS <= "0001000000000000"; + when "1101" => BUS_CS <= "0010000000000000"; + when "1110" => BUS_CS <= "0100000000000000"; + when "1111" => BUS_CS <= "1000000000000000"; + when others => NULL; + end case; + end if; +END PROCESS; + + +-- Instantiation of sub_level modules +UCLK : GEN_CLK PORT MAP( CLK => CLOCK, + RST => RESET, + CLK_16 => CLK_16, + CLK_256 => CLK_256 + ); + +UTONE_A : TONE_GENERATOR PORT MAP( CLK => CLOCK, + --CLK_TONE => CLK_16, + RST => RESET, + WR => WR, + --CS_COARSE => BUS_CS(1), + --CS_FINE => BUS_CS(0), + DATA_COARSE => R1, + DATA_FINE => R0, + OUT_TONE => CLK_A); + +UTONE_B : TONE_GENERATOR PORT MAP( CLK => CLOCK, + --CLK_TONE => CLK_16, + RST => RESET, + WR => WR, + --CS_COARSE => BUS_CS(3), + --CS_FINE => BUS_CS(2), + DATA_COARSE => R3, + DATA_FINE => R2, + OUT_TONE => CLK_B); + +UTONE_C : TONE_GENERATOR PORT MAP( CLK => CLOCK, + --CLK_TONE => CLK_16, + RST => RESET, + WR => WR, + --CS_COARSE => BUS_CS(5), + --CS_FINE => BUS_CS(4), + DATA_COARSE => R5, + DATA_FINE => R4, + OUT_TONE => CLK_C); + +UTONE_NOISE : NOISE_GENERATOR PORT MAP( CLK => CLK_16, + RST => RESET, + --WR => WR, + --CS => BUS_CS(6), + DATA => R6(4 downto 0), + CLK_N => CLK_N); + +UTONE_ENV : TONE_GENERATOR PORT MAP( CLK => CLK_16, + --CLK => CLOCK, + --CLK_TONE => CLK_256, + RST => RESET, + WR => WR, + --CS_COARSE => BUS_CS(12), + --CS_FINE => BUS_CS(11), + DATA_COARSE => R12, + DATA_FINE => R11, + OUT_TONE => CLK_E); + +--UMIXER : MIXER PORT MAP ( CLK => CLOCK, +-- CS => BUS_CS(7), +-- RST => RESET, +-- WR => WR, +-- IN_A => CLK_A, +-- IN_B => CLK_B, +-- IN_C => CLK_C, +-- IN_NOISE => CLK_N, +-- DATA => R7(5 downto 0), +-- OUT_A => CLK_TONE_A, +-- OUT_B => CLK_TONE_B, +-- OUT_C => CLK_TONE_C); + +UGenEnv : GEN_ENV PORT MAP( CLK_ENV => CLK_E, + --CS => BUS_CS(13), + DATA => R13(3 downto 0), + RST_ENV => RST_ENV, + WR => WR, + OUT_DATA => OUT_AMPL_E); + +UManAmpA : MANAGE_AMPLITUDE PORT MAP ( CLK => CLOCK, + CLK_DAC => CLOCK_DAC, + CLK_TONE => CLK_A, --CLK_TONE_A, + CLK_NOISE => CLK_N, + RST => RESET, + CLK_TONE_ENA => R7(0), + CLK_NOISE_ENA => R7(3), + AMPLITUDE => R8(4 downto 0), + AMPLITUDE_E => OUT_AMPL_E(3 downto 0), + OUT_DAC => IAnalogA ); + +UManAmpB : MANAGE_AMPLITUDE PORT MAP ( CLK => CLOCK, + CLK_DAC => CLOCK_DAC, + CLK_TONE => CLK_B, --CLK_TONE_B, + CLK_NOISE => CLK_N, + RST => RESET, + CLK_TONE_ENA => R7(1), + CLK_NOISE_ENA => R7(4), + AMPLITUDE => R9(4 downto 0), + AMPLITUDE_E => OUT_AMPL_E(3 downto 0), + OUT_DAC => IAnalogB ); + +UManAmpC : MANAGE_AMPLITUDE PORT MAP ( CLK => CLOCK, + CLK_DAC => CLOCK_DAC, + CLK_TONE => CLK_C, --CLK_TONE_C, + CLK_NOISE => CLK_N, + RST => RESET, + CLK_TONE_ENA => R7(2), + CLK_NOISE_ENA => R7(5), + AMPLITUDE => R10(4 downto 0), + AMPLITUDE_E => OUT_AMPL_E(3 downto 0), + OUT_DAC => IAnalogC ); + + +--PAD_ANALOGA : OBUF_F_24 port map( I => IAnalogA, O => AnalogA); +--PAD_ANALOGB : OBUF_F_24 port map( I => IAnalogB, O => AnalogB); +--PAD_ANALOGC : OBUF_F_24 port map( I => IAnalogC, O => AnalogC); +AnalogA <= IAnalogA; +AnalogB <= IAnalogB; +AnalogC <= IAnalogC; + +end Behavioral; diff --git a/Oric Atmos_MiST/rtl/build_id.tcl b/Oric Atmos_MiST/rtl/build_id.tcl new file mode 100644 index 00000000..938515d8 --- /dev/null +++ b/Oric Atmos_MiST/rtl/build_id.tcl @@ -0,0 +1,35 @@ +# ================================================================================ +# +# Build ID Verilog Module Script +# Jeff Wiencrot - 8/1/2011 +# +# Generates a Verilog module that contains a timestamp, +# from the current build. These values are available from the build_date, build_time, +# physical_address, and host_name output ports of the build_id module in the build_id.v +# Verilog source file. +# +# ================================================================================ + +proc generateBuildID_Verilog {} { + + # Get the timestamp (see: http://www.altera.com/support/examples/tcl/tcl-date-time-stamp.html) + set buildDate [ clock format [ clock seconds ] -format %y%m%d ] + set buildTime [ clock format [ clock seconds ] -format %H%M%S ] + + # Create a Verilog file for output + set outputFileName "rtl/build_id.v" + set outputFile [open $outputFileName "w"] + + # Output the Verilog source + puts $outputFile "`define BUILD_DATE \"$buildDate\"" + puts $outputFile "`define BUILD_TIME \"$buildTime\"" + close $outputFile + + # Send confirmation message to the Messages window + post_message "Generated build identification Verilog module: [pwd]/$outputFileName" + post_message "Date: $buildDate" + post_message "Time: $buildTime" +} + +# Comment out this line to prevent the process from automatically executing when the file is sourced: +generateBuildID_Verilog \ No newline at end of file diff --git a/Oric Atmos_MiST/rtl/build_id.v b/Oric Atmos_MiST/rtl/build_id.v new file mode 100644 index 00000000..fa4fc18c --- /dev/null +++ b/Oric Atmos_MiST/rtl/build_id.v @@ -0,0 +1,2 @@ +`define BUILD_DATE "180506" +`define BUILD_TIME "191822" diff --git a/Oric Atmos_MiST/rtl/ctrlseq.vhd b/Oric Atmos_MiST/rtl/ctrlseq.vhd new file mode 100644 index 00000000..91ececfc --- /dev/null +++ b/Oric Atmos_MiST/rtl/ctrlseq.vhd @@ -0,0 +1,321 @@ +-- +-- ctrlseq.vhd +-- +-- Manage internal register +-- +-- Copyright (C)2001 - 2005 SEILEBOST +-- All rights reserved. +-- +-- $Id: ctrlseq.vhd, v0.01 2005/01/01 00:00:00 SEILEBOST $ +-- +-- TODO : +-- Remark : + + +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.std_logic_unsigned.all; +--use IEEE.std_logic_arith.all; +--use IEEE.numeric_std.all; + +entity ctrlseq is +port ( RESETn : in std_logic; -- RESET + CLK_24 : in std_logic; -- 2 x CLOCK SYSTEM + TXTHIR_DEC : in std_logic; -- TeXT HIRes DECode signal + isAttrib : in std_logic; -- Is a attribute byte + iRW : in std_logic; -- Read/Write signal from CPU + CSRAMn : in std_logic; -- SELECT RAM (Active low) + -- OUTPUTS + CLK_1_CPU : out std_logic; -- CLK for CPU + CLK_4 : out std_logic; -- CLK internal for VIA + CLK_6 : out std_logic; -- CLK internal for video generation + VA1L : out std_logic; -- VIDEO ADDRESS PHASE1 LATCH + VA1R : out std_logic; -- VIDEO ADDRESS PHASE1 ROW + VA1C : out std_logic; -- VIDEO ADDRESS PHASE1 COLUMN + VA2L : out std_logic; -- VIDEO ADDRESS PHASE2 LATCH + VA2R : out std_logic; -- VIDEO ADDRESS PHASE2 ROW + VA2C : out std_logic; -- VIDEO ADDRESS PHASE2 COLUMN + BAC : out std_logic; -- BUS ADDRESS COLUMN + BAL : out std_logic; -- BUS ADDRESS LATCH + RAS : out std_logic; -- RAS FOR DYNAMIC RAM + CAS : out std_logic; -- CAS FOR DYNAMIC RAM + MUX : out std_logic; -- MUX + oRW : out std_logic; -- Output Read/Write + ATTRIB_DEC : out std_logic; -- Decode attribute + LD_REG_0 : out std_logic; -- Initialization of video register + LD_REG : out std_logic; -- Load data into video register + LDFROMBUS : out std_logic; -- Load data from data bus + DATABUS_EN : out std_logic; -- Enable data bus +-- ajout du 09/02/09 + BAOE : out std_logic; -- Output enable for ram/rom +-- ajout du 03/04/09 + SRAM_CE : out std_logic; -- Chip select enable for SRAM + SRAM_OE : out std_logic; -- Ouput enable for SRAM + SRAM_WE : out std_logic; -- Write enable for SRAM =1 for a read cycle + LATCH_SRAM : out std_logic; -- Latch data from SRAM for cpu +-- FOR DEBUG/TESTBENCH + c0_out : out std_logic; + c1_out : out std_logic; + c2_out : out std_logic; + c3_out : out std_logic; + c4_out : out std_logic; + c5_out : out std_logic; + c6_out : out std_logic; + c7_out : out std_logic; + CLK_12 : out std_logic; + TB_CPT : out std_logic_vector(4 downto 0) + ); +end entity ctrlseq; + +architecture ctrlseq_arch of ctrlseq is + +signal lCPT_GEN : std_logic_vector(4 downto 0); -- counter +signal lstate : std_logic_vector(23 downto 0); -- states +signal lreload : std_logic; -- to reload null value to lCPT_GEN +signal lld_reg_p : std_logic; -- to load value into register for VIDEO + +signal c_ras : std_logic; -- RAS +signal c_cas : std_logic; -- CAS +signal c_mux : std_logic; -- MUX +signal c_clk_cpu : std_logic; -- CLK_CPU + +-- Phase P0 +signal c_0 : std_logic; -- state number 0 +signal c_1 : std_logic; -- state number 1 +signal c_2 : std_logic; -- state number 2 +signal c_3 : std_logic; -- state number 3 +signal c_4 : std_logic; -- state number 4 +signal c_5 : std_logic; -- state number 5 +signal c_6 : std_logic; -- state number 6 +signal c_7 : std_logic; -- state number 7 +-- Phase P1 +signal c_8 : std_logic; -- state number 8 +signal c_9 : std_logic; -- state number 9 +signal c_10 : std_logic; -- state number 10 +signal c_11 : std_logic; -- state number 11 +signal c_12 : std_logic; -- state number 12 +signal c_13 : std_logic; -- state number 13 +signal c_14 : std_logic; -- state number 14 +signal c_15 : std_logic; -- state number 15 +-- Phase P2 +signal c_16 : std_logic; -- state number 16 +signal c_17 : std_logic; -- state number 17 +signal c_18 : std_logic; -- state number 18 +signal c_19 : std_logic; -- state number 19 +signal c_20 : std_logic; -- state number 20 +signal c_21 : std_logic; -- state number 21 +signal c_22 : std_logic; -- state number 22 +signal c_23 : std_logic; -- state number 23 + +signal p_0 : std_logic; -- phase number 0 +signal p_1 : std_logic; -- phase number 1 +signal p_2 : std_logic; -- phase number 2 + +-- Constants for states +-- Phase P0 +constant cd_step_0 : integer :=0; +constant cd_step_1 : integer :=1; +constant cd_step_2 : integer :=2; +constant cd_step_3 : integer :=3; +constant cd_step_4 : integer :=4; +constant cd_step_5 : integer :=5; +constant cd_step_6 : integer :=6; +constant cd_step_7 : integer :=7; +-- Phase P1 +constant cd_step_8 : integer :=8; +constant cd_step_9 : integer :=9; +constant cd_step_10: integer :=10; +constant cd_step_11: integer :=11; +constant cd_step_12: integer :=12; +constant cd_step_13: integer :=13; +constant cd_step_14: integer :=14; +constant cd_step_15: integer :=15; +-- Phase P2 +constant cd_step_16: integer :=16; +constant cd_step_17: integer :=17; +constant cd_step_18: integer :=18; +constant cd_step_19: integer :=19; +constant cd_step_20: integer :=20; +constant cd_step_21: integer :=21; +constant cd_step_22: integer :=22; +constant cd_step_23: integer :=23; + +begin + +-- Increment counter +U_TB_CPT: PROCESS (RESETn, CLK_24) +BEGIN + if (RESETn = '0') then + lCPT_GEN <= "00000"; + elsif falling_edge(clk_24) then + if (lreload = '1') then + lCPT_GEN <= "00000"; + else + lCPT_GEN <= lCPT_GEN + "00001"; + end if; + end if; +END PROCESS; +lreload <= '1' when lCPT_GEN = "10111" else '0'; + +-- Manage states +U_SM_GEST: PROCESS(lCPT_GEN) +BEGIN + lstate <= "000000000000000000000000"; + case lCPT_GEN(4 downto 0) is + -- Phase P0 + when "00000" => lstate(cd_step_0) <= '1'; + when "00001" => lstate(cd_step_1) <= '1'; + when "00010" => lstate(cd_step_2) <= '1'; + when "00011" => lstate(cd_step_3) <= '1'; + when "00100" => lstate(cd_step_4) <= '1'; + when "00101" => lstate(cd_step_5) <= '1'; + when "00110" => lstate(cd_step_6) <= '1'; + when "00111" => lstate(cd_step_7) <= '1'; + -- Phase P1 + when "01000" => lstate(cd_step_8) <= '1'; + when "01001" => lstate(cd_step_9) <= '1'; + when "01010" => lstate(cd_step_10) <= '1'; + when "01011" => lstate(cd_step_11) <= '1'; + when "01100" => lstate(cd_step_12) <= '1'; + when "01101" => lstate(cd_step_13) <= '1'; + when "01110" => lstate(cd_step_14) <= '1'; + when "01111" => lstate(cd_step_15) <= '1'; + -- Phase P2 + when "10000" => lstate(cd_step_16) <= '1'; + when "10001" => lstate(cd_step_17) <= '1'; + when "10010" => lstate(cd_step_18) <= '1'; + when "10011" => lstate(cd_step_19) <= '1'; + when "10100" => lstate(cd_step_20) <= '1'; + when "10101" => lstate(cd_step_21) <= '1'; + when "10110" => lstate(cd_step_22) <= '1'; + when "10111" => lstate(cd_step_23) <= '1'; + when others => null; + end case; +END PROCESS; + +-- Assign states +-- Phase P0 +c_0 <= lstate(cd_step_0); +c_1 <= lstate(cd_step_1); +c_2 <= lstate(cd_step_2); +c_3 <= lstate(cd_step_3); +c_4 <= lstate(cd_step_4); +c_5 <= lstate(cd_step_5); +c_6 <= lstate(cd_step_6); +c_7 <= lstate(cd_step_7); +-- Phase P1 +c_8 <= lstate(cd_step_8); +c_9 <= lstate(cd_step_9); +c_10 <= lstate(cd_step_10); +c_11 <= lstate(cd_step_11); +c_12 <= lstate(cd_step_12); +c_13 <= lstate(cd_step_13); +c_14 <= lstate(cd_step_14); +c_15 <= lstate(cd_step_15); +-- Phase P2 +c_16 <= lstate(cd_step_16); +c_17 <= lstate(cd_step_17); +c_18 <= lstate(cd_step_18); +c_19 <= lstate(cd_step_19); +c_20 <= lstate(cd_step_20); +c_21 <= lstate(cd_step_21); +c_22 <= lstate(cd_step_22); +c_23 <= lstate(cd_step_23); + +-- Three phases +p_0 <= NOT lCPT_GEN(4) and NOT lCPT_GEN(3); -- 00 +p_1 <= NOT lCPT_GEN(4) and lCPT_GEN(3); -- 01 +p_2 <= lCPT_GEN(4) and NOT lCPT_GEN(3); -- 10 + +-------------------------------- +-- GENERATION DE LA CLOCK CPU -- +-------------------------------- +CLK_1_CPU <= p_2; + +--------------------------------- +-- GESTION DE LA RAM DYNAMIQUE -- +--------------------------------- +ras <= c_2 or c_3 or c_4 or c_5 or c_10 or c_11 or c_12 or c_13 or c_18 or c_19 or c_20 or c_20; +cas <= not (c_2 or c_3) and not (c_10 or c_11) and not (c_18 or c_19); +-- Mux permet de slectionner soit l'adresse haute d'une adresse cpu +-- soit l'adresse haute d'une adresse ula +mux <= '1' when ((c_1 = '1' or c_2 = '1') and p_2 = '1') else '0'; +oRW <= iRW and p_2; + +--------------------------------- +-- GESTION DE LA RAM STATIQUE -- +--------------------------------- +SRAM_OE <= not (c_2 or c_3) and not (c_10 or c_11) and not iRW ; +SRAM_CE <= not (c_1 or c_2 or c_3 or c_4) and not (c_9 or c_10 or c_11 or c_12) AND (CSRAMn or not (c_19 or c_20)); +SRAM_WE <= CSRAMn or not (c_19 or c_20) or irW; +LATCH_SRAM <= not c_4 and not c_12 and not c_20; -- le 19/12/2011 : Ajout not c_4 and c_12 à not c_20 + +--------------------- +-- GESTION INTERNE -- +--------------------- + +--Generation pour la gestion de l'adresse video 1 +VA1L <= '1' when (c_1='1') ELSE '0'; +--VA1R <= '1' when (c_1='1' or c_2='1') ELSE '0'; +VA1R <= '1' when (p_0='1') ELSE '0'; +VA1C <= '1' when (c_3='1' or c_4='1' or c_5='1') ELSE '0'; + +--Generation pour la gestion de l'adresse video 2 +VA2L <= '1' when (c_8='1') ELSE '0'; +--VA2R <= '1' when (c_8='1' or c_9='1') ELSE '0'; +VA2R <= '1' when (p_1='1') ELSE '0'; +VA2C <= '1' when (c_10='1' or c_11='1' or c_12='1') ELSE '0'; + +--Generation pour la gestion de l'adresse CPU +BAL <= '1' when (c_17='1' or c_18='1' or c_19='1' or c_20='1' or c_21='1' or c_22='1' or c_23='1') ELSE '0'; +--Modif. du 22/02/09 BAC <= '1' when ((c_3='1' or c_4='1' or c_5='1') and p_2='1' and CSRAMn='0') ELSE '0'; +BAC <= '1' when (c_19='1' or c_20='1' or c_21='1') ELSE '0'; +-- Ajout du 09/02/09 : output enable pour la rom/ram lors de l'adressage par le CPU +BAOE <= '1' when (c_18='1') ELSE '0'; + +--Pour la partie video +-- 27/07/09 lld_reg_p <= NOT isAttrib and c_7 and NOT TXTHIR_DEC; +-- 27/07/09 c_7 aurait du tre c_15 en ram dynamique +-- 27/07/09 en ram statique : +-- 11/11/09 Modif c_10 en c_11 +lld_reg_p <= not isAttrib and c_11 and NOT TXTHIR_DEC; -- Partie texte + +-- 04/12/09 ATTRIB_DEC <= '1' when (isAttrib='1' and c_10='1') ELSE '0'; +--ATTRIB_DEC <= '1' when (c_4='1') ELSE '0'; +-- 04/12/09 LD_REG_0 <= '1' when (isAttrib='1' and c_15='1') ELSE '0'; +--LD_REG_0 <= '1' when (isAttrib='1' and c_11='1' and TXTHIR_DEC = '0') ELSE '0'; +-- 05/12/09 LD_REG <= '1' when (lld_reg_p='1' or c_4='1') ELSE '0'; +--LD_REG <= '1' when (lld_reg_p='1' or (c_4='1' and TXTHIR_DEC = '0')) ELSE '0'; +--DATABUS_EN <= '1' when (lld_reg_p='1' or c_3='1') ELSE '0'; +--LDFROMBUS <= '1' when (c_16='1') ELSE '0'; + +-- 15/12/2009 : +ATTRIB_DEC <= '1' when (c_4='1') ELSE '0'; +DATABUS_EN <= '1' when (c_11='1' or c_3='1') ELSE '0'; +LD_REG_0 <= '1' when (isAttrib='1' and c_5='1') ELSE '0'; +LDFROMBUS <= '1' when ( (isAttrib='0' and c_12='1' and TXTHIR_DEC='0') + or (isAttrib='0' and c_5 ='1' and TXTHIR_DEC='1') + ) ELSE '0'; +LD_REG <= '1' when (c_15='1') ELSE '0'; + +-- for TEST BENCH +c0_OUT <= lstate(cd_step_0); +c1_OUT <= lstate(cd_step_1); +c2_OUT <= lstate(cd_step_2); +c3_OUT <= lstate(cd_step_3); +c4_OUT <= lstate(cd_step_4); +c5_OUT <= lstate(cd_step_5); +c6_OUT <= lstate(cd_step_6); +c7_OUT <= lstate(cd_step_7); +TB_CPT <= lCPT_GEN; +CLK_12 <= lCPT_GEN(0); + +-- for VIA 6522 +CLK_4 <= c_0 or c_1 or c_2 + or c_6 or c_7 or c_8 + or c_12 or c_13 or c_14 + or c_18 or c_19 or c_20; + +-- for Video Generation +CLK_6 <= c_0 or c_1 or c_4 or c_5 or c_8 or c_9 or c_12 or c_13 or c_16 or c_17 or c_20 or c_21; +end architecture ctrlseq_arch; diff --git a/Oric Atmos_MiST/rtl/ctrlseq_orig.vhd b/Oric Atmos_MiST/rtl/ctrlseq_orig.vhd new file mode 100644 index 00000000..add6b8c3 --- /dev/null +++ b/Oric Atmos_MiST/rtl/ctrlseq_orig.vhd @@ -0,0 +1,207 @@ +-- +-- ctrlseq.vhd +-- +-- Manage internal register +-- +-- Copyright (C)2001 - 2005 SEILEBOST +-- All rights reserved. +-- +-- $Id: ctrlseq.vhd, v0.01 2005/01/01 00:00:00 SEILEBOST $ +-- +-- TODO : +-- Remark : + +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.std_logic_unsigned.all; +--use IEEE.std_logic_arith.all; +--use IEEE.numeric_std.all; + +entity ctrlseq is +port ( RESETn : in std_logic; -- RESET + CLK_24 : in std_logic; -- 2 x CLOCK SYSTEM + TXTHIR_DEC : in std_logic; -- TeXT HIRes DECode signal + isAttrib : in std_logic; -- Is a attribute byte + iRW : in std_logic; -- Read/Write signal from CPU + CSRAMn : in std_logic; -- SELECT RAM (Active low) + -- OUTPUTS + CLK_1_CPU : out std_logic; -- CLK for CPU + CLK_4 : out std_logic; -- CLK interne for ram statique + VA1L : out std_logic; -- VIDEO ADDRESS PHASE1 LATCH + VA1R : out std_logic; -- VIDEO ADDRESS PHASE1 ROW + VA1C : out std_logic; -- VIDEO ADDRESS PHASE1 COLUMN + VA2L : out std_logic; -- VIDEO ADDRESS PHASE2 LATCH + VA2R : out std_logic; -- VIDEO ADDRESS PHASE2 ROW + VA2C : out std_logic; -- VIDEO ADDRESS PHASE2 COLUMN + BAC : out std_logic; -- BUS ADDRESS COLUMN + BAL : out std_logic; -- BUS ADDRESS LATCH + RAS : out std_logic; -- RAS FOR DYNAMIC RAM + CAS : out std_logic; -- CAS FOR DYNAMIC RAM + MUX : out std_logic; -- MUX + oRW : out std_logic; -- Output Read/Write + ATTRIB_DEC : out std_logic; -- Decode attribute + LD_REG_0 : out std_logic; -- Initialization of video register + LD_REG : out std_logic; -- Load data into video register + LDFROMBUS : out std_logic; -- Load data from data bus + DATABUS_EN : out std_logic; -- Enable data bus + -- ajout du 09/02/09 + BAOE : out std_logic; -- Output enable for ram/rom +-- FOR DEBUG/TESTBENCH + c0_out : out std_logic; + c1_out : out std_logic; + c2_out : out std_logic; + c3_out : out std_logic; + c4_out : out std_logic; + c5_out : out std_logic; + c6_out : out std_logic; + c7_out : out std_logic; + CLK_12 : out std_logic; + TB_CPT : out std_logic_vector(4 downto 0) + ); +end entity ctrlseq; + +architecture ctrlseq_arch of ctrlseq is + +signal lCPT_GEN : std_logic_vector(4 downto 0); -- counter +signal lstate : std_logic_vector(7 downto 0); -- states +signal lreload : std_logic; -- to reload null value to lCPT_GEN +signal lld_reg_p : std_logic; -- to load value into register for VIDEO + +signal c_ras : std_logic; -- RAS +signal c_cas : std_logic; -- CAS +signal c_mux : std_logic; -- MUX +signal c_clk_cpu : std_logic; -- CLK_CPU + +signal c_0 : std_logic; -- state number 0 +signal c_1 : std_logic; -- state number 1 +signal c_2 : std_logic; -- state number 2 +signal c_3 : std_logic; -- state number 3 +signal c_4 : std_logic; -- state number 4 +signal c_5 : std_logic; -- state number 5 +signal c_6 : std_logic; -- state number 6 +signal c_7 : std_logic; -- state number 7 + +signal p_0 : std_logic; -- phase number 0 +signal p_1 : std_logic; -- phase number 1 +signal p_2 : std_logic; -- phase number 2 + +-- Constants for states +constant cd_step_0 : integer :=0; +constant cd_step_1 : integer :=1; +constant cd_step_2 : integer :=2; +constant cd_step_3 : integer :=3; +constant cd_step_4 : integer :=4; +constant cd_step_5 : integer :=5; +constant cd_step_6 : integer :=6; +constant cd_step_7 : integer :=7; + +begin + +-- Increment counter +U_TB_CPT: PROCESS (RESETn, CLK_24) +BEGIN + if (RESETn = '0') then + lCPT_GEN <= "00000"; + elsif falling_edge(clk_24) then + if (lreload = '1') then + lCPT_GEN <= "00000"; + else + lCPT_GEN <= lCPT_GEN + "00001"; + end if; + end if; +END PROCESS; +lreload <= '1' when lCPT_GEN = "10111" else '0'; + +-- Manage states +U_SM_GEST: PROCESS(lCPT_GEN) +BEGIN + lstate <= "00000000"; + case lCPT_GEN(2 downto 0) is + when "000" => lstate(cd_step_0) <= '1'; + when "001" => lstate(cd_step_1) <= '1'; + when "010" => lstate(cd_step_2) <= '1'; + when "011" => lstate(cd_step_3) <= '1'; + when "100" => lstate(cd_step_4) <= '1'; + when "101" => lstate(cd_step_5) <= '1'; + when "110" => lstate(cd_step_6) <= '1'; + when "111" => lstate(cd_step_7) <= '1'; + when others => null; + end case; +END PROCESS; + +-- Assign states +c_0 <= lstate(cd_step_0); +c_1 <= lstate(cd_step_1); +c_2 <= lstate(cd_step_2); +c_3 <= lstate(cd_step_3); +c_4 <= lstate(cd_step_4); +c_5 <= lstate(cd_step_5); +c_6 <= lstate(cd_step_6); +c_7 <= lstate(cd_step_7); + +-- Three phases +p_0 <= NOT lCPT_GEN(4) and NOT lCPT_GEN(3); -- 00 +p_1 <= NOT lCPT_GEN(4) and lCPT_GEN(3); -- 01 +p_2 <= lCPT_GEN(4) and NOT lCPT_GEN(3); -- 10 + +-------------------------------- +-- GENERATION DE LA CLOCK CPU -- +-------------------------------- +CLK_1_CPU <= p_2; + +--------------------------------- +-- GESTION DE LA RAM DYNAMIQUE -- +--------------------------------- +ras <= c_2 or c_3 or c_4 or c_5; +cas <= not (c_2 or c_3) and (not p_2 or CSRAMn); +-- Mux permet de sélectionner soit l'adresse haute d'une adresse cpu +-- soit l'adresse haute d'une adresse ula +mux <= '1' when ((c_1 = '1' or c_2 = '1') and p_2 = '1') else '0'; +oRW <= iRW and p_2; + +--------------------- +-- GESTION INTERNE -- +--------------------- + +--Generation pour la gestion de l'adresse video 1 +VA1L <= '1' when (c_1='1' and p_0='1') ELSE '0'; +VA1R <= '1' when ((c_1='1' or c_2='1') and p_0='1') ELSE '0'; +VA1C <= '1' when ((c_3='1' or c_4='1' or c_5='1') and p_0='1') ELSE '0'; + +--Generation pour la gestion de l'adresse video 2 +VA2L <= '1' when (c_1='1' and p_1='1') ELSE '0'; +VA2R <= '1' when ((c_1='1' or c_2='1') and p_1='1') ELSE '0'; +VA2C <= '1' when ((c_3='1' or c_4='1' or c_5='1') and p_1='1') ELSE '0'; + +--Generation pour la gestion de l'adresse CPU +BAL <= '1' when (c_1='1' and p_2='1') ELSE '0'; +--Modif. du 22/02/09 BAC <= '1' when ((c_3='1' or c_4='1' or c_5='1') and p_2='1' and CSRAMn='0') ELSE '0'; +BAC <= '1' when ((c_3='1' or c_4='1' or c_5='1') and p_2='1') ELSE '0'; +-- Ajout du 09/02/09 : output enable pour la rom/ram lors de l'adressage par le CPU +BAOE <= '1' when (not(c_0='1' or c_1 ='1') and p_2='1') ELSE '0'; + +--Pour la partie video +lld_reg_p <= NOT isAttrib and (c_7 and p_1) and NOT TXTHIR_DEC; + +ATTRIB_DEC <= '1' when (isAttrib='1' and c_2='1' and p_1='1') ELSE '0'; +LD_REG_0 <= '1' when (isAttrib='1' and c_7='1' and p_1='1') ELSE '0'; +LD_REG <= '1' when (lld_reg_p='1' or (c_7='1' and p_0='1')) ELSE '0'; +DATABUS_EN <= '1' when (lld_reg_p='1' or (c_7='1' and p_0='1')) ELSE '0'; +LDFROMBUS <= '1' when (c_0='1' and p_2='1') ELSE '0'; + +-- for TEST BENCH +c0_OUT <= lstate(cd_step_0); +c1_OUT <= lstate(cd_step_1); +c2_OUT <= lstate(cd_step_2); +c3_OUT <= lstate(cd_step_3); +c4_OUT <= lstate(cd_step_4); +c5_OUT <= lstate(cd_step_5); +c6_OUT <= lstate(cd_step_6); +c7_OUT <= lstate(cd_step_7); +TB_CPT <= lCPT_GEN; +CLK_12 <= lCPT_GEN(0); + +-- for ram statique +CLK_4 <= c_6 or c_7; + +end architecture ctrlseq_arch; diff --git a/Oric Atmos_MiST/rtl/dac.vhd b/Oric Atmos_MiST/rtl/dac.vhd new file mode 100644 index 00000000..1af6b8c1 --- /dev/null +++ b/Oric Atmos_MiST/rtl/dac.vhd @@ -0,0 +1,65 @@ +-- +-- DAC.vhd +-- +-- Digital to analog convertor. +-- +-- Copyright (C)2001 SEILEBOST +-- All rights reserved. +-- +-- $Id: DAC.vhd, v0.2 2001/11/02 00:00:00 SEILEBOST $ +-- +-- from XAPP154.pdf & XAPP154.ZIP (XILINX APPLICATION) +-- +-- DAC 8 Bits ( method : sigma delta) +-- 2^N clock to convert with N = width of input +-- Ex : Bus 8 bits => 256 CLOCK master to convert an value. +-- Theorem Shannon : 2 x Fmax x 256 =< 16 MHz => Fmax = 31250 Hz +-- band of sound : 0 -> 20000 Hz : Ok !! + +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_ARITH.ALL; +use IEEE.STD_LOGIC_UNSIGNED.ALL; + +entity DAC is + Port ( CLK_DAC : in std_logic; + RST : in std_logic; + IN_DAC : in std_logic_vector(7 downto 0); + OUT_DAC : out std_logic ); +end DAC; + +architecture Behavioral of DAC is + +signal DeltaAdder : std_logic_vector(9 downto 0); +signal SigmaAdder : std_logic_vector(9 downto 0); +signal SigmaLatch : std_logic_vector(9 downto 0); +signal DeltaB : std_logic_vector(9 downto 0); + +begin + PROCESS(SigmaLatch, DeltaB) + BEGIN + DeltaB <= TRANSPORT ( SigmaLatch(9) & SigmaLatch(9) & "00000000"); + END PROCESS; + + PROCESS(IN_DAC, DeltaB, DeltaAdder) + BEGIN + DeltaAdder <= IN_DAC + DeltaB; + END PROCESS; + + PROCESS(DeltaAdder, SigmaLatch) + BEGIN + SigmaAdder <= DeltaAdder + SigmaLatch; + END PROCESS; + + PROCESS(CLK_DAC, RST) + BEGIN + if (RST = '1') then + SigmaLatch <= "0100000000"; + OUT_DAC <= '1'; + elsif (CLK_DAC'event and CLK_DAC = '1') then + SigmaLatch <= SigmaAdder; + OUT_DAC <= SigmaLatch(9); + end if; + END PROCESS; + +end Behavioral; diff --git a/Oric Atmos_MiST/rtl/gen_clk.vhd b/Oric Atmos_MiST/rtl/gen_clk.vhd new file mode 100644 index 00000000..5def2c8d --- /dev/null +++ b/Oric Atmos_MiST/rtl/gen_clk.vhd @@ -0,0 +1,44 @@ +-- +-- GEN_CLK.vhd +-- +-- GENERATOR of CLOCK. +-- +-- Copyright (C)2001 SEILEBOST +-- All rights reserved. +-- +-- $Id: GEN_CLK.vhd, v0.42 2002/01/03 00:00:00 SEILEBOST $ +-- +-- Generate secondary CLK from CLK_MASTER +-- CLK : Clock Master, 16 MHz +-- CLK_16 : for the tone generator, +-- CLK_256 : for the envelope generator + +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_ARITH.ALL; +use IEEE.STD_LOGIC_UNSIGNED.ALL; + +entity GEN_CLK is + Port ( CLK : in std_logic; + RST : in std_logic; + CLK_16 : out std_logic; + CLK_256 : out std_logic + ); +end GEN_CLK; + +architecture Behavioral of GEN_CLK is + +SIGNAL COUNT : std_logic_vector(7 downto 0); +begin + + PROCESS(CLK, RST) + BEGIN + if (RST = '1') then + COUNT <= (OTHERS => '0'); + elsif (CLK'event and CLK = '1') then + COUNT <= COUNT + 1; + CLK_16 <= COUNT(3); + CLK_256 <= COUNT(7); + end if; + END PROCESS; +end Behavioral; diff --git a/Oric Atmos_MiST/rtl/gen_env.vhd b/Oric Atmos_MiST/rtl/gen_env.vhd new file mode 100644 index 00000000..8fba2848 --- /dev/null +++ b/Oric Atmos_MiST/rtl/gen_env.vhd @@ -0,0 +1,111 @@ +-- +-- GEN_ENV.vhd +-- +-- GENERATOR of ENVELOPE. +-- +-- Copyright (C)2001-2010 SEILEBOST +-- All rights reserved. +-- +-- $Id: GEN_ENV.vhd, v0.50 2010/01/19 00:00:00 SEILEBOST $ +-- +-- NO BUGS +-- NEARLY TESTED +-- +-- Revision list +-- +-- v0.4 2001/11/21 : Modification +-- v0.46 2010/01/06 : Modification du générateur d'enveloppe +-- et de fréquence + +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_ARITH.ALL; +use IEEE.STD_LOGIC_UNSIGNED.ALL; + +entity gen_env is + Port ( CLK_ENV : in std_logic; + DATA : in std_logic_vector(3 downto 0); + RST_ENV : in std_logic; + WR : in std_logic; + --CS : in std_logic; + OUT_DATA : inout std_logic_vector(3 downto 0) ); +end gen_env; + +architecture Behavioral of gen_env is + +SIGNAL DIR : std_logic; -- direction +SIGNAL HOLD : std_logic; -- continue the sound + +begin + + PROCESS(CLK_ENV, RST_ENV, DATA, WR) + variable isMin : boolean; + variable isNearlyMin : boolean; + variable isNearlyMax : boolean; + variable isMax : boolean; + BEGIN + if (RST_ENV = '1') then -- Reset : to load the good value to generate enveloppe + if (DATA(2) = '0') then -- front initial : 0 = descendant et 1 = montant + OUT_DATA <= "1111"; + DIR <= '0'; + else + OUT_DATA <= "0000"; + DIR <= '1'; + end if; + HOLD <= '0'; + elsif (CLK_ENV'event and CLK_ENV = '1') then -- edge clock + -- To simply the written code ! + isMin := (OUT_DATA = "00000"); + isNearlyMin := (OUT_DATA = "00001"); + isNearlyMax := (OUT_DATA = "11110"); + isMax := (OUT_DATA = "11111"); + + -- To manage the next value + if (HOLD = '0') then + if (DIR = '0') then + OUT_DATA <= OUT_DATA - 1; + else + OUT_DATA <= OUT_DATA + 1; + end if; + end if; + + -- To generate the shape of envelope + if (DATA(3) = '0') then + if (DIR = '0') then + if (isNearlyMin) then + HOLD <= '1'; + end if; + else + if (isMax) then + HOLD <= '1'; -- Astuce : il faut que OUT_DATE = "0000" au prochain tick donc comparaison de la sortie sur "1111" car incrementation automatique + end if; + end if; + else + if (DATA(0) = '1') then -- hold = 1 + if (DIR = '0') then -- down + if (DATA(1) = '1') then -- alt + if isMin then HOLD <= '1'; end if; + else + if isNearlyMin then HOLD <= '1'; end if; + end if; + else + if (DATA(1) = '1') then -- alt + if isMax then HOLD <= '1'; end if; + else + if isNearlyMax then HOLD <= '1'; end if; + end if; + end if; + elsif (DATA(1) = '1') then -- alternate + if (DIR = '0') then -- down + if isNearlyMin then HOLD <= '1'; end if; + if isMin then HOLD <= '0'; DIR <= '1'; end if; + else + if isNearlyMax then HOLD <= '1'; end if; + if isMax then HOLD <= '0'; DIR <= '0'; end if; + end if; + end if; + end if; + end if; -- fin elsif + END PROCESS; + +end Behavioral; diff --git a/Oric Atmos_MiST/rtl/hq2x.sv b/Oric Atmos_MiST/rtl/hq2x.sv new file mode 100644 index 00000000..f17732b6 --- /dev/null +++ b/Oric Atmos_MiST/rtl/hq2x.sv @@ -0,0 +1,454 @@ +// +// +// Copyright (c) 2012-2013 Ludvig Strigeus +// Copyright (c) 2017 Sorgelig +// +// This program is GPL Licensed. See COPYING for the full license. +// +// +//////////////////////////////////////////////////////////////////////////////////////////////////////// + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on + +`define BITS_TO_FIT(N) ( \ + N <= 2 ? 0 : \ + N <= 4 ? 1 : \ + N <= 8 ? 2 : \ + N <= 16 ? 3 : \ + N <= 32 ? 4 : \ + N <= 64 ? 5 : \ + N <= 128 ? 6 : \ + N <= 256 ? 7 : \ + N <= 512 ? 8 : \ + N <=1024 ? 9 : 10 ) + +module hq2x_in #(parameter LENGTH, parameter DWIDTH) +( + input clk, + + input [AWIDTH:0] rdaddr, + input rdbuf, + output[DWIDTH:0] q, + + input [AWIDTH:0] wraddr, + input wrbuf, + input [DWIDTH:0] data, + input wren +); + + localparam AWIDTH = `BITS_TO_FIT(LENGTH); + wire [DWIDTH:0] out[2]; + assign q = out[rdbuf]; + + hq2x_buf #(.NUMWORDS(LENGTH), .AWIDTH(AWIDTH), .DWIDTH(DWIDTH)) buf0(clk,data,rdaddr,wraddr,wren && (wrbuf == 0),out[0]); + hq2x_buf #(.NUMWORDS(LENGTH), .AWIDTH(AWIDTH), .DWIDTH(DWIDTH)) buf1(clk,data,rdaddr,wraddr,wren && (wrbuf == 1),out[1]); +endmodule + + +module hq2x_out #(parameter LENGTH, parameter DWIDTH) +( + input clk, + + input [AWIDTH:0] rdaddr, + input [1:0] rdbuf, + output[DWIDTH:0] q, + + input [AWIDTH:0] wraddr, + input [1:0] wrbuf, + input [DWIDTH:0] data, + input wren +); + + localparam AWIDTH = `BITS_TO_FIT(LENGTH*2); + wire [DWIDTH:0] out[4]; + assign q = out[rdbuf]; + + hq2x_buf #(.NUMWORDS(LENGTH*2), .AWIDTH(AWIDTH), .DWIDTH(DWIDTH)) buf0(clk,data,rdaddr,wraddr,wren && (wrbuf == 0),out[0]); + hq2x_buf #(.NUMWORDS(LENGTH*2), .AWIDTH(AWIDTH), .DWIDTH(DWIDTH)) buf1(clk,data,rdaddr,wraddr,wren && (wrbuf == 1),out[1]); + hq2x_buf #(.NUMWORDS(LENGTH*2), .AWIDTH(AWIDTH), .DWIDTH(DWIDTH)) buf2(clk,data,rdaddr,wraddr,wren && (wrbuf == 2),out[2]); + hq2x_buf #(.NUMWORDS(LENGTH*2), .AWIDTH(AWIDTH), .DWIDTH(DWIDTH)) buf3(clk,data,rdaddr,wraddr,wren && (wrbuf == 3),out[3]); +endmodule + + +module hq2x_buf #(parameter NUMWORDS, parameter AWIDTH, parameter DWIDTH) +( + input clock, + input [DWIDTH:0] data, + input [AWIDTH:0] rdaddress, + input [AWIDTH:0] wraddress, + input wren, + output [DWIDTH:0] q +); + + altsyncram altsyncram_component ( + .address_a (wraddress), + .clock0 (clock), + .data_a (data), + .wren_a (wren), + .address_b (rdaddress), + .q_b(q), + .aclr0 (1'b0), + .aclr1 (1'b0), + .addressstall_a (1'b0), + .addressstall_b (1'b0), + .byteena_a (1'b1), + .byteena_b (1'b1), + .clock1 (1'b1), + .clocken0 (1'b1), + .clocken1 (1'b1), + .clocken2 (1'b1), + .clocken3 (1'b1), + .data_b ({(DWIDTH+1){1'b1}}), + .eccstatus (), + .q_a (), + .rden_a (1'b1), + .rden_b (1'b1), + .wren_b (1'b0)); + defparam + altsyncram_component.address_aclr_b = "NONE", + altsyncram_component.address_reg_b = "CLOCK0", + altsyncram_component.clock_enable_input_a = "BYPASS", + altsyncram_component.clock_enable_input_b = "BYPASS", + altsyncram_component.clock_enable_output_b = "BYPASS", + altsyncram_component.intended_device_family = "Cyclone III", + altsyncram_component.lpm_type = "altsyncram", + altsyncram_component.numwords_a = NUMWORDS, + altsyncram_component.numwords_b = NUMWORDS, + altsyncram_component.operation_mode = "DUAL_PORT", + altsyncram_component.outdata_aclr_b = "NONE", + altsyncram_component.outdata_reg_b = "UNREGISTERED", + altsyncram_component.power_up_uninitialized = "FALSE", + altsyncram_component.read_during_write_mode_mixed_ports = "DONT_CARE", + altsyncram_component.widthad_a = AWIDTH+1, + altsyncram_component.widthad_b = AWIDTH+1, + altsyncram_component.width_a = DWIDTH+1, + altsyncram_component.width_b = DWIDTH+1, + altsyncram_component.width_byteena_a = 1; + +endmodule + +//////////////////////////////////////////////////////////////////////////////////////////////////////// + +module DiffCheck +( + input [17:0] rgb1, + input [17:0] rgb2, + output result +); + + wire [5:0] r = rgb1[5:1] - rgb2[5:1]; + wire [5:0] g = rgb1[11:7] - rgb2[11:7]; + wire [5:0] b = rgb1[17:13] - rgb2[17:13]; + wire [6:0] t = $signed(r) + $signed(b); + wire [6:0] gx = {g[5], g}; + wire [7:0] y = $signed(t) + $signed(gx); + wire [6:0] u = $signed(r) - $signed(b); + wire [7:0] v = $signed({g, 1'b0}) - $signed(t); + + // if y is inside (-24..24) + wire y_inside = (y < 8'h18 || y >= 8'he8); + + // if u is inside (-4, 4) + wire u_inside = (u < 7'h4 || u >= 7'h7c); + + // if v is inside (-6, 6) + wire v_inside = (v < 8'h6 || v >= 8'hfA); + assign result = !(y_inside && u_inside && v_inside); +endmodule + +module InnerBlend +( + input [8:0] Op, + input [5:0] A, + input [5:0] B, + input [5:0] C, + output [5:0] O +); + + function [8:0] mul6x3; + input [5:0] op1; + input [2:0] op2; + begin + mul6x3 = 9'd0; + if(op2[0]) mul6x3 = mul6x3 + op1; + if(op2[1]) mul6x3 = mul6x3 + {op1, 1'b0}; + if(op2[2]) mul6x3 = mul6x3 + {op1, 2'b00}; + end + endfunction + + wire OpOnes = Op[4]; + wire [8:0] Amul = mul6x3(A, Op[7:5]); + wire [8:0] Bmul = mul6x3(B, {Op[3:2], 1'b0}); + wire [8:0] Cmul = mul6x3(C, {Op[1:0], 1'b0}); + wire [8:0] At = Amul; + wire [8:0] Bt = (OpOnes == 0) ? Bmul : {3'b0, B}; + wire [8:0] Ct = (OpOnes == 0) ? Cmul : {3'b0, C}; + wire [9:0] Res = {At, 1'b0} + Bt + Ct; + assign O = Op[8] ? A : Res[9:4]; +endmodule + +module Blend +( + input [5:0] rule, + input disable_hq2x, + input [17:0] E, + input [17:0] A, + input [17:0] B, + input [17:0] D, + input [17:0] F, + input [17:0] H, + output [17:0] Result +); + + reg [1:0] input_ctrl; + reg [8:0] op; + localparam BLEND0 = 9'b1_xxx_x_xx_xx; // 0: A + localparam BLEND1 = 9'b0_110_0_10_00; // 1: (A * 12 + B * 4) >> 4 + localparam BLEND2 = 9'b0_100_0_10_10; // 2: (A * 8 + B * 4 + C * 4) >> 4 + localparam BLEND3 = 9'b0_101_0_10_01; // 3: (A * 10 + B * 4 + C * 2) >> 4 + localparam BLEND4 = 9'b0_110_0_01_01; // 4: (A * 12 + B * 2 + C * 2) >> 4 + localparam BLEND5 = 9'b0_010_0_11_11; // 5: (A * 4 + (B + C) * 6) >> 4 + localparam BLEND6 = 9'b0_111_1_xx_xx; // 6: (A * 14 + B + C) >> 4 + localparam AB = 2'b00; + localparam AD = 2'b01; + localparam DB = 2'b10; + localparam BD = 2'b11; + wire is_diff; + DiffCheck diff_checker(rule[1] ? B : H, rule[0] ? D : F, is_diff); + + always @* begin + case({!is_diff, rule[5:2]}) + 1,17: {op, input_ctrl} = {BLEND1, AB}; + 2,18: {op, input_ctrl} = {BLEND1, DB}; + 3,19: {op, input_ctrl} = {BLEND1, BD}; + 4,20: {op, input_ctrl} = {BLEND2, DB}; + 5,21: {op, input_ctrl} = {BLEND2, AB}; + 6,22: {op, input_ctrl} = {BLEND2, AD}; + + 8: {op, input_ctrl} = {BLEND0, 2'bxx}; + 9: {op, input_ctrl} = {BLEND0, 2'bxx}; + 10: {op, input_ctrl} = {BLEND0, 2'bxx}; + 11: {op, input_ctrl} = {BLEND1, AB}; + 12: {op, input_ctrl} = {BLEND1, AB}; + 13: {op, input_ctrl} = {BLEND1, AB}; + 14: {op, input_ctrl} = {BLEND1, DB}; + 15: {op, input_ctrl} = {BLEND1, BD}; + + 24: {op, input_ctrl} = {BLEND2, DB}; + 25: {op, input_ctrl} = {BLEND5, DB}; + 26: {op, input_ctrl} = {BLEND6, DB}; + 27: {op, input_ctrl} = {BLEND2, DB}; + 28: {op, input_ctrl} = {BLEND4, DB}; + 29: {op, input_ctrl} = {BLEND5, DB}; + 30: {op, input_ctrl} = {BLEND3, BD}; + 31: {op, input_ctrl} = {BLEND3, DB}; + default: {op, input_ctrl} = 11'bx; + endcase + + // Setting op[8] effectively disables HQ2X because blend will always return E. + if (disable_hq2x) op[8] = 1; + end + + // Generate inputs to the inner blender. Valid combinations. + // 00: E A B + // 01: E A D + // 10: E D B + // 11: E B D + wire [17:0] Input1 = E; + wire [17:0] Input2 = !input_ctrl[1] ? A : + !input_ctrl[0] ? D : B; + + wire [17:0] Input3 = !input_ctrl[0] ? B : D; + InnerBlend inner_blend1(op, Input1[5:0], Input2[5:0], Input3[5:0], Result[5:0]); + InnerBlend inner_blend2(op, Input1[11:6], Input2[11:6], Input3[11:6], Result[11:6]); + InnerBlend inner_blend3(op, Input1[17:12], Input2[17:12], Input3[17:12], Result[17:12]); +endmodule + + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +module Hq2x #(parameter LENGTH, parameter HALF_DEPTH) +( + input clk, + input ce_x4, + input [DWIDTH:0] inputpixel, + input mono, + input disable_hq2x, + input reset_frame, + input reset_line, + input [1:0] read_y, + input [AWIDTH+1:0] read_x, + output [DWIDTH:0] outpixel +); + + +localparam AWIDTH = `BITS_TO_FIT(LENGTH); +localparam DWIDTH = HALF_DEPTH ? 8 : 17; + +wire [5:0] hqTable[256] = '{ + 19, 19, 26, 11, 19, 19, 26, 11, 23, 15, 47, 35, 23, 15, 55, 39, + 19, 19, 26, 58, 19, 19, 26, 58, 23, 15, 35, 35, 23, 15, 7, 35, + 19, 19, 26, 11, 19, 19, 26, 11, 23, 15, 55, 39, 23, 15, 51, 43, + 19, 19, 26, 58, 19, 19, 26, 58, 23, 15, 51, 35, 23, 15, 7, 43, + 19, 19, 26, 11, 19, 19, 26, 11, 23, 61, 35, 35, 23, 61, 51, 35, + 19, 19, 26, 11, 19, 19, 26, 11, 23, 15, 51, 35, 23, 15, 51, 35, + 19, 19, 26, 11, 19, 19, 26, 11, 23, 61, 7, 35, 23, 61, 7, 43, + 19, 19, 26, 11, 19, 19, 26, 58, 23, 15, 51, 35, 23, 61, 7, 43, + 19, 19, 26, 11, 19, 19, 26, 11, 23, 15, 47, 35, 23, 15, 55, 39, + 19, 19, 26, 11, 19, 19, 26, 11, 23, 15, 51, 35, 23, 15, 51, 35, + 19, 19, 26, 11, 19, 19, 26, 11, 23, 15, 55, 39, 23, 15, 51, 43, + 19, 19, 26, 11, 19, 19, 26, 11, 23, 15, 51, 39, 23, 15, 7, 43, + 19, 19, 26, 11, 19, 19, 26, 11, 23, 15, 51, 35, 23, 15, 51, 39, + 19, 19, 26, 11, 19, 19, 26, 11, 23, 15, 51, 35, 23, 15, 7, 35, + 19, 19, 26, 11, 19, 19, 26, 11, 23, 15, 51, 35, 23, 15, 7, 43, + 19, 19, 26, 11, 19, 19, 26, 11, 23, 15, 7, 35, 23, 15, 7, 43 +}; + +reg [17:0] Prev0, Prev1, Prev2, Curr0, Curr1, Next0, Next1, Next2; +reg [17:0] A, B, D, F, G, H; +reg [7:0] pattern, nextpatt; +reg [1:0] i; +reg [7:0] y; + +wire curbuf = y[0]; +reg prevbuf = 0; +wire iobuf = !curbuf; + +wire diff0, diff1; +DiffCheck diffcheck0(Curr1, (i == 0) ? Prev0 : (i == 1) ? Curr0 : (i == 2) ? Prev2 : Next1, diff0); +DiffCheck diffcheck1(Curr1, (i == 0) ? Prev1 : (i == 1) ? Next0 : (i == 2) ? Curr2 : Next2, diff1); + +wire [7:0] new_pattern = {diff1, diff0, pattern[7:2]}; + +wire [17:0] X = (i == 0) ? A : (i == 1) ? Prev1 : (i == 2) ? Next1 : G; +wire [17:0] blend_result; +Blend blender(hqTable[nextpatt], disable_hq2x, Curr0, X, B, D, F, H, blend_result); + +reg Curr2_addr1; +reg [AWIDTH:0] Curr2_addr2; +wire [17:0] Curr2 = HALF_DEPTH ? h2rgb(Curr2tmp) : Curr2tmp; +wire [DWIDTH:0] Curr2tmp; + +reg [AWIDTH:0] wrin_addr2; +reg [DWIDTH:0] wrpix; +reg wrin_en; + +function [17:0] h2rgb; + input [8:0] v; +begin + h2rgb = mono ? {v[5:3],v[2:0], v[5:3],v[2:0], v[5:3],v[2:0]} : {v[8:6],v[8:6],v[5:3],v[5:3],v[2:0],v[2:0]}; +end +endfunction + +function [8:0] rgb2h; + input [17:0] v; +begin + rgb2h = mono ? {3'b000, v[17:15], v[14:12]} : {v[17:15], v[11:9], v[5:3]}; +end +endfunction + +hq2x_in #(.LENGTH(LENGTH), .DWIDTH(DWIDTH)) hq2x_in +( + .clk(clk), + + .rdaddr(Curr2_addr2), + .rdbuf(Curr2_addr1), + .q(Curr2tmp), + + .wraddr(wrin_addr2), + .wrbuf(iobuf), + .data(wrpix), + .wren(wrin_en) +); + +reg [1:0] wrout_addr1; +reg [AWIDTH+1:0] wrout_addr2; +reg wrout_en; +reg [DWIDTH:0] wrdata; + +hq2x_out #(.LENGTH(LENGTH), .DWIDTH(DWIDTH)) hq2x_out +( + .clk(clk), + + .rdaddr(read_x), + .rdbuf(read_y), + .q(outpixel), + + .wraddr(wrout_addr2), + .wrbuf(wrout_addr1), + .data(wrdata), + .wren(wrout_en) +); + +always @(posedge clk) begin + reg [AWIDTH:0] offs; + reg old_reset_line; + reg old_reset_frame; + + wrout_en <= 0; + wrin_en <= 0; + + if(ce_x4) begin + + pattern <= new_pattern; + + if(~&offs) begin + if (i == 0) begin + Curr2_addr1 <= prevbuf; + Curr2_addr2 <= offs; + end + if (i == 1) begin + Prev2 <= Curr2; + Curr2_addr1 <= curbuf; + Curr2_addr2 <= offs; + end + if (i == 2) begin + Next2 <= HALF_DEPTH ? h2rgb(inputpixel) : inputpixel; + wrpix <= inputpixel; + wrin_addr2 <= offs; + wrin_en <= 1; + end + if (i == 3) begin + offs <= offs + 1'd1; + end + + if(HALF_DEPTH) wrdata <= rgb2h(blend_result); + else wrdata <= blend_result; + + wrout_addr1 <= {curbuf, i[1]}; + wrout_addr2 <= {offs, i[1]^i[0]}; + wrout_en <= 1; + end + + if(i==3) begin + nextpatt <= {new_pattern[7:6], new_pattern[3], new_pattern[5], new_pattern[2], new_pattern[4], new_pattern[1:0]}; + {A, G} <= {Prev0, Next0}; + {B, F, H, D} <= {Prev1, Curr2, Next1, Curr0}; + {Prev0, Prev1} <= {Prev1, Prev2}; + {Curr0, Curr1} <= {Curr1, Curr2}; + {Next0, Next1} <= {Next1, Next2}; + end else begin + nextpatt <= {nextpatt[5], nextpatt[3], nextpatt[0], nextpatt[6], nextpatt[1], nextpatt[7], nextpatt[4], nextpatt[2]}; + {B, F, H, D} <= {F, H, D, B}; + end + + i <= i + 1'b1; + if(old_reset_line && ~reset_line) begin + old_reset_frame <= reset_frame; + offs <= 0; + i <= 0; + y <= y + 1'd1; + prevbuf <= curbuf; + if(old_reset_frame & ~reset_frame) begin + y <= 0; + prevbuf <= 0; + end + end + + old_reset_line <= reset_line; + end +end + +endmodule // Hq2x diff --git a/Oric Atmos_MiST/rtl/iodecode.vhd b/Oric Atmos_MiST/rtl/iodecode.vhd new file mode 100644 index 00000000..9972721f --- /dev/null +++ b/Oric Atmos_MiST/rtl/iodecode.vhd @@ -0,0 +1,112 @@ +-- +-- iodecode.vhd +-- +-- Manage access for I/O, Ram and Rom +-- +-- Copyright (C)2001 - 2005 SEILEBOST +-- All rights reserved. +-- +-- $Id: iodecode.vhd, v0.10 2009/06/25 00:00:00 SEILEBOST $ +-- +-- TODO : +-- Remark : +-- 08/03/09 : Retour en arrière +Library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.numeric_STD.all; +--use IEEE.std_logic_unsigned.all; + +entity iodecode is +port ( RESETn : in std_logic; + CLK_1 : in std_logic; + ADDR : in std_logic_vector(15 downto 0); + ADDR_LE : in std_logic; + MAPn : in std_logic; + CSROMn : out std_logic; + CSRAMn : out std_logic; + CSIOn : out std_logic + ); +end entity iodecode; + +architecture iodecode_arch of iodecode is + +signal lCSROMn : std_logic; +signal lCSRAMn : std_logic; +signal lCSIOn : std_logic; +signal lADDR : std_logic_vector(15 downto 0); + +begin + +-- Latch BAP +u_laddr: PROCESS ( ADDR_LE, resetn ) +begin + if (resetn = '0') then + lADDR<= (OTHERS => '0'); + elsif rising_edge(ADDR_LE) then + lAddr<= Addr; + end if; +end process; + + +-- PAGE I/O : 0x300-0x3FF +-- lCSIOn <= '0' WHEN (lADDR(7 downto 0) = "00000011") AND (CLK_1 = '1') ELSE '1'; +lCSIOn <= '0' WHEN (ADDR(15 downto 8) = "00000011") AND (ADDR_LE = '1') ELSE '1'; +--p_CSION : process(CLK_1) +--begin +-- lCSIOn <= '1'; +-- if (rising_edge(CLK_1)) then +-- if (lADDR(7 downto 0) = "00000011") then +-- lCSION <= '0'; +-- end if; +-- end if; +--end process; + +-- PAGE ROM : 0xC000-0xFFFF +-- lCSROMn <= '0' WHEN (lADDR(7 downto 6) = "11" AND MAPn = '1' AND CLK_1 = '1') ELSE '1'; p_CSION : process(CLK_1) +lCSROMn <= '0' WHEN (ADDR(15 downto 14) = "11" AND MAPn = '1' AND ADDR_LE = '1') ELSE '1'; +--p_CSROMN : process(CLK_1) +--begin +-- lCSROMn <= '1'; +-- if (rising_edge(CLK_1)) then +-- if (lADDR(7 downto 6) = "11" AND MAPn = '1') then +-- lCSROMn <= '0'; +-- end if; +-- end if; +-- end process; + +-- PAGR RAM : le reste ... +-- lCSRAMn <= '0' WHEN -- Partie Ram shadow +-- (lADDR(7 downto 6) = "11" AND MAPn = '0' AND CLK_1 = '1') +-- OR +-- -- Partie Ram normale +-- ( (lADDR(7 downto 0) /= "00000011" and lADDR(7 downto 6) /= "11") +-- AND MAPn = '1' AND CLK_1 = '1') +-- ELSE '1'; +lCSRAMn <= '0' WHEN -- Partie Ram shadow + (ADDR(15 downto 14) = "11" AND MAPn = '0' AND ADDR_LE = '1') + OR + -- Partie Ram normale + (((ADDR(15 downto 8) /= "00000011") AND (ADDR(15 downto 14) /= "11")) AND MAPn = '1' AND ADDR_LE = '1') + ELSE '1'; + +--p_CSRAMN : process(CLK_1) +--begin +-- lCSRAMn <= '1'; +-- if (rising_edge(CLK_1)) then +-- if ((lADDR(7 downto 6) = "11" AND MAPn = '0') +-- OR ((lADDR(7 downto 0) /= "00000011" and lADDR(7 downto 6) /= "11") +-- AND MAPn = '1')) then +-- lCSRAMn <= '0'; +-- end if; +-- end if; +--end process; + +-- Assign output signal +CSROMn <= lCSROMn; +CSRAMn <= lCSRAMn; +CSIOn <= lCSIOn; + +end architecture iodecode_arch; + + + diff --git a/Oric Atmos_MiST/rtl/keyboard.vhd b/Oric Atmos_MiST/rtl/keyboard.vhd new file mode 100644 index 00000000..f313f1d7 --- /dev/null +++ b/Oric Atmos_MiST/rtl/keyboard.vhd @@ -0,0 +1,109 @@ +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_ARITH.ALL; +use IEEE.STD_LOGIC_UNSIGNED.ALL; + +entity keyboard is + port( + CLK : in std_logic; + RESET : in std_logic; + + PS2CLK : in std_logic; + PS2DATA : in std_logic; + + COL : in std_logic_vector(2 downto 0); + ROWbit : out std_logic_vector(7 downto 0) + ); +end keyboard; + +architecture arch of keyboard is + +-- Gestion du protocole sur PS/2 +component ps2key is + generic ( + FREQ : integer := 24 + ); + port( + CLK : in std_logic; + RESET : in std_logic; + + PS2CLK : in std_logic; + PS2DATA : in std_logic; + + BREAK : out std_logic; + EXTENDED : out std_logic; + CODE : out std_logic_vector(6 downto 0); + LATCH : out std_logic + ); +end component; + + +-- La matrice du clavier +component keymatrix is + port( + CLK : in std_logic; + wROW : in std_logic_vector(2 downto 0); + wCOL : in std_logic_vector(2 downto 0); + wVAL : in std_logic; + wEN : in std_logic; + WE : in std_logic; + + rCOL : in std_logic_vector(2 downto 0); + rROWbit : out std_logic_vector(7 downto 0) + ); +end component; + +signal MAT_wROW : std_logic_vector(2 downto 0); +signal MAT_wCOL : std_logic_vector(2 downto 0); +signal MAT_wVAL : std_logic; +signal MAT_WE : std_logic; +signal MAT_wEN : std_logic; + +signal ROM_A : std_logic_vector(7 downto 0); + +signal DISPLAY : std_logic_vector(15 downto 0); + + +begin + +PS2 : ps2key port map( + CLK => CLK, + RESET => RESET, + + PS2CLK => PS2CLK, + PS2DATA => PS2DATA, + + BREAK => MAT_wVAL, + EXTENDED => ROM_A(7), + CODE(0) => ROM_A(0), + CODE(1) => ROM_A(1), + CODE(2) => ROM_A(2), + CODE(3) => ROM_A(3), + CODE(4) => ROM_A(4), + CODE(5) => ROM_A(5), + CODE(6) => ROM_A(6), + + LATCH => MAT_WE +); + +ROM : entity work.keymap port map( + A => ROM_A, + ROW => MAT_wROW, + COL => MAT_wCOL, + clk_sys => CLK, + EN => MAT_wEN +); + +MAT : keymatrix port map( + CLK => CLK, + wROW => MAT_wROW, + wCOL => MAT_wCOL, + wVAL => MAT_wVAL, + wEN => MAT_wEN, + WE => MAT_WE, + + rCOL => COL, + rROWbit => ROWbit +); + +end arch; \ No newline at end of file diff --git a/Oric Atmos_MiST/rtl/keyboardX.vhd b/Oric Atmos_MiST/rtl/keyboardX.vhd new file mode 100644 index 00000000..014df377 --- /dev/null +++ b/Oric Atmos_MiST/rtl/keyboardX.vhd @@ -0,0 +1,30 @@ +library ieee; + use ieee.std_logic_1164.all; + use ieee.std_logic_unsigned.all; + use ieee.numeric_std.all; + +entity keyboardX is +port ( + CLK : in std_logic; + RESET : in std_logic; + PS2CLK : in std_logic; + PS2DATA : in std_logic_vector( 7 downto 0); + COL : in std_logic_vector(2 downto 0); + ROWbit : out std_logic_vector( 7 downto 0) +); +end; + +architecture RTL of keyboardX is + +begin + + CLKp: PROCESS ( CLK ) +begin + if (RESET = '0') then + COL<= (OTHERS => '0'); + ROWbit<= (OTHERS => '0'); + elsif rising_edge(CLK) then + --- + end if; +end process; +end RTL; \ No newline at end of file diff --git a/Oric Atmos_MiST/rtl/keymap.vhd b/Oric Atmos_MiST/rtl/keymap.vhd new file mode 100644 index 00000000..743eac40 --- /dev/null +++ b/Oric Atmos_MiST/rtl/keymap.vhd @@ -0,0 +1,180 @@ +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_ARITH.ALL; +use IEEE.STD_LOGIC_UNSIGNED.ALL; + +entity keymap is + port( + A : in std_logic_vector(7 downto 0); + clk_sys: in std_logic; + ROW : out std_logic_vector(2 downto 0); + COL : out std_logic_vector(2 downto 0); + EN : out std_logic + ); +end keymap; + +architecture arch of keymap is +begin + +ROM256X1_ROW2 : entity work.sprom + generic map + ( + init_file => "roms/key1.hex", + widthad_a => 8, + width_a => 1 + ) + port map + ( + clock => clk_sys, + address => A, + q(0) => ROW(2) + ); + +-- ROWS + +-- ROM256X1_ROW2 : ROM256X1 + -- generic map ( +-- INIT => X"00140800000000000000000000000000004000402E3400000000004E7C760000") + -- port map ( + -- q => ROW(2), -- ROM output +-- address => A +-- ); + +ROM256X1_ROW1 : entity work.sprom + generic map + ( + init_file => "roms/key2.hex", + widthad_a => 8, + width_a => 1 + ) + port map + ( + clock => clk_sys, + address => A, + q(0) => ROW(1) + ); + +-- ROM256X1_ROW1 : ROM256X1 +-- generic map ( +-- INIT => X"00340000000000000000000000000000000000002834763000146C7E68200000") +-- port map ( +-- q => ROW(1), -- ROM output +-- address => A +-- ); + +ROM256X1_ROW0 : entity work.sprom + generic map + ( + init_file => "roms/key3.hex", + widthad_a => 8, + width_a => 1 + ) + port map + ( + clock => clk_sys, + address => A, + q(0) => ROW(0) + ); + +-- ROM256X1_ROW0 : ROM256X1 +-- generic map ( +-- INIT => X"003008000000000000000000000000000040004004346C4A004A1C7A34400000") +-- port map ( +-- q => ROW(0), -- ROM output +-- address => A -- ROM address +-- ); + +-- COLUMNS + +ROM256X1_COL2 : entity work.sprom + generic map + ( + init_file => "roms/key4.hex", + widthad_a => 8, + width_a => 1 + ) + port map + ( + clock => clk_sys, + address => A, + q(0) => COL(2) + ); + +-- ROM256X1_COL2 : ROM256X1 +-- generic map ( +-- INIT => X"00340800000000000000000000000000000000400E302E3A5038021038060000") +-- port map ( +-- q => COL(2), -- ROM output +-- address => A -- ROM address[7] +-- ); + +ROM256X1_COL1 : entity work.sprom + generic map + ( + init_file => "roms/key5.hex", + widthad_a => 8, + width_a => 1 + ) + port map + ( + clock => clk_sys, + address => A, + q(0) => COL(1) + ); + +-- ROM256X1_COL1 : ROM256X1 +-- generic map ( +-- INIT => X"000000000000000000000000000000000000000026245C64447C00327C100000") +-- port map ( +-- q => COL(1), -- ROM output +-- address => A -- ROM address[7] +-- ); + +ROM256X1_COL0 : entity work.sprom + generic map + ( + init_file => "roms/key6.hex", + widthad_a => 8, + width_a => 1 + ) + port map + ( + clock => clk_sys, + address => A, + q(0) => COL(0) + ); + +-- ROM256X1_COL0 : ROM256X1 + -- generic map ( +-- INIT => X"00000000000000000000000000000000004000402E347C7C5800380800220000") +-- port map ( +-- q => COL(0), -- ROM output +-- address => A -- ROM address[7] + -- ); + +-- ENABLE + +ROM256X1_EN : entity work.sprom + generic map + ( + init_file => "roms/key7.hex", + widthad_a => 8, + width_a => 1 + ) + port map + ( + clock => clk_sys, + address => A, + q(0) => EN + ); + +-- ROM256X1_EN : ROM256X1 +-- generic map ( +-- INIT => X"00340800000000000000000000000000004000402E347E7E7C7E7E7E7C760000") +-- port map ( +-- q => EN, -- ROM output +-- address => A -- ROM address[7] +-- ); + +end arch; + diff --git a/Oric Atmos_MiST/rtl/keymatrix.vhd b/Oric Atmos_MiST/rtl/keymatrix.vhd new file mode 100644 index 00000000..d20f6610 --- /dev/null +++ b/Oric Atmos_MiST/rtl/keymatrix.vhd @@ -0,0 +1,68 @@ +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_ARITH.ALL; +use IEEE.STD_LOGIC_UNSIGNED.ALL; + +entity keymatrix is + port( + CLK : in std_logic; + wROW : in std_logic_vector(2 downto 0); + wCOL : in std_logic_vector(2 downto 0); + wVAL : in std_logic; + wEN : in std_logic; + WE : in std_logic; + + rCOL : in std_logic_vector(2 downto 0); + rROWbit : out std_logic_vector(7 downto 0) + ); +end keymatrix; + +architecture arch of keymatrix is +signal WEi : std_logic_vector(7 downto 0); + +-- inutilise +signal SPOi : std_logic_vector(7 downto 0); + +begin + +WEi(0) <= WE when wEN = '1' and wROW = "000" else '0'; +WEi(1) <= WE when wEN = '1' and wROW = "001" else '0'; +WEi(2) <= WE when wEN = '1' and wROW = "010" else '0'; +WEi(3) <= WE when wEN = '1' and wROW = "011" else '0'; +WEi(4) <= WE when wEN = '1' and wROW = "100" else '0'; +WEi(5) <= WE when wEN = '1' and wROW = "101" else '0'; +WEi(6) <= WE when wEN = '1' and wROW = "110" else '0'; +WEi(7) <= WE when wEN = '1' and wROW = "111" else '0'; + + +--ROWBit : for i in 0 to 7 generate +-- RAM16X1D_ROWBit : RAM16X1D +-- generic map ( +-- INIT => X"FFFF") +-- port map ( + +-- D => wVAL, -- Write 1-bit data input + +-- SPO => SPOi(i), -- R/W 1-bit data output for A0-A3 +-- A0 => wCOL(0), -- R/W address[0] input bit +-- A1 => wCOL(1), -- R/W address[1] input bit +-- A2 => wCOL(2), -- R/W address[2] input bit +-- A3 => '0', -- R/W ddress[3] input bit + + +-- DPO => rROWBit(i), -- Read-only 1-bit data output for DPRA +-- DPRA0 => rCOL(0), -- Read-only address[0] input bit +-- DPRA1 => rCOL(1), -- Read-only address[1] input bit +-- DPRA2 => rCOL(2), -- Read-only address[2] input bit +-- DPRA3 => '0', -- Read-only address[3] input bit + + + +-- WCLK => CLK, -- Write clock input + -- WE => WEi(i) -- Write enable input + -- ); +--end generate; + + +end arch; + diff --git a/Oric Atmos_MiST/rtl/m6522.vhd b/Oric Atmos_MiST/rtl/m6522.vhd new file mode 100644 index 00000000..e6d74237 --- /dev/null +++ b/Oric Atmos_MiST/rtl/m6522.vhd @@ -0,0 +1,886 @@ +-- +-- A simulation model of VIC20 hardware +-- Copyright (c) MikeJ - March 2003 +-- +-- All rights reserved +-- +-- Redistribution and use in source and synthezised forms, with or without +-- modification, are permitted provided that the following conditions are met: +-- +-- Redistributions of source code must retain the above copyright notice, +-- this list of conditions and the following disclaimer. +-- +-- Redistributions in synthesized form must reproduce the above copyright +-- notice, this list of conditions and the following disclaimer in the +-- documentation and/or other materials provided with the distribution. +-- +-- Neither the name of the author nor the names of other contributors may +-- be used to endorse or promote products derived from this software without +-- specific prior written permission. +-- +-- THIS CODE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +-- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +-- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +-- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE +-- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +-- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +-- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +-- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +-- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +-- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +-- POSSIBILITY OF SUCH DAMAGE. +-- +-- You are responsible for any legal issues arising from your use of this code. +-- +-- The latest version of this file can be found at: www.fpgaarcade.com +-- +-- Email vic20@fpgaarcade.com +-- +-- +-- Revision list +-- +-- version 002 fix from Mark McDougall, untested +-- version 001 initial release +-- not very sure about the shift register, documentation is a bit light. + +library ieee ; + use ieee.std_logic_1164.all ; + use ieee.std_logic_unsigned.all; + use ieee.numeric_std.all; + +entity M6522 is + port ( + + I_RS : in std_logic_vector(3 downto 0); + I_DATA : in std_logic_vector(7 downto 0); + O_DATA : out std_logic_vector(7 downto 0); + O_DATA_OE_L : out std_logic; + + I_RW_L : in std_logic; + I_CS1 : in std_logic; + I_CS2_L : in std_logic; + + O_IRQ_L : out std_logic; -- note, not open drain + -- port a + I_CA1 : in std_logic; + I_CA2 : in std_logic; + O_CA2 : out std_logic; + O_CA2_OE_L : out std_logic; + + I_PA : in std_logic_vector(7 downto 0); + O_PA : out std_logic_vector(7 downto 0); + O_PA_OE_L : out std_logic_vector(7 downto 0); + + -- port b + I_CB1 : in std_logic; + O_CB1 : out std_logic; + O_CB1_OE_L : out std_logic; + + I_CB2 : in std_logic; + O_CB2 : out std_logic; + O_CB2_OE_L : out std_logic; + + I_PB : in std_logic_vector(7 downto 0); + O_PB : out std_logic_vector(7 downto 0); + O_PB_OE_L : out std_logic_vector(7 downto 0); + + I_P2_H : in std_logic; -- high for phase 2 clock ____----__ + RESET_L : in std_logic; + ENA_4 : in std_logic; -- clk enable + CLK : in std_logic + ); +end; + +architecture RTL of M6522 is + + signal phase : std_logic_vector(1 downto 0); + signal p2_h_t1 : std_logic; + signal cs : std_logic; + + -- registers + signal r_ddra : std_logic_vector(7 downto 0); + signal r_ora : std_logic_vector(7 downto 0); + signal r_ira : std_logic_vector(7 downto 0); + + signal r_ddrb : std_logic_vector(7 downto 0); + signal r_orb : std_logic_vector(7 downto 0); + signal r_irb : std_logic_vector(7 downto 0); + + signal r_t1l_l : std_logic_vector(7 downto 0); + signal r_t1l_h : std_logic_vector(7 downto 0); + signal r_t2l_l : std_logic_vector(7 downto 0); + signal r_t2l_h : std_logic_vector(7 downto 0); -- not in real chip + signal r_sr : std_logic_vector(7 downto 0); + signal r_acr : std_logic_vector(7 downto 0); + signal r_pcr : std_logic_vector(7 downto 0); + signal r_ifr : std_logic_vector(7 downto 0); + signal r_ier : std_logic_vector(6 downto 0); + + signal sr_write_ena : boolean; + signal sr_read_ena : boolean; + signal ifr_write_ena : boolean; + signal ier_write_ena : boolean; + signal clear_irq : std_logic_vector(7 downto 0); + signal load_data : std_logic_vector(7 downto 0); + + -- timer 1 + signal t1c : std_logic_vector(15 downto 0); + signal t1c_active : boolean; + signal t1c_done : boolean; + signal t1_w_reset_int : boolean; + signal t1_r_reset_int : boolean; + signal t1_load_counter : boolean; + signal t1_reload_counter : boolean; + signal t1_toggle : std_logic; + signal t1_irq : std_logic := '0'; + + -- timer 2 + signal t2c : std_logic_vector(15 downto 0); + signal t2c_active : boolean; + signal t2c_done : boolean; + signal t2_pb6 : std_logic; + signal t2_pb6_t1 : std_logic; + signal t2_w_reset_int : boolean; + signal t2_r_reset_int : boolean; + signal t2_load_counter : boolean; + signal t2_reload_counter : boolean; + signal t2_irq : std_logic := '0'; + signal t2_sr_ena : boolean; + + -- shift reg + signal sr_cnt : std_logic_vector(3 downto 0); + signal sr_cb1_oe_l : std_logic; + signal sr_cb1_out : std_logic; + signal sr_drive_cb2 : std_logic; + signal sr_strobe : std_logic; + signal sr_strobe_t1 : std_logic; + signal sr_strobe_falling : boolean; + signal sr_strobe_rising : boolean; + signal sr_irq : std_logic; + signal sr_out : std_logic; + signal sr_off_delay : std_logic; + + -- io + signal w_orb_hs : std_logic; + signal w_ora_hs : std_logic; + signal r_irb_hs : std_logic; + signal r_ira_hs : std_logic; + + signal ca_hs_sr : std_logic; + signal ca_hs_pulse : std_logic; + signal cb_hs_sr : std_logic; + signal cb_hs_pulse : std_logic; + + signal cb1_in_mux : std_logic; + signal ca1_ip_reg : std_logic; + signal cb1_ip_reg : std_logic; + signal ca1_int : boolean; + signal cb1_int : boolean; + signal ca1_irq : std_logic; + signal cb1_irq : std_logic; + + signal ca2_ip_reg : std_logic; + signal cb2_ip_reg : std_logic; + signal ca2_int : boolean; + signal cb2_int : boolean; + signal ca2_irq : std_logic; + signal cb2_irq : std_logic; + + signal final_irq : std_logic; +begin + + p_phase : process + begin + -- internal clock phase + wait until rising_edge(CLK); + if (ENA_4 = '1') then + p2_h_t1 <= I_P2_H; + if (p2_h_t1 = '0') and (I_P2_H = '1') then + phase <= "11"; + else + phase <= phase + "1"; + end if; + end if; + end process; + + p_cs : process(I_CS1, I_CS2_L, I_P2_H) + begin + cs <= '0'; + if (I_CS1 = '1') and (I_CS2_L = '0') and (I_P2_H = '1') then + cs <= '1'; + end if; + end process; + + -- peripheral control reg (pcr) + -- 0 ca1 interrupt control (0 +ve edge, 1 -ve edge) + -- 3..1 ca2 operation + -- 000 input -ve edge + -- 001 independend interrupt input -ve edge + -- 010 input +ve edge + -- 011 independend interrupt input +ve edge + -- 100 handshake output + -- 101 pulse output + -- 110 low output + -- 111 high output + -- 7..4 as 3..0 for cb1,cb2 + + -- auxiliary control reg (acr) + -- 0 input latch PA (0 disable, 1 enable) + -- 1 input latch PB (0 disable, 1 enable) + -- 4..2 shift reg control + -- 000 disable + -- 001 shift in using t2 + -- 010 shift in using o2 + -- 011 shift in using ext clk + -- 100 shift out free running t2 rate + -- 101 shift out using t2 + -- 101 shift out using o2 + -- 101 shift out using ext clk + -- 5 t2 timer control (0 timed interrupt, 1 count down with pulses on pb6) + -- 7..6 t1 timer control + -- 00 timed interrupt each time t1 is loaded pb7 disable + -- 01 continuous interrupts pb7 disable + -- 00 timed interrupt each time t1 is loaded pb7 one shot output + -- 01 continuous interrupts pb7 square wave output + -- + + p_write_reg_reset : process(RESET_L, CLK) + begin + if (RESET_L = '0') then + r_ora <= x"00"; r_orb <= x"00"; + r_ddra <= x"00"; r_ddrb <= x"00"; + r_acr <= x"00"; r_pcr <= x"00"; + + w_orb_hs <= '0'; + w_ora_hs <= '0'; + elsif rising_edge(CLK) then + if (ENA_4 = '1') then + w_orb_hs <= '0'; + w_ora_hs <= '0'; + if (cs = '1') and (I_RW_L = '0') then + case I_RS is + when x"0" => r_orb <= I_DATA; w_orb_hs <= '1'; + when x"1" => r_ora <= I_DATA; w_ora_hs <= '1'; + when x"2" => r_ddrb <= I_DATA; + when x"3" => r_ddra <= I_DATA; + + when x"B" => r_acr <= I_DATA; + when x"C" => r_pcr <= I_DATA; + when x"F" => r_ora <= I_DATA; + + when others => null; + end case; + end if; + + if (r_acr(7) = '1') and (t1_toggle = '1') then + r_orb(7) <= not r_orb(7); -- toggle + end if; + end if; + end if; + end process; + + p_write_reg : process + begin + wait until rising_edge(CLK); + if (ENA_4 = '1') then + t1_w_reset_int <= false; + t1_load_counter <= false; + + t2_w_reset_int <= false; + t2_load_counter <= false; + + load_data <= x"00"; + sr_write_ena <= false; + ifr_write_ena <= false; + ier_write_ena <= false; + + if (cs = '1') and (I_RW_L = '0') then + load_data <= I_DATA; + case I_RS is + when x"4" => r_t1l_l <= I_DATA; + when x"5" => r_t1l_h <= I_DATA; t1_w_reset_int <= true; + t1_load_counter <= true; + + when x"6" => r_t1l_l <= I_DATA; + when x"7" => r_t1l_h <= I_DATA; t1_w_reset_int <= true; + + when x"8" => r_t2l_l <= I_DATA; + when x"9" => r_t2l_h <= I_DATA; t2_w_reset_int <= true; + t2_load_counter <= true; + + when x"A" => sr_write_ena <= true; + when x"D" => ifr_write_ena <= true; + when x"E" => ier_write_ena <= true; + + when others => null; + end case; + end if; + end if; + end process; + + p_oe : process(cs, I_RW_L) + begin + O_DATA_OE_L <= '1'; + if (cs = '1') and (I_RW_L = '1') then + O_DATA_OE_L <= '0'; + end if; + end process; + + p_read : process(cs, I_RW_L, I_RS, r_irb, r_ira, r_ddrb, r_ddra, t1c, r_t1l_l, + r_t1l_h, t2c, r_sr, r_acr, r_pcr, r_ifr, r_ier, r_orb) + begin + t1_r_reset_int <= false; + t2_r_reset_int <= false; + sr_read_ena <= false; + r_irb_hs <= '0'; + r_ira_hs <= '0'; + O_DATA <= x"00"; -- default + if (cs = '1') and (I_RW_L = '1') then + case I_RS is + --when x"0" => O_DATA <= r_irb; r_irb_hs <= '1'; + -- fix from Mark McDougall, untested + when x"0" => O_DATA <= (r_irb and not r_ddrb) or (r_orb and r_ddrb); r_irb_hs <= '1'; + when x"1" => O_DATA <= r_ira; r_ira_hs <= '1'; + when x"2" => O_DATA <= r_ddrb; + when x"3" => O_DATA <= r_ddra; + when x"4" => O_DATA <= t1c( 7 downto 0); t1_r_reset_int <= true; + when x"5" => O_DATA <= t1c(15 downto 8); + when x"6" => O_DATA <= r_t1l_l; + when x"7" => O_DATA <= r_t1l_h; + when x"8" => O_DATA <= t2c( 7 downto 0); t2_r_reset_int <= true; + when x"9" => O_DATA <= t2c(15 downto 8); + when x"A" => O_DATA <= r_sr; sr_read_ena <= true; + when x"B" => O_DATA <= r_acr; + when x"C" => O_DATA <= r_pcr; + when x"D" => O_DATA <= r_ifr; + when x"E" => O_DATA <= ('0' & r_ier); + when x"F" => O_DATA <= r_ira; + when others => null; + end case; + end if; + + end process; + -- + -- IO + -- + p_ca1_cb1_sel : process(sr_cb1_oe_l, sr_cb1_out, I_CB1) + begin + -- if the shift register is enabled, cb1 may be an output + -- in this case, we should listen to the CB1_OUT for the interrupt + if (sr_cb1_oe_l = '1') then + cb1_in_mux <= I_CB1; + else + cb1_in_mux <= sr_cb1_out; + end if; + end process; + + p_ca1_cb1_int : process(r_pcr, ca1_ip_reg, I_CA1, cb1_ip_reg, cb1_in_mux) + begin + if (r_pcr(0) = '0') then -- ca1 control + -- negative edge + ca1_int <= (ca1_ip_reg = '1') and (I_CA1 = '0'); + else + -- positive edge + ca1_int <= (ca1_ip_reg = '0') and (I_CA1 = '1'); + end if; + + if (r_pcr(4) = '0') then -- cb1 control + -- negative edge + cb1_int <= (cb1_ip_reg = '1') and (cb1_in_mux = '0'); + else + -- positive edge + cb1_int <= (cb1_ip_reg = '0') and (cb1_in_mux = '1'); + end if; + end process; + + p_ca2_cb2_int : process(r_pcr, ca2_ip_reg, I_CA2, cb2_ip_reg, I_CB2) + begin + ca2_int <= false; + if (r_pcr(3) = '0') then -- ca2 input + if (r_pcr(2) = '0') then -- ca2 edge + -- negative edge + ca2_int <= (ca2_ip_reg = '1') and (I_CA2 = '0'); + else + -- positive edge + ca2_int <= (ca2_ip_reg = '0') and (I_CA2 = '1'); + end if; + end if; + + cb2_int <= false; + if (r_pcr(7) = '0') then -- cb2 input + if (r_pcr(6) = '0') then -- cb2 edge + -- negative edge + cb2_int <= (cb2_ip_reg = '1') and (I_CB2 = '0'); + else + -- positive edge + cb2_int <= (cb2_ip_reg = '0') and (I_CB2 = '1'); + end if; + end if; + end process; + + p_ca2_cb2 : process(RESET_L, CLK) + begin + if (RESET_L = '0') then + O_CA2 <= '0'; + O_CA2_OE_L <= '1'; + O_CB2 <= '0'; + O_CB2_OE_L <= '1'; + + ca_hs_sr <= '0'; + ca_hs_pulse <= '0'; + cb_hs_sr <= '0'; + cb_hs_pulse <= '0'; + elsif rising_edge(CLK) then + if (ENA_4 = '1') then + -- ca + if (phase = "00") and ((w_ora_hs = '1') or (r_ira_hs = '1')) then + ca_hs_sr <= '1'; + elsif ca1_int then + ca_hs_sr <= '0'; + end if; + + if (phase = "00") then + ca_hs_pulse <= w_ora_hs or r_ira_hs; + end if; + + O_CA2_OE_L <= not r_pcr(3); -- ca2 output + case r_pcr(3 downto 1) is + when "000" => O_CA2 <= '0'; -- input + when "001" => O_CA2 <= '0'; -- input + when "010" => O_CA2 <= '0'; -- input + when "011" => O_CA2 <= '0'; -- input + when "100" => O_CA2 <= not (ca_hs_sr); -- handshake + when "101" => O_CA2 <= not (ca_hs_pulse); -- pulse + when "110" => O_CA2 <= '0'; -- low + when "111" => O_CA2 <= '1'; -- high + when others => null; + end case; + + -- cb + if (phase = "00") and (w_orb_hs = '1') then + cb_hs_sr <= '1'; + elsif cb1_int then + cb_hs_sr <= '0'; + end if; + + if (phase = "00") then + cb_hs_pulse <= w_orb_hs; + end if; + + O_CB2_OE_L <= not (r_pcr(7) or sr_drive_cb2); -- cb2 output or serial + if (sr_drive_cb2 = '1') then -- serial output + O_CB2 <= sr_out; + else + case r_pcr(7 downto 5) is + when "000" => O_CB2 <= '0'; -- input + when "001" => O_CB2 <= '0'; -- input + when "010" => O_CB2 <= '0'; -- input + when "011" => O_CB2 <= '0'; -- input + when "100" => O_CB2 <= not (cb_hs_sr); -- handshake + when "101" => O_CB2 <= not (cb_hs_pulse); -- pulse + when "110" => O_CB2 <= '0'; -- low + when "111" => O_CB2 <= '1'; -- high + when others => null; + end case; + end if; + end if; + end if; + end process; + O_CB1 <= sr_cb1_out; + O_CB1_OE_L <= sr_cb1_oe_l; + + p_ca_cb_irq : process(RESET_L, CLK) + begin + if (RESET_L = '0') then + ca1_irq <= '0'; + ca2_irq <= '0'; + cb1_irq <= '0'; + cb2_irq <= '0'; + elsif rising_edge(CLK) then + if (ENA_4 = '1') then + -- not pretty + if ca1_int then + ca1_irq <= '1'; + elsif (r_ira_hs = '1') or (w_ora_hs = '1') or (clear_irq(1) = '1') then + ca1_irq <= '0'; + end if; + + if ca2_int then + ca2_irq <= '1'; + else + if (((r_ira_hs = '1') or (w_ora_hs = '1')) and (r_pcr(1) = '0')) or + (clear_irq(0) = '1') then + ca2_irq <= '0'; + end if; + end if; + + if cb1_int then + cb1_irq <= '1'; + elsif (r_irb_hs = '1') or (w_orb_hs = '1') or (clear_irq(4) = '1') then + cb1_irq <= '0'; + end if; + + if cb2_int then + cb2_irq <= '1'; + else + if (((r_irb_hs = '1') or (w_orb_hs = '1')) and (r_pcr(5) = '0')) or + (clear_irq(3) = '1') then + cb2_irq <= '0'; + end if; + end if; + end if; + end if; + end process; + + p_input_reg : process(RESET_L, CLK) + begin + if (RESET_L = '0') then + ca1_ip_reg <= '0'; + cb1_ip_reg <= '0'; + + ca2_ip_reg <= '0'; + cb2_ip_reg <= '0'; + + r_ira <= x"00"; + r_irb <= x"00"; + + elsif rising_edge(CLK) then + if (ENA_4 = '1') then + -- we have a fast clock, so we can have input registers + ca1_ip_reg <= I_CA1; + cb1_ip_reg <= cb1_in_mux; + + ca2_ip_reg <= I_CA2; + cb2_ip_reg <= I_CB2; + + if (r_acr(0) = '0') then + r_ira <= I_PA; + else -- enable latching + if ca1_int then + r_ira <= I_PA; + end if; + end if; + + if (r_acr(1) = '0') then + r_irb <= I_PB; + else -- enable latching + if cb1_int then + r_irb <= I_PB; + end if; + end if; + end if; + end if; + end process; + + + p_buffers : process(r_ddra, r_ora, r_ddrb, r_acr, r_orb) + begin + -- data direction reg (ddr) 0 = input, 1 = output + O_PA <= r_ora; + O_PA_OE_L <= not r_ddra; + + if (r_acr(7) = '1') then -- not clear if r_ddrb(7) must be 1 as well + O_PB_OE_L(7) <= '0'; -- an output if under t1 control + else + O_PB_OE_L(7) <= not (r_ddrb(7)); + end if; + + O_PB_OE_L(6 downto 0) <= not r_ddrb(6 downto 0); + O_PB <= r_orb; + + end process; + -- + -- Timer 1 + -- + p_timer1_done : process + variable done : boolean; + begin + wait until rising_edge(CLK); + if (ENA_4 = '1') then + done := (t1c = x"0000"); + t1c_done <= done and (phase = "11"); + if (phase = "11") then + t1_reload_counter <= done and (r_acr(6) = '1'); + end if; + end if; + end process; + + p_timer1 : process + begin + wait until rising_edge(CLK); + if (ENA_4 = '1') then + if t1_load_counter or (t1_reload_counter and phase = "11") then + t1c( 7 downto 0) <= r_t1l_l; + t1c(15 downto 8) <= r_t1l_h; + elsif (phase="11") then + t1c <= t1c - "1"; + end if; + + if t1_load_counter or t1_reload_counter then + t1c_active <= true; + elsif t1c_done then + t1c_active <= false; + end if; + + t1_toggle <= '0'; + if t1c_active and t1c_done then + t1_toggle <= '1'; + t1_irq <= '1'; + elsif t1_w_reset_int or t1_r_reset_int or (clear_irq(6) = '1') then + t1_irq <= '0'; + end if; + end if; + end process; + -- + -- Timer2 + -- + p_timer2_pb6_input : process + begin + wait until rising_edge(CLK); + if (ENA_4 = '1') then + if (phase = "01") then -- leading edge p2_h + t2_pb6 <= I_PB(6); + t2_pb6_t1 <= t2_pb6; + end if; + end if; + end process; + + p_timer2_done : process + variable done : boolean; + begin + wait until rising_edge(CLK); + if (ENA_4 = '1') then + done := (t2c = x"0000"); + t2c_done <= done and (phase = "11"); + if (phase = "11") then + t2_reload_counter <= done; + end if; + end if; + end process; + + p_timer2 : process + variable ena : boolean; + begin + wait until rising_edge(CLK); + if (ENA_4 = '1') then + if (r_acr(5) = '0') then + ena := true; + else + ena := (t2_pb6_t1 = '1') and (t2_pb6 = '0'); -- falling edge + end if; + + if t2_load_counter or (t2_reload_counter and phase = "11") then + -- not sure if t2c_reload should be here. Does timer2 just continue to + -- count down, or is it reloaded ? Reloaded makes more sense if using + -- it to generate a clock for the shift register. + t2c( 7 downto 0) <= r_t2l_l; + t2c(15 downto 8) <= r_t2l_h; + else + if (phase="11") and ena then -- or count mode + t2c <= t2c - "1"; + end if; + end if; + + t2_sr_ena <= (t2c(7 downto 0) = x"00") and (phase = "11"); + + if t2_load_counter then + t2c_active <= true; + elsif t2c_done then + t2c_active <= false; + end if; + + + if t2c_active and t2c_done then + t2_irq <= '1'; + elsif t2_w_reset_int or t2_r_reset_int or (clear_irq(5) = '1') then + t2_irq <= '0'; + end if; + end if; + end process; + -- + -- Shift Register + -- + p_sr : process(RESET_L, CLK) + variable dir_out : std_logic; + variable ena : std_logic; + variable cb1_op : std_logic; + variable cb1_ip : std_logic; + variable use_t2 : std_logic; + variable free_run : std_logic; + variable sr_count_ena : boolean; + begin + if (RESET_L = '0') then + r_sr <= x"00"; + sr_drive_cb2 <= '0'; + sr_cb1_oe_l <= '1'; + sr_cb1_out <= '0'; + sr_strobe <= '1'; + sr_cnt <= "0000"; + sr_irq <= '0'; + sr_out <= '1'; + sr_off_delay <= '0'; + elsif rising_edge(CLK) then + if (ENA_4 = '1') then + -- decode mode + dir_out := r_acr(4); -- output on cb2 + cb1_op := '0'; + cb1_ip := '0'; + use_t2 := '0'; + free_run := '0'; + + case r_acr(4 downto 2) is + when "000" => ena := '0'; + when "001" => ena := '1'; cb1_op := '1'; use_t2 := '1'; + when "010" => ena := '1'; cb1_op := '1'; + when "011" => ena := '1'; cb1_ip := '1'; + when "100" => ena := '1'; use_t2 := '1'; free_run := '1'; + when "101" => ena := '1'; cb1_op := '1'; use_t2 := '1'; + when "110" => ena := '1'; + when "111" => ena := '1'; cb1_ip := '1'; + when others => null; + end case; + + -- clock select + if (ena = '0') then + sr_strobe <= '1'; + else + if (cb1_ip = '1') then + sr_strobe <= I_CB1; + else + if (sr_cnt(3) = '0') and (free_run = '0') then + sr_strobe <= '1'; + else + if ((use_t2 = '1') and t2_sr_ena) or + ((use_t2 = '0') and (phase = "00")) then + sr_strobe <= not sr_strobe; + end if; + end if; + end if; + end if; + + -- latch on rising edge, shift on falling edge + if sr_write_ena then + r_sr <= load_data; + elsif (ena = '1') then -- use shift reg + + if (dir_out = '0') then + -- input + if (sr_cnt(3) = '1') or (cb1_ip = '1') then + if sr_strobe_rising then + r_sr(0) <= I_CB2; + elsif sr_strobe_falling then + r_sr(7 downto 1) <= r_sr(6 downto 0); + end if; + end if; + sr_out <= '1'; + else + -- output + if (sr_cnt(3) = '1') or (sr_off_delay = '1') or (cb1_ip = '1') or (free_run = '1') then + if sr_strobe_falling then + r_sr(7 downto 1) <= r_sr(6 downto 0); + r_sr(0) <= r_sr(7); + sr_out <= r_sr(7); + end if; + else + sr_out <= '1'; + end if; + end if; + end if; + + sr_count_ena := sr_strobe_rising; + + if sr_write_ena or sr_read_ena then + -- some documentation says sr bit in IFR must be set as well ? + sr_cnt <= "1000"; + elsif sr_count_ena and (sr_cnt(3) = '1') then + sr_cnt <= sr_cnt + "1"; + end if; + + if (phase = "00") then + sr_off_delay <= sr_cnt(3); -- give some hold time when shifting out + end if; + + if sr_count_ena and (sr_cnt = "1111") and (ena = '1') and (free_run = '0') then + sr_irq <= '1'; + elsif sr_write_ena or sr_read_ena or (clear_irq(2) = '1') then + sr_irq <= '0'; + end if; + + -- assign ops + sr_drive_cb2 <= dir_out; + sr_cb1_oe_l <= not cb1_op; + sr_cb1_out <= sr_strobe; + end if; + end if; + end process; + + p_sr_strobe_rise_fall : process + begin + wait until rising_edge(CLK); + if (ENA_4 = '1') then + sr_strobe_t1 <= sr_strobe; + sr_strobe_rising <= (sr_strobe_t1 = '0') and (sr_strobe = '1'); + sr_strobe_falling <= (sr_strobe_t1 = '1') and (sr_strobe = '0'); + end if; + end process; + -- + -- Interrupts + -- + p_ier : process(RESET_L, CLK) + begin + if (RESET_L = '0') then + r_ier <= "0000000"; + elsif rising_edge(CLK) then + if (ENA_4 = '1') then + if ier_write_ena then + if (load_data(7) = '1') then + -- set + r_ier <= r_ier or load_data(6 downto 0); + else + -- clear + r_ier <= r_ier and not load_data(6 downto 0); + end if; + end if; + end if; + end if; + end process; + + p_ifr : process(t1_irq, t2_irq, final_irq, ca1_irq, ca2_irq, sr_irq, + cb1_irq, cb2_irq) + begin + r_ifr(7) <= final_irq; + r_ifr(6) <= t1_irq; + r_ifr(5) <= t2_irq; + r_ifr(4) <= cb1_irq; + r_ifr(3) <= cb2_irq; + r_ifr(2) <= sr_irq; + r_ifr(1) <= ca1_irq; + r_ifr(0) <= ca2_irq; + + O_IRQ_L <= not final_irq; + end process; + + p_irq : process(RESET_L, CLK) + begin + if (RESET_L = '0') then + final_irq <= '0'; + elsif rising_edge(CLK) then + if (ENA_4 = '1') then + if ((r_ifr(6 downto 0) and r_ier(6 downto 0)) = "0000000") then + final_irq <= '0'; -- no interrupts + else + final_irq <= '1'; + end if; + end if; + end if; + end process; + + p_clear_irq : process(ifr_write_ena, load_data) + begin + clear_irq <= x"00"; + if ifr_write_ena then + clear_irq <= load_data; + end if; + end process; + +end architecture RTL; diff --git a/Oric Atmos_MiST/rtl/manage_amplitude.vhd b/Oric Atmos_MiST/rtl/manage_amplitude.vhd new file mode 100644 index 00000000..fd8766d6 --- /dev/null +++ b/Oric Atmos_MiST/rtl/manage_amplitude.vhd @@ -0,0 +1,95 @@ +-- +-- MANAGE_AMPLITUDE.vhd +-- +-- Manage the amplitude for each tone. +-- +-- Copyright (C)2001-2010 SEILEBOST +-- All rights reserved. +-- +-- $Id: MANAGE_AMPLITUDE.vhd, v0.50 2010/01/19 00:00:00 SEILEBOST $ +-- + +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_ARITH.ALL; +use IEEE.STD_LOGIC_UNSIGNED.ALL; + +entity MANAGE_AMPLITUDE is + Port ( CLK : in std_logic; -- the system clock + CLK_DAC : in std_logic; -- the clok of DAC + CLK_TONE : in std_logic; -- the frequency of sound + CLK_NOISE : in std_logic; -- the noise + RST : in std_logic; -- reset + CLK_TONE_ENA : in std_logic; -- enable tone + CLK_NOISE_ENA : in std_logic; -- enable noise + AMPLITUDE : in std_logic_vector(4 downto 0); -- value from register + AMPLITUDE_E : in std_logic_vector(3 downto 0); -- value from envelope + OUT_DAC : out std_logic ); +end MANAGE_AMPLITUDE; + +architecture Behavioral of MANAGE_AMPLITUDE is + + signal AMPLITUDE_TMP : std_logic_vector(3 downto 0); + signal IN_DATA : std_logic_vector(7 downto 0); + + COMPONENT DAC is Port ( CLK_DAC : in std_logic; + RST : in std_logic; + IN_DAC : in std_logic_vector(7 downto 0); + OUT_DAC : out std_logic ); + END COMPONENT; + + +begin + +-- Convertisseur numérique analogique : méthode sigma delta +U_DAC : DAC PORT MAP ( CLK_DAC => CLK_DAC, + RST => RST, + IN_DAC => IN_DATA, + OUT_DAC => OUT_DAC); + +-- Calcule de l'amplitude à générer par le DAC + PROCESS(CLK, RST, AMPLITUDE_TMP, AMPLITUDE_E) + variable mix_tone_noise : std_logic; + BEGIN + if (RST = '1') then -- reset + AMPLITUDE_TMP <= "0000"; + IN_DATA <= "00000000"; + elsif (CLK'event and CLK = '1') then -- edge clock + -- Note that this means that if both tone and noise are disabled, the output */ + -- is 1, not 0, and can be modulated changing the volume. */ + mix_tone_noise := (CLK_TONE or CLK_TONE_ENA) AND (CLK_NOISE or CLK_NOISE_ENA); + if (mix_tone_noise = '1') then + if (AMPLITUDE(4) = '0') then -- Utilisation de la valeur du registre + AMPLITUDE_TMP <= AMPLITUDE(3 downto 0); + else -- Utilisation de la valeur de l'enveloppe + AMPLITUDE_TMP <= AMPLITUDE_E; + end if; + else + AMPLITUDE_TMP <= "0000"; + end if; + + -- Each amplitude has an 1.5 db step from previous amplitude + CASE AMPLITUDE_TMP IS + when "0000" => IN_DATA <= "00000000"; -- 0 + when "0001" => IN_DATA <= "00010110"; -- 22 + when "0010" => IN_DATA <= "00011010"; -- 26 + when "0011" => IN_DATA <= "00011111"; -- 31 + when "0100" => IN_DATA <= "00100101"; -- 37 + when "0101" => IN_DATA <= "00101100"; -- 44 + when "0110" => IN_DATA <= "00110100"; -- 52 + when "0111" => IN_DATA <= "00111110"; -- 62 + when "1000" => IN_DATA <= "01001010"; -- 74 + when "1001" => IN_DATA <= "01011000"; -- 88 + when "1010" => IN_DATA <= "01101001"; -- 105 + when "1011" => IN_DATA <= "01110101"; -- 125 + when "1100" => IN_DATA <= "10011001"; -- 149 + when "1101" => IN_DATA <= "10110001"; -- 177 + when "1110" => IN_DATA <= "11010010"; -- 210 + when "1111" => IN_DATA <= "11111111"; -- 255 + when OTHERS => NULL; + END CASE; + end if; + + END PROCESS; + +end Behavioral; diff --git a/Oric Atmos_MiST/rtl/memmap.vhd b/Oric Atmos_MiST/rtl/memmap.vhd new file mode 100644 index 00000000..416a6a47 --- /dev/null +++ b/Oric Atmos_MiST/rtl/memmap.vhd @@ -0,0 +1,78 @@ +-- +-- memmap.vhd +-- +-- Manage offset for read ula +-- +-- Copyright (C)2001 - 2005 SEILEBOST +-- All rights reserved. +-- +-- $Id: memmap.vhd, v0.02 2005/01/01 00:00:00 SEILEBOST $ +-- +-- TODO : +-- Remark : + +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.std_logic_unsigned.all; +--use IEEE.std_logic_arith.all; +--use IEEE.numeric_std.all; + +entity memmap is +port ( TXTHIR_SEL : in std_logic; + DBLHGT_SEL : in std_logic; + FORCETXT : in std_logic; + CPT_H : in std_logic_vector(6 downto 0); + CPT_V : in std_logic_vector(8 downto 0); + VAP1 : out std_logic_vector(15 downto 0); + CHROWCNT : out std_logic_vector(2 downto 0); + TXTHIR_DEC : out std_logic + ); +end entity memmap; + +architecture memmap_arch of memmap is + +signal lDBLHGT_EN : std_logic; -- ENABLE DOUBLE HEIGT +signal lTXTHIR_DEC : std_logic; -- MODE TEXT / HIRES +signal lCPT_V_TMP : std_logic_vector(8 downto 0); -- VERTICAL COUNTER +signal lCPT_V_8_TMP : std_logic_vector(8 downto 0); -- VERTICAL COUNTER DIVIDE OR NOT BY 8 +signal lVAP1 : std_logic_vector(12 downto 0); -- VIDEO ADDRESS PHASE 1 +signal lOFFSCR : std_logic_vector(15 downto 0); -- OFFSET SCREEN +signal ltmpBy10 : std_logic_vector(12 downto 0); -- Using to mult by 10 + + +begin + -- local signal + lTXTHIR_DEC <= (TXTHIR_SEL and FORCETXT); + lDBLHGT_EN <= (DBLHGT_SEL and lTXTHIR_DEC); + + -- Compute video adress phase 1 + lCPT_V_TMP <= '0'&CPT_V(8 downto 1) when lDBLHGT_EN = '1' else CPT_V(8 downto 0); + + -- divide by 8 if necessary : erreur sur la manière de diviser par 8? 03/02/2010 + --lCPT_V_8_TMP <= lCPT_V_TMP when lTXTHIR_DEC = '1' else lCPT_V_TMP(8 downto 3) & "000"; + + lCPT_V_8_TMP <= lCPT_V_TMP when lTXTHIR_DEC = '1' else "000" & lCPT_V_TMP(8 downto 3) ; + + -- 03/02/2010 : Le bonne blague : après la phase de synthese, le 'bench' ne + -- fonctionnait plus. Le synthetiseur de XILINX avait utilisé un multiplieur 18x18 + -- pour générer la multiplication par 10 et la simulation a repris cela. Or le + -- multiplier a une latence de 1 µs (latence de l'horloge PHI2) d'où les problèmes + -- durant les simulations (génération de 2 fois de suite de l'adresse vidéo) + -- On revient à la bonne vieille méthode Bx10 = Bx8 + Bx2 !! + --lVAP1 <= ("0000000" & CPT_H) + (lCPT_V_8_TMP * "1010"); + ltmpBy10 <= ("0" & lCPT_V_8_TMP & "000") + ("000" & lCPT_V_8_TMP & "0"); + -- le décalage en Y : il faut multiplier par 40 donc 4 * ltmpBy10 + lVAP1 <= ("00000" & CPT_H) + (ltmpBy10(10 downto 0) & "00"); + lOFFSCR <= X"A000" when lTXTHIR_DEC = '1' else X"BB80"; + VAP1 <= ("000" & lVAP1) + lOFFSCR; + + -- Compute character row counter + CHROWCNT <= CPT_V(2 downto 0) when lDBLHGT_EN = '1' else CPT_V(3 downto 1); + + -- Output signal for texte/hires mode decode + TXTHIR_DEC <= lTXTHIR_DEC; + +end architecture memmap_arch; + + + diff --git a/Oric Atmos_MiST/rtl/mist_io.v b/Oric Atmos_MiST/rtl/mist_io.v new file mode 100644 index 00000000..ad233a3b --- /dev/null +++ b/Oric Atmos_MiST/rtl/mist_io.v @@ -0,0 +1,491 @@ +// +// mist_io.v +// +// mist_io for the MiST board +// http://code.google.com/p/mist-board/ +// +// Copyright (c) 2014 Till Harbaum +// +// This source file is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published +// by the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This source file is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// +/////////////////////////////////////////////////////////////////////// + +// +// Use buffer to access SD card. It's time-critical part. +// Made module synchroneous with 2 clock domains: clk_sys and SPI_SCK +// (Sorgelig) +// +// for synchronous projects default value for PS2DIV is fine for any frequency of system clock. +// clk_ps2 = clk_sys/(PS2DIV*2) +// + +module mist_io #(parameter STRLEN=0, parameter PS2DIV=100) +( + + // parameter STRLEN and the actual length of conf_str have to match + input [(8*STRLEN)-1:0] conf_str, + + // Global clock. It should be around 100MHz (higher is better). + input clk_sys, + + // Global SPI clock from ARM. 24MHz + input SPI_SCK, + + input CONF_DATA0, + input SPI_SS2, + output SPI_DO, + input SPI_DI, + + output reg [7:0] joystick_0, + output reg [7:0] joystick_1, + output reg [15:0] joystick_analog_0, + output reg [15:0] joystick_analog_1, + output [1:0] buttons, + output [1:0] switches, + output scandoubler_disable, + output ypbpr, + + output reg [31:0] status, + + // SD config + input sd_conf, + input sd_sdhc, + output img_mounted, // signaling that new image has been mounted + output reg [31:0] img_size, // size of image in bytes + + // SD block level access + input [31:0] sd_lba, + input sd_rd, + input sd_wr, + output reg sd_ack, + output reg sd_ack_conf, + + // SD byte level access. Signals for 2-PORT altsyncram. + output reg [8:0] sd_buff_addr, + output reg [7:0] sd_buff_dout, + input [7:0] sd_buff_din, + output reg sd_buff_wr, + + // ps2 keyboard emulation + output ps2_kbd_clk, + output reg ps2_kbd_data, + output ps2_mouse_clk, + output reg ps2_mouse_data, + input ps2_caps_led, + + // ARM -> FPGA download + output reg ioctl_download = 0, // signal indicating an active download + output reg [7:0] ioctl_index, // menu index used to upload the file + output ioctl_wr, + output reg [24:0] ioctl_addr, + output reg [7:0] ioctl_dout +); + +reg [7:0] b_data; +reg [6:0] sbuf; +reg [7:0] cmd; +reg [2:0] bit_cnt; // counts bits 0-7 0-7 ... +reg [9:0] byte_cnt; // counts bytes +reg [7:0] but_sw; +reg [2:0] stick_idx; + +reg mount_strobe = 0; +assign img_mounted = mount_strobe; + +assign buttons = but_sw[1:0]; +assign switches = but_sw[3:2]; +assign scandoubler_disable = but_sw[4]; +assign ypbpr = but_sw[5]; + +wire [7:0] spi_dout = { sbuf, SPI_DI}; + +// this variant of user_io is for 8 bit cores (type == a4) only +wire [7:0] core_type = 8'ha4; + +// command byte read by the io controller +wire [7:0] sd_cmd = { 4'h5, sd_conf, sd_sdhc, sd_wr, sd_rd }; + +reg spi_do; +assign SPI_DO = CONF_DATA0 ? 1'bZ : spi_do; + +wire [7:0] kbd_led = { 2'b01, 4'b0000, ps2_caps_led, 1'b1}; + +// drive MISO only when transmitting core id +always@(negedge SPI_SCK) begin + if(!CONF_DATA0) begin + // first byte returned is always core type, further bytes are + // command dependent + if(byte_cnt == 0) begin + spi_do <= core_type[~bit_cnt]; + + end else begin + case(cmd) + // reading config string + 8'h14: begin + // returning a byte from string + if(byte_cnt < STRLEN + 1) spi_do <= conf_str[{STRLEN - byte_cnt,~bit_cnt}]; + else spi_do <= 0; + end + + // reading sd card status + 8'h16: begin + if(byte_cnt == 1) spi_do <= sd_cmd[~bit_cnt]; + else if((byte_cnt >= 2) && (byte_cnt < 6)) spi_do <= sd_lba[{5-byte_cnt, ~bit_cnt}]; + else spi_do <= 0; + end + + // reading sd card write data + 8'h18: + spi_do <= b_data[~bit_cnt]; + + // reading keyboard LED status + 8'h1f: + spi_do <= kbd_led[~bit_cnt]; + + default: + spi_do <= 0; + endcase + end + end +end + +reg b_wr2,b_wr3; +always @(negedge clk_sys) begin + b_wr3 <= b_wr2; + sd_buff_wr <= b_wr3; +end + +// SPI receiver +always@(posedge SPI_SCK or posedge CONF_DATA0) begin + + if(CONF_DATA0) begin + b_wr2 <= 0; + bit_cnt <= 0; + byte_cnt <= 0; + sd_ack <= 0; + sd_ack_conf <= 0; + end else begin + b_wr2 <= 0; + + sbuf <= spi_dout[6:0]; + bit_cnt <= bit_cnt + 1'd1; + if(bit_cnt == 5) begin + if (byte_cnt == 0) sd_buff_addr <= 0; + if((byte_cnt != 0) & (sd_buff_addr != 511)) sd_buff_addr <= sd_buff_addr + 1'b1; + if((byte_cnt == 1) & ((cmd == 8'h17) | (cmd == 8'h19))) sd_buff_addr <= 0; + end + + // finished reading command byte + if(bit_cnt == 7) begin + if(~&byte_cnt) byte_cnt <= byte_cnt + 8'd1; + if(byte_cnt == 0) begin + cmd <= spi_dout; + + if(spi_dout == 8'h19) begin + sd_ack_conf <= 1; + sd_buff_addr <= 0; + end + if((spi_dout == 8'h17) || (spi_dout == 8'h18)) begin + sd_ack <= 1; + sd_buff_addr <= 0; + end + if(spi_dout == 8'h18) b_data <= sd_buff_din; + + mount_strobe <= 0; + + end else begin + + case(cmd) + // buttons and switches + 8'h01: but_sw <= spi_dout; + 8'h02: joystick_0 <= spi_dout; + 8'h03: joystick_1 <= spi_dout; + + // store incoming ps2 mouse bytes + 8'h04: begin + ps2_mouse_fifo[ps2_mouse_wptr] <= spi_dout; + ps2_mouse_wptr <= ps2_mouse_wptr + 1'd1; + end + + // store incoming ps2 keyboard bytes + 8'h05: begin + ps2_kbd_fifo[ps2_kbd_wptr] <= spi_dout; + ps2_kbd_wptr <= ps2_kbd_wptr + 1'd1; + end + + 8'h15: status[7:0] <= spi_dout; + + // send SD config IO -> FPGA + // flag that download begins + // sd card knows data is config if sd_dout_strobe is asserted + // with sd_ack still being inactive (low) + 8'h19, + // send sector IO -> FPGA + // flag that download begins + 8'h17: begin + sd_buff_dout <= spi_dout; + b_wr2 <= 1; + end + + 8'h18: b_data <= sd_buff_din; + + // joystick analog + 8'h1a: begin + // first byte is joystick index + if(byte_cnt == 1) stick_idx <= spi_dout[2:0]; + else if(byte_cnt == 2) begin + // second byte is x axis + if(stick_idx == 0) joystick_analog_0[15:8] <= spi_dout; + else if(stick_idx == 1) joystick_analog_1[15:8] <= spi_dout; + end else if(byte_cnt == 3) begin + // third byte is y axis + if(stick_idx == 0) joystick_analog_0[7:0] <= spi_dout; + else if(stick_idx == 1) joystick_analog_1[7:0] <= spi_dout; + end + end + + // notify image selection + 8'h1c: mount_strobe <= 1; + + // send image info + 8'h1d: if(byte_cnt<5) img_size[(byte_cnt-1)<<3 +:8] <= spi_dout; + + // status, 32bit version + 8'h1e: if(byte_cnt<5) status[(byte_cnt-1)<<3 +:8] <= spi_dout; + default: ; + endcase + end + end + end +end + + +/////////////////////////////// PS2 /////////////////////////////// +// 8 byte fifos to store ps2 bytes +localparam PS2_FIFO_BITS = 3; + +reg clk_ps2; +always @(negedge clk_sys) begin + integer cnt; + cnt <= cnt + 1'd1; + if(cnt == PS2DIV) begin + clk_ps2 <= ~clk_ps2; + cnt <= 0; + end +end + +// keyboard +reg [7:0] ps2_kbd_fifo[1<= 1)&&(ps2_kbd_tx_state < 9)) begin + ps2_kbd_data <= ps2_kbd_tx_byte[0]; // data bits + ps2_kbd_tx_byte[6:0] <= ps2_kbd_tx_byte[7:1]; // shift down + if(ps2_kbd_tx_byte[0]) + ps2_kbd_parity <= !ps2_kbd_parity; + end + + // transmission of parity + if(ps2_kbd_tx_state == 9) ps2_kbd_data <= ps2_kbd_parity; + + // transmission of stop bit + if(ps2_kbd_tx_state == 10) ps2_kbd_data <= 1; // stop bit is 1 + + // advance state machine + if(ps2_kbd_tx_state < 11) ps2_kbd_tx_state <= ps2_kbd_tx_state + 1'd1; + else ps2_kbd_tx_state <= 0; + end + end +end + +// mouse +reg [7:0] ps2_mouse_fifo[1<= 1)&&(ps2_mouse_tx_state < 9)) begin + ps2_mouse_data <= ps2_mouse_tx_byte[0]; // data bits + ps2_mouse_tx_byte[6:0] <= ps2_mouse_tx_byte[7:1]; // shift down + if(ps2_mouse_tx_byte[0]) + ps2_mouse_parity <= !ps2_mouse_parity; + end + + // transmission of parity + if(ps2_mouse_tx_state == 9) ps2_mouse_data <= ps2_mouse_parity; + + // transmission of stop bit + if(ps2_mouse_tx_state == 10) ps2_mouse_data <= 1; // stop bit is 1 + + // advance state machine + if(ps2_mouse_tx_state < 11) ps2_mouse_tx_state <= ps2_mouse_tx_state + 1'd1; + else ps2_mouse_tx_state <= 0; + end + end +end + + +/////////////////////////////// DOWNLOADING /////////////////////////////// + +reg [7:0] data_w; +reg [24:0] addr_w; +reg rclk = 0; + +localparam UIO_FILE_TX = 8'h53; +localparam UIO_FILE_TX_DAT = 8'h54; +localparam UIO_FILE_INDEX = 8'h55; + +// data_io has its own SPI interface to the io controller +always@(posedge SPI_SCK, posedge SPI_SS2) begin + reg [6:0] sbuf; + reg [7:0] cmd; + reg [4:0] cnt; + reg [24:0] addr; + + if(SPI_SS2) cnt <= 0; + else begin + rclk <= 0; + + // don't shift in last bit. It is evaluated directly + // when writing to ram + if(cnt != 15) sbuf <= { sbuf[5:0], SPI_DI}; + + // increase target address after write + if(rclk) addr <= addr + 1'd1; + + // count 0-7 8-15 8-15 ... + if(cnt < 15) cnt <= cnt + 1'd1; + else cnt <= 8; + + // finished command byte + if(cnt == 7) cmd <= {sbuf, SPI_DI}; + + // prepare/end transmission + if((cmd == UIO_FILE_TX) && (cnt == 15)) begin + // prepare + if(SPI_DI) begin + addr <= 0; + ioctl_download <= 1; + end else begin + addr_w <= addr; + ioctl_download <= 0; + end + end + + // command 0x54: UIO_FILE_TX + if((cmd == UIO_FILE_TX_DAT) && (cnt == 15)) begin + addr_w <= addr; + data_w <= {sbuf, SPI_DI}; + rclk <= 1; + end + + // expose file (menu) index + if((cmd == UIO_FILE_INDEX) && (cnt == 15)) ioctl_index <= {sbuf, SPI_DI}; + end +end + +assign ioctl_wr = |ioctl_wrd; +reg [1:0] ioctl_wrd; + +always@(negedge clk_sys) begin + reg rclkD, rclkD2; + + rclkD <= rclk; + rclkD2 <= rclkD; + ioctl_wrd<= {ioctl_wrd[0],1'b0}; + + if(rclkD & ~rclkD2) begin + ioctl_dout <= data_w; + ioctl_addr <= addr_w; + ioctl_wrd <= 2'b11; + end +end + +endmodule diff --git a/Oric Atmos_MiST/rtl/noise_generator.vhd b/Oric Atmos_MiST/rtl/noise_generator.vhd new file mode 100644 index 00000000..83f80459 --- /dev/null +++ b/Oric Atmos_MiST/rtl/noise_generator.vhd @@ -0,0 +1,80 @@ +-- +-- NOISE_GENERATOR.vhd +-- +-- Generator a noise tone. +-- +-- Copyright (C)2001 SEILEBOST +-- All rights reserved. +-- +-- $Id: NOISE_GENERATOR.vhd, v0.41 2002/01/03 00:00:00 SEILEBOST $ +-- + +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_ARITH.ALL; +use IEEE.STD_LOGIC_UNSIGNED.ALL; + +entity noise_generator is + Port ( CLK : in std_logic; + RST : in std_logic; + --WR : in std_logic; + --CS : in std_logic; + DATA : in std_logic_vector(4 downto 0); + CLK_N : out std_logic -- pseudo clock + ); +end noise_generator; + +architecture Behavioral of noise_generator is + +SIGNAL COUNT : std_logic_vector(4 downto 0); +signal poly17 : std_logic_vector(16 downto 0) := (others => '0'); +--SIGNAL ShiftEn : std_logic; +--SIGNAL FillSel : std_logic; +--SIGNAL DataIn : std_logic; +--SIGNAL lData : std_logic_vector(4 downto 0); + +--COMPONENT i_pn_gen port (clk, ShiftEn, FillSel, DataIn_i, RESET : in std_logic; +-- pn_out_i : out std_logic); +--END COMPONENT; + +begin + +--U_IPNG : I_PN_GEN PORT MAP ( CLK => CLK, +-- ShiftEn => ShiftEn, +-- FillSel => FillSel, +-- RESET => RST, +-- DataIn_i => DataIn, +-- pn_out_i => CLK_N); + + -- The noise generator + PROCESS(CLK,RST) + variable COUNT_MAX : std_logic_vector(4 downto 0); + variable poly17_zero : std_logic; + BEGIN + if (RST = '1') then + poly17 <= (others => '0'); + elsif ( CLK'event and CLK = '1') then + if (DATA = "00000") then + COUNT_MAX := "00000"; + else + COUNT_MAX := (DATA - "1"); + end if; + + -- Manage the polynome = 0 to regenerate another sequence + poly17_zero := '0'; + if (poly17 = "00000000000000000") then poly17_zero := '1'; end if; + + if (COUNT >= COUNT_MAX) then + COUNT <= "00000"; + poly17 <= (poly17(0) xor poly17(2) xor poly17_zero) + & poly17(16 downto 1); + else + COUNT <= (COUNT + "1"); + end if; + end if; + + END PROCESS; + + CLK_N <= poly17(0); + +end Behavioral; diff --git a/Oric Atmos_MiST/rtl/oricatmos.vhd b/Oric Atmos_MiST/rtl/oricatmos.vhd new file mode 100644 index 00000000..997f15e7 --- /dev/null +++ b/Oric Atmos_MiST/rtl/oricatmos.vhd @@ -0,0 +1,398 @@ +library ieee; + use ieee.std_logic_1164.all; + use ieee.std_logic_arith.all; + use ieee.std_logic_unsigned.ALL; + use ieee.numeric_std.all; + +entity oricatmos is +port ( + CLOCK_27 : in std_logic; + LED : out std_logic; + VGA_R : out std_logic_vector(5 downto 0); + VGA_G : out std_logic_vector(5 downto 0); + VGA_B : out std_logic_vector(5 downto 0); + VGA_HS : out std_logic; + VGA_VS : out std_logic; + SPI_SCK : in std_logic; + SPI_DI : in std_logic; + SPI_DO : out std_logic; + SPI_SS3 : in std_logic; + CONF_DATA0 : in std_logic; + AUDIO_L : out std_logic; + AUDIO_R : out std_logic +); +end; + +architecture RTL of oricatmos is + signal VGA_R_O : std_logic_vector(3 downto 0); + signal VGA_G_O : std_logic_vector(3 downto 0); + signal VGA_B_O : std_logic_vector(3 downto 0); + signal hsync : std_logic; + signal vsync : std_logic; + signal hq2x : std_logic; + signal buttons : std_logic_vector(1 downto 0); + signal switches : std_logic_vector(1 downto 0); + signal status : std_logic_vector(31 downto 0); + signal scandoubler_disable : std_logic; + signal scanlines : std_logic_vector(1 downto 0); + signal ypbpr : std_logic; + signal ps2Clk : std_logic; + signal ps2Data : std_logic; + signal loc_reset_n : std_logic; --active low + signal reset : std_logic := '1'; + signal clk24 : std_logic := '0'; + signal clk12 : std_logic := '0'; + signal clk6 : std_logic := '0'; + signal pll_locked : std_logic := '0'; + signal CPU_ADDR : std_logic_vector(23 downto 0); + signal CPU_DI : std_logic_vector( 7 downto 0); + signal CPU_DO : std_logic_vector( 7 downto 0); + signal cpu_rw : std_logic; + signal cpu_irq : std_logic; + signal ad : std_logic_vector(15 downto 0); + signal via_pa_out_oe : std_logic_vector( 7 downto 0); + signal via_pa_in : std_logic_vector( 7 downto 0); + signal via_pa_out : std_logic_vector( 7 downto 0); + signal via_cb1_out : std_logic; + signal via_cb1_oe_l : std_logic; + signal via_cb2_out : std_logic; + signal via_cb2_oe_l : std_logic; + signal via_in : std_logic_vector( 7 downto 0); + signal via_out : std_logic_vector( 7 downto 0); + signal via_oe_l : std_logic_vector( 7 downto 0); + signal VIA_DO : std_logic_vector( 7 downto 0); + signal KEY_ROW : std_logic_vector( 7 downto 0); + signal psg_bdir : std_logic; + signal PSG_OUT : std_logic_vector( 7 downto 0); + signal ula_phi2 : std_logic; + signal ula_CSIOn : std_logic; + signal ula_CSIO : std_logic; + signal ula_CSROMn : std_logic; + signal SRAM_DO : std_logic_vector( 7 downto 0); + signal ula_AD_SRAM : std_logic_vector(15 downto 0); + signal ula_CE_SRAM : std_logic; + signal ula_OE_SRAM : std_logic; + signal ula_WE_SRAM : std_logic; + signal ula_LE_SRAM : std_logic; + signal ula_CLK_4 : std_logic; + signal ula_IOCONTROL : std_logic; + signal ula_VIDEO_R : std_logic; + signal ula_VIDEO_G : std_logic; + signal ula_VIDEO_B : std_logic; + signal ula_SYNC : std_logic; + signal ROM_DO : std_logic_vector( 7 downto 0); + signal hs_int : std_logic; + signal vs_int : std_logic; + signal dummy : std_logic_vector( 3 downto 0) := (others => '0'); + signal s_cmpblk_n_out : std_logic; + + + constant CONF_STR : string := + "ORIC;;O89,Scandoubler Fx,None,HQ2x,CRT 25%,CRT 50%;T6,Reset;"; + + function to_slv(s: string) return std_logic_vector is + constant ss: string(1 to s'length) := s; + variable rval: std_logic_vector(1 to 8 * s'length); + variable p: integer; + variable c: integer; + begin + for i in ss'range loop + p := 8 * i; + c := character'pos(ss(i)); + rval(p - 7 to p) := std_logic_vector(to_unsigned(c,8)); + end loop; + return rval; + end function; + + component mist_io + generic ( STRLEN : integer := 0 ); + port ( + clk_sys :in std_logic; + SPI_SCK, CONF_DATA0, SPI_DI :in std_logic; + SPI_DO : out std_logic; + conf_str : in std_logic_vector(8*STRLEN-1 downto 0); + buttons : out std_logic_vector(1 downto 0); + switches : out std_logic_vector(1 downto 0); + joystick_0 : out std_logic_vector(7 downto 0); + joystick_1 : out std_logic_vector(7 downto 0); + status : out std_logic_vector(31 downto 0); + scandoubler_disable, ypbpr : out std_logic; + ps2_kbd_clk : out std_logic; + ps2_kbd_data : out std_logic + ); + end component mist_io; + + component video_mixer + generic ( LINE_LENGTH : integer := 384; HALF_DEPTH : integer := 1 ); + port ( + clk_sys, ce_pix, ce_pix_actual : in std_logic; + SPI_SCK, SPI_SS3, SPI_DI : in std_logic; + + scandoubler_disable, hq2x, ypbpr, ypbpr_full : in std_logic; + scanlines : in std_logic_vector(1 downto 0); + R, G, B : in std_logic_vector(2 downto 0); + HSync, VSync, line_start, mono : in std_logic; + + VGA_R,VGA_G, VGA_B : out std_logic_vector(5 downto 0); + VGA_VS, VGA_HS : out std_logic + ); + end component video_mixer; + +begin + inst_pll : entity work.pll + port map ( + areset => open, + inclk0 => CLOCK_27, + c0 => clk24, + c1 => clk12, + c2 => clk6, + locked => pll_locked + ); + +loc_reset_n <= pll_locked; +--reset <= not status(0) or status(6) or buttons(1); + inst_cpu : entity work.T65 + port map ( + Mode => "00", + Res_n => loc_reset_n, + Enable => '1', + Clk => ula_phi2, + Rdy => '1', + Abort_n => '1', + IRQ_n => cpu_irq, + NMI_n => '1', + SO_n => '1', + R_W_n => cpu_rw, + Sync => open, + EF => open, + MF => open, + XF => open, + ML_n => open, + VP_n => open, + VDA => open, + VPA => open, + A => CPU_ADDR, + DI => CPU_DI, + DO => CPU_DO + ); +-- place Rom in LE and we can use 48kb Memory +-- inst_rom : entity work.rom +-- port map ( +-- clk => clk24, +-- ADDR => CPU_ADDR(13 downto 0), +-- DATA => ROM_DO +-- ); +-- place in BRAM and reduce Memory to 16kb see file ram48k + inst_rom : entity work.rrom + port map ( + clock => clk24, + address => CPU_ADDR(13 downto 0), + q => ROM_DO + ); + +ad(15 downto 0) <= ula_AD_SRAM when ula_phi2 = '0' else CPU_ADDR(15 downto 0); + + inst_ram : entity work.ram48k + port map( + clk => clk24, + cs => ula_CE_SRAM, + oe => ula_OE_SRAM, + we => ula_WE_SRAM, + addr => ad, + di => CPU_DO, + do => SRAM_DO + ); + + inst_ula : entity work.ULA + port map ( + RESETn => loc_reset_n, + CLK => clk24, + CLK_4 => ula_CLK_4, + RW => cpu_rw, + ADDR => CPU_ADDR(15 downto 0), + MAPn => '1', + DB => SRAM_DO, + CSROMn => ula_CSROMn, + CSIOn => ula_CSIOn, + SRAM_AD => ula_AD_SRAM, + SRAM_OE => ula_OE_SRAM, + SRAM_CE => ula_CE_SRAM, + SRAM_WE => ula_WE_SRAM, + LATCH_SRAM => ula_LE_SRAM, + PHI2 => ula_PHI2, + R => ULA_VIDEO_R, + G => ULA_VIDEO_G, + B => ULA_VIDEO_B, + SYNC => ULA_SYNC, + HSYNC => hs_int, + VSYNC => vs_int + ); + + vmixer : video_mixer + generic map( + HALF_DEPTH => 1, + LINE_LENGTH => 480 + ) + + port map ( + clk_sys => clk24, + ce_pix => clk6, + ce_pix_actual => clk6, + SPI_SCK => SPI_SCK, + SPI_SS3 => SPI_SS3, + SPI_DI => SPI_DI, + hq2x => hq2x, + ypbpr => ypbpr, + ypbpr_full => '1', + scanlines => scanlines, + scandoubler_disable => scandoubler_disable, + R => ULA_VIDEO_R & ULA_VIDEO_R & ULA_VIDEO_R, + G => ULA_VIDEO_G & ULA_VIDEO_G & ULA_VIDEO_G, + B => ULA_VIDEO_B & ULA_VIDEO_B & ULA_VIDEO_B, + HSync => hs_int, + VSync => vs_int, + line_start => '0', + mono => '0', + VGA_R => VGA_R, + VGA_G => VGA_G, + VGA_B => VGA_B, + VGA_VS => VGA_VS, + VGA_HS => VGA_HS +); + +scanlines(1) <= '1' when status(9 downto 8) = "11" and scandoubler_disable = '0' else '0'; +scanlines(0) <= '1' when status(9 downto 8) = "10" and scandoubler_disable = '0' else '0'; +hq2x <= '1' when status(9 downto 8) = "01" else '0'; + +mist_io_inst : mist_io + generic map (STRLEN => CONF_STR'length) + port map ( + clk_sys => clk24, + SPI_SCK => SPI_SCK, + CONF_DATA0 => CONF_DATA0, + SPI_DI => SPI_DI, + SPI_DO => SPI_DO, + conf_str => to_slv(CONF_STR), + buttons => buttons, + switches => switches, + scandoubler_disable => scandoubler_disable, + ypbpr => ypbpr, + status => status, + ps2_kbd_clk => ps2Clk, + ps2_kbd_data => ps2Data +); + +ula_CSIO <= not ula_CSIOn; + + inst_via : entity work.M6522 + port map ( + I_RS => CPU_ADDR(3 downto 0), + I_DATA => CPU_DO(7 downto 0), + O_DATA => VIA_DO, + O_DATA_OE_L => open, + I_RW_L => cpu_rw, + I_CS1 => ula_CSIO, + I_CS2_L => ula_IOCONTROL, + O_IRQ_L => cpu_irq, -- note, not open drain + I_CA1 => '1', -- PRT_ACK + I_CA2 => '1', -- psg_bdir + O_CA2 => psg_bdir, -- via_ca2_out + O_CA2_OE_L => open, + I_PA => via_pa_in, + O_PA => via_pa_out, + O_PA_OE_L => via_pa_out_oe, +-- I_CB1 => K7_TAPEIN, + I_CB1 => '0', + O_CB1 => via_cb1_out, + O_CB1_OE_L => via_cb1_oe_l, + I_CB2 => '1', + O_CB2 => via_cb2_out, + O_CB2_OE_L => via_cb2_oe_l, + I_PB => via_in, + O_PB => via_out, + O_PB_OE_L => via_oe_l, + RESET_L => loc_reset_n, + I_P2_H => ula_phi2, + ENA_4 => '1', + CLK => ula_CLK_4 + ); + + inst_key : entity work.keyboard + port map( + CLK => clk24, + RESET => '0', -- active high reset + PS2CLK => ps2Clk, + PS2DATA => ps2Data, + COL => via_out(2 downto 0), + ROWbit => KEY_ROW + ); + +via_in <= x"F7" when (KEY_ROW or VIA_PA_OUT) = x"FF" else x"FF"; + + inst_psg : entity work.YM2149 + port map ( + I_DA => via_pa_out, + O_DA => via_pa_in, + O_DA_OE_L => open, + I_A9_L => '0', + I_A8 => '1', + I_BDIR => via_cb2_out, + I_BC2 => '1', + I_BC1 => psg_bdir, + I_SEL_L => '1', + O_AUDIO => PSG_OUT, + RESET_L => loc_reset_n, + ENA => '1', + CLK => ula_PHI2 + ); + + inst_dacl : entity work.DAC + port map ( + CLK_DAC => clk24, + RST => loc_reset_n, + IN_DAC => PSG_OUT, + OUT_DAC => AUDIO_L + ); + + inst_dacr : entity work.DAC + port map ( + CLK_DAC => clk24, + RST => loc_reset_n, + IN_DAC => PSG_OUT, + OUT_DAC => AUDIO_R + ); + +ula_IOCONTROL <= '0'; + + process + begin + wait until rising_edge(clk24); + -- expansion port + if cpu_rw = '1' and ula_IOCONTROL = '1' and ula_CSIOn = '0' then + CPU_DI <= SRAM_DO; + -- Via + elsif cpu_rw = '1' and ula_IOCONTROL = '0' and ula_CSIOn = '0' and ula_LE_SRAM = '0' then + CPU_DI <= VIA_DO; + -- ROM + elsif cpu_rw = '1' and ula_IOCONTROL = '0' and ula_CSROMn = '0' then + CPU_DI <= ROM_DO; + -- Read data + elsif cpu_rw = '1' and ula_IOCONTROL = '0' and ula_phi2 = '1' and ula_LE_SRAM = '0' then + cpu_di <= SRAM_DO; + end if; + end process; + + ------------------------------------------------------------ + -- K7 PORT + ------------------------------------------------------------ +-- K7_TAPEOUT <= via_out(7); +-- K7_REMOTE <= via_out(6); +-- K7_AUDIOOUT <= AUDIO_OUT; + + ------------------------------------------------------------ + -- PRINTER PORT + ------------------------------------------------------------ +-- PRT_DATA <= via_pa_out; +-- PRT_STR <= via_out(4); + LED <= '1'; +end RTL; diff --git a/Oric Atmos_MiST/rtl/osd.v b/Oric Atmos_MiST/rtl/osd.v new file mode 100644 index 00000000..c62c10af --- /dev/null +++ b/Oric Atmos_MiST/rtl/osd.v @@ -0,0 +1,179 @@ +// A simple OSD implementation. Can be hooked up between a cores +// VGA output and the physical VGA pins + +module osd ( + // OSDs pixel clock, should be synchronous to cores pixel clock to + // avoid jitter. + input clk_sys, + + // SPI interface + input SPI_SCK, + input SPI_SS3, + input SPI_DI, + + // VGA signals coming from core + input [5:0] R_in, + input [5:0] G_in, + input [5:0] B_in, + input HSync, + input VSync, + + // VGA signals going to video connector + output [5:0] R_out, + output [5:0] G_out, + output [5:0] B_out +); + +parameter OSD_X_OFFSET = 10'd0; +parameter OSD_Y_OFFSET = 10'd0; +parameter OSD_COLOR = 3'd0; + +localparam OSD_WIDTH = 10'd256; +localparam OSD_HEIGHT = 10'd128; + +// ********************************************************************************* +// spi client +// ********************************************************************************* + +// this core supports only the display related OSD commands +// of the minimig +reg osd_enable; +(* ramstyle = "no_rw_check" *) reg [7:0] osd_buffer[2047:0]; // the OSD buffer itself + +// the OSD has its own SPI interface to the io controller +always@(posedge SPI_SCK, posedge SPI_SS3) begin + reg [4:0] cnt; + reg [10:0] bcnt; + reg [7:0] sbuf; + reg [7:0] cmd; + + if(SPI_SS3) begin + cnt <= 0; + bcnt <= 0; + end else begin + sbuf <= {sbuf[6:0], SPI_DI}; + + // 0:7 is command, rest payload + if(cnt < 15) cnt <= cnt + 1'd1; + else cnt <= 8; + + if(cnt == 7) begin + cmd <= {sbuf[6:0], SPI_DI}; + + // lower three command bits are line address + bcnt <= {sbuf[1:0], SPI_DI, 8'h00}; + + // command 0x40: OSDCMDENABLE, OSDCMDDISABLE + if(sbuf[6:3] == 4'b0100) osd_enable <= SPI_DI; + end + + // command 0x20: OSDCMDWRITE + if((cmd[7:3] == 5'b00100) && (cnt == 15)) begin + osd_buffer[bcnt] <= {sbuf[6:0], SPI_DI}; + bcnt <= bcnt + 1'd1; + end + end +end + +// ********************************************************************************* +// video timing and sync polarity anaylsis +// ********************************************************************************* + +// horizontal counter +reg [9:0] h_cnt; +reg [9:0] hs_low, hs_high; +wire hs_pol = hs_high < hs_low; +wire [9:0] dsp_width = hs_pol ? hs_low : hs_high; + +// vertical counter +reg [9:0] v_cnt; +reg [9:0] vs_low, vs_high; +wire vs_pol = vs_high < vs_low; +wire [9:0] dsp_height = vs_pol ? vs_low : vs_high; + +wire doublescan = (dsp_height>350); + +reg ce_pix; +always @(negedge clk_sys) begin + integer cnt = 0; + integer pixsz, pixcnt; + reg hs; + + cnt <= cnt + 1; + hs <= HSync; + + pixcnt <= pixcnt + 1; + if(pixcnt == pixsz) pixcnt <= 0; + ce_pix <= !pixcnt; + + if(hs && ~HSync) begin + cnt <= 0; + pixsz <= (cnt >> 9) - 1; + pixcnt <= 0; + ce_pix <= 1; + end +end + +always @(posedge clk_sys) begin + reg hsD, hsD2; + reg vsD, vsD2; + + if(ce_pix) begin + // bring hsync into local clock domain + hsD <= HSync; + hsD2 <= hsD; + + // falling edge of HSync + if(!hsD && hsD2) begin + h_cnt <= 0; + hs_high <= h_cnt; + end + + // rising edge of HSync + else if(hsD && !hsD2) begin + h_cnt <= 0; + hs_low <= h_cnt; + v_cnt <= v_cnt + 1'd1; + end else begin + h_cnt <= h_cnt + 1'd1; + end + + vsD <= VSync; + vsD2 <= vsD; + + // falling edge of VSync + if(!vsD && vsD2) begin + v_cnt <= 0; + vs_high <= v_cnt; + end + + // rising edge of VSync + else if(vsD && !vsD2) begin + v_cnt <= 0; + vs_low <= v_cnt; + end + end +end + +// area in which OSD is being displayed +wire [9:0] h_osd_start = ((dsp_width - OSD_WIDTH)>> 1) + OSD_X_OFFSET; +wire [9:0] h_osd_end = h_osd_start + OSD_WIDTH; +wire [9:0] v_osd_start = ((dsp_height- (OSD_HEIGHT<> 1) + OSD_Y_OFFSET; +wire [9:0] v_osd_end = v_osd_start + (OSD_HEIGHT<= h_osd_start) && (h_cnt < h_osd_end) && + (VSync != vs_pol) && (v_cnt >= v_osd_start) && (v_cnt < v_osd_end); + +reg [7:0] osd_byte; +always @(posedge clk_sys) if(ce_pix) osd_byte <= osd_buffer[{doublescan ? osd_vcnt[7:5] : osd_vcnt[6:4], osd_hcnt[7:0]}]; + +wire osd_pixel = osd_byte[doublescan ? osd_vcnt[4:2] : osd_vcnt[3:1]]; + +assign R_out = !osd_de ? R_in : {osd_pixel, osd_pixel, OSD_COLOR[2], R_in[5:3]}; +assign G_out = !osd_de ? G_in : {osd_pixel, osd_pixel, OSD_COLOR[1], G_in[5:3]}; +assign B_out = !osd_de ? B_in : {osd_pixel, osd_pixel, OSD_COLOR[0], B_in[5:3]}; + +endmodule diff --git a/Oric Atmos_MiST/rtl/pack_oricatmos.vhd b/Oric Atmos_MiST/rtl/pack_oricatmos.vhd new file mode 100644 index 00000000..e8b8e797 --- /dev/null +++ b/Oric Atmos_MiST/rtl/pack_oricatmos.vhd @@ -0,0 +1,270 @@ +-- +-- A simulation model of ORIC hardware +-- Copyright (c) seilebost - January 2009 +-- +-- All rights reserved +-- +-- Redistribution and use in source and synthezised forms, with or without +-- modification, are permitted provided that the following conditions are met: +-- +-- Redistributions of source code must retain the above copyright notice, +-- this list of conditions and the following disclaimer. +-- +-- Redistributions in synthesized form must reproduce the above copyright +-- notice, this list of conditions and the following disclaimer in the +-- documentation and/or other materials provided with the distribution. +-- +-- Neither the name of the author nor the names of other contributors may +-- be used to endorse or promote products derived from this software without +-- specific prior written permission. +-- +-- THIS CODE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +-- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +-- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +-- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE +-- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +-- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +-- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +-- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +-- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +-- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +-- POSSIBILITY OF SUCH DAMAGE. +-- +-- You are responsible for any legal issues arising from your use of this code. +-- +-- The latest version of this file can be found at: www.fpgaarcade.com +-- +-- Email seilebost@free.fr +-- +-- +-- Revision list +-- +-- version 001 initial release + +library ieee; + use ieee.std_logic_1164.all; + use ieee.std_logic_arith.all; + use ieee.std_logic_unsigned.all; + +package pkg_oric is + component T65 + port( + Mode : in std_logic_vector(1 downto 0); -- "00" => 6502, "01" => 65C02, "10" => 65C816 + Res_n : in std_logic; + Enable : in std_logic; + Clk : in std_logic; + Rdy : in std_logic; + Abort_n : in std_logic; + IRQ_n : in std_logic; + NMI_n : in std_logic; + SO_n : in std_logic; + R_W_n : out std_logic; + Sync : out std_logic; + EF : out std_logic; + MF : out std_logic; + XF : out std_logic; + ML_n : out std_logic; + VP_n : out std_logic; + VDA : out std_logic; + VPA : out std_logic; + A : out std_logic_vector(23 downto 0); + DI : in std_logic_vector(7 downto 0); + DO : out std_logic_vector(7 downto 0) + ); + end component; + + component ULA + port ( + CLK : in std_logic; + PHI2 : out std_logic; + CLK_4 : out std_logic; + RW : in std_logic; + RESETn : in std_logic; + MAPn : in std_logic; + DB : in std_logic_vector(7 downto 0); + AD : in std_logic_vector(15 downto 0); + AD_RAM : out std_logic_vector(7 downto 0); + AD_SRAM : out std_logic_vector(15 downto 0); + OE_SRAM : out std_logic; + CE_SRAM : out std_logic; + WE_SRAM : out std_logic; + LATCH_SRAM : out std_logic; + RASn : out std_logic; + CASn : out std_logic; + MUX : out std_logic; + RW_RAM : out std_logic; + CSIOn : out std_logic; + CSROMn : out std_logic; + CSRAMn : out std_logic; + R : out std_logic; + G : out std_logic; + B : out std_logic; + SYNC : out std_logic + ); + end component; + + component M6522 is + port ( + RS : in std_logic_vector(3 downto 0); + DATA_IN : in std_logic_vector(7 downto 0); + DATA_OUT : out std_logic_vector(7 downto 0); + DATA_OUT_OE_L : out std_logic; + + RW_L : in std_logic; + CS1 : in std_logic; + CS2_L : in std_logic; + + IRQ_L : out std_logic; -- note, not open drain + + CA1_IN : in std_logic; + CA2_IN : in std_logic; + CA2_OUT : out std_logic; + CA2_OUT_OE_L : out std_logic; + + PA_IN : in std_logic_vector(7 downto 0); + PA_OUT : out std_logic_vector(7 downto 0); + PA_OUT_OE_L : out std_logic_vector(7 downto 0); + + -- port b + CB1_IN : in std_logic; + CB1_OUT : out std_logic; + CB1_OUT_OE_L : out std_logic; + + CB2_IN : in std_logic; + CB2_OUT : out std_logic; + CB2_OUT_OE_L : out std_logic; + + PB_IN : in std_logic_vector(7 downto 0); + PB_OUT : out std_logic_vector(7 downto 0); + PB_OUT_OE_L : out std_logic_vector(7 downto 0); + + RESET_L : in std_logic; + P2_H : in std_logic; -- high for phase 2 clock ____----__ + CLK_4 : in std_logic -- 4x system clock (4HZ) _-_-_-_-_- + ); + end component; + + component AY3819X + port ( + DATA_IN : in std_logic_vector(7 downto 0); + DATA_OUT : out std_logic_vector(7 downto 0); + O_DATA_OE_L : out std_logic; + RESET : in std_logic; + CLOCK : in std_logic; + CLOCK_DAC : in std_logic; + BDIR : in std_logic; + BC1 : in std_logic; + BC2 : in std_logic; + IOA : inout std_logic_vector(7 downto 0); + IOB : inout std_logic_vector(7 downto 0); + AnalogA : out std_logic; + AnalogB : out std_logic; + AnalogC : out std_logic + ); + end component; + + component ORIC_PS2_IF + port ( + PS2_CLK : in std_logic; + PS2_DATA : in std_logic; + + COL_IN : in std_logic_vector(7 downto 0); + ROW_IN : in std_logic_vector(7 downto 0); + RESTORE : out std_logic; + + RESET_L : in std_logic; + ENA_1MHZ : in std_logic; + P2_H : in std_logic; -- high for phase 2 clock ____----__ + CLK_4 : in std_logic -- 4x system clock (4HZ) _-_-_-_-_- + ); + end component; + + component ORIC_CHAR_ROM + port ( + CLK : in std_logic; + ADDR : in std_logic_vector(11 downto 0); + DATA : out std_logic_vector(7 downto 0) + ); + end component; + + component ORIC_BASIC_ROM + port ( + CLK : in std_logic; + ADDR : in std_logic_vector(12 downto 0); + DATA : out std_logic_vector(7 downto 0) + ); + end component; + + component ORIC_KERNAL_ROM + port ( + CLK : in std_logic; + ADDR : in std_logic_vector(12 downto 0); + DATA : out std_logic_vector(7 downto 0) + ); + end component; + + component ORIC_RAMS + port ( + V_ADDR : in std_logic_vector(9 downto 0); + DIN : in std_logic_vector(7 downto 0); + DOUT : out std_logic_vector(7 downto 0); + V_RW_L : in std_logic; + CS_L : in std_logic; -- used for write enable gate only + CLK : in std_logic + ); + end component; + + component keyboard + port ( + CLK : in std_logic; + RESET : in std_logic; + PS2CLK : in std_logic; + PS2DATA : in std_logic; + COL : in std_logic_vector(2 downto 0); + ROWbit : out std_logic_vector(7 downto 0) + ); + end component; + + component file_log + generic ( + log_file: string := "res.log" + ); + port( + CLK : in std_logic; + RST : in std_logic; + x1 : in std_logic_vector(7 downto 0); + x2 : in std_logic_vector(7 downto 0); + x3 : in std_logic_vector(15 downto 0); + x4 : in std_logic_vector(2 downto 0); + x5 : in std_logic + ); + end component; + + component psg_log + generic ( + log_psg: string := "psg.log" + ); + port( + CLK : in std_logic; + RST : in std_logic; + x1 : in std_logic + ); + end component; + + component ula_log + generic ( + log_ula: string := "ula.log" + ); + port( + CLK : in std_logic; + RST : in std_logic; + x1 : in std_logic_vector(7 downto 0); + x2 : in std_logic_vector(15 downto 0); + x3 : in std_logic + ); + end component; +end pkg_oric; + +package body pkg_ORIC is + +end pkg_oric; diff --git a/Oric Atmos_MiST/rtl/pack_t65.vhd b/Oric Atmos_MiST/rtl/pack_t65.vhd new file mode 100644 index 00000000..fbe4afe1 --- /dev/null +++ b/Oric Atmos_MiST/rtl/pack_t65.vhd @@ -0,0 +1,117 @@ +-- **** +-- T65(b) core. In an effort to merge and maintain bug fixes .... +-- +-- +-- Ver 300 Bugfixes by ehenciak added +-- MikeJ March 2005 +-- Latest version from www.fpgaarcade.com (original www.opencores.org) +-- +-- **** +-- +-- 65xx compatible microprocessor core +-- +-- Version : 0246 +-- +-- 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/t65/ +-- +-- Limitations : +-- +-- File history : +-- + +library IEEE; +use IEEE.std_logic_1164.all; + +package pack_t65 is + + constant Flag_C : integer := 0; + constant Flag_Z : integer := 1; + constant Flag_I : integer := 2; + constant Flag_D : integer := 3; + constant Flag_B : integer := 4; + constant Flag_1 : integer := 5; + constant Flag_V : integer := 6; + constant Flag_N : integer := 7; + + component T65_MCode + port( + Mode : in std_logic_vector(1 downto 0); -- "00" => 6502, "01" => 65C02, "10" => 65816 + IR : in std_logic_vector(7 downto 0); + MCycle : in std_logic_vector(2 downto 0); + P : in std_logic_vector(7 downto 0); + LCycle : out std_logic_vector(2 downto 0); + ALU_Op : out std_logic_vector(3 downto 0); + Set_BusA_To : out std_logic_vector(2 downto 0); -- DI,A,X,Y,S,P + Set_Addr_To : out std_logic_vector(1 downto 0); -- PC Adder,S,AD,BA + Write_Data : out std_logic_vector(2 downto 0); -- DL,A,X,Y,S,P,PCL,PCH + Jump : out std_logic_vector(1 downto 0); -- PC,++,DIDL,Rel + BAAdd : out std_logic_vector(1 downto 0); -- None,DB Inc,BA Add,BA Adj + BreakAtNA : out std_logic; + ADAdd : out std_logic; + AddY : out std_logic; + PCAdd : out std_logic; + Inc_S : out std_logic; + Dec_S : out std_logic; + LDA : out std_logic; + LDP : out std_logic; + LDX : out std_logic; + LDY : out std_logic; + LDS : out std_logic; + LDDI : out std_logic; + LDALU : out std_logic; + LDAD : out std_logic; + LDBAL : out std_logic; + LDBAH : out std_logic; + SaveP : out std_logic; + Write : out std_logic + ); + end component; + + component T65_ALU + port( + Mode : in std_logic_vector(1 downto 0); -- "00" => 6502, "01" => 65C02, "10" => 65C816 + Op : in std_logic_vector(3 downto 0); + BusA : in std_logic_vector(7 downto 0); + BusB : in std_logic_vector(7 downto 0); + P_In : in std_logic_vector(7 downto 0); + P_Out : out std_logic_vector(7 downto 0); + Q : out std_logic_vector(7 downto 0) + ); + end component; + +end; \ No newline at end of file diff --git a/Oric Atmos_MiST/rtl/pack_ula.vhd b/Oric Atmos_MiST/rtl/pack_ula.vhd new file mode 100644 index 00000000..74b26f39 --- /dev/null +++ b/Oric Atmos_MiST/rtl/pack_ula.vhd @@ -0,0 +1,135 @@ +-- +-- ula_pkg.vhd +-- +-- Package of ULA +-- +-- Copyright (C)2001 - 2005 SEILEBOST +-- All rights reserved. +-- +-- $Id: ula_pkg.vhd, v0.02 2005/01/01 00:00:00 SEILEBOST $ +-- +-- TODO : +-- Remark : +library ieee; +use ieee.std_logic_1164.all; + +package pack_ula is + + component video port ( + RESETn : in std_logic; + CLK_PIXEL : in std_logic; + CLK_FLASH : in std_logic; + -- delete 17/11/2009 FLASH_SEL : in std_logic; + BLANKINGn : in std_logic; + RELOAD_SEL : in std_logic; + DATABUS : in std_logic_vector(7 downto 0); + ATTRIB_DEC : in std_logic; + DATABUS_EN : in std_logic; + LDFROMBUS : in std_logic; + LD_REG_0 : in std_logic; + RELD_REG : in std_logic; + CHROWCNT : in std_logic_vector(2 downto 0); + RGB : out std_logic_vector(2 downto 0); + FREQ_SEL : out std_logic; + TXTHIR_SEL : out std_logic; + isAttrib : out std_logic; + DBLSTD_SEL : out std_logic; + VAP2 : out std_logic_vector(15 downto 0) ); + end component; + + component iodecode port ( + RESETn : in std_logic; + CLK_1 : in std_logic; + ADDR : in std_logic_vector(15 downto 0); + ADDR_LE : in std_logic; + MAPn : in std_logic; + CSROMn : out std_logic; + CSRAMn : out std_logic; + CSIOn : out std_logic); + end component; + + component memmap port ( + TXTHIR_SEL : in std_logic; + DBLHGT_SEL : in std_logic; + FORCETXT : in std_logic; + CPT_H : in std_logic_vector(6 downto 0); + CPT_V : in std_logic_vector(8 downto 0); + VAP1 : out std_logic_vector(15 downto 0); + CHROWCNT : out std_logic_vector(2 downto 0); + TXTHIR_DEC : out std_logic ); + end component; + + component vag port ( + CLK_1 : in std_logic; + RESETn : in std_logic; + FREQ_SEL : in std_logic; + CPT_H : out std_logic_vector(6 downto 0); + CPT_V : out std_logic_vector(8 downto 0); + RELOAD_SEL : out std_logic; + FORCETXT : out std_logic; + CLK_FLASH : out std_logic; + COMPSYNC : out std_logic; + BLANKINGn : out std_logic); + end component; + + component ctrlseq port ( + RESETn : in std_logic; + CLK_24 : in std_logic; + TXTHIR_DEC : in std_logic; + isAttrib : in std_logic; + iRW : in std_logic; + CSRAMn : in std_logic; + CLK_1_CPU : out std_logic; + CLK_4 : out std_logic; + CLK_6 : out std_logic; + VA1L : out std_logic; + VA1R : out std_logic; + VA1C : out std_logic; + VA2L : out std_logic; + VA2R : out std_logic; + VA2C : out std_logic; + BAC : out std_logic; + BAL : out std_logic; + RAS : out std_logic; + CAS : out std_logic; + MUX : out std_logic; + oRW : out std_logic; + ATTRIB_DEC : out std_logic; + LD_REG_0 : out std_logic; + LD_REG : out std_logic; + LDFROMBUS : out std_logic; + DATABUS_EN : out std_logic; +-- ajout du 09/02/09 + BAOE : out std_logic; +-- ajout du 03/04/09 + SRAM_CE : out std_logic; + SRAM_OE : out std_logic; + SRAM_WE : out std_logic; + LATCH_SRAM : out std_logic + ); + end component; + + component addmemux port ( + RESETn : in std_logic; + VAP1 : in std_logic_vector(15 downto 0); + VAP2 : in std_logic_vector(15 downto 0); + BAP : in std_logic_vector(15 downto 0); + VA1L : in std_logic; + VA1R : in std_logic; + VA1C : in std_logic; + VA2L : in std_logic; + VA2R : in std_logic; + VA2C : in std_logic; + BAC : in std_logic; + BAL : in std_logic; + AD_DYN : out std_logic_vector(15 downto 0) ); + end component; + + component gen_clock port ( + RESETn : in std_logic; + CLK_12 : in std_logic; + CLK_24 : out std_logic; + CLK_12_INT : out std_logic; + CLK_PIXEL_INT : out std_logic ); + end component; +end pack_ula; diff --git a/Oric Atmos_MiST/rtl/pll.qip b/Oric Atmos_MiST/rtl/pll.qip new file mode 100644 index 00000000..d54ed791 --- /dev/null +++ b/Oric Atmos_MiST/rtl/pll.qip @@ -0,0 +1,5 @@ +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.cmp"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "pll.ppf"] diff --git a/Oric Atmos_MiST/rtl/pll.vhd b/Oric Atmos_MiST/rtl/pll.vhd new file mode 100644 index 00000000..5572c5ef --- /dev/null +++ b/Oric Atmos_MiST/rtl/pll.vhd @@ -0,0 +1,429 @@ +-- 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.0 Build 162 10/23/2013 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2013 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY pll IS + PORT + ( + areset : IN STD_LOGIC := '0'; + inclk0 : IN STD_LOGIC := '0'; + c0 : OUT STD_LOGIC ; + c1 : OUT STD_LOGIC ; + c2 : OUT STD_LOGIC ; + locked : 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; + compensate_clock : STRING; + inclk0_input_frequency : NATURAL; + intended_device_family : STRING; + lpm_hint : STRING; + lpm_type : STRING; + operation_mode : STRING; + pll_type : STRING; + port_activeclock : STRING; + port_areset : STRING; + port_clkbad0 : STRING; + port_clkbad1 : STRING; + port_clkloss : STRING; + port_clkswitch : STRING; + port_configupdate : STRING; + port_fbin : STRING; + port_inclk0 : STRING; + port_inclk1 : STRING; + port_locked : STRING; + port_pfdena : STRING; + port_phasecounterselect : STRING; + port_phasedone : STRING; + port_phasestep : STRING; + port_phaseupdown : STRING; + port_pllena : STRING; + port_scanaclr : STRING; + port_scanclk : STRING; + port_scanclkena : STRING; + port_scandata : STRING; + port_scandataout : STRING; + port_scandone : STRING; + port_scanread : STRING; + port_scanwrite : STRING; + port_clk0 : STRING; + port_clk1 : STRING; + port_clk2 : STRING; + port_clk3 : STRING; + port_clk4 : STRING; + port_clk5 : STRING; + port_clkena0 : STRING; + port_clkena1 : STRING; + port_clkena2 : STRING; + port_clkena3 : STRING; + port_clkena4 : STRING; + port_clkena5 : STRING; + port_extclk0 : STRING; + port_extclk1 : STRING; + port_extclk2 : STRING; + port_extclk3 : STRING; + self_reset_on_loss_lock : STRING; + width_clock : NATURAL + ); + PORT ( + areset : IN STD_LOGIC ; + clk : OUT STD_LOGIC_VECTOR (4 DOWNTO 0); + inclk : IN STD_LOGIC_VECTOR (1 DOWNTO 0); + locked : OUT STD_LOGIC + ); + END COMPONENT; + +BEGIN + sub_wire7_bv(0 DOWNTO 0) <= "0"; + sub_wire7 <= To_stdlogicvector(sub_wire7_bv); + sub_wire4 <= sub_wire0(2); + sub_wire3 <= sub_wire0(0); + sub_wire1 <= sub_wire0(1); + c1 <= sub_wire1; + locked <= 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 => 9, + clk0_duty_cycle => 50, + clk0_multiply_by => 8, + clk0_phase_shift => "0", + clk1_divide_by => 9, + clk1_duty_cycle => 50, + clk1_multiply_by => 4, + clk1_phase_shift => "0", + clk2_divide_by => 9, + clk2_duty_cycle => 50, + clk2_multiply_by => 2, + clk2_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_USED", + port_pfdena => "PORT_UNUSED", + port_phasecounterselect => "PORT_UNUSED", + port_phasedone => "PORT_UNUSED", + port_phasestep => "PORT_UNUSED", + port_phaseupdown => "PORT_UNUSED", + port_pllena => "PORT_UNUSED", + port_scanaclr => "PORT_UNUSED", + port_scanclk => "PORT_UNUSED", + port_scanclkena => "PORT_UNUSED", + port_scandata => "PORT_UNUSED", + port_scandataout => "PORT_UNUSED", + port_scandone => "PORT_UNUSED", + port_scanread => "PORT_UNUSED", + port_scanwrite => "PORT_UNUSED", + port_clk0 => "PORT_USED", + port_clk1 => "PORT_USED", + port_clk2 => "PORT_USED", + port_clk3 => "PORT_UNUSED", + port_clk4 => "PORT_UNUSED", + port_clk5 => "PORT_UNUSED", + port_clkena0 => "PORT_UNUSED", + port_clkena1 => "PORT_UNUSED", + port_clkena2 => "PORT_UNUSED", + port_clkena3 => "PORT_UNUSED", + port_clkena4 => "PORT_UNUSED", + port_clkena5 => "PORT_UNUSED", + port_extclk0 => "PORT_UNUSED", + port_extclk1 => "PORT_UNUSED", + port_extclk2 => "PORT_UNUSED", + port_extclk3 => "PORT_UNUSED", + self_reset_on_loss_lock => "OFF", + width_clock => 5 + ) + PORT MAP ( + areset => areset, + inclk => sub_wire6, + clk => sub_wire0, + locked => sub_wire2 + ); + + + +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 "9" +-- Retrieval info: PRIVATE: DIV_FACTOR1 NUMERIC "9" +-- Retrieval info: PRIVATE: DIV_FACTOR2 NUMERIC "9" +-- 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: EFF_OUTPUT_FREQ_VALUE0 STRING "24.000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE1 STRING "12.000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE2 STRING "6.000000" +-- Retrieval info: PRIVATE: EXPLICIT_SWITCHOVER_COUNTER STRING "0" +-- Retrieval info: PRIVATE: EXT_FEEDBACK_RADIO STRING "0" +-- Retrieval info: PRIVATE: GLOCKED_COUNTER_EDIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: GLOCKED_FEATURE_ENABLED STRING "0" +-- Retrieval info: PRIVATE: GLOCKED_MODE_CHECK STRING "0" +-- Retrieval info: PRIVATE: GLOCK_COUNTER_EDIT NUMERIC "1048575" +-- Retrieval info: PRIVATE: HAS_MANUAL_SWITCHOVER STRING "1" +-- Retrieval info: PRIVATE: INCLK0_FREQ_EDIT STRING "27.000" +-- Retrieval info: PRIVATE: INCLK0_FREQ_UNIT_COMBO STRING "MHz" +-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT STRING "100.000" +-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_COMBO STRING "MHz" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: INT_FEEDBACK__MODE_RADIO STRING "1" +-- Retrieval info: PRIVATE: LOCKED_OUTPUT_CHECK STRING "1" +-- Retrieval info: PRIVATE: LONG_SCAN_RADIO STRING "1" +-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE STRING "Not Available" +-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE_DIRTY NUMERIC "0" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT0 STRING "deg" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT1 STRING "deg" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT2 STRING "deg" +-- 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: MULT_FACTOR0 NUMERIC "8" +-- Retrieval info: PRIVATE: MULT_FACTOR1 NUMERIC "4" +-- Retrieval info: PRIVATE: MULT_FACTOR2 NUMERIC "2" +-- Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "1" +-- Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "24.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ1 STRING "12.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ2 STRING "6.00000000" +-- 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_UNIT0 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT1 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT2 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_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: 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: 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_CLKENA0 STRING "0" +-- Retrieval info: PRIVATE: USE_CLKENA1 STRING "0" +-- Retrieval info: PRIVATE: USE_CLKENA2 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 "9" +-- Retrieval info: CONSTANT: CLK0_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK0_MULTIPLY_BY NUMERIC "8" +-- Retrieval info: CONSTANT: CLK0_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: CLK1_DIVIDE_BY NUMERIC "9" +-- Retrieval info: CONSTANT: CLK1_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK1_MULTIPLY_BY NUMERIC "4" +-- Retrieval info: CONSTANT: CLK1_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: CLK2_DIVIDE_BY NUMERIC "9" +-- Retrieval info: CONSTANT: CLK2_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK2_MULTIPLY_BY NUMERIC "2" +-- Retrieval info: CONSTANT: CLK2_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: COMPENSATE_CLOCK STRING "CLK0" +-- Retrieval info: CONSTANT: INCLK0_INPUT_FREQUENCY NUMERIC "37037" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altpll" +-- Retrieval info: CONSTANT: OPERATION_MODE STRING "NORMAL" +-- Retrieval info: CONSTANT: PLL_TYPE STRING "AUTO" +-- Retrieval info: CONSTANT: PORT_ACTIVECLOCK STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_ARESET STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_CLKBAD0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKBAD1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKLOSS STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKSWITCH STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CONFIGUPDATE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_FBIN STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_INCLK0 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_INCLK1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_LOCKED STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_PFDENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASECOUNTERSELECT STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASEDONE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASESTEP STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASEUPDOWN STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PLLENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANACLR STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANCLK STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANCLKENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDATA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDATAOUT STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDONE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANREAD STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANWRITE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk0 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk1 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk2 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk4 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk5 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena4 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena5 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: SELF_RESET_ON_LOSS_LOCK STRING "OFF" +-- Retrieval info: CONSTANT: WIDTH_CLOCK NUMERIC "5" +-- Retrieval info: USED_PORT: @clk 0 0 5 0 OUTPUT_CLK_EXT VCC "@clk[4..0]" +-- Retrieval info: USED_PORT: @inclk 0 0 2 0 INPUT_CLK_EXT VCC "@inclk[1..0]" +-- Retrieval info: USED_PORT: areset 0 0 0 0 INPUT GND "areset" +-- Retrieval info: USED_PORT: c0 0 0 0 0 OUTPUT_CLK_EXT VCC "c0" +-- Retrieval info: USED_PORT: c1 0 0 0 0 OUTPUT_CLK_EXT VCC "c1" +-- Retrieval info: USED_PORT: c2 0 0 0 0 OUTPUT_CLK_EXT VCC "c2" +-- Retrieval info: USED_PORT: inclk0 0 0 0 0 INPUT_CLK_EXT GND "inclk0" +-- Retrieval info: USED_PORT: locked 0 0 0 0 OUTPUT GND "locked" +-- Retrieval info: CONNECT: @areset 0 0 0 0 areset 0 0 0 0 +-- Retrieval info: CONNECT: @inclk 0 0 1 1 GND 0 0 0 0 +-- Retrieval info: CONNECT: @inclk 0 0 1 0 inclk0 0 0 0 0 +-- Retrieval info: CONNECT: c0 0 0 0 0 @clk 0 0 1 0 +-- Retrieval info: CONNECT: c1 0 0 0 0 @clk 0 0 1 1 +-- Retrieval info: CONNECT: c2 0 0 0 0 @clk 0 0 1 2 +-- Retrieval info: CONNECT: locked 0 0 0 0 @locked 0 0 0 0 +-- 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 TRUE +-- 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/Oric Atmos_MiST/rtl/ps2key.vhd b/Oric Atmos_MiST/rtl/ps2key.vhd new file mode 100644 index 00000000..74d5441d --- /dev/null +++ b/Oric Atmos_MiST/rtl/ps2key.vhd @@ -0,0 +1,120 @@ +-- base sur les infos des pages suivantes : +-- http://www.computer-engineering.org/ps2protocol/ +-- http://www.computer-engineering.org/ps2keyboard/ +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_ARITH.ALL; +use IEEE.STD_LOGIC_UNSIGNED.ALL; + +entity ps2key is + generic ( + FREQ : integer := 24 + ); + port( + CLK : in std_logic; + RESET : in std_logic; + + PS2CLK : in std_logic; + PS2DATA : in std_logic; + + BREAK : out std_logic; + EXTENDED : out std_logic; + CODE : out std_logic_vector(6 downto 0); + LATCH : out std_logic + ); +end ps2key; + +architecture rtl of ps2key is +constant CLKCNT_SAMPLE : integer := FREQ * 20; -- 20us apres transition de l'horloge + +-- Sampling +signal clkcnt : std_logic_vector(15 downto 0); +signal shift : std_logic; +signal idlcnt : std_logic_vector(15 downto 0); + +-- Shifting +signal bitcnt : std_logic_vector(3 downto 0); +signal cready : std_logic; +signal char : std_logic_vector(10 downto 0); + +-- Decodage +signal brkcode : std_logic; +signal extcode : std_logic; + +-- Signal de controle +signal kready : std_logic; + +begin + +process(RESET, CLK, PS2CLK, PS2DATA) +begin + if RESET = '1' then + clkcnt <= (others => '0'); + shift <= '0'; + + bitcnt <= x"0"; + cready <= '0'; + char <= (others => '0'); + + brkcode <= '0'; + extcode <= '0'; + kready <= '0'; + + elsif rising_edge(CLK) then + + -- Sampling des bits + if PS2CLK = '1' then + shift <= '0'; + clkcnt <= (others => '0'); + else + clkcnt <= clkcnt + 1; + if clkcnt = CLKCNT_SAMPLE then + shift <= '1'; + else + shift <= '0'; + end if; + end if; + + -- Bit-shifting + if shift = '1' then + char <= PS2DATA & char(10 downto 1); + + if bitcnt = x"A" then + bitcnt <= x"0"; + cready <= '1'; + else + bitcnt <= bitcnt + 1; + end if; + end if; + + -- Decodage sequence + if cready = '1' then + cready <= '0'; + if char(8 downto 1) = x"E0" then + extcode <= '1'; + kready <= '0'; + elsif char(8 downto 1) = x"F0" then + brkcode <= '1'; + kready <= '0'; + elsif char(8) = '1' then -- les codes > 0x7F sont reserves apparemment + kready <= '0'; + else + kready <= '1'; + end if; + else + if kready = '1' then + brkcode <= '0'; + extcode <= '0'; + kready <= '0'; + end if; + end if; + + end if; +end process; + +BREAK <= brkcode; +EXTENDED <= extcode; +CODE <= char(7 downto 1); +LATCH <= kready; + +end rtl; \ No newline at end of file diff --git a/Oric Atmos_MiST/rtl/ram16k.qip b/Oric Atmos_MiST/rtl/ram16k.qip new file mode 100644 index 00000000..3d87ecde --- /dev/null +++ b/Oric Atmos_MiST/rtl/ram16k.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "RAM: 1-PORT" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "ram16k.vhd"] diff --git a/Oric Atmos_MiST/rtl/ram16k.vhd b/Oric Atmos_MiST/rtl/ram16k.vhd new file mode 100644 index 00000000..f99e4f93 --- /dev/null +++ b/Oric Atmos_MiST/rtl/ram16k.vhd @@ -0,0 +1,160 @@ +-- megafunction wizard: %RAM: 1-PORT% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altsyncram + +-- ============================================================ +-- File Name: ram16k.vhd +-- Megafunction Name(s): +-- altsyncram +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 13.1.0 Build 162 10/23/2013 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2013 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.altera_mf_components.all; + +ENTITY ram16k IS + PORT + ( + address : IN STD_LOGIC_VECTOR (13 DOWNTO 0); + clock : IN STD_LOGIC := '1'; + data : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + rden : IN STD_LOGIC := '1'; + wren : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) + ); +END ram16k; + + +ARCHITECTURE SYN OF ram16k IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (7 DOWNTO 0); + +BEGIN + q <= sub_wire0(7 DOWNTO 0); + + altsyncram_component : altsyncram + GENERIC MAP ( + clock_enable_input_a => "BYPASS", + clock_enable_output_a => "BYPASS", + intended_device_family => "Cyclone III", + lpm_hint => "ENABLE_RUNTIME_MOD=NO", + lpm_type => "altsyncram", + numwords_a => 16384, + operation_mode => "SINGLE_PORT", + outdata_aclr_a => "NONE", + outdata_reg_a => "CLOCK0", + power_up_uninitialized => "FALSE", + read_during_write_mode_port_a => "NEW_DATA_NO_NBE_READ", + widthad_a => 14, + width_a => 8, + width_byteena_a => 1 + ) + PORT MAP ( + address_a => address, + clock0 => clock, + data_a => data, + wren_a => wren, + rden_a => rden, + q_a => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ADDRESSSTALL_A NUMERIC "0" +-- Retrieval info: PRIVATE: AclrAddr NUMERIC "0" +-- Retrieval info: PRIVATE: AclrByte NUMERIC "0" +-- Retrieval info: PRIVATE: AclrData NUMERIC "0" +-- Retrieval info: PRIVATE: AclrOutput NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_ENABLE NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_SIZE NUMERIC "8" +-- Retrieval info: PRIVATE: BlankMemory NUMERIC "1" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_A NUMERIC "0" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_A NUMERIC "0" +-- Retrieval info: PRIVATE: Clken NUMERIC "0" +-- Retrieval info: PRIVATE: DataBusSeparated NUMERIC "1" +-- Retrieval info: PRIVATE: IMPLEMENT_IN_LES NUMERIC "0" +-- Retrieval info: PRIVATE: INIT_FILE_LAYOUT STRING "PORT_A" +-- Retrieval info: PRIVATE: INIT_TO_SIM_X NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" +-- Retrieval info: PRIVATE: JTAG_ID STRING "NONE" +-- Retrieval info: PRIVATE: MAXIMUM_DEPTH NUMERIC "0" +-- Retrieval info: PRIVATE: MIFfilename STRING "" +-- Retrieval info: PRIVATE: NUMWORDS_A NUMERIC "16384" +-- Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" +-- Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_PORT_A NUMERIC "3" +-- Retrieval info: PRIVATE: RegAddr NUMERIC "1" +-- Retrieval info: PRIVATE: RegData NUMERIC "1" +-- Retrieval info: PRIVATE: RegOutput NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: SingleClock NUMERIC "1" +-- Retrieval info: PRIVATE: UseDQRAM NUMERIC "1" +-- Retrieval info: PRIVATE: WRCONTROL_ACLR_A NUMERIC "0" +-- Retrieval info: PRIVATE: WidthAddr NUMERIC "14" +-- Retrieval info: PRIVATE: WidthData NUMERIC "8" +-- Retrieval info: PRIVATE: rden NUMERIC "1" +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_A STRING "BYPASS" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_A STRING "BYPASS" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: LPM_HINT STRING "ENABLE_RUNTIME_MOD=NO" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altsyncram" +-- Retrieval info: CONSTANT: NUMWORDS_A NUMERIC "16384" +-- Retrieval info: CONSTANT: OPERATION_MODE STRING "SINGLE_PORT" +-- Retrieval info: CONSTANT: OUTDATA_ACLR_A STRING "NONE" +-- Retrieval info: CONSTANT: OUTDATA_REG_A STRING "CLOCK0" +-- Retrieval info: CONSTANT: POWER_UP_UNINITIALIZED STRING "FALSE" +-- Retrieval info: CONSTANT: READ_DURING_WRITE_MODE_PORT_A STRING "NEW_DATA_NO_NBE_READ" +-- Retrieval info: CONSTANT: WIDTHAD_A NUMERIC "14" +-- Retrieval info: CONSTANT: WIDTH_A NUMERIC "8" +-- Retrieval info: CONSTANT: WIDTH_BYTEENA_A NUMERIC "1" +-- Retrieval info: USED_PORT: address 0 0 14 0 INPUT NODEFVAL "address[13..0]" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT VCC "clock" +-- Retrieval info: USED_PORT: data 0 0 8 0 INPUT NODEFVAL "data[7..0]" +-- Retrieval info: USED_PORT: q 0 0 8 0 OUTPUT NODEFVAL "q[7..0]" +-- Retrieval info: USED_PORT: rden 0 0 0 0 INPUT VCC "rden" +-- Retrieval info: USED_PORT: wren 0 0 0 0 INPUT NODEFVAL "wren" +-- Retrieval info: CONNECT: @address_a 0 0 14 0 address 0 0 14 0 +-- Retrieval info: CONNECT: @clock0 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: @data_a 0 0 8 0 data 0 0 8 0 +-- Retrieval info: CONNECT: @rden_a 0 0 0 0 rden 0 0 0 0 +-- Retrieval info: CONNECT: @wren_a 0 0 0 0 wren 0 0 0 0 +-- Retrieval info: CONNECT: q 0 0 8 0 @q_a 0 0 8 0 +-- Retrieval info: GEN_FILE: TYPE_NORMAL ram16k.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL ram16k.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL ram16k.cmp FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL ram16k.bsf FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL ram16k_inst.vhd FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/Oric Atmos_MiST/rtl/ram32k.qip b/Oric Atmos_MiST/rtl/ram32k.qip new file mode 100644 index 00000000..7c70dd31 --- /dev/null +++ b/Oric Atmos_MiST/rtl/ram32k.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "RAM: 1-PORT" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "ram32k.vhd"] diff --git a/Oric Atmos_MiST/rtl/ram32k.vhd b/Oric Atmos_MiST/rtl/ram32k.vhd new file mode 100644 index 00000000..10eece41 --- /dev/null +++ b/Oric Atmos_MiST/rtl/ram32k.vhd @@ -0,0 +1,160 @@ +-- megafunction wizard: %RAM: 1-PORT% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altsyncram + +-- ============================================================ +-- File Name: ram32k.vhd +-- Megafunction Name(s): +-- altsyncram +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 13.1.0 Build 162 10/23/2013 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2013 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.altera_mf_components.all; + +ENTITY ram32k IS + PORT + ( + address : IN STD_LOGIC_VECTOR (14 DOWNTO 0); + clken : IN STD_LOGIC := '1'; + clock : IN STD_LOGIC := '1'; + data : IN STD_LOGIC_VECTOR (7 DOWNTO 0); + wren : IN STD_LOGIC ; + q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) + ); +END ram32k; + + +ARCHITECTURE SYN OF ram32k IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (7 DOWNTO 0); + +BEGIN + q <= sub_wire0(7 DOWNTO 0); + + altsyncram_component : altsyncram + GENERIC MAP ( + clock_enable_input_a => "NORMAL", + clock_enable_output_a => "NORMAL", + intended_device_family => "Cyclone III", + lpm_hint => "ENABLE_RUNTIME_MOD=NO", + lpm_type => "altsyncram", + numwords_a => 32768, + operation_mode => "SINGLE_PORT", + outdata_aclr_a => "NONE", + outdata_reg_a => "CLOCK0", + power_up_uninitialized => "FALSE", + read_during_write_mode_port_a => "NEW_DATA_NO_NBE_READ", + widthad_a => 15, + width_a => 8, + width_byteena_a => 1 + ) + PORT MAP ( + address_a => address, + clock0 => clock, + data_a => data, + wren_a => wren, + clocken0 => clken, + q_a => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ADDRESSSTALL_A NUMERIC "0" +-- Retrieval info: PRIVATE: AclrAddr NUMERIC "0" +-- Retrieval info: PRIVATE: AclrByte NUMERIC "0" +-- Retrieval info: PRIVATE: AclrData NUMERIC "0" +-- Retrieval info: PRIVATE: AclrOutput NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_ENABLE NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_SIZE NUMERIC "8" +-- Retrieval info: PRIVATE: BlankMemory NUMERIC "1" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_A NUMERIC "1" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_A NUMERIC "1" +-- Retrieval info: PRIVATE: Clken NUMERIC "1" +-- Retrieval info: PRIVATE: DataBusSeparated NUMERIC "1" +-- Retrieval info: PRIVATE: IMPLEMENT_IN_LES NUMERIC "0" +-- Retrieval info: PRIVATE: INIT_FILE_LAYOUT STRING "PORT_A" +-- Retrieval info: PRIVATE: INIT_TO_SIM_X NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" +-- Retrieval info: PRIVATE: JTAG_ID STRING "NONE" +-- Retrieval info: PRIVATE: MAXIMUM_DEPTH NUMERIC "0" +-- Retrieval info: PRIVATE: MIFfilename STRING "" +-- Retrieval info: PRIVATE: NUMWORDS_A NUMERIC "32768" +-- Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" +-- Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_PORT_A NUMERIC "3" +-- Retrieval info: PRIVATE: RegAddr NUMERIC "1" +-- Retrieval info: PRIVATE: RegData NUMERIC "1" +-- Retrieval info: PRIVATE: RegOutput NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: SingleClock NUMERIC "1" +-- Retrieval info: PRIVATE: UseDQRAM NUMERIC "1" +-- Retrieval info: PRIVATE: WRCONTROL_ACLR_A NUMERIC "0" +-- Retrieval info: PRIVATE: WidthAddr NUMERIC "15" +-- Retrieval info: PRIVATE: WidthData NUMERIC "8" +-- Retrieval info: PRIVATE: rden NUMERIC "0" +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_A STRING "NORMAL" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_A STRING "NORMAL" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: LPM_HINT STRING "ENABLE_RUNTIME_MOD=NO" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altsyncram" +-- Retrieval info: CONSTANT: NUMWORDS_A NUMERIC "32768" +-- Retrieval info: CONSTANT: OPERATION_MODE STRING "SINGLE_PORT" +-- Retrieval info: CONSTANT: OUTDATA_ACLR_A STRING "NONE" +-- Retrieval info: CONSTANT: OUTDATA_REG_A STRING "CLOCK0" +-- Retrieval info: CONSTANT: POWER_UP_UNINITIALIZED STRING "FALSE" +-- Retrieval info: CONSTANT: READ_DURING_WRITE_MODE_PORT_A STRING "NEW_DATA_NO_NBE_READ" +-- Retrieval info: CONSTANT: WIDTHAD_A NUMERIC "15" +-- Retrieval info: CONSTANT: WIDTH_A NUMERIC "8" +-- Retrieval info: CONSTANT: WIDTH_BYTEENA_A NUMERIC "1" +-- Retrieval info: USED_PORT: address 0 0 15 0 INPUT NODEFVAL "address[14..0]" +-- Retrieval info: USED_PORT: clken 0 0 0 0 INPUT VCC "clken" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT VCC "clock" +-- Retrieval info: USED_PORT: data 0 0 8 0 INPUT NODEFVAL "data[7..0]" +-- Retrieval info: USED_PORT: q 0 0 8 0 OUTPUT NODEFVAL "q[7..0]" +-- Retrieval info: USED_PORT: wren 0 0 0 0 INPUT NODEFVAL "wren" +-- Retrieval info: CONNECT: @address_a 0 0 15 0 address 0 0 15 0 +-- Retrieval info: CONNECT: @clock0 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: @clocken0 0 0 0 0 clken 0 0 0 0 +-- Retrieval info: CONNECT: @data_a 0 0 8 0 data 0 0 8 0 +-- Retrieval info: CONNECT: @wren_a 0 0 0 0 wren 0 0 0 0 +-- Retrieval info: CONNECT: q 0 0 8 0 @q_a 0 0 8 0 +-- Retrieval info: GEN_FILE: TYPE_NORMAL ram32k.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL ram32k.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL ram32k.cmp FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL ram32k.bsf FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL ram32k_inst.vhd FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/Oric Atmos_MiST/rtl/ram48k.vhd b/Oric Atmos_MiST/rtl/ram48k.vhd new file mode 100644 index 00000000..64b89518 --- /dev/null +++ b/Oric Atmos_MiST/rtl/ram48k.vhd @@ -0,0 +1,87 @@ +-- +-- 48K RAM comprised of three smaller 16K RAMs +-- +-- (c) 2012 d18c7db(a)hotmail +-- +-- This program is free software; you can redistribute it and/or modify it under +-- the terms of the GNU General Public License version 3 or, at your option, +-- any later version as published by the Free Software Foundation. +-- +-- 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. +-- +-- For full details, see the GNU General Public License at www.gnu.org/licenses + +-- Changed for Mist FPGA Gehstock(2018) +library ieee; + use ieee.std_logic_1164.all; + use ieee.std_logic_unsigned.all; + use ieee.numeric_std.all; + +entity ram48k is +port ( + clk : in std_logic; + cs : in std_logic; + oe : in std_logic; + we : in std_logic; + addr : in std_logic_vector(15 downto 0); + di : in std_logic_vector( 7 downto 0); + do : out std_logic_vector( 7 downto 0) +); +end; + +architecture RTL of ram48k is + signal ro0, ro1, ro2, ro3 : std_logic_vector(7 downto 0); + signal cs0, cs1, cs2, cs3 : std_logic := '0'; +begin + cs0 <= '1'; +-- cs0 <= '1' when cs='1' and addr(15 downto 14)="00" else '0'; +-- cs1 <= '1' when cs='1' and addr(15 downto 14)="01" else '0'; +-- cs2 <= '1' when cs='1' and addr(15 downto 14)="10" else '0'; +-- cs3 <= '1' when cs='1' and addr(15 downto 14)="11" else '0'; + do <= ro0; + -- ro0 when oe='1' and cs0='1' else + -- ro1 when oe='1' and cs1='1' else + -- ro2 when oe='1' and cs2='1' else + -- ro3 when oe='1' and cs3='1' else + -- (others=>'0'); + +--16kb + RAM_0000_3FFF : entity work.spram + port map ( + clk_i => clk, + we_i => cs0 and we, + addr_i => addr(13 downto 0), + data_i => di, + data_o => ro0 + ); +--32kb +-- RAM_4000_7FFF : entity work.spram +-- port map ( +-- clk_i => clk, +-- we_i => cs1 and we, +-- addr_i => addr(13 downto 0), +-- data_i => di, +-- data_o => ro1 +-- ); +--48kb +-- RAM_8000_BFFF : entity work.spram +-- port map ( +-- clk_i => clk, +-- we_i => cs2 and we, +-- addr_i => addr(13 downto 0), +-- data_i => di, +-- data_o => ro2 +-- ); +--64kb +-- RAM_C000_FFFF : entity work.spram +-- port map ( +-- clk_i => clk, +-- we_i => cs3 and we, +-- addr_i => addr(13 downto 0), +-- data_i => di, +-- data_o => ro3 +-- ); + +end RTL; diff --git a/Oric Atmos_MiST/rtl/rom.vhd b/Oric Atmos_MiST/rtl/rom.vhd new file mode 100644 index 00000000..babb546c --- /dev/null +++ b/Oric Atmos_MiST/rtl/rom.vhd @@ -0,0 +1,2077 @@ +library ieee; + use ieee.std_logic_1164.all; + use ieee.std_logic_unsigned.all; + use ieee.numeric_std.all; + +entity rom is + port ( + CLK : in std_logic; + ADDR : in std_logic_vector(13 downto 0); + DATA : out std_logic_vector(7 downto 0) + ); +end; + +architecture RTL of rom is + + + type ROM_ARRAY is array(0 to 16383) of std_logic_vector(7 downto 0); + constant ROM : ROM_ARRAY := ( + x"4C",x"CC",x"EC",x"4C",x"71",x"C4",x"72",x"C9", -- 0x0000 + x"91",x"C6",x"86",x"E9",x"D0",x"E9",x"15",x"CD", -- 0x0008 + x"18",x"CD",x"11",x"CA",x"50",x"DA",x"A0",x"DA", -- 0x0010 + x"DD",x"D9",x"66",x"D9",x"84",x"DA",x"A0",x"DA", -- 0x0018 + x"54",x"C8",x"FC",x"C7",x"08",x"C8",x"97",x"CE", -- 0x0020 + x"3B",x"CA",x"54",x"CD",x"7D",x"D1",x"CD",x"CC", -- 0x0028 + x"88",x"CD",x"1B",x"CB",x"E4",x"C9",x"BC",x"C9", -- 0x0030 + x"6F",x"CA",x"51",x"C9",x"C7",x"C9",x"11",x"CA", -- 0x0038 + x"98",x"CA",x"CD",x"EB",x"E6",x"EB",x"0B",x"EC", -- 0x0040 + x"20",x"EC",x"32",x"EC",x"B4",x"FA",x"CA",x"FA", -- 0x0048 + x"E0",x"FA",x"9E",x"FA",x"FB",x"EA",x"FB",x"EA", -- 0x0050 + x"FB",x"EA",x"EF",x"EA",x"EF",x"EA",x"EF",x"EA", -- 0x0058 + x"EF",x"EA",x"EF",x"EA",x"EF",x"EA",x"EF",x"EA", -- 0x0060 + x"FB",x"EA",x"FB",x"EA",x"70",x"C9",x"C1",x"CA", -- 0x0068 + x"57",x"D9",x"5A",x"E8",x"08",x"E9",x"B9",x"D4", -- 0x0070 + x"4E",x"D9",x"AA",x"CB",x"9F",x"C9",x"47",x"C7", -- 0x0078 + x"0C",x"C7",x"45",x"CD",x"45",x"E9",x"12",x"CD", -- 0x0080 + x"ED",x"C6",x"21",x"DF",x"BD",x"DF",x"49",x"DF", -- 0x0088 + x"21",x"00",x"7E",x"D4",x"A6",x"D4",x"B5",x"D9", -- 0x0090 + x"FB",x"02",x"2E",x"E2",x"4F",x"E3",x"AF",x"DC", -- 0x0098 + x"AA",x"E2",x"8B",x"E3",x"92",x"E3",x"DB",x"E3", -- 0x00A0 + x"3F",x"E4",x"38",x"D9",x"83",x"D9",x"D4",x"DD", -- 0x00A8 + x"A6",x"D8",x"93",x"D5",x"D7",x"D8",x"B5",x"D8", -- 0x00B0 + x"16",x"D8",x"77",x"DE",x"0F",x"DF",x"0B",x"DF", -- 0x00B8 + x"DA",x"DA",x"3F",x"DA",x"45",x"EC",x"2A",x"D8", -- 0x00C0 + x"56",x"D8",x"61",x"D8",x"79",x"24",x"DB",x"79", -- 0x00C8 + x"0D",x"DB",x"7B",x"EF",x"DC",x"7B",x"E6",x"DD", -- 0x00D0 + x"7F",x"37",x"E2",x"50",x"E5",x"D0",x"46",x"E2", -- 0x00D8 + x"D0",x"7D",x"70",x"E2",x"5A",x"3B",x"D0",x"64", -- 0x00E0 + x"12",x"D1",x"45",x"4E",x"C4",x"45",x"44",x"49", -- 0x00E8 + x"D4",x"53",x"54",x"4F",x"52",x"C5",x"52",x"45", -- 0x00F0 + x"43",x"41",x"4C",x"CC",x"54",x"52",x"4F",x"CE", -- 0x00F8 + x"54",x"52",x"4F",x"46",x"C6",x"50",x"4F",x"D0", -- 0x0100 + x"50",x"4C",x"4F",x"D4",x"50",x"55",x"4C",x"CC", -- 0x0108 + x"4C",x"4F",x"52",x"45",x"D3",x"44",x"4F",x"4B", -- 0x0110 + x"C5",x"52",x"45",x"50",x"45",x"41",x"D4",x"55", -- 0x0118 + x"4E",x"54",x"49",x"CC",x"46",x"4F",x"D2",x"4C", -- 0x0120 + x"4C",x"49",x"53",x"D4",x"4C",x"50",x"52",x"49", -- 0x0128 + x"4E",x"D4",x"4E",x"45",x"58",x"D4",x"44",x"41", -- 0x0130 + x"54",x"C1",x"49",x"4E",x"50",x"55",x"D4",x"44", -- 0x0138 + x"49",x"CD",x"43",x"4C",x"D3",x"52",x"45",x"41", -- 0x0140 + x"C4",x"4C",x"45",x"D4",x"47",x"4F",x"54",x"CF", -- 0x0148 + x"52",x"55",x"CE",x"49",x"C6",x"52",x"45",x"53", -- 0x0150 + x"54",x"4F",x"52",x"C5",x"47",x"4F",x"53",x"55", -- 0x0158 + x"C2",x"52",x"45",x"54",x"55",x"52",x"CE",x"52", -- 0x0160 + x"45",x"CD",x"48",x"49",x"4D",x"45",x"CD",x"47", -- 0x0168 + x"52",x"41",x"C2",x"52",x"45",x"4C",x"45",x"41", -- 0x0170 + x"53",x"C5",x"54",x"45",x"58",x"D4",x"48",x"49", -- 0x0178 + x"52",x"45",x"D3",x"53",x"48",x"4F",x"4F",x"D4", -- 0x0180 + x"45",x"58",x"50",x"4C",x"4F",x"44",x"C5",x"5A", -- 0x0188 + x"41",x"D0",x"50",x"49",x"4E",x"C7",x"53",x"4F", -- 0x0190 + x"55",x"4E",x"C4",x"4D",x"55",x"53",x"49",x"C3", -- 0x0198 + x"50",x"4C",x"41",x"D9",x"43",x"55",x"52",x"53", -- 0x01A0 + x"45",x"D4",x"43",x"55",x"52",x"4D",x"4F",x"D6", -- 0x01A8 + x"44",x"52",x"41",x"D7",x"43",x"49",x"52",x"43", -- 0x01B0 + x"4C",x"C5",x"50",x"41",x"54",x"54",x"45",x"52", -- 0x01B8 + x"CE",x"46",x"49",x"4C",x"CC",x"43",x"48",x"41", -- 0x01C0 + x"D2",x"50",x"41",x"50",x"45",x"D2",x"49",x"4E", -- 0x01C8 + x"CB",x"53",x"54",x"4F",x"D0",x"4F",x"CE",x"57", -- 0x01D0 + x"41",x"49",x"D4",x"43",x"4C",x"4F",x"41",x"C4", -- 0x01D8 + x"43",x"53",x"41",x"56",x"C5",x"44",x"45",x"C6", -- 0x01E0 + x"50",x"4F",x"4B",x"C5",x"50",x"52",x"49",x"4E", -- 0x01E8 + x"D4",x"43",x"4F",x"4E",x"D4",x"4C",x"49",x"53", -- 0x01F0 + x"D4",x"43",x"4C",x"45",x"41",x"D2",x"47",x"45", -- 0x01F8 + x"D4",x"43",x"41",x"4C",x"CC",x"A1",x"4E",x"45", -- 0x0200 + x"D7",x"54",x"41",x"42",x"A8",x"54",x"CF",x"46", -- 0x0208 + x"CE",x"53",x"50",x"43",x"A8",x"C0",x"41",x"55", -- 0x0210 + x"54",x"CF",x"45",x"4C",x"53",x"C5",x"54",x"48", -- 0x0218 + x"45",x"CE",x"4E",x"4F",x"D4",x"53",x"54",x"45", -- 0x0220 + x"D0",x"AB",x"AD",x"AA",x"AF",x"DE",x"41",x"4E", -- 0x0228 + x"C4",x"4F",x"D2",x"BE",x"BD",x"BC",x"53",x"47", -- 0x0230 + x"CE",x"49",x"4E",x"D4",x"41",x"42",x"D3",x"55", -- 0x0238 + x"53",x"D2",x"46",x"52",x"C5",x"50",x"4F",x"D3", -- 0x0240 + x"48",x"45",x"58",x"A4",x"A6",x"53",x"51",x"D2", -- 0x0248 + x"52",x"4E",x"C4",x"4C",x"CE",x"45",x"58",x"D0", -- 0x0250 + x"43",x"4F",x"D3",x"53",x"49",x"CE",x"54",x"41", -- 0x0258 + x"CE",x"41",x"54",x"CE",x"50",x"45",x"45",x"CB", -- 0x0260 + x"44",x"45",x"45",x"CB",x"4C",x"4F",x"C7",x"4C", -- 0x0268 + x"45",x"CE",x"53",x"54",x"52",x"A4",x"56",x"41", -- 0x0270 + x"CC",x"41",x"53",x"C3",x"43",x"48",x"52",x"A4", -- 0x0278 + x"50",x"C9",x"54",x"52",x"55",x"C5",x"46",x"41", -- 0x0280 + x"4C",x"53",x"C5",x"4B",x"45",x"59",x"A4",x"53", -- 0x0288 + x"43",x"52",x"CE",x"50",x"4F",x"49",x"4E",x"D4", -- 0x0290 + x"4C",x"45",x"46",x"54",x"A4",x"52",x"49",x"47", -- 0x0298 + x"48",x"54",x"A4",x"4D",x"49",x"44",x"A4",x"00", -- 0x02A0 + x"4E",x"45",x"58",x"54",x"20",x"57",x"49",x"54", -- 0x02A8 + x"48",x"4F",x"55",x"54",x"20",x"46",x"4F",x"D2", -- 0x02B0 + x"53",x"59",x"4E",x"54",x"41",x"D8",x"52",x"45", -- 0x02B8 + x"54",x"55",x"52",x"4E",x"20",x"57",x"49",x"54", -- 0x02C0 + x"48",x"4F",x"55",x"54",x"20",x"47",x"4F",x"53", -- 0x02C8 + x"55",x"C2",x"4F",x"55",x"54",x"20",x"4F",x"46", -- 0x02D0 + x"20",x"44",x"41",x"54",x"C1",x"49",x"4C",x"4C", -- 0x02D8 + x"45",x"47",x"41",x"4C",x"20",x"51",x"55",x"41", -- 0x02E0 + x"4E",x"54",x"49",x"54",x"D9",x"4F",x"56",x"45", -- 0x02E8 + x"52",x"46",x"4C",x"4F",x"D7",x"4F",x"55",x"54", -- 0x02F0 + x"20",x"4F",x"46",x"20",x"4D",x"45",x"4D",x"4F", -- 0x02F8 + x"52",x"D9",x"55",x"4E",x"44",x"45",x"46",x"27", -- 0x0300 + x"44",x"20",x"53",x"54",x"41",x"54",x"45",x"4D", -- 0x0308 + x"45",x"4E",x"D4",x"42",x"41",x"44",x"20",x"53", -- 0x0310 + x"55",x"42",x"53",x"43",x"52",x"49",x"50",x"D4", -- 0x0318 + x"52",x"45",x"44",x"49",x"4D",x"27",x"44",x"20", -- 0x0320 + x"41",x"52",x"52",x"41",x"D9",x"44",x"49",x"56", -- 0x0328 + x"49",x"53",x"49",x"4F",x"4E",x"20",x"42",x"59", -- 0x0330 + x"20",x"5A",x"45",x"52",x"CF",x"49",x"4C",x"4C", -- 0x0338 + x"45",x"47",x"41",x"4C",x"20",x"44",x"49",x"52", -- 0x0340 + x"45",x"43",x"D4",x"44",x"49",x"53",x"50",x"20", -- 0x0348 + x"54",x"59",x"50",x"45",x"20",x"4D",x"49",x"53", -- 0x0350 + x"4D",x"41",x"54",x"43",x"C8",x"53",x"54",x"52", -- 0x0358 + x"49",x"4E",x"47",x"20",x"54",x"4F",x"4F",x"20", -- 0x0360 + x"4C",x"4F",x"4E",x"C7",x"46",x"4F",x"52",x"4D", -- 0x0368 + x"55",x"4C",x"41",x"20",x"54",x"4F",x"4F",x"20", -- 0x0370 + x"43",x"4F",x"4D",x"50",x"4C",x"45",x"D8",x"43", -- 0x0378 + x"41",x"4E",x"27",x"54",x"20",x"43",x"4F",x"4E", -- 0x0380 + x"54",x"49",x"4E",x"55",x"C5",x"55",x"4E",x"44", -- 0x0388 + x"45",x"46",x"27",x"44",x"20",x"46",x"55",x"4E", -- 0x0390 + x"43",x"54",x"49",x"4F",x"CE",x"42",x"41",x"44", -- 0x0398 + x"20",x"55",x"4E",x"54",x"49",x"CC",x"20",x"45", -- 0x03A0 + x"52",x"52",x"4F",x"52",x"00",x"20",x"49",x"4E", -- 0x03A8 + x"20",x"00",x"0D",x"0A",x"52",x"65",x"61",x"64", -- 0x03B0 + x"79",x"20",x"0D",x"0A",x"00",x"0D",x"0A",x"20", -- 0x03B8 + x"42",x"52",x"45",x"41",x"4B",x"00",x"BA",x"E8", -- 0x03C0 + x"E8",x"E8",x"E8",x"BD",x"01",x"01",x"C9",x"8D", -- 0x03C8 + x"D0",x"21",x"A5",x"B9",x"D0",x"0A",x"BD",x"02", -- 0x03D0 + x"01",x"85",x"B8",x"BD",x"03",x"01",x"85",x"B9", -- 0x03D8 + x"DD",x"03",x"01",x"D0",x"07",x"A5",x"B8",x"DD", -- 0x03E0 + x"02",x"01",x"F0",x"07",x"8A",x"18",x"69",x"12", -- 0x03E8 + x"AA",x"D0",x"D8",x"60",x"20",x"44",x"C4",x"85", -- 0x03F0 + x"A0",x"84",x"A1",x"38",x"A5",x"C9",x"E5",x"CE", -- 0x03F8 + x"85",x"91",x"A8",x"A5",x"CA",x"E5",x"CF",x"AA", -- 0x0400 + x"E8",x"98",x"F0",x"23",x"A5",x"C9",x"38",x"E5", -- 0x0408 + x"91",x"85",x"C9",x"B0",x"03",x"C6",x"CA",x"38", -- 0x0410 + x"A5",x"C7",x"E5",x"91",x"85",x"C7",x"B0",x"08", -- 0x0418 + x"C6",x"C8",x"90",x"04",x"B1",x"C9",x"91",x"C7", -- 0x0420 + x"88",x"D0",x"F9",x"B1",x"C9",x"91",x"C7",x"C6", -- 0x0428 + x"CA",x"C6",x"C8",x"CA",x"D0",x"F2",x"60",x"0A", -- 0x0430 + x"69",x"3E",x"B0",x"40",x"85",x"91",x"BA",x"E4", -- 0x0438 + x"91",x"90",x"39",x"60",x"C4",x"A3",x"90",x"28", -- 0x0440 + x"D0",x"04",x"C5",x"A2",x"90",x"22",x"48",x"A2", -- 0x0448 + x"09",x"98",x"48",x"B5",x"C6",x"CA",x"10",x"FA", -- 0x0450 + x"20",x"50",x"D6",x"A2",x"F7",x"68",x"95",x"D0", -- 0x0458 + x"E8",x"30",x"FA",x"68",x"A8",x"68",x"C4",x"A3", -- 0x0460 + x"90",x"06",x"D0",x"10",x"C5",x"A2",x"B0",x"0C", -- 0x0468 + x"60",x"AD",x"C0",x"02",x"29",x"FE",x"8D",x"C0", -- 0x0470 + x"02",x"4C",x"A8",x"C4",x"A2",x"4D",x"20",x"2F", -- 0x0478 + x"C8",x"46",x"2E",x"20",x"F0",x"CB",x"20",x"D7", -- 0x0480 + x"CC",x"BD",x"A8",x"C2",x"48",x"29",x"7F",x"20", -- 0x0488 + x"D9",x"CC",x"E8",x"68",x"10",x"F3",x"20",x"26", -- 0x0490 + x"C7",x"A9",x"A6",x"A0",x"C3",x"20",x"B0",x"CC", -- 0x0498 + x"A4",x"A9",x"C8",x"F0",x"03",x"20",x"BA",x"E0", -- 0x04A0 + x"4E",x"52",x"02",x"46",x"2E",x"4E",x"F2",x"02", -- 0x04A8 + x"A9",x"B2",x"A0",x"C3",x"20",x"1A",x"00",x"20", -- 0x04B0 + x"2F",x"C8",x"20",x"92",x"C5",x"86",x"E9",x"84", -- 0x04B8 + x"EA",x"20",x"E2",x"00",x"AA",x"F0",x"F0",x"A2", -- 0x04C0 + x"FF",x"86",x"A9",x"90",x"06",x"20",x"FA",x"C5", -- 0x04C8 + x"4C",x"0C",x"C9",x"20",x"E2",x"CA",x"20",x"FA", -- 0x04D0 + x"C5",x"84",x"26",x"20",x"B3",x"C6",x"90",x"44", -- 0x04D8 + x"A0",x"01",x"B1",x"CE",x"85",x"92",x"A5",x"9C", -- 0x04E0 + x"85",x"91",x"A5",x"CF",x"85",x"94",x"A5",x"CE", -- 0x04E8 + x"88",x"F1",x"CE",x"18",x"65",x"9C",x"85",x"9C", -- 0x04F0 + x"85",x"93",x"A5",x"9D",x"69",x"FF",x"85",x"9D", -- 0x04F8 + x"E5",x"CF",x"AA",x"38",x"A5",x"CE",x"E5",x"9C", -- 0x0500 + x"A8",x"B0",x"03",x"E8",x"C6",x"94",x"18",x"65", -- 0x0508 + x"91",x"90",x"03",x"C6",x"92",x"18",x"B1",x"91", -- 0x0510 + x"91",x"93",x"C8",x"D0",x"F9",x"E6",x"92",x"E6", -- 0x0518 + x"94",x"CA",x"D0",x"F2",x"20",x"08",x"C7",x"20", -- 0x0520 + x"5F",x"C5",x"A5",x"35",x"F0",x"89",x"18",x"A5", -- 0x0528 + x"9C",x"85",x"C9",x"65",x"26",x"85",x"C7",x"A4", -- 0x0530 + x"9D",x"84",x"CA",x"90",x"01",x"C8",x"84",x"C8", -- 0x0538 + x"20",x"F4",x"C3",x"A5",x"A0",x"A4",x"A1",x"85", -- 0x0540 + x"9C",x"84",x"9D",x"A4",x"26",x"88",x"B9",x"31", -- 0x0548 + x"00",x"91",x"CE",x"88",x"10",x"F8",x"20",x"08", -- 0x0550 + x"C7",x"20",x"5F",x"C5",x"4C",x"B7",x"C4",x"A5", -- 0x0558 + x"9A",x"A4",x"9B",x"85",x"91",x"84",x"92",x"18", -- 0x0560 + x"A0",x"01",x"B1",x"91",x"F0",x"1D",x"A0",x"04", -- 0x0568 + x"C8",x"B1",x"91",x"D0",x"FB",x"C8",x"98",x"65", -- 0x0570 + x"91",x"AA",x"A0",x"00",x"91",x"91",x"A5",x"92", -- 0x0578 + x"69",x"00",x"C8",x"91",x"91",x"86",x"91",x"85", -- 0x0580 + x"92",x"90",x"DD",x"60",x"CA",x"10",x"05",x"20", -- 0x0588 + x"F0",x"CB",x"A2",x"00",x"20",x"E8",x"C5",x"C9", -- 0x0590 + x"01",x"D0",x"0D",x"AC",x"69",x"02",x"B1",x"12", -- 0x0598 + x"29",x"7F",x"C9",x"20",x"B0",x"02",x"A9",x"09", -- 0x05A0 + x"48",x"20",x"D9",x"CC",x"68",x"C9",x"7F",x"F0", -- 0x05A8 + x"DB",x"C9",x"0D",x"F0",x"30",x"C9",x"03",x"F0", -- 0x05B0 + x"28",x"C9",x"18",x"F0",x"0B",x"C9",x"20",x"90", -- 0x05B8 + x"D3",x"95",x"35",x"E8",x"E0",x"4F",x"90",x"07", -- 0x05C0 + x"A9",x"5C",x"20",x"D9",x"CC",x"D0",x"C0",x"E0", -- 0x05C8 + x"4C",x"90",x"C1",x"8A",x"48",x"98",x"48",x"20", -- 0x05D0 + x"9F",x"FA",x"68",x"A8",x"68",x"AA",x"4C",x"94", -- 0x05D8 + x"C5",x"E6",x"17",x"A2",x"00",x"4C",x"EA",x"CB", -- 0x05E0 + x"20",x"3B",x"02",x"10",x"FB",x"C9",x"0F",x"D0", -- 0x05E8 + x"08",x"48",x"A5",x"2E",x"49",x"FF",x"85",x"2E", -- 0x05F0 + x"68",x"60",x"A6",x"E9",x"A0",x"04",x"84",x"2A", -- 0x05F8 + x"B5",x"00",x"C9",x"20",x"F0",x"41",x"85",x"25", -- 0x0600 + x"C9",x"22",x"F0",x"5F",x"24",x"2A",x"70",x"37", -- 0x0608 + x"C9",x"3F",x"D0",x"04",x"A9",x"BA",x"D0",x"2F", -- 0x0610 + x"C9",x"30",x"90",x"04",x"C9",x"3C",x"90",x"27", -- 0x0618 + x"84",x"E0",x"A0",x"00",x"84",x"26",x"A9",x"E9", -- 0x0620 + x"85",x"18",x"A9",x"C0",x"85",x"19",x"86",x"E9", -- 0x0628 + x"CA",x"E8",x"E6",x"18",x"D0",x"02",x"E6",x"19", -- 0x0630 + x"B5",x"00",x"38",x"F1",x"18",x"F0",x"F2",x"C9", -- 0x0638 + x"80",x"D0",x"2F",x"05",x"26",x"A4",x"E0",x"E8", -- 0x0640 + x"C8",x"99",x"30",x"00",x"B9",x"30",x"00",x"F0", -- 0x0648 + x"39",x"38",x"E9",x"3A",x"F0",x"04",x"C9",x"57", -- 0x0650 + x"D0",x"02",x"85",x"2A",x"38",x"E9",x"63",x"D0", -- 0x0658 + x"9F",x"85",x"25",x"B5",x"00",x"F0",x"E0",x"C5", -- 0x0660 + x"25",x"F0",x"DC",x"C8",x"99",x"30",x"00",x"E8", -- 0x0668 + x"D0",x"F1",x"A6",x"E9",x"E6",x"26",x"B1",x"18", -- 0x0670 + x"08",x"E6",x"18",x"D0",x"02",x"E6",x"19",x"28", -- 0x0678 + x"10",x"F4",x"B1",x"18",x"D0",x"B2",x"B5",x"00", -- 0x0680 + x"10",x"BB",x"99",x"32",x"00",x"A9",x"34",x"85", -- 0x0688 + x"E9",x"60",x"20",x"E2",x"CA",x"20",x"B3",x"C6", -- 0x0690 + x"90",x"16",x"6E",x"F2",x"02",x"20",x"6C",x"C7", -- 0x0698 + x"4E",x"F2",x"02",x"20",x"F0",x"CB",x"A9",x"0B", -- 0x06A0 + x"20",x"D9",x"CC",x"68",x"68",x"4C",x"B7",x"C4", -- 0x06A8 + x"4C",x"23",x"CA",x"A9",x"00",x"85",x"1D",x"85", -- 0x06B0 + x"1E",x"A5",x"9A",x"A6",x"9B",x"A0",x"01",x"85", -- 0x06B8 + x"CE",x"86",x"CF",x"B1",x"CE",x"F0",x"25",x"C8", -- 0x06C0 + x"C8",x"E6",x"1D",x"D0",x"02",x"E6",x"1E",x"A5", -- 0x06C8 + x"34",x"D1",x"CE",x"90",x"18",x"F0",x"03",x"88", -- 0x06D0 + x"D0",x"09",x"A5",x"33",x"88",x"D1",x"CE",x"90", -- 0x06D8 + x"0C",x"F0",x"0A",x"88",x"B1",x"CE",x"AA",x"88", -- 0x06E0 + x"B1",x"CE",x"B0",x"D1",x"18",x"60",x"D0",x"FD", -- 0x06E8 + x"A9",x"00",x"4E",x"F4",x"02",x"A8",x"91",x"9A", -- 0x06F0 + x"C8",x"91",x"9A",x"A5",x"9A",x"18",x"69",x"02", -- 0x06F8 + x"85",x"9C",x"A5",x"9B",x"69",x"00",x"85",x"9D", -- 0x0700 + x"20",x"3A",x"C7",x"A9",x"00",x"D0",x"2A",x"A5", -- 0x0708 + x"A6",x"A4",x"A7",x"85",x"A2",x"84",x"A3",x"A5", -- 0x0710 + x"9C",x"A4",x"9D",x"85",x"9E",x"84",x"9F",x"85", -- 0x0718 + x"A0",x"84",x"A1",x"20",x"52",x"C9",x"A2",x"88", -- 0x0720 + x"86",x"85",x"68",x"A8",x"68",x"A2",x"FE",x"9A", -- 0x0728 + x"48",x"98",x"48",x"A9",x"00",x"85",x"AD",x"85", -- 0x0730 + x"2B",x"60",x"18",x"A5",x"9A",x"69",x"FF",x"85", -- 0x0738 + x"E9",x"A5",x"9B",x"69",x"FF",x"85",x"EA",x"60", -- 0x0740 + x"08",x"20",x"E2",x"CA",x"20",x"B3",x"C6",x"28", -- 0x0748 + x"F0",x"14",x"20",x"E8",x"00",x"F0",x"15",x"C9", -- 0x0750 + x"CD",x"D0",x"92",x"20",x"E2",x"00",x"F0",x"06", -- 0x0758 + x"20",x"E2",x"CA",x"F0",x"07",x"60",x"A9",x"FF", -- 0x0760 + x"85",x"33",x"85",x"34",x"A0",x"01",x"B1",x"CE", -- 0x0768 + x"F0",x"4D",x"20",x"62",x"C9",x"C9",x"20",x"D0", -- 0x0770 + x"0E",x"4E",x"DF",x"02",x"AD",x"DF",x"02",x"10", -- 0x0778 + x"FB",x"20",x"62",x"C9",x"4E",x"DF",x"02",x"C8", -- 0x0780 + x"B1",x"CE",x"AA",x"C8",x"B1",x"CE",x"C5",x"34", -- 0x0788 + x"D0",x"04",x"E4",x"33",x"F0",x"02",x"B0",x"27", -- 0x0790 + x"84",x"B8",x"48",x"20",x"F0",x"CB",x"68",x"20", -- 0x0798 + x"C5",x"E0",x"A9",x"20",x"A4",x"B8",x"29",x"7F", -- 0x07A0 + x"20",x"D9",x"CC",x"C8",x"F0",x"11",x"B1",x"CE", -- 0x07A8 + x"D0",x"1E",x"A8",x"B1",x"CE",x"AA",x"C8",x"B1", -- 0x07B0 + x"CE",x"86",x"CE",x"85",x"CF",x"D0",x"AD",x"2C", -- 0x07B8 + x"F2",x"02",x"10",x"01",x"60",x"20",x"F0",x"CB", -- 0x07C0 + x"20",x"2F",x"C8",x"68",x"68",x"4C",x"A8",x"C4", -- 0x07C8 + x"10",x"D6",x"38",x"E9",x"7F",x"AA",x"84",x"B8", -- 0x07D0 + x"A0",x"00",x"A9",x"E9",x"85",x"18",x"A9",x"C0", -- 0x07D8 + x"85",x"19",x"CA",x"F0",x"0D",x"E6",x"18",x"D0", -- 0x07E0 + x"02",x"E6",x"19",x"B1",x"18",x"10",x"F6",x"4C", -- 0x07E8 + x"E2",x"C7",x"C8",x"B1",x"18",x"30",x"AD",x"20", -- 0x07F0 + x"D9",x"CC",x"4C",x"F2",x"C7",x"20",x"16",x"C8", -- 0x07F8 + x"4E",x"F2",x"02",x"20",x"E8",x"00",x"4C",x"48", -- 0x0800 + x"C7",x"20",x"16",x"C8",x"20",x"E8",x"00",x"20", -- 0x0808 + x"AB",x"CB",x"20",x"2F",x"C8",x"60",x"2C",x"F1", -- 0x0810 + x"02",x"30",x"39",x"A5",x"30",x"8D",x"59",x"02", -- 0x0818 + x"AD",x"58",x"02",x"85",x"30",x"38",x"6E",x"F1", -- 0x0820 + x"02",x"AD",x"56",x"02",x"4C",x"44",x"C8",x"2C", -- 0x0828 + x"F1",x"02",x"10",x"20",x"A5",x"30",x"8D",x"58", -- 0x0830 + x"02",x"AD",x"59",x"02",x"85",x"30",x"4E",x"F1", -- 0x0838 + x"02",x"AD",x"57",x"02",x"85",x"31",x"38",x"E9", -- 0x0840 + x"08",x"B0",x"FB",x"49",x"FF",x"E9",x"06",x"18", -- 0x0848 + x"65",x"31",x"85",x"32",x"60",x"A9",x"80",x"85", -- 0x0850 + x"2B",x"20",x"1C",x"CB",x"20",x"C6",x"C3",x"D0", -- 0x0858 + x"05",x"8A",x"69",x"0F",x"AA",x"9A",x"68",x"68", -- 0x0860 + x"A9",x"09",x"20",x"37",x"C4",x"20",x"4E",x"CA", -- 0x0868 + x"18",x"98",x"65",x"E9",x"48",x"A5",x"EA",x"69", -- 0x0870 + x"00",x"48",x"A5",x"A9",x"48",x"A5",x"A8",x"48", -- 0x0878 + x"A9",x"C3",x"20",x"67",x"D0",x"20",x"06",x"CF", -- 0x0880 + x"20",x"03",x"CF",x"A5",x"D5",x"09",x"7F",x"25", -- 0x0888 + x"D1",x"85",x"D1",x"A9",x"9E",x"A0",x"C8",x"85", -- 0x0890 + x"91",x"84",x"92",x"4C",x"C0",x"CF",x"A9",x"81", -- 0x0898 + x"A0",x"DC",x"20",x"7B",x"DE",x"20",x"E8",x"00", -- 0x08A0 + x"C9",x"CB",x"D0",x"06",x"20",x"E2",x"00",x"20", -- 0x08A8 + x"03",x"CF",x"20",x"13",x"DF",x"20",x"B1",x"CF", -- 0x08B0 + x"A5",x"B9",x"48",x"A5",x"B8",x"48",x"A9",x"8D", -- 0x08B8 + x"48",x"20",x"62",x"C9",x"A5",x"E9",x"A4",x"EA", -- 0x08C0 + x"F0",x"06",x"85",x"AC",x"84",x"AD",x"A0",x"00", -- 0x08C8 + x"B1",x"E9",x"D0",x"5B",x"4E",x"52",x"02",x"A0", -- 0x08D0 + x"02",x"B1",x"E9",x"18",x"D0",x"03",x"4C",x"8A", -- 0x08D8 + x"C9",x"C8",x"B1",x"E9",x"85",x"A8",x"C8",x"B1", -- 0x08E0 + x"E9",x"85",x"A9",x"98",x"65",x"E9",x"85",x"E9", -- 0x08E8 + x"90",x"02",x"E6",x"EA",x"2C",x"F4",x"02",x"10", -- 0x08F0 + x"13",x"48",x"A9",x"5B",x"20",x"FB",x"CC",x"A5", -- 0x08F8 + x"A9",x"A6",x"A8",x"20",x"C5",x"E0",x"A9",x"5D", -- 0x0900 + x"20",x"FB",x"CC",x"68",x"20",x"E2",x"00",x"20", -- 0x0908 + x"15",x"C9",x"4C",x"C1",x"C8",x"F0",x"49",x"E9", -- 0x0910 + x"80",x"90",x"11",x"C9",x"42",x"B0",x"30",x"0A", -- 0x0918 + x"A8",x"B9",x"07",x"C0",x"48",x"B9",x"06",x"C0", -- 0x0920 + x"48",x"4C",x"E2",x"00",x"4C",x"1C",x"CB",x"C9", -- 0x0928 + x"3A",x"F0",x"C1",x"C9",x"C8",x"D0",x"0E",x"2C", -- 0x0930 + x"52",x"02",x"10",x"13",x"20",x"B1",x"CA",x"4E", -- 0x0938 + x"52",x"02",x"4C",x"C1",x"C8",x"C9",x"27",x"D0", -- 0x0940 + x"06",x"20",x"99",x"CA",x"4C",x"C1",x"C8",x"4C", -- 0x0948 + x"70",x"D0",x"38",x"A5",x"9A",x"E9",x"01",x"A4", -- 0x0950 + x"9B",x"B0",x"01",x"88",x"85",x"B0",x"84",x"B1", -- 0x0958 + x"60",x"60",x"AD",x"DF",x"02",x"10",x"F9",x"29", -- 0x0960 + x"7F",x"A2",x"08",x"C9",x"03",x"D0",x"F2",x"C9", -- 0x0968 + x"03",x"B0",x"01",x"18",x"D0",x"43",x"A5",x"E9", -- 0x0970 + x"A4",x"EA",x"F0",x"0C",x"85",x"AC",x"84",x"AD", -- 0x0978 + x"A5",x"A8",x"A4",x"A9",x"85",x"AA",x"84",x"AB", -- 0x0980 + x"68",x"68",x"A9",x"BD",x"A0",x"C3",x"A2",x"00", -- 0x0988 + x"8E",x"F1",x"02",x"8E",x"DF",x"02",x"86",x"2E", -- 0x0990 + x"90",x"03",x"4C",x"9D",x"C4",x"4C",x"A8",x"C4", -- 0x0998 + x"D0",x"17",x"A2",x"D7",x"A4",x"AD",x"D0",x"03", -- 0x09A0 + x"4C",x"7E",x"C4",x"A5",x"AC",x"85",x"E9",x"84", -- 0x09A8 + x"EA",x"A5",x"AA",x"A4",x"AB",x"85",x"A8",x"84", -- 0x09B0 + x"A9",x"60",x"4C",x"36",x"D3",x"D0",x"03",x"4C", -- 0x09B8 + x"08",x"C7",x"20",x"0F",x"C7",x"4C",x"DC",x"C9", -- 0x09C0 + x"A9",x"03",x"20",x"37",x"C4",x"A5",x"EA",x"48", -- 0x09C8 + x"A5",x"E9",x"48",x"A5",x"A9",x"48",x"A5",x"A8", -- 0x09D0 + x"48",x"A9",x"9B",x"48",x"20",x"E8",x"00",x"20", -- 0x09D8 + x"E5",x"C9",x"4C",x"C1",x"C8",x"20",x"53",x"E8", -- 0x09E0 + x"20",x"51",x"CA",x"A5",x"A9",x"C5",x"34",x"B0", -- 0x09E8 + x"0B",x"98",x"38",x"65",x"E9",x"A6",x"EA",x"90", -- 0x09F0 + x"07",x"E8",x"B0",x"04",x"A5",x"9A",x"A6",x"9B", -- 0x09F8 + x"20",x"BD",x"C6",x"90",x"1E",x"A5",x"CE",x"E9", -- 0x0A00 + x"01",x"85",x"E9",x"A5",x"CF",x"E9",x"00",x"85", -- 0x0A08 + x"EA",x"60",x"D0",x"FD",x"A9",x"FF",x"85",x"B9", -- 0x0A10 + x"20",x"C6",x"C3",x"9A",x"C9",x"9B",x"F0",x"0B", -- 0x0A18 + x"A2",x"16",x"2C",x"A2",x"5A",x"4C",x"7E",x"C4", -- 0x0A20 + x"4C",x"70",x"D0",x"68",x"68",x"C0",x"0C",x"F0", -- 0x0A28 + x"19",x"85",x"A8",x"68",x"85",x"A9",x"68",x"85", -- 0x0A30 + x"E9",x"68",x"85",x"EA",x"20",x"4E",x"CA",x"98", -- 0x0A38 + x"18",x"65",x"E9",x"85",x"E9",x"90",x"02",x"E6", -- 0x0A40 + x"EA",x"60",x"68",x"68",x"68",x"60",x"A2",x"3A", -- 0x0A48 + x"2C",x"A2",x"00",x"86",x"24",x"A0",x"00",x"84", -- 0x0A50 + x"25",x"A5",x"25",x"A6",x"24",x"85",x"24",x"86", -- 0x0A58 + x"25",x"B1",x"E9",x"F0",x"E4",x"C5",x"25",x"F0", -- 0x0A60 + x"E0",x"C8",x"C9",x"22",x"D0",x"F3",x"F0",x"E9", -- 0x0A68 + x"20",x"17",x"CF",x"20",x"E8",x"00",x"C9",x"97", -- 0x0A70 + x"F0",x"05",x"A9",x"C9",x"20",x"67",x"D0",x"A5", -- 0x0A78 + x"D0",x"D0",x"05",x"20",x"9E",x"CA",x"F0",x"B7", -- 0x0A80 + x"20",x"E8",x"00",x"B0",x"03",x"4C",x"E5",x"C9", -- 0x0A88 + x"08",x"38",x"6E",x"52",x"02",x"28",x"4C",x"15", -- 0x0A90 + x"C9",x"20",x"51",x"CA",x"F0",x"A1",x"A0",x"00", -- 0x0A98 + x"B1",x"E9",x"F0",x"0C",x"C8",x"C9",x"C9",x"F0", -- 0x0AA0 + x"F0",x"C9",x"C8",x"D0",x"F3",x"4C",x"3F",x"CA", -- 0x0AA8 + x"60",x"A0",x"FF",x"C8",x"B1",x"E9",x"F0",x"04", -- 0x0AB0 + x"C9",x"3A",x"D0",x"F7",x"4C",x"3F",x"CA",x"4C", -- 0x0AB8 + x"70",x"D0",x"20",x"C8",x"D8",x"48",x"C9",x"9B", -- 0x0AC0 + x"F0",x"04",x"C9",x"97",x"D0",x"F1",x"C6",x"D4", -- 0x0AC8 + x"D0",x"04",x"68",x"4C",x"17",x"C9",x"20",x"E2", -- 0x0AD0 + x"00",x"20",x"E2",x"CA",x"C9",x"2C",x"F0",x"EE", -- 0x0AD8 + x"68",x"60",x"A2",x"00",x"86",x"33",x"86",x"34", -- 0x0AE0 + x"B0",x"F7",x"E9",x"2F",x"85",x"24",x"A5",x"34", -- 0x0AE8 + x"85",x"91",x"C9",x"19",x"B0",x"D4",x"A5",x"33", -- 0x0AF0 + x"0A",x"26",x"91",x"0A",x"26",x"91",x"65",x"33", -- 0x0AF8 + x"85",x"33",x"A5",x"91",x"65",x"34",x"85",x"34", -- 0x0B00 + x"06",x"33",x"26",x"34",x"A5",x"33",x"65",x"24", -- 0x0B08 + x"85",x"33",x"90",x"02",x"E6",x"34",x"20",x"E2", -- 0x0B10 + x"00",x"4C",x"E8",x"CA",x"20",x"88",x"D1",x"85", -- 0x0B18 + x"B8",x"84",x"B9",x"A9",x"D4",x"20",x"67",x"D0", -- 0x0B20 + x"A5",x"29",x"48",x"A5",x"28",x"48",x"20",x"17", -- 0x0B28 + x"CF",x"68",x"2A",x"20",x"09",x"CF",x"D0",x"18", -- 0x0B30 + x"68",x"10",x"12",x"20",x"F4",x"DE",x"20",x"A9", -- 0x0B38 + x"D2",x"A0",x"00",x"A5",x"D3",x"91",x"B8",x"C8", -- 0x0B40 + x"A5",x"D4",x"91",x"B8",x"60",x"4C",x"A9",x"DE", -- 0x0B48 + x"68",x"A0",x"02",x"B1",x"D3",x"C5",x"A3",x"90", -- 0x0B50 + x"17",x"D0",x"07",x"88",x"B1",x"D3",x"C5",x"A2", -- 0x0B58 + x"90",x"0E",x"A4",x"D4",x"C4",x"9D",x"90",x"08", -- 0x0B60 + x"D0",x"0D",x"A5",x"D3",x"C5",x"9C",x"B0",x"07", -- 0x0B68 + x"A5",x"D3",x"A4",x"D4",x"4C",x"8D",x"CB",x"A0", -- 0x0B70 + x"00",x"B1",x"D3",x"20",x"A3",x"D5",x"A5",x"BF", -- 0x0B78 + x"A4",x"C0",x"85",x"DE",x"84",x"DF",x"20",x"A4", -- 0x0B80 + x"D7",x"A9",x"D0",x"A0",x"00",x"85",x"BF",x"84", -- 0x0B88 + x"C0",x"20",x"05",x"D8",x"A0",x"00",x"B1",x"BF", -- 0x0B90 + x"91",x"B8",x"C8",x"B1",x"BF",x"91",x"B8",x"C8", -- 0x0B98 + x"B1",x"BF",x"91",x"B8",x"60",x"20",x"B3",x"CC", -- 0x0BA0 + x"20",x"E8",x"00",x"F0",x"43",x"F0",x"5C",x"C9", -- 0x0BA8 + x"C2",x"F0",x"7B",x"C9",x"C5",x"18",x"F0",x"76", -- 0x0BB0 + x"C9",x"2C",x"F0",x"50",x"C9",x"3B",x"F0",x"6B", -- 0x0BB8 + x"C9",x"C6",x"D0",x"03",x"4C",x"59",x"CC",x"20", -- 0x0BC0 + x"17",x"CF",x"24",x"28",x"30",x"D7",x"20",x"D5", -- 0x0BC8 + x"E0",x"20",x"B5",x"D5",x"A0",x"00",x"B1",x"D3", -- 0x0BD0 + x"18",x"65",x"30",x"C5",x"31",x"90",x"03",x"20", -- 0x0BD8 + x"F0",x"CB",x"20",x"B3",x"CC",x"20",x"D4",x"CC", -- 0x0BE0 + x"D0",x"BE",x"A0",x"00",x"94",x"35",x"A2",x"34", -- 0x0BE8 + x"A5",x"30",x"48",x"A9",x"0D",x"20",x"D9",x"CC", -- 0x0BF0 + x"68",x"2C",x"F1",x"02",x"30",x"04",x"C5",x"31", -- 0x0BF8 + x"F0",x"09",x"A9",x"00",x"85",x"30",x"A9",x"0A", -- 0x0C00 + x"20",x"D9",x"CC",x"60",x"A5",x"30",x"2C",x"F1", -- 0x0C08 + x"02",x"30",x"04",x"38",x"ED",x"53",x"02",x"38", -- 0x0C10 + x"E9",x"08",x"B0",x"FC",x"49",x"FF",x"69",x"01", -- 0x0C18 + x"AA",x"18",x"65",x"30",x"C5",x"31",x"90",x"1F", -- 0x0C20 + x"20",x"F0",x"CB",x"4C",x"4B",x"CC",x"08",x"20", -- 0x0C28 + x"C5",x"D8",x"C9",x"29",x"D0",x"20",x"28",x"90", -- 0x0C30 + x"0E",x"8A",x"C5",x"31",x"90",x"03",x"4C",x"36", -- 0x0C38 + x"D3",x"38",x"E5",x"30",x"90",x"05",x"AA",x"E8", -- 0x0C40 + x"CA",x"D0",x"06",x"20",x"E2",x"00",x"4C",x"AD", -- 0x0C48 + x"CB",x"20",x"D4",x"CC",x"D0",x"F2",x"4C",x"70", -- 0x0C50 + x"D0",x"2C",x"F1",x"02",x"30",x"F8",x"AE",x"1F", -- 0x0C58 + x"02",x"F0",x"03",x"4C",x"F7",x"EA",x"20",x"C5", -- 0x0C60 + x"D8",x"E0",x"28",x"B0",x"40",x"86",x"0C",x"20", -- 0x0C68 + x"65",x"D0",x"20",x"C8",x"D8",x"E8",x"E0",x"1C", -- 0x0C70 + x"B0",x"33",x"AD",x"6A",x"02",x"48",x"29",x"FE", -- 0x0C78 + x"8D",x"6A",x"02",x"A9",x"00",x"20",x"01",x"F8", -- 0x0C80 + x"A5",x"0C",x"8D",x"69",x"02",x"8A",x"8D",x"68", -- 0x0C88 + x"02",x"20",x"0C",x"DA",x"A5",x"1F",x"A4",x"20", -- 0x0C90 + x"85",x"12",x"84",x"13",x"68",x"8D",x"6A",x"02", -- 0x0C98 + x"A9",x"01",x"20",x"01",x"F8",x"A9",x"3B",x"20", -- 0x0CA0 + x"67",x"D0",x"4C",x"AD",x"CB",x"4C",x"C2",x"D8", -- 0x0CA8 + x"20",x"B5",x"D5",x"20",x"D0",x"D7",x"AA",x"A0", -- 0x0CB0 + x"00",x"E8",x"CA",x"F0",x"10",x"B1",x"91",x"20", -- 0x0CB8 + x"D9",x"CC",x"C8",x"C9",x"0D",x"D0",x"F3",x"20", -- 0x0CC0 + x"0B",x"CC",x"4C",x"BA",x"CC",x"60",x"A9",x"0C", -- 0x0CC8 + x"2C",x"A9",x"11",x"2C",x"A9",x"20",x"2C",x"A9", -- 0x0CD0 + x"3F",x"24",x"2E",x"30",x"33",x"48",x"C9",x"20", -- 0x0CD8 + x"90",x"0B",x"A5",x"30",x"C5",x"31",x"D0",x"03", -- 0x0CE0 + x"20",x"F0",x"CB",x"E6",x"30",x"68",x"2C",x"F1", -- 0x0CE8 + x"02",x"10",x"08",x"48",x"20",x"3E",x"02",x"68", -- 0x0CF0 + x"29",x"FF",x"60",x"86",x"27",x"AA",x"20",x"7C", -- 0x0CF8 + x"F7",x"C9",x"20",x"90",x"04",x"C9",x"7F",x"D0", -- 0x0D00 + x"05",x"AE",x"69",x"02",x"86",x"30",x"A6",x"27", -- 0x0D08 + x"29",x"FF",x"60",x"6C",x"F5",x"02",x"A9",x"80", -- 0x0D10 + x"2C",x"A9",x"00",x"8D",x"F4",x"02",x"60",x"A5", -- 0x0D18 + x"2C",x"F0",x"13",x"30",x"04",x"A0",x"FF",x"D0", -- 0x0D20 + x"04",x"A5",x"AE",x"A4",x"AF",x"85",x"A8",x"84", -- 0x0D28 + x"A9",x"A2",x"A8",x"4C",x"7E",x"C4",x"A9",x"85", -- 0x0D30 + x"A0",x"CE",x"20",x"B0",x"CC",x"A5",x"AC",x"A4", -- 0x0D38 + x"AD",x"85",x"E9",x"84",x"EA",x"60",x"20",x"D2", -- 0x0D40 + x"D4",x"A2",x"36",x"A0",x"00",x"84",x"36",x"A9", -- 0x0D48 + x"40",x"20",x"8F",x"CD",x"60",x"46",x"2E",x"C9", -- 0x0D50 + x"22",x"D0",x"0B",x"20",x"25",x"D0",x"A9",x"3B", -- 0x0D58 + x"20",x"67",x"D0",x"20",x"B3",x"CC",x"20",x"D2", -- 0x0D60 + x"D4",x"A9",x"2C",x"85",x"34",x"A9",x"00",x"85", -- 0x0D68 + x"17",x"20",x"80",x"CD",x"A5",x"35",x"D0",x"16", -- 0x0D70 + x"A5",x"17",x"F0",x"F1",x"18",x"4C",x"80",x"C9", -- 0x0D78 + x"20",x"D7",x"CC",x"20",x"D4",x"CC",x"4C",x"92", -- 0x0D80 + x"C5",x"A6",x"B0",x"A4",x"B1",x"A9",x"98",x"85", -- 0x0D88 + x"2C",x"86",x"B2",x"84",x"B3",x"20",x"88",x"D1", -- 0x0D90 + x"85",x"B8",x"84",x"B9",x"A5",x"E9",x"A4",x"EA", -- 0x0D98 + x"85",x"BA",x"84",x"BB",x"A6",x"B2",x"A4",x"B3", -- 0x0DA0 + x"86",x"E9",x"84",x"EA",x"20",x"E8",x"00",x"D0", -- 0x0DA8 + x"1D",x"24",x"2C",x"50",x"0D",x"20",x"78",x"EB", -- 0x0DB0 + x"10",x"FB",x"85",x"35",x"A2",x"34",x"A0",x"00", -- 0x0DB8 + x"F0",x"08",x"30",x"71",x"20",x"D7",x"CC",x"20", -- 0x0DC0 + x"80",x"CD",x"86",x"E9",x"84",x"EA",x"20",x"E2", -- 0x0DC8 + x"00",x"24",x"28",x"10",x"31",x"24",x"2C",x"50", -- 0x0DD0 + x"09",x"E8",x"86",x"E9",x"A9",x"00",x"85",x"24", -- 0x0DD8 + x"F0",x"0C",x"85",x"24",x"C9",x"22",x"F0",x"07", -- 0x0DE0 + x"A9",x"3A",x"85",x"24",x"A9",x"2C",x"18",x"85", -- 0x0DE8 + x"25",x"A5",x"E9",x"A4",x"EA",x"69",x"00",x"90", -- 0x0DF0 + x"01",x"C8",x"20",x"BB",x"D5",x"20",x"0D",x"D9", -- 0x0DF8 + x"20",x"51",x"CB",x"4C",x"0E",x"CE",x"20",x"E7", -- 0x0E00 + x"DF",x"A5",x"29",x"20",x"39",x"CB",x"20",x"E8", -- 0x0E08 + x"00",x"F0",x"07",x"C9",x"2C",x"F0",x"03",x"4C", -- 0x0E10 + x"1F",x"CD",x"A5",x"E9",x"A4",x"EA",x"85",x"B2", -- 0x0E18 + x"84",x"B3",x"A5",x"BA",x"A4",x"BB",x"85",x"E9", -- 0x0E20 + x"84",x"EA",x"20",x"E8",x"00",x"F0",x"2C",x"20", -- 0x0E28 + x"65",x"D0",x"4C",x"95",x"CD",x"20",x"4E",x"CA", -- 0x0E30 + x"C8",x"AA",x"D0",x"12",x"A2",x"2A",x"C8",x"B1", -- 0x0E38 + x"E9",x"F0",x"69",x"C8",x"B1",x"E9",x"85",x"AE", -- 0x0E40 + x"C8",x"B1",x"E9",x"C8",x"85",x"AF",x"B1",x"E9", -- 0x0E48 + x"AA",x"20",x"3F",x"CA",x"E0",x"91",x"D0",x"DD", -- 0x0E50 + x"4C",x"CE",x"CD",x"A5",x"B2",x"A4",x"B3",x"A6", -- 0x0E58 + x"2C",x"10",x"03",x"4C",x"5C",x"C9",x"A0",x"00", -- 0x0E60 + x"B1",x"B2",x"F0",x"07",x"A9",x"74",x"A0",x"CE", -- 0x0E68 + x"4C",x"B0",x"CC",x"60",x"3F",x"45",x"58",x"54", -- 0x0E70 + x"52",x"41",x"20",x"49",x"47",x"4E",x"4F",x"52", -- 0x0E78 + x"45",x"44",x"0D",x"0A",x"00",x"3F",x"52",x"45", -- 0x0E80 + x"44",x"4F",x"20",x"46",x"52",x"4F",x"4D",x"20", -- 0x0E88 + x"53",x"54",x"41",x"52",x"54",x"0D",x"0A",x"00", -- 0x0E90 + x"D0",x"04",x"A0",x"00",x"F0",x"03",x"20",x"88", -- 0x0E98 + x"D1",x"85",x"B8",x"84",x"B9",x"20",x"C6",x"C3", -- 0x0EA0 + x"F0",x"04",x"A2",x"00",x"F0",x"66",x"9A",x"8A", -- 0x0EA8 + x"18",x"69",x"04",x"48",x"69",x"06",x"85",x"93", -- 0x0EB0 + x"68",x"A0",x"01",x"20",x"7B",x"DE",x"BA",x"BD", -- 0x0EB8 + x"09",x"01",x"85",x"D5",x"A5",x"B8",x"A4",x"B9", -- 0x0EC0 + x"20",x"22",x"DB",x"20",x"A9",x"DE",x"A0",x"01", -- 0x0EC8 + x"20",x"4E",x"DF",x"BA",x"38",x"FD",x"09",x"01", -- 0x0ED0 + x"F0",x"17",x"BD",x"0F",x"01",x"85",x"A8",x"BD", -- 0x0ED8 + x"10",x"01",x"85",x"A9",x"BD",x"12",x"01",x"85", -- 0x0EE0 + x"E9",x"BD",x"11",x"01",x"85",x"EA",x"4C",x"C1", -- 0x0EE8 + x"C8",x"8A",x"69",x"11",x"AA",x"9A",x"20",x"E8", -- 0x0EF0 + x"00",x"C9",x"2C",x"D0",x"F1",x"20",x"E2",x"00", -- 0x0EF8 + x"20",x"9E",x"CE",x"20",x"17",x"CF",x"18",x"24", -- 0x0F00 + x"38",x"24",x"28",x"30",x"03",x"B0",x"03",x"60", -- 0x0F08 + x"B0",x"FD",x"A2",x"A8",x"4C",x"7E",x"C4",x"A6", -- 0x0F10 + x"E9",x"D0",x"02",x"C6",x"EA",x"C6",x"E9",x"A2", -- 0x0F18 + x"00",x"24",x"48",x"8A",x"48",x"A9",x"01",x"20", -- 0x0F20 + x"37",x"C4",x"20",x"00",x"D0",x"A9",x"00",x"85", -- 0x0F28 + x"BC",x"20",x"E8",x"00",x"38",x"E9",x"D3",x"90", -- 0x0F30 + x"17",x"C9",x"03",x"B0",x"13",x"C9",x"01",x"2A", -- 0x0F38 + x"49",x"01",x"45",x"BC",x"C5",x"BC",x"90",x"61", -- 0x0F40 + x"85",x"BC",x"20",x"E2",x"00",x"4C",x"34",x"CF", -- 0x0F48 + x"A6",x"BC",x"D0",x"2C",x"B0",x"7F",x"69",x"07", -- 0x0F50 + x"90",x"7B",x"65",x"28",x"D0",x"03",x"4C",x"67", -- 0x0F58 + x"D7",x"69",x"FF",x"85",x"91",x"0A",x"65",x"91", -- 0x0F60 + x"A8",x"68",x"D9",x"CC",x"C0",x"B0",x"6B",x"20", -- 0x0F68 + x"06",x"CF",x"48",x"20",x"99",x"CF",x"68",x"A4", -- 0x0F70 + x"BA",x"10",x"17",x"AA",x"F0",x"5A",x"D0",x"63", -- 0x0F78 + x"46",x"28",x"8A",x"2A",x"A6",x"E9",x"D0",x"02", -- 0x0F80 + x"C6",x"EA",x"C6",x"E9",x"A0",x"1B",x"85",x"BC", -- 0x0F88 + x"D0",x"D7",x"D9",x"CC",x"C0",x"B0",x"4C",x"90", -- 0x0F90 + x"D9",x"B9",x"CE",x"C0",x"48",x"B9",x"CD",x"C0", -- 0x0F98 + x"48",x"20",x"AC",x"CF",x"A5",x"BC",x"4C",x"22", -- 0x0FA0 + x"CF",x"4C",x"70",x"D0",x"A5",x"D5",x"BE",x"CC", -- 0x0FA8 + x"C0",x"A8",x"68",x"85",x"91",x"68",x"85",x"92", -- 0x0FB0 + x"E6",x"91",x"D0",x"02",x"E6",x"92",x"98",x"48", -- 0x0FB8 + x"20",x"F4",x"DE",x"A5",x"D4",x"48",x"A5",x"D3", -- 0x0FC0 + x"48",x"A5",x"D2",x"48",x"A5",x"D1",x"48",x"A5", -- 0x0FC8 + x"D0",x"48",x"6C",x"91",x"00",x"A0",x"FF",x"68", -- 0x0FD0 + x"F0",x"23",x"C9",x"64",x"F0",x"03",x"20",x"06", -- 0x0FD8 + x"CF",x"84",x"BA",x"68",x"4A",x"85",x"2D",x"68", -- 0x0FE0 + x"85",x"D8",x"68",x"85",x"D9",x"68",x"85",x"DA", -- 0x0FE8 + x"68",x"85",x"DB",x"68",x"85",x"DC",x"68",x"85", -- 0x0FF0 + x"DD",x"45",x"D5",x"85",x"DE",x"A5",x"D0",x"60", -- 0x0FF8 + x"A9",x"00",x"85",x"28",x"20",x"E2",x"00",x"B0", -- 0x1000 + x"03",x"4C",x"E7",x"DF",x"20",x"16",x"D2",x"B0", -- 0x1008 + x"6B",x"C9",x"2E",x"F0",x"F4",x"C9",x"23",x"F0", -- 0x1010 + x"F0",x"C9",x"CD",x"F0",x"58",x"C9",x"CC",x"F0", -- 0x1018 + x"E3",x"C9",x"22",x"D0",x"0F",x"A5",x"E9",x"A4", -- 0x1020 + x"EA",x"69",x"00",x"90",x"01",x"C8",x"20",x"B5", -- 0x1028 + x"D5",x"4C",x"0D",x"D9",x"C9",x"CA",x"D0",x"13", -- 0x1030 + x"A0",x"18",x"D0",x"3B",x"20",x"A9",x"D2",x"A5", -- 0x1038 + x"D4",x"49",x"FF",x"A8",x"A5",x"D3",x"49",x"FF", -- 0x1040 + x"4C",x"99",x"D4",x"C9",x"C4",x"D0",x"03",x"4C", -- 0x1048 + x"22",x"D5",x"C9",x"D6",x"90",x"03",x"4C",x"A0", -- 0x1050 + x"D0",x"20",x"62",x"D0",x"20",x"17",x"CF",x"A9", -- 0x1058 + x"29",x"2C",x"A9",x"28",x"2C",x"A9",x"2C",x"A0", -- 0x1060 + x"00",x"D1",x"E9",x"D0",x"03",x"4C",x"E2",x"00", -- 0x1068 + x"A2",x"10",x"4C",x"7E",x"C4",x"A0",x"15",x"68", -- 0x1070 + x"68",x"4C",x"73",x"CF",x"20",x"88",x"D1",x"85", -- 0x1078 + x"D3",x"84",x"D4",x"A6",x"28",x"F0",x"05",x"A2", -- 0x1080 + x"00",x"86",x"DF",x"60",x"A6",x"29",x"10",x"0D", -- 0x1088 + x"A0",x"00",x"B1",x"D3",x"AA",x"C8",x"B1",x"D3", -- 0x1090 + x"A8",x"8A",x"4C",x"99",x"D4",x"4C",x"7B",x"DE", -- 0x1098 + x"0A",x"48",x"AA",x"20",x"E2",x"00",x"E0",x"DB", -- 0x10A0 + x"90",x"24",x"E0",x"E7",x"90",x"23",x"20",x"62", -- 0x10A8 + x"D0",x"20",x"17",x"CF",x"20",x"65",x"D0",x"20", -- 0x10B0 + x"08",x"CF",x"68",x"AA",x"A5",x"D4",x"48",x"A5", -- 0x10B8 + x"D3",x"48",x"8A",x"48",x"20",x"C8",x"D8",x"68", -- 0x10C0 + x"A8",x"8A",x"48",x"4C",x"D3",x"D0",x"20",x"59", -- 0x10C8 + x"D0",x"68",x"A8",x"B9",x"DE",x"BF",x"85",x"C4", -- 0x10D0 + x"B9",x"DF",x"BF",x"85",x"C5",x"20",x"C3",x"00", -- 0x10D8 + x"4C",x"06",x"CF",x"A0",x"FF",x"2C",x"A0",x"00", -- 0x10E0 + x"84",x"26",x"20",x"A9",x"D2",x"A5",x"D3",x"45", -- 0x10E8 + x"26",x"85",x"24",x"A5",x"D4",x"45",x"26",x"85", -- 0x10F0 + x"25",x"20",x"D5",x"DE",x"20",x"A9",x"D2",x"A5", -- 0x10F8 + x"D4",x"45",x"26",x"25",x"25",x"45",x"26",x"A8", -- 0x1100 + x"A5",x"D3",x"45",x"26",x"25",x"24",x"45",x"26", -- 0x1108 + x"4C",x"99",x"D4",x"20",x"09",x"CF",x"B0",x"13", -- 0x1110 + x"A5",x"DD",x"09",x"7F",x"25",x"D9",x"85",x"D9", -- 0x1118 + x"A9",x"D8",x"A0",x"00",x"20",x"4C",x"DF",x"AA", -- 0x1120 + x"4C",x"5E",x"D1",x"A9",x"00",x"85",x"28",x"C6", -- 0x1128 + x"BC",x"20",x"D0",x"D7",x"85",x"D0",x"86",x"D1", -- 0x1130 + x"84",x"D2",x"A5",x"DB",x"A4",x"DC",x"20",x"D4", -- 0x1138 + x"D7",x"86",x"DB",x"84",x"DC",x"AA",x"38",x"E5", -- 0x1140 + x"D0",x"F0",x"08",x"A9",x"01",x"90",x"04",x"A6", -- 0x1148 + x"D0",x"A9",x"FF",x"85",x"D5",x"A0",x"FF",x"E8", -- 0x1150 + x"C8",x"CA",x"D0",x"07",x"A6",x"D5",x"30",x"0F", -- 0x1158 + x"18",x"90",x"0C",x"B1",x"DB",x"D1",x"D1",x"F0", -- 0x1160 + x"EF",x"A2",x"FF",x"B0",x"02",x"A2",x"01",x"E8", -- 0x1168 + x"8A",x"2A",x"25",x"2D",x"F0",x"02",x"A9",x"FF", -- 0x1170 + x"4C",x"24",x"DF",x"20",x"65",x"D0",x"AA",x"20", -- 0x1178 + x"8D",x"D1",x"20",x"E8",x"00",x"D0",x"F4",x"60", -- 0x1180 + x"A2",x"00",x"20",x"E8",x"00",x"86",x"27",x"85", -- 0x1188 + x"B4",x"20",x"E8",x"00",x"20",x"16",x"D2",x"B0", -- 0x1190 + x"03",x"4C",x"70",x"D0",x"A2",x"00",x"86",x"28", -- 0x1198 + x"86",x"29",x"20",x"E2",x"00",x"90",x"05",x"20", -- 0x11A0 + x"16",x"D2",x"90",x"0B",x"AA",x"20",x"E2",x"00", -- 0x11A8 + x"90",x"FB",x"20",x"16",x"D2",x"B0",x"F6",x"C9", -- 0x11B0 + x"24",x"D0",x"06",x"A9",x"FF",x"85",x"28",x"D0", -- 0x11B8 + x"10",x"C9",x"25",x"D0",x"13",x"A5",x"2B",x"30", -- 0x11C0 + x"D0",x"A9",x"80",x"85",x"29",x"05",x"B4",x"85", -- 0x11C8 + x"B4",x"8A",x"09",x"80",x"AA",x"20",x"E2",x"00", -- 0x11D0 + x"86",x"B5",x"38",x"05",x"2B",x"E9",x"28",x"D0", -- 0x11D8 + x"03",x"4C",x"BB",x"D2",x"24",x"2B",x"70",x"F9", -- 0x11E0 + x"A9",x"00",x"85",x"2B",x"A5",x"9C",x"A6",x"9D", -- 0x11E8 + x"A0",x"00",x"86",x"CF",x"85",x"CE",x"E4",x"9F", -- 0x11F0 + x"D0",x"04",x"C5",x"9E",x"F0",x"24",x"A5",x"B4", -- 0x11F8 + x"D1",x"CE",x"D0",x"08",x"A5",x"B5",x"C8",x"D1", -- 0x1200 + x"CE",x"F0",x"6C",x"88",x"18",x"A5",x"CE",x"69", -- 0x1208 + x"07",x"90",x"E1",x"E8",x"D0",x"DC",x"C9",x"41", -- 0x1210 + x"90",x"07",x"E9",x"5B",x"38",x"E9",x"A5",x"B0", -- 0x1218 + x"00",x"60",x"68",x"48",x"C9",x"7E",x"D0",x"0D", -- 0x1220 + x"BA",x"BD",x"02",x"01",x"C9",x"D0",x"D0",x"05", -- 0x1228 + x"A9",x"07",x"A0",x"E2",x"60",x"A5",x"9E",x"A4", -- 0x1230 + x"9F",x"85",x"CE",x"84",x"CF",x"A5",x"A0",x"A4", -- 0x1238 + x"A1",x"85",x"C9",x"84",x"CA",x"18",x"69",x"07", -- 0x1240 + x"90",x"01",x"C8",x"85",x"C7",x"84",x"C8",x"20", -- 0x1248 + x"F4",x"C3",x"A5",x"C7",x"A4",x"C8",x"C8",x"85", -- 0x1250 + x"9E",x"84",x"9F",x"A0",x"00",x"A5",x"B4",x"91", -- 0x1258 + x"CE",x"C8",x"A5",x"B5",x"91",x"CE",x"A9",x"00", -- 0x1260 + x"C8",x"91",x"CE",x"C8",x"91",x"CE",x"C8",x"91", -- 0x1268 + x"CE",x"C8",x"91",x"CE",x"C8",x"91",x"CE",x"A5", -- 0x1270 + x"CE",x"18",x"69",x"02",x"A4",x"CF",x"90",x"01", -- 0x1278 + x"C8",x"85",x"B6",x"84",x"B7",x"60",x"A5",x"26", -- 0x1280 + x"0A",x"69",x"05",x"65",x"CE",x"A4",x"CF",x"90", -- 0x1288 + x"01",x"C8",x"85",x"C7",x"84",x"C8",x"60",x"90", -- 0x1290 + x"80",x"00",x"00",x"00",x"20",x"E2",x"00",x"20", -- 0x1298 + x"17",x"CF",x"20",x"06",x"CF",x"A5",x"D5",x"30", -- 0x12A0 + x"0D",x"A5",x"D0",x"C9",x"90",x"90",x"09",x"A9", -- 0x12A8 + x"97",x"A0",x"D2",x"20",x"4C",x"DF",x"D0",x"7E", -- 0x12B0 + x"4C",x"8C",x"DF",x"A5",x"2B",x"D0",x"47",x"A5", -- 0x12B8 + x"27",x"05",x"29",x"48",x"A5",x"28",x"48",x"A0", -- 0x12C0 + x"00",x"98",x"48",x"A5",x"B5",x"48",x"A5",x"B4", -- 0x12C8 + x"48",x"20",x"9C",x"D2",x"68",x"85",x"B4",x"68", -- 0x12D0 + x"85",x"B5",x"68",x"A8",x"BA",x"BD",x"02",x"01", -- 0x12D8 + x"48",x"BD",x"01",x"01",x"48",x"A5",x"D3",x"9D", -- 0x12E0 + x"02",x"01",x"A5",x"D4",x"9D",x"01",x"01",x"C8", -- 0x12E8 + x"20",x"E8",x"00",x"C9",x"2C",x"F0",x"D2",x"84", -- 0x12F0 + x"26",x"20",x"5F",x"D0",x"68",x"85",x"28",x"68", -- 0x12F8 + x"85",x"29",x"29",x"7F",x"85",x"27",x"A6",x"9E", -- 0x1300 + x"A5",x"9F",x"86",x"CE",x"85",x"CF",x"C5",x"A1", -- 0x1308 + x"D0",x"04",x"E4",x"A0",x"F0",x"3F",x"A0",x"00", -- 0x1310 + x"B1",x"CE",x"C8",x"C5",x"B4",x"D0",x"06",x"A5", -- 0x1318 + x"B5",x"D1",x"CE",x"F0",x"16",x"C8",x"B1",x"CE", -- 0x1320 + x"18",x"65",x"CE",x"AA",x"C8",x"B1",x"CE",x"65", -- 0x1328 + x"CF",x"90",x"D7",x"A2",x"6B",x"2C",x"A2",x"35", -- 0x1330 + x"4C",x"7E",x"C4",x"A2",x"78",x"A5",x"27",x"D0", -- 0x1338 + x"F7",x"A5",x"2B",x"F0",x"02",x"38",x"60",x"20", -- 0x1340 + x"86",x"D2",x"A5",x"26",x"A0",x"04",x"D1",x"CE", -- 0x1348 + x"D0",x"E1",x"4C",x"EB",x"D3",x"A5",x"2B",x"F0", -- 0x1350 + x"08",x"20",x"3D",x"E9",x"A2",x"2A",x"4C",x"7E", -- 0x1358 + x"C4",x"20",x"86",x"D2",x"20",x"44",x"C4",x"A9", -- 0x1360 + x"00",x"A8",x"85",x"E1",x"A2",x"05",x"A5",x"B4", -- 0x1368 + x"91",x"CE",x"10",x"01",x"CA",x"C8",x"A5",x"B5", -- 0x1370 + x"91",x"CE",x"10",x"02",x"CA",x"CA",x"86",x"E0", -- 0x1378 + x"A5",x"26",x"C8",x"C8",x"C8",x"91",x"CE",x"A2", -- 0x1380 + x"0B",x"A9",x"00",x"24",x"27",x"50",x"08",x"68", -- 0x1388 + x"18",x"69",x"01",x"AA",x"68",x"69",x"00",x"C8", -- 0x1390 + x"91",x"CE",x"C8",x"8A",x"91",x"CE",x"20",x"4D", -- 0x1398 + x"D4",x"86",x"E0",x"85",x"E1",x"A4",x"91",x"C6", -- 0x13A0 + x"26",x"D0",x"DC",x"65",x"C8",x"B0",x"5D",x"85", -- 0x13A8 + x"C8",x"A8",x"8A",x"65",x"C7",x"90",x"03",x"C8", -- 0x13B0 + x"F0",x"52",x"20",x"44",x"C4",x"85",x"A0",x"84", -- 0x13B8 + x"A1",x"A9",x"00",x"E6",x"E1",x"A4",x"E0",x"F0", -- 0x13C0 + x"05",x"88",x"91",x"C7",x"D0",x"FB",x"C6",x"C8", -- 0x13C8 + x"C6",x"E1",x"D0",x"F5",x"E6",x"C8",x"38",x"A5", -- 0x13D0 + x"A0",x"E5",x"CE",x"A0",x"02",x"91",x"CE",x"A5", -- 0x13D8 + x"A1",x"C8",x"E5",x"CF",x"91",x"CE",x"A5",x"27", -- 0x13E0 + x"D0",x"62",x"C8",x"B1",x"CE",x"85",x"26",x"A9", -- 0x13E8 + x"00",x"85",x"E0",x"85",x"E1",x"C8",x"68",x"AA", -- 0x13F0 + x"85",x"D3",x"68",x"85",x"D4",x"D1",x"CE",x"90", -- 0x13F8 + x"0E",x"D0",x"06",x"C8",x"8A",x"D1",x"CE",x"90", -- 0x1400 + x"07",x"4C",x"33",x"D3",x"4C",x"7C",x"C4",x"C8", -- 0x1408 + x"A5",x"E1",x"05",x"E0",x"18",x"F0",x"0A",x"20", -- 0x1410 + x"4D",x"D4",x"8A",x"65",x"D3",x"AA",x"98",x"A4", -- 0x1418 + x"91",x"65",x"D4",x"86",x"E0",x"C6",x"26",x"D0", -- 0x1420 + x"CA",x"85",x"E1",x"A2",x"05",x"A5",x"B4",x"10", -- 0x1428 + x"01",x"CA",x"A5",x"B5",x"10",x"02",x"CA",x"CA", -- 0x1430 + x"86",x"97",x"A9",x"00",x"20",x"56",x"D4",x"8A", -- 0x1438 + x"65",x"C7",x"85",x"B6",x"98",x"65",x"C8",x"85", -- 0x1440 + x"B7",x"A8",x"A5",x"B6",x"60",x"84",x"91",x"B1", -- 0x1448 + x"CE",x"85",x"97",x"88",x"B1",x"CE",x"85",x"98", -- 0x1450 + x"A9",x"10",x"85",x"CC",x"A2",x"00",x"A0",x"00", -- 0x1458 + x"8A",x"0A",x"AA",x"98",x"2A",x"A8",x"B0",x"A4", -- 0x1460 + x"06",x"E0",x"26",x"E1",x"90",x"0B",x"18",x"8A", -- 0x1468 + x"65",x"97",x"AA",x"98",x"65",x"98",x"A8",x"B0", -- 0x1470 + x"93",x"C6",x"CC",x"D0",x"E3",x"60",x"A5",x"28", -- 0x1478 + x"F0",x"03",x"20",x"D0",x"D7",x"20",x"50",x"D6", -- 0x1480 + x"38",x"A5",x"A2",x"E5",x"A0",x"A8",x"A5",x"A3", -- 0x1488 + x"E5",x"A1",x"A2",x"00",x"86",x"28",x"4C",x"40", -- 0x1490 + x"DF",x"A2",x"00",x"86",x"28",x"85",x"D1",x"84", -- 0x1498 + x"D2",x"A2",x"90",x"4C",x"2C",x"DF",x"20",x"CB", -- 0x14A0 + x"D8",x"8A",x"F0",x"08",x"AC",x"58",x"02",x"2C", -- 0x14A8 + x"F1",x"02",x"10",x"02",x"A4",x"30",x"A9",x"00", -- 0x14B0 + x"F0",x"DF",x"C9",x"D9",x"D0",x"21",x"20",x"E2", -- 0x14B8 + x"00",x"A9",x"D4",x"20",x"67",x"D0",x"20",x"53", -- 0x14C0 + x"E8",x"A5",x"33",x"A4",x"34",x"85",x"22",x"84", -- 0x14C8 + x"23",x"60",x"A6",x"A9",x"E8",x"D0",x"FA",x"A2", -- 0x14D0 + x"95",x"2C",x"A2",x"E5",x"4C",x"7E",x"C4",x"20", -- 0x14D8 + x"0D",x"D5",x"20",x"D2",x"D4",x"20",x"62",x"D0", -- 0x14E0 + x"A9",x"80",x"85",x"2B",x"20",x"88",x"D1",x"20", -- 0x14E8 + x"06",x"CF",x"20",x"5F",x"D0",x"A9",x"D4",x"20", -- 0x14F0 + x"67",x"D0",x"48",x"A5",x"B7",x"48",x"A5",x"B6", -- 0x14F8 + x"48",x"A5",x"EA",x"48",x"A5",x"E9",x"48",x"20", -- 0x1500 + x"3C",x"CA",x"4C",x"7D",x"D5",x"A9",x"C4",x"20", -- 0x1508 + x"67",x"D0",x"09",x"80",x"A2",x"80",x"86",x"2B", -- 0x1510 + x"20",x"8F",x"D1",x"85",x"BD",x"84",x"BE",x"4C", -- 0x1518 + x"06",x"CF",x"20",x"0D",x"D5",x"A5",x"BE",x"48", -- 0x1520 + x"A5",x"BD",x"48",x"20",x"59",x"D0",x"20",x"06", -- 0x1528 + x"CF",x"68",x"85",x"BD",x"68",x"85",x"BE",x"A0", -- 0x1530 + x"02",x"B1",x"BD",x"85",x"B6",x"AA",x"C8",x"B1", -- 0x1538 + x"BD",x"F0",x"97",x"85",x"B7",x"C8",x"B1",x"B6", -- 0x1540 + x"48",x"88",x"10",x"FA",x"A4",x"B7",x"20",x"AD", -- 0x1548 + x"DE",x"A5",x"EA",x"48",x"A5",x"E9",x"48",x"B1", -- 0x1550 + x"BD",x"85",x"E9",x"C8",x"B1",x"BD",x"85",x"EA", -- 0x1558 + x"A5",x"B7",x"48",x"A5",x"B6",x"48",x"20",x"03", -- 0x1560 + x"CF",x"68",x"85",x"BD",x"68",x"85",x"BE",x"20", -- 0x1568 + x"E8",x"00",x"F0",x"03",x"4C",x"70",x"D0",x"68", -- 0x1570 + x"85",x"E9",x"68",x"85",x"EA",x"A0",x"00",x"68", -- 0x1578 + x"91",x"BD",x"68",x"C8",x"91",x"BD",x"68",x"C8", -- 0x1580 + x"91",x"BD",x"68",x"C8",x"91",x"BD",x"68",x"C8", -- 0x1588 + x"91",x"BD",x"60",x"20",x"06",x"CF",x"A0",x"00", -- 0x1590 + x"20",x"D7",x"E0",x"68",x"68",x"A9",x"FF",x"A0", -- 0x1598 + x"00",x"F0",x"12",x"A6",x"D3",x"A4",x"D4",x"86", -- 0x15A0 + x"BF",x"84",x"C0",x"20",x"1E",x"D6",x"86",x"D1", -- 0x15A8 + x"84",x"D2",x"85",x"D0",x"60",x"A2",x"22",x"86", -- 0x15B0 + x"24",x"86",x"25",x"85",x"DE",x"84",x"DF",x"85", -- 0x15B8 + x"D1",x"84",x"D2",x"A0",x"FF",x"C8",x"B1",x"DE", -- 0x15C0 + x"F0",x"0C",x"C5",x"24",x"F0",x"04",x"C5",x"25", -- 0x15C8 + x"D0",x"F3",x"C9",x"22",x"F0",x"01",x"18",x"84", -- 0x15D0 + x"D0",x"98",x"65",x"DE",x"85",x"E0",x"A6",x"DF", -- 0x15D8 + x"90",x"01",x"E8",x"86",x"E1",x"A5",x"DF",x"D0", -- 0x15E0 + x"0B",x"98",x"20",x"A3",x"D5",x"A6",x"DE",x"A4", -- 0x15E8 + x"DF",x"20",x"B2",x"D7",x"A6",x"85",x"E0",x"91", -- 0x15F0 + x"D0",x"05",x"A2",x"C4",x"4C",x"7E",x"C4",x"A5", -- 0x15F8 + x"D0",x"95",x"00",x"A5",x"D1",x"95",x"01",x"A5", -- 0x1600 + x"D2",x"95",x"02",x"A0",x"00",x"86",x"D3",x"84", -- 0x1608 + x"D4",x"84",x"DF",x"88",x"84",x"28",x"86",x"86", -- 0x1610 + x"E8",x"E8",x"E8",x"86",x"85",x"60",x"46",x"2A", -- 0x1618 + x"48",x"49",x"FF",x"38",x"65",x"A2",x"A4",x"A3", -- 0x1620 + x"B0",x"01",x"88",x"C4",x"A1",x"90",x"11",x"D0", -- 0x1628 + x"04",x"C5",x"A0",x"90",x"0B",x"85",x"A2",x"84", -- 0x1630 + x"A3",x"85",x"A4",x"84",x"A5",x"AA",x"68",x"60", -- 0x1638 + x"A2",x"4D",x"A5",x"2A",x"30",x"B6",x"20",x"50", -- 0x1640 + x"D6",x"A9",x"80",x"85",x"2A",x"68",x"D0",x"D0", -- 0x1648 + x"A6",x"A6",x"A5",x"A7",x"86",x"A2",x"85",x"A3", -- 0x1650 + x"A0",x"00",x"84",x"BE",x"84",x"BD",x"A5",x"A0", -- 0x1658 + x"A6",x"A1",x"85",x"CE",x"86",x"CF",x"A9",x"88", -- 0x1660 + x"A2",x"00",x"85",x"91",x"86",x"92",x"C5",x"85", -- 0x1668 + x"F0",x"05",x"20",x"F1",x"D6",x"F0",x"F7",x"A9", -- 0x1670 + x"07",x"85",x"C2",x"A5",x"9C",x"A6",x"9D",x"85", -- 0x1678 + x"91",x"86",x"92",x"E4",x"9F",x"D0",x"04",x"C5", -- 0x1680 + x"9E",x"F0",x"05",x"20",x"E7",x"D6",x"F0",x"F3", -- 0x1688 + x"85",x"C7",x"86",x"C8",x"A9",x"03",x"85",x"C2", -- 0x1690 + x"A5",x"C7",x"A6",x"C8",x"E4",x"A1",x"D0",x"07", -- 0x1698 + x"C5",x"A0",x"D0",x"03",x"4C",x"30",x"D7",x"85", -- 0x16A0 + x"91",x"86",x"92",x"A0",x"00",x"B1",x"91",x"AA", -- 0x16A8 + x"C8",x"B1",x"91",x"08",x"C8",x"B1",x"91",x"65", -- 0x16B0 + x"C7",x"85",x"C7",x"C8",x"B1",x"91",x"65",x"C8", -- 0x16B8 + x"85",x"C8",x"28",x"10",x"D3",x"8A",x"30",x"D0", -- 0x16C0 + x"C8",x"B1",x"91",x"A0",x"00",x"0A",x"69",x"05", -- 0x16C8 + x"65",x"91",x"85",x"91",x"90",x"02",x"E6",x"92", -- 0x16D0 + x"A6",x"92",x"E4",x"C8",x"D0",x"04",x"C5",x"C7", -- 0x16D8 + x"F0",x"BA",x"20",x"F1",x"D6",x"F0",x"F3",x"B1", -- 0x16E0 + x"91",x"30",x"35",x"C8",x"B1",x"91",x"10",x"30", -- 0x16E8 + x"C8",x"B1",x"91",x"F0",x"2B",x"C8",x"B1",x"91", -- 0x16F0 + x"AA",x"C8",x"B1",x"91",x"C5",x"A3",x"90",x"06", -- 0x16F8 + x"D0",x"1E",x"E4",x"A2",x"B0",x"1A",x"C5",x"CF", -- 0x1700 + x"90",x"16",x"D0",x"04",x"E4",x"CE",x"90",x"10", -- 0x1708 + x"86",x"CE",x"85",x"CF",x"A5",x"91",x"A6",x"92", -- 0x1710 + x"85",x"BD",x"86",x"BE",x"A5",x"C2",x"85",x"C4", -- 0x1718 + x"A5",x"C2",x"18",x"65",x"91",x"85",x"91",x"90", -- 0x1720 + x"02",x"E6",x"92",x"A6",x"92",x"A0",x"00",x"60", -- 0x1728 + x"A5",x"BE",x"05",x"BD",x"F0",x"F5",x"A5",x"C4", -- 0x1730 + x"29",x"04",x"4A",x"A8",x"85",x"C4",x"B1",x"BD", -- 0x1738 + x"65",x"CE",x"85",x"C9",x"A5",x"CF",x"69",x"00", -- 0x1740 + x"85",x"CA",x"A5",x"A2",x"A6",x"A3",x"85",x"C7", -- 0x1748 + x"86",x"C8",x"20",x"FB",x"C3",x"A4",x"C4",x"C8", -- 0x1750 + x"A5",x"C7",x"91",x"BD",x"AA",x"E6",x"C8",x"A5", -- 0x1758 + x"C8",x"C8",x"91",x"BD",x"4C",x"54",x"D6",x"A5", -- 0x1760 + x"D4",x"48",x"A5",x"D3",x"48",x"20",x"00",x"D0", -- 0x1768 + x"20",x"08",x"CF",x"68",x"85",x"DE",x"68",x"85", -- 0x1770 + x"DF",x"A0",x"00",x"B1",x"DE",x"18",x"71",x"D3", -- 0x1778 + x"90",x"05",x"A2",x"B5",x"4C",x"7E",x"C4",x"20", -- 0x1780 + x"A3",x"D5",x"20",x"A4",x"D7",x"A5",x"BF",x"A4", -- 0x1788 + x"C0",x"20",x"D4",x"D7",x"20",x"B6",x"D7",x"A5", -- 0x1790 + x"DE",x"A4",x"DF",x"20",x"D4",x"D7",x"20",x"F4", -- 0x1798 + x"D5",x"4C",x"31",x"CF",x"A0",x"00",x"B1",x"DE", -- 0x17A0 + x"48",x"C8",x"B1",x"DE",x"AA",x"C8",x"B1",x"DE", -- 0x17A8 + x"A8",x"68",x"86",x"91",x"84",x"92",x"A8",x"F0", -- 0x17B0 + x"0A",x"48",x"88",x"B1",x"91",x"91",x"A4",x"98", -- 0x17B8 + x"D0",x"F8",x"68",x"18",x"65",x"A4",x"85",x"A4", -- 0x17C0 + x"90",x"02",x"E6",x"A5",x"60",x"20",x"08",x"CF", -- 0x17C8 + x"A5",x"D3",x"A4",x"D4",x"85",x"91",x"84",x"92", -- 0x17D0 + x"20",x"05",x"D8",x"08",x"A0",x"00",x"B1",x"91", -- 0x17D8 + x"48",x"C8",x"B1",x"91",x"AA",x"C8",x"B1",x"91", -- 0x17E0 + x"A8",x"68",x"28",x"D0",x"13",x"C4",x"A3",x"D0", -- 0x17E8 + x"0F",x"E4",x"A2",x"D0",x"0B",x"48",x"18",x"65", -- 0x17F0 + x"A2",x"85",x"A2",x"90",x"02",x"E6",x"A3",x"68", -- 0x17F8 + x"86",x"91",x"84",x"92",x"60",x"C4",x"87",x"D0", -- 0x1800 + x"0C",x"C5",x"86",x"D0",x"08",x"85",x"85",x"E9", -- 0x1808 + x"03",x"85",x"86",x"A0",x"00",x"60",x"20",x"CB", -- 0x1810 + x"D8",x"8A",x"48",x"A9",x"01",x"20",x"AB",x"D5", -- 0x1818 + x"68",x"A0",x"00",x"91",x"D1",x"68",x"68",x"4C", -- 0x1820 + x"F4",x"D5",x"20",x"8B",x"D8",x"D1",x"BF",x"98", -- 0x1828 + x"90",x"04",x"B1",x"BF",x"AA",x"98",x"48",x"8A", -- 0x1830 + x"48",x"20",x"AB",x"D5",x"A5",x"BF",x"A4",x"C0", -- 0x1838 + x"20",x"D4",x"D7",x"68",x"A8",x"68",x"18",x"65", -- 0x1840 + x"91",x"85",x"91",x"90",x"02",x"E6",x"92",x"98", -- 0x1848 + x"20",x"B6",x"D7",x"4C",x"F4",x"D5",x"20",x"8B", -- 0x1850 + x"D8",x"18",x"F1",x"BF",x"49",x"FF",x"4C",x"30", -- 0x1858 + x"D8",x"A9",x"FF",x"85",x"D4",x"20",x"E8",x"00", -- 0x1860 + x"C9",x"29",x"F0",x"06",x"20",x"65",x"D0",x"20", -- 0x1868 + x"C8",x"D8",x"20",x"8B",x"D8",x"F0",x"4B",x"CA", -- 0x1870 + x"8A",x"48",x"18",x"A2",x"00",x"F1",x"BF",x"B0", -- 0x1878 + x"B6",x"49",x"FF",x"C5",x"D4",x"90",x"B1",x"A5", -- 0x1880 + x"D4",x"B0",x"AD",x"20",x"5F",x"D0",x"68",x"A8", -- 0x1888 + x"68",x"85",x"C4",x"68",x"68",x"68",x"AA",x"68", -- 0x1890 + x"85",x"BF",x"68",x"85",x"C0",x"A5",x"C4",x"48", -- 0x1898 + x"98",x"48",x"A0",x"00",x"8A",x"60",x"20",x"AC", -- 0x18A0 + x"D8",x"4C",x"B6",x"D4",x"20",x"CD",x"D7",x"A2", -- 0x18A8 + x"00",x"86",x"28",x"A8",x"60",x"20",x"AC",x"D8", -- 0x18B0 + x"F0",x"08",x"A0",x"00",x"B1",x"91",x"A8",x"4C", -- 0x18B8 + x"B6",x"D4",x"4C",x"36",x"D3",x"20",x"E2",x"00", -- 0x18C0 + x"20",x"03",x"CF",x"20",x"A2",x"D2",x"A6",x"D3", -- 0x18C8 + x"D0",x"F0",x"A6",x"D4",x"4C",x"E8",x"00",x"20", -- 0x18D0 + x"AC",x"D8",x"D0",x"03",x"4C",x"B2",x"DB",x"A6", -- 0x18D8 + x"E9",x"A4",x"EA",x"86",x"E0",x"84",x"E1",x"A6", -- 0x18E0 + x"91",x"86",x"E9",x"18",x"65",x"91",x"85",x"93", -- 0x18E8 + x"A6",x"92",x"86",x"EA",x"90",x"01",x"E8",x"86", -- 0x18F0 + x"94",x"A0",x"00",x"B1",x"93",x"48",x"A9",x"00", -- 0x18F8 + x"91",x"93",x"20",x"E8",x"00",x"20",x"E7",x"DF", -- 0x1900 + x"68",x"A0",x"00",x"91",x"93",x"A6",x"E0",x"A4", -- 0x1908 + x"E1",x"86",x"E9",x"84",x"EA",x"60",x"20",x"03", -- 0x1910 + x"CF",x"20",x"22",x"D9",x"20",x"65",x"D0",x"4C", -- 0x1918 + x"C8",x"D8",x"A5",x"D5",x"30",x"9C",x"A5",x"D0", -- 0x1920 + x"C9",x"91",x"B0",x"96",x"20",x"8C",x"DF",x"A5", -- 0x1928 + x"D3",x"A4",x"D4",x"84",x"33",x"85",x"34",x"60", -- 0x1930 + x"A5",x"34",x"48",x"A5",x"33",x"48",x"20",x"22", -- 0x1938 + x"D9",x"A0",x"00",x"B1",x"33",x"A8",x"68",x"85", -- 0x1940 + x"33",x"68",x"85",x"34",x"4C",x"B6",x"D4",x"20", -- 0x1948 + x"16",x"D9",x"8A",x"A0",x"00",x"91",x"33",x"60", -- 0x1950 + x"20",x"03",x"CF",x"20",x"22",x"D9",x"A4",x"33", -- 0x1958 + x"A6",x"34",x"A9",x"02",x"4C",x"C9",x"EE",x"20", -- 0x1960 + x"53",x"E8",x"A5",x"33",x"A4",x"34",x"85",x"1D", -- 0x1968 + x"84",x"1E",x"20",x"65",x"D0",x"20",x"53",x"E8", -- 0x1970 + x"A0",x"01",x"B9",x"33",x"00",x"91",x"1D",x"88", -- 0x1978 + x"10",x"F8",x"60",x"20",x"22",x"D9",x"A0",x"01", -- 0x1980 + x"B1",x"33",x"48",x"88",x"B1",x"33",x"A8",x"68", -- 0x1988 + x"4C",x"40",x"DF",x"48",x"4A",x"4A",x"4A",x"4A", -- 0x1990 + x"20",x"9C",x"D9",x"68",x"29",x"0F",x"09",x"30", -- 0x1998 + x"C9",x"3A",x"90",x"02",x"69",x"06",x"C9",x"30", -- 0x19A0 + x"D0",x"04",x"A4",x"2F",x"F0",x"06",x"85",x"2F", -- 0x19A8 + x"9D",x"00",x"01",x"E8",x"60",x"20",x"22",x"D9", -- 0x19B0 + x"A2",x"00",x"86",x"2F",x"A9",x"23",x"85",x"FF", -- 0x19B8 + x"A5",x"34",x"20",x"93",x"D9",x"A5",x"33",x"20", -- 0x19C0 + x"93",x"D9",x"8A",x"D0",x"06",x"A9",x"30",x"9D", -- 0x19C8 + x"00",x"01",x"E8",x"A9",x"00",x"9D",x"00",x"01", -- 0x19D0 + x"4C",x"9B",x"D5",x"4C",x"70",x"D0",x"20",x"21", -- 0x19D8 + x"EC",x"20",x"C8",x"D8",x"8A",x"F0",x"06",x"CA", -- 0x19E0 + x"D0",x"F1",x"A9",x"09",x"2C",x"A9",x"08",x"A2", -- 0x19E8 + x"10",x"8E",x"F8",x"02",x"A2",x"1B",x"48",x"8A", -- 0x19F0 + x"20",x"0C",x"DA",x"AD",x"F8",x"02",x"A0",x"27", -- 0x19F8 + x"91",x"1F",x"88",x"D0",x"FB",x"68",x"91",x"1F", -- 0x1A00 + x"CA",x"D0",x"EB",x"60",x"20",x"31",x"F7",x"84", -- 0x1A08 + x"20",x"18",x"69",x"80",x"48",x"85",x"1F",x"A9", -- 0x1A10 + x"BB",x"65",x"20",x"85",x"20",x"68",x"60",x"4C", -- 0x1A18 + x"C2",x"D8",x"20",x"F6",x"DA",x"20",x"C8",x"D8", -- 0x1A20 + x"E0",x"28",x"B0",x"F3",x"8E",x"F8",x"02",x"20", -- 0x1A28 + x"65",x"D0",x"20",x"C8",x"D8",x"E0",x"1B",x"B0", -- 0x1A30 + x"E6",x"E8",x"8A",x"20",x"0C",x"DA",x"60",x"20", -- 0x1A38 + x"62",x"D0",x"20",x"22",x"DA",x"20",x"5F",x"D0", -- 0x1A40 + x"AC",x"F8",x"02",x"B1",x"1F",x"A8",x"4C",x"B6", -- 0x1A48 + x"D4",x"20",x"22",x"DA",x"20",x"65",x"D0",x"20", -- 0x1A50 + x"17",x"CF",x"24",x"28",x"10",x"1D",x"20",x"D0", -- 0x1A58 + x"D7",x"AA",x"18",x"AD",x"F8",x"02",x"65",x"1F", -- 0x1A60 + x"90",x"02",x"E6",x"20",x"85",x"1F",x"A0",x"00", -- 0x1A68 + x"E8",x"CA",x"F0",x"10",x"B1",x"91",x"91",x"1F", -- 0x1A70 + x"C8",x"D0",x"F6",x"20",x"CB",x"D8",x"8A",x"AC", -- 0x1A78 + x"F8",x"02",x"91",x"1F",x"60",x"D0",x"17",x"A9", -- 0x1A80 + x"03",x"20",x"37",x"C4",x"A5",x"EA",x"48",x"A5", -- 0x1A88 + x"E9",x"48",x"A5",x"A9",x"48",x"A5",x"A8",x"48", -- 0x1A90 + x"A9",x"8B",x"48",x"4C",x"C1",x"C8",x"4C",x"70", -- 0x1A98 + x"D0",x"A9",x"FF",x"85",x"B9",x"20",x"C6",x"C3", -- 0x1AA0 + x"9A",x"C9",x"8B",x"F0",x"05",x"A2",x"F5",x"4C", -- 0x1AA8 + x"7E",x"C4",x"C0",x"10",x"D0",x"05",x"84",x"D0", -- 0x1AB0 + x"98",x"D0",x"06",x"20",x"E8",x"00",x"20",x"17", -- 0x1AB8 + x"CF",x"68",x"A5",x"D0",x"F0",x"05",x"68",x"68", -- 0x1AC0 + x"68",x"68",x"60",x"68",x"85",x"A8",x"68",x"85", -- 0x1AC8 + x"A9",x"68",x"85",x"E9",x"68",x"85",x"EA",x"4C", -- 0x1AD0 + x"8C",x"DA",x"20",x"78",x"EB",x"08",x"48",x"10", -- 0x1AD8 + x"03",x"A9",x"01",x"2C",x"A9",x"00",x"20",x"AB", -- 0x1AE0 + x"D5",x"68",x"28",x"10",x"04",x"A0",x"00",x"91", -- 0x1AE8 + x"D1",x"68",x"68",x"4C",x"F4",x"D5",x"AD",x"C0", -- 0x1AF0 + x"02",x"29",x"01",x"F0",x"05",x"A2",x"A3",x"4C", -- 0x1AF8 + x"7E",x"C4",x"60",x"60",x"A9",x"05",x"A0",x"E2", -- 0x1B00 + x"4C",x"22",x"DB",x"20",x"51",x"DD",x"A5",x"D5", -- 0x1B08 + x"49",x"FF",x"85",x"D5",x"45",x"DD",x"85",x"DE", -- 0x1B10 + x"A5",x"D0",x"4C",x"25",x"DB",x"20",x"54",x"DC", -- 0x1B18 + x"90",x"3C",x"20",x"51",x"DD",x"D0",x"03",x"4C", -- 0x1B20 + x"D5",x"DE",x"A6",x"DF",x"86",x"C5",x"A2",x"D8", -- 0x1B28 + x"A5",x"D8",x"A8",x"F0",x"CE",x"38",x"E5",x"D0", -- 0x1B30 + x"F0",x"24",x"90",x"12",x"84",x"D0",x"A4",x"DD", -- 0x1B38 + x"84",x"D5",x"49",x"FF",x"69",x"00",x"A0",x"00", -- 0x1B40 + x"84",x"C5",x"A2",x"D0",x"D0",x"04",x"A0",x"00", -- 0x1B48 + x"84",x"DF",x"C9",x"F9",x"30",x"C7",x"A8",x"A5", -- 0x1B50 + x"DF",x"56",x"01",x"20",x"6B",x"DC",x"24",x"DE", -- 0x1B58 + x"10",x"57",x"A0",x"D0",x"E0",x"D8",x"F0",x"02", -- 0x1B60 + x"A0",x"D8",x"38",x"49",x"FF",x"65",x"C5",x"85", -- 0x1B68 + x"DF",x"B9",x"04",x"00",x"F5",x"04",x"85",x"D4", -- 0x1B70 + x"B9",x"03",x"00",x"F5",x"03",x"85",x"D3",x"B9", -- 0x1B78 + x"02",x"00",x"F5",x"02",x"85",x"D2",x"B9",x"01", -- 0x1B80 + x"00",x"F5",x"01",x"85",x"D1",x"B0",x"03",x"20", -- 0x1B88 + x"02",x"DC",x"A0",x"00",x"98",x"18",x"A6",x"D1", -- 0x1B90 + x"D0",x"4A",x"A6",x"D2",x"86",x"D1",x"A6",x"D3", -- 0x1B98 + x"86",x"D2",x"A6",x"D4",x"86",x"D3",x"A6",x"DF", -- 0x1BA0 + x"86",x"D4",x"84",x"DF",x"69",x"08",x"C9",x"28", -- 0x1BA8 + x"D0",x"E4",x"A9",x"00",x"85",x"D0",x"85",x"D5", -- 0x1BB0 + x"60",x"65",x"C5",x"85",x"DF",x"A5",x"D4",x"65", -- 0x1BB8 + x"DC",x"85",x"D4",x"A5",x"D3",x"65",x"DB",x"85", -- 0x1BC0 + x"D3",x"A5",x"D2",x"65",x"DA",x"85",x"D2",x"A5", -- 0x1BC8 + x"D1",x"65",x"D9",x"85",x"D1",x"4C",x"F1",x"DB", -- 0x1BD0 + x"69",x"01",x"06",x"DF",x"26",x"D4",x"26",x"D3", -- 0x1BD8 + x"26",x"D2",x"26",x"D1",x"10",x"F2",x"38",x"E5", -- 0x1BE0 + x"D0",x"B0",x"C7",x"49",x"FF",x"69",x"01",x"85", -- 0x1BE8 + x"D0",x"90",x"0E",x"E6",x"D0",x"F0",x"42",x"66", -- 0x1BF0 + x"D1",x"66",x"D2",x"66",x"D3",x"66",x"D4",x"66", -- 0x1BF8 + x"DF",x"60",x"A5",x"D5",x"49",x"FF",x"85",x"D5", -- 0x1C00 + x"A5",x"D1",x"49",x"FF",x"85",x"D1",x"A5",x"D2", -- 0x1C08 + x"49",x"FF",x"85",x"D2",x"A5",x"D3",x"49",x"FF", -- 0x1C10 + x"85",x"D3",x"A5",x"D4",x"49",x"FF",x"85",x"D4", -- 0x1C18 + x"A5",x"DF",x"49",x"FF",x"85",x"DF",x"E6",x"DF", -- 0x1C20 + x"D0",x"0E",x"E6",x"D4",x"D0",x"0A",x"E6",x"D3", -- 0x1C28 + x"D0",x"06",x"E6",x"D2",x"D0",x"02",x"E6",x"D1", -- 0x1C30 + x"60",x"A2",x"45",x"4C",x"7E",x"C4",x"A2",x"94", -- 0x1C38 + x"B4",x"04",x"84",x"DF",x"B4",x"03",x"94",x"04", -- 0x1C40 + x"B4",x"02",x"94",x"03",x"B4",x"01",x"94",x"02", -- 0x1C48 + x"A4",x"D7",x"94",x"01",x"69",x"08",x"30",x"E8", -- 0x1C50 + x"F0",x"E6",x"E9",x"08",x"A8",x"A5",x"DF",x"B0", -- 0x1C58 + x"14",x"16",x"01",x"90",x"02",x"F6",x"01",x"76", -- 0x1C60 + x"01",x"76",x"01",x"76",x"02",x"76",x"03",x"76", -- 0x1C68 + x"04",x"6A",x"C8",x"D0",x"EC",x"18",x"60",x"82", -- 0x1C70 + x"13",x"5D",x"8D",x"DE",x"82",x"49",x"0F",x"DA", -- 0x1C78 + x"9E",x"81",x"00",x"00",x"00",x"00",x"03",x"7F", -- 0x1C80 + x"5E",x"56",x"CB",x"79",x"80",x"13",x"9B",x"0B", -- 0x1C88 + x"64",x"80",x"76",x"38",x"93",x"16",x"82",x"38", -- 0x1C90 + x"AA",x"3B",x"20",x"80",x"35",x"04",x"F3",x"34", -- 0x1C98 + x"81",x"35",x"04",x"F3",x"34",x"80",x"80",x"00", -- 0x1CA0 + x"00",x"00",x"80",x"31",x"72",x"17",x"F8",x"20", -- 0x1CA8 + x"13",x"DF",x"F0",x"02",x"10",x"03",x"4C",x"36", -- 0x1CB0 + x"D3",x"A5",x"D0",x"E9",x"7F",x"48",x"A9",x"80", -- 0x1CB8 + x"85",x"D0",x"A9",x"9B",x"A0",x"DC",x"20",x"22", -- 0x1CC0 + x"DB",x"A9",x"A0",x"A0",x"DC",x"20",x"E4",x"DD", -- 0x1CC8 + x"A9",x"81",x"A0",x"DC",x"20",x"0B",x"DB",x"A9", -- 0x1CD0 + x"86",x"A0",x"DC",x"20",x"FD",x"E2",x"A9",x"A5", -- 0x1CD8 + x"A0",x"DC",x"20",x"22",x"DB",x"68",x"20",x"76", -- 0x1CE0 + x"E0",x"A9",x"AA",x"A0",x"DC",x"20",x"51",x"DD", -- 0x1CE8 + x"D0",x"03",x"4C",x"50",x"DD",x"20",x"7C",x"DD", -- 0x1CF0 + x"A9",x"00",x"85",x"95",x"85",x"96",x"85",x"97", -- 0x1CF8 + x"85",x"98",x"A5",x"DF",x"20",x"1E",x"DD",x"A5", -- 0x1D00 + x"D4",x"20",x"1E",x"DD",x"A5",x"D3",x"20",x"1E", -- 0x1D08 + x"DD",x"A5",x"D2",x"20",x"1E",x"DD",x"A5",x"D1", -- 0x1D10 + x"20",x"23",x"DD",x"4C",x"64",x"DE",x"D0",x"03", -- 0x1D18 + x"4C",x"3E",x"DC",x"4A",x"09",x"80",x"A8",x"90", -- 0x1D20 + x"19",x"18",x"A5",x"98",x"65",x"DC",x"85",x"98", -- 0x1D28 + x"A5",x"97",x"65",x"DB",x"85",x"97",x"A5",x"96", -- 0x1D30 + x"65",x"DA",x"85",x"96",x"A5",x"95",x"65",x"D9", -- 0x1D38 + x"85",x"95",x"66",x"95",x"66",x"96",x"66",x"97", -- 0x1D40 + x"66",x"98",x"66",x"DF",x"98",x"4A",x"D0",x"D6", -- 0x1D48 + x"60",x"85",x"91",x"84",x"92",x"A0",x"04",x"B1", -- 0x1D50 + x"91",x"85",x"DC",x"88",x"B1",x"91",x"85",x"DB", -- 0x1D58 + x"88",x"B1",x"91",x"85",x"DA",x"88",x"B1",x"91", -- 0x1D60 + x"85",x"DD",x"45",x"D5",x"85",x"DE",x"A5",x"DD", -- 0x1D68 + x"09",x"80",x"85",x"D9",x"88",x"B1",x"91",x"85", -- 0x1D70 + x"D8",x"A5",x"D0",x"60",x"A5",x"D8",x"F0",x"1F", -- 0x1D78 + x"18",x"65",x"D0",x"90",x"04",x"30",x"1D",x"18", -- 0x1D80 + x"2C",x"10",x"14",x"69",x"80",x"85",x"D0",x"D0", -- 0x1D88 + x"03",x"4C",x"B6",x"DB",x"A5",x"DE",x"85",x"D5", -- 0x1D90 + x"60",x"A5",x"D5",x"49",x"FF",x"30",x"05",x"68", -- 0x1D98 + x"68",x"4C",x"B2",x"DB",x"4C",x"39",x"DC",x"20", -- 0x1DA0 + x"E5",x"DE",x"AA",x"F0",x"10",x"18",x"69",x"02", -- 0x1DA8 + x"B0",x"F2",x"A2",x"00",x"86",x"DE",x"20",x"32", -- 0x1DB0 + x"DB",x"E6",x"D0",x"F0",x"E7",x"60",x"84",x"20", -- 0x1DB8 + x"00",x"00",x"00",x"20",x"E5",x"DE",x"A9",x"BE", -- 0x1DC0 + x"A0",x"DD",x"A2",x"00",x"86",x"DE",x"20",x"7B", -- 0x1DC8 + x"DE",x"4C",x"E7",x"DD",x"20",x"AF",x"DC",x"20", -- 0x1DD0 + x"E5",x"DE",x"A9",x"77",x"A0",x"DC",x"20",x"7B", -- 0x1DD8 + x"DE",x"4C",x"E7",x"DD",x"20",x"51",x"DD",x"F0", -- 0x1DE0 + x"76",x"20",x"F4",x"DE",x"A9",x"00",x"38",x"E5", -- 0x1DE8 + x"D0",x"85",x"D0",x"20",x"7C",x"DD",x"E6",x"D0", -- 0x1DF0 + x"F0",x"AA",x"A2",x"FC",x"A9",x"01",x"A4",x"D9", -- 0x1DF8 + x"C4",x"D1",x"D0",x"10",x"A4",x"DA",x"C4",x"D2", -- 0x1E00 + x"D0",x"0A",x"A4",x"DB",x"C4",x"D3",x"D0",x"04", -- 0x1E08 + x"A4",x"DC",x"C4",x"D4",x"08",x"2A",x"90",x"09", -- 0x1E10 + x"E8",x"95",x"98",x"F0",x"32",x"10",x"34",x"A9", -- 0x1E18 + x"01",x"28",x"B0",x"0E",x"06",x"DC",x"26",x"DB", -- 0x1E20 + x"26",x"DA",x"26",x"D9",x"B0",x"E6",x"30",x"CE", -- 0x1E28 + x"10",x"E2",x"A8",x"A5",x"DC",x"E5",x"D4",x"85", -- 0x1E30 + x"DC",x"A5",x"DB",x"E5",x"D3",x"85",x"DB",x"A5", -- 0x1E38 + x"DA",x"E5",x"D2",x"85",x"DA",x"A5",x"D9",x"E5", -- 0x1E40 + x"D1",x"85",x"D9",x"98",x"4C",x"24",x"DE",x"A9", -- 0x1E48 + x"40",x"D0",x"CE",x"0A",x"0A",x"0A",x"0A",x"0A", -- 0x1E50 + x"0A",x"85",x"DF",x"28",x"4C",x"64",x"DE",x"A2", -- 0x1E58 + x"85",x"4C",x"7E",x"C4",x"A5",x"95",x"85",x"D1", -- 0x1E60 + x"A5",x"96",x"85",x"D2",x"A5",x"97",x"85",x"D3", -- 0x1E68 + x"A5",x"98",x"85",x"D4",x"4C",x"92",x"DB",x"A9", -- 0x1E70 + x"7C",x"A0",x"DC",x"85",x"91",x"84",x"92",x"A0", -- 0x1E78 + x"04",x"B1",x"91",x"85",x"D4",x"88",x"B1",x"91", -- 0x1E80 + x"85",x"D3",x"88",x"B1",x"91",x"85",x"D2",x"88", -- 0x1E88 + x"B1",x"91",x"85",x"D5",x"09",x"80",x"85",x"D1", -- 0x1E90 + x"88",x"B1",x"91",x"85",x"D0",x"84",x"DF",x"60", -- 0x1E98 + x"A2",x"CB",x"2C",x"A2",x"C6",x"A0",x"00",x"F0", -- 0x1EA0 + x"04",x"A6",x"B8",x"A4",x"B9",x"20",x"F4",x"DE", -- 0x1EA8 + x"86",x"91",x"84",x"92",x"A0",x"04",x"A5",x"D4", -- 0x1EB0 + x"91",x"91",x"88",x"A5",x"D3",x"91",x"91",x"88", -- 0x1EB8 + x"A5",x"D2",x"91",x"91",x"88",x"A5",x"D5",x"09", -- 0x1EC0 + x"7F",x"25",x"D1",x"91",x"91",x"88",x"A5",x"D0", -- 0x1EC8 + x"91",x"91",x"84",x"DF",x"60",x"A5",x"DD",x"85", -- 0x1ED0 + x"D5",x"A2",x"05",x"B5",x"D7",x"95",x"CF",x"CA", -- 0x1ED8 + x"D0",x"F9",x"86",x"DF",x"60",x"20",x"F4",x"DE", -- 0x1EE0 + x"A2",x"06",x"B5",x"CF",x"95",x"D7",x"CA",x"D0", -- 0x1EE8 + x"F9",x"86",x"DF",x"60",x"A5",x"D0",x"F0",x"FB", -- 0x1EF0 + x"06",x"DF",x"90",x"F7",x"20",x"2A",x"DC",x"D0", -- 0x1EF8 + x"F2",x"4C",x"F3",x"DB",x"20",x"A9",x"D2",x"46", -- 0x1F00 + x"D4",x"B0",x"04",x"A9",x"00",x"F0",x"15",x"A9", -- 0x1F08 + x"FF",x"30",x"11",x"A5",x"D0",x"F0",x"09",x"A5", -- 0x1F10 + x"D5",x"2A",x"A9",x"FF",x"B0",x"02",x"A9",x"01", -- 0x1F18 + x"60",x"20",x"13",x"DF",x"85",x"D1",x"A9",x"00", -- 0x1F20 + x"85",x"D2",x"A2",x"88",x"A5",x"D1",x"49",x"FF", -- 0x1F28 + x"2A",x"A9",x"00",x"85",x"D4",x"85",x"D3",x"86", -- 0x1F30 + x"D0",x"85",x"DF",x"85",x"D5",x"4C",x"8D",x"DB", -- 0x1F38 + x"85",x"D1",x"84",x"D2",x"A2",x"90",x"38",x"B0", -- 0x1F40 + x"E8",x"46",x"D5",x"60",x"85",x"93",x"84",x"94", -- 0x1F48 + x"A0",x"00",x"B1",x"93",x"C8",x"AA",x"F0",x"BB", -- 0x1F50 + x"B1",x"93",x"45",x"D5",x"30",x"B9",x"E4",x"D0", -- 0x1F58 + x"D0",x"21",x"B1",x"93",x"09",x"80",x"C5",x"D1", -- 0x1F60 + x"D0",x"19",x"C8",x"B1",x"93",x"C5",x"D2",x"D0", -- 0x1F68 + x"12",x"C8",x"B1",x"93",x"C5",x"D3",x"D0",x"0B", -- 0x1F70 + x"C8",x"A9",x"7F",x"C5",x"DF",x"B1",x"93",x"E5", -- 0x1F78 + x"D4",x"F0",x"28",x"A5",x"D5",x"90",x"02",x"49", -- 0x1F80 + x"FF",x"4C",x"19",x"DF",x"A5",x"D0",x"F0",x"4A", -- 0x1F88 + x"38",x"E9",x"A0",x"24",x"D5",x"10",x"09",x"AA", -- 0x1F90 + x"A9",x"FF",x"85",x"D7",x"20",x"08",x"DC",x"8A", -- 0x1F98 + x"A2",x"D0",x"C9",x"F9",x"10",x"06",x"20",x"54", -- 0x1FA0 + x"DC",x"84",x"D7",x"60",x"A8",x"A5",x"D5",x"29", -- 0x1FA8 + x"80",x"46",x"D1",x"05",x"D1",x"85",x"D1",x"20", -- 0x1FB0 + x"6B",x"DC",x"84",x"D7",x"60",x"A5",x"D0",x"C9", -- 0x1FB8 + x"A0",x"B0",x"20",x"20",x"8C",x"DF",x"84",x"DF", -- 0x1FC0 + x"A5",x"D5",x"84",x"D5",x"49",x"80",x"2A",x"A9", -- 0x1FC8 + x"A0",x"85",x"D0",x"A5",x"D4",x"85",x"24",x"4C", -- 0x1FD0 + x"8D",x"DB",x"85",x"D1",x"85",x"D2",x"85",x"D3", -- 0x1FD8 + x"85",x"D4",x"A8",x"60",x"4C",x"81",x"E9",x"A0", -- 0x1FE0 + x"00",x"A2",x"0A",x"94",x"CC",x"CA",x"10",x"FB", -- 0x1FE8 + x"90",x"13",x"C9",x"23",x"F0",x"EE",x"C9",x"2D", -- 0x1FF0 + x"D0",x"04",x"86",x"D6",x"F0",x"04",x"C9",x"2B", -- 0x1FF8 + x"D0",x"05",x"20",x"E2",x"00",x"90",x"5B",x"C9", -- 0x2000 + x"2E",x"F0",x"2E",x"C9",x"45",x"D0",x"30",x"20", -- 0x2008 + x"E2",x"00",x"90",x"17",x"C9",x"CD",x"F0",x"0E", -- 0x2010 + x"C9",x"2D",x"F0",x"0A",x"C9",x"CC",x"F0",x"08", -- 0x2018 + x"C9",x"2B",x"F0",x"04",x"D0",x"07",x"66",x"CF", -- 0x2020 + x"20",x"E2",x"00",x"90",x"5C",x"24",x"CF",x"10", -- 0x2028 + x"0E",x"A9",x"00",x"38",x"E5",x"CD",x"4C",x"41", -- 0x2030 + x"E0",x"66",x"CE",x"24",x"CE",x"50",x"C3",x"A5", -- 0x2038 + x"CD",x"38",x"E5",x"CC",x"85",x"CD",x"F0",x"12", -- 0x2040 + x"10",x"09",x"20",x"C3",x"DD",x"E6",x"CD",x"D0", -- 0x2048 + x"F9",x"F0",x"07",x"20",x"A7",x"DD",x"C6",x"CD", -- 0x2050 + x"D0",x"F9",x"A5",x"D6",x"30",x"01",x"60",x"4C", -- 0x2058 + x"71",x"E2",x"48",x"24",x"CE",x"10",x"02",x"E6", -- 0x2060 + x"CC",x"20",x"A7",x"DD",x"68",x"38",x"E9",x"30", -- 0x2068 + x"20",x"76",x"E0",x"4C",x"02",x"E0",x"48",x"20", -- 0x2070 + x"E5",x"DE",x"68",x"20",x"24",x"DF",x"A5",x"DD", -- 0x2078 + x"45",x"D5",x"85",x"DE",x"A6",x"D0",x"4C",x"25", -- 0x2080 + x"DB",x"A5",x"CD",x"C9",x"0A",x"90",x"09",x"A9", -- 0x2088 + x"64",x"24",x"CF",x"30",x"11",x"4C",x"39",x"DC", -- 0x2090 + x"0A",x"0A",x"18",x"65",x"CD",x"0A",x"18",x"A0", -- 0x2098 + x"00",x"71",x"E9",x"38",x"E9",x"30",x"85",x"CD", -- 0x20A0 + x"4C",x"28",x"E0",x"9B",x"3E",x"BC",x"1F",x"FD", -- 0x20A8 + x"9E",x"6E",x"6B",x"27",x"FD",x"9E",x"6E",x"6B", -- 0x20B0 + x"28",x"00",x"A9",x"AD",x"A0",x"C3",x"20",x"D2", -- 0x20B8 + x"E0",x"A5",x"A9",x"A6",x"A8",x"85",x"D1",x"86", -- 0x20C0 + x"D2",x"A2",x"90",x"38",x"20",x"31",x"DF",x"20", -- 0x20C8 + x"D5",x"E0",x"4C",x"B0",x"CC",x"A0",x"01",x"A9", -- 0x20D0 + x"20",x"24",x"D5",x"10",x"02",x"A9",x"2D",x"99", -- 0x20D8 + x"FF",x"00",x"85",x"D5",x"84",x"E0",x"C8",x"A9", -- 0x20E0 + x"30",x"A6",x"D0",x"D0",x"03",x"4C",x"F8",x"E1", -- 0x20E8 + x"A9",x"00",x"E0",x"80",x"F0",x"02",x"B0",x"09", -- 0x20F0 + x"A9",x"B5",x"A0",x"E0",x"20",x"ED",x"DC",x"A9", -- 0x20F8 + x"F7",x"85",x"CC",x"A9",x"B0",x"A0",x"E0",x"20", -- 0x2100 + x"4C",x"DF",x"F0",x"1E",x"10",x"12",x"A9",x"AB", -- 0x2108 + x"A0",x"E0",x"20",x"4C",x"DF",x"F0",x"02",x"10", -- 0x2110 + x"0E",x"20",x"A7",x"DD",x"C6",x"CC",x"D0",x"EE", -- 0x2118 + x"20",x"C3",x"DD",x"E6",x"CC",x"D0",x"DC",x"20", -- 0x2120 + x"04",x"DB",x"20",x"8C",x"DF",x"A2",x"01",x"A5", -- 0x2128 + x"CC",x"18",x"69",x"0A",x"30",x"09",x"C9",x"0B", -- 0x2130 + x"B0",x"06",x"69",x"FF",x"AA",x"A9",x"02",x"38", -- 0x2138 + x"E9",x"02",x"85",x"CD",x"86",x"CC",x"8A",x"F0", -- 0x2140 + x"02",x"10",x"13",x"A4",x"E0",x"A9",x"2E",x"C8", -- 0x2148 + x"99",x"FF",x"00",x"8A",x"F0",x"06",x"A9",x"30", -- 0x2150 + x"C8",x"99",x"FF",x"00",x"84",x"E0",x"A0",x"00", -- 0x2158 + x"A2",x"80",x"A5",x"D4",x"18",x"79",x"0D",x"E2", -- 0x2160 + x"85",x"D4",x"A5",x"D3",x"79",x"0C",x"E2",x"85", -- 0x2168 + x"D3",x"A5",x"D2",x"79",x"0B",x"E2",x"85",x"D2", -- 0x2170 + x"A5",x"D1",x"79",x"0A",x"E2",x"85",x"D1",x"E8", -- 0x2178 + x"B0",x"04",x"10",x"DE",x"30",x"02",x"30",x"DA", -- 0x2180 + x"8A",x"90",x"04",x"49",x"FF",x"69",x"0A",x"69", -- 0x2188 + x"2F",x"C8",x"C8",x"C8",x"C8",x"84",x"B6",x"A4", -- 0x2190 + x"E0",x"C8",x"AA",x"29",x"7F",x"99",x"FF",x"00", -- 0x2198 + x"C6",x"CC",x"D0",x"06",x"A9",x"2E",x"C8",x"99", -- 0x21A0 + x"FF",x"00",x"84",x"E0",x"A4",x"B6",x"8A",x"49", -- 0x21A8 + x"FF",x"29",x"80",x"AA",x"C0",x"24",x"D0",x"AA", -- 0x21B0 + x"A4",x"E0",x"B9",x"FF",x"00",x"88",x"C9",x"30", -- 0x21B8 + x"F0",x"F8",x"C9",x"2E",x"F0",x"01",x"C8",x"A9", -- 0x21C0 + x"2B",x"A6",x"CD",x"F0",x"2E",x"10",x"08",x"A9", -- 0x21C8 + x"00",x"38",x"E5",x"CD",x"AA",x"A9",x"2D",x"99", -- 0x21D0 + x"01",x"01",x"A9",x"45",x"99",x"00",x"01",x"8A", -- 0x21D8 + x"A2",x"2F",x"38",x"E8",x"E9",x"0A",x"B0",x"FB", -- 0x21E0 + x"69",x"3A",x"99",x"03",x"01",x"8A",x"99",x"02", -- 0x21E8 + x"01",x"A9",x"00",x"99",x"04",x"01",x"F0",x"08", -- 0x21F0 + x"99",x"FF",x"00",x"A9",x"00",x"99",x"00",x"01", -- 0x21F8 + x"A9",x"00",x"A0",x"01",x"60",x"80",x"00",x"00", -- 0x2200 + x"00",x"00",x"FA",x"0A",x"1F",x"00",x"00",x"98", -- 0x2208 + x"96",x"80",x"FF",x"F0",x"BD",x"C0",x"00",x"01", -- 0x2210 + x"86",x"A0",x"FF",x"FF",x"D8",x"F0",x"00",x"00", -- 0x2218 + x"03",x"E8",x"FF",x"FF",x"FF",x"9C",x"00",x"00", -- 0x2220 + x"00",x"0A",x"FF",x"FF",x"FF",x"FF",x"20",x"E5", -- 0x2228 + x"DE",x"A9",x"05",x"A0",x"E2",x"20",x"7B",x"DE", -- 0x2230 + x"F0",x"70",x"A5",x"D8",x"D0",x"03",x"4C",x"B4", -- 0x2238 + x"DB",x"A2",x"BD",x"A0",x"00",x"20",x"AD",x"DE", -- 0x2240 + x"A5",x"DD",x"10",x"0F",x"20",x"BD",x"DF",x"A9", -- 0x2248 + x"BD",x"A0",x"00",x"20",x"4C",x"DF",x"D0",x"03", -- 0x2250 + x"98",x"A4",x"24",x"20",x"D7",x"DE",x"98",x"48", -- 0x2258 + x"20",x"AF",x"DC",x"A9",x"BD",x"A0",x"00",x"20", -- 0x2260 + x"ED",x"DC",x"20",x"AA",x"E2",x"68",x"4A",x"90", -- 0x2268 + x"0A",x"A5",x"D0",x"F0",x"06",x"A5",x"D5",x"49", -- 0x2270 + x"FF",x"85",x"D5",x"60",x"81",x"38",x"AA",x"3B", -- 0x2278 + x"29",x"07",x"71",x"34",x"58",x"3E",x"56",x"74", -- 0x2280 + x"16",x"7E",x"B3",x"1B",x"77",x"2F",x"EE",x"E3", -- 0x2288 + x"85",x"7A",x"1D",x"84",x"1C",x"2A",x"7C",x"63", -- 0x2290 + x"59",x"58",x"0A",x"7E",x"75",x"FD",x"E7",x"C6", -- 0x2298 + x"80",x"31",x"72",x"18",x"10",x"81",x"00",x"00", -- 0x22A0 + x"00",x"00",x"A9",x"7C",x"A0",x"E2",x"20",x"ED", -- 0x22A8 + x"DC",x"A5",x"DF",x"69",x"50",x"90",x"03",x"20", -- 0x22B0 + x"FC",x"DE",x"85",x"C5",x"20",x"E8",x"DE",x"A5", -- 0x22B8 + x"D0",x"C9",x"88",x"90",x"03",x"20",x"99",x"DD", -- 0x22C0 + x"20",x"BD",x"DF",x"A5",x"24",x"18",x"69",x"81", -- 0x22C8 + x"F0",x"F3",x"38",x"E9",x"01",x"48",x"A2",x"05", -- 0x22D0 + x"B5",x"D8",x"B4",x"D0",x"95",x"D0",x"94",x"D8", -- 0x22D8 + x"CA",x"10",x"F5",x"A5",x"C5",x"85",x"DF",x"20", -- 0x22E0 + x"0E",x"DB",x"20",x"71",x"E2",x"A9",x"81",x"A0", -- 0x22E8 + x"E2",x"20",x"13",x"E3",x"A9",x"00",x"85",x"DE", -- 0x22F0 + x"68",x"20",x"7E",x"DD",x"60",x"85",x"E0",x"84", -- 0x22F8 + x"E1",x"20",x"A3",x"DE",x"A9",x"C6",x"20",x"ED", -- 0x2300 + x"DC",x"20",x"17",x"E3",x"A9",x"C6",x"A0",x"00", -- 0x2308 + x"4C",x"ED",x"DC",x"85",x"E0",x"84",x"E1",x"20", -- 0x2310 + x"A0",x"DE",x"B1",x"E0",x"85",x"D6",x"A4",x"E0", -- 0x2318 + x"C8",x"98",x"D0",x"02",x"E6",x"E1",x"85",x"E0", -- 0x2320 + x"A4",x"E1",x"20",x"ED",x"DC",x"A5",x"E0",x"A4", -- 0x2328 + x"E1",x"18",x"69",x"05",x"90",x"01",x"C8",x"85", -- 0x2330 + x"E0",x"84",x"E1",x"20",x"22",x"DB",x"A9",x"CB", -- 0x2338 + x"A0",x"00",x"C6",x"D6",x"D0",x"E4",x"60",x"98", -- 0x2340 + x"35",x"44",x"7A",x"68",x"28",x"B1",x"46",x"20", -- 0x2348 + x"13",x"DF",x"AA",x"30",x"18",x"A9",x"FA",x"A0", -- 0x2350 + x"00",x"20",x"7B",x"DE",x"8A",x"F0",x"E7",x"A9", -- 0x2358 + x"47",x"A0",x"E3",x"20",x"ED",x"DC",x"A9",x"4B", -- 0x2360 + x"A0",x"E3",x"20",x"22",x"DB",x"A6",x"D4",x"A5", -- 0x2368 + x"D1",x"85",x"D4",x"86",x"D1",x"A9",x"00",x"85", -- 0x2370 + x"D5",x"A5",x"D0",x"85",x"DF",x"A9",x"80",x"85", -- 0x2378 + x"D0",x"20",x"92",x"DB",x"A2",x"FA",x"A0",x"00", -- 0x2380 + x"4C",x"AD",x"DE",x"A9",x"07",x"A0",x"E4",x"20", -- 0x2388 + x"22",x"DB",x"20",x"E5",x"DE",x"A9",x"0C",x"A0", -- 0x2390 + x"E4",x"A6",x"DD",x"20",x"CC",x"DD",x"20",x"E5", -- 0x2398 + x"DE",x"20",x"BD",x"DF",x"A9",x"00",x"85",x"DE", -- 0x23A0 + x"20",x"0E",x"DB",x"A9",x"11",x"A0",x"E4",x"20", -- 0x23A8 + x"0B",x"DB",x"A5",x"D5",x"48",x"10",x"0D",x"20", -- 0x23B0 + x"04",x"DB",x"A5",x"D5",x"30",x"09",x"A5",x"2D", -- 0x23B8 + x"49",x"FF",x"85",x"2D",x"20",x"71",x"E2",x"A9", -- 0x23C0 + x"11",x"A0",x"E4",x"20",x"22",x"DB",x"68",x"10", -- 0x23C8 + x"03",x"20",x"71",x"E2",x"A9",x"16",x"A0",x"E4", -- 0x23D0 + x"4C",x"FD",x"E2",x"20",x"A3",x"DE",x"A9",x"00", -- 0x23D8 + x"85",x"2D",x"20",x"92",x"E3",x"A2",x"BD",x"A0", -- 0x23E0 + x"00",x"20",x"88",x"E3",x"A9",x"C6",x"A0",x"00", -- 0x23E8 + x"20",x"7B",x"DE",x"A9",x"00",x"85",x"D5",x"A5", -- 0x23F0 + x"2D",x"20",x"03",x"E4",x"A9",x"BD",x"A0",x"00", -- 0x23F8 + x"4C",x"E4",x"DD",x"48",x"4C",x"C4",x"E3",x"81", -- 0x2400 + x"49",x"0F",x"DA",x"A2",x"83",x"49",x"0F",x"DA", -- 0x2408 + x"A2",x"7F",x"00",x"00",x"00",x"00",x"05",x"84", -- 0x2410 + x"E6",x"1A",x"2D",x"1B",x"86",x"28",x"07",x"FB", -- 0x2418 + x"F8",x"87",x"99",x"68",x"89",x"01",x"87",x"23", -- 0x2420 + x"35",x"DF",x"E1",x"86",x"A5",x"5D",x"E7",x"28", -- 0x2428 + x"83",x"49",x"0F",x"DA",x"A2",x"A1",x"54",x"46", -- 0x2430 + x"8F",x"13",x"8F",x"52",x"43",x"89",x"CD",x"A5", -- 0x2438 + x"D5",x"48",x"10",x"03",x"20",x"71",x"E2",x"A5", -- 0x2440 + x"D0",x"48",x"C9",x"81",x"90",x"07",x"A9",x"81", -- 0x2448 + x"A0",x"DC",x"20",x"E4",x"DD",x"A9",x"6F",x"A0", -- 0x2450 + x"E4",x"20",x"FD",x"E2",x"68",x"C9",x"81",x"90", -- 0x2458 + x"07",x"A9",x"07",x"A0",x"E4",x"20",x"0B",x"DB", -- 0x2460 + x"68",x"10",x"03",x"4C",x"71",x"E2",x"60",x"0B", -- 0x2468 + x"76",x"B3",x"83",x"BD",x"D3",x"79",x"1E",x"F4", -- 0x2470 + x"A6",x"F5",x"7B",x"83",x"FC",x"B0",x"10",x"7C", -- 0x2478 + x"0C",x"1F",x"67",x"CA",x"7C",x"DE",x"53",x"CB", -- 0x2480 + x"C1",x"7D",x"14",x"64",x"70",x"4C",x"7D",x"B7", -- 0x2488 + x"EA",x"51",x"7A",x"7D",x"63",x"30",x"88",x"7E", -- 0x2490 + x"7E",x"92",x"44",x"99",x"3A",x"7E",x"4C",x"CC", -- 0x2498 + x"91",x"C7",x"7F",x"AA",x"AA",x"AA",x"13",x"81", -- 0x24A0 + x"00",x"00",x"00",x"00",x"20",x"35",x"E7",x"20", -- 0x24A8 + x"C9",x"E6",x"C9",x"24",x"D0",x"F9",x"8E",x"B1", -- 0x24B0 + x"02",x"A2",x"09",x"20",x"C9",x"E6",x"9D",x"A7", -- 0x24B8 + x"02",x"CA",x"D0",x"F7",x"20",x"C9",x"E6",x"F0", -- 0x24C0 + x"0A",x"E0",x"10",x"B0",x"F7",x"9D",x"93",x"02", -- 0x24C8 + x"E8",x"D0",x"F1",x"9D",x"93",x"02",x"20",x"94", -- 0x24D0 + x"E5",x"20",x"90",x"E7",x"8A",x"D0",x"CD",x"60", -- 0x24D8 + x"AD",x"A9",x"02",x"AC",x"AA",x"02",x"85",x"33", -- 0x24E0 + x"84",x"34",x"A0",x"00",x"20",x"C9",x"E6",x"AE", -- 0x24E8 + x"5B",x"02",x"D0",x"05",x"91",x"33",x"4C",x"05", -- 0x24F0 + x"E5",x"D1",x"33",x"F0",x"08",x"EE",x"5C",x"02", -- 0x24F8 + x"D0",x"03",x"EE",x"5D",x"02",x"20",x"6C",x"E5", -- 0x2500 + x"90",x"E2",x"60",x"10",x"07",x"53",x"65",x"61", -- 0x2508 + x"72",x"63",x"68",x"69",x"6E",x"67",x"20",x"2E", -- 0x2510 + x"2E",x"00",x"10",x"07",x"4C",x"6F",x"61",x"64", -- 0x2518 + x"69",x"6E",x"67",x"20",x"2E",x"2E",x"00",x"0A", -- 0x2520 + x"0D",x"45",x"72",x"72",x"6F",x"72",x"73",x"20", -- 0x2528 + x"66",x"6F",x"75",x"6E",x"64",x"0D",x"0A",x"00", -- 0x2530 + x"10",x"07",x"46",x"6F",x"75",x"6E",x"64",x"20", -- 0x2538 + x"2E",x"2E",x"00",x"10",x"07",x"56",x"65",x"72", -- 0x2540 + x"69",x"66",x"79",x"69",x"6E",x"67",x"20",x"2E", -- 0x2548 + x"2E",x"00",x"20",x"56",x"65",x"72",x"69",x"66", -- 0x2550 + x"79",x"20",x"65",x"72",x"72",x"6F",x"72",x"73", -- 0x2558 + x"20",x"64",x"65",x"74",x"65",x"63",x"74",x"65", -- 0x2560 + x"64",x"0D",x"0A",x"00",x"A5",x"33",x"CD",x"AB", -- 0x2568 + x"02",x"A5",x"34",x"ED",x"AC",x"02",x"E6",x"33", -- 0x2570 + x"D0",x"02",x"E6",x"34",x"60",x"A9",x"0B",x"A0", -- 0x2578 + x"E5",x"20",x"EA",x"E5",x"60",x"A9",x"45",x"A0", -- 0x2580 + x"E6",x"20",x"EA",x"E5",x"A9",x"7F",x"A0",x"02", -- 0x2588 + x"20",x"B6",x"E5",x"60",x"A9",x"38",x"A0",x"E5", -- 0x2590 + x"4C",x"AB",x"E5",x"AD",x"5B",x"02",x"D0",x"07", -- 0x2598 + x"A9",x"1A",x"A0",x"E5",x"4C",x"AB",x"E5",x"A9", -- 0x25A0 + x"43",x"A0",x"E5",x"20",x"EA",x"E5",x"A9",x"93", -- 0x25A8 + x"A0",x"02",x"20",x"B6",x"E5",x"60",x"20",x"65", -- 0x25B0 + x"F8",x"E8",x"A0",x"00",x"8C",x"5F",x"02",x"AD", -- 0x25B8 + x"AE",x"02",x"F0",x"13",x"C8",x"2C",x"AE",x"02", -- 0x25C0 + x"30",x"0D",x"C8",x"2C",x"AF",x"02",x"30",x"07", -- 0x25C8 + x"C8",x"2C",x"B0",x"02",x"30",x"01",x"C8",x"B9", -- 0x25D0 + x"E5",x"E5",x"8D",x"5E",x"02",x"A9",x"5E",x"A0", -- 0x25D8 + x"02",x"20",x"65",x"F8",x"60",x"42",x"43",x"53", -- 0x25E0 + x"49",x"52",x"20",x"F5",x"E5",x"A2",x"00",x"20", -- 0x25E8 + x"65",x"F8",x"E8",x"E8",x"60",x"48",x"AD",x"1F", -- 0x25F0 + x"02",x"D0",x"0A",x"A2",x"22",x"A9",x"10",x"9D", -- 0x25F8 + x"80",x"BB",x"CA",x"10",x"FA",x"68",x"60",x"20", -- 0x2600 + x"5A",x"E7",x"A9",x"24",x"20",x"5E",x"E6",x"A2", -- 0x2608 + x"09",x"BD",x"A7",x"02",x"20",x"5E",x"E6",x"CA", -- 0x2610 + x"D0",x"F7",x"BD",x"7F",x"02",x"F0",x"06",x"20", -- 0x2618 + x"5E",x"E6",x"E8",x"D0",x"F5",x"20",x"5E",x"E6", -- 0x2620 + x"A2",x"00",x"CA",x"D0",x"FD",x"60",x"AD",x"A9", -- 0x2628 + x"02",x"AC",x"AA",x"02",x"85",x"33",x"84",x"34", -- 0x2630 + x"A0",x"00",x"B1",x"33",x"20",x"5E",x"E6",x"20", -- 0x2638 + x"6C",x"E5",x"90",x"F6",x"60",x"10",x"07",x"53", -- 0x2640 + x"61",x"76",x"69",x"6E",x"67",x"20",x"2E",x"2E", -- 0x2648 + x"00",x"AD",x"B1",x"02",x"F0",x"07",x"A9",x"27", -- 0x2650 + x"A0",x"E5",x"20",x"B0",x"CC",x"60",x"85",x"2F", -- 0x2658 + x"8A",x"48",x"98",x"48",x"20",x"C0",x"E6",x"18", -- 0x2660 + x"A0",x"09",x"A9",x"00",x"F0",x"06",x"46",x"2F", -- 0x2668 + x"08",x"69",x"00",x"28",x"20",x"8B",x"E6",x"88", -- 0x2670 + x"D0",x"F4",x"49",x"01",x"4A",x"A0",x"04",x"20", -- 0x2678 + x"8B",x"E6",x"38",x"88",x"D0",x"F9",x"68",x"A8", -- 0x2680 + x"68",x"AA",x"60",x"48",x"08",x"AD",x"4D",x"02", -- 0x2688 + x"D0",x"0A",x"38",x"20",x"B2",x"E6",x"28",x"20", -- 0x2690 + x"B2",x"E6",x"68",x"60",x"20",x"B2",x"E6",x"A2", -- 0x2698 + x"0F",x"28",x"B0",x"02",x"A2",x"07",x"20",x"AB", -- 0x26A0 + x"E6",x"68",x"60",x"20",x"C0",x"E6",x"CA",x"D0", -- 0x26A8 + x"FA",x"60",x"A9",x"D0",x"A2",x"00",x"B0",x"02", -- 0x26B0 + x"0A",x"E8",x"8D",x"06",x"03",x"8E",x"07",x"03", -- 0x26B8 + x"AD",x"04",x"03",x"2C",x"0D",x"03",x"50",x"FB", -- 0x26C0 + x"60",x"98",x"48",x"8A",x"48",x"20",x"1C",x"E7", -- 0x26C8 + x"20",x"1C",x"E7",x"B0",x"FB",x"20",x"FF",x"E6", -- 0x26D0 + x"B0",x"16",x"A9",x"00",x"A0",x"08",x"20",x"FC", -- 0x26D8 + x"E6",x"08",x"66",x"2F",x"28",x"69",x"00",x"88", -- 0x26E0 + x"D0",x"F4",x"20",x"FC",x"E6",x"E9",x"00",x"4A", -- 0x26E8 + x"90",x"03",x"2E",x"B1",x"02",x"68",x"AA",x"68", -- 0x26F0 + x"A8",x"A5",x"2F",x"60",x"20",x"1C",x"E7",x"48", -- 0x26F8 + x"AD",x"4D",x"02",x"F0",x"15",x"20",x"1C",x"E7", -- 0x2700 + x"A2",x"02",x"90",x"02",x"A2",x"06",x"A9",x"00", -- 0x2708 + x"20",x"1C",x"E7",x"69",x"00",x"CA",x"D0",x"F8", -- 0x2710 + x"C9",x"04",x"68",x"60",x"48",x"AD",x"00",x"03", -- 0x2718 + x"AD",x"0D",x"03",x"29",x"10",x"F0",x"F9",x"AD", -- 0x2720 + x"09",x"03",x"48",x"A9",x"FF",x"8D",x"09",x"03", -- 0x2728 + x"68",x"C9",x"FE",x"68",x"60",x"20",x"FC",x"E6", -- 0x2730 + x"66",x"2F",x"A9",x"16",x"C5",x"2F",x"D0",x"F5", -- 0x2738 + x"AD",x"4D",x"02",x"F0",x"08",x"20",x"1C",x"E7", -- 0x2740 + x"20",x"1C",x"E7",x"B0",x"FB",x"A2",x"03",x"20", -- 0x2748 + x"C9",x"E6",x"C9",x"16",x"D0",x"DF",x"CA",x"D0", -- 0x2750 + x"F6",x"60",x"A2",x"02",x"A0",x"03",x"A9",x"16", -- 0x2758 + x"20",x"5E",x"E6",x"88",x"D0",x"F8",x"CA",x"D0", -- 0x2760 + x"F5",x"60",x"20",x"1A",x"EE",x"A0",x"06",x"78", -- 0x2768 + x"BE",x"82",x"E7",x"B9",x"89",x"E7",x"9D",x"00", -- 0x2770 + x"03",x"88",x"10",x"F4",x"A9",x"40",x"8D",x"00", -- 0x2778 + x"03",x"60",x"05",x"04",x"0B",x"02",x"0C",x"08", -- 0x2780 + x"0E",x"00",x"D0",x"C0",x"FF",x"10",x"F4",x"7F", -- 0x2788 + x"A0",x"00",x"A2",x"00",x"AD",x"7F",x"02",x"F0", -- 0x2790 + x"15",x"B9",x"7F",x"02",x"D9",x"93",x"02",x"F0", -- 0x2798 + x"01",x"E8",x"99",x"93",x"02",x"C8",x"C0",x"11", -- 0x27A0 + x"B0",x"04",x"48",x"68",x"D0",x"EB",x"60",x"4C", -- 0x27A8 + x"70",x"D0",x"A9",x"00",x"8D",x"4D",x"02",x"8D", -- 0x27B0 + x"AD",x"02",x"8D",x"AE",x"02",x"8D",x"5B",x"02", -- 0x27B8 + x"8D",x"5A",x"02",x"8D",x"5C",x"02",x"8D",x"5D", -- 0x27C0 + x"02",x"8D",x"B1",x"02",x"20",x"17",x"CF",x"24", -- 0x27C8 + x"28",x"10",x"DC",x"20",x"D0",x"D7",x"AA",x"A0", -- 0x27D0 + x"00",x"E8",x"CA",x"F0",x"0A",x"B1",x"91",x"99", -- 0x27D8 + x"7F",x"02",x"C8",x"C0",x"10",x"D0",x"F3",x"A9", -- 0x27E0 + x"00",x"99",x"7F",x"02",x"20",x"E8",x"00",x"F0", -- 0x27E8 + x"61",x"C9",x"2C",x"D0",x"BA",x"20",x"E2",x"00", -- 0x27F0 + x"F0",x"58",x"C9",x"2C",x"F0",x"F7",x"C9",x"C7", -- 0x27F8 + x"D0",x"05",x"8D",x"AD",x"02",x"B0",x"EE",x"C9", -- 0x2800 + x"53",x"D0",x"05",x"8D",x"4D",x"02",x"B0",x"E5", -- 0x2808 + x"C9",x"56",x"D0",x"05",x"8D",x"5B",x"02",x"B0", -- 0x2810 + x"DC",x"C9",x"4A",x"D0",x"05",x"8D",x"5A",x"02", -- 0x2818 + x"B0",x"D3",x"C9",x"41",x"F0",x"04",x"C9",x"45", -- 0x2820 + x"D0",x"47",x"85",x"0E",x"20",x"E2",x"00",x"A2", -- 0x2828 + x"80",x"8E",x"AE",x"02",x"20",x"53",x"E8",x"A5", -- 0x2830 + x"33",x"A4",x"34",x"A6",x"0E",x"E0",x"41",x"D0", -- 0x2838 + x"08",x"8D",x"A9",x"02",x"8C",x"AA",x"02",x"B0", -- 0x2840 + x"A3",x"8D",x"AB",x"02",x"8C",x"AC",x"02",x"4C", -- 0x2848 + x"EC",x"E7",x"60",x"20",x"03",x"CF",x"20",x"22", -- 0x2850 + x"D9",x"18",x"60",x"08",x"20",x"B2",x"E7",x"AD", -- 0x2858 + x"AD",x"02",x"0D",x"AE",x"02",x"D0",x"0A",x"AD", -- 0x2860 + x"5A",x"02",x"F0",x"08",x"AD",x"5B",x"02",x"F0", -- 0x2868 + x"03",x"4C",x"70",x"D0",x"20",x"6A",x"E7",x"20", -- 0x2870 + x"7D",x"E5",x"20",x"AC",x"E4",x"2C",x"AE",x"02", -- 0x2878 + x"70",x"F8",x"AD",x"5A",x"02",x"F0",x"2C",x"AD", -- 0x2880 + x"AE",x"02",x"D0",x"EE",x"A5",x"9C",x"A4",x"9D", -- 0x2888 + x"38",x"E9",x"02",x"B0",x"01",x"88",x"8D",x"A9", -- 0x2890 + x"02",x"8C",x"AA",x"02",x"38",x"E5",x"9A",x"AA", -- 0x2898 + x"98",x"E5",x"9B",x"A8",x"18",x"8A",x"6D",x"AB", -- 0x28A0 + x"02",x"8D",x"AB",x"02",x"98",x"6D",x"AC",x"02", -- 0x28A8 + x"8D",x"AC",x"02",x"20",x"9B",x"E5",x"20",x"E0", -- 0x28B0 + x"E4",x"20",x"3D",x"E9",x"28",x"AD",x"5B",x"02", -- 0x28B8 + x"F0",x"11",x"AE",x"5C",x"02",x"AD",x"5D",x"02", -- 0x28C0 + x"20",x"C5",x"E0",x"A9",x"52",x"A0",x"E5",x"20", -- 0x28C8 + x"B0",x"CC",x"60",x"20",x"51",x"E6",x"AD",x"AE", -- 0x28D0 + x"02",x"F0",x"0E",x"AD",x"AD",x"02",x"F0",x"08", -- 0x28D8 + x"AD",x"B1",x"02",x"EA",x"EA",x"6C",x"A9",x"02", -- 0x28E0 + x"60",x"AE",x"AB",x"02",x"AD",x"AC",x"02",x"86", -- 0x28E8 + x"9C",x"85",x"9D",x"20",x"5F",x"C5",x"AD",x"AD", -- 0x28F0 + x"02",x"F0",x"08",x"AD",x"B1",x"02",x"EA",x"EA", -- 0x28F8 + x"4C",x"08",x"C7",x"20",x"08",x"C7",x"4C",x"A8", -- 0x2900 + x"C4",x"A5",x"9A",x"A4",x"9B",x"8D",x"A9",x"02", -- 0x2908 + x"8C",x"AA",x"02",x"A5",x"9C",x"A4",x"9D",x"8D", -- 0x2910 + x"AB",x"02",x"8C",x"AC",x"02",x"08",x"20",x"B2", -- 0x2918 + x"E7",x"AD",x"5A",x"02",x"0D",x"5B",x"02",x"F0", -- 0x2920 + x"03",x"4C",x"70",x"D0",x"20",x"6A",x"E7",x"20", -- 0x2928 + x"85",x"E5",x"20",x"07",x"E6",x"20",x"2E",x"E6", -- 0x2930 + x"20",x"3D",x"E9",x"28",x"60",x"20",x"F5",x"E5", -- 0x2938 + x"20",x"AA",x"F9",x"4C",x"E0",x"ED",x"20",x"53", -- 0x2940 + x"E8",x"6C",x"33",x"00",x"A2",x"00",x"86",x"0C", -- 0x2948 + x"86",x"0D",x"F0",x"13",x"A2",x"03",x"0A",x"0A", -- 0x2950 + x"0A",x"0A",x"0A",x"26",x"0C",x"26",x"0D",x"90", -- 0x2958 + x"03",x"4C",x"39",x"DC",x"CA",x"10",x"F3",x"20", -- 0x2960 + x"E2",x"00",x"C9",x"80",x"B0",x"0E",x"09",x"80", -- 0x2968 + x"49",x"B0",x"C9",x"0A",x"90",x"DE",x"69",x"88", -- 0x2970 + x"C9",x"FA",x"B0",x"D8",x"A5",x"0D",x"A4",x"0C", -- 0x2978 + x"60",x"20",x"4C",x"E9",x"4C",x"40",x"DF",x"08", -- 0x2980 + x"20",x"57",x"EA",x"A9",x"40",x"8D",x"AE",x"02", -- 0x2988 + x"A5",x"28",x"8D",x"AF",x"02",x"A5",x"29",x"8D", -- 0x2990 + x"B0",x"02",x"20",x"85",x"E5",x"20",x"07",x"E6", -- 0x2998 + x"20",x"9E",x"EA",x"20",x"2E",x"E6",x"24",x"28", -- 0x29A0 + x"10",x"22",x"A0",x"00",x"B1",x"0C",x"F0",x"17", -- 0x29A8 + x"AA",x"A0",x"02",x"B1",x"0C",x"99",x"D0",x"00", -- 0x29B0 + x"88",x"D0",x"F8",x"E8",x"CA",x"F0",x"08",x"B1", -- 0x29B8 + x"D1",x"20",x"5E",x"E6",x"C8",x"D0",x"F5",x"20", -- 0x29C0 + x"42",x"EA",x"90",x"DE",x"20",x"3D",x"E9",x"28", -- 0x29C8 + x"60",x"20",x"50",x"D6",x"08",x"20",x"57",x"EA", -- 0x29D0 + x"20",x"7D",x"E5",x"20",x"AC",x"E4",x"2C",x"AE", -- 0x29D8 + x"02",x"50",x"F8",x"AD",x"AF",x"02",x"45",x"28", -- 0x29E0 + x"D0",x"F1",x"AD",x"B0",x"02",x"45",x"29",x"D0", -- 0x29E8 + x"EA",x"20",x"9B",x"E5",x"A0",x"02",x"B1",x"CE", -- 0x29F0 + x"CD",x"A9",x"02",x"C8",x"B1",x"CE",x"ED",x"AA", -- 0x29F8 + x"02",x"B0",x"06",x"20",x"3D",x"E9",x"4C",x"7C", -- 0x2A00 + x"C4",x"20",x"9E",x"EA",x"20",x"E0",x"E4",x"24", -- 0x2A08 + x"28",x"10",x"27",x"A0",x"00",x"B1",x"0C",x"F0", -- 0x2A10 + x"1C",x"20",x"AB",x"D5",x"A0",x"00",x"AA",x"E8", -- 0x2A18 + x"CA",x"F0",x"08",x"20",x"C9",x"E6",x"91",x"D1", -- 0x2A20 + x"C8",x"D0",x"F5",x"A0",x"02",x"B9",x"D0",x"00", -- 0x2A28 + x"91",x"0C",x"88",x"D0",x"F8",x"20",x"42",x"EA", -- 0x2A30 + x"90",x"D9",x"20",x"3D",x"E9",x"20",x"51",x"E6", -- 0x2A38 + x"28",x"60",x"18",x"A9",x"03",x"65",x"0C",x"85", -- 0x2A40 + x"0C",x"90",x"02",x"E6",x"0D",x"A8",x"A5",x"0D", -- 0x2A48 + x"CC",x"AB",x"02",x"ED",x"AC",x"02",x"60",x"A9", -- 0x2A50 + x"40",x"85",x"2B",x"20",x"88",x"D1",x"A9",x"00", -- 0x2A58 + x"85",x"2B",x"A0",x"03",x"B1",x"CE",x"8D",x"AA", -- 0x2A60 + x"02",x"88",x"B1",x"CE",x"8D",x"A9",x"02",x"D0", -- 0x2A68 + x"03",x"CE",x"AA",x"02",x"CE",x"A9",x"02",x"20", -- 0x2A70 + x"65",x"D0",x"A5",x"29",x"48",x"A5",x"28",x"48", -- 0x2A78 + x"20",x"B2",x"E7",x"68",x"85",x"28",x"68",x"85", -- 0x2A80 + x"29",x"AD",x"5B",x"02",x"0D",x"AD",x"02",x"0D", -- 0x2A88 + x"AE",x"02",x"0D",x"5A",x"02",x"F0",x"03",x"4C", -- 0x2A90 + x"70",x"D0",x"20",x"6A",x"E7",x"60",x"18",x"A5", -- 0x2A98 + x"CE",x"6D",x"A9",x"02",x"8D",x"AB",x"02",x"A5", -- 0x2AA0 + x"CF",x"6D",x"AA",x"02",x"8D",x"AC",x"02",x"A0", -- 0x2AA8 + x"04",x"B1",x"CE",x"20",x"88",x"D2",x"8D",x"A9", -- 0x2AB0 + x"02",x"8C",x"AA",x"02",x"85",x"0C",x"84",x"0D", -- 0x2AB8 + x"60",x"3F",x"FB",x"17",x"FC",x"CF",x"FB",x"C7", -- 0x2AC0 + x"F0",x"FC",x"F0",x"0F",x"F1",x"7E",x"F3",x"1C", -- 0x2AC8 + x"F1",x"67",x"F2",x"2C",x"F1",x"03",x"F2",x"0F", -- 0x2AD0 + x"F2",x"03",x"04",x"04",x"03",x"03",x"03",x"02", -- 0x2AD8 + x"01",x"03",x"03",x"01",x"01",x"00",x"00",x"00", -- 0x2AE0 + x"00",x"01",x"01",x"00",x"00",x"00",x"00",x"00", -- 0x2AE8 + x"AD",x"C0",x"02",x"29",x"01",x"D0",x"05",x"A2", -- 0x2AF0 + x"A3",x"4C",x"7E",x"C4",x"C0",x"4E",x"B0",x"03", -- 0x2AF8 + x"4C",x"70",x"D0",x"C0",x"66",x"B0",x"F9",x"98", -- 0x2B00 + x"38",x"E9",x"4E",x"A8",x"B9",x"C2",x"EA",x"48", -- 0x2B08 + x"B9",x"C1",x"EA",x"48",x"98",x"4A",x"A8",x"B9", -- 0x2B10 + x"D9",x"EA",x"48",x"B9",x"E5",x"EA",x"8D",x"C3", -- 0x2B18 + x"02",x"A9",x"00",x"8D",x"F0",x"02",x"20",x"03", -- 0x2B20 + x"CF",x"AD",x"C3",x"02",x"D0",x"06",x"20",x"22", -- 0x2B28 + x"D9",x"4C",x"3B",x"EB",x"A5",x"D0",x"C9",x"90", -- 0x2B30 + x"20",x"2A",x"D9",x"AC",x"F0",x"02",x"A5",x"33", -- 0x2B38 + x"99",x"E1",x"02",x"A5",x"34",x"99",x"E2",x"02", -- 0x2B40 + x"C8",x"C8",x"8C",x"F0",x"02",x"68",x"A8",x"88", -- 0x2B48 + x"F0",x"08",x"98",x"48",x"20",x"65",x"D0",x"4C", -- 0x2B50 + x"26",x"EB",x"A9",x"00",x"8D",x"E0",x"02",x"68", -- 0x2B58 + x"AA",x"68",x"A8",x"A9",x"EB",x"48",x"A9",x"6D", -- 0x2B60 + x"48",x"98",x"48",x"8A",x"48",x"60",x"A9",x"01", -- 0x2B68 + x"2C",x"E0",x"02",x"F0",x"F8",x"4C",x"36",x"D3", -- 0x2B70 + x"AD",x"DF",x"02",x"10",x"0B",x"08",x"29",x"7F", -- 0x2B78 + x"48",x"A9",x"00",x"8D",x"DF",x"02",x"68",x"28", -- 0x2B80 + x"60",x"C4",x"9D",x"B0",x"02",x"38",x"60",x"D0", -- 0x2B88 + x"06",x"C5",x"9C",x"90",x"F9",x"F0",x"F7",x"20", -- 0x2B90 + x"B5",x"EB",x"90",x"F2",x"AA",x"AD",x"C0",x"02", -- 0x2B98 + x"29",x"02",x"08",x"8A",x"28",x"D0",x"E6",x"98", -- 0x2BA0 + x"48",x"38",x"E9",x"1C",x"A8",x"8A",x"20",x"B5", -- 0x2BA8 + x"EB",x"68",x"A8",x"8A",x"60",x"CC",x"C2",x"02", -- 0x2BB0 + x"90",x"02",x"F0",x"01",x"60",x"CD",x"C1",x"02", -- 0x2BB8 + x"60",x"AC",x"C2",x"02",x"AD",x"C1",x"02",x"D0", -- 0x2BC0 + x"01",x"88",x"38",x"E9",x"01",x"60",x"20",x"03", -- 0x2BC8 + x"CF",x"20",x"22",x"D9",x"A5",x"33",x"A4",x"34", -- 0x2BD0 + x"20",x"89",x"EB",x"90",x"03",x"4C",x"7C",x"C4", -- 0x2BD8 + x"85",x"A6",x"84",x"A7",x"4C",x"0F",x"C7",x"AD", -- 0x2BE0 + x"60",x"02",x"D0",x"F1",x"AD",x"C0",x"02",x"48", -- 0x2BE8 + x"29",x"01",x"F0",x"05",x"A2",x"A3",x"4C",x"7E", -- 0x2BF0 + x"C4",x"68",x"29",x"FD",x"8D",x"C0",x"02",x"20", -- 0x2BF8 + x"C1",x"EB",x"48",x"98",x"18",x"69",x"1C",x"A8", -- 0x2C00 + x"68",x"4C",x"E0",x"EB",x"20",x"C1",x"EB",x"20", -- 0x2C08 + x"89",x"EB",x"B0",x"C9",x"48",x"AD",x"C0",x"02", -- 0x2C10 + x"09",x"02",x"8D",x"C0",x"02",x"68",x"4C",x"E0", -- 0x2C18 + x"EB",x"AD",x"C0",x"02",x"A8",x"29",x"01",x"F0", -- 0x2C20 + x"09",x"98",x"29",x"FE",x"8D",x"C0",x"02",x"20", -- 0x2C28 + x"67",x"F9",x"60",x"AD",x"C0",x"02",x"48",x"29", -- 0x2C30 + x"02",x"F0",x"B9",x"68",x"09",x"01",x"8D",x"C0", -- 0x2C38 + x"02",x"20",x"20",x"F9",x"60",x"20",x"62",x"D0", -- 0x2C40 + x"20",x"17",x"CF",x"A5",x"34",x"48",x"A5",x"33", -- 0x2C48 + x"48",x"20",x"22",x"D9",x"A5",x"33",x"8D",x"E1", -- 0x2C50 + x"02",x"A5",x"34",x"8D",x"E2",x"02",x"68",x"85", -- 0x2C58 + x"33",x"68",x"85",x"34",x"20",x"65",x"D0",x"20", -- 0x2C60 + x"17",x"CF",x"A5",x"34",x"48",x"A5",x"33",x"48", -- 0x2C68 + x"20",x"22",x"D9",x"A5",x"34",x"8D",x"E4",x"02", -- 0x2C70 + x"A5",x"33",x"8D",x"E3",x"02",x"68",x"85",x"33", -- 0x2C78 + x"68",x"85",x"34",x"20",x"C8",x"F1",x"AC",x"E1", -- 0x2C80 + x"02",x"AD",x"E0",x"02",x"29",x"01",x"D0",x"09", -- 0x2C88 + x"AD",x"E2",x"02",x"20",x"99",x"D4",x"4C",x"5F", -- 0x2C90 + x"D0",x"4C",x"C2",x"D8",x"E6",x"E9",x"D0",x"02", -- 0x2C98 + x"E6",x"EA",x"AD",x"60",x"EA",x"C9",x"20",x"F0", -- 0x2CA0 + x"F3",x"20",x"B9",x"EC",x"60",x"2C",x"60",x"EA", -- 0x2CA8 + x"2C",x"60",x"EA",x"60",x"80",x"4F",x"C7",x"52", -- 0x2CB0 + x"58",x"C9",x"C8",x"F0",x"0E",x"C9",x"27",x"F0", -- 0x2CB8 + x"0A",x"C9",x"3A",x"B0",x"06",x"38",x"E9",x"30", -- 0x2CC0 + x"38",x"E9",x"D0",x"60",x"D8",x"A2",x"FF",x"86", -- 0x2CC8 + x"A9",x"9A",x"A9",x"CC",x"A0",x"EC",x"85",x"1B", -- 0x2CD0 + x"84",x"1C",x"A9",x"4C",x"85",x"1A",x"85",x"C3", -- 0x2CD8 + x"85",x"21",x"8D",x"FB",x"02",x"A9",x"36",x"A0", -- 0x2CE0 + x"D3",x"85",x"22",x"84",x"23",x"8D",x"FC",x"02", -- 0x2CE8 + x"8C",x"FD",x"02",x"8D",x"F5",x"02",x"8C",x"F6", -- 0x2CF0 + x"02",x"A2",x"1C",x"BD",x"9B",x"EC",x"95",x"E1", -- 0x2CF8 + x"CA",x"D0",x"F8",x"A9",x"03",x"85",x"C2",x"8A", -- 0x2D00 + x"85",x"D7",x"85",x"87",x"85",x"2F",x"48",x"85", -- 0x2D08 + x"2E",x"8D",x"F2",x"02",x"A2",x"88",x"86",x"85", -- 0x2D10 + x"A8",x"A9",x"02",x"8D",x"C0",x"02",x"A9",x"28", -- 0x2D18 + x"8D",x"57",x"02",x"A9",x"50",x"8D",x"56",x"02", -- 0x2D20 + x"A9",x"00",x"85",x"30",x"8D",x"58",x"02",x"8D", -- 0x2D28 + x"59",x"02",x"20",x"3E",x"C8",x"20",x"CE",x"CC", -- 0x2D30 + x"A9",x"96",x"A0",x"ED",x"20",x"B0",x"CC",x"20", -- 0x2D38 + x"F0",x"CB",x"A2",x"00",x"A0",x"05",x"86",x"9A", -- 0x2D40 + x"84",x"9B",x"A0",x"00",x"98",x"91",x"9A",x"E6", -- 0x2D48 + x"9A",x"D0",x"02",x"E6",x"9B",x"20",x"F0",x"C6", -- 0x2D50 + x"A5",x"9A",x"A4",x"9B",x"20",x"44",x"C4",x"20", -- 0x2D58 + x"F0",x"CB",x"A5",x"A6",x"38",x"E5",x"9A",x"AA", -- 0x2D60 + x"A5",x"A7",x"E5",x"9B",x"20",x"C5",x"E0",x"A9", -- 0x2D68 + x"88",x"A0",x"ED",x"20",x"B0",x"CC",x"A9",x"B0", -- 0x2D70 + x"A0",x"CC",x"85",x"1B",x"84",x"1C",x"A9",x"10", -- 0x2D78 + x"8D",x"F8",x"02",x"4C",x"A8",x"C4",x"00",x"00", -- 0x2D80 + x"20",x"42",x"59",x"54",x"45",x"53",x"20",x"46", -- 0x2D88 + x"52",x"45",x"45",x"0A",x"0D",x"00",x"4F",x"52", -- 0x2D90 + x"49",x"43",x"20",x"45",x"58",x"54",x"45",x"4E", -- 0x2D98 + x"44",x"45",x"44",x"20",x"42",x"41",x"53",x"49", -- 0x2DA0 + x"43",x"20",x"56",x"31",x"2E",x"31",x"0D",x"0A", -- 0x2DA8 + x"60",x"20",x"31",x"39",x"38",x"33",x"20",x"54", -- 0x2DB0 + x"41",x"4E",x"47",x"45",x"52",x"49",x"4E",x"45", -- 0x2DB8 + x"0D",x"0A",x"00",x"00",x"A2",x"00",x"A0",x"00", -- 0x2DC0 + x"C4",x"10",x"D0",x"04",x"E4",x"11",x"F0",x"0F", -- 0x2DC8 + x"B1",x"0C",x"91",x"0E",x"C8",x"D0",x"F1",x"E6", -- 0x2DD0 + x"0D",x"E6",x"0F",x"E8",x"4C",x"C8",x"ED",x"60", -- 0x2DD8 + x"48",x"20",x"8C",x"EE",x"A9",x"00",x"A2",x"00", -- 0x2DE0 + x"A0",x"03",x"20",x"AB",x"EE",x"A9",x"01",x"A0", -- 0x2DE8 + x"19",x"20",x"AB",x"EE",x"A9",x"00",x"8D",x"71", -- 0x2DF0 + x"02",x"AD",x"0B",x"03",x"29",x"7F",x"09",x"40", -- 0x2DF8 + x"8D",x"0B",x"03",x"A9",x"C0",x"8D",x"0E",x"03", -- 0x2E00 + x"A9",x"10",x"8D",x"06",x"03",x"8D",x"04",x"03", -- 0x2E08 + x"A9",x"27",x"8D",x"07",x"03",x"8D",x"05",x"03", -- 0x2E10 + x"68",x"60",x"48",x"A9",x"40",x"8D",x"0E",x"03", -- 0x2E18 + x"68",x"60",x"48",x"AD",x"0D",x"03",x"29",x"40", -- 0x2E20 + x"F0",x"06",x"8D",x"0D",x"03",x"20",x"34",x"EE", -- 0x2E28 + x"68",x"4C",x"4A",x"02",x"48",x"8A",x"48",x"98", -- 0x2E30 + x"48",x"A0",x"00",x"B9",x"72",x"02",x"38",x"E9", -- 0x2E38 + x"01",x"99",x"72",x"02",x"C8",x"B9",x"72",x"02", -- 0x2E40 + x"E9",x"00",x"99",x"72",x"02",x"C8",x"C0",x"06", -- 0x2E48 + x"D0",x"E9",x"A9",x"00",x"20",x"9D",x"EE",x"C0", -- 0x2E50 + x"00",x"D0",x"10",x"A2",x"00",x"A0",x"03",x"20", -- 0x2E58 + x"AB",x"EE",x"20",x"95",x"F4",x"8A",x"10",x"03", -- 0x2E60 + x"8E",x"DF",x"02",x"A9",x"01",x"20",x"9D",x"EE", -- 0x2E68 + x"C0",x"00",x"D0",x"12",x"A2",x"00",x"A0",x"19", -- 0x2E70 + x"20",x"AB",x"EE",x"AD",x"71",x"02",x"49",x"01", -- 0x2E78 + x"8D",x"71",x"02",x"20",x"01",x"F8",x"68",x"A8", -- 0x2E80 + x"68",x"AA",x"68",x"60",x"48",x"98",x"48",x"A0", -- 0x2E88 + x"05",x"A9",x"00",x"99",x"72",x"02",x"88",x"10", -- 0x2E90 + x"FA",x"68",x"A8",x"68",x"60",x"48",x"0A",x"A8", -- 0x2E98 + x"78",x"B9",x"72",x"02",x"BE",x"73",x"02",x"58", -- 0x2EA0 + x"A8",x"68",x"60",x"48",x"8A",x"48",x"98",x"48", -- 0x2EA8 + x"BA",x"BD",x"03",x"01",x"0A",x"A8",x"68",x"48", -- 0x2EB0 + x"78",x"99",x"72",x"02",x"BD",x"02",x"01",x"99", -- 0x2EB8 + x"73",x"02",x"58",x"68",x"A8",x"68",x"AA",x"68", -- 0x2EC0 + x"60",x"20",x"AB",x"EE",x"20",x"9D",x"EE",x"C0", -- 0x2EC8 + x"00",x"D0",x"F9",x"E0",x"00",x"D0",x"F5",x"60", -- 0x2ED0 + x"AD",x"13",x"02",x"8D",x"14",x"02",x"4E",x"12", -- 0x2ED8 + x"02",x"6E",x"12",x"02",x"6E",x"12",x"02",x"60", -- 0x2EE0 + x"48",x"98",x"48",x"20",x"DE",x"EE",x"20",x"49", -- 0x2EE8 + x"F0",x"20",x"24",x"F0",x"68",x"A8",x"68",x"60", -- 0x2EF0 + x"D8",x"20",x"D8",x"EE",x"2C",x"E2",x"02",x"10", -- 0x2EF8 + x"0A",x"A9",x"FF",x"4D",x"E1",x"02",x"AA",x"E8", -- 0x2F00 + x"8E",x"E1",x"02",x"2C",x"E4",x"02",x"10",x"0A", -- 0x2F08 + x"A9",x"FF",x"4D",x"E3",x"02",x"AA",x"E8",x"8E", -- 0x2F10 + x"E3",x"02",x"AD",x"E1",x"02",x"CD",x"E3",x"02", -- 0x2F18 + x"90",x"0F",x"AE",x"E1",x"02",x"F0",x"09",x"AD", -- 0x2F20 + x"E3",x"02",x"20",x"40",x"EF",x"20",x"84",x"EF", -- 0x2F28 + x"60",x"AE",x"E3",x"02",x"F0",x"09",x"AD",x"E1", -- 0x2F30 + x"02",x"20",x"40",x"EF",x"20",x"5C",x"EF",x"60", -- 0x2F38 + x"85",x"0D",x"8E",x"00",x"02",x"A9",x"00",x"85", -- 0x2F40 + x"0C",x"8D",x"01",x"02",x"20",x"C8",x"EF",x"20", -- 0x2F48 + x"FA",x"EF",x"A9",x"00",x"85",x"0E",x"85",x"0F", -- 0x2F50 + x"8D",x"00",x"02",x"60",x"2C",x"E4",x"02",x"10", -- 0x2F58 + x"06",x"20",x"95",x"F0",x"4C",x"6A",x"EF",x"20", -- 0x2F60 + x"89",x"F0",x"20",x"AC",x"EF",x"F0",x"0E",x"2C", -- 0x2F68 + x"E2",x"02",x"10",x"06",x"20",x"B2",x"F0",x"4C", -- 0x2F70 + x"7D",x"EF",x"20",x"A1",x"F0",x"20",x"16",x"F0", -- 0x2F78 + x"CA",x"D0",x"D9",x"60",x"2C",x"E2",x"02",x"10", -- 0x2F80 + x"06",x"20",x"B2",x"F0",x"4C",x"92",x"EF",x"20", -- 0x2F88 + x"A1",x"F0",x"20",x"AC",x"EF",x"F0",x"0E",x"2C", -- 0x2F90 + x"E4",x"02",x"10",x"06",x"20",x"95",x"F0",x"4C", -- 0x2F98 + x"A5",x"EF",x"20",x"89",x"F0",x"20",x"16",x"F0", -- 0x2FA0 + x"CA",x"D0",x"D9",x"60",x"D8",x"18",x"A5",x"0E", -- 0x2FA8 + x"65",x"0C",x"85",x"0E",x"A5",x"0F",x"65",x"0D", -- 0x2FB0 + x"85",x"0F",x"24",x"0E",x"10",x"03",x"18",x"69", -- 0x2FB8 + x"01",x"CD",x"00",x"02",x"8D",x"00",x"02",x"60", -- 0x2FC0 + x"48",x"8A",x"48",x"98",x"48",x"A9",x"00",x"85", -- 0x2FC8 + x"0E",x"85",x"0F",x"A2",x"10",x"06",x"0C",x"26", -- 0x2FD0 + x"0D",x"26",x"0E",x"26",x"0F",x"A5",x"0E",x"38", -- 0x2FD8 + x"ED",x"00",x"02",x"A8",x"A5",x"0F",x"ED",x"01", -- 0x2FE0 + x"02",x"90",x"06",x"E6",x"0C",x"84",x"0E",x"85", -- 0x2FE8 + x"0F",x"CA",x"D0",x"E1",x"68",x"A8",x"68",x"AA", -- 0x2FF0 + x"68",x"60",x"48",x"0E",x"00",x"02",x"2E",x"01", -- 0x2FF8 + x"02",x"AD",x"00",x"02",x"38",x"E5",x"0E",x"AD", -- 0x3000 + x"01",x"02",x"E5",x"0F",x"B0",x"06",x"E6",x"0C", -- 0x3008 + x"D0",x"02",x"E6",x"0D",x"68",x"60",x"2C",x"14", -- 0x3010 + x"02",x"18",x"10",x"04",x"20",x"24",x"F0",x"38", -- 0x3018 + x"2E",x"14",x"02",x"60",x"A0",x"00",x"B1",x"10", -- 0x3020 + x"29",x"40",x"F0",x"1C",x"AD",x"15",x"02",x"2C", -- 0x3028 + x"12",x"02",x"30",x"0E",x"70",x"07",x"49",x"FF", -- 0x3030 + x"31",x"10",x"91",x"10",x"60",x"11",x"10",x"91", -- 0x3038 + x"10",x"60",x"70",x"04",x"51",x"10",x"91",x"10", -- 0x3040 + x"60",x"D8",x"48",x"98",x"48",x"20",x"31",x"F7", -- 0x3048 + x"18",x"69",x"00",x"85",x"10",x"98",x"69",x"A0", -- 0x3050 + x"85",x"11",x"A9",x"00",x"85",x"0D",x"8D",x"01", -- 0x3058 + x"02",x"86",x"0C",x"A9",x"06",x"8D",x"00",x"02", -- 0x3060 + x"20",x"C8",x"EF",x"18",x"A5",x"0C",x"65",x"10", -- 0x3068 + x"85",x"10",x"A9",x"00",x"65",x"11",x"85",x"11", -- 0x3070 + x"A9",x"20",x"A4",x"0E",x"F0",x"04",x"4A",x"88", -- 0x3078 + x"90",x"FA",x"8D",x"15",x"02",x"68",x"A8",x"68", -- 0x3080 + x"60",x"18",x"A5",x"10",x"69",x"28",x"85",x"10", -- 0x3088 + x"90",x"02",x"E6",x"11",x"60",x"38",x"A5",x"10", -- 0x3090 + x"E9",x"28",x"85",x"10",x"B0",x"02",x"C6",x"11", -- 0x3098 + x"60",x"4E",x"15",x"02",x"90",x"0B",x"A9",x"20", -- 0x30A0 + x"8D",x"15",x"02",x"E6",x"10",x"D0",x"02",x"E6", -- 0x30A8 + x"11",x"60",x"0E",x"15",x"02",x"2C",x"15",x"02", -- 0x30B0 + x"50",x"0D",x"A9",x"01",x"8D",x"15",x"02",x"A5", -- 0x30B8 + x"10",x"D0",x"02",x"C6",x"11",x"C6",x"10",x"60", -- 0x30C0 + x"A9",x"04",x"A2",x"E5",x"20",x"F8",x"F2",x"B0", -- 0x30C8 + x"28",x"AD",x"E5",x"02",x"8D",x"12",x"02",x"A9", -- 0x30D0 + x"F0",x"A2",x"E1",x"20",x"F8",x"F2",x"B0",x"19", -- 0x30D8 + x"A9",x"C8",x"A2",x"E3",x"20",x"F8",x"F2",x"B0", -- 0x30E0 + x"10",x"AE",x"E1",x"02",x"8E",x"19",x"02",x"AC", -- 0x30E8 + x"E3",x"02",x"8C",x"1A",x"02",x"20",x"E8",x"EE", -- 0x30F0 + x"60",x"EE",x"E0",x"02",x"60",x"20",x"0A",x"F3", -- 0x30F8 + x"B0",x"0A",x"AE",x"19",x"02",x"AC",x"1A",x"02", -- 0x3100 + x"20",x"E8",x"EE",x"60",x"EE",x"E0",x"02",x"60", -- 0x3108 + x"20",x"0A",x"F3",x"B0",x"04",x"20",x"F8",x"EE", -- 0x3110 + x"60",x"EE",x"E0",x"02",x"60",x"AE",x"E2",x"02", -- 0x3118 + x"D0",x"07",x"AE",x"E1",x"02",x"8E",x"13",x"02", -- 0x3120 + x"60",x"EE",x"E0",x"02",x"60",x"AE",x"E2",x"02", -- 0x3128 + x"D0",x"3B",x"AE",x"E1",x"02",x"E0",x"20",x"90", -- 0x3130 + x"34",x"E0",x"80",x"B0",x"30",x"A9",x"02",x"A2", -- 0x3138 + x"E3",x"20",x"F8",x"F2",x"B0",x"27",x"A9",x"04", -- 0x3140 + x"A2",x"E5",x"20",x"F8",x"F2",x"B0",x"1E",x"AD", -- 0x3148 + x"19",x"02",x"C9",x"EB",x"B0",x"17",x"AD",x"1A", -- 0x3150 + x"02",x"C9",x"C1",x"B0",x"10",x"20",x"71",x"F1", -- 0x3158 + x"20",x"9B",x"F1",x"AE",x"19",x"02",x"AC",x"1A", -- 0x3160 + x"02",x"20",x"49",x"F0",x"60",x"EE",x"E0",x"02", -- 0x3168 + x"60",x"D8",x"AD",x"E5",x"02",x"8D",x"12",x"02", -- 0x3170 + x"20",x"DE",x"EE",x"AD",x"E1",x"02",x"85",x"0C", -- 0x3178 + x"A9",x"00",x"85",x"0D",x"A2",x"03",x"06",x"0C", -- 0x3180 + x"26",x"0D",x"CA",x"D0",x"F9",x"AD",x"E3",x"02", -- 0x3188 + x"0A",x"0A",x"18",x"69",x"98",x"18",x"65",x"0D", -- 0x3190 + x"85",x"0D",x"60",x"D8",x"A0",x"00",x"84",x"0F", -- 0x3198 + x"B1",x"0C",x"85",x"0E",x"20",x"5D",x"F3",x"26", -- 0x31A0 + x"0E",x"26",x"0E",x"A2",x"06",x"26",x"0E",x"90", -- 0x31A8 + x"03",x"20",x"24",x"F0",x"20",x"A1",x"F0",x"CA", -- 0x31B0 + x"D0",x"F3",x"20",x"6E",x"F3",x"20",x"89",x"F0", -- 0x31B8 + x"A4",x"0F",x"C8",x"C0",x"08",x"D0",x"D7",x"60", -- 0x31C0 + x"A9",x"F0",x"A2",x"E1",x"20",x"F8",x"F2",x"B0", -- 0x31C8 + x"2F",x"A9",x"C8",x"A2",x"E3",x"20",x"F8",x"F2", -- 0x31D0 + x"B0",x"26",x"AE",x"E1",x"02",x"8E",x"19",x"02", -- 0x31D8 + x"AC",x"E3",x"02",x"8C",x"1A",x"02",x"20",x"49", -- 0x31E0 + x"F0",x"A0",x"00",x"B1",x"10",x"2D",x"15",x"02", -- 0x31E8 + x"F0",x"05",x"A9",x"FF",x"4C",x"F9",x"F1",x"A9", -- 0x31F0 + x"00",x"8D",x"E1",x"02",x"8D",x"E2",x"02",x"60", -- 0x31F8 + x"EE",x"E0",x"02",x"60",x"A9",x"10",x"85",x"0C", -- 0x3200 + x"A9",x"00",x"85",x"0D",x"20",x"1C",x"F2",x"60", -- 0x3208 + x"A9",x"00",x"85",x"0C",x"A9",x"01",x"85",x"0D", -- 0x3210 + x"20",x"1C",x"F2",x"60",x"A9",x"08",x"A2",x"E1", -- 0x3218 + x"20",x"F8",x"F2",x"B0",x"3F",x"20",x"5D",x"F3", -- 0x3220 + x"AD",x"E1",x"02",x"05",x"0C",x"8D",x"02",x"02", -- 0x3228 + x"AE",x"1F",x"02",x"D0",x"12",x"A6",x"0D",x"9D", -- 0x3230 + x"6B",x"02",x"A9",x"A8",x"18",x"65",x"0D",x"AA", -- 0x3238 + x"A0",x"BB",x"A9",x"1B",x"4C",x"51",x"F2",x"A9", -- 0x3240 + x"00",x"18",x"65",x"0D",x"AA",x"A0",x"A0",x"A9", -- 0x3248 + x"C8",x"8D",x"00",x"02",x"86",x"10",x"84",x"11", -- 0x3250 + x"A9",x"01",x"8D",x"01",x"02",x"20",x"CD",x"F2", -- 0x3258 + x"20",x"6E",x"F3",x"60",x"EE",x"E0",x"02",x"60", -- 0x3260 + x"D8",x"AD",x"E3",x"02",x"8D",x"01",x"02",x"F0", -- 0x3268 + x"58",x"A0",x"00",x"AD",x"19",x"02",x"38",x"E9", -- 0x3270 + x"06",x"90",x"04",x"C8",x"4C",x"76",x"F2",x"98", -- 0x3278 + x"18",x"6D",x"E3",x"02",x"A8",x"AD",x"E4",x"02", -- 0x3280 + x"69",x"00",x"D0",x"3D",x"C0",x"29",x"B0",x"39", -- 0x3288 + x"AD",x"E6",x"02",x"D0",x"34",x"AD",x"E1",x"02", -- 0x3290 + x"8D",x"00",x"02",x"F0",x"2C",x"18",x"6D",x"1A", -- 0x3298 + x"02",x"A8",x"AD",x"E2",x"02",x"69",x"00",x"D0", -- 0x32A0 + x"20",x"C0",x"C9",x"B0",x"1C",x"C0",x"C8",x"D0", -- 0x32A8 + x"02",x"A0",x"00",x"8C",x"1A",x"02",x"AD",x"E5", -- 0x32B0 + x"02",x"8D",x"02",x"02",x"20",x"CD",x"F2",x"AC", -- 0x32B8 + x"1A",x"02",x"AE",x"19",x"02",x"20",x"49",x"F0", -- 0x32C0 + x"60",x"EE",x"E0",x"02",x"60",x"D8",x"AD",x"02", -- 0x32C8 + x"02",x"A0",x"00",x"91",x"10",x"C8",x"CC",x"01", -- 0x32D0 + x"02",x"D0",x"F8",x"20",x"89",x"F0",x"CE",x"00", -- 0x32D8 + x"02",x"D0",x"EB",x"60",x"8D",x"04",x"02",x"BD", -- 0x32E0 + x"01",x"02",x"D0",x"0A",x"BD",x"00",x"02",x"F0", -- 0x32E8 + x"05",x"CD",x"04",x"02",x"90",x"01",x"38",x"60", -- 0x32F0 + x"8D",x"04",x"02",x"BD",x"01",x"02",x"D0",x"08", -- 0x32F8 + x"BD",x"00",x"02",x"CD",x"04",x"02",x"90",x"01", -- 0x3300 + x"38",x"60",x"A9",x"04",x"A2",x"E5",x"20",x"F8", -- 0x3308 + x"F2",x"B0",x"49",x"18",x"AD",x"E1",x"02",x"6D", -- 0x3310 + x"19",x"02",x"8D",x"00",x"02",x"AD",x"E2",x"02", -- 0x3318 + x"69",x"00",x"8D",x"01",x"02",x"A2",x"00",x"A9", -- 0x3320 + x"F0",x"20",x"F8",x"F2",x"B0",x"2E",x"18",x"AD", -- 0x3328 + x"E3",x"02",x"6D",x"1A",x"02",x"8D",x"02",x"02", -- 0x3330 + x"AD",x"E4",x"02",x"69",x"00",x"8D",x"03",x"02", -- 0x3338 + x"A2",x"02",x"A9",x"C8",x"20",x"F8",x"F2",x"B0", -- 0x3340 + x"13",x"AD",x"E5",x"02",x"8D",x"12",x"02",x"AD", -- 0x3348 + x"00",x"02",x"8D",x"19",x"02",x"AD",x"02",x"02", -- 0x3350 + x"8D",x"1A",x"02",x"18",x"60",x"A5",x"10",x"8D", -- 0x3358 + x"16",x"02",x"A5",x"11",x"8D",x"17",x"02",x"AD", -- 0x3360 + x"15",x"02",x"8D",x"18",x"02",x"60",x"AD",x"16", -- 0x3368 + x"02",x"85",x"10",x"AD",x"17",x"02",x"85",x"11", -- 0x3370 + x"AD",x"18",x"02",x"8D",x"15",x"02",x"60",x"D8", -- 0x3378 + x"AD",x"E2",x"02",x"D0",x"3D",x"AD",x"E1",x"02", -- 0x3380 + x"F0",x"38",x"AD",x"19",x"02",x"CD",x"E1",x"02", -- 0x3388 + x"90",x"30",x"18",x"6D",x"E1",x"02",x"C9",x"F0", -- 0x3390 + x"B0",x"28",x"AD",x"1A",x"02",x"CD",x"E1",x"02", -- 0x3398 + x"90",x"20",x"18",x"6D",x"E1",x"02",x"C9",x"C8", -- 0x33A0 + x"B0",x"18",x"A2",x"E3",x"A9",x"04",x"20",x"F8", -- 0x33A8 + x"F2",x"B0",x"0F",x"AD",x"E3",x"02",x"8D",x"12", -- 0x33B0 + x"02",x"20",x"D8",x"EE",x"20",x"C6",x"F3",x"4C", -- 0x33B8 + x"C5",x"F3",x"EE",x"E0",x"02",x"60",x"20",x"5D", -- 0x33C0 + x"F3",x"AD",x"1A",x"02",x"38",x"ED",x"E1",x"02", -- 0x33C8 + x"A8",x"AE",x"19",x"02",x"20",x"49",x"F0",x"AD", -- 0x33D0 + x"E1",x"02",x"85",x"0F",x"20",x"85",x"F4",x"A9", -- 0x33D8 + x"80",x"8D",x"1B",x"02",x"8D",x"1D",x"02",x"A9", -- 0x33E0 + x"00",x"8D",x"1C",x"02",x"AD",x"E1",x"02",x"8D", -- 0x33E8 + x"1E",x"02",x"A9",x"00",x"85",x"0F",x"20",x"14", -- 0x33F0 + x"F4",x"20",x"44",x"F4",x"A5",x"0F",x"F0",x"03", -- 0x33F8 + x"20",x"16",x"F0",x"AD",x"1C",x"02",x"D0",x"EA", -- 0x3400 + x"AD",x"1E",x"02",x"CD",x"E1",x"02",x"D0",x"E2", -- 0x3408 + x"20",x"6E",x"F3",x"60",x"AD",x"1D",x"02",x"AE", -- 0x3410 + x"1E",x"02",x"20",x"74",x"F4",x"A5",x"0C",x"18", -- 0x3418 + x"6D",x"1B",x"02",x"8D",x"1B",x"02",x"AD",x"1C", -- 0x3420 + x"02",x"85",x"0C",x"65",x"0D",x"8D",x"1C",x"02", -- 0x3428 + x"C5",x"0C",x"F0",x"0F",x"B0",x"06",x"20",x"A1", -- 0x3430 + x"F0",x"4C",x"3F",x"F4",x"20",x"B2",x"F0",x"A9", -- 0x3438 + x"01",x"85",x"0F",x"60",x"AD",x"1B",x"02",x"AE", -- 0x3440 + x"1C",x"02",x"20",x"74",x"F4",x"38",x"AD",x"1D", -- 0x3448 + x"02",x"E5",x"0C",x"8D",x"1D",x"02",x"AD",x"1E", -- 0x3450 + x"02",x"85",x"0C",x"E5",x"0D",x"8D",x"1E",x"02", -- 0x3458 + x"C5",x"0C",x"F0",x"0F",x"B0",x"06",x"20",x"89", -- 0x3460 + x"F0",x"4C",x"6F",x"F4",x"20",x"95",x"F0",x"A9", -- 0x3468 + x"01",x"85",x"0F",x"60",x"85",x"0C",x"86",x"0D", -- 0x3470 + x"A6",x"0E",x"A5",x"0D",x"2A",x"66",x"0D",x"66", -- 0x3478 + x"0C",x"CA",x"D0",x"F6",x"60",x"E6",x"0F",x"A9", -- 0x3480 + x"00",x"85",x"0E",x"A9",x"01",x"0A",x"E6",x"0E", -- 0x3488 + x"C5",x"0F",x"90",x"F9",x"60",x"48",x"08",x"98", -- 0x3490 + x"48",x"D8",x"AD",x"08",x"02",x"10",x"1E",x"29", -- 0x3498 + x"87",x"8D",x"10",x"02",x"AE",x"0A",x"02",x"20", -- 0x34A0 + x"61",x"F5",x"CD",x"10",x"02",x"D0",x"0E",x"CE", -- 0x34A8 + x"0E",x"02",x"D0",x"33",x"AD",x"4F",x"02",x"8D", -- 0x34B0 + x"0E",x"02",x"4C",x"C6",x"F4",x"AD",x"4E",x"02", -- 0x34B8 + x"8D",x"0E",x"02",x"20",x"23",x"F5",x"20",x"EF", -- 0x34C0 + x"F4",x"AA",x"10",x"1D",x"48",x"AD",x"6A",x"02", -- 0x34C8 + x"29",x"08",x"D0",x"0F",x"68",x"48",x"C9",x"A0", -- 0x34D0 + x"90",x"06",x"20",x"14",x"FB",x"4C",x"E3",x"F4", -- 0x34D8 + x"20",x"2A",x"FB",x"68",x"4C",x"E9",x"F4",x"A9", -- 0x34E0 + x"00",x"AA",x"68",x"A8",x"28",x"68",x"60",x"AD", -- 0x34E8 + x"09",x"02",x"A8",x"A9",x"00",x"C0",x"A4",x"F0", -- 0x34F0 + x"04",x"C0",x"A7",x"D0",x"03",x"18",x"69",x"40", -- 0x34F8 + x"18",x"6D",x"08",x"02",x"10",x"1C",x"29",x"7F", -- 0x3500 + x"AA",x"BD",x"78",x"FF",x"2D",x"0C",x"02",x"10", -- 0x3508 + x"03",x"38",x"E9",x"20",x"29",x"7F",x"C0",x"A2", -- 0x3510 + x"D0",x"06",x"C9",x"40",x"30",x"02",x"29",x"1F", -- 0x3518 + x"09",x"80",x"60",x"A9",x"38",x"8D",x"0D",x"02", -- 0x3520 + x"8D",x"08",x"02",x"8D",x"09",x"02",x"A9",x"7F", -- 0x3528 + x"48",x"68",x"48",x"AA",x"A9",x"07",x"20",x"61", -- 0x3530 + x"F5",x"0D",x"0D",x"02",x"10",x"12",x"A2",x"00", -- 0x3538 + x"A0",x"20",x"CC",x"0D",x"02",x"D0",x"01",x"E8", -- 0x3540 + x"9D",x"08",x"02",x"68",x"48",x"9D",x"0A",x"02", -- 0x3548 + x"38",x"68",x"6A",x"48",x"38",x"AD",x"0D",x"02", -- 0x3550 + x"E9",x"08",x"8D",x"0D",x"02",x"10",x"D2",x"68", -- 0x3558 + x"60",x"48",x"A9",x"0E",x"20",x"90",x"F5",x"68", -- 0x3560 + x"29",x"07",x"AA",x"8D",x"11",x"02",x"09",x"B8", -- 0x3568 + x"8D",x"00",x"03",x"A0",x"04",x"88",x"D0",x"FD", -- 0x3570 + x"AD",x"00",x"03",x"29",x"08",x"D0",x"0D",x"CA", -- 0x3578 + x"8A",x"29",x"07",x"AA",x"CD",x"11",x"02",x"D0", -- 0x3580 + x"E5",x"A9",x"00",x"60",x"8A",x"09",x"80",x"60", -- 0x3588 + x"08",x"78",x"8D",x"0F",x"03",x"A8",x"8A",x"C0", -- 0x3590 + x"07",x"D0",x"02",x"09",x"40",x"48",x"AD",x"0C", -- 0x3598 + x"03",x"09",x"EE",x"8D",x"0C",x"03",x"29",x"11", -- 0x35A0 + x"09",x"CC",x"8D",x"0C",x"03",x"AA",x"68",x"8D", -- 0x35A8 + x"0F",x"03",x"8A",x"09",x"EC",x"8D",x"0C",x"03", -- 0x35B0 + x"29",x"11",x"09",x"CC",x"8D",x"0C",x"03",x"28", -- 0x35B8 + x"60",x"08",x"78",x"8D",x"01",x"03",x"AD",x"00", -- 0x35C0 + x"03",x"29",x"EF",x"8D",x"00",x"03",x"AD",x"00", -- 0x35C8 + x"03",x"09",x"10",x"8D",x"00",x"03",x"28",x"AD", -- 0x35D0 + x"0D",x"03",x"29",x"02",x"F0",x"F9",x"AD",x"0D", -- 0x35D8 + x"03",x"60",x"CF",x"CF",x"CF",x"CF",x"A3",x"CF", -- 0x35E0 + x"A6",x"CC",x"00",x"27",x"34",x"0F",x"66",x"99", -- 0x35E8 + x"60",x"CF",x"A7",x"B3",x"CF",x"A8",x"BE",x"CF", -- 0x35F0 + x"CF",x"CF",x"CF",x"CF",x"A5",x"A5",x"CF",x"A4", -- 0x35F8 + x"84",x"CF",x"29",x"1F",x"AA",x"BD",x"E2",x"F5", -- 0x3600 + x"18",x"69",x"2F",x"8D",x"61",x"02",x"A9",x"00", -- 0x3608 + x"69",x"F6",x"8D",x"62",x"02",x"AD",x"6A",x"02", -- 0x3610 + x"48",x"29",x"FE",x"8D",x"6A",x"02",x"68",x"29", -- 0x3618 + x"01",x"8D",x"51",x"02",x"A9",x"00",x"20",x"01", -- 0x3620 + x"F8",x"38",x"A9",x"00",x"6C",x"61",x"02",x"CE", -- 0x3628 + x"69",x"02",x"30",x"05",x"20",x"D7",x"F7",x"D0", -- 0x3630 + x"40",x"A9",x"27",x"8D",x"69",x"02",x"AD",x"68", -- 0x3638 + x"02",x"C9",x"01",x"F0",x"34",x"CE",x"68",x"02", -- 0x3640 + x"38",x"A5",x"12",x"E9",x"28",x"85",x"12",x"B0", -- 0x3648 + x"02",x"C6",x"13",x"4C",x"FE",x"F6",x"EE",x"69", -- 0x3650 + x"02",x"A2",x"27",x"EC",x"69",x"02",x"10",x"19", -- 0x3658 + x"20",x"0D",x"F7",x"AD",x"68",x"02",x"CD",x"7E", -- 0x3660 + x"02",x"F0",x"11",x"EE",x"68",x"02",x"18",x"A5", -- 0x3668 + x"12",x"69",x"28",x"85",x"12",x"90",x"02",x"E6", -- 0x3670 + x"13",x"4C",x"FE",x"F6",x"20",x"5D",x"F3",x"A2", -- 0x3678 + x"06",x"BD",x"77",x"02",x"95",x"0B",x"CA",x"D0", -- 0x3680 + x"F8",x"20",x"C4",x"ED",x"20",x"6E",x"F3",x"20", -- 0x3688 + x"1A",x"F7",x"4C",x"FE",x"F6",x"AE",x"7E",x"02", -- 0x3690 + x"AD",x"7A",x"02",x"85",x"12",x"AD",x"7B",x"02", -- 0x3698 + x"85",x"13",x"20",x"1A",x"F7",x"18",x"A5",x"12", -- 0x36A0 + x"69",x"28",x"85",x"12",x"90",x"02",x"E6",x"13", -- 0x36A8 + x"CA",x"D0",x"EF",x"20",x"0D",x"F7",x"A9",x"01", -- 0x36B0 + x"8D",x"68",x"02",x"AD",x"7A",x"02",x"85",x"12", -- 0x36B8 + x"AD",x"7B",x"02",x"85",x"13",x"4C",x"FE",x"F6", -- 0x36C0 + x"20",x"0D",x"F7",x"8E",x"53",x"02",x"4C",x"FE", -- 0x36C8 + x"F6",x"2A",x"2A",x"2A",x"2A",x"2A",x"2A",x"2A", -- 0x36D0 + x"2A",x"4D",x"6A",x"02",x"8D",x"6A",x"02",x"4C", -- 0x36D8 + x"FE",x"F6",x"AD",x"51",x"02",x"49",x"01",x"8D", -- 0x36E0 + x"51",x"02",x"4C",x"FE",x"F6",x"AD",x"0C",x"02", -- 0x36E8 + x"49",x"80",x"8D",x"0C",x"02",x"20",x"5A",x"F7", -- 0x36F0 + x"4C",x"FE",x"F6",x"20",x"9F",x"FA",x"AD",x"6A", -- 0x36F8 + x"02",x"0D",x"51",x"02",x"8D",x"6A",x"02",x"A9", -- 0x3700 + x"01",x"20",x"01",x"F8",x"60",x"A2",x"00",x"20", -- 0x3708 + x"DE",x"F7",x"D0",x"02",x"E8",x"E8",x"8E",x"69", -- 0x3710 + x"02",x"60",x"A0",x"27",x"A9",x"20",x"91",x"12", -- 0x3718 + x"88",x"10",x"FB",x"A0",x"00",x"AD",x"6B",x"02", -- 0x3720 + x"91",x"12",x"AD",x"6C",x"02",x"C8",x"91",x"12", -- 0x3728 + x"60",x"A0",x"00",x"8C",x"63",x"02",x"8D",x"64", -- 0x3730 + x"02",x"0A",x"2E",x"63",x"02",x"0A",x"2E",x"63", -- 0x3738 + x"02",x"18",x"6D",x"64",x"02",x"90",x"03",x"EE", -- 0x3740 + x"63",x"02",x"0A",x"2E",x"63",x"02",x"0A",x"2E", -- 0x3748 + x"63",x"02",x"0A",x"2E",x"63",x"02",x"AC",x"63", -- 0x3750 + x"02",x"60",x"AD",x"0C",x"02",x"10",x"07",x"A9", -- 0x3758 + x"70",x"A0",x"F7",x"4C",x"6A",x"F7",x"A9",x"76", -- 0x3760 + x"A0",x"F7",x"A2",x"23",x"20",x"65",x"F8",x"60", -- 0x3768 + x"07",x"43",x"41",x"50",x"53",x"00",x"07",x"20", -- 0x3770 + x"20",x"20",x"20",x"00",x"48",x"08",x"98",x"48", -- 0x3778 + x"8A",x"48",x"D8",x"E0",x"13",x"F0",x"46",x"E0", -- 0x3780 + x"14",x"F0",x"42",x"E0",x"06",x"F0",x"3E",x"AD", -- 0x3788 + x"6A",x"02",x"29",x"02",x"F0",x"3A",x"8A",x"C9", -- 0x3790 + x"20",x"90",x"32",x"AD",x"6A",x"02",x"29",x"10", -- 0x3798 + x"F0",x"13",x"8A",x"38",x"E9",x"40",x"30",x"09", -- 0x37A0 + x"29",x"1F",x"20",x"E4",x"F7",x"A9",x"1B",x"D0", -- 0x37A8 + x"1C",x"A9",x"20",x"10",x"F5",x"E0",x"7F",x"F0", -- 0x37B0 + x"08",x"68",x"48",x"20",x"E4",x"F7",x"4C",x"D0", -- 0x37B8 + x"F7",x"A9",x"08",x"20",x"02",x"F6",x"A9",x"20", -- 0x37C0 + x"20",x"E4",x"F7",x"A9",x"08",x"20",x"02",x"F6", -- 0x37C8 + x"68",x"AA",x"68",x"A8",x"28",x"68",x"60",x"AD", -- 0x37D0 + x"69",x"02",x"29",x"FE",x"D0",x"05",x"AD",x"6A", -- 0x37D8 + x"02",x"29",x"20",x"60",x"48",x"AC",x"69",x"02", -- 0x37E0 + x"91",x"12",x"2C",x"6A",x"02",x"50",x"0B",x"AD", -- 0x37E8 + x"69",x"02",x"18",x"69",x"28",x"A8",x"68",x"48", -- 0x37F0 + x"91",x"12",x"A9",x"09",x"20",x"02",x"F6",x"68", -- 0x37F8 + x"60",x"2D",x"6A",x"02",x"4A",x"6A",x"8D",x"65", -- 0x3800 + x"02",x"AC",x"69",x"02",x"B1",x"12",x"29",x"7F", -- 0x3808 + x"0D",x"65",x"02",x"91",x"12",x"60",x"A9",x"00", -- 0x3810 + x"85",x"0C",x"A9",x"B9",x"85",x"0D",x"A9",x"00", -- 0x3818 + x"20",x"2D",x"F8",x"A0",x"BA",x"84",x"0D",x"A9", -- 0x3820 + x"20",x"20",x"2D",x"F8",x"60",x"A0",x"00",x"48", -- 0x3828 + x"20",x"54",x"F8",x"91",x"0C",x"C8",x"68",x"48", -- 0x3830 + x"20",x"52",x"F8",x"68",x"48",x"20",x"50",x"F8", -- 0x3838 + x"91",x"0C",x"C8",x"C0",x"00",x"F0",x"07",x"68", -- 0x3840 + x"18",x"69",x"01",x"4C",x"2F",x"F8",x"68",x"60", -- 0x3848 + x"4A",x"4A",x"4A",x"4A",x"29",x"03",x"AA",x"BD", -- 0x3850 + x"61",x"F8",x"91",x"0C",x"C8",x"91",x"0C",x"C8", -- 0x3858 + x"60",x"00",x"38",x"07",x"3F",x"85",x"0C",x"84", -- 0x3860 + x"0D",x"AD",x"1F",x"02",x"D0",x"0D",x"A0",x"00", -- 0x3868 + x"B1",x"0C",x"F0",x"07",x"9D",x"80",x"BB",x"E8", -- 0x3870 + x"C8",x"D0",x"F5",x"60",x"4C",x"7C",x"F7",x"4C", -- 0x3878 + x"78",x"EB",x"4C",x"C1",x"F5",x"4C",x"65",x"F8", -- 0x3880 + x"4C",x"22",x"EE",x"4C",x"B2",x"F8",x"40",x"A2", -- 0x3888 + x"FF",x"9A",x"58",x"D8",x"A2",x"12",x"BD",x"7C", -- 0x3890 + x"F8",x"9D",x"38",x"02",x"CA",x"10",x"F7",x"A9", -- 0x3898 + x"20",x"8D",x"4E",x"02",x"A9",x"04",x"8D",x"4F", -- 0x38A0 + x"02",x"20",x"14",x"FA",x"20",x"B8",x"F8",x"4C", -- 0x38A8 + x"CC",x"EC",x"20",x"B8",x"F8",x"4C",x"71",x"C4", -- 0x38B0 + x"20",x"AA",x"F9",x"A9",x"07",x"A2",x"40",x"20", -- 0x38B8 + x"90",x"F5",x"20",x"E0",x"ED",x"20",x"0E",x"F9", -- 0x38C0 + x"A9",x"FF",x"8D",x"0C",x"02",x"20",x"C9",x"F9", -- 0x38C8 + x"A2",x"05",x"20",x"82",x"F9",x"20",x"16",x"F8", -- 0x38D0 + x"20",x"5A",x"F7",x"60",x"48",x"8A",x"48",x"A9", -- 0x38D8 + x"01",x"8D",x"1F",x"02",x"A9",x"BF",x"8D",x"7B", -- 0x38E0 + x"02",x"8D",x"79",x"02",x"A9",x"68",x"8D",x"7A", -- 0x38E8 + x"02",x"A9",x"90",x"8D",x"78",x"02",x"A9",x"03", -- 0x38F0 + x"8D",x"7E",x"02",x"A9",x"00",x"8D",x"7D",x"02", -- 0x38F8 + x"A9",x"50",x"8D",x"7C",x"02",x"A2",x"0C",x"20", -- 0x3900 + x"38",x"02",x"68",x"AA",x"68",x"60",x"48",x"A9", -- 0x3908 + x"03",x"8D",x"6A",x"02",x"A9",x"00",x"8D",x"6C", -- 0x3910 + x"02",x"A9",x"17",x"8D",x"6B",x"02",x"68",x"60", -- 0x3918 + x"48",x"AD",x"1F",x"02",x"D0",x"05",x"A2",x"0B", -- 0x3920 + x"20",x"82",x"F9",x"A9",x"FE",x"2D",x"6A",x"02", -- 0x3928 + x"8D",x"6A",x"02",x"A9",x"1E",x"8D",x"DF",x"BF", -- 0x3930 + x"A9",x"40",x"8D",x"00",x"A0",x"A2",x"17",x"20", -- 0x3938 + x"82",x"F9",x"A9",x"00",x"8D",x"19",x"02",x"8D", -- 0x3940 + x"1A",x"02",x"85",x"10",x"A9",x"A0",x"85",x"11", -- 0x3948 + x"A9",x"20",x"8D",x"15",x"02",x"A9",x"FF",x"8D", -- 0x3950 + x"13",x"02",x"20",x"DC",x"F8",x"A9",x"01",x"0D", -- 0x3958 + x"6A",x"02",x"8D",x"6A",x"02",x"68",x"60",x"48", -- 0x3960 + x"A9",x"FE",x"2D",x"6A",x"02",x"8D",x"6A",x"02", -- 0x3968 + x"A2",x"11",x"20",x"82",x"F9",x"20",x"C9",x"F9", -- 0x3970 + x"A9",x"01",x"0D",x"6A",x"02",x"8D",x"6A",x"02", -- 0x3978 + x"68",x"60",x"A0",x"06",x"BD",x"92",x"F9",x"99", -- 0x3980 + x"0B",x"00",x"CA",x"88",x"D0",x"F6",x"20",x"C4", -- 0x3988 + x"ED",x"60",x"78",x"FC",x"00",x"B5",x"00",x"03", -- 0x3990 + x"00",x"B4",x"00",x"98",x"80",x"07",x"00",x"98", -- 0x3998 + x"00",x"B4",x"80",x"07",x"00",x"A0",x"01",x"A0", -- 0x39A0 + x"3F",x"1F",x"A9",x"FF",x"8D",x"03",x"03",x"A9", -- 0x39A8 + x"F7",x"8D",x"02",x"03",x"A9",x"B7",x"8D",x"00", -- 0x39B0 + x"03",x"A9",x"DD",x"8D",x"0C",x"03",x"A9",x"7F", -- 0x39B8 + x"8D",x"0E",x"03",x"A9",x"00",x"8D",x"0B",x"03", -- 0x39C0 + x"60",x"A9",x"1A",x"20",x"07",x"FA",x"A9",x"20", -- 0x39C8 + x"A0",x"28",x"99",x"7F",x"BB",x"88",x"D0",x"FA", -- 0x39D0 + x"A9",x"00",x"8D",x"1F",x"02",x"A9",x"BB",x"8D", -- 0x39D8 + x"7B",x"02",x"8D",x"79",x"02",x"A9",x"A8",x"8D", -- 0x39E0 + x"7A",x"02",x"A9",x"D0",x"8D",x"78",x"02",x"A9", -- 0x39E8 + x"1B",x"8D",x"7E",x"02",x"A9",x"04",x"8D",x"7D", -- 0x39F0 + x"02",x"A9",x"10",x"8D",x"7C",x"02",x"A2",x"0C", -- 0x39F8 + x"20",x"38",x"02",x"20",x"5A",x"F7",x"60",x"8D", -- 0x3A00 + x"DF",x"BF",x"A9",x"02",x"A2",x"00",x"A0",x"03", -- 0x3A08 + x"20",x"C9",x"EE",x"60",x"A0",x"00",x"8C",x"60", -- 0x3A10 + x"02",x"8C",x"20",x"02",x"8C",x"00",x"05",x"84", -- 0x3A18 + x"0E",x"88",x"84",x"0C",x"8C",x"00",x"45",x"AD", -- 0x3A20 + x"00",x"05",x"D0",x"04",x"A9",x"C0",x"D0",x"05", -- 0x3A28 + x"EE",x"20",x"02",x"A9",x"40",x"85",x"0F",x"C8", -- 0x3A30 + x"A9",x"03",x"85",x"0D",x"E6",x"0C",x"D0",x"02", -- 0x3A38 + x"E6",x"0D",x"A5",x"0C",x"C5",x"0E",x"D0",x"06", -- 0x3A40 + x"A5",x"0D",x"C5",x"0F",x"F0",x"0F",x"A9",x"AA", -- 0x3A48 + x"91",x"0C",x"D1",x"0C",x"D0",x"07",x"4A",x"91", -- 0x3A50 + x"0C",x"D1",x"0C",x"F0",x"DF",x"38",x"A5",x"0F", -- 0x3A58 + x"E9",x"28",x"85",x"0F",x"A5",x"0E",x"C5",x"0C", -- 0x3A60 + x"A5",x"0F",x"E5",x"0D",x"90",x"09",x"A5",x"0C", -- 0x3A68 + x"A4",x"0D",x"EE",x"60",x"02",x"D0",x"04",x"A5", -- 0x3A70 + x"0E",x"A4",x"0F",x"85",x"A6",x"84",x"A7",x"8D", -- 0x3A78 + x"C1",x"02",x"8C",x"C2",x"02",x"60",x"08",x"78", -- 0x3A80 + x"86",x"14",x"84",x"15",x"A0",x"00",x"B1",x"14", -- 0x3A88 + x"AA",x"98",x"48",x"20",x"90",x"F5",x"68",x"A8", -- 0x3A90 + x"C8",x"C0",x"0E",x"D0",x"F1",x"28",x"60",x"A2", -- 0x3A98 + x"A7",x"A0",x"FA",x"20",x"86",x"FA",x"60",x"18", -- 0x3AA0 + x"00",x"00",x"00",x"00",x"00",x"00",x"3E",x"10", -- 0x3AA8 + x"00",x"00",x"00",x"0F",x"00",x"A2",x"BD",x"A0", -- 0x3AB0 + x"FA",x"20",x"86",x"FA",x"60",x"00",x"00",x"00", -- 0x3AB8 + x"00",x"00",x"00",x"0F",x"07",x"10",x"10",x"10", -- 0x3AC0 + x"00",x"08",x"00",x"A2",x"D3",x"A0",x"FA",x"20", -- 0x3AC8 + x"86",x"FA",x"60",x"00",x"00",x"00",x"00",x"00", -- 0x3AD0 + x"00",x"1F",x"07",x"10",x"10",x"10",x"00",x"18", -- 0x3AD8 + x"00",x"A2",x"06",x"A0",x"FB",x"20",x"86",x"FA", -- 0x3AE0 + x"A9",x"00",x"AA",x"8A",x"48",x"A9",x"00",x"20", -- 0x3AE8 + x"90",x"F5",x"A2",x"00",x"CA",x"D0",x"FD",x"68", -- 0x3AF0 + x"AA",x"E8",x"E0",x"70",x"D0",x"ED",x"A9",x"08", -- 0x3AF8 + x"A2",x"00",x"20",x"90",x"F5",x"60",x"00",x"00", -- 0x3B00 + x"00",x"00",x"00",x"00",x"00",x"3E",x"0F",x"00", -- 0x3B08 + x"00",x"00",x"00",x"00",x"A2",x"1C",x"A0",x"FB", -- 0x3B10 + x"20",x"86",x"FA",x"60",x"1F",x"00",x"00",x"00", -- 0x3B18 + x"00",x"00",x"00",x"3E",x"10",x"00",x"00",x"1F", -- 0x3B20 + x"00",x"00",x"A2",x"32",x"A0",x"FB",x"20",x"86", -- 0x3B28 + x"FA",x"60",x"2F",x"00",x"00",x"00",x"00",x"00", -- 0x3B30 + x"00",x"3E",x"10",x"00",x"00",x"1F",x"00",x"00", -- 0x3B38 + x"AD",x"E1",x"02",x"C9",x"01",x"D0",x"22",x"A9", -- 0x3B40 + x"00",x"AE",x"E3",x"02",x"20",x"90",x"F5",x"A9", -- 0x3B48 + x"01",x"AE",x"E4",x"02",x"20",x"90",x"F5",x"AD", -- 0x3B50 + x"E5",x"02",x"29",x"0F",x"D0",x"04",x"A2",x"10", -- 0x3B58 + x"D0",x"01",x"AA",x"A9",x"08",x"20",x"90",x"F5", -- 0x3B60 + x"60",x"C9",x"02",x"D0",x"22",x"A9",x"02",x"AE", -- 0x3B68 + x"E3",x"02",x"20",x"90",x"F5",x"A9",x"03",x"AE", -- 0x3B70 + x"E4",x"02",x"20",x"90",x"F5",x"AD",x"E5",x"02", -- 0x3B78 + x"29",x"0F",x"D0",x"04",x"A2",x"10",x"D0",x"01", -- 0x3B80 + x"AA",x"A9",x"09",x"20",x"90",x"F5",x"60",x"C9", -- 0x3B88 + x"03",x"D0",x"22",x"A9",x"04",x"AE",x"E3",x"02", -- 0x3B90 + x"20",x"90",x"F5",x"A9",x"05",x"AE",x"E4",x"02", -- 0x3B98 + x"20",x"90",x"F5",x"AD",x"E5",x"02",x"29",x"0F", -- 0x3BA0 + x"D0",x"04",x"A2",x"10",x"D0",x"01",x"AA",x"A9", -- 0x3BA8 + x"0A",x"20",x"90",x"F5",x"60",x"A9",x"06",x"AE", -- 0x3BB0 + x"E3",x"02",x"20",x"90",x"F5",x"AD",x"E1",x"02", -- 0x3BB8 + x"C9",x"04",x"F0",x"93",x"C9",x"05",x"F0",x"B5", -- 0x3BC0 + x"C9",x"06",x"F0",x"D7",x"EE",x"E0",x"02",x"60", -- 0x3BC8 + x"AD",x"E3",x"02",x"0A",x"0A",x"0A",x"0D",x"E1", -- 0x3BD0 + x"02",x"49",x"3F",x"AA",x"A9",x"07",x"20",x"90", -- 0x3BD8 + x"F5",x"18",x"AD",x"E7",x"02",x"0A",x"8D",x"E7", -- 0x3BE0 + x"02",x"AD",x"E8",x"02",x"2A",x"8D",x"E8",x"02", -- 0x3BE8 + x"A9",x"0B",x"AE",x"E7",x"02",x"20",x"90",x"F5", -- 0x3BF0 + x"A9",x"0C",x"AE",x"E8",x"02",x"20",x"90",x"F5", -- 0x3BF8 + x"AD",x"E5",x"02",x"29",x"07",x"A8",x"B9",x"10", -- 0x3C00 + x"FC",x"AA",x"A9",x"0D",x"20",x"90",x"F5",x"60", -- 0x3C08 + x"00",x"00",x"04",x"08",x"0A",x"0B",x"0C",x"0D", -- 0x3C10 + x"A2",x"E1",x"A9",x"04",x"20",x"E4",x"F2",x"B0", -- 0x3C18 + x"39",x"A2",x"E3",x"A9",x"08",x"20",x"F8",x"F2", -- 0x3C20 + x"B0",x"30",x"A2",x"E5",x"A9",x"0D",x"20",x"E4", -- 0x3C28 + x"F2",x"B0",x"27",x"AC",x"E3",x"02",x"AE",x"E5", -- 0x3C30 + x"02",x"BD",x"5E",x"FC",x"8D",x"E4",x"02",x"BD", -- 0x3C38 + x"6B",x"FC",x"8D",x"E3",x"02",x"AD",x"E7",x"02", -- 0x3C40 + x"8D",x"E5",x"02",x"88",x"30",x"09",x"4E",x"E4", -- 0x3C48 + x"02",x"6E",x"E3",x"02",x"4C",x"4B",x"FC",x"4C", -- 0x3C50 + x"40",x"FB",x"EE",x"E0",x"02",x"60",x"00",x"07", -- 0x3C58 + x"07",x"06",x"06",x"05",x"05",x"05",x"04",x"04", -- 0x3C60 + x"04",x"04",x"03",x"00",x"77",x"0B",x"A6",x"47", -- 0x3C68 + x"EC",x"97",x"47",x"FB",x"B3",x"70",x"30",x"F4", -- 0x3C70 + x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x3C78 + x"08",x"08",x"08",x"08",x"08",x"00",x"08",x"00", -- 0x3C80 + x"14",x"14",x"14",x"00",x"00",x"00",x"00",x"00", -- 0x3C88 + x"14",x"14",x"3E",x"14",x"3E",x"14",x"14",x"00", -- 0x3C90 + x"08",x"1E",x"28",x"1C",x"0A",x"3C",x"08",x"00", -- 0x3C98 + x"30",x"32",x"04",x"08",x"10",x"26",x"06",x"00", -- 0x3CA0 + x"10",x"28",x"28",x"10",x"2A",x"24",x"1A",x"00", -- 0x3CA8 + x"08",x"08",x"08",x"00",x"00",x"00",x"00",x"00", -- 0x3CB0 + x"08",x"10",x"20",x"20",x"20",x"10",x"08",x"00", -- 0x3CB8 + x"08",x"04",x"02",x"02",x"02",x"04",x"08",x"00", -- 0x3CC0 + x"08",x"2A",x"1C",x"08",x"1C",x"2A",x"08",x"00", -- 0x3CC8 + x"00",x"08",x"08",x"3E",x"08",x"08",x"00",x"00", -- 0x3CD0 + x"00",x"00",x"00",x"00",x"00",x"08",x"08",x"10", -- 0x3CD8 + x"00",x"00",x"00",x"3E",x"00",x"00",x"00",x"00", -- 0x3CE0 + x"00",x"00",x"00",x"00",x"00",x"04",x"00",x"00", -- 0x3CE8 + x"00",x"02",x"04",x"08",x"10",x"20",x"00",x"00", -- 0x3CF0 + x"1C",x"22",x"26",x"2A",x"32",x"22",x"1C",x"00", -- 0x3CF8 + x"08",x"18",x"08",x"08",x"08",x"08",x"1C",x"00", -- 0x3D00 + x"1C",x"22",x"02",x"04",x"08",x"10",x"3E",x"00", -- 0x3D08 + x"3E",x"02",x"04",x"0C",x"02",x"22",x"1C",x"00", -- 0x3D10 + x"04",x"0C",x"14",x"24",x"3E",x"04",x"04",x"00", -- 0x3D18 + x"3E",x"20",x"3C",x"02",x"02",x"22",x"1C",x"00", -- 0x3D20 + x"0C",x"10",x"20",x"3C",x"22",x"22",x"1C",x"00", -- 0x3D28 + x"3E",x"02",x"04",x"08",x"10",x"10",x"10",x"00", -- 0x3D30 + x"1C",x"22",x"22",x"1C",x"22",x"22",x"1C",x"00", -- 0x3D38 + x"1C",x"22",x"22",x"1E",x"02",x"04",x"18",x"00", -- 0x3D40 + x"00",x"00",x"08",x"00",x"00",x"08",x"00",x"00", -- 0x3D48 + x"00",x"00",x"08",x"00",x"00",x"08",x"08",x"10", -- 0x3D50 + x"04",x"08",x"10",x"20",x"10",x"08",x"04",x"00", -- 0x3D58 + x"00",x"00",x"3E",x"00",x"3E",x"00",x"00",x"00", -- 0x3D60 + x"10",x"08",x"04",x"02",x"04",x"08",x"10",x"00", -- 0x3D68 + x"1C",x"22",x"04",x"08",x"08",x"00",x"08",x"00", -- 0x3D70 + x"1C",x"22",x"2A",x"2E",x"2C",x"20",x"1E",x"00", -- 0x3D78 + x"08",x"14",x"22",x"22",x"3E",x"22",x"22",x"00", -- 0x3D80 + x"3C",x"22",x"22",x"3C",x"22",x"22",x"3C",x"00", -- 0x3D88 + x"1C",x"22",x"20",x"20",x"20",x"22",x"1C",x"00", -- 0x3D90 + x"3C",x"22",x"22",x"22",x"22",x"22",x"3C",x"00", -- 0x3D98 + x"3E",x"20",x"20",x"3C",x"20",x"20",x"3E",x"00", -- 0x3DA0 + x"3E",x"20",x"20",x"3C",x"20",x"20",x"20",x"00", -- 0x3DA8 + x"1E",x"20",x"20",x"20",x"26",x"22",x"1E",x"00", -- 0x3DB0 + x"22",x"22",x"22",x"3E",x"22",x"22",x"22",x"00", -- 0x3DB8 + x"1C",x"08",x"08",x"08",x"08",x"08",x"1C",x"00", -- 0x3DC0 + x"02",x"02",x"02",x"02",x"02",x"22",x"1C",x"00", -- 0x3DC8 + x"22",x"24",x"28",x"30",x"28",x"24",x"22",x"00", -- 0x3DD0 + x"20",x"20",x"20",x"20",x"20",x"20",x"3E",x"00", -- 0x3DD8 + x"22",x"36",x"2A",x"2A",x"22",x"22",x"22",x"00", -- 0x3DE0 + x"22",x"22",x"32",x"2A",x"26",x"22",x"22",x"00", -- 0x3DE8 + x"1C",x"22",x"22",x"22",x"22",x"22",x"1C",x"00", -- 0x3DF0 + x"3C",x"22",x"22",x"3C",x"20",x"20",x"20",x"00", -- 0x3DF8 + x"1C",x"22",x"22",x"22",x"2A",x"24",x"1A",x"00", -- 0x3E00 + x"3C",x"22",x"22",x"3C",x"28",x"24",x"22",x"00", -- 0x3E08 + x"1C",x"22",x"20",x"1C",x"02",x"22",x"1C",x"00", -- 0x3E10 + x"3E",x"08",x"08",x"08",x"08",x"08",x"08",x"00", -- 0x3E18 + x"22",x"22",x"22",x"22",x"22",x"22",x"1C",x"00", -- 0x3E20 + x"22",x"22",x"22",x"22",x"22",x"14",x"08",x"00", -- 0x3E28 + x"22",x"22",x"22",x"2A",x"2A",x"36",x"22",x"00", -- 0x3E30 + x"22",x"22",x"14",x"08",x"14",x"22",x"22",x"00", -- 0x3E38 + x"22",x"22",x"14",x"08",x"08",x"08",x"08",x"00", -- 0x3E40 + x"3E",x"02",x"04",x"08",x"10",x"20",x"3E",x"00", -- 0x3E48 + x"1E",x"10",x"10",x"10",x"10",x"10",x"1E",x"00", -- 0x3E50 + x"00",x"20",x"10",x"08",x"04",x"02",x"00",x"00", -- 0x3E58 + x"3C",x"04",x"04",x"04",x"04",x"04",x"3C",x"00", -- 0x3E60 + x"08",x"14",x"2A",x"08",x"08",x"08",x"08",x"00", -- 0x3E68 + x"0E",x"10",x"10",x"10",x"3C",x"10",x"3E",x"00", -- 0x3E70 + x"0C",x"12",x"2D",x"29",x"29",x"2D",x"12",x"0C", -- 0x3E78 + x"00",x"00",x"1C",x"02",x"1E",x"22",x"1E",x"00", -- 0x3E80 + x"20",x"20",x"3C",x"22",x"22",x"22",x"3C",x"00", -- 0x3E88 + x"00",x"00",x"1E",x"20",x"20",x"20",x"1E",x"00", -- 0x3E90 + x"02",x"02",x"1E",x"22",x"22",x"22",x"1E",x"00", -- 0x3E98 + x"00",x"00",x"1C",x"22",x"3E",x"20",x"1E",x"00", -- 0x3EA0 + x"0C",x"12",x"10",x"3C",x"10",x"10",x"10",x"00", -- 0x3EA8 + x"00",x"00",x"1C",x"22",x"22",x"1E",x"02",x"1C", -- 0x3EB0 + x"20",x"20",x"3C",x"22",x"22",x"22",x"22",x"00", -- 0x3EB8 + x"08",x"00",x"18",x"08",x"08",x"08",x"1C",x"00", -- 0x3EC0 + x"04",x"00",x"0C",x"04",x"04",x"04",x"24",x"18", -- 0x3EC8 + x"20",x"20",x"22",x"24",x"38",x"24",x"22",x"00", -- 0x3ED0 + x"18",x"08",x"08",x"08",x"08",x"08",x"1C",x"00", -- 0x3ED8 + x"00",x"00",x"36",x"2A",x"2A",x"2A",x"22",x"00", -- 0x3EE0 + x"00",x"00",x"3C",x"22",x"22",x"22",x"22",x"00", -- 0x3EE8 + x"00",x"00",x"1C",x"22",x"22",x"22",x"1C",x"00", -- 0x3EF0 + x"00",x"00",x"3C",x"22",x"22",x"3C",x"20",x"20", -- 0x3EF8 + x"00",x"00",x"1E",x"22",x"22",x"1E",x"02",x"02", -- 0x3F00 + x"00",x"00",x"2E",x"30",x"20",x"20",x"20",x"00", -- 0x3F08 + x"00",x"00",x"1E",x"20",x"1C",x"02",x"3C",x"00", -- 0x3F10 + x"10",x"10",x"3C",x"10",x"10",x"12",x"0C",x"00", -- 0x3F18 + x"00",x"00",x"22",x"22",x"22",x"26",x"1A",x"00", -- 0x3F20 + x"00",x"00",x"22",x"22",x"22",x"14",x"08",x"00", -- 0x3F28 + x"00",x"00",x"22",x"22",x"2A",x"2A",x"36",x"00", -- 0x3F30 + x"00",x"00",x"22",x"14",x"08",x"14",x"22",x"00", -- 0x3F38 + x"00",x"00",x"22",x"22",x"22",x"1E",x"02",x"1C", -- 0x3F40 + x"00",x"00",x"3E",x"04",x"08",x"10",x"3E",x"00", -- 0x3F48 + x"0E",x"18",x"18",x"30",x"18",x"18",x"0E",x"00", -- 0x3F50 + x"08",x"08",x"08",x"08",x"08",x"08",x"08",x"08", -- 0x3F58 + x"38",x"0C",x"0C",x"06",x"0C",x"0C",x"38",x"00", -- 0x3F60 + x"2A",x"15",x"2A",x"15",x"2A",x"15",x"2A",x"15", -- 0x3F68 + x"3F",x"3F",x"3F",x"3F",x"3F",x"3F",x"3F",x"3F", -- 0x3F70 + x"37",x"EA",x"ED",x"EB",x"20",x"F5",x"F9",x"38", -- 0x3F78 + x"EE",x"F4",x"36",x"39",x"2C",x"E9",x"E8",x"EC", -- 0x3F80 + x"35",x"F2",x"E2",x"3B",x"2E",x"EF",x"E7",x"30", -- 0x3F88 + x"F6",x"E6",x"34",x"2D",x"0B",x"F0",x"E5",x"2F", -- 0x3F90 + x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x3F98 + x"31",x"1B",x"FA",x"00",x"08",x"7F",x"E1",x"0D", -- 0x3FA0 + x"F8",x"F1",x"32",x"5C",x"0A",x"5D",x"F3",x"00", -- 0x3FA8 + x"33",x"E4",x"E3",x"27",x"09",x"5B",x"F7",x"3D", -- 0x3FB0 + x"26",x"4A",x"4D",x"4B",x"20",x"55",x"59",x"2A", -- 0x3FB8 + x"4E",x"54",x"5E",x"28",x"3C",x"49",x"48",x"4C", -- 0x3FC0 + x"25",x"52",x"42",x"3A",x"3E",x"4F",x"47",x"29", -- 0x3FC8 + x"56",x"46",x"24",x"5F",x"0B",x"50",x"45",x"3F", -- 0x3FD0 + x"00",x"00",x"00",x"00",x"00",x"00",x"00",x"00", -- 0x3FD8 + x"21",x"1B",x"5A",x"00",x"08",x"7F",x"41",x"0D", -- 0x3FE0 + x"58",x"51",x"40",x"7C",x"0A",x"7D",x"53",x"00", -- 0x3FE8 + x"23",x"44",x"43",x"22",x"09",x"7B",x"57",x"2B", -- 0x3FF0 + x"D0",x"01",x"47",x"02",x"8F",x"F8",x"44",x"02" -- 0x3FF8 + ); + +begin + + p_rom : process(CLK) +begin + if (rising_edge(CLK)) then + DATA <= ROM(to_integer(unsigned(ADDR))); + end if; + end process; +end RTL; diff --git a/Oric Atmos_MiST/rtl/roms/Load Jumpshot.bat b/Oric Atmos_MiST/rtl/roms/Load Jumpshot.bat new file mode 100644 index 00000000..d45aafac --- /dev/null +++ b/Oric Atmos_MiST/rtl/roms/Load Jumpshot.bat @@ -0,0 +1,9 @@ +@echo off + +cls + +echo Generating intermediate file from : basic11b : rom.vhd +romgen.exe basic11b.rom rom 14 a \n e > rom.vhd + + +pause diff --git a/Oric Atmos_MiST/rtl/roms/basic11b.hex b/Oric Atmos_MiST/rtl/roms/basic11b.hex new file mode 100644 index 00000000..832d8832 --- /dev/null +++ b/Oric Atmos_MiST/rtl/roms/basic11b.hex @@ -0,0 +1,1026 @@ +:020000020000FC +:100000004CCCEC4C71C472C991C686E9D0E915CDCF +:1000100018CD11CA50DAA0DADDD966D984DAA0DAAF +:1000200054C8FCC708C897CE3BCA54CD7DD1CDCCAF +:1000300088CD1BCBE4C9BCC96FCA51C9C7C911CA95 +:1000400098CACDEBE6EB0BEC20EC32ECB4FACAFA32 +:10005000E0FA9EFAFBEAFBEAFBEAEFEAEFEAEFEAF4 +:10006000EFEAEFEAEFEAEFEAFBEAFBEA70C9C1CA9E +:1000700057D95AE808E9B9D44ED9AACB9FC947C77E +:100080000CC745CD45E912CDEDC621DFBDDF49DF07 +:1000900021007ED4A6D4B5D9FB022EE24FE3AFDC1B +:1000A000AAE28BE392E3DBE33FE438D983D9D4DDE2 +:1000B000A6D893D5D7D8B5D816D877DE0FDF0BDF03 +:1000C000DADA3FDA45EC2AD856D861D87924DB79D8 +:1000D0000DDB7BEFDC7BE6DD7F37E250E5D046E2EF +:1000E000D07D70E25A3BD06412D1454EC44544499C +:1000F000D453544F52C5524543414CCC54524FCE29 +:1001000054524F46C6504FD0504C4FD450554CCC03 +:100110004C4F5245D3444F4BC55245504541D455A1 +:100120004E5449CC464FD24C4C4953D44C50524972 +:100130004ED44E4558D4444154C1494E5055D444F0 +:1001400049CD434CD3524541C44C45D4474F54CF7D +:100150005255CE49C6524553544F52C5474F535539 +:10016000C25245545552CE5245CD48494D45CD47D2 +:100170005241C252454C454153C5544558D4484953 +:100180005245D353484F4FD44558504C4F44C55A0D +:1001900041D050494EC7534F554EC44D555349C396 +:1001A000504C41D94355525345D44355524D4FD6E7 +:1001B000445241D7434952434CC55041545445528F +:1001C000CE46494CCC434841D250415045D2494E8D +:1001D000CB53544FD04FCE574149D4434C4F41C4D9 +:1001E00043534156C54445C6504F4BC55052494EE6 +:1001F000D4434F4ED44C4953D4434C4541D2474548 +:10020000D443414CCCA14E45D7544142A854CF468B +:10021000CE535043A8C0415554CF454C53C55448C4 +:1002200045CE4E4FD4535445D0ABADAAAFDE414E70 +:10023000C44FD2BEBDBC5347CE494ED44142D35524 +:1002400053D24652C5504FD3484558A4A65351D215 +:10025000524EC44CCE4558D0434FD35349CE54414F +:10026000CE4154CE504545CB444545CB4C4FC74C71 +:1002700045CE535452A45641CC4153C3434852A493 +:1002800050C9545255C546414C53C54B4559A453CA +:100290004352CE504F494ED44C454654A452494740 +:1002A0004854A44D4944A4004E455854205749543D +:1002B000484F555420464FD253594E5441D8524579 +:1002C0005455524E20574954484F555420474F5388 +:1002D00055C24F5554204F4620444154C1494C4CBF +:1002E0004547414C205155414E544954D94F5645EC +:1002F00052464C4FD74F5554204F46204D454D4FF9 +:1003000052D9554E44454627442053544154454DF7 +:10031000454ED4424144205355425343524950D450 +:10032000524544494D27442041525241D9444956EF +:100330004953494F4E204259205A4552CF494C4CBF +:100340004547414C204449524543D44449535020E9 +:1003500054595045204D49534D415443C85354526C +:10036000494E4720544F4F204C4F4EC7464F524D99 +:10037000554C4120544F4F20434F4D504C45D8438E +:10038000414E275420434F4E54494E55C5554E4477 +:10039000454627442046554E4354494FCE4241449A +:1003A00020554E5449CC204552524F520020494EC0 +:1003B00020000D0A5265616479200D0A000D0A20A3 +:1003C000425245414B00BAE8E8E8E8BD0101C98D59 +:1003D000D021A5B9D00ABD020185B8BD030185B9F8 +:1003E000DD0301D007A5B8DD0201F0078A18691204 +:1003F000AAD0D8602044C485A084A138A5C9E5CE80 +:100400008591A8A5CAE5CFAAE898F023A5C938E543 +:100410009185C9B003C6CA38A5C7E59185C7B0089C +:10042000C6C89004B1C991C788D0F9B1C991C7C6EF +:10043000CAC6C8CAD0F2600A693EB0408591BAE423 +:1004400091903960C4A39028D004C5A2902248A2FC +:10045000099848B5C6CA10FA2050D6A2F76895D0B8 +:10046000E830FA68A868C4A39006D010C5A2B00C02 +:1004700060ADC00229FE8DC0024CA8C4A24D202F41 +:10048000C8462E20F0CB20D7CCBDA8C248297F205B +:10049000D9CCE86810F32026C7A9A6A0C320B0CC09 +:1004A000A4A9C8F00320BAE04E5202462E4EF20232 +:1004B000A9B2A0C3201A00202FC82092C586E984C3 +:1004C000EA20E200AAF0F0A2FF86A9900620FAC571 +:1004D0004C0CC920E2CA20FAC5842620B3C6904439 +:1004E000A001B1CE8592A59C8591A5CF8594A5CE7E +:1004F00088F1CE18659C859C8593A59D69FF859D97 +:10050000E5CFAA38A5CEE59CA8B003E8C694186547 +:10051000919003C69218B1919193C8D0F9E692E6F2 +:1005200094CAD0F22008C7205FC5A535F08918A568 +:100530009C85C9652685C7A49D84CA9001C884C8C6 +:1005400020F4C3A5A0A4A1859C849DA42688B931CC +:100550000091CE8810F82008C7205FC54CB7C4A50D +:100560009AA49B8591849218A001B191F01DA004DA +:10057000C8B191D0FBC8986591AAA0009191A592AD +:100580006900C891918691859290DD60CA1005201E +:10059000F0CBA20020E8C5C901D00DAC6902B112B0 +:1005A000297FC920B002A9094820D9CC68C97FF0A9 +:1005B000DBC90DF030C903F028C918F00BC9209031 +:1005C000D39535E8E04F9007A95C20D9CCD0C0E0A6 +:1005D0004C90C18A489848209FFA68A868AA4C9411 +:1005E000C5E617A2004CEACB203B0210FBC90FD096 +:1005F0000848A52E49FF852E6860A6E9A004842A34 +:10060000B500C920F0418525C922F05F242A703742 +:10061000C93FD004A9BAD02FC9309004C93C902753 +:1006200084E0A0008426A9E98518A9C0851986E977 +:10063000CAE8E618D002E619B50038F118F0F2C998 +:1006400080D02F0526A4E0E8C8993000B93000F02A +:100650003938E93AF004C957D002852A38E963D01D +:100660009F8525B500F0E0C525F0DCC8993000E88D +:10067000D0F1A6E9E626B11808E618D002E6192856 +:1006800010F4B118D0B2B50010BB993200A934856E +:10069000E96020E2CA20B3C690166EF202206CC751 +:1006A0004EF20220F0CBA90B20D9CC68684CB7C41D +:1006B0004C23CAA900851D851EA59AA69BA001856D +:1006C000CE86CFB1CEF025C8C8E61DD002E61EA565 +:1006D00034D1CE9018F00388D009A53388D1CE90BC +:1006E0000CF00A88B1CEAA88B1CEB0D11860D0FD86 +:1006F000A9004EF402A8919AC8919AA59A18690285 +:10070000859CA59B6900859D203AC7A900D02AA594 +:10071000A6A4A785A284A3A59CA49D859E849F854D +:10072000A084A12052C9A288868568A868A2FE9AE2 +:10073000489848A90085AD852B6018A59A69FF8562 +:10074000E9A59B69FF85EA600820E2CA20B3C628B4 +:10075000F01420E800F015C9CDD09220E200F00698 +:1007600020E2CAF00760A9FF85338534A001B1CE2D +:10077000F04D2062C9C920D00E4EDF02ADDF02105D +:10078000FB2062C94EDF02C8B1CEAAC8B1CEC534C3 +:10079000D004E433F002B02784B84820F0CB6820BE +:1007A000C5E0A920A4B8297F20D9CCC8F011B1CECA +:1007B000D01EA8B1CEAAC8B1CE86CE85CFD0AD2CE2 +:1007C000F20210016020F0CB202FC868684CA8C44A +:1007D00010D638E97FAA84B8A000A9E98518A9C075 +:1007E0008519CAF00DE618D002E619B11810F64CBA +:1007F000E2C7C8B11830AD20D9CC4CF2C72016C81A +:100800004EF20220E8004C48C72016C820E800201D +:10081000ABCB202FC8602CF1023039A5308D5902A6 +:10082000AD58028530386EF102AD56024C44C82CEA +:10083000F1021020A5308D5802AD590285304EF1DD +:1008400002AD5702853138E908B0FB49FFE90618C7 +:100850006531853260A980852B201CCB20C6C3D092 +:10086000058A690FAA9A6868A9092037C4204ECA68 +:10087000189865E948A5EA690048A5A948A5A848C7 +:10088000A9C32067D02006CF2003CFA5D5097F2597 +:10089000D185D1A99EA0C8859184924CC0CFA98151 +:1008A000A0DC207BDE20E800C9CBD00620E20020BF +:1008B00003CF2013DF20B1CFA5B948A5B848A98D33 +:1008C000482062C9A5E9A4EAF00685AC84ADA00081 +:1008D000B1E9D05B4E5202A002B1E918D0034C8AB4 +:1008E000C9C8B1E985A8C8B1E985A99865E985E9CC +:1008F0009002E6EA2CF402101348A95B20FBCCA579 +:10090000A9A6A820C5E0A95D20FBCC6820E20020B4 +:1009100015C94CC1C8F049E9809011C942B0300AEC +:10092000A8B907C048B906C0484CE2004C1CCBC966 +:100930003AF0C1C9C8D00E2C5202101320B1CA4ED1 +:1009400052024CC1C8C927D0062099CA4CC1C84C14 +:1009500070D038A59AE901A49BB0018885B084B114 +:100960006060ADDF0210F9297FA208C903D0F2C987 +:1009700003B00118D043A5E9A4EAF00C85AC84AD1E +:10098000A5A8A4A985AA84AB6868A9BDA0C3A20034 +:100990008EF1028EDF02862E90034C9DC44CA8C4BB +:1009A000D017A2D7A4ADD0034C7EC4A5AC85E984F2 +:1009B000EAA5AAA4AB85A884A9604C36D3D0034C81 +:1009C00008C7200FC74CDCC9A9032037C4A5EA48D3 +:1009D000A5E948A5A948A5A848A99B4820E8002062 +:1009E000E5C94CC1C82053E82051CAA5A9C534B0F7 +:1009F0000B983865E9A6EA9007E8B004A59AA69B8B +:100A000020BDC6901EA5CEE90185E9A5CFE90085E8 +:100A1000EA60D0FDA9FF85B920C6C39AC99BF00B37 +:100A2000A2162CA25A4C7EC44C70D06868C00CF040 +:100A30001985A86885A96885E96885EA204ECA985D +:100A40001865E985E99002E6EA6068686860A23A9C +:100A50002CA2008624A0008425A525A62485248612 +:100A600025B1E9F0E4C525F0E0C8C922D0F3F0E9EA +:100A70002017CF20E800C997F005A9C92067D0A5A5 +:100A8000D0D005209ECAF0B720E800B0034CE5C9DD +:100A900008386E5202284C15C92051CAF0A1A00096 +:100AA000B1E9F00CC8C9C9F0F0C9C8D0F34C3FCACD +:100AB00060A0FFC8B1E9F004C93AD0F74C3FCA4C76 +:100AC00070D020C8D848C99BF004C997D0F1C6D4CB +:100AD000D004684C17C920E20020E2CAC92CF0EE0D +:100AE0006860A20086338634B0F7E92F8524A534E8 +:100AF0008591C919B0D4A5330A26910A2691653388 +:100B00008533A5916534853406332634A5336524B1 +:100B100085339002E63420E2004CE8CA2088D18573 +:100B2000B884B9A9D42067D0A52948A5284820179A +:100B3000CF682A2009CFD01868101220F4DE20A92F +:100B4000D2A000A5D391B8C8A5D491B8604CA9DEB5 +:100B500068A002B1D3C5A39017D00788B1D3C5A2AE +:100B6000900EA4D4C49D9008D00DA5D3C59CB00709 +:100B7000A5D3A4D44C8DCBA000B1D320A3D5A5BFC1 +:100B8000A4C085DE84DF20A4D7A9D0A00085BF84BF +:100B9000C02005D8A000B1BF91B8C8B1BF91B8C8F6 +:100BA000B1BF91B86020B3CC20E800F043F05CC93D +:100BB000C2F07BC9C518F076C92CF050C93BF06B68 +:100BC000C9C6D0034C59CC2017CF242830D720D504 +:100BD000E020B5D5A000B1D3186530C53190032011 +:100BE000F0CB20B3CC20D4CCD0BEA0009435A2341E +:100BF000A53048A90D20D9CC682CF1023004C531AC +:100C0000F009A9008530A90A20D9CC60A5302CF1C3 +:100C100002300438ED530238E908B0FC49FF69019D +:100C2000AA186530C531901F20F0CB4C4BCC082062 +:100C3000C5D8C929D02028900E8AC53190034C36DA +:100C4000D338E5309005AAE8CAD00620E2004CADC2 +:100C5000CB20D4CCD0F24C70D02CF10230F8AE1FA7 +:100C600002F0034CF7EA20C5D8E028B040860C20FB +:100C700065D020C8D8E8E01CB033AD6A024829FE30 +:100C80008D6A02A9002001F8A50C8D69028A8D6881 +:100C900002200CDAA51FA42085128413688D6A0235 +:100CA000A9012001F8A93B2067D04CADCB4CC2D89C +:100CB00020B5D520D0D7AAA000E8CAF010B1912065 +:100CC000D9CCC8C90DD0F3200BCC4CBACC60A90C40 +:100CD0002CA9112CA9202CA93F242E303348C9203F +:100CE000900BA530C531D00320F0CBE630682CF155 +:100CF00002100848203E026829FF608627AA207C4F +:100D0000F7C9209004C97FD005AE69028630A627B6 +:100D100029FF606CF502A9802CA9008DF40260A562 +:100D20002CF0133004A0FFD004A5AEA4AF85A88496 +:100D3000A9A2A84C7EC4A985A0CE20B0CCA5ACA405 +:100D4000AD85E984EA6020D2D4A236A0008436A919 +:100D500040208FCD60462EC922D00B2025D0A93B44 +:100D60002067D020B3CC20D2D4A92C8534A900850B +:100D7000172080CDA535D016A517F0F1184C80C9E5 +:100D800020D7CC20D4CC4C92C5A6B0A4B1A99885CC +:100D90002C86B284B32088D185B884B9A5E9A4EAA9 +:100DA00085BA84BBA6B2A4B386E984EA20E800D061 +:100DB0001D242C500D2078EB10FB8535A234A000AB +:100DC000F008307120D7CC2080CD86E984EA20E27B +:100DD0000024281031242C5009E886E9A900852434 +:100DE000F00C8524C922F007A93A8524A92C18857E +:100DF00025A5E9A4EA69009001C820BBD5200DD93A +:100E00002051CB4C0ECE20E7DFA5292039CB20E89E +:100E100000F007C92CF0034C1FCDA5E9A4EA85B268 +:100E200084B3A5BAA4BB85E984EA20E800F02C20AD +:100E300065D04C95CD204ECAC8AAD012A22AC8B1FE +:100E4000E9F069C8B1E985AEC8B1E9C885AFB1E9D3 +:100E5000AA203FCAE091D0DD4CCECDA5B2A4B3A666 +:100E60002C10034C5CC9A000B1B2F007A974A0CE4D +:100E70004CB0CC603F45585452412049474E4F52E8 +:100E800045440D0A003F5245444F2046524F4D20E5 +:100E900053544152540D0A00D004A000F00320889E +:100EA000D185B884B920C6C3F004A200F0669A8A3E +:100EB000186904486906859368A001207BDEBABDE5 +:100EC000090185D5A5B8A4B92022DB20A9DEA0019F +:100ED000204EDFBA38FD0901F017BD0F0185A8BD0E +:100EE000100185A9BD120185E9BD110185EA4CC13A +:100EF000C88A6911AA9A20E800C92CD0F120E20022 +:100F0000209ECE2017CF18243824283003B0036049 +:100F1000B0FDA2A84C7EC4A6E9D002C6EAC6E9A2EA +:100F20000024488A48A9012037C42000D0A90085A0 +:100F3000BC20E80038E9D39017C903B013C9012ACF +:100F4000490145BCC5BC906185BC20E2004C34CF52 +:100F5000A6BCD02CB07F6907907B6528D0034C6776 +:100F6000D769FF85910A6591A868D9CCC0B06B207C +:100F700006CF482099CF68A4BA1017AAF05AD063B8 +:100F800046288A2AA6E9D002C6EAC6E9A01B85BC83 +:100F9000D0D7D9CCC0B04C90D9B9CEC048B9CDC00B +:100FA0004820ACCFA5BC4C22CF4C70D0A5D5BECC30 +:100FB000C0A8688591688592E691D002E69298482B +:100FC00020F4DEA5D448A5D348A5D248A5D148A58C +:100FD000D0486C9100A0FF68F023C964F00320069C +:100FE000CF84BA684A852D6885D86885D96885DA3E +:100FF0006885DB6885DC6885DD45D585DEA5D06044 +:10100000A900852820E200B0034CE7DF2016D2B00B +:101010006BC92EF0F4C923F0F0C9CDF058C9CCF05B +:10102000E3C922D00FA5E9A4EA69009001C820B560 +:10103000D54C0DD9C9CAD013A018D03B20A9D2A530 +:10104000D449FFA8A5D349FF4C99D4C9C4D0034CB7 +:1010500022D5C9D690034CA0D02062D02017CFA9AA +:10106000292CA9282CA92CA000D1E9D0034CE200FE +:10107000A2104C7EC4A01568684C73CF2088D1851F +:10108000D384D4A628F005A20086DF60A629100D1F +:10109000A000B1D3AAC8B1D3A88A4C99D44C7BDEA6 +:1010A0000A48AA20E200E0DB9024E0E790232062D7 +:1010B000D02017CF2065D02008CF68AAA5D448A596 +:1010C000D3488A4820C8D868A88A484CD3D0205929 +:1010D000D068A8B9DEBF85C4B9DFBF85C520C3000D +:1010E0004C06CFA0FF2CA000842620A9D2A5D34572 +:1010F000268524A5D44526852520D5DE20A9D2A580 +:10110000D4452625254526A8A5D3452625244526AC +:101110004C99D42009CFB013A5DD097F25D985D9F5 +:10112000A9D8A000204CDFAA4C5ED1A9008528C612 +:10113000BC20D0D785D086D184D2A5DBA4DC20D436 +:10114000D786DB84DCAA38E5D0F008A9019004A694 +:10115000D0A9FF85D5A0FFE8C8CAD007A6D5300F13 +:1011600018900CB1DBD1D1F0EFA2FFB002A201E8E0 +:101170008A2A252DF002A9FF4C24DF2065D0AA2061 +:101180008DD120E800D0F460A20020E800862785F9 +:10119000B420E8002016D2B0034C70D0A2008628FC +:1011A000862920E20090052016D2900BAA20E200AA +:1011B00090FB2016D2B0F6C924D006A9FF8528D00E +:1011C00010C925D013A52B30D0A980852905B48559 +:1011D000B48A0980AA20E20086B538052BE928D018 +:1011E000034CBBD2242B70F9A900852BA59CA69D8E +:1011F000A00086CF85CEE49FD004C59EF024A5B480 +:10120000D1CED008A5B5C8D1CEF06C8818A5CE69CE +:101210000790E1E8D0DCC9419007E95B38E9A5B067 +:1012200000606848C97ED00DBABD0201C9D0D005A2 +:10123000A907A0E260A59EA49F85CE84CFA5A0A407 +:10124000A185C984CA1869079001C885C784C820C8 +:10125000F4C3A5C7A4C8C8859E849FA000A5B49167 +:10126000CEC8A5B591CEA900C891CEC891CEC891DF +:10127000CEC891CEC891CEA5CE186902A4CF900158 +:10128000C885B684B760A5260A690565CEA4CF9047 +:1012900001C885C784C860908000000020E200205B +:1012A00017CF2006CFA5D5300DA5D0C9909009A99C +:1012B00097A0D2204CDFD07E4C8CDFA52BD047A549 +:1012C00027052948A52848A0009848A5B548A5B4F1 +:1012D00048209CD26885B46885B568A8BABD02016B +:1012E00048BD010148A5D39D0201A5D49D0101C8B7 +:1012F00020E800C92CF0D28426205FD068852868B9 +:101300008529297F8527A69EA59F86CE85CFC5A145 +:10131000D004E4A0F03FA000B1CEC8C5B4D006A56B +:10132000B5D1CEF016C8B1CE1865CEAAC8B1CE657B +:10133000CF90D7A26B2CA2354C7EC4A278A527D023 +:10134000F7A52BF00238602086D2A526A004D1CEC6 +:10135000D0E14CEBD3A52BF008203DE9A22A4C7E2E +:10136000C42086D22044C4A900A885E1A205A5B462 +:1013700091CE1001CAC8A5B591CE1002CACA86E0A6 +:10138000A526C8C8C891CEA20BA90024275008687A +:10139000186901AA686900C891CEC88A91CE204D0B +:1013A000D486E085E1A491C626D0DC65C8B05D8511 +:1013B000C8A88A65C79003C8F0522044C485A08499 +:1013C000A1A900E6E1A4E0F0058891C7D0FBC6C85A +:1013D000C6E1D0F5E6C838A5A0E5CEA00291CEA51D +:1013E000A1C8E5CF91CEA527D062C8B1CE8526A9E8 +:1013F0000085E085E1C868AA85D36885D4D1CE9000 +:101400000ED006C88AD1CE90074C33D34C7CC4C8CA +:10141000A5E105E018F00A204DD48A65D3AA98A466 +:101420009165D486E0C626D0CA85E1A205A5B41090 +:1014300001CAA5B51002CACA8697A9002056D48A47 +:1014400065C785B69865C885B7A8A5B6608491B10B +:10145000CE859788B1CE8598A91085CCA200A00032 +:101460008A0AAA982AA8B0A406E026E1900B188A56 +:101470006597AA986598A8B093C6CCD0E360A528D4 +:10148000F00320D0D72050D638A5A2E5A0A8A5A368 +:10149000E5A1A20086284C40DFA200862885D184E1 +:1014A000D2A2904C2CDF20CBD88AF008AC58022C6A +:1014B000F1021002A430A900F0DFC9D9D02120E246 +:1014C00000A9D42067D02053E8A533A43485228412 +:1014D0002360A6A9E8D0FAA2952CA2E54C7EC420F0 +:1014E0000DD520D2D42062D0A980852B2088D12090 +:1014F00006CF205FD0A9D42067D048A5B748A5B6AD +:1015000048A5EA48A5E948203CCA4C7DD5A9C42095 +:1015100067D00980A280862B208FD185BD84BE4CE8 +:1015200006CF200DD5A5BE48A5BD482059D0200620 +:10153000CF6885BD6885BEA002B1BD85B6AAC8B119 +:10154000BDF09785B7C8B1B6488810FAA4B720ADEA +:10155000DEA5EA48A5E948B1BD85E9C8B1BD85EA7F +:10156000A5B748A5B6482003CF6885BD6885BE20CD +:10157000E800F0034C70D06885E96885EAA000684F +:1015800091BD68C891BD68C891BD68C891BD68C863 +:1015900091BD602006CFA00020D7E06868A9FFA019 +:1015A00000F012A6D3A4D486BF84C0201ED686D154 +:1015B00084D285D060A2228624862585DE84DF85BC +:1015C000D184D2A0FFC8B1DEF00CC524F004C5253B +:1015D000D0F3C922F0011884D09865DE85E0A6DF3B +:1015E0009001E886E1A5DFD00B9820A3D5A6DEA464 +:1015F000DF20B2D7A685E091D005A2C44C7EC4A559 +:10160000D09500A5D19501A5D29502A00086D384DE +:10161000D484DF8884288686E8E8E8868560462AC0 +:101620004849FF3865A2A4A3B00188C4A19011D095 +:1016300004C5A0900B85A284A385A484A5AA686094 +:10164000A24DA52A30B62050D6A980852A68D0D0D0 +:10165000A6A6A5A786A285A3A00084BE84BDA5A03A +:10166000A6A185CE86CFA988A20085918692C58540 +:10167000F00520F1D6F0F7A90785C2A59CA69D85A7 +:10168000918692E49FD004C59EF00520E7D6F0F342 +:1016900085C786C8A90385C2A5C7A6C8E4A1D00787 +:1016A000C5A0D0034C30D785918692A000B191AAF5 +:1016B000C8B19108C8B19165C785C7C8B19165C85F +:1016C00085C82810D38A30D0C8B191A0000A690516 +:1016D000659185919002E692A692E4C8D004C5C7B0 +:1016E000F0BA20F1D6F0F3B1913035C8B191103095 +:1016F000C8B191F02BC8B191AAC8B191C5A3900609 +:10170000D01EE4A2B01AC5CF9016D004E4CE90103B +:1017100086CE85CFA591A69285BD86BEA5C285C47D +:10172000A5C218659185919002E692A692A00060EC +:10173000A5BE05BDF0F5A5C429044AA885C4B1BD60 +:1017400065CE85C9A5CF690085CAA5A2A6A385C710 +:1017500086C820FBC3A4C4C8A5C791BDAAE6C8A576 +:10176000C8C891BD4C54D6A5D448A5D3482000D0B4 +:101770002008CF6885DE6885DFA000B1DE1871D350 +:101780009005A2B54C7EC420A3D520A4D7A5BFA4A4 +:10179000C020D4D720B6D7A5DEA4DF20D4D720F42C +:1017A000D54C31CFA000B1DE48C8B1DEAAC8B1DE49 +:1017B000A86886918492A8F00A4888B19191A4986B +:1017C000D0F8681865A485A49002E6A5602008CF2B +:1017D000A5D3A4D4859184922005D808A000B19106 +:1017E00048C8B191AAC8B191A86828D013C4A3D0A1 +:1017F0000FE4A2D00B481865A285A29002E6A36868 +:101800008691849260C487D00CC586D0088585E90E +:10181000038586A0006020CBD88A48A90120ABD5DB +:1018200068A00091D168684CF4D5208BD8D1BF98BE +:101830009004B1BFAA98488A4820ABD5A5BFA4C0E0 +:1018400020D4D768A86818659185919002E692988F +:1018500020B6D74CF4D5208BD818F1BF49FF4C30B7 +:10186000D8A9FF85D420E800C929F0062065D0203A +:10187000C8D8208BD8F04BCA8A4818A200F1BFB054 +:10188000B649FFC5D490B1A5D4B0AD205FD068A84B +:101890006885C4686868AA6885BF6885C0A5C448AB +:1018A0009848A0008A6020ACD84CB6D420CDD7A2EE +:1018B000008628A86020ACD8F008A000B191A84C00 +:1018C000B6D44C36D320E2002003CF20A2D2A6D338 +:1018D000D0F0A6D44CE80020ACD8D0034CB2DBA6A4 +:1018E000E9A4EA86E084E1A69186E91865918593EA +:1018F000A69286EA9001E88694A000B19348A900D8 +:10190000919320E80020E7DF68A0009193A6E0A46F +:10191000E186E984EA602003CF2022D92065D04CFB +:10192000C8D8A5D5309CA5D0C991B096208CDFA58C +:10193000D3A4D48433853460A53448A53348202209 +:10194000D9A000B133A86885336885344CB6D4205B +:1019500016D98AA0009133602003CF2022D9A43366 +:10196000A634A9024CC9EE2053E8A533A434851D42 +:10197000841E2065D02053E8A001B93300911D8852 +:1019800010F8602022D9A001B1334888B133A8688B +:101990004C40DF484A4A4A4A209CD968290F0930FE +:1019A000C93A90026906C930D004A42FF006852FE9 +:1019B0009D0001E8602022D9A200862FA92385FF7F +:1019C000A5342093D9A5332093D98AD006A9309D78 +:1019D0000001E8A9009D00014C9BD54C70D020214E +:1019E000EC20C8D88AF006CAD0F1A9092CA908A20F +:1019F000108EF802A21B488A200CDAADF802A0274C +:101A0000911F88D0FB68911FCAD0EB602031F7840A +:101A10002018698048851FA9BB6520852068604C17 +:101A2000C2D820F6DA20C8D8E028B0F38EF8022019 +:101A300065D020C8D8E01BB0E6E88A200CDA602028 +:101A400062D02022DA205FD0ACF802B11FA84CB6D9 +:101A5000D42022DA2065D02017CF2428101D20D0D2 +:101A6000D7AA18ADF802651F9002E620851FA000D6 +:101A7000E8CAF010B191911FC8D0F620CBD88AAC3B +:101A8000F802911F60D017A9032037C4A5EA48A522 +:101A9000E948A5A948A5A848A98B484CC1C84C70DD +:101AA000D0A9FF85B920C6C39AC98BF005A2F54C11 +:101AB0007EC4C010D00584D098D00620E80020173E +:101AC000CF68A5D0F00568686868606885A86885F3 +:101AD000A96885E96885EA4C8CDA2078EB0848101B +:101AE00003A9012CA90020ABD568281004A00091FF +:101AF000D168684CF4D5ADC0022901F005A2A34C11 +:101B00007EC46060A905A0E24C22DB2051DDA5D592 +:101B100049FF85D545DD85DEA5D04C25DB2054DC8D +:101B2000903C2051DDD0034CD5DEA6DF86C5A2D87F +:101B3000A5D8A8F0CE38E5D0F024901284D0A4DD4A +:101B400084D549FF6900A00084C5A2D0D004A000BC +:101B500084DFC9F930C7A8A5DF5601206BDC24DE7D +:101B60001057A0D0E0D8F002A0D83849FF65C5854D +:101B7000DFB90400F50485D4B90300F50385D3B9B2 +:101B80000200F50285D2B90100F50185D1B003202C +:101B900002DCA0009818A6D1D04AA6D286D1A6D33E +:101BA00086D2A6D486D3A6DF86D484DF6908C92866 +:101BB000D0E4A90085D085D56065C585DFA5D4654D +:101BC000DC85D4A5D365DB85D3A5D265DA85D2A51E +:101BD000D165D985D14CF1DB690106DF26D426D346 +:101BE00026D226D110F238E5D0B0C749FF69018569 +:101BF000D0900EE6D0F04266D166D266D366D46647 +:101C0000DF60A5D549FF85D5A5D149FF85D1A5D2EE +:101C100049FF85D2A5D349FF85D3A5D449FF85D4F3 +:101C2000A5DF49FF85DFE6DFD00EE6D4D00AE6D394 +:101C3000D006E6D2D002E6D160A2454C7EC4A29482 +:101C4000B40484DFB4039404B4029403B401940292 +:101C5000A4D79401690830E8F0E6E908A8A5DFB048 +:101C60001416019002F6017601760176027603766B +:101C7000046AC8D0EC186082135D8DDE82490FDAE9 +:101C80009E8100000000037F5E56CB7980139B0B82 +:101C90006480763893168238AA3B20803504F3346A +:101CA000813504F334808000000080317217F82001 +:101CB00013DFF00210034C36D3A5D0E97F48A9808A +:101CC00085D0A99BA0DC2022DBA9A0A0DC20E4DD3C +:101CD000A981A0DC200BDBA986A0DC20FDE2A9A560 +:101CE000A0DC2022DB682076E0A9AAA0DC2051DD60 +:101CF000D0034C50DD207CDDA90085958596859725 +:101D00008598A5DF201EDDA5D4201EDDA5D3201ECD +:101D1000DDA5D2201EDDA5D12023DD4C64DED0035D +:101D20004C3EDC4A0980A8901918A59865DC859876 +:101D3000A59765DB8597A59665DA8596A59565D9FE +:101D40008595669566966697669866DF984AD0D6BA +:101D50006085918492A004B19185DC88B19185DB86 +:101D600088B19185DA88B19185DD45D585DEA5DD1F +:101D7000098085D988B19185D8A5D060A5D8F01FF4 +:101D80001865D09004301D182C1014698085D0D0AF +:101D9000034CB6DBA5DE85D560A5D549FF300568C7 +:101DA000684CB2DB4C39DC20E5DEAAF01018690281 +:101DB000B0F2A20086DE2032DBE6D0F0E7608420BD +:101DC00000000020E5DEA9BEA0DDA20086DE207BAB +:101DD000DE4CE7DD20AFDC20E5DEA977A0DC207B50 +:101DE000DE4CE7DD2051DDF07620F4DEA90038E599 +:101DF000D085D0207CDDE6D0F0AAA2FCA901A4D930 +:101E0000C4D1D010A4DAC4D2D00AA4DBC4D3D00485 +:101E1000A4DCC4D4082A9009E89598F0321034A9BB +:101E20000128B00E06DC26DB26DA26D9B0E630CE55 +:101E300010E2A8A5DCE5D485DCA5DBE5D385DBA530 +:101E4000DAE5D285DAA5D9E5D185D9984C24DEA981 +:101E500040D0CE0A0A0A0A0A0A85DF284C64DEA2AC +:101E6000854C7EC4A59585D1A59685D2A59785D3A9 +:101E7000A59885D44C92DBA97CA0DC85918492A0A6 +:101E800004B19185D488B19185D388B19185D288E8 +:101E9000B19185D5098085D188B19185D084DF60E5 +:101EA000A2CB2CA2C6A000F004A6B8A4B920F4DEF0 +:101EB00086918492A004A5D4919188A5D39191880C +:101EC000A5D2919188A5D5097F25D1919188A5D0DA +:101ED000919184DF60A5DD85D5A205B5D795CFCAE0 +:101EE000D0F986DF6020F4DEA206B5CF95D7CAD040 +:101EF000F986DF60A5D0F0FB06DF90F7202ADCD062 +:101F0000F24CF3DB20A9D246D4B004A900F015A905 +:101F1000FF3011A5D0F009A5D52AA9FFB002A9016B +:101F2000602013DF85D1A90085D2A288A5D149FF01 +:101F30002AA90085D485D386D085DF85D54C8DDB55 +:101F400085D184D2A29038B0E846D5608593849438 +:101F5000A000B193C8AAF0BBB19345D530B9E4D085 +:101F6000D021B1930980C5D1D019C8B193C5D2D0C1 +:101F700012C8B193C5D3D00BC8A97FC5DFB193E513 +:101F8000D4F028A5D5900249FF4C19DFA5D0F04A1E +:101F900038E9A024D51009AAA9FF85D72008DC8A32 +:101FA000A2D0C9F910062054DC84D760A8A5D52991 +:101FB0008046D105D185D1206BDC84D760A5D0C9FE +:101FC000A0B020208CDF84DFA5D584D549802AA944 +:101FD000A085D0A5D485244C8DDB85D185D285D331 +:101FE00085D4A8604C81E9A000A20A94CCCA10FB59 +:101FF0009013C923F0EEC92DD00486D6F004C92B66 +:10200000D00520E200905BC92EF02EC945D03020CB +:10201000E2009017C9CDF00EC92DF00AC9CCF00826 +:10202000C92BF004D00766CF20E200905C24CF10CB +:102030000EA90038E5CD4C41E066CE24CE50C3A5B4 +:10204000CD38E5CC85CDF012100920C3DDE6CDD02A +:10205000F9F00720A7DDC6CDD0F9A5D63001604C38 +:1020600071E24824CE1002E6CC20A7DD6838E930C2 +:102070002076E04C02E04820E5DE682024DFA5DD84 +:1020800045D585DEA6D04C25DBA5CDC90A9009A98A +:102090006424CF30114C39DC0A0A1865CD0A18A027 +:1020A0000071E938E93085CD4C28E09B3EBC1FFD2E +:1020B0009E6E6B27FD9E6E6B2800A9ADA0C320D23B +:1020C000E0A5A9A6A885D186D2A290382031DF202C +:1020D000D5E04CB0CCA001A92024D51002A92D999F +:1020E000FF0085D584E0C8A930A6D0D0034CF8E124 +:1020F000A900E080F002B009A9B5A0E020EDDCA9BC +:10210000F785CCA9B0A0E0204CDFF01E1012A9ABDF +:10211000A0E0204CDFF002100E20A7DDC6CCD0EEF0 +:1021200020C3DDE6CCD0DC2004DB208CDFA201A5BF +:10213000CC18690A3009C90BB00669FFAAA9023890 +:10214000E90285CD86CC8AF0021013A4E0A92EC83E +:1021500099FF008AF006A930C899FF0084E0A0002A +:10216000A280A5D418790DE285D4A5D3790CE28597 +:10217000D3A5D2790BE285D2A5D1790AE285D1E83F +:10218000B00410DE300230DA8A900449FF690A692F +:102190002FC8C8C8C884B6A4E0C8AA297F99FF0080 +:1021A000C6CCD006A92EC899FF0084E0A4B68A49FF +:1021B000FF2980AAC024D0AAA4E0B9FF0088C930B2 +:1021C000F0F8C92EF001C8A92BA6CDF02E1008A951 +:1021D0000038E5CDAAA92D990101A9459900018AE8 +:1021E000A22F38E8E90AB0FB693A9903018A9902FB +:1021F00001A900990401F00899FF00A900990001C4 +:10220000A900A001608000000000FA0A1F000098E9 +:102210009680FFF0BDC0000186A0FFFFD8F000004F +:1022200003E8FFFFFF9C0000000AFFFFFFFF20E51F +:10223000DEA905A0E2207BDEF070A5D8D0034CB467 +:10224000DBA2BDA00020ADDEA5DD100F20BDDFA903 +:10225000BDA000204CDFD00398A42420D7DE9848EE +:1022600020AFDCA9BDA00020EDDC20AAE2684A90E6 +:102270000AA5D0F006A5D549FF85D5608138AA3BCF +:1022800029077134583E5674167EB31B772FEEE340 +:10229000857A1D841C2A7C6359580A7E75FDE7C621 +:1022A00080317218108100000000A97CA0E220EDAE +:1022B000DCA5DF6950900320FCDE85C520E8DEA5A3 +:1022C000D0C98890032099DD20BDDFA5241869813D +:1022D000F0F338E90148A205B5D8B4D095D094D828 +:1022E000CA10F5A5C585DF200EDB2071E2A981A00B +:1022F000E22013E3A90085DE68207EDD6085E084AE +:10230000E120A3DEA9C620EDDC2017E3A9C6A000CA +:102310004CEDDC85E084E120A0DEB1E085D6A4E0D0 +:10232000C898D002E6E185E0A4E120EDDCA5E0A4B8 +:10233000E11869059001C885E084E12022DBA9CB82 +:10234000A000C6D6D0E4609835447A6828B146200B +:1023500013DFAA3018A9FAA000207BDE8AF0E7A9D3 +:1023600047A0E320EDDCA94BA0E32022DBA6D4A507 +:10237000D185D486D1A90085D5A5D085DFA9808552 +:10238000D02092DBA2FAA0004CADDEA907A0E42089 +:1023900022DB20E5DEA90CA0E4A6DD20CCDD20E5D3 +:1023A000DE20BDDFA90085DE200EDBA911A0E42020 +:1023B0000BDBA5D548100D2004DBA5D53009A52DD4 +:1023C00049FF852D2071E2A911A0E42022DB6810CD +:1023D000032071E2A916A0E44CFDE220A3DEA900CF +:1023E000852D2092E3A2BDA0002088E3A9C6A0000D +:1023F000207BDEA90085D5A52D2003E4A9BDA00082 +:102400004CE4DD484CC4E381490FDAA283490FDA7A +:10241000A27F000000000584E61A2D1B862807FB1A +:10242000F88799688901872335DFE186A55DE7286C +:1024300083490FDAA2A154468F138F524389CDA549 +:10244000D54810032071E2A5D048C9819007A98121 +:10245000A0DC20E4DDA96FA0E420FDE268C9819042 +:1024600007A907A0E4200BDB6810034C71E2600BA6 +:1024700076B383BDD3791EF4A6F57B83FCB0107CC4 +:102480000C1F67CA7CDE53CBC17D1464704C7DB7D2 +:10249000EA517A7D6330887E7E9244993A7E4CCCB4 +:1024A00091C77FAAAAAA1381000000002035E72067 +:1024B000C9E6C924D0F98EB102A20920C9E69DA7B8 +:1024C00002CAD0F720C9E6F00AE010B0F79D9302E7 +:1024D000E8D0F19D93022094E52090E78AD0CD606A +:1024E000ADA902ACAA0285338434A00020C9E6AEAF +:1024F0005B02D00591334C05E5D133F008EE5C0268 +:10250000D003EE5D02206CE590E260100753656138 +:10251000726368696E67202E2E0010074C6F61642D +:10252000696E67202E2E000A0D4572726F7273203D +:10253000666F756E640D0A001007466F756E642035 +:102540002E2E001007566572696679696E67202E17 +:102550002E0020566572696679206572726F7273FB +:102560002064657465637465640D0A00A533CDABA2 +:1025700002A534EDAC02E633D002E63460A90BA02C +:10258000E520EAE560A945A0E620EAE5A97FA002EA +:1025900020B6E560A938A0E54CABE5AD5B02D007FD +:1025A000A91AA0E54CABE5A943A0E520EAE5A9936B +:1025B000A00220B6E5602065F8E8A0008C5F02ADBF +:1025C000AE02F013C82CAE02300DC82CAF0230079B +:1025D000C82CB0023001C8B9E5E58D5E02A95EA045 +:1025E000022065F860424353495220F5E5A20020DD +:1025F00065F8E8E86048AD1F02D00AA222A9109D44 +:1026000080BBCA10FA6860205AE7A924205EE6A2BF +:1026100009BDA702205EE6CAD0F7BD7F02F0062002 +:102620005EE6E8D0F5205EE6A200CAD0FD60ADA966 +:1026300002ACAA0285338434A000B133205EE620C8 +:102640006CE590F6601007536176696E67202E2E58 +:1026500000ADB102F007A927A0E520B0CC60852F1E +:102660008A48984820C0E618A009A900F006462F1D +:1026700008690028208BE688D0F449014AA004208C +:102680008BE63888D0F968A868AA604808AD4D0282 +:10269000D00A3820B2E62820B2E6686020B2E6A26E +:1026A0000F28B002A20720ABE6686020C0E6CAD0BF +:1026B000FA60A9D0A200B0020AE88D06038E0703D3 +:1026C000AD04032C0D0350FB6098488A48201CE79A +:1026D000201CE7B0FB20FFE6B016A900A00820FCF4 +:1026E000E608662F28690088D0F420FCE6E9004A55 +:1026F00090032EB10268AA68A8A52F60201CE748A5 +:10270000AD4D02F015201CE7A2029002A206A9001E +:10271000201CE76900CAD0F8C904686048AD00030E +:10272000AD0D032910F0F9AD090348A9FF8D090388 +:1027300068C9FE686020FCE6662FA916C52FD0F593 +:10274000AD4D02F008201CE7201CE7B0FBA20320DF +:10275000C9E6C916D0DFCAD0F660A202A003A91646 +:10276000205EE688D0F8CAD0F560201AEEA0067880 +:10277000BE82E7B989E79D00038810F4A9408D0067 +:10278000036005040B020C080E00D0C0FF10F47F9C +:10279000A000A200AD7F02F015B97F02D99302F02C +:1027A00001E8999302C8C011B0044868D0EB604CAE +:1027B00070D0A9008D4D028DAD028DAE028D5B02F1 +:1027C0008D5A028D5C028D5D028DB1022017CF24DF +:1027D0002810DC20D0D7AAA000E8CAF00AB191994D +:1027E0007F02C8C010D0F3A900997F0220E800F052 +:1027F00061C92CD0BA20E200F058C92CF0F7C9C743 +:10280000D0058DAD02B0EEC953D0058D4D02B0E5B7 +:10281000C956D0058D5B02B0DCC94AD0058D5A027D +:10282000B0D3C941F004C945D047850E20E200A2CB +:10283000808EAE022053E8A533A434A60EE041D02A +:10284000088DA9028CAA02B0A38DAB028CAC024CFD +:10285000ECE7602003CF2022D918600820B2E7AD52 +:10286000AD020DAE02D00AAD5A02F008AD5B02F027 +:10287000034C70D0206AE7207DE520ACE42CAE024A +:1028800070F8AD5A02F02CADAE02D0EEA59CA49D1E +:1028900038E902B001888DA9028CAA0238E59AAA0B +:1028A00098E59BA8188A6DAB028DAB02986DAC02BF +:1028B0008DAC02209BE520E0E4203DE928AD5B02E1 +:1028C000F011AE5C02AD5D0220C5E0A952A0E5208A +:1028D000B0CC602051E6ADAE02F00EADAD02F00816 +:1028E000ADB102EAEA6CA90260AEAB02ADAC028601 +:1028F0009C859D205FC5ADAD02F008ADB102EAEA4E +:102900004C08C72008C74CA8C4A59AA49B8DA9024F +:102910008CAA02A59CA49D8DAB028CAC020820B2AF +:10292000E7AD5A020D5B02F0034C70D0206AE7203D +:1029300085E52007E6202EE6203DE9286020F5E524 +:1029400020AAF94CE0ED2053E86C3300A200860C7D +:10295000860DF013A2030A0A0A0A0A260C260D9015 +:10296000034C39DCCA10F320E200C980B00E0980A4 +:1029700049B0C90A90DE6988C9FAB0D8A50DA40C7F +:1029800060204CE94C40DF082057EAA9408DAE0298 +:10299000A5288DAF02A5298DB0022085E52007E688 +:1029A000209EEA202EE624281022A000B10CF01769 +:1029B000AAA002B10C99D00088D0F8E8CAF008B1FA +:1029C000D1205EE6C8D0F52042EA90DE203DE9281D +:1029D000602050D6082057EA207DE520ACE42CAEDC +:1029E0000250F8ADAF024528D0F1ADB0024529D074 +:1029F000EA209BE5A002B1CECDA902C8B1CEEDAAD6 +:102A000002B006203DE94C7CC4209EEA20E0E4248C +:102A1000281027A000B10CF01C20ABD5A000AAE81C +:102A2000CAF00820C9E691D1C8D0F5A002B9D000FB +:102A3000910C88D0F82042EA90D9203DE92051E657 +:102A4000286018A903650C850C9002E60DA8A50D59 +:102A5000CCAB02EDAC0260A940852B2088D1A90047 +:102A6000852BA003B1CE8DAA0288B1CE8DA902D04C +:102A700003CEAA02CEA9022065D0A52948A52848E0 +:102A800020B2E7688528688529AD5B020DAD020D8F +:102A9000AE020D5A02F0034C70D0206AE76018A510 +:102AA000CE6DA9028DAB02A5CF6DAA028DAC02A09E +:102AB00004B1CE2088D28DA9028CAA02850C840D87 +:102AC000603FFB17FCCFFBC7F0FCF00FF17EF31C5F +:102AD000F167F22CF103F20FF20304040303030283 +:102AE00001030301010000000001010000000000DB +:102AF000ADC0022901D005A2A34C7EC4C04EB003D4 +:102B00004C70D0C066B0F99838E94EA8B9C2EA480E +:102B1000B9C1EA48984AA8B9D9EA48B9E5EA8DC3E3 +:102B200002A9008DF0022003CFADC302D0062022FF +:102B3000D94C3BEBA5D0C990202AD9ACF002A533E3 +:102B400099E102A53499E202C8C88CF00268A8880D +:102B5000F00898482065D04C26EBA9008DE002686B +:102B6000AA68A8A9EB48A96D4898488A4860A901B5 +:102B70002CE002F0F84C36D3ADDF02100B08297FB1 +:102B800048A9008DDF02682860C49DB0023860D07B +:102B900006C59C90F9F0F720B5EB90F2AAADC00203 +:102BA0002902088A28D0E6984838E91CA88A20B566 +:102BB000EB68A88A60CCC2029002F00160CDC1022D +:102BC00060ACC202ADC102D0018838E901602003C7 +:102BD000CF2022D9A533A4342089EB90034C7CC4A8 +:102BE00085A684A74C0FC7AD6002D0F1ADC00248E6 +:102BF0002901F005A2A34C7EC46829FD8DC00220E6 +:102C0000C1EB489818691CA8684CE0EB20C1EB2088 +:102C100089EBB0C948ADC00209028DC002684CE022 +:102C2000EBADC002A82901F0099829FE8DC0022051 +:102C300067F960ADC002482902F0B96809018DC08A +:102C4000022020F9602062D02017CFA53448A53398 +:102C5000482022D9A5338DE102A5348DE202688592 +:102C6000336885342065D02017CFA53448A5334874 +:102C70002022D9A5348DE402A5338DE30268853383 +:102C800068853420C8F1ACE102ADE0022901D00929 +:102C9000ADE2022099D44C5FD04CC2D8E6E9D00214 +:102CA000E6EAAD60EAC920F0F320B9EC602C60EAF6 +:102CB0002C60EA60804FC75258C9C8F00EC927F08F +:102CC0000AC93AB00638E93038E9D060D8A2FF86A0 +:102CD000A99AA9CCA0EC851B841CA94C851A85C394 +:102CE00085218DFB02A936A0D3852284238DFC0289 +:102CF0008CFD028DF5028CF602A21CBD9BEC95E1C9 +:102D0000CAD0F8A90385C28A85D78587852F4885CB +:102D10002E8DF202A2888685A8A9028DC002A9285C +:102D20008D5702A9508D5602A90085308D58028D0D +:102D30005902203EC820CECCA996A0ED20B0CC20D0 +:102D4000F0CBA200A005869A849BA00098919AE6F9 +:102D50009AD002E69B20F0C6A59AA49B2044C420EA +:102D6000F0CBA5A638E59AAAA5A7E59B20C5E0A9C2 +:102D700088A0ED20B0CCA9B0A0CC851B841CA910E4 +:102D80008DF8024CA8C400002042595445532046F7 +:102D90005245450A0D004F52494320455854454E6F +:102DA0004445442042415349432056312E310D0AB7 +:102DB0006020313938332054414E474552494E4501 +:102DC0000D0A0000A200A000C410D004E411F00F0E +:102DD000B10C910EC8D0F1E60DE60FE84CC8ED60DD +:102DE00048208CEEA900A200A00320ABEEA901A010 +:102DF0001920ABEEA9008D7102AD0B03297F0940AC +:102E00008D0B03A9C08D0E03A9108D06038D04033D +:102E1000A9278D07038D0503686048A9408D0E031F +:102E2000686048AD0D032940F0068D0D032034EE97 +:102E3000684C4A02488A489848A000B9720238E9AA +:102E400001997202C8B97202E900997202C8C006FB +:102E5000D0E9A900209DEEC000D010A200A0032060 +:102E6000ABEE2095F48A10038EDF02A901209DEEBF +:102E7000C000D012A200A01920ABEEAD7102490132 +:102E80008D71022001F868A868AA6860489848A077 +:102E900005A9009972028810FA68A86860480AA813 +:102EA00078B97202BE730258A86860488A48984888 +:102EB000BABD03010AA8684878997202BD02019957 +:102EC00073025868A868AA686020ABEE209DEEC027 +:102ED00000D0F9E000D0F560AD13028D14024E125F +:102EE000026E12026E12026048984820DEEE2049FF +:102EF000F02024F068A86860D820D8EE2CE20210F8 +:102F00000AA9FF4DE102AAE88EE1022CE402100AB0 +:102F1000A9FF4DE302AAE88EE302ADE102CDE30290 +:102F2000900FAEE102F009ADE3022040EF2084EF04 +:102F300060AEE302F009ADE1022040EF205CEF60FB +:102F4000850D8E0002A900850C8D010220C8EF209E +:102F5000FAEFA900850E850F8D0002602CE40210A7 +:102F6000062095F04C6AEF2089F020ACEFF00E2C93 +:102F7000E202100620B2F04C7DEF20A1F02016F006 +:102F8000CAD0D9602CE202100620B2F04C92EF2099 +:102F9000A1F020ACEFF00E2CE40210062095F04CCE +:102FA000A5EF2089F02016F0CAD0D960D818A50E58 +:102FB000650C850EA50F650D850F240E100318698D +:102FC00001CD00028D000260488A489848A900851A +:102FD0000E850FA210060C260D260E260FA50E3804 +:102FE000ED0002A8A50FED01029006E60C840E8507 +:102FF0000FCAD0E168A868AA6860480E00022E01D6 +:1030000002AD000238E50EAD0102E50FB006E60C98 +:10301000D002E60D68602C14021810042024F03849 +:103020002E140260A000B1102940F01CAD15022C36 +:103030001202300E700749FF31109110601110918B +:10304000106070045110911060D84898482031F7F2 +:1030500018690085109869A08511A900850D8D015A +:1030600002860CA9068D000220C8EF18A50C651079 +:103070008510A90065118511A920A40EF0044A88C5 +:1030800090FA8D150268A8686018A5106928851047 +:103090009002E6116038A510E9288510B002C6112B +:1030A000604E1502900BA9208D1502E610D002E6A5 +:1030B00011600E15022C1502500DA9018D1502A5E7 +:1030C00010D002C611C61060A904A2E520F8F2B023 +:1030D00028ADE5028D1202A9F0A2E120F8F2B019A4 +:1030E000A9C8A2E320F8F2B010AEE1028E1902AC3A +:1030F000E3028C1A0220E8EE60EEE00260200AF3A0 +:10310000B00AAE1902AC1A0220E8EE60EEE00260EE +:10311000200AF3B00420F8EE60EEE00260AEE202B6 +:10312000D007AEE1028E130260EEE00260AEE20272 +:10313000D03BAEE102E0209034E080B030A902A2A2 +:10314000E320F8F2B027A904A2E520F8F2B01EAD02 +:103150001902C9EBB017AD1A02C9C1B0102071F144 +:10316000209BF1AE1902AC1A022049F060EEE00299 +:1031700060D8ADE5028D120220DEEEADE102850CD5 +:10318000A900850DA203060C260DCAD0F9ADE302F5 +:103190000A0A18699818650D850D60D8A000840F7B +:1031A000B10C850E205DF3260E260EA206260E908B +:1031B000032024F020A1F0CAD0F3206EF32089F080 +:1031C000A40FC8C008D0D760A9F0A2E120F8F2B0DF +:1031D0002FA9C8A2E320F8F2B026AEE1028E1902B0 +:1031E000ACE3028C1A022049F0A000B1102D1502A8 +:1031F000F005A9FF4CF9F1A9008DE1028DE2026012 +:10320000EEE00260A910850CA900850D201CF2607B +:10321000A900850CA901850D201CF260A908A2E176 +:1032200020F8F2B03F205DF3ADE102050C8D020203 +:10323000AE1F02D012A60D9D6B02A9A818650DAA9B +:10324000A0BBA91B4C51F2A90018650DAAA0A0A90A +:10325000C88D000286108411A9018D010220CDF2D3 +:10326000206EF360EEE00260D8ADE3028D0102F063 +:1032700058A000AD190238E9069004C84C76F298BF +:10328000186DE302A8ADE4026900D03DC029B03951 +:10329000ADE602D034ADE1028D0002F02C186D1ABB +:1032A00002A8ADE2026900D020C0C9B01CC0C8D0DD +:1032B00002A0008C1A02ADE5028D020220CDF2AC14 +:1032C0001A02AE19022049F060EEE00260D8AD02A9 +:1032D00002A0009110C8CC0102D0F82089F0CE00E5 +:1032E00002D0EB608D0402BD0102D00ABD0002F0E5 +:1032F00005CD0402900138608D0402BD0102D008A2 +:10330000BD0002CD040290013860A904A2E520F8B6 +:10331000F2B04918ADE1026D19028D0002ADE20272 +:1033200069008D0102A200A9F020F8F2B02E18ADBC +:10333000E3026D1A028D0202ADE40269008D030200 +:10334000A202A9C820F8F2B013ADE5028D1202ADB9 +:1033500000028D1902AD02028D1A021860A5108DAF +:103360001602A5118D1702AD15028D180260AD165B +:10337000028510AD17028511AD18028D150260D8B7 +:10338000ADE202D03DADE102F038AD1902CDE1026F +:103390009030186DE102C9F0B028AD1A02CDE102FB +:1033A0009020186DE102C9C8B018A2E3A90420F862 +:1033B000F2B00FADE3028D120220D8EE20C6F34C1E +:1033C000C5F3EEE00260205DF3AD1A0238EDE102D4 +:1033D000A8AE19022049F0ADE102850F2085F4A9BD +:1033E000808D1B028D1D02A9008D1C02ADE1028D96 +:1033F0001E02A900850F2014F42044F4A50FF00349 +:103400002016F0AD1C02D0EAAD1E02CDE102D0E2E2 +:10341000206EF360AD1D02AE1E022074F4A50C18E0 +:103420006D1B028D1B02AD1C02850C650D8D1C02EF +:10343000C50CF00FB00620A1F04C3FF420B2F0A96B +:1034400001850F60AD1B02AE1C022074F438AD1D67 +:1034500002E50C8D1D02AD1E02850CE50D8D1E02D0 +:10346000C50CF00FB0062089F04C6FF42095F0A940 +:1034700001850F60850C860DA60EA50D2A660D66CA +:103480000CCAD0F660E60FA900850EA9010AE60E67 +:10349000C50F90F96048089848D8AD0802101E2959 +:1034A000878D1002AE0A022061F5CD1002D00ECE3B +:1034B0000E02D033AD4F028D0E024CC6F4AD4E025B +:1034C0008D0E022023F520EFF4AA101D48AD6A02EC +:1034D0002908D00F6848C9A090062014FB4CE3F4DB +:1034E000202AFB684CE9F4A900AA68A8286860AD06 +:1034F0000902A8A900C0A4F004C0A7D0031869401D +:10350000186D0802101C297FAABD78FF2D0C02102F +:103510000338E920297FC0A2D006C9403002291F04 +:10352000098060A9388D0D028D08028D0902A97FDE +:10353000486848AAA9072061F50D0D021012A200E3 +:10354000A020CC0D02D001E89D080268489D0A0227 +:1035500038686A4838AD0D02E9088D0D0210D2684E +:103560006048A90E2090F5682907AA8D110209B8B4 +:103570008D0003A00488D0FDAD00032908D00DCA3A +:103580008A2907AACD1102D0E5A900608A098060C6 +:1035900008788D0F03A88AC007D002094048AD0CF7 +:1035A0000309EE8D0C03291109CC8D0C03AA688D3B +:1035B0000F038A09EC8D0C03291109CC8D0C03280B +:1035C0006008788D0103AD000329EF8D0003AD0085 +:1035D0000309108D000328AD0D032902F0F9AD0D8C +:1035E0000360CFCFCFCFA3CFA6CC0027340F6699EF +:1035F00060CFA7B3CFA8BECFCFCFCFCFA5A5CFA445 +:1036000084CF291FAABDE2F518692F8D6102A90098 +:1036100069F68D6202AD6A024829FE8D6A02682948 +:10362000018D5102A9002001F838A9006C6102CE79 +:103630006902300520D7F7D040A9278D6902AD680F +:1036400002C901F034CE680238A512E9288512B00B +:1036500002C6134CFEF6EE6902A227EC69021019AD +:10366000200DF7AD6802CD7E02F011EE680218A5BC +:1036700012692885129002E6134CFEF6205DF3A233 +:1036800006BD7702950BCAD0F820C4ED206EF3205A +:103690001AF74CFEF6AE7E02AD7A028512AD7B02C1 +:1036A0008513201AF718A512692885129002E613CF +:1036B000CAD0EF200DF7A9018D6802AD7A028512FC +:1036C000AD7B0285134CFEF6200DF78E53024CFEA7 +:1036D000F62A2A2A2A2A2A2A2A4D6A028D6A024CA6 +:1036E000FEF6AD510249018D51024CFEF6AD0C02C1 +:1036F00049808D0C02205AF74CFEF6209FFAAD6AE5 +:10370000020D51028D6A02A9012001F860A2002079 +:10371000DEF7D002E8E88E690260A027A9209112A6 +:103720008810FBA000AD6B029112AD6C02C8911223 +:1037300060A0008C63028D64020A2E63020A2E636D +:1037400002186D64029003EE63020A2E63020A2ED1 +:1037500063020A2E6302AC630260AD0C021007A97B +:1037600070A0F74C6AF7A976A0F7A2232065F8604D +:103770000743415053000720202020004808984864 +:103780008A48D8E013F046E014F042E006F03EAD7F +:103790006A022902F03A8AC9209032AD6A022910E1 +:1037A000F0138A38E9403009291F20E4F7A91BD01B +:1037B0001CA92010F5E07FF008684820E4F74CD001 +:1037C000F7A9082002F6A92020E4F7A9082002F6AC +:1037D00068AA68A8286860AD690229FED005AD6AAC +:1037E0000229206048AC690291122C6A02500BAD8C +:1037F0006902186928A868489112A9092002F66888 +:10380000602D6A024A6A8D6502AC6902B112297F95 +:103810000D6502911260A900850CA9B9850DA9005A +:10382000202DF8A0BA840DA920202DF860A0004812 +:103830002054F8910CC868482052F868482050F885 +:10384000910CC8C000F007681869014C2FF8686037 +:103850004A4A4A4A2903AABD61F8910CC8910CC88A +:10386000600038073F850C840DAD1F02D00DA0000D +:10387000B10CF0079D80BBE8C8D0F5604C7CF74CDC +:1038800078EB4CC1F54C65F84C22EE4CB2F840A2F6 +:10389000FF9A58D8A212BD7CF89D3802CA10F7A929 +:1038A000208D4E02A9048D4F022014FA20B8F84C46 +:1038B000CCEC20B8F84C71C420AAF9A907A240208A +:1038C00090F520E0ED200EF9A9FF8D0C0220C9F93A +:1038D000A2052082F92016F8205AF760488A48A9E4 +:1038E000018D1F02A9BF8D7B028D7902A9688D7A97 +:1038F00002A9908D7802A9038D7E02A9008D7D0218 +:10390000A9508D7C02A20C20380268AA686048A9E0 +:10391000038D6A02A9008D6C02A9178D6B02686085 +:1039200048AD1F02D005A20B2082F9A9FE2D6A0224 +:103930008D6A02A91E8DDFBFA9408D00A0A21720AD +:1039400082F9A9008D19028D1A028510A9A085118E +:10395000A9208D1502A9FF8D130220DCF8A9010D05 +:103960006A028D6A02686048A9FE2D6A028D6A02A9 +:10397000A2112082F920C9F9A9010D6A028D6A02FB +:103980006860A006BD92F9990B00CA88D0F620C4E1 +:10399000ED6078FC00B5000300B400988007009843 +:1039A00000B4800700A001A03F1FA9FF8D0303A959 +:1039B000F78D0203A9B78D0003A9DD8D0C03A97F44 +:1039C0008D0E03A9008D0B0360A91A2007FAA92008 +:1039D000A028997FBB88D0FAA9008D1F02A9BB8DB2 +:1039E0007B028D7902A9A88D7A02A9D08D7802A9CF +:1039F0001B8D7E02A9048D7D02A9108D7C02A20C74 +:103A0000203802205AF7608DDFBFA902A200A00370 +:103A100020C9EE60A0008C60028C20028C0005841E +:103A20000E88840C8C0045AD0005D004A9C0D005DB +:103A3000EE2002A940850FC8A903850DE60CD0022F +:103A4000E60DA50CC50ED006A50DC50FF00FA9AA51 +:103A5000910CD10CD0074A910CD10CF0DF38A50F96 +:103A6000E928850FA50EC50CA50FE50D9009A50C3D +:103A7000A40DEE6002D004A50EA40F85A684A78D28 +:103A8000C1028CC20260087886148415A000B114AB +:103A9000AA98482090F568A8C8C00ED0F12860A266 +:103AA000A7A0FA2086FA60180000000000003E106F +:103AB0000000000F00A2BDA0FA2086FA60000000FE +:103AC0000000000F07101010000800A2D3A0FA2079 +:103AD00086FA600000000000001F07101010001898 +:103AE00000A206A0FB2086FAA900AA8A48A9002005 +:103AF00090F5A200CAD0FD68AAE8E070D0EDA90850 +:103B0000A2002090F560000000000000003E0F00C1 +:103B100000000000A21CA0FB2086FA601F0000002D +:103B20000000003E1000001F0000A232A0FB208613 +:103B3000FA602F0000000000003E1000001F00008F +:103B4000ADE102C901D022A900AEE3022090F5A99F +:103B500001AEE4022090F5ADE502290FD004A210D9 +:103B6000D001AAA9082090F560C902D022A902AE0E +:103B7000E3022090F5A903AEE4022090F5ADE50242 +:103B8000290FD004A210D001AAA9092090F560C97C +:103B900003D022A904AEE3022090F5A905AEE40209 +:103BA0002090F5ADE502290FD004A210D001AAA9FA +:103BB0000A2090F560A906AEE3022090F5ADE1027F +:103BC000C904F093C905F0B5C906F0D7EEE002606C +:103BD000ADE3020A0A0A0DE102493FAAA9072090B3 +:103BE000F518ADE7020A8DE702ADE8022A8DE8027A +:103BF000A90BAEE7022090F5A90CAEE8022090F5E3 +:103C0000ADE5022907A8B910FCAAA90D2090F5601E +:103C1000000004080A0B0C0DA2E1A90420E4F2B094 +:103C200039A2E3A90820F8F2B030A2E5A90D20E4FA +:103C3000F2B027ACE302AEE502BD5EFC8DE402BD4E +:103C40006BFC8DE302ADE7028DE5028830094EE49E +:103C5000026EE3024C4BFC4C40FBEEE002600007BE +:103C6000070606050505040404040300770BA647B0 +:103C7000EC9747FBB37030F4000000000000000038 +:103C800008080808080008001414140000000000C8 +:103C900014143E143E141400081E281C0A3C08008C +:103CA0003032040810260600102828102A241A0092 +:103CB000080808000000000008102020201008005C +:103CC0000804020202040800082A1C081C2A080032 +:103CD0000008083E08080000000000000008081066 +:103CE0000000003E00000000000000000004000092 +:103CF00000020408102000001C22262A32221C0088 +:103D00000818080808081C001C22020408103E00BD +:103D10003E02040C02221C00040C14243E04040085 +:103D20003E203C0202221C000C10203C22221C00DF +:103D30003E020408101010001C22221C22221C002B +:103D40001C22221E020418000000080000080000C7 +:103D500000000800000808100408102010080400E3 +:103D600000003E003E00000010080402040810009D +:103D70001C220408080008001C222A2E2C201E00E9 +:103D8000081422223E2222003C22223C22223C0015 +:103D90001C22202020221C003C22222222223C0025 +:103DA0003E20203C20203E003E20203C20202000C1 +:103DB0001E20202026221E002222223E2222220015 +:103DC0001C08080808081C000202020202221C004B +:103DD00022242830282422002020202020203E00D9 +:103DE00022362A2A222222002222322A26222200B7 +:103DF0001C22222222221C003C22223C20202000C5 +:103E00001C2222222A241A003C22223C282422009E +:103E10001C22201C02221C003E080808080808007A +:103E20002222222222221C002222222222140800E4 +:103E30002222222A2A3622002222140814222200B8 +:103E400022221408080808003E02040810203E0040 +:103E50001E10101010101E00002010080402000098 +:103E60003C04040404043C0008142A080808080060 +:103E70000E1010103C103E000C122D29292D120C92 +:103E800000001C021E221E0020203C2222223C0098 +:103E900000001E2020201E0002021E2222221E00E0 +:103EA00000001C223E201E000C12103C10101000BE +:103EB00000001C22221E021C20203C222222220062 +:103EC0000800180808081C0004000C040404241846 +:103ED00020202224382422001808080808081C0082 +:103EE0000000362A2A2A220000003C222222220038 +:103EF00000001C2222221C0000003C22223C202028 +:103F000000001E22221E020200002E30202020006F +:103F100000001E201C023C0010103C1010120C006F +:103F20000000222222261A00000022222214080069 +:103F3000000022222A2A360000002214081422003F +:103F400000002222221E021C00003E0408103E0037 +:103F50000E18183018180E00080808080808080875 +:103F6000380C0C060C0C38002A152A152A152A15AF +:103F70003F3F3F3F3F3F3F3F37EAEDEB20F5F9380A +:103F8000EEF436392CE9E8EC35F2E23B2EEFE7307F +:103F9000F6E6342D0BF0E52F0000000000000000D5 +:103FA000311BFA00087FE10DF8F1325C0A5DF30085 +:103FB00033E4E327095BF73D264A4D4B2055592A48 +:103FC0004E545E283C49484C2552423A3E4F4729C0 +:103FD0005646245F0B50453F0000000000000000E3 +:103FE000211B5A00087F410D5851407C0A7D530027 +:103FF00023444322097B572BD00147028FF8440208 +:00000001FF diff --git a/Oric Atmos_MiST/rtl/roms/basic11b.rom b/Oric Atmos_MiST/rtl/roms/basic11b.rom new file mode 100644 index 0000000000000000000000000000000000000000..3d1557f7b43839b704693f79a7e26bdb2c34458f GIT binary patch literal 16384 zcmZvD3tUuX`u~}C1{h!l#!EUC>AQpoggT||(q&arbg&~3V7F~|Prt$)x^4B_Ut8Nn zc7JnNmTlS@%?&l%X_`Zv$+4l;%8H@_nL!v1w*)VMCCIbx9@ME)h&jWy!O2D>Fp=?{%EjaFn{nz+)F*RJ-hoalZC^D zN8df<8~*drjYkh2U3M&||9|^?4%hZ=>fPVByKh$CZwHbG69*3*Sau-qo2a`^t+l!vEx<`p#Mt<3K!DJ?8+F3ww#%eR#l z7l!e-YHv}YQp6Yb6s_ai_`>46?v;giVn|V5ZqK@c()_kngaNI#d#4ds|!okeNmiOx~@1}oY!v6 zUz^vyx;Pgtd|qxzb1C3h^MS3zT3FbVcP}Vd*?fPlQj}lNQc}3CplR*8lKd}=_}u;# z>xxVAdhlFZ_|?kd-2E%^i&yZ?MY*M=dBx#X`Fz_7Yi?IjZc$!We!)IqRtm%SQp7M_0_wGP$K~rJZrwyN!tPX<{xp#E0E9qKQ++0-HZOyyaTU&Bh zS8+iTAI`g1Sy9+sk{>S34d<4Ii}LdJt;8Q+*uv+9OG=Bqcjva{mVCLwTI?+fl@_mS zUX=@Ecjn#aEm=_W>bwbZ*df2EfL*GuU=`K8vvb)^&=QgUBGX>MPH zxds1hk1(7KC|pG&Tg3But8;mJ*ScKnV`+ck-Fd~U_`>~DL)PZ4EiCR|SFkc~)%=yT zq%^lQZ*5*d&mFm_th)oGe#zS0(iK50HNRjrEiEjhd|^S$s>0&6>-gMAeMRBgB0jHgMQ*|T zQi?q(%`aHje1()%>k3ws<`;$;B@qdvdBw$r#T?Bqpqw$Gxa`4)pQFYE6zLt1y*s&& z#_-di(S#hzkEA_HLIcr=A2w(;;-14=jS?q)c$jF^xN39xbf3~E(3MT1+x}*b6dDPO zt~#l8q{BB>qh2qCazn14LWu8Ay-S4a*@6Ew(bqKDrba*@}+_0 zqU)n$F6S*m(_79AMc3?crdmDmHP+pGTTPc}(N~@ew#~|z<&v$=h7qxfso4`S2>wQr z`42}U;p>__Yw4oks)bbDNB6fi)O}&i+(7%=#%!juG`&Txb$>|%ZC*L3YUxKq1;u35 z!h$nIehdUGO4%7pFE#Uq5FKts!Jbb4zSp_Zt*H--8>QDp zm((G?Dut^~hs|ZLi?55Dr0wOC;&v=OM+%R;UKh}g?S0i;=5lKHZZy}sT$_T*#nFwU zuVS@S-$H-cEZwaB$qYcDvUIVEEg`L%5i+ZZA?objeDl~)p)*c?00Wf9A>R3U zwYA1d|Hjzv<6mtao$cZH6Z`0G#B@27tmv)M!u&~bp-reAckAp~ySWfmbH#a~RP~o> zSx^2Xv`o>-A1RAM7N;(ByK}yM$j#Z)<#Ew0H;PwRj<=4DniVp7^=>Zbv{^k9s!$fi zqcc+#1v<@w@`KD3oFjFvtwGmT zX{))Mh_6fA$~kd6y|qQ=lq{*%`?lz@za_oy-7dai{~J3ev^eCcsuaOb&p)<;x4`cg zZxGDVRtV5Irca6|1bvk340R?Q@y48Sec*Eb z_+h>L9P&Qpeg(4-Y=Dy>hfgYR+~+Zr$1?;1+C_qvT>_)qMWlzvQ?_H%3so7 zDKxf&YCELf_zm+q#ZLJRcaWVKzOh68z55V-egK4p_9@^chhcQaAg%9^_E@D4t+K-k z{z>EB6Kbru!|r!;_2bIVpex*@e%!2R`RY)xeq5|$4;h%naVHr)k$sMsW?1E)(aUX; zTwBL@{Bx9T4E|Li{_~)kKVIRS7P=!~NvPWs*J#}n+i2y7IX-1y=vMXfP*6$AE(Qo% z-wIS1ADR#1wzQ(eKdIzMTgNrtZ2?V{7_iq10^8+_nHxO%kXAVp(grkUWkrNy1EW}~ z^U9*n{th_Q;QrFXy>gnoGDs>HI<@@vChVs&+q2*6$4Xvml6HvDcaqQhj#y`x1^&m~ zXohM^Zs8AwWG(nBov=#aZj`axtZY9=*m`Km7`>}ilAD(V5^HkG#%oVFpk6K3*+khUj@!f&*v=aB z6{ZR{n@#ZCn(g5#)1WfuN%Lyc#I(wJ_2cR>oc^I;C{;PDj?>v4Y&Tz1W8@HaUQ(18 z`bMkz0U85Zek7#Nd7_wP@K=REu=*z3Pt_0%g;W(>Kg%y`72K29OlX)}l?$kXEE?>y zf>K@RHRbf)9z|#4XTt<=IC!CK^%Q90Di>ES30xRoB&JDAL|5qQK##OIA>D=Fvc=+J z$yK&QToSuDeTlTVEKOVt30Z>q{8%fk>J&e;?~!{Lp_x`G!wTwcSv0;wG22Yj>A3+a zcey#K+x1~k>T!K2@bZ8SlGok*mUFfeSA~MdndI$h+V0dVMyb2`^+24|?d{?QX z`c|*>nYU3Kun$u2epzvI;%D|o8qZ75(5Q6*KKv-IaWk2m5qPu$;aC4cZ`9`OfX$DO0X;VIRbFbd)St41ivXLoMcEokf zH>&YaXBIgDO@d^JH0GQvA?!eZpFdfy@kIg61t9*;Ha%_b3uP)a!YE<1OgI-CYsbcf-bNISfKb|wYd)#Ldw zr2fb9a{8BcVbwwidm^2uL=be%~nsF`HB!cA8?G{*jyX% z*2^_wcIA8azfTDs(-PuG_K$1d^Zq^J>Wp#9b!pi}M*8g6rpqFB)6J=R%To+SMf;R9 zl$K$-5o6-VD#w8?O*M#Vutwn)~Ojs4>{x8vXkeaduC7CVaNOu6pFBPhOGKklQ;T8CW9 zVLse0f$Z9Bla_xV1c`hPH2lUL<^yfQGWhbvxio)u0fMcS@MD+ZRY+GA7p`SqcyTG3 z6dl&4oni!(k*f1>>iVs4VRhE>SaFlht$|_qs3Be>_DUam_t4aXR31QM!Qe+ZKg4U) z*$v4Wv97_S5#@&I&~6RWG~x;9!s_yAzO7hGC|fzr)WjQMoE>vo4vvpDpcMi?L^il~ zTp@c;>>c-TY1V2hgb>DyQ^3$qFg0hq+c_JWd`3u-@4%H%=Bl&xw>1VHg{8C7Egd%RN2b|6^?v1{RTb6Q!DcsQ?D9FP?Kby9c!B)_F6 z)Px16_J+Q4YI(Op|4RX5<;-k3BU{dPbDiVp9p*eH93S^p@Kyf1gY9m&y{9%qje(LL z6lya~My9*q33b<110w(YK!Vi=@`esN(}s>aua5#{N<`mb^F~Wg7_Px*K4=CxylYPeC%(C*WOUmq+Ok1MKA3Rc81l*s?1Ut zf_r34ITXru#*P0hXIu(!g3TIwNilwekTL{gEyuZs1?dg%-^8%JBNF+9?5$=@(*(s9 zdn6oc@dks;cZOx$x1& zoP!8KhNWJMQBp!qXT1EHy9?W)yu`meDBYl}mgdJq46~c7u}ZtG(k?4~y~`%Y}Y{Rv6HWMK^%Um*u)H*n3=gjoL~Ef^f%^EH@^x0+pR8x6o!M% zyOdaIH#jp3p1HX!;-HsxIQM%V&Gy_3DfT=o%~vi+H>e~>pp{)xx?2Zs9^t?4Mw_1g zblj7LQRqRuEpv6^5l;+bh)L5L;faZ~wpI>F>A@fv<4KgcwE0DPn;9n8#)86du-X-- zYkMk(#3NqU-gMJB++`Q?M` zCE}QQoP72m-Pc#G>UZ2rm;onVi_EEmp?>8@kdTOX1_xJK>|G+J+OHRC5|5eZ4EI$5OgOC>VLDt%y;-bXCLd}exkEB|7z+yp-(zQR*cc?11Rr`TZs z6zT&Yq))95}&Y>K};0L+>~`#S>8^ z2wS4_Abu)4+EEAE&DmTHw%~vM2|xm!vwsL7!6b~}^jf%#mCQ4o^A*!Oq9S-wE8$r) z$B}V}dBg*%p*c;}HP2Jd!rE)hcBQ6lKpd(abZW*bk4S?`Vh!BQ+5zt%eQ$rQ2n!wK zX##&FWiuyrZq`U$n+a3{w6T4#%AQeKiF{I}D6Gn|=1=C7dAx5SoN0Q~ISp#V?M!45 zvgox-K6uw_r7X+)*g!Bi%cdx`wbI*_9`P+`+)wQdlDqaz7NW~l9!_*sZfq9S7<&3E z^@1EHe!G4%LX>RGX+GAL`&*-{%k_NEfo?1l=n>}TU}C|%&VOOHQ@9RgVw z1TUCj>aMmZsJJ<%L|mc^9{k4IjmLr@wnhDj;X7OJvfPXzCJP?w4R|m>%`7W5=a?sO zO>>8H7EXTHX<}MHa@B4W8!A7Qz7U(FFOUUpUtQ@5s0Y^rZ43yUGC zqns04B~R^JjCy+cOE1n*i>tvm8kBIj8~D<%qNWNi1T$RXfK434Y6i?tbvt7`yP2H6 z)r%N_g#$1t^!@!3+bNXJ_3}4D8tMnE*kjNt zs)s4vOyoi$&OhL&ceYkr%^vRbXMy+gC!2em^-@p3&onZ;nC5!kZyqv z5$KLS{{0@>zMpA@I#yL9tE)pRVi0C1kQnfE)pjdtZ4VC}Un>o7j9z+WkB z4%ll)Do2o(Sf#~Q3<8|Rpn9=QT*644)n5%ri>DxX7uPP42_HIjML}I>pToFNGUnFo zSv7rD2&1YSMANqQ~Ei*aZ61vq%%40(oMdw|l#)^x!bDA+W1B_TC zUoTEdOX#M4X)zwv@CYodTjucOxAj8J&>wvR=crnZZBA&W;%*RfE|3_N9XA#7BfdnIgh%?&EwF(Jb=*IYrF{r{&g z{%nn=Qy@RlWW=B0C7#DoX*4M@P;ZDgv2lpUB}I*a$k+tizojPlmk%IF(pybhS%XlH z337%BA;pv|vm~?z@ZJJEL6BqI!#v`LyADge`EcLz4l~!7pLdX!9&+A}W{6VnKw>Fk5Mw6E%Rkyo|5G_Mlx{#P~SddrwPI<5y7 z0yAf6oa8&rGwdIEM*EEJk)ZO8S@^?@pF0Nrke__ujo-u3>;xLN$G_?lQF4bnM>r5^U^W{)oR=%m*l z<{uuw#xFgzCcdK1d9_)p0kdnQ*TC%8q`!jMf0Z_a*_+pIUjNtiudT0HKUlLy`AT5Q z*R88}iHD$|#e?i|fIXrC*WvgIv7c4@5PL~|>RfY~;?!BLGiRG-mSZtM`2Im@0Q<|f z#R9>G660?L2M8`)l~L0eQI+PKf-7 zgBf6;M}(9}n;}_$gBkU7u<*b$*CU3kZ$(qVvk<%sFM{G`=H?2m+jdL zFGyF*g8Xv>%=)=?$hNtvkaxqQi#;NlV^&aHE=-aRi@lzh-TOCpv?>=7SYnIvxJR9+=dTBe~pUh2(~5wOV`0TPFlG$(d>s@NIH zLa|5eu2jT9v6puojJl{ffw5J+g1E^ZF)Klz`f>fHyk5(mV~X;l`c3f_&7I2C!TL?j zUCMO!>Q)ki@`mQY`b{G}YKGM7Brug%4+8O;oN;$ruPNRqPm24g{!q0?30*YBLJ`^b z3w2U&X2q(`805&IThIWrJif-l!;wpx7brB@V_5-bDo4( z+geSRoih;Jp9(Edbd_HrXLXcN=mu4%#I5gO z9S@{+n39+fwez_{>%(c`qA#WPoRK!MU7c=4Kr5WBKd0`L;VQys$E3j{8o(ieQ{G4%^ zsp;no!#Dt4&m|7yEOb7XFf4W=3vU{*5X*sTrw;l#p?nd-!Jz$p?@-W}xdAXhLu?eR zeaQQMb^c^#g|9J9@p*^#OmbBri#ma=(*)%kYTMO?CVgagd|0{Fqc$0jEy zUq^QW-jhtNz*s`9s834F!`gMw(|}+FVb5VxGHn>dM+}xOQM5JQG`fEP`KfmgMcPgt zqP}6<8fOB8JT_`_gx^EUXU09X5hV;F3SP+est?q&PA@M70 zLk+Cm5fP3d!;P1@Jcea0*i0B5B=Yxur5qD#ZeIC2TSomVXbYdkEMEc_o*$@IkISpw zN12%2iC5~u+8(J>?5Skxq*sClVdjf&Jm|r2-amlU$}yJ41dk2wW3`8A+hLR$Q$a5l zAWuVo;z6m`YBE9|rCv+Cv;fw50b3dCOFd{aX<22K`xyVjFk2ai-i=2idsG!!AIOSe zUqH3T*v9b34qN%AqrZnK_WUn^m}Jq#QMSr{~FZ%Fl>u7u~j89%AgB`#Ap8gzYX2b z%{fQ6mD6z!>><2&<+b67CNm6SdB^h37tCw@g2F62yc z{I4H;c&d_M%zOIjUqAidbp5aY=ZS}rpEkvy#1C5InP%O>oc1h~pPT{so4YO$c|a zD9JCT=SMson>Z#|{d0+u;7OHD+bcfCWeuA^?>{c5(O-;u;v3#3c!R4A8;BZ<;+S%t zb#Sf95C6f<`o(BwocoS(?!jlKmhZ18$n?(#xyba3iz1g18b{4;d}mT)S1r<)a~br{ zqgBeee9aoS4#gZ?En#;R1gqY^7G&kn_eL}D2cq5^^(1E?Z5l`4Vbw;EbxDws7Y&ev zF-NTSl{l?mr_DBMi!KY1m^9@$O*tO8OeaSJv!L1Z^!ri$`b8P#9Ppt$&aH837uFNR zmvz!20b{K|sa}PGhd7BR7Lh{A@p3G6BBZl{O`O(m)MlF0i~e}6Ri1RjYi*%_fRgV= z*DsQ1H7`=mv-x^V!f)WRN6X}MmNM9?d?$E_TPx23kE)c3R^_}vuQ}z8efHBo9N+V& z_fl$AijHi z1Y?fmeztlc)S|=yRNz#o1ckLEFcP{Og`bhYq0kx>?k9onP%iw0JY}_*glV3NS9X%A zV74}CC|A)tWb(3)1m1GILtfrN_-~F+g}!E7iFoh0-%pG?v8n$1!6pc_%93C7k>m8m z5xV0TPjob}|yiN|Cj?0kp#caX~0an<9O&Hw6RAJFwJ z_|VR7>O|2pGNP-Atl)lP{5QJA5gIp27mhOY0*(~*UF3&Of+LSD#?Dn5Dvjz4k2c}~ zryJ6ZPAz1^(k!Ucevwg@s8n!49=m~rQ)z^1Iz=AlTcbsqzL}@DeiUIp4gNr8o z?~=R><+MLQ@-meZ;2uDP+hum=m*~_I|TYokeA~INEI`5H@LO+VTX?(D-8B3 z+OUs=WtK;n`l9~c@n{+zdufaaixKiLB_+6H6MkG~TQ7Ay?qhq8$SO>$x}qB;8tg`4 z+2z^acU*2!zgLq_zjQX`^smljpVpp9KBLv?v|26EXtf#*GilK$7m56pXyo5m5MYQJ z*9R`vDT?zD_$-f_#wwOQOUg@xtHsHJlD7&FbHw z5^3?4BhctuhDk8^vPx`qRjM975AsIoUt{7>MAOJ$Tjj@*$f~vqNJb11bpqilyA_hC z&qN5zIR=R>LulF_z;^^Cw)u7EMfC#R{k8Lqj}c4s)fviYjWuUHrLG#y_|he`eF1Hy zYJ~RBiLm1f;{Ti|nkx7`Q%8@b!s(yBhU~r2B-YyB=963e0)YfH;*0y0w1+M82S+2J zpMPzwF_)(x@ig=`Dwq}sSurr4pqDkGT!%^VHIZ9;^j8-Jv{*BVy2lo;!5B&}MzTP& zJN}sxlNLJ|R~*A6niq@agZ|aM#BmIqa~!?W9X!3`2=NagC8NaqhY7`pzh5fIJdNTb z?C1%Ps-C5rtHu4|AH_vhaiQZ3 zVYj{NAa;#J&T!mA|`ZSr5;Ct=}mtpHy+Vk)=Vw;^xi+B&)w zByXeYUZzg)g$DgnEz@Jt+aueUj;e}GL&(tDxtpvJ&bJx%a21xvlxZXdt1;IoeY3c@E3QH6G)Bfp>u7cjQLDieeGei^2$TT5G zGL54gAbY0?1y>PgqD(Pr)CA(D2}z*hDpF*WHE5I2ws+cIlOXFnBXr_SAj3aG9Mg%c zdXBK_)pF2tlod?a##gQ;JC2f~jsxyj40XGlqIM49Aets6andFI0PeQDlrb2RBapmcWvydup za=&*qc+r&wr~k)-^HsKq3$7x#cQ?sjJPj3agg`+@NW!<;2pu%#47(3vkTs$) zQr1VAxC{h<*cgL@5Zvferq>#`KT6~}km+-OEMLptbw=hQ6}KG3URRpz)37@@5bb9` z<!gjLKuTj!!B)P%$Rl^ zacXj|wCT|{)pBJI^UXm2_|=Sp2x?I6;bfHw(LytJ2s8nAgk*=7c!(TiT{EKF>c?rk zn)nHETtm!)WOB?R(lp0x;=hVG%tY|dBBIGZn~2l=W&-gQ`hY_DDG;hTU`zWE;IP@3YdzNoL8xdq|&^09Ic}_}JwNOF+6r!B)&tce&VVIg#PB7WH3LD z>DLkr5e;QVz-Tt8&=ZhAe%U$bF^EdC;J=paOkv}5FmuEJbbuxrMvTBVHU3X3|Lb#5 zg^}?hyyV&>$(Xg?xZc1*rO{*%l_YBtMw6P8ofi=a)>!-edSaTB`A3I|>`Wl^!Sn4V zq9lcrh_cvUNE}Io-+RtqzzX#G^Yq(uKGStp|05(*uO#EfirX1WXI|!yo}*cpZT$E- znM25zVH5oEq)z4i-qhDMJP8(MB5nRDYS z5RN;H#GxmScp`7G+N?e~4&)e(#KbHaZ8O6A8r!ZXHtY5Tl4ENFo$=bT=#yEwdXq8#=4wzxh{72AiPKGHBldG~V$hyfc{1CJ0-NTA>3!Z*|nRar2iX zuiqkcy#4o%x=&eSha`1)?H!qOeGS9s&E<<64?;G|zjOQ-0Ux7RGi{j~$6aWJiO!L^ z#~vi%a$XNXH0hmxNTCC^4dt$1P^eoHnd!V9BKCz(dO<^no)zC`@LBjR-b^F*A1rhl8( zs(cHO&@Q%r8^T~2FT7GhP{^A4S^EfaJi;3McQH5Pu1L{9@+%w$Lhol-@P8z*P~%-} z9DEbagn<0Wzy*bjjlEJ1t2bY!uIW{#%g|Vl64!M9VJvjQfJ;dX|cbTajB-!o^Yia7@grt$jl?)Kx<> z)jNh_)ukW^`*v$}h&pd#Ws^FiI%j;jB|dX5J$6C9R!Nbm>HN?JRd2JRfmbfbdP=^N zDeGk=mfB!)UXK4|qr@-}RIuWIlDMX4KSGKU(QYo!fdAy0jvM(HE-ZM2ta-#yMyCF^ ziLnerqgG&#XvEGhm~ek&Hv++e39Q{pOD9~0AdnYN;8DaXjkq()?k(|)CTs%xcAcs9 zH9W|A@GEdRam!es#!^n~cAr6wL(*vs@ua}NaDjjJYyR`|eAxt_dWwH>%D!R z=?yPTY|kOBrVB9q1w__43JINgiGDc2w|&E&Pcz?Bn{EX#p+@9I2nS;iMx`$`OydLJMfS4JC9-5Ff z#>fl?cxtj|8lx|C@n2o;*oKW4w(e*w+m0V#=UGV zfNHh!1qac}AK-|~hoJ@J4a{}t;KU2^H8k#$Ox+n)65-w(x7& z!gXxnrYj3)tYRyInM0HiI>kg>ATLw$GV;JlRd&P6T%Mnc!T$?tRANq1g4jNp-O({d zy+z5;j7wyau{l{ymVGWmr$LEZ!(QrOj+6|g05`PRASI6&o$->vYdnQeR3{~QlUZo$ z_?*1_1%VQ)oN2!b(lHZvOPIQ>3pOSxr!xf4+wM!W@{(X?Aw0(|HQ|xWA)g&-jkIye zaVC?A({rBge{Y=|X*F}6SodW>fB}FsaDW}jWZHaVLr*FvaUp^=2~j}Y(&R|NlMg+hktdE4{?70D<(C;XTwGjiY)njy z4nJD%w~4i@zjJ!iQ|r#Gd? za;A(7Q&!qFYU7*vdOKltgNfdriZ}Z8Ox#jXVRby_5FHaw zhMQrE&|qR%OnQb8F!4m0&BSEau|l6rCjQdv$EK@)YO}@(%E=a z7~KpR21M$NudL4I0e=c%>x{tFGdz*;k=M*fJuB3g=)wb5I8yP_z_v z!*omo-&q|TPl=9C1-ID-V!t>8@T8f+Jly3^jkL0MjspX-Qt@W+*&Fk*zDOM$06qo} zlrFR|elYwgL9s9b}x9D^a& zV94RJu8RI!Hudw96DPl>=P%}*I``vSvd721x%tfSZ419WZuxF>$$~_6WJ<|!+>O^> z;`AGi7$;8O^gzPT&vJ{89i1QlvkN~>U$gd3y6(QLg3@1P+@5dc=M~>^>(av2nRl;B v`(jv6B2hO_&?m literal 0 HcmV?d00001 diff --git a/Oric Atmos_MiST/rtl/roms/key1.hex b/Oric Atmos_MiST/rtl/roms/key1.hex new file mode 100644 index 00000000..71fb1e64 --- /dev/null +++ b/Oric Atmos_MiST/rtl/roms/key1.hex @@ -0,0 +1,3 @@ +:020000040000FA +:2000000000140800000000000000000000000000004000402E3400000000004E7C760000A2 +:00000001FF diff --git a/Oric Atmos_MiST/rtl/roms/key2.hex b/Oric Atmos_MiST/rtl/roms/key2.hex new file mode 100644 index 00000000..26620049 --- /dev/null +++ b/Oric Atmos_MiST/rtl/roms/key2.hex @@ -0,0 +1,3 @@ +:020000040000FA +:2000000000340000000000000000000000000000000000002834763000146C7E6820000024 +:00000001FF diff --git a/Oric Atmos_MiST/rtl/roms/key3.hex b/Oric Atmos_MiST/rtl/roms/key3.hex new file mode 100644 index 00000000..306fca91 --- /dev/null +++ b/Oric Atmos_MiST/rtl/roms/key3.hex @@ -0,0 +1,3 @@ +:020000040000FA +:20000000003008000000000000000000000000000040004004346C4A004A1C7A34400000E6 +:00000001FF diff --git a/Oric Atmos_MiST/rtl/roms/key4.hex b/Oric Atmos_MiST/rtl/roms/key4.hex new file mode 100644 index 00000000..cb449f0f --- /dev/null +++ b/Oric Atmos_MiST/rtl/roms/key4.hex @@ -0,0 +1,3 @@ +:020000040000FA +:2000000000340800000000000000000000000000000000400E302E3A5038021038060000E6 +:00000001FF diff --git a/Oric Atmos_MiST/rtl/roms/key5.hex b/Oric Atmos_MiST/rtl/roms/key5.hex new file mode 100644 index 00000000..266e7246 --- /dev/null +++ b/Oric Atmos_MiST/rtl/roms/key5.hex @@ -0,0 +1,3 @@ +:020000040000FA +:20000000000000000000000000000000000000000000000026245C64447C00327C10000058 +:00000001FF diff --git a/Oric Atmos_MiST/rtl/roms/key6.hex b/Oric Atmos_MiST/rtl/roms/key6.hex new file mode 100644 index 00000000..584c05df --- /dev/null +++ b/Oric Atmos_MiST/rtl/roms/key6.hex @@ -0,0 +1,3 @@ +:020000040000FA +:2000000000000000000000000000000000000000004000402E347C7C58003808002200004C +:00000001FF diff --git a/Oric Atmos_MiST/rtl/roms/key7.hex b/Oric Atmos_MiST/rtl/roms/key7.hex new file mode 100644 index 00000000..584c05df --- /dev/null +++ b/Oric Atmos_MiST/rtl/roms/key7.hex @@ -0,0 +1,3 @@ +:020000040000FA +:2000000000000000000000000000000000000000004000402E347C7C58003808002200004C +:00000001FF diff --git a/Oric Atmos_MiST/rtl/roms/romgen.exe b/Oric Atmos_MiST/rtl/roms/romgen.exe new file mode 100644 index 0000000000000000000000000000000000000000..5be205f0b1920b89b760b91bbd2e4d59b368d27f GIT binary patch literal 45568 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 WvFXMbPGfcV`nEoS^$Gm{6Zj1kJ_RHI literal 0 HcmV?d00001 diff --git a/Oric Atmos_MiST/rtl/rrom.qip b/Oric Atmos_MiST/rtl/rrom.qip new file mode 100644 index 00000000..27645f1c --- /dev/null +++ b/Oric Atmos_MiST/rtl/rrom.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "ROM: 1-PORT" +set_global_assignment -name IP_TOOL_VERSION "13.1" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "rrom.vhd"] diff --git a/Oric Atmos_MiST/rtl/rrom.vhd b/Oric Atmos_MiST/rtl/rrom.vhd new file mode 100644 index 00000000..db0397df --- /dev/null +++ b/Oric Atmos_MiST/rtl/rrom.vhd @@ -0,0 +1,143 @@ +-- megafunction wizard: %ROM: 1-PORT% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altsyncram + +-- ============================================================ +-- File Name: rrom.vhd +-- Megafunction Name(s): +-- altsyncram +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 13.1.0 Build 162 10/23/2013 SJ Web Edition +-- ************************************************************ + + +--Copyright (C) 1991-2013 Altera Corporation +--Your use of Altera Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Altera Program License +--Subscription Agreement, Altera MegaCore Function License +--Agreement, or other applicable license agreement, including, +--without limitation, that your use is for the sole purpose of +--programming logic devices manufactured by Altera and sold by +--Altera or its authorized distributors. Please refer to the +--applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.altera_mf_components.all; + +ENTITY rrom IS + PORT + ( + address : IN STD_LOGIC_VECTOR (13 DOWNTO 0); + clock : IN STD_LOGIC := '1'; + q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) + ); +END rrom; + + +ARCHITECTURE SYN OF rrom IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (7 DOWNTO 0); + +BEGIN + q <= sub_wire0(7 DOWNTO 0); + + altsyncram_component : altsyncram + GENERIC MAP ( + address_aclr_a => "NONE", + clock_enable_input_a => "BYPASS", + clock_enable_output_a => "BYPASS", + init_file => "./roms/basic11b.hex", + intended_device_family => "Cyclone III", + lpm_hint => "ENABLE_RUNTIME_MOD=NO", + lpm_type => "altsyncram", + numwords_a => 16384, + operation_mode => "ROM", + outdata_aclr_a => "NONE", + outdata_reg_a => "CLOCK0", + widthad_a => 14, + width_a => 8, + width_byteena_a => 1 + ) + PORT MAP ( + address_a => address, + clock0 => clock, + q_a => sub_wire0 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ADDRESSSTALL_A NUMERIC "0" +-- Retrieval info: PRIVATE: AclrAddr NUMERIC "0" +-- Retrieval info: PRIVATE: AclrByte NUMERIC "0" +-- Retrieval info: PRIVATE: AclrOutput NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_ENABLE NUMERIC "0" +-- Retrieval info: PRIVATE: BYTE_SIZE NUMERIC "8" +-- Retrieval info: PRIVATE: BlankMemory NUMERIC "0" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_A NUMERIC "0" +-- Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_A NUMERIC "0" +-- Retrieval info: PRIVATE: Clken NUMERIC "0" +-- Retrieval info: PRIVATE: IMPLEMENT_IN_LES NUMERIC "0" +-- Retrieval info: PRIVATE: INIT_FILE_LAYOUT STRING "PORT_A" +-- Retrieval info: PRIVATE: INIT_TO_SIM_X NUMERIC "0" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" +-- Retrieval info: PRIVATE: JTAG_ID STRING "NONE" +-- Retrieval info: PRIVATE: MAXIMUM_DEPTH NUMERIC "0" +-- Retrieval info: PRIVATE: MIFfilename STRING "./roms/basic11b.hex" +-- Retrieval info: PRIVATE: NUMWORDS_A NUMERIC "16384" +-- Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" +-- Retrieval info: PRIVATE: RegAddr NUMERIC "1" +-- Retrieval info: PRIVATE: RegOutput NUMERIC "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: SingleClock NUMERIC "1" +-- Retrieval info: PRIVATE: UseDQRAM NUMERIC "0" +-- Retrieval info: PRIVATE: WidthAddr NUMERIC "14" +-- Retrieval info: PRIVATE: WidthData NUMERIC "8" +-- Retrieval info: PRIVATE: rden NUMERIC "0" +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: CONSTANT: ADDRESS_ACLR_A STRING "NONE" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_A STRING "BYPASS" +-- Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_A STRING "BYPASS" +-- Retrieval info: CONSTANT: INIT_FILE STRING "./roms/basic11b.hex" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +-- Retrieval info: CONSTANT: LPM_HINT STRING "ENABLE_RUNTIME_MOD=NO" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altsyncram" +-- Retrieval info: CONSTANT: NUMWORDS_A NUMERIC "16384" +-- Retrieval info: CONSTANT: OPERATION_MODE STRING "ROM" +-- Retrieval info: CONSTANT: OUTDATA_ACLR_A STRING "NONE" +-- Retrieval info: CONSTANT: OUTDATA_REG_A STRING "CLOCK0" +-- Retrieval info: CONSTANT: WIDTHAD_A NUMERIC "14" +-- Retrieval info: CONSTANT: WIDTH_A NUMERIC "8" +-- Retrieval info: CONSTANT: WIDTH_BYTEENA_A NUMERIC "1" +-- Retrieval info: USED_PORT: address 0 0 14 0 INPUT NODEFVAL "address[13..0]" +-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT VCC "clock" +-- Retrieval info: USED_PORT: q 0 0 8 0 OUTPUT NODEFVAL "q[7..0]" +-- Retrieval info: CONNECT: @address_a 0 0 14 0 address 0 0 14 0 +-- Retrieval info: CONNECT: @clock0 0 0 0 0 clock 0 0 0 0 +-- Retrieval info: CONNECT: q 0 0 8 0 @q_a 0 0 8 0 +-- Retrieval info: GEN_FILE: TYPE_NORMAL rrom.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL rrom.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL rrom.cmp FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL rrom.bsf FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL rrom_inst.vhd FALSE +-- Retrieval info: LIB_FILE: altera_mf diff --git a/Oric Atmos_MiST/rtl/scan_converter.vhd b/Oric Atmos_MiST/rtl/scan_converter.vhd new file mode 100644 index 00000000..f3925b3b --- /dev/null +++ b/Oric Atmos_MiST/rtl/scan_converter.vhd @@ -0,0 +1,229 @@ +-- (c) 2012 d18c7db(a)hotmail +-- +-- This program is free software; you can redistribute it and/or modify it under +-- the terms of the GNU General Public License version 3 or, at your option, +-- any later version as published by the Free Software Foundation. +-- +-- 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. +-- +-- For full details, see the GNU General Public License at www.gnu.org/licenses + +-------------------------------------------------------------------------------- +-- Video scan converter +-- +-- Horizonal Timing +-- _____________ ______________________ _____________________ +-- VIDEO (last) |____________| VIDEO |____________| VIDEO (next) +-- -hD----------|-hA-|hB|-hC-|----------hD----------|-hA-|hB|-hC-|----------hD--------- +-- __________________| |________________________________| |__________________________ +-- HSYNC |__| HSYNC |__| HSYNC + +-- Vertical Timing +-- _____________ ______________________ _____________________ +-- VIDEO (last)||____________||||||||||VIDEO|||||||||____________||||||||||VIDEO (next) +-- -vD----------|-vA-|vB|-vC-|----------vD----------|-vA-|vB|-vC-|----------vD--------- +-- __________________| |________________________________| |__________________________ +-- VSYNC |__| VSYNC |__| VSYNC + +-- Scan converter input and output timings compared to standard VGA +-- Resolution - Frame | Pixel | Front | HSYNC | Back | Active | HSYNC | Front | VSYNC | Back | Active | VSYNC +-- - Rate | Clock | Porch hA | Pulse hB | Porch hC | Video hD | Polarity | Porch vA | Pulse vB | Porch vC | Video vD | Polarity +------------------------------------------------------------------------------------------------------------------------------------------------------------- +-- In 256x224 - 59.18Hz | 6.000 MHz | 38 pixels | 32 pixels | 58 pixels | 256 pixels | negative | 16 lines | 8 lines | 16 lines | 224 lines | negative +-- Out 640x480 - 59.18Hz | 24.000 MHz | 2 pixels | 92 pixels | 34 pixels | 640 pixels | negative | 17 lines | 2 lines | 29 lines | 480 lines | negative +-- VGA 640x480 - 59.94Hz | 25.175 MHz | 16 pixels | 96 pixels | 48 pixels | 640 pixels | negative | 10 lines | 2 lines | 33 lines | 480 lines | negative + +library ieee; + use ieee.std_logic_1164.all; + use ieee.std_logic_unsigned.all; + use ieee.numeric_std.all; + +--pragma translate_off + use ieee.std_logic_textio.all; + use std.textio.all; +--pragma translate_on + +entity VGA_SCANCONV is + generic ( + cstart : integer range 0 to 1023 := 144; -- composite sync start + clength : integer range 0 to 1023 := 640; -- composite sync length + + hA : integer range 0 to 1023 := 16; -- h front porch + hB : integer range 0 to 1023 := 96; -- h sync + hC : integer range 0 to 1023 := 48; -- h back porch + hD : integer range 0 to 1023 := 640; -- visible video + +-- vA : integer range 0 to 1023 := 16; -- v front porch + vB : integer range 0 to 1023 := 2; -- v sync + vC : integer range 0 to 1023 := 33; -- v back porch + vD : integer range 0 to 1023 := 480; -- visible video + + hpad : integer range 0 to 1023 := 0; -- H black border + vpad : integer range 0 to 1023 := 0 -- V black border + ); + port ( + I_VIDEO : in std_logic_vector(15 downto 0); + I_HSYNC : in std_logic; + I_VSYNC : in std_logic; + -- + O_VIDEO : out std_logic_vector(15 downto 0); + O_HSYNC : out std_logic; + O_VSYNC : out std_logic; + O_CMPBLK_N : out std_logic; + -- + CLK : in std_logic; + CLK_x2 : in std_logic + ); +end; + +architecture RTL of VGA_SCANCONV is + -- + -- input timing + -- + signal ivsync_last_x2 : std_logic := '1'; + signal ihsync_last : std_logic := '1'; + signal hpos_i : std_logic_vector( 9 downto 0) := (others => '0'); + + -- + -- output timing + -- + signal hpos_o : std_logic_vector(9 downto 0) := (others => '0'); + + signal vcnt : integer range 0 to 1023 := 0; + signal hcnt : integer range 0 to 1023 := 0; + signal hcnti : integer range 0 to 1023 := 0; + + signal CLK_x2_n : std_logic := '1'; + +begin + -- dual port line buffer, max line of 1024 pixels + u_ram : entity work.RAMB16_S18_S18 +-- generic map (INIT_A => X"00000", INIT_B => X"00000", SIM_COLLISION_CHECK => "ALL") -- "NONE", "WARNING", "GENERATE_X_ONLY", "ALL" + port map ( + -- input + q_a => open, + data_a => I_VIDEO, + + + address_a => hpos_i, + wren_a => '1', + rden_a => CLK, + + clock_a => CLK_x2, + + -- output + q_b => O_VIDEO, + data_b => x"0000", + + + address_b => hpos_o, + wren_b => '0', + rden_b => '1', + + clock_b => CLK_x2_n + ); + + CLK_x2_n <= not CLK_x2; + + -- horizontal counter for input video + p_hcounter : process + begin + wait until rising_edge(CLK_x2); + if CLK = '0' then + ihsync_last <= I_HSYNC; + + -- trigger off rising hsync + if I_HSYNC = '1' and ihsync_last = '0' then + hcnti <= 0; + else + hcnti <= hcnti + 1; + end if; + end if; + end process; + + -- increment write position during active video + p_ram_in : process + begin + wait until rising_edge(CLK_x2); + if CLK = '0' then + if (hcnti < cstart) or (hcnti >= (cstart + clength)) then + hpos_i <= (others => '0'); + else + hpos_i <= hpos_i + 1; + end if; + end if; + end process; + + -- VGA H and V counters, synchronized to input frame V sync, then H sync + p_out_ctrs : process + variable trigger : boolean; + begin + wait until rising_edge(CLK_x2); + ivsync_last_x2 <= I_VSYNC; + + if (I_VSYNC = '0') and (ivsync_last_x2 = '1') then + trigger := true; + elsif trigger and I_HSYNC = '0' then + trigger := false; + hcnt <= 0; + vcnt <= 0; + else + hcnt <= hcnt + 1; + if hcnt = (hA+hB+hC+hD+hpad+hpad-1) then + hcnt <= 0; + vcnt <= vcnt + 1; + end if; + end if; + end process; + + -- generate hsync + p_gen_hsync : process + begin + wait until rising_edge(CLK_x2); + -- H sync timing + if (hcnt < hB) then + O_HSYNC <= '0'; + else + O_HSYNC <= '1'; + end if; + end process; + + -- generate vsync + p_gen_vsync : process + begin + wait until rising_edge(CLK_x2); + -- V sync timing + if (vcnt < vB) then + O_VSYNC <= '0'; + else + O_VSYNC <= '1'; + end if; + end process; + + -- generate active output video + p_gen_active_vid : process + begin + wait until rising_edge(CLK_x2); + -- visible video area doubled from the original game + if ((hcnt >= (hB + hC + hpad)) and (hcnt < (hB + hC + hD + hpad))) and ((vcnt > 2*(vB + vC + vpad)) and (vcnt <= 2*(vB + vC + vD + vpad))) then + hpos_o <= hpos_o + 1; + else + hpos_o <= (others => '0'); + end if; + end process; + + -- generate blanking signal including additional borders to pad the input signal to standard VGA resolution + p_gen_blank : process + begin + wait until rising_edge(CLK_X2); + -- active video area 640x480 (VGA) after padding with blank borders + if ((hcnt >= (hB + hC)) and (hcnt < (hB + hC + hD + 2*hpad))) and ((vcnt > 2*(vB + vC)) and (vcnt <= 2*(vB + vC + vD + 2*vpad))) then + O_CMPBLK_N <= '1'; + else + O_CMPBLK_N <= '0'; + end if; + end process; + +end architecture RTL; diff --git a/Oric Atmos_MiST/rtl/scandoubler.v b/Oric Atmos_MiST/rtl/scandoubler.v new file mode 100644 index 00000000..0213d20c --- /dev/null +++ b/Oric Atmos_MiST/rtl/scandoubler.v @@ -0,0 +1,195 @@ +// +// scandoubler.v +// +// Copyright (c) 2015 Till Harbaum +// Copyright (c) 2017 Sorgelig +// +// This source file is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published +// by the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This source file is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +// TODO: Delay vsync one line + +module scandoubler #(parameter LENGTH, parameter HALF_DEPTH) +( + // system interface + input clk_sys, + input ce_pix, + input ce_pix_actual, + + input hq2x, + + // shifter video interface + input hs_in, + input vs_in, + input line_start, + + input [DWIDTH:0] r_in, + input [DWIDTH:0] g_in, + input [DWIDTH:0] b_in, + input mono, + + // output interface + output reg hs_out, + output vs_out, + output [DWIDTH:0] r_out, + output [DWIDTH:0] g_out, + output [DWIDTH:0] b_out +); + + +localparam DWIDTH = HALF_DEPTH ? 2 : 5; + +assign vs_out = vs_in; + +reg [2:0] phase; +reg [2:0] ce_div; +reg [7:0] pix_len = 0; +wire [7:0] pl = pix_len + 1'b1; + +reg ce_x1, ce_x4; +reg req_line_reset; +wire ls_in = hs_in | line_start; +always @(negedge clk_sys) begin + reg old_ce; + reg [2:0] ce_cnt; + + reg [7:0] pixsz2, pixsz4 = 0; + + old_ce <= ce_pix; + if(~&pix_len) pix_len <= pix_len + 1'd1; + + ce_x4 <= 0; + ce_x1 <= 0; + + // use such odd comparison to place c_x4 evenly if master clock isn't multiple 4. + if((pl == pixsz4) || (pl == pixsz2) || (pl == (pixsz2+pixsz4))) begin + phase <= phase + 1'd1; + ce_x4 <= 1; + end + + if(~old_ce & ce_pix) begin + pixsz2 <= {1'b0, pl[7:1]}; + pixsz4 <= {2'b00, pl[7:2]}; + ce_x1 <= 1; + ce_x4 <= 1; + pix_len <= 0; + phase <= phase + 1'd1; + + ce_cnt <= ce_cnt + 1'd1; + if(ce_pix_actual) begin + phase <= 0; + ce_div <= ce_cnt + 1'd1; + ce_cnt <= 0; + req_line_reset <= 0; + end + + if(ls_in) req_line_reset <= 1; + end +end + +reg ce_sd; +always @(*) begin + case(ce_div) + 2: ce_sd = !phase[0]; + 4: ce_sd = !phase[1:0]; + default: ce_sd <= 1; + endcase +end + +`define BITS_TO_FIT(N) ( \ + N <= 2 ? 0 : \ + N <= 4 ? 1 : \ + N <= 8 ? 2 : \ + N <= 16 ? 3 : \ + N <= 32 ? 4 : \ + N <= 64 ? 5 : \ + N <= 128 ? 6 : \ + N <= 256 ? 7 : \ + N <= 512 ? 8 : \ + N <=1024 ? 9 : 10 ) + +localparam AWIDTH = `BITS_TO_FIT(LENGTH); +Hq2x #(.LENGTH(LENGTH), .HALF_DEPTH(HALF_DEPTH)) Hq2x +( + .clk(clk_sys), + .ce_x4(ce_x4 & ce_sd), + .inputpixel({b_in,g_in,r_in}), + .mono(mono), + .disable_hq2x(~hq2x), + .reset_frame(vs_in), + .reset_line(req_line_reset), + .read_y(sd_line), + .read_x(sd_h_actual), + .outpixel({b_out,g_out,r_out}) +); + +reg [10:0] sd_h_actual; +always @(*) begin + case(ce_div) + 2: sd_h_actual = sd_h[10:1]; + 4: sd_h_actual = sd_h[10:2]; + default: sd_h_actual = sd_h; + endcase +end + +reg [10:0] sd_h; +reg [1:0] sd_line; +always @(posedge clk_sys) begin + + reg [11:0] hs_max,hs_rise,hs_ls; + reg [10:0] hcnt; + reg [11:0] sd_hcnt; + + reg hs, hs2, vs, ls; + + if(ce_x1) begin + hs <= hs_in; + ls <= ls_in; + + if(ls && !ls_in) hs_ls <= {hcnt,1'b1}; + + // falling edge of hsync indicates start of line + if(hs && !hs_in) begin + hs_max <= {hcnt,1'b1}; + hcnt <= 0; + if(ls && !ls_in) hs_ls <= {10'd0,1'b1}; + end else begin + hcnt <= hcnt + 1'd1; + end + + // save position of rising edge + if(!hs && hs_in) hs_rise <= {hcnt,1'b1}; + + vs <= vs_in; + if(vs && ~vs_in) sd_line <= 0; + end + + if(ce_x4) begin + hs2 <= hs_in; + + // output counter synchronous to input and at twice the rate + sd_hcnt <= sd_hcnt + 1'd1; + sd_h <= sd_h + 1'd1; + if(hs2 && !hs_in) sd_hcnt <= hs_max; + if(sd_hcnt == hs_max) sd_hcnt <= 0; + + // replicate horizontal sync at twice the speed + if(sd_hcnt == hs_max) hs_out <= 0; + if(sd_hcnt == hs_rise) hs_out <= 1; + + if(sd_hcnt == hs_ls) sd_h <= 0; + if(sd_hcnt == hs_ls) sd_line <= sd_line + 1'd1; + end +end + +endmodule diff --git a/Oric Atmos_MiST/rtl/spram.vhd b/Oric Atmos_MiST/rtl/spram.vhd new file mode 100644 index 00000000..d9a003ee --- /dev/null +++ b/Oric Atmos_MiST/rtl/spram.vhd @@ -0,0 +1,89 @@ +------------------------------------------------------------------------------- +-- +-- Copyright (c) 2016, Fabio Belavenuto (belavenuto@gmail.com) +-- +-- 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. +-- +------------------------------------------------------------------------------- +-- +-- Generic single port RAM. +-- +------------------------------------------------------------------------------- + +library ieee; +use ieee.std_logic_1164.all; + +entity spram is + generic ( + addr_width_g : integer := 14; + data_width_g : integer := 8 + ); + port ( + clk_i : in std_logic; + we_i : in std_logic; + addr_i : in std_logic_vector(addr_width_g-1 downto 0); + data_i : in std_logic_vector(data_width_g-1 downto 0); + data_o : out std_logic_vector(data_width_g-1 downto 0) + ); + +end spram; + +library ieee; +use ieee.numeric_std.all; + +architecture rtl of spram 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 + -- pragma translate_off + := (others => (others => '0')) + -- pragma translate_on + ; + signal read_addr_q : unsigned(addr_width_g-1 downto 0); + +begin + + process (clk_i) + begin + if rising_edge(clk_i) then + if we_i = '1' then + ram_q(to_integer(unsigned(addr_i))) <= data_i; + end if; + + read_addr_q <= unsigned(addr_i); + end if; + end process; + + data_o <= ram_q(to_integer(read_addr_q)); + +end rtl; diff --git a/Oric Atmos_MiST/rtl/sprom.vhd b/Oric Atmos_MiST/rtl/sprom.vhd new file mode 100644 index 00000000..06d78cbd --- /dev/null +++ b/Oric Atmos_MiST/rtl/sprom.vhd @@ -0,0 +1,77 @@ +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY sprom IS + GENERIC + ( + init_file : string := ""; + numwords_a : natural := 0; -- not used any more + 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 ( + 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 ( + 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/Oric Atmos_MiST/rtl/t65.vhd b/Oric Atmos_MiST/rtl/t65.vhd new file mode 100644 index 00000000..b0a11b50 --- /dev/null +++ b/Oric Atmos_MiST/rtl/t65.vhd @@ -0,0 +1,553 @@ +-- **** +-- T65(b) core. In an effort to merge and maintain bug fixes .... +-- +-- +-- Ver 301 more merging +-- Ver 300 Bugfixes by ehenciak added, started tidyup *bust* +-- MikeJ March 2005 +-- Latest version from www.fpgaarcade.com (original www.opencores.org) +-- +-- **** +-- +-- 65xx compatible microprocessor core +-- +-- Version : 0246 +-- +-- 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/t65/ +-- +-- Limitations : +-- +-- 65C02 and 65C816 modes are incomplete +-- Undocumented instructions are not supported +-- Some interface signals behaves incorrect +-- +-- File history : +-- +-- 0246 : First release +-- + +library IEEE; + use IEEE.std_logic_1164.all; + use IEEE.numeric_std.all; +library work; + use work.pack_t65.all; + +-- ehenciak 2-23-2005 : Added the enable signal so that one doesn't have to use +-- the ready signal to limit the CPU. +entity T65 is + port( + Mode : in std_logic_vector(1 downto 0); -- "00" => 6502, "01" => 65C02, "10" => 65C816 + Res_n : in std_logic; + Enable : in std_logic; + Clk : in std_logic; + Rdy : in std_logic; + Abort_n : in std_logic; + IRQ_n : in std_logic; + NMI_n : in std_logic; + SO_n : in std_logic; + R_W_n : out std_logic; + Sync : out std_logic; + EF : out std_logic; + MF : out std_logic; + XF : out std_logic; + ML_n : out std_logic; + VP_n : out std_logic; + VDA : out std_logic; + VPA : out std_logic; + A : out std_logic_vector(23 downto 0); + DI : in std_logic_vector(7 downto 0); + DO : out std_logic_vector(7 downto 0) + ); +end T65; + +architecture rtl of T65 is + + -- Registers + signal ABC, X, Y, D : std_logic_vector(15 downto 0); + signal P, AD, DL : std_logic_vector(7 downto 0) := x"00"; + signal BAH : std_logic_vector(7 downto 0); + signal BAL : std_logic_vector(8 downto 0); + signal PBR : std_logic_vector(7 downto 0); + signal DBR : std_logic_vector(7 downto 0); + signal PC : unsigned(15 downto 0); + signal S : unsigned(15 downto 0); + signal EF_i : std_logic; + signal MF_i : std_logic; + signal XF_i : std_logic; + + signal IR : std_logic_vector(7 downto 0); + signal MCycle : std_logic_vector(2 downto 0); + + signal Mode_r : std_logic_vector(1 downto 0); + signal ALU_Op_r : std_logic_vector(3 downto 0); + signal Write_Data_r : std_logic_vector(2 downto 0); + signal Set_Addr_To_r : std_logic_vector(1 downto 0); + signal PCAdder : unsigned(8 downto 0); + + signal RstCycle : std_logic; + signal IRQCycle : std_logic; + signal NMICycle : std_logic; + + signal B_o : std_logic; + signal SO_n_o : std_logic; + signal IRQ_n_o : std_logic; + signal NMI_n_o : std_logic; + signal NMIAct : std_logic; + + signal Break : std_logic; + + -- ALU signals + signal BusA : std_logic_vector(7 downto 0); + signal BusA_r : std_logic_vector(7 downto 0); + signal BusB : std_logic_vector(7 downto 0); + signal ALU_Q : std_logic_vector(7 downto 0); + signal P_Out : std_logic_vector(7 downto 0); + + -- Micro code outputs + signal LCycle : std_logic_vector(2 downto 0); + signal ALU_Op : std_logic_vector(3 downto 0); + signal Set_BusA_To : std_logic_vector(2 downto 0); + signal Set_Addr_To : std_logic_vector(1 downto 0); + signal Write_Data : std_logic_vector(2 downto 0); + signal Jump : std_logic_vector(1 downto 0); + signal BAAdd : std_logic_vector(1 downto 0); + signal BreakAtNA : std_logic; + signal ADAdd : std_logic; + signal AddY : std_logic; + signal PCAdd : std_logic; + signal Inc_S : std_logic; + signal Dec_S : std_logic; + signal LDA : std_logic; + signal LDP : std_logic; + signal LDX : std_logic; + signal LDY : std_logic; + signal LDS : std_logic; + signal LDDI : std_logic; + signal LDALU : std_logic; + signal LDAD : std_logic; + signal LDBAL : std_logic; + signal LDBAH : std_logic; + signal SaveP : std_logic; + signal Write : std_logic; + + signal really_rdy : std_logic; + signal R_W_n_i : std_logic; + +begin + -- ehenciak : gate Rdy with read/write to make an "OK, it's + -- really OK to stop the processor now if Rdy is + -- deasserted" signal + really_rdy <= Rdy or not(R_W_n_i); + + -- ehenciak : Drive R_W_n_i off chip. + R_W_n <= R_W_n_i; + + Sync <= '1' when MCycle = "000" else '0'; + EF <= EF_i; + MF <= MF_i; + XF <= XF_i; + ML_n <= '0' when IR(7 downto 6) /= "10" and IR(2 downto 1) = "11" and MCycle(2 downto 1) /= "00" else '1'; + VP_n <= '0' when IRQCycle = '1' and (MCycle = "101" or MCycle = "110") else '1'; + VDA <= '1' when Set_Addr_To_r /= "000" else '0'; -- Incorrect !!!!!!!!!!!! + VPA <= '1' when Jump(1) = '0' else '0'; -- Incorrect !!!!!!!!!!!! + + mcode : T65_MCode + port map( + Mode => Mode_r, + IR => IR, + MCycle => MCycle, + P => P, + LCycle => LCycle, + ALU_Op => ALU_Op, + Set_BusA_To => Set_BusA_To, + Set_Addr_To => Set_Addr_To, + Write_Data => Write_Data, + Jump => Jump, + BAAdd => BAAdd, + BreakAtNA => BreakAtNA, + ADAdd => ADAdd, + AddY => AddY, + PCAdd => PCAdd, + Inc_S => Inc_S, + Dec_S => Dec_S, + LDA => LDA, + LDP => LDP, + LDX => LDX, + LDY => LDY, + LDS => LDS, + LDDI => LDDI, + LDALU => LDALU, + LDAD => LDAD, + LDBAL => LDBAL, + LDBAH => LDBAH, + SaveP => SaveP, + Write => Write + ); + + alu : T65_ALU + port map( + Mode => Mode_r, + Op => ALU_Op_r, + BusA => BusA_r, + BusB => BusB, + P_In => P, + P_Out => P_Out, + Q => ALU_Q + ); + + process (Res_n, Clk) + begin + if Res_n = '0' then + PC <= (others => '0'); -- Program Counter + IR <= "00000000"; + S <= (others => '0'); -- Dummy !!!!!!!!!!!!!!!!!!!!! + D <= (others => '0'); + PBR <= (others => '0'); + DBR <= (others => '0'); + + Mode_r <= (others => '0'); + ALU_Op_r <= "1100"; + Write_Data_r <= "000"; + Set_Addr_To_r <= "00"; + + R_W_n_i <= '1'; + EF_i <= '1'; + MF_i <= '1'; + XF_i <= '1'; + + elsif Clk'event and Clk = '1' then + if (Enable = '1') then + if (really_rdy = '1') then + R_W_n_i <= not Write or RstCycle; + + D <= (others => '1'); -- Dummy + PBR <= (others => '1'); -- Dummy + DBR <= (others => '1'); -- Dummy + EF_i <= '0'; -- Dummy + MF_i <= '0'; -- Dummy + XF_i <= '0'; -- Dummy + + if MCycle = "000" then + Mode_r <= Mode; + + if IRQCycle = '0' and NMICycle = '0' then + PC <= PC + 1; + end if; + + if IRQCycle = '1' or NMICycle = '1' then + IR <= "00000000"; + else + IR <= DI; + end if; + end if; + + ALU_Op_r <= ALU_Op; + Write_Data_r <= Write_Data; + if Break = '1' then + Set_Addr_To_r <= "00"; + else + Set_Addr_To_r <= Set_Addr_To; + end if; + + if Inc_S = '1' then + S <= S + 1; + end if; + if Dec_S = '1' and RstCycle = '0' then + S <= S - 1; + end if; + if LDS = '1' then + S(7 downto 0) <= unsigned(ALU_Q); + end if; + + if IR = "00000000" and MCycle = "001" and IRQCycle = '0' and NMICycle = '0' then + PC <= PC + 1; + end if; + -- + -- jump control logic + -- + case Jump is + when "01" => + PC <= PC + 1; + + when "10" => + PC <= unsigned(DI & DL); + + when "11" => + if PCAdder(8) = '1' then + if DL(7) = '0' then + PC(15 downto 8) <= PC(15 downto 8) + 1; + else + PC(15 downto 8) <= PC(15 downto 8) - 1; + end if; + end if; + PC(7 downto 0) <= PCAdder(7 downto 0); + + when others => null; + end case; + end if; + end if; + end if; + end process; + + PCAdder <= resize(PC(7 downto 0),9) + resize(unsigned(DL(7) & DL),9) when PCAdd = '1' + else "0" & PC(7 downto 0); + + process (Clk) + begin + if Clk'event and Clk = '1' then + if (Enable = '1') then + if (really_rdy = '1') then + if MCycle = "000" then + if LDA = '1' then + -- assert false report "Chargement A" severity warning; + ABC(7 downto 0) <= ALU_Q; + end if; + if LDX = '1' then + X(7 downto 0) <= ALU_Q; + end if; + if LDY = '1' then + Y(7 downto 0) <= ALU_Q; + end if; + if (LDA or LDX or LDY) = '1' then + P <= P_Out; + end if; + end if; + if SaveP = '1' then + P <= P_Out; + end if; + if LDP = '1' then + P <= ALU_Q; + end if; + if IR(4 downto 0) = "11000" then + case IR(7 downto 5) is + when "000" => + P(Flag_C) <= '0'; + when "001" => + P(Flag_C) <= '1'; + when "010" => + P(Flag_I) <= '0'; + when "011" => + P(Flag_I) <= '1'; + when "101" => + P(Flag_V) <= '0'; + when "110" => + P(Flag_D) <= '0'; + when "111" => + P(Flag_D) <= '1'; + when others => + end case; + end if; + if IR = "00000000" and MCycle = "011" and RstCycle = '0' and NMICycle = '0' and IRQCycle = '0' then + P(Flag_B) <= '1'; + end if; + if IR = "00000000" and MCycle = "100" and RstCycle = '0' and (NMICycle = '1' or IRQCycle = '1') then + P(Flag_I) <= '1'; + P(Flag_B) <= B_o; + end if; + if SO_n_o = '1' and SO_n = '0' then + P(Flag_V) <= '1'; + end if; + if RstCycle = '1' and Mode_r /= "00" then + P(Flag_1) <= '1'; + P(Flag_D) <= '0'; + P(Flag_I) <= '1'; + end if; + P(Flag_1) <= '1'; + + B_o <= P(Flag_B); + SO_n_o <= SO_n; + IRQ_n_o <= IRQ_n; + NMI_n_o <= NMI_n; + end if; + end if; + end if; + end process; + +--------------------------------------------------------------------------- +-- +-- Buses +-- +--------------------------------------------------------------------------- + + process (Res_n, Clk) + begin + if Res_n = '0' then + BusA_r <= (others => '0'); + BusB <= (others => '0'); + AD <= (others => '0'); + BAL <= (others => '0'); + BAH <= (others => '0'); + DL <= (others => '0'); + elsif Clk'event and Clk = '1' then + if (Enable = '1') then + if (Rdy = '1') then + BusA_r <= BusA; + BusB <= DI; + + case BAAdd is + when "01" => + -- BA Inc + AD <= std_logic_vector(unsigned(AD) + 1); + BAL <= std_logic_vector(unsigned(BAL) + 1); + when "10" => + -- BA Add + BAL <= std_logic_vector(resize(unsigned(BAL(7 downto 0)),9) + resize(unsigned(BusA),9)); + when "11" => + -- BA Adj + if BAL(8) = '1' then + BAH <= std_logic_vector(unsigned(BAH) + 1); + end if; + when others => + end case; + + -- ehenciak : modified to use Y register as well (bugfix) + if ADAdd = '1' then + if (AddY = '1') then + AD <= std_logic_vector(unsigned(AD) + unsigned(Y(7 downto 0))); + else + AD <= std_logic_vector(unsigned(AD) + unsigned(X(7 downto 0))); + end if; + end if; + + if IR = "00000000" then + BAL <= (others => '1'); + BAH <= (others => '1'); + if RstCycle = '1' then + BAL(2 downto 0) <= "100"; + elsif NMICycle = '1' then + BAL(2 downto 0) <= "010"; + else + BAL(2 downto 0) <= "110"; + end if; + if Set_addr_To_r = "11" then + BAL(0) <= '1'; + end if; + end if; + + + if LDDI = '1' then + DL <= DI; + end if; + if LDALU = '1' then + DL <= ALU_Q; + end if; + if LDAD = '1' then + AD <= DI; + end if; + if LDBAL = '1' then + BAL(7 downto 0) <= DI; + end if; + if LDBAH = '1' then + BAH <= DI; + end if; + end if; + end if; + end if; + end process; + + Break <= (BreakAtNA and not BAL(8)) or (PCAdd and not PCAdder(8)); + + + with Set_BusA_To select + BusA <= DI when "000", + ABC(7 downto 0) when "001", + X(7 downto 0) when "010", + Y(7 downto 0) when "011", + std_logic_vector(S(7 downto 0)) when "100", + P when "101", + (others => '-') when others; + + with Set_Addr_To_r select + A <= "0000000000000001" & std_logic_vector(S(7 downto 0)) when "01", + DBR & "00000000" & AD when "10", + "00000000" & BAH & BAL(7 downto 0) when "11", + PBR & std_logic_vector(PC(15 downto 8)) & std_logic_vector(PCAdder(7 downto 0)) when others; + + with Write_Data_r select + DO <= DL when "000", + ABC(7 downto 0) when "001", + X(7 downto 0) when "010", + Y(7 downto 0) when "011", + std_logic_vector(S(7 downto 0)) when "100", + P when "101", + std_logic_vector(PC(7 downto 0)) when "110", + std_logic_vector(PC(15 downto 8)) when others; + +------------------------------------------------------------------------- +-- +-- Main state machine +-- +------------------------------------------------------------------------- + + process (Res_n, Clk) + begin + if Res_n = '0' then + MCycle <= "001"; + RstCycle <= '1'; + IRQCycle <= '0'; + NMICycle <= '0'; + NMIAct <= '0'; + elsif Clk'event and Clk = '1' then + if (Enable = '1') then + if (really_rdy = '1') then + if MCycle = LCycle or Break = '1' then + MCycle <= "000"; + RstCycle <= '0'; + IRQCycle <= '0'; + NMICycle <= '0'; + if NMIAct = '1' then + NMICycle <= '1'; + elsif IRQ_n_o = '0' and P(Flag_I) = '0' then + IRQCycle <= '1'; + end if; + else + MCycle <= std_logic_vector(unsigned(MCycle) + 1); + end if; + + if NMICycle = '1' then + NMIAct <= '0'; + end if; + if NMI_n_o = '1' and NMI_n = '0' then + NMIAct <= '1'; + end if; + end if; + end if; + end if; + end process; + +end; diff --git a/Oric Atmos_MiST/rtl/t65_MCode.vhd b/Oric Atmos_MiST/rtl/t65_MCode.vhd new file mode 100644 index 00000000..68f9323e --- /dev/null +++ b/Oric Atmos_MiST/rtl/t65_MCode.vhd @@ -0,0 +1,1047 @@ +-- **** +-- T65(b) core. In an effort to merge and maintain bug fixes .... +-- +-- +-- Ver 301 Jump timing fixed +-- Ver 300 Bugfixes by ehenciak added +-- MikeJ March 2005 +-- Latest version from www.fpgaarcade.com (original www.opencores.org) +-- +-- **** +-- +-- 65xx compatible microprocessor core +-- +-- Version : 0246 + fix +-- +-- 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/t65/ +-- +-- Limitations : +-- +-- 65C02 +-- supported : inc, dec, phx, plx, phy, ply +-- missing : bra, ora, lda, cmp, sbc, tsb*2, trb*2, stz*2, bit*2, wai, stp, jmp, bbr*8, bbs*8 +-- +-- File history : +-- +-- 0246 : First release +-- + +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.numeric_std.all; +library work; +use work.pack_t65.all; + +entity T65_MCode is + port( + Mode : in std_logic_vector(1 downto 0); -- "00" => 6502, "01" => 65C02, "10" => 65816 + IR : in std_logic_vector(7 downto 0); + MCycle : in std_logic_vector(2 downto 0); + P : in std_logic_vector(7 downto 0); + LCycle : out std_logic_vector(2 downto 0); + ALU_Op : out std_logic_vector(3 downto 0); + Set_BusA_To : out std_logic_vector(2 downto 0); -- DI,A,X,Y,S,P + Set_Addr_To : out std_logic_vector(1 downto 0); -- PC Adder,S,AD,BA + Write_Data : out std_logic_vector(2 downto 0); -- DL,A,X,Y,S,P,PCL,PCH + Jump : out std_logic_vector(1 downto 0); -- PC,++,DIDL,Rel + BAAdd : out std_logic_vector(1 downto 0); -- None,DB Inc,BA Add,BA Adj + BreakAtNA : out std_logic; + ADAdd : out std_logic; + AddY : out std_logic; + PCAdd : out std_logic; + Inc_S : out std_logic; + Dec_S : out std_logic; + LDA : out std_logic; + LDP : out std_logic; + LDX : out std_logic; + LDY : out std_logic; + LDS : out std_logic; + LDDI : out std_logic; + LDALU : out std_logic; + LDAD : out std_logic; + LDBAL : out std_logic; + LDBAH : out std_logic; + SaveP : out std_logic; + Write : out std_logic + ); +end T65_MCode; + +architecture rtl of T65_MCode is + + signal Branch : std_logic; + +begin + + with IR(7 downto 5) select + Branch <= not P(Flag_N) when "000", + P(Flag_N) when "001", + not P(Flag_V) when "010", + P(Flag_V) when "011", + not P(Flag_C) when "100", + P(Flag_C) when "101", + not P(Flag_Z) when "110", + P(Flag_Z) when others; + + process (IR, MCycle, P, Branch, Mode) + begin + LCycle <= "001"; + Set_BusA_To <= "001"; -- A + Set_Addr_To <= (others => '0'); + Write_Data <= (others => '0'); + Jump <= (others => '0'); + BAAdd <= "00"; + BreakAtNA <= '0'; + ADAdd <= '0'; + PCAdd <= '0'; + Inc_S <= '0'; + Dec_S <= '0'; + LDA <= '0'; + LDP <= '0'; + LDX <= '0'; + LDY <= '0'; + LDS <= '0'; + LDDI <= '0'; + LDALU <= '0'; + LDAD <= '0'; + LDBAL <= '0'; + LDBAH <= '0'; + SaveP <= '0'; + Write <= '0'; + AddY <= '0'; + + case IR(7 downto 5) is + when "100" => + --{{{ + case IR(1 downto 0) is + when "00" => + Set_BusA_To <= "011"; -- Y + Write_Data <= "011"; -- Y + when "10" => + Set_BusA_To <= "010"; -- X + Write_Data <= "010"; -- X + when others => + Write_Data <= "001"; -- A + end case; + --}}} + when "101" => + --{{{ + case IR(1 downto 0) is + when "00" => + if IR(4) /= '1' or IR(2) /= '0' then + LDY <= '1'; + end if; + when "10" => + LDX <= '1'; + when others => + LDA <= '1'; + end case; + Set_BusA_To <= "000"; -- DI + --}}} + when "110" => + --{{{ + case IR(1 downto 0) is + when "00" => + if IR(4) = '0' then + LDY <= '1'; + end if; + Set_BusA_To <= "011"; -- Y + when others => + Set_BusA_To <= "001"; -- A + end case; + --}}} + when "111" => + --{{{ + case IR(1 downto 0) is + when "00" => + if IR(4) = '0' then + LDX <= '1'; + end if; + Set_BusA_To <= "010"; -- X + when others => + Set_BusA_To <= "001"; -- A + end case; + --}}} + when others => + end case; + + if IR(7 downto 6) /= "10" and IR(1 downto 0) = "10" then + Set_BusA_To <= "000"; -- DI + end if; + + case IR(4 downto 0) is + when "00000" | "01000" | "01010" | "11000" | "11010" => + --{{{ + -- Implied + case IR is + when "00000000" => + -- BRK + LCycle <= "110"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= "01"; -- S + Write_Data <= "111"; -- PCH + Write <= '1'; + when 2 => + Dec_S <= '1'; + Set_Addr_To <= "01"; -- S + Write_Data <= "110"; -- PCL + Write <= '1'; + when 3 => + Dec_S <= '1'; + Set_Addr_To <= "01"; -- S + Write_Data <= "101"; -- P + Write <= '1'; + when 4 => + Dec_S <= '1'; + Set_Addr_To <= "11"; -- BA + when 5 => + LDDI <= '1'; + Set_Addr_To <= "11"; -- BA + when 6 => + Jump <= "10"; -- DIDL + when others => + end case; + when "00100000" => + -- JSR + LCycle <= "101"; + case to_integer(unsigned(MCycle)) is + when 1 => + Jump <= "01"; + LDDI <= '1'; + Set_Addr_To <= "01"; -- S + when 2 => + Set_Addr_To <= "01"; -- S + Write_Data <= "111"; -- PCH + Write <= '1'; + when 3 => + Dec_S <= '1'; + Set_Addr_To <= "01"; -- S + Write_Data <= "110"; -- PCL + Write <= '1'; + when 4 => + Dec_S <= '1'; + when 5 => + Jump <= "10"; -- DIDL + when others => + end case; + when "01000000" => + -- RTI + LCycle <= "101"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= "01"; -- S + when 2 => + Inc_S <= '1'; + Set_Addr_To <= "01"; -- S + when 3 => + Inc_S <= '1'; + Set_Addr_To <= "01"; -- S + Set_BusA_To <= "000"; -- DI + when 4 => + LDP <= '1'; + Inc_S <= '1'; + LDDI <= '1'; + Set_Addr_To <= "01"; -- S + when 5 => + Jump <= "10"; -- DIDL + when others => + end case; + when "01100000" => + -- RTS + LCycle <= "101"; + case to_integer(unsigned(MCycle)) is + when 1 => + Set_Addr_To <= "01"; -- S + when 2 => + Inc_S <= '1'; + Set_Addr_To <= "01"; -- S + when 3 => + Inc_S <= '1'; + LDDI <= '1'; + Set_Addr_To <= "01"; -- S + when 4 => + Jump <= "10"; -- DIDL + when 5 => + Jump <= "01"; + when others => + end case; + when "00001000" | "01001000" | "01011010" | "11011010" => + -- PHP, PHA, PHY*, PHX* + LCycle <= "010"; + if Mode = "00" and IR(1) = '1' then + LCycle <= "001"; + end if; + case to_integer(unsigned(MCycle)) is + when 1 => + case IR(7 downto 4) is + when "0000" => Write_Data <= "101"; -- P + when "0100" => Write_Data <= "001"; -- A + when "0101" => Write_Data <= "011"; -- Y + when "1101" => Write_Data <= "010"; -- X + when others => + end case; + Write <= '1'; + Set_Addr_To <= "01"; -- S + when 2 => + Dec_S <= '1'; + when others => + end case; + when "00101000" | "01101000" | "01111010" | "11111010" => + -- PLP, PLA, PLY*, PLX* + LCycle <= "011"; + if Mode = "00" and IR(1) = '1' then + LCycle <= "001"; + end if; + case IR(7 downto 4) is + when "0010" => + LDP <= '1'; + when "0110" => + LDA <= '1'; + when "0111" => + if Mode /= "00" then + LDY <= '1'; + end if; + when "1111" => + if Mode /= "00" then + LDX <= '1'; + end if; + when others => + end case; + case to_integer(unsigned(MCycle)) is + when 0 => + SaveP <= '1'; + when 1 => + Set_Addr_To <= "01"; -- S + when 2 => + Inc_S <= '1'; + Set_Addr_To <= "01"; -- S + when 3 => + Set_BusA_To <= "000"; -- DI + when others => + end case; + when "10100000" | "11000000" | "11100000" => + -- LDY, CPY, CPX + -- Immediate + case to_integer(unsigned(MCycle)) is + when 0 => + when 1 => + Jump <= "01"; + when others => + end case; + when "10001000" => + -- DEY + LDY <= '1'; + case to_integer(unsigned(MCycle)) is + when 0 => + when 1 => + Set_BusA_To <= "011"; -- Y + when others => + end case; + when "11001010" => + -- DEX + LDX <= '1'; + case to_integer(unsigned(MCycle)) is + when 0 => + when 1 => + Set_BusA_To <= "010"; -- X + when others => + end case; + when "00011010" | "00111010" => + -- INC*, DEC* + if Mode /= "00" then + LDA <= '1'; -- A + end if; + case to_integer(unsigned(MCycle)) is + when 0 => + when 1 => + Set_BusA_To <= "100"; -- S + when others => + end case; + when "00001010" | "00101010" | "01001010" | "01101010" => + -- ASL, ROL, LSR, ROR + LDA <= '1'; -- A + Set_BusA_To <= "001"; -- A + case to_integer(unsigned(MCycle)) is + when 0 => + when 1 => + when others => + end case; + when "10001010" | "10011000" => + -- TYA, TXA + LDA <= '1'; -- A + case to_integer(unsigned(MCycle)) is + when 0 => + when 1 => + when others => + end case; + when "10101010" | "10101000" => + -- TAX, TAY + case to_integer(unsigned(MCycle)) is + when 0 => + when 1 => + Set_BusA_To <= "001"; -- A + when others => + end case; + when "10011010" => + -- TXS + case to_integer(unsigned(MCycle)) is + when 0 => + LDS <= '1'; + when 1 => + when others => + end case; + when "10111010" => + -- TSX + LDX <= '1'; + case to_integer(unsigned(MCycle)) is + when 0 => + when 1 => + Set_BusA_To <= "100"; -- S + when others => + end case; + + -- when "00011000" | "00111000" | "01011000" | "01111000" | "10111000" | "11011000" | "11111000" | "11001000" | "11101000" => + -- -- CLC, SEC, CLI, SEI, CLV, CLD, SED, INY, INX + -- case to_integer(unsigned(MCycle)) is + -- when 1 => + -- when others => + -- end case; + when others => + case to_integer(unsigned(MCycle)) is + when 0 => + when others => + end case; + end case; + --}}} + + when "00001" | "00011" => + --{{{ + -- Zero Page Indexed Indirect (d,x) + LCycle <= "101"; + if IR(7 downto 6) /= "10" then + LDA <= '1'; + end if; + case to_integer(unsigned(MCycle)) is + when 0 => + when 1 => + Jump <= "01"; + LDAD <= '1'; + Set_Addr_To <= "10"; -- AD + when 2 => + ADAdd <= '1'; + Set_Addr_To <= "10"; -- AD + when 3 => + BAAdd <= "01"; -- DB Inc + LDBAL <= '1'; + Set_Addr_To <= "10"; -- AD + when 4 => + LDBAH <= '1'; + if IR(7 downto 5) = "100" then + Write <= '1'; + end if; + Set_Addr_To <= "11"; -- BA + when 5 => + when others => + end case; + --}}} + + when "01001" | "01011" => + --{{{ + -- Immediate + LDA <= '1'; + case to_integer(unsigned(MCycle)) is + when 0 => + when 1 => + Jump <= "01"; + when others => + end case; + + --}}} + + when "00010" | "10010" => + --{{{ + -- Immediate, KIL + LDX <= '1'; + case to_integer(unsigned(MCycle)) is + when 0 => + when 1 => + if IR = "10100010" then + -- LDX + Jump <= "01"; + else + -- KIL !!!!!!!!!!!!!!!!!!!!!!!!!!!!! + end if; + when others => + end case; + --}}} + + when "00100" => + --{{{ + -- Zero Page + LCycle <= "010"; + case to_integer(unsigned(MCycle)) is + when 0 => + if IR(7 downto 5) = "001" then + SaveP <= '1'; + end if; + when 1 => + Jump <= "01"; + LDAD <= '1'; + if IR(7 downto 5) = "100" then + Write <= '1'; + end if; + Set_Addr_To <= "10"; -- AD + when 2 => + when others => + end case; + --}}} + + when "00101" | "00110" | "00111" => + --{{{ + -- Zero Page + if IR(7 downto 6) /= "10" and IR(1 downto 0) = "10" then + -- Read-Modify-Write + LCycle <= "100"; + case to_integer(unsigned(MCycle)) is + when 1 => + Jump <= "01"; + LDAD <= '1'; + Set_Addr_To <= "10"; -- AD + when 2 => + LDDI <= '1'; + Write <= '1'; + Set_Addr_To <= "10"; -- AD + when 3 => + LDALU <= '1'; + SaveP <= '1'; + Write <= '1'; + Set_Addr_To <= "10"; -- AD + when 4 => + when others => + end case; + else + LCycle <= "010"; + if IR(7 downto 6) /= "10" then + LDA <= '1'; + end if; + case to_integer(unsigned(MCycle)) is + when 0 => + when 1 => + Jump <= "01"; + LDAD <= '1'; + if IR(7 downto 5) = "100" then + Write <= '1'; + end if; + Set_Addr_To <= "10"; -- AD + when 2 => + when others => + end case; + end if; + --}}} + + when "01100" => + --{{{ + -- Absolute + if IR(7 downto 6) = "01" and IR(4 downto 0) = "01100" then + -- JMP + if IR(5) = '0' then + --LCycle <= "011"; + LCycle <= "010"; + case to_integer(unsigned(MCycle)) is + when 1 => + Jump <= "01"; + LDDI <= '1'; + when 2 => + Jump <= "10"; -- DIDL + when others => + end case; + else + LCycle <= "101"; + case to_integer(unsigned(MCycle)) is + when 2 => + Jump <= "01"; + LDDI <= '1'; + LDBAL <= '1'; + when 3 => + LDBAH <= '1'; + if Mode /= "00" then + Jump <= "10"; -- DIDL + end if; + if Mode = "00" then + Set_Addr_To <= "11"; -- BA + end if; + when 4 => + LDDI <= '1'; + if Mode = "00" then + Set_Addr_To <= "11"; -- BA + BAAdd <= "01"; -- DB Inc + else + Jump <= "01"; + end if; + when 5 => + Jump <= "10"; -- DIDL + when others => + end case; + end if; + else + LCycle <= "011"; + case to_integer(unsigned(MCycle)) is + when 0 => + if IR(7 downto 5) = "001" then + SaveP <= '1'; + end if; + when 1 => + Jump <= "01"; + LDBAL <= '1'; + when 2 => + Jump <= "01"; + LDBAH <= '1'; + if IR(7 downto 5) = "100" then + Write <= '1'; + end if; + Set_Addr_To <= "11"; -- BA + when 3 => + when others => + end case; + end if; + --}}} + + when "01101" | "01110" | "01111" => + --{{{ + -- Absolute + if IR(7 downto 6) /= "10" and IR(1 downto 0) = "10" then + -- Read-Modify-Write + LCycle <= "101"; + case to_integer(unsigned(MCycle)) is + when 1 => + Jump <= "01"; + LDBAL <= '1'; + when 2 => + Jump <= "01"; + LDBAH <= '1'; + Set_Addr_To <= "11"; -- BA + when 3 => + LDDI <= '1'; + Write <= '1'; + Set_Addr_To <= "11"; -- BA + when 4 => + Write <= '1'; + LDALU <= '1'; + SaveP <= '1'; + Set_Addr_To <= "11"; -- BA + when 5 => + SaveP <= '0'; -- MIKEJ was 1 + when others => + end case; + else + LCycle <= "011"; + if IR(7 downto 6) /= "10" then + LDA <= '1'; + end if; + case to_integer(unsigned(MCycle)) is + when 0 => + when 1 => + Jump <= "01"; + LDBAL <= '1'; + when 2 => + Jump <= "01"; + LDBAH <= '1'; + if IR(7 downto 5) = "100" then + Write <= '1'; + end if; + Set_Addr_To <= "11"; -- BA + when 3 => + when others => + end case; + end if; + --}}} + + when "10000" => + --{{{ + -- Relative + + -- This circuit dictates when the last + -- microcycle occurs for the branch depending on + -- whether or not the branch is taken and if a page + -- is crossed... + if (Branch = '1') then + + LCycle <= "011"; -- We're done @ T3 if branching...upper + -- level logic will stop at T2 if no page cross + -- (See the Break signal) + else + + LCycle <= "001"; + + end if; + + -- This decodes the current microcycle and takes the + -- proper course of action... + case to_integer(unsigned(MCycle)) is + + -- On the T1 microcycle, increment the program counter + -- and instruct the upper level logic to fetch the offset + -- from the Din bus and store it in the data latches. This + -- will be the last microcycle if the branch isn't taken. + when 1 => + + Jump <= "01"; -- Increments the PC by one (PC will now be PC+2) + -- from microcycle T0. + + LDDI <= '1'; -- Tells logic in top level (T65.vhd) to route + -- the Din bus to the memory data latch (DL) + -- so that the branch offset is fetched. + + -- In microcycle T2, tell the logic in the top level to + -- add the offset. If the most significant byte of the + -- program counter (i.e. the current "page") does not need + -- updating, we are done here...the Break signal at the + -- T65.vhd level takes care of that... + when 2 => + + Jump <= "11"; -- Tell the PC Jump logic to use relative mode. + + PCAdd <= '1'; -- This tells the PC adder to update itself with + -- the current offset recently fetched from + -- memory. + + -- The following is microcycle T3 : + -- The program counter should be completely updated + -- on this cycle after the page cross is detected. + -- We don't need to do anything here... + when 3 => + + + when others => null; -- Do nothing. + + end case; + --}}} + + when "10001" | "10011" => + --{{{ + -- Zero Page Indirect Indexed (d),y + LCycle <= "101"; + if IR(7 downto 6) /= "10" then + LDA <= '1'; + end if; + case to_integer(unsigned(MCycle)) is + when 0 => + when 1 => + Jump <= "01"; + LDAD <= '1'; + Set_Addr_To <= "10"; -- AD + when 2 => + LDBAL <= '1'; + BAAdd <= "01"; -- DB Inc + Set_Addr_To <= "10"; -- AD + when 3 => + Set_BusA_To <= "011"; -- Y + BAAdd <= "10"; -- BA Add + LDBAH <= '1'; + Set_Addr_To <= "11"; -- BA + when 4 => + BAAdd <= "11"; -- BA Adj + if IR(7 downto 5) = "100" then + Write <= '1'; + else + BreakAtNA <= '1'; + end if; + Set_Addr_To <= "11"; -- BA + when 5 => + when others => + end case; + --}}} + + when "10100" | "10101" | "10110" | "10111" => + --{{{ + -- Zero Page, X + if IR(7 downto 6) /= "10" and IR(1 downto 0) = "10" then + -- Read-Modify-Write + LCycle <= "101"; + case to_integer(unsigned(MCycle)) is + when 1 => + Jump <= "01"; + LDAD <= '1'; + Set_Addr_To <= "10"; -- AD + when 2 => + ADAdd <= '1'; + Set_Addr_To <= "10"; -- AD + when 3 => + LDDI <= '1'; + Write <= '1'; + Set_Addr_To <= "10"; -- AD + when 4 => + LDALU <= '1'; + SaveP <= '1'; + Write <= '1'; + Set_Addr_To <= "10"; -- AD + when 5 => + when others => + end case; + else + LCycle <= "011"; + if IR(7 downto 6) /= "10" then + LDA <= '1'; + end if; + case to_integer(unsigned(MCycle)) is + when 0 => + when 1 => + Jump <= "01"; + LDAD <= '1'; + Set_Addr_To <= "10"; -- AD + when 2 => + ADAdd <= '1'; + -- Added this check for Y reg. use... + if (IR(3 downto 0) = "0110") then + AddY <= '1'; + end if; + + if IR(7 downto 5) = "100" then + Write <= '1'; + end if; + Set_Addr_To <= "10"; -- AD + when 3 => null; + when others => + end case; + end if; + --}}} + + when "11001" | "11011" => + --{{{ + -- Absolute Y + LCycle <= "100"; + if IR(7 downto 6) /= "10" then + LDA <= '1'; + end if; + case to_integer(unsigned(MCycle)) is + when 0 => + when 1 => + Jump <= "01"; + LDBAL <= '1'; + when 2 => + Jump <= "01"; + Set_BusA_To <= "011"; -- Y + BAAdd <= "10"; -- BA Add + LDBAH <= '1'; + Set_Addr_To <= "11"; -- BA + when 3 => + BAAdd <= "11"; -- BA adj + if IR(7 downto 5) = "100" then + Write <= '1'; + else + BreakAtNA <= '1'; + end if; + Set_Addr_To <= "11"; -- BA + when 4 => + when others => + end case; + --}}} + + when "11100" | "11101" | "11110" | "11111" => + --{{{ + -- Absolute X + + if IR(7 downto 6) /= "10" and IR(1 downto 0) = "10" then + -- Read-Modify-Write + LCycle <= "110"; + case to_integer(unsigned(MCycle)) is + when 1 => + Jump <= "01"; + LDBAL <= '1'; + when 2 => + Jump <= "01"; + Set_BusA_To <= "010"; -- X + BAAdd <= "10"; -- BA Add + LDBAH <= '1'; + Set_Addr_To <= "11"; -- BA + when 3 => + BAAdd <= "11"; -- BA adj + Set_Addr_To <= "11"; -- BA + when 4 => + LDDI <= '1'; + Write <= '1'; + Set_Addr_To <= "11"; -- BA + when 5 => + LDALU <= '1'; + SaveP <= '1'; + Write <= '1'; + Set_Addr_To <= "11"; -- BA + when 6 => + when others => + end case; + else + LCycle <= "100"; + if IR(7 downto 6) /= "10" then + LDA <= '1'; + end if; + case to_integer(unsigned(MCycle)) is + when 0 => + when 1 => + Jump <= "01"; + LDBAL <= '1'; + when 2 => + Jump <= "01"; + -- mikej + -- special case 0xBE which uses Y reg as index!! + if (IR = "10111110") then + Set_BusA_To <= "011"; -- Y + else + Set_BusA_To <= "010"; -- X + end if; + BAAdd <= "10"; -- BA Add + LDBAH <= '1'; + Set_Addr_To <= "11"; -- BA + when 3 => + BAAdd <= "11"; -- BA adj + if IR(7 downto 5) = "100" then + Write <= '1'; + else + BreakAtNA <= '1'; + end if; + Set_Addr_To <= "11"; -- BA + when 4 => + when others => + end case; + end if; + --}}} + when others => + end case; + end process; + + process (IR, MCycle) + begin + -- ORA, AND, EOR, ADC, NOP, LD, CMP, SBC + -- ASL, ROL, LSR, ROR, BIT, LD, DEC, INC + case IR(1 downto 0) is + when "00" => + --{{{ + case IR(4 downto 2) is + when "000" | "001" | "011" => + case IR(7 downto 5) is + when "110" | "111" => + -- CP + ALU_Op <= "0110"; + when "101" => + -- LD + ALU_Op <= "0101"; + when "001" => + -- BIT + ALU_Op <= "1100"; + when others => + -- NOP/ST + ALU_Op <= "0100"; + end case; + when "010" => + case IR(7 downto 5) is + when "111" | "110" => + -- IN + ALU_Op <= "1111"; + when "100" => + -- DEY + ALU_Op <= "1110"; + when others => + -- LD + ALU_Op <= "1101"; + end case; + when "110" => + case IR(7 downto 5) is + when "100" => + -- TYA + ALU_Op <= "1101"; + when others => + ALU_Op <= "----"; + end case; + when others => + case IR(7 downto 5) is + when "101" => + -- LD + ALU_Op <= "1101"; + when others => + ALU_Op <= "0100"; + end case; + end case; + --}}} + when "01" => -- OR + --{{{ + ALU_Op(3) <= '0'; + ALU_Op(2 downto 0) <= IR(7 downto 5); + --}}} + when "10" => + --{{{ + ALU_Op(3) <= '1'; + ALU_Op(2 downto 0) <= IR(7 downto 5); + case IR(7 downto 5) is + when "000" => + if IR(4 downto 2) = "110" then + -- INC + ALU_Op <= "1111"; + end if; + when "001" => + if IR(4 downto 2) = "110" then + -- DEC + ALU_Op <= "1110"; + end if; + when "100" => + if IR(4 downto 2) = "010" then + -- TXA + ALU_Op <= "0101"; + else + ALU_Op <= "0100"; + end if; + when others => + end case; + --}}} + when others => + --{{{ + case IR(7 downto 5) is + when "100" => + ALU_Op <= "0100"; + when others => + if MCycle = "000" then + ALU_Op(3) <= '0'; + ALU_Op(2 downto 0) <= IR(7 downto 5); + else + ALU_Op(3) <= '1'; + ALU_Op(2 downto 0) <= IR(7 downto 5); + end if; + end case; + --}}} + end case; + end process; + +end; diff --git a/Oric Atmos_MiST/rtl/t65_alu.vhd b/Oric Atmos_MiST/rtl/t65_alu.vhd new file mode 100644 index 00000000..38b84a06 --- /dev/null +++ b/Oric Atmos_MiST/rtl/t65_alu.vhd @@ -0,0 +1,261 @@ +-- **** +-- T65(b) core. In an effort to merge and maintain bug fixes .... +-- +-- +-- Ver 300 Bugfixes by ehenciak added +-- MikeJ March 2005 +-- Latest version from www.fpgaarcade.com (original www.opencores.org) +-- +-- **** +-- +-- 6502 compatible microprocessor core +-- +-- Version : 0245 +-- +-- 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/t65/ +-- +-- Limitations : +-- +-- File history : +-- +-- 0245 : First version +-- + +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.numeric_std.all; +library work; +use work.pack_t65.all; + +entity T65_ALU is + port( + Mode : in std_logic_vector(1 downto 0); -- "00" => 6502, "01" => 65C02, "10" => 65816 + Op : in std_logic_vector(3 downto 0); + BusA : in std_logic_vector(7 downto 0); + BusB : in std_logic_vector(7 downto 0); + P_In : in std_logic_vector(7 downto 0); + P_Out : out std_logic_vector(7 downto 0); + Q : out std_logic_vector(7 downto 0) + ); +end T65_ALU; + +architecture rtl of T65_ALU is + + -- AddSub variables (temporary signals) + signal ADC_Z : std_logic; + signal ADC_C : std_logic; + signal ADC_V : std_logic; + signal ADC_N : std_logic; + signal ADC_Q : std_logic_vector(7 downto 0); + signal SBC_Z : std_logic; + signal SBC_C : std_logic; + signal SBC_V : std_logic; + signal SBC_N : std_logic; + signal SBC_Q : std_logic_vector(7 downto 0); + +begin + + process (P_In, BusA, BusB) + variable AL : unsigned(6 downto 0); + variable AH : unsigned(6 downto 0); + variable C : std_logic; + begin + AL := resize(unsigned(BusA(3 downto 0) & P_In(Flag_C)), 7) + resize(unsigned(BusB(3 downto 0) & "1"), 7); + AH := resize(unsigned(BusA(7 downto 4) & AL(5)), 7) + resize(unsigned(BusB(7 downto 4) & "1"), 7); + +-- pragma translate_off + if is_x(std_logic_vector(AL)) then AL := "0000000"; end if; + if is_x(std_logic_vector(AH)) then AH := "0000000"; end if; +-- pragma translate_on + + if AL(4 downto 1) = 0 and AH(4 downto 1) = 0 then + ADC_Z <= '1'; + else + ADC_Z <= '0'; + end if; + + if AL(5 downto 1) > 9 and P_In(Flag_D) = '1' then + AL(6 downto 1) := AL(6 downto 1) + 6; + end if; + + C := AL(6) or AL(5); + AH := resize(unsigned(BusA(7 downto 4) & C), 7) + resize(unsigned(BusB(7 downto 4) & "1"), 7); + + ADC_N <= AH(4); + ADC_V <= (AH(4) xor BusA(7)) and not (BusA(7) xor BusB(7)); + +-- pragma translate_off + if is_x(std_logic_vector(AH)) then AH := "0000000"; end if; +-- pragma translate_on + + if AH(5 downto 1) > 9 and P_In(Flag_D) = '1' then + AH(6 downto 1) := AH(6 downto 1) + 6; + end if; + + ADC_C <= AH(6) or AH(5); + + ADC_Q <= std_logic_vector(AH(4 downto 1) & AL(4 downto 1)); + end process; + + process (Op, P_In, BusA, BusB) + variable AL : unsigned(6 downto 0); + variable AH : unsigned(5 downto 0); + variable C : std_logic; + begin + C := P_In(Flag_C) or not Op(0); + AL := resize(unsigned(BusA(3 downto 0) & C), 7) - resize(unsigned(BusB(3 downto 0) & "1"), 6); + AH := resize(unsigned(BusA(7 downto 4) & "0"), 6) - resize(unsigned(BusB(7 downto 4) & AL(5)), 6); + +-- pragma translate_off + if is_x(std_logic_vector(AL)) then AL := "0000000"; end if; + if is_x(std_logic_vector(AH)) then AH := "000000"; end if; +-- pragma translate_on + + if AL(4 downto 1) = 0 and AH(4 downto 1) = 0 then + SBC_Z <= '1'; + else + SBC_Z <= '0'; + end if; + + SBC_C <= not AH(5); + SBC_V <= (AH(4) xor BusA(7)) and (BusA(7) xor BusB(7)); + SBC_N <= AH(4); + + if P_In(Flag_D) = '1' then + if AL(5) = '1' then + AL(5 downto 1) := AL(5 downto 1) - 6; + end if; + AH := resize(unsigned(BusA(7 downto 4) & "0"), 6) - resize(unsigned(BusB(7 downto 4) & AL(6)), 6); + if AH(5) = '1' then + AH(5 downto 1) := AH(5 downto 1) - 6; + end if; + end if; + + SBC_Q <= std_logic_vector(AH(4 downto 1) & AL(4 downto 1)); + end process; + + process (Op, P_In, BusA, BusB, + ADC_Z, ADC_C, ADC_V, ADC_N, ADC_Q, + SBC_Z, SBC_C, SBC_V, SBC_N, SBC_Q) + variable Q_t : std_logic_vector(7 downto 0); + begin + -- ORA, AND, EOR, ADC, NOP, LD, CMP, SBC + -- ASL, ROL, LSR, ROR, BIT, LD, DEC, INC + P_Out <= P_In; + Q_t := BusA; + case Op(3 downto 0) is + when "0000" => + -- ORA + Q_t := BusA or BusB; + when "0001" => + -- AND + Q_t := BusA and BusB; + when "0010" => + -- EOR + Q_t := BusA xor BusB; + when "0011" => + -- ADC + P_Out(Flag_V) <= ADC_V; + P_Out(Flag_C) <= ADC_C; + Q_t := ADC_Q; + when "0101" | "1101" => + -- LDA + when "0110" => + -- CMP + P_Out(Flag_C) <= SBC_C; + when "0111" => + -- SBC + P_Out(Flag_V) <= SBC_V; + P_Out(Flag_C) <= SBC_C; + Q_t := SBC_Q; + when "1000" => + -- ASL + Q_t := BusA(6 downto 0) & "0"; + P_Out(Flag_C) <= BusA(7); + when "1001" => + -- ROL + Q_t := BusA(6 downto 0) & P_In(Flag_C); + P_Out(Flag_C) <= BusA(7); + when "1010" => + -- LSR + Q_t := "0" & BusA(7 downto 1); + P_Out(Flag_C) <= BusA(0); + when "1011" => + -- ROR + Q_t := P_In(Flag_C) & BusA(7 downto 1); + P_Out(Flag_C) <= BusA(0); + when "1100" => + -- BIT + P_Out(Flag_V) <= BusB(6); + when "1110" => + -- DEC + Q_t := std_logic_vector(unsigned(BusA) - 1); + when "1111" => + -- INC + Q_t := std_logic_vector(unsigned(BusA) + 1); + when others => + end case; + + case Op(3 downto 0) is + when "0011" => + P_Out(Flag_N) <= ADC_N; + P_Out(Flag_Z) <= ADC_Z; + when "0110" | "0111" => + P_Out(Flag_N) <= SBC_N; + P_Out(Flag_Z) <= SBC_Z; + when "0100" => + when "1100" => + P_Out(Flag_N) <= BusB(7); + if (BusA and BusB) = "00000000" then + P_Out(Flag_Z) <= '1'; + else + P_Out(Flag_Z) <= '0'; + end if; + when others => + P_Out(Flag_N) <= Q_t(7); + if Q_t = "00000000" then + P_Out(Flag_Z) <= '1'; + else + P_Out(Flag_Z) <= '0'; + end if; + end case; + + Q <= Q_t; + end process; + +end; diff --git a/Oric Atmos_MiST/rtl/tone_generator.vhd b/Oric Atmos_MiST/rtl/tone_generator.vhd new file mode 100644 index 00000000..b21ff828 --- /dev/null +++ b/Oric Atmos_MiST/rtl/tone_generator.vhd @@ -0,0 +1,59 @@ +-- +-- TONE_GENERATOR.vhd +-- +-- Generator a tone. +-- +-- Copyright (C)2001 SEILEBOST +-- All rights reserved. +-- +-- $Id: TONE_GENERATOR.vhd, v0.2 2001/11/02 00:00:00 SEILEBOST $ +-- +-- Question : if WR is set To add one to count ? + +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_ARITH.ALL; +use IEEE.STD_LOGIC_UNSIGNED.ALL; + +entity TONE_GENERATOR is + Port ( CLK : in std_logic; + RST : in std_logic; + WR : in std_logic; + CS_COARSE : in std_logic; + CS_FINE : in std_logic; + DATA_COARSE : in std_logic_vector(7 downto 0); + DATA_FINE : in std_logic_vector(7 downto 0); + OUT_TONE : inout std_logic ); +end TONE_GENERATOR; + +architecture Behavioral of TONE_GENERATOR is + +SIGNAL COUNT : std_logic_vector(15 downto 0); + +begin + + PROCESS(CLK, RST,CS_COARSE, CS_FINE) + BEGIN + if (RST = '1') then + COUNT <= "0000000000000000"; + OUT_TONE <= '0'; + elsif (CLK'event and CLK = '1') then + if (WR = '1') then + if (CS_FINE = '1') then + COUNT(7 downto 0) <= DATA_FINE; + elsif (CS_COARSE = '1') then + COUNT(15 downto 8) <= DATA_COARSE; + end if; + else + if (COUNT = "0000000000000000") then + COUNT(15 downto 8) <= DATA_COARSE; + COUNT(7 downto 0) <= DATA_FINE; + OUT_TONE <= NOT OUT_TONE; + else + COUNT <= COUNT - 1; + end if; + end if; + end if; + end process; + +end Behavioral; diff --git a/Oric Atmos_MiST/rtl/ula.vhd b/Oric Atmos_MiST/rtl/ula.vhd new file mode 100644 index 00000000..a9f40015 --- /dev/null +++ b/Oric Atmos_MiST/rtl/ula.vhd @@ -0,0 +1,525 @@ +-- +-- A simulation model of ULA +-- Copyright (c) seilebost - 2001 - 2009 +-- +-- All rights reserved +-- +-- Redistribution and use in source and synthezised forms, with or without +-- modification, are permitted provided that the following conditions are met: +-- +-- Redistributions of source code must retain the above copyright notice, +-- this list of conditions and the following disclaimer. +-- +-- Redistributions in synthesized form must reproduce the above copyright +-- notice, this list of conditions and the following disclaimer in the +-- documentation and/or other materials provided with the distribution. +-- +-- Neither the name of the author nor the names of other contributors may +-- be used to endorse or promote products derived from this software without +-- specific prior written permission. +-- +-- THIS CODE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +-- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +-- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +-- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE +-- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +-- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +-- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +-- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +-- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +-- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +-- POSSIBILITY OF SUCH DAMAGE. +-- +-- You are responsible for any legal issues arising from your use of this code. +-- +-- The latest version of this file can be found at: www.fpgaarcade.com +-- +-- Email seilebost@free.fr +-- +-- +-- +-- +-- 2013 Significant rewrite by d18c7db(a)hotmail +-- +-- Combined all ULA submodules into one file +-- Elliminated gated clocks +-- Overall simplified and streamlined RTL +-- Reduced number of synthesis warnings +-- Fixed attribute decoding +-- Fixed phase1/phase2 address generation +-- Changes in timing signal generation +-- Fixed attributes not alligned to characters on screen +-- Implemented 50/60Hz attribute + +library ieee; + use ieee.std_logic_1164.all; + use ieee.std_logic_unsigned.all; + +-- ULA pinout +-- 1 MUX U RAM_D1 40 +-- 2 RAM_D2 RAM_D0 39 +-- 3 RAM_D3 RAM_D7 38 +-- 4 RAM_D4 RAM_D5 37 +-- 5 D5 RAM_D6 36 +-- 6 GND A12 35 +-- 7 CLK D6 34 +-- 8 D0 A09 33 +-- 9 CAS A08 32 +-- 10 RAS A10 31 +-- 11 D2 A15 30 +-- 12 D3 A14 29 +-- 13 D4 RAM_R/W 28 +-- 14 PHI R/W 27 +-- 15 A11 MAP 26 +-- 16 SYNC I/O 25 +-- 17 D1 Vcc 24 +-- 18 D7 ROM_CS 23 +-- 19 BLU A13 22 +-- 20 GRN RED 21 + +entity ula is +port ( + RESETn : in std_logic; -- RESET master + CLK_4 : out std_logic; -- 4 MHz internal + + CLK : in std_logic; -- 24 MHz -- pin 07 + PHI2 : out std_logic; -- 1 MHz CPU & system -- pin 14 + RW : in std_logic; -- R/W from CPU -- pin 27 + MAPn : in std_logic; -- MAP -- pin 26 + DB : in std_logic_vector( 7 downto 0); -- DATA BUS -- pin 18,34,5,13,12,11,17,8 + ADDR : in std_logic_vector(15 downto 0); -- ADDRESS BUS -- pin 30,29,22,35,15,31,33,32, A7,A6,A5,A4,A3,A2,A1,A0 + + -- SRAM + CSRAMn : out std_logic; + SRAM_AD : out std_logic_vector(15 downto 0); + SRAM_OE : out std_logic; + SRAM_CE : out std_logic; + SRAM_WE : out std_logic; + LATCH_SRAM : out std_logic; + + -- DRAM +-- AD_RAM : out std_logic_vector( 7 downto 0); -- ADDRESS BUS for dynamic ram -- pin 38,36,37,4,3,2,40,39 +-- RASn : out std_logic; -- RAS for dynamic ram -- pin 10 +-- CASn : out std_logic; -- CAS for dynamic ram -- pin 09 +-- MUX : out std_logic; -- MUX selector -- pin 01 +-- RW_RAM : out std_logic; -- Read/Write for dynamic ram -- pin 28 + + CSIOn : out std_logic; -- Chip select IO (VIA) -- pin 25 + CSROMn : out std_logic; -- ROM select -- pin 23 + R : out std_logic; -- Red -- pin 21 + G : out std_logic; -- Green -- pin 20 + B : out std_logic; -- Blue -- pin 19 + SYNC : out std_logic; -- Synchronisation -- pin 16 + -- VCC -- pin 24 + -- GND -- pin 06 + HSYNC : out std_logic; + VSYNC : out std_logic +); +end; + +architecture RTL of ula is + + -- Signal CLOCK + signal CLK_24 : std_logic; -- CLOCK 24 MHz internal + signal CLK_4_INT : std_logic; -- CLOCK 4 MHz internal + signal CLK_1_INT : std_logic; -- CLOCK 1 MHz internal + signal CLK_PIXEL_INT : std_logic; -- CLOCK PIXEL internal + signal CLK_FLASH : std_logic; -- CLOCK FLASH external + + -- Data Bus Internal + signal DB_INT : std_logic_vector( 7 downto 0); + + -- Manage memory access + signal VAP1 : std_logic_vector(15 downto 0); -- VIDEO ADDRESS PHASE 1 + signal VAP2 : std_logic_vector(15 downto 0); -- VIDEO ADDRESS PHASE 2 + signal lADDR : std_logic_vector(15 downto 0); -- BUS ADDRESS PROCESSOR + signal RW_INT : std_logic; -- Read/Write INTERNAL FROM CPU + + -- local signal + signal lHIRES_SEL : std_logic; -- TXT/HIRES SELECT + signal HIRES_DEC : std_logic; -- TXT/HIRES DECODE + signal lDBLHGT_SEL : std_logic; -- Double Height SELECT + signal lALT_SEL : std_logic; -- Character set select + signal lFORCETXT : std_logic; -- Force text mode + signal isAttrib : std_logic; -- Attrib + signal ATTRIB_DEC : std_logic; -- Attrib decode +-- signal LD_REG_0 : std_logic; -- Load zero into video register + signal RELD_REG : std_logic; -- Reload from register to shift + signal DATABUS_EN : std_logic; -- Data bus enable + signal lCOMPSYNC : std_logic; -- Composite Synchronization for video + signal lHSYNCn : std_logic; -- Horizontal Synchronization for video + signal lVSYNC50n : std_logic; -- Vertical Synchronization for 50Hz video + signal lVSYNC60n : std_logic; -- Vertical Synchronization for 60Hz video + signal lVSYNCn : std_logic; -- Vertical Synchronization for video + signal BLANKINGn : std_logic; -- Blanking signal + signal lRELOAD_SEL : std_logic; -- reload register SELECT + signal lFREQ_SEL : std_logic; -- Frequency video SELECT (50 or 60 Hz) + signal LDFROMBUS : std_logic; -- Load from Bus Data + signal CHROWCNT : std_logic_vector( 2 downto 0); -- ch?? row count + signal lCTR_H : std_logic_vector( 6 downto 0); -- Horizontal counter + signal lCTR_V : std_logic_vector( 8 downto 0); -- Vertical counter + + signal rgb_int : std_logic_vector( 2 downto 0); -- Red Green Blue video signal + + -- local select RAM, IO & ROM + signal CSRAMn_INT : std_logic; -- RAM Chip Select + signal CSIOn_INT : std_logic; -- Input/Output Chip Select + signal CSROMn_INT : std_logic; -- ROM Chip select + + -- Bus Address internal + signal AD_RAM_INT : std_logic_vector(15 downto 0); -- RAM ADDRESS BUS + + -- RESET internal + signal RESET_INT : std_logic; + + -- MAP internal + signal lMAPn : std_logic; + + signal DBLHGT_EN : std_logic; -- ENABLE DOUBLE HEIGHT + signal CTR_V_DIV8 : std_logic_vector( 8 downto 0); -- VERTICAL COUNTER DIVIDE OR NOT BY 8 + signal voffset : std_logic_vector(15 downto 0); -- OFFSET SCREEN + signal mulBy40 : std_logic_vector(14 downto 0); -- Used to mult by 40 + + signal c : std_logic_vector(23 downto 0); -- states + signal ph : std_logic_vector( 2 downto 0); -- phases + + signal lCTR_FLASH : std_logic_vector( 4 downto 0); + signal lVBLANKn : std_logic; + signal lHBLANKn : std_logic; + + signal lDATABUS : std_logic_vector( 7 downto 0); + signal lSHFREG : std_logic_vector( 5 downto 0); + signal lREGHOLD : std_logic_vector( 6 downto 0); + signal lRGB : std_logic_vector( 2 downto 0); + signal lREG_INK : std_logic_vector( 2 downto 0); + signal lREG_STYLE : std_logic_vector( 2 downto 0); + signal lREG_PAPER : std_logic_vector( 2 downto 0); + signal lREG_MODE : std_logic_vector( 2 downto 0); + signal ModeStyle : std_logic_vector( 1 downto 0); + signal lADD : std_logic_vector( 5 downto 0); + signal lInv : std_logic; -- inverse signal + signal lInv_hold : std_logic; -- inverse signal hold + signal lBGFG_SEL : std_logic; + signal lFLASH_SEL : std_logic; + +begin + + -- input assignments + lADDR <= ADDR; + DB_INT <= DB; + CLK_24 <= CLK; + RESET_INT <= not RESETn; + lMAPn <= MAPn; + RW_INT <= RW; + + -- output assignments + PHI2 <= CLK_1_INT; +-- AD_RAM <= AD_RAM_INT(15 downto 8); + CSIOn <= CSIOn_INT; + CSROMn <= CSROMn_INT; + CSRAMn <= CSRAMn_INT; + CLK_4 <= CLK_4_INT; + + ------------------ + -- SRAM signals -- + ------------------ + SRAM_AD <= AD_RAM_INT; + LATCH_SRAM <= not c(4) and not c(12) and not c(20); + + -- phase 1 phase 2 phase 3 + SRAM_OE <= ph(0) or ph(1) or RW_INT ; + SRAM_CE <= ph(0) or ph(1) or (ph(2) and (not CSRAMn_INT) ); + + SRAM_WE <= (not CSRAMn_INT) and (not RW_INT) and c(17) ; + + -- VIDEO OUT + R <= RGB_INT(0); + G <= RGB_INT(1); + B <= RGB_INT(2); + SYNC <= lCOMPSYNC; + HSYNC <= lHSYNCn; + VSYNC <= lVSYNCn; + + ---------------------- + ---------------------- + -- Address Decoding -- + ---------------------- + ---------------------- + + -- PAGE 3 I/O decoder : 0x300-0x3FF + CSIOn_INT <= '0' when (lADDR(15 downto 8) = x"03") and (CLK_1_INT = '1') else '1'; + + -- PAGE ROM : 0xC000-0xFFFF + CSROMn_INT <= '0' when (lADDR(15 downto 14) = "11" and lMAPn = '1' and CLK_1_INT = '1') else '1'; + + CSRAMn_INT <= '0' when -- shadow RAM section + (lADDR(15 downto 14) = "11" and lMAPn = '0' and CLK_1_INT = '1') + or + -- normal RAM section + (((lADDR(15 downto 8) /= x"03") and (lADDR(15 downto 14) /= "11")) and lMAPn = '1' and CLK_1_INT = '1') + else '1'; + + ---------------------------------------------- + ---------------------------------------------- + -- Control signal generation and sequencing -- + ---------------------------------------------- + ---------------------------------------------- + + -- state and phase shifter + U_TB_CPT: process (CLK_24, RESET_INT) + begin + if (RESET_INT = '1') then + c <= "000000000000000000000001"; + ph <= "001"; + elsif falling_edge(CLK_24) then + -- advance states + c <= c(22 downto 0) & c(23); + if (c(7) or c(15) or c(23)) = '1' then + -- advance phases + ph <= ph(1 downto 0) & ph(2); + end if; + end if; + end process; + + ---------------------- + -- Clock generation -- + ---------------------- + + -- CPU clock -- + CLK_1_INT <= ph(2); + + -- VIA 6522 clock + CLK_4_INT <= c(0) or c(1) or c(2) or c(6) or c(7) or c(8) or c(12) or c(13) or c(14) or c(18) or c(19) or c(20); + +-- LD_REG_0 <= isAttrib and c(5); + + CLK_PIXEL_INT <= c(1) or c(5) or c(9) or c(13) or c(17) or c(21); + ATTRIB_DEC <= c(3); + RELD_REG <= c(17); + DATABUS_EN <= c(2) or c(10); + LDFROMBUS <= ((not isAttrib) and c(12) and (not HIRES_DEC)) or ((not isAttrib) and c(5) and HIRES_DEC) or (isAttrib and c(9)); + + ------------------------------------- + ------------------------------------- + -- Video timing signals generation -- + ------------------------------------- + ------------------------------------- + + -- Horizontal Counter + u_CPT_H: process(CLK_1_INT, RESET_INT) + begin + if (RESET_INT = '1') then + lCTR_H <= (others => '0'); + elsif rising_edge(CLK_1_INT) then + if lCTR_H < 63 then + lCTR_H <= lCTR_H + 1; + else + lCTR_H <= (others => '0'); + end if; + end if; + end process; + + -- Vertical Counter + u_CPT_V: process(CLK_1_INT, RESET_INT) + begin + if (RESET_INT = '1') then + lCTR_V <= (others => '0'); + lCTR_FLASH <= (others => '0'); + elsif rising_edge(CLK_1_INT) then + if (lCTR_H = 63) then + -- 50Hz = 312 lines, 60Hz = 260 lines + if ((lCTR_V < 312) and lFREQ_SEL='1') or + ((lCTR_V < 260) and lFREQ_SEL='0') then + lCTR_V <= lCTR_V + 1; + else + lCTR_V <= (others => '0'); + -- increment flash counter every frame + lCTR_FLASH <= lCTR_FLASH + 1; + end if; + end if; + end if; + end process; + + + + -- Horizontal Synchronisation + lHSYNCn <= '0' when (lCTR_H >= 49) and (lCTR_H <= 53) else '1'; + + -- Horizontal Blank + lHBLANKn <= '1' when (lCTR_H >= 1) and (lCTR_H <= 40) else '0'; + + -- Signal to Reload Register to reset attributes + lRELOAD_SEL <= '1' when (lCTR_H >= 49) else '0'; + + -- Vertical Synchronisation + lVSYNC50n <= '0' when (lCTR_V >= 258) and (lCTR_V <= 259) else '1'; -- 50Hz + lVSYNC60n <= '0' when (lCTR_V >= 241) and (lCTR_V <= 242) else '1'; -- 60Hz + lVSYNCn <= lVSYNC50n when lFREQ_SEL='1' else lVSYNC60n; + + -- Vertical Blank + lVBLANKn <= '0' when (lCTR_V >= 224) else '1'; + + -- Signal To Force TEXT MODE + lFORCETXT <= '1' when (lCTR_V > 199) else '0'; + + -- Assign output signals + CLK_FLASH <= lCTR_FLASH(4); -- Flash clock toggles every 16 video frames + lCOMPSYNC <= not (lHSYNCn xor lVSYNCn); + BLANKINGn <= lVBLANKn and lHBLANKn; + + + + ----------------------------- + ----------------------------- + -- Video attribute decoder -- + ----------------------------- + ----------------------------- + + -- Latch data from Data Bus + u_data_bus: process + begin + wait until rising_edge(CLK_24); + if (DATABUS_EN = '1') then + lDATABUS <= DB_INT; + end if; + end process; + + u_isattrib : process(CLK_24, RESET_INT) + begin + if (RESET_INT = '1') then + IsATTRIB <= '0'; + lInv_hold <= '0'; + elsif rising_edge(CLK_24) then + if ATTRIB_DEC = '1' then + IsATTRIB <= not (DB_INT(6) or DB_INT(5)); -- 1 = attribute, 0 = not an attribute + lInv_hold <= DB_INT(7); + end if; + end if; + end process; + + u_lInv_hold : process + begin + wait until rising_edge(CLK_24); + if (CLK_PIXEL_INT = '1' and RELD_REG = '1') then + lInv <= lInv_hold; + end if; + end process; + + -- hold data bus value + u_hold_reg: process(CLK_24, RESET_INT) + begin + if (RESET_INT = '1') then + lREGHOLD <= (others => '0'); + elsif rising_edge(CLK_24) then + if LDFROMBUS = '1' then + lREGHOLD <= lDATABUS(6 downto 0); + end if; + end if; + end process; + + u_ld_reg: process(CLK_24, lRELOAD_SEL, RESET_INT) + begin + if (RESET_INT = '1') then + lREG_INK <= (others=>'1'); + lREG_STYLE <= (others=>'0'); + lREG_PAPER <= (others=>'0'); + lREG_MODE <= (others=>'0'); + elsif (lRELOAD_SEL = '1') then + lREG_INK <= (others=>'1'); + lREG_STYLE <= (others=>'0'); + lREG_PAPER <= (others=>'0'); + elsif rising_edge(CLK_24) then + if (RELD_REG = '1' and isAttrib = '1') then + case lREGHOLD(6 downto 3) is + when "0000" => lREG_INK <= lREGHOLD(2 downto 0); + when "0001" => lREG_STYLE <= lREGHOLD(2 downto 0); + when "0010" => lREG_PAPER <= lREGHOLD(2 downto 0); + when "0011" => lREG_MODE <= lREGHOLD(2 downto 0); + when others => null; + end case; + end if; + end if; + end process; + + -- selector bits in mode/style registers + lALT_SEL <= lREG_STYLE(0); -- Character set select : 0=Standard 1=Alternate + lDBLHGT_SEL <= lREG_STYLE(1); -- Character type select: 0=Standard 1=Double + lFLASH_SEL <= lREG_STYLE(2); -- Flash select : 0=Steady 1=Flashing + lFREQ_SEL <= lREG_MODE(1); -- Frequency select : 0=60Hz 1=50Hz + lHIRES_SEL <= lREG_MODE(2); -- Mode Select : 0=Text 1=Hires + + -- Output signal for text/hires mode decode + HIRES_DEC <= (lHIRES_SEL and (not lFORCETXT)); + DBLHGT_EN <= (lDBLHGT_SEL and (not HIRES_DEC)); + + -- shift video data + u_shf_reg: process + begin + wait until rising_edge(CLK_24); + if CLK_PIXEL_INT = '1' then + -- Load shifter before the rising edge of PHI2 + if (RELD_REG = '1' and isAttrib = '0') then + lSHFREG <= lREGHOLD(5 downto 0); + else + -- send 6 bits + lSHFREG <= lSHFREG(4 downto 0) & '0'; + end if; + end if; + end process; + + lBGFG_SEL <= '0' when ( (CLK_FLASH = '1') and (lFLASH_SEL = '1') ) else lSHFREG(5); + + -- local assign for R(ed)G(reen)B(lue) signal + lRGB <= lREG_INK when lBGFG_SEL = '1' else lREG_PAPER; + + -- Assign out signal + RGB_INT <= lRGB when (lInv = '0' and BLANKINGn = '1') else + not(lRGB) when (lInv = '1' and BLANKINGn = '1') else + (others=>'0'); + + -- Compute offset + ModeStyle <= lHIRES_SEL & lALT_SEL; + with ModeStyle select + lADD <= "100111" when "11", -- HIRES & ALT x9Cxx + "100110" when "10", -- HIRES & STD x98xx + "101110" when "01", -- TEXT & ALT xB8xx + "101101" when others; -- TEXT & STD xB4xx + + ----------------------------- + ----------------------------- + -- Video address generator -- + ----------------------------- + ----------------------------- + + -- divide by 8 in LORES + CTR_V_DIV8 <= lCTR_V when (HIRES_DEC = '1') else "000" & lCTR_V(8 downto 3) ; + + -- to multiply by 40 without using a multiplier we just sum the results of the operations of + -- multiply by 32 by shifting 5 bits and multiply by 8 by shifting 3 bits + mulBy40 <= ("0" & CTR_V_DIV8 & "00000") + ("000" & CTR_V_DIV8 & "000"); + voffset <= X"A000" when (HIRES_DEC = '1') else X"BB80"; + + -- Generate Address Phase 1 + VAP1 <= (voffset + mulBy40) + lCTR_H; + + -- Compute character row counter + CHROWCNT <= lCTR_V(3 downto 1) when (DBLHGT_EN = '1') else lCTR_V(2 downto 0); + -- Generate Address Phase 2 + VAP2 <= lADD & lDATABUS(6 downto 0) & CHROWCNT; + + -- multiplex addresses at rising edge of each phase + addr_latch: process + begin + wait until rising_edge(CLK_24); + if c(0) = '1' then + -- Generate video phase 1 address + AD_RAM_INT <= VAP1; + elsif c(8) = '1' then + -- Generate video phase 2 address + AD_RAM_INT <= VAP2; + elsif c(16) = '1' then + -- Generate CPU phase 3 address + AD_RAM_INT <= lADDR; + end if; + end process; +end architecture RTL; diff --git a/Oric Atmos_MiST/rtl/vag.vhd b/Oric Atmos_MiST/rtl/vag.vhd new file mode 100644 index 00000000..a0b2fa53 --- /dev/null +++ b/Oric Atmos_MiST/rtl/vag.vhd @@ -0,0 +1,125 @@ +-- +-- vag.vhd +-- +-- Generate video signals +-- +-- Copyright (C)2001 - 2005 SEILEBOST +-- All rights reserved. +-- +-- $Id: vag.vhd, v0.01 2005/01/01 00:00:00 SEILEBOST $ +-- +-- TODO : +-- Remark : + +library IEEE; +use IEEE.std_logic_1164.all; +--use IEEE.std_logic_arith.all; +--use IEEE.numeric_std.all; +use IEEE.std_logic_unsigned.all; + +entity vag is +port ( CLK_1 : in std_logic; + RESETn : in std_logic; + FREQ_SEL : in std_logic; -- Select 50/60 Hz frequency + CPT_H : out std_logic_vector(6 downto 0); -- Horizontal Counter + CPT_V : out std_logic_vector(8 downto 0); -- Vertical Counter + RELOAD_SEL : out std_logic; -- Reload registe SEL + FORCETXT : out std_logic; -- Force Mode Text + CLK_FLASH : out std_logic; -- Flash Clock + COMPSYNC : out std_logic; -- Composite Synchro signal + BLANKINGn : out std_logic -- Blanking signal + ); +end entity vag; + +architecture vag_arch of vag is + +signal lCPT_H : std_logic_vector(6 downto 0); +signal lCPT_V : std_logic_vector(8 downto 0); +signal lCPT_FLASH : std_logic_vector(5 downto 0); +signal lVSYNCn : std_logic; +signal lVBLANKn : std_logic; +signal lVFRAME : std_logic; +signal lFORCETXT : std_logic; +signal lHSYNCn : std_logic; +signal lHBLANKn : std_logic; +signal lRELOAD_SEL : std_logic; +signal lCLK_V : std_logic; + +begin + +-- Horizontal Counter +u_CPT_H: PROCESS(CLK_1, RESETn) +BEGIN + IF (RESETn = '0') THEN + lCPT_H <= (OTHERS => '0'); + ELSIF rising_edge(CLK_1) THEN + IF lCPT_H < 63 then + lCPT_H <= lCPT_H + "0000001"; + ELSE + lCPT_H <= (OTHERS => '0'); + END IF; + END IF; +END PROCESS; + +-- Horizontal Synchronisation +lHSYNCn <= '0' when (lCPT_H >= 49) AND (lCPT_H <= 53) ELSE '1'; + +-- Horizontal Blank +lHBLANKn <= '0' when (lCPT_H >= 40) AND (lCPT_H <= 63) ELSE '1'; + +-- Signal to Reload Register to reset attribut +lRELOAD_SEL <= '1' WHEN (lCPT_H >= 56) AND (lCPT_H <= 63) ELSE '0'; + +-- Clock for Vertical counter +lCLK_V <= '1' WHEN (lCPT_H = 63) ELSE '0'; + +-- Vertical Counter +u_CPT_V: PROCESS(lCLK_V, RESETn) +BEGIN + IF (RESETn = '0') THEN + lCPT_V <= (OTHERS => '0'); + ELSIF rising_edge(lCLK_V) THEN + IF (lCPT_V < 311) THEN + lCPT_V <= lCPT_V + "000000001"; + ELSE + lCPT_V <= (OTHERS => '0'); + END IF; + END IF; +END PROCESS; + +-- Vertical Synchronisation +lVSYNCn <= '0' when(lCPT_V >= 258) AND (lCPT_V <= 259) ELSE '1'; + +-- Vertical Blank +lVBLANKn <= '0' when(lCPT_V >= 224) AND (lCPT_V <= 311) ELSE '1'; + +-- Clock to Flash Counter +lVFRAME <= '1' WHEN (lCPT_V = 311) ELSE '0'; + +-- Signal To Force TEXT MODE +lFORCETXT <= '1' WHEN (lCPT_V > 199) ELSE '0'; + +-- Flash Counter +u_FLASH : PROCESS( lVSYNCn, RESETn ) +BEGIN + IF (RESETn = '0') THEN + lCPT_FLASH <= (OTHERS => '0'); + ELSIF rising_edge(lVSYNCn) THEN + lCPT_FLASH <= lCPT_FLASH + "000001"; + END IF; +END PROCESS; + +-- Assign signals +FORCETXT <= '1' WHEN ((lFORCETXT = '1') OR (lVFRAME = '1') ) ELSE '0'; +CLK_FLASH <= lCPT_FLASH(5); +RELOAD_SEL <= lRELOAD_SEL; +COMPSYNC <= NOT(lHSYNCn XOR lVSYNCn); + +-- Assign counters +CPT_H <= lCPT_H; +CPT_V <= lCPT_V; + +-- Assign blanking signal +BLANKINGn <= lVBLANKn AND lHBLANKn; + +end architecture vag_arch; diff --git a/Oric Atmos_MiST/rtl/video.vhd b/Oric Atmos_MiST/rtl/video.vhd new file mode 100644 index 00000000..28bca2ee --- /dev/null +++ b/Oric Atmos_MiST/rtl/video.vhd @@ -0,0 +1,229 @@ +-- +-- video.vhd +-- +-- Manage video attribute +-- +-- Copyright (C)2001 - 2005 SEILEBOST +-- All rights reserved. +-- +-- $Id: video.vhd, v0.01 2005/01/01 00:00:00 SEILEBOST $ +-- +-- TODO : +-- Remark : + +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.numeric_STD.all; + +entity video is +port ( RESETn : in std_logic; + CLK_PIXEL : in std_logic; + CLK_FLASH : in std_logic; + -- delete 17/11/2009 FLASH_SEL : in std_logic; + BLANKINGn : in std_logic; + RELOAD_SEL : in std_logic; + DATABUS : in std_logic_vector(7 downto 0); + ATTRIB_DEC : in std_logic; + DATABUS_EN : in std_logic; + LDFROMBUS : in std_logic; + LD_REG_0 : in std_logic; + RELD_REG : in std_logic; + CHROWCNT : in std_logic_vector(2 downto 0); + RGB : out std_logic_vector(2 downto 0); + FREQ_SEL : out std_logic; + TXTHIR_SEL : out std_logic; + isAttrib : out std_logic; + DBLSTD_SEL : out std_logic; + VAP2 : out std_logic_vector(15 downto 0) + ); +end entity video; + +architecture video_arch of video is + +-- locals signals +signal lDATABUS : std_logic_vector(7 downto 0); +signal lSHFREG : std_logic_vector(5 downto 0); +signal lREGHOLD : std_logic_vector(5 downto 0); +signal lRGB : std_logic_vector(2 downto 0); +signal lCLK_REG : std_logic_vector(3 downto 0); +signal lREG_0 : std_logic_vector(2 downto 0); +signal lREG_1 : std_logic_vector(2 downto 0); +signal lREG_2 : std_logic_vector(2 downto 0); +signal lREG_3 : std_logic_vector(2 downto 0); +signal tmp : std_logic_vector(1 downto 0); +signal lADD : std_logic_vector(1 downto 0); +signal lDIN : std_logic; -- SET INVERSE SIGNAL +signal lSHFVIDEO : std_logic; +signal lBGFG_SEL : std_logic; +signal lFLASH_SEL : std_logic; +signal lIsATTRIB : std_logic; + +begin + +-- Latch data from Data Bus +u_data_bus: PROCESS( DATABUS, DATABUS_EN) +BEGIN + -- Correctif 03/02/09 if (DATABUS_EN = '1') then + if (rising_edge(DATABUS_EN)) then + lDATABUS <= DATABUS; + end if; +END PROCESS; + +-- Ajout du 04/02/09 / Commentaire le 05/12/09 +--isAttrib <= not lDATABUS(6); -- =1 is an attribut, = 0 is not an attribut + +-- Decode register +-- Modification multiple le 03/02/2010 +--u_attr_dec: PROCESS(lDATABUS, ATTRIB_DEC) +--BEGIN + --lCLK_REG <= "0000"; -- Ajout 11/11/09 Suppression 03/02/2010 +-- if rising_edge(ATTRIB_DEC) then + -- le 03/02/2010 : commentaire de 9 lignes + -- if (lDATABUS(6 downto 5) = "00") then + -- case lDATABUS(4 downto 3) is + -- when "00" => lCLK_REG <= "0001"; + -- when "01" => lCLK_REG <= "0010"; + -- when "10" => lCLK_REG <= "0100"; + -- when "11" => lCLK_REG <= "1000"; + -- when others => null; --lCLK_REG <= "1111"; -- 11/11/09 null; + -- end case; + --end if; +-- case lDATABUS(6 downto 3) is +-- when "0000" => lCLK_REG <= "0001"; +-- when "0001" => lCLK_REG <= "0010"; +-- when "0010" => lCLK_REG <= "0100"; +-- when "0011" => lCLK_REG <= "1000"; +-- when others => lCLK_REG <= "0000"; +-- end case; +-- end if; +--END PROCESS; + +lCLK_REG(0) <= '1' when (lDATABUS(6 downto 3) = "0000") and (ATTRIB_DEC = '1') else '0'; +lCLK_REG(1) <= '1' when (lDATABUS(6 downto 3) = "0010") and (ATTRIB_DEC = '1') else '0'; +lCLK_REG(2) <= '1' when (lDATABUS(6 downto 3) = "0100") and (ATTRIB_DEC = '1') else '0'; +lCLK_REG(3) <= '1' when (lDATABUS(6 downto 3) = "1000") and (ATTRIB_DEC = '1') else '0'; + +-- ajout le 05/12/09 +u_isattrib : PROCESS(DATABUS_EN, ATTRIB_DEC, RESETn) +BEGIN + if (RESETn = '0') then + lIsATTRIB <= '0'; + elsif rising_edge(ATTRIB_DEC) then + lIsATTRIB <= not (DATABUS(6) or DATABUS(5)); -- =1 is an attribut, = 0 is not an attribut + end if; +END PROCESS; + +-- Assignation +isAttrib <= lIsATTRIB; + +-- get value for register number 0 : INK +u_ld_reg0: PROCESS(lCLK_REG, RELOAD_SEL, lDATABUS, RESETn) +BEGIN + -- Ajout du 17/11/2009 + if (RESETn = '0') then + lREG_0 <= "000"; + elsif (RELOAD_SEL = '1') then + lREG_0 <= "000"; + -- le 17/11/2009 elsif (lCLK_REG(0) = '1') then + elsif rising_edge(lCLK_REG(0)) then + lREG_0 <= lDATABUS(2 downto 0); + end if; +END PROCESS; + +-- get value for register number 1 : STYLE : Alt/std, Dbl/std, Flash sel +u_ld_reg1: PROCESS(lCLK_REG, RELOAD_SEL, lDATABUS, RESETN) +BEGIN + -- Ajout du 17/11/2009 + if (RESETn = '0') then + lREG_1 <= "000"; + elsif (RELOAD_SEL = '1') then + lREG_1 <= "000"; + -- le 17/11/2009 elsif (lCLK_REG(1) = '1') then + elsif rising_edge(lCLK_REG(1)) then + lREG_1 <= lDATABUS(2 downto 0); + end if; +END PROCESS; + +-- get value for register number 2 : PAPER +u_ld_reg2: PROCESS(lCLK_REG, RELOAD_SEL, lDATABUS, RESETN) +BEGIN + -- Ajout du 17/11/2009 + if (RESETn = '0') then + lREG_2 <= "111"; + elsif (RELOAD_SEL = '1') then + lREG_2 <= "111"; + -- le 17/11/2009 elsif (lCLK_REG(2) = '1') then + elsif rising_edge(lCLK_REG(2)) then + lREG_2 <= lDATABUS(2 downto 0); + end if; +END PROCESS; + +-- get value for register number 3 : Mode +u_ld_reg3: PROCESS(lCLK_REG, lDATABUS, RESETn) +BEGIN + if (RESETn = '0') then + lREG_3 <= "000"; + -- modif 04/02/09 elsif (lCLK_REG(3) = '1') then + elsif rising_edge(lCLK_REG(3)) then + lREG_3 <= lDATABUS(2 downto 0); + end if; +END PROCESS; + +-- hold data value +u_hold_reg: PROCESS( LD_REG_0, LDFROMBUS, lDATABUS) +BEGIN + -- Chargement si attribut + if (LD_REG_0 = '1') then + lREGHOLD <= (OTHERS => '0'); + elsif (rising_edge(LDFROMBUS)) then + lREGHOLD <= lDATABUS(5 downto 0); + lDIN <= lDATABUS(7); -- Ajout du 15/12/2009 + end if; + ---mise en commentaire 15/12/2009 lDIN <= lDATABUS(7); +END PROCESS; + +-- shift data for video +u_shf_reg: PROCESS(RELD_REG, CLK_PIXEL, lREGHOLD) +BEGIN + -- Chargement du shifter avant le front montant de PHI2 + if (RELD_REG = '1') then + lSHFREG <= lREGHOLD; + -- 6 bits à envoyer + elsif (rising_edge(CLK_PIXEL)) then + lSHFVIDEO <= lSHFREG(5); + lSHFREG <= lSHFREG(4 downto 0) & '0'; + end if; +END PROCESS; + +lFLASH_SEL <= lREG_1(2); +lBGFG_SEL <= NOT(lSHFVIDEO) when ( (CLK_FLASH = '1') AND (lFLASH_SEL = '1') ) else lSHFVIDEO; +-- le 17/11/2009 : lBGFG_SEL <= NOT(lSHFVIDEO) when ( (CLK_FLASH = '1') AND (FLASH_SEL = '1') ) else lSHFVIDEO; +-- lBGFG_SEL <= lSHFVIDEO and not ( CLK_FLASH AND FLASH_SEL ); + +-- local assign for R(ed)G(reen)B(lue) signal +lRGB <= lREG_0 when lBGFG_SEL = '0' else lREG_2; + +-- Assign out signal +RGB <= lRGB when (lDIN = '0' and BLANKINGn = '1') else + not(lRGB) when (lDIN = '1' and BLANKINGn = '1') else + "000"; + +DBLSTD_SEL <= lREG_1(1); -- Double/Standard height character select +FREQ_SEL <= lREG_3(1); -- Frenquecy video (50/60Hz) select +TXTHIR_SEL <= lREG_3(2); -- Texte/Hires mode select + +-- Compute offset +tmp <= lREG_3(2) & lREG_1(0); +with tmp select +lADD <= "01" when "00", -- TXT & STD + "10" when "01", -- TXT & ALT + "10" when "10", -- HIRES & STD + "11" when "11", -- HIRES & ALT + "01" when others; -- Du fait que le design original de l'ULA + -- n'a pas de reset, nous supposerons que + -- l'ULA est en mode text et standard + +-- Generate Address Phase 2 +VAP2 <= "10" & not lREG_3(2) & '1' & lADD & lDATABUS(6 downto 0) & CHROWCNT; + +end architecture video_arch; diff --git a/Oric Atmos_MiST/rtl/video_mixer.sv b/Oric Atmos_MiST/rtl/video_mixer.sv new file mode 100644 index 00000000..04cfd4ba --- /dev/null +++ b/Oric Atmos_MiST/rtl/video_mixer.sv @@ -0,0 +1,242 @@ +// +// +// Copyright (c) 2017 Sorgelig +// +// This program is GPL Licensed. See COPYING for the full license. +// +// +//////////////////////////////////////////////////////////////////////////////////////////////////////// + +`timescale 1ns / 1ps + +// +// LINE_LENGTH: Length of display line in pixels +// Usually it's length from HSync to HSync. +// May be less if line_start is used. +// +// HALF_DEPTH: If =1 then color dept is 3 bits per component +// For half depth 6 bits monochrome is available with +// mono signal enabled and color = {G, R} + +module video_mixer +#( + parameter LINE_LENGTH = 768, + parameter HALF_DEPTH = 0, + + parameter OSD_COLOR = 3'd4, + parameter OSD_X_OFFSET = 10'd0, + parameter OSD_Y_OFFSET = 10'd0 +) +( + // master clock + // it should be multiple by (ce_pix*4). + input clk_sys, + + // Pixel clock or clock_enable (both are accepted). + input ce_pix, + + // Some systems have multiple resolutions. + // ce_pix_actual should match ce_pix where every second or fourth pulse is enabled, + // thus half or qurter resolutions can be used without brake video sync while switching resolutions. + // For fixed single resolution (or when video sync stability isn't required) ce_pix_actual = ce_pix. + input ce_pix_actual, + + // OSD SPI interface + input SPI_SCK, + input SPI_SS3, + input SPI_DI, + + // scanlines (00-none 01-25% 10-50% 11-75%) + input [1:0] scanlines, + + // 0 = HVSync 31KHz, 1 = CSync 15KHz + input scandoubler_disable, + + // High quality 2x scaling + input hq2x, + + // YPbPr always uses composite sync + input ypbpr, + + // 0 = 16-240 range. 1 = 0-255 range. (only for YPbPr color space) + input ypbpr_full, + + // color + input [DWIDTH:0] R, + input [DWIDTH:0] G, + input [DWIDTH:0] B, + + // Monochrome mode (for HALF_DEPTH only) + input mono, + + // interlace sync. Positive pulses. + input HSync, + input VSync, + + // Falling of this signal means start of informative part of line. + // It can be horizontal blank signal. + // This signal can be used to reduce amount of required FPGA RAM for HQ2x scan doubler + // If FPGA RAM is not an issue, then simply set it to 0 for whole line processing. + // Keep in mind: due to algo first and last pixels of line should be black to avoid side artefacts. + // Thus, if blank signal is used to reduce the line, make sure to feed at least one black (or paper) pixel + // before first informative pixel. + input line_start, + + // MiST video output signals + output [5:0] VGA_R, + output [5:0] VGA_G, + output [5:0] VGA_B, + output VGA_VS, + output VGA_HS +); + +localparam DWIDTH = HALF_DEPTH ? 2 : 5; + +wire [DWIDTH:0] R_sd; +wire [DWIDTH:0] G_sd; +wire [DWIDTH:0] B_sd; +wire hs_sd, vs_sd; + +scandoubler #(.LENGTH(LINE_LENGTH), .HALF_DEPTH(HALF_DEPTH)) scandoubler +( + .*, + .hs_in(HSync), + .vs_in(VSync), + .r_in(R), + .g_in(G), + .b_in(B), + + .hs_out(hs_sd), + .vs_out(vs_sd), + .r_out(R_sd), + .g_out(G_sd), + .b_out(B_sd) +); + +wire [DWIDTH:0] rt = (scandoubler_disable ? R : R_sd); +wire [DWIDTH:0] gt = (scandoubler_disable ? G : G_sd); +wire [DWIDTH:0] bt = (scandoubler_disable ? B : B_sd); + +generate + if(HALF_DEPTH) begin + wire [5:0] r = mono ? {gt,rt} : {rt,rt}; + wire [5:0] g = mono ? {gt,rt} : {gt,gt}; + wire [5:0] b = mono ? {gt,rt} : {bt,bt}; + end else begin + wire [5:0] r = rt; + wire [5:0] g = gt; + wire [5:0] b = bt; + end +endgenerate + +wire hs = (scandoubler_disable ? HSync : hs_sd); +wire vs = (scandoubler_disable ? VSync : vs_sd); + +reg scanline = 0; +always @(posedge clk_sys) begin + reg old_hs, old_vs; + + old_hs <= hs; + old_vs <= vs; + + if(old_hs && ~hs) scanline <= ~scanline; + if(old_vs && ~vs) scanline <= 0; +end + +wire [5:0] r_out, g_out, b_out; +always @(*) begin + case(scanlines & {scanline, scanline}) + 1: begin // reduce 25% = 1/2 + 1/4 + r_out = {1'b0, r[5:1]} + {2'b00, r[5:2]}; + g_out = {1'b0, g[5:1]} + {2'b00, g[5:2]}; + b_out = {1'b0, b[5:1]} + {2'b00, b[5:2]}; + end + + 2: begin // reduce 50% = 1/2 + r_out = {1'b0, r[5:1]}; + g_out = {1'b0, g[5:1]}; + b_out = {1'b0, b[5:1]}; + end + + 3: begin // reduce 75% = 1/4 + r_out = {2'b00, r[5:2]}; + g_out = {2'b00, g[5:2]}; + b_out = {2'b00, b[5:2]}; + end + + default: begin + r_out = r; + g_out = g; + b_out = b; + end + endcase +end + +wire [5:0] red, green, blue; +osd #(OSD_X_OFFSET, OSD_Y_OFFSET, OSD_COLOR) osd +( + .*, + + .R_in(r_out), + .G_in(g_out), + .B_in(b_out), + .HSync(hs), + .VSync(vs), + + .R_out(red), + .G_out(green), + .B_out(blue) +); + +wire [5:0] yuv_full[225] = '{ + 6'd0, 6'd0, 6'd0, 6'd0, 6'd1, 6'd1, 6'd1, 6'd1, + 6'd2, 6'd2, 6'd2, 6'd3, 6'd3, 6'd3, 6'd3, 6'd4, + 6'd4, 6'd4, 6'd5, 6'd5, 6'd5, 6'd5, 6'd6, 6'd6, + 6'd6, 6'd7, 6'd7, 6'd7, 6'd7, 6'd8, 6'd8, 6'd8, + 6'd9, 6'd9, 6'd9, 6'd9, 6'd10, 6'd10, 6'd10, 6'd11, + 6'd11, 6'd11, 6'd11, 6'd12, 6'd12, 6'd12, 6'd13, 6'd13, + 6'd13, 6'd13, 6'd14, 6'd14, 6'd14, 6'd15, 6'd15, 6'd15, + 6'd15, 6'd16, 6'd16, 6'd16, 6'd17, 6'd17, 6'd17, 6'd17, + 6'd18, 6'd18, 6'd18, 6'd19, 6'd19, 6'd19, 6'd19, 6'd20, + 6'd20, 6'd20, 6'd21, 6'd21, 6'd21, 6'd21, 6'd22, 6'd22, + 6'd22, 6'd23, 6'd23, 6'd23, 6'd23, 6'd24, 6'd24, 6'd24, + 6'd25, 6'd25, 6'd25, 6'd25, 6'd26, 6'd26, 6'd26, 6'd27, + 6'd27, 6'd27, 6'd27, 6'd28, 6'd28, 6'd28, 6'd29, 6'd29, + 6'd29, 6'd29, 6'd30, 6'd30, 6'd30, 6'd31, 6'd31, 6'd31, + 6'd31, 6'd32, 6'd32, 6'd32, 6'd33, 6'd33, 6'd33, 6'd33, + 6'd34, 6'd34, 6'd34, 6'd35, 6'd35, 6'd35, 6'd35, 6'd36, + 6'd36, 6'd36, 6'd36, 6'd37, 6'd37, 6'd37, 6'd38, 6'd38, + 6'd38, 6'd38, 6'd39, 6'd39, 6'd39, 6'd40, 6'd40, 6'd40, + 6'd40, 6'd41, 6'd41, 6'd41, 6'd42, 6'd42, 6'd42, 6'd42, + 6'd43, 6'd43, 6'd43, 6'd44, 6'd44, 6'd44, 6'd44, 6'd45, + 6'd45, 6'd45, 6'd46, 6'd46, 6'd46, 6'd46, 6'd47, 6'd47, + 6'd47, 6'd48, 6'd48, 6'd48, 6'd48, 6'd49, 6'd49, 6'd49, + 6'd50, 6'd50, 6'd50, 6'd50, 6'd51, 6'd51, 6'd51, 6'd52, + 6'd52, 6'd52, 6'd52, 6'd53, 6'd53, 6'd53, 6'd54, 6'd54, + 6'd54, 6'd54, 6'd55, 6'd55, 6'd55, 6'd56, 6'd56, 6'd56, + 6'd56, 6'd57, 6'd57, 6'd57, 6'd58, 6'd58, 6'd58, 6'd58, + 6'd59, 6'd59, 6'd59, 6'd60, 6'd60, 6'd60, 6'd60, 6'd61, + 6'd61, 6'd61, 6'd62, 6'd62, 6'd62, 6'd62, 6'd63, 6'd63, + 6'd63 +}; + +// http://marsee101.blog19.fc2.com/blog-entry-2311.html +// Y = 16 + 0.257*R + 0.504*G + 0.098*B (Y = 0.299*R + 0.587*G + 0.114*B) +// Pb = 128 - 0.148*R - 0.291*G + 0.439*B (Pb = -0.169*R - 0.331*G + 0.500*B) +// Pr = 128 + 0.439*R - 0.368*G - 0.071*B (Pr = 0.500*R - 0.419*G - 0.081*B) + +wire [18:0] y_8 = 19'd04096 + ({red, 8'd0} + {red, 3'd0}) + ({green, 9'd0} + {green, 2'd0}) + ({blue, 6'd0} + {blue, 5'd0} + {blue, 2'd0}); +wire [18:0] pb_8 = 19'd32768 - ({red, 7'd0} + {red, 4'd0} + {red, 3'd0}) - ({green, 8'd0} + {green, 5'd0} + {green, 3'd0}) + ({blue, 8'd0} + {blue, 7'd0} + {blue, 6'd0}); +wire [18:0] pr_8 = 19'd32768 + ({red, 8'd0} + {red, 7'd0} + {red, 6'd0}) - ({green, 8'd0} + {green, 6'd0} + {green, 5'd0} + {green, 4'd0} + {green, 3'd0}) - ({blue, 6'd0} + {blue , 3'd0}); + +wire [7:0] y = ( y_8[17:8] < 16) ? 8'd16 : ( y_8[17:8] > 235) ? 8'd235 : y_8[15:8]; +wire [7:0] pb = (pb_8[17:8] < 16) ? 8'd16 : (pb_8[17:8] > 240) ? 8'd240 : pb_8[15:8]; +wire [7:0] pr = (pr_8[17:8] < 16) ? 8'd16 : (pr_8[17:8] > 240) ? 8'd240 : pr_8[15:8]; + +assign VGA_R = ypbpr ? (ypbpr_full ? yuv_full[pr-8'd16] : pr[7:2]) : red; +assign VGA_G = ypbpr ? (ypbpr_full ? yuv_full[y -8'd16] : y[7:2]) : green; +assign VGA_B = ypbpr ? (ypbpr_full ? yuv_full[pb-8'd16] : pb[7:2]) : blue; +assign VGA_VS = (scandoubler_disable | ypbpr) ? 1'b1 : ~vs_sd; +assign VGA_HS = scandoubler_disable ? ~(HSync ^ VSync) : ypbpr ? ~(hs_sd ^ vs_sd) : ~hs_sd; + +endmodule diff --git a/Oric Atmos_MiST/storage/BRAIN_RAM.txt b/Oric Atmos_MiST/storage/BRAIN_RAM.txt new file mode 100644 index 00000000..f7443798 --- /dev/null +++ b/Oric Atmos_MiST/storage/BRAIN_RAM.txt @@ -0,0 +1,12 @@ +Ram dynamique : + RAS + CAS + R/W + +RAM STATIQUE + CS + R/W + clk + + cs = Page 0-2 + Page 4-BF + CLK = CAS \ No newline at end of file diff --git a/Oric Atmos_MiST/storage/ORIC_pad.txt b/Oric Atmos_MiST/storage/ORIC_pad.txt new file mode 100644 index 00000000..7f7e5ea5 --- /dev/null +++ b/Oric Atmos_MiST/storage/ORIC_pad.txt @@ -0,0 +1,286 @@ +Release 11.1 - par L.33 (lin) +Copyright (c) 1995-2009 Xilinx, Inc. All rights reserved. + +Thu Apr 8 22:11:19 2010 + + +INFO: The IO information is provided in three file formats as part of the Place and Route (PAR) process. These formats are: +1. The _pad.txt file (this file) designed to provide information on IO usage in a human readable ASCII text format viewable through common text editors. +2. The _pad.csv file for use with spreadsheet programs such as MS Excel. This file can also be read by PACE to communicate post PAR IO information. +3. The .pad file designed for parsing by customers. It uses the "|" as a data field separator. + +INPUT FILE: ORIC_map.ncd +OUTPUT FILE: ORIC_pad.txt +PART TYPE: xa3s1000 +SPEED GRADE: -4 +PACKAGE: ftg256 + +Pinout by Pin Number: + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|Pin Number|Signal Name|Pin Usage|Pin Name |Direction|IO Standard|IO Bank Number|Drive (mA)|Slew Rate|Termination|IOB Delay|Voltage |Constraint|IO Register|Signal Integrity| ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|A1 | | |GND | | | | | | | | | | | | +|A2 | | |TDI | | | | | | | | | | | | +|A3 | |IOB |IO/VREF_0 |UNUSED | |0 | | | | | | | | | +|A4 | |DIFFM |IO_L01P_0/VRN_0 |UNUSED | |0 | | | | | | | | | +|A5 | |IOB |IO |UNUSED | |0 | | | | | | | | | +|A6 | | |VCCAUX | | | | | | | |2.5 | | | | +|A7 | |IOB |IO |UNUSED | |0 | | | | | | | | | +|A8 | |DIFFM |IO_L32P_0/GCLK6 |UNUSED | |0 | | | | | | | | | +|A9 | |IOB |IO |UNUSED | |1 | | | | | | | | | +|A10 | |DIFFS |IO_L31N_1/VREF_1 |UNUSED | |1 | | | | | | | | | +|A11 | | |VCCAUX | | | | | | | |2.5 | | | | +|A12 | |IOB |IO |UNUSED | |1 | | | | | | | | | +|A13 | |DIFFS |IO_L10N_1/VREF_1 |UNUSED | |1 | | | | | | | | | +|A14 | |DIFFS |IO_L01N_1/VRP_1 |UNUSED | |1 | | | | | | | | | +|A15 | | |TDO | | | | | | | | | | | | +|A16 | | |GND | | | | | | | | | | | | +|B1 |D<7> |IOB |IO_L01P_7/VRN_7 |BIDIR |LVCMOS25* |7 |12 |SLOW |NONE** |NONE | |LOCATED |NO |NONE | +|B2 | | |GND | | | | | | | | | | | | +|B3 | | |PROG_B | | | | | | | | | | | | +|B4 | |DIFFS |IO_L01N_0/VRP_0 |UNUSED | |0 | | | | | | | | | +|B5 | |DIFFM |IO_L25P_0 |UNUSED | |0 | | | | | | | | | +|B6 | |DIFFM |IO_L28P_0 |UNUSED | |0 | | | | | | | | | +|B7 | |DIFFM |IO_L30P_0 |UNUSED | |0 | | | | | | | | | +|B8 | |DIFFS |IO_L32N_0/GCLK7 |UNUSED | |0 | | | | | | | | | +|B9 | | |GND | | | | | | | | | | | | +|B10 | |DIFFM |IO_L31P_1 |UNUSED | |1 | | | | | | | | | +|B11 | |DIFFS |IO_L29N_1 |UNUSED | |1 | | | | | | | | | +|B12 | |DIFFS |IO_L27N_1 |UNUSED | |1 | | | | | | | | | +|B13 | |DIFFM |IO_L10P_1 |UNUSED | |1 | | | | | | | | | +|B14 | |DIFFM |IO_L01P_1/VRN_1 |UNUSED | |1 | | | | | | | | | +|B15 | | |GND | | | | | | | | | | | | +|B16 | |DIFFS |IO_L01N_2/VRP_2 |UNUSED | |2 | | | | | | | | | +|C1 |D<6> |IOB |IO_L01N_7/VRP_7 |BIDIR |LVCMOS25* |7 |12 |SLOW |NONE** |NONE | |LOCATED |NO |NONE | +|C2 |D<5> |IOB |IO_L16N_7 |BIDIR |LVCMOS25* |7 |12 |SLOW |NONE** |NONE | |LOCATED |NO |NONE | +|C3 | |DIFFM |IO_L16P_7/VREF_7 |UNUSED | |7 | | | | | | | | | +|C4 | | |HSWAP_EN | | | | | | | | | | | | +|C5 | |DIFFS |IO_L25N_0 |UNUSED | |0 | | | | | | | | | +|C6 | |DIFFS |IO_L28N_0 |UNUSED | |0 | | | | | | | | | +|C7 | |DIFFS |IO_L30N_0 |UNUSED | |0 | | | | | | | | | +|C8 | |DIFFM |IO_L31P_0/VREF_0 |UNUSED | |0 | | | | | | | | | +|C9 | |DIFFS |IO_L32N_1/GCLK5 |UNUSED | |1 | | | | | | | | | +|C10 | |IOB |IO |UNUSED | |1 | | | | | | | | | +|C11 | |DIFFM |IO_L29P_1 |UNUSED | |1 | | | | | | | | | +|C12 | |DIFFM |IO_L27P_1 |UNUSED | |1 | | | | | | | | | +|C13 | | |TMS | | | | | | | | | | | | +|C14 | | |TCK | | | | | | | | | | | | +|C15 | |DIFFS |IO_L16N_2 |UNUSED | |2 | | | | | | | | | +|C16 | |DIFFM |IO_L01P_2/VRN_2 |UNUSED | |2 | | | | | | | | | +|D1 | |DIFFS |IO_L17N_7 |UNUSED | |7 | | | | | | | | | +|D2 | |DIFFM |IO_L17P_7 |UNUSED | |7 | | | | | | | | | +|D3 | |DIFFM |IO_L19P_7 |UNUSED | |7 | | | | | | | | | +|D4 | | |VCCINT | | | | | | | |1.2 | | | | +|D5 | |IOB |IO/VREF_0 |UNUSED | |0 | | | | | | | | | +|D6 | |DIFFM |IO_L27P_0 |UNUSED | |0 | | | | | | | | | +|D7 | |DIFFM |IO_L29P_0 |UNUSED | |0 | | | | | | | | | +|D8 | |DIFFS |IO_L31N_0 |UNUSED | |0 | | | | | | | | | +|D9 | |DIFFM |IO_L32P_1/GCLK4 |UNUSED | |1 | | | | | | | | | +|D10 | |DIFFS |IO_L30N_1 |UNUSED | |1 | | | | | | | | | +|D11 | |DIFFS |IO_L28N_1 |UNUSED | |1 | | | | | | | | | +|D12 | |IOB |IO/VREF_1 |UNUSED | |1 | | | | | | | | | +|D13 | | |VCCINT | | | | | | | |1.2 | | | | +|D14 |an<0> |IOB |IO_L16P_2 |OUTPUT |LVCMOS25* |2 |12 |SLOW |NONE** | | |LOCATED |NO |NONE | +|D15 | |DIFFS |IO_L17N_2 |UNUSED | |2 | | | | | | | | | +|D16 | |DIFFM |IO_L17P_2/VREF_2 |UNUSED | |2 | | | | | | | | | +|E1 | |DIFFS |IO_L20N_7 |UNUSED | |7 | | | | | | | | | +|E2 | |DIFFM |IO_L20P_7 |UNUSED | |7 | | | | | | | | | +|E3 |AD<8> |IOB |IO_L19N_7/VREF_7 |OUTPUT |LVCMOS25* |7 |12 |SLOW |NONE** | | |LOCATED |NO |NONE | +|E4 |AD<9> |IOB |IO_L21P_7 |OUTPUT |LVCMOS25* |7 |12 |SLOW |NONE** | | |LOCATED |NO |NONE | +|E5 | | |VCCINT | | | | | | | |1.2 | | | | +|E6 | |DIFFS |IO_L27N_0 |UNUSED | |0 | | | | | | | | | +|E7 | |DIFFS |IO_L29N_0 |UNUSED | |0 | | | | | | | | | +|E8 | | |VCCO_0 | | |0 | | | | |any******| | | | +|E9 | | |VCCO_1 | | |1 | | | | |any******| | | | +|E10 | |DIFFM |IO_L30P_1 |UNUSED | |1 | | | | | | | | | +|E11 | |DIFFM |IO_L28P_1 |UNUSED | |1 | | | | | | | | | +|E12 | | |VCCINT | | | | | | | |1.2 | | | | +|E13 |an<3> |IOB |IO_L19N_2 |OUTPUT |LVCMOS25* |2 |12 |SLOW |NONE** | | |LOCATED |NO |NONE | +|E14 |sseg<6> |IOB |IO_L19P_2 |OUTPUT |LVCMOS25* |2 |12 |SLOW |NONE** | | |LOCATED |NO |NONE | +|E15 | |DIFFS |IO_L20N_2 |UNUSED | |2 | | | | | | | | | +|E16 | |DIFFM |IO_L20P_2 |UNUSED | |2 | | | | | | | | | +|F1 | | |VCCAUX | | | | | | | |2.5 | | | | +|F2 | |DIFFS |IO_L22N_7 |UNUSED | |7 | | | | | | | | | +|F3 |AD<6> |IOB |IO_L22P_7 |OUTPUT |LVCMOS25* |7 |12 |SLOW |NONE** | | |LOCATED |NO |NONE | +|F4 |AD<7> |IOB |IO_L21N_7 |OUTPUT |LVCMOS25* |7 |12 |SLOW |NONE** | | |LOCATED |NO |NONE | +|F5 | |DIFFM |IO_L23P_7 |UNUSED | |7 | | | | | | | | | +|F6 | | |GND | | | | | | | | | | | | +|F7 | | |VCCO_0 | | |0 | | | | |any******| | | | +|F8 | | |VCCO_0 | | |0 | | | | |any******| | | | +|F9 | | |VCCO_1 | | |1 | | | | |any******| | | | +|F10 | | |VCCO_1 | | |1 | | | | |any******| | | | +|F11 | | |GND | | | | | | | | | | | | +|F12 | |DIFFS |IO_L21N_2 |UNUSED | |2 | | | | | | | | | +|F13 |sseg<1> |IOB |IO_L21P_2 |OUTPUT |LVCMOS25* |2 |12 |SLOW |NONE** | | |LOCATED |NO |NONE | +|F14 |an<2> |IOB |IO_L22N_2 |OUTPUT |LVCMOS25* |2 |12 |SLOW |NONE** | | |LOCATED |NO |NONE | +|F15 | |DIFFM |IO_L22P_2 |UNUSED | |2 | | | | | | | | | +|F16 | | |VCCAUX | | | | | | | |2.5 | | | | +|G1 | |DIFFM |IO_L40P_7 |UNUSED | |7 | | | | | | | | | +|G2 | |DIFFS |IO |UNUSED | |7 | | | | | | | | | +|G3 |WE_SRAMn |IOB |IO_L24N_7 |OUTPUT |LVCMOS25* |7 |12 |SLOW |NONE** | | |LOCATED |NO |NONE | +|G4 |AD<5> |IOB |IO_L24P_7 |OUTPUT |LVCMOS25* |7 |12 |SLOW |NONE** | | |LOCATED |NO |NONE | +|G5 |AD<10> |IOB |IO_L23N_7 |OUTPUT |LVCMOS25* |7 |12 |SLOW |NONE** | | |LOCATED |NO |NONE | +|G6 | | |VCCO_7 | | |7 | | | | |2.50 | | | | +|G7 | | |GND | | | | | | | | | | | | +|G8 | | |GND | | | | | | | | | | | | +|G9 | | |GND | | | | | | | | | | | | +|G10 | | |GND | | | | | | | | | | | | +|G11 | | |VCCO_2 | | |2 | | | | |2.50 | | | | +|G12 | |DIFFS |IO_L23N_2/VREF_2 |UNUSED | |2 | | | | | | | | | +|G13 |sseg<5> |IOB |IO_L23P_2 |OUTPUT |LVCMOS25* |2 |12 |SLOW |NONE** | | |LOCATED |NO |NONE | +|G14 |an<1> |IOB |IO_L24N_2 |OUTPUT |LVCMOS25* |2 |12 |SLOW |NONE** | | |LOCATED |NO |NONE | +|G15 | |DIFFM |IO_L24P_2 |UNUSED | |2 | | | | | | | | | +|G16 | |DIFFM |IO |UNUSED | |2 | | | | | | | | | +|H1 | |DIFFS |IO_L40N_7/VREF_7 |UNUSED | |7 | | | | | | | | | +|H2 | | |GND | | | | | | | | | | | | +|H3 |AD<11> |IOB |IO_L39N_7 |OUTPUT |LVCMOS25* |7 |12 |SLOW |NONE** | | |LOCATED |NO |NONE | +|H4 |AD<12> |IOB |IO_L39P_7 |OUTPUT |LVCMOS25* |7 |12 |SLOW |NONE** | | |LOCATED |NO |NONE | +|H5 | | |VCCO_7 | | |7 | | | | |2.50 | | | | +|H6 | | |VCCO_7 | | |7 | | | | |2.50 | | | | +|H7 | | |GND | | | | | | | | | | | | +|H8 | | |GND | | | | | | | | | | | | +|H9 | | |GND | | | | | | | | | | | | +|H10 | | |GND | | | | | | | | | | | | +|H11 | | |VCCO_2 | | |2 | | | | |2.50 | | | | +|H12 | | |VCCO_2 | | |2 | | | | |2.50 | | | | +|H13 | |DIFFS |IO_L39N_2 |UNUSED | |2 | | | | | | | | | +|H14 | |DIFFM |IO_L39P_2 |UNUSED | |2 | | | | | | | | | +|H15 | |DIFFS |IO_L40N_2 |UNUSED | |2 | | | | | | | | | +|H16 | |DIFFM |IO_L40P_2/VREF_2 |UNUSED | |2 | | | | | | | | | +|J1 |VIDEO_R |IOB |IO_L40P_6/VREF_6 |OUTPUT |LVCMOS25* |6 |12 |SLOW |NONE** | | |UNLOCATED |NO |NONE | +|J2 |VIDEO_G |IOB |IO_L40N_6 |OUTPUT |LVCMOS25* |6 |12 |SLOW |NONE** | | |UNLOCATED |NO |NONE | +|J3 |AD<14> |IOB |IO_L39P_6 |OUTPUT |LVCMOS25* |6 |12 |SLOW |NONE** | | |LOCATED |NO |NONE | +|J4 |AD<13> |IOB |IO_L39N_6 |OUTPUT |LVCMOS25* |6 |12 |SLOW |NONE** | | |LOCATED |NO |NONE | +|J5 | | |VCCO_6 | | |6 | | | | |2.50 | | | | +|J6 | | |VCCO_6 | | |6 | | | | |2.50 | | | | +|J7 | | |GND | | | | | | | | | | | | +|J8 | | |GND | | | | | | | | | | | | +|J9 | | |GND | | | | | | | | | | | | +|J10 | | |GND | | | | | | | | | | | | +|J11 | | |VCCO_3 | | |3 | | | | |2.50 | | | | +|J12 | | |VCCO_3 | | |3 | | | | |2.50 | | | | +|J13 | |DIFFM |IO_L39P_3 |UNUSED | |3 | | | | | | | | | +|J14 | |DIFFS |IO_L39N_3 |UNUSED | |3 | | | | | | | | | +|J15 | | |GND | | | | | | | | | | | | +|J16 | |DIFFS |IO_L40N_3/VREF_3 |UNUSED | |3 | | | | | | | | | +|K1 |VIDEO_B |IOB |IO |OUTPUT |LVCMOS25* |6 |12 |SLOW |NONE** | | |UNLOCATED |NO |NONE | +|K2 | |DIFFM |IO_L24P_6 |UNUSED | |6 | | | | | | | | | +|K3 |AD<15> |IOB |IO_L24N_6/VREF_6 |OUTPUT |LVCMOS25* |6 |12 |SLOW |NONE** | | |LOCATED |NO |NONE | +|K4 |OE_SRAMn |IOB |IO_L23P_6 |OUTPUT |LVCMOS25* |6 |12 |SLOW |NONE** | | |LOCATED |NO |NONE | +|K5 |AD<16> |IOB |IO_L23N_6 |OUTPUT |LVCMOS25* |6 |12 |SLOW |NONE** | | |LOCATED |NO |NONE | +|K6 | | |VCCO_6 | | |6 | | | | |2.50 | | | | +|K7 | | |GND | | | | | | | | | | | | +|K8 | | |GND | | | | | | | | | | | | +|K9 | | |GND | | | | | | | | | | | | +|K10 | | |GND | | | | | | | | | | | | +|K11 | | |VCCO_3 | | |3 | | | | |2.50 | | | | +|K12 | |DIFFS |IO_L23N_3 |UNUSED | |3 | | | | | | | | | +|K13 | |DIFFM |IO_L24P_3 |UNUSED | |3 | | | | | | | | | +|K14 | |DIFFS |IO_L24N_3 |UNUSED | |3 | | | | | | | | | +|K15 | |DIFFS |IO |UNUSED | |3 | | | | | | | | | +|K16 | |DIFFM |IO_L40P_3 |UNUSED | |3 | | | | | | | | | +|L1 | | |VCCAUX | | | | | | | |2.5 | | | | +|L2 |VIDEO_SYNC |IOB |IO_L22P_6 |OUTPUT |LVCMOS25* |6 |12 |SLOW |NONE** | | |UNLOCATED |NO |NONE | +|L3 |AD<17> |IOB |IO_L22N_6 |OUTPUT |LVCMOS25* |6 |12 |SLOW |NONE** | | |LOCATED |NO |NONE | +|L4 |AD<4> |IOB |IO_L21P_6 |OUTPUT |LVCMOS25* |6 |12 |SLOW |NONE** | | |LOCATED |NO |NONE | +|L5 |AD<0> |IOB |IO_L21N_6 |OUTPUT |LVCMOS25* |6 |12 |SLOW |NONE** | | |LOCATED |NO |NONE | +|L6 | | |GND | | | | | | | | | | | | +|L7 | | |VCCO_5 | | |5 | | | | |2.50 | | | | +|L8 | | |VCCO_5 | | |5 | | | | |2.50 | | | | +|L9 | | |VCCO_4 | | |4 | | | | |2.50 | | | | +|L10 | | |VCCO_4 | | |4 | | | | |2.50 | | | | +|L11 | | |GND | | | | | | | | | | | | +|L12 | |DIFFM |IO_L23P_3/VREF_3 |UNUSED | |3 | | | | | | | | | +|L13 |btn<2> |IOB |IO_L21N_3 |INPUT |LVCMOS25* |3 | | | |NONE | |LOCATED |NO |NONE | +|L14 |RESETn |IOB |IO_L22P_3 |INPUT |LVCMOS25* |3 | | | |NONE | |LOCATED |NO |NONE | +|L15 | |DIFFS |IO_L22N_3 |UNUSED | |3 | | | | | | | | | +|L16 | | |VCCAUX | | | | | | | |2.5 | | | | +|M1 | |DIFFM |IO_L20P_6 |UNUSED | |6 | | | | | | | | | +|M2 | |DIFFS |IO_L20N_6 |UNUSED | |6 | | | | | | | | | +|M3 |AD<3> |IOB |IO_L19P_6 |OUTPUT |LVCMOS25* |6 |12 |SLOW |NONE** | | |LOCATED |NO |NONE | +|M4 |AD<2> |IOB |IO_L19N_6 |OUTPUT |LVCMOS25* |6 |12 |SLOW |NONE** | | |LOCATED |NO |NONE | +|M5 | | |VCCINT | | | | | | | |1.2 | | | | +|M6 | |DIFFM |IO_L28P_5/D7 |UNUSED | |5 | | | | | | | | | +|M7 | |DIFFM |IO_L30P_5 |UNUSED | |5 | | | | | | | | | +|M8 | | |VCCO_5 | | |5 | | | | |2.50 | | | | +|M9 | | |VCCO_4 | | |4 | | | | |2.50 | | | | +|M10 | |DIFFS |IO_L29N_4 |UNUSED | |4 | | | | | | | | | +|M11 | |DIFFS |IO_L27N_4/DIN/D0 |UNUSED | |4 | | | | | | | | | +|M12 | | |VCCINT | | | | | | | |1.2 | | | | +|M13 |btn<0> |IOB |IO_L21P_3 |INPUT |LVCMOS25* |3 | | | |NONE | |LOCATED |NO |NONE | +|M14 |btn<1> |IOB |IO_L19N_3 |INPUT |LVCMOS25* |3 | | | |NONE | |LOCATED |NO |NONE | +|M15 |PS2_DATA |IOB |IO_L20P_3 |INPUT |LVCMOS25* |3 | | | |NONE | |LOCATED |NO |NONE | +|M16 |PS2_CLK |IOB |IO_L20N_3 |INPUT |LVCMOS25* |3 | | | |NONE | |LOCATED |NO |NONE | +|N1 | |DIFFM |IO_L17P_6/VREF_6 |UNUSED | |6 | | | | | | | | | +|N2 | |DIFFS |IO_L17N_6 |UNUSED | |6 | | | | | | | | | +|N3 |AD<1> |IOB |IO_L16P_6 |OUTPUT |LVCMOS25* |6 |12 |SLOW |NONE** | | |LOCATED |NO |NONE | +|N4 | | |VCCINT | | | | | | | |1.2 | | | | +|N5 | |IOB |IO |UNUSED | |5 | | | | | | | | | +|N6 | |DIFFS |IO_L28N_5/D6 |UNUSED | |5 | | | | | | | | | +|N7 |D<0> |IOB |IO_L30N_5 |BIDIR |LVCMOS25* |5 |12 |SLOW |NONE** |NONE | |LOCATED |NO |NONE | +|N8 | |DIFFM |IO_L32P_5/GCLK2 |UNUSED | |5 | | | | | | | | | +|N9 | |DIFFS |IO_L31N_4/INIT_B |UNUSED | |4 | | | | | | | | | +|N10 | |DIFFM |IO_L29P_4 |UNUSED | |4 | | | | | | | | | +|N11 | |DIFFM |IO_L27P_4/D1 |UNUSED | |4 | | | | | | | | | +|N12 | |IOB |IO/VREF_4 |UNUSED | |4 | | | | | | | | | +|N13 | | |VCCINT | | | | | | | |1.2 | | | | +|N14 | |DIFFM |IO_L19P_3 |UNUSED | |3 | | | | | | | | | +|N15 |sseg<4> |IOB |IO_L17P_3/VREF_3 |OUTPUT |LVCMOS25* |3 |12 |SLOW |NONE** | | |LOCATED |NO |NONE | +|N16 |sseg<0> |IOB |IO_L17N_3 |OUTPUT |LVCMOS25* |3 |12 |SLOW |NONE** | | |LOCATED |NO |NONE | +|P1 | |DIFFM |IO_L01P_6/VRN_6 |UNUSED | |6 | | | | | | | | | +|P2 | |DIFFS |IO_L16N_6 |UNUSED | |6 | | | | | | | | | +|P3 | | |M0 | | | | | | | | | | | | +|P4 | | |M2 | | | | | | | | | | | | +|P5 | |DIFFM |IO_L27P_5 |UNUSED | |5 | | | | | | | | | +|P6 |LB_SRAMn |IOB |IO_L29P_5/VREF_5 |OUTPUT |LVCMOS25* |5 |12 |SLOW |NONE** | | |LOCATED |NO |NONE | +|P7 |CE_SRAMn |IOB |IO |OUTPUT |LVCMOS25* |5 |12 |SLOW |NONE** | | |LOCATED |NO |NONE | +|P8 | |DIFFS |IO_L32N_5/GCLK3 |UNUSED | |5 | | | | | | | | | +|P9 | |DIFFM |IO_L31P_4/DOUT/BUSY|UNUSED | |4 | | | | | | | | | +|P10 | |DIFFS |IO_L30N_4/D2 |UNUSED | |4 | | | | | | | | | +|P11 | |DIFFS |IO_L28N_4 |UNUSED | |4 | | | | | | | | | +|P12 | |DIFFS |IO_L25N_4 |UNUSED | |4 | | | | | | | | | +|P13 | |IOB |IO/VREF_4 |UNUSED | |4 | | | | | | | | | +|P14 | |DIFFM |IO_L16P_3 |UNUSED | |3 | | | | | | | | | +|P15 |sseg<3> |IOB |IO_L16N_3 |OUTPUT |LVCMOS25* |3 |12 |SLOW |NONE** | | |LOCATED |NO |NONE | +|P16 |sseg<7> |IOB |IO_L01N_3/VRP_3 |OUTPUT |LVCMOS25* |3 |12 |SLOW |NONE** | | |LOCATED |NO |NONE | +|R1 | |DIFFS |IO_L01N_6/VRP_6 |UNUSED | |6 | | | | | | | | | +|R2 | | |GND | | | | | | | | | | | | +|R3 | |DIFFM |IO_L01P_5/CS_B |UNUSED | |5 | | | | | | | | | +|R4 | |DIFFM |IO_L10P_5/VRN_5 |UNUSED | |5 | | | | | | | | | +|R5 |D<4> |IOB |IO_L27N_5/VREF_5 |BIDIR |LVCMOS25* |5 |12 |SLOW |NONE** |NONE | |LOCATED |NO |NONE | +|R6 |D<2> |IOB |IO_L29N_5 |BIDIR |LVCMOS25* |5 |12 |SLOW |NONE** |NONE | |LOCATED |NO |NONE | +|R7 | |DIFFM |IO_L31P_5/D5 |UNUSED | |5 | | | | | | | | | +|R8 | | |GND | | | | | | | | | | | | +|R9 |RW |IOB |IO_L32N_4/GCLK1 |OUTPUT |LVCMOS25* |4 |12 |SLOW |NONE** | | |UNLOCATED |NO |NONE | +|R10 | |DIFFM |IO_L30P_4/D3 |UNUSED | |4 | | | | | | | | | +|R11 | |DIFFM |IO_L28P_4 |UNUSED | |4 | | | | | | | | | +|R12 | |DIFFM |IO_L25P_4 |UNUSED | |4 | | | | | | | | | +|R13 | |DIFFS |IO_L01N_4/VRP_4 |UNUSED | |4 | | | | | | | | | +|R14 | | |DONE | | | | | | | | | | | | +|R15 | | |GND | | | | | | | | | | | | +|R16 |sseg<2> |IOB |IO_L01P_3/VRN_3 |OUTPUT |LVCMOS25* |3 |12 |SLOW |NONE** | | |LOCATED |NO |NONE | +|T1 | | |GND | | | | | | | | | | | | +|T2 | | |M1 | | | | | | | | | | | | +|T3 | |DIFFS |IO_L01N_5/RDWR_B |UNUSED | |5 | | | | | | | | | +|T4 |UB_SRAMn |IOB |IO_L10N_5/VRP_5 |OUTPUT |LVCMOS25* |5 |12 |SLOW |NONE** | | |LOCATED |NO |NONE | +|T5 |D<3> |IOB |IO |BIDIR |LVCMOS25* |5 |12 |SLOW |NONE** |NONE | |LOCATED |NO |NONE | +|T6 | | |VCCAUX | | | | | | | |2.5 | | | | +|T7 | |DIFFS |IO_L31N_5/D4 |UNUSED | |5 | | | | | | | | | +|T8 |D<1> |IOB |IO/VREF_5 |BIDIR |LVCMOS25* |5 |12 |SLOW |NONE** |NONE | |LOCATED |NO |NONE | +|T9 |CLK_50 |IOB |IO_L32P_4/GCLK0 |INPUT |LVCMOS25* |4 | | | |NONE | |LOCATED |NO |NONE | +|T10 | |IOB |IO/VREF_4 |UNUSED | |4 | | | | | | | | | +|T11 | | |VCCAUX | | | | | | | |2.5 | | | | +|T12 | |IOB |IO |UNUSED | |4 | | | | | | | | | +|T13 | |DIFFM |IO_L01P_4/VRN_4 |UNUSED | |4 | | | | | | | | | +|T14 | |DIFFS |IO |UNUSED | |4 | | | | | | | | | +|T15 | | |CCLK | | | | | | | | | | | | +|T16 | | |GND | | | | | | | | | | | | ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +* Default value. +** This default Pullup/Pulldown value can be overridden in Bitgen. +****** Special VCCO requirements may apply. Please consult the device + family datasheet for specific guideline on VCCO requirements. + + diff --git a/Oric Atmos_MiST/storage/OricKbd.jpg b/Oric Atmos_MiST/storage/OricKbd.jpg new file mode 100644 index 0000000000000000000000000000000000000000..37aa1bd80212f6ea7046693d6b3abdfb3cedfe50 GIT binary patch literal 150634 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 literal 0 HcmV?d00001 diff --git a/Oric Atmos_MiST/storage/OricinFPGA.gise b/Oric Atmos_MiST/storage/OricinFPGA.gise new file mode 100644 index 00000000..5af54d73 --- /dev/null +++ b/Oric Atmos_MiST/storage/OricinFPGA.gise @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + 11.1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Oric Atmos_MiST/storage/OricinFPGA.xise b/Oric Atmos_MiST/storage/OricinFPGA.xise new file mode 100644 index 00000000..b2995e31 --- /dev/null +++ b/Oric Atmos_MiST/storage/OricinFPGA.xise @@ -0,0 +1,497 @@ + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/Oric Atmos_MiST/storage/PLLJ_PLLSPE_INFO.txt b/Oric Atmos_MiST/storage/PLLJ_PLLSPE_INFO.txt new file mode 100644 index 00000000..18e9e3b5 --- /dev/null +++ b/Oric Atmos_MiST/storage/PLLJ_PLLSPE_INFO.txt @@ -0,0 +1,5 @@ +PLL_Name pll:inst_pll|altpll:altpll_component|pll_altpll:auto_generated|pll1 +PLLJITTER 31 +PLLSPEmax 84 +PLLSPEmin -53 + diff --git a/Oric Atmos_MiST/storage/apple_interface.jpeg b/Oric Atmos_MiST/storage/apple_interface.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..400984bfd0a80ce7a03d62dabd6a8ea23fc77aaf GIT binary patch literal 292244 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
-?8mXh6? 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 CSU&;) literal 0 HcmV?d00001 diff --git a/Oric Atmos_MiST/storage/microdisc-1.gif b/Oric Atmos_MiST/storage/microdisc-1.gif new file mode 100644 index 0000000000000000000000000000000000000000..8136536ee8807a208c714eec0543fe2ad5fb36ac GIT binary patch literal 61659 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

+P|E`s>ESA%R5h2C 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

e_&K`?%F(2d;zv)Uj3*SneI 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

HqJ=w$KvX+*vYSr3O%DM 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

NJ!0uXe&{@^UrqV(Ho6aMXgadWmGKH)HYqF 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
iY`;*%0m*7nSyHNGaolh&BW4)*3_Uf4HP3| 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 literal 0 HcmV?d00001 diff --git a/Oric Atmos_MiST/storage/oric1-2p.gif b/Oric Atmos_MiST/storage/oric1-2p.gif new file mode 100644 index 0000000000000000000000000000000000000000..4c6bf1663c5f0e9179abe2d15c18468294efa7f6 GIT binary patch literal 105523 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
~@QcMP!p z$|$!ykV*QI-0#RG!6azRC(WFZOEvkL5;`sIdsDt9d0ey3Fv+CNPQ38s$;&JwB9g*2l`sU+sY_f*8xQa>l<)RzsJyAruJ+w3jWPESQO#_Yrd zbkJ5^9Wzj%P^GnHrG#r-*Fp}9p=M~<~ENo)_xg%7*)da}~9jV6pA~I&Qu9 zX5(yU@Lkw#Xpv+&N4^iQ`(>qTOw=hA#%_Ph8(+!*NW!=c(1Y&-;hqd=JsRRn5ht8RI8Y9PPBmDpIeIE8AfL1)0SZk|u*^ zw2cvEgG5LUj*n!lc)%s3nnXJ zx5rlg&1A!z=6RU;L2`alW}@_6I7=y*lw9*vtJJ3Ky6MVHYEpLKROhNX3Cd=+F_(BV zXFjv#OW*+Wo%KxC8CPdHG0u~i!$YV*F*MGAGOnM{lx8_4iY>W7w0;Op8$`jF&4+r_ zq$fpbN>#d2mbO$9WC~s~U+B?|Qgff@JfuH!y2M>Yw5HmjDd>jd&Va?VjSI~QKCR?Z zrZ&~7Plak!r8-rrR@JH~Wl$qw^wa#1%BZ{4;WG*T^v_!&m8(%QsZd|z)1?mYs7mz& zJWX*`y4KaMcg1U7^}1KS_SLU{1#C*Q8d$;7G^#3@ODu@sm9O@cN3ChBMscdhrkM4t zKoV)nm^#U{V$`xUfvbH8J6h6~*0iTZZE97!TGqDKwXgMSsbC9O+1B8s`&!{(M-kb| z^7gX7o9aXRx3SxVRy>&%LKlFz(%Nc+2NJk~_GUX>>Q>jf*TrsjwYy#JcGtV#1+QT< zYsswM4!X}UM@$=Fk;PDGAL|`22c=3(ymU@ja_u7wjd`;5Hut@F=*&Q(tJ}h2wYHvR zsU~e3UIsVV!4HOTge5#-3Rl>|7k;gO)hqs6_~cd(^V>?tsyf%n*;j)2?PK${*-)S< z&$sC5&o^(YVW;ZWytj2LfHAyd9{1SCKL&D;g*;^D$_*#YK=I|+8c!EH6nyo3PJDkG zNw<>M%F1;vk+r;KE_d0>Uw$x&%VFXZFZqS~izO^EDbp$U@-mQ}(u;fB)5vtzp9xk- zhi^<(Z~36ZE~T+mp~XckGuNnKMs%Vl?3xDVCCN%AX_}opNj0Ob&2seWsOWalv4V9s zRlf8q5bK%Tj{4JYQ?z%D+-OIexf+kACnX^nLp+AMhnW@~E_d4LP!`p=wni(TT{GOL z7zftJleK;`iArGK8eO|CAE$4JPX3u4yV;Kt_E3UIP-DBgiOHVy5h3X9YX^&>{M4nV zok`ZRmiu|Z9kz|hOyx*Rdc|i(Grrw@zH?7DoswnWzxQ3kB-Oa2peAm&>z(3o&lQ=q z9{9U&8gPJCwB78E_`yC(?k^!c;R=6s1(p5q8D<=H{igWiq&-+_n;c>6G(;c)6Vy8v z$J!Jurube7ahIbn*SvD0zX1-Ro>Oe*)&XfF*}L$NGd{^>uiP1wpu|5d=d<2-sbbuGX_SLHSxo02S+aJMG z_bgbHd3@{6HHc7^FXQm1-=;r*zVh2NU-Q3TnV%U01LBK4R!B82dn=FgyaEI&@{_)> z+P&RkKM8!l_4}nLC_Ytazz`Hc@oFjpv#l|sJjGG~alira$+H!7hZpoA3Pe9d3OcVV ztIyIv%*sF-x;aq(8NnbF!XYF=3sWpRQxN#-L2kLR$AU8)=|4k)J_Fl9`I0|(`N88V z!Y$;&F7(1L1jEweFcY*ZbJ4RZEVIKZmn?L+FS5TXP?s>2!#SkGI<&((#KXJ_G@7GA zR13Zt6CxF~C!bS8a$!SKMRQ

e-*!2_g1M99NS#KcV0#7*SHFiWl= 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.txt file (this file) designed to provide information on IO usage in a human readable ASCII text format viewable through common text editors. +2. The _pad.csv file for use with spreadsheet programs such as MS Excel. This file can also be read by PACE to communicate post PAR IO information. +3. The .pad file designed for parsing by customers. It uses the "|" as a data field separator. + +INPUT FILE: oric_PS2_IF_map.ncd +OUTPUT FILE: oric_PS2_IF_pad.txt +PART TYPE: xa3s1000 +SPEED GRADE: -4 +PACKAGE: ftg256 + +Pinout by Pin Number: + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|Pin Number|Signal Name|Pin Usage|Pin Name |Direction|IO Standard|IO Bank Number|Drive (mA)|Slew Rate|Termination|IOB Delay|Voltage |Constraint|IO Register|Signal Integrity| ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|A1 | | |GND | | | | | | | | | | | | +|A2 | | |TDI | | | | | | | | | | | | +|A3 | |IOB |IO/VREF_0 |UNUSED | |0 | | | | | | | | | +|A4 | |DIFFM |IO_L01P_0/VRN_0 |UNUSED | |0 | | | | | | | | | +|A5 | |IOB |IO |UNUSED | |0 | | | | | | | | | +|A6 | | |VCCAUX | | | | | | | |2.5 | | | | +|A7 | |IOB |IO |UNUSED | |0 | | | | | | | | | +|A8 |RESTORE |IOB |IO_L32P_0/GCLK6 |OUTPUT |LVCMOS25* |0 |12 |SLOW |NONE** | | |UNLOCATED |NO |NONE | +|A9 | |IOB |IO |UNUSED | |1 | | | | | | | | | +|A10 | |DIFFS |IO_L31N_1/VREF_1 |UNUSED | |1 | | | | | | | | | +|A11 | | |VCCAUX | | | | | | | |2.5 | | | | +|A12 | |IOB |IO |UNUSED | |1 | | | | | | | | | +|A13 | |DIFFS |IO_L10N_1/VREF_1 |UNUSED | |1 | | | | | | | | | +|A14 | |DIFFS |IO_L01N_1/VRP_1 |UNUSED | |1 | | | | | | | | | +|A15 | | |TDO | | | | | | | | | | | | +|A16 | | |GND | | | | | | | | | | | | +|B1 | |DIFFM |IO_L01P_7/VRN_7 |UNUSED | |7 | | | | | | | | | +|B2 | | |GND | | | | | | | | | | | | +|B3 | | |PROG_B | | | | | | | | | | | | +|B4 | |DIFFS |IO_L01N_0/VRP_0 |UNUSED | |0 | | | | | | | | | +|B5 | |DIFFM |IO_L25P_0 |UNUSED | |0 | | | | | | | | | +|B6 | |DIFFM |IO_L28P_0 |UNUSED | |0 | | | | | | | | | +|B7 | |DIFFM |IO_L30P_0 |UNUSED | |0 | | | | | | | | | +|B8 | |DIFFS |IO_L32N_0/GCLK7 |UNUSED | |0 | | | | | | | | | +|B9 | | |GND | | | | | | | | | | | | +|B10 | |DIFFM |IO_L31P_1 |UNUSED | |1 | | | | | | | | | +|B11 | |DIFFS |IO_L29N_1 |UNUSED | |1 | | | | | | | | | +|B12 | |DIFFS |IO_L27N_1 |UNUSED | |1 | | | | | | | | | +|B13 | |DIFFM |IO_L10P_1 |UNUSED | |1 | | | | | | | | | +|B14 | |DIFFM |IO_L01P_1/VRN_1 |UNUSED | |1 | | | | | | | | | +|B15 | | |GND | | | | | | | | | | | | +|B16 | |DIFFS |IO_L01N_2/VRP_2 |UNUSED | |2 | | | | | | | | | +|C1 | |DIFFS |IO_L01N_7/VRP_7 |UNUSED | |7 | | | | | | | | | +|C2 | |DIFFS |IO_L16N_7 |UNUSED | |7 | | | | | | | | | +|C3 | |DIFFM |IO_L16P_7/VREF_7 |UNUSED | |7 | | | | | | | | | +|C4 | | |HSWAP_EN | | | | | | | | | | | | +|C5 | |DIFFS |IO_L25N_0 |UNUSED | |0 | | | | | | | | | +|C6 | |DIFFS |IO_L28N_0 |UNUSED | |0 | | | | | | | | | +|C7 | |DIFFS |IO_L30N_0 |UNUSED | |0 | | | | | | | | | +|C8 | |DIFFM |IO_L31P_0/VREF_0 |UNUSED | |0 | | | | | | | | | +|C9 | |DIFFS |IO_L32N_1/GCLK5 |UNUSED | |1 | | | | | | | | | +|C10 | |IOB |IO |UNUSED | |1 | | | | | | | | | +|C11 | |DIFFM |IO_L29P_1 |UNUSED | |1 | | | | | | | | | +|C12 | |DIFFM |IO_L27P_1 |UNUSED | |1 | | | | | | | | | +|C13 | | |TMS | | | | | | | | | | | | +|C14 | | |TCK | | | | | | | | | | | | +|C15 | |DIFFS |IO_L16N_2 |UNUSED | |2 | | | | | | | | | +|C16 | |DIFFM |IO_L01P_2/VRN_2 |UNUSED | |2 | | | | | | | | | +|D1 | |DIFFS |IO_L17N_7 |UNUSED | |7 | | | | | | | | | +|D2 | |DIFFM |IO_L17P_7 |UNUSED | |7 | | | | | | | | | +|D3 | |DIFFM |IO_L19P_7 |UNUSED | |7 | | | | | | | | | +|D4 | | |VCCINT | | | | | | | |1.2 | | | | +|D5 | |IOB |IO/VREF_0 |UNUSED | |0 | | | | | | | | | +|D6 | |DIFFM |IO_L27P_0 |UNUSED | |0 | | | | | | | | | +|D7 | |DIFFM |IO_L29P_0 |UNUSED | |0 | | | | | | | | | +|D8 | |DIFFS |IO_L31N_0 |UNUSED | |0 | | | | | | | | | +|D9 | |DIFFM |IO_L32P_1/GCLK4 |UNUSED | |1 | | | | | | | | | +|D10 | |DIFFS |IO_L30N_1 |UNUSED | |1 | | | | | | | | | +|D11 | |DIFFS |IO_L28N_1 |UNUSED | |1 | | | | | | | | | +|D12 | |IOB |IO/VREF_1 |UNUSED | |1 | | | | | | | | | +|D13 | | |VCCINT | | | | | | | |1.2 | | | | +|D14 | |DIFFM |IO_L16P_2 |UNUSED | |2 | | | | | | | | | +|D15 | |DIFFS |IO_L17N_2 |UNUSED | |2 | | | | | | | | | +|D16 | |DIFFM |IO_L17P_2/VREF_2 |UNUSED | |2 | | | | | | | | | +|E1 | |DIFFS |IO_L20N_7 |UNUSED | |7 | | | | | | | | | +|E2 | |DIFFM |IO_L20P_7 |UNUSED | |7 | | | | | | | | | +|E3 | |DIFFS |IO_L19N_7/VREF_7 |UNUSED | |7 | | | | | | | | | +|E4 | |DIFFM |IO_L21P_7 |UNUSED | |7 | | | | | | | | | +|E5 | | |VCCINT | | | | | | | |1.2 | | | | +|E6 | |DIFFS |IO_L27N_0 |UNUSED | |0 | | | | | | | | | +|E7 | |DIFFS |IO_L29N_0 |UNUSED | |0 | | | | | | | | | +|E8 | | |VCCO_0 | | |0 | | | | |2.50 | | | | +|E9 | | |VCCO_1 | | |1 | | | | |any******| | | | +|E10 | |DIFFM |IO_L30P_1 |UNUSED | |1 | | | | | | | | | +|E11 | |DIFFM |IO_L28P_1 |UNUSED | |1 | | | | | | | | | +|E12 | | |VCCINT | | | | | | | |1.2 | | | | +|E13 | |DIFFS |IO_L19N_2 |UNUSED | |2 | | | | | | | | | +|E14 | |DIFFM |IO_L19P_2 |UNUSED | |2 | | | | | | | | | +|E15 | |DIFFS |IO_L20N_2 |UNUSED | |2 | | | | | | | | | +|E16 | |DIFFM |IO_L20P_2 |UNUSED | |2 | | | | | | | | | +|F1 | | |VCCAUX | | | | | | | |2.5 | | | | +|F2 | |DIFFS |IO_L22N_7 |UNUSED | |7 | | | | | | | | | +|F3 | |DIFFM |IO_L22P_7 |UNUSED | |7 | | | | | | | | | +|F4 | |DIFFS |IO_L21N_7 |UNUSED | |7 | | | | | | | | | +|F5 | |DIFFM |IO_L23P_7 |UNUSED | |7 | | | | | | | | | +|F6 | | |GND | | | | | | | | | | | | +|F7 | | |VCCO_0 | | |0 | | | | |2.50 | | | | +|F8 | | |VCCO_0 | | |0 | | | | |2.50 | | | | +|F9 | | |VCCO_1 | | |1 | | | | |any******| | | | +|F10 | | |VCCO_1 | | |1 | | | | |any******| | | | +|F11 | | |GND | | | | | | | | | | | | +|F12 | |DIFFS |IO_L21N_2 |UNUSED | |2 | | | | | | | | | +|F13 | |DIFFM |IO_L21P_2 |UNUSED | |2 | | | | | | | | | +|F14 | |DIFFS |IO_L22N_2 |UNUSED | |2 | | | | | | | | | +|F15 | |DIFFM |IO_L22P_2 |UNUSED | |2 | | | | | | | | | +|F16 | | |VCCAUX | | | | | | | |2.5 | | | | +|G1 | |DIFFM |IO_L40P_7 |UNUSED | |7 | | | | | | | | | +|G2 | |DIFFS |IO |UNUSED | |7 | | | | | | | | | +|G3 | |DIFFS |IO_L24N_7 |UNUSED | |7 | | | | | | | | | +|G4 | |DIFFM |IO_L24P_7 |UNUSED | |7 | | | | | | | | | +|G5 | |DIFFS |IO_L23N_7 |UNUSED | |7 | | | | | | | | | +|G6 | | |VCCO_7 | | |7 | | | | |any******| | | | +|G7 | | |GND | | | | | | | | | | | | +|G8 | | |GND | | | | | | | | | | | | +|G9 | | |GND | | | | | | | | | | | | +|G10 | | |GND | | | | | | | | | | | | +|G11 | | |VCCO_2 | | |2 | | | | |any******| | | | +|G12 | |DIFFS |IO_L23N_2/VREF_2 |UNUSED | |2 | | | | | | | | | +|G13 | |DIFFM |IO_L23P_2 |UNUSED | |2 | | | | | | | | | +|G14 | |DIFFS |IO_L24N_2 |UNUSED | |2 | | | | | | | | | +|G15 | |DIFFM |IO_L24P_2 |UNUSED | |2 | | | | | | | | | +|G16 | |DIFFM |IO |UNUSED | |2 | | | | | | | | | +|H1 | |DIFFS |IO_L40N_7/VREF_7 |UNUSED | |7 | | | | | | | | | +|H2 | | |GND | | | | | | | | | | | | +|H3 | |DIFFS |IO_L39N_7 |UNUSED | |7 | | | | | | | | | +|H4 | |DIFFM |IO_L39P_7 |UNUSED | |7 | | | | | | | | | +|H5 | | |VCCO_7 | | |7 | | | | |any******| | | | +|H6 | | |VCCO_7 | | |7 | | | | |any******| | | | +|H7 | | |GND | | | | | | | | | | | | +|H8 | | |GND | | | | | | | | | | | | +|H9 | | |GND | | | | | | | | | | | | +|H10 | | |GND | | | | | | | | | | | | +|H11 | | |VCCO_2 | | |2 | | | | |any******| | | | +|H12 | | |VCCO_2 | | |2 | | | | |any******| | | | +|H13 | |DIFFS |IO_L39N_2 |UNUSED | |2 | | | | | | | | | +|H14 | |DIFFM |IO_L39P_2 |UNUSED | |2 | | | | | | | | | +|H15 | |DIFFS |IO_L40N_2 |UNUSED | |2 | | | | | | | | | +|H16 | |DIFFM |IO_L40P_2/VREF_2 |UNUSED | |2 | | | | | | | | | +|J1 | |DIFFM |IO_L40P_6/VREF_6 |UNUSED | |6 | | | | | | | | | +|J2 | |DIFFS |IO_L40N_6 |UNUSED | |6 | | | | | | | | | +|J3 | |DIFFM |IO_L39P_6 |UNUSED | |6 | | | | | | | | | +|J4 | |DIFFS |IO_L39N_6 |UNUSED | |6 | | | | | | | | | +|J5 | | |VCCO_6 | | |6 | | | | |any******| | | | +|J6 | | |VCCO_6 | | |6 | | | | |any******| | | | +|J7 | | |GND | | | | | | | | | | | | +|J8 | | |GND | | | | | | | | | | | | +|J9 | | |GND | | | | | | | | | | | | +|J10 | | |GND | | | | | | | | | | | | +|J11 | | |VCCO_3 | | |3 | | | | |any******| | | | +|J12 | | |VCCO_3 | | |3 | | | | |any******| | | | +|J13 | |DIFFM |IO_L39P_3 |UNUSED | |3 | | | | | | | | | +|J14 | |DIFFS |IO_L39N_3 |UNUSED | |3 | | | | | | | | | +|J15 | | |GND | | | | | | | | | | | | +|J16 | |DIFFS |IO_L40N_3/VREF_3 |UNUSED | |3 | | | | | | | | | +|K1 | |DIFFM |IO |UNUSED | |6 | | | | | | | | | +|K2 | |DIFFM |IO_L24P_6 |UNUSED | |6 | | | | | | | | | +|K3 | |DIFFS |IO_L24N_6/VREF_6 |UNUSED | |6 | | | | | | | | | +|K4 | |DIFFM |IO_L23P_6 |UNUSED | |6 | | | | | | | | | +|K5 | |DIFFS |IO_L23N_6 |UNUSED | |6 | | | | | | | | | +|K6 | | |VCCO_6 | | |6 | | | | |any******| | | | +|K7 | | |GND | | | | | | | | | | | | +|K8 | | |GND | | | | | | | | | | | | +|K9 | | |GND | | | | | | | | | | | | +|K10 | | |GND | | | | | | | | | | | | +|K11 | | |VCCO_3 | | |3 | | | | |any******| | | | +|K12 | |DIFFS |IO_L23N_3 |UNUSED | |3 | | | | | | | | | +|K13 | |DIFFM |IO_L24P_3 |UNUSED | |3 | | | | | | | | | +|K14 | |DIFFS |IO_L24N_3 |UNUSED | |3 | | | | | | | | | +|K15 | |DIFFS |IO |UNUSED | |3 | | | | | | | | | +|K16 | |DIFFM |IO_L40P_3 |UNUSED | |3 | | | | | | | | | +|L1 | | |VCCAUX | | | | | | | |2.5 | | | | +|L2 | |DIFFM |IO_L22P_6 |UNUSED | |6 | | | | | | | | | +|L3 | |DIFFS |IO_L22N_6 |UNUSED | |6 | | | | | | | | | +|L4 | |DIFFM |IO_L21P_6 |UNUSED | |6 | | | | | | | | | +|L5 | |DIFFS |IO_L21N_6 |UNUSED | |6 | | | | | | | | | +|L6 | | |GND | | | | | | | | | | | | +|L7 | | |VCCO_5 | | |5 | | | | |any******| | | | +|L8 | | |VCCO_5 | | |5 | | | | |any******| | | | +|L9 | | |VCCO_4 | | |4 | | | | |any******| | | | +|L10 | | |VCCO_4 | | |4 | | | | |any******| | | | +|L11 | | |GND | | | | | | | | | | | | +|L12 | |DIFFM |IO_L23P_3/VREF_3 |UNUSED | |3 | | | | | | | | | +|L13 | |DIFFS |IO_L21N_3 |UNUSED | |3 | | | | | | | | | +|L14 | |DIFFM |IO_L22P_3 |UNUSED | |3 | | | | | | | | | +|L15 | |DIFFS |IO_L22N_3 |UNUSED | |3 | | | | | | | | | +|L16 | | |VCCAUX | | | | | | | |2.5 | | | | +|M1 | |DIFFM |IO_L20P_6 |UNUSED | |6 | | | | | | | | | +|M2 | |DIFFS |IO_L20N_6 |UNUSED | |6 | | | | | | | | | +|M3 | |DIFFM |IO_L19P_6 |UNUSED | |6 | | | | | | | | | +|M4 | |DIFFS |IO_L19N_6 |UNUSED | |6 | | | | | | | | | +|M5 | | |VCCINT | | | | | | | |1.2 | | | | +|M6 | |DIFFM |IO_L28P_5/D7 |UNUSED | |5 | | | | | | | | | +|M7 | |DIFFM |IO_L30P_5 |UNUSED | |5 | | | | | | | | | +|M8 | | |VCCO_5 | | |5 | | | | |any******| | | | +|M9 | | |VCCO_4 | | |4 | | | | |any******| | | | +|M10 | |DIFFS |IO_L29N_4 |UNUSED | |4 | | | | | | | | | +|M11 | |DIFFS |IO_L27N_4/DIN/D0 |UNUSED | |4 | | | | | | | | | +|M12 | | |VCCINT | | | | | | | |1.2 | | | | +|M13 | |DIFFM |IO_L21P_3 |UNUSED | |3 | | | | | | | | | +|M14 | |DIFFS |IO_L19N_3 |UNUSED | |3 | | | | | | | | | +|M15 | |DIFFM |IO_L20P_3 |UNUSED | |3 | | | | | | | | | +|M16 | |DIFFS |IO_L20N_3 |UNUSED | |3 | | | | | | | | | +|N1 | |DIFFM |IO_L17P_6/VREF_6 |UNUSED | |6 | | | | | | | | | +|N2 | |DIFFS |IO_L17N_6 |UNUSED | |6 | | | | | | | | | +|N3 | |DIFFM |IO_L16P_6 |UNUSED | |6 | | | | | | | | | +|N4 | | |VCCINT | | | | | | | |1.2 | | | | +|N5 | |IOB |IO |UNUSED | |5 | | | | | | | | | +|N6 | |DIFFS |IO_L28N_5/D6 |UNUSED | |5 | | | | | | | | | +|N7 | |DIFFS |IO_L30N_5 |UNUSED | |5 | | | | | | | | | +|N8 | |DIFFM |IO_L32P_5/GCLK2 |UNUSED | |5 | | | | | | | | | +|N9 | |DIFFS |IO_L31N_4/INIT_B |UNUSED | |4 | | | | | | | | | +|N10 | |DIFFM |IO_L29P_4 |UNUSED | |4 | | | | | | | | | +|N11 | |DIFFM |IO_L27P_4/D1 |UNUSED | |4 | | | | | | | | | +|N12 | |IOB |IO/VREF_4 |UNUSED | |4 | | | | | | | | | +|N13 | | |VCCINT | | | | | | | |1.2 | | | | +|N14 | |DIFFM |IO_L19P_3 |UNUSED | |3 | | | | | | | | | +|N15 | |DIFFM |IO_L17P_3/VREF_3 |UNUSED | |3 | | | | | | | | | +|N16 | |DIFFS |IO_L17N_3 |UNUSED | |3 | | | | | | | | | +|P1 | |DIFFM |IO_L01P_6/VRN_6 |UNUSED | |6 | | | | | | | | | +|P2 | |DIFFS |IO_L16N_6 |UNUSED | |6 | | | | | | | | | +|P3 | | |M0 | | | | | | | | | | | | +|P4 | | |M2 | | | | | | | | | | | | +|P5 | |DIFFM |IO_L27P_5 |UNUSED | |5 | | | | | | | | | +|P6 | |DIFFM |IO_L29P_5/VREF_5 |UNUSED | |5 | | | | | | | | | +|P7 | |IOB |IO |UNUSED | |5 | | | | | | | | | +|P8 | |DIFFS |IO_L32N_5/GCLK3 |UNUSED | |5 | | | | | | | | | +|P9 | |DIFFM |IO_L31P_4/DOUT/BUSY|UNUSED | |4 | | | | | | | | | +|P10 | |DIFFS |IO_L30N_4/D2 |UNUSED | |4 | | | | | | | | | +|P11 | |DIFFS |IO_L28N_4 |UNUSED | |4 | | | | | | | | | +|P12 | |DIFFS |IO_L25N_4 |UNUSED | |4 | | | | | | | | | +|P13 | |IOB |IO/VREF_4 |UNUSED | |4 | | | | | | | | | +|P14 | |DIFFM |IO_L16P_3 |UNUSED | |3 | | | | | | | | | +|P15 | |DIFFS |IO_L16N_3 |UNUSED | |3 | | | | | | | | | +|P16 | |DIFFS |IO_L01N_3/VRP_3 |UNUSED | |3 | | | | | | | | | +|R1 | |DIFFS |IO_L01N_6/VRP_6 |UNUSED | |6 | | | | | | | | | +|R2 | | |GND | | | | | | | | | | | | +|R3 | |DIFFM |IO_L01P_5/CS_B |UNUSED | |5 | | | | | | | | | +|R4 | |DIFFM |IO_L10P_5/VRN_5 |UNUSED | |5 | | | | | | | | | +|R5 | |DIFFS |IO_L27N_5/VREF_5 |UNUSED | |5 | | | | | | | | | +|R6 | |DIFFS |IO_L29N_5 |UNUSED | |5 | | | | | | | | | +|R7 | |DIFFM |IO_L31P_5/D5 |UNUSED | |5 | | | | | | | | | +|R8 | | |GND | | | | | | | | | | | | +|R9 | |DIFFS |IO_L32N_4/GCLK1 |UNUSED | |4 | | | | | | | | | +|R10 | |DIFFM |IO_L30P_4/D3 |UNUSED | |4 | | | | | | | | | +|R11 | |DIFFM |IO_L28P_4 |UNUSED | |4 | | | | | | | | | +|R12 | |DIFFM |IO_L25P_4 |UNUSED | |4 | | | | | | | | | +|R13 | |DIFFS |IO_L01N_4/VRP_4 |UNUSED | |4 | | | | | | | | | +|R14 | | |DONE | | | | | | | | | | | | +|R15 | | |GND | | | | | | | | | | | | +|R16 | |DIFFM |IO_L01P_3/VRN_3 |UNUSED | |3 | | | | | | | | | +|T1 | | |GND | | | | | | | | | | | | +|T2 | | |M1 | | | | | | | | | | | | +|T3 | |DIFFS |IO_L01N_5/RDWR_B |UNUSED | |5 | | | | | | | | | +|T4 | |DIFFS |IO_L10N_5/VRP_5 |UNUSED | |5 | | | | | | | | | +|T5 | |IOB |IO |UNUSED | |5 | | | | | | | | | +|T6 | | |VCCAUX | | | | | | | |2.5 | | | | +|T7 | |DIFFS |IO_L31N_5/D4 |UNUSED | |5 | | | | | | | | | +|T8 | |IOB |IO/VREF_5 |UNUSED | |5 | | | | | | | | | +|T9 | |DIFFM |IO_L32P_4/GCLK0 |UNUSED | |4 | | | | | | | | | +|T10 | |IOB |IO/VREF_4 |UNUSED | |4 | | | | | | | | | +|T11 | | |VCCAUX | | | | | | | |2.5 | | | | +|T12 | |IOB |IO |UNUSED | |4 | | | | | | | | | +|T13 | |DIFFM |IO_L01P_4/VRN_4 |UNUSED | |4 | | | | | | | | | +|T14 | |DIFFS |IO |UNUSED | |4 | | | | | | | | | +|T15 | | |CCLK | | | | | | | | | | | | +|T16 | | |GND | | | | | | | | | | | | ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +* Default value. +** This default Pullup/Pulldown value can be overridden in Bitgen. +****** Special VCCO requirements may apply. Please consult the device + family datasheet for specific guideline on VCCO requirements. + + diff --git a/Oric Atmos_MiST/storage/readme.txt b/Oric Atmos_MiST/storage/readme.txt new file mode 100644 index 00000000..3d3e0a8e --- /dev/null +++ b/Oric Atmos_MiST/storage/readme.txt @@ -0,0 +1,26 @@ +22/01/2012 : Version 0.91 de travail / release working + FR : + Des mises à jour pour debugger + Correction de bugs. + + GB + Many upadates to debug + Bugs fixes + + +01/02/2010 : Version 0.9 de travail / release working + + Ce n'est pas encore un version fonctionnelle +mais c'est pour bientôt. + It's not running but perhaps tomorrow ? ;-) + +====================================================== +====================================================== + +Merci à / Thanks to : + + MikeJ de www.fpgaarcade.com pour avoir mis à disposition une + version de AY-3-8192 qui a permis de corriger la mienne et pour + le source du VIA 6522, + + Gregory Estrade de www.torlus.com (pour son aide et son libre accès +à son code vhdl) + + Daniel Wallner pour le T65 (www.opencores.org) diff --git a/Oric Atmos_MiST/storage/rom.mem b/Oric Atmos_MiST/storage/rom.mem new file mode 100644 index 00000000..e69de29b diff --git a/Oric Atmos_MiST/storage/rtl_o/BMP.vhd b/Oric Atmos_MiST/storage/rtl_o/BMP.vhd new file mode 100644 index 00000000..d53659dd --- /dev/null +++ b/Oric Atmos_MiST/storage/rtl_o/BMP.vhd @@ -0,0 +1,47 @@ +---------------------------------------------------------------------------------- +-- Company: +-- Engineer: +-- +-- Create Date: 21:49:44 12/03/2009 +-- Design Name: +-- Module Name: BMP - Behavioral +-- Project Name: +-- Target Devices: +-- Tool versions: +-- Description: +-- +-- Dependencies: +-- +-- Revision: +-- Revision 0.01 - File Created +-- Additional Comments: +-- +---------------------------------------------------------------------------------- +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_ARITH.ALL; +use IEEE.STD_LOGIC_UNSIGNED.ALL; + +---- Uncomment the following library declaration if instantiating +---- any Xilinx primitives in this code. +--library UNISIM; +--use UNISIM.VComponents.all; + +entity BMP is +end BMP; + +architecture Behavioral of BMP is + +begin + +-- Header +-- MAGIC NUMBER : 2 octets 'BM' +-- Size of bitmap : 4 octets +-- Reserved : 2 octets +-- Reserved : 2 octets +-- Offset : 4 octets + + + +end Behavioral; + diff --git a/Oric Atmos_MiST/storage/rtl_o/DISP_HEX.vhd b/Oric Atmos_MiST/storage/rtl_o/DISP_HEX.vhd new file mode 100644 index 00000000..fc91b9a9 --- /dev/null +++ b/Oric Atmos_MiST/storage/rtl_o/DISP_HEX.vhd @@ -0,0 +1,80 @@ +-- Listing 4.15 +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +entity disp_hex_mux is + port( + clk, reset: in std_logic; + hex3, hex2, hex1, hex0: in std_logic_vector(3 downto 0); + dp_in: in std_logic_vector(3 downto 0); + an: out std_logic_vector(3 downto 0); + sseg: out std_logic_vector(7 downto 0) + ); +end disp_hex_mux ; + +architecture arch of disp_hex_mux is + -- each 7-seg led enabled (2^18/4)*25 ns (40 ms) + constant N: integer:=18; + signal q_reg, q_next: unsigned(N-1 downto 0); + signal sel: std_logic_vector(1 downto 0); + signal hex: std_logic_vector(3 downto 0); + signal dp: std_logic; +begin + -- register + process(clk,reset) + begin + if reset='1' then + q_reg <= (others=>'0'); + elsif (clk'event and clk='1') then + q_reg <= q_next; + end if; + end process; + + -- next-state logic for the counter + q_next <= q_reg + 1; + + -- 2 MSBs of counter to control 4-to-1 multiplexing + sel <= std_logic_vector(q_reg(N-1 downto N-2)); + process(sel,hex0,hex1,hex2,hex3,dp_in) + begin + case sel is + when "00" => + an <= "1110"; + hex <= hex0; + dp <= dp_in(0); + when "01" => + an <= "1101"; + hex <= hex1; + dp <= dp_in(1); + when "10" => + an <= "1011"; + hex <= hex2; + dp <= dp_in(2); + when others => + an <= "0111"; + hex <= hex3; + dp <= dp_in(3); + end case; + end process; + -- hex-to-7-segment led decoding + with hex select + sseg(6 downto 0) <= + "0000001" when "0000", + "1001111" when "0001", + "0010010" when "0010", + "0000110" when "0011", + "1001100" when "0100", + "0100100" when "0101", + "0100000" when "0110", + "0001111" when "0111", + "0000000" when "1000", + "0000100" when "1001", + "0001000" when "1010", --a + "1100000" when "1011", --b + "0110001" when "1100", --c + "1000010" when "1101", --d + "0110000" when "1110", --e + "0111000" when others; --f + -- decimal point + sseg(7) <= dp; +end arch; \ No newline at end of file diff --git a/Oric Atmos_MiST/storage/rtl_o/DISP_UNIT.vhd b/Oric Atmos_MiST/storage/rtl_o/DISP_UNIT.vhd new file mode 100644 index 00000000..fc91b9a9 --- /dev/null +++ b/Oric Atmos_MiST/storage/rtl_o/DISP_UNIT.vhd @@ -0,0 +1,80 @@ +-- Listing 4.15 +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +entity disp_hex_mux is + port( + clk, reset: in std_logic; + hex3, hex2, hex1, hex0: in std_logic_vector(3 downto 0); + dp_in: in std_logic_vector(3 downto 0); + an: out std_logic_vector(3 downto 0); + sseg: out std_logic_vector(7 downto 0) + ); +end disp_hex_mux ; + +architecture arch of disp_hex_mux is + -- each 7-seg led enabled (2^18/4)*25 ns (40 ms) + constant N: integer:=18; + signal q_reg, q_next: unsigned(N-1 downto 0); + signal sel: std_logic_vector(1 downto 0); + signal hex: std_logic_vector(3 downto 0); + signal dp: std_logic; +begin + -- register + process(clk,reset) + begin + if reset='1' then + q_reg <= (others=>'0'); + elsif (clk'event and clk='1') then + q_reg <= q_next; + end if; + end process; + + -- next-state logic for the counter + q_next <= q_reg + 1; + + -- 2 MSBs of counter to control 4-to-1 multiplexing + sel <= std_logic_vector(q_reg(N-1 downto N-2)); + process(sel,hex0,hex1,hex2,hex3,dp_in) + begin + case sel is + when "00" => + an <= "1110"; + hex <= hex0; + dp <= dp_in(0); + when "01" => + an <= "1101"; + hex <= hex1; + dp <= dp_in(1); + when "10" => + an <= "1011"; + hex <= hex2; + dp <= dp_in(2); + when others => + an <= "0111"; + hex <= hex3; + dp <= dp_in(3); + end case; + end process; + -- hex-to-7-segment led decoding + with hex select + sseg(6 downto 0) <= + "0000001" when "0000", + "1001111" when "0001", + "0010010" when "0010", + "0000110" when "0011", + "1001100" when "0100", + "0100100" when "0101", + "0100000" when "0110", + "0001111" when "0111", + "0000000" when "1000", + "0000100" when "1001", + "0001000" when "1010", --a + "1100000" when "1011", --b + "0110001" when "1100", --c + "1000010" when "1101", --d + "0110000" when "1110", --e + "0111000" when others; --f + -- decimal point + sseg(7) <= dp; +end arch; \ No newline at end of file diff --git a/Oric Atmos_MiST/storage/rtl_o/RAM.vhd b/Oric Atmos_MiST/storage/rtl_o/RAM.vhd new file mode 100644 index 00000000..7d19bde6 --- /dev/null +++ b/Oric Atmos_MiST/storage/rtl_o/RAM.vhd @@ -0,0 +1,89 @@ +---------------------------------------------------------------------------------- +-- Company: +-- Engineer: +-- +-- Create Date: 10:13:33 02/03/2009 +-- Design Name: +-- Module Name: RAM - Behavioral +-- Project Name: +-- Target Devices: +-- Tool versions: +-- Description: +-- +-- Dependencies: +-- +-- Revision: +-- Revision 0.01 - File Created +-- Additional Comments: +-- +---------------------------------------------------------------------------------- +-- ----------------------------------------------------------------------- +-- +-- Syntiac's generic VHDL support files. +-- +-- ----------------------------------------------------------------------- +-- Copyright 2005-2008 by Peter Wendrich (pwsoft@syntiac.com) +-- http://www.syntiac.com/fpga64.html +-- ----------------------------------------------------------------------- +-- +-- gen_ram.vhd +-- +-- ----------------------------------------------------------------------- +-- +-- Simple dual port ram: One read and one write port +-- +-- ----------------------------------------------------------------------- +library IEEE; + use ieee.std_logic_1164.all; + use ieee.std_logic_unsigned.all; + use ieee.numeric_std.all; + +-- ----------------------------------------------------------------------- + +entity ram is + generic ( + dWidth : integer := 8; + aWidth : integer := 16 + ); + port ( + clk : in std_logic; + we : in std_logic; + addr : in std_logic_vector((aWidth-1) downto 0); + d : in std_logic_vector((dWidth-1) downto 0); + q : out std_logic_vector((dWidth-1) downto 0) + ); +end entity; + +-- ----------------------------------------------------------------------- + +architecture rtl of ram is + type RAM_ARRAY is array(0 to 65535) of std_logic_vector(7 downto 0); + signal RAM : RAM_ARRAY := ((others=> (others=>'0'))); + signal rAddrReg : std_logic_vector((aWidth-1) downto 0); + signal qReg : std_logic_vector((dWidth-1) downto 0); +begin + +-- ----------------------------------------------------------------------- +-- Memory write +-- ----------------------------------------------------------------------- + process(clk) + begin + if rising_edge(clk) then + if we = '0' then + RAM(to_integer(unsigned(addr))) <= d; + end if; + end if; + end process; + +-- ----------------------------------------------------------------------- +-- Memory read +-- ----------------------------------------------------------------------- + process(clk) + begin + if rising_edge(clk) then + rAddrReg <= addr; + end if; + end process; + q <= RAM(to_integer(unsigned(rAddrReg))); +end rtl; + diff --git a/Oric Atmos_MiST/storage/rtl_o/SRAM.vhd b/Oric Atmos_MiST/storage/rtl_o/SRAM.vhd new file mode 100644 index 00000000..a85cba3e --- /dev/null +++ b/Oric Atmos_MiST/storage/rtl_o/SRAM.vhd @@ -0,0 +1,69 @@ +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_ARITH.ALL; +use IEEE.STD_LOGIC_UNSIGNED.ALL; + +entity SRAM is + port( + A : in std_logic_vector(15 downto 0); + + nOE : in std_logic; + nWE : in std_logic; + + nCE1 : in std_logic; + nUB1 : in std_logic; + nLB1 : in std_logic; + + D : inout std_logic_vector(7 downto 0) + ); +end SRAM; + +architecture sim of SRAM is +-- write timings : +constant Thzwe : time := 6 ns; -- nWE LOW to High-Z Output +-- read timings : +constant Taa : time := 12 ns; -- address access time + +constant numWords : integer := 65536; -- 262144 max; +type memType is array (numWords-1 downto 0) of std_logic_vector( 7 downto 0); +signal memory : memType := (others => (others => '0')); + +begin + +rdMem: process (nCE1, nWE, nOE, nUB1, nLB1, A) +begin + D <= (others => 'Z'); -- defaults to hi-Z + + if nCE1 = '0' then + if nOE = '0' then + if nWE = '1' then + if nUB1 = '1' and nLB1 = '0' then + D <= memory(conv_integer(to_x01(A))) after Taa; + else + assert false report "%W : nUB1 and nLB1 are both deasserted during ram read" severity warning; + end if; + else + assert false report "%W : signal assertion violation : nOE and nWE asserted" severity warning; + end if; + end if; + end if; +end process; + + +wrMem: process (nCE1, nWE, nOE, A, D) +begin +if nCE1 = '0' then + if nWE= '0' then + if nOE = '1' then + memory(conv_integer(to_x01(A))) <= D(7 downto 0) after Thzwe; + else + assert false report "%W : ubL and lbL are both deasserted during ram write" severity warning; + end if; + -- else + -- assert false report "%W : signal assertion violation : oeL and weL asserted" severity warning; + end if; +end if; + +end process; + +end sim; diff --git a/Oric Atmos_MiST/storage/rtl_o/T1.vhd b/Oric Atmos_MiST/storage/rtl_o/T1.vhd new file mode 100644 index 00000000..b92cc357 --- /dev/null +++ b/Oric Atmos_MiST/storage/rtl_o/T1.vhd @@ -0,0 +1,152 @@ +-------------------------------------------------------------------------------- +-- Company: +-- Engineer: +-- +-- Create Date: 09:44:36 03/10/2011 +-- Design Name: +-- Module Name: /home/will/Documents/VHDL/PROJET/OricinFPGA/T1.vhd +-- Project Name: OricinFPGA +-- Target Device: +-- Tool versions: +-- Description: +-- +-- VHDL Test Bench Created by ISE for module: ORIC +-- +-- Dependencies: +-- +-- Revision: +-- Revision 0.01 - File Created +-- Additional Comments: +-- +-- Notes: +-- This testbench has been automatically generated using types std_logic and +-- std_logic_vector for the ports of the unit under test. Xilinx recommends +-- that these types always be used for the top-level I/O of a design in order +-- to guarantee that the testbench will bind correctly to the post-implementation +-- simulation model. +-------------------------------------------------------------------------------- +LIBRARY ieee; +USE ieee.std_logic_1164.ALL; + +-- Uncomment the following library declaration if using +-- arithmetic functions with Signed or Unsigned values +--USE ieee.numeric_std.ALL; + +ENTITY T1 IS +END T1; + +ARCHITECTURE behavior OF T1 IS + + -- Component Declaration for the Unit Under Test (UUT) + + COMPONENT ORIC + PORT( + AD : INOUT std_logic_vector(17 downto 0); + OE_SRAMn : OUT std_logic; + WE_SRAMn : OUT std_logic; + CE_SRAMn : OUT std_logic; + UB_SRAMn : OUT std_logic; + LB_SRAMn : OUT std_logic; + RW : OUT std_logic; + D : INOUT std_logic_vector(7 downto 0); + RESETn : IN std_logic; + PS2_CLK : IN std_logic; + PS2_DATA : IN std_logic; + VIDEO_R : OUT std_logic; + VIDEO_G : OUT std_logic; + VIDEO_B : OUT std_logic; + VIDEO_SYNC : OUT std_logic; + CLK_50 : IN std_logic; + btn : IN std_logic_vector(3 downto 0); + an : OUT std_logic_vector(3 downto 0); + sseg : OUT std_logic_vector(7 downto 0) + ); + END COMPONENT; + + + --Inputs + signal RESETn : std_logic := '0'; + signal PS2_CLK : std_logic := '0'; + signal PS2_DATA : std_logic := '0'; + signal CLK_50 : std_logic := '0'; + signal btn : std_logic_vector(3 downto 0) := (others => '0'); + + --BiDirs + signal AD : std_logic_vector(17 downto 0); + signal D : std_logic_vector(7 downto 0); + + --Outputs + signal OE_SRAMn : std_logic; + signal WE_SRAMn : std_logic; + signal CE_SRAMn : std_logic; + signal UB_SRAMn : std_logic; + signal LB_SRAMn : std_logic; + signal RW : std_logic; + signal VIDEO_R : std_logic; + signal VIDEO_G : std_logic; + signal VIDEO_B : std_logic; + signal VIDEO_SYNC : std_logic; + signal an : std_logic_vector(3 downto 0); + signal sseg : std_logic_vector(7 downto 0); + + -- Clock period definitions + constant PS2_CLK_period : time := 10 ns; + constant CLK_50_period : time := 10 ns; + +BEGIN + + -- Instantiate the Unit Under Test (UUT) + uut: ORIC PORT MAP ( + AD => AD, + OE_SRAMn => OE_SRAMn, + WE_SRAMn => WE_SRAMn, + CE_SRAMn => CE_SRAMn, + UB_SRAMn => UB_SRAMn, + LB_SRAMn => LB_SRAMn, + RW => RW, + D => D, + RESETn => RESETn, + PS2_CLK => PS2_CLK, + PS2_DATA => PS2_DATA, + VIDEO_R => VIDEO_R, + VIDEO_G => VIDEO_G, + VIDEO_B => VIDEO_B, + VIDEO_SYNC => VIDEO_SYNC, + CLK_50 => CLK_50, + btn => btn, + an => an, + sseg => sseg + ); + + -- Clock process definitions + PS2_CLK_process :process + begin + PS2_CLK <= '0'; + wait for PS2_CLK_period/2; + PS2_CLK <= '1'; + wait for PS2_CLK_period/2; + end process; + + CLK_50_process :process + begin + CLK_50 <= '0'; + wait for CLK_50_period/2; + CLK_50 <= '1'; + wait for CLK_50_period/2; + end process; + + + -- Stimulus process + stim_proc: process + begin + -- hold reset state for 100 ns. + wait for 100 ns; + + wait for PS2_CLK_period*10; + + -- insert stimulus here + + wait; + end process; + +END; diff --git a/Oric Atmos_MiST/storage/rtl_o/ULA_LOG.vhd b/Oric Atmos_MiST/storage/rtl_o/ULA_LOG.vhd new file mode 100644 index 00000000..51b70067 --- /dev/null +++ b/Oric Atmos_MiST/storage/rtl_o/ULA_LOG.vhd @@ -0,0 +1,81 @@ +---------------------------------------------------------------------------------- +-- Company: +-- Engineer: +-- +-- Create Date: 17:12:00 08/14/2011 +-- Design Name: +-- Module Name: ula_log - Behavioral +-- Project Name: +-- Target Devices: +-- Tool versions: +-- Description: +-- +-- Dependencies: +-- +-- Revision: +-- Revision 0.01 - File Created +-- Additional Comments: +-- +---------------------------------------------------------------------------------- +library ieee; +use ieee.std_logic_1164.all; + +use std.textio.all; +use work.txt_util.all; + +entity ula_log is + generic ( + log_ula: string := "ula.log" + ); + port( + CLK : in std_logic; + RST : in std_logic; + x1 : in std_logic_vector(7 downto 0); + x2 : in std_logic_vector(15 downto 0); + x3 : in std_logic + ); +end ula_log; + +architecture log_to_file of ula_log is + +file l_file_ula: TEXT open write_mode is log_ula; + +begin + +-- write data and control information to a file + +receive_data: process (CLK,RST) + +variable l: line; +variable cnt : integer:=0; + +begin + if (RST = '0') then + print(l_file_ula, "---- 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23"); + + elsif (clk'event and clk='0') then + -- Low period of PHI2 + if (x3 ='0') then + if (cnt = 0) then + write (l, hstr(x2) & " " & hstr(x1) & " "); + else + -- Je récupére que le code ASCII + if (cnt mod 2 = 0) then + write(l, hstr(x1) & " "); + end if; + end if; + + cnt:=cnt+1; + + -- Il y a 64 pixels dont 40 utiles par ligne et deux accès à la mémoire donc 64 X 2 = 128 + if (cnt = 128) then + writeline(l_file_ula, l); + cnt:=0; + end if; + end if; + end if; + +end process receive_data; + +end log_to_file; + \ No newline at end of file diff --git a/Oric Atmos_MiST/storage/rtl_o/U_ULA_LGO.vhd b/Oric Atmos_MiST/storage/rtl_o/U_ULA_LGO.vhd new file mode 100644 index 00000000..1b8e2174 --- /dev/null +++ b/Oric Atmos_MiST/storage/rtl_o/U_ULA_LGO.vhd @@ -0,0 +1,41 @@ +---------------------------------------------------------------------------------- +-- Company: +-- Engineer: +-- +-- Create Date: 10:21:17 12/18/2011 +-- Design Name: +-- Module Name: U_ULA_LGO - Behavioral +-- Project Name: +-- Target Devices: +-- Tool versions: +-- Description: +-- +-- Dependencies: +-- +-- Revision: +-- Revision 0.01 - File Created +-- Additional Comments: +-- +---------------------------------------------------------------------------------- +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; + +-- Uncomment the following library declaration if using +-- arithmetic functions with Signed or Unsigned values +--use IEEE.NUMERIC_STD.ALL; + +-- Uncomment the following library declaration if instantiating +-- any Xilinx primitives in this code. +--library UNISIM; +--use UNISIM.VComponents.all; + +entity U_ULA_LGO is +end U_ULA_LGO; + +architecture Behavioral of U_ULA_LGO is + +begin + + +end Behavioral; + diff --git a/Oric Atmos_MiST/storage/rtl_o/file_log.vhd b/Oric Atmos_MiST/storage/rtl_o/file_log.vhd new file mode 100644 index 00000000..f1a5bc64 --- /dev/null +++ b/Oric Atmos_MiST/storage/rtl_o/file_log.vhd @@ -0,0 +1,67 @@ +---------------------------------------------------------------------------------- +-- Company: +-- Engineer: +-- +-- Create Date: 22:00:59 03/08/2011 +-- Design Name: +-- Module Name: file_log - Behavioral +-- Project Name: +-- Target Devices: +-- Tool versions: +-- Description: +-- +-- Dependencies: +-- +-- Revision: +-- Revision 0.01 - File Created +-- Additional Comments: +-- +---------------------------------------------------------------------------------- +library ieee; +use ieee.std_logic_1164.all; + +use std.textio.all; +use work.txt_util.all; + +entity FILE_LOG is + generic ( + log_file: string := "res.log" + ); + port( + CLK : in std_logic; + RST : in std_logic; + x1 : in std_logic_vector(7 downto 0); + x2 : in std_logic_vector(7 downto 0); + x3 : in std_logic_vector(15 downto 0); + x4 : in std_logic_vector(2 downto 0); + x5 : in std_logic + ); +end FILE_LOG; + + +architecture log_to_file of FILE_LOG is + +file l_file: TEXT open write_mode is log_file; + +begin + +-- write data and control information to a file + +receive_data: process (CLK,RST) + +variable l: line; + +begin + if (RST = '0') then + print(l_file, "#x3(AD) x1(IN) x2(OUT) RGB SYNC"); + print(l_file, "#------------------------------------"); + print(l_file, " "); + elsif (clk'event and clk='1') then + write(l, hstr(x3)& " " & hstr(x1) & "h " & hstr(x2)& "h " &hstr(x4)& "h " &chr(x5)); + writeline(l_file, l); + end if; + +end process receive_data; + +end log_to_file; + \ No newline at end of file diff --git a/Oric Atmos_MiST/storage/rtl_o/gen_clk.vhd b/Oric Atmos_MiST/storage/rtl_o/gen_clk.vhd new file mode 100644 index 00000000..5def2c8d --- /dev/null +++ b/Oric Atmos_MiST/storage/rtl_o/gen_clk.vhd @@ -0,0 +1,44 @@ +-- +-- GEN_CLK.vhd +-- +-- GENERATOR of CLOCK. +-- +-- Copyright (C)2001 SEILEBOST +-- All rights reserved. +-- +-- $Id: GEN_CLK.vhd, v0.42 2002/01/03 00:00:00 SEILEBOST $ +-- +-- Generate secondary CLK from CLK_MASTER +-- CLK : Clock Master, 16 MHz +-- CLK_16 : for the tone generator, +-- CLK_256 : for the envelope generator + +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_ARITH.ALL; +use IEEE.STD_LOGIC_UNSIGNED.ALL; + +entity GEN_CLK is + Port ( CLK : in std_logic; + RST : in std_logic; + CLK_16 : out std_logic; + CLK_256 : out std_logic + ); +end GEN_CLK; + +architecture Behavioral of GEN_CLK is + +SIGNAL COUNT : std_logic_vector(7 downto 0); +begin + + PROCESS(CLK, RST) + BEGIN + if (RST = '1') then + COUNT <= (OTHERS => '0'); + elsif (CLK'event and CLK = '1') then + COUNT <= COUNT + 1; + CLK_16 <= COUNT(3); + CLK_256 <= COUNT(7); + end if; + END PROCESS; +end Behavioral; diff --git a/Oric Atmos_MiST/storage/rtl_o/i_pn_gen.vhd b/Oric Atmos_MiST/storage/rtl_o/i_pn_gen.vhd new file mode 100644 index 00000000..927558be --- /dev/null +++ b/Oric Atmos_MiST/storage/rtl_o/i_pn_gen.vhd @@ -0,0 +1,100 @@ +-- +-- fg.vhd +-- +-- Generate a random noise. +-- +-- Copyright (C)2001 SEILEBOST +-- All rights reserved. +-- +-- $Id: fg.vhd, v0.3 2001/11/14 00:00:00 SEILEBOST $ +-- +-- from XAPP211.pdf & XAPP211.ZIP (XILINX APPLICATION) +-- +--The following is example code that implements one LFSR which can be used as part of pn generators. +--The number of taps, tap points, and LFSR width are parameratizable. When targetting Xilinx (Virtex) +--all the latest synthesis vendors (Leonardo, Synplicity, and FPGA Express) will infer the shift +--register LUTS (SRL16) resulting in a very efficient implementation. +-- +--Control signals have been provided to allow external circuitry to control such things as filling, +--puncturing, stalling (augmentation), etc. +-- +--Mike Gulotta +--11/4/99 +--Revised 3/17/00: Fixed "commented" block diagram to match polynomial. +-- +-- +--################################################################################################### +-- I Polinomials: # +-- I(x) = X**17 + X**2 + 1 # +-- # +-- LFSR implementation format examples: # +--################################################################################################### +-- # +-- I(x) = X**17 + X**2 + 1 # +-- ________ # +-- | |<<......................... # +-- | Parity | | # +-- .................| |<<... | # +-- | |________| | | # +-- | | | # +-- | __________________ | ___ ___ | # +-- |...|\ | | | | | | | | | pn_out_i # +-- ||-->>| 16 | - - - -| 2 |-----| 1 | 0 | >>---------->> # +--DataIn_i.|/ |____|________|____| |___|___| # +-- | srl_i # +-- FillSel..| # +-- ---> shifting -->> # + +library ieee ; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity i_pn_gen is + generic(NumOfTaps_i : integer := 2; -- # of taps for I channel LFSR, including output tap. + Width : integer := 17); -- LFSR length (ie, total # of storage elements) + port(clk, ShiftEn, FillSel, DataIn_i, RESET : in std_logic; + pn_out_i : out std_logic); +end i_pn_gen ; + + +architecture rtl of i_pn_gen is + + type TapPointArray_i is array (NumOfTaps_i-1 downto 0) of integer; + constant Tap_i : TapPointArray_i := (2, 0); + signal srl_i : std_logic_vector(Width-1 downto 0); -- shift register. + signal par_fdbk_i : std_logic_vector(NumOfTaps_i downto 0); -- Parity feedback. + signal lfsr_in_i : std_logic; -- mux output. + + +begin + +--------------------------------------------------------------------- +------------------ I Channel ---------------------------------------- +--------------------------------------------------------------------- + + Shift_i : process (clk, reset) + begin + if (RESET = '1') then + SRL_I <= "00000000000000000"; + elsif clk'event and clk = '1' then + if (ShiftEn = '1') then + srl_i <= lfsr_in_i & srl_i(srl_i'high downto 1); + end if; + end if; + end process; + + par_fdbk_i(0) <= '0'; + + fdbk_i : for X in 0 to Tap_i'high generate -- parity generator + par_fdbk_i(X+1) <= par_fdbk_i(X) xor srl_i(Tap_i(X)); + end generate fdbk_i; + + lfsr_in_i <= DataIn_i when FillSel = '1' else par_fdbk_i(par_fdbk_i'high); + + pn_out_i <= srl_i(srl_i'low); -- PN I channel output. + + +end rtl; + + + diff --git a/Oric Atmos_MiST/storage/rtl_o/mixer.vhd b/Oric Atmos_MiST/storage/rtl_o/mixer.vhd new file mode 100644 index 00000000..7eae38b1 --- /dev/null +++ b/Oric Atmos_MiST/storage/rtl_o/mixer.vhd @@ -0,0 +1,80 @@ +-- +-- MIXER.vhd +-- +-- Mix tone generator and noise generator. +-- +-- Copyright (C)2001-2010 SEILEBOST +-- All rights reserved. +-- +-- $Id: MIXER.vhd, v0.50 2010/01/19 00:00:00 SEILEBOST $ +-- +-- A lot of work !! +-- ATTENTION : IT'S NOT USED !! + +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_ARITH.ALL; + +entity MIXER is + Port ( CLK : in std_logic; + CS : in std_logic; + RST : in std_logic; + WR : in std_logic; + IN_A : in std_logic; + IN_B : in std_logic; + IN_C : in std_logic; + IN_NOISE : in std_logic; + DATA : in std_logic_vector(5 downto 0); + OUT_A : out std_logic; + OUT_B : out std_logic; + OUT_C : out std_logic ); +end MIXER; + +architecture Behavioral of MIXER is + + +begin + PROCESS(CLK, RST, CS, WR, DATA, IN_A, IN_B, IN_C, IN_NOISE) + BEGIN + if (RST = '1') then + OUT_A <= '0'; + OUT_B <= '0'; + OUT_C <= '0'; + elsif ( CLK'event and CLK = '1') then + if not (CS = '1' and WR = '1') then +-- TONE A + if (DATA(0) = '0') then + if (DATA(3) = '0') then + OUT_A <= IN_A xor IN_NOISE; + else + OUT_A <= IN_A; + end if; + else + OUT_A <= '1'; + end if; + +-- TONE B + if (DATA(1) = '0') then + if (DATA(4) = '0') then + OUT_B <= IN_B xor IN_NOISE; + else + OUT_B <= IN_B; + end if; + else + OUT_B <= '1'; + end if; + +-- TONE C + if (DATA(2) = '0') then + if (DATA(5) = '0') then + OUT_C <= IN_C xor IN_NOISE; + else + OUT_C <= IN_C; + end if; + else + OUT_C <= '1'; + end if; + end if; + end if; + end process; +end Behavioral; diff --git a/Oric Atmos_MiST/storage/rtl_o/oa_test.vhd b/Oric Atmos_MiST/storage/rtl_o/oa_test.vhd new file mode 100644 index 00000000..665353b5 --- /dev/null +++ b/Oric Atmos_MiST/storage/rtl_o/oa_test.vhd @@ -0,0 +1,313 @@ +-------------------------------------------------------------------------------- +-- Company: +-- Engineer: +-- +-- Create Date: 23:36:12 10/10/2009 +-- Design Name: +-- Module Name: D:/Documents and Settings/JO/Mes documents/Projet/ORICATMOS/VERSION_2009_ISE_10.1/OA200906/tb_oa.vhd +-- Project Name: OA2009 +-- Target Device: +-- Tool versions: +-- Description: +-- +-- VHDL Test Bench Created by ISE for module: ORIC +-- +-- Dependencies: +-- +-- Revision: +-- Revision 0.01 - File Created +-- Revision 0.02 - 18/11/2009 : Test keyboard by PS2 +-- Revision 0.03 - 23/11/2009 : Correction protocol PS2 +-- Additional Comments: +-- +-- Notes: +-- This testbench has been automatically generated using types std_logic and +-- std_logic_vector for the ports of the unit under test. Xilinx recommends +-- that these types always be used for the top-level I/O of a design in order +-- to guarantee that the testbench will bind correctly to the post-implementation +-- simulation model. +-------------------------------------------------------------------------------- +library std; +use std.textio.all; +LIBRARY ieee; +USE ieee.std_logic_1164.ALL; +USE ieee.std_logic_unsigned.all; +USE ieee.numeric_std.ALL; +use ieee.std_logic_textio.all; + +ENTITY oa_test IS +END oa_test; + +ARCHITECTURE behavior OF oa_test IS + + -- Component Declaration for the Unit Under Test (UUT) + + COMPONENT ORIC + PORT( + AD : INOUT std_logic_vector(17 downto 0); + OE_SRAMn : out std_logic; + WE_SRAMn : out std_logic; + CE_SRAMn : out std_logic; + --MAPn : IN std_logic; + --ROMDISn : IN std_logic; + --IRQn : IN std_logic; + --CLK_EXT : OUT std_logic; + RW : OUT std_logic; + --IO : OUT std_logic; + --IOCONTROL : IN std_logic; + D : INOUT std_logic_vector(7 downto 0); + RESETn : IN std_logic; + PS2_CLK : IN std_logic; + PS2_DATA : IN std_logic; + --K7_TAPEIN : IN std_logic; + --K7_TAPEOUT : OUT std_logic; + --K7_REMOTE : OUT std_logic; + --K7_AUDIOOUT : OUT std_logic; + --AUDIO_OUT : OUT std_logic_vector(2 downto 0); + VIDEO_R : OUT std_logic; + VIDEO_G : OUT std_logic; + VIDEO_B : OUT std_logic; + --VIDEO_HSYNC : OUT std_logic; + --VIDEO_VSYNC : OUT std_logic; + VIDEO_SYNC : OUT std_logic; + --PRT_DATA : INOUT std_logic_vector(7 downto 0); + --PRT_STR : OUT std_logic; + --PRT_ACK : IN std_logic; + CLK_50 : IN std_logic + --DBG_ROM_DOUT : OUT std_logic_vector(7 downto 0); + --DBG_ULA_AD : OUT std_logic_vector(15 downto 0) + ); + END COMPONENT; + + + --Inputs + --signal MAPn : std_logic := '0'; + --signal ROMDISn : std_logic := '0'; + --signal IRQn : std_logic := '0'; + --signal IOCONTROL : std_logic := '0'; + signal RESETn : std_logic := '0'; + signal PS2_CLK : std_logic := '0'; + signal PS2_DATA : std_logic := '0'; + --signal K7_TAPEIN : std_logic := '0'; + --signal PRT_ACK : std_logic := '0'; + signal CLK_12 : std_logic := '0'; + + --BiDirs + signal AD : std_logic_vector(17 downto 0); + signal D : std_logic_vector(7 downto 0); + --signal PRT_DATA : std_logic_vector(7 downto 0); + + --Outputs + --signal CLK_EXT : std_logic; + signal RW : std_logic; + --signal IO : std_logic; + --signal K7_TAPEOUT : std_logic; + --signal K7_REMOTE : std_logic; + --signal K7_AUDIOOUT : std_logic; + --signal AUDIO_OUT : std_logic_vector(2 downto 0); + signal VIDEO_R : std_logic; + signal VIDEO_G : std_logic; + signal VIDEO_B : std_logic; + --signal VIDEO_HSYNC : std_logic; + --signal VIDEO_VSYNC : std_logic; + signal VIDEO_SYNC : std_logic; + --signal PRT_STR : std_logic; + --signal DBG_ROM_DOUT : std_logic_vector(7 downto 0); + --signal DBG_ULA_AD : std_logic_vector(15 downto 0); + + --signal AD_SRAM : std_logic_vector(15 downto 0); + signal OE_SRAM : std_logic; + signal CE_SRAM : std_logic; + signal WE_SRAM : std_logic; + +BEGIN + + -- Instantiate the Unit Under Test (UUT) + uut: ORIC PORT MAP ( + --AD => AD, + AD => AD, + OE_SRAMn => OE_SRAM, + WE_SRAMn => WE_SRAM, + CE_SRAMn => CE_SRAM, + --MAPn => MAPn, + --ROMDISn => ROMDISn, + --IRQn => IRQn, + --CLK_EXT => CLK_EXT, + RW => RW, + --IO => IO, + --IOCONTROL => IOCONTROL, + D => D, + RESETn => RESETn, + PS2_CLK => PS2_CLK, + PS2_DATA => PS2_DATA, + --K7_TAPEIN => K7_TAPEIN, + --K7_TAPEOUT => K7_TAPEOUT, + --K7_REMOTE => K7_REMOTE, + --K7_AUDIOOUT => K7_AUDIOOUT, + --AUDIO_OUT => AUDIO_OUT, + VIDEO_R => VIDEO_R, + VIDEO_G => VIDEO_G, + VIDEO_B => VIDEO_B, + --VIDEO_HSYNC => VIDEO_HSYNC, + --VIDEO_VSYNC => VIDEO_VSYNC, + VIDEO_SYNC => VIDEO_SYNC, + --PRT_DATA => PRT_DATA, + --PRT_STR => PRT_STR, + --PRT_ACK => PRT_ACK, + CLK_50 => CLK_12 + --DBG_ROM_DOUT => DBG_ROM_DOUT, + --DBG_ULA_AD => DBG_ULA_AD + ); + + ------------------------------------------------------------ + -- GESTION SRAM + ------------------------------------------------------------ + ramv : entity work.sram + port map + ( + A => AD, + nOE => OE_SRAM, + nWE => WE_SRAM, + nCE1 => CE_SRAM, + nUB1 => '1', + nLB1 => '0', + D => D + ); + + -- No clocks detected in port list. Replace below with + -- appropriate port name + + --18/11/2009 ne fonctionne pas ... constant CLK_12_period : TIME := 2ns; + + CLK_12_process :process + begin + CLK_12 <= '0'; + wait for 20ns; + CLK_12 <= '1'; + wait for 20ns; + end process; + + tb_RESET : PROCESS + BEGIN + RESETn <= '0'; + wait for 1000 ns; + RESETn <= '1'; + wait; -- will wait forever + END PROCESS; + + tb_IN : PROCESS + BEGIN + --MAPn <= '1'; + --ROMDISn <= '1'; + --IRQn <= '1'; + --IOCONTROL <= '0'; + --K7_TAPEIN <= '0'; + --PRT_ACK <= '0'; + wait; -- will wait forever + END PROCESS; + + -- Stimulus process + tb_keyboard : process + file file_in : text open read_mode is "./scenario.txt"; + variable line_in : line; + variable cmd : character; + variable delay : time; + variable sig : std_logic; + variable char : std_logic_vector(7 downto 0); +begin + + loop + readline(file_in, line_in); + --exit when endfile(file_in); + + read(line_in, cmd); + exit when cmd = 'W' -- Wait + or cmd = 'E' -- End + or cmd = 'K'; -- Keyboard + end loop; + + --if not endfile(file_in) then + case cmd is + + when 'W' => + read(line_in, delay); + PS2_CLK <= '1'; -- Ajout du 23/11/2009 + PS2_DATA <= '1'; -- Ajout du 23/11/2009 + wait for delay; + + when 'K' => + read(line_in, char); + +PS2_DATA <= '0'; -- Start Bit + PS2_CLK <= '0'; + wait for 40us; + PS2_CLK <= '1'; + wait for 40us; +PS2_DATA <= char(0); -- LSB + PS2_CLK <= '0'; + wait for 40us; + PS2_CLK <= '1'; + wait for 40us; +PS2_DATA <= char(1); + PS2_CLK <= '0'; + wait for 40us; + PS2_CLK <= '1'; + wait for 40us; +PS2_DATA <= char(2); + PS2_CLK <= '0'; + wait for 40us; + PS2_CLK <= '1'; + wait for 40us; +PS2_DATA <= char(3); + PS2_CLK <= '0'; + wait for 40us; + PS2_CLK <= '1'; + wait for 40us; +PS2_DATA <= char(4); + PS2_CLK <= '0'; + wait for 40us; + PS2_CLK <= '1'; + wait for 40us; +PS2_DATA <= char(5); + PS2_CLK <= '0'; + wait for 40us; + PS2_CLK <= '1'; + wait for 40us; +PS2_DATA <= char(6); + PS2_CLK <= '0'; + wait for 40us; + PS2_CLK <= '1'; + wait for 40us; +PS2_DATA <= char(7); + PS2_CLK <= '0'; + wait for 40us; + PS2_CLK <= '1'; + wait for 40us; +PS2_DATA <= '0'; -- Parity (don't care) + PS2_CLK <= '0'; + wait for 40us; + PS2_CLK <= '1'; + wait for 40us; +PS2_DATA <= '1'; -- Stop Bit + PS2_CLK <= '0'; + wait for 40us; + PS2_CLK <= '1'; + wait for 40us; + + when 'E' => + PS2_CLK <= '1'; + PS2_DATA <= 'Z'; + wait; + + when others => + + end case; + --else + -- PS2_CLK <= '1'; + -- PS2_DATA <= 'Z'; + -- wait; + --end if; + +end process; + +END; \ No newline at end of file diff --git a/Oric Atmos_MiST/storage/rtl_o/oric_ps2_if.vhd b/Oric Atmos_MiST/storage/rtl_o/oric_ps2_if.vhd new file mode 100644 index 00000000..cbbd72ce --- /dev/null +++ b/Oric Atmos_MiST/storage/rtl_o/oric_ps2_if.vhd @@ -0,0 +1,311 @@ +-- +-- A simulation model of VIC20 hardware +-- Copyright (c) MikeJ - March 2003 +-- +-- All rights reserved +-- +-- Redistribution and use in source and synthezised forms, with or without +-- modification, are permitted provided that the following conditions are met: +-- +-- Redistributions of source code must retain the above copyright notice, +-- this list of conditions and the following disclaimer. +-- +-- Redistributions in synthesized form must reproduce the above copyright +-- notice, this list of conditions and the following disclaimer in the +-- documentation and/or other materials provided with the distribution. +-- +-- Neither the name of the author nor the names of other contributors may +-- be used to endorse or promote products derived from this software without +-- specific prior written permission. +-- +-- THIS CODE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +-- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +-- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +-- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE +-- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +-- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +-- SUBSTITUTE GOODS OR SERoricES; 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. +-- +-- You are responsible for any legal issues arising from your use of this code. +-- +-- The latest version of this file can be found at: www.fpgaarcade.com +-- +-- Email vic20@fpgaarcade.com +-- +-- +-- Revision list +-- +-- version 001 initial release +-- version 002 Modify for oric atmos project + +-- ps2 interface returns keyboard press/release scan codes +-- these are mapped into a small ram which is harassed by the +-- VIA chip in the same way as the original keyboard. +-- +-- Restore key mapped to PgUp +-- +-- all cursor keys are directly mapped +-- +library ieee; + use ieee.std_logic_1164.all; + use ieee.std_logic_unsigned.all; + use ieee.numeric_std.all; + LIBRARY WORK; + use work.pack_oric_xilinx_prims.all; + LIBRARY WORK; + use work.pkg_oric.all; + +entity oric_PS2_IF is + port ( + PS2_CLK : in std_logic; + PS2_DATA : in std_logic; + + COL_IN : in std_logic_vector(7 downto 0); + ROW_IN : in std_logic_vector(7 downto 0); + RESTORE : out std_logic; + + RESET_L : in std_logic; + ENA_1MHZ : in std_logic; + P2_H : in std_logic; -- high for phase 2 clock ____----__ + CLK_4 : in std_logic -- 4x system clock (4MHZ) _-_-_-_-_- + ); +end; + +architecture RTL of oric_PS2_IF is + + component ps2kbd + port( + Rst_n : in std_logic; + Clk : in std_logic; + Tick1us : in std_logic; + PS2_Clk : in std_logic; + PS2_Data : in std_logic; + Press : out std_logic; + Release : out std_logic; + Reset : out std_logic; + ScanE0 : out std_logic; + ScanCode : out std_logic_vector(7 downto 0)); + end component; + + signal tick_1us : std_logic; + signal kbd_press : std_logic; + signal kbd_release : std_logic; + signal kbd_reset : std_logic; + signal kbd_press_s : std_logic; + signal kbd_release_s : std_logic; + signal kbd_scancode : std_logic_vector(7 downto 0); + signal kbd_scanE0 : std_logic; + + signal rowcol : std_logic_vector(5 downto 0); + + signal ram_w_addr : std_logic_vector(5 downto 0); + signal ram_r_addr : std_logic_vector(5 downto 0); + signal ram_we : std_ulogic; + signal ram_din : std_logic; + signal ram_dout : std_logic; + + signal reset_cnt : std_logic_vector(6 downto 0); + +begin + + -- oric standard: + -- + -- | 1! 2@ 3# 4$ 5% 6^ 7& 8* 9( 0) -£ =+ \| | + -- | ESC q w e r t y u i o p [{ ]} DEL | + -- | CTRL a s d f g h j k l ;: '" RETURN | + -- | SHIFT z x c v b n m ,< .> /? SHIFT | + -- | LFT DWN |___________SPACE___________| UP RGT FUNCT | + ---------------------------------------------------------------- + + tick_1us <= ENA_1MHZ; + +-- Keyboard decoder +u_kbd : ps2kbd + port map( + Rst_n => RESET_L, + Clk => CLK_4, + Tick1us => tick_1us, + PS2_Clk => PS2_CLK, + PS2_Data => PS2_DATA, + Press => kbd_press, + Release => kbd_release, + Reset => kbd_reset, + ScanE0 => kbd_scanE0, + ScanCode => kbd_scancode + ); + +-- Generate ram for scancode translation +--kbd_ram : RAM64X1D +-- port map ( + -- a0 => ram_w_addr(0), + -- a1 => ram_w_addr(1), + -- a2 => ram_w_addr(2), + -- a3 => ram_w_addr(3), + -- a4 => ram_w_addr(4), + -- a5 => ram_w_addr(5), + -- dpra0 => ram_r_addr(0), + -- dpra1 => ram_r_addr(1), + -- dpra2 => ram_r_addr(2), + -- dpra3 => ram_r_addr(3), + -- dpra4 => ram_r_addr(4), + -- dpra5 => ram_r_addr(5), + -- wclk => CLK_4, + -- we => ram_we, + -- d => ram_din, + -- dpo => ram_dout, + -- ); + +-- Translate scancode from PS2 to scancode for oric +kbd_decode_scancode : process +begin + wait until rising_edge(CLK_4); + + -- rowcol is valid for lots of clocks, but kbd_press / release are single + -- clock strobes. must sync these to p2_h + if (kbd_press = '1') then + kbd_press_s <= '1'; + elsif (P2_H = '0') then + kbd_press_s <= '0'; + end if; + + if (kbd_release = '1') then + kbd_release_s <= '1'; + elsif (P2_H = '0') then + kbd_release_s <= '0'; + end if; + + -- top bit low for keypress + if (kbd_scanE0 = '0') then + rowcol <= "111111"; + case kbd_scancode is + -- row/col oric ps2 + when x"3D" => rowcol <= "000000";-- 7 7 + when x"31" => rowcol <= "000001";-- n n + when x"2E" => rowcol <= "000010";-- 5 5 + when x"2A" => rowcol <= "000011";-- v v + when x"16" => rowcol <= "000101";-- 1 1 + when x"22" => rowcol <= "000110";-- x x + when x"26" => rowcol <= "000111";-- 3 3 + + when x"3B" => rowcol <= "001000";-- j j + when x"2C" => rowcol <= "001001";-- t t + when x"2D" => rowcol <= "001010";-- r r + when x"2B" => rowcol <= "001011";-- f f + when x"76" => rowcol <= "001101";-- esc esc + when x"15" => rowcol <= "001110";-- q q + when x"23" => rowcol <= "001111";-- d d + + when x"3A" => rowcol <= "010000";-- m m + when x"36" => rowcol <= "010001";-- 6 6 + when x"32" => rowcol <= "010010";-- b b + when x"25" => rowcol <= "010011";-- 4 4 + when x"14" => rowcol <= "010100";-- ctrl left_ctrl + when x"1A" => rowcol <= "010101";-- z z + when x"1E" => rowcol <= "010110";-- 2 2 + when x"21" => rowcol <= "010111";-- c c + + when x"42" => rowcol <= "011000";-- k k + when x"46" => rowcol <= "011001";-- 9 9 + when x"4C" => rowcol <= "011010";-- ; ; + when x"4E" => rowcol <= "011011";-- - - + when x"5D" => rowcol <= "011110";-- \ \ + when x"52" => rowcol <= "011111";-- ' ' + + when x"29" => rowcol <= "100000";-- space space + when x"41" => rowcol <= "100001";-- , , + when x"49" => rowcol <= "100010";-- . . + when x"12" => rowcol <= "100100";-- left_shift left_shift + + when x"3C" => rowcol <= "101000";-- u u + when x"43" => rowcol <= "101001";-- i i + when x"44" => rowcol <= "101010";-- o o + when x"4D" => rowcol <= "101011";-- p p + when x"66" => rowcol <= "101101";-- del backspace + when x"5B" => rowcol <= "101110";-- ] ] + when x"54" => rowcol <= "101111";-- [ [ + + + when x"35" => rowcol <= "110000";-- y y + when x"33" => rowcol <= "110001";-- h h + when x"34" => rowcol <= "110010";-- g g + when x"24" => rowcol <= "110011";-- e e + when x"1C" => rowcol <= "110101";-- a a + when x"1B" => rowcol <= "110110";-- s s + when x"1D" => rowcol <= "110111";-- w w + + when x"3E" => rowcol <= "111000";-- 8 8 + when x"4B" => rowcol <= "111001";-- l l + when x"45" => rowcol <= "111010";-- 0 0 + when x"4A" => rowcol <= "111011";-- / / + when x"59" => rowcol <= "111100";-- right_shift right_shift + when x"5A" => rowcol <= "111101";-- return return + when x"55" => rowcol <= "111111";-- = = + when others => rowcol <= "ZZZZZZ"; + end case; + else + rowcol <= "111111"; + case kbd_scancode is + when x"75" => rowcol <= "100011";-- up up_cursor + when x"6B" => rowcol <= "100101";-- left left_cursor + when x"72" => rowcol <= "100110";-- down down_cursor + when x"74" => rowcol <= "100111";-- right right_cursor + when x"11" => rowcol <= "101100";-- fct right_alt + when others => rowcol <= "111111"; + end case; + end if; +end process; + + +-- counter used to reset ram +kbd_reset_cnt : process(RESET_L, CLK_4) +begin + if (RESET_L = '0') then + reset_cnt <= "1000000"; + elsif rising_edge(CLK_4) then + if (kbd_reset = '1') then + reset_cnt <= "1000000"; + elsif (reset_cnt(6) = '1') then + reset_cnt <= reset_cnt + "1"; + end if; + end if; +end process; + +-- write scancode is pressed +kbd_write : process(kbd_press_s, kbd_release_s, rowcol, kbd_reset, reset_cnt, P2_H) + variable we : boolean; +begin + + -- valid key ? + we := ((kbd_press_s = '1') or (kbd_release_s = '1')); + + if (reset_cnt(6) = '1') then + ram_w_addr <= reset_cnt(5 downto 0); + ram_din <= '0'; + ram_we <= '1'; + else + ram_w_addr <= rowcol; + + if (kbd_press_s = '1') then + ram_din <= '1'; -- pressed + else + ram_din <= '0'; -- released + end if; + + ram_we <= '0'; + if we and (P2_H = '0')then + ram_we <= '1'; + end if; + end if; + +end process; + +-- Manage +RESTORE <= '1'; -- To modify +--ram_r_addr <= ROW_IN & COL_IN; + +end architecture RTL; + diff --git a/Oric Atmos_MiST/storage/rtl_o/pack_oric_xilinx_prims.vhd b/Oric Atmos_MiST/storage/rtl_o/pack_oric_xilinx_prims.vhd new file mode 100644 index 00000000..5c97b711 --- /dev/null +++ b/Oric Atmos_MiST/storage/rtl_o/pack_oric_xilinx_prims.vhd @@ -0,0 +1,412 @@ +-- +-- A simulation model of ORIC hardware +-- Copyright (c) seilebost - 2001 - 2009 +-- +-- All rights reserved +-- +-- Redistribution and use in source and synthezised forms, with or without +-- modification, are permitted provided that the following conditions are met: +-- +-- Redistributions of source code must retain the above copyright notice, +-- this list of conditions and the following disclaimer. +-- +-- Redistributions in synthesized form must reproduce the above copyright +-- notice, this list of conditions and the following disclaimer in the +-- documentation and/or other materials provided with the distribution. +-- +-- Neither the name of the author nor the names of other contributors may +-- be used to endorse or promote products derived from this software without +-- specific prior written permission. +-- +-- THIS CODE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +-- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +-- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +-- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE +-- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +-- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +-- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +-- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +-- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +-- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +-- POSSIBILITY OF SUCH DAMAGE. +-- +-- You are responsible for any legal issues arising from your use of this code. +-- +-- The latest version of this file can be found at: www.fpgaarcade.com +-- +-- Email seilebost@free.fr +-- +-- +-- Revision list +-- +-- version 001 initial release + +library ieee; + use ieee.std_logic_1164.all; + use ieee.std_logic_arith.all; + use ieee.std_logic_unsigned.all; + +package pack_oric_xilinx_prims is + + attribute INIT : string; + attribute INIT_00 : string; + attribute INIT_01 : string; + attribute INIT_02 : string; + attribute INIT_03 : string; + attribute INIT_04 : string; + attribute INIT_05 : string; + attribute INIT_06 : string; + attribute INIT_07 : string; + attribute INIT_08 : string; + attribute INIT_09 : string; + attribute INIT_0A : string; + attribute INIT_0B : string; + attribute INIT_0C : string; + attribute INIT_0D : string; + attribute INIT_0E : string; + attribute INIT_0F : string; + + attribute RLOC : string; + attribute HU_SET : string; + + function str2slv (str : string) return std_logic_vector; + + + component RAM16X1D + port ( + A0, A1, A2, A3 : in std_logic; + DPRA0, DPRA1, DPRA2, DPRA3 : in std_logic; + WCLK : in std_logic; + WE : in std_logic; + D : in std_logic; + SPO : out std_logic; + DPO : out std_logic + ); + end component; + + component RAMB4_S1 + --pragma translate_off + generic ( + INIT_00 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_01 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_02 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_03 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_04 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_05 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_06 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_07 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_08 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_09 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0A : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0B : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0C : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0D : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0E : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0F : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000" + ); + --pragma translate_on + port ( + DO : out std_logic_vector (0 downto 0); + DI : in std_logic_vector (0 downto 0); + ADDR : in std_logic_vector (11 downto 0); + WE : in std_logic; + EN : in std_logic; + RST : in std_logic; + CLK : in std_logic + ); + end component; + + component RAMB4_S4 + --pragma translate_off + generic ( + INIT_00 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_01 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_02 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_03 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_04 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_05 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_06 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_07 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_08 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_09 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0A : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0B : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0C : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0D : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0E : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0F : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000" + ); + --pragma translate_on + port ( + DO : out std_logic_vector (3 downto 0); + DI : in std_logic_vector (3 downto 0); + ADDR : in std_logic_vector (9 downto 0); + WE : in std_logic; + EN : in std_logic; + RST : in std_logic; + CLK : in std_logic + ); + end component; + + component RAMB4_S8 + --pragma translate_off + generic ( + INIT_00 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_01 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_02 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_03 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_04 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_05 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_06 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_07 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_08 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_09 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0A : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0B : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0C : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0D : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0E : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0F : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000" + ); + --pragma translate_on + port ( + DO : out std_logic_vector (7 downto 0); + DI : in std_logic_vector (7 downto 0); + ADDR : in std_logic_vector (8 downto 0); + WE : in std_logic; + EN : in std_logic; + RST : in std_logic; + CLK : in std_logic + ); + end component; + + component RAMB4_S1_S1 + --pragma translate_off + generic ( + INIT_00 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_01 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_02 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_03 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_04 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_05 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_06 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_07 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_08 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_09 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0A : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0B : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0C : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0D : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0E : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0F : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000" + ); + --pragma translate_on + port ( + DOB : out std_logic_vector (0 downto 0); + DIB : in std_logic_vector (0 downto 0); + ADDRB : in std_logic_vector (11 downto 0); + WEB : in std_logic; + ENB : in std_logic; + RSTB : in std_logic; + CLKB : in std_logic; + + DOA : out std_logic_vector(0 downto 0); + DIA : in std_logic_vector(0 downto 0); + ADDRA : in std_logic_vector (11 downto 0); + WEA : in std_logic; + ENA : in std_logic; + RSTA : in std_logic; + CLKA : in std_logic + ); + end component; + + component RAMB4_S2_S2 + --pragma translate_off + generic ( + INIT_00 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_01 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_02 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_03 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_04 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_05 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_06 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_07 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_08 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_09 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0A : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0B : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0C : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0D : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0E : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0F : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000" + ); + --pragma translate_on + port ( + DOB : out std_logic_vector (1 downto 0); + DIB : in std_logic_vector (1 downto 0); + ADDRB : in std_logic_vector (10 downto 0); + WEB : in std_logic; + ENB : in std_logic; + RSTB : in std_logic; + CLKB : in std_logic; + + DOA : out std_logic_vector (1 downto 0); + DIA : in std_logic_vector (1 downto 0); + ADDRA : in std_logic_vector (10 downto 0); + WEA : in std_logic; + ENA : in std_logic; + RSTA : in std_logic; + CLKA : in std_logic + ); + end component; + + component RAMB4_S4_S4 + --pragma translate_off + generic ( + INIT_00 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_01 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_02 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_03 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_04 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_05 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_06 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_07 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_08 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_09 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0A : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0B : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0C : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0D : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0E : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0F : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000" + ); + --pragma translate_on + port ( + DOB : out std_logic_vector (3 downto 0); + DIB : in std_logic_vector (3 downto 0); + ADDRB : in std_logic_vector (9 downto 0); + WEB : in std_logic; + ENB : in std_logic; + RSTB : in std_logic; + CLKB : in std_logic; + + DOA : out std_logic_vector (3 downto 0); + DIA : in std_logic_vector (3 downto 0); + ADDRA : in std_logic_vector (9 downto 0); + WEA : in std_logic; + ENA : in std_logic; + RSTA : in std_logic; + CLKA : in std_logic + ); + end component; + + component RAMB4_S8_S8 + --pragma translate_off + generic ( + INIT_00 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_01 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_02 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_03 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_04 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_05 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_06 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_07 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_08 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_09 : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0A : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0B : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0C : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0D : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0E : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000"; + INIT_0F : std_logic_vector (255 downto 0) := x"0000000000000000000000000000000000000000000000000000000000000000" + ); + --pragma translate_on + port ( + DOB : out std_logic_vector (7 downto 0); + DIB : in std_logic_vector (7 downto 0); + ADDRB : in std_logic_vector (8 downto 0); + WEB : in std_logic; + ENB : in std_logic; + RSTB : in std_logic; + CLKB : in std_logic; + + DOA : out std_logic_vector (7 downto 0); + DIA : in std_logic_vector (7 downto 0); + ADDRA : in std_logic_vector (8 downto 0); + WEA : in std_logic; + ENA : in std_logic; + RSTA : in std_logic; + CLKA : in std_logic + ); + end component; + + component PULLUP + port ( + O : out std_logic + ); + end component; + + component BUFG + port ( + I : in std_logic; O: out std_logic + ); + end component; + + component OBUF + port ( + I : in std_logic; O: out std_logic + ); + end component; + + component IBUFG + port ( + I : in std_logic; O: out std_logic + ); + end component; + + component IBUF + port ( + I : in std_logic; O: out std_logic + ); + end component; + + component CLKDLL + port ( + CLKIN, CLKFB, RST : in std_logic; + CLK0,CLK90,CLK180,CLK270,CLK2X,CLKDV,LOCKED : out std_logic + ); + end component; + +end pack_oric_xilinx_prims; + +package body pack_oric_xilinx_prims is + + function str2slv (str : string) return std_logic_vector is + variable result : std_logic_vector (str'length*4-1 downto 0); + begin + for i in 0 to str'length-1 loop + case str(str'high-i) is + when '0' => result(i*4+3 downto i*4) := x"0"; + when '1' => result(i*4+3 downto i*4) := x"1"; + when '2' => result(i*4+3 downto i*4) := x"2"; + when '3' => result(i*4+3 downto i*4) := x"3"; + when '4' => result(i*4+3 downto i*4) := x"4"; + when '5' => result(i*4+3 downto i*4) := x"5"; + when '6' => result(i*4+3 downto i*4) := x"6"; + when '7' => result(i*4+3 downto i*4) := x"7"; + when '8' => result(i*4+3 downto i*4) := x"8"; + when '9' => result(i*4+3 downto i*4) := x"9"; + when 'a' | 'A' => result(i*4+3 downto i*4) := x"A"; + when 'b' | 'B' => result(i*4+3 downto i*4) := x"B"; + when 'c' | 'C' => result(i*4+3 downto i*4) := x"C"; + when 'd' | 'D' => result(i*4+3 downto i*4) := x"D"; + when 'e' | 'E' => result(i*4+3 downto i*4) := x"E"; + when 'f' | 'F' => result(i*4+3 downto i*4) := x"F"; + when others => result(i*4+3 downto i*4) := "XXXX"; + end case; + end loop; + + return result; + end str2slv; + +end pack_oric_xilinx_prims; diff --git a/Oric Atmos_MiST/storage/rtl_o/ps2kbd.vhd b/Oric Atmos_MiST/storage/rtl_o/ps2kbd.vhd new file mode 100644 index 00000000..f76c56de --- /dev/null +++ b/Oric Atmos_MiST/storage/rtl_o/ps2kbd.vhd @@ -0,0 +1,212 @@ +-- +-- PS/2 serial port, input only +-- +-- Version : 0242 +-- +-- 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.fpgaarcade.com +-- +-- Limitations : +-- +-- File history : +-- +-- 0242 : First release +-- extended key handling added by MIKEJ +-- + +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.numeric_std.all; + +entity ps2kbd is + port( + Rst_n : in std_logic; + Clk : in std_logic; + Tick1us : in std_logic; + PS2_Clk : in std_logic; + PS2_Data : in std_logic; + Press : out std_logic; + Release : out std_logic; + Reset : out std_logic; + ScanE0 : out std_logic; + ScanCode : out std_logic_vector(7 downto 0) + ); +end ps2kbd; + +architecture rtl of ps2kbd is + +signal PS2_Sample : std_logic; +signal PS2_Data_s : std_logic; + +signal RX_Bit_Cnt : unsigned(3 downto 0); +signal RX_Byte : unsigned(2 downto 0); +signal RX_ShiftReg : std_logic_vector(7 downto 0); +signal RX_Release : std_logic; +signal RX_Received : std_logic; +signal RX_E0 : std_logic; + +begin + +ScanCode <= RX_ShiftReg; + +process (Clk, Rst_n) + variable PS2_Data_r : std_logic_vector(1 downto 0); + variable PS2_Clk_r : std_logic_vector(1 downto 0); + variable PS2_Clk_State : std_logic; +begin + if Rst_n = '0' then + PS2_Sample <= '0'; + PS2_Data_s <= '0'; + PS2_Data_r := "11"; + PS2_Clk_r := "11"; + PS2_Clk_State := '1'; + elsif Clk'event and Clk = '1' then + if Tick1us = '1' then + PS2_Sample <= '0'; + + -- Deglitch + if PS2_Data_r = "00" then + PS2_Data_s <= '0'; + end if; + if PS2_Data_r = "11" then + PS2_Data_s <= '1'; + end if; + if PS2_Clk_r = "00" then + if PS2_Clk_State = '1' then + PS2_Sample <= '1'; + end if; + PS2_Clk_State := '0'; + end if; + if PS2_Clk_r = "11" then + PS2_Clk_State := '1'; + end if; + + -- Double synchronise + PS2_Data_r(1) := PS2_Data_r(0); + PS2_Clk_r(1) := PS2_Clk_r(0); + PS2_Data_r(0) := PS2_Data; + PS2_Clk_r(0) := PS2_Clk; + end if; + end if; +end process; + +process (Clk, Rst_n) + variable Cnt : integer; +begin + if Rst_n = '0' then + RX_Bit_Cnt <= (others => '0'); + RX_ShiftReg <= (others => '0'); + RX_Received <= '0'; + Cnt := 0; + elsif Clk'event and Clk = '1' then + RX_Received <= '0'; + if Tick1us = '1' then + if PS2_Sample = '1' then + if RX_Bit_Cnt = "0000" then + if PS2_Data_s = '0' then -- Start bit + RX_Bit_Cnt <= RX_Bit_Cnt + 1; + end if; + elsif RX_Bit_Cnt = "1001" then -- Parity bit + RX_Bit_Cnt <= RX_Bit_Cnt + 1; + -- Ignoring parity + elsif RX_Bit_Cnt = "1010" then -- Stop bit + if PS2_Data_s = '1' then + RX_Received <= '1'; + end if; + RX_Bit_Cnt <= "0000"; + else + RX_Bit_Cnt <= RX_Bit_Cnt + 1; + RX_ShiftReg(6 downto 0) <= RX_ShiftReg(7 downto 1); + RX_ShiftReg(7) <= PS2_Data_s; + end if; + end if; + + -- TimeOut + if PS2_Sample = '1' then + Cnt := 0; + elsif Cnt = 127 then + RX_Bit_Cnt <= "0000"; + Cnt := 0; + else + Cnt := Cnt + 1; + end if; + end if; + end if; +end process; + +process (Clk, Rst_n) +begin + if Rst_n = '0' then + Press <= '0'; + Release <= '0'; + Reset <= '0'; + RX_Byte <= (others => '0'); + RX_Release <= '0'; + ScanE0 <= '0'; + RX_E0 <= '0'; + elsif Clk'event and Clk = '1' then + Press <= '0'; + Release <= '0'; + Reset <= '0'; + if RX_Received = '1' then + RX_Byte <= RX_Byte + 1; + if RX_ShiftReg = x"F0" then + RX_Release <= '1'; + elsif RX_ShiftReg = x"E0" then + RX_E0 <= '1'; + else + ScanE0 <= RX_E0; + RX_E0 <= '0'; + + RX_Release <= '0'; + -- Normal key press + if RX_Release = '0' then + Press <= '1'; + end if; + -- Normal key release + if RX_Release = '1' then + Release <= '1'; + end if; + end if; + if RX_ShiftReg = x"aa" then + Reset <= '1'; + end if; + end if; + end if; +end process; + +end; diff --git a/Oric Atmos_MiST/storage/rtl_o/psg_log.vhd b/Oric Atmos_MiST/storage/rtl_o/psg_log.vhd new file mode 100644 index 00000000..ae53f2f4 --- /dev/null +++ b/Oric Atmos_MiST/storage/rtl_o/psg_log.vhd @@ -0,0 +1,60 @@ +---------------------------------------------------------------------------------- +-- Company: +-- Engineer: +-- +-- Create Date: 17:12:00 08/14/2011 +-- Design Name: +-- Module Name: psg_log - Behavioral +-- Project Name: +-- Target Devices: +-- Tool versions: +-- Description: +-- +-- Dependencies: +-- +-- Revision: +-- Revision 0.01 - File Created +-- Additional Comments: +-- +---------------------------------------------------------------------------------- +library ieee; +use ieee.std_logic_1164.all; + +use std.textio.all; +use work.txt_util.all; + +entity psg_log is + generic ( + log_psg: string := "psg.log" + ); + port( + CLK : in std_logic; + RST : in std_logic; + x1 : in std_logic + ); +end psg_log; + +architecture log_to_file of psg_log is + +file l_file_psg: TEXT open write_mode is log_psg; + +begin + +-- write data and control information to a file + +receive_data: process (CLK,RST) + +variable l: line; + +begin + if (RST = '0') then + print(l_file_psg, ""); + elsif (clk'event and clk='1') then + write(l, chr(x1)); + writeline(l_file_psg, l); + end if; + +end process receive_data; + +end log_to_file; + \ No newline at end of file diff --git a/Oric Atmos_MiST/storage/rtl_o/simul_test.vhd b/Oric Atmos_MiST/storage/rtl_o/simul_test.vhd new file mode 100644 index 00000000..9451b6bf --- /dev/null +++ b/Oric Atmos_MiST/storage/rtl_o/simul_test.vhd @@ -0,0 +1,273 @@ +-------------------------------------------------------------------------------- +-- Company: +-- Engineer: +-- +-- Create Date: 22:22:03 03/08/2011 +-- Design Name: +-- Module Name: /home/will/Documents/VHDL/PROJET/OricinFPGA/simul_test.vhd +-- Project Name: OricinFPGA +-- Target Device: +-- Tool versions: +-- Description: +-- +-- VHDL Test Bench Created by ISE for module: ORIC +-- +-- Dependencies: +-- +-- Revision: +-- Revision 0.01 - File Created +-- Additional Comments: +-- +-- Notes: +-- This testbench has been automatically generated using types std_logic and +-- std_logic_vector for the ports of the unit under test. Xilinx recommends +-- that these types always be used for the top-level I/O of a design in order +-- to guarantee that the testbench will bind correctly to the post-implementation +-- simulation model. +-------------------------------------------------------------------------------- +library std; +use std.textio.all; +LIBRARY ieee; +USE ieee.std_logic_1164.ALL; +USE ieee.std_logic_unsigned.all; +USE ieee.numeric_std.ALL; +use ieee.std_logic_textio.all; + +-- Uncomment the following library declaration if using +-- arithmetic functions with Signed or Unsigned values +--USE ieee.numeric_std.ALL; + +ENTITY simul_test IS +END simul_test; + +ARCHITECTURE behavior OF simul_test IS + + -- Component Declaration for the Unit Under Test (UUT) + + COMPONENT ORIC + PORT( + AD : INOUT std_logic_vector(17 downto 0); + OE_SRAMn : OUT std_logic; + WE_SRAMn : OUT std_logic; + CE_SRAMn : OUT std_logic; + UB_SRAMn : OUT std_logic; + LB_SRAMn : OUT std_logic; + RW : OUT std_logic; + D : INOUT std_logic_vector(7 downto 0); + RESETn : IN std_logic; + PS2_CLK : IN std_logic; + PS2_DATA : IN std_logic; + VIDEO_R : OUT std_logic; + VIDEO_G : OUT std_logic; + VIDEO_B : OUT std_logic; + VIDEO_SYNC : OUT std_logic; + CLK_50 : IN std_logic; + btn : IN std_logic_vector(3 downto 0); + an : OUT std_logic_vector(3 downto 0); + sseg : OUT std_logic_vector(7 downto 0) + ); + END COMPONENT; + + --Inputs + signal RESETn : std_logic := '0'; + signal PS2_CLK : std_logic := '0'; + signal PS2_DATA : std_logic := '0'; + signal CLK_50 : std_logic := '0'; + signal btn : std_logic_vector(3 downto 0) := (others => '0'); + + --BiDirs + signal AD : std_logic_vector(17 downto 0); + signal D : std_logic_vector(7 downto 0); + + --Outputs + signal OE_SRAMn : std_logic; + signal WE_SRAMn : std_logic; + signal CE_SRAMn : std_logic; + signal UB_SRAMn : std_logic; + signal LB_SRAMn : std_logic; + signal RW : std_logic; + signal VIDEO_R : std_logic; + signal VIDEO_G : std_logic; + signal VIDEO_B : std_logic; + signal VIDEO_SYNC : std_logic; + signal an : std_logic_vector(3 downto 0); + signal sseg : std_logic_vector(7 downto 0); + + -- Clock period definitions + constant PS2_CLK_period : time := 10 ns; + constant CLK_50_period : time := 40 ns; + +BEGIN + + -- Instantiate the Unit Under Test (UUT) + uut: ORIC PORT MAP ( + AD => AD(17 downto 0), + OE_SRAMn => OE_SRAMn, + WE_SRAMn => WE_SRAMn, + CE_SRAMn => CE_SRAMn, + UB_SRAMn => UB_SRAMn, + LB_SRAMn => LB_SRAMn, + RW => RW, + D => D, + RESETn => RESETn, + PS2_CLK => PS2_CLK, + PS2_DATA => PS2_DATA, + VIDEO_R => VIDEO_R, + VIDEO_G => VIDEO_G, + VIDEO_B => VIDEO_B, + VIDEO_SYNC => VIDEO_SYNC, + CLK_50 => CLK_50, + btn => btn, + an => an, + sseg => sseg + ); + + ------------------------------------------------------------ + -- GESTION SRAM + ------------------------------------------------------------ + ramv : entity work.sram + port map + ( + A => AD(15 downto 0), + nOE => OE_SRAMn, + nWE => WE_SRAMn, + nCE1 => CE_SRAMn, + nUB1 => '1', + nLB1 => '0', + D => D + ); + + tb_RESET : PROCESS + BEGIN + RESETn <= '1'; + wait for 1000 ns; + RESETn <= '0'; + wait; -- will wait forever + END PROCESS; + + CLK_50_process :process + begin + -- 10/03/2011 : En fait, pour 24 (2x12) Mhz et pas 50 MHz + CLK_50 <= '0'; + wait for 20ns; + CLK_50 <= '1'; + wait for 20ns; + end process; + + tb_IN : PROCESS + BEGIN + --MAPn <= '1'; + --ROMDISn <= '1'; + --IRQn <= '1'; + --IOCONTROL <= '0'; + --K7_TAPEIN <= '0'; + --PRT_ACK <= '0'; + -- 10/03/2011 : Au supprimer en reel : + btn <= "0000"; + wait; -- will wait forever + END PROCESS; + + -- Stimulus process + tb_keyboard : process + file file_in : text open read_mode is "./scenario.txt"; + variable line_in : line; + variable cmd : character; + variable delay : time; + variable sig : std_logic; + variable char : std_logic_vector(7 downto 0); +begin + + loop + readline(file_in, line_in); + --exit when endfile(file_in); + + read(line_in, cmd); + exit when cmd = 'W' -- Wait + or cmd = 'E' -- End + or cmd = 'K'; -- Keyboard + end loop; + + --if not endfile(file_in) then + case cmd is + + when 'W' => + read(line_in, delay); + PS2_CLK <= '1'; -- Ajout du 23/11/2009 + PS2_DATA <= '1'; -- Ajout du 23/11/2009 + wait for delay; + + when 'K' => + read(line_in, char); + +PS2_DATA <= '0'; -- Start Bit + PS2_CLK <= '0'; + wait for 40us; + PS2_CLK <= '1'; + wait for 40us; +PS2_DATA <= char(0); -- LSB + PS2_CLK <= '0'; + wait for 40us; + PS2_CLK <= '1'; + wait for 40us; +PS2_DATA <= char(1); + PS2_CLK <= '0'; + wait for 40us; + PS2_CLK <= '1'; + wait for 40us; +PS2_DATA <= char(2); + PS2_CLK <= '0'; + wait for 40us; + PS2_CLK <= '1'; + wait for 40us; +PS2_DATA <= char(3); + PS2_CLK <= '0'; + wait for 40us; + PS2_CLK <= '1'; + wait for 40us; +PS2_DATA <= char(4); + PS2_CLK <= '0'; + wait for 40us; + PS2_CLK <= '1'; + wait for 40us; +PS2_DATA <= char(5); + PS2_CLK <= '0'; + wait for 40us; + PS2_CLK <= '1'; + wait for 40us; +PS2_DATA <= char(6); + PS2_CLK <= '0'; + wait for 40us; + PS2_CLK <= '1'; + wait for 40us; +PS2_DATA <= char(7); + PS2_CLK <= '0'; + wait for 40us; + PS2_CLK <= '1'; + wait for 40us; +PS2_DATA <= '0'; -- Parity (don't care) + PS2_CLK <= '0'; + wait for 40us; + PS2_CLK <= '1'; + wait for 40us; +PS2_DATA <= '1'; -- Stop Bit + PS2_CLK <= '0'; + wait for 40us; + PS2_CLK <= '1'; + wait for 40us; + + when 'E' => + PS2_CLK <= '1'; + PS2_DATA <= 'Z'; + wait; + + when others => + + end case; + --else + -- PS2_CLK <= '1'; + -- PS2_DATA <= 'Z'; + -- wait; + --end if; +end process; + +END; diff --git a/Oric Atmos_MiST/storage/rtl_o/tb_oa.vhd b/Oric Atmos_MiST/storage/rtl_o/tb_oa.vhd new file mode 100644 index 00000000..3b1fb90f --- /dev/null +++ b/Oric Atmos_MiST/storage/rtl_o/tb_oa.vhd @@ -0,0 +1,321 @@ +-------------------------------------------------------------------------------- +-- Company: +-- Engineer: +-- +-- Create Date: 23:36:12 10/10/2009 +-- Design Name: +-- Module Name: D:/Documents and Settings/JO/Mes documents/Projet/ORICATMOS/VERSION_2009_ISE_10.1/OA200906/tb_oa.vhd +-- Project Name: OA2009 +-- Target Device: +-- Tool versions: +-- Description: +-- +-- VHDL Test Bench Created by ISE for module: ORIC +-- +-- Dependencies: +-- +-- Revision: +-- Revision 0.01 - File Created +-- Revision 0.02 - 18/11/2009 : Test keyboard by PS2 +-- Revision 0.03 - 23/11/2009 : Correction protocol PS2 +-- Additional Comments: +-- +-- Notes: +-- This testbench has been automatically generated using types std_logic and +-- std_logic_vector for the ports of the unit under test. Xilinx recommends +-- that these types always be used for the top-level I/O of a design in order +-- to guarantee that the testbench will bind correctly to the post-implementation +-- simulation model. +-------------------------------------------------------------------------------- +library std; +use std.textio.all; +LIBRARY ieee; +USE ieee.std_logic_1164.ALL; +USE ieee.std_logic_unsigned.all; +USE ieee.numeric_std.ALL; +use ieee.std_logic_textio.all; + +ENTITY tb_oa IS +END tb_oa; + +ARCHITECTURE behavior OF tb_oa IS + + -- Component Declaration for the Unit Under Test (UUT) + + COMPONENT ORIC + PORT( + AD : INOUT std_logic_vector(17 downto 0); + OE_SRAMn : out std_logic; + WE_SRAMn : out std_logic; + CE_SRAMn : out std_logic; + UB_SRAMn : out std_logic; + LB_SRAMn : out std_logic; + --MAPn : IN std_logic; + --ROMDISn : IN std_logic; + --IRQn : IN std_logic; + --CLK_EXT : OUT std_logic; + RW : OUT std_logic; + --IO : OUT std_logic; + --IOCONTROL : IN std_logic; + D : INOUT std_logic_vector(7 downto 0); + RESETn : IN std_logic; + PS2_CLK : IN std_logic; + PS2_DATA : IN std_logic; + --K7_TAPEIN : IN std_logic; + --K7_TAPEOUT : OUT std_logic; + --K7_REMOTE : OUT std_logic; + --K7_AUDIOOUT : OUT std_logic; + --AUDIO_OUT : OUT std_logic_vector(2 downto 0); + VIDEO_R : OUT std_logic; + VIDEO_G : OUT std_logic; + VIDEO_B : OUT std_logic; + --VIDEO_HSYNC : OUT std_logic; + --VIDEO_VSYNC : OUT std_logic; + VIDEO_SYNC : OUT std_logic; + --PRT_DATA : INOUT std_logic_vector(7 downto 0); + --PRT_STR : OUT std_logic; + --PRT_ACK : IN std_logic; + CLK_50 : IN std_logic + --DBG_ROM_DOUT : OUT std_logic_vector(7 downto 0); + --DBG_ULA_AD : OUT std_logic_vector(15 downto 0) + ); + END COMPONENT; + + + --Inputs + --signal MAPn : std_logic := '0'; + --signal ROMDISn : std_logic := '0'; + --signal IRQn : std_logic := '0'; + --signal IOCONTROL : std_logic := '0'; + signal RESETn : std_logic := '0'; + signal PS2_CLK : std_logic := '0'; + signal PS2_DATA : std_logic := '0'; + --signal K7_TAPEIN : std_logic := '0'; + --signal PRT_ACK : std_logic := '0'; + signal CLK_50 : std_logic := '0'; + + --BiDirs + signal AD : std_logic_vector(17 downto 0); + signal D : std_logic_vector(7 downto 0); + --signal PRT_DATA : std_logic_vector(7 downto 0); + + --Outputs + --signal CLK_EXT : std_logic; + signal RW : std_logic; + --signal IO : std_logic; + --signal K7_TAPEOUT : std_logic; + --signal K7_REMOTE : std_logic; + --signal K7_AUDIOOUT : std_logic; + --signal AUDIO_OUT : std_logic_vector(2 downto 0); + signal VIDEO_R : std_logic; + signal VIDEO_G : std_logic; + signal VIDEO_B : std_logic; + --signal VIDEO_HSYNC : std_logic; + --signal VIDEO_VSYNC : std_logic; + signal VIDEO_SYNC : std_logic; + --signal PRT_STR : std_logic; + --signal DBG_ROM_DOUT : std_logic_vector(7 downto 0); + --signal DBG_ULA_AD : std_logic_vector(15 downto 0); + + --signal AD_SRAM : std_logic_vector(15 downto 0); + signal OE_SRAM : std_logic; + signal CE_SRAM : std_logic; + signal WE_SRAM : std_logic; + signal UB_SRAM : std_logic; + signal LB_SRAM : std_logic; + +BEGIN + + -- Instantiate the Unit Under Test (UUT) + uut: ORIC PORT MAP ( + --AD => AD, + AD => AD, + OE_SRAMn => OE_SRAM, + WE_SRAMn => WE_SRAM, + CE_SRAMn => CE_SRAM, + UB_SRAMn => UB_SRAM, + LB_SRAMn => LB_SRAM, + --MAPn => MAPn, + --ROMDISn => ROMDISn, + --IRQn => IRQn, + --CLK_EXT => CLK_EXT, + RW => RW, + --IO => IO, + --IOCONTROL => IOCONTROL, + D => D, + RESETn => RESETn, + PS2_CLK => PS2_CLK, + PS2_DATA => PS2_DATA, + --K7_TAPEIN => K7_TAPEIN, + --K7_TAPEOUT => K7_TAPEOUT, + --K7_REMOTE => K7_REMOTE, + --K7_AUDIOOUT => K7_AUDIOOUT, + --AUDIO_OUT => AUDIO_OUT, + VIDEO_R => VIDEO_R, + VIDEO_G => VIDEO_G, + VIDEO_B => VIDEO_B, + --VIDEO_HSYNC => VIDEO_HSYNC, + --VIDEO_VSYNC => VIDEO_VSYNC, + VIDEO_SYNC => VIDEO_SYNC, + --PRT_DATA => PRT_DATA, + --PRT_STR => PRT_STR, + --PRT_ACK => PRT_ACK, + CLK_50 => CLK_50 + --DBG_ROM_DOUT => DBG_ROM_DOUT, + --DBG_ULA_AD => DBG_ULA_AD + ); + + ------------------------------------------------------------ + -- GESTION SRAM + ------------------------------------------------------------ + ramv : entity work.sram + port map + ( + A => AD(15 downto 0), + nOE => OE_SRAM, + nWE => WE_SRAM, + nCE1 => CE_SRAM, + nUB1 => UB_SRAM, + nLB1 => LB_SRAM, + D => D + ); + + -- No clocks detected in port list. Replace below with + -- appropriate port name + + --18/11/2009 ne fonctionne pas ... constant CLK_12_period : TIME := 2ns; + + CLK_50_process :process + begin + CLK_50 <= '0'; + wait for 10ns; + CLK_50 <= '1'; + wait for 10ns; + end process; + + tb_RESET : PROCESS + BEGIN + RESETn <= '1'; + wait for 1000 ns; + RESETn <= '0'; + wait; -- will wait forever + END PROCESS; + + tb_IN : PROCESS + BEGIN + --MAPn <= '1'; + --ROMDISn <= '1'; + --IRQn <= '1'; + --IOCONTROL <= '0'; + --K7_TAPEIN <= '0'; + --PRT_ACK <= '0'; + wait; -- will wait forever + END PROCESS; + + -- Stimulus process + tb_keyboard : process + file file_in : text open read_mode is "./scenario.txt"; + variable line_in : line; + variable cmd : character; + variable delay : time; + variable sig : std_logic; + variable char : std_logic_vector(7 downto 0); +begin + + loop + readline(file_in, line_in); + --exit when endfile(file_in); + + read(line_in, cmd); + exit when cmd = 'W' -- Wait + or cmd = 'E' -- End + or cmd = 'K'; -- Keyboard + end loop; + + --if not endfile(file_in) then + case cmd is + + when 'W' => + read(line_in, delay); + PS2_CLK <= '1'; -- Ajout du 23/11/2009 + PS2_DATA <= '1'; -- Ajout du 23/11/2009 + wait for delay; + + when 'K' => + read(line_in, char); + +PS2_DATA <= '0'; -- Start Bit + PS2_CLK <= '0'; + wait for 40us; + PS2_CLK <= '1'; + wait for 40us; +PS2_DATA <= char(0); -- LSB + PS2_CLK <= '0'; + wait for 40us; + PS2_CLK <= '1'; + wait for 40us; +PS2_DATA <= char(1); + PS2_CLK <= '0'; + wait for 40us; + PS2_CLK <= '1'; + wait for 40us; +PS2_DATA <= char(2); + PS2_CLK <= '0'; + wait for 40us; + PS2_CLK <= '1'; + wait for 40us; +PS2_DATA <= char(3); + PS2_CLK <= '0'; + wait for 40us; + PS2_CLK <= '1'; + wait for 40us; +PS2_DATA <= char(4); + PS2_CLK <= '0'; + wait for 40us; + PS2_CLK <= '1'; + wait for 40us; +PS2_DATA <= char(5); + PS2_CLK <= '0'; + wait for 40us; + PS2_CLK <= '1'; + wait for 40us; +PS2_DATA <= char(6); + PS2_CLK <= '0'; + wait for 40us; + PS2_CLK <= '1'; + wait for 40us; +PS2_DATA <= char(7); + PS2_CLK <= '0'; + wait for 40us; + PS2_CLK <= '1'; + wait for 40us; +PS2_DATA <= '0'; -- Parity (don't care) + PS2_CLK <= '0'; + wait for 40us; + PS2_CLK <= '1'; + wait for 40us; +PS2_DATA <= '1'; -- Stop Bit + PS2_CLK <= '0'; + wait for 40us; + PS2_CLK <= '1'; + wait for 40us; + + when 'E' => + PS2_CLK <= '1'; + PS2_DATA <= 'Z'; + wait; + + when others => + + end case; + --else + -- PS2_CLK <= '1'; + -- PS2_DATA <= 'Z'; + -- wait; + --end if; + +end process; + + + +END; diff --git a/Oric Atmos_MiST/storage/rtl_o/tb_oatest.vhd b/Oric Atmos_MiST/storage/rtl_o/tb_oatest.vhd new file mode 100644 index 00000000..c2e0c361 --- /dev/null +++ b/Oric Atmos_MiST/storage/rtl_o/tb_oatest.vhd @@ -0,0 +1,172 @@ +-------------------------------------------------------------------------------- +-- Company: +-- Engineer: +-- +-- Create Date: 22:53:03 11/18/2009 +-- Design Name: +-- Module Name: D:/Documents and Settings/JO/Mes documents/Projet/ORICATMOS/VERSION_2009_ISE_10.1/OA200906/tb_oatest.vhd +-- Project Name: OA2009 +-- Target Device: +-- Tool versions: +-- Description: +-- +-- VHDL Test Bench Created by ISE for module: ORIC +-- +-- Dependencies: +-- +-- Revision: +-- Revision 0.01 - File Created +-- Additional Comments: +-- +-- Notes: +-- This testbench has been automatically generated using types std_logic and +-- std_logic_vector for the ports of the unit under test. Xilinx recommends +-- that these types always be used for the top-level I/O of a design in order +-- to guarantee that the testbench will bind correctly to the post-implementation +-- simulation model. +-------------------------------------------------------------------------------- +LIBRARY ieee; +USE ieee.std_logic_1164.ALL; +USE ieee.std_logic_unsigned.all; +USE ieee.numeric_std.ALL; + +ENTITY tb_oatest IS +END tb_oatest; + +ARCHITECTURE behavior OF tb_oatest IS + + -- Component Declaration for the Unit Under Test (UUT) + + COMPONENT ORIC + PORT( + AD : INOUT std_logic_vector(15 downto 0); + MAPn : IN std_logic; + ROMDISn : IN std_logic; + IRQn : IN std_logic; + CLK_EXT : OUT std_logic; + RW : OUT std_logic; + IO : OUT std_logic; + IOCONTROL : IN std_logic; + D : INOUT std_logic_vector(7 downto 0); + RESETn : IN std_logic; + PS2_CLK : IN std_logic; + PS2_DATA : IN std_logic; + K7_TAPEIN : IN std_logic; + K7_TAPEOUT : OUT std_logic; + K7_REMOTE : OUT std_logic; + K7_AUDIOOUT : OUT std_logic; + AUDIO_OUT : OUT std_logic_vector(3 downto 0); + VIDEO_R : OUT std_logic; + VIDEO_G : OUT std_logic; + VIDEO_B : OUT std_logic; + VIDEO_HSYNC : OUT std_logic; + VIDEO_VSYNC : OUT std_logic; + VIDEO_SYNC : OUT std_logic; + PRT_DATA : INOUT std_logic_vector(7 downto 0); + PRT_STR : OUT std_logic; + PRT_ACK : IN std_logic; + CLK_12 : IN std_logic; + DBG_ROM_DOUT : OUT std_logic_vector(7 downto 0); + DBG_ULA_AD : OUT std_logic_vector(15 downto 0) + ); + END COMPONENT; + + + --Inputs + signal MAPn : std_logic := '0'; + signal ROMDISn : std_logic := '0'; + signal IRQn : std_logic := '0'; + signal IOCONTROL : std_logic := '0'; + signal RESETn : std_logic := '0'; + signal PS2_CLK : std_logic := '0'; + signal PS2_DATA : std_logic := '0'; + signal K7_TAPEIN : std_logic := '0'; + signal PRT_ACK : std_logic := '0'; + signal CLK_12 : std_logic := '0'; + + --BiDirs + signal AD : std_logic_vector(15 downto 0); + signal D : std_logic_vector(7 downto 0); + signal PRT_DATA : std_logic_vector(7 downto 0); + + --Outputs + signal CLK_EXT : std_logic; + signal RW : std_logic; + signal IO : std_logic; + signal K7_TAPEOUT : std_logic; + signal K7_REMOTE : std_logic; + signal K7_AUDIOOUT : std_logic; + signal AUDIO_OUT : std_logic_vector(3 downto 0); + signal VIDEO_R : std_logic; + signal VIDEO_G : std_logic; + signal VIDEO_B : std_logic; + signal VIDEO_HSYNC : std_logic; + signal VIDEO_VSYNC : std_logic; + signal VIDEO_SYNC : std_logic; + signal PRT_STR : std_logic; + signal DBG_ROM_DOUT : std_logic_vector(7 downto 0); + signal DBG_ULA_AD : std_logic_vector(15 downto 0); + +BEGIN + + -- Instantiate the Unit Under Test (UUT) + uut: ORIC PORT MAP ( + AD => AD, + MAPn => MAPn, + ROMDISn => ROMDISn, + IRQn => IRQn, + CLK_EXT => CLK_EXT, + RW => RW, + IO => IO, + IOCONTROL => IOCONTROL, + D => D, + RESETn => RESETn, + PS2_CLK => PS2_CLK, + PS2_DATA => PS2_DATA, + K7_TAPEIN => K7_TAPEIN, + K7_TAPEOUT => K7_TAPEOUT, + K7_REMOTE => K7_REMOTE, + K7_AUDIOOUT => K7_AUDIOOUT, + AUDIO_OUT => AUDIO_OUT, + VIDEO_R => VIDEO_R, + VIDEO_G => VIDEO_G, + VIDEO_B => VIDEO_B, + VIDEO_HSYNC => VIDEO_HSYNC, + VIDEO_VSYNC => VIDEO_VSYNC, + VIDEO_SYNC => VIDEO_SYNC, + PRT_DATA => PRT_DATA, + PRT_STR => PRT_STR, + PRT_ACK => PRT_ACK, + CLK_12 => CLK_12, + DBG_ROM_DOUT => DBG_ROM_DOUT, + DBG_ULA_AD => DBG_ULA_AD + ); + + -- No clocks detected in port list. Replace below with + -- appropriate port name + + constant _period := 1ns; + + _process :process + begin + <= '0'; + wait for _period/2; + <= '1'; + wait for _period/2; + end process; + + + -- Stimulus process + stim_proc: process + begin + -- hold reset state for 100ms. + wait for 100ms; + + wait for _period*10; + + -- insert stimulus here + + wait; + end process; + +END; diff --git a/Oric Atmos_MiST/storage/rtl_o/txt_util.vhd b/Oric Atmos_MiST/storage/rtl_o/txt_util.vhd new file mode 100644 index 00000000..b5391c60 --- /dev/null +++ b/Oric Atmos_MiST/storage/rtl_o/txt_util.vhd @@ -0,0 +1,598 @@ +---------------------------------------------------------------------------------- +-- Company: +-- Engineer: +-- +-- Create Date: 21:59:25 03/08/2011 +-- Design Name: +-- Module Name: txt_util - Behavioral +-- Project Name: +-- Target Devices: +-- Tool versions: +-- Description: +-- +-- Dependencies: +-- +-- Revision: +-- Revision 0.01 - File Created +-- Additional Comments: +-- +---------------------------------------------------------------------------------- +library ieee; +use ieee.std_logic_1164.all; +use std.textio.all; + + +package txt_util is + + -- prints a message to the screen + procedure print(text: string); + + -- prints the message when active + -- useful for debug switches + procedure print(active: boolean; text: string); + + -- converts std_logic into a character + function chr(sl: std_logic) return character; + + -- converts std_logic into a string (1 to 1) + function str(sl: std_logic) return string; + + -- converts std_logic_vector into a string (binary base) + function str(slv: std_logic_vector) return string; + + -- converts boolean into a string + function str(b: boolean) return string; + + -- converts an integer into a single character + -- (can also be used for hex conversion and other bases) + function chr(int: integer) return character; + + -- converts integer into string using specified base + function str(int: integer; base: integer) return string; + + -- converts integer to string, using base 10 + function str(int: integer) return string; + + -- convert std_logic_vector into a string in hex format + function hstr(slv: std_logic_vector) return string; + + + -- functions to manipulate strings + ----------------------------------- + + -- convert a character to upper case + function to_upper(c: character) return character; + + -- convert a character to lower case + function to_lower(c: character) return character; + + -- convert a string to upper case + function to_upper(s: string) return string; + + -- convert a string to lower case + function to_lower(s: string) return string; + + + + -- functions to convert strings into other formats + -------------------------------------------------- + + -- converts a character into std_logic + function to_std_logic(c: character) return std_logic; + + -- converts a string into std_logic_vector + function to_std_logic_vector(s: string) return std_logic_vector; + + + + -- file I/O + ----------- + + -- read variable length string from input file + procedure str_read(file in_file: TEXT; + res_string: out string); + + -- print string to a file and start new line + procedure print(file out_file: TEXT; + new_string: in string); + + -- print character to a file and start new line + procedure print(file out_file: TEXT; + char: in character); + +end txt_util; + + + + +package body txt_util is + + + + + -- prints text to the screen + + procedure print(text: string) is + variable msg_line: line; + begin + write(msg_line, text); + writeline(output, msg_line); + end print; + + + + + -- prints text to the screen when active + + procedure print(active: boolean; text: string) is + begin + if active then + print(text); + end if; + end print; + + + -- converts std_logic into a character + + function chr(sl: std_logic) return character is + variable c: character; + begin + case sl is + when 'U' => c:= 'U'; + when 'X' => c:= 'X'; + when '0' => c:= '0'; + when '1' => c:= '1'; + when 'Z' => c:= 'Z'; + when 'W' => c:= 'W'; + when 'L' => c:= 'L'; + when 'H' => c:= 'H'; + when '-' => c:= '-'; + end case; + return c; + end chr; + + + + -- converts std_logic into a string (1 to 1) + + function str(sl: std_logic) return string is + variable s: string(1 to 1); + begin + s(1) := chr(sl); + return s; + end str; + + + + -- converts std_logic_vector into a string (binary base) + -- (this also takes care of the fact that the range of + -- a string is natural while a std_logic_vector may + -- have an integer range) + + function str(slv: std_logic_vector) return string is + variable result : string (1 to slv'length); + variable r : integer; + begin + r := 1; + for i in slv'range loop + result(r) := chr(slv(i)); + r := r + 1; + end loop; + return result; + end str; + + + function str(b: boolean) return string is + + begin + if b then + return "true"; + else + return "false"; + end if; + end str; + + + -- converts an integer into a character + -- for 0 to 9 the obvious mapping is used, higher + -- values are mapped to the characters A-Z + -- (this is usefull for systems with base > 10) + -- (adapted from Steve Vogwell's posting in comp.lang.vhdl) + + function chr(int: integer) return character is + variable c: character; + begin + case int is + when 0 => c := '0'; + when 1 => c := '1'; + when 2 => c := '2'; + when 3 => c := '3'; + when 4 => c := '4'; + when 5 => c := '5'; + when 6 => c := '6'; + when 7 => c := '7'; + when 8 => c := '8'; + when 9 => c := '9'; + when 10 => c := 'A'; + when 11 => c := 'B'; + when 12 => c := 'C'; + when 13 => c := 'D'; + when 14 => c := 'E'; + when 15 => c := 'F'; + when 16 => c := 'G'; + when 17 => c := 'H'; + when 18 => c := 'I'; + when 19 => c := 'J'; + when 20 => c := 'K'; + when 21 => c := 'L'; + when 22 => c := 'M'; + when 23 => c := 'N'; + when 24 => c := 'O'; + when 25 => c := 'P'; + when 26 => c := 'Q'; + when 27 => c := 'R'; + when 28 => c := 'S'; + when 29 => c := 'T'; + when 30 => c := 'U'; + when 31 => c := 'V'; + when 32 => c := 'W'; + when 33 => c := 'X'; + when 34 => c := 'Y'; + when 35 => c := 'Z'; + when others => c := '?'; + end case; + return c; + end chr; + + + + -- convert integer to string using specified base + -- (adapted from Steve Vogwell's posting in comp.lang.vhdl) + + function str(int: integer; base: integer) return string is + + variable temp: string(1 to 10); + variable num: integer; + variable abs_int: integer; + variable len: integer := 1; + variable power: integer := 1; + + begin + + -- bug fix for negative numbers + abs_int := abs(int); + + num := abs_int; + + while num >= base loop -- Determine how many + len := len + 1; -- characters required + num := num / base; -- to represent the + end loop ; -- number. + + for i in len downto 1 loop -- Convert the number to + temp(i) := chr(abs_int/power mod base); -- a string starting + power := power * base; -- with the right hand + end loop ; -- side. + + -- return result and add sign if required + if int < 0 then + return '-'& temp(1 to len); + else + return temp(1 to len); + end if; + + end str; + + + -- convert integer to string, using base 10 + function str(int: integer) return string is + + begin + + return str(int, 10) ; + + end str; + + + + -- converts a std_logic_vector into a hex string. + function hstr(slv: std_logic_vector) return string is + variable hexlen: integer; + variable longslv : std_logic_vector(67 downto 0) := (others => '0'); + variable hex : string(1 to 16); + variable fourbit : std_logic_vector(3 downto 0); + begin + hexlen := (slv'left+1)/4; + if (slv'left+1) mod 4 /= 0 then + hexlen := hexlen + 1; + end if; + longslv(slv'left downto 0) := slv; + for i in (hexlen -1) downto 0 loop + fourbit := longslv(((i*4)+3) downto (i*4)); + case fourbit is + when "0000" => hex(hexlen -I) := '0'; + when "0001" => hex(hexlen -I) := '1'; + when "0010" => hex(hexlen -I) := '2'; + when "0011" => hex(hexlen -I) := '3'; + when "0100" => hex(hexlen -I) := '4'; + when "0101" => hex(hexlen -I) := '5'; + when "0110" => hex(hexlen -I) := '6'; + when "0111" => hex(hexlen -I) := '7'; + when "1000" => hex(hexlen -I) := '8'; + when "1001" => hex(hexlen -I) := '9'; + when "1010" => hex(hexlen -I) := 'A'; + when "1011" => hex(hexlen -I) := 'B'; + when "1100" => hex(hexlen -I) := 'C'; + when "1101" => hex(hexlen -I) := 'D'; + when "1110" => hex(hexlen -I) := 'E'; + when "1111" => hex(hexlen -I) := 'F'; + when "ZZZZ" => hex(hexlen -I) := 'z'; + when "UUUU" => hex(hexlen -I) := 'u'; + when "XXXX" => hex(hexlen -I) := 'x'; + when others => hex(hexlen -I) := '?'; + end case; + end loop; + return hex(1 to hexlen); + end hstr; + + + + -- functions to manipulate strings + ----------------------------------- + + + -- convert a character to upper case + + function to_upper(c: character) return character is + + variable u: character; + + begin + + case c is + when 'a' => u := 'A'; + when 'b' => u := 'B'; + when 'c' => u := 'C'; + when 'd' => u := 'D'; + when 'e' => u := 'E'; + when 'f' => u := 'F'; + when 'g' => u := 'G'; + when 'h' => u := 'H'; + when 'i' => u := 'I'; + when 'j' => u := 'J'; + when 'k' => u := 'K'; + when 'l' => u := 'L'; + when 'm' => u := 'M'; + when 'n' => u := 'N'; + when 'o' => u := 'O'; + when 'p' => u := 'P'; + when 'q' => u := 'Q'; + when 'r' => u := 'R'; + when 's' => u := 'S'; + when 't' => u := 'T'; + when 'u' => u := 'U'; + when 'v' => u := 'V'; + when 'w' => u := 'W'; + when 'x' => u := 'X'; + when 'y' => u := 'Y'; + when 'z' => u := 'Z'; + when others => u := c; + end case; + + return u; + + end to_upper; + + + -- convert a character to lower case + + function to_lower(c: character) return character is + + variable l: character; + + begin + + case c is + when 'A' => l := 'a'; + when 'B' => l := 'b'; + when 'C' => l := 'c'; + when 'D' => l := 'd'; + when 'E' => l := 'e'; + when 'F' => l := 'f'; + when 'G' => l := 'g'; + when 'H' => l := 'h'; + when 'I' => l := 'i'; + when 'J' => l := 'j'; + when 'K' => l := 'k'; + when 'L' => l := 'l'; + when 'M' => l := 'm'; + when 'N' => l := 'n'; + when 'O' => l := 'o'; + when 'P' => l := 'p'; + when 'Q' => l := 'q'; + when 'R' => l := 'r'; + when 'S' => l := 's'; + when 'T' => l := 't'; + when 'U' => l := 'u'; + when 'V' => l := 'v'; + when 'W' => l := 'w'; + when 'X' => l := 'x'; + when 'Y' => l := 'y'; + when 'Z' => l := 'z'; + when others => l := c; + end case; + + return l; + + end to_lower; + + + + -- convert a string to upper case + + function to_upper(s: string) return string is + + variable uppercase: string (s'range); + + begin + + for i in s'range loop + uppercase(i):= to_upper(s(i)); + end loop; + return uppercase; + + end to_upper; + + + + -- convert a string to lower case + + function to_lower(s: string) return string is + + variable lowercase: string (s'range); + + begin + + for i in s'range loop + lowercase(i):= to_lower(s(i)); + end loop; + return lowercase; + + end to_lower; + + + +-- functions to convert strings into other types + + +-- converts a character into a std_logic + +function to_std_logic(c: character) return std_logic is + variable sl: std_logic; + begin + case c is + when 'U' => + sl := 'U'; + when 'X' => + sl := 'X'; + when '0' => + sl := '0'; + when '1' => + sl := '1'; + when 'Z' => + sl := 'Z'; + when 'W' => + sl := 'W'; + when 'L' => + sl := 'L'; + when 'H' => + sl := 'H'; + when '-' => + sl := '-'; + when others => + sl := 'X'; + end case; + return sl; + end to_std_logic; + + +-- converts a string into std_logic_vector + +function to_std_logic_vector(s: string) return std_logic_vector is + variable slv: std_logic_vector(s'high-s'low downto 0); + variable k: integer; +begin + k := s'high-s'low; + for i in s'range loop + slv(k) := to_std_logic(s(i)); + k := k - 1; + end loop; + return slv; +end to_std_logic_vector; + + + + + + +---------------- +-- file I/O -- +---------------- + + + +-- read variable length string from input file + +procedure str_read(file in_file: TEXT; + res_string: out string) is + + variable l: line; + variable c: character; + variable is_string: boolean; + + begin + + readline(in_file, l); + -- clear the contents of the result string + for i in res_string'range loop + res_string(i) := ' '; + end loop; + -- read all characters of the line, up to the length + -- of the results string + for i in res_string'range loop + read(l, c, is_string); + res_string(i) := c; + if not is_string then -- found end of line + exit; + end if; + end loop; + +end str_read; + + +-- print string to a file +procedure print(file out_file: TEXT; + new_string: in string) is + + variable l: line; + + begin + + write(l, new_string); + writeline(out_file, l); + +end print; + + +-- print character to a file and start new line +procedure print(file out_file: TEXT; + char: in character) is + + variable l: line; + + begin + + write(l, char); + writeline(out_file, l); + +end print; + + + +-- appends contents of a string to a file until line feed occurs +-- (LF is considered to be the end of the string) + +procedure str_write(file out_file: TEXT; + new_string: in string) is + begin + + for i in new_string'range loop + print(out_file, new_string(i)); + if new_string(i) = LF then -- end of string + exit; + end if; + end loop; + +end str_write; + +end txt_util; \ No newline at end of file diff --git a/Oric Atmos_MiST/storage/scenario.txt b/Oric Atmos_MiST/storage/scenario.txt new file mode 100644 index 00000000..947b6323 --- /dev/null +++ b/Oric Atmos_MiST/storage/scenario.txt @@ -0,0 +1,29 @@ +W 150 ms +# Press Z (0x1A) +K 00011010 +W 35 ms +# Release Z (0xF0 0x1A) +K 11110000 +K 00011010 +W 100 ms +# Press A (0x1C) +K 00011100 +W 35 ms +# Release A (0xF0 0x1C) +K 11110000 +K 00011100 +W 100 ms +# Press P (0x4D) +K 01001101 +W 35 ms +# Release P (0xF0 0x4D) +K 11110000 +K 01001101 +W 100 ms +# Press RETURN (0x5A) +K 01011010 +W 35 ms +# Release RETURN (0xF0 0x5A) +K 11110000 +K 01011010 +E

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 M=^LTBu@nFRI|F*S!~g&Q literal 0 HcmV?d00001 diff --git a/Oric Atmos_MiST/storage/microdisc-2.gif b/Oric Atmos_MiST/storage/microdisc-2.gif new file mode 100644 index 0000000000000000000000000000000000000000..7b94d8f5cbc8db91c55d993ddea5abb7068743c7 GIT binary patch literal 63637 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 Os-e<`uB>DM002AhweE-j literal 0 HcmV?d00001 diff --git a/Oric Atmos_MiST/storage/oric1-1p.gif b/Oric Atmos_MiST/storage/oric1-1p.gif new file mode 100644 index 0000000000000000000000000000000000000000..2d88f1af31c4f20621de954d3dda95ceb9fc9da0 GIT binary patch literal 180214 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