[ZLG-ARM] 请教关于smartarm2200 CF卡读写问题

[复制链接]
2266|4
 楼主| xkleee 发表于 2009-1-16 11:17 | 显示全部楼层 |阅读模式
周工提供的smartarm2200 CF卡读写程序感觉不是很稳定,连续读取数据时偶尔会读出空数据,不知道大家遇到过这种情况没有
zcying 发表于 2009-4-9 10:57 | 显示全部楼层

应该不会的

  
armecos 发表于 2009-4-9 15:07 | 显示全部楼层

www.armecos.com上有CF卡驱动免费试用版本,还有解决方案,

********************<br />*&nbsp;CF卡/HDD硬盘驱动&nbsp;*<br />********************<br />&nbsp;&nbsp;&nbsp;&nbsp;2007/07/30&nbsp;asdjf@163.com&nbsp;www.armecos.com<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;CF卡驱动(兼容硬盘驱动)是相当简单的,主要内容就是读写扇区,也就是数据块,我们称之为块设备驱动。基于分层思想,块驱动部分不考虑数据格式,只负责实现机制,具体的数据解释交由上层文件系统负责,这样一来,就没有什么太多内容了,分层处理就是好啊!块设备具有移动特性,支持热插拔,所以,就存在一个在位探测和身份识别问题。当然,驱动还必须符合ecos要求。<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;《ecos增值包》提供了大量支撑软件模块,使得初学者能把精力集中在CF卡驱动上,而不必在其他细节上浪费时间。例如:ecos库负责初始化硬件;不必自己编写串口操作,需要输出信息时只要printf即可;精确的延时函数,使用定时器实现而不是多重循环,ecos负责复杂的计算和烦琐的定时器操作。<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;下面详细介绍CF卡驱动编写。<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;-----------------<br />&nbsp;&nbsp;&nbsp;&nbsp;端口输入/输出操作<br />&nbsp;&nbsp;&nbsp;&nbsp;-----------------<br />&nbsp;&nbsp;&nbsp;&nbsp;CF卡驱动中最基本的操作就是端口输入/输出,用于访问地址映射的寄存器,数据位宽8位/16位,满足ATA接口/总线时序。<br /><br />#define&nbsp;HAL_IDE_READ_UINT8(ctrl,&nbsp;reg,&nbsp;val)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HAL_WRITE_UINT16(ATA_EN|ATA_ALE|reg,&nbsp;0);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HAL_READ_UINT16(ATA_EN|ATA_RW,&nbsp;val);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HAL_WRITE_UINT16(ATA_EN|ATA_ALE|ATA_OUT|ATA_CS1|ATA_CS0,&nbsp;0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}while(0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />#define&nbsp;HAL_IDE_WRITE_UINT8(ctrl,&nbsp;reg,&nbsp;val)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HAL_WRITE_UINT16(ATA_EN|ATA_ALE|ATA_OUT|reg,&nbsp;0);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HAL_WRITE_UINT16(ATA_EN|ATA_RW,&nbsp;val);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HAL_WRITE_UINT16(ATA_EN|ATA_ALE|ATA_OUT|ATA_CS1|ATA_CS0,&nbsp;0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}while(0)<br /><br />#define&nbsp;HAL_IDE_READ_UINT16(ctrl,&nbsp;reg,&nbsp;val)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HAL_WRITE_UINT16(ATA_EN|ATA_ALE|reg,&nbsp;0);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HAL_READ_UINT16(ATA_EN|ATA_RW,&nbsp;val);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HAL_WRITE_UINT16(ATA_EN|ATA_ALE|ATA_OUT|ATA_CS1|ATA_CS0,&nbsp;0);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}while(0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />#define&nbsp;HAL_IDE_WRITE_UINT16(ctrl,&nbsp;reg,&nbsp;val)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HAL_WRITE_UINT16(ATA_EN|ATA_ALE|ATA_OUT|reg,&nbsp;0);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HAL_WRITE_UINT16(ATA_EN|ATA_RW,&nbsp;val);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HAL_WRITE_UINT16(ATA_EN|ATA_ALE|ATA_OUT|ATA_CS1|ATA_CS0,&nbsp;0);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}while(0)<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;参数ctrl用于区分IDE控制器,有些设备支持2个IDE口,每个口支持主/从两块硬盘,控制器挂在PCI总线上,驱动程序需要知道控制器号和主从选择才能具体定位一块硬盘。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;reg是寄存器地址。<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />//&nbsp;IDE&nbsp;Register&nbsp;Indices<br />#define&nbsp;IDE_REG_DATA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x20&nbsp;&nbsp;//0<br />#define&nbsp;IDE_REG_ERROR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x22&nbsp;&nbsp;//1<br />#define&nbsp;IDE_REG_FEATURES&nbsp;&nbsp;0x22&nbsp;&nbsp;//1<br />#define&nbsp;IDE_REG_COUNT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x24&nbsp;&nbsp;//2<br />#define&nbsp;IDE_REG_REASON&nbsp;&nbsp;&nbsp;&nbsp;0x24&nbsp;&nbsp;//2&nbsp;&nbsp;//&nbsp;ATAPI<br />#define&nbsp;IDE_REG_LBALOW&nbsp;&nbsp;&nbsp;&nbsp;0x26&nbsp;&nbsp;//3<br />#define&nbsp;IDE_REG_LBAMID&nbsp;&nbsp;&nbsp;&nbsp;0x28&nbsp;&nbsp;//4<br />#define&nbsp;IDE_REG_LBAHI&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x2A&nbsp;&nbsp;//5<br />#define&nbsp;IDE_REG_DEVICE&nbsp;&nbsp;&nbsp;&nbsp;0x2C&nbsp;&nbsp;//6<br />#define&nbsp;IDE_REG_STATUS&nbsp;&nbsp;&nbsp;&nbsp;0x2E&nbsp;&nbsp;//7<br />#define&nbsp;IDE_REG_COMMAND&nbsp;&nbsp;&nbsp;0x2E&nbsp;&nbsp;//7<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;注意:板子的A1接IDE的A0,还有CS0/CS1也映射到地址里了,所以右边注释掉的是手册给出的值,真正用到的是修正后的地址值。<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;数据位宽支持8位/16位,所以分别提供读写接口。<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;do...while(0)是用于宏定义的一种方法,它把若干条语句合成一条语句。注意这里用的是宏,这4条语句频繁调用,严重影响效率,而且不大,所以用宏替换而不是语句,这样可以提高效率又不会造成太大的存储空间浪费。<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;因为开发板是用扩展电路模拟ATA时序,没有直接连接MCU和ATA总线,所以,需要用3条语句实现读写功能,略显烦琐。如果硬件支持,用单条语句实现甚好。<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;注意函数命名规则符合ecos规范,例如:HAL_IDE_READ_UINT8。HAL说明这是一个硬件抽象层函数,与硬件相关,IDE说明与IDE硬件设备相关,READ表明是个读操作,UINT8表示位宽为8bit,无符号整数类型。这样的写法含义一目了然,又不会重名,造成名字污染,更不会让我们费脑子琢磨如何起名字。类似这样的细节在《ecos增值包》里还有很多,就不一一指明了,多思考多体会就能从中学到不少东西。<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;--------<br />&nbsp;&nbsp;&nbsp;&nbsp;等待操作<br />&nbsp;&nbsp;&nbsp;&nbsp;--------<br />&nbsp;&nbsp;&nbsp;&nbsp;CF卡/硬盘都是慢速设备,MCU发出请求后不能立即响应,需要等待。所谓等待就是判断状态位(有些支持超时退出)。<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />static&nbsp;inline&nbsp;void<br />__wait_for_ready(int&nbsp;ctlr)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint8&nbsp;status;<br />&nbsp;&nbsp;&nbsp;&nbsp;do&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HAL_IDE_READ_UINT8(ctlr,&nbsp;IDE_REG_STATUS,&nbsp;status);<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;while&nbsp;(status&nbsp;&&nbsp;(IDE_STAT_BSY&nbsp;|&nbsp;IDE_STAT_DRQ));<br />}<br /><br />//&nbsp;Wait&nbsp;while&nbsp;the&nbsp;device&nbsp;is&nbsp;busy&nbsp;with&nbsp;the&nbsp;last&nbsp;command<br />static&nbsp;inline&nbsp;int<br />__wait_busy(int&nbsp;ctlr)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint8&nbsp;status;<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_ucount32&nbsp;tries;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(tries=0;&nbsp;tries&nbsp;&lt&nbsp;1000000;&nbsp;tries++)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CYGACC_CALL_IF_DELAY_US(10);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HAL_IDE_READ_UINT8(ctlr,&nbsp;IDE_REG_STATUS,&nbsp;status);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((status&nbsp;&&nbsp;IDE_STAT_BSY)&nbsp;==&nbsp;0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;&nbsp;<br />}<br /><br />static&nbsp;inline&nbsp;int<br />__wait_for_drq(int&nbsp;ctlr)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint8&nbsp;status;<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_ucount32&nbsp;tries;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(tries=0;&nbsp;tries&lt1000000;&nbsp;tries++)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CYGACC_CALL_IF_DELAY_US(10);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HAL_IDE_READ_UINT8(ctlr,&nbsp;IDE_REG_STATUS,&nbsp;status);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!(status&nbsp;&&nbsp;IDE_STAT_BSY))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(status&nbsp;&&nbsp;IDE_STAT_DRQ)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br />}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;注意这些函数前面都有inline关键字,就是说尽可能替换而不要调用函数。因为这些等待函数会被频繁调用,所以用替换可以提高效率。<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;状态寄存器里提供多种状态指示,用得比较多的是BSY和DRQ。<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />#define&nbsp;IDE_STAT_BSY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x80<br />#define&nbsp;IDE_STAT_DRDY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x40<br />#define&nbsp;IDE_STAT_SERVICE&nbsp;&nbsp;0x10<br />#define&nbsp;IDE_STAT_DRQ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x08<br />#define&nbsp;IDE_STAT_CORR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x04<br />#define&nbsp;IDE_STAT_ERR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x01<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;延时函数使用ecos提供的CYGACC_CALL_IF_DELAY_US,它是用定时器实现的微秒级延时,非常精确,可移植(多重循环在不同频率机器上需要重新计算,而且由于多级流水线等加速措施导致不能精确计算耗时)。用户只要填写想要延时的微秒数即可。注意:受限于定时器计数器位宽,太大的延时可能溢出,这个函数适于短延时。<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;--------<br />&nbsp;&nbsp;&nbsp;&nbsp;在位判断<br />&nbsp;&nbsp;&nbsp;&nbsp;--------<br />&nbsp;&nbsp;&nbsp;&nbsp;块设备可能被移动,所以需要随时检测是否在位。方法是向设备/磁头寄存器里写入数据再读出,若一致即表明设备在位,否则说明没有设备存在。这个寄存器可读写并保存数据,所以就不必使用额外的GPIO探测线了。只要主从有一个在位就返回确认,如果是在VMWARE里仿真,就固定使用虚拟的主设备。我只在开发板上接一个CF卡,所以这个函数能正常工作。<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />static&nbsp;int<br />ide_presence_detect(int&nbsp;ctlr)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint8&nbsp;sel,&nbsp;val;<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt&nbsp;2;&nbsp;i++)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sel&nbsp;=&nbsp;(i&nbsp;&lt&lt&nbsp;4)&nbsp;|&nbsp;0xA0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CYGACC_CALL_IF_DELAY_US((cyg_uint32)50000);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HAL_IDE_WRITE_UINT8(ctlr,&nbsp;IDE_REG_DEVICE,&nbsp;sel);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CYGACC_CALL_IF_DELAY_US((cyg_uint32)50000);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HAL_IDE_READ_UINT8(ctlr,&nbsp;IDE_REG_DEVICE,&nbsp;val);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(val&nbsp;==&nbsp;sel)&nbsp;{<br />#ifndef&nbsp;CYGSEM_DEVS_DISK_IDE_VMWARE<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HAL_IDE_WRITE_UINT8(ctlr,&nbsp;IDE_REG_DEVICE,&nbsp;0);<br />#endif<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br />}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;--------<br />&nbsp;&nbsp;&nbsp;&nbsp;复位操作<br />&nbsp;&nbsp;&nbsp;&nbsp;--------<br />&nbsp;&nbsp;&nbsp;&nbsp;硬盘初始工作前要先进入一个确定状态,方法是拉低ATA_RST引脚一段时间,然后置高并判断状态是否就绪。<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />static&nbsp;int<br />ide_reset(int&nbsp;ctlr)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint8&nbsp;status;<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;delay,&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;tmp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;HAL_READ_UINT32(LPC2XXX_GPIO_IO2DIR,&nbsp;tmp);<br />&nbsp;&nbsp;&nbsp;&nbsp;tmp&nbsp;|=&nbsp;ATA_RST;<br />&nbsp;&nbsp;&nbsp;&nbsp;tmp&nbsp;&=&nbsp;(~ATA_CD);&nbsp;&nbsp;//可不用<br />&nbsp;&nbsp;&nbsp;&nbsp;HAL_WRITE_UINT32(LPC2XXX_GPIO_IO2DIR,&nbsp;tmp);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;HAL_WRITE_UINT32(LPC2XXX_GPIO_IO2CLR,&nbsp;ATA_RST);<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_thread_delay(1);<br />&nbsp;&nbsp;&nbsp;&nbsp;HAL_WRITE_UINT32(LPC2XXX_GPIO_IO2SET,&nbsp;ATA_RST);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;IDE&nbsp;Reset!

&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;wait&nbsp;30&nbsp;seconds&nbsp;max&nbsp;for&nbsp;not&nbsp;busy&nbsp;and&nbsp;drive&nbsp;ready<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(delay&nbsp;=&nbsp;0;&nbsp;delay&nbsp;&lt&nbsp;300;&nbsp;++delay)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt&nbsp;100;&nbsp;i++){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CYGACC_CALL_IF_DELAY_US((cyg_uint32)1000);&nbsp;&nbsp;//yynote&nbsp;延时不能太长,否则微秒延时函数无法正常工作<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HAL_IDE_READ_UINT8(ctlr,&nbsp;IDE_REG_STATUS,&nbsp;status);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!(status&nbsp;&&nbsp;IDE_STAT_BSY))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(status&nbsp;&&nbsp;IDE_STAT_DRDY)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br />}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;--------<br />&nbsp;&nbsp;&nbsp;&nbsp;设备识别<br />&nbsp;&nbsp;&nbsp;&nbsp;--------<br />&nbsp;&nbsp;&nbsp;&nbsp;每个卡或硬盘都有自己的参数信息,通过ECH命令可以读出来,其格式如ide_identify_data_t结构体所示。我们可以通过这些信息了解设备情况以及确定是否能够操作它。当然,CF驱动只管读出数据存放到buf里,它不关心这个数据结构的。cyg_uint16表示cygnus公司定义的16位无符号整数,用它定义数据类型的程序移植性好。注意数据都是通过16位数据总线读出来的,命令才用8位的读写函数,这样数据吞吐量大。<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />typedef&nbsp;struct&nbsp;ide_identify_data_t_&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint16&nbsp;general_conf;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;00&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;general&nbsp;configuration&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint16&nbsp;num_cylinders;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;01&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;number&nbsp;of&nbsp;cylinders&nbsp;(default&nbsp;CHS&nbsp;trans)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint16&nbsp;reserved0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;02&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;reserved&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint16&nbsp;num_heads;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;03&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;number&nbsp;of&nbsp;heads&nbsp;(default&nbsp;CHS&nbsp;trans)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint16&nbsp;num_ub_per_track;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;04&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;number&nbsp;of&nbsp;unformatted&nbsp;bytes&nbsp;per&nbsp;track&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint16&nbsp;num_ub_per_sector;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;05&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;number&nbsp;of&nbsp;unformatted&nbsp;bytes&nbsp;per&nbsp;sector&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint16&nbsp;num_sectors;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;06&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;number&nbsp;of&nbsp;sectors&nbsp;per&nbsp;track&nbsp;(default&nbsp;CHS&nbsp;trans)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint16&nbsp;num_card_sectors[2];&nbsp;&nbsp;//&nbsp;07-08&nbsp;:&nbsp;number&nbsp;of&nbsp;sectors&nbsp;per&nbsp;card&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint16&nbsp;reserved1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;09&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;reserved&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint16&nbsp;serial[10];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;10-19&nbsp;:&nbsp;serial&nbsp;number&nbsp;(string)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint16&nbsp;buffer_type;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;20&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;buffer&nbsp;type&nbsp;(dual&nbsp;ported)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint16&nbsp;buffer_size;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;21&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;buffer&nbsp;size&nbsp;in&nbsp;512&nbsp;increments&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint16&nbsp;num_ECC_bytes;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;22&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;number&nbsp;of&nbsp;ECC&nbsp;bytes&nbsp;passed&nbsp;on&nbsp;R/W&nbsp;Long&nbsp;cmds&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint16&nbsp;firmware_rev[4];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;23-26&nbsp;:&nbsp;firmware&nbsp;revision&nbsp;(string)<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint16&nbsp;model_num[20];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;27-46&nbsp;:&nbsp;model&nbsp;number&nbsp;(string)<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint16&nbsp;rw_mult_support;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;47&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;max&nbsp;number&nbsp;of&nbsp;sectors&nbsp;on&nbsp;R/W&nbsp;multiple&nbsp;cmds<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint16&nbsp;reserved2;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;48&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;reserved&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint16&nbsp;capabilities;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;49&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;LBA,&nbsp;DMA,&nbsp;IORDY&nbsp;support&nbsp;indicator&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint16&nbsp;reserved3;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;50&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;reserved&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint16&nbsp;pio_xferc_timing;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;51&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;PIO&nbsp;data&nbsp;transfer&nbsp;cycle&nbsp;timing&nbsp;mode&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint16&nbsp;dma_xferc_timing;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;52&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;single&nbsp;word&nbsp;DMA&nbsp;data&nbsp;transfer&nbsp;cycle&nbsp;timing&nbsp;mode&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint16&nbsp;cur_field_validity;&nbsp;&nbsp;&nbsp;//&nbsp;53&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;words&nbsp;54-58&nbsp;validity&nbsp;(0&nbsp;==&nbsp;not&nbsp;valid)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint16&nbsp;cur_cylinders;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;54&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;number&nbsp;of&nbsp;current&nbsp;cylinders&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint16&nbsp;cur_heads;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;55&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;number&nbsp;of&nbsp;current&nbsp;heads&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint16&nbsp;cur_spt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;56&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;number&nbsp;of&nbsp;current&nbsp;sectors&nbsp;per&nbsp;track&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint16&nbsp;cur_capacity[2];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;57-58&nbsp;:&nbsp;current&nbsp;capacity&nbsp;in&nbsp;sectors&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint16&nbsp;mult_sectors;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;59&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;multiple&nbsp;sector&nbsp;setting&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint16&nbsp;lba_total_sectors[2];&nbsp;//&nbsp;60-61&nbsp;:&nbsp;total&nbsp;sectors&nbsp;in&nbsp;LBA&nbsp;mode&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint16&nbsp;sw_dma;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;62&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;single&nbsp;word&nbsp;DMA&nbsp;support&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint16&nbsp;mw_dma;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;63&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;multi&nbsp;word&nbsp;DMA&nbsp;support&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint16&nbsp;apio_modes;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;64&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;advanced&nbsp;PIO&nbsp;transfer&nbsp;mode&nbsp;supported&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint16&nbsp;min_dma_timing;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;65&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;minimum&nbsp;multiword&nbsp;DMA&nbsp;transfer&nbsp;cycle&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint16&nbsp;rec_dma_timing;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;66&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;recommended&nbsp;multiword&nbsp;DMA&nbsp;cycle&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint16&nbsp;min_pio_timing;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;67&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;min&nbsp;PIO&nbsp;transfer&nbsp;time&nbsp;without&nbsp;flow&nbsp;control&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint16&nbsp;min_pio_iordy_timing;&nbsp;//&nbsp;68&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;min&nbsp;PIO&nbsp;transfer&nbsp;time&nbsp;with&nbsp;IORDY&nbsp;flow&nbsp;control&nbsp;<br />//&nbsp;&nbsp;cyg_uint16&nbsp;reserved4[187];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;69-255:&nbsp;reserved&nbsp;<br />}&nbsp;ide_identify_data_t;<br /><br />static&nbsp;int<br />ide_ident(int&nbsp;ctlr,&nbsp;int&nbsp;dev,&nbsp;cyg_uint16&nbsp;*buf)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!__wait_busy(ctlr))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;HAL_IDE_WRITE_UINT8(ctlr,&nbsp;IDE_REG_DEVICE,&nbsp;dev&nbsp;&lt&lt&nbsp;4);<br />&nbsp;&nbsp;&nbsp;&nbsp;HAL_IDE_WRITE_UINT8(ctlr,&nbsp;IDE_REG_COMMAND,&nbsp;0xEC);<br />&nbsp;&nbsp;&nbsp;&nbsp;CYGACC_CALL_IF_DELAY_US((cyg_uint32)50000);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!__wait_for_drq(ctlr))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt&nbsp;(CYGDAT_DEVS_DISK_IDE_SECTOR_SIZE&nbsp;/&nbsp;sizeof(cyg_uint16));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i++,&nbsp;buf++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HAL_IDE_READ_UINT16(ctlr,&nbsp;IDE_REG_DATA,&nbsp;*buf);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;1;<br />}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;--------<br />&nbsp;&nbsp;&nbsp;&nbsp;读写扇区<br />&nbsp;&nbsp;&nbsp;&nbsp;--------<br />&nbsp;&nbsp;&nbsp;&nbsp;最主要的工作内容,最好基于DMA和中断操作,本板采用普通操作。写和读类似,略。<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />static&nbsp;int<br />ide_read_sector(int&nbsp;ctlr,&nbsp;int&nbsp;dev,&nbsp;cyg_uint32&nbsp;start,&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint8&nbsp;*buf,&nbsp;cyg_uint32&nbsp;len)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;j,&nbsp;c;<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint16&nbsp;p;<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint8&nbsp;*&nbsp;b=buf;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;if(!__wait_busy(ctlr))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;HAL_IDE_WRITE_UINT8(ctlr,&nbsp;IDE_REG_COUNT,&nbsp;1);&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;count&nbsp;=1<br />&nbsp;&nbsp;&nbsp;&nbsp;HAL_IDE_WRITE_UINT8(ctlr,&nbsp;IDE_REG_LBALOW,&nbsp;start&nbsp;&&nbsp;0xff);<br />&nbsp;&nbsp;&nbsp;&nbsp;HAL_IDE_WRITE_UINT8(ctlr,&nbsp;IDE_REG_LBAMID,&nbsp;(start&nbsp;&gt&gt&nbsp;&nbsp;8)&nbsp;&&nbsp;0xff);<br />&nbsp;&nbsp;&nbsp;&nbsp;HAL_IDE_WRITE_UINT8(ctlr,&nbsp;IDE_REG_LBAHI,&nbsp;&nbsp;(start&nbsp;&gt&gt&nbsp;16)&nbsp;&&nbsp;0xff);<br />&nbsp;&nbsp;&nbsp;&nbsp;HAL_IDE_WRITE_UINT8(ctlr,&nbsp;IDE_REG_DEVICE,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((start&nbsp;&gt&gt&nbsp;24)&nbsp;&&nbsp;0xf)&nbsp;|&nbsp;(dev&nbsp;&lt&lt&nbsp;4)&nbsp;|&nbsp;0x40);<br />&nbsp;&nbsp;&nbsp;&nbsp;HAL_IDE_WRITE_UINT8(ctlr,&nbsp;IDE_REG_COMMAND,&nbsp;0x20);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!__wait_for_drq(ctlr))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(j&nbsp;=&nbsp;0,&nbsp;c=0&nbsp;;&nbsp;j&nbsp;&lt&nbsp;(CYGDAT_DEVS_DISK_IDE_SECTOR_SIZE&nbsp;/&nbsp;sizeof(cyg_uint16));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j++)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HAL_IDE_READ_UINT16(ctlr,&nbsp;IDE_REG_DATA,&nbsp;p);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(c++&ltlen)&nbsp;*b++=p&0xff;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(c++&ltlen)&nbsp;*b++=(p&gt&gt8)&0xff;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;1;<br />}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;ctrl是控制器号,dev是主从选择,start是扇区号,buf是数据缓冲区,len&nbsp;是操作长度。<br />&nbsp;&nbsp;&nbsp;&nbsp;使用下面语句可以读出指定硬盘上的指定扇区数据到buf里。示例:读第一个IDE口的主硬盘的0扇区。<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if(!ide_read_sector(0,&nbsp;0,&nbsp;0,&nbsp;buf,&nbsp;512)){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;ide_read_sector&nbsp;ERROR!
&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;--------------<br />&nbsp;&nbsp;&nbsp;&nbsp;可视化设备信息<br />&nbsp;&nbsp;&nbsp;&nbsp;--------------<br />&nbsp;&nbsp;&nbsp;&nbsp;设备识别信息的可视化。<br /><br />static&nbsp;void&nbsp;<br />ide_disk_info(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;cyg_uint32&nbsp;id_buf[CYGDAT_DEVS_DISK_IDE_SECTOR_SIZE/sizeof(cyg_uint32)];<br />&nbsp;&nbsp;&nbsp;&nbsp;ide_identify_data_t&nbsp;*ide_idData=(ide_identify_data_t*)id_buf;<br />&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;buf[50];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!ide_ident(0,&nbsp;0,&nbsp;(cyg_uint16&nbsp;*)id_buf))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;IDE&nbsp;ident&nbsp;DRQ&nbsp;error
&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;id_strcpy(buf,&nbsp;ide_idData-&gtserial,&nbsp;20);<br />&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;        Serial&nbsp;:&nbsp;%s
&quot;,&nbsp;buf);<br />&nbsp;&nbsp;&nbsp;&nbsp;id_strcpy(buf,&nbsp;ide_idData-&gtfirmware_rev,&nbsp;8);<br />&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;        Firmware&nbsp;rev.&nbsp;:&nbsp;%s
&quot;,&nbsp;buf);<br />&nbsp;&nbsp;&nbsp;&nbsp;id_strcpy(buf,&nbsp;ide_idData-&gtmodel_num,&nbsp;40);<br />&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;        Model&nbsp;:&nbsp;%s
&quot;,&nbsp;buf);<br />&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;        C/H/S&nbsp;:&nbsp;%d/%d/%d
&quot;,&nbsp;ide_idData-&gtnum_cylinders,&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ide_idData-&gtnum_heads,&nbsp;ide_idData-&gtnum_sectors);<br />&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;        LBA&nbsp;sector&nbsp;number:&nbsp;%d
&quot;,&nbsp;(ide_idData-&gtlba_total_sectors[1]&nbsp;&lt&lt&nbsp;16&nbsp;|&nbsp;ide_idData-&gtlba_total_sectors[0]));<br />&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;        Kind&nbsp;:&nbsp;%x
&quot;,&nbsp;(ide_idData-&gtgeneral_conf&gt&gt8)&0x1f);<br /><br />}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;通过以上这些程序就可以随意操作CF卡了,完整程序在光盘里,用任何一个库编译都可以,推荐lpc_default_ram_install,这个库体积小,在RAM里运行,配合redboot,调试起来很方便。注意JP7、JP11跳线要设置正确。<br /><br />CF卡驱动测试报告<br /><br />一张512M的CF卡,格式化成FAT16,创建一个a.txt文件,内容为<br />123<br />abc<br /><br />用winhex软件分析,根目录位于439扇区,a.txt文件位于525扇区,当然启动部分就固定在0扇区。<br />下面是用CF卡驱动读出的识别信息、0扇区数据、439扇区数据、525扇区数据,和winhex的数据对比,完全一致。<br />识别信息是通过设备识别指令0xEC得到的,它的结构就是ide_identify_data_t结构体所描述的那样。<br />0、493、525扇区的内容是通过读扇区指令0x20获得的,boot扇区0可对照书上讲解详细分析;root根目录扇区439目前只有一个目录项,格式见书中相关部分,其他未用到的部分为0;a.txt文件扇区525是文件的实体数据,即“123&lt回车&gtabc”。<br /><br />test&nbsp;by&nbsp;yangyi<br />2007/07/30<br /><br />+<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*******************************<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CF&nbsp;Card&nbsp;Test&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*******************************<br /><br /><br />CF&nbsp;card&nbsp;experiment...<br /><br />IDE&nbsp;Reset!<br /><br />Print&nbsp;IDE&nbsp;information:<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;Serial&nbsp;:&nbsp;00000006090000000497<br />&nbsp;&nbsp;&nbsp;&nbsp;Firmware&nbsp;rev.&nbsp;:&nbsp;Ver1.27&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;Model&nbsp;:&nbsp;CF/512&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;C/H/S&nbsp;:&nbsp;999/16/63<br />&nbsp;&nbsp;&nbsp;&nbsp;LBA&nbsp;sector&nbsp;number:&nbsp;1006992<br />&nbsp;&nbsp;&nbsp;&nbsp;Kind&nbsp;:&nbsp;4<br /><br />info:<br />----------------------------------------------------------------<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;8a&nbsp;84&nbsp;e7&nbsp;&nbsp;3&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;10&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;7e&nbsp;&nbsp;0&nbsp;&nbsp;2&nbsp;3f&nbsp;&nbsp;0&nbsp;&nbsp;f&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10&nbsp;&nbsp;90&nbsp;5d&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;30&nbsp;30&nbsp;30&nbsp;30&nbsp;30&nbsp;30&nbsp;36&nbsp;30&nbsp;39&nbsp;30&nbsp;30&nbsp;30&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;20&nbsp;&nbsp;30&nbsp;30&nbsp;30&nbsp;30&nbsp;34&nbsp;30&nbsp;37&nbsp;39&nbsp;&nbsp;2&nbsp;&nbsp;0&nbsp;&nbsp;2&nbsp;&nbsp;0&nbsp;&nbsp;4&nbsp;&nbsp;0&nbsp;65&nbsp;56&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;30&nbsp;&nbsp;31&nbsp;72&nbsp;32&nbsp;2e&nbsp;20&nbsp;37&nbsp;46&nbsp;43&nbsp;35&nbsp;2f&nbsp;32&nbsp;31&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;40&nbsp;&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;50&nbsp;&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;&nbsp;1&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;60&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;3&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;2&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;7&nbsp;&nbsp;0&nbsp;e7&nbsp;&nbsp;3&nbsp;10&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;70&nbsp;&nbsp;3f&nbsp;&nbsp;0&nbsp;90&nbsp;5d&nbsp;&nbsp;f&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;1&nbsp;90&nbsp;5d&nbsp;&nbsp;f&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;7&nbsp;&nbsp;4&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;80&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;0&nbsp;78&nbsp;&nbsp;0&nbsp;78&nbsp;&nbsp;0&nbsp;78&nbsp;&nbsp;0&nbsp;78&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;90&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;2&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b0&nbsp;&nbsp;&nbsp;7&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;100&nbsp;&nbsp;21&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;110&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;120&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;130&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;140&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;150&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;160&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;170&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;180&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;190&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1a0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1b0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1c0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1d0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1e0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1f0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br /><br />----------------------------------------------------------------<br /><br />0&nbsp;sector&nbsp;info(0&nbsp;sec&nbsp;:&nbsp;boot):<br />----------------------------------------------------------------<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;eb&nbsp;3c&nbsp;90&nbsp;4d&nbsp;53&nbsp;44&nbsp;4f&nbsp;53&nbsp;35&nbsp;2e&nbsp;30&nbsp;&nbsp;0&nbsp;&nbsp;2&nbsp;10&nbsp;&nbsp;1&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;0&nbsp;&nbsp;2&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;f8&nbsp;f6&nbsp;&nbsp;0&nbsp;3f&nbsp;&nbsp;0&nbsp;ff&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;20&nbsp;&nbsp;90&nbsp;5d&nbsp;&nbsp;f&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;29&nbsp;8d&nbsp;3e&nbsp;1a&nbsp;&nbsp;8&nbsp;4e&nbsp;4f&nbsp;20&nbsp;4e&nbsp;41&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;30&nbsp;&nbsp;4d&nbsp;45&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;46&nbsp;41&nbsp;54&nbsp;31&nbsp;36&nbsp;20&nbsp;20&nbsp;20&nbsp;33&nbsp;c9&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;40&nbsp;&nbsp;8e&nbsp;d1&nbsp;bc&nbsp;f0&nbsp;7b&nbsp;8e&nbsp;d9&nbsp;b8&nbsp;&nbsp;0&nbsp;20&nbsp;8e&nbsp;c0&nbsp;fc&nbsp;bd&nbsp;&nbsp;0&nbsp;7c&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;50&nbsp;&nbsp;38&nbsp;4e&nbsp;24&nbsp;7d&nbsp;24&nbsp;8b&nbsp;c1&nbsp;99&nbsp;e8&nbsp;3c&nbsp;&nbsp;1&nbsp;72&nbsp;1c&nbsp;83&nbsp;eb&nbsp;3a&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;60&nbsp;&nbsp;66&nbsp;a1&nbsp;1c&nbsp;7c&nbsp;26&nbsp;66&nbsp;3b&nbsp;&nbsp;7&nbsp;26&nbsp;8a&nbsp;57&nbsp;fc&nbsp;75&nbsp;&nbsp;6&nbsp;80&nbsp;ca&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;70&nbsp;&nbsp;&nbsp;2&nbsp;88&nbsp;56&nbsp;&nbsp;2&nbsp;80&nbsp;c3&nbsp;10&nbsp;73&nbsp;eb&nbsp;33&nbsp;c9&nbsp;8a&nbsp;46&nbsp;10&nbsp;98&nbsp;f7&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;80&nbsp;&nbsp;66&nbsp;16&nbsp;&nbsp;3&nbsp;46&nbsp;1c&nbsp;13&nbsp;56&nbsp;1e&nbsp;&nbsp;3&nbsp;46&nbsp;&nbsp;e&nbsp;13&nbsp;d1&nbsp;8b&nbsp;76&nbsp;11&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;90&nbsp;&nbsp;60&nbsp;89&nbsp;46&nbsp;fc&nbsp;89&nbsp;56&nbsp;fe&nbsp;b8&nbsp;20&nbsp;&nbsp;0&nbsp;f7&nbsp;e6&nbsp;8b&nbsp;5e&nbsp;&nbsp;b&nbsp;&nbsp;3&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a0&nbsp;&nbsp;c3&nbsp;48&nbsp;f7&nbsp;f3&nbsp;&nbsp;1&nbsp;46&nbsp;fc&nbsp;11&nbsp;4e&nbsp;fe&nbsp;61&nbsp;bf&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;e8&nbsp;e6&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b0&nbsp;&nbsp;&nbsp;0&nbsp;72&nbsp;39&nbsp;26&nbsp;38&nbsp;2d&nbsp;74&nbsp;17&nbsp;60&nbsp;b1&nbsp;&nbsp;b&nbsp;be&nbsp;a1&nbsp;7d&nbsp;f3&nbsp;a6&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c0&nbsp;&nbsp;61&nbsp;74&nbsp;32&nbsp;4e&nbsp;74&nbsp;&nbsp;9&nbsp;83&nbsp;c7&nbsp;20&nbsp;3b&nbsp;fb&nbsp;72&nbsp;e6&nbsp;eb&nbsp;dc&nbsp;a0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d0&nbsp;&nbsp;fb&nbsp;7d&nbsp;b4&nbsp;7d&nbsp;8b&nbsp;f0&nbsp;ac&nbsp;98&nbsp;40&nbsp;74&nbsp;&nbsp;c&nbsp;48&nbsp;74&nbsp;13&nbsp;b4&nbsp;&nbsp;e&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e0&nbsp;&nbsp;bb&nbsp;&nbsp;7&nbsp;&nbsp;0&nbsp;cd&nbsp;10&nbsp;eb&nbsp;ef&nbsp;a0&nbsp;fd&nbsp;7d&nbsp;eb&nbsp;e6&nbsp;a0&nbsp;fc&nbsp;7d&nbsp;eb&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f0&nbsp;&nbsp;e1&nbsp;cd&nbsp;16&nbsp;cd&nbsp;19&nbsp;26&nbsp;8b&nbsp;55&nbsp;1a&nbsp;52&nbsp;b0&nbsp;&nbsp;1&nbsp;bb&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;e8&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;100&nbsp;&nbsp;3b&nbsp;&nbsp;0&nbsp;72&nbsp;e8&nbsp;5b&nbsp;8a&nbsp;56&nbsp;24&nbsp;be&nbsp;&nbsp;b&nbsp;7c&nbsp;8b&nbsp;fc&nbsp;c7&nbsp;46&nbsp;f0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;110&nbsp;&nbsp;3d&nbsp;7d&nbsp;c7&nbsp;46&nbsp;f4&nbsp;29&nbsp;7d&nbsp;8c&nbsp;d9&nbsp;89&nbsp;4e&nbsp;f2&nbsp;89&nbsp;4e&nbsp;f6&nbsp;c6&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;120&nbsp;&nbsp;&nbsp;6&nbsp;96&nbsp;7d&nbsp;cb&nbsp;ea&nbsp;&nbsp;3&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;20&nbsp;&nbsp;f&nbsp;b6&nbsp;c8&nbsp;66&nbsp;8b&nbsp;46&nbsp;f8&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;130&nbsp;&nbsp;66&nbsp;&nbsp;3&nbsp;46&nbsp;1c&nbsp;66&nbsp;8b&nbsp;d0&nbsp;66&nbsp;c1&nbsp;ea&nbsp;10&nbsp;eb&nbsp;5e&nbsp;&nbsp;f&nbsp;b6&nbsp;c8&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;140&nbsp;&nbsp;4a&nbsp;4a&nbsp;8a&nbsp;46&nbsp;&nbsp;d&nbsp;32&nbsp;e4&nbsp;f7&nbsp;e2&nbsp;&nbsp;3&nbsp;46&nbsp;fc&nbsp;13&nbsp;56&nbsp;fe&nbsp;eb&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;150&nbsp;&nbsp;4a&nbsp;52&nbsp;50&nbsp;&nbsp;6&nbsp;53&nbsp;6a&nbsp;&nbsp;1&nbsp;6a&nbsp;10&nbsp;91&nbsp;8b&nbsp;46&nbsp;18&nbsp;96&nbsp;92&nbsp;33&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;160&nbsp;&nbsp;d2&nbsp;f7&nbsp;f6&nbsp;91&nbsp;f7&nbsp;f6&nbsp;42&nbsp;87&nbsp;ca&nbsp;f7&nbsp;76&nbsp;1a&nbsp;8a&nbsp;f2&nbsp;8a&nbsp;e8&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;170&nbsp;&nbsp;c0&nbsp;cc&nbsp;&nbsp;2&nbsp;&nbsp;a&nbsp;cc&nbsp;b8&nbsp;&nbsp;1&nbsp;&nbsp;2&nbsp;80&nbsp;7e&nbsp;&nbsp;2&nbsp;&nbsp;e&nbsp;75&nbsp;&nbsp;4&nbsp;b4&nbsp;42&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;180&nbsp;&nbsp;8b&nbsp;f4&nbsp;8a&nbsp;56&nbsp;24&nbsp;cd&nbsp;13&nbsp;61&nbsp;61&nbsp;72&nbsp;&nbsp;b&nbsp;40&nbsp;75&nbsp;&nbsp;1&nbsp;42&nbsp;&nbsp;3&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;190&nbsp;&nbsp;5e&nbsp;&nbsp;b&nbsp;49&nbsp;75&nbsp;&nbsp;6&nbsp;f8&nbsp;c3&nbsp;41&nbsp;bb&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;60&nbsp;66&nbsp;6a&nbsp;&nbsp;0&nbsp;eb&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1a0&nbsp;&nbsp;b0&nbsp;4e&nbsp;54&nbsp;4c&nbsp;44&nbsp;52&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;&nbsp;d&nbsp;&nbsp;a&nbsp;4e&nbsp;54&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1b0&nbsp;&nbsp;4c&nbsp;44&nbsp;52&nbsp;20&nbsp;69&nbsp;73&nbsp;20&nbsp;6d&nbsp;69&nbsp;73&nbsp;73&nbsp;69&nbsp;6e&nbsp;67&nbsp;ff&nbsp;&nbsp;d&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1c0&nbsp;&nbsp;&nbsp;a&nbsp;44&nbsp;69&nbsp;73&nbsp;6b&nbsp;20&nbsp;65&nbsp;72&nbsp;72&nbsp;6f&nbsp;72&nbsp;ff&nbsp;&nbsp;d&nbsp;&nbsp;a&nbsp;50&nbsp;72&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1d0&nbsp;&nbsp;65&nbsp;73&nbsp;73&nbsp;20&nbsp;61&nbsp;6e&nbsp;79&nbsp;20&nbsp;6b&nbsp;65&nbsp;79&nbsp;20&nbsp;74&nbsp;6f&nbsp;20&nbsp;72&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1e0&nbsp;&nbsp;65&nbsp;73&nbsp;74&nbsp;61&nbsp;72&nbsp;74&nbsp;&nbsp;d&nbsp;&nbsp;a&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1f0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;ac&nbsp;bf&nbsp;cc&nbsp;55&nbsp;aa&nbsp;<br /><br />----------------------------------------------------------------<br /><br />0&nbsp;sector&nbsp;info(493&nbsp;sec&nbsp;:&nbsp;root&nbsp;dir):<br />----------------------------------------------------------------<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;41&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;54&nbsp;58&nbsp;54&nbsp;20&nbsp;18&nbsp;2c&nbsp;7a&nbsp;40&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10&nbsp;&nbsp;3e&nbsp;36&nbsp;3e&nbsp;36&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;52&nbsp;40&nbsp;3e&nbsp;36&nbsp;&nbsp;2&nbsp;&nbsp;0&nbsp;&nbsp;8&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;20&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;30&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;40&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;50&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;60&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;70&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;80&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;90&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;100&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;110&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;120&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;130&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;140&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;150&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;160&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;170&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;180&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;190&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1a0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1b0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1c0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1d0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1e0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1f0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br /><br />----------------------------------------------------------------<br /><br />0&nbsp;sector&nbsp;info(525&nbsp;sec&nbsp;:&nbsp;a.txt):<br />----------------------------------------------------------------<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;31&nbsp;32&nbsp;33&nbsp;&nbsp;d&nbsp;&nbsp;a&nbsp;61&nbsp;62&nbsp;63&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;20&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;30&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;40&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;50&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;60&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;70&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;80&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;90&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;100&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;110&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;120&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;130&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;140&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;150&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;160&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;170&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;180&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;190&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1a0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1b0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1c0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1d0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp
zcying 发表于 2009-4-9 15:10 | 显示全部楼层

这个资料全。

  
reeper 发表于 2009-4-9 17:14 | 显示全部楼层

这个问题很值得探讨

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

62

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部