//系统菜单函数A
1.菜单A
如图示的菜单:
中断调用: INT $C205
入口参数:菜单参数表的低8位地址送寄存器X,
高8位地址送寄存器Y
参数表定义:
偏移 00: 09
01: 菜单项个数
02:第1个菜单项对应程序入口地址低8位
03:第1个菜单项对应程序入口地址高8位
04:第1个菜单项对应帮助内容开始地址低8位
05:第1个菜单项对应帮助内容开始地址高8位
.
.
.
XX: 第N个菜单项对应程序入口地址低8位
XX + 1:第N个菜单项对应程序入口地址低8位
XX + 2:第N个菜单项对应帮助内开始地址低8位
XX + 3:第N个菜单项对应帮助内容开始地址高8位
然后下面紧接着就是:
第1个菜单项的文字说明,例如上面的"1.汉英字典",以 FF 结尾
第2个菜单项的文字说明,例如上面的"2.英英字典",以 FF 结尾
.
.
.
第N个菜单项的文字说明,以 FF 结尾
例: 设计一个如图所示的菜单
功能:当选中第1个菜单项,弹出信息框,显示 "选中第1菜单项"
当选中第2个菜单项,弹出信息框,显示 "选中第2菜单项"
当选中第3个菜单项,弹出信息框,显示 "选中第3菜单项"
设计步骤:
进入NCTOOLS,同时按住 Z,H 键,将地址2000-2FFF全部清为 FF
设计思路:
①先做弹出式信息框,这里由于弹出的信息仅相差一个字节,所以我们可以做一个子程序,寄存器A放31,32,或33
然后调用这个子程序,该子程序把寄存器A的值先送哪个地址,再中断调用
②然后做帮助,这里帮助内容简单些,是"菜单帮助内容",后面加 00 00,作为结束标志
③然后做菜单参数表
④最后实现菜单
V 2000
输入法 输入 选中第N菜单项,后面紧接着用 E C 命令输入 0000,作为结束标志
如图:
做弹出信息框参数表,从地址2010开始
E C 2010
输入
80 00 20 09 11 0D 02 19 20 02
如图:
实现弹出信息框子程序,要显示的数字放寄存器A就可以,例如 (A) = 31,那么就显示 选中第1菜单项
A 2020
2020: STA $2006
2023: LDX #$10
2025: LDY #$20
2027: LDA #$00
2029: INT $C312
202C: INT $C008
202F: RTS
A 2030 显示信息框 选中第1菜单项
2030: LDA #$31
2032: JSR $2020
2035: RTS
A 2038 显示信息框 选中第2菜单项
2038: LDA #$32
203A: JSR $2020
203D: RTS
A 2040 显示信息框 选中第3菜单项
2040: LDA #$33
2042: JSR $2020
2045: RTS
做菜单帮助内容
从地址2048开始:
输入法 输入 "菜单帮助内容",注意后面输入结束标志 0000
现在我们确定一下
第一菜单项入口地址 2030
第二菜单项入口地址 2038
第三菜单项入口地址 2040
帮助入口地址 2048
做菜单参数表
从地址 2060开始
E C 2060
输入 09 03 30 20 48 20 38 20 48 20 40 20 48 20
按 输入法 输入
"1.菜单项1" 后面紧接 FF
"2.菜单项2" 后面紧接 FF
"3.菜单项3" 后面紧接 FF
实现整个程序主程序
从地址2088开始
A 2088
2088: LDX #$60
208A: LDY #$20
208C: INT $C505
208F: RTS
G 2088