浏览代码

tty: add status register and irq support; clean up iodev map

Add a status register to the tty to avoid FIFO overflow and be able to
determine when the transmitter is truly empty. Add support for the
status bits to generate interrupts.
H. Peter Anvin 3 年之前
父节点
当前提交
9bf7d10a84
共有 13 个文件被更改,包括 4397 次插入4223 次删除
  1. 25 5
      fpga/max80.sv
  2. 3140 3116
      fpga/output_files/max80.jam
  3. 二进制
      fpga/output_files/max80.jbc
  4. 二进制
      fpga/output_files/max80.jic
  5. 1 1
      fpga/output_files/max80.map
  6. 二进制
      fpga/output_files/max80.pof
  7. 二进制
      fpga/output_files/max80.sof
  8. 80 31
      fpga/tty.sv
  9. 1134 1058
      fw/boot.mif
  10. 3 1
      fw/console.c
  11. 2 3
      fw/hello.c
  12. 1 1
      fw/io.h
  13. 11 7
      fw/iodev.h

+ 25 - 5
fpga/max80.sv

@@ -160,7 +160,7 @@ module max80 (
        end
      else
        begin
-	  reset_cmd_q <= reset_cmd_q | (rst_n & reset_cmd);
+	  reset_cmd_q <= rst_n & (reset_cmd_q | reset_cmd);
 	  if (~rst_n)
 	    { rst_n, rst_ctr } <= rst_ctr + 1'b1;
        end
@@ -386,8 +386,22 @@ module max80 (
 
    // Decode for small devices; use address space within range of
    // negative offsets from the zero register [-1K,0)
+   //
+   // Device map:
+   //  0 - LED
+   //  1 - Reset
+   //  2 - SPI->SDRAM downloader
+   //  3 - Serial port
+   //
+   // A device has IRQ (devno)+16 if it needs an interrupt.
+   //
+
    wire [15:0] iodev = cpu_mem_quad[3] << cpu_mem_addr[9:6];
+   tri0 [15:0] iodev_irq;	// tri0: if nothing is driving, value is 0
 
+   //
+   // SDRAM
+   //
    wire [31:0] sdram_rd;
    wire        sdram_rack;
    wire        sdram_rready;
@@ -489,6 +503,7 @@ module max80 (
 	      .REGS_INIT_ZERO ( 1 ),
 	      .STACKADDR ( 32'h4 << cpu_fast_mem_bits )
 	      )
+
    cpu (
 	.clk ( sys_clk ),
 	.resetn ( rst_n ),
@@ -508,7 +523,7 @@ module max80 (
 	.mem_la_addr  ( cpu_la_addr ),
 	.mem_la_wstrb ( cpu_la_wstrb ),
 
-	.irq ( 0 ),
+	.irq ( { iodev_irq, 16'b0 } ),
 	.eoi ( )
 	);
 
@@ -572,7 +587,7 @@ module max80 (
      endcase
 
    // Hard system reset under program control
-   assign reset_cmd = rst_n & iodev[15] & cpu_mem_wstrb[0] & cpu_mem_wdata[0];
+   assign reset_cmd = rst_n & iodev[1] & cpu_mem_wstrb[0] & cpu_mem_wdata[0];
 
    // LED indication from the CPU
    reg [2:0]   led_q;
@@ -627,16 +642,19 @@ module max80 (
    wire        tty_data_in;	// Input data
    wire        tty_cts_out;	// Assert CTS# externally
    wire        tty_rts_in;	// RTS# received from outside
+   wire [31:0] tty_rdata;
 
    assign tty_cts_out  = 1'b0;	// Assert CTS#
    tty tty (
 	    .rst_n ( rst_n ),
 	    .clk ( sys_clk ),
 
-	    .valid ( iodev[1] ),
+	    .valid ( iodev[3] ),
 	    .wstrb ( cpu_mem_wstrb ),
 	    .wdata ( cpu_mem_wdata ),
-	    .addr ( cpu_mem_addr[2] ),
+	    .rdata ( tty_rdata ),
+	    .addr ( cpu_mem_addr[3:2] ),
+	    .irq  ( iodev_irq[3] ),
 
 	    .tty_txd ( tty_data_out ) // DTE -> DCE
 	    );
@@ -670,7 +688,9 @@ module max80 (
    //
    always @(*)
      case ( cpu_mem_addr[9:6] )
+       4'h0:    iodev_rdata = { 29'b0, led_q };
        4'h2:    iodev_rdata = { 31'b0, rom_done_q };
+       4'h3:	iodev_rdata = tty_rdata;
        default: iodev_rdata = 32'hffff_ffff;
      endcase
    

文件差异内容过多而无法显示
+ 3140 - 3116
fpga/output_files/max80.jam


二进制
fpga/output_files/max80.jbc


二进制
fpga/output_files/max80.jic


+ 1 - 1
fpga/output_files/max80.map

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

二进制
fpga/output_files/max80.pof


二进制
fpga/output_files/max80.sof


+ 80 - 31
fpga/tty.sv

@@ -5,20 +5,30 @@
 // Currently only transmit is supported, 8-N-1, at a fixed speed.
 // The baud rate is tty_clk/((divisor+1)*16).
 //
-// Currently there is no overrun checking or interrupt support, but that
-// can come later. A large FIFO makes that less of an issue anyway...
+// The registers are as follows:
 //
+// 0 - WO - data register (will be RW)
+// 1 - RW - baud rate register (binary fraction of TTY_CLK/16 - 1)
+// 2 - RO - status register
+//          0 - transmitter idle (FIFO and shift register empty)
+//          1 - transmit FIFO 3/4 empty
+//	    2 - transmit FIFO 1/2 empty
+//          3 - transmit FIFO 1/2 full (inverse of bit 2)
+//          4 - transmit FIFO 3/4 full
+// 3 - RW - interrupt enable register (status register mask)
 
 module tty (
-	    input 	 rst_n,
-	    input 	 clk,
+	    input 	      rst_n,
+	    input 	      clk,
 
-	    input 	 valid,
-	    input [3:0]  wstrb,
-	    input [31:0] wdata,
-	    input [0:0]  addr,
+	    input 	      valid,
+	    input [3:0]       wstrb,
+	    input [31:0]      wdata,
+	    input [1:0]       addr,
+	    output reg [31:0] rdata,
+	    output reg	      irq,
 
-	    output 	 tty_txd
+	    output 	      tty_txd
 	    );
 
    `include "functions.sv"	// For ModelSim
@@ -53,6 +63,7 @@ module tty (
    wire tx_wrreq;
    wire tx_rdempty;
    wire [7:0] tx_data;
+   wire [8:0] tx_usedw;
    
    fifo txfifo (
 		.aclr ( ~rst_n ),
@@ -64,30 +75,9 @@ module tty (
 		.empty ( tx_rdempty ),
 		.full ( ),
 		.q ( tx_data ),
-		.usedw ( )
+		.usedw ( tx_usedw )
 		);
 
-   //
-   // CPU -> transmitter data. No wait state is needed nor expected.
-   //
-
-   // Data mask (if/when needed)
-   wire [31:0] wmask = {{8{wstrb[3]}}, {8{wstrb[2]}},
-			{8{wstrb[1]}}, {8{wstrb[0]}}};
-
-   // Data (FIFO) register; normally addressed as byte
-   // Protect against long pulses (edge detect)
-   reg old_wstrb;
-   always @(posedge clk)
-     old_wstrb <= wstrb[0];
-
-   assign tx_wrreq = valid & wstrb[0] & ~old_wstrb & (addr == 0);
-
-   // Divisor register
-   always @(posedge clk)
-     if (wstrb[0] & valid & (addr == 1))
-       divisor <= wdata[NCO_BITS-1:0] & wmask;
-
    //
    // Transmitter
    //
@@ -135,4 +125,63 @@ module tty (
 		 end // if (tx_phase == 4'hF)
 	    end // if ( tty_clk_en )
        end // else: !if(~rst_n)
+
+   //
+   // CPU interface
+   //
+
+   // Data (FIFO) register; normally addressed as byte
+   // Protect against long pulses (edge detect)
+   reg old_wstrb;
+   always @(posedge clk)
+     old_wstrb <= wstrb[0];
+
+   assign tx_wrreq = valid & wstrb[0] & ~old_wstrb & (addr == 2'b00);
+
+   // Status register definition
+   localparam status_bits = 5;
+   
+   wire [status_bits-1:0] status;
+
+   assign status[0] = tx_rdempty & (tx_bits == 4'd0);
+   assign status[1] = tx_usedw[8:7] == 2'b00;
+   assign status[2] = ~tx_usedw[8];
+   assign status[3] = tx_usedw[8];
+   assign status[4] = tx_usedw[8:7] == 2'b11;
+   
+   reg [status_bits-1:0]   irq_en;
+
+   //
+   // Control register writes.
+   // Only full word writes are supported.
+   //
+   always @(negedge rst_n or posedge clk)
+     if (~rst_n)
+       begin
+	  irq_en <= 5'b0;
+       end
+     else if (valid & (&wstrb))
+       case (addr)
+	 2'b01: divisor <= wdata[NCO_BITS-1:0];
+	 2'b11: irq_en  <= wdata[status_bits-1:0];
+       endcase // case (addr)
+
+   // Read MUX
+   always @(*)
+     begin
+	rdata = 32'b0;
+	case (addr)
+	  2'b01: rdata = divisor;
+	  2'b10: rdata = status;
+	  2'b11: rdata = irq_en;
+	endcase // case (addr)
+     end
+
+   // Interrupt
+   always @(negedge rst_n or posedge clk)
+     if (~rst_n)
+       irq <= 1'b0;
+     else
+       irq <= |(status & irq_en);
+   
 endmodule // tty

+ 1134 - 1058
fw/boot.mif

@@ -5,7 +5,7 @@ ADDRESS_RADIX = HEX;
 DATA_RADIX = HEX;
 CONTENT BEGIN
 000 : 00002137;
-001 : 3300006F;
+001 : 31A0006F;
 002 : 00000000;
 003 : 00000000;
 004 : C0067139;
@@ -18,7 +18,7 @@ CONTENT BEGIN
 00B : DC42DA3E;
 00C : 850BDE46;
 00D : 00EF0000;
-00E : 408237A0;
+00E : 40823680;
 00F : 43224292;
 010 : 4E4243B2;
 011 : 4F624ED2;
@@ -36,25 +36,25 @@ CONTENT BEGIN
 01D : D05AD256;
 01E : CC62CE5E;
 01F : C86ACA66;
-020 : 2645C66E;
+020 : 2679C66E;
 021 : C0000023;
 022 : C8002783;
 023 : 2473DFF5;
 024 : 6085C010;
-025 : 02008513;
-026 : 83132E75;
+025 : 15008513;
+026 : 83132E5D;
 027 : 25838601;
 028 : 63850003;
-029 : F2C38513;
+029 : 05C38513;
 02A : 00158713;
 02B : 00E32023;
-02C : 05932EE9;
+02C : 05932ED1;
 02D : 55B30540;
 02E : 648502B4;
-02F : F4048513;
+02F : 07048513;
 030 : 40000D37;
 031 : 40080A37;
-032 : 660526C9;
+032 : 66052E75;
 033 : 89ABD6B7;
 034 : 1D951837;
 035 : 11160C93;
@@ -72,1055 +72,1131 @@ CONTENT BEGIN
 041 : FF4D10E3;
 042 : 06376D85;
 043 : 85130002;
-044 : 2EA5F5CD;
-045 : 000A4E37;
-046 : 40000437;
-047 : 09136A85;
-048 : 6A410FFE;
-049 : 400809B7;
-04A : 0B1384A2;
-04B : 8EA60204;
-04C : 0004D583;
-04D : 002ED603;
-04E : 85130491;
-04F : 26B1F70A;
-050 : FF6497E3;
-051 : 2CF54529;
-052 : C0102F73;
-053 : C0102FF3;
-054 : 41EF8533;
-055 : FEA97CE3;
-056 : 17E39452;
-057 : 2B73FD34;
-058 : 8793C010;
-059 : 43948641;
-05A : 06376085;
-05B : 05B74200;
-05C : 85134000;
-05D : 2E11F7C0;
-05E : 02D00313;
-05F : 25B743A1;
-060 : D63745C1;
-061 : 08B778DA;
-062 : 0D370200;
-063 : 84930080;
-064 : 86238641;
-065 : AA238661;
-066 : 4A858671;
-067 : 89134981;
-068 : 8A1386C1;
-069 : 0FB78741;
-06A : 5CFD4000;
-06B : BA158B93;
-06C : ECB60C13;
-06D : FFF88D93;
-06E : 84330D05;
-06F : 458101F9;
-070 : 20238522;
-071 : 2C090004;
-072 : 852255FD;
-073 : 01942023;
-074 : C5932421;
-075 : C00CFFF9;
-076 : 2AFD8522;
-077 : 852285CE;
-078 : 01342023;
-079 : 86B32AD5;
-07A : 85220379;
-07B : 018685B3;
-07C : 22DDC00C;
-07D : 00040E37;
-07E : FFFE0E93;
-07F : 01DAFF33;
-080 : 40000FB7;
-081 : 02D00513;
-082 : 000F1863;
-083 : 00094783;
-084 : C4F00023;
-085 : 00A90023;
-086 : 0004A083;
-087 : 99860A85;
-088 : 01B9F9B3;
-089 : F9AA9BE3;
-08A : 85136285;
-08B : 241DFB42;
-08C : 27374321;
-08D : D3B745C1;
-08E : 0CB778DA;
-08F : 05B70004;
-090 : 06370200;
-091 : 20230080;
-092 : 4981006A;
-093 : 0B934A05;
-094 : 8C13BA17;
-095 : 0D37ECB3;
-096 : 1CFD4000;
-097 : 02D00D93;
-098 : FFF58413;
-099 : 00160A93;
-09A : 03798833;
-09B : 01A98533;
-09C : 018805B3;
-09D : 78B32295;
-09E : 9863019A;
-09F : 46830008;
-0A0 : 00230009;
-0A1 : 0023C4D0;
-0A2 : AE0301B9;
-0A3 : 0A050004;
-0A4 : 41C98EB3;
-0A5 : 008EF9B3;
-0A6 : FD5A18E3;
-0A7 : C0102973;
-0A8 : 0F936F55;
-0A9 : 0B33820F;
-0AA : 55B34169;
-0AB : 650503FB;
-0AC : FE050513;
-0AD : 40080DB7;
-0AE : A2832AC9;
-0AF : 478D0004;
-0B0 : 400005B7;
-0B1 : 02578333;
-0B2 : 00837733;
-0B3 : 01735B93;
-0B4 : 017743B3;
-0B5 : FF83FC13;
-0B6 : 004C6D13;
-0B7 : 01A4A023;
-0B8 : DEADC4B7;
-0B9 : EEF48C93;
-0BA : A02380AE;
-0BB : 05910190;
-0BC : FFB59CE3;
-0BD : C0102473;
-0BE : 1406F637;
-0BF : 3FF60A93;
-0C0 : C0102873;
-0C1 : 408808B3;
-0C2 : FF1AFCE3;
-0C3 : 85136685;
-0C4 : 22890086;
-0C5 : C0102E73;
-0C6 : 00803EB7;
-0C7 : C7FE8993;
-0C8 : C0102A73;
-0C9 : 41CA0933;
-0CA : FF29FCE3;
-0CB : 20234B05;
-0CC : BFF5FD60;
-0CD : 00001197;
-0CE : 5D818193;
-0CF : 86C18513;
-0D0 : 8A418613;
-0D1 : 45818E09;
-0D2 : 05132A7D;
-0D3 : C5190000;
-0D4 : 00000513;
-0D5 : 00000097;
-0D6 : 000000E7;
-0D7 : 450222B1;
-0D8 : 4601004C;
-0D9 : A0A939F5;
-0DA : C4221141;
-0DB : 8881C783;
-0DC : EF91C606;
-0DD : 00000793;
-0DE : 6505CB81;
-0DF : 10050513;
-0E0 : 00000097;
-0E1 : 000000E7;
-0E2 : 84234785;
-0E3 : 40B288F1;
-0E4 : 01414422;
-0E5 : 07938082;
-0E6 : CB910000;
-0E7 : 85936505;
-0E8 : 051388C1;
-0E9 : 03171005;
-0EA : 00670000;
-0EB : 80820000;
-0EC : 01407737;
-0ED : 02934789;
-0EE : F693F3F7;
-0EF : 00230FF7;
-0F0 : C793C0D0;
-0F1 : 26730077;
-0F2 : 2373C010;
-0F3 : 03B3C010;
-0F4 : FCE340C3;
-0F5 : B7D5FE72;
-0F6 : 03634110;
-0F7 : 114104B6;
-0F8 : 8413C422;
-0F9 : 401C8741;
-0FA : CF89C606;
-0FB : 85AA86AE;
-0FC : 05136505;
-0FD : 2851F085;
-0FE : 00042283;
-0FF : FFF28313;
-100 : 00642023;
-101 : 87018593;
-102 : 07134190;
-103 : 06930580;
-104 : C1940016;
-105 : 86234422;
-106 : 40B286E1;
-107 : 80820141;
-108 : D7378082;
-109 : 478D3216;
-10A : 94870313;
-10B : 02A782B3;
-10C : 02653533;
-10D : 00A283B3;
-10E : FFF38593;
-10F : C4B02223;
-110 : 47A98082;
-111 : 00F51563;
-112 : 002342B5;
-113 : 0023C450;
-114 : 8082C4A0;
-115 : C4221141;
-116 : 842AC606;
-117 : 00044503;
-118 : 40B2E509;
-119 : 01414422;
-11A : 04058082;
-11B : B7FD3FD9;
-11C : 862A7175;
-11D : 850A86AE;
-11E : 08000593;
-11F : 28EDC706;
-120 : 3FC9850A;
-121 : 614940BA;
-122 : 71398082;
-123 : 104CD22E;
-124 : D432CE06;
-125 : D83AD636;
-126 : DC42DA3E;
-127 : C62EDE46;
-128 : 40F23FC1;
-129 : 80826121;
-12A : C4221141;
-12B : 6405C226;
-12C : 87936485;
-12D : 04131044;
-12E : 8C1D1044;
-12F : C606C04A;
-130 : 84938409;
-131 : 49011044;
-132 : 02891563;
-133 : 64056485;
-134 : 10448793;
-135 : 10840413;
-136 : 84098C1D;
-137 : 10448493;
-138 : 1D634901;
-139 : 40B20089;
-13A : 44924422;
-13B : 01414902;
-13C : 409C8082;
-13D : 04910905;
-13E : B7F99782;
-13F : 0905409C;
-140 : 97820491;
-141 : 832ABFF9;
-142 : 0023C611;
-143 : 167D00B3;
-144 : FE650305;
-145 : 71198082;
-146 : DAA6DCA2;
-147 : D8CADE86;
-148 : 843284AA;
-149 : 00065C63;
-14A : 08B00793;
-14B : 557DC11C;
-14C : 546650F6;
-14D : 594654D6;
-14E : 80826109;
-14F : 20800793;
-150 : 00F11A23;
-151 : CC2EC42E;
-152 : 47818636;
-153 : C01986BA;
-154 : FFF40793;
-155 : 002C597D;
-156 : C83E8526;
-157 : 1B23CE3E;
-158 : 22210121;
-159 : 01255563;
-15A : 08B00793;
-15B : D069C09C;
-15C : 802347A2;
-15D : BF6D0007;
-15E : 86B28736;
-15F : 85AA862E;
-160 : 8681A503;
-161 : 1101BF49;
-162 : A903C84A;
-163 : CC220085;
-164 : C452C64E;
-165 : CE06C256;
-166 : C05ACA26;
-167 : 0005AA83;
-168 : 8A32842E;
-169 : E76389B6;
-16A : D7830726;
-16B : F71300C5;
-16C : CF394807;
-16D : 448D4858;
-16E : 84B3498C;
-16F : 470902E4;
-170 : 40BA8AB3;
-171 : C4B38B2A;
-172 : 871302E4;
-173 : 97560016;
-174 : 00E4F363;
-175 : F79384BA;
-176 : C7A54007;
-177 : 855A85A6;
-178 : 892A2F81;
-179 : 480CC925;
-17A : 25B58656;
-17B : 00C45783;
-17C : B7F7F793;
-17D : 0807E793;
-17E : 00F41623;
-17F : 01242823;
-180 : 9956C844;
-181 : 415484B3;
-182 : 01242023;
-183 : 894EC404;
-184 : 0129F363;
-185 : 4008894E;
-186 : 85D2864A;
-187 : 441C2D81;
-188 : 87B34501;
-189 : C41C4127;
-18A : 97CA401C;
-18B : 40F2C01C;
-18C : 44D24462;
-18D : 49B24942;
-18E : 4A924A22;
-18F : 61054B02;
-190 : 86268082;
-191 : 00EF855A;
-192 : 892A7BE0;
-193 : 480CF945;
-194 : 2581855A;
-195 : 202347B1;
-196 : 578300FB;
-197 : 557D00C4;
-198 : 0407E793;
-199 : 00F41623;
-19A : D783B7D9;
-19B : 717100C5;
-19C : D326D522;
-19D : CD52D14A;
-19E : CF4ED706;
-19F : C95ACB56;
-1A0 : C562C75E;
-1A1 : C16AC366;
-1A2 : F793DEEE;
-1A3 : 8A2A0807;
-1A4 : 84B2892E;
-1A5 : C3B18436;
-1A6 : E3A1499C;
-1A7 : 04000593;
-1A8 : 20232D41;
-1A9 : 282300A9;
-1AA : E50500A9;
-1AB : 202347B1;
-1AC : 557D00FA;
-1AD : 542A50BA;
-1AE : 590A549A;
-1AF : 4A6A49FA;
-1B0 : 4B4A4ADA;
-1B1 : 4C2A4BBA;
-1B2 : 4D0A4C9A;
-1B3 : 614D5DF6;
-1B4 : 07938082;
-1B5 : 2A230400;
-1B6 : 079300F9;
-1B7 : 04A30200;
-1B8 : 079302F1;
-1B9 : D2020300;
-1BA : 02F10523;
-1BB : 0C93C622;
-1BC : 6B050250;
-1BD : 6D056B85;
-1BE : 00000A93;
-1BF : 47838426;
-1C0 : C3990004;
-1C1 : 09979E63;
-1C2 : 40940DB3;
-1C3 : 00940D63;
-1C4 : 862686EE;
-1C5 : 855285CA;
-1C6 : 57FD35BD;
-1C7 : 18F50B63;
-1C8 : 97EE5792;
-1C9 : 4783D23E;
-1CA : 84630004;
-1CB : 57FD1807;
-1CC : 00140493;
-1CD : CE02C802;
-1CE : CC02CA3E;
-1CF : 040109A3;
-1D0 : 4D85D482;
-1D1 : 0004C583;
-1D2 : 05134615;
-1D3 : 21FD068B;
-1D4 : 841347C2;
-1D5 : E5390014;
-1D6 : 0107F713;
-1D7 : 0713C709;
-1D8 : 09A30200;
-1D9 : F71304E1;
-1DA : C7090087;
-1DB : 02B00713;
-1DC : 04E109A3;
-1DD : 0004C683;
-1DE : 02A00713;
-1DF : 02E68D63;
-1E0 : 842647F2;
-1E1 : 46254681;
-1E2 : 47034529;
-1E3 : 05930004;
-1E4 : 07130014;
-1E5 : 7563FD07;
-1E6 : C69506E6;
-1E7 : A025CE3E;
-1E8 : BFB10405;
-1E9 : 068B0713;
-1EA : 95338D19;
-1EB : 8FC900AD;
-1EC : 84A2C83E;
-1ED : 4732BF41;
-1EE : 00470693;
-1EF : C6364318;
-1F0 : 02074963;
-1F1 : 4703CE3A;
-1F2 : 07930004;
-1F3 : 106302E0;
-1F4 : 470306F7;
-1F5 : 07930014;
-1F6 : 1B6302A0;
-1F7 : 47B202F7;
-1F8 : 87130409;
-1F9 : 439C0047;
-1FA : C163C63A;
-1FB : CA3E0207;
-1FC : 0733A83D;
-1FD : E79340E0;
-1FE : CE3A0027;
-1FF : B7E1C83E;
-200 : 02A787B3;
-201 : 4685842E;
-202 : B74197BA;
-203 : B7C557FD;
-204 : CA020405;
-205 : 47814681;
-206 : 45294625;
-207 : 00044703;
-208 : 00140593;
-209 : FD070713;
-20A : 04E67D63;
-20B : 4583F2E9;
-20C : 460D0004;
-20D : 070B8513;
-20E : CD012111;
-20F : 070B8793;
-210 : 47C28D1D;
-211 : 04000713;
-212 : 00A71733;
-213 : 04058FD9;
-214 : 4583C83E;
-215 : 46190004;
-216 : 074D0513;
-217 : 00140493;
-218 : 02B10423;
-219 : CD392EE1;
-21A : 020A9763;
-21B : 47B24742;
-21C : 10077713;
-21D : 0791CF09;
-21E : 5792C63E;
-21F : D23E97CE;
-220 : 87B3BDB5;
-221 : 842E02A7;
-222 : 97BA4685;
-223 : 079DBF41;
-224 : 07A19BE1;
-225 : 0078B7D5;
-226 : 58600693;
-227 : 080C864A;
-228 : 00978552;
-229 : 00E70000;
-22A : 57FD0000;
-22B : 16E389AA;
-22C : 5783FCF5;
-22D : 557D00C9;
-22E : 0407F793;
-22F : DE079CE3;
-230 : BBCD5512;
-231 : 06930078;
-232 : 864A5860;
-233 : 8552080C;
-234 : BFE12A11;
-235 : CC527179;
-236 : 8A3A499C;
-237 : D4224598;
-238 : CE4ED04A;
-239 : D606CA56;
-23A : C85AD226;
-23B : 89AAC65E;
-23C : 8932842E;
-23D : D3638AB6;
-23E : 87BA00E7;
-23F : 00F92023;
-240 : 04344703;
-241 : 0785C701;
-242 : 00F92023;
-243 : F793401C;
-244 : C7910207;
-245 : 00092783;
-246 : 20230789;
-247 : 400400F9;
-248 : E8918899;
-249 : 01940B13;
-24A : 445C5BFD;
-24B : 00092703;
-24C : CC638F99;
-24D : 478304F4;
-24E : 36B30434;
-24F : 401C00F0;
-250 : 0207F793;
-251 : 0613EBA5;
-252 : 85D60434;
-253 : 9A02854E;
-254 : 036357FD;
-255 : 401C04F5;
-256 : 44814711;
-257 : 99638B99;
-258 : 444400E7;
-259 : 00092783;
-25A : D3638C9D;
-25B : 44810004;
-25C : 4818441C;
-25D : 00F75463;
-25E : 94BE8F99;
-25F : 04694901;
-260 : 98635B7D;
-261 : 45010524;
-262 : 4685A809;
-263 : 85D6865A;
-264 : 9A02854E;
-265 : 01751E63;
-266 : 50B2557D;
-267 : 54925422;
-268 : 49F25902;
-269 : 4AD24A62;
-26A : 4BB24B42;
-26B : 80826145;
-26C : BFA50485;
-26D : 00D40733;
-26E : 03000613;
-26F : 04C701A3;
-270 : 04544703;
-271 : 00168793;
-272 : 068997A2;
-273 : 04E781A3;
-274 : 4685BF9D;
-275 : 85D68622;
-276 : 9A02854E;
-277 : FB650EE3;
-278 : B7450905;
-279 : D4227179;
-27A : D04AD226;
-27B : D606CE4E;
-27C : CA56CC52;
-27D : C883C85A;
-27E : 07930185;
-27F : 84AA0780;
-280 : 8932842E;
-281 : EE6389B6;
-282 : 07930117;
-283 : 86930620;
-284 : ED630435;
-285 : 89630117;
-286 : 07931A08;
-287 : 8B630580;
-288 : 0A9316F8;
-289 : 01230424;
-28A : A8050514;
-28B : F9D88793;
-28C : 0FF7F793;
-28D : 66E34655;
-28E : 6605FEF6;
-28F : 0613078A;
-290 : 97B20A46;
-291 : 8782439C;
-292 : 8A93431C;
-293 : 86930425;
-294 : 439C0047;
-295 : 8123C314;
-296 : 478504F5;
-297 : 419CAA49;
-298 : F6134308;
-299 : 05930807;
-29A : C2050045;
-29B : C30C411C;
-29C : D8636805;
-29D : 07130007;
-29E : 07B302D0;
-29F : 01A340F0;
-2A0 : 081304E4;
-2A1 : 472907C8;
-2A2 : F613A099;
-2A3 : 411C0407;
-2A4 : DE79C30C;
-2A5 : 87C107C2;
-2A6 : 4190BFE1;
-2A7 : 7513431C;
-2A8 : 85930806;
-2A9 : C5010047;
-2AA : 439CC30C;
-2AB : 7613A039;
-2AC : C30C0406;
-2AD : D783DA7D;
-2AE : 68050007;
-2AF : 06F00713;
-2B0 : 07C80813;
-2B1 : 0CE88C63;
-2B2 : 01A34729;
-2B3 : 40500404;
-2B4 : 4563C410;
-2B5 : 400C0006;
-2B6 : C00C99ED;
-2B7 : 8AB6E399;
-2B8 : 8AB6CE19;
-2B9 : 02E7F633;
-2BA : 96421AFD;
-2BB : 00064603;
-2BC : 00CA8023;
-2BD : D7B3863E;
-2BE : 75E302E7;
-2BF : 47A1FEE6;
-2C0 : 00F71E63;
-2C1 : 8B85401C;
-2C2 : 4058CB91;
-2C3 : C763481C;
-2C4 : 079300E7;
-2C5 : 8FA30300;
-2C6 : 1AFDFEFA;
-2C7 : 415686B3;
-2C8 : 874EC814;
-2C9 : 007086CA;
-2CA : 852685A2;
-2CB : 5A7D3365;
-2CC : 0D451363;
-2CD : 50B2557D;
-2CE : 54925422;
-2CF : 49F25902;
-2D0 : 4AD24A62;
-2D1 : 61454B42;
-2D2 : 419C8082;
-2D3 : 0207E793;
-2D4 : 6805C19C;
-2D5 : 07800893;
-2D6 : 09080813;
-2D7 : 051402A3;
-2D8 : 430C4010;
-2D9 : 08067513;
-2DA : 0591419C;
-2DB : 7513E511;
-2DC : C1190406;
-2DD : 83C107C2;
-2DE : 7713C30C;
-2DF : C7010016;
-2E0 : 02066613;
-2E1 : 4741C010;
-2E2 : 4010F3A9;
-2E3 : FDF67613;
-2E4 : BF25C010;
-2E5 : 08136805;
-2E6 : B7C907C8;
-2E7 : B7354721;
-2E8 : 431C4190;
-2E9 : 781349CC;
-2EA : 85130806;
-2EB : 06630047;
-2EC : C3080008;
-2ED : C38C439C;
-2EE : C308A801;
-2EF : 04067613;
-2F0 : DA75439C;
-2F1 : 00B79023;
-2F2 : 00042823;
-2F3 : BF918AB6;
-2F4 : 41D0431C;
-2F5 : 86934581;
-2F6 : C3140047;
-2F7 : 0007AA83;
-2F8 : 28A98556;
-2F9 : 0533C501;
-2FA : C0484155;
-2FB : C81C405C;
-2FC : 040401A3;
-2FD : 4814B73D;
-2FE : 85CA8656;
-2FF : 99828526;
-300 : F3450AE3;
-301 : 8B89401C;
-302 : 47B2E78D;
-303 : 54E34448;
-304 : 853EF2F5;
-305 : 4685B70D;
-306 : 85CA8656;
-307 : 99828526;
-308 : F1650AE3;
-309 : 445C0A05;
-30A : 8F994732;
-30B : FEFA45E3;
-30C : 4A01BFE9;
-30D : 01940A93;
-30E : B7F55B7D;
-30F : 0FF5F593;
-310 : 1463962A;
-311 : 450100C5;
-312 : 47838082;
-313 : 8DE30005;
-314 : 0505FEB7;
-315 : 832AB7FD;
-316 : 8383CA09;
-317 : 00230005;
-318 : 167D0073;
-319 : 05850305;
-31A : 8082FA6D;
-31B : 832AC215;
-31C : 67634685;
-31D : 56FD00B5;
-31E : FFF60713;
-31F : 95BA933A;
-320 : 00058383;
-321 : 00730023;
-322 : 9336167D;
-323 : FA6D95B6;
-324 : CDD18082;
-325 : FFC5A783;
-326 : CC221101;
-327 : 8413CE06;
-328 : D363FFC5;
-329 : 943E0007;
-32A : 2ADDC62A;
-32B : 8781A783;
-32C : EB894532;
-32D : 00042223;
-32E : 8681AC23;
-32F : 40F24462;
-330 : A2C56105;
-331 : 00F47D63;
-332 : 06B34010;
-333 : 966300C4;
-334 : 439400D7;
-335 : 96B243DC;
-336 : C05CC014;
-337 : 873EBFF1;
-338 : C39943DC;
-339 : FEF47DE3;
-33A : 06334314;
-33B : 1F6300D7;
-33C : 40100086;
-33D : C31496B2;
-33E : 00D70633;
-33F : FCC790E3;
-340 : 43DC4390;
-341 : C31496B2;
-342 : BF4DC35C;
-343 : 00C47563;
-344 : C11C47B1;
-345 : 4010B765;
-346 : 00C406B3;
-347 : 00D79663;
-348 : 43DC4394;
-349 : C01496B2;
-34A : C340C05C;
-34B : 8082BF41;
-34C : CA261101;
-34D : 00358493;
-34E : C84A98F1;
-34F : CC22CE06;
-350 : 04A1C64E;
-351 : 892A47B1;
-352 : 04F4F263;
-353 : E16344B1;
-354 : 854A04B4;
-355 : 871322B1;
-356 : 43188781;
-357 : 87818693;
-358 : E031843A;
-359 : 87C18413;
-35A : E789401C;
-35B : 854A4581;
-35C : C0082219;
-35D : 854A85A6;
-35E : 59FD28FD;
-35F : 07351863;
-360 : 202347B1;
-361 : 854A00F9;
-362 : A0312A29;
-363 : FC04D1E3;
-364 : 202347B1;
-365 : 450100F9;
-366 : 446240F2;
-367 : 494244D2;
-368 : 610549B2;
-369 : 401C8082;
-36A : CE638F85;
-36B : 462D0207;
-36C : 00F67663;
-36D : 943EC01C;
-36E : A029C004;
-36F : 1263405C;
-370 : C29C0287;
-371 : 28F1854A;
-372 : 00B40513;
-373 : 00440793;
-374 : 07339961;
-375 : 01E340F5;
-376 : 943AFCF5;
-377 : C01C8F89;
-378 : C35CBF65;
-379 : 8722B7C5;
-37A : BFA54040;
-37B : 00350413;
-37C : 03E39871;
-37D : 05B3FC85;
-37E : 854A40A4;
-37F : 1DE328AD;
-380 : BFBDFB35;
-381 : CC221101;
-382 : CA26CE06;
-383 : C64EC84A;
-384 : 8432C452;
-385 : 4462E991;
-386 : 44D240F2;
-387 : 49B24942;
-388 : 85B24A22;
-389 : B7296105;
-38A : 35A5EE01;
-38B : 40F24481;
-38C : 49424462;
-38D : 4A2249B2;
-38E : 44D28526;
-38F : 80826105;
-390 : 892E8A2A;
-391 : 89AA2085;
-392 : 00856763;
-393 : 00155793;
-394 : EEE384CA;
-395 : 85A2FC87;
-396 : 3DD98552;
-397 : D96184AA;
-398 : F3638622;
-399 : 864E0089;
-39A : 852685CA;
-39B : 85CA33ED;
-39C : 35058552;
-39D : 1141BF6D;
-39E : C226C422;
-39F : 852E842A;
-3A0 : A023C606;
-3A1 : 280D8801;
-3A2 : 166357FD;
-3A3 : A78300F5;
-3A4 : C3918801;
-3A5 : 40B2C01C;
-3A6 : 44924422;
-3A7 : 80820141;
-3A8 : 80828082;
-3A9 : FFC5A783;
-3AA : FFC78513;
-3AB : 0007D563;
-3AC : 419C95AA;
-3AD : 8082953E;
-3AE : 88418793;
-3AF : 1141439C;
-3B0 : 86AAC606;
-3B1 : 88418713;
-3B2 : 0893E38D;
-3B3 : 45010D60;
-3B4 : 00000073;
-3B5 : 196357FD;
-3B6 : 202500F5;
-3B7 : C11C47B1;
-3B8 : 40B2557D;
-3B9 : 80820141;
-3BA : 431CC308;
-3BB : 0D600893;
-3BC : 853696BE;
-3BD : 00000073;
-3BE : FED511E3;
-3BF : 853EC308;
-3C0 : A503B7CD;
-3C1 : 80828681;
-3C2 : 70250A0D;
-3C3 : 72203A20;
-3C4 : 20646165;
-3C5 : 78383025;
-3C6 : 70786520;
-3C7 : 65746365;
-3C8 : 30252064;
-3C9 : 0A0D7838;
-3CA : 00000000;
-3CB : 73696854;
-3CC : 20736920;
-3CD : 706F6F6C;
-3CE : 7525203A;
-3CF : 0000000A;
-3D0 : 41524453;
-3D1 : 6F64204D;
-3D2 : 6F6C6E77;
-3D3 : 74206461;
-3D4 : 206B6F6F;
-3D5 : 75207525;
-3D6 : 00000A73;
-3D7 : 252F7525;
-3D8 : 6F772075;
-3D9 : 20736472;
-3DA : 0A0A4B4F;
-3DB : 00000000;
-3DC : 34302520;
-3DD : 30252E78;
-3DE : 00007834;
-3DF : 74736554;
-3E0 : 20676E69;
-3E1 : 41524453;
-3E2 : 7266204D;
-3E3 : 30206D6F;
-3E4 : 38302578;
-3E5 : 6F742078;
-3E6 : 25783020;
-3E7 : 2C783830;
-3E8 : 72747320;
-3E9 : 20656469;
-3EA : 30257830;
-3EB : 2E2E7838;
-3EC : 000A0D2E;
-3ED : 65520A0D;
-3EE : 6E696461;
-3EF : 61622067;
-3F0 : 74206B63;
-3F1 : 6863206F;
-3F2 : 206B6365;
-3F3 : 20726F66;
-3F4 : 61696C61;
-3F5 : 2E736573;
-3F6 : 0A0D2E2E;
-3F7 : 00000000;
-3F8 : 5244530D;
-3F9 : 74204D41;
-3FA : 20747365;
-3FB : 706D6F63;
-3FC : 6574656C;
-3FD : 6974202C;
-3FE : 3D20656D;
-3FF : 20752520;
-400 : 0A0D736D;
-401 : 00000000;
-402 : 202A2A2A;
-403 : 6E696F44;
-404 : 65722067;
-405 : 20746573;
-406 : 0D2A2A2A;
-407 : 00000A0A;
-408 : 2A0A0A0D;
-409 : 48202A2A;
-40A : 6F6C6C65;
-40B : 6F57202C;
-40C : 21646C72;
-40D : 2A2A2A20;
-40E : 69460A0D;
-40F : 61776D72;
-410 : 63206572;
-411 : 69706D6F;
-412 : 2064656C;
-413 : 203A6E6F;
-414 : 2074634F;
-415 : 32203420;
-416 : 20313230;
-417 : 333A3030;
-418 : 30353A32;
-419 : 000A0A0D;
-41A : 2B302D23;
-41B : 00000020;
-41C : 004C6C68;
-41D : 45676665;
-41E : 00004746;
-41F : 33323130;
-420 : 37363534;
-421 : 42413938;
-422 : 46454443;
-423 : 00000000;
-424 : 33323130;
-425 : 37363534;
-426 : 62613938;
-427 : 66656463;
-428 : 00000000;
-429 : 00000A48;
-42A : 00000A5E;
-42B : 00000A22;
-42C : 00000A22;
-42D : 00000A22;
-42E : 00000A22;
-42F : 00000A5E;
-430 : 00000A22;
-431 : 00000A22;
-432 : 00000A22;
-433 : 00000A22;
-434 : 00000BA0;
-435 : 00000A9A;
-436 : 00000B4A;
-437 : 00000A22;
-438 : 00000A22;
-439 : 00000BD0;
-43A : 00000A22;
-43B : 00000A9A;
-43C : 00000A22;
-43D : 00000A22;
-43E : 00000B52;
-43F : 00000000;
-440 : 00000000;
-441 : 00000396;
-442 : 00000368;
+044 : 2E8D08CD;
+045 : 40000437;
+046 : 69C16A05;
+047 : 40080937;
+048 : 0A9384A2;
+049 : 8E260204;
+04A : 0004D583;
+04B : 002E5603;
+04C : 05130491;
+04D : 26B90A0A;
+04E : FF5497E3;
+04F : 944E4529;
+050 : 1FE32CC5;
+051 : 2B73FD24;
+052 : 8E93C010;
+053 : A6838641;
+054 : 6F05000E;
+055 : 42000637;
+056 : 400005B7;
+057 : 0ACF0513;
+058 : 05132615;
+059 : 47A102D0;
+05A : 45C12337;
+05B : 78DAD737;
+05C : 020005B7;
+05D : 00800637;
+05E : 86418493;
+05F : 86A186A3;
+060 : 86F1AA23;
+061 : 49814A85;
+062 : 86D18913;
+063 : 87418A13;
+064 : 40000EB7;
+065 : 0B935CFD;
+066 : 0C13BA13;
+067 : 8D93ECB7;
+068 : 0D13FFF5;
+069 : 84330016;
+06A : 458101D9;
+06B : 20238522;
+06C : 2C110004;
+06D : 852255FD;
+06E : 01942023;
+06F : C5932429;
+070 : C00CFFF9;
+071 : 24018522;
+072 : 852285CE;
+073 : 01342023;
+074 : 86B32ADD;
+075 : 85220379;
+076 : 018685B3;
+077 : 22E5C00C;
+078 : 00040837;
+079 : FFF80893;
+07A : 011AFE33;
+07B : 40000EB7;
+07C : 02D00F13;
+07D : 000E1863;
+07E : 00094083;
+07F : CC100023;
+080 : 01E90023;
+081 : 0004AF83;
+082 : 99FE0A85;
+083 : 01B9F9B3;
+084 : F9AA9BE3;
+085 : 05136505;
+086 : 2C150E45;
+087 : 78DADCB7;
+088 : 27B742A1;
+089 : 033745C1;
+08A : 07370004;
+08B : 03B70200;
+08C : 20230080;
+08D : 8C13005A;
+08E : 4A05ECBC;
+08F : 8B934981;
+090 : 0D37BA17;
+091 : 0C934000;
+092 : 0D93FFF3;
+093 : 041302D0;
+094 : 8A93FFF7;
+095 : 85B30013;
+096 : 85330379;
+097 : 95E201A9;
+098 : 7633229D;
+099 : E619019A;
+09A : 00094683;
+09B : CCD00023;
+09C : 01B90023;
+09D : 0004A803;
+09E : 88B30A05;
+09F : F9B34109;
+0A0 : 1AE30088;
+0A1 : 2973FD5A;
+0A2 : 6E55C010;
+0A3 : 820E0E93;
+0A4 : 41690B33;
+0A5 : 03DB55B3;
+0A6 : 05136F05;
+0A7 : 0DB7110F;
+0A8 : 22CD4008;
+0A9 : 0004AF83;
+0AA : 0737450D;
+0AB : 02B34000;
+0AC : FBB303F5;
+0AD : D7930082;
+0AE : CC330172;
+0AF : 7D1300FB;
+0B0 : 6313FF8C;
+0B1 : A023004D;
+0B2 : C4B70064;
+0B3 : 8C93DEAD;
+0B4 : 80BAEEF4;
+0B5 : 0190A023;
+0B6 : 1CE30711;
+0B7 : 2473FFB7;
+0B8 : F3B7C010;
+0B9 : 8A931406;
+0BA : 25F33FF3;
+0BB : 8633C010;
+0BC : FCE34085;
+0BD : 6685FECA;
+0BE : 13868513;
+0BF : 28732A89;
+0C0 : 38B7C010;
+0C1 : 89930080;
+0C2 : 2A73C7F8;
+0C3 : 0933C010;
+0C4 : FCE3410A;
+0C5 : 4B05FF29;
+0C6 : C5602023;
+0C7 : 1197BFF5;
+0C8 : 81930000;
+0C9 : 851371E1;
+0CA : 861386C1;
+0CB : 8E098A01;
+0CC : 2AD94581;
+0CD : 00000513;
+0CE : 0513C519;
+0CF : 00970000;
+0D0 : 00E70000;
+0D1 : 2AB10000;
+0D2 : 004C4502;
+0D3 : 3B094601;
+0D4 : 1141A0B9;
+0D5 : C783C422;
+0D6 : C60686C1;
+0D7 : 0293EF99;
+0D8 : 89630000;
+0D9 : 65050002;
+0DA : 23050513;
+0DB : 00000097;
+0DC : 000000E7;
+0DD : 86234305;
+0DE : 40B28661;
+0DF : 01414422;
+0E0 : 02938082;
+0E1 : 8B630000;
+0E2 : 65050002;
+0E3 : 88818593;
+0E4 : 23050513;
+0E5 : 00000317;
+0E6 : 00000067;
+0E7 : 77378082;
+0E8 : 47890140;
+0E9 : F3F70293;
+0EA : 0FF7F693;
+0EB : C0D00023;
+0EC : 0077C793;
+0ED : C0102673;
+0EE : C0102373;
+0EF : 40C303B3;
+0F0 : FE72FCE3;
+0F1 : 4110B7D5;
+0F2 : 04B60363;
+0F3 : C4221141;
+0F4 : 87418413;
+0F5 : C606401C;
+0F6 : 86AECF89;
+0F7 : 650585AA;
+0F8 : 03850513;
+0F9 : 22832045;
+0FA : 83130004;
+0FB : 2023FFF2;
+0FC : 85930064;
+0FD : 41908701;
+0FE : 05800713;
+0FF : 00160693;
+100 : 4422C194;
+101 : 86E186A3;
+102 : 014140B2;
+103 : 80828082;
+104 : 3216D737;
+105 : 0313478D;
+106 : 82B39487;
+107 : 353302A7;
+108 : 83B30265;
+109 : 859300A2;
+10A : 2223FFF3;
+10B : 8082CCB0;
+10C : CC802783;
+10D : 0107F293;
+10E : FE029CE3;
+10F : 15634329;
+110 : 43B50065;
+111 : CC700023;
+112 : CCA00023;
+113 : 11418082;
+114 : C606C422;
+115 : 4503842A;
+116 : E5090004;
+117 : 442240B2;
+118 : 80820141;
+119 : 37E90405;
+11A : 7175B7FD;
+11B : 86AE862A;
+11C : 0593850A;
+11D : C7060800;
+11E : 850A2219;
+11F : 40BA3FC9;
+120 : 80826149;
+121 : D22E7139;
+122 : CE06104C;
+123 : D636D432;
+124 : DA3ED83A;
+125 : DE46DC42;
+126 : 3FC1C62E;
+127 : 612140F2;
+128 : 11418082;
+129 : C226C422;
+12A : 64856405;
+12B : 23448793;
+12C : 0093C606;
+12D : 82B32344;
+12E : C04A40F0;
+12F : 4022D413;
+130 : 23448493;
+131 : 17634901;
+132 : 63050289;
+133 : 03936505;
+134 : 05932343;
+135 : 86332385;
+136 : 54134075;
+137 : 04934026;
+138 : 49012343;
+139 : 00891D63;
+13A : 442240B2;
+13B : 49024492;
+13C : 80820141;
+13D : 09054098;
+13E : 97020491;
+13F : 4094B7E9;
+140 : 04910905;
+141 : BFF99682;
+142 : C611832A;
+143 : 00B30023;
+144 : 0305167D;
+145 : 8082FE65;
+146 : DCA27119;
+147 : DE86DAA6;
+148 : 84AAD8CA;
+149 : 5D638432;
+14A : 03930006;
+14B : 202308B0;
+14C : 557D0075;
+14D : 546650F6;
+14E : 594654D6;
+14F : 80826109;
+150 : 20800793;
+151 : 00F11A23;
+152 : CC2EC42E;
+153 : 40818636;
+154 : C01986BA;
+155 : FFF40093;
+156 : 002C597D;
+157 : C8068526;
+158 : 1B23CE06;
+159 : 2A390121;
+15A : 01255663;
+15B : 08B00293;
+15C : 0054A023;
+15D : 4322D061;
+15E : 00030023;
+15F : 8736BF65;
+160 : 862E86B2;
+161 : A50385AA;
+162 : B7798681;
+163 : C05A1101;
+164 : 0085AB03;
+165 : C64ECC22;
+166 : C256C452;
+167 : CA26CE06;
+168 : AA83C84A;
+169 : 842E0005;
+16A : 89B68A32;
+16B : 0766EC63;
+16C : 00C5D783;
+16D : 4807F713;
+16E : 2083C725;
+16F : 448D0144;
+170 : 82B34309;
+171 : 498C0214;
+172 : 00168393;
+173 : 8AB38B2A;
+174 : 853340BA;
+175 : C4B30153;
+176 : F3630262;
+177 : 84AA00A4;
+178 : 4007F613;
+179 : 85A6CE25;
+17A : 00EF855A;
+17B : 892A0450;
+17C : 480CCD3D;
+17D : 27358656;
+17E : 00C45583;
+17F : B7F5F693;
+180 : 0806E813;
+181 : 01041623;
+182 : 015908B3;
+183 : 41548E33;
+184 : 01242823;
+185 : 01142023;
+186 : 8B4EC844;
+187 : 01C42423;
+188 : 0169F363;
+189 : 40088B4E;
+18A : 865A85D2;
+18B : 2E832731;
+18C : 2F830084;
+18D : 45010004;
+18E : 416E8F33;
+18F : 016F8A33;
+190 : 01E42423;
+191 : 01442023;
+192 : 446240F2;
+193 : 494244D2;
+194 : 4A2249B2;
+195 : 4B024A92;
+196 : 80826105;
+197 : 855A8626;
+198 : 0C3000EF;
+199 : F14D892A;
+19A : 855A480C;
+19B : 57832DCD;
+19C : 49B100C4;
+19D : 013B2023;
+19E : 0407E713;
+19F : 00E41623;
+1A0 : B7D9557D;
+1A1 : 00C5D783;
+1A2 : D7067171;
+1A3 : D326D522;
+1A4 : CD52D14A;
+1A5 : CB56CF4E;
+1A6 : C75EC95A;
+1A7 : C366C562;
+1A8 : DEEEC16A;
+1A9 : 0807F093;
+1AA : 892E8A2A;
+1AB : 843684B2;
+1AC : 04008563;
+1AD : 0105A283;
+1AE : 04029163;
+1AF : 04000593;
+1B0 : 202327BD;
+1B1 : 282300A9;
+1B2 : E50500A9;
+1B3 : 20234AB1;
+1B4 : 557D015A;
+1B5 : 542A50BA;
+1B6 : 590A549A;
+1B7 : 4A6A49FA;
+1B8 : 4B4A4ADA;
+1B9 : 4C2A4BBA;
+1BA : 4D0A4C9A;
+1BB : 614D5DF6;
+1BC : 03138082;
+1BD : 2A230400;
+1BE : 03930069;
+1BF : 05130200;
+1C0 : D2020300;
+1C1 : 027104A3;
+1C2 : 02A10523;
+1C3 : 0C93C622;
+1C4 : 6B050250;
+1C5 : 6D056B85;
+1C6 : 00000A93;
+1C7 : 45838426;
+1C8 : C1990004;
+1C9 : 0B959163;
+1CA : 40940DB3;
+1CB : 00940E63;
+1CC : 86EE8626;
+1CD : 855285CA;
+1CE : 54FD3D91;
+1CF : 1A950B63;
+1D0 : 06B35612;
+1D1 : D23601B6;
+1D2 : 00044703;
+1D3 : 1A070363;
+1D4 : 0493587D;
+1D5 : C8020014;
+1D6 : CA42CE02;
+1D7 : 09A3CC02;
+1D8 : D4820401;
+1D9 : C5834D85;
+1DA : 46150004;
+1DB : 198B0513;
+1DC : 48C22B61;
+1DD : 00148413;
+1DE : FE13E929;
+1DF : 06630108;
+1E0 : 0E93000E;
+1E1 : 09A30200;
+1E2 : FF1305D1;
+1E3 : 06630088;
+1E4 : 0F93000F;
+1E5 : 09A302B0;
+1E6 : C78305F1;
+1E7 : 00930004;
+1E8 : 8F6302A0;
+1E9 : 4DF20217;
+1EA : 45A58426;
+1EB : 45294481;
+1EC : 00044283;
+1ED : 00140393;
+1EE : FD028313;
+1EF : 0665F763;
+1F0 : CE6EC885;
+1F1 : 0405A035;
+1F2 : 0613BF99;
+1F3 : 06B3198B;
+1F4 : 983340C5;
+1F5 : E73300DD;
+1F6 : C83A0108;
+1F7 : B76184A2;
+1F8 : 42184632;
+1F9 : 00460693;
+1FA : 4963C636;
+1FB : CE3A0207;
+1FC : 00044E03;
+1FD : 02E00E93;
+1FE : 07DE1263;
+1FF : 00144F03;
+200 : 02A00F93;
+201 : 03FF1C63;
+202 : 040944B2;
+203 : 8613408C;
+204 : C6320044;
+205 : 0205C263;
+206 : A089CA2E;
+207 : 40E00833;
+208 : 0028E893;
+209 : C846CE42;
+20A : 8433B7E1;
+20B : 448502AD;
+20C : 00640DB3;
+20D : BFAD841E;
+20E : BFF955FD;
+20F : CA020405;
+210 : 45814D81;
+211 : 43A94525;
+212 : 00044083;
+213 : 00140313;
+214 : FD008293;
+215 : 06557363;
+216 : FC0D90E3;
+217 : 00044583;
+218 : 8513460D;
+219 : 214D1A0B;
+21A : 4E42CD11;
+21B : 1A0B8693;
+21C : 40D50833;
+21D : 04000713;
+21E : 010718B3;
+21F : 011E6EB3;
+220 : C8760405;
+221 : 00044583;
+222 : 05134619;
+223 : 04931A4D;
+224 : 04230014;
+225 : 298D02B1;
+226 : 9E63C535;
+227 : 40C2020A;
+228 : F2934FB2;
+229 : 81631000;
+22A : 85130202;
+22B : C62A004F;
+22C : 85B35792;
+22D : D22E0137;
+22E : 87B3B595;
+22F : 841A0275;
+230 : 85B34D85;
+231 : B7490057;
+232 : 007F8313;
+233 : FF837393;
+234 : 00838513;
+235 : 0078BFE9;
+236 : 58C00693;
+237 : 080C864A;
+238 : 00978552;
+239 : 00E70000;
+23A : 5F7D0000;
+23B : 11E389AA;
+23C : 5983FDE5;
+23D : 557D00C9;
+23E : 0409F913;
+23F : DC091CE3;
+240 : BBC95512;
+241 : 06930078;
+242 : 864A58C0;
+243 : 8552080C;
+244 : BFE12A0D;
+245 : CC527179;
+246 : 8A3A499C;
+247 : D4224598;
+248 : CE4ED04A;
+249 : D606CA56;
+24A : C85AD226;
+24B : 89AAC65E;
+24C : 8932842E;
+24D : D3638AB6;
+24E : 87BA00E7;
+24F : 00F92023;
+250 : 04344083;
+251 : 00008663;
+252 : 00178293;
+253 : 00592023;
+254 : 00042303;
+255 : 02037393;
+256 : 00038863;
+257 : 00092483;
+258 : 00248513;
+259 : 00A92023;
+25A : F493400C;
+25B : E8990065;
+25C : 01940B13;
+25D : 44505BFD;
+25E : 00092683;
+25F : 40D60833;
+260 : 0704C363;
+261 : 00042B03;
+262 : 04344883;
+263 : 020B7B93;
+264 : 011036B3;
+265 : 060B9E63;
+266 : 04340613;
+267 : 854E85D6;
+268 : 57FD9A02;
+269 : 04F50863;
+26A : 00042083;
+26B : 44814311;
+26C : 0060F293;
+26D : 00629B63;
+26E : 00C42383;
+26F : 00092903;
+270 : 412384B3;
+271 : 0004D363;
+272 : 44084481;
+273 : D563480C;
+274 : 063300A5;
+275 : 94B240B5;
+276 : 04694B81;
+277 : 99635B7D;
+278 : 45010574;
+279 : 4685A809;
+27A : 85D6865A;
+27B : 9A02854E;
+27C : 01751E63;
+27D : 50B2557D;
+27E : 54925422;
+27F : 49F25902;
+280 : 4AD24A62;
+281 : 4BB24B42;
+282 : 80826145;
+283 : B7A50485;
+284 : 00D40EB3;
+285 : 03000F13;
+286 : 05EE81A3;
+287 : 04544F83;
+288 : 00168E13;
+289 : 01C40733;
+28A : 01A30689;
+28B : B7AD05F7;
+28C : 86224685;
+28D : 854E85D6;
+28E : 0DE39A02;
+28F : 0B85FB65;
+290 : 7179BF79;
+291 : D226D422;
+292 : CE4ED04A;
+293 : CC52D606;
+294 : C85ACA56;
+295 : 0185C883;
+296 : 07800793;
+297 : 842E84AA;
+298 : 89B68932;
+299 : 0117EE63;
+29A : 06200093;
+29B : 04358693;
+29C : 0110ED63;
+29D : 20088863;
+29E : 05800593;
+29F : 1CB88463;
+2A0 : 04240A93;
+2A1 : 05140123;
+2A2 : 8293A81D;
+2A3 : F313F9D8;
+2A4 : 46550FF2;
+2A5 : FE6666E3;
+2A6 : 13936505;
+2A7 : 05930023;
+2A8 : 88331D45;
+2A9 : 2A0300B3;
+2AA : 8A020008;
+2AB : 0A93431C;
+2AC : 43900424;
+2AD : 00478693;
+2AE : 0123C314;
+2AF : 4F8504C4;
+2B0 : 2E03AAC5;
+2B1 : 2E830004;
+2B2 : 7F930007;
+2B3 : 8F13080E;
+2B4 : 8363004E;
+2B5 : A783020F;
+2B6 : 2023000E;
+2B7 : 628501E7;
+2B8 : 0007D863;
+2B9 : 02D00313;
+2BA : 40F007B3;
+2BB : 046401A3;
+2BC : 1AC28393;
+2BD : A8A948A9;
+2BE : 000EA783;
+2BF : 040E7093;
+2C0 : 01E72023;
+2C1 : FC008DE3;
+2C2 : 01079713;
+2C3 : 41075793;
+2C4 : 2F83B7F9;
+2C5 : 431C0004;
+2C6 : 080FF293;
+2C7 : 00478093;
+2C8 : 00028663;
+2C9 : 00172023;
+2CA : A809439C;
+2CB : 040FF313;
+2CC : 00172023;
+2CD : FE030AE3;
+2CE : 0007D783;
+2CF : 06136385;
+2D0 : 839306F0;
+2D1 : 83631AC3;
+2D2 : 48A910C8;
+2D3 : 040401A3;
+2D4 : 00442283;
+2D5 : 00542423;
+2D6 : 0002C763;
+2D7 : 00042303;
+2D8 : FFB37613;
+2D9 : E781C010;
+2DA : 81638AB6;
+2DB : 8AB60202;
+2DC : 0317F5B3;
+2DD : 853E1AFD;
+2DE : 00B38A33;
+2DF : 000A4803;
+2E0 : 0317D7B3;
+2E1 : 010A8023;
+2E2 : FF1574E3;
+2E3 : 936343A1;
+2E4 : 28830278;
+2E5 : FB130004;
+2E6 : 0D630018;
+2E7 : 2E03000B;
+2E8 : 2E830044;
+2E9 : C7630104;
+2EA : 0F1301CE;
+2EB : 8FA30300;
+2EC : 1AFDFFEA;
+2ED : 415686B3;
+2EE : 874EC814;
+2EF : 007086CA;
+2F0 : 852685A2;
+2F1 : 5A7D3B81;
+2F2 : 0F451963;
+2F3 : 50B2557D;
+2F4 : 54925422;
+2F5 : 49F25902;
+2F6 : 4AD24A62;
+2F7 : 61454B42;
+2F8 : 2E038082;
+2F9 : 6E930004;
+2FA : 2023020E;
+2FB : 6F0501D4;
+2FC : 07800893;
+2FD : 1C0F0393;
+2FE : 051402A3;
+2FF : 00042803;
+300 : 7B134308;
+301 : 411C0808;
+302 : 00450A93;
+303 : 000B1A63;
+304 : 04087E13;
+305 : 000E0663;
+306 : 01079E93;
+307 : 010ED793;
+308 : 01572023;
+309 : 00187F13;
+30A : 000F0663;
+30B : 02086F93;
+30C : 01F42023;
+30D : FB9948C1;
+30E : 00042083;
+30F : FDF0F713;
+310 : B729C018;
+311 : 03936A05;
+312 : B77D1ACA;
+313 : BDFD48A1;
+314 : 00042883;
+315 : 00072A03;
+316 : F813484C;
+317 : 05130808;
+318 : 0863004A;
+319 : C3080008;
+31A : 000A2B03;
+31B : 00BB2023;
+31C : C308A811;
+31D : 0408FA93;
+31E : 000A2B03;
+31F : FE0A88E3;
+320 : 00BB1023;
+321 : 00042823;
+322 : BF058AB6;
+323 : 00072A83;
+324 : 45814050;
+325 : 004A8B13;
+326 : 01672023;
+327 : 000AAA83;
+328 : 209D8556;
+329 : 0733C501;
+32A : C0584155;
+32B : 00442F83;
+32C : 01F42823;
+32D : 040401A3;
+32E : 4814B709;
+32F : 85CA8656;
+330 : 99828526;
+331 : F14504E3;
+332 : 00042083;
+333 : 0020F713;
+334 : 44B2E71D;
+335 : 5CE34448;
+336 : 8526EE95;
+337 : 4685BDCD;
+338 : 85CA8656;
+339 : 99828526;
+33A : EF6502E3;
+33B : 22830A05;
+33C : 433200C4;
+33D : 40628633;
+33E : FECA43E3;
+33F : 4A01BFD9;
+340 : 01940A93;
+341 : B7E55B7D;
+342 : 0FF5F593;
+343 : 1463962A;
+344 : 450100C5;
+345 : 47838082;
+346 : 8DE30005;
+347 : 0505FEB7;
+348 : 832AB7FD;
+349 : 8383CA09;
+34A : 00230005;
+34B : 167D0073;
+34C : 05850305;
+34D : 8082FA6D;
+34E : 832AC215;
+34F : 67634685;
+350 : 56FD00B5;
+351 : FFF60713;
+352 : 95BA933A;
+353 : 00058383;
+354 : 00730023;
+355 : 9336167D;
+356 : FA6D95B6;
+357 : C5F98082;
+358 : FFC5A783;
+359 : CC221101;
+35A : 8413CE06;
+35B : D363FFC5;
+35C : 943E0007;
+35D : 24B1C62A;
+35E : 8781A803;
+35F : 1A634532;
+360 : 22230008;
+361 : AC230004;
+362 : 44628681;
+363 : 610540F2;
+364 : 7363AC15;
+365 : 20830304;
+366 : 06B30004;
+367 : 1A630014;
+368 : 260300D8;
+369 : 28030008;
+36A : 02B30048;
+36B : 20230016;
+36C : 22230054;
+36D : BFC10104;
+36E : 280380C2;
+36F : 04630048;
+370 : 7BE30008;
+371 : A683FF04;
+372 : 86330000;
+373 : 176300D0;
+374 : 2E030286;
+375 : 8EB30004;
+376 : A02301C6;
+377 : 8F3301D0;
+378 : 14E301D0;
+379 : 2F83FBE8;
+37A : 24030008;
+37B : 87B30048;
+37C : A02301DF;
+37D : A22300F0;
+37E : BF410080;
+37F : 00C47663;
+380 : 202348B1;
+381 : B7510115;
+382 : 00042283;
+383 : 00540333;
+384 : 00681963;
+385 : 00082383;
+386 : 00482803;
+387 : 005385B3;
+388 : 2223C00C;
+389 : A2230104;
+38A : B7850080;
+38B : 11018082;
+38C : 8493CA26;
+38D : CE060035;
+38E : FFC4F093;
+38F : CC22C84A;
+390 : 8493C64E;
+391 : 47B10080;
+392 : F663892A;
+393 : 44B104F4;
+394 : 04B4E563;
+395 : 22B5854A;
+396 : 87818713;
+397 : 00072883;
+398 : 87818693;
+399 : E4298446;
+39A : 87C18993;
+39B : 0009A303;
+39C : 00031763;
+39D : 854A4581;
+39E : A0232A31;
+39F : 85A600A9;
+3A0 : 2A09854A;
+3A1 : 116359FD;
+3A2 : 45310935;
+3A3 : 00A92023;
+3A4 : 2A0D854A;
+3A5 : DDE3A031;
+3A6 : 42B1FA04;
+3A7 : 00592023;
+3A8 : 40F24501;
+3A9 : 44D24462;
+3AA : 49B24942;
+3AB : 80826105;
+3AC : 8833400C;
+3AD : 46634095;
+3AE : 462D0408;
+3AF : 01067763;
+3B0 : 01042023;
+3B1 : C0049442;
+3B2 : 2E03A039;
+3B3 : 97630044;
+3B4 : A0230288;
+3B5 : 854A01C6;
+3B6 : 0F1320F5;
+3B7 : 0E9300B4;
+3B8 : 75130044;
+3B9 : 0FB3FF8F;
+3BA : 0CE341D5;
+3BB : 00B3FBD5;
+3BC : 87B301F4;
+3BD : A02340AE;
+3BE : B76500F0;
+3BF : 01C8A223;
+3C0 : 88A2BFD9;
+3C1 : B7854040;
+3C2 : 00350393;
+3C3 : FFC3F413;
+3C4 : FA850BE3;
+3C5 : 40A405B3;
+3C6 : 28AD854A;
+3C7 : FB3515E3;
+3C8 : 1101B7AD;
+3C9 : CE06CC22;
+3CA : C84ACA26;
+3CB : C452C64E;
+3CC : E9918432;
+3CD : 40F24462;
+3CE : 494244D2;
+3CF : 4A2249B2;
+3D0 : 610585B2;
+3D1 : EE01B5ED;
+3D2 : 44813D19;
+3D3 : 446240F2;
+3D4 : 49B24942;
+3D5 : 85264A22;
+3D6 : 610544D2;
+3D7 : 8A2A8082;
+3D8 : 2095892E;
+3D9 : 676389AA;
+3DA : 57930085;
+3DB : 84CA0015;
+3DC : FC87EEE3;
+3DD : 855285A2;
+3DE : 84AA3D5D;
+3DF : 8622D961;
+3E0 : 0089F363;
+3E1 : 85CA864E;
+3E2 : 3B618526;
+3E3 : 855285CA;
+3E4 : BF6D33F9;
+3E5 : C4221141;
+3E6 : 842AC226;
+3E7 : C606852E;
+3E8 : 8801A023;
+3E9 : 57FD2825;
+3EA : 00F51863;
+3EB : 8801A083;
+3EC : 00008463;
+3ED : 00142023;
+3EE : 442240B2;
+3EF : 01414492;
+3F0 : 80828082;
+3F1 : A7838082;
+3F2 : 8513FFC5;
+3F3 : D663FFC7;
+3F4 : 95AA0007;
+3F5 : 0005A283;
+3F6 : 80829516;
+3F7 : 87931141;
+3F8 : C6068841;
+3F9 : 0007A083;
+3FA : 829386AA;
+3FB : 93638841;
+3FC : 08930200;
+3FD : 45010D60;
+3FE : 00000073;
+3FF : 1963537D;
+400 : 28050065;
+401 : C1104631;
+402 : 40B2557D;
+403 : 80820141;
+404 : 00A2A023;
+405 : 0002A383;
+406 : 0D600893;
+407 : 007685B3;
+408 : 0073852E;
+409 : 1EE30000;
+40A : A023FCB5;
+40B : 851E00A2;
+40C : A503BFE9;
+40D : 80828681;
+40E : 70250A0D;
+40F : 72203A20;
+410 : 20646165;
+411 : 78383025;
+412 : 70786520;
+413 : 65746365;
+414 : 30252064;
+415 : 0A0D7838;
+416 : 00000000;
+417 : 73696854;
+418 : 20736920;
+419 : 706F6F6C;
+41A : 7525203A;
+41B : 0000000A;
+41C : 41524453;
+41D : 6F64204D;
+41E : 6F6C6E77;
+41F : 74206461;
+420 : 206B6F6F;
+421 : 75207525;
+422 : 00000A73;
+423 : 252F7525;
+424 : 6F772075;
+425 : 20736472;
+426 : 0A0A4B4F;
+427 : 00000000;
+428 : 34302520;
+429 : 30252E78;
+42A : 00007834;
+42B : 74736554;
+42C : 20676E69;
+42D : 41524453;
+42E : 7266204D;
+42F : 30206D6F;
+430 : 38302578;
+431 : 6F742078;
+432 : 25783020;
+433 : 2C783830;
+434 : 72747320;
+435 : 20656469;
+436 : 30257830;
+437 : 2E2E7838;
+438 : 000A0D2E;
+439 : 65520A0D;
+43A : 6E696461;
+43B : 61622067;
+43C : 74206B63;
+43D : 6863206F;
+43E : 206B6365;
+43F : 20726F66;
+440 : 61696C61;
+441 : 2E736573;
+442 : 0A0D2E2E;
 443 : 00000000;
-444 : 00000000;
-445 : 00000000;
-446 : 00000000;
-447 : 00000000;
-448 : 00000000;
-449 : 00000000;
-44A : 00000000;
-44B : 00000000;
-44C : 00000000;
+444 : 5244530D;
+445 : 74204D41;
+446 : 20747365;
+447 : 706D6F63;
+448 : 6574656C;
+449 : 6974202C;
+44A : 3D20656D;
+44B : 20752520;
+44C : 0A0D736D;
 44D : 00000000;
-44E : 00000000;
-44F : 00000000;
-450 : 00000000;
-451 : 00000000;
-452 : 00000000;
-453 : 00000000;
-454 : 00000000;
-455 : 00000000;
-456 : 00000000;
-457 : 00000000;
-458 : 00000000;
-459 : 00000000;
-45A : 00000000;
-45B : 00000001;
-45C : 00000004;
-45D : 0000110C;
-[45E..7FF] : 00;
+44E : 202A2A2A;
+44F : 6E696F44;
+450 : 65722067;
+451 : 20746573;
+452 : 0D2A2A2A;
+453 : 00000A0A;
+454 : 2A0A0A0D;
+455 : 48202A2A;
+456 : 6F6C6C65;
+457 : 6F57202C;
+458 : 21646C72;
+459 : 2A2A2A20;
+45A : 69460A0D;
+45B : 61776D72;
+45C : 63206572;
+45D : 69706D6F;
+45E : 2064656C;
+45F : 203A6E6F;
+460 : 2074634F;
+461 : 32203420;
+462 : 20313230;
+463 : 353A3230;
+464 : 30303A39;
+465 : 000A0A0D;
+466 : 2B302D23;
+467 : 00000020;
+468 : 004C6C68;
+469 : 45676665;
+46A : 00004746;
+46B : 33323130;
+46C : 37363534;
+46D : 42413938;
+46E : 46454443;
+46F : 00000000;
+470 : 33323130;
+471 : 37363534;
+472 : 62613938;
+473 : 66656463;
+474 : 00000000;
+475 : 00000AAC;
+476 : 00000AC2;
+477 : 00000A80;
+478 : 00000A80;
+479 : 00000A80;
+47A : 00000A80;
+47B : 00000AC2;
+47C : 00000A80;
+47D : 00000A80;
+47E : 00000A80;
+47F : 00000A80;
+480 : 00000C50;
+481 : 00000B12;
+482 : 00000BE2;
+483 : 00000A80;
+484 : 00000A80;
+485 : 00000C8C;
+486 : 00000A80;
+487 : 00000B12;
+488 : 00000A80;
+489 : 00000A80;
+48A : 00000BEE;
+48B : 00000000;
+48C : 00000000;
+48D : 00000382;
+48E : 00000352;
+48F : 00000000;
+490 : 00000000;
+491 : 00000000;
+492 : 00000000;
+493 : 00000000;
+494 : 00000000;
+495 : 00000000;
+496 : 00000000;
+497 : 00000000;
+498 : 00000000;
+499 : 00000000;
+49A : 00000000;
+49B : 00000000;
+49C : 00000000;
+49D : 00000000;
+49E : 00000000;
+49F : 00000000;
+4A0 : 00000000;
+4A1 : 00000000;
+4A2 : 00000000;
+4A3 : 00000000;
+4A4 : 00000000;
+4A5 : 00000000;
+4A6 : 00000000;
+4A7 : 00000001;
+4A8 : 00000004;
+4A9 : 0000123C;
+[4AA..7FF] : 00;
 END;

+ 3 - 1
fw/console.c

@@ -26,7 +26,9 @@ void con_set_baudrate(uint32_t b)
 
 void con_putc(char c)
 {
-    /* XXX: need status register to delay on FIFO full */
+    while (CON_STATUS & (1 << 4))
+	/* wait for FIFO to drain some */
+	;
     if (c == '\n')
 	CONSOLE = '\r';
     CONSOLE = c;

+ 2 - 3
fw/hello.c

@@ -87,7 +87,7 @@ static void test_sdram(void)
     }
 
     con_printf("\rSDRAM test complete, time = %u ms\r\n",
-	       (rdtime() - start_time)/(CPU_CLK_HZ/1000));
+	       (rdtime() - start_time)/(CPU_HZ/1000));
 
     stride *= 3;
     stride = (stride & SDRAM_MASK) ^ (stride >> (SDRAM_ADDR_BITS-2));
@@ -119,7 +119,7 @@ void main(void)
     con_puts(hello);
 
     con_printf("This is loop: %u\n", loops++);
-    con_printf("SDRAM download took %u us\n", done/(CPU_CLK_HZ/1000000));
+    con_printf("SDRAM download took %u us\n", done/(CPU_HZ/1000000));
 
     volatile uint32_t *p = (uint32_t *)SDRAM_ADDR;
     const unsigned int words = 128*1024;
@@ -143,7 +143,6 @@ void main(void)
 	    con_printf(" %04x.%04x", l, h);
 	}
 	con_putc('\n');
-	udelay(8000);
     }
 
     test_sdram();

+ 1 - 1
fw/io.h

@@ -28,7 +28,7 @@ static inline uint64_t rdtimeq(void)
 
 static inline void udelay(uint32_t us)
 {
-    uint32_t cycles = us * (CPU_CLK_HZ / 1000000);
+    uint32_t cycles = us * (CPU_HZ / 1000000);
     uint32_t start = rdtime();
 
     while (rdtime() - start < cycles)

+ 11 - 7
fw/iodev.h

@@ -34,16 +34,20 @@
 
 #endif
 
-#define CPU_CLK_HZ	84000000
+#define CPU_HZ		84000000
 
 #define LED		IODEVB(0,0)
-#define CONSOLE		IODEVB(1,0)
-#define CON_BAUDDIV	IODEVL(1,1)
-#define CON_BAUD_BASE	(84000000U >> 4)
-#define CON_BAUD_BITS	24
 
-#define ROMCOPY_DONE	IODEVL(2,0)
+#define RESET_CMD	IODEVL(1,0)
+
+#define ROMCOPY_DONE	IODEVRL(2,0)
 
-#define RESET_CMD	IODEVL(15,0)
+#define CONSOLE		IODEVB(3,0)
+#define CON_BAUDDIV	IODEVL(3,1)
+#define CON_BAUD_BASE	(CPU_HZ >> 4)
+#define CON_BAUD_BITS	24
+#define CON_STATUS	IODEVRL(3,2)
+#define CON_IRQEN	IODEVL(3,3)
 
 #endif /* IODEV_H */
+

部分文件因为文件数量过多而无法显示