| 
 
注册时间2005-10-6最后登录1970-1-1 
 | 
 
 发表于 2007-12-23 13:50:46
|
显示全部楼层 
| 没人知道数据区到底在哪里,必须要自己分析出来。完美的反汇编程序是不存在的。 CheckKey的实现有N种方式。比如调用系统中断。你找到NC2600的中断功能对应表了吗?INT $C00A就可以。按键值在A中。这是最简单的方式,而且不会死机。
 当然你也可以去查询$C7的值,那就是当前按键的键值。不过循环查询这个而不做其他事情的话会自动关机,所以在循环中还要把$03F6和$0401置0,以避免自动关机。
 还可以根据$DF~C6的值来推断……扯远了,这个主要是判断多个按键同时按下才会用。超级玛丽里面用的是另一种方法,直接操作键盘io,跟这个也差不多,不过感觉太麻烦了。
 打开文件后文件里的数据仍然安安稳稳地躺在Nand里,因为你还没有把他们读出来。这也需要相关的中断。你反汇编几个相关的程序段就清楚他们的用法了。
 $03F6和$0401是不是Nc2600用的地址来着我不明确记得了。
 NC2600文件系统中断全表
 0501:测试超级块
 0502:更新物理区/逻辑区映射表
 0503:读取一页nand(物理,不做ecc)
 0504:读取一页nand(物理,做ecc)
 0505:读取nand(逻辑)
 0506:读取一页nand(逻辑)
 0507:读取1字节nor
 0508:读取多字节nor
 0509:根据指定的inode号找出对应的目录名(INODE
  091B,$091c NAME  08d6) 050a:测试目录是否可列出
 050b:创建目录
 050c:读取目录
 050d:切换工作目录(NAME=$08d6)
 050e:删除文件(NAME
  08d6) 050f:删除目录(NAME:$08d6)
 0510:重命名文件(SOURCE NAME:$08d6,NEW NAME:$0961)
 0511:修改指定文件属性1(参数:$0948,永久)
 0512:修改当前文件属性1(暂时)
 0513:测试文件属性1
 0514:打开或创建文件
 0515:读文件
 0516:关闭文件
 0517:写文件
 0518:更改文件读写指针位置
 0519:读inode
 051a:读一个inode
 051b:空间整理_释放已删除空间
 051c:空间整理_删除无用的分配表信息
 051d:重启时空间整理1
 051e:重启时空间整理2
 051f:检测已创建而未关闭的文件
 0520:处理已创建而未关闭的文件
 0521:无用中断,原为永久修改指定文件属性2,可能出于安全考虑,入口被注
 0522:关闭所有文件
 0523:格式化闪存用户区并重置文件系统
 0524:打开文件
 0525:读取文件
 0526:更改文件读写指针
 0527:资源管理器1
 0528:快速读NAND,逻辑读取,08d1,08d2:块,08d3,08d4,偏移,ed,ee地址,0a1B:大小,最多只能读255B
 0529:获得及检测NAND厂商和设备号
 052a:处理物理区/逻辑区映射表
 052b:同上
 052c:同上
 052d:若指定文件>64kb,则读出其所占的块到$c000
 052e:获取文件长度
 0601:计算ECC
 0602:比校ECC
 至于中断需要哪些参数,你自己反汇编或在网上找吧。要学会利用网络资源。Nc2600的资料很多的,不像当年Tc808那样完全没有……
 
 [ 本帖最后由 dragon_ 于 2007-12-23 13:53 编辑 ]
 | 
 |