diff --git a/Console_MiST/Atari - 7800_TeST/Atari7800.qws b/Console_MiST/Atari - 7800_TeST/Atari7800.qws deleted file mode 100644 index f178369c..00000000 Binary files a/Console_MiST/Atari - 7800_TeST/Atari7800.qws and /dev/null differ diff --git a/Console_MiST/Nintendo - Gameboy_MiST/gb.qsf b/Console_MiST/Nintendo - Gameboy_MiST/gb.qsf index 5c3cfa1d..4e9e909e 100644 --- a/Console_MiST/Nintendo - Gameboy_MiST/gb.qsf +++ b/Console_MiST/Nintendo - Gameboy_MiST/gb.qsf @@ -43,7 +43,7 @@ set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files set_global_assignment -name ORIGINAL_QUARTUS_VERSION 11.0 set_global_assignment -name PROJECT_CREATION_TIME_DATE "17:14:01 APRIL 10, 2012" -set_global_assignment -name LAST_QUARTUS_VERSION 13.1 +set_global_assignment -name LAST_QUARTUS_VERSION "13.0 SP1" set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0 set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85 set_global_assignment -name DEVICE_FILTER_PACKAGE "ANY QFP" diff --git a/Console_MiST/Sega - SG1000/ReadMe.txt b/Console_MiST/Sega - SG1000/ReadMe.txt new file mode 100644 index 00000000..228701c4 --- /dev/null +++ b/Console_MiST/Sega - SG1000/ReadMe.txt @@ -0,0 +1 @@ +WIP not Working \ No newline at end of file diff --git a/Console_MiST/Sega - SG1000/Schematic/card.png b/Console_MiST/Sega - SG1000/Schematic/card.png new file mode 100644 index 00000000..253d9403 Binary files /dev/null and b/Console_MiST/Sega - SG1000/Schematic/card.png differ diff --git a/Console_MiST/Sega - SG1000/sgcon.png b/Console_MiST/Sega - SG1000/Schematic/sgcon.png similarity index 100% rename from Console_MiST/Sega - SG1000/sgcon.png rename to Console_MiST/Sega - SG1000/Schematic/sgcon.png diff --git a/Console_MiST/Sega - SG1000/sgcpu.png b/Console_MiST/Sega - SG1000/Schematic/sgcpu.png similarity index 100% rename from Console_MiST/Sega - SG1000/sgcpu.png rename to Console_MiST/Sega - SG1000/Schematic/sgcpu.png diff --git a/Console_MiST/Sega - SG1000/sgio.png b/Console_MiST/Sega - SG1000/Schematic/sgio.png similarity index 100% rename from Console_MiST/Sega - SG1000/sgio.png rename to Console_MiST/Sega - SG1000/Schematic/sgio.png diff --git a/Console_MiST/Sega - SG1000/sgjoy.png b/Console_MiST/Sega - SG1000/Schematic/sgjoy.png similarity index 100% rename from Console_MiST/Sega - SG1000/sgjoy.png rename to Console_MiST/Sega - SG1000/Schematic/sgjoy.png diff --git a/Console_MiST/Sega - SG1000/sgpsg.png b/Console_MiST/Sega - SG1000/Schematic/sgpsg.png similarity index 100% rename from Console_MiST/Sega - SG1000/sgpsg.png rename to Console_MiST/Sega - SG1000/Schematic/sgpsg.png diff --git a/Console_MiST/Sega - SG1000/sgvdp.png b/Console_MiST/Sega - SG1000/Schematic/sgvdp.png similarity index 100% rename from Console_MiST/Sega - SG1000/sgvdp.png rename to Console_MiST/Sega - SG1000/Schematic/sgvdp.png diff --git a/Console_MiST/Sega - SG1000/Snapshot/sg1000.rbf b/Console_MiST/Sega - SG1000/Snapshot/sg1000.rbf deleted file mode 100644 index cfacb7c9..00000000 Binary files a/Console_MiST/Sega - SG1000/Snapshot/sg1000.rbf and /dev/null differ diff --git a/Console_MiST/Sega - SG1000/rtl/RAM2K.qip b/Console_MiST/Sega - SG1000/rtl/RAM2K.qip deleted file mode 100644 index e108e50d..00000000 --- a/Console_MiST/Sega - SG1000/rtl/RAM2K.qip +++ /dev/null @@ -1,3 +0,0 @@ -set_global_assignment -name IP_TOOL_NAME "RAM: 1-PORT" -set_global_assignment -name IP_TOOL_VERSION "13.0" -set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "RAM2K.v"] diff --git a/Console_MiST/Sega - SG1000/rtl/RAM2K.v b/Console_MiST/Sega - SG1000/rtl/RAM2K.v deleted file mode 100644 index 5651ce5f..00000000 --- a/Console_MiST/Sega - SG1000/rtl/RAM2K.v +++ /dev/null @@ -1,177 +0,0 @@ -// megafunction wizard: %RAM: 1-PORT% -// GENERATION: STANDARD -// VERSION: WM1.0 -// MODULE: altsyncram - -// ============================================================ -// File Name: RAM2K.v -// Megafunction Name(s): -// altsyncram -// -// Simulation Library Files(s): -// altera_mf -// ============================================================ -// ************************************************************ -// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! -// -// 13.0.1 Build 232 06/12/2013 SP 1 SJ Full Version -// ************************************************************ - - -//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. - - -// synopsys translate_off -`timescale 1 ps / 1 ps -// synopsys translate_on -module RAM2K ( - address, - clken, - clock, - data, - wren, - q); - - input [10:0] address; - input clken; - input clock; - input [7:0] data; - input wren; - output [7:0] q; -`ifndef ALTERA_RESERVED_QIS -// synopsys translate_off -`endif - tri1 clken; - tri1 clock; -`ifndef ALTERA_RESERVED_QIS -// synopsys translate_on -`endif - - wire [7:0] sub_wire0; - wire [7:0] q = sub_wire0[7:0]; - - altsyncram altsyncram_component ( - .address_a (address), - .clock0 (clock), - .data_a (data), - .wren_a (wren), - .clocken0 (clken), - .q_a (sub_wire0), - .aclr0 (1'b0), - .aclr1 (1'b0), - .address_b (1'b1), - .addressstall_a (1'b0), - .addressstall_b (1'b0), - .byteena_a (1'b1), - .byteena_b (1'b1), - .clock1 (1'b1), - .clocken1 (1'b1), - .clocken2 (1'b1), - .clocken3 (1'b1), - .data_b (1'b1), - .eccstatus (), - .q_b (), - .rden_a (1'b1), - .rden_b (1'b1), - .wren_b (1'b0)); - defparam - altsyncram_component.clock_enable_input_a = "NORMAL", - altsyncram_component.clock_enable_output_a = "NORMAL", - altsyncram_component.intended_device_family = "Cyclone III", - altsyncram_component.lpm_hint = "ENABLE_RUNTIME_MOD=NO", - altsyncram_component.lpm_type = "altsyncram", - altsyncram_component.numwords_a = 2048, - altsyncram_component.operation_mode = "SINGLE_PORT", - altsyncram_component.outdata_aclr_a = "NONE", - altsyncram_component.outdata_reg_a = "CLOCK0", - altsyncram_component.power_up_uninitialized = "FALSE", - altsyncram_component.read_during_write_mode_port_a = "NEW_DATA_NO_NBE_READ", - altsyncram_component.widthad_a = 11, - altsyncram_component.width_a = 8, - altsyncram_component.width_byteena_a = 1; - - -endmodule - -// ============================================================ -// 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 "2048" -// 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 "11" -// 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 "2048" -// 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 "11" -// Retrieval info: CONSTANT: WIDTH_A NUMERIC "8" -// Retrieval info: CONSTANT: WIDTH_BYTEENA_A NUMERIC "1" -// Retrieval info: USED_PORT: address 0 0 11 0 INPUT NODEFVAL "address[10..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 11 0 address 0 0 11 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 RAM2K.v TRUE -// Retrieval info: GEN_FILE: TYPE_NORMAL RAM2K.inc FALSE -// Retrieval info: GEN_FILE: TYPE_NORMAL RAM2K.cmp FALSE -// Retrieval info: GEN_FILE: TYPE_NORMAL RAM2K.bsf FALSE -// Retrieval info: GEN_FILE: TYPE_NORMAL RAM2K_inst.v FALSE -// Retrieval info: GEN_FILE: TYPE_NORMAL RAM2K_bb.v FALSE -// Retrieval info: LIB_FILE: altera_mf diff --git a/Console_MiST/Sega - SG1000/rtl/SG1000_MiST.sv b/Console_MiST/Sega - SG1000/rtl/SG1000_MiST.sv index a1669ae6..ba5ec49d 100644 --- a/Console_MiST/Sega - SG1000/rtl/SG1000_MiST.sv +++ b/Console_MiST/Sega - SG1000/rtl/SG1000_MiST.sv @@ -23,6 +23,7 @@ localparam CONF_STR = { "SG1000;BINSG ;", "O23,Scandoubler Fx,None,HQ2x,CRT 25%,CRT 50%;", + "O4,Video,NTSC,PAL;", "O5,Pause,Off,On;", "T6,Reset;", "V,v1.0.",`BUILD_DATE @@ -70,8 +71,8 @@ user_io ( .switches(switches), .ps2_kbd_clk(ps2_kbd_clk), .ps2_kbd_data(ps2_kbd_data), - .joystick_0(joystick_0[5:0]), - .joystick_1(joystick_1[5:0]), + .joystick_0(joystick_0), + .joystick_1(joystick_1), .ioctl_ce(1'b1), .ioctl_wr(ioctl_wr), .ioctl_index(ioctl_index), @@ -113,13 +114,16 @@ video_mixer ( sg1000_top sg1000_top ( .RESET_n(~(status[0] | status[6] | buttons[1])), .sys_clk(clk_8), - .clk_vdp(clk_16), + .vdp_clk(clk_16), + .vid_clk(clk_64), + .pal(status[4]), .pause(status[5]), .ps2_kbd_clk(ps2_kbd_clk), .ps2_kbd_data(ps2_kbd_data), - //.Cart_In(Cart_In), - //.Cart_Out(Cart_Out), - //.Cart_Addr(Cart_Addr), +// .Cart_In(Cart_In), +// .Cart_Out(Cart_Out), +// .Cart_Addr(Cart_Addr), +// .Cart_We(Cart_We), .audio(audio), .vblank(vb), .hblank(hb), @@ -128,25 +132,14 @@ sg1000_top sg1000_top ( .vga_r(r), .vga_g(g), .vga_b(b), - .Joy_A(), - .Joy_B() +// .rgb_r(r), +// .rgb_g(g), +// .rgb_b(b), +// .csync(vs), + .Joy_A(joystick_0[5:0]), + .Joy_B(joystick_1[5:0]) ); - -wire [7:0] Cart_Out; -wire [7:0] Cart_In; -wire [14:0] Cart_Addr; - -spram #( - .init_file("roms/32.hex"),//Test - .widthad_a(15), - .width_a(8)) -CART ( - .address(ioctl_download ? ioctl_addr[14:0] : Cart_Addr), - .clock(clk_64), - .data(ioctl_dout), - .wren(ioctl_wr), - .q(Cart_Out) - ); +//assign hs= 1'b1; dac #( .msbi_g(5)) diff --git a/Console_MiST/Sega - SG1000/rtl/build_id.v b/Console_MiST/Sega - SG1000/rtl/build_id.v index c835b561..9612c4d0 100644 --- a/Console_MiST/Sega - SG1000/rtl/build_id.v +++ b/Console_MiST/Sega - SG1000/rtl/build_id.v @@ -1,2 +1,2 @@ -`define BUILD_DATE "181108" -`define BUILD_TIME "102032" +`define BUILD_DATE "181109" +`define BUILD_TIME "113105" diff --git a/Console_MiST/Sega - SG1000/rtl/cart.sv b/Console_MiST/Sega - SG1000/rtl/cart.sv index 17920edb..a7651254 100644 --- a/Console_MiST/Sega - SG1000/rtl/cart.sv +++ b/Console_MiST/Sega - SG1000/rtl/cart.sv @@ -9,24 +9,50 @@ input clk_cpu, output CON, input EXM2_n, input M1_n, - input [14:0] Addr, - output [7:0] Cart_Out, + input [14:0] Cart_Addr, + input [7:0] Cart_In, + input [7:0] Cart_Ram_In, output [7:0] Cart_Ram_Out, - input [7:0] Cart_In + output [7:0] Cart_Rom_Out, + input Cart_We ); - +/* wire [5:0]bank0; wire [5:0]bank1; wire [5:0]bank2; -always @(clk_cpu) begin - if (~WR_n & Addr[14:2] == "1111111111111") - case (Addr[1:0]) +always @(clk_cpu, WR_n) begin + if (~WR_n & Cart_Addr[14:2] == "1111111111111") + case (Cart_Addr[1:0]) 2'b01 : bank0 = Cart_In[5:0]; 2'b10 : bank1 = Cart_In[5:0]; 2'b11 : bank2 = Cart_In[5:0]; default : ; endcase; -end +end*/ +spram #( + .init_file("/roms/[BIOS]OthelloMultivision.hex"), + .widthad_a(14),//16k for test + .width_a(8)) +ROM ( + .address(Cart_Addr), + .clock(clk_cpu), + .data(Cart_In), + .wren(~WR_n), + .q(Cart_Rom_Out) + ); +/* + spram #( + .init_file(""), + .widthad_a(11),//2k for test + .width_a(8)) +RAM ( + .address(Cart_Addr), + .clock(clk_cpu), + .data(Cart_Ram_In), + .wren(~WR_n), + .q(Cart_Ram_Out) + );*/ + endmodule \ No newline at end of file diff --git a/Console_MiST/Sega - SG1000/rtl/color_encoder.vhd b/Console_MiST/Sega - SG1000/rtl/color_encoder.vhd new file mode 100644 index 00000000..d4836130 --- /dev/null +++ b/Console_MiST/Sega - SG1000/rtl/color_encoder.vhd @@ -0,0 +1,136 @@ +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.NUMERIC_STD.ALL; + +-- clk must be a 64Mhz clock +-- sync is the sync signal (0 for 0V, 1 for 0.3V) +-- line_visible is 1 for lines that are displayed (only sync when 0) +-- line_even should be toggled every line +-- color: 222 RGB (b1b0g1g0r1r0) +-- output: 6 bit linear output, "000000" is 0v, "111111" is 1.3V (step is 0.02V) +entity color_encoder is + Port ( + clk: in STD_LOGIC; + pal: in STD_LOGIC; + sync: in STD_LOGIC; + line_visible: in STD_LOGIC; + line_even: in STD_LOGIC; + color: in STD_LOGIC_VECTOR (5 downto 0); + outputs: out STD_LOGIC_VECTOR (5 downto 0)); +end color_encoder; + +architecture Behavioral of color_encoder is + + component yuv_table + port (color : in std_logic_vector(5 downto 0); + y : out std_logic_vector(5 downto 0); + u : out std_logic_vector(5 downto 0); + v : out std_logic_vector(5 downto 0)); + end component; + + signal counter : integer range 0 to 4096; + signal phase : unsigned (20 downto 0) := (others=>'0'); + + signal y1: std_logic_vector (5 downto 0); + signal u1: std_logic_vector (5 downto 0); + signal v1: std_logic_vector (5 downto 0); + signal y : unsigned (5 downto 0); + signal u : unsigned (5 downto 0); + signal v : unsigned (5 downto 0); + + signal uv : unsigned (5 downto 0); + +begin + yuv_table_inst : yuv_table + port map ( + color => color, + y => y1, + u => u1, + v => v1); + + process (clk, sync, line_visible) + begin + if rising_edge(clk) then + if sync='0' then + counter <= 0; + --phase <= (others=>'0'); + else + if line_visible='1' then + counter <= counter+1; + end if; + end if; + if pal='1' then + phase <= phase+145281; + else + phase <= phase+117295; + end if; + end if; + end process; + + process (clk,counter,color) + --variable yuv : unsigned(17 downto 0); + begin + if rising_edge(clk) then + -- color burst + if counter>=2*29 and counter<2*(29+72) then + -- black + y <= "000000"; + -- reference phase + if pal='1' then + u <= "111100"; + v <= "000100"; + else + u <= "111000"; + v <= "000000"; + end if; + + -- visible pixels + elsif counter>=2*(29+72+85) and counter<2*(29+72+85+1664) then + --yuv := yuv_table(to_integer(unsigned(color))); + y <= unsigned(y1); + u <= unsigned(u1); + v <= unsigned(v1); + + -- front porch, sync and back porch + else + y <= (others=>'0'); + u <= (others=>'0'); + v <= (others=>'0'); + end if; + end if; + end process; + + process (phase, line_even, u, v) + begin + if pal='1' then + case line_even&phase(20 downto 19) is + when "000" => uv <= u; + when "001" => uv <= v; + when "010" => uv <= 0-u; + when "011" => uv <= 0-v; + when "100" => uv <= u; + when "101" => uv <= 0-v; + when "110" => uv <= 0-u; + when "111" => uv <= v; + when others => uv <= (others=>'0'); + end case; + else + case phase(20 downto 19) is + when "00" => uv <= u; + when "01" => uv <= 0-v; + when "10" => uv <= 0-u; + when "11" => uv <= v; + when others => uv <= (others=>'0'); + end case; + end if; + end process; + + process (clk,sync,y,uv) + begin + if rising_edge(clk) then + outputs <= std_logic_vector(("0"&sync&"0000")+y+uv); + end if; + end process; + +end Behavioral; + diff --git a/Console_MiST/Sega - SG1000/rtl/greybox_tmp/cbx_args.txt b/Console_MiST/Sega - SG1000/rtl/greybox_tmp/cbx_args.txt deleted file mode 100644 index 1fc21826..00000000 --- a/Console_MiST/Sega - SG1000/rtl/greybox_tmp/cbx_args.txt +++ /dev/null @@ -1,17 +0,0 @@ -CLOCK_ENABLE_INPUT_A=NORMAL -CLOCK_ENABLE_OUTPUT_A=NORMAL -INTENDED_DEVICE_FAMILY="Cyclone III" -NUMWORDS_A=2048 -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=11 -WIDTH_A=8 -WIDTH_BYTEENA_A=1 -DEVICE_FAMILY="Cyclone III" -address_a -clock0 -clocken0 -q_a diff --git a/Console_MiST/Sega - SG1000/rtl/psg/psg.vhd b/Console_MiST/Sega - SG1000/rtl/psg/psg.vhd index dd4bba90..688dcd10 100644 --- a/Console_MiST/Sega - SG1000/rtl/psg/psg.vhd +++ b/Console_MiST/Sega - SG1000/rtl/psg/psg.vhd @@ -5,6 +5,7 @@ use IEEE.NUMERIC_STD.ALL; entity psg is port (clk : in STD_LOGIC; WR_n : in STD_LOGIC; + CS_n : in STD_LOGIC; D_in : in STD_LOGIC_VECTOR (7 downto 0); outputs: out STD_LOGIC_VECTOR (5 downto 0) ); @@ -91,9 +92,9 @@ begin end process; clk32 <= std_logic(clk_divide(5)); - process (clk, WR_n) + process (clk, WR_n, CS_n) begin - if rising_edge(clk) and WR_n='0' then + if rising_edge(clk) and WR_n='0' and CS_n='0' then if D_in(7)='1' then case D_in(6 downto 4) is when "000" => tone0(3 downto 0) <= D_in(3 downto 0); diff --git a/Console_MiST/Sega - SG1000/rtl/roms/[BIOS]OthelloMultivision.bin b/Console_MiST/Sega - SG1000/rtl/roms/[BIOS]OthelloMultivision.bin new file mode 100644 index 00000000..f08d7607 Binary files /dev/null and b/Console_MiST/Sega - SG1000/rtl/roms/[BIOS]OthelloMultivision.bin differ diff --git a/Console_MiST/Sega - SG1000/rtl/roms/[BIOS]OthelloMultivision.hex b/Console_MiST/Sega - SG1000/rtl/roms/[BIOS]OthelloMultivision.hex new file mode 100644 index 00000000..74d1484a --- /dev/null +++ b/Console_MiST/Sega - SG1000/rtl/roms/[BIOS]OthelloMultivision.hex @@ -0,0 +1,1025 @@ +:10000000F3ED56C36800FFFFFFFFFFFFFFFFFFFF99 +:10001000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 +:10002000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 +:10003000FFFFFFFFFFFFFFFFC33B00F3E5F5DBBF63 +:10004000C3401C21E7C135CC4701F1E1FBC9FFFFEB +:100050003EF032EBC1C3D801FFFFFFFFFFFFFFFF00 +:10006000FFFFFFFFFFFFED4531E0C7CDD8010608D8 +:10007000CDC31610FB01D007CDCD013EC006062131 +:10008000EAC1772310FC3EC332FAC132F1C1211418 +:100090000622FBC121BA0122F2C13E4E32E7C1CD98 +:1000A0005000CDFE010603110040C5217C02010075 +:1000B00005CD460221000819EBC110EE210B1A11E3 +:1000C0000058010001CD46021108603EF20108000F +:1000D000CD5F020178001110603E12CD5F021180E9 +:1000E000603EF0017001CD5F0211F0610148003EF9 +:1000F000F2CD5F02CD53021170630128003EF0CDB6 +:100100005F023EF1D3BF3E87D3BFFB11A678CD4E31 +:100110000711AE783E57060BCD5207D3BE21E81823 +:10012000118C79010600CD460211C8790E10CD461A +:1001300002112A7A0E0CCD460221D3141192150613 +:1001400080CD8913C31406E5C5D53E0232E7C1014F +:10015000DE0621EAC1ED78E63F2F5FAE73E521E9C7 +:10016000C173E1A320140C2310EBD1C1E1C9ED78D8 +:10017000E63FE521E9C12FBEE1C91E0FCD6E01208A +:10018000E51D20F80E070D10FD1EFAF57BC6065F73 +:10019000F10D20F70F38031C18FA060221AF017E7B +:1001A000BB28122310F97B32FDC1CDFAC118BB0860 +:1001B00009222300007BD60418ED000000C3D117EC +:1001C00021FDC13EFF77BE28FD7E2346C92100C028 +:1001D0001101C03600EDB0C93E9F0604D37FC62092 +:1001E00010FAC9CDEE0121400019EB10F6C9CD2C53 +:1001F00002D3BE0000C9110078010003180F211CB2 +:100200000206100EBFEDB3110040010040AFCD2C2F +:1002100002D3BE0DCD3E0220F810F6C90280E08167 +:100220000E82FF83038438850386F1870000000077 +:100230000000000000F57BD3BF7AD3BFF1C9C93EEF +:10024000033D20FDF1C9CD2C027ED3BE230B78B136 +:1002500020F7C93E40113862014001CD5F02C92636 +:1002600003C5D5CD2C02D3BE6F0B78B17D20F7D15D +:10027000E521000819EBE1C12520E6C900000000D6 +:10028000000000003C7EFFFFFFFF7E3C3C7EFFFF46 +:10029000FFFF7E3C000000000000000000000000A6 +:1002A000F8080808000000000F0808080000000017 +:1002B000FF000000080808080808080808080808DF +:1002C000FF080808080808080F08080800000000D0 +:1002D000FF08080808080808F808080808080808B7 +:1002E000FF0000000808081CFF1C08080808080890 +:1002F000F8000000080808080F00000000384CC68D +:10030000C6C6643800307030303030FC007CC60E19 +:100310003C78E0FE00FE0C183C06C67C001C3C6CE1 +:10032000CC8CFE0C00FEC0FC0606C67C003C60C007 +:10033000FCC6C67C00FEC60C18303030007CC2F211 +:100340007C9E867C007CC6C67E060C7800386CC617 +:10035000C6FEC6C600FCC6C6FCC6C6FC003C66C0DF +:10036000C0C0663C00F8CCC6C6C6CCF800FEC0C013 +:10037000FCC0C0FE00FEC0C0FCC0C0C0003E60C0EB +:10038000CEC6663E00C6C6C6FEC6C6C600FC303037 +:10039000303030FC000606060606C67C00C6CCD807 +:1003A000F0F8DCCE00C0C0C0C0C0C0FE00C6EEFE8B +:1003B000FED6C6C600C6E6F6FEDECEC6007CC6C6C3 +:1003C000C6C6C67C00FCC6C6C6FCC0C0007CC6C68D +:1003D000C6DECC7600FCC6C6CEF8DCCE007CC6C03D +:1003E0007C06C67C00FC30303030303000C6C6C6DB +:1003F000C6C6C67C00C6C6C6EE7C381000C6C6D6C9 +:10040000FEFE6C4400C6EE7C387CEEC6008484CCD4 +:100410007830303000FE0E1C3870E0FE00000078AE +:10042000007800000E1E1E3C30C0C000003846069A +:100430001810001000000000666600000008102080 +:1004400020201008004020101010204000002052F2 +:10045000DE8C000000000000FE0000000010543898 +:10046000FE385410006CFE6C6C6CFE6C00386CC670 +:10047000C6FEC6C600FCC6C6FCC6C6FC003C66C0BE +:10048000C0C0663C00F8CCC6C6C6CCF800FCC0C0F4 +:10049000FCC0C0FE00FEC0C0FCC0C0C0003E60C0CA +:1004A000CEC6663E00C6C6C6FEC6C6C600C6C6C620 +:1004B000FEC6C6C6000307070F0E0E0EFCFFFF8721 +:1004C00003010101001C9C9CDCFEFEDC00E0E0E07E +:1004D000E7EFFFF300000000078FDFDC00070707EE +:1004E00087E7E777007070707173777F0000000016 +:1004F000E0F0F83C0E0E0E0F0707030001010103A8 +:1005000087FFFFFCDCDCDCDC9C9F0F07E1E1E1E125 +:10051000E1E1E1E1F8FFFFF8D8DCCFC73FFFFF07DB +:100520003F77E7877E7C7C7E7F7773711C0C0C1C89 +:100530003CF8F0E060F0F8FDFFFFEFE73078F8F806 +:10054000FBFBBB3B000000008787878770737373DA +:100550007F7F7F73009C9C80DFDFDD9D00000000BB +:100560008181C3C300383800F8F9BBBB000101002A +:10057000FFFFFFC100C0C000C7CFDFFE00000000CA +:10058000E7F7FF7F0000000078FCFE9EE2E0E0E07D +:10059000E0E0E0E03B3B3B3B3B39393887878787EE +:1005A000CFFFFFF773737373737171709C9C9C9C86 +:1005B000DCFCFCFCE7E7E7667E7E3C3C3B393838F8 +:1005C000383F3F3FF1F93D1D3DF9F1E1FCF8F8FC02 +:1005D000FEDFCFC73F1F1F3F7FFFF7E70E0E0E0E58 +:1005E0000E0E0E0E00000000ED4F49497E81BDA1A8 +:1005F000A1BD817E00020772427212730001017771 +:100600005555555700010177554545470024742736 +:1006100025252535F33100C82100C01101C001C0D6 +:10062000013600EDB02100C21101C201F005360013 +:10063000EDB0CDF60121AB181180C0011100EDB075 +:100640003EC332F1C132FAC121D11722F2C1219445 +:100650001822FBC1CD5302003EF1D3BF3E87D3BF6A +:1006600011A3780109113E08CD2C02C5D3BEEE0EB0 +:1006700010FA21400019EBC10D20EB11C3780109DC +:10068000113E07C5CD2C02D3BEEE0410FA21400066 +:1006900019EBC10D20EB21BC1811A378011100CD7D +:1006A000460211A37A0E11CD46023E0911E37806E7 +:1006B00007CDE3013E0B11F3780607CDE3013E0DB4 +:1006C000112779CDEE01112F79CDEE0111277ACDC9 +:1006D000EE01112F7ACDEE01216378061116023E4C +:1006E00003CD440E21C37A061116023E03CD440EFB +:1006F000110B78CD4E07CD600DCDB90D21DE18E57B +:1007000011F579010A00CD4602E111F57A0E0ACD04 +:100710004602CDA507CD990721271911757A0E0933 +:10072000CD460211B57A0E09CD4602CDBB3F216000 +:10073000C1CBC6CBDE2101FF2263C1C3EF08CD666A +:100740000ECD001D2160C17EEE0877C33A0A3E47F8 +:1007500006080E02C5D5CD2C02D3BE3C10FB2120CD +:1007600000D119EBC10D20ECC93E3E06082184786A +:10077000EBCDEE01EB23233C10F63E1106081140B1 +:100780000021C278EBCDEE01EB193C10F7C92178BE +:10079000C1060836002310FBC921211911377A0E32 +:1007A00006CD4602C911D578210D19010A00CD46A2 +:1007B000021175790E0ACD4602C911B87A214E1977 +:1007C000010500CD4602C92162C1CB863100C83E79 +:1007D0005521008077BE200831FF832161C1CBFE07 +:1007E000FBAF3241C1CDA507210000111D78CD56C8 +:1007F0000D2160C1CB86CD8E07CD600DCDB90D2109 +:10080000A514060CCD6913CDD801CD3B0E21491995 +:1008100011777A010500CD4602CDBA072149191199 +:1008200017780E05CD4602CD99073A61C107300908 +:1008300021111011BA7ACD560DAF11DE78CDEE012F +:10084000117E79CDEE01216419117B790E03CD461D +:1008500002CD7E0E3A61C1073A73C1DA6808FE0C18 +:1008600038EFFE1430EB1810FE0C38E5FE1630E1C0 +:10087000FE1520043E0A1802D60B3274C1F6101180 +:100880001D78CDEE01FE1A2009211110111D78CD21 +:10089000560DCD9216CDD801CD5C0E2139191176A9 +:1008A0007A010800CD460221411911B67A010800EB +:1008B000CD4602CD7E0E3A73C1FE152823FE1420CC +:1008C000F221FF012263C111D5782117190105001A +:1008D000CD4602210D191175790E05CD4602180677 +:1008E0002101FF2263C1CD9216CDD801CD3B0ECDA3 +:1008F000D50D3A63C13DCA3A0A2160C1CB56C295B3 +:100900000CCB46C23E07CB4E2002CB9ECD3B0EDD2C +:100910002180C0CD031DB72031CD700ECAC40BCDD0 +:10092000EE1C11767A010700CD460211367A0E07C9 +:10093000CD460211B77A0E06CDF31CCDA416CD7E9E +:100940000EE63FFE0420F7C33A0A3E013265C1219C +:1009500063C1460528043C3265C13A60C1F62032C5 +:1009600060C1CDD01CCD431121961911787A0105B3 +:1009700000CD4602CD9907CDD41C2100002269C1CB +:10098000CD7E0E3A74C1FE043A73C1301F2160C19E +:10099000CB4E2018FE1420082160C1CB76CA0F1060 +:1009A000FE1520082160C1CB7ECAC50FF5CD660FAC +:1009B0003E05CDE016F1E63FFE0420C4CD850EB71E +:1009C00020093A60C10730173A72C1FE0A38103266 +:1009D0006BC13297C0DD2180C0CD061DB72031CD5F +:1009E0003B0E21531911757A010A00CD46022100F0 +:1009F000002269C1212880CD95163E19CDE016CD83 +:100A0000D8013E3CCDE016CD4311CD3B0EC362096B +:100A10003A60C1F5E61F3260C1F107300E3A72C18B +:100A2000CDD116CD27173E03CDEE01CD6907CD3BC5 +:100A30000E3A70C13271C1CD040D2A60C1CB4DC2D6 +:100A4000B40BCB552811CB74CA950CCDF60C7E3265 +:100A500097C0326BC1180CCB452008CD3B0E2160EE +:100A6000C1CBDE3E013265C12163C1477E077838C4 +:100A7000043C3265C13A60C1CB57C23D0B0F301107 +:100A80003E10CDE016DD2180C0CD3E173297C01854 +:100A9000733A74C10FE60FFE04200B3D328AC0C6C4 +:100AA000093283C01808328AC0C6083283C0C60320 +:100AB0003284C03A60C1CB57C23D0B2AB2C07CB56C +:100AC000280511587A180F21711911357A010A0079 +:100AD000CD460211787A217B19010300CD4602210F +:100AE0007E1911B67A0E08CD4602DD2180C0CD43B5 +:100AF000113E09CDE0163A74C13D2884F3CDDD1CCA +:100B0000FBDD70193A97C0326BC13A6BC1B7202D2B +:100B1000CD700E28223A60C1E603C2F908CD3B0E23 +:100B2000215D1911967A010700CD4602CDA4163E2B +:100B300005CDE016C3F908CD3B0EC3C40BDD218003 +:100B4000C0CD0C1DCDCE16E57DF680E5CD7B0FE149 +:100B50007CF6C0CD7B0FE12269C13A61C1E6DF328C +:100B600061C1CD040DC3F9082162C1CB8E3100C82B +:100B7000FB21B9140608CD6913CDD80121261A111D +:100B8000DB78CD560D117B79CD560D3E2711DD78E2 +:100B9000CDEE01117D79CDEE012160C1CB86CBCEAA +:100BA000CBDE21FF012263C1CD600DCDB90DCD8E0D +:100BB00007C3EC08CD001DCD660E2160C17EEE0896 +:100BC00077C3F908CD3B0E21861911767A0107000B +:100BD000CD46023EFFCDE016CD940E3A60C1CB4724 +:100BE000C22A0CCB4FC2300CCDF1113A74C1FE09B0 +:100BF0002807E608203ACD3B0E11357A219B1901D2 +:100C00000A00CD460221AC1911777A010500CD46C4 +:100C10000221B11911B77A0E05CD4602CD7E0EFE26 +:100C2000142813FE1520F5C31406CDDE16C30000EC +:100C3000CDDE16C31406CD3B0E21EE1911767A01D6 +:100C40000800CD460211387A0E04CD4602CD7E0E44 +:100C5000E63FFE04280BFE0520F3AF3241C1C3A8D6 +:100C60000B2A63C1E52A60C1CBD5CBE5CB9DCBF484 +:100C70003A63C13C2804CBA5CBDD2260C1CD600D19 +:100C8000CDB90D2101FF2263C1CDD50D2100002278 +:100C9000B2C0C33A0A2161C1CBB6DD2180C0CD0309 +:100CA0001DB7200AF5CD091DC1B0201F182ECD7E1D +:100CB0000EE63FFE052825FE0420F32161C1CBF698 +:100CC0002BCB6620063A70C13271C1CD001DCD66B6 +:100CD0000E3A60C1EE183260C1C33A0AE12263C124 +:100CE00021000022B2C02160C1CB96CB66CAF908B0 +:100CF000CD001DC33A0A21A0C13A70C12CD60127EC +:100D0000B720F9C9CDF60C3A6BC177CD2911CDF3D7 +:100D1000163E1ECDE0162180C17EB7280DCD5F1195 +:100D2000CDF316CD011723C3190D2170C17EFE60CE +:100D30002804C6012777F5CD110EF1230672FE04B3 +:100D4000300605FE0220010578EBCDEE013A60C1C8 +:100D5000E605C0C33B0E7DCDEE017C13CDEE01C98F +:100D6000119578218D19010900CD4602AF115878EF +:100D7000CDEE0121116F115978CD560D21020222BD +:100D800066C13C3270C1111879210A190E03E5CDF4 +:100D90004602E111B8790E03CD460221C478060857 +:100DA00016083E03C5E5EBCDEE01EB232310F7015A +:100DB0004000E10915C120ECC93E01118A79CDEE50 +:100DC0000111CC79CDEE013C118C79CDEE0111CA27 +:100DD00079CDEE01C9CD0F1D21000022B2C0213511 +:100DE0003C3A63C13C280BED5FE6035F87835F16E7 +:100DF000001922B2C0AF32B4C03A64C13228C03246 +:100E000032C03A63C13229C03231C03E013270C1B2 +:100E1000C9215878F5E6F028060F0F0F0FCBE7EB46 +:100E2000CDEE01EB23F1E60FCBE7EBCDEE01EBC905 +:100E3000216FC1ED6F7E21B97A18D921157A060A82 +:100E400016073E00C5E5EBCD2C02D3BE0000001016 +:100E5000F9EB012000E10915C120E9C921557A0605 +:100E60000A1605C3420E2A63C17C656F2263C1C99D +:100E7000DD2180C0CD091DF5CD031DC1B0C9CDC098 +:100E8000013273C1C93A6AC1F507070747F18021EA +:100E900069C186C9CD081B2A66C1E501C4781192D3 +:100EA0007A3A60C10F38350F38323A63C13D282C89 +:100EB0003E023265C12166C17EB72007237EB7207E +:100EC0000E1846D6012777CD0E0F237EB72807D6FA +:100ED000012777CD340FC3101B3518D9233E0132BB +:100EE00065C12167C17EB720072B7EB7200E181978 +:100EF000D6012777CD0E0F2B7EB72807D60127778F +:100F0000CD340FCD1D1B3518D9E12266C1C93A7504 +:100F1000C1B7200CE521D0FF19EB0000000000E173 +:100F20003A65C1CDEE011B1BE5C5CDBC0FC1E13E4D +:100F300008C3E0163A75C1B7200DE5213000094D10 +:100F4000440000000000E13A65C1EE03D55059CDE0 +:100F5000EE01D10303E5C5CDA40FC1E118D1CD2C1D +:100F600002E3E3DBDEC9FE0CD8FE14380AFE18D813 +:100F7000FE20D0D6171804CBF7D60BF5CD6907F1B4 +:100F800011BA792160C1CB5E2803111A79CB772180 +:100F900069C12019E60F77C6191B1BCDEE013A6017 +:100FA000C1CB6FC821118DCD9516C3D80123E60F93 +:100FB00077F610CDEE013A60C1CB6FC8211480CD19 +:100FC0009516C3D801CD001DCD3B0E21A519117674 +:100FD0007A010700CD46023E02328AC0210000227B +:100FE000B2C0DD2180C0CDC61C78DD77193A97C02C +:100FF0003272C1CD001DCD04102160C1CBFECDD910 +:101000001CC3620921C5140608CD6913C3D8013A6F +:1010100071C1B7CA62092160C1CBF6CBE63A63C1A0 +:101020003D2002CBA621FF012263C1CDD50D217049 +:10103000C13A71C1BE2829CDF60C7E3297C0DD21A0 +:1010400080C0CD061D2170C17EC6012777DD2180BD +:10105000C0CD091DB728D7CD001DCD660EC32E10FB +:1010600021C478110AC00108081AB728153A60C1CE +:10107000E6101A20163D2816EB3E01CDEE01EBC31B +:101080009510EB3E03CDEE01EB180A3D28EAEB3E4E +:1010900002CDEE01EB23231310CF13D5113000192D +:1010A000D10D060820C321FF012263C13A60C1CBE4 +:1010B0006720032101FF2263C13A60C1073011CDCF +:1010C000B13FB7280BCDD116CD27173E03CDEE018A +:1010D00021000022B2C0CDE7102160C1CBBE3A7022 +:1010E000C1CD360DC36209210000110AC006080EE9 +:1010F000081A3D202B3A63C13D28077CC6012767AB +:1011000018057DC601276F130D20E61310E1226636 +:10111000C1CD16171ACD140E3CCD16171AC3140ED6 +:10112000FEFF28E33A64C118CFCD24173A65C1CD3C +:10113000EE0121118DCD9516CDD8013E05CDE016DD +:10114000C3D8012160C1AFCB5E210A190103002879 +:1011500007111879CD4602C911B879CD4602C9E503 +:101160007E326BC1CDD116CD27173E03CDEE016285 +:101170006BE1E5D5CDCE16444D2130201100100D88 +:10118000280419C37F1111100005280419C38911FF +:10119000227CC12278C11E04217BC13A65C13D2059 +:1011A00007360F1936011805360119360F3E0706A6 +:1011B0000721E311F5327AC1C607327EC17ED37FA3 +:1011C000237ED37F3E91D37F233E04CDE016F13DB5 +:1011D00010E2CDD801CD8E07E13A65C1EBCDEE012D +:1011E000EBE1C983158D178B1A8D1780148D11862D +:1011F0000D2166C13A63C13D20032167C13A70C128 +:10120000C6034FAF475F567BB930097AB7280BD674 +:101210000127577B0491275F18ED78FE32200821C3 +:10122000C6193E02F51841FE21300821D4193E01AD +:10123000F51835FE3A300821CD193E02F518293A45 +:1012400074C1FE0578300CFE57300C21BF193E03E7 +:10125000F51815FE4C18F221B61911757A0109001E +:10126000CD46023E04F5180911767A010700CD46F5 +:10127000022167C11166C13A63C13D2001EB1A1119 +:1012800021140640963025118D140610EBCD6913FC +:10129000CDD8013EFFCDE016CD3B0E3A74C147F1EB +:1012A000110400213D133D280B2318FA21C813CD4A +:1012B000891318DC1910FD7EFE30306FF5E61F1122 +:1012C000B87ACDEE0121DB1911357A010A00CD463D +:1012D0000211777A0E05CD4602C3A01C300711B962 +:1012E0007ACD301B003EFFCDE0160000000000F17B +:1012F000CB6FC83A74C1FE09C8E608C8CD3B0E21C1 +:10130000FA1911567ACDB01C000011967ACDB61C90 +:10131000003A74C1FE0A20083E1211977ACDEE0100 +:10132000CD0410CD0410C3C01C18BAC3A71C11B93A +:101330007ACD560D21270011BB7ACD560DF1C3BCD5 +:101340001219171514181615131716141317161447 +:1013500012171514121615123116141131151431F5 +:101360003214133233141233341162160E037EB763 +:101370002809116216D37F237ED37F231AD37F13CC +:10138000CDBD160D20F610E4C9DD216216FD217ACF +:10139000160E037EB7280AD37F237ED37FDD21621A +:1013A00016231AB7280AD37F131AD37FFD217A1682 +:1013B00013FD7E00D37FDD7E00D37FDD23FD23CDB3 +:1013C000C3160D20EC10CAC98D1100000083150052 +:1013D0000080148D110000008B1A0000008D17830F +:1013E0001580148D118014008315008D17000000E6 +:1013F00000000000831580148D118E0F8D11008D5B +:101400001100860D0000008D110000008014008383 +:1014100015008D1700008B1A8B1A000000000000C9 +:1014200000A315000000AB1A0000AD17AD11A01409 +:10143000A315AD17AB1AAD17A315A014AD11AD11BF +:10144000AD11AD11AD1700AB1A00AD17AB1AAD174A +:10145000A315AD17AB1AA41CAC1FAB1AAD17A3157F +:10146000A014AD1700AD1700A60DA20EAE0FAD1162 +:10147000AD11AE0FA20EA60DAE0F00AD1100A0145F +:101480000000A315A31500000000000000860D0059 +:1014900000008E0F8D11801483158D178B1A00009C +:1014A000000000860D8B1A801483158D178D118313 +:1014B000158C1F860D000000008B1A83158D118678 +:1014C0000D000000008E0B820E8E0B820E8E0B82A2 +:1014D0000E00008E12008E12008D11008E0F008EF5 +:1014E0000F008D11008E12008315008D17008D17CF +:1014F000008315008E12008E1200008315831500E4 +:1015000000008E12008E12008D11008E0F008E0FC3 +:10151000008D11008E12008315008D17008D1700AD +:101520008315008E1200831500008D178D170000A3 +:10153000008315008315008E12008D17008315009F +:101540008E128D118E12008D17008315008E128D54 +:10155000118E12008315008D17008315008C1F005B +:101560008E120000008E12008D11008E0F008E0F63 +:10157000008D11008E12008D1183158D17008D17AF +:10158000008315008E1200831500008D178D170043 +:101590000000AA2F00AA2F00AA2F00A632A938A85F +:1015A0003FA938A632AA2FA62AAC25AA23A62AAC80 +:1015B0001F00AC1F00AC1F00AC1F00AC1F0000A838 +:1015C0003FA83F00A938A632AA2F00AA2F00AA2FB1 +:1015D00000A632A938A83FA938A632AA2FA62AAC5D +:1015E00025AA23A62AAC1F00AC1F00AC1F00AC1F0D +:1015F00000AC1F00A83F00AA2F00AC1F000000ACE9 +:101600001F00AC1F0000A83FAC1FA62AAA2FA632BD +:10161000AA2F0000AC1FAC1F00AC1F00AF1D00AC18 +:101620002500A41C00A63200AC1F00A83F00AA2F72 +:1016300000AA2F00AD1700A319A41CAC1FA938A63F +:1016400032AA2FA62AAC25AA23A62AAC2500AA2FA7 +:1016500000A83F00A83F00AC1F00A83F00AA2F0031 +:101660000000919293939494959596969797989855 +:10167000999A9A9B9B9C9D9D9E9EB3B3B4B4B5B51D +:10168000B6B6B7B8B8B9B9BABABBBBBCBCBDBDBEBB +:10169000BEBF210D867CD37F7DD37F3E91D37F2635 +:1016A00009E5182321118DCD95163E04CDE01621B4 +:1016B0001583CD95163E10CDE016C3D801E5210067 +:1016C000121804E52180142B7CB520FBE1C93A6B8C +:1016D000C1010009B83804900C18F96F61C93EFFC8 +:1016E000326CC1E52161C17EF61077CB5E28FCCB60 +:1016F0009EE1C9E5CD12171AC6012712CD140EE1DD +:10170000C9E5CD0B171AD601C3FA163A65C1FE0218 +:1017100018043A65C13D1167C1219C78C81166C1A2 +:10172000219778C9CDCE161182787DB7280513137D +:101730003D18F87C214000B7C819EB3D18F63A6017 +:10174000C10F38153A70C1FE35380E21000022B2A3 +:10175000C03E01328AC0C3FC0ACDA217CDDF2620CD +:10176000227DFE0AC8FE11C8FE49C8FE50C8E5C564 +:1017700021C517060CBE28262310FAC1E10CDD7521 +:1017800000DD232C10D6CDAD17B7C0CDA217CDDF0D +:101790002620060CDD7500DD232C10F2180FC1E1A8 +:1017A00018E1DD2180C1210AC0010047C979A7C81D +:1017B000DD360000ED5FE61F9130FD812180C15FC5 +:1017C0001600197EC90B101314191A404146474AD6 +:1017D0004FF3D5E5C5F5216EC1353A61C1CB672818 +:1017E0000B216CC1352005F6083261C12178C11189 +:1017F000005C010800CD46023A60C10F300D216245 +:10180000C1CB46C2C707CB4EC2680B3A6EC1E607D2 +:1018100020163A6DC1EE01326DC13A60C1CB6FF551 +:10182000C42E18F107DC7618F1C1E1D1FBC93A6981 +:10183000C121827847E5B7281A23233D20FBEB21FD +:101840006DC1CB462006AFCD401B18073E3D80CD75 +:10185000EE01EBE13A6AC1B7C811400047193D20DB +:10186000FCEB216DC1CB462005AFCDEE01C93E108A +:1018700080CDEE01EBC93A72C1CDD116CD2717004C +:10188000216DC1CB4620063E46CDEE01C93A65C169 +:10189000CDEE01C9E5F53AFDC12162C1FE04200289 +:1018A000CBC6FE052002CBCEF1E1C9040A0500003B +:1018B00019120F080A00965E0130400705060A0655 +:1018C0000A060A060A060A060A060A06040F060C93 +:1018D000060C060C060C060C060C060C060E3B3B12 +:1018E0003B3B3B3B3B3B3B3B6E00111918132D2C04 +:1018F0002E242E1D1A00282B222022271A252122D1 +:101900002D001A273200241E3235003B001B251AF9 +:101910001C24001C2826113021222D1E001C2826E4 +:10192000122C1E251E1C2D1A2E2D283737372C1150 +:10193000261A272E1A25372C121B251A1C24373756 +:101940003D3021222D1E37373C251E2F1E25113AF2 +:101950001800362D2B32001A201A222700291A2CA3 +:101960002C00353532282E001A2B1E21222D002C5A +:101970001128271E002628261E272D2728302D2136 +:101980002227242227202D211E001E271D1B340064 +:101990001200303400121A3A21003629251A32007A +:1019A0001B1A1C24362122272D003535321E2C37D8 +:1019B0003D272837373C1E311C1E25251E272D208C +:1019C00028281D0035351D2B1A300035351F1A22E9 +:1019D0002B0035352928282B00353532282E2B00B1 +:1019E0002C242225252B1A27242C3724322E2C1187 +:1019F00000282B002C12292E2C212C1E1C2B1E2DD6 +:101A00000035352F113B2D2C2E282600000000001C +:101A10000000003C7EFFFFFEFE7C300E3F7FFEFCA0 +:101A2000F8E000061E3C7870E0C00002060C18309A +:101A300060C000060C183060C080000E3860C080A6 +:101A40000000003040808000000000000000000125 +:101A50000102060000000103061C70000103060CD1 +:101A6000183060000103060C1830600003070E1EDA +:101A70003C786000071F3F7FFEFC700C3E7F7FFFBD +:101A8000FF7E3CFFFFFFFFFFFFFFFFFFFFFFFFFFAA +:101A9000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF56 +:101AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46 +:101AB000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF36 +:101AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF26 +:101AD000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16 +:101AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06 +:101AF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6 +:101B0000F5E5212500C330023E083275C1C39B0DA7 +:101B10002175C17EB7C2D90E3608C3D90E2175C151 +:101B20007EB7C03608C9FFFFFFFFFFFFFFFFFFFFC3 +:101B30000E04C34602FFFFFFFFFFFFFFFFFFFFFF93 +:101B40003E03C3EE01FFFFFFFFFFFFFFFFFFFFFFAD +:101B5000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95 +:101B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85 +:101B7000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75 +:101B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65 +:101B9000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55 +:101BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45 +:101BB000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF35 +:101BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF25 +:101BD000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15 +:101BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05 +:101BF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5 +:101C0000E3E3D3BE23C9FFFFFFFFFFFFFFFFFFFF9B +:101C1000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4 +:101C2000CD801C2276C10000002162C1CBEECD1216 +:101C30001D2162C1CBAEC3000BFFFFFFFFFFFFFF03 +:101C40002162C1CB6E2006CDF1C1C343002176C114 +:101C500035C24A002335C24A00CD901CE57E6FCDC7 +:101C600054477DE128032C18F33297C03100C8C3D4 +:101C7000311C00001CFFFFFFFFFFFFFFFFFFFFFF06 +:101C80002100C01100C5015B00EDB0210016C9FFA5 +:101C90002100C51100C0015B00EDB021C0C0C9FF2B +:101CA000F1F5FE30C3DC12F5211D1AC32E13FFFF20 +:101CB000010900C34602010800C34602FFFFFFFFFF +:101CC000CD0410C3DE16F3CD121DFBC9FFFFFFFFCD +:101CD000F3C36907CDBA07FBC9F3C33B0E2100303C +:101CE0002276C1C3121D2A76C12B2276C17CF32134 +:101CF0005D19C9CD4602FBC9FFFFFFFFFFFFFFFFD4 +:101D0000C30429C3AD27C32E28C39427C3C627C342 +:101D1000DF28C3381DC30000C3DF28C304292135D1 +:101D20003C22B2C0AF32B4C0C9DD2180C0DD361C58 +:101D300080DD361600C34F2EDD2180C02AB2C07C64 +:101D4000B5281B7E235E2356ED53B2C0CB7F2805FA +:101D500032B4C018E3CD9A283297C00600C9CD949A +:101D600027C83DC821F92C1100C2010001EDB0DDEA +:101D7000361300DD362C0021C0C0FD21BC2C5406DA +:101D80003CFD7E005F1AA72005732CDD3413FD2374 +:101D900010EF3600210AC00180487EFE55280281DE +:101DA0004F2310F6DD71153A87C0329BC03A88C0C8 +:101DB000329AC03A90C032B1C0DD362B02DD361CFB +:101DC00080DD361600CD4F2EED44329CC03A93C0D4 +:101DD00001C13FE52160C1CB7EE12010FE0B385CE4 +:101DE000DDBE03DA4A1EDDBE04DA431E1601DD5EE7 +:101DF0000ADDBE053016E52160C1CB7EE1200D1C59 +:101E0000DD3531DDBE0630041CDD353193ED44C6D1 +:101E10004032B5C0DD7313DD7314DD7216AF32AC22 +:101E2000C032ABC001C13FCD511E7A3297C0A7C0AE +:101E30004878DD9609DD9609470C18EBCD1F2BDDA0 +:101E40007217C901817FDD361602CD6A2ADD72174D +:101E5000C93A93C0D603DACC1EFD210000FD39CD6E +:101E60001729A7284F210000393AB1C0DD9614DDAB +:101E70008613F2761EAF3C57F1A728061520F9F11C +:101E80005AD5F91600E178DD961BDD9613BC30209B +:101E90005DCD1821C5D5FDE5DD361101CD8B1FFDCA +:101EA000E1D1C1CDC826B838DC28DA4753B938D5D6 +:101EB000FDF978C9FDF9DD361100DDCB1246C28B84 +:101EC0001F3A95C0FE803E40D03EC0C93A93C0A79D +:101ED0002039C5CD4F2EC1DD5E281D2012DD361301 +:101EE00001DD3435CDCC1EDD3535DD361300C91DA1 +:101EF000C0DD362B01DD361301DD3435CDCC1EDDE2 +:101F00003535DD361300DD362B00C91600DD7211C4 +:101F1000FD21BFC0FD23FD7E00A7CA731F6F26C031 +:101F2000CB4620F05DCD182128EADDCB2C462021C0 +:101F30003A93C0A7281BC5D5FDE5DD362B02CDF9A8 +:101F40002DDD362B00FDE1D1C1DD861B3803B8380D +:101F50000FC5D5FDE5DD361101CD0720FDE1D1C16D +:101F6000DD361101CDC826B8C3903F004753B9DA1A +:101F7000141FC978DDCB1146C0DDCB1246C2072045 +:101F80003A95C0FE803E40D83EC0C93A93C0D603C1 +:101F9000DA0720FD210000FD39CD8529A7284C2135 +:101FA0000000393A93C0DD9614DD8631F2B01FAFE0 +:101FB0003C57F1A728061520F9F15AD5F9E179DD4A +:101FC000861BDD8613D60225BC381CCD0023C5FD3B +:101FD000E5DD361201CD511EFDE1C1CDC326B9307C +:101FE000DC4FB8280230D6FDF979C9FDF9DD36128B +:101FF00000DDCB1146C2511E3A95C0FE803E40D84E +:102000003EC0C9DD362B013A93C0A72035C5CDF9B6 +:102010002DC1DD5E281D2012DD361301DD3435CDE6 +:102020000720DD3535DD361300C91DC0DD3613014F +:10203000DD3435CD0320DD3535DD361300DD362BBF +:1020400000C9DD361200FD21BFC0FD23FD7E00A7C3 +:10205000CAA2206F26C0CB4620F0CD002328EBDD9E +:10206000CB2C46201F3A93C0A72819C5FDE5DD36C5 +:102070002B02CD4F2EDD362B00FDE1C1DD961B3846 +:1020800003B9300DC5FDE5DD361201CDCC1EFDE1F5 +:10209000C1DD361201CDC326B930AF4FB8D8C8C3A1 +:1020A0004A2079DDCB1246C0DDCB1146C2CC1E3AA8 +:1020B00095C0FE803E40D83EC0C916F67B826F7E3A +:1020C0003CCC8B24147B826F7E3CCC8B241608C3C3 +:1020D000D42016F66B2D7E3C201406003D2D04BE48 +:1020E00028FB86200979804F2CE5360110FA7B8287 +:1020F0006F7E3CCC8B24147B826F7E3CCC8B24C3C4 +:10210000BA2116F77B826F7E3CCC8B24147B826FC6 +:102110007E3CCC8B24C365217DE1D95F6F0E002608 +:10212000C27EC6566FE916F67B826F7E3CCC8B244E +:10213000147B826F7E3CCC8B24147B826F7E3CCCE4 +:102140008B246B2D7E3C2013473D2D04BE28FB863F +:10215000200979804F2CE5360110FA16087B826F32 +:102160007E3CCC8B241609C390216B2D7E3C201421 +:1021700006003D2D04BE28FB86200979804F2CE502 +:10218000360110FA16F67B826F7E3CCC8B2416F754 +:102190006B2C7E3C2013473D2C04BE28FB86200977 +:1021A00079804F2DE5360110FA7B826F7E3CCC8B17 +:1021B00024147B826F7E3CCC8B24DD2180C079A7E8 +:1021C0002813DD35136B3601E5413A95C04FC580C4 +:1021D000803C3295C0D9E916F67B826F7E3CCC13E9 +:1021E00025147B826F7E3CCC13251608C3F1211683 +:1021F000F67B826F7E3CCC1325147B826F7E3CCCB9 +:1022000013256B2D7E3CCC4125C3892216F77B829A +:102210006F7E3CCC1325147B826F7E3CCC1325C390 +:1022200059225D26C20E007EC6836FE916F67B82B8 +:102230006F7E3CCC1325147B826F7E3CCC1325141F +:102240007B826F7E3CCC13256B2D7E3CCC412516CA +:10225000087B826F7E3CCC13251609C371226B2D3F +:102260007E3CCC412516F67B826F7E3CCC13251636 +:10227000F77B826F7E3CCC1325147B826F7E3CCC37 +:1022800013256B2C7E3CCC632579A728073A95C093 +:1022900081813CC96B3291C0DD8612C2F6233A952A +:1022A000C0C916F67B826F7E3DCCA725147B826F5A +:1022B0007E3DCCA7251608C3BC2216F66B2D7E3DAD +:1022C000201406003C2D04BE28FB86200979804F8F +:1022D0002CE536FF10FA7B826F7E3DCCA725147B60 +:1022E000826F7E3DCCA725C3A32316F77B826F7E2A +:1022F0003DCCA725147B826F7E3DCCA725C34D2303 +:102300007DE1D95F6F0E0026C27EC6B06FE916F67A +:102310007B826F7E3DCCA725147B826F7E3DCCA750 +:1023200025147B826F7E3DCCA7256B2D7E3D20132F +:10233000473C2D04BE28FB86200979804F2CE536CA +:10234000FF10FA16087B826F7E3DCCA7251609C3C5 +:1023500078236B2D7E3D201406003C2D04BE28FB07 +:1023600086200979804F2CE536FF10FA16F67B821D +:102370006F7E3DCCA72516F76B2C7E3D2014060002 +:102380003C2C04BE28FB86200979804F2DE536FFC2 +:1023900010FA7B826F7E3DCCA725147B826F7E3D39 +:1023A000CCA725DD2180C079A72813DD35136B3636 +:1023B000FFE5413A95C04FC590903D3295C0D9E9AF +:1023C00016F67B826F7E3DCC2F26147B826F7E3D7E +:1023D000CC2F261608C3DA2316F67B826F7E3DCCFF +:1023E0002F26147B826F7E3DCC2F266B2D7E3DCC1D +:1023F0005D26C35C245D26C20E007EC6DD6FE91635 +:10240000F67B826F7E3DCC2F26147B826F7E3DCC87 +:102410002F26147B826F7E3DCC2F266B2D7E3DCCEC +:102420005D2616087B826F7E3DCC2F261609C3449D +:10243000246B2D7E3DCC5D2616F67B826F7E3DCCD7 +:102440002F2616F77B826F7E3DCC2F26147B826F62 +:102450007E3DCC2F266B2C7E3DCC7F2679A728078E +:102460003A95C091913DC96B3292C0DD8611C2236D +:10247000223A95C0C916F77B826F7E3DCC2F261479 +:102480007B826F7E3DCC2F26C32C247D826F7E3CC9 +:1024900020247D826F7E3C20257D826F7E3C20271C +:1024A0007D826F7E3C202A7D826F7E3C202E7D8245 +:1024B0006F7E3DC01831FE02C00CDDE1184DFE02FA +:1024C000C00C0CDDE1183EFE02C00C0C0CDDE11866 +:1024D0002EFE02C079C6044FDDE1181DFE02C07950 +:1024E000C6054FDDE1180C79C6064FDDE17D926F20 +:1024F000E536017D926FE536017D926FE536017D0F +:10250000926FE536017D926FE536017D926FE5367B +:1025100001DDE97D826F7E3C206B7D826F7E3C20F9 +:10252000697D826F7E3C20687D826F7E3C20687D65 +:10253000826F7E3C20697D826F7E3DC079C6064FEA +:10254000C92D7E3C203F2D7E3C203F2D7E3C2040EF +:102550002D7E3C20422D7E3C20452D7E3DC079C6FF +:10256000064FC92C7E3C201D2C7E3C201D2C7E3C21 +:10257000201E2C7E3C20202C7E3C20232C7E3DC027 +:1025800079C6064FC9FE02C00CC9FE02C00C0CC9B8 +:10259000FE02C00C0C0CC9FE02C079C6044FC9FE75 +:1025A00002C079C6054FC97D826F7E3D20247D82A1 +:1025B0006F7E3D20257D826F7E3D20277D826F7E50 +:1025C0003D202A7D826F7E3D202E7D826F7E3CC025 +:1025D0001831C602C00CDDE1184DC602C00C0CDD7E +:1025E000E1183EC602C00C0C0CDDE1182EC602C07C +:1025F00079C6044FDDE1181DC602C079C6054FDD5E +:10260000E1180C79C6064FDDE17D926FE536FF7D5E +:10261000926FE536FF7D926FE536FF7D926FE5366E +:10262000FF7D926FE536FF7D926FE536FFDDE97D38 +:10263000826F7E3D206B7D826F7E3D20697D826F43 +:102640007E3D20687D826F7E3D20687D826F7E3D6D +:1026500020697D826F7E3CC079C6064FC92D7E3DC4 +:10266000203F2D7E3D203F2D7E3D20402D7E3D2074 +:10267000422D7E3D20452D7E3CC079C6064FC92C9B +:102680007E3D201D2C7E3D201D2C7E3D201E2C7E5F +:102690003D20202C7E3D20232C7E3CC079C6064F59 +:1026A000C9C602C00CC9C602C00C0CC9C602C00C07 +:1026B0000C0CC9C602C079C6044FC9C602C079C68F +:1026C000054FC9083E011803083EFFD9D1C1E1DD1D +:1026D00071153600E17710FCDD3413D5D908C97EB9 +:1026E000A7C0C5D5E55D0EFF512D7E3CCC32271627 +:1026F000016B2C7E3CCC322716F67B826F477E3CEA +:10270000CC32271404687E3CCC32271404687E3C0B +:10271000CC322716087B826F477E3CCC32271404CC +:10272000687E3CCC32271404687E3CCC3227E1D151 +:10273000C1C97D826F7EB928F981C0E1E1D1C1C9EB +:102740007EA7C0C5D5E55D0E0116FF2D7E3DCC32BE +:102750002716016B2C7E3DCC322716F67B826F4705 +:102760007E3DCC32271404687E3DCC3227140468A9 +:102770007E3DCC322716087B826F477E3DCC3227C8 +:102780001404687E3DCC32271404687E3DCC322789 +:10279000E1D1C1C9DD361700210AC0010047CDDFF4 +:1027A0002620040CDD75172C10F479A7C9DD361727 +:1027B00000210AC0010047CD402720040CDD751719 +:1027C0002C10F479A7C9FD2180C1210AC0DD6E1744 +:1027D0005D0E007EA7202816F6CD0A2816F7CD0A32 +:1027E0002816F8CD0A2816FFCD0A281601CD0A288A +:1027F0001608CD0A281609CD0A28160ACD0A28FD82 +:1028000036000079A7C86B3601C906007B826F7E4F +:102810003CC07D826F047E3C28F83DC83DC0798075 +:102820004F7D926F3601FD7500FD2310F4C9FD2127 +:1028300080C1210AC0DD6E175D0E007EA72028161C +:10284000F6CDBB2816F7CDBB2816F8CDBB2816FF52 +:10285000CDBB281601CDBB281608CDBB281609CD47 +:10286000BB28160ACDBB28FD36000079A7C86B36F9 +:10287000FFF5CD7728F1C92AB2C07CB5C87BCD9AC7 +:10288000285F7EA7280D234E234623BB20F4ED436B +:10289000B2C0C921000022B2C0C9DDCB3446280431 +:1028A000D65AED44DDCB344EC8D90EFF0CD60930D4 +:1028B000FBC609478787878081D9C906007B826F5D +:1028C0007E3DC07D826F047E3D28F83CC83CC079C7 +:1028D000804F7D926F36FFFD7500FD2310F4C9DD3A +:1028E0002180C02100C01101C0015B003655EDB050 +:1028F000210AC00E08060836002C10FB2C0D20F50E +:10290000CD1E1DC9210AC00E0806087EED44772C95 +:1029100010F92C0D20F3C9C5DD4616DD4E13C5FD9B +:10292000E5ED73ADC078A73E01280F79D602CB4004 +:102930002002D608FE0338023E033293C0FD21BFB9 +:10294000C0210000E5FD23FD7E00A7CAF22926C0B4 +:102950006FCB4620F05DCD182128EAD5FDE53E017C +:102960003291C032ABC032ACC001C040CD0720DDD7 +:10297000362C00DD362B00FDE1E1CDC82667E5CD24 +:10298000112AC34529C5DD4616DD4E13C5FDE5ED0B +:1029900073ADC078A73E01280F79D602CB40200244 +:1029A000D608FE0338023E033293C0FD21BFC0218A +:1029B0000000E5FD23FD7E00A7283726C06FCB462B +:1029C00020F15DCD002328EBD5FDE53E013292C01C +:1029D00032ABC032ACC001C040CDCC1EDD362C00C5 +:1029E000DD362B00FDE1E1CDC32667E5CD212AC30D +:1029F000B32921000039EB2AADC0F9A7ED527DCBF8 +:102A00003F3DEBFDE1C1DD7016DD7113C1D1F9EB86 +:102A1000E921000039D1D1C17AB83018D5C5D11813 +:102A2000F521000039D1D1C178A72808BA3005D5E1 +:102A3000C5D118F2F9C9FD21BFC011000026C0FDA3 +:102A400023FD7E00A7C86FCDDF2620F3145D18EFAD +:102A5000FD21BFC011000026C0FD23FD7E00A7C8D8 +:102A60006FCD402720F3145D18EF3A93C0FE0BDAC8 +:102A7000562BCD362A15283714283FFD210000FD9E +:102A800039CD17291A57E17CA728205DCD1821C51B +:102A9000D5FDE5DD361101CDC62AFDE1D1C1CDC898 +:102AA00026B838E228E04753B938DBFDF978C96B1E +:102AB000CD1821CDC62ACDC826C93A95C0DDCB1286 +:102AC00046C8DD3611003A93C0FE0BDAAD2BCD506F +:102AD0002A152831142839FD210000FD39CD85291A +:102AE000E17CA7281CCD0023C5FDE5DD361201CD14 +:102AF0006A2AFDE1C1CDC326B930E54FB8280230BE +:102B0000DFFDF979C96BCD0023CD6A2ACDC326C973 +:102B1000DD7E15DDCB1146C8DD361200C36A2AFD05 +:102B200021BFC01600FD23FD7E00A7C86F26C0CBC5 +:102B30004620F25DCD182128ECC5D5FDE5DD361126 +:102B400001CDAD2BFDE1D1C1CDC826B838D728D5F0 +:102B50004753B938D0C93A93C03D2842DD361100F9 +:102B600011BFC0131AA728266F26C0CB4620F4CD6C +:102B7000182128EFC5D5DD361101CDAD2BDD36117D +:102B800001D1C1CDC826B838DA47B938D6C978DD01 +:102B9000CB1146C0DDCB124620133A95C0C921BFE8 +:102BA000C016C0235E1AA720FAEBC322223A93C0B4 +:102BB0003D2845DD36120011BFC0131AA728286F23 +:102BC00026C0CB4620F4CD002328EFC5D5DD361234 +:102BD00001CD562BDD361201D1C1CDC326B930DA75 +:102BE0004FB8D8C8C3BA2B79DDCB1246C0DDCB11A4 +:102BF00046C2562B3A95C0C921BFC016C0235E1AE3 +:102C0000A720FAEBC3F5233A93C0A72840DD36117D +:102C10000011BFC0131AA728266F26C0CB4620F488 +:102C2000CD182128EFC5D5DD361101CD742CDD3648 +:102C30001101D1C1CDC826B838DA47B938D6C9781C +:102C4000DDCB1146C0DDCB1246202918193AB5C09C +:102C5000DD96134F3A95C0D68047B93EC0C87980FB +:102C60003E40C83E80C93A95C0FE803E40D83EC036 +:102C7000C03E80C93A93C0A728D3DD36120011BFE9 +:102C8000C0131AA728276F26C0CB4620F4CD0023F7 +:102C900028EFC5D5DD361201CD072CDD361201D166 +:102CA000C1CDC326B930DA4FB8D8C818D479DDCB36 +:102CB0001246C0DDCB1146C2072C18AA0A11495092 +:102CC0000C0F1C23373E4B4E0D0E252E2C354C4D34 +:102CD0001F2027302A333A3B1E21393C1617262F56 +:102CE0002B34434415181D22383D42450B10131A4E +:102CF00040474A4F141941460026C0C3752426C0D8 +:102D0000C3C0230A0A050505050F0F000A0A0505B9 +:102D100005050F0F002323000000002828002323AF +:102D200000000000282800232300000000282800BD +:102D30002323000000002828001919141414141E5D +:102D40001E001919141414141E1E00EE013A6026F8 +:102D5000C0C3262126C0C3422126C0C3652126C088 +:102D6000C3CD2026C0C36A2126C0C38E2126C0C37E +:102D7000D22026C0C3022126C0C3BA2026C0C32C3D +:102D80002226C0C3482226C0C3592226C0C3EA2136 +:102D900026C0C35E2226C0C36F2226C0C3EF2126F1 +:102DA000C0C30C2226C0C3D72126C0C30E2326C011 +:102DB000C32A2326C0C34D2326C0C3B52226C0C3C1 +:102DC000522326C0C3762326C0C3BA2226C0C3EA34 +:102DD0002226C0C3A22226C0C3FF2326C0C31B24B1 +:102DE00026C0C32C2426C0C3D32326C0C331242627 +:102DF000C0C3422426C0C3D823DD3618FFDDCB165E +:102E000046CAA22E210AC006471100004A7E3D2074 +:102E100004140C1806C60220021C0C2310EF7A5171 +:102E20002E0101C040FE0738097B2C01C080FE0343 +:102E300030703A93C0F57D3293C08232B5C0CD7404 +:102E40002C08F13293C008FE40C8FEC0C81853DDFC +:102E5000361801DDCB16462849210AC00647110065 +:102E6000004A7E3D2004140C1806C60220021C0CE9 +:102E70002310EF7B592E0101C040FE0738097A2C40 +:102E8000018040FE03301B3A93C0F57D3293C0832E +:102E900032B5C0CD072C08F13293C008FE40C8FE01 +:102EA000C0C8DD361980AF32A8C0676F229DC0222E +:102EB0009FC032A2C022A9C032AFC02100C31101FD +:102EC000C301000277EDB0210AC00E0806087EA7F4 +:102ED000CA6A2FC5E53D20481601CDD838D9E1C1D1 +:102EE0007BA7CA6A2F78FE0828203D281D79FE0896 +:102EF00028183D28157B825F3AA0C083C60132A006 +:102F0000C026C4CBFD73CBBD180726C4CBFD72CB46 +:102F1000BD26C336107AA7284D3601CBFD7718465B +:102F200016FFCDD838D9E1C17BA7283E78FE082806 +:102F3000203D281D79FE0828183D28157B825F3A20 +:102F40009EC083C601329EC026C4CBFD73CBBD1884 +:102F50000726C4CBFD72CBBD26C336207AA7CA662E +:102F60002F3604CBFD7726C0CBBD2C05C2CE2E2C30 +:102F70000DC2CC2E210AC00E0806087EA7C205315C +:102F8000CBD47ECBFDB6CB94CBBDA7CA0531C5E56E +:102F9000E5DD3422CD8E39E126C3DD2180C0D97C28 +:102FA000A7CA5330E67F672006DD341DC35330DDEA +:102FB0003429D93602D978E67FED44C61792CB2F53 +:102FC000F2C42FAFF5C60657CB782006CB3FCB3FD8 +:102FD0008257F1CB3FC603D92486D9FE0E38023E74 +:102FE0000E47AFCB38300182CB3FCB38300182CB9C +:102FF0003FCB38300182CB3FCB383001823CCB3FD6 +:10300000D977D957DD861D329DC07C060C3D28122C +:1030100006063D280D06043D2808053D28043D28E8 +:103020000105AFCB38300182CB3FCB38300182CBAA +:103030003FCB38300182CB3FCB38300182087CD97E +:10304000E547084F2160C016C45E1A81122C10F9A2 +:10305000E125D97DA7CA0331E67F6FC26430DD3434 +:103060001FC30331DD342AD9CBDED979E67FED44A5 +:10307000C61793CB2FF27930AFF5C60657CB792020 +:1030800006CB3FCB3F8257F1CB3FC603D90180012E +:103090000986D9FE0E38023E0E47AFCB383001828A +:1030A000CB3FCB38300182CB3FCB38300182CB3F96 +:1030B000CB383001823CCB3FD977D957DD861F32E0 +:1030C0009FC07D060C3D281206063D280D06043DD6 +:1030D0002808053D28043D280105AFCB3830018282 +:1030E000CB3FCB38300182CB3FCB38300182CB3F56 +:1030F000CB383001824F452170C016C45E1A811250 +:103100002C10F9E1C12C05C27B2F2C0DC2792F2187 +:103110000AC30E08D92600DD6E2054DD5E1E44CBA6 +:103120003CCB1DCB3ACB1BD906087EE60528195FA0 +:10313000247E25C605FE1A38023E1ACB43D94F28F5 +:1031400003091803EB09EBD92C10DF2C0D20D9D97A +:10315000CB3CCB1DCB3ACB1BDD7520DD731E26C0CF +:10316000DD5E2BCB4B201FDDCB187E28053AAAC095 +:1031700018033AA9C0D6023005DD362801C9B320AC +:1031800005DD362802C90600DD4E19C5CDD53BFD4B +:10319000E526C0DD3619801E0A010901CDFC311E6D +:1031A000110109FFCDFC311E4901F701CDFC311E93 +:1031B0005001F7FFCDFC31DD6E192600C109C109B0 +:1031C000E52A9FC03EFFCDC33AE52A9DC03E01CD12 +:1031D000C33AC1AFED426CDE0067C10916FFDD5E88 +:1031E0001C19EB26C07B1420033E41C91528033E61 +:1031F000BFC9FE4138F3FEC0D83EBFC96BE5D5C597 +:1032000050CD5137C1D1E1E5D5C551CD5137C1D1EF +:10321000E17EA7CA37353C3E00CAAF3332A1C0CDEC +:1032200036323AA3C0A7F8F5DD862F32AFC0F1DD04 +:1032300086193299C0C9DD7E0032A3C050C5D56B56 +:10324000E5CD4A32E1D1C1514842ED43A6C001006B +:1032500006247EFEFF20127D826F7EF6F0FEFF20A8 +:103260000410F425C925041826257B826F7E3C288E +:10327000273DCA0A33DD3621000C7D826F7E3D205A +:10328000040C10F6C93AA3C0818132A3C00E007E9F +:10329000A7200905C8C378330C7D826F7E3C2004CB +:1032A0000C10F6C93D201605C27833CDAE3AC2984F +:1032B000333AA3C08181DD860032A3C0C9DDCB21B2 +:1032C0004E3AA3C020089132A3C00E01181181818B +:1032D00032A3C00E0118087D826F7E3D20040C10C1 +:1032E000F6C9DDCB2146200DDDCB214E201705C8C8 +:1032F0000E00C378333AA3C0818132A3C078A7C837 +:103300000E00C3783305C8C378337D826F7EA7284B +:1033100061050E013C286A18037D826F7E3D2058AE +:103320000C10F6DDCB214E282E7D826F7EA7C0CDFE +:10333000AE3AC0DDCB21462014ED4BA6C07B806F9A +:10334000CDAE3ACB4F280606FFCDA033C03AA3C07E +:10335000DD960132A3C0C97B826FCDAE3ACB4FC898 +:10336000CB5F2805DDCB187EC03AA3C0C60732A3C9 +:10337000C0C90102047D826F7EA720050C10F618DB +:10338000173AA3C08132A3C00E017D826F7EA728A9 +:10339000040C10F6C90520E03AA3C08132A3C0C9CD +:1033A0007D816F7EB8C07D816F7EB828F980C9327B +:1033B000A1C0CDCB333AA3C0A7F0F5DD8619329971 +:1033C000C0F1ED44DD862F32AFC0C9AFDD960032CB +:1033D000A3C050C5D56BE5CDDE33E1D1C151ED437E +:1033E000A6C0010006247EFEFF20127D826F7EF6BD +:1033F000F0FEFF200410F425C925041826257B8241 +:103400006F7E3D28293CCAA134DD3621000C7D8227 +:103410006F7E3C20040C10F6C93AA3C0919132A3F0 +:10342000C00E007EA7200B0E0105C8C30F350C7D12 +:10343000826F7E3D20040C10F6C93C201605C20F99 +:1034400035CDAE3AC22F353AA3C09191DD96003208 +:10345000A3C0C9DDCB214E3AA3C020088132A3C04E +:103460000E011811919132A3C00E0118087D826FD0 +:103470007E3C20040C10F6C9DDCB2146200EDDCBAE +:10348000214EC29C3405C80E00C30F353AA3C0912B +:103490009132A3C078A7C80E00C30F3505C8C30F6B +:1034A000357D826F7EA72861050E013D286A1803CD +:1034B0007D826F7E3C20580C10F6DDCB214E282EED +:1034C0007D826F7EA7C0CDAE3AC0DDCB21462014F1 +:1034D000ED4BA6C07B806FCDAE3ACB5F28060601D0 +:1034E000CDA033C03AA3C0DD860132A3C0C97B8220 +:1034F0006FCDAE3ACB5FC8CB4F2805DDCB187EC869 +:103500003AA3C0D60732A3C0C90102047D826F7EF0 +:10351000A720050C10F618173AA3C09132A3C00ECD +:10352000017D826F7EA728040C10F6C90520E03AC1 +:10353000A3C09132A3C0C9E5FDE1D5110003FD1977 +:10354000D1DDCB184E2813FDCB005E3E03C2AF3356 +:10355000CD6C383E02CA1C321811FDCB004E3E0322 +:10356000C21C32CDA2383E02CAAF3378815783E500 +:10357000D5C5DD363001CD8935C1D1E1DD3630002C +:1035800050CD33365148C333366F7EA72845DD36DC +:1035900021023C2820CDCB333AA3C0A7F0ED4467ED +:1035A000DD6E0BCDB63A3A99C0943299C03AAFC0AD +:1035B0008432AFC0C9CD36323AA3C0A7F867DD6EFA +:1035C0000BCDB63A3A99C0843299C03AAFC0843232 +:1035D000AFC0C9E5CDAE3AE526C4CBFDE5FDE1E1DE +:1035E000CB4F2824DDCB3046200B7D826F7E3D28DB +:1035F000F9C6022013C5FD7E8047CB3890FD778049 +:103600003A9DC090329DC0C1E1CDAE3ACB5FC8DDDE +:10361000CB3046200A7D826F7E3C28F9FE02C0C571 +:10362000FD7E0047CB3890FD77003A9FC090329FD7 +:10363000C0C1C97B826F7EA7CAD335C506054F7D41 +:10364000826F7EB9201710F77D826F7EA72802C196 +:10365000C90CC12804DD3419C9DD3519C97D826F53 +:103660007EB928587D926FC53E0591919147CDAEA8 +:103670003AB8C1280AA72807FE0A20270520247D7A +:10368000E385E36F7EB928147D926F7EB9280D051E +:1036900028087D82826F7EB92802C1C9DD5602CB1F +:1036A0003A1808DD56021803DD56010CC13A99C0DC +:1036B0002805923299C0C9823299C0C97D926FE5BE +:1036C0007D826F7EB928F98120177D826F7E8128E7 +:1036D000F9B92006E1DD560218D1E1CB79284C1862 +:1036E00018E1CDAE3A28C1CB792832CB5F280ACB7E +:1036F0004F2815DDCB187E200F3E069087DD8619FA +:10370000DD86003299C0C1C978C1A7C83D280A3AF0 +:1037100099C0DD86023299C0C9DD3419C9CB4F2862 +:103720000ACB5F2817DDCB187E28113E069087ED67 +:1037300044DD8619DD96003299C0C1C978C1A7C899 +:103740003D280A3A99C0DD96023299C0C9DD351983 +:10375000C97AA7F806077EA728354F7D826F7EA716 +:10376000280310F7C905C87D826F7EA72817B920E6 +:1037700010793C2806DD351910E1C9DD341910DB5C +:10378000C94F10D7C97D926FCD01380E0118020EB6 +:10379000007D826F7EA720430D203BE57D926F2642 +:1037A000C34E24CB4928147ECB3FCB3F86CB3FCBA7 +:1037B0003F5F86773A9DC083329DC0CB592816CB98 +:1037C000FD7ECB3FCB3F86CB3FCB3F5F86773A9F9B +:1037D000C083329FC0E10E0110B7C94F78FE07CAFF +:1037E0005B3779F57D926FE57D826F7EA728034F69 +:1037F00010F6E3C5CD0138C1E1F14F78A7C8C36524 +:103800003726C37E240C2832FE0220107ECB3F4F89 +:1038100086773A9DC081329DC026C0C9CB5F2815EE +:10382000CBFD7ECB3FCB3F86CB3F4F7E91773A9F00 +:10383000C091329FC026C0CBBDC9CB4F28167ECBCE +:103840003FCB3F86CB3F4F7E91773A9DC091329DD3 +:10385000C026C0C9FE08200FCBFD7ECB3F4F867728 +:103860003A9FC081329FC026C0CBBDC9507B826FBA +:103870007E3CCC8838C8517B826F7E3CCC8838C86F +:10388000788157836F7E3CC07D826F7E3C28F9D65D +:1038900002C07D826F7E3D28F9CB47C87D826F7E56 +:1038A0003DC9507B826F7E3DCCBE38C8517B826F54 +:1038B0007E3DCCBE38C8788157836F7E3DC07D8207 +:1038C0006F7E3D28F9C602C07D826F7E3C28F9CB11 +:1038D00047C87D826F7E3CC9D9110000D95D2D7E1D +:1038E0006B2CA62025D91CD98620136B2D7EBA28D7 +:1038F000FB822016D914D96B2CE5180E2C7EBA2821 +:10390000FB822006D914D96B2DE5CB59204E0D280A +:103910004B4A16087B82477B926F7E68A6CC5F3944 +:1039200014047B926F7E68A6CC5F3914047B926F7F +:103930007E68A6CC5F39D97AD9A7C81180040D2832 +:10394000021E00470E0C3D280B0E063D28060E04F5 +:103950003D28010DE1197E817710F9C94A18D7D9A0 +:103960001CD98620196B7D926F7EB928F981C07BA6 +:10397000826FFDE1E5D914D9FDE97D826F7EB9281A +:10398000F981C07B926FFDE1E5D914D9FDE9D9DD5C +:103990002160C0DD360000FD2170C0FD3600002131 +:1039A0000000444C545CD95D2D7EFE55281216FF54 +:1039B000CD053A7B16F6826F7EFE55281CCD053A62 +:1039C0007B16F782476F7EFE55280ECD053A04140C +:1039D000687EFE55281BCD053A6B2C7EFE552811BE +:1039E0001601CD053A7B160A826F7EFE55C8CD05BD +:1039F0003A16097B826F477EFE55C8CD053A0568A9 +:103A00007EFE55C815A7201DD9040CD926C47EA753 +:103A1000CBFD7E26C0CBBDD9280304CBF8A7280355 +:103A20000CCBF9D9C90E003D2842D9CBFCD926C30D +:103A3000CBFD7E26C0CBBDA7C826C4CBFD4ECBBDDB +:103A400026C0DD7500181226C37EE624280926C488 +:103A5000CBFD79864FCBBD26C07D826F7E3C28E7AB +:103A6000D602C079D9825724D9DD23C9D9CBFDD953 +:103A700026C3CBFD7E26C0CBBDA7C826C4CBFD4E3A +:103A8000CBBD26C0FD7500181226C37EE61128099D +:103A900026C4CBFD79864FCBBD26C07D826F7E3D8F +:103AA00028E7C602C079D9835F2CD9FD23C926C374 +:103AB0007E26C0E60AC95D2E005506082930011988 +:103AC00010FAC9F5E5E52630CDB63AE32E30CDB68D +:103AD0003AD119E3CDB63A3E0FCD1B3BE109F1EDEA +:103AE0004B8CC0DD86182805A7ED421801097CFE25 +:103AF000F03003A72003210001E5DD6E0FCDB63ABB +:103B0000E33E08CD1B3B61DD6E0ECDB63AD1193ACE +:103B1000AFC087C8ED446FCDB63AC9E5FDE12100DD +:103B200000010000FD29ED6AFD29ED6ACB21CB10D3 +:103B3000595037CB13CB1203A7ED5230020B193D6E +:103B400020E2C97BE60F471801437EB9C0247EB04E +:103B500077257D826F18F37EA7283E4FCD493BFE27 +:103B600055C8A72834457D826F7EA7280EFE5520B4 +:103B7000F5684ECD493BFE5520F8C9687EFE55C814 +:103B8000A728164F457D826F7EB928F9A7280A68B5 +:103B9000FE5528B5CD433B18E47D826F7EA728F9FA +:103BA000FE55C84F457D826F7EB928F9A728EAFEE9 +:103BB0005520CA6818930E0918020E01210AC0E5A3 +:103BC000C5CD573BC1E106077D816FE5C5CD573BAC +:103BD000C1E110F4C9210AC1110BC101480036002E +:103BE000EDB0111101CDB63B112209CDBA3B114404 +:103BF0000ACDBA3B210AC00E09CDC63B118808CDBB +:103C0000BA3B0E09CDC63B2109C10648FD21000083 +:103C10002C7EFEFF200D257E24575FCB2AFD19FD4B +:103C200019180FF6F0FEFF2009257E24575FCB2AD6 +:103C3000FD1910DCC91F423C278D3E33943E3B9F4B +:103C40003E001E4C3C30013E207C3E0027613C3350 +:103C5000563C3B563C00165A3C00275E3C002F0069 +:103C600000206B3C30683C00826B3C2A753C16821D +:103C70003D3CE83D003A7C3C30693D003B973C3997 +:103C8000833C0033873C00218B3C00268F3C003C6A +:103C9000933C003000000026A13C332C3D304D3DCC +:103CA0000043AB3C39EF3C17293D002BAF3C0022D1 +:103CB000B93C21B63C0022000034BD3C0021C13C8F +:103CC0000017C83C33CB3C001600003CCF3C003D05 +:103CD000D33C0023D73C002CDB3C003EDF3C001AE9 +:103CE000E33C0017E73C0016EB3C000C0000002B07 +:103CF000F33C00221D3D21FA3C0033FE3C003C0514 +:103D00003D17113D0034093D00150D3D0016000022 +:103D10000016153D003D193D000E00000034213D08 +:103D20000021253D001700000018000021303D0053 +:103D30002B3A3D44373D003C0000223E3D004449C3 +:103D40003D34453D003C0000003C00000042513D38 +:103D50000033553D003C593D00435D3D004B613D06 +:103D60000045653D004E000000176D3D0033713D7C +:103D7000003B743D2B783D00347B3D217F3D001896 +:103D8000000026863D001DBC3D2A903D2FAB3D0026 +:103D900017943D0033983D003A9C3D0015A33D42E9 +:103DA000A73D00210000003B00000030AF3D003A7D +:103DB000B63D21B93D003900001500003AC03D0074 +:103DC00021C43D0018C83D000FCC3D0015D03D007A +:103DD0000CD43D002FD83D002ADC3D001CE03D0006 +:103DE00033E43D001700000026EC3D0021F63D16AF +:103DF000F33D001700002AFA3D0033FE3D002B0082 +:103E0000003A053E0020093E002A0D3E0039203EC2 +:103E1000335C3E16683E3B1D3E3C1D3E00270000C5 +:103E200027243E0016313E1E453E21593E33593E61 +:103E3000001E353E0021393E003B3D3E002B413EF9 +:103E4000002F00000018493E00434D3E0016513E31 +:103E5000003C553E001D0000003B000027603E0076 +:103E600016643E003B000000216C3E003B703E00AB +:103E700033743E003C783E00270000002A803E005C +:103E80001E873E308A3E003300002100001E913E16 +:103E9000001F613C3C983E003B9C3E0081613C3CE5 +:103EA000A33E00339C3E0038DC28DA4753B938D5AE +:103EB000FDF978C9FDF9DD361100DDCB1246C200EF +:103EC000403A95C0FE803E40D03EC0C93A93C0A75C +:103ED0002039C5CDC44EC1DD5E281D2012DD36134C +:103EE00001DD3435CDCC1EDD3535DD361300C91D81 +:103EF000C0DD362B01DD361301DD3435CDCC1EDDC2 +:103F00003535DD361300DD362B00C91600DD7211A4 +:103F1000FD21BFC0FD23FD7E00A7CA731F6F26C011 +:103F2000CB4620F05DCD8D4128EADDCB2C4620210B +:103F30003A93C0A7281BC5D5FDE5DD362B02CD6E13 +:103F40004EDD362B00FDE1D1C1DD861B3803B838CC +:103F50000FC5D5FDE5DD361101CD7C40FDE1D1C1B8 +:103F6000DD361101CD3D47B838AA28A84753B9DA44 +:103F7000141FC978DDCB1146C0DDCB1246C27C4090 +:103F80003A95C0FE803E40D83EC0C9FFFFFFFFFF0C +:103F9000F5E52A76C12B2276C17CB52009210100E6 +:103FA0002276C1E1F1C9E1F1DA141FCA141FC36C12 +:103FB0001F2160C1CBBE3A72C1C9FFCD6907FBC9E1 +:103FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01 +:103FD000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1 +:103FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 +:103FF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1 +:00000001FF diff --git a/Console_MiST/Sega - SG1000/rtl/sg1000_top.sv b/Console_MiST/Sega - SG1000/rtl/sg1000_top.sv index e7068837..df5973c0 100644 --- a/Console_MiST/Sega - SG1000/rtl/sg1000_top.sv +++ b/Console_MiST/Sega - SG1000/rtl/sg1000_top.sv @@ -1,13 +1,15 @@ module sg1000_top( input RESET_n, input sys_clk,//8 -input clk_vdp,//16 +input vdp_clk,//16 +input vid_clk,//64 +input pal, input pause, input ps2_kbd_clk, input ps2_kbd_data, -//input [7:0] Cart_Out, -//output [7:0] Cart_In, -//output [14:0] Cart_Addr, +input [7:0] Cart_In, +output [14:0] Cart_Addr, +output Cart_We, output [5:0] audio, output vblank, output hblank, @@ -16,6 +18,10 @@ output vga_vs, output [1:0] vga_r, output [1:0] vga_g, output [1:0] vga_b, +output [1:0] rgb_r, +output [1:0] rgb_g, +output [1:0] rgb_b, +output csync, input [5:0] Joy_A, input [5:0] Joy_B ); @@ -61,7 +67,7 @@ CPU ( ); wire [7:0]RAM_D_out; -/* + spram #( .widthad_a(11),//2k .width_a(8)) @@ -71,20 +77,12 @@ MRAM ( .data(D_out), .wren(~WR_n), .q(RAM_D_out) - );*/ - -RAM2K RAM2K( - .address(Addr[10:0]), - .clock(sys_clk), - .clken(~CS_WRAM_n), - .data(D_out), - .wren(~WR_n), - .q(RAM_D_out) ); wire CS_PSG_n = (~IORQ_n) & (Addr[7:6] == "01") ? 1'b0 : 1'b1; psg PSG ( .clk(sys_clk), + .CS_n(CS_PSG_n), .WR_n(WR_n), .D_in(D_out), .outputs(audio) @@ -94,12 +92,12 @@ wire [7:0]vdp_D_out; wire [8:0]x; wire [7:0]y; wire [5:0] color; -wire VDP_RD_n = (~IORQ_n & Addr[7:6] == "10") | RD_n ? 1'b0 : 1'b1; -wire VDP_WR_n = (~IORQ_n & Addr[7:6] == "10") | WR_n ? 1'b0 : 1'b1; +wire VDP_RD_n = (~IORQ_n) & (Addr[7:6] == "10") | RD_n ? 1'b0 : 1'b1; +wire VDP_WR_n = (~IORQ_n) & (Addr[7:6] == "10") | WR_n ? 1'b0 : 1'b1; vdp vdp ( .cpu_clk(sys_clk), - .vdp_clk(clk_vdp), + .vdp_clk(vdp_clk), .RD_n(VDP_RD_n), .WR_n(VDP_WR_n), .IRQ_n(IORQ_n), @@ -112,9 +110,9 @@ vdp vdp ( .hblank(hblank), .color(color) ); - + vga_video vga_video ( - .clk16(clk_vdp), + .clk16(vdp_clk), .x(x), .y(y), .vblank(vblank), @@ -126,9 +124,23 @@ vga_video vga_video ( .green(vga_g), .blue(vga_b) ); + /* +tv_video tv_video ( + .clk8(sys_clk), + .clk64(vid_clk), + .pal(pal), + .x(x), + .y(y), + .vblank(vblank), + .hblank(hblank), + .csync(csync), + .color(color), + .video({rgb_b,rgb_g,rgb_r}) + );*/ + wire [7:0]Joy_Out; -wire JOY_SEL_n = (~IORQ_n & Addr[7:6] == "11") | RD_n ? 1'b0 : 1'b1; +wire JOY_SEL_n = (~IORQ_n) & (Addr[7:6] == "11") | RD_n ? 1'b0 : 1'b1; wire CON; TTL74_257 IC18( .GN(JOY_SEL_n), @@ -164,7 +176,7 @@ TTL74_257 IC21( .Y1(Joy_Out[4]) ); -wire KB_SEL_n = (~IORQ_n & Addr[7:6] == "11") ? 1'b0 : 1'b1; +wire KB_SEL_n = (~IORQ_n) & (Addr[7:6] == "11") ? 1'b0 : 1'b1; wire [7:0]Kb_Out; keyboard keyboard( @@ -180,9 +192,9 @@ keyboard keyboard( .ps2_kbd_data(ps2_kbd_data) ); -wire EXM1_n = (~MREQ_n & Addr[15:14] == "10") ? 1'b0 : 1'b1; -wire EXM2_n = (~MREQ_n | Addr[15]) ? 1'b0 : 1'b1; -wire [7:0]Cart_Out; +wire EXM1_n = (~MREQ_n) & (Addr[15:14] == "10") ? 1'b0 : 1'b1; +wire EXM2_n = (~MREQ_n) | (Addr[15]) ? 1'b0 : 1'b1; +wire [7:0]Cart_Rom_Out, Cart_Ram_Out; cart cart( .DSRAM_n(DSRAM_n), @@ -194,17 +206,18 @@ cart cart( .CON(CON), .EXM2_n(EXM2_n), .M1_n, - .Addr(Addr[14:0]), - .Cart_Out(Cart_Out), + .Cart_Addr(Addr[14:0]), + .Cart_Rom_Out(Cart_Rom_Out), .Cart_Ram_Out(Cart_Ram_Out), - .Cart_In(D_out) + .Cart_In(Cart_In), + .Cart_We(Cart_We) ); +//todo always @(sys_clk) begin - - D_in <= ~CS_WRAM_n ? RAM_D_out : + D_in = ~CS_WRAM_n ? RAM_D_out : ~VDP_RD_n ? vdp_D_out : - ~EXM1_n ? Cart_Out : + ~EXM1_n ? Cart_Rom_Out : ~EXM2_n ? Cart_Ram_Out : ~JOY_SEL_n ? Joy_Out : ~KB_SEL_n ? Kb_Out : diff --git a/Console_MiST/Sega - SG1000/rtl/tv_video.vhd b/Console_MiST/Sega - SG1000/rtl/tv_video.vhd new file mode 100644 index 00000000..b75ce0d4 --- /dev/null +++ b/Console_MiST/Sega - SG1000/rtl/tv_video.vhd @@ -0,0 +1,121 @@ +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.NUMERIC_STD.ALL; + +entity tv_video is + Port ( + clk8: in STD_LOGIC; + clk64: in STD_LOGIC; + pal: in STD_LOGIC; + x: out unsigned(8 downto 0); + y: out unsigned(7 downto 0); + vblank: out STD_LOGIC; + hblank: out STD_LOGIC; + color: in STD_LOGIC_VECTOR(5 downto 0); + csync: out STD_LOGIC; + video: out STD_LOGIC_VECTOR(6 downto 1)); +end tv_video; + +architecture Behavioral of tv_video is + + component color_encoder is + Port ( + clk: in STD_LOGIC; + pal: in STD_LOGIC; + sync: in STD_LOGIC; + line_visible: in STD_LOGIC; + line_even: in STD_LOGIC; + color: in STD_LOGIC_VECTOR (5 downto 0); + outputs: out STD_LOGIC_VECTOR (5 downto 0)); + end component; + + signal hcount: unsigned(8 downto 0) := (others => '0'); + signal vcount: unsigned(8 downto 0) := (others => '0'); + signal y9: unsigned(8 downto 0); + + signal in_vbl: std_logic; + signal screen_sync: std_logic; + signal vbl_sync: std_logic; + + signal sync: std_logic; + signal line_visible: std_logic; + signal line_even: std_logic; + +begin + csync <= sync; + + process (clk8) + begin + if rising_edge(clk8) then + if hcount=507 then + hcount <= (others => '0'); + if vcount=261 then + vcount <= (others=>'0'); + else + vcount <= vcount + 1; + end if; + else + hcount <= hcount + 1; + end if; + end if; + end process; + + process (hcount) + begin + if hcount<38 then + screen_sync <= '0'; + else + screen_sync <= '1'; + end if; + end process; + + in_vbl <= '1' when vcount<9 else '0'; + + x <= hcount-166; + y9 <= vcount-40; + y <= y9(7 downto 0); + vblank <= '1' when hcount=0 and vcount=0 else '0'; + hblank <= '1' when hcount=0 else '0'; + line_visible <= not in_vbl; + line_even <= not vcount(0); + + process (vcount,hcount) + begin + if vcount<3 or (vcount>=6 and vcount<9) then + -- _^^^^^_^^^^^ : low pulse = 2.35us + if hcount<19 or (hcount>=254 and hcount<254+19) then + vbl_sync <= '0'; + else + vbl_sync <= '1'; + end if; + else + -- ____^^ : high pulse = 4.7us + if hcount<(254-38) or (hcount>=254 and hcount<508-38) then + vbl_sync <= '0'; + else + vbl_sync <= '1'; + end if; + end if; + end process; + + process (in_vbl,screen_sync,vbl_sync) + begin + if in_vbl='1' then + sync <= vbl_sync; + else + sync <= screen_sync; + end if; + end process; + + encode_inst: color_encoder + port map ( + clk => clk64, + pal => pal, + sync => sync, + line_visible => line_visible, + line_even => line_even, + color => color, + outputs => video); + +end Behavioral; + diff --git a/Console_MiST/Sega - SG1000/rtl/yuv_table.vhd b/Console_MiST/Sega - SG1000/rtl/yuv_table.vhd new file mode 100644 index 00000000..4279b9ac --- /dev/null +++ b/Console_MiST/Sega - SG1000/rtl/yuv_table.vhd @@ -0,0 +1,229 @@ +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; + +entity yuv_table is + Port (color : in std_logic_vector (5 downto 0); + y : out std_logic_vector (5 downto 0); + u : out std_logic_vector (5 downto 0); + v : out std_logic_vector (5 downto 0)); +end yuv_table; + +architecture Behavioral of yuv_table is +begin + + process (color) + begin + case color is + when "000000" => y <= "000000"; + when "000001" => y <= "000011"; + when "000010" => y <= "000110"; + when "000011" => y <= "001001"; + when "000100" => y <= "000110"; + when "000101" => y <= "001001"; + when "000110" => y <= "001100"; + when "000111" => y <= "001111"; + when "001000" => y <= "001100"; + when "001001" => y <= "001111"; + when "001010" => y <= "010010"; + when "001011" => y <= "010101"; + when "001100" => y <= "010010"; + when "001101" => y <= "010101"; + when "001110" => y <= "011000"; + when "001111" => y <= "011011"; + when "010000" => y <= "000001"; + when "010001" => y <= "000100"; + when "010010" => y <= "000111"; + when "010011" => y <= "001010"; + when "010100" => y <= "000111"; + when "010101" => y <= "001010"; + when "010110" => y <= "001101"; + when "010111" => y <= "010000"; + when "011000" => y <= "001101"; + when "011001" => y <= "010000"; + when "011010" => y <= "010011"; + when "011011" => y <= "010110"; + when "011100" => y <= "010011"; + when "011101" => y <= "010110"; + when "011110" => y <= "011001"; + when "011111" => y <= "011100"; + when "100000" => y <= "000010"; + when "100001" => y <= "000101"; + when "100010" => y <= "001000"; + when "100011" => y <= "001011"; + when "100100" => y <= "001000"; + when "100101" => y <= "001011"; + when "100110" => y <= "001110"; + when "100111" => y <= "010001"; + when "101000" => y <= "001110"; + when "101001" => y <= "010001"; + when "101010" => y <= "010100"; + when "101011" => y <= "010111"; + when "101100" => y <= "010100"; + when "101101" => y <= "010111"; + when "101110" => y <= "011010"; + when "101111" => y <= "011101"; + when "110000" => y <= "000011"; + when "110001" => y <= "000110"; + when "110010" => y <= "001001"; + when "110011" => y <= "001100"; + when "110100" => y <= "001001"; + when "110101" => y <= "001100"; + when "110110" => y <= "001111"; + when "110111" => y <= "010010"; + when "111000" => y <= "001111"; + when "111001" => y <= "010010"; + when "111010" => y <= "010101"; + when "111011" => y <= "011000"; + when "111100" => y <= "010101"; + when "111101" => y <= "011000"; + when "111110" => y <= "011011"; + when "111111" => y <= "011110"; + when others => + end case; + end process; + + process (color) + begin + case color is + when "000000" => u <= "000000"; + when "000001" => u <= "111111"; + when "000010" => u <= "111101"; + when "000011" => u <= "111100"; + when "000100" => u <= "111101"; + when "000101" => u <= "111100"; + when "000110" => u <= "111010"; + when "000111" => u <= "111001"; + when "001000" => u <= "111010"; + when "001001" => u <= "111001"; + when "001010" => u <= "110111"; + when "001011" => u <= "110110"; + when "001100" => u <= "110111"; + when "001101" => u <= "110110"; + when "001110" => u <= "110100"; + when "001111" => u <= "110011"; + when "010000" => u <= "000100"; + when "010001" => u <= "000011"; + when "010010" => u <= "000001"; + when "010011" => u <= "000000"; + when "010100" => u <= "000001"; + when "010101" => u <= "000000"; + when "010110" => u <= "111111"; + when "010111" => u <= "111101"; + when "011000" => u <= "111111"; + when "011001" => u <= "111101"; + when "011010" => u <= "111100"; + when "011011" => u <= "111010"; + when "011100" => u <= "111100"; + when "011101" => u <= "111010"; + when "011110" => u <= "111001"; + when "011111" => u <= "110111"; + when "100000" => u <= "001001"; + when "100001" => u <= "000111"; + when "100010" => u <= "000110"; + when "100011" => u <= "000100"; + when "100100" => u <= "000110"; + when "100101" => u <= "000100"; + when "100110" => u <= "000011"; + when "100111" => u <= "000001"; + when "101000" => u <= "000011"; + when "101001" => u <= "000001"; + when "101010" => u <= "000000"; + when "101011" => u <= "111111"; + when "101100" => u <= "000000"; + when "101101" => u <= "111111"; + when "101110" => u <= "111101"; + when "101111" => u <= "111100"; + when "110000" => u <= "001101"; + when "110001" => u <= "001100"; + when "110010" => u <= "001010"; + when "110011" => u <= "001001"; + when "110100" => u <= "001010"; + when "110101" => u <= "001001"; + when "110110" => u <= "000111"; + when "110111" => u <= "000110"; + when "111000" => u <= "000111"; + when "111001" => u <= "000110"; + when "111010" => u <= "000100"; + when "111011" => u <= "000011"; + when "111100" => u <= "000100"; + when "111101" => u <= "000011"; + when "111110" => u <= "000001"; + when "111111" => u <= "000000"; + when others => + end case; + end process; + + process (color) + begin + case color is + when "000000" => v <= "000000"; + when "000001" => v <= "000110"; + when "000010" => v <= "001100"; + when "000011" => v <= "010010"; + when "000100" => v <= "111011"; + when "000101" => v <= "000001"; + when "000110" => v <= "000111"; + when "000111" => v <= "001101"; + when "001000" => v <= "110110"; + when "001001" => v <= "111100"; + when "001010" => v <= "000010"; + when "001011" => v <= "001000"; + when "001100" => v <= "110001"; + when "001101" => v <= "110111"; + when "001110" => v <= "111101"; + when "001111" => v <= "000011"; + when "010000" => v <= "111111"; + when "010001" => v <= "000101"; + when "010010" => v <= "001011"; + when "010011" => v <= "010001"; + when "010100" => v <= "111010"; + when "010101" => v <= "000000"; + when "010110" => v <= "000110"; + when "010111" => v <= "001100"; + when "011000" => v <= "110101"; + when "011001" => v <= "111011"; + when "011010" => v <= "000001"; + when "011011" => v <= "000111"; + when "011100" => v <= "110000"; + when "011101" => v <= "110110"; + when "011110" => v <= "111100"; + when "011111" => v <= "000010"; + when "100000" => v <= "111110"; + when "100001" => v <= "000100"; + when "100010" => v <= "001010"; + when "100011" => v <= "010000"; + when "100100" => v <= "111001"; + when "100101" => v <= "111111"; + when "100110" => v <= "000101"; + when "100111" => v <= "001011"; + when "101000" => v <= "110100"; + when "101001" => v <= "111010"; + when "101010" => v <= "000000"; + when "101011" => v <= "000110"; + when "101100" => v <= "101111"; + when "101101" => v <= "110101"; + when "101110" => v <= "111011"; + when "101111" => v <= "000001"; + when "110000" => v <= "111101"; + when "110001" => v <= "000011"; + when "110010" => v <= "001001"; + when "110011" => v <= "001111"; + when "110100" => v <= "111000"; + when "110101" => v <= "111110"; + when "110110" => v <= "000100"; + when "110111" => v <= "001010"; + when "111000" => v <= "110011"; + when "111001" => v <= "111001"; + when "111010" => v <= "111111"; + when "111011" => v <= "000101"; + when "111100" => v <= "101110"; + when "111101" => v <= "110100"; + when "111110" => v <= "111010"; + when "111111" => v <= "000000"; + when others => + end case; + end process; + + +end Behavioral; + diff --git a/Console_MiST/Sega - SG1000/sg1000.qsf b/Console_MiST/Sega - SG1000/sg1000.qsf index 16734439..2577ae9d 100644 --- a/Console_MiST/Sega - SG1000/sg1000.qsf +++ b/Console_MiST/Sega - SG1000/sg1000.qsf @@ -166,8 +166,10 @@ set_global_assignment -name VHDL_FILE rtl/t80/T80.vhd set_global_assignment -name VERILOG_FILE rtl/TTL74_257.v set_global_assignment -name SYSTEMVERILOG_FILE rtl/keyboard.sv set_global_assignment -name SYSTEMVERILOG_FILE rtl/cart.sv +set_global_assignment -name VHDL_FILE rtl/tv_video.vhd +set_global_assignment -name VHDL_FILE rtl/color_encoder.vhd +set_global_assignment -name VHDL_FILE rtl/yuv_table.vhd set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top -set_global_assignment -name QIP_FILE rtl/RAM2K.qip set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top \ No newline at end of file diff --git a/Console_MiST/Sega - SG1000/sg1000.srf b/Console_MiST/Sega - SG1000/sg1000.srf index b41fcc33..2ac32dec 100644 --- a/Console_MiST/Sega - SG1000/sg1000.srf +++ b/Console_MiST/Sega - SG1000/sg1000.srf @@ -5,3 +5,4 @@ { "" "" "" "Net \"Cart_ram_Out\" at sg1000_top.sv(25) has no driver or initial value, using a default initial value '0'" { } { } 0 10030 "" 0 0 "Quartus II" 0 -1 0 ""} { "" "" "" "VHDL Process Statement warning at vdp_main.vhd(117): signal \"mask_column0\" is read inside the Process Statement but isn't in the Process Statement's sensitivity list" { } { } 0 10492 "" 0 0 "Quartus II" 0 -1 0 ""} { "" "" "" "*" { } { } 0 14284 "" 0 0 "Quartus II" 0 -1 0 ""} +{ "" "" "" "*" { } { } 0 10235 "" 0 0 "Quartus II" 0 -1 0 ""}