但为什么刷入到2M
芯片中,却可以正常使用呢?笔者认为,这是由于将2M文件写入到芯片中后,相当于将两个1M文件分别写入到2M芯片的低端128K和高端128K。而主板在读取时,无论读取的是低端128K或是高端128K,都可以完整的读取一个128K文件,主板其实还是用1M芯片启动的(由于2M芯片的A17为高电平,因此主板此时读取的为高端128K)。为了验证笔者的想法,笔者用编程器将1M文件分别写入到2M芯片的高端128K和低端128K,插入到主板上顺利的启动了机器。看来笔者的想法是正确的。
为了验证笔者的想法“用“热插拔”得到的2M文件是由两个完全相同的1M文件组成的”,笔者又用“UltraEdit-32”编辑
软件打开此主板正常保存的128K BIOS文件,然后将光标移到文件的开始,也就是000000H处,然后点击“文件-->特殊功能-->插入文件-->再次选择刚才打开的BIOS文件,将文件插入后,此时文件的容量即为3FFFFH(256K),然后点击另存为,保存文件后,同样得到了256K文件。用CBROM显示正常,写入到2M芯片后,可以正常开机,但加入“捷波恢复精灵”模块后,同样显示剩余字节为负数,而且数据区乱码。与“热插拔”得到文件一样。
因此,笔者认为将1M的BIOS文件用以上方法得到2M文件是无法使用的。原作者想法(理论)是有一定道理的,也是有创意的。但是理论只有跟实际相结合,才可能得到正确的结论。看来文章作者并没有测试保存后的文件是否可以加入其它模块(扩充的目的就是为了加入更多的模块吗)。
另外,还有文章介绍是在1M文件的中间任一(全为FF)行,加入一个128K(全为FF)空文件,同样可以得到一个256K的2M文件,其间可用CBROM加入任何模块,而且用CBROM测试全都显示正常。笔者同时也作了实验,验证的文章作者的全部想法,但无论用“热插拔”还是用编程器,此改动的2M文件写入到芯片中后,插入到主板上,全都无法启动机器,但其中的BOOT块起作用。对不能实现的原因,笔者通过分析BIOS文件发现:1M(4.51版本)文件数据结构为BOOTBLACK块位于文件(1E000H)处,而2M(4.51版本)文件其BOOTBLACK块位于文件的(3E000H)处;1M文件的SYSTEM BIOS压缩模块在00000H处,其它模块顺排,而2M文件的SYSTEM BIOS压缩模块从20000HF处,其它模块从00000H处顺排。因此,笔者认为,BIOS在系统模块中定义了其文件的寻址空间,因此我们只在BIOS文件中加入128K的空文件,破坏了文件中的正常空间,因而在启动是无法从SYSTEM BIOS中定义的地址范围找到相应的文件模块,因而无法启动机器。但用CMOS显示正常,是由于CBROM是按BIOS文件顺序的读取文件,然后根据文件显示剩余的空间,因此其显示是正常的,而且可以加入其它模块。而其BOOT块可用,是由于BIOS被破坏后,系统是根据芯片的容量从相应的地址读取,而两个文件的BOOT区是相对应的,因此BOOT可用。