1
0
mirror of https://github.com/mist-devel/mist-board.git synced 2026-02-06 16:14:42 +00:00

Merge pull request #128 from gyurco/archie

Archie IDE support
This commit is contained in:
gyurco
2019-11-02 19:46:52 +01:00
committed by GitHub
8 changed files with 1275 additions and 56 deletions

View File

@@ -47,8 +47,8 @@ set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0
set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85
set_global_assignment -name DEVICE_FILTER_PIN_COUNT 144
set_global_assignment -name ERROR_CHECK_FREQUENCY_DIVISOR 1
set_global_assignment -name EDA_SIMULATION_TOOL "ModelSim-Altera (Verilog)"
set_global_assignment -name EDA_OUTPUT_DATA_FORMAT "VERILOG HDL" -section_id eda_simulation
set_global_assignment -name EDA_SIMULATION_TOOL "<None>"
set_global_assignment -name EDA_OUTPUT_DATA_FORMAT NONE -section_id eda_simulation
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
@@ -136,7 +136,7 @@ set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VGA_*
set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to DRAM_*
set_global_assignment -name ENABLE_SIGNALTAP OFF
set_global_assignment -name USE_SIGNALTAP_FILE output_files/vidc.stp
set_global_assignment -name USE_SIGNALTAP_FILE output_files/ide.stp
set_global_assignment -name STRATIX_DEVICE_IO_STANDARD "3.3-V LVTTL"
set_global_assignment -name ENABLE_CONFIGURATION_PINS OFF
set_global_assignment -name ENABLE_NCE_PIN OFF
@@ -177,8 +177,9 @@ set_instance_assignment -name FAST_OUTPUT_ENABLE_REGISTER ON -to DRAM_DQ[*]
set_global_assignment -name SEED 1
set_global_assignment -name ENABLE_DRC_SETTINGS OFF
set_location_assignment PLL_1 -to CLOCKS|altpll_component|auto_generated|pll1
set_global_assignment -name PHYSICAL_SYNTHESIS_EFFORT NORMAL
set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top
set_global_assignment -name PHYSICAL_SYNTHESIS_EFFORT EXTRA
set_global_assignment -name PRE_MAPPING_RESYNTHESIS ON
set_global_assignment -name REMOVE_REDUNDANT_LOGIC_CELLS ON
set_global_assignment -name VERILOG_FILE archimedes_mist_top.v
set_global_assignment -name SYSTEMVERILOG_FILE rgb2ypbpr.sv
set_global_assignment -name VERILOG_FILE scandoubler.v
@@ -190,9 +191,10 @@ set_global_assignment -name VERILOG_FILE osd.v
set_global_assignment -name VERILOG_FILE sram_line_en.v
set_global_assignment -name VERILOG_FILE sram_byte_en.v
set_global_assignment -name QIP_FILE clockgen.qip
set_global_assignment -name VERILOG_FILE ../../rtl/fdc1772.v
set_global_assignment -name VERILOG_FILE ../../rtl/latches.v
set_global_assignment -name VERILOG_FILE ../../rtl/fdc1772.v
set_global_assignment -name VERILOG_FILE ../../rtl/floppy.v
set_global_assignment -name SYSTEMVERILOG_FILE ../../rtl/ide.sv
set_global_assignment -name VERILOG_FILE ../../rtl/podules.v
set_global_assignment -name VERILOG_FILE ../../rtl/i2cslave/serialInterface.v
set_global_assignment -name VERILOG_FILE ../../rtl/i2cslave/registerInterface.v
@@ -228,4 +230,5 @@ set_global_assignment -name QIP_FILE pll_reconfig.qip
set_global_assignment -name QIP_FILE rom_reconfig_36.qip
set_global_assignment -name QIP_FILE pll_vidc.qip
set_global_assignment -name SIGNALTAP_FILE output_files/vidc.stp
set_global_assignment -name SIGNALTAP_FILE output_files/sd.stp
set_global_assignment -name SIGNALTAP_FILE output_files/sd.stp
set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top

View File

@@ -56,6 +56,7 @@ module archimedes_mist_top(
input SPI_SCK,
input SPI_SS2, // data_io
input SPI_SS3, // OSD
input SPI_SS4, // Direct SD
input CONF_DATA0 // SPI_SS for user_io
);
@@ -340,7 +341,8 @@ wire [8:0] sd_buff_addr;
wire [1:0] img_mounted;
wire [31:0] img_size;
assign SPI_DO = (CONF_DATA0==0)?user_io_sdo:1'bZ;
// de-multiplex spi outputs from user_io and data_io
assign SPI_DO = (CONF_DATA0==0)?user_io_sdo:(SPI_SS2==0)?data_io_sdo:1'bZ;
wire user_io_sdo;
user_io user_io(
@@ -380,14 +382,34 @@ user_io user_io(
.img_size ( img_size )
);
wire spi_din = SPI_SS4 ? SPI_DI : SPI_DO;
wire data_io_sdo;
data_io # ( .START_ADDR(24'h40_0000) )
DATA_IO (
.sck ( SPI_SCK ),
.ss ( SPI_SS2 ),
.sdi ( SPI_DI ),
.sck ( SPI_SCK ),
.ss ( SPI_SS2 ),
.ss_sd ( SPI_SS4 ),
.sdi ( spi_din ),
.sdo ( data_io_sdo ),
.reset ( reset ),
.ide_req ( ide_req ),
.ide_ack ( ide_ack ),
.ide_err ( ide_err ),
.ide_reg_o_adr ( ide_reg_i_adr ),
.ide_reg_o ( ide_reg_i ),
.ide_reg_we ( ide_reg_we ),
.ide_reg_i_adr ( ide_reg_o_adr ),
.ide_reg_i ( ide_reg_o ),
.ide_data_addr ( ide_data_addr ),
.ide_data_o ( ide_data_i ),
.ide_data_i ( ide_data_o ),
.ide_data_rd ( ide_data_rd ),
.ide_data_we ( ide_data_we ),
.downloading ( downloading ),
.size ( ),
.size ( ),
.index ( dio_index ),
// ram interface
@@ -413,13 +435,29 @@ wire [1:0] pixbaseclk_select;
wire i2c_din, i2c_dout, i2c_clock;
wire ide_req;
wire ide_ack;
wire ide_err;
wire [2:0] ide_reg_o_adr;
wire [7:0] ide_reg_o;
wire ide_reg_we;
wire [2:0] ide_reg_i_adr;
wire [7:0] ide_reg_i;
wire [8:0] ide_data_addr;
wire [7:0] ide_data_o;
wire [7:0] ide_data_i;
wire ide_data_rd;
wire ide_data_we;
wire reset = ~ram_ready | ~rom_ready;
archimedes_top ARCHIMEDES(
.CLKCPU_I ( clk_sys ),
.CLKPIX_I ( clk_pix ), // pixel clock for OSD
.CEPIX_O ( ce_pix ),
.RESET_I (~ram_ready | ~rom_ready),
.RESET_I ( reset ),
.MEM_ACK_I ( core_ack_in ),
.MEM_DAT_I ( core_data_in ),
@@ -460,6 +498,21 @@ archimedes_top ARCHIMEDES(
.sd_dout_strobe ( sd_dout_strobe ),
.sd_din_strobe ( sd_din_strobe ),
// IDE controller
.ide_req ( ide_req ),
.ide_ack ( ide_ack ),
.ide_err ( ide_err ),
.ide_reg_o_adr ( ide_reg_o_adr ),
.ide_reg_o ( ide_reg_o ),
.ide_reg_we ( ide_reg_we ),
.ide_reg_i_adr ( ide_reg_i_adr ),
.ide_reg_i ( ide_reg_i ),
.ide_data_addr ( ide_data_addr ),
.ide_data_o ( ide_data_o ),
.ide_data_i ( ide_data_i ),
.ide_data_rd ( ide_data_rd ),
.ide_data_we ( ide_data_we ),
.KBD_OUT_DATA ( kbd_out_data ),
.KBD_OUT_STROBE ( kbd_out_strobe ),
.KBD_IN_DATA ( kbd_in_data ),

View File

@@ -2,7 +2,7 @@
// data_io.v
//
// Data interface for the archimedes core on the MiST board.
// Providing ROM and floppy data up- and download via the MISTs
// Providing ROM and IDE data up- and download via the MISTs
// own arm7 cpu.
//
// http://code.google.com/p/mist-board/
@@ -25,9 +25,27 @@
module data_io #(parameter ADDR_WIDTH=24, START_ADDR = 0) (
// io controller spi interface
input sck,
input ss,
input sdi,
input sck,
input ss,
input ss_sd,
input sdi,
output reg sdo,
input reset,
input ide_req,
output reg ide_ack,
output reg ide_err,
output reg [2:0] ide_reg_i_adr,
input [7:0] ide_reg_i,
output reg ide_reg_we,
output reg [2:0] ide_reg_o_adr,
output reg [7:0] ide_reg_o,
output reg [8:0] ide_data_addr,
output reg [7:0] ide_data_o,
input [7:0] ide_data_i,
output reg ide_data_rd,
output reg ide_data_we,
output reg downloading, // signal indicating an active download
output [ADDR_WIDTH-1:0] size, // number of bytes in input buffer
@@ -52,19 +70,28 @@ assign size = addr - START_ADDR;
// spi client
// *********************************************************************************
// this core supports only the display related OSD commands
// of the minimig
reg [6:0] sbuf;
reg [7:0] cmd;
reg [7:0] data;
reg [2:0] bit_cnt;
reg [2:0] byte_cnt;
reg [4:0] byte_cnt;
reg [6:0] sbuf_sd;
reg [2:0] bit_cnt_sd;
reg [ADDR_WIDTH-1:0] addr;
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
localparam CMD_IDECMD = 8'h04;
localparam CMD_IDEDAT = 8'h08;
localparam CMD_IDE_REGS_RD = 8'h80;
localparam CMD_IDE_REGS_WR = 8'h90;
localparam CMD_IDE_DATA_WR = 8'hA0;
localparam CMD_IDE_DATA_RD = 8'hB0;
localparam CMD_IDE_STATUS_WR = 8'hF0;
// SPI bit and byte counters
always@(posedge sck or posedge ss) begin
@@ -79,6 +106,63 @@ always@(posedge sck or posedge ss) begin
end
end
reg spi_receiver_strobe_sd_r = 0;
reg spi_transfer_end_sd_r = 1;
reg [7:0] spi_byte_in_sd;
// direct SD
always@(posedge sck or posedge ss_sd) begin
if(ss_sd == 1) begin
bit_cnt_sd <= 0;
spi_transfer_end_sd_r <= 1;
end else begin
bit_cnt_sd <= bit_cnt_sd + 1'd1;
spi_transfer_end_sd_r <= 0;
if(&bit_cnt_sd) begin
// finished reading a byte, prepare to transfer to clk_sys
spi_byte_in_sd <= { sbuf_sd, sdi};
spi_receiver_strobe_sd_r <= ~spi_receiver_strobe_sd_r;
end else
sbuf_sd[6:0] <= { sbuf_sd[5:0], sdi };
end
end
// SPI transmitter FPGA -> IO
// CMD_IDEDAT is required before the first sector of a write commands
// and just before the _first_ one, even with multiple sector writes.
wire [7:0] cmdcode = write_start ? CMD_IDEDAT : newcmd ? CMD_IDECMD : 8'h0;
wire [4:0] tf_o_pos = byte_cnt - 4'd5;
// need to know the ATA command sent by Archie for some local processing here
reg [7:0] ide_cmd;
always@(negedge sck or posedge ss) begin
reg [7:0] dout_r;
if(ss == 1) begin
sdo <= 1'bZ;
end else begin
if (&bit_cnt) begin
case(cmd)
CMD_IDE_REGS_RD:
begin
// send task file regs
dout_r <= ide_reg_i;
ide_reg_i_adr <= tf_o_pos[3:1];
if (tf_o_pos[3:1] == 3'd7) ide_cmd <= ide_reg_i;
end
CMD_IDE_DATA_RD: dout_r <= ide_data_i;
default: dout_r <= cmdcode;
endcase
end
sdo <= (cmd == 0) ? cmdcode[~bit_cnt] : dout_r[~bit_cnt];
end
end
// SPI receiver IO -> FPGA
reg spi_receiver_strobe_r = 0;
@@ -90,6 +174,7 @@ always@(posedge sck or posedge ss) begin
if(ss == 1) begin
spi_transfer_end_r <= 1;
cmd <= 0;
end else begin
spi_transfer_end_r <= 0;
@@ -97,11 +182,16 @@ always@(posedge sck or posedge ss) begin
// finished reading a byte, prepare to transfer to clk_sys
spi_byte_in <= { sbuf, sdi};
spi_receiver_strobe_r <= ~spi_receiver_strobe_r;
if (!byte_cnt) cmd <= { sbuf, sdi };
end else
sbuf[6:0] <= { sbuf[5:0], sdi };
end
end
reg newcmd = 0;
reg write_req = 0;
reg write_start = 0;
// Process bytes from SPI at the clk_sys domain
always @(posedge clk) begin
@@ -110,10 +200,45 @@ always @(posedge clk) begin
reg spi_receiver_strobeD;
reg spi_transfer_endD;
reg [7:0] acmd;
reg [3:0] abyte_cnt; // counts bytes
reg [4:0] abyte_cnt; // counts bytes
reg spi_receiver_strobe_sd;
reg spi_transfer_end_sd;
reg spi_receiver_strobe_sdD;
reg spi_transfer_end_sdD;
reg [4:0] abyte_cnt_sd;
wr <= 0;
// This "state-machine" is messy, but the firmware has to be clean up
// to make it more clear. And that would require changes in Minimig, too.
if (reset) begin
newcmd <= 0;
write_req <= 0;
write_start <= 0;
end
if (ide_req) begin
ide_data_addr <= 0;
ide_err <= 0;
newcmd <= 1;
write_start <= write_req;
end
ide_reg_we <= 0;
ide_ack <= 0;
ide_data_we <= 0;
if (ide_data_we) begin
ide_data_addr <= ide_data_addr + 1'd1;
newcmd <= 0;
end
ide_data_rd <= 0;
if (ide_data_rd) begin
ide_data_addr <= ide_data_addr + 1'b1;
write_req <= 0;
write_start <= 0;
end
//synchronize between SPI and sys clock domains
spi_receiver_strobeD <= spi_receiver_strobe_r;
spi_receiver_strobe <= spi_receiver_strobeD;
@@ -132,6 +257,39 @@ always @(posedge clk) begin
acmd <= spi_byte_in;
end else begin
case(acmd)
// IDE commands
CMD_IDE_STATUS_WR:
if (abyte_cnt == 1) begin
// "real" status register handling inside the IDE module,
// since firmware status codes are not real ATA-1 status codes
// (I wonder how it works for Amiga)
if (spi_byte_in[7]) ide_ack <= 1; // IDE_STATUS_END
if (spi_byte_in[4]) newcmd <= 0; // IDE_STATUS_IRQ
if (spi_byte_in[2] || ((ide_cmd == 8'h30 || ide_cmd == 8'hc5) && spi_byte_in[4] && ~spi_byte_in[7])) write_req <= 1;
if (spi_byte_in[1]) ide_err <= 1; // IDE_STATUS_ERR
end
CMD_IDE_REGS_WR:
begin
ide_reg_o <= spi_byte_in;
if (abyte_cnt == 9) begin ide_reg_o_adr <= 3'd1; ide_reg_we <= 1; end // error
if (abyte_cnt == 11) begin ide_reg_o_adr <= 3'd2; ide_reg_we <= 1; end // sector count
if (abyte_cnt == 13) begin ide_reg_o_adr <= 3'd3; ide_reg_we <= 1; end // sector number
if (abyte_cnt == 15) begin ide_reg_o_adr <= 3'd4; ide_reg_we <= 1; end // cyl low
if (abyte_cnt == 17) begin ide_reg_o_adr <= 3'd5; ide_reg_we <= 1; end // cyl high
if (abyte_cnt == 19) begin ide_reg_o_adr <= 3'd6; ide_reg_we <= 1; end // drive/head
end
CMD_IDE_DATA_WR:
if (abyte_cnt > 5) begin
ide_data_we <= 1;
ide_data_o <= spi_byte_in;
end
CMD_IDE_DATA_RD:
if (abyte_cnt > 4) ide_data_rd <= 1;
// file transfer commands
UIO_FILE_TX:
begin
// prepare
@@ -158,6 +316,28 @@ always @(posedge clk) begin
endcase;
end
end
// direct-sd connection
// synchronize between SPI and sys clock domains
spi_receiver_strobe_sdD <= spi_receiver_strobe_sd_r;
spi_receiver_strobe_sd <= spi_receiver_strobe_sdD;
spi_transfer_end_sdD <= spi_transfer_end_sd_r;
spi_transfer_end_sd <= spi_transfer_end_sdD;
// strobe is set whenever a valid byte has been received
if (~spi_transfer_end_sdD & spi_transfer_end_sd) begin
abyte_cnt_sd <= 0;
end else if (spi_receiver_strobe_sdD ^ spi_receiver_strobe_sd) begin
if(~&abyte_cnt_sd)
abyte_cnt_sd <= abyte_cnt_sd + 1'd1;
if (abyte_cnt_sd == 0 || ide_data_addr != 0) begin // filter spurious byte at the end
ide_data_we <= 1;
ide_data_o <= spi_byte_in_sd;
end
end
end
endmodule

View File

@@ -80,6 +80,21 @@ module archimedes_top(
input sd_dout_strobe,
input sd_din_strobe,
// connection to the IDE controller
output ide_req, // new command request
input ide_err,
input ide_ack, // command finished on the IO controller side
input [2:0] ide_reg_o_adr,// requested task file register index
output [7:0] ide_reg_o, // task file register out
input ide_reg_we, // task file register write strobe from IO controller
input [2:0] ide_reg_i_adr,
input [7:0] ide_reg_i, // task file register input
input [8:0] ide_data_addr,
output [7:0] ide_data_o,
input [7:0] ide_data_i,
input ide_data_rd,
input ide_data_we,
// connection to keyboard controller
output [7:0] KBD_OUT_DATA,
output KBD_OUT_STROBE,
@@ -305,7 +320,10 @@ podules PODULES(
.wb_dat_o ( pod_dat_o ),
.wb_dat_i ( cpu_dat_o[15:0] ),
.wb_adr ( cpu_address[15:2] )
.wb_adr ( cpu_address[15:2] ),
.ide_sel ( ide_sel ),
.ide_din ( ide_dat_o )
);
wire [7:0] floppy_dat_o;
@@ -356,6 +374,37 @@ fdc1772 #(.CLK(40000000)) FDC1772 (
.floppy_reset ( floppy_reset )
);
wire [15:0] ide_dat_o;
wire ide_sel;
ide IDE (
.clk ( CLKCPU_I ),
.reset ( RESET_I ),
.ide_sel ( ide_sel ),
.ide_we ( cpu_we ),
.ide_reg ( cpu_address[4:2] ),
.ide_dat_o ( ide_dat_o ),
.ide_dat_i ( cpu_dat_o[31:16] ),
.ide_req ( ide_req ),
.ide_ack ( ide_ack ),
.ide_err ( ide_err ),
.ide_reg_o_adr ( ide_reg_o_adr ),
.ide_reg_o ( ide_reg_o ),
.ide_reg_we ( ide_reg_we ),
.ide_reg_i_adr ( ide_reg_i_adr ),
.ide_reg_i ( ide_reg_i ),
.ide_data_addr ( ide_data_addr ),
.ide_data_o ( ide_data_o ),
.ide_data_i ( ide_data_i ),
.ide_data_rd ( ide_data_rd ),
.ide_data_we ( ide_data_we )
);
wire [7:0] latches_dat_o;
wire latches_en = ioc_cs & ioc_select[5] & (ioc_speed == 2'd2);

199
cores/archie/rtl/ide.sv Normal file
View File

@@ -0,0 +1,199 @@
//
// ide.sv
//
// Copyright (c) 2019 György Szombathelyi
//
// This source file is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published
// by the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This source file is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//
module ide (
input clk, // system clock.
input reset,
input ide_sel,
input ide_we,
input [2:0] ide_reg,
input [15:0] ide_dat_i,
output reg [15:0] ide_dat_o,
// place any signals that need to be passed up to the top after here.
output reg ide_req,
input ide_err,
input ide_ack,
input [2:0] ide_reg_o_adr,
output reg [7:0] ide_reg_o,
input ide_reg_we,
input [2:0] ide_reg_i_adr,
input [7:0] ide_reg_i,
input [8:0] ide_data_addr,
output [7:0] ide_data_o,
input [7:0] ide_data_i,
input ide_data_rd,
input ide_data_we
);
assign ide_req = ide_cmd_req | ide_sector_req;
reg [7:0] taskfile[8];
reg [7:0] status;
// read from Task File Registers
always @(*) begin
reg [7:0] ide_dat_b;
//cpu read
ide_dat_b = (ide_reg == 3'd7) ? { status[7:1], ide_err } : taskfile[ide_reg];
ide_dat_o = 16'hFFFF;
if (ide_sel && !ide_we) begin
ide_dat_o = (ide_reg == 3'd0) ? data_out : { ide_dat_b, ide_dat_b };
end
// IO controller read
ide_reg_o = taskfile[ide_reg_o_adr];
end
reg ide_cmd_req;
// write to Task File Registers
always @(posedge clk) begin
ide_cmd_req <= 0;
// cpu write
if (ide_sel && ide_we) begin
taskfile[ide_reg] <= ide_dat_i[7:0];
// writing to the command register triggers the IO controller
if (ide_reg == 3'd7) ide_cmd_req <= 1;
end
// IO controller write
if (ide_reg_we) taskfile[ide_reg_i_adr] <= ide_reg_i;
end
reg ide_sector_req;
// status register handling
always @(posedge clk) begin
reg [7:0] sector_count;
if (reset) begin
status <= 8'h48;
ide_sector_req <= 0;
sector_count <= 8'd1;
end else begin
// write to command register starts the execution
if (ide_sel && ide_we && ide_reg == 3'd7) begin
sector_count <= taskfile[2];
case (taskfile[7])
8'h30, 8'hc5: status <= 8'h08; // request data
default: status <= 8'h80; // busy
endcase
end
if (ide_ack) begin
case (taskfile[7])
8'hec : status <= 8'h08; // ready to transfer
8'h20, 8'h30, 8'hc4, 8'hc5: ;
default: status <= 8'h40; // ready
endcase
end
// sector buffer - IO controller side
if ((ide_data_rd | ide_data_we) & ide_data_addr == 9'h1ff) status <= 8'h08; // sector buffer consumed/filled, ready to transfer
if (ide_data_rd | ide_data_we) ide_sector_req <= 0;
// sector buffer - CPU side
if (ide_sel_d && ~ide_sel && ide_reg == 3'd0 && data_addr == 8'hff) begin
status <= 8'h40; // ready
case (taskfile[7])
8'h20, 8'hc4: // reads
begin
sector_count <= sector_count - 1'd1;
if (sector_count != 1) ide_sector_req <= 1; // request the next sector
end
8'h30, 8'hc5:
begin
ide_sector_req <= 1; // write, signals the write buffer is ready
status <= 8'h80; // busy
end
default: ;
endcase
end
end
end
reg [7:0] data_addr;
wire [15:0] data_out;
reg ide_sel_d;
// read/write data register
always @(posedge clk) begin
ide_sel_d <= ide_sel;
if (ide_sel && ide_we && ide_reg == 3'd7) data_addr <= 0;
if (ide_sel_d && ~ide_sel && ide_reg == 3'd0) data_addr <= data_addr + 1'd1;
end
// mixed-width sector buffer
ide_dpram ide_databuf (
.clock ( clk ),
.address_a ( data_addr ),
.data_a ( ide_dat_i ),
.wren_a ( ide_sel && ide_we && ide_reg == 3'd0 ),
.q_a ( data_out ),
.address_b ( ide_data_addr ),
.data_b ( ide_data_i ),
.wren_b ( ide_data_we ),
.q_b ( ide_data_o )
);
endmodule
module ide_dpram
(
input clock,
input [7:0] address_a,
input [15:0] data_a,
input wren_a,
output reg [15:0] q_a,
input [8:0] address_b,
input [7:0] data_b,
input wren_b,
output reg [7:0] q_b
);
reg [1:0][7:0] ram[256];
always @(posedge clock) begin
if(wren_a) begin
ram[address_a] <= data_a;
q_a <= data_a;
end else begin
q_a <= ram[address_a];
end
end
always @(posedge clock) begin
if(wren_b) begin
ram[address_b[8:1]][address_b[0]] <= data_b;
q_b <= data_b;
end else begin
q_b <= ram[address_b[8:1]][address_b[0]];
end
end
endmodule

View File

@@ -29,24 +29,26 @@
module podules(
input clkcpu, // system cpu clock.
input clk8m_en, // goes high in sync with 32m clock to give simulated 8mhz
input clk2m_en, // goes high in sync with 32m clock to give simulated 2mhz
input clkcpu, // system cpu clock.
input clk8m_en, // goes high in sync with 32m clock to give simulated 8mhz
input clk2m_en, // goes high in sync with 32m clock to give simulated 2mhz
input rst_i, // reset
input rst_i, // reset
input [1:0] speed_i, // podule access speed. (redundant except for address decode).
input [1:0] speed_i, // podule access speed. (redundant except for address decode).
// "wishbone bus" the ack is externally generated currently.
input wb_cyc,
input wb_stb,
input wb_we,
input wb_cyc,
input wb_stb,
input wb_we,
input [15:2] wb_adr, // la
input [15:0] wb_dat_i, // bd
output[15:0] wb_dat_o // bd
input [15:2] wb_adr, // la
input [15:0] wb_dat_i, // bd
output [15:0] wb_dat_o, // bd
// place any signals that need to be passed up to the top after here.
output ide_sel,
input [15:0] ide_din
);
localparam PODULE0 = 2'b00;
@@ -54,27 +56,41 @@ localparam PODULE1 = 2'b01;
localparam PODULE2 = 2'b10;
localparam PODULE3 = 2'b11;
wire [1:0] podule_addr = wb_adr[15:14];
wire [3:0] podule_select = podule_addr == PODULE0 ? 4'b0001 :
podule_addr == PODULE1 ? 4'b0010 :
podule_addr == PODULE2 ? 4'b0100 :
podule_addr == PODULE3 ? 4'b1000 : 4'd0;
wire [1:0] podule_addr = wb_adr[15:14];
wire [3:0] podule_select = podule_addr == PODULE0 ? 4'b0001 :
podule_addr == PODULE1 ? 4'b0010 :
podule_addr == PODULE2 ? 4'b0100 :
podule_addr == PODULE3 ? 4'b1000 : 4'd0;
wire [15:0] pod0_dat;
wire [15:0] pod1_dat;
wire [15:0] pod2_dat;
wire [15:0] pod3_dat;
always @(posedge clkcpu) begin
end
wire [15:0] pod0_dat;
wire [15:0] pod1_dat;
wire [15:0] pod2_dat;
wire [15:0] pod3_dat;
// emulate a simple podule as a test for *PODULES
assign pod0_dat = wb_adr[13:2] == 12'd0 ? {8'd0, 8'b0_1010_000} : 16'hFFFF;
// assign pod0_dat = wb_adr[13:2] == 12'd0 ? {8'd0, 8'b0_1010_000} : 16'hFFFF;
// RISC Developments IDE Interface in Podule 0
reg [7:0] rd_rom[16384];
reg [2:0] rd_page;
reg [7:0] rd_rom_q;
initial begin
$readmemh("riscdevide_rom.hex", rd_rom);
rd_page <= 0;
end
assign ide_sel = wb_stb && wb_cyc && podule_select[PODULE0] && wb_adr[13:10] == 4'hA;
wire page_sel = wb_stb && wb_cyc && podule_select[PODULE0] && wb_we && wb_adr[13:2] == 12'h800;
always @(posedge clkcpu) begin
if (page_sel) rd_page <= wb_dat_i[2:0];
rd_rom_q <= rd_rom[{rd_page, wb_adr[12:2]}];
end
assign pod0_dat = ide_sel ? ide_din : {8'd0, rd_rom_q};
assign wb_dat_o = podule_select[PODULE0] ? pod0_dat : 16'hFFFF;
endmodule

View File

@@ -0,0 +1,714 @@
/* http://srecord.sourceforge.net/ */
@00000000 00 03 00 97 00 23 00 00 00 00 00 00 00 00 00 00 80 D4 00 00 2C 07 00
@00000017 00 F5 28 00 00 04 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@0000002E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@00000045 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@0000005C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@00000073 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@0000008A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@000000A1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@000000B8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@000000CF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@000000E6 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@000000FD 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@00000114 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@0000012B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@00000142 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@00000159 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@00000187 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@0000019E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@000001B5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@000001CC 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@000001E3 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@000001FA 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@00000211 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@00000228 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@0000023F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@00000256 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@0000026D 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@00000284 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@0000029B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@000002B2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@000002C9 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@000002E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@000002F7 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@0000030E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@00000325 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@0000033C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@00000353 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@0000036A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@00000381 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@00000398 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@000003AF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@000003C6 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@000003DD 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@000003F4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@0000040B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@00000422 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@00000439 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@00000450 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@00000467 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@0000047E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@00000495 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@000004AC 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@000004C3 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@000004DA 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@000004F1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@00000508 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@0000051F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@00000536 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@0000054D 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@00000564 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@0000057B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@00000592 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@000005A9 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@000005C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@000005D7 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@000005EE 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@00000605 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@0000061C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@00000633 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@0000064A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@00000661 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@00000678 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@0000068F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@000006A6 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@000006BD 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@000006D4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@000006EB 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@00000702 00 00 52 49 53 43 20 44 65 76 65 6C 6F 70 6D 65 6E 74 73 27 20 49 44
@00000719 45 20 49 6E 74 65 72 66 61 63 65 20 28 31 2E 32 34 29 00 0B 00 00 EA
@00000730 19 00 00 EA 01 00 00 EA 01 F2 DE E3 FF FF FF FF 5C A0 9F E5 0A A0 0B
@00000747 E0 02 AA 8A E2 00 20 E0 E3 1C 20 0F E5 00 20 A0 E3 00 20 CA E4 01 F2
@0000075E DE E3 3C 40 9F E5 04 40 0B E0 02 AA 84 E2 1E 0B 51 E3 30 00 8F 22 01
@00000775 F2 9E 23 02 2B 81 E2 C2 25 A0 E1 4C 30 1F E5 03 00 32 E1 00 20 CA 14
@0000078C 58 20 0F 15 FE 2B C1 E3 02 01 D4 E7 01 F2 DE E3 28 00 8F E2 01 F2 9E
@000007A3 E3 00 F0 FF 03 F0 32 80 00 41 64 64 72 65 73 73 20 74 6F 6F 20 62 69
@000007BA 67 20 66 6F 72 20 74 68 69 73 20 70 6F 64 75 6C 65 00 F1 32 80 00 54
@000007D1 68 69 73 20 70 6F 64 75 6C 65 20 64 6F 65 73 20 6E 6F 74 20 73 75 70
@000007E8 70 6F 72 74 20 77 72 69 74 61 62 6C 65 20 64 65 76 69 63 65 73 00 00
@000007FF 00 81 98 1E 00 00 01 00 00 81 60 0E 00 98 1F 00 00 F1 04 00 00 F8 2D
@00000816 00 00 F3 08 00 00 FC 2D 00 00 F4 1B 00 00 04 2E 00 00 F6 02 00 00 1F
@0000082D 2E 00 00 F2 0A 00 00 21 2E 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@00000844 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@0000085B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@00000872 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@00000889 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@000008A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@000008B7 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@000008CE 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@000008E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@000008FC 00 00 00 00 00 00 00 00 4C 00 00 00 60 01 00 00 00 19 00 00 2C 00 00
@00000913 00 32 00 00 00 90 04 00 00 C0 1F 04 00 8C 09 00 00 60 03 00 00 00 00
@0000092A 00 00 49 44 45 46 53 00 49 44 45 46 53 09 09 31 2E 31 35 20 28 32 37
@00000941 20 4D 61 72 20 31 39 39 32 29 00 7F 40 2D E9 00 20 9C E4 00 00 32 E3
@00000958 06 00 00 1A 06 00 A0 E3 3C 30 A0 E3 1E 00 02 EF 7F 80 BD 68 00 20 8C
@0000096F E4 00 00 A0 E3 2C 00 82 E5 04 C0 82 E5 02 C0 A0 E1 02 07 CB E3 32 06
@00000986 50 E3 28 01 9F 35 0A 0B 80 E2 08 00 8C E5 13 06 00 EB 01 00 A0 E3 9D
@0000099D 03 00 EB 03 10 01 E2 01 34 A0 E1 01 00 A0 E3 99 03 00 EB 04 10 01 E2
@000009B4 21 11 A0 E1 04 10 81 E2 01 38 83 E1 0B 00 A0 E3 90 03 00 EB 40 00 11
@000009CB E3 01 31 83 13 00 00 A0 E3 8F 03 00 EB 01 45 A0 E1 00 50 A0 E3 00 60
@000009E2 A0 E3 00 20 A0 E3 02 00 82 E2 89 03 00 EB 66 64 81 E1 01 20 82 E2 04
@000009F9 00 52 E3 F9 FF FF 1A 66 64 A0 E1 04 20 9C E5 10 10 4F E2 01 1C 41 E2
@00000A10 1C 00 8F E2 41 05 06 EF 04 D0 8D 62 7E 80 BD 68 00 00 8C E5 00 00 A0
@00000A27 E3 3A 00 CC E5 3B 00 CC E5 7F 80 BD E8 00 00 00 31 84 09 00 00 48 01
@00000A3E 00 00 E8 01 00 00 BC 01 00 00 52 69 73 63 20 44 65 76 65 6C 6F 70 6D
@00000A55 65 6E 74 73 20 49 44 45 46 53 00 06 40 2D E9 00 20 9C E4 00 00 32 E3
@00000A6C 06 80 BD 08 10 00 A0 E3 08 10 8F E2 08 1C 81 E2 29 00 02 EF 04 00 A0
@00000A83 73 1C 10 8F 72 1E 00 02 7F 00 00 3A E3 03 00 00 0A 07 00 A0 73 1E 00
@00000A9A 02 7F 00 20 A0 73 00 20 8C 74 06 80 FD E8 46 69 6C 65 43 6F 72 65 25
@00000AB1 49 44 45 46 53 00 00 00 40 34 03 00 00 50 E3 0E F0 B0 11 FE 41 2D E9
@00000AC8 00 C0 9C E4 9E 03 00 EB 01 01 80 63 FE 81 BD E8 A8 05 00 EB 01 01 80
@00000ADF E3 04 D0 8D E2 E2 81 BD E8 00 C0 9C E4 E2 41 2D E9 BC 05 00 EB 12 EE
@00000AF6 8F E2 03 E0 8E E3 00 40 2D E9 00 E0 A0 E3 24 E0 8C E5 40 00 11 E3 93
@00000B0D 05 00 1B 20 00 11 E3 00 00 A0 03 00 00 E0 13 1C 00 8C E5 4F 03 00 EB
@00000B24 A2 0E A0 E1 63 03 00 EB E9 FF FF 6A 01 00 00 E2 0C 00 80 E0 00 00 35
@00000B3B E3 1A 10 D0 05 18 00 D0 05 01 10 D5 15 02 00 D5 15 38 00 CC E5 39 10
@00000B52 CC E5 74 05 00 EB DE FF FF 6A 04 10 9D E5 0F 10 01 E2 02 00 51 E3 0A
@00000B69 00 00 8A A4 04 A0 E1 80 04 A0 E1 04 00 30 E1 A4 04 A0 E1 01 00 80 12
@00000B80 FF 00 50 E3 10 00 2D 89 54 00 8F 82 03 00 80 83 01 00 2D 89 C0 40 9F
@00000B97 85 28 D0 8C E5 2C 00 02 EF 24 00 00 2A 00 40 2D E9 2D 03 00 EB 00 40
@00000BAE BD E8 03 00 51 E3 07 00 51 13 C3 04 00 1B 07 00 51 E3 01 F1 8F 30 12
@00000BC5 00 00 EA E7 04 00 EA FD 04 00 EA 04 05 00 EA 0B 05 00 EA 29 05 00 EA
@00000BDC 4C 05 00 EA 4E 05 00 EA 03 00 00 6A 10 00 BD E8 68 E0 9F E5 0E 40 44
@00000BF3 E0 D8 FF FF EA 00 40 BD E8 01 00 2D E9 54 00 9F E5 00 E0 4E E0 04 40
@00000C0A 8E E0 01 40 BD E8 01 F2 9E E3 00 40 BD E8 01 F2 DE E3 57 05 00 EB 00
@00000C21 00 A0 73 E2 81 FD 78 02 01 10 E3 01 01 80 03 E2 41 BD E8 01 F2 9E E3
@00000C38 28 D0 9C E5 7E 00 A0 E3 06 00 02 EF 04 00 8F E2 00 40 BD E8 01 F2 9E
@00000C4F E3 11 00 00 00 45 73 63 61 70 65 00 00 00 FE 01 00 49 44 45 46 53 00
@00000C66 44 69 73 63 4F 70 00 4E 4F 50 00 44 72 69 76 65 73 00 46 72 65 65 53
@00000C7D 70 61 63 65 00 4E 4F 50 00 44 65 73 63 72 69 62 65 44 69 73 63 00 4E
@00000C94 4F 50 00 4E 4F 50 00 4E 4F 50 00 4E 4F 50 00 4E 4F 50 00 4E 4F 50 00
@00000CAB 4E 4F 50 00 4E 4F 50 00 4E 4F 50 00 4E 4F 50 00 4E 4F 50 00 4E 4F 50
@00000CC2 00 4E 4F 50 00 4E 4F 50 00 4E 4F 50 00 4E 4F 50 00 4E 4F 50 00 4E 4F
@00000CD9 50 00 4E 4F 50 00 4E 4F 50 00 4E 4F 50 00 4E 4F 50 00 4E 4F 50 00 4E
@00000CF0 4F 50 00 4E 4F 50 00 4E 4F 50 00 4E 4F 50 00 4E 4F 50 00 4E 4F 50 00
@00000D07 4E 4F 50 00 4E 4F 50 00 4E 4F 50 00 4E 4F 50 00 4E 4F 50 00 4E 4F 50
@00000D1E 00 4E 4F 50 00 4E 4F 50 00 4E 4F 50 00 4E 4F 50 00 4E 4F 50 00 4E 4F
@00000D35 50 00 4E 4F 50 00 4E 4F 50 00 4E 4F 50 00 4E 4F 50 00 4E 4F 50 00 4E
@00000D4C 4F 50 00 4E 4F 50 00 4E 4F 50 00 4E 4F 50 00 4E 4F 50 00 4E 4F 50 00
@00000D63 4E 4F 50 00 4E 4F 50 00 54 65 73 74 52 65 61 64 79 00 44 72 69 76 65
@00000D7A 49 6E 66 6F 00 53 79 73 49 6E 66 6F 00 54 69 6D 65 72 00 00 00 00 49
@00000D91 44 45 46 53 00 00 00 70 09 00 00 00 00 00 00 8F 05 00 00 5C 05 00 00
@00000DA8 49 44 45 46 53 44 69 72 43 61 63 68 65 00 00 00 D0 0D 00 00 01 00 01
@00000DBF 40 2C 06 00 00 9E 05 00 00 49 44 45 46 53 44 72 69 76 65 00 00 24 0C
@00000DD6 00 00 01 00 01 40 93 06 00 00 57 06 00 00 49 44 45 46 53 44 69 73 63
@00000DED 73 00 00 FC 0C 00 00 01 00 01 40 04 07 00 00 B9 06 00 00 49 44 45 46
@00000E04 53 54 69 6D 65 72 00 00 9C 0A 00 00 01 00 02 00 1F 08 00 00 28 07 00
@00000E1B 00 49 44 45 46 53 54 69 6D 65 72 00 00 08 0B 00 00 01 00 01 40 EA 08
@00000E32 00 00 45 08 00 00 49 44 45 46 53 44 65 76 69 63 65 73 00 00 00 00 FC
@00000E49 1D 00 00 00 00 00 00 59 09 00 00 10 09 00 00 00 00 00 00 2A 49 44 45
@00000E60 46 53 20 73 65 6C 65 63 74 73 20 49 44 45 46 53 20 61 73 20 74 68 65
@00000E77 20 63 75 72 72 65 6E 74 20 66 69 6C 69 6E 67 20 73 79 73 74 65 6D 2E
@00000E8E 0D 53 79 6E 74 61 78 3A 20 2A 49 44 45 46 53 00 2A 43 6F 6E 66 69 67
@00000EA5 75 72 65 20 49 44 45 46 53 44 69 72 43 61 63 68 65 20 73 65 74 73 20
@00000EBC 74 68 65 20 73 69 7A 65 20 6F 66 20 74 68 65 20 64 69 72 65 63 74 6F
@00000ED3 72 79 20 63 61 63 68 65 20 28 69 6E 20 4B 62 79 74 65 73 29 20 75 73
@00000EEA 65 64 20 62 79 20 49 44 45 46 53 2E 20 41 20 76 61 6C 75 65 20 6F 66
@00000F01 20 30 20 73 65 6C 65 63 74 73 20 61 20 64 65 66 61 75 6C 74 20 62 61
@00000F18 73 65 64 20 6F 6E 20 6D 65 6D 6F 72 79 20 73 69 7A 65 2E 0D 53 79 6E
@00000F2F 74 61 78 3A 20 2A 43 6F 6E 66 69 67 75 72 65 20 49 44 45 46 53 44 69
@00000F46 72 43 61 63 68 65 20 3C 73 69 7A 65 3E 5B 4B 5D 00 2A 43 6F 6E 66 69
@00000F5D 67 75 72 65 20 49 44 45 46 53 44 72 69 76 65 20 73 65 74 73 20 74 68
@00000F74 65 20 73 74 61 72 74 75 70 20 64 72 69 76 65 20 75 73 65 64 20 62 79
@00000F8B 20 49 44 45 46 53 2E 0D 53 79 6E 74 61 78 3A 20 2A 43 6F 6E 66 69 67
@00000FA2 75 72 65 20 49 44 45 46 53 44 72 69 76 65 20 3C 64 72 69 76 65 3E 00
@00000FB9 2A 43 6F 6E 66 69 67 75 72 65 20 49 44 45 46 53 44 69 73 63 73 20 73
@00000FD0 65 74 73 20 74 68 65 20 6E 75 6D 62 65 72 20 6F 66 20 49 44 45 20 64
@00000FE7 69 73 63 73 20 61 74 74 61 63 68 65 64 20 74 6F 20 74 68 65 20 73 79
@00000FFE 73 74 65 6D 2E 0D 53 79 6E 74 61 78 3A 20 2A 43 6F 6E 66 69 67 75 72
@00001015 65 20 49 44 45 46 53 44 69 73 63 73 20 3C 30 2D 32 3E 00 2A 49 44 45
@0000102C 46 53 54 69 6D 65 72 20 73 65 74 73 20 74 68 65 20 70 65 72 69 6F 64
@00001043 20 6F 66 20 74 69 6D 65 2C 20 69 6E 20 73 65 63 6F 6E 64 73 20 72 6F
@0000105A 75 6E 64 65 64 20 74 6F 20 74 68 65 20 6E 65 61 72 65 73 74 20 66 69
@00001071 76 65 2C 20 62 65 74 77 65 65 6E 20 74 68 65 20 6C 61 73 74 20 64 69
@00001088 73 63 20 61 63 63 65 73 73 20 61 6E 64 20 74 68 65 20 64 72 69 76 65
@0000109F 20 73 68 75 74 74 69 6E 67 20 64 6F 77 6E 2E 20 49 66 20 6E 6F 20 76
@000010B6 61 6C 75 65 20 69 73 20 73 70 65 63 69 66 69 65 64 2C 20 6F 72 20 7A
@000010CD 65 72 6F 20 69 73 20 67 69 76 65 6E 2C 20 74 68 65 20 73 68 75 74 64
@000010E4 6F 77 6E 20 66 65 61 74 75 72 65 20 69 73 20 64 69 73 61 62 6C 65 64
@000010FB 2E 20 54 68 65 20 6D 61 78 69 6D 75 6D 20 64 65 6C 61 79 20 69 73 20
@00001112 31 35 30 20 73 65 63 6F 6E 64 73 2E 0D 53 79 6E 74 61 78 3A 20 2A 49
@00001129 44 45 46 53 54 69 6D 65 72 20 3C 64 72 69 76 65 3E 20 5B 3C 64 65 6C
@00001140 61 79 3E 5D 00 2A 43 6F 6E 66 69 67 75 72 65 20 49 44 45 46 53 54 69
@00001157 6D 65 72 20 73 65 74 73 20 74 68 65 20 64 65 66 61 75 6C 74 20 73 68
@0000116E 75 74 64 6F 77 6E 20 70 65 72 69 6F 64 20 66 6F 72 20 61 6C 6C 20 74
@00001185 68 65 20 61 74 74 61 63 68 65 64 20 64 72 69 76 65 73 2E 20 41 20 76
@0000119C 61 6C 75 65 20 6F 66 20 7A 65 72 6F 20 64 69 73 61 62 6C 65 73 20 74
@000011B3 68 65 20 73 68 75 74 64 6F 77 6E 20 66 65 61 74 75 72 65 2E 20 53 65
@000011CA 65 20 2A 49 44 45 46 53 54 69 6D 65 72 20 66 6F 72 20 6D 6F 72 65 20
@000011E1 64 65 74 61 69 6C 73 2E 0D 53 79 6E 74 61 78 3A 20 2A 43 6F 6E 66 69
@000011F8 67 75 72 65 20 49 44 45 46 53 54 69 6D 65 72 20 3C 64 65 6C 61 79 3E
@0000120F 00 2A 49 44 45 46 53 44 65 76 69 63 65 73 20 64 69 73 70 6C 61 79 73
@00001226 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 20 6F 6E 20 65 61 63 68 20 64 72
@0000123D 69 76 65 20 61 74 74 61 63 68 65 64 20 74 6F 20 74 68 65 20 73 79 73
@00001254 74 65 6D 2E 0D 53 79 6E 74 61 78 3A 20 2A 49 44 45 46 53 44 65 76 69
@0000126B 63 65 73 00 00 00 40 2D E9 0E 00 A0 E3 04 10 8F E2 29 00 02 EF 00 80
@00001282 BD E8 49 44 45 46 53 00 00 00 00 41 2D E9 00 C0 9C E4 06 00 5B E3 02
@00001299 00 00 3A 3C 00 5B E3 35 00 00 3A 36 B0 4B E2 0B F1 8F E0 00 00 00 00
@000012B0 25 00 00 EA 30 00 00 EA 26 00 00 EA 28 00 00 EA 2D 00 00 EA 29 00 00
@000012C7 EA 25 05 00 EA 30 04 00 EA 1A 00 00 EA FF FF FF EA 06 00 2D E9 03 00
@000012DE 00 E2 75 01 00 EB E5 00 A0 E3 B3 03 00 EB 06 81 BD 68 08 00 9C E5 08
@000012F5 20 D0 E5 01 00 71 E3 0B 00 00 0A 01 00 2D E9 04 00 81 E2 05 10 A0 E3
@0000130C 06 03 00 EB 00 10 A0 E1 01 00 BD E8 08 10 C0 E5 00 00 32 E3 E2 00 A0
@00001323 03 E3 00 A0 13 A3 03 00 EB 06 81 BD 68 00 00 32 E3 00 00 E0 13 00 00
@0000133A A0 03 06 81 FD E8 00 00 30 E3 10 00 A0 03 00 81 FD E8 00 80 9C E5 40
@00001351 05 06 EF 00 81 BD E8 00 80 9C E5 42 05 06 EF 00 81 BD E8 00 80 9C E5
@00001368 43 05 06 EF 00 81 BD E8 00 80 9C E5 45 05 06 EF 00 81 BD E8 00 81 FD
@0000137F E8 00 31 01 00 55 6E 72 65 63 6F 67 6E 69 73 65 64 20 49 44 45 46 53
@00001396 20 53 57 49 00 00 02 40 2D E9 00 C0 9C E4 7F 00 00 EB 02 80 BD 68 01
@000013AD 30 A0 E1 01 00 A0 E3 17 01 00 EB 03 10 01 E2 04 10 81 E2 01 00 52 E1
@000013C4 02 40 BD 28 21 0E 8F 22 01 F2 9E 23 03 10 A0 E1 02 30 A0 E1 01 00 A0
@000013DB E1 02 00 BD E8 02 00 31 E3 00 20 A0 13 E2 00 00 0B 00 80 BD 68 05 00
@000013F2 A0 E3 90 02 02 E0 03 00 A0 E1 02 10 A0 E1 FF 1F 06 EF 00 80 BD E8 00
@00001409 40 2D E9 00 C0 9C E4 01 00 50 E3 29 00 00 8A 07 00 00 0A 04 00 8F E2
@00001420 02 00 02 EF 00 80 BD E8 49 44 45 46 53 54 69 6D 65 72 20 3C 44 3E 0A
@00001437 0D 00 00 00 00 01 00 A0 E3 F4 00 00 EB 54 00 8F E2 02 00 02 EF A1 01
@0000144E A0 E1 01 00 2D E9 00 00 30 E3 4C 00 8F 02 06 00 00 0A 00 01 80 E0 0C
@00001465 10 8C E2 0C 20 A0 E3 28 00 02 EF 00 00 A0 73 02 00 C1 77 01 00 A0 71
@0000147C 02 00 02 7F 04 D0 8D 62 00 80 BD 68 01 00 BD E8 00 00 30 E3 1D 00 8F
@00001493 12 02 00 02 1F 03 00 02 7F 00 80 BD E8 49 44 45 46 53 54 69 6D 65 72
@000014AA 20 00 64 69 73 61 62 6C 65 64 00 20 73 65 63 6F 6E 64 73 00 00 00 AC
@000014C1 00 00 EB 00 80 BD 68 01 00 A0 E3 D1 00 00 EB F8 10 C1 73 82 11 81 71
@000014D8 D5 00 00 7B 00 80 BD E8 07 40 2D E9 01 20 00 E2 3A 20 82 E2 02 00 DC
@000014EF E7 00 00 30 E3 08 00 00 1A 01 00 A0 E3 C5 00 00 EB A1 11 A0 E1 05 00
@00001506 A0 E3 90 01 01 E0 00 00 9D E4 FF 1F 06 EF 01 00 A0 E3 02 00 CC E7 07
@0000151D 40 BD E8 01 F2 DE E3 00 40 2D E9 00 C0 9C E4 01 00 50 E3 14 00 00 8A
@00001534 07 00 00 0A 04 00 8F E2 02 00 02 EF 00 80 BD E8 49 44 45 46 53 44 72
@0000154B 69 76 65 20 3C 44 3E 0A 0D 00 00 00 00 01 00 A0 E3 AD 00 00 EB 14 00
@00001562 8F E2 02 00 02 EF 04 00 01 E2 34 00 80 E3 00 00 02 7F 03 00 00 7F 00
@00001579 80 BD E8 49 44 45 46 53 44 72 69 76 65 20 00 06 00 00 EB 01 20 02 72
@00001590 01 00 A0 73 9F 00 00 7B 04 10 C1 73 02 11 81 71 A3 00 00 7B 00 80 BD
@000015A7 E8 00 40 2D E9 00 10 A0 E1 0A 00 A0 E3 21 00 02 EF 00 80 BD 68 04 00
@000015BE 52 E3 03 00 00 3A 05 00 52 E3 01 00 00 8A 00 40 BD E8 01 F2 DE E3 04
@000015D5 00 8F E2 00 40 BD E8 01 F2 9E E3 01 31 01 00 42 61 64 20 49 44 45 20
@000015EC 64 72 69 76 65 20 6E 75 6D 62 65 72 00 00 00 00 00 40 2D E9 00 C0 9C
@00001603 E4 01 00 50 E3 14 00 00 8A 07 00 00 0A 04 00 8F E2 02 00 02 EF 00 80
@0000161A BD E8 49 44 45 46 53 44 69 73 63 73 20 3C 44 3E 0A 0D 00 00 00 00 01
@00001631 00 A0 E3 77 00 00 EB 14 00 8F E2 02 00 02 EF 03 00 01 E2 30 00 80 E3
@00001648 00 00 02 7F 03 00 00 7F 00 80 BD E8 49 44 45 46 53 44 69 73 63 73 20
@0000165F 00 05 00 00 EB 01 00 A0 73 6A 00 00 7B 03 10 C1 E3 02 10 81 E1 6E 00
@00001676 00 7B 00 80 BD E8 00 40 2D E9 00 10 A0 E1 0A 00 A0 E3 21 00 02 EF 00
@0000168D 80 BD 68 00 00 52 E3 03 00 00 3A 02 00 52 E3 01 00 00 8A 00 40 BD E8
@000016A4 01 F2 DE E3 04 00 8F E2 00 40 BD E8 01 F2 9E E3 02 31 01 00 42 61 64
@000016BB 20 6E 75 6D 62 65 72 20 6F 66 20 49 44 45 20 64 69 73 63 73 00 00 40
@000016D2 2D E9 00 C0 9C E4 01 00 50 E3 1A 00 00 8A 08 00 00 0A 04 00 8F E2 02
@000016E9 00 02 EF 00 80 BD E8 49 44 45 46 53 44 69 72 43 61 63 68 65 20 3C 44
@00001700 3E 5B 4B 5D 0A 0D 00 00 2C 00 8F E2 02 00 02 EF 00 80 BD 68 00 00 A0
@00001717 E3 3E 00 00 EB 01 00 A0 E1 0C 10 8C E2 0C 20 A0 E3 D5 00 02 EF 02 00
@0000172E 00 7F 4B 01 00 7F 03 00 00 7F 00 80 BD E8 49 44 45 46 53 44 69 72 43
@00001745 61 63 68 65 20 00 00 00 10 A0 E1 0A 00 A0 E3 01 01 80 E2 21 00 02 EF
@0000175C 00 80 BD 68 00 00 32 E3 1C 00 00 0B 00 00 A0 E3 02 10 A0 E1 2F 00 00
@00001773 EB 00 80 BD E8 01 40 2D E9 00 10 A0 E1 0A 00 A0 E3 21 00 02 EF 02 80
@0000178A BD 68 00 10 8D E4 96 00 52 E3 1C 00 8F 82 02 40 BD 88 01 F2 9E 83 04
@000017A1 00 82 E2 05 10 A0 E3 DF 01 00 EB 00 20 A0 E1 02 40 BD E8 01 F2 DE E3
@000017B8 03 31 01 00 53 70 65 63 69 66 69 65 64 20 74 69 6D 65 6F 75 74 20 69
@000017CF 73 20 74 6F 6F 20 6C 6F 6E 67 00 00 00 FF 40 2D E9 00 00 A0 E3 00 10
@000017E6 A0 E3 00 20 A0 E3 00 30 A0 E3 0F 00 2D E9 F0 00 BD E8 12 00 02 EF 08
@000017FD 00 A0 63 42 09 A0 71 08 00 8D E5 FF 80 FD E8 05 40 2D E9 00 10 A0 E1
@00001814 01 00 00 EA 05 40 2D E9 0B 00 00 EB A1 00 A0 E3 06 00 02 EF 00 00 8D
@0000182B 64 02 10 A0 E1 05 80 BD E8 07 40 2D E9 01 20 A0 E1 03 00 00 EB A2 00
@00001842 A0 E3 06 00 02 EF 00 00 8D 64 07 80 BD E8 08 10 9C E5 03 19 01 E2 21
@00001859 16 80 E0 70 10 81 E2 0E F0 B0 E1 07 40 2D E9 08 10 9C E5 1C 10 81 E2
@00001870 42 00 02 EF FA 2F A0 E3 02 20 80 E0 00 00 D1 E4 80 00 10 E3 07 40 BD
@00001887 08 01 F2 DE 03 42 00 02 EF 00 00 52 E1 F8 FF FF CA 07 40 BD E8 00 00
@0000189E 8F E2 01 F2 9E E3 04 31 01 00 49 44 45 20 64 72 69 76 65 20 6E 6F 74
@000018B5 20 72 65 61 64 79 00 0F 40 2D E9 08 20 9C E5 01 00 10 E3 B0 00 A0 13
@000018CC A0 00 A0 03 18 00 C2 E5 00 00 A0 E1 18 10 D2 E5 08 30 D2 E5 01 00 30
@000018E3 E1 0F 40 BD E8 01 F2 DE 03 00 00 8F E2 01 F2 9E E3 05 31 01 00 49 44
@000018FA 45 20 64 72 69 76 65 20 6E 6F 74 20 70 72 65 73 65 6E 74 00 00 00 07
@00001911 40 2D E9 D2 FF FF EB 04 D0 8D 62 06 80 BD 68 08 10 9C E5 1C 10 81 E2
@00001928 00 00 C1 E4 14 00 A0 E3 01 00 50 E2 FD FF FF 1A 00 00 D1 E4 80 00 10
@0000193F E3 FC FF FF 1A 07 40 BD E8 01 F2 DE E3 0E 40 2D E9 20 00 00 EB 03 00
@00001956 00 7A 02 01 10 E3 58 00 8F 12 01 01 80 13 0E 80 BD E8 08 30 9D E5 07
@0000196D 3D 83 E2 00 10 D3 E4 08 10 41 E2 09 20 D3 E5 12 11 A0 E1 00 00 9D E4
@00001984 03 00 00 E2 02 00 80 E2 A8 FF FF EB 00 10 9D E4 03 10 01 E2 01 10 8C
@0000199B E0 01 00 D3 E5 1A 00 C1 E5 02 00 D3 E5 18 00 C1 E5 00 00 9D E4 CA FE
@000019B2 FF EB 00 00 A0 E3 0E 80 FD E8 06 31 01 00 43 61 6E 6E 6F 74 20 6D 6F
@000019C9 75 6E 74 20 49 44 45 20 64 72 69 76 65 00 00 3F 40 2D E9 42 00 02 EF
@000019E0 FA 2F A0 E3 02 20 80 E0 0C 20 8C E5 3F 00 9D E8 1A 00 00 EB 06 00 00
@000019F7 6A 3F 00 9D E8 81 2E 82 E1 06 10 A0 E3 40 10 81 E3 10 50 8C E2 36 FC
@00001A0E FF EB 08 00 00 7A 00 10 A0 E1 42 00 02 EF 0C 20 9C E5 00 00 52 E1 F0
@00001A25 FF FF CA 01 00 A0 E1 04 D0 8D E2 3E 40 BD E8 01 F2 9E E3 3F 00 9D E8
@00001A3C 81 2E 82 E1 01 10 A0 E3 40 10 81 E3 10 50 8C E2 26 FC FF EB 04 D0 8D
@00001A53 62 3E 80 BD 68 3F 80 FD E8 09 07 01 00 00 40 2D E9 81 2E A0 E1 03 10
@00001A6A A0 E3 40 10 81 E3 1C 50 4F E2 08 00 2D E9 1B FC FF EB 08 00 BD E8 00
@00001A81 80 BD 68 09 00 A0 E3 10 00 CC E5 0C 00 D3 E5 11 00 CC E5 06 00 D3 E5
@00001A98 12 00 CC E5 00 80 BD E8 F7 41 2D E9 08 10 9C E5 1C 50 9C E5 00 00 35
@00001AAF E3 80 01 B3 18 1C 00 D1 E5 01 00 10 E3 DA 00 00 1A 08 00 10 E3 FA FF
@00001AC6 FF 0A 02 2C A0 E3 C0 6C 9F E5 1C 50 9C E5 00 00 35 E3 2A 00 00 1A 03
@00001ADD 00 13 E3 16 00 00 0A 01 00 13 E3 0B 00 00 0A 02 20 52 E2 EF FF FF 4A
@00001AF4 00 00 91 E5 01 00 C3 E4 02 40 54 E2 20 04 A0 51 01 00 C3 54 16 00 00
@00001B0B 0A F6 FF FF 5A 14 00 00 EA 04 20 82 E2 F3 FF FF EA 02 00 54 E3 F1 FF
@00001B22 FF 3A 00 00 91 E5 01 00 C3 E4 20 04 A0 E1 01 00 C3 E4 02 20 42 E2 02
@00001B39 40 54 E2 09 00 00 0A 04 20 52 E2 04 00 54 A3 F1 FF FF BA 00 50 91 E5
@00001B50 00 00 91 E5 06 50 05 E0 00 58 85 E1 04 50 83 E4 04 40 54 E2 F5 FF FF
@00001B67 1A 1C 00 91 E5 08 00 10 E3 00 00 91 15 FB FF FF 1A F7 41 BD E8 04 20
@00001B7E 82 E0 00 40 A0 E3 01 F2 DE E3 03 00 17 E3 1C 00 00 0A 01 00 17 E3 0F
@00001B95 00 00 0A 02 20 52 E2 C4 FF FF 4A 00 00 91 E5 01 00 C7 E4 02 40 54 E2
@00001BAC 20 04 A0 51 01 00 C7 54 0F 00 B0 E1 02 80 58 E2 80 01 B3 08 00 F0 30
@00001BC3 E3 1A 00 00 0A F2 FF FF 5A 18 00 00 EA 04 20 82 E2 EF FF FF EA 02 00
@00001BDA 54 E3 ED FF FF 3A 00 00 91 E5 01 00 C7 E4 20 04 A0 E1 01 00 C7 E4 02
@00001BF1 80 58 E2 80 01 B3 08 02 20 42 E2 02 40 54 E2 0B 00 00 0A 04 20 52 E2
@00001C08 04 00 54 A3 EF FF FF BA 00 50 91 E5 00 00 91 E5 06 50 05 E0 00 58 85
@00001C1F E1 04 50 87 E4 04 80 58 E2 80 01 B3 08 04 40 54 E2 F3 FF FF 1A 1C 00
@00001C36 91 E5 08 00 10 E3 00 00 91 15 FB FF FF 1A 00 00 38 E3 80 01 23 19 F7
@00001C4D 41 BD E8 04 20 82 E0 00 40 A0 E3 01 F2 DE E3 F7 41 2D E9 08 10 9C E5
@00001C64 1C 50 9C E5 00 00 35 E3 80 01 B3 18 1C 00 D1 E5 01 00 10 E3 6B 00 00
@00001C7B 1A 08 00 10 E3 FA FF FF 0A 02 2C A0 E3 1C 50 9C E5 00 00 35 E3 2D 00
@00001C92 00 1A 03 00 13 E3 16 00 00 0A 01 00 13 E3 0A 00 00 0A 02 20 52 E2 F0
@00001CA9 FF FF 4A 01 00 D3 E4 02 40 54 E2 01 50 D3 54 05 04 80 51 00 08 A0 E1
@00001CC0 00 00 81 E5 15 00 00 0A F5 FF FF 5A 13 00 00 EA 02 00 54 E3 F2 FF FF
@00001CD7 3A 01 00 D3 E4 01 50 D3 E4 05 04 80 E1 00 08 A0 E1 00 00 81 E5 02 20
@00001CEE 42 E2 02 40 54 E2 09 00 00 0A 04 00 52 E3 04 00 54 23 E7 FF FF 3A 04
@00001D05 50 93 E4 05 08 A0 E1 00 00 81 E5 00 50 81 E5 04 20 42 E2 04 40 54 E2
@00001D1C F5 FF FF 1A 00 00 52 E3 00 00 81 15 02 20 42 12 FB FF FF 1A 1C 00 D1
@00001D33 E5 80 00 10 E3 FC FF FF 1A F7 41 BD E8 04 20 82 E0 00 40 A0 E3 01 F2
@00001D4A DE E3 03 00 17 E3 1C 00 00 0A 01 00 17 E3 0E 00 00 0A 02 20 52 E2 C2
@00001D61 FF FF 4A 01 00 D7 E4 02 40 54 E2 01 50 D7 54 05 04 80 51 00 08 A0 E1
@00001D78 00 00 81 E5 0F 00 B0 E1 02 80 58 E2 80 01 B3 08 00 F0 30 E3 19 00 00
@00001D8F 0A F1 FF FF 5A 17 00 00 EA 02 00 54 E3 EE FF FF 3A 01 00 D7 E4 01 50
@00001DA6 D7 E4 05 04 80 E1 00 08 A0 E1 00 00 81 E5 02 80 58 E2 80 01 B3 08 02
@00001DBD 20 42 E2 02 40 54 E2 0B 00 00 0A 04 00 52 E3 04 00 54 23 E1 FF FF 3A
@00001DD4 04 50 97 E4 05 08 A0 E1 00 00 81 E5 00 50 81 E5 04 80 58 E2 80 01 B3
@00001DEB 08 04 20 42 E2 04 40 54 E2 F3 FF FF 1A 00 00 52 E3 00 00 81 15 02 20
@00001E02 42 12 FB FF FF 1A 1C 00 D1 E5 80 00 10 E3 FC FF FF 1A 00 00 38 E3 80
@00001E19 01 23 19 F7 41 BD E8 04 20 82 E0 00 40 A0 E3 01 F2 DE E3 28 D0 9C E5
@00001E30 8B FE FF EB 13 00 00 EB 01 00 00 EB 00 40 BD E8 01 F2 9E E3 42 04 A0
@00001E47 E1 08 10 9C E5 04 10 D1 E5 10 50 01 E2 C0 60 01 E2 07 10 01 E2 A5 10
@00001E5E 81 E1 26 11 81 E1 01 0C 80 E1 08 10 9C E5 18 10 D1 E5 10 10 11 E2 02
@00001E75 05 80 03 0A 06 80 13 01 01 C0 E3 02 01 80 E3 0E F0 B0 E1 78 40 2D E9
@00001E8C 08 30 9C E5 10 40 D3 E5 14 50 D3 E5 05 44 84 E1 38 50 DC E5 95 04 04
@00001EA3 E0 18 50 D3 E5 0F 50 05 E2 05 40 84 E0 39 50 DC E5 95 04 04 E0 0C 50
@00001EBA D3 E5 01 50 45 E2 05 40 84 E0 84 24 A0 E1 78 80 FD E8 1F 40 2D E9 08
@00001ED1 40 9C E5 0E 22 C2 E3 A2 04 A0 E1 39 10 DC E5 11 00 00 EB 01 10 81 E2
@00001EE8 0C 10 C4 E5 38 10 DC E5 0D 00 00 EB 18 30 D4 E5 0F 30 C3 E3 01 30 83
@00001EFF E1 18 30 C4 E5 10 00 C4 E5 20 04 A0 E1 14 00 C4 E5 10 00 9D E5 A0 14
@00001F16 A0 E1 81 24 A0 E1 02 00 30 E1 01 10 81 12 08 10 C4 E5 1F 80 FD E8 0C
@00001F2D 40 2D E9 01 30 A0 E1 A0 00 53 E1 83 30 A0 91 A0 00 53 E1 FC FF FF 9A
@00001F44 00 20 A0 E3 03 00 50 E1 03 00 40 20 02 20 A2 E0 A3 30 A0 E1 01 00 53
@00001F5B E1 F9 FF FF 2A 00 10 A0 E1 02 00 A0 E1 0C 80 FD E8 00 00 34 E3 00 40
@00001F72 BD 08 01 F2 DE 03 C2 FF FF EB 04 00 2D E9 40 00 A0 E3 61 FE FF EB 08
@00001F89 10 9C E5 1C 00 D1 E5 01 00 10 E3 06 00 00 0A BA FF FF EB 01 00 BD E8
@00001FA0 00 00 42 E0 00 40 44 E0 A5 FF FF EB 00 40 BD E8 01 F2 9E E3 04 00 BD
@00001FB7 E8 04 20 82 E0 00 40 A0 E3 00 40 BD E8 01 F2 DE E3 00 00 34 E3 00 40
@00001FCE BD 08 01 F2 DE 03 20 00 A0 E3 4C FE FF EB AF FE FF 7B 00 40 BD E8 01
@00001FE5 F2 DE E3 00 00 34 E3 00 40 BD 08 01 F2 DE 03 30 00 A0 E3 44 FE FF EB
@00001FFC 16 FF FF 7B 00 40 BD E8 01 F2 DE E3 EC 00 A0 E3 3F FE FF EB 00 80 BD
@00002013 68 08 50 9C E5 1C 00 D5 E5 01 00 10 E3 38 00 8F 12 00 40 BD 18 01 F2
@0000202A 9E 13 08 00 10 E3 F8 FF FF 0A 00 60 95 E5 54 07 9F E5 00 60 06 E0 00
@00002041 70 95 E5 07 68 86 E1 04 60 83 E4 1C 00 D5 E5 08 00 10 E3 F6 FF FF 1A
@00002058 00 40 BD E8 01 F2 DE E3 07 31 01 00 43 61 6E 6E 6F 74 20 72 65 61 64
@0000206F 20 64 72 69 76 65 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 00 00 00 10 00
@00002086 2D E9 08 10 9C E5 39 00 DC E5 08 00 C1 E5 50 00 A0 E3 1C FE FF EB 10
@0000209D 80 BD 68 1C 00 D1 E5 01 00 10 E3 50 00 8F 12 10 40 BD 18 01 F2 9E 13
@000020B4 08 00 10 E3 F8 FF FF 0A 02 6C A0 E3 01 40 D3 E4 01 00 D3 E4 04 04 80
@000020CB E1 00 08 A0 E1 00 00 81 E5 02 60 56 E2 F8 FF FF 1A 1C 00 D1 E5 01 00
@000020E2 10 E3 14 00 8F 12 10 40 BD 18 01 F2 9E 13 80 00 10 E3 F8 FF FF 1A 10
@000020F9 40 BD E8 01 F2 DE E3 08 31 01 00 46 6F 72 6D 61 74 20 65 72 72 6F 72
@00002110 00 00 00 00 70 00 A0 E3 FC FD FF EB 00 80 BD E8 10 00 A0 E3 F9 FD FF
@00002127 EB 00 80 BD E8 07 40 2D E9 08 20 9C E5 08 10 C2 E5 18 10 D2 E5 01 00
@0000213E 40 E2 0F 00 00 E2 00 10 81 E1 18 10 C2 E5 91 00 A0 E3 EE FD FF EB 01
@00002155 01 80 63 00 00 8D 64 07 80 BD E8 07 40 2D E9 E5 00 A0 E3 01 10 A0 E3
@0000216C 00 20 A0 E3 06 00 02 EF 01 1C 81 E3 24 10 8C E5 07 80 FD E8 07 40 2D
@00002183 E9 24 10 9C E5 00 00 31 E3 07 80 FD 08 00 20 A0 E3 E5 00 A0 E3 06 00
@0000219A 02 EF 07 80 FD E8 09 31 01 00 49 44 45 20 63 6F 6D 6D 61 6E 64 20 72
@000021B1 65 6A 65 63 74 65 64 00 00 00 00 03 40 2D E9 D2 FD FF EB 04 D0 8D 62
@000021C8 02 80 BD 68 08 10 9C E5 1C 10 D1 E5 01 00 11 E3 03 40 BD E8 44 00 4F
@000021DF 12 01 F2 9E 13 01 F2 DE 03 03 40 2D E9 08 10 9C E5 01 1B 41 E2 01 00
@000021F6 A0 E3 00 00 C1 E4 03 80 FD E8 07 40 2D E9 00 C0 9C E4 27 00 31 E3 05
@0000220D 00 00 1A 00 00 3C E3 2C 20 9C 15 00 00 32 13 07 00 A0 13 1E 00 02 1F
@00002224 07 80 FD E8 07 80 FD E8 06 40 2D E9 30 10 9C E5 34 20 9C E5 00 00 31
@0000223B E3 01 00 00 1A 00 00 02 EF 06 80 BD E8 00 00 32 E3 18 00 8F 02 06 40
@00002252 BD 08 01 F2 9E 03 01 00 C1 E4 01 20 42 E2 30 10 8C E5 34 20 8C E5 06
@00002269 80 FD E8 0A 31 01 00 42 75 66 66 65 72 20 6F 76 65 72 66 6C 6F 77 00
@00002280 08 40 2D E9 00 30 A0 E1 01 00 D3 E4 00 00 30 E3 08 80 FD 08 E4 FF FF
@00002297 EB FA FF FF 7A 08 80 BD E8 01 40 2D E9 20 00 A0 E3 DF FF FF EB 00 00
@000022AE 8D 64 01 80 BD E8 07 40 2D E9 0C 10 8C E2 0C 20 A0 E3 28 00 02 EF 00
@000022C5 00 A0 73 02 00 C1 77 01 00 A0 71 EA FF FF 7B 00 00 8D 64 07 80 BD E8
@000022DC 02 40 2D E9 2C 10 9C E5 80 10 81 E0 01 00 D1 E5 00 10 D1 E4 01 04 80
@000022F3 E1 02 80 FD E8 02 40 2D E9 F6 FF FF EB EB FF FF EB 02 80 BD E8 07 40
@0000230A 2D E9 2C 20 9C E5 80 20 82 E0 81 10 82 E0 02 00 31 E1 07 80 FD 08 01
@00002321 00 71 E5 20 00 50 E3 FA FF FF 9A 01 10 81 E2 01 00 D2 E4 BC FF FF EB
@00002338 00 00 8D 64 07 80 BD 68 02 00 31 E1 F9 FF FF 1A 07 80 FD E8 0F 40 2D
@0000234F E9 06 00 A0 E3 02 3C A0 E3 1E 00 02 EF 2C 20 8C 75 00 00 8D 64 0F 80
@00002366 BD E8 07 40 2D E9 2C 20 9C E5 00 00 32 E3 07 80 FD 08 07 00 A0 E3 1E
@0000237D 00 02 EF 00 00 A0 73 2C 00 8C 75 00 00 8D 64 07 80 BD E8 00 00 00 20
@00002394 1F 00 2D E9 30 10 8C E5 34 20 8C E5 E9 FF FF EB 00 00 8D 64 1F 81 BD
@000023AB 68 80 2E A0 E1 2C 30 9C E5 03 10 A0 E3 10 10 81 E3 74 00 4F E2 00 13
@000023C2 81 E1 C0 1F 06 EF 89 00 00 6A 2C 20 9C E5 02 3C A0 E3 00 00 D2 E4 01
@000023D9 10 D2 E5 01 00 C2 E5 02 10 C2 E4 02 30 53 E2 F9 FF FF 1A 0F 00 9D E8
@000023F0 01 00 13 E3 36 00 00 0A 10 00 8F E2 02 0C 80 E2 9E FF FF EB 50 00 8F
@00002407 72 02 0C 80 72 9B FF FF 7B 1B 00 A0 73 14 10 A0 73 BA FF FF 7B 48 00
@0000241E 8F 72 02 0C 80 72 95 FF FF 7B 0A 00 A0 73 0A 10 A0 73 B4 FF FF 7B 40
@00002435 00 8F 72 02 0C 80 72 8F FF FF 7B 17 00 A0 73 04 10 A0 73 AE FF FF 7B
@0000244C 38 00 8F 72 02 0C 80 72 89 FF FF 7B 01 00 A0 73 A5 FF FF 7B 34 00 8F
@00002463 72 02 0C 80 72 84 FF FF 7B 03 00 A0 73 A0 FF FF 7B 30 00 8F 72 02 0C
@0000247A 80 72 7F FF FF 7B 06 00 A0 73 9B FF FF 7B 2C 00 8F 72 02 0C 80 72 7A
@00002491 FF FF 7B 01 00 A0 73 8F FF FF 7B 00 10 A0 71 03 00 A0 73 8C FF FF 7B
@000024A8 00 20 A0 71 06 00 A0 73 89 FF FF 7B 91 00 00 70 92 00 00 70 80 04 A0
@000024BF 71 7B FF FF 7B 00 00 8F 72 02 0C 80 72 6B FF FF 7B 47 00 00 6A 02 00
@000024D6 13 E3 3B 00 00 0A 51 00 8F E2 01 0C 80 E2 65 FF FF EB 37 00 00 6A 00
@000024ED 00 9D E4 30 00 80 E2 0C 00 CC E5 00 00 A0 E3 0D 00 CC E5 0C 00 8C E2
@00002504 2C 10 9C E5 C5 1F 06 EF 05 00 00 7A 00 00 5F E3 CB 00 8F E2 01 0C 80
@0000251B E2 57 FF FF EB 33 00 00 6A 28 00 00 EA A7 00 8F E2 01 0C 80 E2 52 FF
@00002532 FF EB 2E 00 00 6A 2C 10 9C E5 16 20 A0 E3 02 00 D1 E7 20 00 50 E3 04
@00002549 00 00 9A 36 FF FF EB 27 00 00 6A 01 20 82 E2 20 00 52 E3 F7 FF FF 1A
@00002560 49 0F 8F 72 45 FF FF 7B 21 00 00 6A 01 20 A0 E1 10 00 92 E5 02 10 D2
@00002577 E5 6B FE FF EB 01 10 D2 E5 69 FE FF EB C0 04 A0 E1 02 10 A0 E1 48 FF
@0000258E FF EB 41 0F 8F 72 39 FF FF 7B 02 00 D1 75 44 FF FF 7B 41 0F 8F 72 35
@000025A5 FF FF 7B 01 00 D1 75 40 FF FF 7B 41 0F 8F 72 31 FF FF 7B 10 00 91 75
@000025BC 3C FF FF 7B 41 0F 8F 72 2D FF FF 7B 09 00 00 6A 30 00 9C E5 00 00 30
@000025D3 E3 00 00 A0 13 13 FF FF 1B 61 FF FF EB 00 00 8D 64 0F 00 BD E8 30 10
@000025EA 9C E5 34 20 9C E5 10 81 BD E8 00 00 8D 64 5A FF FF EB 0F 00 BD E8 30
@00002601 10 9C E5 34 20 9C E5 10 41 BD E8 01 F2 9E E3 44 72 69 76 65 20 49 6E
@00002618 66 6F 72 6D 61 74 69 6F 6E 0A 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D
@0000262F 2D 2D 2D 2D 2D 00 46 6F 72 6D 61 74 20 49 6E 66 6F 72 6D 61 74 69 6F
@00002646 6E 0A 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 00 0A
@0000265D 0D 44 72 69 76 65 20 54 79 70 65 20 3A 20 00 0A 0D 53 65 72 69 61 6C
@00002674 20 4E 6F 2E 20 3A 20 00 0A 0D 56 65 72 73 69 6F 6E 20 20 20 20 3A 20
@0000268B 00 0A 0D 43 79 6C 69 6E 64 65 72 73 20 20 3A 20 00 0A 0D 48 65 61 64
@000026A2 73 20 20 20 20 20 20 3A 20 00 0A 0D 53 65 63 74 6F 72 73 20 20 20 20
@000026B9 3A 20 00 0A 0D 43 61 70 61 63 69 74 79 20 20 20 3A 20 00 20 62 79 74
@000026D0 65 73 0A 0D 0A 0D 00 0A 0D 44 69 73 63 20 6E 61 6D 65 20 20 3A 20 00
@000026E7 0A 0D 4E 6F 74 20 66 6F 72 6D 61 74 74 65 64 0A 0D 0A 0D 00 00 00 40
@000026FE 2D E9 00 C0 9C E4 C2 1F 06 EF 00 80 BD 68 02 40 A0 E1 04 50 A0 E3 01
@00002715 40 54 E2 00 80 BD 48 01 00 02 EF 0A 0D 44 72 69 76 65 20 00 00 00 00
@0000272C 30 00 85 E2 00 00 02 EF 01 00 02 EF 0A 0D 3D 3D 3D 3D 3D 3D 3D 0A 0D
@00002743 00 05 00 A0 E1 00 10 A0 E3 00 20 A0 E3 03 30 A0 E3 FD 1F 06 EF 01 50
@0000275A 85 72 EC FF FF 7A 00 80 BD E8 03 00 00 E2 53 FC FF EB 00 00 A0 63 00
@00002771 81 FD 68 08 80 9C E5 1C 80 88 E2 00 00 D8 E4 02 00 C0 E3 50 00 30 E3
@00002788 02 00 A0 03 01 00 A0 13 00 81 FD E8 FF FF 00 00 B4 02 00 00 00 00 00
@0000279F 00 3C 02 00 00 8C 01 00 00 1C 00 00 00 25 00 00 00 44 00 00 00 49 44
@000027B6 45 46 69 6C 65 72 00 49 44 45 46 69 6C 65 72 09 31 2E 30 37 20 28 30
@000027CD 32 20 4E 6F 76 20 31 39 39 31 29 00 00 00 00 44 65 73 6B 74 6F 70 5F
@000027E4 49 44 45 46 69 6C 65 72 00 00 00 00 20 01 00 00 00 00 00 00 03 01 00
@000027FB 00 69 00 00 00 00 54 68 65 20 49 44 45 20 46 69 6C 65 72 20 70 72 6F
@00002812 76 69 64 65 73 20 74 68 65 20 49 44 45 20 69 63 6F 6E 73 20 6F 6E 20
@00002829 74 68 65 20 69 63 6F 6E 20 62 61 72 2C 20 61 6E 64 20 75 73 65 73 20
@00002840 74 68 65 20 46 69 6C 65 72 20 74 6F 20 64 69 73 70 6C 61 79 20 49 44
@00002857 45 20 64 69 72 65 63 74 6F 72 69 65 73 2E 0D 0A 44 6F 20 6E 6F 74 20
@0000286E 75 73 65 20 2A 44 65 73 6B 74 6F 70 5F 49 44 45 46 69 6C 65 72 2C 20
@00002885 75 73 65 20 2A 44 65 73 6B 74 6F 70 20 69 6E 73 74 65 61 64 2E 00 53
@0000289C 79 6E 74 61 78 3A 20 2A 44 65 73 6B 74 6F 70 5F 49 44 45 46 69 6C 65
@000028B3 72 00 00 00 00 00 40 2D E9 00 E0 9C E4 00 00 5E E3 06 00 00 DA 00 E0
@000028CA 9E E5 00 00 5E E3 03 00 00 1A 00 20 A0 E1 4B 1F 4F E2 02 00 A0 E3 1E
@000028E1 00 02 EF 04 00 8F E2 02 01 5F E3 00 80 BD E8 A0 32 80 00 55 73 65 20
@000028F8 2A 44 65 73 6B 74 6F 70 20 74 6F 20 73 74 61 72 74 20 74 68 65 20 49
@0000290F 44 45 20 46 69 6C 65 72 20 61 70 70 6C 69 63 61 74 69 6F 6E 00 4B 00
@00002926 31 E3 06 00 00 0A 4C 00 31 E3 17 00 00 0A 27 00 31 E3 1B 00 00 0A 4F
@0000293D 00 31 E3 23 00 00 0A 0E F0 A0 E1 0F 40 2D E9 00 20 9C E4 00 00 52 E3
@00002954 0F 80 FD 18 06 00 A0 E3 31 3E A0 E3 1E 00 02 EF 00 20 E0 63 00 20 8C
@0000296B E4 0F 80 FD 68 00 00 9D E4 08 D0 8D E2 08 00 82 E5 00 00 A0 E3 00 00
@00002982 82 E5 04 C0 82 E5 6D 0F 4F E2 00 10 A0 E3 0C 80 FD E8 00 40 2D E9 00
@00002999 E0 9C E4 01 00 7E E3 00 E0 A0 03 00 E0 8C 04 00 80 FD E8 00 40 2D E9
@000029B0 00 20 9C E4 00 00 52 E3 00 20 A0 B3 00 20 8C B4 02 C0 A0 C1 00 00 A0
@000029C7 C3 00 00 8C C5 04 00 00 CB 00 80 FD E8 07 40 2D E9 00 C0 9C E4 00 00
@000029DE 00 EB 07 80 FD E8 00 00 5C E3 0E F0 A0 D1 00 40 2D E9 00 00 9C E5 00
@000029F5 00 50 E3 48 10 9F C5 DD 00 06 CF 0C 20 A0 E1 04 C0 9C E5 00 E0 A0 E3
@00002A0C 00 E0 8C E4 07 00 A0 E3 1E 00 02 EF 00 80 BD E8 A1 32 80 00 57 69 6E
@00002A23 64 6F 77 20 6D 61 6E 61 67 65 72 20 74 6F 6F 20 6F 6C 64 20 2F 20 6E
@00002A3A 6F 74 20 70 72 65 73 65 6E 74 00 00 00 00 54 41 53 4B 00 C0 9C E4 31
@00002A51 DE A0 E3 0D D0 8C E0 00 00 5C E3 5D 0F 4F D2 2B 00 00 DF 00 00 9C E5
@00002A68 00 00 50 E3 2C 10 1F C5 DD 00 06 CF C8 00 A0 E3 38 10 1F E5 10 20 8F
@00002A7F E2 02 2C 82 E2 C0 00 04 EF C8 00 50 E3 02 00 00 2A DD 00 06 EF 80 00
@00002A96 4F E2 2B 00 00 EF 48 00 8C E5 00 10 8C E5 C3 02 00 EB 7C 00 00 EB 60
@00002AAD 00 00 EB 1F 00 00 EB 32 01 00 EB 00 00 5F E3 04 00 00 7A 01 10 A0 E3
@00002AC4 C8 20 8F E2 01 2C 82 E2 DF 00 06 EF 2B 01 00 EB 42 00 00 EF 44 20 9C
@00002ADB E5 02 20 80 E0 00 0B 9F E5 40 10 9C E5 00 00 31 E3 01 00 C0 03 A0 10
@00002AF2 8C E2 E1 00 06 EF 2B 00 00 6F 00 00 30 E3 B0 00 00 0A 06 00 30 E3 B2
@00002B09 00 00 0A 09 00 30 E3 31 01 00 0A 11 00 30 E3 12 00 30 13 E6 FF FF 1A
@00002B20 10 00 91 E5 00 00 30 E3 E3 FF FF 1A A9 02 00 EB 11 00 00 EF FF 40 2D
@00002B37 E9 A4 10 8F E2 FC 00 91 E8 A0 10 8C E2 FC 00 81 E8 88 00 8F E2 1C 00
@00002B4E 81 E5 C2 1F 04 EF A0 10 8C E2 30 30 8C E2 70 50 8C E2 02 40 A0 E3 00
@00002B65 00 32 E3 00 00 E0 03 15 00 00 0A 18 50 81 E5 00 60 A0 E3 06 00 D5 E7
@00002B7C 20 00 50 E3 01 60 86 22 FB FF FF 2A 01 00 86 E2 20 00 81 E5 10 00 A0
@00002B93 E3 96 00 00 E0 60 00 50 E3 60 00 A0 33 0C 00 81 E5 48 00 9C E5 3C 6A
@00002BAA 9F E5 06 00 50 E1 05 00 E0 23 00 00 81 24 71 04 A0 23 C2 00 04 EF 01
@00002BC1 20 42 E2 0C 50 85 E2 04 00 83 E4 01 40 54 E2 E3 FF FF 1A FF 80 FD E8
@00002BD8 53 68 61 72 64 64 69 73 63 00 00 00 FE FF FF FF 00 00 00 00 F0 FF FF
@00002BEF FF 60 00 00 00 3C 00 00 00 2B 31 00 17 0F 40 2D E9 30 30 8C E2 02 20
@00002C06 A0 E3 A0 10 8C E2 01 00 E0 E3 00 00 81 E4 04 00 93 E4 01 00 70 E3 01
@00002C1D 00 00 0A 04 00 81 E5 C4 00 04 EF 01 20 52 E2 F8 FF FF 1A 0F 80 FD E8
@00002C34 3F 40 2D E9 70 10 8C E2 02 30 A0 E3 34 40 A0 E3 40 20 8F E2 00 50 A0
@00002C4B E3 01 00 D2 E4 A4 00 30 E3 04 00 A0 01 05 00 C1 E7 00 00 30 E3 01 50
@00002C62 85 12 F8 FF FF 1A 0C 10 81 E2 01 40 84 E2 01 30 53 E2 F2 FF FF 1A 00
@00002C79 00 A0 E3 40 00 8C E5 0A 00 A0 E3 44 00 8C E5 3F 80 FD E8 49 44 45 3A
@00002C90 A4 00 00 00 49 44 45 20 46 69 6C 65 72 00 00 00 06 00 A0 E3 A0 10 8F
@00002CA7 E2 0C 20 A0 E1 63 3F 8C E2 40 00 00 EF 0C 00 8C E2 0E 00 80 E8 0B 00
@00002CBE A0 E3 28 10 8F E2 0C 20 A0 E1 40 00 00 EF 24 00 8C E2 0E 00 80 E8 10
@00002CD5 00 A0 E3 58 10 8F E2 0C 20 A0 E1 40 00 00 EF 18 00 8C E2 0E 00 80 E8
@00002CEC 0E F0 B0 E1 02 00 00 EB 3A FF FF EB 36 02 00 EB 11 00 00 EF 0F 40 2D
@00002D03 E9 0C 00 8C E2 0E 00 90 E8 06 00 A0 E3 40 00 00 EF 24 00 8C E2 0E 00
@00002D1A 90 E8 0B 00 A0 E3 40 00 00 EF 18 00 8C E2 0E 00 90 E8 10 00 A0 E3 40
@00002D31 00 00 EF 0F 80 FD E8 01 0C 50 E3 00 40 2D 09 EE FF FF 0B 00 40 BD 08
@00002D48 0E F0 B0 E1 00 C0 A0 E1 31 DE A0 E3 0D D0 8C E0 00 10 E0 E3 D0 00 04
@00002D5F EF 19 0E 8C E2 02 01 5F E3 53 FF FF EA 3F 40 2D E9 C2 1F 06 EF 00 20
@00002D76 A0 63 04 30 A0 E3 70 10 8C E2 00 40 A0 E3 01 50 A0 E3 00 00 52 E3 07
@00002D8D 00 00 0A 03 00 D1 E5 3A 00 30 E3 00 50 A0 03 B8 01 00 0B 01 30 83 E2
@00002DA4 0C 10 81 E2 01 20 42 E2 F5 FF FF EA 40 50 8C E5 00 00 34 E3 01 00 00
@00002DBB 0A 8E FF FF EB 5B FF FF EB 3F 80 FD E8 E7 FF FF EB 64 00 A0 E3 44 00
@00002DD2 8C E5 38 FF FF EA 0C 00 91 E5 02 00 70 E3 35 FF FF 1A 10 00 91 E5 18
@00002DE9 00 00 EB 38 20 8C E5 08 00 91 E5 02 00 10 E3 07 00 00 1A 04 00 10 E3
@00002E00 2D FF FF 0A 8C 00 00 EB 00 00 30 E3 2A FF FF 1A 01 0B A0 E3 0F 01 00
@00002E17 EB 27 FF FF EA 1A 0E 8C E2 30 20 82 E2 07 20 C0 E5 00 20 91 E4 40 20
@00002E2E 42 E2 60 30 A0 E3 42 3F 83 E2 00 10 A0 E1 7E 00 00 EB 00 00 30 E3 1C
@00002E45 FF FF 1A D4 00 04 EF 1A FF FF EA 0A 40 2D E9 30 10 8C E2 04 20 A0 E3
@00002E5C 04 30 91 E4 03 00 30 E1 0A 80 FD 08 01 20 82 E2 08 00 52 E3 F9 FF FF
@00002E73 9A 00 00 8F E2 2B 00 00 EF A2 32 80 00 49 63 6F 6E 20 6E 6F 74 20 6B
@00002E8A 6E 6F 77 6E 00 00 49 44 45 46 53 3A 3A 30 0D 00 00 00 07 02 07 00 9C
@00002EA1 00 00 00 2C 00 00 00 00 00 00 00 00 00 00 00 AC 00 00 00 21 00 00 07
@00002EB8 4E 61 6D 65 20 64 69 73 63 0D 00 00 00 00 00 00 FF FF FF FF 21 00 00
@00002ECF 07 44 69 73 6D 6F 75 6E 74 0D 00 00 00 00 00 00 00 AC 00 00 00 21 00
@00002EE6 40 07 46 6F 72 6D 61 74 0D 00 00 00 00 00 00 00 00 00 FF FF FF FF 21
@00002EFD 00 40 07 42 61 63 6B 75 70 0D 00 00 00 00 00 00 00 00 00 FF FF FF FF
@00002F14 21 00 00 07 56 65 72 69 66 79 0D 00 00 00 00 00 80 00 00 00 FF FF FF
@00002F2B FF 21 00 00 07 46 72 65 65 0D 00 00 00 00 00 00 00 44 69 73 63 20 6E
@00002F42 61 6D 65 00 00 00 07 02 07 00 AC 00 00 00 2C 00 00 00 00 00 00 00 84
@00002F59 00 00 00 FF FF FF FF 21 01 00 07 88 00 00 00 E0 00 00 00 0B 00 00 00
@00002F70 41 7E 24 26 25 40 5C 5C 5E 3A 2E 23 2A 22 7C 20 00 00 00 00 FF 4F 2D
@00002F87 E9 1A 1E 8C E2 41 2F 4F E2 28 30 4F E2 01 40 A0 E1 E0 0F B2 E8 E0 0F
@00002F9E A1 E8 C0 0F B2 E8 01 00 77 E3 04 70 87 10 04 00 16 E3 03 00 00 0A 00
@00002FB5 00 5A E3 0C 90 89 10 4D 5F 4F C2 05 A0 8A C0 C0 0F A1 E8 80 00 16 E3
@00002FCC F3 FF FF 0A 03 00 52 E1 EF FF FF 1A FF 8F FD E8 BE 00 00 EB A0 10 8C
@00002FE3 E2 CF 00 04 EF 08 00 91 E5 01 00 10 E3 B1 FE FF 0A 1A 1E 8C E2 0F 00
@00002FFA 00 EB 00 00 30 E3 AD FE FF 1A D4 00 04 EF AB FE FF EA 1F 30 A0 E3 00
@00003011 00 00 EA 20 30 A0 E3 01 40 D2 E4 A4 00 34 E3 38 40 9C 05 30 40 84 02
@00003028 03 00 54 E1 00 40 A0 93 01 40 C1 E4 F7 FF FF 8A 0E F0 B0 E1 3E 40 2D
@0000303F E9 52 00 00 EB 2B 00 00 6F 02 00 2D E9 BF 20 8F E2 50 10 8C E2 EE FF
@00003056 FF EB 01 10 41 E2 00 20 9D E4 00 00 D2 E4 20 00 50 E3 A1 20 8F 92 E8
@0000306D FF FF EB 50 10 8C E2 05 00 A0 E3 08 00 02 EF 18 00 00 7A 93 20 8F E2
@00003084 50 10 8C E2 DF FF FF EB 50 00 8C E2 05 00 00 EF A8 00 8F E2 03 10 A0
@0000309B E3 10 20 4F E2 04 2C 42 E2 DF 00 04 EF 01 00 31 E3 04 D0 8D 12 01 00
@000030B2 A0 13 3E 80 BD 18 88 10 8C E2 00 20 9D E4 D3 FF FF EB 24 05 9F E5 62
@000030C9 00 00 EB 5F 10 8C E2 04 20 9D E4 CE FF FF EB 50 00 8C E2 05 00 00 EF
@000030E0 D6 FF FF EA 04 00 BD E8 00 00 5F E3 88 10 8C E2 C7 FF FF EB 00 00 A0
@000030F7 E3 3E 80 BD E8 25 44 69 72 20 69 64 65 66 73 3A 3A A4 00 25 42 61 63
@0000310E 6B 00 3A A4 00 69 64 65 66 73 3A 3A 00 69 64 65 66 73 3A 44 69 73 6D
@00003125 6F 75 6E 74 20 A4 00 2E 24 00 69 64 65 66 73 3A 4E 61 6D 65 44 69 73
@0000313C 63 20 3A A4 20 00 00 00 01 00 00 00 54 68 69 73 20 64 69 73 63 20 68
@00003153 61 73 20 61 20 6E 61 6D 65 20 74 68 61 74 20 68 61 73 20 62 65 65 6E
@0000316A 20 73 65 65 6E 20 62 65 66 6F 72 65 2E 20 20 46 6F 72 67 65 74 20 74
@00003181 68 65 20 6F 6C 64 20 6F 6E 65 3F 00 00 00 00 00 40 2D E9 50 10 8C E2
@00003198 01 00 A0 E1 94 20 4F E2 9B FF FF EB 29 1E 8C E2 44 24 9F E5 00 20 81
@000031AF E4 C5 1F 06 EF 00 80 BD 68 00 30 91 E4 03 00 32 E1 03 00 00 0A 00 20
@000031C6 A0 E3 20 20 81 E5 16 10 81 E2 00 80 FD E8 00 00 E0 E3 3C 00 8C E5 00
@000031DD 00 A0 E3 00 10 A0 E3 09 00 00 EF 00 50 A0 E1 F8 20 4F E2 29 1E 8C E2
@000031F4 84 FF FF EB 29 0E 8C E2 05 00 02 EF 3C 00 8C 65 07 00 00 6A 29 2E 8C
@0000320B E2 05 00 A0 E3 0C 00 02 EF 3C 00 8C 65 16 00 4F E2 01 0C 40 E2 05 00
@00003222 02 EF 3C 00 8C 65 0E 00 A0 E3 05 10 A0 E1 29 00 02 EF 3C 00 8C 65 3C
@00003239 00 9C E5 01 00 70 E3 2B 00 00 1F 29 1E 8C E2 01 00 D1 E4 00 20 A0 E3
@00003250 00 20 C1 E7 00 80 FD E8 00 40 2D E9 A0 10 8C E2 10 00 81 E5 31 00 A0
@00003267 E3 14 00 81 E5 00 00 A0 E3 0C 00 81 E5 18 00 81 E5 6D 20 4F E2 01 2C
@0000327E 42 E2 1C 10 81 E2 62 FF FF EB 01 10 41 E2 88 20 8C E2 00 00 D2 E4 20
@00003295 00 50 E3 8F 20 4F 92 01 2C 42 92 5B FF FF EB 01 10 41 E2 84 20 4F E2
@000032AC 01 2C 42 E2 57 FF FF EB 01 20 A0 E1 A0 10 8C E2 01 20 42 E0 03 20 82
@000032C3 E2 03 20 C2 E3 00 20 81 E4 11 00 A0 E3 08 20 9C E5 E7 00 04 EF 00 80
@000032DA FD E8 00 40 2D E9 04 00 91 E4 00 F1 8F E0 00 80 FD E8 33 00 00 EA 4E
@000032F1 00 00 EA 00 00 00 00 00 00 00 00 1F 00 00 EA FF FF FF EA 4C FF FF EB
@00003308 5C 20 8F E2 00 00 A0 E3 00 10 A0 E3 09 00 00 EF 01 00 2D E9 0E 00 A0
@0000331F E3 31 10 A0 E3 29 00 00 EF 29 1E 8C E2 36 FF FF EB 29 0E 8C E2 EF 00
@00003336 04 EF 29 0E 8C E2 05 00 02 EF 03 00 00 7A 03 00 00 EF 04 00 80 E2 02
@0000334D 00 00 EF 03 00 00 EF 00 00 A0 E3 EF 00 04 EF 02 00 BD E8 0E 00 A0 E3
@00003364 29 00 00 EF 00 80 FD E8 46 72 65 65 20 3A A4 00 56 65 72 69 66 79 20
@0000337B 3A A4 00 00 00 2D FF FF EB 18 20 4F E2 DF FF FF EA 01 00 00 00 44 69
@00003392 73 63 20 6E 61 6D 65 20 6D 75 73 74 20 62 65 20 61 74 20 6C 65 61 73
@000033A9 74 20 74 77 6F 20 63 68 61 72 61 63 74 65 72 73 20 6C 6F 6E 67 00 00
@000033C0 88 10 8C E2 94 20 8C E2 00 30 A0 E3 03 00 D1 E7 03 00 C2 E7 01 30 83
@000033D7 E2 0B 00 53 E3 20 00 50 13 F9 FF FF 8A 03 00 53 E3 64 00 4F 32 2B 00
@000033EE 00 3F 11 FF FF EB 00 00 30 E3 00 80 FD 18 0F 00 00 EB 50 10 8C E2 DD
@00003405 20 4F E2 02 2C 42 E2 FE FE FF EB 01 10 41 E2 94 20 8C E2 FD FE FF EB
@0000341C 50 00 8C E2 05 00 00 EF 02 FE FF EB 03 FF FF EB 00 80 FD E8 01 FF FF
@00003433 EB 00 00 30 E3 00 00 00 0B 00 80 FD E8 00 40 2D E9 A4 01 9F E5 82 FF
@0000344A FF EB 50 10 8C E2 3D 20 4F E2 03 2C 42 E2 EB FE FF EB 02 10 41 E2 88
@00003461 20 8C E2 00 00 D2 E4 20 00 50 E3 63 20 4F 92 03 2C 42 92 E6 FE FF EB
@00003478 50 00 8C E2 05 00 00 EF 00 80 FD E8 1F 40 2D E9 03 00 A0 E1 FC 1F 04
@0000348F EF 02 00 30 E3 1F 80 FD 18 38 00 9C E5 01 00 2D E9 38 30 8C E5 C0 06
@000034A6 04 EF 38 FF FF EB 0F 00 A0 E1 C1 06 04 EF 00 F0 30 E3 01 00 BD 68 38
@000034BD 00 8C 65 1F 80 FD 68 01 20 A0 E1 08 10 9D E5 00 00 A0 E3 03 00 81 E5
@000034D4 CE FE FF EB 01 00 BD E8 38 00 8C E5 1F 40 BD E8 01 40 A0 E3 01 F2 DE
@000034EB E3 00 40 2D E9 01 00 30 E3 04 00 00 0A 02 00 30 E3 1B 00 00 0A 03 00
@00003502 30 E3 28 00 00 0A 00 80 FD E8 1E 00 2D E9 03 00 A0 E1 50 10 8C E2 C5
@00003519 1F 06 EF 1E 80 BD 68 02 40 A0 E1 16 10 81 E2 00 00 D1 E4 20 00 50 E3
@00003530 3A 00 A0 B3 01 00 82 B4 03 10 A0 B1 0A 30 A0 E3 01 00 D1 E4 20 00 50
@00003547 E3 00 00 A0 93 01 00 C2 E4 01 30 53 E2 00 00 30 13 F8 FF FF 1A 00 00
@0000355E 30 E3 00 00 A0 13 01 00 C2 14 04 00 42 E0 1E 80 FD E8 0E 00 2D E9 03
@00003575 00 A0 E1 50 10 8C E2 C5 1F 06 EF 0E 80 BD 68 10 00 91 E5 00 00 82 E4
@0000358C 03 00 A0 E1 C3 1F 06 EF 0E 80 BD 68 04 00 82 E5 00 10 92 E4 00 10 41
@000035A3 E0 08 10 82 E5 0E 80 FD E8 00 00 50 E1 00 40 BD E8 01 F2 DE E3 07 40
@000035BA 2D E9 31 00 A0 E3 DC 10 4F E2 0C 20 A0 E1 01 00 A0 73 00 00 A0 63 4C
@000035D1 00 8C E5 07 80 FD E8 01 40 2D E9 4C 00 9C E5 00 00 50 E3 01 80 FD E8
@000035E8 31 18 08 00 11 01 00 00 01 04 00 00 AD DE AD DE 31 32 34 00 52 65 6C
@000035FF 65 61 73 65 00 52 49 53 43 20 44 65 76 65 6C 6F 70 6D 65 6E 74 73 20
@00003616 4C 74 64 20 28 55 4B 29 00 30 00 32 30 2D 4D 61 79 2D 39 32 00 FF FF
@0000362D FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003644 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@0000365B FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003672 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003689 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@000036A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@000036B7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@000036CE FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@000036E5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@000036FC FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003713 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@0000372A FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003741 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003758 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@0000376F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003786 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@0000379D FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@000037B4 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@000037CB FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@000037E2 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@000037F9 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003810 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003827 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@0000383E FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003855 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@0000386C FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003883 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@0000389A FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@000038B1 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@000038C8 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@000038DF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@000038F6 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@0000390D FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003924 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@0000393B FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003952 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003969 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003980 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003997 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@000039AE FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@000039C5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@000039DC FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@000039F3 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003A0A FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003A21 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003A38 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003A4F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003A66 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003A7D FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003A94 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003AAB FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003AC2 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003AD9 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003AF0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003B07 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003B1E FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003B35 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003B4C FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003B63 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003B7A FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003B91 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003BA8 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003BBF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003BD6 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003BED FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003C04 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003C1B FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003C32 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003C49 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003C60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003C77 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003C8E FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003CA5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003CBC FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003CD3 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003CEA FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003D01 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003D18 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003D2F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003D46 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003D5D FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003D74 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003D8B FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003DA2 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003DB9 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003DD0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003DE7 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003DFE FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003E15 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003E2C FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003E43 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003E5A FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003E71 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003E88 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003E9F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003EB6 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003ECD FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003EE4 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003EFB FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003F12 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003F29 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003F40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003F57 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003F6E FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003F85 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003F9C FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003FB3 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003FCA FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003FE1 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
@00003FF8 FF FF FF FF FF FF FF FF

View File

@@ -77,6 +77,8 @@ reg [9:0] sd_refresh = 10'd0;
reg sd_auto_refresh = 1'b0;
reg sd_need_refresh = 1'b0;
wire sd_req = wb_stb & wb_cyc & ~wb_ack;
reg sd_req_reg;
reg sd_cache_hit;
reg [11:0] sd_active_row[3:0];
reg [3:0] sd_bank_active;
wire [1:0] sd_bank = wb_adr[22:21];
@@ -170,6 +172,9 @@ always @(posedge sd_clk) begin
sd_word <= sd_word + 1'd1;
sd_dat[sd_word[2:1]][{sd_word[0],4'b0000} +:16] <= sd_dq;
end
sd_req_reg <= sd_req;
sd_cache_hit <= ~wb_we && sd_last_adr[23:4] == wb_adr[23:4];
// this is the auto refresh code.
// it kicks in so that 8192 auto refreshes are
// issued in a 64ms period. Other bus operations
@@ -196,7 +201,7 @@ always @(posedge sd_clk) begin
default: ;
endcase
end else if ((sd_cycle != 0) | (sd_cycle == 0 && sd_req)) begin
end else if ((sd_cycle != 0) | (sd_cycle == 0 && sd_req_reg)) begin
// while the cycle is active count.
sd_cycle <= sd_cycle + 1'd1;
@@ -204,7 +209,7 @@ always @(posedge sd_clk) begin
CYCLE_PRECHARGE: begin
sd_we <= wb_we;
word_index <= 2'b00;
if (~wb_we && sd_last_adr[23:4] == wb_adr[23:4]) begin
if (sd_cache_hit) begin
// this word is already in sd_dat, but where?
word_index <= wb_adr[3:2] - sd_last_adr[3:2];
sd_done <= ~sd_done;
@@ -281,7 +286,7 @@ always @(posedge sd_clk) begin
sd_dat[0][15:0] <= sd_dq;
sd_word <= 3'b001;
end else
sd_cycle <= 5'd0;
sd_cycle <= CYCLE_END;
end
CYCLE_READ1: if (~sd_we) sd_done <= ~sd_done;