- 注册时间
- 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 编辑 ] |
|