Browse Source

tty: simplify by running in the sys_clk domain; use NCO for baud

Instead of having the tty straddle two clock domains that have to be
synchronized, run the whole block in the sys_clk domain. To avoid
problems with baud rates, change from using a simple divide counter to
using a phase accumulator NCO (numerically controlled oscillator.)
H. Peter Anvin 3 years ago
parent
commit
4f9855b5c4

+ 56 - 76
fpga/ip/fifo.v

@@ -1,12 +1,12 @@
 // megafunction wizard: %FIFO%
 // GENERATION: STANDARD
 // VERSION: WM1.0
-// MODULE: dcfifo 
+// MODULE: scfifo 
 
 // ============================================================
 // File Name: fifo.v
 // Megafunction Name(s):
-// 			dcfifo
+// 			scfifo
 //
 // Simulation Library Files(s):
 // 			altera_mf
@@ -39,76 +39,61 @@
 // synopsys translate_on
 module fifo (
 	aclr,
+	clock,
 	data,
-	rdclk,
 	rdreq,
-	wrclk,
+	sclr,
 	wrreq,
+	empty,
+	full,
 	q,
-	rdempty,
-	rdusedw,
-	wrfull,
-	wrusedw);
+	usedw);
 
 	input	  aclr;
+	input	  clock;
 	input	[7:0]  data;
-	input	  rdclk;
 	input	  rdreq;
-	input	  wrclk;
+	input	  sclr;
 	input	  wrreq;
+	output	  empty;
+	output	  full;
 	output	[7:0]  q;
-	output	  rdempty;
-	output	[8:0]  rdusedw;
-	output	  wrfull;
-	output	[8:0]  wrusedw;
-`ifndef ALTERA_RESERVED_QIS
-// synopsys translate_off
-`endif
-	tri0	  aclr;
-`ifndef ALTERA_RESERVED_QIS
-// synopsys translate_on
-`endif
+	output	[8:0]  usedw;
 
-	wire [7:0] sub_wire0;
+	wire  sub_wire0;
 	wire  sub_wire1;
-	wire [8:0] sub_wire2;
-	wire  sub_wire3;
-	wire [8:0] sub_wire4;
-	wire [7:0] q = sub_wire0[7:0];
-	wire  rdempty = sub_wire1;
-	wire [8:0] rdusedw = sub_wire2[8:0];
-	wire  wrfull = sub_wire3;
-	wire [8:0] wrusedw = sub_wire4[8:0];
+	wire [7:0] sub_wire2;
+	wire [8:0] sub_wire3;
+	wire  empty = sub_wire0;
+	wire  full = sub_wire1;
+	wire [7:0] q = sub_wire2[7:0];
+	wire [8:0] usedw = sub_wire3[8:0];
 
-	dcfifo	dcfifo_component (
+	scfifo	scfifo_component (
 				.aclr (aclr),
+				.clock (clock),
 				.data (data),
-				.rdclk (rdclk),
 				.rdreq (rdreq),
-				.wrclk (wrclk),
+				.sclr (sclr),
 				.wrreq (wrreq),
-				.q (sub_wire0),
-				.rdempty (sub_wire1),
-				.rdusedw (sub_wire2),
-				.wrfull (sub_wire3),
-				.wrusedw (sub_wire4),
-				.eccstatus (),
-				.rdfull (),
-				.wrempty ());
+				.empty (sub_wire0),
+				.full (sub_wire1),
+				.q (sub_wire2),
+				.usedw (sub_wire3),
+				.almost_empty (),
+				.almost_full (),
+				.eccstatus ());
 	defparam
-		dcfifo_component.intended_device_family = "Cyclone IV E",
-		dcfifo_component.lpm_numwords = 512,
-		dcfifo_component.lpm_showahead = "ON",
-		dcfifo_component.lpm_type = "dcfifo",
-		dcfifo_component.lpm_width = 8,
-		dcfifo_component.lpm_widthu = 9,
-		dcfifo_component.overflow_checking = "ON",
-		dcfifo_component.rdsync_delaypipe = 4,
-		dcfifo_component.read_aclr_synch = "OFF",
-		dcfifo_component.underflow_checking = "ON",
-		dcfifo_component.use_eab = "ON",
-		dcfifo_component.write_aclr_synch = "OFF",
-		dcfifo_component.wrsync_delaypipe = 4;
+		scfifo_component.add_ram_output_register = "OFF",
+		scfifo_component.intended_device_family = "Cyclone IV E",
+		scfifo_component.lpm_numwords = 512,
+		scfifo_component.lpm_showahead = "ON",
+		scfifo_component.lpm_type = "scfifo",
+		scfifo_component.lpm_width = 8,
+		scfifo_component.lpm_widthu = 9,
+		scfifo_component.overflow_checking = "ON",
+		scfifo_component.underflow_checking = "ON",
+		scfifo_component.use_eab = "ON";
 
 
 endmodule
@@ -121,7 +106,7 @@ endmodule
 // Retrieval info: PRIVATE: AlmostFull NUMERIC "0"
 // Retrieval info: PRIVATE: AlmostFullThr NUMERIC "-1"
 // Retrieval info: PRIVATE: CLOCKS_ARE_SYNCHRONIZED NUMERIC "0"
-// Retrieval info: PRIVATE: Clock NUMERIC "4"
+// Retrieval info: PRIVATE: Clock NUMERIC "0"
 // Retrieval info: PRIVATE: Depth NUMERIC "512"
 // Retrieval info: PRIVATE: Empty NUMERIC "1"
 // Retrieval info: PRIVATE: Full NUMERIC "1"
@@ -130,7 +115,7 @@ endmodule
 // Retrieval info: PRIVATE: LegacyRREQ NUMERIC "0"
 // Retrieval info: PRIVATE: MAX_DEPTH_BY_9 NUMERIC "0"
 // Retrieval info: PRIVATE: OVERFLOW_CHECKING NUMERIC "0"
-// Retrieval info: PRIVATE: Optimize NUMERIC "0"
+// Retrieval info: PRIVATE: Optimize NUMERIC "2"
 // Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0"
 // Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0"
 // Retrieval info: PRIVATE: UNDERFLOW_CHECKING NUMERIC "0"
@@ -143,47 +128,42 @@ endmodule
 // Retrieval info: PRIVATE: rsEmpty NUMERIC "1"
 // Retrieval info: PRIVATE: rsFull NUMERIC "0"
 // Retrieval info: PRIVATE: rsUsedW NUMERIC "1"
-// Retrieval info: PRIVATE: sc_aclr NUMERIC "0"
-// Retrieval info: PRIVATE: sc_sclr NUMERIC "0"
+// Retrieval info: PRIVATE: sc_aclr NUMERIC "1"
+// Retrieval info: PRIVATE: sc_sclr NUMERIC "1"
 // Retrieval info: PRIVATE: wsEmpty NUMERIC "0"
 // Retrieval info: PRIVATE: wsFull NUMERIC "1"
 // Retrieval info: PRIVATE: wsUsedW NUMERIC "1"
 // Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all
+// Retrieval info: CONSTANT: ADD_RAM_OUTPUT_REGISTER STRING "OFF"
 // Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone IV E"
 // Retrieval info: CONSTANT: LPM_NUMWORDS NUMERIC "512"
 // Retrieval info: CONSTANT: LPM_SHOWAHEAD STRING "ON"
-// Retrieval info: CONSTANT: LPM_TYPE STRING "dcfifo"
+// Retrieval info: CONSTANT: LPM_TYPE STRING "scfifo"
 // Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "8"
 // Retrieval info: CONSTANT: LPM_WIDTHU NUMERIC "9"
 // Retrieval info: CONSTANT: OVERFLOW_CHECKING STRING "ON"
-// Retrieval info: CONSTANT: RDSYNC_DELAYPIPE NUMERIC "4"
-// Retrieval info: CONSTANT: READ_ACLR_SYNCH STRING "OFF"
 // Retrieval info: CONSTANT: UNDERFLOW_CHECKING STRING "ON"
 // Retrieval info: CONSTANT: USE_EAB STRING "ON"
-// Retrieval info: CONSTANT: WRITE_ACLR_SYNCH STRING "OFF"
-// Retrieval info: CONSTANT: WRSYNC_DELAYPIPE NUMERIC "4"
-// Retrieval info: USED_PORT: aclr 0 0 0 0 INPUT GND "aclr"
+// Retrieval info: USED_PORT: aclr 0 0 0 0 INPUT NODEFVAL "aclr"
+// Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL "clock"
 // Retrieval info: USED_PORT: data 0 0 8 0 INPUT NODEFVAL "data[7..0]"
+// Retrieval info: USED_PORT: empty 0 0 0 0 OUTPUT NODEFVAL "empty"
+// Retrieval info: USED_PORT: full 0 0 0 0 OUTPUT NODEFVAL "full"
 // Retrieval info: USED_PORT: q 0 0 8 0 OUTPUT NODEFVAL "q[7..0]"
-// Retrieval info: USED_PORT: rdclk 0 0 0 0 INPUT NODEFVAL "rdclk"
-// Retrieval info: USED_PORT: rdempty 0 0 0 0 OUTPUT NODEFVAL "rdempty"
 // Retrieval info: USED_PORT: rdreq 0 0 0 0 INPUT NODEFVAL "rdreq"
-// Retrieval info: USED_PORT: rdusedw 0 0 9 0 OUTPUT NODEFVAL "rdusedw[8..0]"
-// Retrieval info: USED_PORT: wrclk 0 0 0 0 INPUT NODEFVAL "wrclk"
-// Retrieval info: USED_PORT: wrfull 0 0 0 0 OUTPUT NODEFVAL "wrfull"
+// Retrieval info: USED_PORT: sclr 0 0 0 0 INPUT NODEFVAL "sclr"
+// Retrieval info: USED_PORT: usedw 0 0 9 0 OUTPUT NODEFVAL "usedw[8..0]"
 // Retrieval info: USED_PORT: wrreq 0 0 0 0 INPUT NODEFVAL "wrreq"
-// Retrieval info: USED_PORT: wrusedw 0 0 9 0 OUTPUT NODEFVAL "wrusedw[8..0]"
 // Retrieval info: CONNECT: @aclr 0 0 0 0 aclr 0 0 0 0
+// Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0
 // Retrieval info: CONNECT: @data 0 0 8 0 data 0 0 8 0
-// Retrieval info: CONNECT: @rdclk 0 0 0 0 rdclk 0 0 0 0
 // Retrieval info: CONNECT: @rdreq 0 0 0 0 rdreq 0 0 0 0
-// Retrieval info: CONNECT: @wrclk 0 0 0 0 wrclk 0 0 0 0
+// Retrieval info: CONNECT: @sclr 0 0 0 0 sclr 0 0 0 0
 // Retrieval info: CONNECT: @wrreq 0 0 0 0 wrreq 0 0 0 0
+// Retrieval info: CONNECT: empty 0 0 0 0 @empty 0 0 0 0
+// Retrieval info: CONNECT: full 0 0 0 0 @full 0 0 0 0
 // Retrieval info: CONNECT: q 0 0 8 0 @q 0 0 8 0
-// Retrieval info: CONNECT: rdempty 0 0 0 0 @rdempty 0 0 0 0
-// Retrieval info: CONNECT: rdusedw 0 0 9 0 @rdusedw 0 0 9 0
-// Retrieval info: CONNECT: wrfull 0 0 0 0 @wrfull 0 0 0 0
-// Retrieval info: CONNECT: wrusedw 0 0 9 0 @wrusedw 0 0 9 0
+// Retrieval info: CONNECT: usedw 0 0 9 0 @usedw 0 0 9 0
 // Retrieval info: GEN_FILE: TYPE_NORMAL fifo.v TRUE
 // Retrieval info: GEN_FILE: TYPE_NORMAL fifo.inc FALSE
 // Retrieval info: GEN_FILE: TYPE_NORMAL fifo.cmp FALSE

+ 2 - 4
fpga/max80.sv

@@ -128,7 +128,6 @@ module max80 (
    wire	    sys_clk;		// System clock
    wire	    vid_clk;		// Video pixel clock
    wire	    vid_hdmiclk;	// D:o in the HDMI clock domain
-   wire     tty_clk = vid_clk; // 48 MHz
 
    pll pll (
 	    .areset ( 1'b0 ),
@@ -580,8 +579,7 @@ module max80 (
    assign tty_cts_out  = 1'b0;	// Assert CTS#
    tty tty (
 	    .rst_n ( rst_n ),
-	    .sys_clk ( sys_clk ),
-	    .tty_clk ( tty_clk ),
+	    .clk ( sys_clk ),
 
 	    .valid ( iodev[1] ),
 	    .wstrb ( cpu_mem_wstrb ),
@@ -592,7 +590,7 @@ module max80 (
 	    );
 
    reg [1:0]   tty_dtr_q;
-   always @(posedge tty_clk)
+   always @(posedge sys_clk)
      begin
 	tty_dtr_q[0] <= tty_dtr;
 	tty_dtr_q[1] <= gpio[4];

File diff suppressed because it is too large
+ 2911 - 2939
fpga/output_files/max80.jam


BIN
fpga/output_files/max80.jbc


BIN
fpga/output_files/max80.jic


+ 1 - 1
fpga/output_files/max80.map

@@ -10,7 +10,7 @@ Quad-Serial configuration device dummy clock cycle: 8
 
 Notes:
 
-- Data checksum for this conversion is 0xF76CC710
+- Data checksum for this conversion is 0xF76CA33B
 
 - All the addresses in this file are byte addresses
 

BIN
fpga/output_files/max80.pof


BIN
fpga/output_files/max80.sof


+ 27 - 48
fpga/tty.sv

@@ -11,8 +11,7 @@
 
 module tty (
 	    input 	 rst_n,
-	    input 	 sys_clk,
-	    input 	 tty_clk,
+	    input 	 clk,
 
 	    input 	 valid,
 	    input [3:0]  wstrb,
@@ -26,37 +25,26 @@ module tty (
    
    //
    // Baud rate generator; produces a clock enable synchronous
-   // with tty_clk
+   // with clk.  This is based on a numerically controlled oscillator
+   // (NCO); the baudrate is given as a binary fraction of the input
+   // clock rate divided by the oversampling rate (16); for practical
+   // reasons represented minus one LSB so 0x0.ffffff -> 1
+   // and 0 -> 0x0.000001.
+   //
+   // The term "divisor" here is probably misleading, since it is
+   // actually a fixed-point *multiplier* which is <= 1.
    //
    parameter [31:0]	BAUDRATE = 115200;
-   parameter [31:0]	TTY_CLK  = 48000000;
-
-   localparam divisor_bits = 16;
+   parameter [31:0]	TTY_CLK  = 84000000;
+   parameter		NCO_BITS = 24;
    
-   reg  [divisor_bits-1:0]  divisor_q = round_div(TTY_CLK, BAUDRATE << 4) - 1;
-   wire [divisor_bits-1:0]  divisor;
-   reg  [divisor_bits-1:0]  clk_div;
-   reg 			    tty_clk_en; // tty clock tick (clock enable)
+   reg  [NCO_BITS-1:0]  divisor
+			= round_div(BAUDRATE << NCO_BITS, TTY_CLK >> 4) - 1'b1;
+   reg  [NCO_BITS-1:0]  nco_q;
+   reg 			tty_clk_en; // tty clock tick (clock enable)
 
-   always @(negedge rst_n or posedge tty_clk)
-     if (~rst_n)
-       begin
-	  clk_div <= 16;	// Give enough time for synchronizer
-	  tty_clk_en <= 1'b0;
-       end
-     else
-       begin
-	  if (~|clk_div)
-	    begin
-	       clk_div <= divisor;
-	       tty_clk_en <= 1'b1;
-	    end
-	  else
-	    begin
-	       clk_div <= clk_div - 1'b1;
-	       tty_clk_en <= 1'b0;
-	    end
-       end // else: !if(~rst_n)
+   always @(posedge clk)
+	{ tty_clk_en, nco_q } <= nco_q + divisor + 1'b1;
 
    //
    // Tx FIFO
@@ -68,16 +56,15 @@ module tty (
    
    fifo txfifo (
 		.aclr ( ~rst_n ),
+		.clock ( clk ),
 		.data ( wdata ),
-		.q ( tx_data ),
-		.rdclk ( tty_clk ),
 		.rdreq ( tx_rdack ),
-		.wrclk ( sys_clk ),
+		.sclr ( 1'b0 ),	// Flush FIFO command
 		.wrreq ( tx_wrreq ),
-		.rdempty ( tx_rdempty ),
-		.rdusedw ( ),
-		.wrfull ( ),
-		.wrusedw ( )
+		.empty ( tx_rdempty ),
+		.full ( ),
+		.q ( tx_data ),
+		.usedw ( )
 		);
 
    //
@@ -91,23 +78,15 @@ module tty (
    // Data (FIFO) register; normally addressed as byte
    // Protect against long pulses (edge detect)
    reg old_wstrb;
-   always @(posedge sys_clk)
+   always @(posedge clk)
      old_wstrb <= wstrb[0];
 
    assign tx_wrreq = valid & wstrb[0] & ~old_wstrb & (addr == 0);
 
    // Divisor register
-   always @(posedge sys_clk)
+   always @(posedge clk)
      if (wstrb[0] & valid & (addr == 1))
-       divisor_q <= wdata[divisor_bits-1:0] & wmask;
-
-   synchronizer #(.width(divisor_bits), .stages(2)) sync_divisor
-     (
-      .rst_n ( rst_n ),
-      .clk ( tty_clk ),
-      .d ( divisor_q ),
-      .q ( divisor )
-      );
+       divisor <= wdata[NCO_BITS-1:0] & wmask;
 
    //
    // Transmitter
@@ -117,7 +96,7 @@ module tty (
    reg [9:0]  tx_sr = ~10'b0;		// Shift register
    assign tty_txd = tx_sr[0];
 
-   always @(negedge rst_n or posedge tty_clk)
+   always @(negedge rst_n or posedge clk)
      if (~rst_n)
        begin
 	  tx_phase <= 4'h0;

+ 1134 - 842
fw/boot.mif

@@ -18,7 +18,7 @@ CONTENT BEGIN
 00B : 8601A503;
 00C : C391551C;
 00D : 85229782;
-00E : 429000EF;
+00E : 78D000EF;
 00F : 71796571;
 010 : 20050513;
 011 : D226D606;
@@ -29,9 +29,9 @@ CONTENT BEGIN
 016 : C06AD422;
 017 : 6285228D;
 018 : C0000023;
-019 : D6C28513;
+019 : 0D028513;
 01A : B9B764C1;
-01B : 22790200;
+01B : 2A610200;
 01C : 4C814901;
 01D : 14FD6B05;
 01E : 6B856A05;
@@ -39,13 +39,13 @@ CONTENT BEGIN
 020 : 6A851FF9;
 021 : 42000637;
 022 : 400005B7;
-023 : CF0B0513;
-024 : 0437224D;
+023 : 054B0513;
+024 : 04372275;
 025 : 0D374000;
 026 : 77B34200;
 027 : E7890094;
 028 : 051385A2;
-029 : 2271D14A;
+029 : 2A59078A;
 02A : 45818522;
 02B : 852228ED;
 02C : 28D555FD;
@@ -54,17 +54,17 @@ CONTENT BEGIN
 02F : 852285A2;
 030 : 20D50411;
 031 : FDA41BE3;
-032 : D1CB8513;
-033 : 04372A05;
+032 : 080B8513;
+033 : 04372A2D;
 034 : 0D374000;
 035 : 401C4200;
 036 : 009470B3;
 037 : 00009663;
 038 : 051385A2;
-039 : 22B1D14A;
+039 : 2A99078A;
 03A : 16E30411;
 03B : 0513FFA4;
-03C : 2229D44C;
+03C : 2A110A8C;
 03D : FFFCC313;
 03E : 40235393;
 03F : 0013F593;
@@ -77,18 +77,18 @@ CONTENT BEGIN
 046 : FCE340E6;
 047 : 0905FF09;
 048 : 851385CA;
-049 : 2231D5CA;
-04A : 1197BFB1;
+049 : 2A190C0A;
+04A : 2197BFB1;
 04B : 81930000;
-04C : 85135021;
+04C : 85139921;
 04D : 86138681;
 04E : 8E098941;
-04F : 2A854581;
+04F : 29D14581;
 050 : 00000513;
 051 : 0513C519;
 052 : 00970000;
 053 : 00E70000;
-054 : 28FD0000;
+054 : 218D0000;
 055 : 004C4502;
 056 : 35CD4601;
 057 : 1141BD65;
@@ -97,7 +97,7 @@ CONTENT BEGIN
 05A : 0793EF91;
 05B : CB810000;
 05C : 05136505;
-05D : 0097E205;
+05D : 00972885;
 05E : 00E70000;
 05F : 47850000;
 060 : 86F18C23;
@@ -106,836 +106,1128 @@ CONTENT BEGIN
 063 : 00000793;
 064 : 6505CB91;
 065 : 87C18593;
-066 : E2050513;
+066 : 28850513;
 067 : 00000317;
 068 : 00000067;
 069 : C10C8082;
 06A : 86AE4110;
 06B : 00C58763;
 06C : 650585AA;
-06D : CD050513;
-06E : 8082A8AD;
-06F : C737A001;
-070 : 5793002D;
-071 : 02930015;
-072 : 83336C07;
-073 : 45810057;
-074 : 00A36663;
-075 : 02A353B3;
-076 : FFF38593;
-077 : C4B02223;
-078 : 00238082;
-079 : 26F3C4A0;
-07A : 0713C010;
-07B : 27F33470;
-07C : 82B3C010;
-07D : 7CE340D7;
-07E : 8082FE57;
-07F : C4221141;
-080 : 842AC606;
-081 : 00044503;
-082 : 40B2E509;
-083 : 01414422;
-084 : 04058082;
-085 : B7FD37F9;
-086 : 862A7175;
-087 : 850A86AE;
-088 : 08000593;
-089 : 28EDC706;
-08A : 3FC9850A;
-08B : 614940BA;
-08C : 71398082;
-08D : 104CD22E;
-08E : D432CE06;
-08F : D83AD636;
-090 : DC42DA3E;
-091 : C62EDE46;
-092 : 40F23FC1;
-093 : 80826121;
-094 : C4221141;
-095 : 6405C226;
-096 : 87936485;
-097 : 0413E244;
-098 : 8C1DE244;
-099 : C606C04A;
-09A : 84938409;
-09B : 4901E244;
-09C : 02891563;
-09D : 64056485;
-09E : E2448793;
-09F : E2840413;
-0A0 : 84098C1D;
-0A1 : E2448493;
-0A2 : 1D634901;
-0A3 : 40B20089;
-0A4 : 44924422;
-0A5 : 01414902;
-0A6 : 409C8082;
-0A7 : 04910905;
-0A8 : B7F99782;
-0A9 : 0905409C;
-0AA : 97820491;
-0AB : 832ABFF9;
-0AC : 0023C611;
-0AD : 167D00B3;
-0AE : FE650305;
-0AF : 71198082;
-0B0 : DAA6DCA2;
-0B1 : D8CADE86;
-0B2 : 843284AA;
-0B3 : 00065C63;
-0B4 : 08B00793;
-0B5 : 557DC11C;
-0B6 : 546650F6;
-0B7 : 594654D6;
-0B8 : 80826109;
-0B9 : 20800793;
-0BA : 00F11A23;
-0BB : CC2EC42E;
-0BC : 47818636;
-0BD : C01986BA;
-0BE : FFF40793;
-0BF : 002C597D;
-0C0 : C83E8526;
-0C1 : 1B23CE3E;
-0C2 : 22210121;
-0C3 : 01255563;
-0C4 : 08B00793;
-0C5 : D069C09C;
-0C6 : 802347A2;
-0C7 : BF6D0007;
-0C8 : 86B28736;
-0C9 : 85AA862E;
-0CA : 8641A503;
-0CB : 1101BF49;
-0CC : A903C84A;
-0CD : CC220085;
-0CE : C452C64E;
-0CF : CE06C256;
-0D0 : C05ACA26;
-0D1 : 0005AA83;
-0D2 : 8A32842E;
-0D3 : E76389B6;
-0D4 : D7830726;
-0D5 : F71300C5;
-0D6 : CF394807;
-0D7 : 448D4858;
-0D8 : 84B3498C;
-0D9 : 470902E4;
-0DA : 40BA8AB3;
-0DB : C4B38B2A;
-0DC : 871302E4;
-0DD : 97560016;
-0DE : 00E4F363;
-0DF : F79384BA;
-0E0 : C7A54007;
-0E1 : 855A85A6;
-0E2 : 892A2F81;
-0E3 : 480CC925;
-0E4 : 25B58656;
-0E5 : 00C45783;
-0E6 : B7F7F793;
-0E7 : 0807E793;
-0E8 : 00F41623;
-0E9 : 01242823;
-0EA : 9956C844;
-0EB : 415484B3;
-0EC : 01242023;
-0ED : 894EC404;
-0EE : 0129F363;
-0EF : 4008894E;
-0F0 : 85D2864A;
-0F1 : 441C2D81;
-0F2 : 87B34501;
-0F3 : C41C4127;
-0F4 : 97CA401C;
-0F5 : 40F2C01C;
-0F6 : 44D24462;
-0F7 : 49B24942;
-0F8 : 4A924A22;
-0F9 : 61054B02;
-0FA : 86268082;
-0FB : 00EF855A;
-0FC : 892A7BE0;
-0FD : 480CF945;
-0FE : 2581855A;
-0FF : 202347B1;
-100 : 578300FB;
-101 : 557D00C4;
-102 : 0407E793;
-103 : 00F41623;
-104 : D783B7D9;
-105 : 717100C5;
-106 : D326D522;
-107 : CD52D14A;
-108 : CF4ED706;
-109 : C95ACB56;
-10A : C562C75E;
-10B : C16AC366;
-10C : F793DEEE;
-10D : 8A2A0807;
-10E : 84B2892E;
-10F : C3B18436;
-110 : E3A1499C;
-111 : 04000593;
-112 : 20232D41;
-113 : 282300A9;
-114 : E50500A9;
-115 : 202347B1;
-116 : 557D00FA;
-117 : 542A50BA;
-118 : 590A549A;
-119 : 4A6A49FA;
-11A : 4B4A4ADA;
-11B : 4C2A4BBA;
-11C : 4D0A4C9A;
-11D : 614D5DF6;
-11E : 07938082;
-11F : 2A230400;
-120 : 079300F9;
-121 : 04A30200;
-122 : 079302F1;
-123 : D2020300;
-124 : 02F10523;
-125 : 0C93C622;
-126 : 6B050250;
-127 : 6D056B85;
-128 : 00000A93;
-129 : 47838426;
-12A : C3990004;
-12B : 09979E63;
-12C : 40940DB3;
-12D : 00940D63;
-12E : 862686EE;
-12F : 855285CA;
-130 : 57FD35BD;
-131 : 18F50B63;
-132 : 97EE5792;
-133 : 4783D23E;
-134 : 84630004;
-135 : 57FD1807;
-136 : 00140493;
-137 : CE02C802;
-138 : CC02CA3E;
-139 : 040109A3;
-13A : 4D85D482;
-13B : 0004C583;
-13C : 05134615;
-13D : 21FDD80B;
-13E : 841347C2;
-13F : E5390014;
-140 : 0107F713;
-141 : 0713C709;
-142 : 09A30200;
-143 : F71304E1;
-144 : C7090087;
-145 : 02B00713;
-146 : 04E109A3;
-147 : 0004C683;
-148 : 02A00713;
-149 : 02E68D63;
-14A : 842647F2;
-14B : 46254681;
-14C : 47034529;
-14D : 05930004;
-14E : 07130014;
-14F : 7563FD07;
-150 : C69506E6;
-151 : A025CE3E;
-152 : BFB10405;
-153 : D80B0713;
-154 : 95338D19;
-155 : 8FC900AD;
-156 : 84A2C83E;
-157 : 4732BF41;
-158 : 00470693;
-159 : C6364318;
-15A : 02074963;
-15B : 4703CE3A;
-15C : 07930004;
-15D : 106302E0;
-15E : 470306F7;
-15F : 07930014;
-160 : 1B6302A0;
-161 : 47B202F7;
-162 : 87130409;
-163 : 439C0047;
-164 : C163C63A;
-165 : CA3E0207;
-166 : 0733A83D;
-167 : E79340E0;
-168 : CE3A0027;
-169 : B7E1C83E;
-16A : 02A787B3;
-16B : 4685842E;
-16C : B74197BA;
-16D : B7C557FD;
-16E : CA020405;
-16F : 47814681;
-170 : 45294625;
-171 : 00044703;
-172 : 00140593;
-173 : FD070713;
-174 : 04E67D63;
-175 : 4583F2E9;
-176 : 460D0004;
-177 : D88B8513;
-178 : CD012111;
-179 : D88B8793;
-17A : 47C28D1D;
-17B : 04000713;
-17C : 00A71733;
-17D : 04058FD9;
-17E : 4583C83E;
-17F : 46190004;
-180 : D8CD0513;
-181 : 00140493;
-182 : 02B10423;
-183 : CD392EE1;
-184 : 020A9763;
-185 : 47B24742;
-186 : 10077713;
-187 : 0791CF09;
-188 : 5792C63E;
-189 : D23E97CE;
-18A : 87B3BDB5;
-18B : 842E02A7;
-18C : 97BA4685;
-18D : 079DBF41;
-18E : 07A19BE1;
-18F : 0078B7D5;
-190 : 32E00693;
-191 : 080C864A;
-192 : 00978552;
-193 : 00E70000;
-194 : 57FD0000;
-195 : 16E389AA;
-196 : 5783FCF5;
-197 : 557D00C9;
-198 : 0407F793;
-199 : DE079CE3;
-19A : BBCD5512;
-19B : 06930078;
-19C : 864A32E0;
-19D : 8552080C;
-19E : BFE12A11;
-19F : CC527179;
-1A0 : 8A3A499C;
-1A1 : D4224598;
-1A2 : CE4ED04A;
-1A3 : D606CA56;
-1A4 : C85AD226;
-1A5 : 89AAC65E;
-1A6 : 8932842E;
-1A7 : D3638AB6;
-1A8 : 87BA00E7;
-1A9 : 00F92023;
-1AA : 04344703;
-1AB : 0785C701;
-1AC : 00F92023;
-1AD : F793401C;
-1AE : C7910207;
-1AF : 00092783;
-1B0 : 20230789;
-1B1 : 400400F9;
-1B2 : E8918899;
-1B3 : 01940B13;
-1B4 : 445C5BFD;
-1B5 : 00092703;
-1B6 : CC638F99;
-1B7 : 478304F4;
-1B8 : 36B30434;
-1B9 : 401C00F0;
-1BA : 0207F793;
-1BB : 0613EBA5;
-1BC : 85D60434;
-1BD : 9A02854E;
-1BE : 036357FD;
-1BF : 401C04F5;
-1C0 : 44814711;
-1C1 : 99638B99;
-1C2 : 444400E7;
-1C3 : 00092783;
-1C4 : D3638C9D;
-1C5 : 44810004;
-1C6 : 4818441C;
-1C7 : 00F75463;
-1C8 : 94BE8F99;
-1C9 : 04694901;
-1CA : 98635B7D;
-1CB : 45010524;
-1CC : 4685A809;
-1CD : 85D6865A;
-1CE : 9A02854E;
-1CF : 01751E63;
-1D0 : 50B2557D;
-1D1 : 54925422;
-1D2 : 49F25902;
-1D3 : 4AD24A62;
-1D4 : 4BB24B42;
-1D5 : 80826145;
-1D6 : BFA50485;
-1D7 : 00D40733;
-1D8 : 03000613;
-1D9 : 04C701A3;
-1DA : 04544703;
-1DB : 00168793;
-1DC : 068997A2;
-1DD : 04E781A3;
-1DE : 4685BF9D;
-1DF : 85D68622;
-1E0 : 9A02854E;
-1E1 : FB650EE3;
-1E2 : B7450905;
-1E3 : D4227179;
-1E4 : D04AD226;
-1E5 : D606CE4E;
-1E6 : CA56CC52;
-1E7 : C883C85A;
-1E8 : 07930185;
-1E9 : 84AA0780;
-1EA : 8932842E;
-1EB : EE6389B6;
-1EC : 07930117;
-1ED : 86930620;
-1EE : ED630435;
-1EF : 89630117;
-1F0 : 07931A08;
-1F1 : 8B630580;
-1F2 : 0A9316F8;
-1F3 : 01230424;
-1F4 : A8050514;
-1F5 : F9D88793;
-1F6 : 0FF7F793;
-1F7 : 66E34655;
-1F8 : 6605FEF6;
-1F9 : 0613078A;
-1FA : 97B2DBC6;
-1FB : 8782439C;
-1FC : 8A93431C;
-1FD : 86930425;
-1FE : 439C0047;
-1FF : 8123C314;
-200 : 478504F5;
-201 : 419CAA49;
-202 : F6134308;
-203 : 05930807;
-204 : C2050045;
-205 : C30C411C;
-206 : D8636805;
-207 : 07130007;
-208 : 07B302D0;
-209 : 01A340F0;
-20A : 081304E4;
-20B : 4729D948;
-20C : F613A099;
-20D : 411C0407;
-20E : DE79C30C;
-20F : 87C107C2;
-210 : 4190BFE1;
-211 : 7513431C;
-212 : 85930806;
-213 : C5010047;
-214 : 439CC30C;
-215 : 7613A039;
-216 : C30C0406;
-217 : D783DA7D;
-218 : 68050007;
-219 : 06F00713;
-21A : D9480813;
-21B : 0CE88C63;
-21C : 01A34729;
-21D : 40500404;
-21E : 4563C410;
-21F : 400C0006;
-220 : C00C99ED;
-221 : 8AB6E399;
-222 : 8AB6CE19;
-223 : 02E7F633;
-224 : 96421AFD;
-225 : 00064603;
-226 : 00CA8023;
-227 : D7B3863E;
-228 : 75E302E7;
-229 : 47A1FEE6;
-22A : 00F71E63;
-22B : 8B85401C;
-22C : 4058CB91;
-22D : C763481C;
-22E : 079300E7;
-22F : 8FA30300;
-230 : 1AFDFEFA;
-231 : 415686B3;
-232 : 874EC814;
-233 : 007086CA;
-234 : 852685A2;
-235 : 5A7D3365;
-236 : 0D451363;
-237 : 50B2557D;
-238 : 54925422;
-239 : 49F25902;
-23A : 4AD24A62;
-23B : 61454B42;
-23C : 419C8082;
-23D : 0207E793;
-23E : 6805C19C;
-23F : 07800893;
-240 : DA880813;
-241 : 051402A3;
-242 : 430C4010;
-243 : 08067513;
-244 : 0591419C;
-245 : 7513E511;
-246 : C1190406;
-247 : 83C107C2;
-248 : 7713C30C;
-249 : C7010016;
-24A : 02066613;
-24B : 4741C010;
-24C : 4010F3A9;
-24D : FDF67613;
-24E : BF25C010;
-24F : 08136805;
-250 : B7C9D948;
-251 : B7354721;
-252 : 431C4190;
-253 : 781349CC;
-254 : 85130806;
-255 : 06630047;
-256 : C3080008;
-257 : C38C439C;
-258 : C308A801;
-259 : 04067613;
-25A : DA75439C;
-25B : 00B79023;
-25C : 00042823;
-25D : BF918AB6;
-25E : 41D0431C;
-25F : 86934581;
-260 : C3140047;
-261 : 0007AA83;
-262 : 28A98556;
-263 : 0533C501;
-264 : C0484155;
-265 : C81C405C;
-266 : 040401A3;
-267 : 4814B73D;
-268 : 85CA8656;
-269 : 99828526;
-26A : F3450AE3;
-26B : 8B89401C;
-26C : 47B2E78D;
-26D : 54E34448;
-26E : 853EF2F5;
-26F : 4685B70D;
-270 : 85CA8656;
-271 : 99828526;
-272 : F1650AE3;
-273 : 445C0A05;
-274 : 8F994732;
-275 : FEFA45E3;
-276 : 4A01BFE9;
-277 : 01940A93;
-278 : B7F55B7D;
-279 : 0FF5F593;
-27A : 1463962A;
-27B : 450100C5;
-27C : 47838082;
-27D : 8DE30005;
-27E : 0505FEB7;
-27F : 832AB7FD;
-280 : 8383CA09;
-281 : 00230005;
-282 : 167D0073;
-283 : 05850305;
-284 : 8082FA6D;
-285 : 832AC215;
-286 : 67634685;
-287 : 56FD00B5;
-288 : FFF60713;
-289 : 95BA933A;
-28A : 00058383;
-28B : 00730023;
-28C : 9336167D;
-28D : FA6D95B6;
-28E : CDD18082;
-28F : FFC5A783;
-290 : CC221101;
-291 : 8413CE06;
-292 : D363FFC5;
-293 : 943E0007;
-294 : 2ADDC62A;
-295 : 8681A783;
-296 : EB894532;
-297 : 00042223;
-298 : 8681A423;
-299 : 40F24462;
-29A : A2C56105;
-29B : 00F47D63;
-29C : 06B34010;
-29D : 966300C4;
-29E : 439400D7;
-29F : 96B243DC;
-2A0 : C05CC014;
-2A1 : 873EBFF1;
-2A2 : C39943DC;
-2A3 : FEF47DE3;
-2A4 : 06334314;
-2A5 : 1F6300D7;
-2A6 : 40100086;
-2A7 : C31496B2;
-2A8 : 00D70633;
-2A9 : FCC790E3;
-2AA : 43DC4390;
-2AB : C31496B2;
-2AC : BF4DC35C;
-2AD : 00C47563;
-2AE : C11C47B1;
-2AF : 4010B765;
-2B0 : 00C406B3;
-2B1 : 00D79663;
-2B2 : 43DC4394;
-2B3 : C01496B2;
-2B4 : C340C05C;
-2B5 : 8082BF41;
-2B6 : CA261101;
-2B7 : 00358493;
-2B8 : C84A98F1;
-2B9 : CC22CE06;
-2BA : 04A1C64E;
-2BB : 892A47B1;
-2BC : 04F4F263;
-2BD : E16344B1;
-2BE : 854A04B4;
-2BF : 871322B1;
-2C0 : 43188681;
-2C1 : 86818693;
-2C2 : E031843A;
-2C3 : 86C18413;
-2C4 : E789401C;
-2C5 : 854A4581;
-2C6 : C0082219;
-2C7 : 854A85A6;
-2C8 : 59FD28FD;
-2C9 : 07351863;
-2CA : 202347B1;
-2CB : 854A00F9;
-2CC : A0312A29;
-2CD : FC04D1E3;
-2CE : 202347B1;
-2CF : 450100F9;
-2D0 : 446240F2;
-2D1 : 494244D2;
-2D2 : 610549B2;
-2D3 : 401C8082;
-2D4 : CE638F85;
-2D5 : 462D0207;
-2D6 : 00F67663;
-2D7 : 943EC01C;
-2D8 : A029C004;
-2D9 : 1263405C;
-2DA : C29C0287;
-2DB : 28F1854A;
-2DC : 00B40513;
-2DD : 00440793;
-2DE : 07339961;
-2DF : 01E340F5;
-2E0 : 943AFCF5;
-2E1 : C01C8F89;
-2E2 : C35CBF65;
-2E3 : 8722B7C5;
-2E4 : BFA54040;
-2E5 : 00350413;
-2E6 : 03E39871;
-2E7 : 05B3FC85;
-2E8 : 854A40A4;
-2E9 : 1DE328AD;
-2EA : BFBDFB35;
-2EB : CC221101;
-2EC : CA26CE06;
-2ED : C64EC84A;
-2EE : 8432C452;
-2EF : 4462E991;
-2F0 : 44D240F2;
-2F1 : 49B24942;
-2F2 : 85B24A22;
-2F3 : B7296105;
-2F4 : 35A5EE01;
-2F5 : 40F24481;
-2F6 : 49424462;
-2F7 : 4A2249B2;
-2F8 : 44D28526;
-2F9 : 80826105;
-2FA : 892E8A2A;
-2FB : 89AA2085;
-2FC : 00856763;
-2FD : 00155793;
-2FE : EEE384CA;
-2FF : 85A2FC87;
-300 : 3DD98552;
-301 : D96184AA;
-302 : F3638622;
-303 : 864E0089;
-304 : 852685CA;
-305 : 85CA33ED;
-306 : 35058552;
-307 : 1141BF6D;
-308 : C226C422;
-309 : 852E842A;
-30A : A823C606;
-30B : 28898601;
-30C : 166357FD;
-30D : A78300F5;
-30E : C3918701;
-30F : 40B2C01C;
-310 : 44924422;
-311 : 80820141;
-312 : 80828082;
-313 : FFC5A783;
-314 : FFC78513;
-315 : 0007D563;
-316 : 419C95AA;
-317 : 8082953E;
-318 : 05D00893;
-319 : 00000073;
-31A : 00055B63;
-31B : C4221141;
-31C : C606842A;
-31D : 40800433;
-31E : C1002889;
-31F : A001A001;
-320 : 87418793;
-321 : 1141439C;
-322 : 86AAC606;
-323 : 87418713;
-324 : 0893E38D;
-325 : 45010D60;
-326 : 00000073;
-327 : 196357FD;
-328 : 202500F5;
-329 : C11C47B1;
-32A : 40B2557D;
-32B : 80820141;
-32C : 431CC308;
-32D : 0D600893;
-32E : 853696BE;
-32F : 00000073;
-330 : FED511E3;
-331 : 853EC308;
-332 : A503B7CD;
-333 : 80828641;
-334 : 2070250D;
-335 : 6572203A;
-336 : 25206461;
-337 : 20783830;
-338 : 746F7277;
-339 : 30252065;
-33A : 0A0D7838;
-33B : 00000000;
-33C : 74736554;
-33D : 20676E69;
-33E : 41524453;
-33F : 7266204D;
-340 : 25206D6F;
-341 : 6F742070;
-342 : 2E702520;
-343 : 0A0D2E2E;
-344 : 00000000;
-345 : 2070250D;
-346 : 00000000;
-347 : 6165520D;
-348 : 676E6964;
-349 : 63616220;
-34A : 6F74206B;
-34B : 65686320;
-34C : 66206B63;
-34D : 6120726F;
-34E : 7361696C;
-34F : 2E2E7365;
-350 : 000A0D2E;
-351 : 5244530D;
-352 : 74204D41;
-353 : 20747365;
-354 : 706D6F63;
-355 : 6574656C;
-356 : 00000A0D;
-357 : 706F6F4C;
-358 : 25203A73;
-359 : 0A0A0D75;
-35A : 00000000;
-35B : 480A0A0D;
-35C : 6F6C6C65;
-35D : 6F57202C;
-35E : 21646C72;
-35F : 00000A0D;
-360 : 2B302D23;
-361 : 00000020;
-362 : 004C6C68;
-363 : 45676665;
-364 : 00004746;
-365 : 33323130;
-366 : 37363534;
-367 : 42413938;
-368 : 46454443;
-369 : 00000000;
-36A : 33323130;
-36B : 37363534;
-36C : 62613938;
-36D : 66656463;
-36E : 00000000;
-36F : 000007F0;
-370 : 00000806;
-371 : 000007CA;
-372 : 000007CA;
-373 : 000007CA;
-374 : 000007CA;
-375 : 00000806;
-376 : 000007CA;
-377 : 000007CA;
-378 : 000007CA;
-379 : 000007CA;
-37A : 00000948;
-37B : 00000842;
-37C : 000008F2;
-37D : 000007CA;
-37E : 000007CA;
-37F : 00000978;
-380 : 000007CA;
-381 : 00000842;
-382 : 000007CA;
-383 : 000007CA;
-384 : 000008FA;
-385 : 00000000;
-386 : 00000000;
-387 : 00000000;
-388 : 00000000;
-389 : 0000018C;
-38A : 0000015E;
-38B : 00000000;
-38C : 00000000;
-38D : 00000000;
-38E : 00000000;
-38F : 00000000;
-390 : 00000000;
-391 : 00000000;
-392 : 00000000;
-393 : 00000000;
-394 : 00000000;
-395 : 00000000;
-396 : 00000000;
-397 : 00000000;
-398 : 00000000;
-399 : 00000000;
-39A : 00000000;
-39B : 00000000;
-39C : 00000000;
-39D : 00000000;
-39E : 00000000;
-39F : 00000000;
-3A0 : 00000000;
-3A1 : 00000000;
-3A2 : 00000000;
-3A3 : 00000E2C;
-3A4 : 00000E2C;
-[3A5..7FF] : 00;
+06D : 03450513;
+06E : 8082A051;
+06F : 85AAA001;
+070 : 00502637;
+071 : 06131141;
+072 : 4681BD06;
+073 : 819D0566;
+074 : 2061C606;
+075 : 00155793;
+076 : 82B38905;
+077 : 831300A7;
+078 : 2223FFF2;
+079 : 40B2C460;
+07A : 80820141;
+07B : C4A00023;
+07C : C01026F3;
+07D : 34700713;
+07E : C01027F3;
+07F : 40D782B3;
+080 : FE577CE3;
+081 : 11418082;
+082 : C606C422;
+083 : 4503842A;
+084 : E5090004;
+085 : 442240B2;
+086 : 80820141;
+087 : 37F90405;
+088 : 7175B7FD;
+089 : 86AE862A;
+08A : 0593850A;
+08B : C7060800;
+08C : 850A2991;
+08D : 40BA3FC9;
+08E : 80826149;
+08F : D22E7139;
+090 : CE06104C;
+091 : D636D432;
+092 : DA3ED83A;
+093 : DE46DC42;
+094 : 3FC1C62E;
+095 : 612140F2;
+096 : 832A8082;
+097 : 873288AE;
+098 : 87AE882A;
+099 : 20069563;
+09A : 85936585;
+09B : F1630E45;
+09C : 66C10CC8;
+09D : 0AD67763;
+09E : 10063693;
+09F : 0016C693;
+0A0 : 5533068E;
+0A1 : 95AA00D6;
+0A2 : 0005C583;
+0A3 : 02000513;
+0A4 : 05B396AE;
+0A5 : 0B6340D5;
+0A6 : 97B300D5;
+0A7 : 56B300B8;
+0A8 : 173300D3;
+0A9 : 8FD500B6;
+0AA : 00B31833;
+0AB : 01075593;
+0AC : 02B7D333;
+0AD : 01071613;
+0AE : F7B38241;
+0AF : 851A02B7;
+0B0 : 026608B3;
+0B1 : 01079693;
+0B2 : 01085793;
+0B3 : FC638FD5;
+0B4 : 97BA0117;
+0B5 : FFF30513;
+0B6 : 00E7E763;
+0B7 : 0117F563;
+0B8 : FFE30513;
+0B9 : 87B397BA;
+0BA : D8B34117;
+0BB : 084202B7;
+0BC : 01085813;
+0BD : 02B7F7B3;
+0BE : 031606B3;
+0BF : 683307C2;
+0C0 : 87C600F8;
+0C1 : 00D87B63;
+0C2 : 8793983A;
+0C3 : 6663FFF8;
+0C4 : 746300E8;
+0C5 : 879300D8;
+0C6 : 0542FFE8;
+0C7 : 45818D5D;
+0C8 : 05378082;
+0C9 : 46C10100;
+0CA : F4A66DE3;
+0CB : BF9146E1;
+0CC : 9002E211;
+0CD : 7F6367C1;
+0CE : 369308F6;
+0CF : C6931006;
+0D0 : 068E0016;
+0D1 : 00D657B3;
+0D2 : C78395BE;
+0D3 : 97B60005;
+0D4 : 02000693;
+0D5 : 40F685B3;
+0D6 : 08F69563;
+0D7 : 40C887B3;
+0D8 : 58934585;
+0D9 : DE330107;
+0DA : 16130317;
+0DB : 82410107;
+0DC : 01085693;
+0DD : 0317F7B3;
+0DE : 03338572;
+0DF : 07C203C6;
+0E0 : FC638FD5;
+0E1 : 97BA0067;
+0E2 : FFFE0513;
+0E3 : 00E7E763;
+0E4 : 0067F563;
+0E5 : FFEE0513;
+0E6 : 87B397BA;
+0E7 : D3334067;
+0E8 : 08420317;
+0E9 : 01085813;
+0EA : 0317F7B3;
+0EB : 026606B3;
+0EC : 683307C2;
+0ED : 879A00F8;
+0EE : 00D87B63;
+0EF : 0793983A;
+0F0 : 6663FFF3;
+0F1 : 746300E8;
+0F2 : 079300D8;
+0F3 : 0542FFE3;
+0F4 : 80828D5D;
+0F5 : 010007B7;
+0F6 : 65E346C1;
+0F7 : 46E1F6F6;
+0F8 : 1733B795;
+0F9 : D6B300B6;
+0FA : 551300F8;
+0FB : 57B30107;
+0FC : 183300F3;
+0FD : D33300B3;
+0FE : 161302A6;
+0FF : 98B30107;
+100 : 824100B8;
+101 : 0117E7B3;
+102 : 02A6F6B3;
+103 : 026608B3;
+104 : 01069593;
+105 : 0107D693;
+106 : 859A8ECD;
+107 : 0116FC63;
+108 : 059396BA;
+109 : E763FFF3;
+10A : F56300E6;
+10B : 05930116;
+10C : 96BAFFE3;
+10D : 411686B3;
+10E : 02A6D8B3;
+10F : 83C107C2;
+110 : 02A6F6B3;
+111 : 03160633;
+112 : 8FD506C2;
+113 : FC6386C6;
+114 : 97BA00C7;
+115 : FFF88693;
+116 : 00E7E763;
+117 : 00C7F563;
+118 : FFE88693;
+119 : 05C297BA;
+11A : 8DD58F91;
+11B : E063BDDD;
+11C : 67C114D5;
+11D : 02F6FE63;
+11E : 1006B713;
+11F : 00174713;
+120 : 6785070E;
+121 : 00E6D5B3;
+122 : 0E478793;
+123 : C78397AE;
+124 : 97BA0007;
+125 : 02000713;
+126 : 40F705B3;
+127 : 02F71163;
+128 : EFE34505;
+129 : 3533E716;
+12A : 451300C3;
+12B : 80820015;
+12C : 010007B7;
+12D : E6E34741;
+12E : 4761FCF6;
+12F : 5733B7D9;
+130 : 96B300F6;
+131 : 8ED900B6;
+132 : 00F8D733;
+133 : 00B898B3;
+134 : 00F357B3;
+135 : 0117E7B3;
+136 : 0106D893;
+137 : 03175EB3;
+138 : 01069813;
+139 : 01085813;
+13A : 00B61633;
+13B : 03177733;
+13C : 03D80E33;
+13D : 01071513;
+13E : 0107D713;
+13F : 85768F49;
+140 : 01C77C63;
+141 : 85139736;
+142 : 6763FFFE;
+143 : 756300D7;
+144 : 851301C7;
+145 : 9736FFEE;
+146 : 41C70733;
+147 : 03175E33;
+148 : 83C107C2;
+149 : 03177733;
+14A : 03C80833;
+14B : 8FD90742;
+14C : FC638772;
+14D : 97B60107;
+14E : FFFE0713;
+14F : 00D7E763;
+150 : 0107F563;
+151 : FFEE0713;
+152 : 054297B6;
+153 : 8D596E41;
+154 : FFFE0693;
+155 : 00D57733;
+156 : 410787B3;
+157 : 58138EF1;
+158 : 82410105;
+159 : 02D708B3;
+15A : 02D806B3;
+15B : 02C70733;
+15C : 02C80833;
+15D : 00D70633;
+15E : 0108D713;
+15F : 73639732;
+160 : 987200D7;
+161 : 01075693;
+162 : E06396C2;
+163 : 98E302D7;
+164 : 67C1D8D7;
+165 : 8F7D17FD;
+166 : F8B30742;
+167 : 133300F8;
+168 : 974600B3;
+169 : 7DE34581;
+16A : 157DD6E3;
+16B : 4581BB8D;
+16C : 80824501;
+16D : C4221141;
+16E : 6405C226;
+16F : 87936485;
+170 : 04132B44;
+171 : 8C1D2B44;
+172 : C606C04A;
+173 : 84938409;
+174 : 49012B44;
+175 : 02891563;
+176 : 64056485;
+177 : 2B448793;
+178 : 2B840413;
+179 : 84098C1D;
+17A : 2B448493;
+17B : 1D634901;
+17C : 40B20089;
+17D : 44924422;
+17E : 01414902;
+17F : 409C8082;
+180 : 04910905;
+181 : B7F99782;
+182 : 0905409C;
+183 : 97820491;
+184 : 832ABFF9;
+185 : 0023C611;
+186 : 167D00B3;
+187 : FE650305;
+188 : 71198082;
+189 : DAA6DCA2;
+18A : D8CADE86;
+18B : 843284AA;
+18C : 00065C63;
+18D : 08B00793;
+18E : 557DC11C;
+18F : 546650F6;
+190 : 594654D6;
+191 : 80826109;
+192 : 20800793;
+193 : 00F11A23;
+194 : CC2EC42E;
+195 : 47818636;
+196 : C01986BA;
+197 : FFF40793;
+198 : 002C597D;
+199 : C83E8526;
+19A : 1B23CE3E;
+19B : 22210121;
+19C : 01255563;
+19D : 08B00793;
+19E : D069C09C;
+19F : 802347A2;
+1A0 : BF6D0007;
+1A1 : 86B28736;
+1A2 : 85AA862E;
+1A3 : 8641A503;
+1A4 : 1101BF49;
+1A5 : A903C84A;
+1A6 : CC220085;
+1A7 : C452C64E;
+1A8 : CE06C256;
+1A9 : C05ACA26;
+1AA : 0005AA83;
+1AB : 8A32842E;
+1AC : E76389B6;
+1AD : D7830726;
+1AE : F71300C5;
+1AF : CF394807;
+1B0 : 448D4858;
+1B1 : 84B3498C;
+1B2 : 470902E4;
+1B3 : 40BA8AB3;
+1B4 : C4B38B2A;
+1B5 : 871302E4;
+1B6 : 97560016;
+1B7 : 00E4F363;
+1B8 : F79384BA;
+1B9 : C7A54007;
+1BA : 855A85A6;
+1BB : 892A2F81;
+1BC : 480CC925;
+1BD : 25B58656;
+1BE : 00C45783;
+1BF : B7F7F793;
+1C0 : 0807E793;
+1C1 : 00F41623;
+1C2 : 01242823;
+1C3 : 9956C844;
+1C4 : 415484B3;
+1C5 : 01242023;
+1C6 : 894EC404;
+1C7 : 0129F363;
+1C8 : 4008894E;
+1C9 : 85D2864A;
+1CA : 441C2D81;
+1CB : 87B34501;
+1CC : C41C4127;
+1CD : 97CA401C;
+1CE : 40F2C01C;
+1CF : 44D24462;
+1D0 : 49B24942;
+1D1 : 4A924A22;
+1D2 : 61054B02;
+1D3 : 86268082;
+1D4 : 00EF855A;
+1D5 : 892A7BE0;
+1D6 : 480CF945;
+1D7 : 2581855A;
+1D8 : 202347B1;
+1D9 : 578300FB;
+1DA : 557D00C4;
+1DB : 0407E793;
+1DC : 00F41623;
+1DD : D783B7D9;
+1DE : 717100C5;
+1DF : D326D522;
+1E0 : CD52D14A;
+1E1 : CF4ED706;
+1E2 : C95ACB56;
+1E3 : C562C75E;
+1E4 : C16AC366;
+1E5 : F793DEEE;
+1E6 : 8A2A0807;
+1E7 : 84B2892E;
+1E8 : C3B18436;
+1E9 : E3A1499C;
+1EA : 04000593;
+1EB : 20232D41;
+1EC : 282300A9;
+1ED : E50500A9;
+1EE : 202347B1;
+1EF : 557D00FA;
+1F0 : 542A50BA;
+1F1 : 590A549A;
+1F2 : 4A6A49FA;
+1F3 : 4B4A4ADA;
+1F4 : 4C2A4BBA;
+1F5 : 4D0A4C9A;
+1F6 : 614D5DF6;
+1F7 : 07938082;
+1F8 : 2A230400;
+1F9 : 079300F9;
+1FA : 04A30200;
+1FB : 079302F1;
+1FC : D2020300;
+1FD : 02F10523;
+1FE : 0C93C622;
+1FF : 6B050250;
+200 : 6D056B85;
+201 : 00000A93;
+202 : 47838426;
+203 : C3990004;
+204 : 09979E63;
+205 : 40940DB3;
+206 : 00940D63;
+207 : 862686EE;
+208 : 855285CA;
+209 : 57FD35BD;
+20A : 18F50B63;
+20B : 97EE5792;
+20C : 4783D23E;
+20D : 84630004;
+20E : 57FD1807;
+20F : 00140493;
+210 : CE02C802;
+211 : CC02CA3E;
+212 : 040109A3;
+213 : 4D85D482;
+214 : 0004C583;
+215 : 05134615;
+216 : 21FD1E4B;
+217 : 841347C2;
+218 : E5390014;
+219 : 0107F713;
+21A : 0713C709;
+21B : 09A30200;
+21C : F71304E1;
+21D : C7090087;
+21E : 02B00713;
+21F : 04E109A3;
+220 : 0004C683;
+221 : 02A00713;
+222 : 02E68D63;
+223 : 842647F2;
+224 : 46254681;
+225 : 47034529;
+226 : 05930004;
+227 : 07130014;
+228 : 7563FD07;
+229 : C69506E6;
+22A : A025CE3E;
+22B : BFB10405;
+22C : 1E4B0713;
+22D : 95338D19;
+22E : 8FC900AD;
+22F : 84A2C83E;
+230 : 4732BF41;
+231 : 00470693;
+232 : C6364318;
+233 : 02074963;
+234 : 4703CE3A;
+235 : 07930004;
+236 : 106302E0;
+237 : 470306F7;
+238 : 07930014;
+239 : 1B6302A0;
+23A : 47B202F7;
+23B : 87130409;
+23C : 439C0047;
+23D : C163C63A;
+23E : CA3E0207;
+23F : 0733A83D;
+240 : E79340E0;
+241 : CE3A0027;
+242 : B7E1C83E;
+243 : 02A787B3;
+244 : 4685842E;
+245 : B74197BA;
+246 : B7C557FD;
+247 : CA020405;
+248 : 47814681;
+249 : 45294625;
+24A : 00044703;
+24B : 00140593;
+24C : FD070713;
+24D : 04E67D63;
+24E : 4583F2E9;
+24F : 460D0004;
+250 : 1ECB8513;
+251 : CD012111;
+252 : 1ECB8793;
+253 : 47C28D1D;
+254 : 04000713;
+255 : 00A71733;
+256 : 04058FD9;
+257 : 4583C83E;
+258 : 46190004;
+259 : 1F0D0513;
+25A : 00140493;
+25B : 02B10423;
+25C : CD392EE1;
+25D : 020A9763;
+25E : 47B24742;
+25F : 10077713;
+260 : 0791CF09;
+261 : 5792C63E;
+262 : D23E97CE;
+263 : 87B3BDB5;
+264 : 842E02A7;
+265 : 97BA4685;
+266 : 079DBF41;
+267 : 07A19BE1;
+268 : 0078B7D5;
+269 : 69200693;
+26A : 080C864A;
+26B : 00978552;
+26C : 00E70000;
+26D : 57FD0000;
+26E : 16E389AA;
+26F : 5783FCF5;
+270 : 557D00C9;
+271 : 0407F793;
+272 : DE079CE3;
+273 : BBCD5512;
+274 : 06930078;
+275 : 864A6920;
+276 : 8552080C;
+277 : BFE12A11;
+278 : CC527179;
+279 : 8A3A499C;
+27A : D4224598;
+27B : CE4ED04A;
+27C : D606CA56;
+27D : C85AD226;
+27E : 89AAC65E;
+27F : 8932842E;
+280 : D3638AB6;
+281 : 87BA00E7;
+282 : 00F92023;
+283 : 04344703;
+284 : 0785C701;
+285 : 00F92023;
+286 : F793401C;
+287 : C7910207;
+288 : 00092783;
+289 : 20230789;
+28A : 400400F9;
+28B : E8918899;
+28C : 01940B13;
+28D : 445C5BFD;
+28E : 00092703;
+28F : CC638F99;
+290 : 478304F4;
+291 : 36B30434;
+292 : 401C00F0;
+293 : 0207F793;
+294 : 0613EBA5;
+295 : 85D60434;
+296 : 9A02854E;
+297 : 036357FD;
+298 : 401C04F5;
+299 : 44814711;
+29A : 99638B99;
+29B : 444400E7;
+29C : 00092783;
+29D : D3638C9D;
+29E : 44810004;
+29F : 4818441C;
+2A0 : 00F75463;
+2A1 : 94BE8F99;
+2A2 : 04694901;
+2A3 : 98635B7D;
+2A4 : 45010524;
+2A5 : 4685A809;
+2A6 : 85D6865A;
+2A7 : 9A02854E;
+2A8 : 01751E63;
+2A9 : 50B2557D;
+2AA : 54925422;
+2AB : 49F25902;
+2AC : 4AD24A62;
+2AD : 4BB24B42;
+2AE : 80826145;
+2AF : BFA50485;
+2B0 : 00D40733;
+2B1 : 03000613;
+2B2 : 04C701A3;
+2B3 : 04544703;
+2B4 : 00168793;
+2B5 : 068997A2;
+2B6 : 04E781A3;
+2B7 : 4685BF9D;
+2B8 : 85D68622;
+2B9 : 9A02854E;
+2BA : FB650EE3;
+2BB : B7450905;
+2BC : D4227179;
+2BD : D04AD226;
+2BE : D606CE4E;
+2BF : CA56CC52;
+2C0 : C883C85A;
+2C1 : 07930185;
+2C2 : 84AA0780;
+2C3 : 8932842E;
+2C4 : EE6389B6;
+2C5 : 07930117;
+2C6 : 86930620;
+2C7 : ED630435;
+2C8 : 89630117;
+2C9 : 07931A08;
+2CA : 8B630580;
+2CB : 0A9316F8;
+2CC : 01230424;
+2CD : A8050514;
+2CE : F9D88793;
+2CF : 0FF7F793;
+2D0 : 66E34655;
+2D1 : 6605FEF6;
+2D2 : 0613078A;
+2D3 : 97B22206;
+2D4 : 8782439C;
+2D5 : 8A93431C;
+2D6 : 86930425;
+2D7 : 439C0047;
+2D8 : 8123C314;
+2D9 : 478504F5;
+2DA : 419CAA49;
+2DB : F6134308;
+2DC : 05930807;
+2DD : C2050045;
+2DE : C30C411C;
+2DF : D8636805;
+2E0 : 07130007;
+2E1 : 07B302D0;
+2E2 : 01A340F0;
+2E3 : 081304E4;
+2E4 : 47291F88;
+2E5 : F613A099;
+2E6 : 411C0407;
+2E7 : DE79C30C;
+2E8 : 87C107C2;
+2E9 : 4190BFE1;
+2EA : 7513431C;
+2EB : 85930806;
+2EC : C5010047;
+2ED : 439CC30C;
+2EE : 7613A039;
+2EF : C30C0406;
+2F0 : D783DA7D;
+2F1 : 68050007;
+2F2 : 06F00713;
+2F3 : 1F880813;
+2F4 : 0CE88C63;
+2F5 : 01A34729;
+2F6 : 40500404;
+2F7 : 4563C410;
+2F8 : 400C0006;
+2F9 : C00C99ED;
+2FA : 8AB6E399;
+2FB : 8AB6CE19;
+2FC : 02E7F633;
+2FD : 96421AFD;
+2FE : 00064603;
+2FF : 00CA8023;
+300 : D7B3863E;
+301 : 75E302E7;
+302 : 47A1FEE6;
+303 : 00F71E63;
+304 : 8B85401C;
+305 : 4058CB91;
+306 : C763481C;
+307 : 079300E7;
+308 : 8FA30300;
+309 : 1AFDFEFA;
+30A : 415686B3;
+30B : 874EC814;
+30C : 007086CA;
+30D : 852685A2;
+30E : 5A7D3365;
+30F : 0D451363;
+310 : 50B2557D;
+311 : 54925422;
+312 : 49F25902;
+313 : 4AD24A62;
+314 : 61454B42;
+315 : 419C8082;
+316 : 0207E793;
+317 : 6805C19C;
+318 : 07800893;
+319 : 20C80813;
+31A : 051402A3;
+31B : 430C4010;
+31C : 08067513;
+31D : 0591419C;
+31E : 7513E511;
+31F : C1190406;
+320 : 83C107C2;
+321 : 7713C30C;
+322 : C7010016;
+323 : 02066613;
+324 : 4741C010;
+325 : 4010F3A9;
+326 : FDF67613;
+327 : BF25C010;
+328 : 08136805;
+329 : B7C91F88;
+32A : B7354721;
+32B : 431C4190;
+32C : 781349CC;
+32D : 85130806;
+32E : 06630047;
+32F : C3080008;
+330 : C38C439C;
+331 : C308A801;
+332 : 04067613;
+333 : DA75439C;
+334 : 00B79023;
+335 : 00042823;
+336 : BF918AB6;
+337 : 41D0431C;
+338 : 86934581;
+339 : C3140047;
+33A : 0007AA83;
+33B : 28A98556;
+33C : 0533C501;
+33D : C0484155;
+33E : C81C405C;
+33F : 040401A3;
+340 : 4814B73D;
+341 : 85CA8656;
+342 : 99828526;
+343 : F3450AE3;
+344 : 8B89401C;
+345 : 47B2E78D;
+346 : 54E34448;
+347 : 853EF2F5;
+348 : 4685B70D;
+349 : 85CA8656;
+34A : 99828526;
+34B : F1650AE3;
+34C : 445C0A05;
+34D : 8F994732;
+34E : FEFA45E3;
+34F : 4A01BFE9;
+350 : 01940A93;
+351 : B7F55B7D;
+352 : 0FF5F593;
+353 : 1463962A;
+354 : 450100C5;
+355 : 47838082;
+356 : 8DE30005;
+357 : 0505FEB7;
+358 : 832AB7FD;
+359 : 8383CA09;
+35A : 00230005;
+35B : 167D0073;
+35C : 05850305;
+35D : 8082FA6D;
+35E : 832AC215;
+35F : 67634685;
+360 : 56FD00B5;
+361 : FFF60713;
+362 : 95BA933A;
+363 : 00058383;
+364 : 00730023;
+365 : 9336167D;
+366 : FA6D95B6;
+367 : CDD18082;
+368 : FFC5A783;
+369 : CC221101;
+36A : 8413CE06;
+36B : D363FFC5;
+36C : 943E0007;
+36D : 2ADDC62A;
+36E : 8681A783;
+36F : EB894532;
+370 : 00042223;
+371 : 8681A423;
+372 : 40F24462;
+373 : A2C56105;
+374 : 00F47D63;
+375 : 06B34010;
+376 : 966300C4;
+377 : 439400D7;
+378 : 96B243DC;
+379 : C05CC014;
+37A : 873EBFF1;
+37B : C39943DC;
+37C : FEF47DE3;
+37D : 06334314;
+37E : 1F6300D7;
+37F : 40100086;
+380 : C31496B2;
+381 : 00D70633;
+382 : FCC790E3;
+383 : 43DC4390;
+384 : C31496B2;
+385 : BF4DC35C;
+386 : 00C47563;
+387 : C11C47B1;
+388 : 4010B765;
+389 : 00C406B3;
+38A : 00D79663;
+38B : 43DC4394;
+38C : C01496B2;
+38D : C340C05C;
+38E : 8082BF41;
+38F : CA261101;
+390 : 00358493;
+391 : C84A98F1;
+392 : CC22CE06;
+393 : 04A1C64E;
+394 : 892A47B1;
+395 : 04F4F263;
+396 : E16344B1;
+397 : 854A04B4;
+398 : 871322B1;
+399 : 43188681;
+39A : 86818693;
+39B : E031843A;
+39C : 86C18413;
+39D : E789401C;
+39E : 854A4581;
+39F : C0082219;
+3A0 : 854A85A6;
+3A1 : 59FD28FD;
+3A2 : 07351863;
+3A3 : 202347B1;
+3A4 : 854A00F9;
+3A5 : A0312A29;
+3A6 : FC04D1E3;
+3A7 : 202347B1;
+3A8 : 450100F9;
+3A9 : 446240F2;
+3AA : 494244D2;
+3AB : 610549B2;
+3AC : 401C8082;
+3AD : CE638F85;
+3AE : 462D0207;
+3AF : 00F67663;
+3B0 : 943EC01C;
+3B1 : A029C004;
+3B2 : 1263405C;
+3B3 : C29C0287;
+3B4 : 28F1854A;
+3B5 : 00B40513;
+3B6 : 00440793;
+3B7 : 07339961;
+3B8 : 01E340F5;
+3B9 : 943AFCF5;
+3BA : C01C8F89;
+3BB : C35CBF65;
+3BC : 8722B7C5;
+3BD : BFA54040;
+3BE : 00350413;
+3BF : 03E39871;
+3C0 : 05B3FC85;
+3C1 : 854A40A4;
+3C2 : 1DE328AD;
+3C3 : BFBDFB35;
+3C4 : CC221101;
+3C5 : CA26CE06;
+3C6 : C64EC84A;
+3C7 : 8432C452;
+3C8 : 4462E991;
+3C9 : 44D240F2;
+3CA : 49B24942;
+3CB : 85B24A22;
+3CC : B7296105;
+3CD : 35A5EE01;
+3CE : 40F24481;
+3CF : 49424462;
+3D0 : 4A2249B2;
+3D1 : 44D28526;
+3D2 : 80826105;
+3D3 : 892E8A2A;
+3D4 : 89AA2085;
+3D5 : 00856763;
+3D6 : 00155793;
+3D7 : EEE384CA;
+3D8 : 85A2FC87;
+3D9 : 3DD98552;
+3DA : D96184AA;
+3DB : F3638622;
+3DC : 864E0089;
+3DD : 852685CA;
+3DE : 85CA33ED;
+3DF : 35058552;
+3E0 : 1141BF6D;
+3E1 : C226C422;
+3E2 : 852E842A;
+3E3 : A823C606;
+3E4 : 28898601;
+3E5 : 166357FD;
+3E6 : A78300F5;
+3E7 : C3918701;
+3E8 : 40B2C01C;
+3E9 : 44924422;
+3EA : 80820141;
+3EB : 80828082;
+3EC : FFC5A783;
+3ED : FFC78513;
+3EE : 0007D563;
+3EF : 419C95AA;
+3F0 : 8082953E;
+3F1 : 05D00893;
+3F2 : 00000073;
+3F3 : 00055B63;
+3F4 : C4221141;
+3F5 : C606842A;
+3F6 : 40800433;
+3F7 : C1002889;
+3F8 : A001A001;
+3F9 : 87418793;
+3FA : 1141439C;
+3FB : 86AAC606;
+3FC : 87418713;
+3FD : 0893E38D;
+3FE : 45010D60;
+3FF : 00000073;
+400 : 196357FD;
+401 : 202500F5;
+402 : C11C47B1;
+403 : 40B2557D;
+404 : 80820141;
+405 : 431CC308;
+406 : 0D600893;
+407 : 853696BE;
+408 : 00000073;
+409 : FED511E3;
+40A : 853EC308;
+40B : A503B7CD;
+40C : 80828641;
+40D : 2070250D;
+40E : 6572203A;
+40F : 25206461;
+410 : 20783830;
+411 : 746F7277;
+412 : 30252065;
+413 : 0A0D7838;
+414 : 00000000;
+415 : 74736554;
+416 : 20676E69;
+417 : 41524453;
+418 : 7266204D;
+419 : 25206D6F;
+41A : 6F742070;
+41B : 2E702520;
+41C : 0A0D2E2E;
+41D : 00000000;
+41E : 2070250D;
+41F : 00000000;
+420 : 6165520D;
+421 : 676E6964;
+422 : 63616220;
+423 : 6F74206B;
+424 : 65686320;
+425 : 66206B63;
+426 : 6120726F;
+427 : 7361696C;
+428 : 2E2E7365;
+429 : 000A0D2E;
+42A : 5244530D;
+42B : 74204D41;
+42C : 20747365;
+42D : 706D6F63;
+42E : 6574656C;
+42F : 00000A0D;
+430 : 706F6F4C;
+431 : 25203A73;
+432 : 0A0A0D75;
+433 : 00000000;
+434 : 480A0A0D;
+435 : 6F6C6C65;
+436 : 6F57202C;
+437 : 21646C72;
+438 : 00000A0D;
+439 : 02020100;
+43A : 03030303;
+43B : 04040404;
+43C : 04040404;
+43D : 05050505;
+43E : 05050505;
+43F : 05050505;
+440 : 05050505;
+441 : 06060606;
+442 : 06060606;
+443 : 06060606;
+444 : 06060606;
+445 : 06060606;
+446 : 06060606;
+447 : 06060606;
+448 : 06060606;
+449 : 07070707;
+44A : 07070707;
+44B : 07070707;
+44C : 07070707;
+44D : 07070707;
+44E : 07070707;
+44F : 07070707;
+450 : 07070707;
+451 : 07070707;
+452 : 07070707;
+453 : 07070707;
+454 : 07070707;
+455 : 07070707;
+456 : 07070707;
+457 : 07070707;
+458 : 07070707;
+459 : 08080808;
+45A : 08080808;
+45B : 08080808;
+45C : 08080808;
+45D : 08080808;
+45E : 08080808;
+45F : 08080808;
+460 : 08080808;
+461 : 08080808;
+462 : 08080808;
+463 : 08080808;
+464 : 08080808;
+465 : 08080808;
+466 : 08080808;
+467 : 08080808;
+468 : 08080808;
+469 : 08080808;
+46A : 08080808;
+46B : 08080808;
+46C : 08080808;
+46D : 08080808;
+46E : 08080808;
+46F : 08080808;
+470 : 08080808;
+471 : 08080808;
+472 : 08080808;
+473 : 08080808;
+474 : 08080808;
+475 : 08080808;
+476 : 08080808;
+477 : 08080808;
+478 : 08080808;
+479 : 2B302D23;
+47A : 00000020;
+47B : 004C6C68;
+47C : 45676665;
+47D : 00004746;
+47E : 33323130;
+47F : 37363534;
+480 : 42413938;
+481 : 46454443;
+482 : 00000000;
+483 : 33323130;
+484 : 37363534;
+485 : 62613938;
+486 : 66656463;
+487 : 00000000;
+488 : 00000B54;
+489 : 00000B6A;
+48A : 00000B2E;
+48B : 00000B2E;
+48C : 00000B2E;
+48D : 00000B2E;
+48E : 00000B6A;
+48F : 00000B2E;
+490 : 00000B2E;
+491 : 00000B2E;
+492 : 00000B2E;
+493 : 00000CAC;
+494 : 00000BA6;
+495 : 00000C56;
+496 : 00000B2E;
+497 : 00000B2E;
+498 : 00000CDC;
+499 : 00000B2E;
+49A : 00000BA6;
+49B : 00000B2E;
+49C : 00000B2E;
+49D : 00000C5E;
+49E : 00000000;
+49F : 00000000;
+4A0 : 00000000;
+4A1 : 00000000;
+4A2 : 00000010;
+4A3 : 00000000;
+4A4 : 00527A03;
+4A5 : 01017C01;
+4A6 : 00020D1B;
+4A7 : 00000010;
+4A8 : 00000018;
+4A9 : FFFFEFB6;
+4AA : 0000035A;
+4AB : 00000000;
+4AC : 00000000;
+4AD : 0000018C;
+4AE : 0000015E;
+4AF : 00000000;
+4B0 : 00000000;
+4B1 : 00000000;
+4B2 : 00000000;
+4B3 : 00000000;
+4B4 : 00000000;
+4B5 : 00000000;
+4B6 : 00000000;
+4B7 : 00000000;
+4B8 : 00000000;
+4B9 : 00000000;
+4BA : 00000000;
+4BB : 00000000;
+4BC : 00000000;
+4BD : 00000000;
+4BE : 00000000;
+4BF : 00000000;
+4C0 : 00000000;
+4C1 : 00000000;
+4C2 : 00000000;
+4C3 : 00000000;
+4C4 : 00000000;
+4C5 : 00000000;
+4C6 : 00000000;
+4C7 : 000012BC;
+4C8 : 000012BC;
+[4C9..7FF] : 00;
 END;

+ 11 - 2
fw/console.c

@@ -9,8 +9,17 @@
 
 void con_set_baudrate(uint32_t b)
 {
-    uint32_t bauddiv = (CON_BAUD_BASE + (b >> 1))/b;
-    CON_BAUDDIV = bauddiv ? bauddiv - 1 : 0;
+    uint32_t bauddiv;
+
+    /* Produce a CON_BAUD_BITS binary fraction, rounded */
+    bauddiv = ((uint64_t)b << (CON_BAUD_BITS+1))/CON_BAUD_BASE;
+    bauddiv = (bauddiv >> 1) + (bauddiv & 1);
+
+    /*
+     * Not really a divisor, but a fractional multiplier. The -1
+     * is simply a technicality of the implementation.
+     */
+    CON_BAUDDIV = bauddiv - 1;
 }
 
 void con_putc(char c)

+ 2 - 1
fw/iodev.h

@@ -39,6 +39,7 @@
 #define LED		IODEVB(0,0)
 #define CONSOLE		IODEVB(1,0)
 #define CON_BAUDDIV	IODEVL(1,1)
-#define CON_BAUD_BASE	(48000000U >> 4)
+#define CON_BAUD_BASE	(84000000U >> 4)
+#define CON_BAUD_BITS	24
 
 #endif /* IODEV_H */

Some files were not shown because too many files changed in this diff