- 注册时间
- 2004-9-3
- 最后登录
- 1970-1-1
|
作者:Isword
信息框在汇编程序中使用的频率很高,用户常常通过对信息框的操作来使用程序.所以,信息框的编辑对于程序员来说是相当的重要的,而系统自带的信息框功能还是比较强大的.笔者就重点叙述一下中断int $ca12的详细用法,希望能对新手有一定的帮助.
int $ca12此中断的信息框,根据寄存器A存放的值不同,一共可以分为5种类型,下面,笔者就来讲讲这5种类型的信息框的具体用法.
1.弹出式信息框.
[入口参数]:
寄存器X放参数表地址低8位,寄存器Y放参数表地址高8位,寄存器A的值为#$00.
[参数表定义]:
偏移 00: 80
01: 信息文字内容开始地址低8位
02: 信息文字内容开始地址高8位(文字以#$00结尾或换行)
03: 信息框在X轴位置
04: 信息框在Y轴位置
05: 信息内容的长度(最大为#$10)
06: 信息框宽度(#$02 显示8*16字体的1行,8*8字体的2行,#$04 显示8*16字体的2行,8*8字体的4行,#$06 8*16字体的3行,8*8字体的6行......最大只能是#$08)
07: 文字状态地址低8位
08: 文字状态地址高8位
09: 文字状态(#$02 显示8*16字体;#$04 显示8*8字体;#$82 显示8*16反显字体;#$84 显示8*8反显字体.......)
[实例]:
main:
LDA #$00
LDX #<table
LDY #>table
INT $ca12
INT $c006(2600=c00a);按键等待
RTS
table:
.db $80
.dw l2
.db $13 $10 $0b $02
.dw l1
l1:
.db $02
l2:
.db "hello world",$00,$00
2.选择式信息框.
[入口参数]:
寄存器X放参数表地址低8位,寄存器Y放参数表地址高8位,寄存器A=#$02,显示问号,寄存器A=#$01,显示感叹号.
[参数表定义]:
偏移 00: 80
01: 信息内容开始地址低8位
02: 信息内容开始地址高8位
03: 信息框在X轴位置
04: 信息框在Y轴位置
05: 信息内容的长度(如果显示是4个汉字,这里就是08,每个菜单项大小必须一样,最大为#$10)
06: 信息框宽度(#$02 显示8*16字体的1行,$04 显示8*16字体的2行,#$06 8*16字体的3行......最大只能是#$08)
07: 文字状态地址低8位
08: 文字状态地址高8位
09: 文字状态(#$02 显示8*16字体;#$04 显示8*8字体;#$82 显示8*16反显字体;#$84 显示8*8反显字体.......)
[注意点]:
使用int $ca12中断后,用户选择是与否的结果保存在寄存器A里,若选择了是,寄存器A的值为#$79,若选择了否,寄存器A的值不为#$79.
[实例]:略.
3.菜单选择框:
[入口参数]:
寄存器X放参数表地址低8位,寄存器Y放参数表地址高8位,寄存器A的值为#$03.
[参数表定义]:
偏移 00: 80/82(80时为圆点选择菜单,82时为条形选择菜单)
01: 信息内容开始地址低8位
02: 信息内容开始地址高8位
03: 信息框在X轴位置
04: 信息框在Y轴位置
05: 信息内容的长度(如果显示是4个汉字,这里就是08,每个菜单项大小必须一样,最大为#$10)
06: 信息框宽度(#$02 显示8*16字体的1行,$04 显示8*16字体的2行,#$06 8*16字体的3行......最大只能是#$08)
07: 文字状态地址低8位
08: 文字状态地址高8位
09: 执行菜单项开始地址低8位
0A: 执行菜单项开始地址高8位
0B: 文字状态(#$02 显示8*16字体;#$04 显示8*8字体;#$82 显示8*16反显字体;#$84 显示8*8反显字体.......)
0C: 第一个菜单项执行地址低8位
0D: 第一个菜单项执行地址高8位
0E: 第二个菜单项执行地址低8位
0F: 第二个菜单项执行地址高8位
........
[实例]:略.
值得注意的地方是:此中断在超过使用两个时会出现错误的,即在屏幕的中央出现"error"的字样,解决的方法是:每次使用前使$0661=#$00就可以了
比如:
lda $0661
pha
lda #$00
sta $0661
子程序;调用int $ca12
pla
sta $0661
rts
关于int $ca12的详细用法,笔者就此收笔,望可以对新手有所帮助...
相关连接点这里 |
|