//全面接触NCTOOLS

  NCTOOLS是我为NC1020写的一个DEBUG软件,大家可以到我的网站 http://wqxmcode.8u8.com下载

  因为在我的6502教程中,大量使用了NCTOOLS这个工具,所以你必须拥有这个软件.

  下面我讲讲这个软件的用法:

  1.界面

    进入NCTOOLS后,你看到下面的界面,这是最新版本的界面,你可以到我的网站下载

  

   最左上面的 00 代表当前页码是 00

   左边的 2000代表地址当前地址是2000,后面的 2800 2900 2A00 2B00代表地址的内容,但一行显示8个地址的内容

比如第1行,显示的是地址2000,2001,2002,2003.......2007的内容

   所以一个屏幕最大显示 48个地址的内容,大家可以看到的

 

2.按键的用法

  ①I,K键

    按 I 键,当前页码减 1,比如当前页码是  02,那么按了 I ,当前页码变为 01

    按 K 键,当前页码加 1,比如当前页码是  02,那么按了 K, 当前页码变为 03了

  ②中英数 键  切换显示模式,在 十六进制 和 字符 模式下切换

    比如当前显示模式是 十六进制,那么 按 中英数,就切换到了 字符显示模式

  ③输入法 键

    按 输入法 ,以汉字,数字,字符,符号等修改当前内存的内容

  ④ 0 键

     在查找时,若查找的结果不只一个,查找到了一个后,按 0 键可以继续查找

  ⑤ 求助 键

     显示本程序附加功能,附加功能将在后面介绍

  ⑥ Z + H 键

    同时按住 Z,H两个键,可以使地址 2000-2FFF全部为 FF,并且当前地址转到地址2000

   当你要写程序时,一般先用这个命令,使得地址2000-2FFF全部为FF,比较干净

  ⑦ 双上箭头 键

     按 双上箭头 键,当前地址  减 1,比如当前地址是2000,按了 双上箭头,当前地址变为 1FFF

     单左箭头 键

     按 单左箭头 键,当前地址  加 1,比如当前地址是2000,按了 左箭头,当前地址变为 2001

     单上箭头 键

     按 单上箭头 键,当前地址  减 #$10

     单下箭头 键

     按 单下箭头 键,当前地址 加 #$10

     双下箭头 键

     按 双下箭头 键,当前地址 减 #$30

     单右箭头 键

     按 单右箭头 键,当前地址 加 #$30

 

     按 Z ,同时按 双下箭头或单右箭头,可以快速查看地址内容

    注:由于一个屏幕显示的地址有限,为了看全部的地址的内容,我们必须按 这些键来显示其他地址的内容

   ⑧ R 键

      当执行 G 命令后,可以用该命令查看 寄存器的状态

 

3.命令的使用

  说明:每个命令是以 = 号,作为 确认键

      字符 B 用 . 代替

  ①内存查看命令 V

    格式:V XX

         V XXXX

         V XXXXYY

   这里 XX 代表零页地址(00-FF)

       XXXX 代表直接地址(0000-FFFF)

       YY 代表页码

       例如 V 30,就是查看当前地址为 30 的48个地址的内容,如图:

 

       例如 V 4000 03,就是查看03页码的当前地址为4000的48个地址内容,如图:

    

  ②内存修改命令 E C

    该命令功能非常强大,可以修改 FLASH ROM,RAM

    格式: E C XX

          E C XXXX

          E C XXXXYY

   例如 输入  E C F0,然后按 "=",出现下图:

 这时我们就可以输入字节了,注意这里输入的是十六进制,如果输入错了,可以按 单左箭头删除 最近输入

的一个字节.

  ③插入字节命令 E I

    该命令对于用机器码编写程序的人来说很有用

    格式  E I XXXX

    这里可能有些人搞不清楚这个命令的用法,我做详细的说明:

    XXXX:代表结束地址,由于 插入了字节,那么当前地址后的内容就必然要往后偏移,那么是不是当前地址后的

所以地址都要往后偏移呢?这显然不是,所以这里有个参数 XXXX,这样就规定了当前地址到 地址XX往后偏移.

   例如 假设当前地址是 2000

   我输入  E I 2007,那么说明地址2000-2007的内容往后偏移,那么往后偏移多少字节呢?这是由你插入的

字节数来决定的.

  这里 我输入 E I 2007,然后按 = ,然后输入 0102030405,然后按 =,我们看下图:

             使用 E I命令前               使用 E I命令后

  为什么需要这个命令呢,有时候,我们需要往某地址增加几个字节的内容,但如果用E C命令,势必

会破坏别的字节,这时候  E I命令就发挥很大作用了.

 

  ③ 执行 程序命令 G

    格式: G XXXX

         G XXXXYY

        例如 G 4040,就是执行当前页码的4040开始的程序

        例如 G 4040 03,就是执行 03 页码的4040开始的程序

    注:执行该命令后,可以 按 R,显示寄存器的状态

 

  ④ 4K闪存数据装入地址2000-2FFF 命令 L

    格式:L XXXXYY

        注意这里的XXXX,只能是 4000,5000,6000,7000,8000....B000

       因为是将整整 4K 闪存的数据装入RAM

       例如 L 5000 08,就是将08页码的地址 5000-5FFF的内容送地址 2000-2FFF

    该命令的作用是修改闪存,例如我们要修改 08 页码的5000-5FFF的内容

我们可以先 L 5000 08,然后用 E C 命令修改地址 2000-2FFF的内容,修改完后,用 W 5000 08命令

就可以将地址  2000-2FFF的内容送 08页码的 5000-5FFF.

   这里大家可能很纳闷,E C 命令不是可以直接修改闪存吗,为什么还要这个命令,大家知道闪存的擦写次数是一定的

因为每次修改闪存就需要擦写闪存一次,如果用 E C命令频繁的修改闪存,是不是会加快闪存的老化呢?这我不得而知

不过我建议大家修改大量闪存数据时,还是使用 L 命令先将闪存数据送RAM,然后修改RAM,然后用W 命令将数据送回.

 

  ⑤地址 2000-2FFF的内容送闪存 命令 W

    格式: W XXXXYY

    该命令可以将地址2000-2FFF的内容送4K闪存,这里XXXX同样只能是 4000,5000,6000.....B000

    例如  W 5000 08,就是将地址 2000-2FFF的内容送08页码的地址 5000-5FFF

 

  ⑥擦除闪存命令 F R

    格式 F R XXXXNNNNYY

    这里XXXX是开始地址,NNNN是结束地址,YY是页码

    例如 F R 4000 4010 08,就是擦除08页码地址 4000-4010的内容为 FF

    注意:NC1020擦除的基本单位是 2K,但是我这里可以擦除任意大小的闪存,这并没有否定NC1020以2K为一个单位

我因为做过程序处理,所以有擦除任意大小闪存的功能.

 

  ⑦擦除指定字节的某个范围的地址内容  F D

   格式: F D XXXXNN

  这里 XXXX是结束地址,NN是擦除的字节数

  例如我 V 4000 08,那么当前地址是4000,页码是08

  我输入 F D 400703,那么功能是地址 4003-4007的内容送地址4000-4004,地址4005-4007的内容擦除为 FF

  我举个例子,当前地址是 4000,我输入 F D 4007 02,按 =,看结果如图:

使用 F D 命令前 使用 F D 命令后

  可见后面的字节往前移了.

 

  ⑧反汇编命令 U

   格式: U XX

         U XXXX

         U XXXXYY

   这里XX是零页地址,XXXX是直接地址,YY是页码

   该命令可以反汇编,例如 U 4040 03,就是反汇编03页码的地址4040开始的内容,如图:

  这里 "-"前面的4个字节是地址,后面的十六进制是 机器码,再后面的就是反汇编汇编结果了.

不懂机器码的朋友只有用这个命令了,可以看程序.

  反汇编状态下,按 跳出,返回

  反汇编状态下,可以使用 A 命令写汇编

  按 其他键,反汇编下一地址内容 

 

  ⑨写汇编命令 A

   格式:A XXXX

   注意:该命令不可以在闪存地址写汇编,那么XXXX的范围是 00页码的 4000-5FFF,0000-3FFF

   符号定义:

   '#' : 双上箭头

   '$' : 单上箭头

   '(' : 双下箭头

   ')' : 单左箭头

   ',' : 单下箭头

   'Y' : 单右箭头  

   'X' : 就是原来的 X 键  

   'B' : 这里用 '.' 代替

   错误提示:

   1.语法出错,请重试!

     说明您写错了指令

   2.偏移量发生溢出

    您可以能使用的条件转移指令的跳转步长过大了

   3.寻址越位,请重试

     不支持这种寻址方式

 

   按 K 键可以删除最近输入的一个字符

 

  ⑩查找十六进制命令 S H

    格式: S H XXXXNNNN

         S H XXXXNNNNYY

         S H XXXXNNNNYYKK

    这里有三种格式

    S H XXXXNNNN  在当前页码地址范围XXXX - NNNN 查找

    S H XXXXNNNNYY 在YY页码地址范围XXXX - NNNN 查找

    S H XXXXNNNNYYKK 在YY-KK多个连续的页码地址范围 XXXX - NNNN查找,实现多页码的数据的查找

 

    例如: 在当前页码 地址范围4000-BFFF查找 121314

         输入  S H 4000BFFF,按 =

        然后输入 查找的数据 121314,按 =

        如果查找到了,当前地址自动转到该地址

    这时,还可以按 0 键继续查找下一个

 

   例如: 在页码 01- 03的地址 4000-7FFF 查找 10111213

        输入 S H 40007FFF0103,按 =,输入 10111213,按 = ,开始查找

 

  ⑩① 查找 汉字,字符,符号,数字 命令  S C

    和上面一样,不过查找的是 汉字,字符,符号,数字

    很有用的命令哦.

 

  ⑩②  中断地址 获取命令 X

    格式: X NNNN

   例如有中断指令 INT $8A15,那么该指令是执行哪里的程序呢,使用该命令就使当前地址自动转到程序入口点

   输入 X 8A15,按 =

 

 

  3.附加功能

    附加功能有下面几样

    .屏幕RAM

     显示小字模式的屏幕RAM的地址

     显示大字模式的屏幕RAM的地址

    .键盘扫描

      若你不知道某个键的扫描码,按 该键就显示了

    .字符ASCⅡ码

     常见的ASCii码

    .出厂信息

     你的机器的出厂信息

    .目录列表

    .文件列表

    .闪存利用表

    .保存代码

     保存地址2000-2FFF的内容,我们写程序的时候,写好了,最好先保存下

    .导入代码

     保存的数据还原到地址2000-2FFF

    .制作程序

     制作BIN程序

     你先在地址2010后写好程序,注意地址2000-200F这里不要放东西,因为这里是文件头

     然后保证程序的入口地址是 2010

     然后制作程序,输入文件名,就可以了

    .GMUD存档

     GMUD存档备份和还原

    .密码清除

    .系统重新启动

    .版本信息